UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

31 lines (30 loc) 890 B
"use strict"; 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;