@modern-kit/react
Version:
25 lines (21 loc) • 851 B
JavaScript
;
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