UNPKG

@modern-kit/react

Version:
23 lines (20 loc) 770 B
import { debounce } from '@modern-kit/utils'; import { useMemo } from 'react'; import { useUnmount } from '../useUnmount/index.mjs'; import { usePreservedCallback } from '../usePreservedCallback/index.mjs'; function useDebounce(callback, wait, options = {}) { const callbackAction = usePreservedCallback(callback); const { signal, leading = false, trailing = true, maxWait } = options ?? {}; const debounced = useMemo(() => { return debounce(callbackAction, wait, { signal, leading, trailing, ...typeof maxWait === "number" && { maxWait } }); }, [callbackAction, wait, signal, leading, trailing, maxWait]); useUnmount(() => debounced.cancel()); return debounced; } export { useDebounce }; //# sourceMappingURL=index.mjs.map