@siberiacancode/reactuse 0.0.118 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs.map +1 -1
  2. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +1 -1
  3. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
  4. package/dist/cjs/hooks/useDropZone/useDropZone.cjs +2 -0
  5. package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -0
  6. package/dist/cjs/hooks/useEventSource/useEventSource.cjs +2 -0
  7. package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -0
  8. package/dist/cjs/hooks/useHover/useHover.cjs +1 -1
  9. package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
  10. package/dist/cjs/hooks/useInterval/useInterval.cjs +1 -1
  11. package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
  12. package/dist/cjs/hooks/useLongPress/useLongPress.cjs +1 -1
  13. package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
  14. package/dist/cjs/hooks/useOnce/useOnce.cjs +1 -1
  15. package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
  16. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +1 -1
  17. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
  18. package/dist/cjs/hooks/usePrevious/usePrevious.cjs +1 -1
  19. package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
  20. package/dist/cjs/hooks/useQuery/useQuery.cjs +1 -1
  21. package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
  22. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +1 -1
  23. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
  24. package/dist/cjs/hooks/useTimeout/useTimeout.cjs +1 -1
  25. package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
  26. package/dist/cjs/hooks/useTimer/useTimer.cjs +1 -1
  27. package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
  28. package/dist/cjs/hooks/useVibrate/useVibrate.cjs +1 -1
  29. package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
  30. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +1 -1
  31. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
  32. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +1 -1
  33. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
  34. package/dist/cjs/index.cjs +1 -1
  35. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
  36. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +4 -4
  37. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
  38. package/dist/esm/hooks/useDropZone/useDropZone.mjs +50 -0
  39. package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -0
  40. package/dist/esm/hooks/useEventSource/useEventSource.mjs +52 -0
  41. package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -0
  42. package/dist/esm/hooks/useHover/useHover.mjs +9 -6
  43. package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
  44. package/dist/esm/hooks/useInterval/useInterval.mjs +6 -6
  45. package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
  46. package/dist/esm/hooks/useLongPress/useLongPress.mjs +1 -1
  47. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  48. package/dist/esm/hooks/useOnce/useOnce.mjs +3 -3
  49. package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
  50. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +14 -14
  51. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
  52. package/dist/esm/hooks/usePrevious/usePrevious.mjs +3 -3
  53. package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
  54. package/dist/esm/hooks/useQuery/useQuery.mjs +27 -29
  55. package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
  56. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +17 -17
  57. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
  58. package/dist/esm/hooks/useTimeout/useTimeout.mjs +1 -1
  59. package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
  60. package/dist/esm/hooks/useTimer/useTimer.mjs +15 -15
  61. package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
  62. package/dist/esm/hooks/useVibrate/useVibrate.mjs +9 -9
  63. package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
  64. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +3 -3
  65. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
  66. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +5 -5
  67. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
  68. package/dist/esm/index.mjs +260 -256
  69. package/dist/esm/index.mjs.map +1 -1
  70. package/dist/types/hooks/index.d.ts +2 -0
  71. package/dist/types/hooks/useDropZone/useDropZone.d.ts +80 -0
  72. package/dist/types/hooks/useEventSource/useEventSource.d.ts +47 -0
  73. package/dist/types/hooks/useHover/useHover.d.ts +11 -4
  74. package/dist/types/hooks/usePrevious/usePrevious.d.ts +1 -1
  75. package/dist/types/hooks/useQuery/useQuery.d.ts +0 -1
  76. package/package.json +14 -18
