@@ -69,7 +69,7 @@ export function LearningMapEditor({
6969 const parsedRoadmap = parseRoadmapData ( roadmapData || "" ) ;
7070 const { screenToFlowPosition, zoomIn, zoomOut, setCenter, fitView } = useReactFlow ( ) ;
7171
72- // Use Zustand store
72+ // Only get minimal state needed in this component
7373 const nodes = useEditorStore ( state => state . nodes ) ;
7474 const edges = useEditorStore ( state => state . edges ) ;
7575 const settings = useEditorStore ( state => state . settings ) ;
@@ -78,48 +78,39 @@ export function LearningMapEditor({
7878 const debugMode = useEditorStore ( state => state . debugMode ) ;
7979 const showGrid = useEditorStore ( state => state . showGrid ) ;
8080 const helpOpen = useEditorStore ( state => state . helpOpen ) ;
81- const drawerOpen = useEditorStore ( state => state . drawerOpen ) ;
82- const settingsDrawerOpen = useEditorStore ( state => state . settingsDrawerOpen ) ;
83- const edgeDrawerOpen = useEditorStore ( state => state . edgeDrawerOpen ) ;
84- const shareDialogOpen = useEditorStore ( state => state . shareDialogOpen ) ;
85- const loadExternalDialogOpen = useEditorStore ( state => state . loadExternalDialogOpen ) ;
8681 const selectedNodeId = useEditorStore ( state => state . selectedNodeId ) ;
8782 const selectedNodeIds = useEditorStore ( state => state . selectedNodeIds ) ;
8883 const selectedEdge = useEditorStore ( state => state . selectedEdge ) ;
89- const nextNodeId = useEditorStore ( state => state . nextNodeId ) ;
90- const clipboard = useEditorStore ( state => state . clipboard ) ;
91- const lastMousePosition = useEditorStore ( state => state . lastMousePosition ) ;
92- const shareLink = useEditorStore ( state => state . shareLink ) ;
93- const pendingExternalId = useEditorStore ( state => state . pendingExternalId ) ;
9484 const showCompletionNeeds = useEditorStore ( state => state . showCompletionNeeds ) ;
9585 const showCompletionOptional = useEditorStore ( state => state . showCompletionOptional ) ;
9686 const showUnlockAfter = useEditorStore ( state => state . showUnlockAfter ) ;
87+ const lastMousePosition = useEditorStore ( state => state . lastMousePosition ) ;
88+ const nextNodeId = useEditorStore ( state => state . nextNodeId ) ;
89+ const clipboard = useEditorStore ( state => state . clipboard ) ;
90+ const pendingExternalId = useEditorStore ( state => state . pendingExternalId ) ;
9791
9892 // Store actions
9993 const onNodesChange = useEditorStore ( state => state . onNodesChange ) ;
10094 const onEdgesChange = useEditorStore ( state => state . onEdgesChange ) ;
10195 const onConnect = useEditorStore ( state => state . onConnect ) ;
10296 const setSaved = useEditorStore ( state => state . setSaved ) ;
103- const setPreviewMode = useEditorStore ( state => state . setPreviewMode ) ;
104- const setDebugMode = useEditorStore ( state => state . setDebugMode ) ;
105- const setShowGrid = useEditorStore ( state => state . setShowGrid ) ;
10697 const setHelpOpen = useEditorStore ( state => state . setHelpOpen ) ;
98+ const setShowGrid = useEditorStore ( state => state . setShowGrid ) ;
99+ const setSelectedNodeId = useEditorStore ( state => state . setSelectedNodeId ) ;
100+ const setSelectedNodeIds = useEditorStore ( state => state . setSelectedNodeIds ) ;
107101 const setDrawerOpen = useEditorStore ( state => state . setDrawerOpen ) ;
108102 const setSettingsDrawerOpen = useEditorStore ( state => state . setSettingsDrawerOpen ) ;
109103 const setEdgeDrawerOpen = useEditorStore ( state => state . setEdgeDrawerOpen ) ;
110- const setShareDialogOpen = useEditorStore ( state => state . setShareDialogOpen ) ;
111- const setLoadExternalDialogOpen = useEditorStore ( state => state . setLoadExternalDialogOpen ) ;
112- const setSelectedNodeId = useEditorStore ( state => state . setSelectedNodeId ) ;
113- const setSelectedNodeIds = useEditorStore ( state => state . setSelectedNodeIds ) ;
114104 const setSelectedEdge = useEditorStore ( state => state . setSelectedEdge ) ;
115105 const setNextNodeId = useEditorStore ( state => state . setNextNodeId ) ;
116106 const setClipboard = useEditorStore ( state => state . setClipboard ) ;
117107 const setLastMousePosition = useEditorStore ( state => state . setLastMousePosition ) ;
118- const setShareLink = useEditorStore ( state => state . setShareLink ) ;
108+ const setShareDialogOpen = useEditorStore ( state => state . setShareDialogOpen ) ;
109+ const setLoadExternalDialogOpen = useEditorStore ( state => state . setLoadExternalDialogOpen ) ;
119110 const setPendingExternalId = useEditorStore ( state => state . setPendingExternalId ) ;
120- const setShowCompletionNeeds = useEditorStore ( state => state . setShowCompletionNeeds ) ;
121- const setShowCompletionOptional = useEditorStore ( state => state . setShowCompletionOptional ) ;
122- const setShowUnlockAfter = useEditorStore ( state => state . setShowUnlockAfter ) ;
111+ const setShareLink = useEditorStore ( state => state . setShareLink ) ;
112+ const setDebugMode = useEditorStore ( state => state . setDebugMode ) ;
113+ const setPreviewMode = useEditorStore ( state => state . setPreviewMode ) ;
123114 const updateNode = useEditorStore ( state => state . updateNode ) ;
124115 const updateNodes = useEditorStore ( state => state . updateNodes ) ;
125116 const updateEdge = useEditorStore ( state => state . updateEdge ) ;
@@ -235,10 +226,6 @@ export function LearningMapEditor({
235226 setEdgeDrawerOpen ( true ) ;
236227 } , [ setSelectedEdge , setEdgeDrawerOpen ] ) ;
237228
238- const toggleDebugMode = useCallback ( ( ) => {
239- setDebugMode ( ! debugMode ) ;
240- } , [ debugMode , setDebugMode ] ) ;
241-
242229 const closeDrawer = useCallback ( ( ) => {
243230 closeAllDrawers ( ) ;
244231 } , [ closeAllDrawers ] ) ;
@@ -376,6 +363,10 @@ export function LearningMapEditor({
376363 }
377364 } , [ previewMode , setPreviewMode , setDebugMode , handleSave , closeDrawer ] ) ;
378365
366+ const toggleDebugMode = useCallback ( ( ) => {
367+ setDebugMode ( ! debugMode ) ;
368+ } , [ debugMode , setDebugMode ] ) ;
369+
379370 const handleDownload = useCallback ( ( ) => {
380371 const roadmapData = getRoadmapData ( ) ;
381372 const dataStr = "data:text/json;charset=utf-8," + encodeURIComponent ( JSON . stringify ( roadmapData , null , 2 ) ) ;
@@ -488,9 +479,6 @@ export function LearningMapEditor({
488479
489480 // Toolbar handler wrappers for EditorToolbar props
490481 const handleOpenSettingsDrawer = useCallback ( ( ) => setSettingsDrawerOpen ( true ) , [ setSettingsDrawerOpen ] ) ;
491- const handleSetShowCompletionNeeds = useCallback ( ( checked : boolean ) => setShowCompletionNeeds ( checked ) , [ setShowCompletionNeeds ] ) ;
492- const handleSetShowCompletionOptional = useCallback ( ( checked : boolean ) => setShowCompletionOptional ( checked ) , [ setShowCompletionOptional ] ) ;
493- const handleSetShowUnlockAfter = useCallback ( ( checked : boolean ) => setShowUnlockAfter ( checked ) , [ setShowUnlockAfter ] ) ;
494482
495483 const handleNodesChange : OnNodesChange = useCallback (
496484 ( changes ) => {
@@ -761,16 +749,6 @@ export function LearningMapEditor({
761749 return (
762750 < >
763751 < EditorToolbar
764- debugMode = { debugMode }
765- previewMode = { previewMode }
766- showCompletionNeeds = { showCompletionNeeds }
767- showCompletionOptional = { showCompletionOptional }
768- showUnlockAfter = { showUnlockAfter }
769- onToggleDebugMode = { toggleDebugMode }
770- onTogglePreviewMode = { togglePreviewMode }
771- onSetShowCompletionNeeds = { handleSetShowCompletionNeeds }
772- onSetShowCompletionOptional = { handleSetShowCompletionOptional }
773- onSetShowUnlockAfter = { handleSetShowUnlockAfter }
774752 onAddNewNode = { addNewNode }
775753 onOpenSettingsDrawer = { handleOpenSettingsDrawer }
776754 onDownlad = { handleDownload }
@@ -831,29 +809,24 @@ export function LearningMapEditor({
831809 { ! saved && < Panel position = "bottom-right" title = { t . unsavedChanges } onClick = { ( ) => { handleSave ( ) ; } } >
832810 < ShieldAlert size = { 32 } color = "var(--learningmap-color-coal)" />
833811 </ Panel > }
834- { selectedNodeIds . length > 1 && < MultiNodePanel nodes = { nodes . filter ( n => selectedNodeIds . includes ( n . id ) ) } onUpdate = { handleUpdateNodes } /> }
812+ { selectedNodeIds . length > 1 && < MultiNodePanel onUpdate = { handleUpdateNodes } /> }
835813 </ ReactFlow >
836814 </ div >
837815 < EditorDrawer
838- node = { nodes . find ( n => n . id === selectedNodeId ) }
839- isOpen = { drawerOpen }
816+ isOpen = { true }
840817 onClose = { closeDrawer }
841818 onUpdate = { handleUpdateNode }
842819 onDelete = { handleDeleteNode }
843820 language = { effectiveLanguage }
844821 />
845822 < EdgeDrawer
846- edge = { selectedEdge }
847- isOpen = { edgeDrawerOpen }
848823 onClose = { closeDrawer }
849824 onUpdate = { handleUpdateEdge }
850825 onDelete = { handleDeleteEdge }
851826 language = { effectiveLanguage }
852827 />
853828 < SettingsDrawer
854- isOpen = { settingsDrawerOpen }
855829 onClose = { closeDrawer }
856- settings = { settings }
857830 onUpdate = { setSettings }
858831 language = { effectiveLanguage }
859832 />
@@ -891,13 +864,10 @@ export function LearningMapEditor({
891864 </ div >
892865 </ dialog >
893866 < ShareDialog
894- open = { shareDialogOpen }
895867 onClose = { ( ) => setShareDialogOpen ( false ) }
896- shareLink = { shareLink }
897868 language = { effectiveLanguage }
898869 />
899870 < LoadExternalDialog
900- open = { loadExternalDialogOpen }
901871 onClose = { ( ) => {
902872 setLoadExternalDialogOpen ( false ) ;
903873 setPendingExternalId ( null ) ;
0 commit comments