UNPKG

@modern-kit/react

Version:
25 lines (21 loc) 851 B
'use strict'; var utils = require('@modern-kit/utils'); var React = require('react'); var hooksUseUnmount = require('../useUnmount/index.cjs'); var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs'); function useDebounce(callback, wait, options = {}) { const callbackAction = hooksUsePreservedCallback.usePreservedCallback(callback); const { signal, leading = false, trailing = true, maxWait } = options ?? {}; const debounced = React.useMemo(() => { return utils.debounce(callbackAction, wait, { signal, leading, trailing, ...typeof maxWait === "number" && { maxWait } }); }, [callbackAction, wait, signal, leading, trailing, maxWait]); hooksUseUnmount.useUnmount(() => debounced.cancel()); return debounced; } exports.useDebounce = useDebounce; //# sourceMappingURL=index.cjs.map