UNPKG

@wix/design-system

Version:

@wix/design-system

50 lines (49 loc) 1.26 kB
"use strict"; exports.__esModule = true; exports.createTimeout = void 0; var TimeoutState = /*#__PURE__*/function (TimeoutState) { TimeoutState[TimeoutState["PAUSED"] = 0] = "PAUSED"; TimeoutState[TimeoutState["RUNNING"] = 1] = "RUNNING"; TimeoutState[TimeoutState["CLEARED"] = 2] = "CLEARED"; return TimeoutState; }(TimeoutState || {}); var createTimeout = (callback, delay) => { var timeoutId; var state = TimeoutState.PAUSED; var timeElapsed = 0; var timeStart; var handleTimeout = () => { state = TimeoutState.CLEARED; callback(); }; var pause = () => { if (state !== TimeoutState.RUNNING) { return; } state = TimeoutState.PAUSED; timeElapsed += Date.now() - timeStart; clearTimeout(timeoutId); }; var resume = () => { if (state !== TimeoutState.PAUSED) { return; } state = TimeoutState.RUNNING; timeStart = Date.now(); timeoutId = setTimeout(handleTimeout, delay - timeElapsed); }; var clear = () => { if (state === TimeoutState.CLEARED) { return; } state = TimeoutState.CLEARED; clearTimeout(timeoutId); }; return { pause, resume, clear }; }; exports.createTimeout = createTimeout; //# sourceMappingURL=pauseableTimeout.js.map