react-timer-hook
Advanced tools
Comparing version
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports["react-timer-hook"]=t(require("react")):e["react-timer-hook"]=t(e.react)}("undefined"!=typeof self?self:this,(e=>(()=>{"use strict";var t={155:t=>{t.exports=e}},s={};function o(e){var r=s[e];if(void 0!==r)return r.exports;var i=s[e]={exports:{}};return t[e](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var s in t)o.o(t,s)&&!o.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};o.r(r),o.d(r,{default:()=>p,useStopwatch:()=>m,useTime:()=>d,useTimer:()=>u});var i=o(155);class n{static getTimeFromMilliseconds(e){const t=arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?Math.floor(e/1e3):Math.ceil(e/1e3),s=Math.floor(t/86400),o=Math.floor(t%86400/3600),r=Math.floor(t%3600/60),i=Math.floor(t%60);return{totalMilliseconds:e,totalSeconds:t,milliseconds:Math.floor(e%1e3),seconds:i,minutes:r,hours:o,days:s}}static getMillisecondsFromExpiry(e){const t=e-(new Date).getTime();return t>0?t:0}static getMillisecondsFromPrevTime(e){const t=(new Date).getTime()-e;return t>0?t:0}static getMillisecondsFromTimeNow(){const e=new Date;return e.getTime()-60*e.getTimezoneOffset()*1e3}static getFormattedTimeFromMilliseconds(e,t){const{milliseconds:s,seconds:o,minutes:r,hours:i}=n.getTimeFromMilliseconds(e);let l="",a=i;return"12-hour"===t&&(l=i>=12?"pm":"am",a=i%12),{milliseconds:s,seconds:o,minutes:r,hours:a,ampm:l}}}class l{static expiryTimestamp(e){const t=new Date(e).getTime()>0;return t||console.warn("react-timer-hook: { useTimer } Invalid expiryTimestamp settings",e),t}static onExpire(e){const t=e&&"function"==typeof e;return e&&!t&&console.warn("react-timer-hook: { useTimer } Invalid onExpire settings function",e),t}}function a(e,t){const s=(0,i.useRef)();(0,i.useEffect)((()=>{s.current=e})),(0,i.useEffect)((()=>{if(!t)return()=>{};const e=setInterval((()=>{s.current&&s.current()}),t);return()=>clearInterval(e)}),[t])}const c=1e3;function u(){let{expiryTimestamp:e,onExpire:t,autoStart:s=!0,interval:o=c}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[r,u]=(0,i.useState)(e),[m,d]=(0,i.useState)(n.getMillisecondsFromExpiry(r)),[p,f]=(0,i.useState)(s),[g,T]=(0,i.useState)(s),[M,v]=(0,i.useState)(o),y=(0,i.useCallback)((()=>{l.onExpire(t)&&t(),f(!1),v(null)}),[t]),h=(0,i.useCallback)((()=>{f(!1)}),[]),x=(0,i.useCallback)((function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];v(o),T(t),f(t),u(e),d(n.getMillisecondsFromExpiry(e))}),[o]),F=(0,i.useCallback)((()=>{const e=new Date;e.setMilliseconds(e.getMilliseconds()+m),x(e)}),[m,x]),w=(0,i.useCallback)((()=>{g?(d(n.getMillisecondsFromExpiry(r)),f(!0)):F()}),[r,g,F]);return a((()=>{const e=n.getMillisecondsFromExpiry(r);d(e),e<=0?y():e<M&&v(e)}),p?M:null),(0,i.useEffect)((()=>{l.expiryTimestamp(r)}),[r]),{...n.getTimeFromMilliseconds(m),start:w,pause:h,resume:F,restart:x,isRunning:p}}function m(){let{autoStart:e,offsetTimestamp:t,interval:s=c}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const o=n.getMillisecondsFromExpiry(t)||0,[r,l]=(0,i.useState)(new Date-new Date(o)),[u,m]=(0,i.useState)(n.getMillisecondsFromPrevTime(r||0)),[d,p]=(0,i.useState)(e),f=c-u%c,[g,T]=(0,i.useState)(s<f?s:f);a((()=>{g!==s&&T(s),m(n.getMillisecondsFromPrevTime(r))}),d?g:null);const M=(0,i.useCallback)((()=>{l(new Date-new Date(u)),p(!0)}),[u]),v=(0,i.useCallback)((()=>{m(n.getMillisecondsFromPrevTime(r)),p(!1)}),[r]),y=(0,i.useCallback)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const o=n.getMillisecondsFromExpiry(e)||0,r=new Date-new Date(o),i=n.getMillisecondsFromPrevTime(r),a=c-i%c;l(r),m(i),T(s<a?s:a),p(t)}),[s]);return{...n.getTimeFromMilliseconds(u,!1),start:M,pause:v,reset:y,isRunning:d}}function d(){let{format:e,interval:t=c}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[s,o]=(0,i.useState)(n.getMillisecondsFromTimeNow());return a((()=>{o(n.getMillisecondsFromTimeNow())}),t),{...n.getFormattedTimeFromMilliseconds(s,e)}}function p(e){if((0,i.useEffect)((()=>{console.warn("react-timer-hook: default export useTimer is deprecated, use named exports { useTimer, useStopwatch, useTime } instead")}),[]),e.expiryTimestamp){const t=u(e);return{...t,startTimer:t.start,stopTimer:t.pause,resetTimer:()=>{}}}const t=m(e);return{...t,startTimer:t.start,stopTimer:t.pause,resetTimer:t.reset}}return r})())); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports["react-timer-hook"]=t(require("react")):e["react-timer-hook"]=t(e.react)}("undefined"!=typeof self?self:this,(e=>(()=>{"use strict";var t={155:t=>{t.exports=e}},s={};function i(e){var o=s[e];if(void 0!==o)return o.exports;var r=s[e]={exports:{}};return t[e](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};i.r(o),i.d(o,{useStopwatch:()=>u,useTime:()=>d,useTimer:()=>m});var r=i(155);class n{static getTimeFromMilliseconds(e,t=!0){const s=t?Math.ceil(e/1e3):Math.floor(e/1e3),i=Math.floor(s/86400),o=Math.floor(s%86400/3600),r=Math.floor(s%3600/60),n=Math.floor(s%60);return{totalMilliseconds:e,totalSeconds:s,milliseconds:Math.floor(e%1e3),seconds:n,minutes:r,hours:o,days:i}}static getMillisecondsFromExpiry(e){const t=(new Date).getTime(),s=e.getTime()-t;return s>0?s:0}static getMillisecondsFromPrevTime(e){const t=(new Date).getTime()-e;return t>0?t:0}static getMillisecondsFromTimeNow(){const e=new Date;return e.getTime()-60*e.getTimezoneOffset()*1e3}static getFormattedTimeFromMilliseconds(e,t){const{milliseconds:s,seconds:i,minutes:o,hours:r}=n.getTimeFromMilliseconds(e);let l="",a=r;return"12-hour"===t&&(l=r>=12?"pm":"am",a=r%12),{milliseconds:s,seconds:i,minutes:o,hours:a,ampm:l}}}class l{static expiryTimestamp(e){const t=new Date(e).getTime()>0;return t||console.warn("react-timer-hook: { useTimer } Invalid expiryTimestamp settings",e),t}static onExpire(e){const t=e&&"function"==typeof e;return e&&!t&&console.warn("react-timer-hook: { useTimer } Invalid onExpire settings function",e),t}}function a(e,t){const s=(0,r.useRef)(e);(0,r.useEffect)((()=>{s.current=e})),(0,r.useEffect)((()=>{if(!t)return()=>{};const e=setInterval((()=>{var e;null===(e=null==s?void 0:s.current)||void 0===e||e.call(s)}),t);return()=>clearInterval(e)}),[t])}const c=1e3;function m({expiryTimestamp:e,onExpire:t=()=>{},autoStart:s=!0,interval:i=c}){const[o,m]=(0,r.useState)(e),[u,d]=(0,r.useState)(n.getMillisecondsFromExpiry(o)),[g,f]=(0,r.useState)(s),[p,T]=(0,r.useState)(s),[M,y]=(0,r.useState)(i),b=(0,r.useCallback)((()=>{l.onExpire(t)&&t(),f(!1),y(null)}),[t]),v=(0,r.useCallback)((()=>{f(!1)}),[]),x=(0,r.useCallback)(((e,t=!0)=>{y(i),T(t),f(t),m(e),d(n.getMillisecondsFromExpiry(e))}),[i]),F=(0,r.useCallback)((()=>{const e=new Date;e.setMilliseconds(e.getMilliseconds()+u),x(e)}),[u,x]),S=(0,r.useCallback)((()=>{p?(d(n.getMillisecondsFromExpiry(o)),f(!0)):F()}),[o,p,F]);return a((()=>{const e=n.getMillisecondsFromExpiry(o);d(e),e<=0?b():M&&e<M&&y(e)}),g?M:null),(0,r.useEffect)((()=>{l.expiryTimestamp(o)}),[o]),Object.assign(Object.assign({},n.getTimeFromMilliseconds(u)),{start:S,pause:v,resume:F,restart:x,isRunning:g})}function u({autoStart:e=!0,offsetTimestamp:t,interval:s=c}={}){const i=t?n.getMillisecondsFromExpiry(t):0,[o,l]=(0,r.useState)((new Date).getTime()-new Date(i).getTime()),[m,u]=(0,r.useState)(n.getMillisecondsFromPrevTime(o||0)),[d,g]=(0,r.useState)(e),f=c-m%c,[p,T]=(0,r.useState)(s<f?s:f);a((()=>{p!==s&&T(s),u(n.getMillisecondsFromPrevTime(o))}),d?p:null);const M=(0,r.useCallback)((()=>{l((new Date).getTime()-new Date(m).getTime()),g(!0)}),[m]),y=(0,r.useCallback)((()=>{d&&(u(n.getMillisecondsFromPrevTime(o)),g(!1))}),[o,d]),b=(0,r.useCallback)(((e,t=!0)=>{const i=e?n.getMillisecondsFromExpiry(e):0,o=(new Date).getTime()-new Date(i).getTime(),r=n.getMillisecondsFromPrevTime(o),a=c-r%c;l(o),u(r),T(s<a?s:a),g(t)}),[s]);return Object.assign(Object.assign({},n.getTimeFromMilliseconds(m,!1)),{start:M,pause:y,reset:b,isRunning:d})}function d({format:e,interval:t=c}={}){const[s,i]=(0,r.useState)(n.getMillisecondsFromTimeNow());return a((()=>{i(n.getMillisecondsFromTimeNow())}),t),Object.assign({},n.getFormattedTimeFromMilliseconds(s,e))}return o})())); |
{ | ||
"name": "react-timer-hook", | ||
"version": "4.0.1", | ||
"version": "4.0.2", | ||
"description": "React timer hook is a custom react hook built to handle timers(countdown), stopwatch and time logic/state in your react component.", | ||
"main": "dist/index.js", | ||
"types": "dist/index.d.ts", | ||
"types": "dist/types/src/index.d.ts", | ||
"scripts": { | ||
"prepare": "npm run build:prod", | ||
"build:demo": "rm -rf ./docs && webpack --config webpack.dev.js && webpack-dev-server --open --config webpack.dev.js", | ||
"build:prod": "rm -rf ./dist && webpack --config webpack.prod.js", | ||
"prepare": "yarn build:prod", | ||
"build:demo": "rm -r ./docs || true && webpack --config webpack.dev.js && cp ./demo/index.html ./docs && webpack-dev-server --open --config webpack.dev.js", | ||
"build:prod": "rm -r ./dist || true && webpack --config webpack.prod.js && rm -r ./dist/types/demo", | ||
"lint": "node_modules/.bin/eslint src" | ||
@@ -15,3 +15,3 @@ }, | ||
"hooks": { | ||
"pre-commit": "yarn lint" | ||
"pre-commit": "yarn lint && yarn tsc --noEmit" | ||
} | ||
@@ -43,16 +43,11 @@ }, | ||
"devDependencies": { | ||
"@babel/cli": "^7.0.0-beta.40", | ||
"@babel/core": "^7.21.4", | ||
"@babel/eslint-parser": "^7.21.3", | ||
"@babel/preset-env": "^7.21.4", | ||
"@babel/preset-react": "^7.18.6", | ||
"@babel/preset-typescript": "^7.21.5", | ||
"babel-loader": "9.1.2", | ||
"copy-webpack-plugin": "^11.0.0", | ||
"eslint": "^8.39.0", | ||
"eslint-config-airbnb": "^19.0.4", | ||
"@types/react": "^19.0.10", | ||
"@types/react-dom": "^19.0.4", | ||
"@types/styled-components": "^5.1.34", | ||
"@typescript-eslint/eslint-plugin": "^8.26.0", | ||
"@typescript-eslint/parser": "^8.26.0", | ||
"eslint": "^9.22.0", | ||
"eslint-plugin-import": "^2.19.1", | ||
"eslint-plugin-jsx-a11y": "^6.2.3", | ||
"eslint-plugin-react": "^7.17.0", | ||
"eslint-plugin-react-hooks": "^4.6.0", | ||
"eslint-plugin-react-hooks": "^5.2.0", | ||
"husky": "^4.0.1", | ||
@@ -62,2 +57,4 @@ "react": "^16.8.0", | ||
"styled-components": "^5.2.1", | ||
"ts-loader": "^9.5.2", | ||
"typescript": "^5.8.2", | ||
"webpack": "^5.80.0", | ||
@@ -64,0 +61,0 @@ "webpack-cli": "^5.0.2", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
28587
34.2%18
-14.29%15
87.5%349
571.15%1
Infinity%