Skip to content

Commit f614934

Browse files
committed
add persist
1 parent 5317a94 commit f614934

3 files changed

Lines changed: 217 additions & 265 deletions

File tree

packages/learningmap/src/LearningMapEditor.tsx

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@ import {
55
ColorMode,
66
useReactFlow,
77
Node,
8-
Connection,
98
Edge,
109
Background,
1110
ControlButton,
1211
OnNodesChange,
1312
OnEdgesChange,
14-
Panel,
1513
OnSelectionChangeFunc,
1614
ReactFlowProvider,
1715
} from "@xyflow/react";
@@ -21,13 +19,12 @@ import { TaskNode } from "./nodes/TaskNode";
2119
import { TopicNode } from "./nodes/TopicNode";
2220
import { ImageNode } from "./nodes/ImageNode";
2321
import { TextNode } from "./nodes/TextNode";
24-
import { RoadmapData, NodeData, ImageNodeData, TextNodeData, Settings } from "./types";
22+
import { RoadmapData, NodeData, ImageNodeData, TextNodeData } from "./types";
2523
import { SettingsDrawer } from "./SettingsDrawer";
2624
import FloatingEdge from "./FloatingEdge";
2725
import { EditorToolbar } from "./EditorToolbar";
28-
import { parseRoadmapData } from "./helper";
2926
import { LearningMap } from "./LearningMap";
30-
import { Info, Redo, Undo, RotateCw, ShieldAlert, X } from "lucide-react";
27+
import { Info, Redo, Undo, RotateCw, X } from "lucide-react";
3128
import { useEditorStore, useTemporalStore } from "./editorStore";
3229
import { MultiNodePanel } from "./MultiNodePanel";
3330
import { getTranslations } from "./translations";
@@ -49,7 +46,6 @@ const edgeTypes = {
4946
export interface LearningMapEditorProps {
5047
roadmapData?: string | RoadmapData;
5148
language?: string;
52-
onChange?: (data: RoadmapData) => void;
5349
jsonStore?: string;
5450
}
5551

@@ -60,13 +56,9 @@ const getDefaultFilename = () => {
6056
};
6157

6258
export function LearningMapEditor({
63-
roadmapData,
6459
language = "en",
65-
onChange,
6660
jsonStore = "https://json.openpatch.org",
6761
}: LearningMapEditorProps) {
68-
69-
const parsedRoadmap = parseRoadmapData(roadmapData || "");
7062
const { screenToFlowPosition, zoomIn, zoomOut, setCenter, fitView } = useReactFlow();
7163

7264
// Only get minimal state needed in this component
@@ -156,10 +148,6 @@ export function LearningMapEditor({
156148
{ action: t.shortcuts.paste, shortcut: "Ctrl+V" },
157149
];
158150

159-
useEffect(() => {
160-
loadRoadmapData(parsedRoadmap);
161-
}, [roadmapData, loadRoadmapData]);
162-
163151
useEffect(() => {
164152
// Filter out existing debug edges, but use the store's edges directly to avoid dependency loop
165153
const baseEdges = useEditorStore.getState().edges.filter((e) => !e.id.startsWith("debug-"));
@@ -327,29 +315,14 @@ export function LearningMapEditor({
327315
[nextNodeId, lastMousePosition, screenToFlowPosition, addNode, setNextNodeId, t]
328316
);
329317

330-
const handleSave = useCallback(() => {
331-
const roadmapData = getRoadmapData();
332-
333-
if (onChange) {
334-
onChange(roadmapData);
335-
return;
336-
} else {
337-
const root = document.querySelector("hyperbook-learningmap-editor");
338-
if (root) {
339-
root.dispatchEvent(new CustomEvent("change", { detail: roadmapData }));
340-
}
341-
}
342-
}, [nodes, edges, settings, onChange, getRoadmapData]);
343-
344318
const togglePreviewMode = useCallback(() => {
345-
handleSave();
346319
const newMode = !previewMode;
347320
setPreviewMode(newMode);
348321
if (newMode) {
349322
setDebugMode(false);
350323
closeDrawer();
351324
}
352-
}, [previewMode, setPreviewMode, setDebugMode, handleSave, closeDrawer]);
325+
}, [previewMode, setPreviewMode, setDebugMode, closeDrawer]);
353326

354327
const toggleDebugMode = useCallback(() => {
355328
setDebugMode(!debugMode);
@@ -614,11 +587,6 @@ export function LearningMapEditor({
614587

615588
useEffect(() => {
616589
const handleKeyDown = (e: KeyboardEvent) => {
617-
//save shortcut
618-
if ((e.ctrlKey || e.metaKey) && e.key === 's' && !e.shiftKey) {
619-
e.preventDefault();
620-
handleSave();
621-
}
622590
// undo shortcut
623591
if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {
624592
e.preventDefault();
@@ -730,7 +698,7 @@ export function LearningMapEditor({
730698
return () => {
731699
window.removeEventListener("keydown", handleKeyDown);
732700
};
733-
}, [handleSave, handleUndo, handleRedo, addNewNode, helpOpen, setHelpOpen, togglePreviewMode, toggleDebugMode,
701+
}, [handleUndo, handleRedo, addNewNode, helpOpen, setHelpOpen, togglePreviewMode, toggleDebugMode,
734702
handleZoomIn, handleZoomOut, handleResetZoom, handleFitView, handleZoomToSelection, handleToggleGrid,
735703
handleResetMap, handleCut, handleCopy, handlePaste, handleSelectAll]);
736704

0 commit comments

Comments
 (0)