@@ -1 +1 @@
1
- {"version":3,"file":"useDidUpdate.cjs","sources":["../../../../src/hooks/useDidUpdate/useDidUpdate.ts"],"sourcesContent":["import type { DependencyList, EffectCallback } from 'react';\r\n\r\nimport { useRef } from 'react';\r\n\r\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect';\r\n\r\n/**\r\n * @name useDidUpdate\r\n * @description – Hook that triggers the effect callback on updates\r\n * @category Lifecycle\r\n *\r\n * @param {EffectCallback} effect The effect callback\r\n * @param {DependencyList} [deps] The dependencies list for the effect\r\n *\r\n * @example\r\n * useDidUpdate(() => console.log(\"effect runs on updates\"), deps);\r\n */\r\nexport const useDidUpdate = (effect: EffectCallback, deps?: DependencyList) => {\r\n const mounted = useRef(false);\r\n\r\n useIsomorphicLayoutEffect(\r\n () => () => {\r\n mounted.current = false;\r\n },\r\n []\r\n );\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n if (mounted.current) {\r\n return effect();\r\n }\r\n\r\n mounted.current = true;\r\n return undefined;\r\n }, deps);\r\n};\r\n"],"names":["useDidUpdate","effect","deps","mounted","useRef","useIsomorphicLayoutEffect"],"mappings":"iLAiBaA,EAAe,CAACC,EAAwBC,IAA0B,CACvE,MAAAC,EAAUC,SAAO,EAAK,EAE5BC,EAAA,0BACE,IAAM,IAAM,CACVF,EAAQ,QAAU,EACpB,EACA,CAAA,CACF,EAEAE,EAAAA,0BAA0B,IAAM,CAC9B,GAAIF,EAAQ,QACV,OAAOF,EAAO,EAGhBE,EAAQ,QAAU,IAEjBD,CAAI,CACT"}
1
+ {"version":3,"file":"useDidUpdate.cjs","sources":["../../../../src/hooks/useDidUpdate/useDidUpdate.ts"],"sourcesContent":["import type { DependencyList, EffectCallback } from 'react';\n\nimport { useRef } from 'react';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect';\n\n/**\n * @name useDidUpdate\n * @description – Hook that triggers the effect callback on updates\n * @category Lifecycle\n *\n * @param {EffectCallback} effect The effect callback\n * @param {DependencyList} [deps] The dependencies list for the effect\n *\n * @example\n * useDidUpdate(() => console.log(\"effect runs on updates\"), deps);\n */\nexport const useDidUpdate = (effect: EffectCallback, deps?: DependencyList) => {\n const mounted = useRef(false);\n\n useIsomorphicLayoutEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n if (mounted.current) {\n return effect();\n }\n\n mounted.current = true;\n return undefined;\n }, deps);\n};\n"],"names":["useDidUpdate","effect","deps","mounted","useRef","useIsomorphicLayoutEffect"],"mappings":"iLAiBaA,EAAe,CAACC,EAAwBC,IAA0B,CACvE,MAAAC,EAAUC,SAAO,EAAK,EAE5BC,EAAA,0BACE,IAAM,IAAM,CACVF,EAAQ,QAAU,EACpB,EACA,CAAA,CACF,EAEAE,EAAAA,0BAA0B,IAAM,CAC9B,GAAIF,EAAQ,QACV,OAAOF,EAAO,EAGhBE,EAAQ,QAAU,IAEjBD,CAAI,CACT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),g=require("../useRefState/useRefState.cjs"),T=require("../../utils/helpers/isTarget.cjs"),k=require("../../utils/helpers/getElement.cjs"),m=300,v=(...t)=>{const e=T.isTarget(t[0])?t[0]:void 0,l=e?t[1]:t[0],f=e?t[2]:t[1],u=c.useRef(),r=c.useRef(0),o=g.useRefState(),a=c.useRef(l);a.current=l;const i=c.useRef(f);if(i.current=f,c.useEffect(()=>{if(!e&&!o.state)return;const n=e?k.getElement(e):o.current;if(!n)return;const s=R=>{var d;r.current+=1,r.current===1&&(u.current=setTimeout(()=>{var E;(E=i.current)!=null&&E.onSingleClick&&i.current.onSingleClick(R),r.current=0},((d=i.current)==null?void 0:d.threshold)??m)),r.current===2&&(clearTimeout(u.current),a.current(R),r.current=0)};return n.addEventListener("mousedown",s),n.addEventListener("touchstart",s),()=>{n.removeEventListener("mousedown",s),n.removeEventListener("touchstart",s),u.current&&clearTimeout(u.current)}},[e,o.state]),!e)return o};exports.useDoubleClick=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),g=require("../useRefState/useRefState.cjs"),T=require("../../utils/helpers/isTarget.cjs"),k=require("../../utils/helpers/getElement.cjs"),v=300,m=(...t)=>{const e=T.isTarget(t[0])?t[0]:void 0,l=e?t[1]:t[0],f=e?t[2]:t[1],u=c.useRef(void 0),r=c.useRef(0),o=g.useRefState(),a=c.useRef(l);a.current=l;const i=c.useRef(f);if(i.current=f,c.useEffect(()=>{if(!e&&!o.state)return;const n=e?k.getElement(e):o.current;if(!n)return;const s=d=>{var R;r.current+=1,r.current===1&&(u.current=setTimeout(()=>{var E;(E=i.current)!=null&&E.onSingleClick&&i.current.onSingleClick(d),r.current=0},((R=i.current)==null?void 0:R.threshold)??v)),r.current===2&&(clearTimeout(u.current),a.current(d),r.current=0)};return n.addEventListener("mousedown",s),n.addEventListener("touchstart",s),()=>{n.removeEventListener("mousedown",s),n.removeEventListener("touchstart",s),u.current&&clearTimeout(u.current)}},[e,o.state]),!e)return o};exports.useDoubleClick=m;
2
2
  //# sourceMappingURL=useDoubleClick.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDoubleClick.cjs","sources":["../../../../src/hooks/useDoubleClick/useDoubleClick.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DoubleClickEvents = MouseEvent | TouchEvent;\n\n// * The use double click options type */\nexport interface UseDoubleClickOptions {\n // * The threshold time in milliseconds between clicks\n threshold?: number;\n // * The callback function to be invoked on single click\n onSingleClick?: (event: DoubleClickEvents) => void;\n}\n\nexport interface UseDoubleClick {\n (\n target: HookTarget,\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\nconst DEFAULT_THRESHOLD_TIME = 300;\n\n/**\n * @name useDoubleClick\n * @description - Hook that defines the logic when double clicking an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be double clicked\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * useDoubleClick(ref, () => console.log('double clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * const ref = useDoubleClick(() => console.log('double clicked'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}\n */\nexport const useDoubleClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: DoubleClickEvents) => void;\n const options = (target ? params[2] : params[1]) as UseDoubleClickOptions | undefined;\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const clickCountRef = useRef(0);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onClick = (event: DoubleClickEvents) => {\n clickCountRef.current += 1;\n\n if (clickCountRef.current === 1) {\n timeoutIdRef.current = setTimeout(() => {\n if (internalOptionsRef.current?.onSingleClick)\n internalOptionsRef.current.onSingleClick(event);\n clickCountRef.current = 0;\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n }\n\n if (clickCountRef.current === 2) {\n clearTimeout(timeoutIdRef.current);\n internalCallbackRef.current(event);\n clickCountRef.current = 0;\n }\n };\n\n element.addEventListener('mousedown', onClick as EventListener);\n element.addEventListener('touchstart', onClick as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onClick as EventListener);\n element.removeEventListener('touchstart', onClick as EventListener);\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseDoubleClick;\n"],"names":["DEFAULT_THRESHOLD_TIME","useDoubleClick","params","target","isTarget","callback","options","timeoutIdRef","useRef","clickCountRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onClick","event","_a"],"mappings":"mPAkCMA,EAAyB,IA2BlBC,EAAkB,IAAIC,IAAuB,CAClD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACzCI,EAAWH,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAExCK,EAAeC,EAAAA,OAAsC,EACrDC,EAAgBD,SAAO,CAAC,EACxBE,EAAcC,EAAAA,YAAqB,EAEnCC,EAAsBJ,SAAOH,CAAQ,EAC3CO,EAAoB,QAAUP,EACxB,MAAAQ,EAAqBL,SAAOF,CAAO,EAqCzC,GApCAO,EAAmB,QAAUP,EAE7BQ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACX,GAAU,CAACO,EAAY,MAAO,OAEnC,MAAMK,EAAUZ,EAASa,EAAAA,WAAWb,CAAM,EAAIO,EAAY,QAC1D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAWC,GAA6B,OAC5CT,EAAc,SAAW,EAErBA,EAAc,UAAY,IACfF,EAAA,QAAU,WAAW,IAAM,QAClCY,EAAAN,EAAmB,UAAnB,MAAAM,EAA4B,eACXN,EAAA,QAAQ,cAAcK,CAAK,EAChDT,EAAc,QAAU,CACvB,IAAAU,EAAAN,EAAmB,UAAnB,YAAAM,EAA4B,YAAanB,CAAsB,GAGhES,EAAc,UAAY,IAC5B,aAAaF,EAAa,OAAO,EACjCK,EAAoB,QAAQM,CAAK,EACjCT,EAAc,QAAU,EAE5B,EAEQ,OAAAM,EAAA,iBAAiB,YAAaE,CAAwB,EACtDF,EAAA,iBAAiB,aAAcE,CAAwB,EAExD,IAAM,CACHF,EAAA,oBAAoB,YAAaE,CAAwB,EACzDF,EAAA,oBAAoB,aAAcE,CAAwB,EAC9DV,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,CACC,EAAA,CAACJ,EAAQO,EAAY,KAAK,CAAC,EAE1B,CAAAP,EACG,OAAAO,CACT"}
1
+ {"version":3,"file":"useDoubleClick.cjs","sources":["../../../../src/hooks/useDoubleClick/useDoubleClick.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DoubleClickEvents = MouseEvent | TouchEvent;\n\n// * The use double click options type */\nexport interface UseDoubleClickOptions {\n // * The threshold time in milliseconds between clicks\n threshold?: number;\n // * The callback function to be invoked on single click\n onSingleClick?: (event: DoubleClickEvents) => void;\n}\n\nexport interface UseDoubleClick {\n (\n target: HookTarget,\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\nconst DEFAULT_THRESHOLD_TIME = 300;\n\n/**\n * @name useDoubleClick\n * @description - Hook that defines the logic when double clicking an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be double clicked\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * useDoubleClick(ref, () => console.log('double clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * const ref = useDoubleClick(() => console.log('double clicked'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}\n */\nexport const useDoubleClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: DoubleClickEvents) => void;\n const options = (target ? params[2] : params[1]) as UseDoubleClickOptions | undefined;\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const clickCountRef = useRef(0);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onClick = (event: DoubleClickEvents) => {\n clickCountRef.current += 1;\n\n if (clickCountRef.current === 1) {\n timeoutIdRef.current = setTimeout(() => {\n if (internalOptionsRef.current?.onSingleClick)\n internalOptionsRef.current.onSingleClick(event);\n clickCountRef.current = 0;\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n }\n\n if (clickCountRef.current === 2) {\n clearTimeout(timeoutIdRef.current);\n internalCallbackRef.current(event);\n clickCountRef.current = 0;\n }\n };\n\n element.addEventListener('mousedown', onClick as EventListener);\n element.addEventListener('touchstart', onClick as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onClick as EventListener);\n element.removeEventListener('touchstart', onClick as EventListener);\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseDoubleClick;\n"],"names":["DEFAULT_THRESHOLD_TIME","useDoubleClick","params","target","isTarget","callback","options","timeoutIdRef","useRef","clickCountRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onClick","event","_a"],"mappings":"mPAkCMA,EAAyB,IA2BlBC,EAAkB,IAAIC,IAAuB,CAClD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACzCI,EAAWH,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAExCK,EAAeC,SAAsC,MAAS,EAC9DC,EAAgBD,SAAO,CAAC,EACxBE,EAAcC,EAAAA,YAAqB,EAEnCC,EAAsBJ,SAAOH,CAAQ,EAC3CO,EAAoB,QAAUP,EACxB,MAAAQ,EAAqBL,SAAOF,CAAO,EAqCzC,GApCAO,EAAmB,QAAUP,EAE7BQ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACX,GAAU,CAACO,EAAY,MAAO,OAEnC,MAAMK,EAAUZ,EAASa,EAAAA,WAAWb,CAAM,EAAIO,EAAY,QAC1D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAWC,GAA6B,OAC5CT,EAAc,SAAW,EAErBA,EAAc,UAAY,IACfF,EAAA,QAAU,WAAW,IAAM,QAClCY,EAAAN,EAAmB,UAAnB,MAAAM,EAA4B,eACXN,EAAA,QAAQ,cAAcK,CAAK,EAChDT,EAAc,QAAU,CACvB,IAAAU,EAAAN,EAAmB,UAAnB,YAAAM,EAA4B,YAAanB,CAAsB,GAGhES,EAAc,UAAY,IAC5B,aAAaF,EAAa,OAAO,EACjCK,EAAoB,QAAQM,CAAK,EACjCT,EAAc,QAAU,EAE5B,EAEQ,OAAAM,EAAA,iBAAiB,YAAaE,CAAwB,EACtDF,EAAA,iBAAiB,aAAcE,CAAwB,EAExD,IAAM,CACHF,EAAA,oBAAoB,YAAaE,CAAwB,EACzDF,EAAA,oBAAoB,aAAcE,CAAwB,EAC9DV,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,CACC,EAAA,CAACJ,EAAQO,EAAY,KAAK,CAAC,EAE1B,CAAAP,EACG,OAAAO,CACT"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),q=require("../useRefState/useRefState.cjs"),F=require("../../utils/helpers/isTarget.cjs"),O=require("../../utils/helpers/getElement.cjs"),j=(...o)=>{const s=F.isTarget(o[0])?o[0]:void 0,t=s?typeof o[1]=="object"?o[1]:{onDrop:o[1]}:typeof o[0]=="object"?o[0]:{onDrop:o[0]},c=q.useRefState(),f=g.useRef(0),[E,S]=g.useState(null),[T,v]=g.useState(!1),a=t.dataTypes,R=e=>{if(!e.dataTransfer)return null;const n=Array.from(e.dataTransfer.files);return t.multiple?n:n.length?[n[0]]:null},V=e=>a?typeof a=="function"?a(e):a.length?e.length?e.every(n=>(console.log("type",n),console.log("dataTypes",a),a.some(u=>n.includes(u)))):!1:!0:!0,b=e=>{const n=Array.from(e).map(l=>l.type),u=V(n),i=t.multiple||e.length<=1;return u&&i};return g.useEffect(()=>{if(!s&&!c.state)return;const e=s?O.getElement(s):c.current;if(!e)return;const n=(r,d)=>{var p,L,m,h;if(!r.dataTransfer)return;if(!b(r.dataTransfer.items)){r.dataTransfer.dropEffect="none";return}r.preventDefault(),r.dataTransfer.dropEffect="copy";const D=R(r);if(d==="drop"){f.current=0,v(!1),S(D),(p=t.onDrop)==null||p.call(t,D,r);return}if(d==="enter"){f.current+=1,v(!0),(L=t.onEnter)==null||L.call(t,r);return}if(d==="leave"){if(f.current-=1,f.current!==0)return;v(!1),(m=t.onLeave)==null||m.call(t,r);return}d==="over"&&((h=t.onOver)==null||h.call(t,r))},u=r=>n(r,"drop"),i=r=>n(r,"over"),l=r=>n(r,"enter"),y=r=>n(r,"leave");return e.addEventListener("dragenter",l),e.addEventListener("dragover",i),e.addEventListener("dragleave",y),e.addEventListener("drop",u),()=>{e.removeEventListener("dragenter",l),e.removeEventListener("dragover",i),e.removeEventListener("dragleave",y),e.removeEventListener("drop",u)}},[s,c.current]),s?{overed:T,files:E}:{ref:c,overed:T,files:E}};exports.useDropZone=j;
2
+ //# sourceMappingURL=useDropZone.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDropZone.cjs","sources":["../../../../src/hooks/useDropZone/useDropZone.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DropZoneDataTypes = ((types: string[]) => boolean) | string[];\n\nexport interface UseDropZoneOptions {\n /** The data types for drop zone */\n dataTypes?: DropZoneDataTypes;\n /** The multiple mode for drop zone */\n multiple?: boolean;\n /** The on drop callback */\n onDrop?: (files: File[] | null, event: DragEvent) => void;\n /** The on enter callback */\n onEnter?: (event: DragEvent) => void;\n /** The on leave callback */\n onLeave?: (event: DragEvent) => void;\n /** The on over callback */\n onOver?: (event: DragEvent) => void;\n}\n\nexport interface UseDropZoneReturn {\n /** The files that was dropped in drop zone */\n files: File[] | null;\n /** The over drop zone status */\n overed: boolean;\n}\n\nexport interface UseDropZone {\n (\n target: HookTarget,\n callback?: (files: File[] | null, event: DragEvent) => void\n ): UseDropZoneReturn;\n\n <Target extends Element>(\n callback?: (files: File[] | null, event: DragEvent) => void,\n target?: never\n ): UseDropZoneReturn & {\n ref: StateRef<Target>;\n };\n\n (target: HookTarget, options?: UseDropZoneOptions): UseDropZoneReturn;\n\n <Target extends Element>(\n options?: UseDropZoneOptions,\n target?: never\n ): UseDropZoneReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useDropZone\n * @description - Hook that provides drop zone functionality\n * @category Elements\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element drop zone's\n * @param {DataTypes} [options.dataTypes] The data types\n * @param {boolean} [options.multiple] The multiple mode\n * @param {(files: File[] | null, event: DragEvent) => void} [options.onDrop] The on drop callback function\n * @param {(event: DragEvent) => void} [options.onEnter] The on enter callback function\n * @param {(event: DragEvent) => void} [options.onLeave] The on leave callback function\n * @param {(event: DragEvent) => void} [options.onOver] The on over callback function\n * @returns {[boolean, File[] | null]} The object with drop zone states\n *\n * @example\n * const { overed, files } = useDropZone(ref, options);\n *\n * @overload\n * @param {Target} target The target element drop zone's\n * @param {(files: File[] | null, event: DragEvent) => void} [callback] The callback function to be invoked on drop\n * @returns {[boolean, File[] | null]} The object with drop zone states\n *\n * @example\n * const { overed, files } = useDropZone(ref, () => console.log('callback'));\n *\n * @overload\n * @param {DataTypes} [options.dataTypes] The data types\n * @param {boolean} [options.multiple] The multiple mode\n * @param {(files: File[] | null, event: DragEvent) => void} [options.onDrop] The on drop callback function\n * @param {(event: DragEvent) => void} [options.onEnter] The on enter callback function\n * @param {(event: DragEvent) => void} [options.onLeave] The on leave callback function\n * @param {(event: DragEvent) => void} [options.onOver] The on over callback function\n * @returns {[StateRef<Target>, boolean, File[] | null]} The object with drop zone states and ref\n *\n * @example\n * const { ref, overed, files } = useDropZone(options);\n *\n * @overload\n * @param {(files: File[] | null, event: DragEvent) => void} [callback] The callback function to be invoked on drop\n * @returns {[StateRef<Target>, boolean, File[] | null]} The object with drop zone states and ref\n *\n * @example\n * const { ref, overed, files } = useDropZone(() => console.log('callback'));\n */\n\nexport const useDropZone = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onDrop: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onDrop: params[0] }\n ) as UseDropZoneOptions;\n\n const internalRef = useRefState<Element>();\n\n const counterRef = useRef(0);\n const [files, setFiles] = useState<File[] | null>(null);\n const [overed, setOvered] = useState(false);\n\n const dataTypes = options.dataTypes;\n\n const getFiles = (event: DragEvent) => {\n if (!event.dataTransfer) return null;\n const list = Array.from(event.dataTransfer.files);\n if (options.multiple) return list;\n if (!list.length) return null;\n return [list[0]];\n };\n\n const checkDataTypes = (types: string[]) => {\n if (!dataTypes) return true;\n if (typeof dataTypes === 'function') return dataTypes(types);\n if (!dataTypes.length) return true;\n if (!types.length) return false;\n\n return types.every((type) => {\n console.log('type', type);\n console.log('dataTypes', dataTypes);\n return dataTypes.some((dataType) => type.includes(dataType));\n });\n };\n\n const checkValidity = (items: DataTransferItemList) => {\n const types = Array.from(items).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = options.multiple || items.length <= 1;\n\n return dataTypesValid && multipleFilesValid;\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n\n if (!element) return;\n\n const onEvent = (event: DragEvent, type: 'drop' | 'enter' | 'leave' | 'over') => {\n if (!event.dataTransfer) return;\n\n const isValid = checkValidity(event.dataTransfer.items);\n if (!isValid) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n\n const currentFiles = getFiles(event);\n\n if (type === 'drop') {\n counterRef.current = 0;\n setOvered(false);\n setFiles(currentFiles);\n options.onDrop?.(currentFiles, event);\n return;\n }\n\n if (type === 'enter') {\n counterRef.current += 1;\n setOvered(true);\n options.onEnter?.(event);\n return;\n }\n\n if (type === 'leave') {\n counterRef.current -= 1;\n if (counterRef.current !== 0) return;\n setOvered(false);\n options.onLeave?.(event);\n return;\n }\n\n if (type === 'over') options.onOver?.(event);\n };\n\n const onDrop = ((event: DragEvent) => onEvent(event, 'drop')) as EventListener;\n const onDragOver = ((event: DragEvent) => onEvent(event, 'over')) as EventListener;\n const onDragEnter = ((event: DragEvent) => onEvent(event, 'enter')) as EventListener;\n const onDragLeave = ((event: DragEvent) => onEvent(event, 'leave')) as EventListener;\n\n element.addEventListener('dragenter', onDragEnter);\n element.addEventListener('dragover', onDragOver);\n element.addEventListener('dragleave', onDragLeave);\n element.addEventListener('drop', onDrop);\n\n return () => {\n element.removeEventListener('dragenter', onDragEnter);\n element.removeEventListener('dragover', onDragOver);\n element.removeEventListener('dragleave', onDragLeave);\n element.removeEventListener('drop', onDrop);\n };\n }, [target, internalRef.current]);\n\n if (target) return { overed, files };\n return { ref: internalRef, overed, files };\n}) as UseDropZone;\n"],"names":["useDropZone","params","target","isTarget","options","internalRef","useRefState","counterRef","useRef","files","setFiles","useState","overed","setOvered","dataTypes","getFiles","event","list","checkDataTypes","types","type","dataType","checkValidity","items","item","dataTypesValid","multipleFilesValid","useEffect","element","getElement","onEvent","currentFiles","_a","_b","_c","_d","onDrop","onDragOver","onDragEnter","onDragLeave"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),D=require("../../utils/helpers/getRetry.cjs"),M=(C,h=[],e={})=>{const[O,f]=a.useState(!1),[w,d]=a.useState(!1),[I,g]=a.useState(!1),y=a.useRef(e!=null&&e.retry?D.getRetry(e.retry):0),[b,m]=a.useState(void 0),[q,v]=a.useState(e==null?void 0:e.placeholderData),u=a.useRef(void 0),R=e.immediately??!0,S=()=>{u.current&&(u.current.close(),u.current=void 0,d(!1),f(!1),g(!1))},E=()=>{S();const t=new EventSource(C,{withCredentials:e.withCredentials??!1});u.current=t,f(!0),t.onopen=()=>{var r;d(!0),f(!1),m(void 0),(r=e==null?void 0:e.onOpen)==null||r.call(e)},t.onerror=r=>{var c;if(d(!1),f(!1),g(!0),m(r),(c=e==null?void 0:e.onError)==null||c.call(e,r),y.current>0){y.current-=1;const l=typeof(e==null?void 0:e.retryDelay)=="function"?e==null?void 0:e.retryDelay(y.current,r):e==null?void 0:e.retryDelay;if(l){setTimeout(E,l);return}}y.current=e!=null&&e.retry?D.getRetry(e.retry):0},t.onmessage=r=>{var l;const c=e!=null&&e.select?e==null?void 0:e.select(r.data):r.data;v(c),(l=e==null?void 0:e.onMessage)==null||l.call(e,r)},h.forEach(r=>{t.addEventListener(r,c=>{v(c.data)})})};return a.useEffect(()=>{if(R)return E(),()=>{S()}},[R]),{instance:u.current,data:q,error:b,isConnecting:O,isOpen:w,isError:I,close:S,open:E}};exports.useEventSource=M;
2
+ //# sourceMappingURL=useEventSource.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventSource.cjs","sources":["../../../../src/hooks/useEventSource/useEventSource.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\n/** The use event source options type */\nexport interface UseEventSourceOptions<QueryData, Data> extends EventSourceInit {\n /** Immediately open the connection when calling this hook */\n immediately?: boolean;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, event: Event) => number) | number;\n /* The onError function to be invoked */\n onError?: (error: Event) => void;\n /* The onMessage function to be invoked */\n onMessage?: (event: Event & { data?: Data }) => void;\n /* The onOpen function to be invoked */\n onOpen?: () => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\n/** The use event source return type */\ninterface UseEventSourceReturn<Data = any> {\n /** The latest data received via the EventSource */\n data?: Data;\n /** The current error */\n error?: Event;\n /** The instance of the EventSource */\n instance?: EventSource;\n /* The connecting state of the query */\n isConnecting: boolean;\n /* The error state of the query */\n isError: boolean;\n /* The open state of the query */\n isOpen: boolean;\n /** Closes the EventSource connection gracefully */\n close: () => void;\n /** Reopen the EventSource connection */\n open: () => void;\n}\n\n/**\n * @name useEventSource\n * @description - Hook that provides a reactive wrapper for event source\n * @category Browser\n *\n * @browserapi EventSource https://developer.mozilla.org/en-US/docs/Web/API/EventSource\n *\n * @param {string | URL} url The URL of the EventSource\n * @param {string[]} [events=[]] List of events to listen to\n * @param {UseEventSourceOptions} [options={}] Configuration options\n * @returns {UseEventSourceReturn<Data>} The EventSource state and controls\n *\n * @example\n * const { instance, data, isConnecting, isOpen, isError, close, open } = useEventSource('url', ['message']);\n */\nexport const useEventSource = <QueryData = any, Data = QueryData>(\n url: string | URL,\n events: string[] = [],\n options: UseEventSourceOptions<QueryData, Data> = {}\n): UseEventSourceReturn<Data> => {\n const [isConnecting, setIsConnecting] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const [error, setError] = useState<Event | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const eventSourceRef = useRef<EventSource>(undefined);\n\n const immediately = options.immediately ?? true;\n\n const close = () => {\n if (!eventSourceRef.current) return;\n\n eventSourceRef.current.close();\n eventSourceRef.current = undefined;\n setIsOpen(false);\n setIsConnecting(false);\n setIsError(false);\n };\n\n const open = () => {\n close();\n\n const eventSource = new EventSource(url, { withCredentials: options.withCredentials ?? false });\n eventSourceRef.current = eventSource;\n\n setIsConnecting(true);\n\n eventSource.onopen = () => {\n setIsOpen(true);\n setIsConnecting(false);\n setError(undefined);\n options?.onOpen?.();\n };\n\n eventSource.onerror = (event) => {\n setIsOpen(false);\n setIsConnecting(false);\n setIsError(true);\n setError(event);\n options?.onError?.(event);\n\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, event)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(open, retryDelay);\n return;\n }\n }\n\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n };\n\n eventSource.onmessage = (event) => {\n const data = options?.select ? options?.select(event.data) : event.data;\n setData(data);\n options?.onMessage?.(event);\n };\n\n events.forEach((eventName) => {\n eventSource.addEventListener(eventName, (event: Event & { data?: Data }) => {\n setData(event.data);\n });\n });\n };\n\n useEffect(() => {\n if (!immediately) return;\n\n open();\n return () => {\n close();\n };\n }, [immediately]);\n\n return {\n instance: eventSourceRef.current,\n data,\n error,\n isConnecting,\n isOpen,\n isError,\n close,\n open\n };\n};\n"],"names":["useEventSource","url","events","options","isConnecting","setIsConnecting","useState","isOpen","setIsOpen","isError","setIsError","retryCountRef","useRef","getRetry","error","setError","data","setData","eventSourceRef","immediately","close","open","eventSource","_a","event","retryDelay","eventName","useEffect"],"mappings":"uJA2DaA,EAAiB,CAC5BC,EACAC,EAAmB,CAAA,EACnBC,EAAkD,CAAA,IACnB,CAC/B,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAAS,EAAK,EAChD,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAS,EAAK,EACpC,CAACG,EAASC,CAAU,EAAIJ,EAAAA,SAAS,EAAK,EAEtCK,EAAgBC,SAAOT,GAAA,MAAAA,EAAS,MAAQU,EAAAA,SAASV,EAAQ,KAAK,EAAI,CAAC,EACnE,CAACW,EAAOC,CAAQ,EAAIT,EAAAA,SAA4B,MAAS,EACzD,CAACU,EAAMC,CAAO,EAAIX,EAAAA,SAA2BH,GAAA,YAAAA,EAAS,eAAe,EAErEe,EAAiBN,SAAoB,MAAS,EAE9CO,EAAchB,EAAQ,aAAe,GAErCiB,EAAQ,IAAM,CACbF,EAAe,UAEpBA,EAAe,QAAQ,MAAM,EAC7BA,EAAe,QAAU,OACzBV,EAAU,EAAK,EACfH,EAAgB,EAAK,EACrBK,EAAW,EAAK,EAClB,EAEMW,EAAO,IAAM,CACXD,EAAA,EAEA,MAAAE,EAAc,IAAI,YAAYrB,EAAK,CAAE,gBAAiBE,EAAQ,iBAAmB,GAAO,EAC9Fe,EAAe,QAAUI,EAEzBjB,EAAgB,EAAI,EAEpBiB,EAAY,OAAS,IAAM,OACzBd,EAAU,EAAI,EACdH,EAAgB,EAAK,EACrBU,EAAS,MAAS,GAClBQ,EAAApB,GAAA,YAAAA,EAAS,SAAT,MAAAoB,EAAA,KAAApB,EACF,EAEYmB,EAAA,QAAWE,GAAU,OAO3B,GANJhB,EAAU,EAAK,EACfH,EAAgB,EAAK,EACrBK,EAAW,EAAI,EACfK,EAASS,CAAK,GACdD,EAAApB,GAAA,YAAAA,EAAS,UAAT,MAAAoB,EAAA,KAAApB,EAAmBqB,GAEfb,EAAc,QAAU,EAAG,CAC7BA,EAAc,SAAW,EAEnB,MAAAc,EACJ,OAAOtB,GAAA,YAAAA,EAAS,aAAe,WAC3BA,GAAA,YAAAA,EAAS,WAAWQ,EAAc,QAASa,GAC3CrB,GAAA,YAAAA,EAAS,WAEf,GAAIsB,EAAY,CACd,WAAWJ,EAAMI,CAAU,EAC3B,MAAA,CACF,CAGFd,EAAc,QAAUR,GAAA,MAAAA,EAAS,MAAQU,EAAAA,SAASV,EAAQ,KAAK,EAAI,CACrE,EAEYmB,EAAA,UAAaE,GAAU,OAC3BR,MAAAA,EAAOb,GAAA,MAAAA,EAAS,OAASA,GAAA,YAAAA,EAAS,OAAOqB,EAAM,MAAQA,EAAM,KACnEP,EAAQD,CAAI,GACZO,EAAApB,GAAA,YAAAA,EAAS,YAAT,MAAAoB,EAAA,KAAApB,EAAqBqB,EACvB,EAEOtB,EAAA,QAASwB,GAAc,CAChBJ,EAAA,iBAAiBI,EAAYF,GAAmC,CAC1EP,EAAQO,EAAM,IAAI,CAAA,CACnB,CAAA,CACF,CACH,EAEAG,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAKR,EAEA,OAAAE,EAAA,EACE,IAAM,CACLD,EAAA,CACR,CAAA,EACC,CAACD,CAAW,CAAC,EAET,CACL,SAAUD,EAAe,QACzB,KAAAF,EACA,MAAAF,EACA,aAAAV,EACA,OAAAG,EACA,QAAAE,EACA,MAAAW,EACA,KAAAC,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),a=require("../useRefState/useRefState.cjs"),d=require("../../utils/helpers/isTarget.cjs"),y=require("../../utils/helpers/getElement.cjs"),L=(...t)=>{const n=d.isTarget(t[0])?t[0]:void 0,v=n?typeof t[1]=="object"?t[1]:{onEntry:t[1]}:typeof t[0]=="object"?t[0]:{onEntry:t[0]},[f,l]=i.useState(!1),s=a.useRefState(),u=i.useRef(v);return u.current=v,i.useEffect(()=>{if(!n&&!s.state)return;const r=n?y.getElement(n):s.current;if(!r)return;const E=c=>{var e,o;(o=(e=u.current)==null?void 0:e.onEntry)==null||o.call(e,c),l(!0)},g=c=>{var e,o;(o=(e=u.current)==null?void 0:e.onLeave)==null||o.call(e,c),l(!1)};return r.addEventListener("mouseenter",E),r.addEventListener("mouseleave",g),()=>{r.removeEventListener("mouseenter",E),r.removeEventListener("mouseleave",g)}},[n,s.state]),n?f:[s,f]};exports.useHover=L;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),a=require("../useRefState/useRefState.cjs"),d=require("../../utils/helpers/isTarget.cjs"),y=require("../../utils/helpers/getElement.cjs"),L=(...t)=>{const n=d.isTarget(t[0])?t[0]:void 0,v=n?typeof t[1]=="object"?t[1]:{onEntry:t[1]}:typeof t[0]=="object"?t[0]:{onEntry:t[0]},[f,l]=i.useState(!1),s=a.useRefState(),u=i.useRef(v);return u.current=v,i.useEffect(()=>{if(!n&&!s.state)return;const r=n?y.getElement(n):s.current;if(!r)return;const E=c=>{var e,o;(o=(e=u.current)==null?void 0:e.onEntry)==null||o.call(e,c),l(!0)},g=c=>{var e,o;(o=(e=u.current)==null?void 0:e.onLeave)==null||o.call(e,c),l(!1)};return r.addEventListener("mouseenter",E),r.addEventListener("mouseleave",g),()=>{r.removeEventListener("mouseenter",E),r.removeEventListener("mouseleave",g)}},[n,s.state]),n?f:{ref:s,value:f}};exports.useHover=L;
2
2
  //# sourceMappingURL=useHover.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHover.cjs","sources":["../../../../src/hooks/useHover/useHover.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use hover options type */\nexport interface UseHoverOptions {\n /** The on entry callback */\n onEntry?: (event: Event) => void;\n /** The on leave callback */\n onLeave?: (event: Event) => void;\n}\n\nexport interface UseHover {\n (target: HookTarget, callback?: (event: Event) => void): boolean;\n\n (target: HookTarget, options?: UseHoverOptions): boolean;\n\n <Target extends Element>(\n callback?: (event: Event) => void,\n target?: never\n ): [StateRef<Target>, boolean];\n\n <Target extends Element>(options?: UseHoverOptions, target?: never): [StateRef<Target>, boolean];\n}\n\n/**\n * @name useHover\n * @description - Hook that defines the logic when hovering an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, () => console.log('callback'));\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {UseHoverReturn<Target>} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(() => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {UseHoverReturn<Target>} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(options);\n */\nexport const useHover = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onEntry: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onEntry: params[0] }\n ) as UseHoverOptions | undefined;\n\n const [hovering, setHovering] = useState(false);\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const onMouseEnter = (event: Event) => {\n internalOptionsRef.current?.onEntry?.(event);\n setHovering(true);\n };\n\n const onMouseLeave = (event: Event) => {\n internalOptionsRef.current?.onLeave?.(event);\n setHovering(false);\n };\n\n element.addEventListener('mouseenter', onMouseEnter);\n element.addEventListener('mouseleave', onMouseLeave);\n\n return () => {\n element.removeEventListener('mouseenter', onMouseEnter);\n element.removeEventListener('mouseleave', onMouseLeave);\n };\n }, [target, internalRef.state]);\n\n if (target) return hovering;\n return [internalRef, hovering] as const;\n}) as UseHover;\n"],"names":["useHover","params","target","isTarget","options","hovering","setHovering","useState","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","getElement","onMouseEnter","event","_b","_a","onMouseLeave"],"mappings":"mPAsEaA,EAAY,IAAIC,IAAkB,CACvC,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE5CG,EACJF,EACI,OAAOD,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,QAASA,EAAO,CAAC,CAAE,EACvB,OAAOA,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,QAASA,EAAO,CAAC,CAAE,EAGvB,CAACI,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EACxCC,EAAcC,EAAAA,YAAqB,EACnCC,EAAqBC,SAAOP,CAAO,EA4BzC,OA3BAM,EAAmB,QAAUN,EAE7BQ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACV,GAAU,CAACM,EAAY,MAAO,OACnC,MAAMK,EAAWX,EAASY,EAAAA,WAAWZ,CAAM,EAAIM,EAAY,QAE3D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAgBC,GAAiB,UAClBC,GAAAC,EAAAR,EAAA,UAAA,YAAAQ,EAAS,UAAT,MAAAD,EAAA,KAAAC,EAAmBF,GACtCV,EAAY,EAAI,CAClB,EAEMa,EAAgBH,GAAiB,UAClBC,GAAAC,EAAAR,EAAA,UAAA,YAAAQ,EAAS,UAAT,MAAAD,EAAA,KAAAC,EAAmBF,GACtCV,EAAY,EAAK,CACnB,EAEQ,OAAAO,EAAA,iBAAiB,aAAcE,CAAY,EAC3CF,EAAA,iBAAiB,aAAcM,CAAY,EAE5C,IAAM,CACHN,EAAA,oBAAoB,aAAcE,CAAY,EAC9CF,EAAA,oBAAoB,aAAcM,CAAY,CACxD,CACC,EAAA,CAACjB,EAAQM,EAAY,KAAK,CAAC,EAE1BN,EAAeG,EACZ,CAACG,EAAaH,CAAQ,CAC/B"}
1
+ {"version":3,"file":"useHover.cjs","sources":["../../../../src/hooks/useHover/useHover.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use hover options type */\nexport interface UseHoverOptions {\n /** The on entry callback */\n onEntry?: (event: Event) => void;\n /** The on leave callback */\n onLeave?: (event: Event) => void;\n}\n\nexport interface UseHoverReturn {\n value: boolean;\n}\n\nexport interface UseHover {\n (target: HookTarget, callback?: (event: Event) => void): boolean;\n\n (target: HookTarget, options?: UseHoverOptions): boolean;\n\n <Target extends Element>(\n callback?: (event: Event) => void,\n target?: never\n ): { ref: StateRef<Target> } & UseHoverReturn;\n\n <Target extends Element>(\n options?: UseHoverOptions,\n target?: never\n ): { ref: StateRef<Target> } & UseHoverReturn;\n}\n\n/**\n * @name useHover\n * @description - Hook that defines the logic when hovering an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, () => console.log('callback'));\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {{ ref: StateRef<Target> } & UseHoverReturn} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(() => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {{ ref: StateRef<Target> } & UseHoverReturn} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(options);\n */\nexport const useHover = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onEntry: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onEntry: params[0] }\n ) as UseHoverOptions | undefined;\n\n const [hovering, setHovering] = useState(false);\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const onMouseEnter = (event: Event) => {\n internalOptionsRef.current?.onEntry?.(event);\n setHovering(true);\n };\n\n const onMouseLeave = (event: Event) => {\n internalOptionsRef.current?.onLeave?.(event);\n setHovering(false);\n };\n\n element.addEventListener('mouseenter', onMouseEnter);\n element.addEventListener('mouseleave', onMouseLeave);\n\n return () => {\n element.removeEventListener('mouseenter', onMouseEnter);\n element.removeEventListener('mouseleave', onMouseLeave);\n };\n }, [target, internalRef.state]);\n\n if (target) return hovering;\n return {\n ref: internalRef,\n value: hovering\n } as const;\n}) as UseHover;\n"],"names":["useHover","params","target","isTarget","options","hovering","setHovering","useState","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","getElement","onMouseEnter","event","_b","_a","onMouseLeave"],"mappings":"mPA6EaA,EAAY,IAAIC,IAAkB,CACvC,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE5CG,EACJF,EACI,OAAOD,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,QAASA,EAAO,CAAC,CAAE,EACvB,OAAOA,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,QAASA,EAAO,CAAC,CAAE,EAGvB,CAACI,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EACxCC,EAAcC,EAAAA,YAAqB,EACnCC,EAAqBC,SAAOP,CAAO,EA4BzC,OA3BAM,EAAmB,QAAUN,EAE7BQ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACV,GAAU,CAACM,EAAY,MAAO,OACnC,MAAMK,EAAWX,EAASY,EAAAA,WAAWZ,CAAM,EAAIM,EAAY,QAE3D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAgBC,GAAiB,UAClBC,GAAAC,EAAAR,EAAA,UAAA,YAAAQ,EAAS,UAAT,MAAAD,EAAA,KAAAC,EAAmBF,GACtCV,EAAY,EAAI,CAClB,EAEMa,EAAgBH,GAAiB,UAClBC,GAAAC,EAAAR,EAAA,UAAA,YAAAQ,EAAS,UAAT,MAAAD,EAAA,KAAAC,EAAmBF,GACtCV,EAAY,EAAK,CACnB,EAEQ,OAAAO,EAAA,iBAAiB,aAAcE,CAAY,EAC3CF,EAAA,iBAAiB,aAAcM,CAAY,EAE5C,IAAM,CACHN,EAAA,oBAAoB,aAAcE,CAAY,EAC9CF,EAAA,oBAAoB,aAAcM,CAAY,CACxD,CACC,EAAA,CAACjB,EAAQM,EAAY,KAAK,CAAC,EAE1BN,EAAeG,EACZ,CACL,IAAKG,EACL,MAAOH,CACT,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),f=(...e)=>{const l=e[0],n=(typeof e[1]=="number"?e[1]:e[1].interval)??1e3,c=typeof e[1]=="object"?e[1]:e[2],i=(c==null?void 0:c.immediately)??!0,[t,u]=r.useState(i??!0),s=r.useRef(),o=r.useRef(l);return o.current=l,r.useEffect(()=>{if(t)return s.current=setInterval(()=>o.current(),n),()=>{clearInterval(s.current)}},[t,n]),{active:t,pause:()=>u(!1),resume:()=>{n<=0||u(!0)},toggle:()=>u(!t)}};exports.useInterval=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),f=(...e)=>{const l=e[0],n=(typeof e[1]=="number"?e[1]:e[1].interval)??1e3,c=typeof e[1]=="object"?e[1]:e[2],i=(c==null?void 0:c.immediately)??!0,[t,u]=r.useState(i??!0),o=r.useRef(void 0),s=r.useRef(l);return s.current=l,r.useEffect(()=>{if(t)return o.current=setInterval(()=>s.current(),n),()=>{clearInterval(o.current)}},[t,n]),{active:t,pause:()=>u(!1),resume:()=>{n<=0||u(!0)},toggle:()=>u(!t)}};exports.useInterval=f;
2
2
  //# sourceMappingURL=useInterval.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInterval.cjs","sources":["../../../../src/hooks/useInterval/useInterval.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use interval options */\nexport interface UseIntervalOptions {\n /** Start the interval immediately */\n immediately?: boolean;\n}\n\n/** The use interval return type */\nexport interface UseIntervalReturn {\n /** Is the interval active */\n active: boolean;\n /** Pause the interval */\n pause: () => void;\n /** Resume the interval */\n resume: () => void;\n /** Toggle the interval */\n toggle: () => void;\n}\n\ninterface UseInterval {\n (callback: () => void, interval?: number, options?: UseIntervalOptions): UseIntervalReturn;\n\n (callback: () => void, options?: UseIntervalOptions & { interval?: number }): UseIntervalReturn;\n}\n\n/**\n * @name useInterval\n * @description - Hook that makes and interval and returns controlling functions\n * @category Time\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [interval=1000] Time in milliseconds\n * @param {boolean} [options.immediately=true] Start the interval immediately\n * @returns {UseIntervalReturn}\n *\n * @example\n * const { active, pause, resume, toggle } = useInterval(() => console.log('inside interval'), 2500);\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [options.interval=1000] Time in milliseconds\n * @param {boolean} [options.immediately=true] Start the interval immediately\n *\n * @example\n * const { active, pause, resume, toggle } = useInterval(() => console.log('inside interval'), { interval: 2500 });\n */\nexport const useInterval = ((...params: any[]): UseIntervalReturn => {\n const callback = params[0] as () => void;\n const interval =\n ((typeof params[1] === 'number'\n ? params[1]\n : (params[1] as UseIntervalOptions & { interval?: number }).interval) as number) ?? 1000;\n const options =\n typeof params[1] === 'object'\n ? (params[1] as (UseIntervalOptions & { interval?: number }) | undefined)\n : (params[2] as UseIntervalOptions | undefined);\n const immediately = options?.immediately ?? true;\n\n const [active, setActive] = useState<boolean>(immediately ?? true);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!active) return;\n\n intervalIdRef.current = setInterval(() => internalCallbackRef.current(), interval);\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [active, interval]);\n\n const pause = () => setActive(false);\n\n const resume = () => {\n if (interval <= 0) return;\n setActive(true);\n };\n\n const toggle = () => setActive(!active);\n\n return {\n active,\n pause,\n resume,\n toggle\n };\n}) as UseInterval;\n"],"names":["useInterval","params","callback","interval","options","immediately","active","setActive","useState","intervalIdRef","useRef","internalCallbackRef","useEffect"],"mappings":"yGAgDaA,EAAe,IAAIC,IAAqC,CAC7D,MAAAC,EAAWD,EAAO,CAAC,EACnBE,GACF,OAAOF,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACPA,EAAO,CAAC,EAAiD,WAAwB,IAClFG,EACJ,OAAOH,EAAO,CAAC,GAAM,SAChBA,EAAO,CAAC,EACRA,EAAO,CAAC,EACTI,GAAcD,GAAA,YAAAA,EAAS,cAAe,GAEtC,CAACE,EAAQC,CAAS,EAAIC,EAAAA,SAAkBH,GAAe,EAAI,EAE3DI,EAAgBC,EAAAA,OAAuC,EACvDC,EAAsBD,SAAOR,CAAQ,EAC3C,OAAAS,EAAoB,QAAUT,EAE9BU,EAAAA,UAAU,IAAM,CACd,GAAKN,EAEL,OAAAG,EAAc,QAAU,YAAY,IAAME,EAAoB,UAAWR,CAAQ,EAC1E,IAAM,CACX,cAAcM,EAAc,OAAO,CACrC,CAAA,EACC,CAACH,EAAQH,CAAQ,CAAC,EAWd,CACL,OAAAG,EACA,MAXY,IAAMC,EAAU,EAAK,EAYjC,OAVa,IAAM,CACfJ,GAAY,GAChBI,EAAU,EAAI,CAChB,EAQE,OANa,IAAMA,EAAU,CAACD,CAAM,CAOtC,CACF"}
1
+ {"version":3,"file":"useInterval.cjs","sources":["../../../../src/hooks/useInterval/useInterval.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use interval options */\nexport interface UseIntervalOptions {\n /** Start the interval immediately */\n immediately?: boolean;\n}\n\n/** The use interval return type */\nexport interface UseIntervalReturn {\n /** Is the interval active */\n active: boolean;\n /** Pause the interval */\n pause: () => void;\n /** Resume the interval */\n resume: () => void;\n /** Toggle the interval */\n toggle: () => void;\n}\n\ninterface UseInterval {\n (callback: () => void, interval?: number, options?: UseIntervalOptions): UseIntervalReturn;\n\n (callback: () => void, options?: UseIntervalOptions & { interval?: number }): UseIntervalReturn;\n}\n\n/**\n * @name useInterval\n * @description - Hook that makes and interval and returns controlling functions\n * @category Time\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [interval=1000] Time in milliseconds\n * @param {boolean} [options.immediately=true] Start the interval immediately\n * @returns {UseIntervalReturn}\n *\n * @example\n * const { active, pause, resume, toggle } = useInterval(() => console.log('inside interval'), 2500);\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [options.interval=1000] Time in milliseconds\n * @param {boolean} [options.immediately=true] Start the interval immediately\n *\n * @example\n * const { active, pause, resume, toggle } = useInterval(() => console.log('inside interval'), { interval: 2500 });\n */\nexport const useInterval = ((...params: any[]): UseIntervalReturn => {\n const callback = params[0] as () => void;\n const interval =\n ((typeof params[1] === 'number'\n ? params[1]\n : (params[1] as UseIntervalOptions & { interval?: number }).interval) as number) ?? 1000;\n const options =\n typeof params[1] === 'object'\n ? (params[1] as (UseIntervalOptions & { interval?: number }) | undefined)\n : (params[2] as UseIntervalOptions | undefined);\n const immediately = options?.immediately ?? true;\n\n const [active, setActive] = useState<boolean>(immediately ?? true);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!active) return;\n\n intervalIdRef.current = setInterval(() => internalCallbackRef.current(), interval);\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [active, interval]);\n\n const pause = () => setActive(false);\n\n const resume = () => {\n if (interval <= 0) return;\n setActive(true);\n };\n\n const toggle = () => setActive(!active);\n\n return {\n active,\n pause,\n resume,\n toggle\n };\n}) as UseInterval;\n"],"names":["useInterval","params","callback","interval","options","immediately","active","setActive","useState","intervalIdRef","useRef","internalCallbackRef","useEffect"],"mappings":"yGAgDaA,EAAe,IAAIC,IAAqC,CAC7D,MAAAC,EAAWD,EAAO,CAAC,EACnBE,GACF,OAAOF,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACPA,EAAO,CAAC,EAAiD,WAAwB,IAClFG,EACJ,OAAOH,EAAO,CAAC,GAAM,SAChBA,EAAO,CAAC,EACRA,EAAO,CAAC,EACTI,GAAcD,GAAA,YAAAA,EAAS,cAAe,GAEtC,CAACE,EAAQC,CAAS,EAAIC,EAAAA,SAAkBH,GAAe,EAAI,EAE3DI,EAAgBC,SAAuC,MAAS,EAChEC,EAAsBD,SAAOR,CAAQ,EAC3C,OAAAS,EAAoB,QAAUT,EAE9BU,EAAAA,UAAU,IAAM,CACd,GAAKN,EAEL,OAAAG,EAAc,QAAU,YAAY,IAAME,EAAoB,UAAWR,CAAQ,EAC1E,IAAM,CACX,cAAcM,EAAc,OAAO,CACrC,CAAA,EACC,CAACH,EAAQH,CAAQ,CAAC,EAWd,CACL,OAAAG,EACA,MAXY,IAAMC,EAAU,EAAK,EAYjC,OAVa,IAAM,CACfJ,GAAY,GAChBI,EAAU,EAAI,CAChB,EAQE,OANa,IAAMA,EAAU,CAACD,CAAM,CAOtC,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),T=require("../useRefState/useRefState.cjs"),S=require("../../utils/helpers/isTarget.cjs"),P=require("../../utils/helpers/getElement.cjs"),b=400,q=(...s)=>{const n=S.isTarget(s[0])?s[0]:void 0,L=n?s[1]:s[0],m=n?s[2]:s[1],[R,w]=u.useState(!1),c=u.useRef(),E=u.useRef(!1),f=T.useRefState(),g=u.useRef(L);g.current=L;const i=u.useRef(m);return i.current=m,u.useEffect(()=>{if(!n&&!f.state)return;const e=n?P.getElement(n):f.current;if(!e)return;const l=d=>{var o,r,a;(r=(o=i.current)==null?void 0:o.onStart)==null||r.call(o,d),E.current=!0,c.current=setTimeout(()=>{g.current(d),w(!0)},((a=i.current)==null?void 0:a.threshold)??b)},t=d=>{w(o=>{var r,a,v,h;return o?(a=(r=i.current)==null?void 0:r.onFinish)==null||a.call(r,d):E.current&&((h=(v=i.current)==null?void 0:v.onCancel)==null||h.call(v,d)),!1}),E.current=!1,c.current&&clearTimeout(c.current)};return e.addEventListener("mousedown",l),e.addEventListener("touchstart",l),e.addEventListener("mouseup",t),e.addEventListener("touchend",t),window.addEventListener("mouseup",t),window.addEventListener("touchend",t),()=>{e.removeEventListener("mousedown",l),e.removeEventListener("touchstart",l),e.removeEventListener("mouseup",t),e.removeEventListener("touchend",t),window.removeEventListener("mouseup",t),window.removeEventListener("touchend",t),c.current&&clearTimeout(c.current)}},[n,f.state]),n?R:{ref:f,pressed:R}};exports.useLongPress=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),T=require("../useRefState/useRefState.cjs"),S=require("../../utils/helpers/isTarget.cjs"),P=require("../../utils/helpers/getElement.cjs"),b=400,q=(...s)=>{const n=S.isTarget(s[0])?s[0]:void 0,L=n?s[1]:s[0],m=n?s[2]:s[1],[R,w]=u.useState(!1),c=u.useRef(void 0),E=u.useRef(!1),f=T.useRefState(),g=u.useRef(L);g.current=L;const i=u.useRef(m);return i.current=m,u.useEffect(()=>{if(!n&&!f.state)return;const e=n?P.getElement(n):f.current;if(!e)return;const l=d=>{var o,r,a;(r=(o=i.current)==null?void 0:o.onStart)==null||r.call(o,d),E.current=!0,c.current=setTimeout(()=>{g.current(d),w(!0)},((a=i.current)==null?void 0:a.threshold)??b)},t=d=>{w(o=>{var r,a,v,h;return o?(a=(r=i.current)==null?void 0:r.onFinish)==null||a.call(r,d):E.current&&((h=(v=i.current)==null?void 0:v.onCancel)==null||h.call(v,d)),!1}),E.current=!1,c.current&&clearTimeout(c.current)};return e.addEventListener("mousedown",l),e.addEventListener("touchstart",l),e.addEventListener("mouseup",t),e.addEventListener("touchend",t),window.addEventListener("mouseup",t),window.addEventListener("touchend",t),()=>{e.removeEventListener("mousedown",l),e.removeEventListener("touchstart",l),e.removeEventListener("mouseup",t),e.removeEventListener("touchend",t),window.removeEventListener("mouseup",t),window.removeEventListener("touchend",t),c.current&&clearTimeout(c.current)}},[n,f.state]),n?R:{ref:f,pressed:R}};exports.useLongPress=q;
2
2
  //# sourceMappingURL=useLongPress.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLongPress.cjs","sources":["../../../../src/hooks/useLongPress/useLongPress.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type LongPressEvents = MouseEvent | TouchEvent;\n\n// * The use long press options type */\nexport interface UseLongPressOptions {\n // * The threshold time in milliseconds\n threshold?: number;\n // * The callback function to be invoked on long press cancel\n onCancel?: (event: LongPressEvents) => void;\n // * The callback function to be invoked on long press end\n onFinish?: (event: LongPressEvents) => void;\n // * The callback function to be invoked on long press start\n onStart?: (event: LongPressEvents) => void;\n}\n\nexport interface UseLongPress {\n (\n target: HookTarget,\n callback: (event: LongPressEvents) => void,\n options?: UseLongPressOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: LongPressEvents) => void,\n options?: UseLongPressOptions,\n target?: never\n ): {\n ref: StateRef<Target>;\n pressed: boolean;\n };\n}\n\nconst DEFAULT_THRESHOLD_TIME = 400;\n\n/**\n * @name useLongPress\n * @description - Hook that defines the logic when long pressing an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be long pressed\n * @param {(event: LongPressEvents) => void} callback The callback function to be invoked on long press\n * @param {UseLongPressOptions} [options] The options for the long press\n * @returns {boolean} The long pressing state\n *\n * @example\n * const pressed = useLongPress(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: LongPressEvents) => void} callback The callback function to be invoked on long press\n * @param {UseLongPressOptions} [options] The options for the long press\n * @returns {boolean} The long pressing state\n *\n * @example\n * const { ref, pressed } = useLongPress(() => console.log('callback'));\n */\nexport const useLongPress = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: LongPressEvents) => void;\n const options = (target ? params[2] : params[1]) as UseLongPressOptions | undefined;\n\n const [pressed, setPressed] = useState(false);\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const isPressedRef = useRef(false);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onStart = (event: LongPressEvents) => {\n internalOptionsRef.current?.onStart?.(event);\n\n isPressedRef.current = true;\n timeoutIdRef.current = setTimeout(() => {\n internalCallbackRef.current(event);\n setPressed(true);\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n };\n\n const onCancel = (event: LongPressEvents) => {\n setPressed((prevPressed) => {\n if (prevPressed) {\n internalOptionsRef.current?.onFinish?.(event);\n } else if (isPressedRef.current) {\n internalOptionsRef.current?.onCancel?.(event);\n }\n\n return false;\n });\n\n isPressedRef.current = false;\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n\n element.addEventListener('mousedown', onStart as EventListener);\n element.addEventListener('touchstart', onStart as EventListener);\n element.addEventListener('mouseup', onCancel as EventListener);\n element.addEventListener('touchend', onCancel as EventListener);\n window.addEventListener('mouseup', onCancel as EventListener);\n window.addEventListener('touchend', onCancel as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onStart as EventListener);\n element.removeEventListener('touchstart', onStart as EventListener);\n element.removeEventListener('mouseup', onCancel as EventListener);\n element.removeEventListener('touchend', onCancel as EventListener);\n window.removeEventListener('mouseup', onCancel as EventListener);\n window.removeEventListener('touchend', onCancel as EventListener);\n\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return pressed;\n return {\n ref: internalRef,\n pressed\n };\n}) as UseLongPress;\n"],"names":["DEFAULT_THRESHOLD_TIME","useLongPress","params","target","isTarget","callback","options","pressed","setPressed","useState","timeoutIdRef","useRef","isPressedRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onStart","event","_b","_a","_c","onCancel","prevPressed","_d"],"mappings":"mPAyCMA,EAAyB,IAyBlBC,EAAgB,IAAIC,IAAuB,CAChD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACzCI,EAAWH,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAExC,CAACK,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EACtCC,EAAeC,EAAAA,OAAsC,EACrDC,EAAeD,SAAO,EAAK,EAC3BE,EAAcC,EAAAA,YAAqB,EAEnCC,EAAsBJ,SAAON,CAAQ,EAC3CU,EAAoB,QAAUV,EACxB,MAAAW,EAAqBL,SAAOL,CAAO,EAqDzC,OApDAU,EAAmB,QAAUV,EAE7BW,EAAAA,UAAU,IAAM,CACd,GAAI,CAACd,GAAU,CAACU,EAAY,MAAO,OAEnC,MAAMK,EAAUf,EAASgB,EAAAA,WAAWhB,CAAM,EAAIU,EAAY,QAC1D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAWC,GAA2B,YACvBC,GAAAC,EAAAP,EAAA,UAAA,YAAAO,EAAS,UAAT,MAAAD,EAAA,KAAAC,EAAmBF,GAEtCT,EAAa,QAAU,GACVF,EAAA,QAAU,WAAW,IAAM,CACtCK,EAAoB,QAAQM,CAAK,EACjCb,EAAW,EAAI,CACd,IAAAgB,EAAAR,EAAmB,UAAnB,YAAAQ,EAA4B,YAAaxB,CAAsB,CACpE,EAEMyB,EAAYJ,GAA2B,CAC3Cb,EAAYkB,GAAgB,aAC1B,OAAIA,GACiBJ,GAAAC,EAAAP,EAAA,UAAA,YAAAO,EAAS,WAAT,MAAAD,EAAA,KAAAC,EAAoBF,GAC9BT,EAAa,WACHe,GAAAH,EAAAR,EAAA,UAAA,YAAAQ,EAAS,WAAT,MAAAG,EAAA,KAAAH,EAAoBH,IAGlC,EAAA,CACR,EAEDT,EAAa,QAAU,GACnBF,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,EAEQ,OAAAQ,EAAA,iBAAiB,YAAaE,CAAwB,EACtDF,EAAA,iBAAiB,aAAcE,CAAwB,EACvDF,EAAA,iBAAiB,UAAWO,CAAyB,EACrDP,EAAA,iBAAiB,WAAYO,CAAyB,EACvD,OAAA,iBAAiB,UAAWA,CAAyB,EACrD,OAAA,iBAAiB,WAAYA,CAAyB,EAEtD,IAAM,CACHP,EAAA,oBAAoB,YAAaE,CAAwB,EACzDF,EAAA,oBAAoB,aAAcE,CAAwB,EAC1DF,EAAA,oBAAoB,UAAWO,CAAyB,EACxDP,EAAA,oBAAoB,WAAYO,CAAyB,EAC1D,OAAA,oBAAoB,UAAWA,CAAyB,EACxD,OAAA,oBAAoB,WAAYA,CAAyB,EAE5Df,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,CACC,EAAA,CAACP,EAAQU,EAAY,KAAK,CAAC,EAE1BV,EAAeI,EACZ,CACL,IAAKM,EACL,QAAAN,CACF,CACF"}
1
+ {"version":3,"file":"useLongPress.cjs","sources":["../../../../src/hooks/useLongPress/useLongPress.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type LongPressEvents = MouseEvent | TouchEvent;\n\n// * The use long press options type */\nexport interface UseLongPressOptions {\n // * The threshold time in milliseconds\n threshold?: number;\n // * The callback function to be invoked on long press cancel\n onCancel?: (event: LongPressEvents) => void;\n // * The callback function to be invoked on long press end\n onFinish?: (event: LongPressEvents) => void;\n // * The callback function to be invoked on long press start\n onStart?: (event: LongPressEvents) => void;\n}\n\nexport interface UseLongPress {\n (\n target: HookTarget,\n callback: (event: LongPressEvents) => void,\n options?: UseLongPressOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: LongPressEvents) => void,\n options?: UseLongPressOptions,\n target?: never\n ): {\n ref: StateRef<Target>;\n pressed: boolean;\n };\n}\n\nconst DEFAULT_THRESHOLD_TIME = 400;\n\n/**\n * @name useLongPress\n * @description - Hook that defines the logic when long pressing an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be long pressed\n * @param {(event: LongPressEvents) => void} callback The callback function to be invoked on long press\n * @param {UseLongPressOptions} [options] The options for the long press\n * @returns {boolean} The long pressing state\n *\n * @example\n * const pressed = useLongPress(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: LongPressEvents) => void} callback The callback function to be invoked on long press\n * @param {UseLongPressOptions} [options] The options for the long press\n * @returns {boolean} The long pressing state\n *\n * @example\n * const { ref, pressed } = useLongPress(() => console.log('callback'));\n */\nexport const useLongPress = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: LongPressEvents) => void;\n const options = (target ? params[2] : params[1]) as UseLongPressOptions | undefined;\n\n const [pressed, setPressed] = useState(false);\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const isPressedRef = useRef(false);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onStart = (event: LongPressEvents) => {\n internalOptionsRef.current?.onStart?.(event);\n\n isPressedRef.current = true;\n timeoutIdRef.current = setTimeout(() => {\n internalCallbackRef.current(event);\n setPressed(true);\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n };\n\n const onCancel = (event: LongPressEvents) => {\n setPressed((prevPressed) => {\n if (prevPressed) {\n internalOptionsRef.current?.onFinish?.(event);\n } else if (isPressedRef.current) {\n internalOptionsRef.current?.onCancel?.(event);\n }\n\n return false;\n });\n\n isPressedRef.current = false;\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n\n element.addEventListener('mousedown', onStart as EventListener);\n element.addEventListener('touchstart', onStart as EventListener);\n element.addEventListener('mouseup', onCancel as EventListener);\n element.addEventListener('touchend', onCancel as EventListener);\n window.addEventListener('mouseup', onCancel as EventListener);\n window.addEventListener('touchend', onCancel as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onStart as EventListener);\n element.removeEventListener('touchstart', onStart as EventListener);\n element.removeEventListener('mouseup', onCancel as EventListener);\n element.removeEventListener('touchend', onCancel as EventListener);\n window.removeEventListener('mouseup', onCancel as EventListener);\n window.removeEventListener('touchend', onCancel as EventListener);\n\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return pressed;\n return {\n ref: internalRef,\n pressed\n };\n}) as UseLongPress;\n"],"names":["DEFAULT_THRESHOLD_TIME","useLongPress","params","target","isTarget","callback","options","pressed","setPressed","useState","timeoutIdRef","useRef","isPressedRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onStart","event","_b","_a","_c","onCancel","prevPressed","_d"],"mappings":"mPAyCMA,EAAyB,IAyBlBC,EAAgB,IAAIC,IAAuB,CAChD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACzCI,EAAWH,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAExC,CAACK,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EACtCC,EAAeC,SAAsC,MAAS,EAC9DC,EAAeD,SAAO,EAAK,EAC3BE,EAAcC,EAAAA,YAAqB,EAEnCC,EAAsBJ,SAAON,CAAQ,EAC3CU,EAAoB,QAAUV,EACxB,MAAAW,EAAqBL,SAAOL,CAAO,EAqDzC,OApDAU,EAAmB,QAAUV,EAE7BW,EAAAA,UAAU,IAAM,CACd,GAAI,CAACd,GAAU,CAACU,EAAY,MAAO,OAEnC,MAAMK,EAAUf,EAASgB,EAAAA,WAAWhB,CAAM,EAAIU,EAAY,QAC1D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAWC,GAA2B,YACvBC,GAAAC,EAAAP,EAAA,UAAA,YAAAO,EAAS,UAAT,MAAAD,EAAA,KAAAC,EAAmBF,GAEtCT,EAAa,QAAU,GACVF,EAAA,QAAU,WAAW,IAAM,CACtCK,EAAoB,QAAQM,CAAK,EACjCb,EAAW,EAAI,CACd,IAAAgB,EAAAR,EAAmB,UAAnB,YAAAQ,EAA4B,YAAaxB,CAAsB,CACpE,EAEMyB,EAAYJ,GAA2B,CAC3Cb,EAAYkB,GAAgB,aAC1B,OAAIA,GACiBJ,GAAAC,EAAAP,EAAA,UAAA,YAAAO,EAAS,WAAT,MAAAD,EAAA,KAAAC,EAAoBF,GAC9BT,EAAa,WACHe,GAAAH,EAAAR,EAAA,UAAA,YAAAQ,EAAS,WAAT,MAAAG,EAAA,KAAAH,EAAoBH,IAGlC,EAAA,CACR,EAEDT,EAAa,QAAU,GACnBF,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,EAEQ,OAAAQ,EAAA,iBAAiB,YAAaE,CAAwB,EACtDF,EAAA,iBAAiB,aAAcE,CAAwB,EACvDF,EAAA,iBAAiB,UAAWO,CAAyB,EACrDP,EAAA,iBAAiB,WAAYO,CAAyB,EACvD,OAAA,iBAAiB,UAAWA,CAAyB,EACrD,OAAA,iBAAiB,WAAYA,CAAyB,EAEtD,IAAM,CACHP,EAAA,oBAAoB,YAAaE,CAAwB,EACzDF,EAAA,oBAAoB,aAAcE,CAAwB,EAC1DF,EAAA,oBAAoB,UAAWO,CAAyB,EACxDP,EAAA,oBAAoB,WAAYO,CAAyB,EAC1D,OAAA,oBAAoB,UAAWA,CAAyB,EACxD,OAAA,oBAAoB,WAAYA,CAAyB,EAE5Df,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,CACC,EAAA,CAACP,EAAQU,EAAY,KAAK,CAAC,EAE1BV,EAAeI,EACZ,CACL,IAAKM,EACL,QAAAN,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react");function c(n){const r=e.useRef(),t=e.useRef(!1),u=e.useRef(!1);t.current&&(u.current=!0),e.useEffect(()=>{if(!t.current)return t.current=!0,r.current=n(),()=>{u.current&&typeof r.current=="function"&&r.current()}},[])}exports.useOnce=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react");function c(n){const r=e.useRef(void 0),t=e.useRef(!1),u=e.useRef(!1);t.current&&(u.current=!0),e.useEffect(()=>{if(!t.current)return t.current=!0,r.current=n(),()=>{u.current&&typeof r.current=="function"&&r.current()}},[])}exports.useOnce=c;
2
2
  //# sourceMappingURL=useOnce.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOnce.cjs","sources":["../../../../src/hooks/useOnce/useOnce.ts"],"sourcesContent":["import type { EffectCallback } from 'react';\n\nimport { useEffect, useRef } from 'react';\n\n/**\n * @name useEffectOnce\n * @description - Hook that runs an effect only once. Please do not use it in production code!\n * @category Humor\n *\n * @warning - This hook will run effect only once even in strict mode. Please do not use it in production code!\n *\n * @param {EffectCallback} effect The effect to run\n *\n * @example\n * useOnce(() => console.log('effect once'));\n */\nexport function useOnce(effect: EffectCallback) {\n const cleanupRef = useRef<ReturnType<EffectCallback>>();\n const hasRunRef = useRef(false);\n const hasRenderedAfterRun = useRef(false);\n\n if (hasRunRef.current) {\n hasRenderedAfterRun.current = true;\n }\n\n useEffect(() => {\n if (hasRunRef.current) return;\n\n hasRunRef.current = true;\n cleanupRef.current = effect();\n\n return () => {\n if (!hasRenderedAfterRun.current) return;\n\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current();\n }\n };\n }, []);\n}\n"],"names":["useOnce","effect","cleanupRef","useRef","hasRunRef","hasRenderedAfterRun","useEffect"],"mappings":"yGAgBO,SAASA,EAAQC,EAAwB,CAC9C,MAAMC,EAAaC,EAAAA,OAAmC,EAChDC,EAAYD,SAAO,EAAK,EACxBE,EAAsBF,SAAO,EAAK,EAEpCC,EAAU,UACZC,EAAoB,QAAU,IAGhCC,EAAAA,UAAU,IAAM,CACd,GAAI,CAAAF,EAAU,QAEd,OAAAA,EAAU,QAAU,GACpBF,EAAW,QAAUD,EAAO,EAErB,IAAM,CACNI,EAAoB,SAErB,OAAOH,EAAW,SAAY,YAChCA,EAAW,QAAQ,CAEvB,CACF,EAAG,EAAE,CACP"}
1
+ {"version":3,"file":"useOnce.cjs","sources":["../../../../src/hooks/useOnce/useOnce.ts"],"sourcesContent":["import type { EffectCallback } from 'react';\n\nimport { useEffect, useRef } from 'react';\n\n/**\n * @name useEffectOnce\n * @description - Hook that runs an effect only once. Please do not use it in production code!\n * @category Humor\n *\n * @warning - This hook will run effect only once even in strict mode. Please do not use it in production code!\n *\n * @param {EffectCallback} effect The effect to run\n *\n * @example\n * useOnce(() => console.log('effect once'));\n */\nexport function useOnce(effect: EffectCallback) {\n const cleanupRef = useRef<ReturnType<EffectCallback>>(undefined);\n const hasRunRef = useRef(false);\n const hasRenderedAfterRun = useRef(false);\n\n if (hasRunRef.current) {\n hasRenderedAfterRun.current = true;\n }\n\n useEffect(() => {\n if (hasRunRef.current) return;\n\n hasRunRef.current = true;\n cleanupRef.current = effect();\n\n return () => {\n if (!hasRenderedAfterRun.current) return;\n\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current();\n }\n };\n }, []);\n}\n"],"names":["useOnce","effect","cleanupRef","useRef","hasRunRef","hasRenderedAfterRun","useEffect"],"mappings":"yGAgBO,SAASA,EAAQC,EAAwB,CACxC,MAAAC,EAAaC,SAAmC,MAAS,EACzDC,EAAYD,SAAO,EAAK,EACxBE,EAAsBF,SAAO,EAAK,EAEpCC,EAAU,UACZC,EAAoB,QAAU,IAGhCC,EAAAA,UAAU,IAAM,CACd,GAAI,CAAAF,EAAU,QAEd,OAAAA,EAAU,QAAU,GACpBF,EAAW,QAAUD,EAAO,EAErB,IAAM,CACNI,EAAoB,SAErB,OAAOH,EAAW,SAAY,YAChCA,EAAW,QAAQ,CAEvB,CACF,EAAG,EAAE,CACP"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),m=(u,d)=>{const r=typeof window<"u"&&typeof PerformanceObserver<"u",[b,v]=n.useState([]),s=n.useRef(null),t=n.useRef();t.current=d;const o=()=>{if(!r)return;const e=new PerformanceObserver((f,a)=>{var i;v(f.getEntries()),(i=t.current)==null||i.call(t,f,a)});e.observe(u),s.current=e},c=()=>{var e;r&&((e=s.current)==null||e.disconnect(),s.current=null)};return n.useEffect(()=>{if(r)return u.immediate&&o(),()=>{c()}},[]),{supported:r,entries:b,start:o,stop:c}};exports.usePerformanceObserver=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),a=(u,o)=>{const r=typeof window<"u"&&typeof PerformanceObserver<"u",[v,b]=n.useState([]),s=n.useRef(null),t=n.useRef(o);t.current=o;const c=()=>{if(!r)return;const e=new PerformanceObserver((i,m)=>{var d;b(i.getEntries()),(d=t.current)==null||d.call(t,i,m)});e.observe(u),s.current=e},f=()=>{var e;r&&((e=s.current)==null||e.disconnect(),s.current=null)};return n.useEffect(()=>{if(r)return u.immediate&&c(),()=>{f()}},[]),{supported:r,entries:v,start:c,stop:f}};exports.usePerformanceObserver=a;
2
2
  //# sourceMappingURL=usePerformanceObserver.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePerformanceObserver.cjs","sources":["../../../../src/hooks/usePerformanceObserver/usePerformanceObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use performance observer options type */\nexport type UsePerformanceObserverOptions = PerformanceObserverInit & {\n /** Whether to start the observer immediately */\n immediate?: boolean;\n};\n\n/**\n * @name usePerformanceObserver\n * @description - Hook that allows you to observe performance entries\n * @category Sensors\n *\n * @browserapi PerformanceObserver https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver\n *\n * @param {UsePerformanceObserverOptions} options The options for the performance observer\n * @param {PerformanceObserverCallback} callback The function to handle performance entries\n * @returns {object} An object containing the observer's support status and methods to start and stop the observer\n *\n * @example\n * const { supported, entries, start, stop } = usePerformanceObserver();\n */\nexport const usePerformanceObserver = (\n options: UsePerformanceObserverOptions,\n callback?: PerformanceObserverCallback\n) => {\n const supported = typeof window !== 'undefined' && typeof PerformanceObserver !== 'undefined';\n const [entries, setEntries] = useState<PerformanceEntry[]>([]);\n\n const observerRef = useRef<PerformanceObserver | null>(null);\n const internalCallback = useRef<PerformanceObserverCallback | null>();\n internalCallback.current = callback;\n\n const start = () => {\n if (!supported) return;\n const observer = new PerformanceObserver((entryList, observer) => {\n setEntries(entryList.getEntries());\n internalCallback.current?.(entryList, observer);\n });\n observer.observe(options);\n observerRef.current = observer;\n };\n\n const stop = () => {\n if (!supported) return;\n observerRef.current?.disconnect();\n observerRef.current = null;\n };\n\n useEffect(() => {\n if (!supported) return;\n if (options.immediate) start();\n\n return () => {\n stop();\n };\n }, []);\n\n return { supported, entries, start, stop };\n};\n"],"names":["usePerformanceObserver","options","callback","supported","entries","setEntries","useState","observerRef","useRef","internalCallback","start","observer","entryList","_a","stop","useEffect"],"mappings":"yGAsBaA,EAAyB,CACpCC,EACAC,IACG,CACH,MAAMC,EAAY,OAAO,OAAW,KAAe,OAAO,oBAAwB,IAC5E,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAA6B,CAAA,CAAE,EAEvDC,EAAcC,SAAmC,IAAI,EACrDC,EAAmBD,EAAAA,OAA2C,EACpEC,EAAiB,QAAUP,EAE3B,MAAMQ,EAAQ,IAAM,CAClB,GAAI,CAACP,EAAW,OAChB,MAAMQ,EAAW,IAAI,oBAAoB,CAACC,EAAWD,IAAa,OACrDN,EAAAO,EAAU,YAAY,GAChBC,EAAAJ,EAAA,UAAA,MAAAI,EAAA,KAAAJ,EAAUG,EAAWD,EAAQ,CAC/C,EACDA,EAAS,QAAQV,CAAO,EACxBM,EAAY,QAAUI,CACxB,EAEMG,EAAO,IAAM,OACZX,KACLU,EAAAN,EAAY,UAAZ,MAAAM,EAAqB,aACrBN,EAAY,QAAU,KACxB,EAEAQ,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAKZ,EACD,OAAAF,EAAQ,WAAiBS,EAAA,EAEtB,IAAM,CACNI,EAAA,CACP,CACF,EAAG,EAAE,EAEE,CAAE,UAAAX,EAAW,QAAAC,EAAS,MAAAM,EAAO,KAAAI,CAAK,CAC3C"}
1
+ {"version":3,"file":"usePerformanceObserver.cjs","sources":["../../../../src/hooks/usePerformanceObserver/usePerformanceObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use performance observer options type */\nexport type UsePerformanceObserverOptions = PerformanceObserverInit & {\n /** Whether to start the observer immediately */\n immediate?: boolean;\n};\n\n/**\n * @name usePerformanceObserver\n * @description - Hook that allows you to observe performance entries\n * @category Sensors\n *\n * @browserapi PerformanceObserver https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver\n *\n * @param {UsePerformanceObserverOptions} options The options for the performance observer\n * @param {PerformanceObserverCallback} callback The function to handle performance entries\n * @returns {object} An object containing the observer's support status and methods to start and stop the observer\n *\n * @example\n * const { supported, entries, start, stop } = usePerformanceObserver();\n */\nexport const usePerformanceObserver = (\n options: UsePerformanceObserverOptions,\n callback?: PerformanceObserverCallback\n) => {\n const supported = typeof window !== 'undefined' && typeof PerformanceObserver !== 'undefined';\n const [entries, setEntries] = useState<PerformanceEntry[]>([]);\n\n const observerRef = useRef<PerformanceObserver | null>(null);\n const internalCallback = useRef<PerformanceObserverCallback | null>(callback);\n internalCallback.current = callback;\n\n const start = () => {\n if (!supported) return;\n const observer = new PerformanceObserver((entryList, observer) => {\n setEntries(entryList.getEntries());\n internalCallback.current?.(entryList, observer);\n });\n observer.observe(options);\n observerRef.current = observer;\n };\n\n const stop = () => {\n if (!supported) return;\n observerRef.current?.disconnect();\n observerRef.current = null;\n };\n\n useEffect(() => {\n if (!supported) return;\n if (options.immediate) start();\n\n return () => {\n stop();\n };\n }, []);\n\n return { supported, entries, start, stop };\n};\n"],"names":["usePerformanceObserver","options","callback","supported","entries","setEntries","useState","observerRef","useRef","internalCallback","start","observer","entryList","_a","stop","useEffect"],"mappings":"yGAsBaA,EAAyB,CACpCC,EACAC,IACG,CACH,MAAMC,EAAY,OAAO,OAAW,KAAe,OAAO,oBAAwB,IAC5E,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAA6B,CAAA,CAAE,EAEvDC,EAAcC,SAAmC,IAAI,EACrDC,EAAmBD,SAA2CN,CAAQ,EAC5EO,EAAiB,QAAUP,EAE3B,MAAMQ,EAAQ,IAAM,CAClB,GAAI,CAACP,EAAW,OAChB,MAAMQ,EAAW,IAAI,oBAAoB,CAACC,EAAWD,IAAa,OACrDN,EAAAO,EAAU,YAAY,GAChBC,EAAAJ,EAAA,UAAA,MAAAI,EAAA,KAAAJ,EAAUG,EAAWD,EAAQ,CAC/C,EACDA,EAAS,QAAQV,CAAO,EACxBM,EAAY,QAAUI,CACxB,EAEMG,EAAO,IAAM,OACZX,KACLU,EAAAN,EAAY,UAAZ,MAAAM,EAAqB,aACrBN,EAAY,QAAU,KACxB,EAEAQ,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAKZ,EACD,OAAAF,EAAQ,WAAiBS,EAAA,EAEtB,IAAM,CACNI,EAAA,CACP,CACF,EAAG,EAAE,EAEE,CAAE,UAAAX,EAAW,QAAAC,EAAS,MAAAM,EAAO,KAAAI,CAAK,CAC3C"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),s=(e,r)=>{const t=c.useRef(e),u=c.useRef();return((r==null?void 0:r.equality)??Object.is)(e,t.current)||(u.current=t.current,t.current=e),u.current};exports.usePrevious=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),s=(e,r)=>{const t=c.useRef(e),u=c.useRef(void 0);return((r==null?void 0:r.equality)??Object.is)(e,t.current)||(u.current=t.current,t.current=e),u.current};exports.usePrevious=s;
2
2
  //# sourceMappingURL=usePrevious.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePrevious.cjs","sources":["../../../../src/hooks/usePrevious/usePrevious.ts"],"sourcesContent":["import { useRef } from 'react';\n\nexport interface UsePreviousOptions<Value> {\n equality: (a: Value, b: Value) => boolean;\n}\n\n/**\n * @name usePrevious\n * @description - Hook that returns the previous value\n * @category Utilities\n *\n * @template Value The type of the value\n * @param {Value} value The value to get the previous value\n * @param {(a: Value, b: Value) => boolean} [options.equality] The custom equality function to determine if the value has changed\n * @returns {Value} The previous value\n *\n * @example\n * const prevValue = usePrevious(value);\n */\nexport const usePrevious = <Value>(value: Value, options?: UsePreviousOptions<Value>) => {\n const currentRef = useRef<Value>(value);\n const previousRef = useRef<Value>();\n\n const equality = options?.equality ?? Object.is;\n\n if (!equality(value, currentRef.current)) {\n previousRef.current = currentRef.current;\n currentRef.current = value;\n }\n\n return previousRef.current;\n};\n"],"names":["usePrevious","value","options","currentRef","useRef","previousRef"],"mappings":"yGAmBaA,EAAc,CAAQC,EAAcC,IAAwC,CACjF,MAAAC,EAAaC,SAAcH,CAAK,EAChCI,EAAcD,EAAAA,OAAc,EAIlC,QAFiBF,GAAA,YAAAA,EAAS,WAAY,OAAO,IAE/BD,EAAOE,EAAW,OAAO,IACrCE,EAAY,QAAUF,EAAW,QACjCA,EAAW,QAAUF,GAGhBI,EAAY,OACrB"}
1
+ {"version":3,"file":"usePrevious.cjs","sources":["../../../../src/hooks/usePrevious/usePrevious.ts"],"sourcesContent":["import { useRef } from 'react';\n\nexport interface UsePreviousOptions<Value> {\n equality: (a: Value, b: Value) => boolean;\n}\n\n/**\n * @name usePrevious\n * @description - Hook that returns the previous value\n * @category Utilities\n *\n * @template Value The type of the value\n * @param {Value} value The value to get the previous value\n * @param {(a: Value, b: Value) => boolean} [options.equality] The custom equality function to determine if the value has changed\n * @returns {Value | undefined} The previous value\n *\n * @example\n * const prevValue = usePrevious(value);\n */\nexport const usePrevious = <Value>(value: Value, options?: UsePreviousOptions<Value>) => {\n const currentRef = useRef<Value>(value);\n const previousRef = useRef<Value>(undefined);\n\n const equality = options?.equality ?? Object.is;\n\n if (!equality(value, currentRef.current)) {\n previousRef.current = currentRef.current;\n currentRef.current = value;\n }\n\n return previousRef.current;\n};\n"],"names":["usePrevious","value","options","currentRef","useRef","previousRef"],"mappings":"yGAmBaA,EAAc,CAAQC,EAAcC,IAAwC,CACjF,MAAAC,EAAaC,SAAcH,CAAK,EAChCI,EAAcD,SAAc,MAAS,EAI3C,QAFiBF,GAAA,YAAAA,EAAS,WAAY,OAAO,IAE/BD,EAAOE,EAAW,OAAO,IACrCE,EAAY,QAAUF,EAAW,QACjCA,EAAW,QAAUF,GAGhBI,EAAY,OACrB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),O=require("../useDidUpdate/useDidUpdate.cjs"),P=require("../useMount/useMount.cjs"),M=require("../../utils/helpers/getRetry.cjs"),x=(k,e)=>{const t=(e==null?void 0:e.enabled)??!0,y=r.useRef(e!=null&&e.retry?M.getRetry(e.retry):0),v=r.useRef(!1),[m,d]=r.useState(!1),[w,h]=r.useState(!1),[A,I]=r.useState(!1),[F,g]=r.useState(!1),[L,S]=r.useState(!!(e!=null&&e.initialData)),[Q,b]=r.useState(void 0),[T,q]=r.useState(e==null?void 0:e.initialData),D=r.useRef(new AbortController),E=r.useRef(),R=(e==null?void 0:e.keys)??[],C=()=>{D.current.abort(),D.current=new AbortController},u=c=>{C(),d(!0),c==="init"&&(v.current=!0,h(!0)),c==="refetch"&&g(!0),k({signal:D.current.signal,keys:R}).then(a=>{var f;const l=e!=null&&e.select?e==null?void 0:e.select(a):a;(f=e==null?void 0:e.onSuccess)==null||f.call(e,l),q(l),S(!0),b(void 0),I(!1),d(!1),c==="init"&&h(!1),c==="refetch"&&g(!1)}).catch(a=>{var l;if(y.current>0){y.current-=1;const f=typeof(e==null?void 0:e.retryDelay)=="function"?e==null?void 0:e.retryDelay(y.current,a):e==null?void 0:e.retryDelay;if(f){setTimeout(()=>u(c),f);return}return u(c)}(l=e==null?void 0:e.onError)==null||l.call(e,a),q(void 0),S(!1),b(a),I(!0),d(!1),c==="init"&&h(!1),c==="refetch"&&g(!1),y.current=e!=null&&e.retry?M.getRetry(e.retry):0}).finally(()=>{if(e!=null&&e.refetchInterval){const a=setInterval(()=>{clearInterval(a),u("refetch")},e==null?void 0:e.refetchInterval);E.current=a}})};P.useMount(()=>{t&&u("init")}),O.useDidUpdate(()=>{t&&u(v.current?"refetch":"init")},[t,...R]),r.useEffect(()=>()=>{clearInterval(E.current)},[t,e==null?void 0:e.refetchInterval,e==null?void 0:e.retry,...R]);const U=()=>u("refetch"),j=typeof(e==null?void 0:e.placeholderData)=="function"?(e==null?void 0:e.placeholderData).call(e):e==null?void 0:e.placeholderData;return{abort:C,data:T??j,error:Q,refetch:U,isFetching:m,isLoading:w,isError:A,isSuccess:L,isRefetching:F}};exports.useQuery=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),U=require("../useDidUpdate/useDidUpdate.cjs"),j=require("../useMount/useMount.cjs"),M=require("../../utils/helpers/getRetry.cjs"),O=(k,e)=>{const t=(e==null?void 0:e.enabled)??!0,y=r.useRef(e!=null&&e.retry?M.getRetry(e.retry):0),I=r.useRef(!1),[m,d]=r.useState(!1),[w,h]=r.useState(!1),[A,S]=r.useState(!1),[F,g]=r.useState(!1),[L,b]=r.useState(!!(e!=null&&e.placeholderData)),[Q,D]=r.useState(void 0),[T,q]=r.useState(e==null?void 0:e.placeholderData),v=r.useRef(new AbortController),E=r.useRef(void 0),R=(e==null?void 0:e.keys)??[],C=()=>{v.current.abort(),v.current=new AbortController},a=u=>{C(),d(!0),u==="init"&&(I.current=!0,h(!0)),u==="refetch"&&g(!0),k({signal:v.current.signal,keys:R}).then(c=>{var l;const f=e!=null&&e.select?e==null?void 0:e.select(c):c;(l=e==null?void 0:e.onSuccess)==null||l.call(e,f),q(f),b(!0),D(void 0),S(!1),d(!1),u==="init"&&h(!1),u==="refetch"&&g(!1)}).catch(c=>{var f;if(y.current>0){y.current-=1;const l=typeof(e==null?void 0:e.retryDelay)=="function"?e==null?void 0:e.retryDelay(y.current,c):e==null?void 0:e.retryDelay;if(l){setTimeout(()=>a(u),l);return}return a(u)}(f=e==null?void 0:e.onError)==null||f.call(e,c),q(void 0),b(!1),D(c),S(!0),d(!1),u==="init"&&h(!1),u==="refetch"&&g(!1),y.current=e!=null&&e.retry?M.getRetry(e.retry):0}).finally(()=>{if(e!=null&&e.refetchInterval){const c=setInterval(()=>{clearInterval(c),a("refetch")},e==null?void 0:e.refetchInterval);E.current=c}})};return j.useMount(()=>{t&&a("init")}),U.useDidUpdate(()=>{t&&a(I.current?"refetch":"init")},[t,...R]),r.useEffect(()=>()=>{clearInterval(E.current)},[t,e==null?void 0:e.refetchInterval,e==null?void 0:e.retry,...R]),{abort:C,data:T,error:Q,refetch:()=>a("refetch"),isFetching:m,isLoading:w,isError:A,isSuccess:L,isRefetching:F}};exports.useQuery=O;
2
2
  //# sourceMappingURL=useQuery.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useQuery.cjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/* The use query return type */\nexport interface UseQueryOptions<QueryData, Data> {\n /* The enabled state of the query */\n enabled?: boolean;\n /* The initial data for the hook */\n initialData?: (() => Data) | Data;\n /* The depends for the hook */\n keys?: DependencyList;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The refetch interval */\n refetchInterval?: number;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, error: Error) => number) | number;\n /* The callback function to be invoked on error */\n onError?: (error: Error) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (data: Data) => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\ninterface UseQueryCallbackParams {\n /* The depends for the hook */\n keys: DependencyList;\n /* The abort signal */\n signal: AbortSignal;\n}\n\n/* The use query return type */\nexport interface UseQueryReturn<Data> {\n /* The abort function */\n abort: AbortController['abort'];\n /* The state of the query */\n data?: Data;\n /* The success state of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The fetching state of the query */\n isFetching: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n /* The refetching state of the query */\n isRefetching: boolean;\n /* The success state of the query */\n isSuccess: boolean;\n /* The refetch function */\n refetch: () => void;\n}\n\n/**\n * @name useQuery\n * @description - Hook that defines the logic when query data\n * @category Utilities\n *\n * @template Data The type of the data\n * @param {() => Promise<Data>} callback The callback function to be invoked\n * @param {DependencyList} [options.keys] The dependencies for the hook\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\n * @param {number} [options.refetchInterval] The refetch interval\n * @param {boolean | number} [options.retry] The retry count of requests\n * @returns {UseQueryReturn<Data>} An object with the state of the query\n *\n * @example\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\n */\nexport const useQuery = <QueryData, Data = QueryData>(\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\n options?: UseQueryOptions<QueryData, Data>\n): UseQueryReturn<Data> => {\n const enabled = options?.enabled ?? true;\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const alreadyRequested = useRef(false);\n\n const [isFetching, setIsFetching] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [isRefetching, setIsRefetching] = useState(false);\n const [isSuccess, setIsSuccess] = useState(!!options?.initialData);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.initialData);\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>();\n\n const keys = options?.keys ?? [];\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n const request = (action: 'init' | 'refetch') => {\n abort();\n\n setIsFetching(true);\n if (action === 'init') {\n alreadyRequested.current = true;\n setIsLoading(true);\n }\n if (action === 'refetch') setIsRefetching(true);\n callback({ signal: abortControllerRef.current.signal, keys })\n .then((response) => {\n const data = options?.select ? options?.select(response) : response;\n options?.onSuccess?.(data as Data);\n setData(data as Data);\n setIsSuccess(true);\n setError(undefined);\n setIsError(false);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n })\n .catch((error: Error) => {\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, error)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(() => request(action), retryDelay);\n return;\n }\n\n return request(action);\n }\n options?.onError?.(error);\n setData(undefined);\n setIsSuccess(false);\n setError(error);\n setIsError(true);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n })\n .finally(() => {\n if (options?.refetchInterval) {\n const interval = setInterval(() => {\n clearInterval(interval);\n request('refetch');\n }, options?.refetchInterval);\n intervalIdRef.current = interval;\n }\n });\n };\n\n useMount(() => {\n if (!enabled) return;\n request('init');\n });\n\n useDidUpdate(() => {\n if (!enabled) return;\n request(alreadyRequested.current ? 'refetch' : 'init');\n }, [enabled, ...keys]);\n\n useEffect(() => {\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\n\n const refetch = () => request('refetch');\n\n const placeholderData =\n typeof options?.placeholderData === 'function'\n ? (options?.placeholderData as () => Data)()\n : options?.placeholderData;\n\n return {\n abort,\n data: data ?? placeholderData,\n error,\n refetch,\n isFetching,\n isLoading,\n isError,\n isSuccess,\n isRefetching\n };\n};\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","_a","retryDelay","interval","useMount","useDidUpdate","useEffect","refetch","placeholderData"],"mappings":"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"}
1
+ {"version":3,"file":"useQuery.cjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/* The use query return type */\nexport interface UseQueryOptions<QueryData, Data> {\n /* The enabled state of the query */\n enabled?: boolean;\n /* The depends for the hook */\n keys?: DependencyList;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The refetch interval */\n refetchInterval?: number;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, error: Error) => number) | number;\n /* The callback function to be invoked on error */\n onError?: (error: Error) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (data: Data) => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\ninterface UseQueryCallbackParams {\n /* The depends for the hook */\n keys: DependencyList;\n /* The abort signal */\n signal: AbortSignal;\n}\n\n/* The use query return type */\nexport interface UseQueryReturn<Data> {\n /* The abort function */\n abort: AbortController['abort'];\n /* The state of the query */\n data?: Data;\n /* The success state of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The fetching state of the query */\n isFetching: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n /* The refetching state of the query */\n isRefetching: boolean;\n /* The success state of the query */\n isSuccess: boolean;\n /* The refetch function */\n refetch: () => void;\n}\n\n/**\n * @name useQuery\n * @description - Hook that defines the logic when query data\n * @category Utilities\n *\n * @template Data The type of the data\n * @param {() => Promise<Data>} callback The callback function to be invoked\n * @param {DependencyList} [options.keys] The dependencies for the hook\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\n * @param {number} [options.refetchInterval] The refetch interval\n * @param {boolean | number} [options.retry] The retry count of requests\n * @returns {UseQueryReturn<Data>} An object with the state of the query\n *\n * @example\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\n */\nexport const useQuery = <QueryData, Data = QueryData>(\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\n options?: UseQueryOptions<QueryData, Data>\n): UseQueryReturn<Data> => {\n const enabled = options?.enabled ?? true;\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const alreadyRequested = useRef(false);\n\n const [isFetching, setIsFetching] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [isRefetching, setIsRefetching] = useState(false);\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n\n const keys = options?.keys ?? [];\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n const request = (action: 'init' | 'refetch') => {\n abort();\n\n setIsFetching(true);\n if (action === 'init') {\n alreadyRequested.current = true;\n setIsLoading(true);\n }\n if (action === 'refetch') setIsRefetching(true);\n callback({ signal: abortControllerRef.current.signal, keys })\n .then((response) => {\n const data = options?.select ? options?.select(response) : response;\n options?.onSuccess?.(data as Data);\n setData(data as Data);\n setIsSuccess(true);\n setError(undefined);\n setIsError(false);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n })\n .catch((error: Error) => {\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, error)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(() => request(action), retryDelay);\n return;\n }\n\n return request(action);\n }\n options?.onError?.(error);\n setData(undefined);\n setIsSuccess(false);\n setError(error);\n setIsError(true);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n })\n .finally(() => {\n if (options?.refetchInterval) {\n const interval = setInterval(() => {\n clearInterval(interval);\n request('refetch');\n }, options?.refetchInterval);\n intervalIdRef.current = interval;\n }\n });\n };\n\n useMount(() => {\n if (!enabled) return;\n request('init');\n });\n\n useDidUpdate(() => {\n if (!enabled) return;\n request(alreadyRequested.current ? 'refetch' : 'init');\n }, [enabled, ...keys]);\n\n useEffect(() => {\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\n\n const refetch = () => request('refetch');\n\n return {\n abort,\n data,\n error,\n refetch,\n isFetching,\n isLoading,\n isError,\n isSuccess,\n isRefetching\n };\n};\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","_a","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),g=require("../useRefState/useRefState.cjs"),v=require("../../utils/helpers/isTarget.cjs"),d=require("../../utils/helpers/getElement.cjs"),R=(...r)=>{const t=v.isTarget(r[0])?r[0]:void 0,e=t?r[1]:r[0],i=(e==null?void 0:e.enabled)??!0,[o,a]=c.useState([]),s=g.useRefState(),n=c.useRef();return n.current=e==null?void 0:e.onChange,c.useEffect(()=>{if(!i&&!t&&!s.state)return;const b=t?d.getElement(t):s.current;if(!b)return;const u=new ResizeObserver(f=>{var l;a(f),(l=n.current)==null||l.call(n,f,u)});return u.observe(b,e),()=>{u.disconnect()}},[t,s.state,e==null?void 0:e.box,i]),t?{entries:o}:{ref:s,entries:o}};exports.useResizeObserver=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),l=require("../useRefState/useRefState.cjs"),v=require("../../utils/helpers/isTarget.cjs"),d=require("../../utils/helpers/getElement.cjs"),R=(...r)=>{const t=v.isTarget(r[0])?r[0]:void 0,e=t?r[1]:r[0],i=(e==null?void 0:e.enabled)??!0,[b,g]=c.useState([]),n=l.useRefState(),s=c.useRef(e==null?void 0:e.onChange);return s.current=e==null?void 0:e.onChange,c.useEffect(()=>{if(!i&&!t&&!n.state)return;const f=t?d.getElement(t):n.current;if(!f)return;const u=new ResizeObserver(o=>{var a;g(o),(a=s.current)==null||a.call(s,o,u)});return u.observe(f,e),()=>{u.disconnect()}},[t,n.state,e==null?void 0:e.box,i]),t?{entries:b}:{ref:n,entries:b}};exports.useResizeObserver=R;
2
2
  //# sourceMappingURL=useResizeObserver.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.cjs","sources":["../../../../src/hooks/useResizeObserver/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The resize observer options type */\nexport interface UseResizeObserverOptions extends ResizeObserverOptions {\n /** The enabled state */\n enabled?: boolean;\n /** The resize observer callback */\n onChange?: (entries: ResizeObserverEntry[], observer: ResizeObserver) => void;\n}\n\n/** The resize observer return type */\nexport interface UseResizeObserverReturn {\n /** The resize observer entries */\n entries: ResizeObserverEntry[];\n}\n\nexport interface UseResizeObserver {\n (target: HookTarget, options?: UseResizeObserverOptions): UseResizeObserverReturn;\n\n <Target extends Element>(\n options?: UseResizeObserverOptions,\n target?: never\n ): UseResizeObserverReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useResizeObserver\n * @description - Hook that gives you resize observer state\n * @category Browser\n *\n * @browserapi ResizeObserver https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {boolean} [options.box] The IntersectionObserver options\n * @param {(entries: ResizeObserverEntry[], observer: ResizeObserver) => void} [options.onChange] The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn & { ref: StateRef<Target> }} An object containing the resize observer state\n *\n * @example\n * const { ref, entries } = useResizeObserver();\n *\n * @overload\n * @template Target The target element\n * @param {HookTarget} target The target element to observe\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {boolean} [options.box] The IntersectionObserver options\n * @param {(entries: ResizeObserverEntry[], observer: ResizeObserver) => void} [options.onChange] The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn} An object containing the resize observer state\n *\n * @example\n * const { entries } = useResizeObserver(ref);\n */\nexport const useResizeObserver = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseResizeObserverOptions | undefined;\n const enabled = options?.enabled ?? true;\n\n const [entries, setEntries] = useState<ResizeObserverEntry[]>([]);\n\n const internalRef = useRefState<Element>();\n const internalOnChangeRef = useRef<UseResizeObserverOptions['onChange']>();\n internalOnChangeRef.current = options?.onChange;\n\n useEffect(() => {\n if (!enabled && !target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new ResizeObserver((entries) => {\n setEntries(entries);\n internalOnChangeRef.current?.(entries, observer);\n });\n observer.observe(element as Element, options);\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state, options?.box, enabled]);\n\n if (target) return { entries };\n return {\n ref: internalRef,\n entries\n };\n}) as UseResizeObserver;\n"],"names":["useResizeObserver","params","target","isTarget","options","enabled","entries","setEntries","useState","internalRef","useRefState","internalOnChangeRef","useRef","useEffect","element","getElement","observer","_a"],"mappings":"mPA6DaA,EAAqB,IAAIC,IAAkB,CAChD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACxCI,GAAUD,GAAA,YAAAA,EAAS,UAAW,GAE9B,CAACE,EAASC,CAAU,EAAIC,EAAAA,SAAgC,CAAA,CAAE,EAE1DC,EAAcC,EAAAA,YAAqB,EACnCC,EAAsBC,EAAAA,OAA6C,EAoBrE,OAnBJD,EAAoB,QAAUP,GAAA,YAAAA,EAAS,SAEvCS,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,GAAW,CAACH,GAAU,CAACO,EAAY,MAAO,OAE/C,MAAMK,EAAUZ,EAASa,EAAAA,WAAWb,CAAM,EAAIO,EAAY,QAC1D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAW,IAAI,eAAgBV,GAAY,OAC/CC,EAAWD,CAAO,GACEW,EAAAN,EAAA,UAAA,MAAAM,EAAA,KAAAN,EAAUL,EAASU,EAAQ,CAChD,EACQ,OAAAA,EAAA,QAAQF,EAAoBV,CAAO,EAErC,IAAM,CACXY,EAAS,WAAW,CACtB,CAAA,EACC,CAACd,EAAQO,EAAY,MAAOL,GAAA,YAAAA,EAAS,IAAKC,CAAO,CAAC,EAEjDH,EAAe,CAAE,QAAAI,CAAQ,EACtB,CACL,IAAKG,EACL,QAAAH,CACF,CACF"}
1
+ {"version":3,"file":"useResizeObserver.cjs","sources":["../../../../src/hooks/useResizeObserver/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The resize observer options type */\nexport interface UseResizeObserverOptions extends ResizeObserverOptions {\n /** The enabled state */\n enabled?: boolean;\n /** The resize observer callback */\n onChange?: (entries: ResizeObserverEntry[], observer: ResizeObserver) => void;\n}\n\n/** The resize observer return type */\nexport interface UseResizeObserverReturn {\n /** The resize observer entries */\n entries: ResizeObserverEntry[];\n}\n\nexport interface UseResizeObserver {\n (target: HookTarget, options?: UseResizeObserverOptions): UseResizeObserverReturn;\n\n <Target extends Element>(\n options?: UseResizeObserverOptions,\n target?: never\n ): UseResizeObserverReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useResizeObserver\n * @description - Hook that gives you resize observer state\n * @category Browser\n *\n * @browserapi ResizeObserver https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {boolean} [options.box] The IntersectionObserver options\n * @param {(entries: ResizeObserverEntry[], observer: ResizeObserver) => void} [options.onChange] The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn & { ref: StateRef<Target> }} An object containing the resize observer state\n *\n * @example\n * const { ref, entries } = useResizeObserver();\n *\n * @overload\n * @template Target The target element\n * @param {HookTarget} target The target element to observe\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {boolean} [options.box] The IntersectionObserver options\n * @param {(entries: ResizeObserverEntry[], observer: ResizeObserver) => void} [options.onChange] The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn} An object containing the resize observer state\n *\n * @example\n * const { entries } = useResizeObserver(ref);\n */\nexport const useResizeObserver = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseResizeObserverOptions | undefined;\n const enabled = options?.enabled ?? true;\n\n const [entries, setEntries] = useState<ResizeObserverEntry[]>([]);\n\n const internalRef = useRefState<Element>();\n const internalOnChangeRef = useRef<UseResizeObserverOptions['onChange']>(options?.onChange);\n internalOnChangeRef.current = options?.onChange;\n\n useEffect(() => {\n if (!enabled && !target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new ResizeObserver((entries) => {\n setEntries(entries);\n internalOnChangeRef.current?.(entries, observer);\n });\n observer.observe(element as Element, options);\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state, options?.box, enabled]);\n\n if (target) return { entries };\n return {\n ref: internalRef,\n entries\n };\n}) as UseResizeObserver;\n"],"names":["useResizeObserver","params","target","isTarget","options","enabled","entries","setEntries","useState","internalRef","useRefState","internalOnChangeRef","useRef","useEffect","element","getElement","observer","_a"],"mappings":"mPA6DaA,EAAqB,IAAIC,IAAkB,CAChD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACxCI,GAAUD,GAAA,YAAAA,EAAS,UAAW,GAE9B,CAACE,EAASC,CAAU,EAAIC,EAAAA,SAAgC,CAAA,CAAE,EAE1DC,EAAcC,EAAAA,YAAqB,EACnCC,EAAsBC,EAAAA,OAA6CR,GAAA,YAAAA,EAAS,QAAQ,EAoBtF,OAnBJO,EAAoB,QAAUP,GAAA,YAAAA,EAAS,SAEvCS,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,GAAW,CAACH,GAAU,CAACO,EAAY,MAAO,OAE/C,MAAMK,EAAUZ,EAASa,EAAAA,WAAWb,CAAM,EAAIO,EAAY,QAC1D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAW,IAAI,eAAgBV,GAAY,OAC/CC,EAAWD,CAAO,GACEW,EAAAN,EAAA,UAAA,MAAAM,EAAA,KAAAN,EAAUL,EAASU,EAAQ,CAChD,EACQ,OAAAA,EAAA,QAAQF,EAAoBV,CAAO,EAErC,IAAM,CACXY,EAAS,WAAW,CACtB,CAAA,EACC,CAACd,EAAQO,EAAY,MAAOL,GAAA,YAAAA,EAAS,IAAKC,CAAO,CAAC,EAEjDH,EAAe,CAAE,QAAAI,CAAQ,EACtB,CACL,IAAKG,EACL,QAAAH,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),o=require("../useEvent/useEvent.cjs");function a(c,r){const[n,u]=t.useState(!1),e=t.useRef(),s=o.useEvent(c);return t.useEffect(()=>(e.current=setTimeout(()=>{s(),u(!0)},r),()=>{clearTimeout(e.current)}),[r]),{ready:n,clear:()=>{clearTimeout(e.current),u(!0)}}}exports.useTimeout=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),s=require("../useEvent/useEvent.cjs");function i(c,r){const[n,u]=t.useState(!1),e=t.useRef(void 0),o=s.useEvent(c);return t.useEffect(()=>(e.current=setTimeout(()=>{o(),u(!0)},r),()=>{clearTimeout(e.current)}),[r]),{ready:n,clear:()=>{clearTimeout(e.current),u(!0)}}}exports.useTimeout=i;
2
2
  //# sourceMappingURL=useTimeout.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTimeout.cjs","sources":["../../../../src/hooks/useTimeout/useTimeout.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/** The use timeout return type */\ninterface UseTimeoutReturn {\n /** Timeout is ready state value */\n ready: boolean;\n /** Function to clear timeout */\n clear: () => void;\n}\n\n/**\n * @name useTimeout\n * @description - Hook that executes a callback function after a specified delay\n * @category Time\n *\n * @param {() => void} callback The function to be executed after the timeout\n * @param {number} delay The delay in milliseconds before the timeout executes the callback function\n * @returns {UseTimeoutReturn} An object with a `ready` boolean state value and a `clear` function to clear timeout\n *\n * @example\n * const { clear, ready } = useTimeout(() => {}, 5000);\n */\nexport function useTimeout(callback: () => void, delay: number): UseTimeoutReturn {\n const [ready, setReady] = useState(false);\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const internalCallback = useEvent(callback);\n\n useEffect(() => {\n timeoutIdRef.current = setTimeout(() => {\n internalCallback();\n setReady(true);\n }, delay);\n\n return () => {\n clearTimeout(timeoutIdRef.current);\n };\n }, [delay]);\n\n const clear = () => {\n clearTimeout(timeoutIdRef.current);\n setReady(true);\n };\n\n return { ready, clear };\n}\n"],"names":["useTimeout","callback","delay","ready","setReady","useState","timeoutIdRef","useRef","internalCallback","useEvent","useEffect"],"mappings":"+IAwBgB,SAAAA,EAAWC,EAAsBC,EAAiC,CAChF,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAK,EAElCC,EAAeC,EAAAA,OAAsC,EACrDC,EAAmBC,WAASR,CAAQ,EAE1CS,OAAAA,EAAAA,UAAU,KACKJ,EAAA,QAAU,WAAW,IAAM,CACrBE,EAAA,EACjBJ,EAAS,EAAI,GACZF,CAAK,EAED,IAAM,CACX,aAAaI,EAAa,OAAO,CACnC,GACC,CAACJ,CAAK,CAAC,EAOH,CAAE,MAAAC,EAAO,MALF,IAAM,CAClB,aAAaG,EAAa,OAAO,EACjCF,EAAS,EAAI,CACf,CAEsB,CACxB"}
1
+ {"version":3,"file":"useTimeout.cjs","sources":["../../../../src/hooks/useTimeout/useTimeout.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/** The use timeout return type */\ninterface UseTimeoutReturn {\n /** Timeout is ready state value */\n ready: boolean;\n /** Function to clear timeout */\n clear: () => void;\n}\n\n/**\n * @name useTimeout\n * @description - Hook that executes a callback function after a specified delay\n * @category Time\n *\n * @param {() => void} callback The function to be executed after the timeout\n * @param {number} delay The delay in milliseconds before the timeout executes the callback function\n * @returns {UseTimeoutReturn} An object with a `ready` boolean state value and a `clear` function to clear timeout\n *\n * @example\n * const { clear, ready } = useTimeout(() => {}, 5000);\n */\nexport function useTimeout(callback: () => void, delay: number): UseTimeoutReturn {\n const [ready, setReady] = useState(false);\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const internalCallback = useEvent(callback);\n\n useEffect(() => {\n timeoutIdRef.current = setTimeout(() => {\n internalCallback();\n setReady(true);\n }, delay);\n\n return () => {\n clearTimeout(timeoutIdRef.current);\n };\n }, [delay]);\n\n const clear = () => {\n clearTimeout(timeoutIdRef.current);\n setReady(true);\n };\n\n return { ready, clear };\n}\n"],"names":["useTimeout","callback","delay","ready","setReady","useState","timeoutIdRef","useRef","internalCallback","useEvent","useEffect"],"mappings":"+IAwBgB,SAAAA,EAAWC,EAAsBC,EAAiC,CAChF,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAK,EAElCC,EAAeC,SAAsC,MAAS,EAC9DC,EAAmBC,WAASR,CAAQ,EAE1CS,OAAAA,EAAAA,UAAU,KACKJ,EAAA,QAAU,WAAW,IAAM,CACrBE,EAAA,EACjBJ,EAAS,EAAI,GACZF,CAAK,EAED,IAAM,CACX,aAAaI,EAAa,OAAO,CACnC,GACC,CAACJ,CAAK,CAAC,EAOH,CAAE,MAAAC,EAAO,MALF,IAAM,CAClB,aAAaG,EAAa,OAAO,EACjCF,EAAS,EAAI,CACf,CAEsB,CACxB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),q=require("../useDidUpdate/useDidUpdate.cjs"),M=o=>{const e=Math.ceil(o),c=Math.floor(e/(60*60*24)),u=Math.floor(e%(60*60*24)/(60*60)),t=Math.floor(e%(60*60)/60);return{seconds:Math.floor(e%60),minutes:t,hours:u,days:c}},D=(...o)=>{const e=Math.max(o[0]??0,0),c=typeof o[1]=="object"?o[1]:{onExpire:o[1]},[u,t]=d.useState(e>0&&((c==null?void 0:c.immediately)??!0)),[i,n]=d.useState(e),S=d.useRef(),f=d.useRef();f.current=c??{},q.useDidUpdate(()=>{if(e<=0){t(!1),n(0);return}t(!0),n(e)},[e]),d.useEffect(()=>{var r,a;if(!u)return;(a=(r=f.current)==null?void 0:r.onStart)==null||a.call(r);const s=()=>{var l,h;(h=(l=f.current)==null?void 0:l.onTick)==null||h.call(l,i),n(j=>{var m,v;const p=j-1;return p===0&&(t(!1),(v=(m=f.current)==null?void 0:m.onExpire)==null||v.call(m)),p})};return S.current=setInterval(s,1e3),()=>{clearInterval(S.current)}},[u]);const T=()=>t(!1),g=()=>{i<=0||t(!0)},y=()=>{i<=0||t(!u)},I=(s,r=!0)=>{n(s),r&&t(!0)},R=()=>{e<=0||(t(!0),n(e))},b=()=>{t(!1),n(0)},x=s=>n(r=>r+s),E=s=>{n(r=>{const a=r-s;return a<=0?(t(!1),0):a})};return{...M(i),count:i,pause:T,active:u,resume:g,toggle:y,start:R,restart:I,clear:b,increase:x,decrease:E}};exports.getTimeFromSeconds=M;exports.useTimer=D;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),q=require("../useDidUpdate/useDidUpdate.cjs"),M=c=>{const e=Math.ceil(c),s=Math.floor(e/(60*60*24)),u=Math.floor(e%(60*60*24)/(60*60)),t=Math.floor(e%(60*60)/60);return{seconds:Math.floor(e%60),minutes:t,hours:u,days:s}},D=(...c)=>{const e=Math.max(c[0]??0,0),s=typeof c[1]=="object"?c[1]:{onExpire:c[1]},[u,t]=d.useState(e>0&&((s==null?void 0:s.immediately)??!0)),[i,n]=d.useState(e),S=d.useRef(void 0),f=d.useRef(s);f.current=s??{},q.useDidUpdate(()=>{if(e<=0){t(!1),n(0);return}t(!0),n(e)},[e]),d.useEffect(()=>{var r,a;if(!u)return;(a=(r=f.current)==null?void 0:r.onStart)==null||a.call(r);const o=()=>{var l,v;(v=(l=f.current)==null?void 0:l.onTick)==null||v.call(l,i),n(j=>{var m,p;const h=j-1;return h===0&&(t(!1),(p=(m=f.current)==null?void 0:m.onExpire)==null||p.call(m)),h})};return S.current=setInterval(o,1e3),()=>{clearInterval(S.current)}},[u]);const T=()=>t(!1),g=()=>{i<=0||t(!0)},y=()=>{i<=0||t(!u)},I=(o,r=!0)=>{n(o),r&&t(!0)},R=()=>{e<=0||(t(!0),n(e))},b=()=>{t(!1),n(0)},x=o=>n(r=>r+o),E=o=>{n(r=>{const a=r-o;return a<=0?(t(!1),0):a})};return{...M(i),count:i,pause:T,active:u,resume:g,toggle:y,start:R,restart:I,clear:b,increase:x,decrease:E}};exports.getTimeFromSeconds=M;exports.useTimer=D;
2
2
  //# sourceMappingURL=useTimer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTimer.cjs","sources":["../../../../src/hooks/useTimer/useTimer.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\n\nexport type PositiveInteger<Value extends number> = `${Value}` extends `-${any}` | `${any}.${any}`\n ? never\n : Value;\n\nexport const getTimeFromSeconds = (timestamp: number) => {\n const roundedTimestamp = Math.ceil(timestamp);\n const days = Math.floor(roundedTimestamp / (60 * 60 * 24));\n const hours = Math.floor((roundedTimestamp % (60 * 60 * 24)) / (60 * 60));\n const minutes = Math.floor((roundedTimestamp % (60 * 60)) / 60);\n const seconds = Math.floor(roundedTimestamp % 60);\n\n return {\n seconds,\n minutes,\n hours,\n days\n };\n};\n\n/** The use timer options type */\nexport interface UseTimerOptions {\n /** Whether the timer should start automatically */\n immediately?: boolean;\n /** The function to be executed when the timer is expired */\n onExpire?: () => void;\n /** The function to be executed when the timer is started */\n onStart?: () => void;\n /** Callback function to be executed on each tick of the timer */\n onTick?: (seconds: number) => void;\n}\n\n/** The use timer return type */\nexport interface UseTimerReturn {\n /** flag to indicate if timer is active or not */\n active: boolean;\n /** The total count of the timer */\n count: number;\n /** The day count of the timer */\n days: number;\n /** The hour count of the timer */\n hours: number;\n /** The minute count of the timer */\n minutes: number;\n /** The second count of the timer */\n seconds: number;\n /** The function to clear the timer */\n clear: () => void;\n /** The function to decrease the timer */\n decrease: (seconds: PositiveInteger<number>) => void;\n /** The function to increase the timer */\n increase: (seconds: PositiveInteger<number>) => void;\n /** The function to pause the timer */\n pause: () => void;\n /** The function to restart the timer */\n restart: (time: PositiveInteger<number>, immediately?: boolean) => void;\n /** The function to resume the timer */\n resume: () => void;\n /** The function to start the timer */\n start: () => void;\n /** The function to toggle the timer */\n toggle: () => void;\n}\n\nexport interface UseTimer {\n (): UseTimerReturn;\n\n (seconds: PositiveInteger<number>, callback: () => void): UseTimerReturn;\n\n (seconds: PositiveInteger<number>, options?: UseTimerOptions): UseTimerReturn;\n}\n\n/**\n * @name useTimer\n * @description - Hook that creates a timer functionality\n * @category Time\n *\n * @overload\n * @returns {UseTimerReturn} An object containing the timer properties and functions\n *\n * @example\n * const { days, hours, minutes, seconds, toggle, pause, start, restart, resume, active, decrease, increase } = useTimer();\n *\n * @overload\n * @param {number} seconds The seconds value that define for how long the timer will be running\n * @param {() => void} callback The function to be executed once countdown timer is expired\n * @returns {UseTimerReturn} An object containing the timer properties and functions\n *\n * @example\n * const { days, hours, minutes, seconds, toggle, pause, start, restart, resume, active, decrease, increase } = useTimer(1000, () => console.log('ready'));\n *\n * @overload\n * @param {number} seconds The seconds value that define for how long the timer will be running\n * @param {boolean} [options.immediately=true] The flag to decide if timer should start automatically\n * @param {() => void} [options.onExpire] The function to be executed when the timer is expired\n * @param {(timestamp: number) => void} [options.onTick] The function to be executed on each tick of the timer\n * @returns {UseTimerReturn} An object containing the timer properties and functions\n *\n * @example\n * const { days, hours, minutes, seconds, toggle, pause, start, restart, resume, active, decrease, increase } = useTimer(1000);\n */\nexport const useTimer = ((...params: any[]) => {\n const initialSeconds = Math.max((params[0] ?? 0) as PositiveInteger<number>, 0);\n const options = (typeof params[1] === 'object' ? params[1] : { onExpire: params[1] }) as\n | UseTimerOptions\n | undefined;\n\n const [active, setActive] = useState(initialSeconds > 0 && (options?.immediately ?? true));\n const [seconds, setSeconds] = useState(initialSeconds);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>();\n const optionsRef = useRef<UseTimerOptions>();\n optionsRef.current = options ?? {};\n\n useDidUpdate(() => {\n if (initialSeconds <= 0) {\n setActive(false);\n setSeconds(0);\n return;\n }\n\n setActive(true);\n setSeconds(initialSeconds);\n }, [initialSeconds]);\n\n useEffect(() => {\n if (!active) return;\n\n optionsRef.current?.onStart?.();\n const onInterval = () => {\n optionsRef.current?.onTick?.(seconds);\n setSeconds((prevSeconds) => {\n const updatedSeconds = prevSeconds - 1;\n if (updatedSeconds === 0) {\n setActive(false);\n optionsRef.current?.onExpire?.();\n }\n return updatedSeconds;\n });\n };\n\n intervalIdRef.current = setInterval(onInterval, 1000);\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [active]);\n\n const pause = () => setActive(false);\n const resume = () => {\n if (seconds <= 0) return;\n setActive(true);\n };\n\n const toggle = () => {\n if (seconds <= 0) return;\n setActive(!active);\n };\n\n const restart = (seconds: PositiveInteger<number>, immediately = true) => {\n setSeconds(seconds);\n if (immediately) setActive(true);\n };\n\n const start = () => {\n if (initialSeconds <= 0) return;\n\n setActive(true);\n setSeconds(initialSeconds);\n };\n\n const clear = () => {\n setActive(false);\n setSeconds(0);\n };\n\n const increase = (seconds: PositiveInteger<number>) =>\n setSeconds((prevSeconds) => prevSeconds + seconds);\n const decrease = (seconds: PositiveInteger<number>) => {\n setSeconds((prevSeconds) => {\n const updatedSeconds = prevSeconds - seconds;\n if (updatedSeconds <= 0) {\n setActive(false);\n return 0;\n } else {\n return updatedSeconds;\n }\n });\n };\n\n return {\n ...getTimeFromSeconds(seconds),\n count: seconds,\n pause,\n active,\n resume,\n toggle,\n start,\n restart,\n clear,\n increase,\n decrease\n };\n}) as UseTimer;\n"],"names":["getTimeFromSeconds","timestamp","roundedTimestamp","days","hours","minutes","useTimer","params","initialSeconds","options","active","setActive","useState","seconds","setSeconds","intervalIdRef","useRef","optionsRef","useDidUpdate","useEffect","_b","_a","onInterval","prevSeconds","updatedSeconds","pause","resume","toggle","restart","immediately","start","clear","increase","decrease"],"mappings":"uJAQaA,EAAsBC,GAAsB,CACjD,MAAAC,EAAmB,KAAK,KAAKD,CAAS,EACtCE,EAAO,KAAK,MAAMD,GAAoB,GAAK,GAAK,GAAG,EACnDE,EAAQ,KAAK,MAAOF,GAAoB,GAAK,GAAK,KAAQ,GAAK,GAAG,EAClEG,EAAU,KAAK,MAAOH,GAAoB,GAAK,IAAO,EAAE,EAGvD,MAAA,CACL,QAHc,KAAK,MAAMA,EAAmB,EAAE,EAI9C,QAAAG,EACA,MAAAD,EACA,KAAAD,CACF,CACF,EAmFaG,EAAY,IAAIC,IAAkB,CAC7C,MAAMC,EAAiB,KAAK,IAAKD,EAAO,CAAC,GAAK,EAA+B,CAAC,EACxEE,EAAW,OAAOF,EAAO,CAAC,GAAM,SAAWA,EAAO,CAAC,EAAI,CAAE,SAAUA,EAAO,CAAC,CAAE,EAI7E,CAACG,EAAQC,CAAS,EAAIC,WAASJ,EAAiB,KAAMC,GAAA,YAAAA,EAAS,cAAe,GAAK,EACnF,CAACI,EAASC,CAAU,EAAIF,EAAAA,SAASJ,CAAc,EAE/CO,EAAgBC,EAAAA,OAAuC,EACvDC,EAAaD,EAAAA,OAAwB,EAChCC,EAAA,QAAUR,GAAW,CAAC,EAEjCS,EAAAA,aAAa,IAAM,CACjB,GAAIV,GAAkB,EAAG,CACvBG,EAAU,EAAK,EACfG,EAAW,CAAC,EACZ,MAAA,CAGFH,EAAU,EAAI,EACdG,EAAWN,CAAc,CAAA,EACxB,CAACA,CAAc,CAAC,EAEnBW,EAAAA,UAAU,IAAM,SACd,GAAI,CAACT,EAAQ,QAEbU,GAAAC,EAAAJ,EAAW,UAAX,YAAAI,EAAoB,UAApB,MAAAD,EAAA,KAAAC,GACA,MAAMC,EAAa,IAAM,UACZF,GAAAC,EAAAJ,EAAA,UAAA,YAAAI,EAAS,SAAT,MAAAD,EAAA,KAAAC,EAAkBR,GAC7BC,EAAYS,GAAgB,SAC1B,MAAMC,EAAiBD,EAAc,EACrC,OAAIC,IAAmB,IACrBb,EAAU,EAAK,GACfS,GAAAC,EAAAJ,EAAW,UAAX,YAAAI,EAAoB,WAApB,MAAAD,EAAA,KAAAC,IAEKG,CAAA,CACR,CACH,EAEc,OAAAT,EAAA,QAAU,YAAYO,EAAY,GAAI,EAC7C,IAAM,CACX,cAAcP,EAAc,OAAO,CACrC,CAAA,EACC,CAACL,CAAM,CAAC,EAEL,MAAAe,EAAQ,IAAMd,EAAU,EAAK,EAC7Be,EAAS,IAAM,CACfb,GAAW,GACfF,EAAU,EAAI,CAChB,EAEMgB,EAAS,IAAM,CACfd,GAAW,GACfF,EAAU,CAACD,CAAM,CACnB,EAEMkB,EAAU,CAACf,EAAkCgB,EAAc,KAAS,CACxEf,EAAWD,CAAO,EACdgB,KAAuB,EAAI,CACjC,EAEMC,EAAQ,IAAM,CACdtB,GAAkB,IAEtBG,EAAU,EAAI,EACdG,EAAWN,CAAc,EAC3B,EAEMuB,EAAQ,IAAM,CAClBpB,EAAU,EAAK,EACfG,EAAW,CAAC,CACd,EAEMkB,EAAYnB,GAChBC,EAAYS,GAAgBA,EAAcV,CAAO,EAC7CoB,EAAYpB,GAAqC,CACrDC,EAAYS,GAAgB,CAC1B,MAAMC,EAAiBD,EAAcV,EACrC,OAAIW,GAAkB,GACpBb,EAAU,EAAK,EACR,GAEAa,CACT,CACD,CACH,EAEO,MAAA,CACL,GAAGxB,EAAmBa,CAAO,EAC7B,MAAOA,EACP,MAAAY,EACA,OAAAf,EACA,OAAAgB,EACA,OAAAC,EACA,MAAAG,EACA,QAAAF,EACA,MAAAG,EACA,SAAAC,EACA,SAAAC,CACF,CACF"}
1
+ {"version":3,"file":"useTimer.cjs","sources":["../../../../src/hooks/useTimer/useTimer.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\n\nexport type PositiveInteger<Value extends number> = `${Value}` extends `-${any}` | `${any}.${any}`\n ? never\n : Value;\n\nexport const getTimeFromSeconds = (timestamp: number) => {\n const roundedTimestamp = Math.ceil(timestamp);\n const days = Math.floor(roundedTimestamp / (60 * 60 * 24));\n const hours = Math.floor((roundedTimestamp % (60 * 60 * 24)) / (60 * 60));\n const minutes = Math.floor((roundedTimestamp % (60 * 60)) / 60);\n const seconds = Math.floor(roundedTimestamp % 60);\n\n return {\n seconds,\n minutes,\n hours,\n days\n };\n};\n\n/** The use timer options type */\nexport interface UseTimerOptions {\n /** Whether the timer should start automatically */\n immediately?: boolean;\n /** The function to be executed when the timer is expired */\n onExpire?: () => void;\n /** The function to be executed when the timer is started */\n onStart?: () => void;\n /** Callback function to be executed on each tick of the timer */\n onTick?: (seconds: number) => void;\n}\n\n/** The use timer return type */\nexport interface UseTimerReturn {\n /** flag to indicate if timer is active or not */\n active: boolean;\n /** The total count of the timer */\n count: number;\n /** The day count of the timer */\n days: number;\n /** The hour count of the timer */\n hours: number;\n /** The minute count of the timer */\n minutes: number;\n /** The second count of the timer */\n seconds: number;\n /** The function to clear the timer */\n clear: () => void;\n /** The function to decrease the timer */\n decrease: (seconds: PositiveInteger<number>) => void;\n /** The function to increase the timer */\n increase: (seconds: PositiveInteger<number>) => void;\n /** The function to pause the timer */\n pause: () => void;\n /** The function to restart the timer */\n restart: (time: PositiveInteger<number>, immediately?: boolean) => void;\n /** The function to resume the timer */\n resume: () => void;\n /** The function to start the timer */\n start: () => void;\n /** The function to toggle the timer */\n toggle: () => void;\n}\n\nexport interface UseTimer {\n (): UseTimerReturn;\n\n (seconds: PositiveInteger<number>, callback: () => void): UseTimerReturn;\n\n (seconds: PositiveInteger<number>, options?: UseTimerOptions): UseTimerReturn;\n}\n\n/**\n * @name useTimer\n * @description - Hook that creates a timer functionality\n * @category Time\n *\n * @overload\n * @returns {UseTimerReturn} An object containing the timer properties and functions\n *\n * @example\n * const { days, hours, minutes, seconds, toggle, pause, start, restart, resume, active, decrease, increase } = useTimer();\n *\n * @overload\n * @param {number} seconds The seconds value that define for how long the timer will be running\n * @param {() => void} callback The function to be executed once countdown timer is expired\n * @returns {UseTimerReturn} An object containing the timer properties and functions\n *\n * @example\n * const { days, hours, minutes, seconds, toggle, pause, start, restart, resume, active, decrease, increase } = useTimer(1000, () => console.log('ready'));\n *\n * @overload\n * @param {number} seconds The seconds value that define for how long the timer will be running\n * @param {boolean} [options.immediately=true] The flag to decide if timer should start automatically\n * @param {() => void} [options.onExpire] The function to be executed when the timer is expired\n * @param {(timestamp: number) => void} [options.onTick] The function to be executed on each tick of the timer\n * @returns {UseTimerReturn} An object containing the timer properties and functions\n *\n * @example\n * const { days, hours, minutes, seconds, toggle, pause, start, restart, resume, active, decrease, increase } = useTimer(1000);\n */\nexport const useTimer = ((...params: any[]) => {\n const initialSeconds = Math.max((params[0] ?? 0) as PositiveInteger<number>, 0);\n const options = (typeof params[1] === 'object' ? params[1] : { onExpire: params[1] }) as\n | UseTimerOptions\n | undefined;\n\n const [active, setActive] = useState(initialSeconds > 0 && (options?.immediately ?? true));\n const [seconds, setSeconds] = useState(initialSeconds);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n const optionsRef = useRef<UseTimerOptions>(options);\n optionsRef.current = options ?? {};\n\n useDidUpdate(() => {\n if (initialSeconds <= 0) {\n setActive(false);\n setSeconds(0);\n return;\n }\n\n setActive(true);\n setSeconds(initialSeconds);\n }, [initialSeconds]);\n\n useEffect(() => {\n if (!active) return;\n\n optionsRef.current?.onStart?.();\n const onInterval = () => {\n optionsRef.current?.onTick?.(seconds);\n setSeconds((prevSeconds) => {\n const updatedSeconds = prevSeconds - 1;\n if (updatedSeconds === 0) {\n setActive(false);\n optionsRef.current?.onExpire?.();\n }\n return updatedSeconds;\n });\n };\n\n intervalIdRef.current = setInterval(onInterval, 1000);\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [active]);\n\n const pause = () => setActive(false);\n const resume = () => {\n if (seconds <= 0) return;\n setActive(true);\n };\n\n const toggle = () => {\n if (seconds <= 0) return;\n setActive(!active);\n };\n\n const restart = (seconds: PositiveInteger<number>, immediately = true) => {\n setSeconds(seconds);\n if (immediately) setActive(true);\n };\n\n const start = () => {\n if (initialSeconds <= 0) return;\n\n setActive(true);\n setSeconds(initialSeconds);\n };\n\n const clear = () => {\n setActive(false);\n setSeconds(0);\n };\n\n const increase = (seconds: PositiveInteger<number>) =>\n setSeconds((prevSeconds) => prevSeconds + seconds);\n const decrease = (seconds: PositiveInteger<number>) => {\n setSeconds((prevSeconds) => {\n const updatedSeconds = prevSeconds - seconds;\n if (updatedSeconds <= 0) {\n setActive(false);\n return 0;\n } else {\n return updatedSeconds;\n }\n });\n };\n\n return {\n ...getTimeFromSeconds(seconds),\n count: seconds,\n pause,\n active,\n resume,\n toggle,\n start,\n restart,\n clear,\n increase,\n decrease\n };\n}) as UseTimer;\n"],"names":["getTimeFromSeconds","timestamp","roundedTimestamp","days","hours","minutes","useTimer","params","initialSeconds","options","active","setActive","useState","seconds","setSeconds","intervalIdRef","useRef","optionsRef","useDidUpdate","useEffect","_b","_a","onInterval","prevSeconds","updatedSeconds","pause","resume","toggle","restart","immediately","start","clear","increase","decrease"],"mappings":"uJAQaA,EAAsBC,GAAsB,CACjD,MAAAC,EAAmB,KAAK,KAAKD,CAAS,EACtCE,EAAO,KAAK,MAAMD,GAAoB,GAAK,GAAK,GAAG,EACnDE,EAAQ,KAAK,MAAOF,GAAoB,GAAK,GAAK,KAAQ,GAAK,GAAG,EAClEG,EAAU,KAAK,MAAOH,GAAoB,GAAK,IAAO,EAAE,EAGvD,MAAA,CACL,QAHc,KAAK,MAAMA,EAAmB,EAAE,EAI9C,QAAAG,EACA,MAAAD,EACA,KAAAD,CACF,CACF,EAmFaG,EAAY,IAAIC,IAAkB,CAC7C,MAAMC,EAAiB,KAAK,IAAKD,EAAO,CAAC,GAAK,EAA+B,CAAC,EACxEE,EAAW,OAAOF,EAAO,CAAC,GAAM,SAAWA,EAAO,CAAC,EAAI,CAAE,SAAUA,EAAO,CAAC,CAAE,EAI7E,CAACG,EAAQC,CAAS,EAAIC,WAASJ,EAAiB,KAAMC,GAAA,YAAAA,EAAS,cAAe,GAAK,EACnF,CAACI,EAASC,CAAU,EAAIF,EAAAA,SAASJ,CAAc,EAE/CO,EAAgBC,SAAuC,MAAS,EAChEC,EAAaD,SAAwBP,CAAO,EACvCQ,EAAA,QAAUR,GAAW,CAAC,EAEjCS,EAAAA,aAAa,IAAM,CACjB,GAAIV,GAAkB,EAAG,CACvBG,EAAU,EAAK,EACfG,EAAW,CAAC,EACZ,MAAA,CAGFH,EAAU,EAAI,EACdG,EAAWN,CAAc,CAAA,EACxB,CAACA,CAAc,CAAC,EAEnBW,EAAAA,UAAU,IAAM,SACd,GAAI,CAACT,EAAQ,QAEbU,GAAAC,EAAAJ,EAAW,UAAX,YAAAI,EAAoB,UAApB,MAAAD,EAAA,KAAAC,GACA,MAAMC,EAAa,IAAM,UACZF,GAAAC,EAAAJ,EAAA,UAAA,YAAAI,EAAS,SAAT,MAAAD,EAAA,KAAAC,EAAkBR,GAC7BC,EAAYS,GAAgB,SAC1B,MAAMC,EAAiBD,EAAc,EACrC,OAAIC,IAAmB,IACrBb,EAAU,EAAK,GACfS,GAAAC,EAAAJ,EAAW,UAAX,YAAAI,EAAoB,WAApB,MAAAD,EAAA,KAAAC,IAEKG,CAAA,CACR,CACH,EAEc,OAAAT,EAAA,QAAU,YAAYO,EAAY,GAAI,EAC7C,IAAM,CACX,cAAcP,EAAc,OAAO,CACrC,CAAA,EACC,CAACL,CAAM,CAAC,EAEL,MAAAe,EAAQ,IAAMd,EAAU,EAAK,EAC7Be,EAAS,IAAM,CACfb,GAAW,GACfF,EAAU,EAAI,CAChB,EAEMgB,EAAS,IAAM,CACfd,GAAW,GACfF,EAAU,CAACD,CAAM,CACnB,EAEMkB,EAAU,CAACf,EAAkCgB,EAAc,KAAS,CACxEf,EAAWD,CAAO,EACdgB,KAAuB,EAAI,CACjC,EAEMC,EAAQ,IAAM,CACdtB,GAAkB,IAEtBG,EAAU,EAAI,EACdG,EAAWN,CAAc,EAC3B,EAEMuB,EAAQ,IAAM,CAClBpB,EAAU,EAAK,EACfG,EAAW,CAAC,CACd,EAEMkB,EAAYnB,GAChBC,EAAYS,GAAgBA,EAAcV,CAAO,EAC7CoB,EAAYpB,GAAqC,CACrDC,EAAYS,GAAgB,CAC1B,MAAMC,EAAiBD,EAAcV,EACrC,OAAIW,GAAkB,GACpBb,EAAU,EAAK,EACR,GAEAa,CACT,CACD,CACH,EAEO,MAAA,CACL,GAAGxB,EAAmBa,CAAO,EAC7B,MAAOA,EACP,MAAAY,EACA,OAAAf,EACA,OAAAgB,EACA,OAAAC,EACA,MAAAG,EACA,QAAAF,EACA,MAAAG,EACA,SAAAC,EACA,SAAAC,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),l=(c,t=0)=>{const r=typeof navigator<"u"&&"vibrate"in navigator,e=a.useRef(),[f,n]=a.useState(!1),s=(u=c)=>{r&&navigator.vibrate(u)},i=()=>{r&&(navigator.vibrate(0),n(!1),e.current&&clearInterval(e.current))},v=()=>{r&&(n(!1),e.current&&clearInterval(e.current))},o=(u=t)=>{r&&(e.current&&clearInterval(e.current),n(!0),e.current=setInterval(s,u))};return a.useEffect(()=>{if(!(!r||t<=0))return o(t),()=>{i()}},[t,c]),{supported:r,trigger:s,stop:i,active:f,pause:v,resume:o}};exports.useVibrate=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),l=(c,t=0)=>{const r=typeof navigator<"u"&&"vibrate"in navigator,e=a.useRef(void 0),[f,n]=a.useState(!1),i=(u=c)=>{r&&navigator.vibrate(u)},s=()=>{r&&(navigator.vibrate(0),n(!1),e.current&&clearInterval(e.current))},v=()=>{r&&(n(!1),e.current&&clearInterval(e.current))},o=(u=t)=>{r&&(e.current&&clearInterval(e.current),n(!0),e.current=setInterval(i,u))};return a.useEffect(()=>{if(!(!r||t<=0))return o(t),()=>{s()}},[t,c]),{supported:r,trigger:i,stop:s,active:f,pause:v,resume:o}};exports.useVibrate=l;
2
2
  //# sourceMappingURL=useVibrate.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVibrate.cjs","sources":["../../../../src/hooks/useVibrate/useVibrate.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use vibrate pattern type */\nexport type UseVibratePattern = number | number[];\n\n/** The use vibrate return type */\nexport interface UseVibrateReturn {\n /** The support indicator */\n supported: boolean;\n /** The vibrating indicator */\n vibrating: boolean;\n /** The pause function */\n pause: () => void;\n /** The resume function */\n resume: () => void;\n /** The start function */\n start: (interval: number) => void;\n /** The vibrate function */\n trigger: (pattern?: UseVibratePattern) => void;\n}\n\n/**\n * @name useVibrate\n * @description - Hook that provides vibrate api\n * @category Browser\n *\n * @browserapi navigator.vibrate https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate\n *\n * @overload\n * @param {UseVibratePattern} options.pattern The pattern for vibration\n * @param {number} [options.interval=0] Time in milliseconds between vibrations\n * @returns {UseVibrateReturn} An object containing support indicator, start vibration and stop vibration functions\n *\n * @example\n * const { supported, active, vibrate, stop, pause, resume } = useVibrate(1000);\n */\nexport const useVibrate = (pattern: UseVibratePattern, interval: number = 0) => {\n const supported = typeof navigator !== 'undefined' && 'vibrate' in navigator;\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>();\n const [active, setActive] = useState(false);\n\n const trigger = (internalPattern: UseVibratePattern = pattern) => {\n if (!supported) return;\n navigator.vibrate(internalPattern);\n };\n\n const stop = () => {\n if (!supported) return;\n navigator.vibrate(0);\n setActive(false);\n if (intervalIdRef.current) clearInterval(intervalIdRef.current);\n };\n\n const pause = () => {\n if (!supported) return;\n setActive(false);\n if (intervalIdRef.current) clearInterval(intervalIdRef.current);\n };\n\n const resume = (intervalInterval: number = interval) => {\n if (!supported) return;\n if (intervalIdRef.current) clearInterval(intervalIdRef.current);\n setActive(true);\n intervalIdRef.current = setInterval(trigger, intervalInterval);\n };\n\n useEffect(() => {\n if (!supported || interval <= 0) return;\n resume(interval);\n return () => {\n stop();\n };\n }, [interval, pattern]);\n\n return { supported, trigger, stop, active, pause, resume };\n};\n"],"names":["useVibrate","pattern","interval","supported","intervalIdRef","useRef","active","setActive","useState","trigger","internalPattern","stop","pause","resume","intervalInterval","useEffect"],"mappings":"yGAoCaA,EAAa,CAACC,EAA4BC,EAAmB,IAAM,CAC9E,MAAMC,EAAY,OAAO,UAAc,KAAe,YAAa,UAE7DC,EAAgBC,EAAAA,OAAuC,EACvD,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EAEpCC,EAAU,CAACC,EAAqCT,IAAY,CAC3DE,GACL,UAAU,QAAQO,CAAe,CACnC,EAEMC,EAAO,IAAM,CACZR,IACL,UAAU,QAAQ,CAAC,EACnBI,EAAU,EAAK,EACXH,EAAc,SAAuB,cAAAA,EAAc,OAAO,EAChE,EAEMQ,EAAQ,IAAM,CACbT,IACLI,EAAU,EAAK,EACXH,EAAc,SAAuB,cAAAA,EAAc,OAAO,EAChE,EAEMS,EAAS,CAACC,EAA2BZ,IAAa,CACjDC,IACDC,EAAc,SAAuB,cAAAA,EAAc,OAAO,EAC9DG,EAAU,EAAI,EACAH,EAAA,QAAU,YAAYK,EAASK,CAAgB,EAC/D,EAEAC,OAAAA,EAAAA,UAAU,IAAM,CACV,GAAA,GAACZ,GAAaD,GAAY,GAC9B,OAAAW,EAAOX,CAAQ,EACR,IAAM,CACNS,EAAA,CACP,CAAA,EACC,CAACT,EAAUD,CAAO,CAAC,EAEf,CAAE,UAAAE,EAAW,QAAAM,EAAS,KAAAE,EAAM,OAAAL,EAAQ,MAAAM,EAAO,OAAAC,CAAO,CAC3D"}
1
+ {"version":3,"file":"useVibrate.cjs","sources":["../../../../src/hooks/useVibrate/useVibrate.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use vibrate pattern type */\nexport type UseVibratePattern = number | number[];\n\n/** The use vibrate return type */\nexport interface UseVibrateReturn {\n /** The support indicator */\n supported: boolean;\n /** The vibrating indicator */\n vibrating: boolean;\n /** The pause function */\n pause: () => void;\n /** The resume function */\n resume: () => void;\n /** The start function */\n start: (interval: number) => void;\n /** The vibrate function */\n trigger: (pattern?: UseVibratePattern) => void;\n}\n\n/**\n * @name useVibrate\n * @description - Hook that provides vibrate api\n * @category Browser\n *\n * @browserapi navigator.vibrate https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate\n *\n * @overload\n * @param {UseVibratePattern} options.pattern The pattern for vibration\n * @param {number} [options.interval=0] Time in milliseconds between vibrations\n * @returns {UseVibrateReturn} An object containing support indicator, start vibration and stop vibration functions\n *\n * @example\n * const { supported, active, vibrate, stop, pause, resume } = useVibrate(1000);\n */\nexport const useVibrate = (pattern: UseVibratePattern, interval: number = 0) => {\n const supported = typeof navigator !== 'undefined' && 'vibrate' in navigator;\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n const [active, setActive] = useState(false);\n\n const trigger = (internalPattern: UseVibratePattern = pattern) => {\n if (!supported) return;\n navigator.vibrate(internalPattern);\n };\n\n const stop = () => {\n if (!supported) return;\n navigator.vibrate(0);\n setActive(false);\n if (intervalIdRef.current) clearInterval(intervalIdRef.current);\n };\n\n const pause = () => {\n if (!supported) return;\n setActive(false);\n if (intervalIdRef.current) clearInterval(intervalIdRef.current);\n };\n\n const resume = (intervalInterval: number = interval) => {\n if (!supported) return;\n if (intervalIdRef.current) clearInterval(intervalIdRef.current);\n setActive(true);\n intervalIdRef.current = setInterval(trigger, intervalInterval);\n };\n\n useEffect(() => {\n if (!supported || interval <= 0) return;\n resume(interval);\n return () => {\n stop();\n };\n }, [interval, pattern]);\n\n return { supported, trigger, stop, active, pause, resume };\n};\n"],"names":["useVibrate","pattern","interval","supported","intervalIdRef","useRef","active","setActive","useState","trigger","internalPattern","stop","pause","resume","intervalInterval","useEffect"],"mappings":"yGAoCaA,EAAa,CAACC,EAA4BC,EAAmB,IAAM,CAC9E,MAAMC,EAAY,OAAO,UAAc,KAAe,YAAa,UAE7DC,EAAgBC,SAAuC,MAAS,EAChE,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EAEpCC,EAAU,CAACC,EAAqCT,IAAY,CAC3DE,GACL,UAAU,QAAQO,CAAe,CACnC,EAEMC,EAAO,IAAM,CACZR,IACL,UAAU,QAAQ,CAAC,EACnBI,EAAU,EAAK,EACXH,EAAc,SAAuB,cAAAA,EAAc,OAAO,EAChE,EAEMQ,EAAQ,IAAM,CACbT,IACLI,EAAU,EAAK,EACXH,EAAc,SAAuB,cAAAA,EAAc,OAAO,EAChE,EAEMS,EAAS,CAACC,EAA2BZ,IAAa,CACjDC,IACDC,EAAc,SAAuB,cAAAA,EAAc,OAAO,EAC9DG,EAAU,EAAI,EACAH,EAAA,QAAU,YAAYK,EAASK,CAAgB,EAC/D,EAEAC,OAAAA,EAAAA,UAAU,IAAM,CACV,GAAA,GAACZ,GAAaD,GAAY,GAC9B,OAAAW,EAAOX,CAAQ,EACR,IAAM,CACNS,EAAA,CACP,CAAA,EACC,CAACT,EAAUD,CAAO,CAAC,EAEf,CAAE,UAAAE,EAAW,QAAAM,EAAS,KAAAE,EAAM,OAAAL,EAAQ,MAAAM,EAAO,OAAAC,CAAO,CAC3D"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),v=e=>{const r=typeof navigator<"u"&&"wakeLock"in navigator,[l,c]=i.useState(!1),t=i.useRef(),d=(e==null?void 0:e.immediately)??!1,n=(e==null?void 0:e.type)??"screen",s=async a=>{r&&(t.current=await navigator.wakeLock.request(a??(e==null?void 0:e.type)),t.current.addEventListener("release",()=>{c(!1),t.current=void 0}),c(!0))},u=async()=>{!r||!t.current||(await t.current.release(),t.current=void 0,c(!1))};return i.useEffect(()=>{if(!r||!d||document.visibilityState!=="visible"||n!=="screen")return;const a=async()=>{await u(),await s(n)};return document.addEventListener("visibilitychange",a),()=>{document.removeEventListener("visibilitychange",a)}},[n]),{supported:r,active:l,request:s,release:u}};exports.useWakeLock=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),v=e=>{const r=typeof navigator<"u"&&"wakeLock"in navigator,[l,c]=i.useState(!1),t=i.useRef(void 0),d=(e==null?void 0:e.immediately)??!1,n=(e==null?void 0:e.type)??"screen",s=async a=>{r&&(t.current=await navigator.wakeLock.request(a??(e==null?void 0:e.type)),t.current.addEventListener("release",()=>{c(!1),t.current=void 0}),c(!0))},u=async()=>{!r||!t.current||(await t.current.release(),t.current=void 0,c(!1))};return i.useEffect(()=>{if(!r||!d||document.visibilityState!=="visible"||n!=="screen")return;const a=async()=>{await u(),await s(n)};return document.addEventListener("visibilitychange",a),()=>{document.removeEventListener("visibilitychange",a)}},[n]),{supported:r,active:l,request:s,release:u}};exports.useWakeLock=v;
2
2
  //# sourceMappingURL=useWakeLock.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWakeLock.cjs","sources":["../../../../src/hooks/useWakeLock/useWakeLock.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use wake lock options type */\nexport interface UseWakeLockOptions {\n /** Determines if the wake lock should be automatically reacquired when the document becomes visible. */\n immediately?: boolean;\n /** A string specifying the screen wake lock type. */\n type?: WakeLockType;\n}\n\n/** The use wake lock return type */\nexport interface UseWakeLockReturn {\n /** Indicates if the wake lock is currently active. */\n active: boolean;\n /** Indicates if the Wake Lock API is supported in the current environment. */\n supported: boolean;\n /** Function to release the wake lock. */\n release: () => Promise<void>;\n /** Function to request the wake lock. */\n request: () => Promise<void>;\n}\n\n/**\n * @name useWakeLock\n * @description - Hook that provides a wake lock functionality\n * @category Browser\n *\n * @browserapi navigator.wakeLock https://developer.mozilla.org/en-US/docs/Web/API/WakeLock\n *\n * @param {immediately} [options] Configuration options for the hook.\n * @returns {UseWakeLockReturn} An object containing the wake lock state and control methods.\n *\n * @example\n * const { supported, active, request, release } = useWakeLock();\n */\nexport const useWakeLock = (options?: UseWakeLockOptions): UseWakeLockReturn => {\n const supported = typeof navigator !== 'undefined' && 'wakeLock' in navigator;\n\n const [active, setActive] = useState(false);\n const sentinel = useRef<WakeLockSentinel>();\n\n const immediately = options?.immediately ?? false;\n const type = options?.type ?? 'screen';\n\n const request = async (type?: WakeLockType) => {\n if (!supported) return;\n\n sentinel.current = await navigator.wakeLock.request(type ?? options?.type);\n sentinel.current.addEventListener('release', () => {\n setActive(false);\n sentinel.current = undefined;\n });\n\n setActive(true);\n };\n\n const release = async () => {\n if (!supported || !sentinel.current) return;\n\n await sentinel.current.release();\n sentinel.current = undefined;\n setActive(false);\n };\n\n useEffect(() => {\n if (!supported || !immediately || document.visibilityState !== 'visible' || type !== 'screen')\n return;\n\n const onVisibilityChange = async () => {\n await release();\n await request(type);\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, [type]);\n\n return { supported, active, request, release };\n};\n"],"names":["useWakeLock","options","supported","active","setActive","useState","sentinel","useRef","immediately","type","request","release","useEffect","onVisibilityChange"],"mappings":"yGAmCaA,EAAeC,GAAoD,CAC9E,MAAMC,EAAY,OAAO,UAAc,KAAe,aAAc,UAE9D,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EACpCC,EAAWC,EAAAA,OAAyB,EAEpCC,GAAcP,GAAA,YAAAA,EAAS,cAAe,GACtCQ,GAAOR,GAAA,YAAAA,EAAS,OAAQ,SAExBS,EAAU,MAAOD,GAAwB,CACxCP,IAELI,EAAS,QAAU,MAAM,UAAU,SAAS,QAAQG,IAAQR,GAAA,YAAAA,EAAS,KAAI,EAChEK,EAAA,QAAQ,iBAAiB,UAAW,IAAM,CACjDF,EAAU,EAAK,EACfE,EAAS,QAAU,MAAA,CACpB,EAEDF,EAAU,EAAI,EAChB,EAEMO,EAAU,SAAY,CACtB,CAACT,GAAa,CAACI,EAAS,UAEtB,MAAAA,EAAS,QAAQ,QAAQ,EAC/BA,EAAS,QAAU,OACnBF,EAAU,EAAK,EACjB,EAEAQ,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACV,GAAa,CAACM,GAAe,SAAS,kBAAoB,WAAaC,IAAS,SACnF,OAEF,MAAMI,EAAqB,SAAY,CACrC,MAAMF,EAAQ,EACd,MAAMD,EAAQD,CAAI,CACpB,EAES,gBAAA,iBAAiB,mBAAoBI,CAAkB,EACzD,IAAM,CACF,SAAA,oBAAoB,mBAAoBA,CAAkB,CACrE,CAAA,EACC,CAACJ,CAAI,CAAC,EAEF,CAAE,UAAAP,EAAW,OAAAC,EAAQ,QAAAO,EAAS,QAAAC,CAAQ,CAC/C"}
1
+ {"version":3,"file":"useWakeLock.cjs","sources":["../../../../src/hooks/useWakeLock/useWakeLock.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use wake lock options type */\nexport interface UseWakeLockOptions {\n /** Determines if the wake lock should be automatically reacquired when the document becomes visible. */\n immediately?: boolean;\n /** A string specifying the screen wake lock type. */\n type?: WakeLockType;\n}\n\n/** The use wake lock return type */\nexport interface UseWakeLockReturn {\n /** Indicates if the wake lock is currently active. */\n active: boolean;\n /** Indicates if the Wake Lock API is supported in the current environment. */\n supported: boolean;\n /** Function to release the wake lock. */\n release: () => Promise<void>;\n /** Function to request the wake lock. */\n request: () => Promise<void>;\n}\n\n/**\n * @name useWakeLock\n * @description - Hook that provides a wake lock functionality\n * @category Browser\n *\n * @browserapi navigator.wakeLock https://developer.mozilla.org/en-US/docs/Web/API/WakeLock\n *\n * @param {immediately} [options] Configuration options for the hook.\n * @returns {UseWakeLockReturn} An object containing the wake lock state and control methods.\n *\n * @example\n * const { supported, active, request, release } = useWakeLock();\n */\nexport const useWakeLock = (options?: UseWakeLockOptions): UseWakeLockReturn => {\n const supported = typeof navigator !== 'undefined' && 'wakeLock' in navigator;\n\n const [active, setActive] = useState(false);\n const sentinel = useRef<WakeLockSentinel>(undefined);\n\n const immediately = options?.immediately ?? false;\n const type = options?.type ?? 'screen';\n\n const request = async (type?: WakeLockType) => {\n if (!supported) return;\n\n sentinel.current = await navigator.wakeLock.request(type ?? options?.type);\n sentinel.current.addEventListener('release', () => {\n setActive(false);\n sentinel.current = undefined;\n });\n\n setActive(true);\n };\n\n const release = async () => {\n if (!supported || !sentinel.current) return;\n\n await sentinel.current.release();\n sentinel.current = undefined;\n setActive(false);\n };\n\n useEffect(() => {\n if (!supported || !immediately || document.visibilityState !== 'visible' || type !== 'screen')\n return;\n\n const onVisibilityChange = async () => {\n await release();\n await request(type);\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, [type]);\n\n return { supported, active, request, release };\n};\n"],"names":["useWakeLock","options","supported","active","setActive","useState","sentinel","useRef","immediately","type","request","release","useEffect","onVisibilityChange"],"mappings":"yGAmCaA,EAAeC,GAAoD,CAC9E,MAAMC,EAAY,OAAO,UAAc,KAAe,aAAc,UAE9D,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EACpCC,EAAWC,SAAyB,MAAS,EAE7CC,GAAcP,GAAA,YAAAA,EAAS,cAAe,GACtCQ,GAAOR,GAAA,YAAAA,EAAS,OAAQ,SAExBS,EAAU,MAAOD,GAAwB,CACxCP,IAELI,EAAS,QAAU,MAAM,UAAU,SAAS,QAAQG,IAAQR,GAAA,YAAAA,EAAS,KAAI,EAChEK,EAAA,QAAQ,iBAAiB,UAAW,IAAM,CACjDF,EAAU,EAAK,EACfE,EAAS,QAAU,MAAA,CACpB,EAEDF,EAAU,EAAI,EAChB,EAEMO,EAAU,SAAY,CACtB,CAACT,GAAa,CAACI,EAAS,UAEtB,MAAAA,EAAS,QAAQ,QAAQ,EAC/BA,EAAS,QAAU,OACnBF,EAAU,EAAK,EACjB,EAEAQ,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACV,GAAa,CAACM,GAAe,SAAS,kBAAoB,WAAaC,IAAS,SACnF,OAEF,MAAMI,EAAqB,SAAY,CACrC,MAAMF,EAAQ,EACd,MAAMD,EAAQD,CAAI,CACpB,EAES,gBAAA,iBAAiB,mBAAoBI,CAAkB,EACzD,IAAM,CACF,SAAA,oBAAoB,mBAAoBA,CAAkB,CACrE,CAAA,EACC,CAACJ,CAAI,CAAC,EAEF,CAAE,UAAAP,EAAW,OAAAC,EAAQ,QAAAO,EAAS,QAAAC,CAAQ,CAC/C"}