import * as React from "react"; import { useCallbackRef } from "@/hooks/use-callback-ref"; export function useDebouncedCallback unknown>( callback: T, delay: number, ) { const handleCallback = useCallbackRef(callback); const debounceTimerRef = React.useRef(0); React.useEffect( () => () => window.clearTimeout(debounceTimerRef.current), [], ); const setValue = React.useCallback( (...args: Parameters) => { window.clearTimeout(debounceTimerRef.current); debounceTimerRef.current = window.setTimeout( () => handleCallback(...args), delay, ); }, [handleCallback, delay], ); return setValue; }