UNPKG

react-countdown-hook

Version:
3 lines (2 loc) 1.44 kB
import e from"react";export default function(t,r){void 0===t&&(t=6e4),void 0===r&&(r=1e3);var n=e.useState(0),u=n[0],c=n[1],a=e.useRef({}),i=function e(t){a.current.started||(a.current.started=t,a.current.lastInterval=t);var n=Math.min(r,a.current.timeLeft||Infinity);t-a.current.lastInterval>=n&&(a.current.lastInterval+=n,c(function(e){return a.current.timeLeft=e-n,a.current.timeLeft})),t-a.current.started<a.current.timeToCount?a.current.requestId=window.requestAnimationFrame(e):(a.current={},c(0))},o=e.useCallback(function(e){window.cancelAnimationFrame(a.current.requestId);var r=void 0!==e?e:t;a.current.started=null,a.current.lastInterval=null,a.current.timeToCount=r,a.current.requestId=window.requestAnimationFrame(i),c(r)},[]),s=e.useCallback(function(){window.cancelAnimationFrame(a.current.requestId),a.current.started=null,a.current.lastInterval=null,a.current.timeToCount=a.current.timeLeft},[]),l=e.useCallback(function(){!a.current.started&&a.current.timeLeft>0&&(window.cancelAnimationFrame(a.current.requestId),a.current.requestId=window.requestAnimationFrame(i))},[]),m=e.useCallback(function(){a.current.timeLeft&&(window.cancelAnimationFrame(a.current.requestId),a.current={},c(0))},[]),d=e.useMemo(function(){return{start:o,pause:s,resume:l,reset:m}},[]);return e.useEffect(function(){return function(){return window.cancelAnimationFrame(a.current.requestId)}},[]),[u,d]} //# sourceMappingURL=index.module.js.map