diff --git a/frontend/src/components/SidePanel.tsx b/frontend/src/components/SidePanel.tsx index 816c272..41f8f36 100644 --- a/frontend/src/components/SidePanel.tsx +++ b/frontend/src/components/SidePanel.tsx @@ -11,7 +11,7 @@ interface SidePanelProps { const SidePanel: React.FC = ({ canvasRef, yjsDoc }) => { const [activeTab, setActiveTab] = useState('blocks'); - const [layers, setLayers] = useState([]); + const [layers, setLayers] = useState & { id: string }[]>([]); const [activeLayer, setActiveLayer] = useState(''); const localCanvasRef = useRef(null); const localYjsDocRef = useRef(null); @@ -29,37 +29,42 @@ const SidePanel: React.FC = ({ canvasRef, yjsDoc }) => { // Observe changes in yjsDoc.layers useEffect(() => { - const yjsDocInstance = effectiveYjsDocRef?.current as { layers?: { forEach: (cb: (layer: Record, id: string) => void) => void; observe: (cb: () => void) => void; unobserve: (cb: () => void) => void } } | null; - if (yjsDocInstance?.layers) { - const yjsDoc = yjsDocInstance; - - // Function to update layers from yjsDoc - const updateLayers = () => { - const layersArray: Array & { id: string }> = []; - yjsDoc.layers.forEach((layer, id) => { - layersArray.push({ ...layer, id }); - }); - setLayers(layersArray as never); - - // Set active layer if none is set or if current active layer doesn't exist - if (!activeLayer || !layersArray.some(layer => layer.id === activeLayer)) { - if (layersArray.length > 0) { - setActiveLayer(layersArray[0].id); - } + const yjsDocInstance = effectiveYjsDocRef?.current as { + layers?: { + forEach: (cb: (layer: Record, id: string) => void) => void; + observe: (cb: () => void) => void; + unobserve: (cb: () => void) => void; + }; + } | null; + const yjsLayers = yjsDocInstance?.layers; + if (!yjsLayers) return; + + // Function to update layers from yjsDoc + const updateLayers = () => { + const layersArray: Array & { id: string }> = []; + yjsLayers.forEach((layer, id) => { + layersArray.push({ ...layer, id }); + }); + setLayers(layersArray); + + // Set active layer if none is set or if current active layer doesn't exist + if (!activeLayer || !layersArray.some(layer => layer.id === activeLayer)) { + if (layersArray.length > 0) { + setActiveLayer(layersArray[0].id); } - }; - - // Initial update - updateLayers(); - - // Observe changes - yjsDoc.layers.observe(updateLayers); - - // Cleanup observer on unmount - return () => { - yjsDoc.layers.unobserve(updateLayers); - }; - } + } + }; + + // Initial update + updateLayers(); + + // Observe changes + yjsLayers.observe(updateLayers); + + // Cleanup observer on unmount + return () => { + yjsLayers.unobserve(updateLayers); + }; }, [activeLayer, effectiveYjsDocRef]); const renderContent = () => { @@ -68,7 +73,7 @@ const SidePanel: React.FC = ({ canvasRef, yjsDoc }) => { return ).current} />; case 'layers': return ( - = ({ canvasRef, yjsDoc }) => { /> ); case 'properties': - return ; + return ( + + ); case 'copilot': return
KI Copilot content goes here
; default: @@ -103,7 +113,7 @@ const SidePanel: React.FC = ({ canvasRef, yjsDoc }) => { ))} -
= ({ canvasRef, yjsDoc }) => { ); }; -export default SidePanel; \ No newline at end of file +export default SidePanel;