From 7d33e271ea60cc173f9d35e8bcb7afc9687e8b9f Mon Sep 17 00:00:00 2001 From: Dennis Collaris <d.collaris@me.com> Date: Sun, 23 Mar 2025 20:49:28 +0100 Subject: [PATCH] fix: app memo is actually empty once unmounted, so app was not correctly destroyed --- .../visualizations/nodelinkvis/components/NLPixi.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx b/src/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx index 7b1d7a00b..1394937d1 100644 --- a/src/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx +++ b/src/lib/vis/visualizations/nodelinkvis/components/NLPixi.tsx @@ -63,6 +63,7 @@ export const NLPixi = forwardRef((props: Props, refExternal) => { let edgeBundling: Point[][]; const ref = useRef<HTMLDivElement>(null); const canvas = useRef<HTMLCanvasElement>(null); + const appRef = useRef<Application | null>(null); const app = useAsyncMemo(async () => { if (canvas.current == null) return null; const app = new Application(); @@ -75,6 +76,7 @@ export const NLPixi = forwardRef((props: Props, refExternal) => { resolution: window.devicePixelRatio || 2, canvas: canvas.current as HTMLCanvasElement, }); + appRef.current = app; return app; }, [canvas]); @@ -961,7 +963,14 @@ export const NLPixi = forwardRef((props: Props, refExternal) => { nodeMap.current.clear(); edgeLabelMap.current.clear(); - app?.destroy(); + nodeLabelMap.current.clear(); + + appRef.current?.ticker.stop(); + appRef.current?.destroy(true, { + children: true, + texture: true, + textureSource: true, + }); const layout = layoutAlgorithm.current as GraphologyForceAtlas2Webworker; if (layout?.cleanup != null) layout.cleanup(); -- GitLab