import { lazy, Suspense } from 'react' 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' // Lazy load CodeModeEditor (Monaco is ~2MB) const CodeModeEditor = lazy(() => 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 } export function TreeEditorLayout({ isMobile = false, isMetadataOpen = false, onCloseMetadata = () => {}, editingNodeId, onNodeSelect, onSelectAnswerType, }: TreeEditorLayoutProps) { const editorMode = useTreeEditorStore(s => s.editorMode) return (
{editorMode === 'code' ? ( <> {/* Code Mode: Monaco editor (60%) + Preview (40%) — unchanged */}
}>
{/* Right Panel - Preview */}
) : ( <> {/* Flow Mode: React Flow canvas + side panels */}
{/* Node editor panel — takes real layout space */} {editingNodeId && ( onNodeSelect(null)} onSelectType={onSelectAnswerType} /> )} {/* Metadata side panel — only show when node editor is closed */} {!editingNodeId && ( )} )}
) } export default TreeEditorLayout