@@ -12,15 +12,16 @@ import { WelcomeMessage } from "./WelcomeMessage";
1212import { EditorCanvas } from "./EditorCanvas" ;
1313import { EditorDialogs } from "./EditorDialogs" ;
1414import { KeyboardShortcuts } from "./KeyboardShortcuts" ;
15+ import { useEffect } from "react" ;
1516
1617export interface LearningMapEditorProps {
1718 roadmapData ?: string | RoadmapData ;
1819 language ?: string ;
19- onChange ?: ( data : RoadmapData ) => void ;
2020 jsonStore ?: string ;
2121}
2222
2323export function LearningMapEditor ( {
24+ roadmapData,
2425 language = "en" ,
2526 jsonStore = "https://json.openpatch.org" ,
2627} : LearningMapEditorProps ) {
@@ -34,6 +35,7 @@ export function LearningMapEditor({
3435 const getRoadmapData = useEditorStore ( state => state . getRoadmapData ) ;
3536 const setJsonStore = useEditorStore ( state => state . setJsonStore ) ;
3637 const setDefaultLanguage = useEditorStore ( state => state . setDefaultLanguage ) ;
38+ const loadRoadmapData = useEditorStore ( state => state . loadRoadmapData ) ;
3739
3840 // Use language from settings if available, otherwise use prop
3941 const effectiveLanguage = settings ?. language || language ;
@@ -43,6 +45,21 @@ export function LearningMapEditor({
4345 setDefaultLanguage ( language ) ;
4446 } , [ jsonStore , language , setJsonStore , setDefaultLanguage ] ) ;
4547
48+ useEffect ( ( ) => {
49+ if ( roadmapData ) {
50+ if ( typeof roadmapData === "string" ) {
51+ try {
52+ const parsed = JSON . parse ( roadmapData ) ;
53+ loadRoadmapData ( parsed ) ;
54+ } catch ( e ) {
55+ console . error ( "Failed to parse roadmapData JSON string" , e ) ;
56+ }
57+ } else {
58+ loadRoadmapData ( roadmapData ) ;
59+ }
60+ }
61+ } , [ roadmapData , loadRoadmapData ] ) ;
62+
4663
4764 return (
4865 < >
0 commit comments