Merge pull request #4100 from xyflow/svelte-unobserve-fix

fix(svelte): resizeObserver.unobserve
This commit is contained in:
Moritz Klack
2024-04-03 16:55:35 +02:00
committed by GitHub
@@ -57,7 +57,7 @@
const nodeType = type || 'default'; const nodeType = type || 'default';
let nodeRef: HTMLDivElement; let nodeRef: HTMLDivElement;
let prevNodeRef: HTMLDivElement; let prevNodeRef: HTMLDivElement | null = null;
const nodeTypeValid = !!$nodeTypes[nodeType]; const nodeTypeValid = !!$nodeTypes[nodeType];
@@ -119,20 +119,17 @@
setContext('svelteflow__node_connectable', connectableStore); setContext('svelteflow__node_connectable', connectableStore);
$: { $: {
if (nodeRef) { if (resizeObserver && nodeRef !== prevNodeRef) {
if (!prevNodeRef) { prevNodeRef && resizeObserver.unobserve(prevNodeRef);
resizeObserver?.observe(nodeRef); nodeRef && resizeObserver.observe(nodeRef);
prevNodeRef = nodeRef; prevNodeRef = nodeRef;
} else if (prevNodeRef !== nodeRef || (!computedWidth && !computedHeight)) {
resizeObserver?.unobserve(prevNodeRef);
resizeObserver?.observe(nodeRef);
prevNodeRef = nodeRef;
}
} }
} }
onDestroy(() => { onDestroy(() => {
resizeObserver?.unobserve(nodeRef); if (prevNodeRef) {
resizeObserver?.unobserve(prevNodeRef);
}
}); });
function onSelectNodeHandler(event: MouseEvent | TouchEvent) { function onSelectNodeHandler(event: MouseEvent | TouchEvent) {