UNPKG

rooks

Version:

Essential React custom hooks ⚓ to super charge your components!

39 lines (38 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCountdown = void 0; var react_1 = require("react"); var useIntervalWhen_1 = require("./useIntervalWhen"); /** * * useCountdown * Easy way to countdown until a given endtime in intervals * * @param endTime Time to countdown * @param options Countdown options * @see https://react-hooks.org/docs/useCountdown */ function useCountdown(endTime, options) { if (options === void 0) { options = {}; } var _a = options.interval, interval = _a === void 0 ? 1000 : _a, onDown = options.onDown, onEnd = options.onEnd; var _b = (0, react_1.useState)(function () { return new Date(); }), time = _b[0], setTime = _b[1]; var restTime = endTime.getTime() - time.getTime(); var count = restTime > 0 ? Math.ceil(restTime / interval) : 0; (0, useIntervalWhen_1.useIntervalWhen)(onTick, count ? interval : undefined, true, true); return count; function onTick() { var newTime = new Date(); if (newTime > endTime) { if (onEnd) { onEnd(newTime); } setTime(endTime); return; } if (onDown) { onDown(restTime, newTime); } setTime(newTime); } } exports.useCountdown = useCountdown;