@modern-kit/react
Version:
20 lines (16 loc) • 757 B
JavaScript
;
var React = require('react');
var utils = require('@modern-kit/utils');
var hooksUseUnmount = require('../useUnmount/index.cjs');
var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs');
function useThrottle(callback, wait, options = {}) {
const callbackAction = hooksUsePreservedCallback.usePreservedCallback(callback);
const { signal, leading = true, trailing = true } = options ?? {};
const throttled = React.useMemo(() => {
return utils.throttle(callbackAction, wait, { signal, leading, trailing });
}, [callbackAction, wait, signal, leading, trailing]);
hooksUseUnmount.useUnmount(() => throttled.cancel());
return throttled;
}
exports.useThrottle = useThrottle;
//# sourceMappingURL=index.cjs.map