import React, { useState, useEffect } from "react"; import UrdfViewer from "@/components/UrdfViewer"; import { Sidebar, SidebarBody } from "@/components/ui/sidebar"; import { PanelLeft, RotateCcw } from "lucide-react"; import { useUrdf } from "@/hooks/useUrdf"; import { Button } from "../ui/button"; import { useTheme } from "@/hooks/useTheme"; import RobotParameters from "../RobotParameters"; // Calculate header height - should match your Header component height const HEADER_HEIGHT = 0; // in pixels - adjust if your header is different const Layout: React.FC = () => { const [open, setOpen] = useState(true); const { theme } = useTheme(); // Use the centralized UrdfContext for all robot data const { currentRobotData, isDefaultModel, resetToDefaultModel, isSelectionModalOpen, } = useUrdf(); // Log when robot data changes to verify the component is re-rendering useEffect(() => { console.log("Layout: Robot data updated", { isDefaultModel, hasData: !!currentRobotData, name: currentRobotData?.name, }); }, [isDefaultModel, currentRobotData]); // Only set the initial state of the sidebar once useEffect(() => { setOpen(true); }, []); // If there's a selection modal open, render a simplified layout if (isSelectionModalOpen) { return (
{currentRobotData?.description || "A detailed 3D model of a robotic system with articulated joints and components."}