import React, { useRef } from 'react'; import type { MaterialLegend, MaterialsOverlayLayout } from '../../../shared/types'; import { DEFAULT_MATERIALS_OVERLAY_LAYOUT } from '../../../shared/types'; import { legendPanelVisualLayout } from '../../../shared/types/materialLegend'; import { useSceneOverlayView } from '../sceneOverlay/SceneOverlayViewContext'; import styles from './MaterialLegendPanel.module.css'; type Props = { legend: MaterialLegend; layout: MaterialsOverlayLayout; editable?: boolean; onLayoutChange?: (layout: MaterialsOverlayLayout) => void; }; export function MaterialLegendPanel({ legend, layout, editable = false, onLayoutChange, }: Props) { const host = useSceneOverlayView(); const view = host?.view ?? { w: 1, h: 1 }; const viewport = host?.viewport ?? { x: 0, y: 0, w: view.w, h: view.h }; const dragRef = useRef<{ startX: number; startY: number; origin: MaterialsOverlayLayout } | null>( null, ); const effective = layout ?? DEFAULT_MATERIALS_OVERLAY_LAYOUT; const vis = legendPanelVisualLayout(effective, viewport); if (!legend.enabled || legend.items.length === 0) return null; return (