import { Suspense } from 'react' import { lazyWithRetry } from '@/lib/lazyWithRetry' import { TreePreviewPanel } from '@/components/tree-preview/TreePreviewPanel' import { FlowCanvas } from './FlowCanvas' import { NodeEditorPanel } from './NodeEditorPanel' import { MetadataSidePanel } from './MetadataSidePanel' import { useTreeEditorStore } from '@/store/treeEditorStore' import { cn } from '@/lib/utils' import { Spinner } from '@/components/common/Spinner' // Lazy load CodeModeEditor (Monaco is ~2MB) const CodeModeEditor = lazyWithRetry(() => import('./code-mode/CodeModeEditor').then(m => ({ default: m.CodeModeEditor })) ) interface TreeEditorLayoutProps { isMobile?: boolean isMetadataOpen?: boolean onCloseMetadata?: () => void editingNodeId: string | null onNodeSelect: (nodeId: string | null) => void onSelectAnswerType: (nodeId: string, type: 'decision' | 'action' | 'solution') => void onNodeDelete?: (nodeId: string) => void onNodeContextMenu?: (e: React.MouseEvent, nodeId: string) => void } export function TreeEditorLayout({ isMobile = false, isMetadataOpen = false, onCloseMetadata = () => {}, editingNodeId, onNodeSelect, onSelectAnswerType, onNodeDelete, onNodeContextMenu, }: TreeEditorLayoutProps) { const editorMode = useTreeEditorStore(s => s.editorMode) return (