diff --git a/components/canvas/canvas-graph-context.tsx b/components/canvas/canvas-graph-context.tsx index 23e2267..907d42c 100644 --- a/components/canvas/canvas-graph-context.tsx +++ b/components/canvas/canvas-graph-context.tsx @@ -4,7 +4,6 @@ import { createContext, useCallback, useContext, - useEffect, useMemo, useState, type ReactNode, @@ -84,12 +83,6 @@ export function CanvasGraphProvider({ [nodes, previewNodeDataOverrides], ); - useEffect(() => { - if (prunedPreviewNodeDataOverrides !== previewNodeDataOverrides) { - setPreviewNodeDataOverrides(prunedPreviewNodeDataOverrides); - } - }, [previewNodeDataOverrides, prunedPreviewNodeDataOverrides]); - const graph = useMemo( () => buildGraphSnapshot(nodes, edges, { diff --git a/hooks/use-debounced-callback.ts b/hooks/use-debounced-callback.ts index 921b303..8323082 100644 --- a/hooks/use-debounced-callback.ts +++ b/hooks/use-debounced-callback.ts @@ -1,4 +1,4 @@ -import { useRef, useCallback, useEffect } from "react"; +import { useRef, useCallback, useEffect, useMemo } from "react"; type DebouncedCallback = ((...args: Args) => void) & { flush: () => void; @@ -53,8 +53,8 @@ export function useDebouncedCallback( } }, []); - const debouncedFn = useCallback( - (...args: Args) => { + return useMemo(() => { + const debouncedCallback = ((...args: Args) => { argsRef.current = args; if (timeoutRef.current) clearTimeout(timeoutRef.current); timeoutRef.current = setTimeout(() => { @@ -65,13 +65,11 @@ export function useDebouncedCallback( callbackRef.current(...nextArgs); } }, delay); - }, - [delay], - ); + }) as DebouncedCallback; - const debouncedCallback = debouncedFn as DebouncedCallback; - debouncedCallback.flush = flush; - debouncedCallback.cancel = cancel; + debouncedCallback.flush = flush; + debouncedCallback.cancel = cancel; - return debouncedCallback; + return debouncedCallback; + }, [cancel, delay, flush]); } diff --git a/tests/canvas-delete-handlers.test.ts b/tests/canvas-delete-handlers.test.ts index d697e28..0f7a1b7 100644 --- a/tests/canvas-delete-handlers.test.ts +++ b/tests/canvas-delete-handlers.test.ts @@ -38,8 +38,10 @@ function HookHarness(props: HarnessProps) { const nodesRef = useRef(props.liveNodes ?? props.nodes); const edgesRef = useRef(props.liveEdges ?? props.edges); - nodesRef.current = props.liveNodes ?? props.nodes; - edgesRef.current = props.liveEdges ?? props.edges; + useEffect(() => { + nodesRef.current = props.liveNodes ?? props.nodes; + edgesRef.current = props.liveEdges ?? props.edges; + }, [props.liveEdges, props.liveNodes, props.edges, props.nodes]); const handlers = useCanvasDeleteHandlers({ t: ((key: string, values?: Record) =>