UNPKG

infinity-forge

Version:
52 lines 2.42 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTimer = useTimer; var react_1 = require("react"); function useTimer(_a) { var onPause = _a.onPause, onFinish = _a.onFinish, _b = _a.decrementInSeconds, decrementInSeconds = _b === void 0 ? 0 : _b, _c = _a.continuous, continuous = _c === void 0 ? false : _c; var _d = (0, react_1.useState)({ isPaused: false, isFinished: false, elapsedTime: decrementInSeconds, timeContinuous: decrementInSeconds, }), timerState = _d[0], setTimerState = _d[1]; var increment = decrementInSeconds ? -1000 : +1000; (0, react_1.useEffect)(function () { if (timerState.isPaused) { onPause === null || onPause === void 0 ? void 0 : onPause(timerState.elapsedTime); } var interval = setInterval(function () { if (timerState.elapsedTime <= 0) { setTimerState(function (prev) { return (__assign(__assign({}, prev), { isFinished: true })); }); onFinish === null || onFinish === void 0 ? void 0 : onFinish(0); clearInterval(interval); return; } if (!timerState.isPaused) { setTimerState(function (prev) { return (__assign(__assign({}, prev), { elapsedTime: prev.elapsedTime + increment })); }); } if (continuous) { setTimerState(function (prev) { return (__assign(__assign({}, prev), { timeContinuous: prev.timeContinuous + increment })); }); } }, 1000); return function () { return clearInterval(interval); }; }, [timerState.isPaused, timerState.elapsedTime]); var differenceBetwenContinuoustimerAndElapsedTime = timerState.timeContinuous - timerState.elapsedTime; return { timerState: timerState, setTimerState: setTimerState, differenceBetwenContinuoustimerAndElapsedTime: differenceBetwenContinuoustimerAndElapsedTime, }; } //# sourceMappingURL=use-timer.js.map