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