All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.react-utils.useTimer.useTimer.js.map Maven / Gradle / Ivy

Go to download

A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.

There is a newer version: 4.12.3
Show newest version
{"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,CAAC,CAAC;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,CAAC,CAAC;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,CAAC,CAAC;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,CAAC,CAAC,CAAC;EAEzC,OAAOrB,oBAAoB,CAACU,SAAS,EAAE,YAAM;IAC3C,IAAMW,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;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","ignoreList":[]}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy