UNPKG

react-countdown-typescript

Version:

An utilities of countdown for React with full rich-features.

3 lines (2 loc) 1.74 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");exports.useCountdown=function(t,r){void 0===t&&(t=6e4),void 0===r&&(r=1e3);var n={requestId:void 0,started:void 0,lastInterval:void 0,timeLeft:0,timeToCount:t},u=e.useState(t),c=u[0],a=u[1],i=e.useRef(n),o=function e(t){i.current.started||(i.current.started=t,i.current.lastInterval=t);var u=Math.min(r,i.current.timeLeft||Number.POSITIVE_INFINITY);t-i.current.lastInterval>=u&&(i.current.lastInterval+=u,a((function(e){return i.current.timeLeft=e-u}))),t-i.current.started<i.current.timeToCount?i.current.requestId=window.requestAnimationFrame(e):(i.current=n,a(0))},s=e.useCallback((function(e){i.current.requestId&&window.cancelAnimationFrame(i.current.requestId);var r=void 0!==e?e:t;i.current.started=void 0,i.current.lastInterval=void 0,i.current.timeToCount=r,i.current.requestId=window.requestAnimationFrame(o),a(r)}),[]),d=e.useCallback((function(){i.current.requestId&&window.cancelAnimationFrame(i.current.requestId),i.current.started=void 0,i.current.lastInterval=void 0,i.current.timeToCount=i.current.timeLeft}),[]),m=e.useCallback((function(){!i.current.started&&i.current.timeLeft>0&&(i.current.requestId&&window.cancelAnimationFrame(i.current.requestId),i.current.requestId=window.requestAnimationFrame(o))}),[]),l=e.useCallback((function(){i.current.timeLeft&&(i.current.requestId&&window.cancelAnimationFrame(i.current.requestId),i.current=n,a(0))}),[]),I=e.useMemo((function(){return{start:s,pause:d,resume:m,reset:l}}),[]);return e.useEffect((function(){return function(){i.current.requestId&&window.cancelAnimationFrame(i.current.requestId)}}),[]),[c,I]}; //# sourceMappingURL=react-countdown-typescript.cjs.production.min.js.map