{"version":3,"file":"useRandomInterval.jsx","names":["useCallback","useEffect","useRef","random","min","max","Math","floor","useRandomInterval","callback","minDelay","maxDelay","$","_c","timeoutId","savedCallback","t0","t1","current","t2","t3","isEnabled","handleTick","nextTickAt","window","setTimeout","clearTimeout","t4","Symbol","for","cancel"],"sources":["../src/useRandomInterval.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\n\n// Taken and adapted from:\n// https://www.joshwcomeau.com/snippets/react-hooks/use-random-interval/\n\nconst random = (min: number, max: number) =>\n\tMath.floor(Math.random() * (max - min)) + min;\n\nexport default function useRandomInterval(\n\tcallback: () => void,\n\tminDelay: number | null,\n\tmaxDelay: number | null,\n) {\n\tconst timeoutId = useRef<number | null>(null);\n\tconst savedCallback = useRef(callback);\n\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback;\n\t}, [callback]);\n\n\tuseEffect(() => {\n\t\tconst isEnabled =\n\t\t\ttypeof minDelay === \"number\" && typeof maxDelay === \"number\";\n\t\tif (isEnabled) {\n\t\t\tconst handleTick = () => {\n\t\t\t\tconst nextTickAt = random(minDelay, maxDelay);\n\t\t\t\ttimeoutId.current = window.setTimeout(() => {\n\t\t\t\t\tsavedCallback.current();\n\t\t\t\t\thandleTick();\n\t\t\t\t}, nextTickAt);\n\t\t\t};\n\t\t\thandleTick();\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (typeof timeoutId.current === \"number\") {\n\t\t\t\twindow.clearTimeout(timeoutId.current);\n\t\t\t}\n\t\t};\n\t}, [minDelay, maxDelay]);\n\n\tconst cancel = useCallback(() => {\n\t\tif (typeof timeoutId.current === \"number\") {\n\t\t\twindow.clearTimeout(timeoutId.current);\n\t\t}\n\t}, []);\n\n\treturn cancel;\n}\n"],"mappings":";AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;;AAEtD;AACA;;AAEA,MAAMC,MAAM,GAAGA,CAACC,GAAW,EAAEC,GAAW,KACvCC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACH,MAAM,CAAC,CAAC,IAAIE,GAAG,GAAGD,GAAG,CAAC,CAAC,GAAGA,GAAG;AAE9C,eAAe,SAAAI,kBAAAC,QAAA,EAAAC,QAAA,EAAAC,QAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAKd,MAAAC,SAAA,GAAkBZ,MAAA,KAA0B,CAAC;EAC7C,MAAAa,aAAA,GAAsBb,MAAA,CAAOO,QAAQ,CAAC;EAAC,IAAAO,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAH,QAAA;IAE7BO,EAAA,GAAAA,CAAA;MACTD,aAAa,CAAAG,OAAA,GAAWT,QAAQ;IAAA;IAC9BQ,EAAA,IAACR,QAAQ;IAACG,CAAA,MAAAH,QAAA;IAAAG,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAFbX,SAAA,CAAUe,EAET,EAAEC,EAAU,CAAC;EAAA,IAAAE,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAD,QAAA,IAAAC,CAAA,QAAAF,QAAA;IAEJS,EAAA,GAAAA,CAAA;MACT,MAAAE,SAAA,GACC,OAAOX,QAAQ,KAAK,QAAQ,IAAI,OAAOC,QAAQ,KAAK,QAAQ;MAAC,IAC1DU,SAAS;QACZ,MAAAC,UAAA,GAAAA,CAAA;UACC,MAAAC,UAAA,GAAmBpB,MAAA,CAAOO,QAAQ,EAAEC,QAAQ,CAAC;UAC7CG,SAAS,CAAAI,OAAA,GAAWM,MAAA,CAAAC,UAAA;YACnBV,aAAa,CAAAG,OAAA,CAAS,CAAC;YACvBI,UAAU,CAAC,CAAC;UAAA,GACVC,UAAU,CAAC;QAAA;QAEfD,UAAU,CAAC,CAAC;MAAA;MAAA;QAAA,IAIR,OAAOR,SAAS,CAAAI,OAAA,KAAa,QAAQ;UACxCM,MAAA,CAAAE,YAAA,CAAoBZ,SAAS,CAAAI,OAAQ,CAAC;QAAA;MAAA;IAAA;IAGtCE,EAAA,IAACV,QAAQ,EAAEC,QAAQ;IAACC,CAAA,MAAAD,QAAA;IAAAC,CAAA,MAAAF,QAAA;IAAAE,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAD,EAAA,GAAAP,CAAA;IAAAQ,EAAA,GAAAR,CAAA;EAAA;EAnBvBX,SAAA,CAAUkB,EAmBT,EAAEC,EAAoB,CAAC;EAAA,IAAAO,EAAA;EAAA,IAAAf,CAAA,QAAAgB,MAAA,CAAAC,GAAA;IAEGF,EAAA,GAAAA,CAAA;MAAA,IACtB,OAAOb,SAAS,CAAAI,OAAA,KAAa,QAAQ;QACxCM,MAAA,CAAAE,YAAA,CAAoBZ,SAAS,CAAAI,OAAQ,CAAC;MAAA;IAAA;IAEvCN,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAJD,MAAAkB,MAAA,GAAeH,EAIT;EAAC,OAEAG,MAAM;AAAA","ignoreList":[]}