From e062db4b4263ce1616b57683650cbaf1389078ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:42:12 +0000 Subject: [PATCH 1/3] Initial plan From 82433bf73bc0140fe5ee2a8ae41f74162ce2e533 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:48:07 +0000 Subject: [PATCH 2/3] Fix infinite loop in LearningMap useEffect by removing unstable function deps Co-authored-by: mikebarkmin <2592379+mikebarkmin@users.noreply.github.com> --- packages/learningmap/src/LearningMap.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/learningmap/src/LearningMap.tsx b/packages/learningmap/src/LearningMap.tsx index 098d049..da3cb11 100644 --- a/packages/learningmap/src/LearningMap.tsx +++ b/packages/learningmap/src/LearningMap.tsx @@ -124,7 +124,7 @@ export function LearningMap({ root.dispatchEvent(new CustomEvent("change", { detail: minimalState })); } } - }, [nodes, onChange, getViewport, getRoadmapState]); + }, [nodes, onChange]); const defaultEdgeOptions = { animated: false, From 2cd7aa93053f68e6339f93dee187205670e5c577 Mon Sep 17 00:00:00 2001 From: Mike Barkmin Date: Tue, 14 Oct 2025 00:09:11 +0200 Subject: [PATCH 3/3] fix max update error --- packages/learningmap/src/autoLayoutElk.ts | 43 ----------------------- packages/learningmap/src/editorStore.ts | 8 ----- 2 files changed, 51 deletions(-) delete mode 100644 packages/learningmap/src/autoLayoutElk.ts diff --git a/packages/learningmap/src/autoLayoutElk.ts b/packages/learningmap/src/autoLayoutElk.ts deleted file mode 100644 index 73cd091..0000000 --- a/packages/learningmap/src/autoLayoutElk.ts +++ /dev/null @@ -1,43 +0,0 @@ -import ELK from "elkjs/lib/elk.bundled.js"; -import type { Node, Edge } from "@xyflow/react"; - -export async function getAutoLayoutedNodesElk( - nodes: Node[], - edges: Edge[], - nodeWidth = 320, - nodeHeight = 120 -) { - const elk = new ELK(); - const elkNodes = nodes.map((node: Node) => ({ - id: node.id, - width: nodeWidth, - height: nodeHeight, - ...node, - })); - const elkEdges = edges.map((edge: Edge) => ({ - id: edge.id, - sources: [edge.source], - targets: [edge.target], - })); - const elkGraph = { - id: "root", - layoutOptions: { - "elk.algorithm": "layered", - "elk.direction": "DOWN", - "elk.layered.spacing.nodeNodeBetweenLayers": "100", - "elk.spacing.nodeNode": "80", - }, - children: elkNodes, - edges: elkEdges, - }; - const layout: any = await elk.layout(elkGraph); - return nodes.map((node: Node) => { - if (node.position) return node; - const layoutNode = layout.children.find((n: any) => n.id === node.id); - return { - ...node, - position: { x: layoutNode.x, y: layoutNode.y }, - autoPositioned: true, - }; - }); -} diff --git a/packages/learningmap/src/editorStore.ts b/packages/learningmap/src/editorStore.ts index 62cc3a3..bc49e06 100644 --- a/packages/learningmap/src/editorStore.ts +++ b/packages/learningmap/src/editorStore.ts @@ -319,18 +319,10 @@ export const useEditorStore = create()( setSelectedNodeId: (selectedNodeId) => set({ selectedNodeId, - nodes: get().nodes.map((n) => ({ - ...n, - selected: n.id === selectedNodeId, - })), }), setSelectedNodeIds: (selectedNodeIds) => set({ selectedNodeIds, - nodes: get().nodes.map((n) => ({ - ...n, - selected: selectedNodeIds.includes(n.id), - })), }), setSelectedEdge: (selectedEdge) => set({ selectedEdge }), setNextNodeId: (nextNodeId) => set({ nextNodeId }),