diff --git a/apps/client/src/widgets/type_widgets/MindMap.tsx b/apps/client/src/widgets/type_widgets/MindMap.tsx index bc611c62e..4b3c8fe0d 100644 --- a/apps/client/src/widgets/type_widgets/MindMap.tsx +++ b/apps/client/src/widgets/type_widgets/MindMap.tsx @@ -111,7 +111,7 @@ function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef const containerRef = useSyncedRef(externalContainerRef, null); const apiRef = useRef(null); - useEffect(() => { + function reinitialize() { if (!containerRef.current) return; const mind = new VanillaMindElixir({ @@ -127,8 +127,22 @@ function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef if (externalApiRef) { externalApiRef.current = mind; } + } - return () => mind.destroy(); + useEffect(() => { + reinitialize(); + return () => { + apiRef.current?.destroy(); + apiRef.current = null; + }; + }, []); + + useEffect(() => { + const data = apiRef.current?.getData(); + reinitialize(); + if (data) { + apiRef.current?.init(data); + } }, [ editable ]); // On change listener.