react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
31 lines (30 loc) • 890 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useDelayCallback = void 0;
var _react = require("react");
var _useImmutableCallback = require("./useImmutableCallback");
/**
* Run callback after delay with knob to cancel
*
* When set new callback, previous will reset if it still did not run
*/
var useDelayCallback = function () {
var timerRef = (0, _react.useRef)(null);
var reset = (0, _react.useCallback)(function () {
if (timerRef.current !== null) {
window.clearTimeout(timerRef.current);
timerRef.current = null;
}
}, []);
var set = (0, _useImmutableCallback.useImmutableCallback)(function (handler, time) {
if (time === void 0) {
time = 0;
}
reset();
timerRef.current = window.setTimeout(handler, time);
}, [reset]);
return [set, reset];
};
exports.useDelayCallback = useDelayCallback;