@wix/design-system
Version:
@wix/design-system
50 lines (49 loc) • 1.26 kB
JavaScript
;
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