package.react-utils.useTimer.useTimer.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of neeto-commons-frontend Show documentation
Show all versions of neeto-commons-frontend Show documentation
A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.
{"version":3,"file":"useTimer.js","names":["useRef","useSyncExternalStore","isNotEmpty","subscriptions","interval","initiateInterval","setInterval","forEach","callback","cleanupInterval","clearInterval","subscribe","push","splice","indexOf","useTimer","delay","arguments","length","undefined","lastUpdatedRef","Date","now","lastUpdated","current"],"sources":["../../../src/react-utils/useTimer/useTimer.js"],"sourcesContent":["import { useRef, useSyncExternalStore } from \"react\";\n\nimport { isNotEmpty } from \"neetocist\";\n\nconst subscriptions = [];\nlet interval = null;\n\nconst initiateInterval = () => {\n // Create new interval if there are no subscriptions.\n if (isNotEmpty(subscriptions)) return;\n interval = setInterval(() => {\n subscriptions.forEach(callback => callback());\n }, 1000);\n};\n\nconst cleanupInterval = () => {\n // Cleanup existing interval if there are no more subscriptions\n if (isNotEmpty(subscriptions)) return;\n clearInterval(interval);\n};\n\nconst subscribe = callback => {\n initiateInterval();\n subscriptions.push(callback);\n\n return () => {\n subscriptions.splice(subscriptions.indexOf(callback), 1);\n cleanupInterval();\n };\n};\n\nconst useTimer = (delay = 60) => {\n const lastUpdatedRef = useRef(Date.now());\n\n return useSyncExternalStore(subscribe, () => {\n const now = Date.now();\n let lastUpdated = lastUpdatedRef.current;\n if (now - lastUpdated >= delay * 1000) lastUpdated = now;\n lastUpdatedRef.current = lastUpdated;\n\n return lastUpdated;\n });\n};\n\nexport default useTimer;\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,OAAO;AAEpD,SAASC,UAAU;AAEnB,IAAMC,aAAa,GAAG,EAAE;AACxB,IAAIC,QAAQ,GAAG,IAAI;AAEnB,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;EAC7B;EACA,IAAIH,UAAU,CAACC,aAAa,CAAC,EAAE;EAC/BC,QAAQ,GAAGE,WAAW,CAAC,YAAM;IAC3BH,aAAa,CAACI,OAAO,CAAC,UAAAC,QAAQ;MAAA,OAAIA,QAAQ,EAAE;IAAA,EAAC;EAC/C,CAAC,EAAE,IAAI,CAAC;AACV,CAAC;AAED,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;EAC5B;EACA,IAAIP,UAAU,CAACC,aAAa,CAAC,EAAE;EAC/BO,aAAa,CAACN,QAAQ,CAAC;AACzB,CAAC;AAED,IAAMO,SAAS,GAAG,SAAZA,SAASA,CAAGH,QAAQ,EAAI;EAC5BH,gBAAgB,EAAE;EAClBF,aAAa,CAACS,IAAI,CAACJ,QAAQ,CAAC;EAE5B,OAAO,YAAM;IACXL,aAAa,CAACU,MAAM,CAACV,aAAa,CAACW,OAAO,CAACN,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxDC,eAAe,EAAE;EACnB,CAAC;AACH,CAAC;AAED,IAAMM,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAmB;EAAA,IAAfC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAC1B,IAAMG,cAAc,GAAGpB,MAAM,CAACqB,IAAI,CAACC,GAAG,EAAE,CAAC;EAEzC,OAAOrB,oBAAoB,CAACU,SAAS,EAAE,YAAM;IAC3C,IAAMW,GAAG,GAAGD,IAAI,CAACC,GAAG,EAAE;IACtB,IAAIC,WAAW,GAAGH,cAAc,CAACI,OAAO;IACxC,IAAIF,GAAG,GAAGC,WAAW,IAAIP,KAAK,GAAG,IAAI,EAAEO,WAAW,GAAGD,GAAG;IACxDF,cAAc,CAACI,OAAO,GAAGD,WAAW;IAEpC,OAAOA,WAAW;EACpB,CAAC,CAAC;AACJ,CAAC;AAED,eAAeR,QAAQ"}