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; }