import { useCallback, useRef } from 'react'; export function useDebouncedCallback(func: (value: T) => void, delay: number) { const timeoutRef = useRef(undefined); return useCallback( (value: T, force?: boolean) => { clearTimeout(timeoutRef.current); timeoutRef.current = undefined; if (force) { func(value); } else { timeoutRef.current = setTimeout(() => { timeoutRef.current = undefined; func(value); }, delay); } }, [func, delay], ); }