import React, { useEffect, useState, useRef } from "react"; import { usePlayButtonStore } from "../../../store/usePlayButtonStore"; import Panel from "./Panel"; import AddButtons from "./AddButtons"; import { useSelectedZoneStore } from "../../../store/useZoneStore"; import DisplayZone from "./DisplayZone"; import Scene from "../../../modules/scene/scene"; import useModuleStore from "../../../store/useModuleStore"; import { useZones } from "../../../store/store"; type Side = "top" | "bottom" | "left" | "right"; type FormattedZoneData = Record< string, { activeSides: Side[]; panelOrder: Side[]; lockedPanels: Side[]; zoneId: string; zoneViewPortTarget: number[]; zoneViewPortPosition: number[] widgets: Widget[]; } >; type Widget = { id: string; type: string; title: string; panel: Side; data: any; }; const RealTimeVisulization: React.FC = () => { const [hiddenPanels, setHiddenPanels] = React.useState([]); const containerRef = useRef(null); const { isPlaying } = usePlayButtonStore(); const { activeModule } = useModuleStore(); const [zonesData, setZonesData] = useState({}); const { selectedZone, setSelectedZone } = useSelectedZoneStore(); const { zones } = useZones() useEffect(() => { const data = Array.isArray(zones) ? zones : []; console.log('data: ', data); const formattedData = data.reduce((acc, zone) => { acc[zone.zoneName] = { activeSides: [], panelOrder: [], lockedPanels: [], zoneId: zone.zoneId, zoneViewPortTarget: zone.viewPortCenter, zoneViewPortPosition: zone.viewPortposition, widgets: [], }; return acc; }, {}); setZonesData(formattedData); }, [zones]); useEffect(() => { setZonesData((prev) => { if (!selectedZone) return prev; return { ...prev, [selectedZone.zoneName]: { ...prev[selectedZone.zoneName], // Keep existing properties activeSides: selectedZone.activeSides || [], panelOrder: selectedZone.panelOrder || [], lockedPanels: selectedZone.lockedPanels || [], zoneId: selectedZone.zoneId || "", zoneViewPortTarget: selectedZone.zoneViewPortTarget || [], zoneViewPortPosition: selectedZone.zoneViewPortPosition || [], widgets: selectedZone.widgets || [], }, }; }); }, [selectedZone]); const handleDrop = (event: React.DragEvent) => { event.preventDefault(); const canvas = document.querySelector(".scene-container"); if (canvas) { // Extract relevant properties manually const dragEvent = new DragEvent("drop", { bubbles: true, cancelable: true, dataTransfer: event.dataTransfer, // Attach dataTransfer manually ✅ }); console.log('dragEvent: ', dragEvent); canvas.dispatchEvent(dragEvent); } }; return (
{/* {objects.map((obj) => ( ))} */}
{activeModule === "visualization" && ( <> {!isPlaying && selectedZone?.zoneName !== "" && ( )} )}
); }; export default RealTimeVisulization;