@siberiacancode/reactuse 0.0.114 → 0.0.116

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 (30) hide show
  1. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
  2. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  3. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +2 -0
  4. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -0
  5. package/dist/cjs/hooks/useLongPress/useLongPress.cjs +1 -1
  6. package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
  7. package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
  8. package/dist/cjs/hooks/useParallax/useParallax.cjs +1 -1
  9. package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
  10. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
  11. package/dist/cjs/index.cjs +1 -1
  12. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
  13. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
  14. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +29 -0
  15. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -0
  16. package/dist/esm/hooks/useLongPress/useLongPress.mjs +30 -17
  17. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  18. package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
  19. package/dist/esm/hooks/useParallax/useParallax.mjs +90 -85
  20. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  21. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
  22. package/dist/esm/index.mjs +253 -251
  23. package/dist/esm/index.mjs.map +1 -1
  24. package/dist/types/hooks/index.d.ts +1 -0
  25. package/dist/types/hooks/useActiveElement/useActiveElement.d.ts +2 -0
  26. package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +1 -1
  27. package/dist/types/hooks/useDoubleClick/useDoubleClick.d.ts +37 -0
  28. package/dist/types/hooks/useLongPress/useLongPress.d.ts +27 -25
  29. package/dist/types/hooks/useWindowFocus/useWindowFocus.d.ts +2 -0
  30. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveElement.cjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":"yGAYaA,EAAmB,IAAyC,CACvE,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAA+B,IAAI,EAE7EC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAwB,IAC5BH,EAAiB,+BAAU,aAAqC,EAE3D,cAAA,iBAAiB,QAASG,EAAuB,EAAI,EACrD,OAAA,iBAAiB,OAAQA,EAAuB,EAAI,EAEpD,IAAM,CACJ,OAAA,oBAAoB,QAASA,EAAuB,EAAI,EACxD,OAAA,oBAAoB,OAAQA,EAAuB,EAAI,CAChE,CAAA,CACD,EAEDD,EAAAA,UAAU,IAAM,CACd,MAAME,EAAW,IAAI,iBAAkBC,GAAc,CAEhDA,EAAA,OAAQC,GAAaA,EAAS,aAAa,MAAM,EACjD,IAAKA,GAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAASC,GAAS,CACjBP,EAAkBQ,GACZD,IAASC,EAA0B,SAAS,cACzCA,CACR,CAAA,CACF,CAAA,CACJ,EAED,OAAAJ,EAAS,QAAQ,SAAU,CACzB,UAAW,GACX,QAAS,EAAA,CACV,EAEM,IAAM,CACXA,EAAS,WAAW,CACtB,CACF,EAAG,EAAE,EAEEL,CACT"}
1
+ {"version":3,"file":"useActiveElement.cjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":"yGAcaA,EAAmB,IAAyC,CACvE,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAA+B,IAAI,EAE7EC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAwB,IAC5BH,EAAiB,+BAAU,aAAqC,EAE3D,cAAA,iBAAiB,QAASG,EAAuB,EAAI,EACrD,OAAA,iBAAiB,OAAQA,EAAuB,EAAI,EAEpD,IAAM,CACJ,OAAA,oBAAoB,QAASA,EAAuB,EAAI,EACxD,OAAA,oBAAoB,OAAQA,EAAuB,EAAI,CAChE,CAAA,CACD,EAEDD,EAAAA,UAAU,IAAM,CACd,MAAME,EAAW,IAAI,iBAAkBC,GAAc,CAEhDA,EAAA,OAAQC,GAAaA,EAAS,aAAa,MAAM,EACjD,IAAKA,GAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAASC,GAAS,CACjBP,EAAkBQ,GACZD,IAASC,EAA0B,SAAS,cACzCA,CACR,CAAA,CACF,CAAA,CACJ,EAED,OAAAJ,EAAS,QAAQ,SAAU,CACzB,UAAW,GACX,QAAS,EAAA,CACV,EAEM,IAAM,CACXA,EAAS,WAAW,CACtB,CACF,EAAG,EAAE,EAEEL,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClickOutside.cjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.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 interface UseClickOutside {\n (target: HookTarget, callback: (event: Event) => void): void;\n\n <Target extends Element>(callback: (event: Event) => void, target?: never): StateRef<Target>;\n}\n\n/**\n * @name useClickOutside\n * @description - Hook to handle click events outside the specified target element(s)\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element(s) to detect outside clicks for\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {void}\n *\n * @example\n * useClickOutside(ref, () => console.log('click outside'));\n *\n * @overload\n * @template Target The target element(s)\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {(node: Target) => void} A React ref to attach to the target element\n *\n * @example\n * const ref = `useClickOutside`<HTMLDivElement>(() => console.log('click outside'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}\n */\nexport const useClickOutside = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (params[1] ? params[1] : params[0]) as (event: Event) => void;\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onClick = (event: Event) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (element && !element.contains(event.target as Node)) {\n internalCallbackRef.current(event);\n }\n };\n\n document.addEventListener('click', onClick);\n\n return () => {\n document.removeEventListener('click', onClick);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseClickOutside;\n"],"names":["useClickOutside","params","target","isTarget","callback","internalRef","useRefState","internalCallbackRef","useRef","useEffect","onClick","event","element","getElement"],"mappings":"mPAuCaA,EAAmB,IAAIC,IAAkB,CAC9C,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYH,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAE5CI,EAAcC,EAAAA,YAAqB,EACnCC,EAAsBC,SAAOJ,CAAQ,EAoB3C,GAnBAG,EAAoB,QAAUH,EAE9BK,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,GAAU,CAACG,EAAY,MAAO,OAC7B,MAAAK,EAAWC,GAAiB,CAChC,MAAMC,EAAWV,EAASW,EAAAA,WAAWX,CAAM,EAAIG,EAAY,QAEvDO,GAAW,CAACA,EAAQ,SAASD,EAAM,MAAc,GACnDJ,EAAoB,QAAQI,CAAK,CAErC,EAES,gBAAA,iBAAiB,QAASD,CAAO,EAEnC,IAAM,CACF,SAAA,oBAAoB,QAASA,CAAO,CAC/C,CACC,EAAA,CAACR,EAAQG,EAAY,KAAK,CAAC,EAE1B,CAAAH,EACG,OAAAG,CACT"}
1
+ {"version":3,"file":"useClickOutside.cjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.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 interface UseClickOutside {\n (target: HookTarget, callback: (event: Event) => void): void;\n\n <Target extends Element>(callback: (event: Event) => void, target?: never): StateRef<Target>;\n}\n\n/**\n * @name useClickOutside\n * @description - Hook to handle click events outside the specified target element(s)\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element(s) to detect outside clicks for\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {void}\n *\n * @example\n * useClickOutside(ref, () => console.log('click outside'));\n *\n * @overload\n * @template Target The target element(s)\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {(node: Target) => void} A React ref to attach to the target element\n *\n * @example\n * const ref = useClickOutside<HTMLDivElement>(() => console.log('click outside'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}\n */\nexport const useClickOutside = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (params[1] ? params[1] : params[0]) as (event: Event) => void;\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onClick = (event: Event) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (element && !element.contains(event.target as Node)) {\n internalCallbackRef.current(event);\n }\n };\n\n document.addEventListener('click', onClick);\n\n return () => {\n document.removeEventListener('click', onClick);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseClickOutside;\n"],"names":["useClickOutside","params","target","isTarget","callback","internalRef","useRefState","internalCallbackRef","useRef","useEffect","onClick","event","element","getElement"],"mappings":"mPAuCaA,EAAmB,IAAIC,IAAkB,CAC9C,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYH,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAE5CI,EAAcC,EAAAA,YAAqB,EACnCC,EAAsBC,SAAOJ,CAAQ,EAoB3C,GAnBAG,EAAoB,QAAUH,EAE9BK,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,GAAU,CAACG,EAAY,MAAO,OAC7B,MAAAK,EAAWC,GAAiB,CAChC,MAAMC,EAAWV,EAASW,EAAAA,WAAWX,CAAM,EAAIG,EAAY,QAEvDO,GAAW,CAACA,EAAQ,SAASD,EAAM,MAAc,GACnDJ,EAAoB,QAAQI,CAAK,CAErC,EAES,gBAAA,iBAAiB,QAASD,CAAO,EAEnC,IAAM,CACF,SAAA,oBAAoB,QAASA,CAAO,CAC/C,CACC,EAAA,CAACR,EAAQG,EAAY,KAAK,CAAC,EAE1B,CAAAH,EACG,OAAAG,CACT"}
@@ -0,0 +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;
2
+ //# sourceMappingURL=useDoubleClick.cjs.map
@@ -0,0 +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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),L=400,P=(g,e)=>{const[f,s]=l.useState(!1),u=l.useRef(),a=l.useRef(!1),t=r=>{var c;(c=e==null?void 0:e.onStart)==null||c.call(e,r),a.current=!0,u.current=setTimeout(()=>{g(r),s(!0)},(e==null?void 0:e.threshold)??L)},d=r=>{var c,T;f?(c=e==null?void 0:e.onFinish)==null||c.call(e,r):a.current&&((T=e==null?void 0:e.onCancel)==null||T.call(e,r)),s(!1),a.current=!1,u.current&&clearTimeout(u.current)};return[{onMouseDown:t,onTouchStart:t,onMouseUp:d,onTouchEnd:d},f]};exports.useLongPress=P;
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;
2
2
  //# sourceMappingURL=useLongPress.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLongPress.cjs","sources":["../../../../src/hooks/useLongPress/useLongPress.ts"],"sourcesContent":["import type { MouseEventHandler, RefObject, TouchEventHandler } from 'react';\n\nimport { useRef, useState } from 'react';\n\n// * The use long press target type */\nexport type UseLongPressTarget = (() => Element) | Element | RefObject<Element | null | undefined>;\n\nexport type LongPressReactEvents<Target extends Element = Element> =\n | MouseEventHandler<Target>\n | TouchEventHandler<Target>;\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: LongPressReactEvents) => void;\n // * The callback function to be invoked on long press end\n onFinish?: (event: LongPressReactEvents) => void;\n // * The callback function to be invoked on long press start\n onStart?: (event: LongPressReactEvents) => void;\n}\n\n// * The use long press bind type */\nexport interface UseLongPressBind {\n /** The callback function to be invoked on mouse down */\n onMouseDown: MouseEventHandler<Element>;\n /** The callback function to be invoked on mouse up */\n onMouseUp: MouseEventHandler<Element>;\n /** The callback function to be invoked on touch end */\n onTouchEnd: TouchEventHandler<Element>;\n /** The callback function to be invoked on touch start */\n onTouchStart: TouchEventHandler<Element>;\n}\n\n// * The use long press return type */\nexport type UseLongPressReturn = [UseLongPressBind, boolean];\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 * @template Target The target element\n * @param {Target} target The target element to be long pressed\n * @param {(event: Event) => void} callback The callback function to be invoked on long press\n * @param {number} [options.threshold=400] The threshold time in milliseconds\n * @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start\n * @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish\n * @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel\n * @returns {UseLongPressReturn<Target>} The ref of the target element\n *\n * @example\n * const [bind, longPressing] = useLongPress(() => console.log('callback'));\n */\nexport const useLongPress = (\n callback: (event: LongPressReactEvents) => void,\n options?: UseLongPressOptions\n): UseLongPressReturn => {\n const [isLongPressActive, setIsLongPressActive] = useState(false);\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const isPressed = useRef(false);\n\n const start = (event: LongPressReactEvents) => {\n options?.onStart?.(event);\n\n isPressed.current = true;\n timeoutIdRef.current = setTimeout(() => {\n callback(event);\n setIsLongPressActive(true);\n }, options?.threshold ?? DEFAULT_THRESHOLD_TIME);\n };\n\n const cancel = (event: LongPressReactEvents) => {\n if (isLongPressActive) {\n options?.onFinish?.(event);\n } else if (isPressed.current) {\n options?.onCancel?.(event);\n }\n\n setIsLongPressActive(false);\n isPressed.current = false;\n\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n\n const bind = {\n onMouseDown: start,\n onTouchStart: start,\n onMouseUp: cancel,\n onTouchEnd: cancel\n } as unknown as UseLongPressBind;\n\n return [bind, isLongPressActive];\n};\n"],"names":["DEFAULT_THRESHOLD_TIME","useLongPress","callback","options","isLongPressActive","setIsLongPressActive","useState","timeoutIdRef","useRef","isPressed","start","event","_a","cancel","_b"],"mappings":"yGAsCMA,EAAyB,IAmBlBC,EAAe,CAC1BC,EACAC,IACuB,CACvB,KAAM,CAACC,EAAmBC,CAAoB,EAAIC,EAAAA,SAAS,EAAK,EAC1DC,EAAeC,EAAAA,OAAsC,EACrDC,EAAYD,SAAO,EAAK,EAExBE,EAASC,GAAgC,QAC7CC,EAAAT,GAAA,YAAAA,EAAS,UAAT,MAAAS,EAAA,KAAAT,EAAmBQ,GAEnBF,EAAU,QAAU,GACPF,EAAA,QAAU,WAAW,IAAM,CACtCL,EAASS,CAAK,EACdN,EAAqB,EAAI,CAAA,GACxBF,GAAA,YAAAA,EAAS,YAAaH,CAAsB,CACjD,EAEMa,EAAUF,GAAgC,SAC1CP,GACFQ,EAAAT,GAAA,YAAAA,EAAS,WAAT,MAAAS,EAAA,KAAAT,EAAoBQ,GACXF,EAAU,WACnBK,EAAAX,GAAA,YAAAA,EAAS,WAAT,MAAAW,EAAA,KAAAX,EAAoBQ,IAGtBN,EAAqB,EAAK,EAC1BI,EAAU,QAAU,GAEhBF,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,EASO,MAAA,CAPM,CACX,YAAaG,EACb,aAAcA,EACd,UAAWG,EACX,WAAYA,CACd,EAEcT,CAAiB,CACjC"}
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 +1 @@
1
- {"version":3,"file":"useMouse.cjs","sources":["../../../../src/hooks/useMouse/useMouse.ts"],"sourcesContent":["import { useEffect, 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 mouse return type */\nexport interface UseMouseReturn {\n /** The current element */\n element?: Element;\n /** The current element position x */\n elementPositionX: number;\n /** The current element position y */\n elementPositionY: number;\n /** The current element x position */\n elementX: number;\n /** The current element y position */\n elementY: number;\n /** The current mouse x position */\n x: number;\n /** The current mouse y position */\n y: number;\n}\n\nexport interface UseMouse {\n (target: HookTarget): UseMouseReturn;\n\n <Target extends Element>(target?: never): UseMouseReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useMouse\n * @description - Hook that manages a mouse position\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to manage the mouse position for\n * @returns {UseMouseReturn} An object with the current mouse position\n *\n * @example\n * const { x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse(ref);\n *\n * @overload\n * @template Target The target element\n * @returns {UseMouseReturn & { ref: StateRef<Target> }} An object with the current mouse position and a ref\n *\n * @example\n * const { ref, x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse();\n */\nexport const useMouse = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n\n const [value, setValue] = useState<UseMouseReturn>({\n x: 0,\n y: 0,\n element: undefined,\n elementX: 0,\n elementY: 0,\n elementPositionX: 0,\n elementPositionY: 0\n });\n\n const internalRef = useRefState<Element>();\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onMouseMove = (event: MouseEvent) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const updatedValue = {\n x: event.pageX,\n y: event.pageY\n } as typeof value;\n\n const { left, top } = element.getBoundingClientRect();\n const elementPositionX = left + window.scrollX;\n const elementPositionY = top + window.scrollY;\n const elementX = event.pageX - elementPositionX;\n const elementY = event.pageY - elementPositionY;\n\n updatedValue.element = element;\n updatedValue.elementX = elementX;\n updatedValue.elementY = elementY;\n updatedValue.elementPositionX = elementPositionX;\n updatedValue.elementPositionY = elementPositionY;\n\n setValue((prevValue) => ({\n ...prevValue,\n ...updatedValue\n }));\n };\n\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [internalRef.state, target]);\n\n if (target) return value;\n return {\n ref: internalRef,\n ...value\n };\n}) as UseMouse;\n"],"names":["useMouse","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","onMouseMove","event","element","getElement","updatedValue","left","top","elementPositionX","elementPositionY","elementX","elementY","prevValue"],"mappings":"mPAqDaA,EAAY,IAAIC,IAAkB,CACvC,MAAAC,EAASC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE3C,CAACG,EAAOC,CAAQ,EAAIC,WAAyB,CACjD,EAAG,EACH,EAAG,EACH,QAAS,OACT,SAAU,EACV,SAAU,EACV,iBAAkB,EAClB,iBAAkB,CAAA,CACnB,EAEKC,EAAcC,EAAAA,YAAqB,EAqCzC,OAnCAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,GAAU,CAACK,EAAY,MAAO,OAC7B,MAAAG,EAAeC,GAAsB,CACzC,MAAMC,EAAWV,EAASW,EAAAA,WAAWX,CAAM,EAAIK,EAAY,QAC3D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAe,CACnB,EAAGH,EAAM,MACT,EAAGA,EAAM,KACX,EAEM,CAAE,KAAAI,EAAM,IAAAC,GAAQJ,EAAQ,sBAAsB,EAC9CK,EAAmBF,EAAO,OAAO,QACjCG,EAAmBF,EAAM,OAAO,QAChCG,EAAWR,EAAM,MAAQM,EACzBG,EAAWT,EAAM,MAAQO,EAE/BJ,EAAa,QAAUF,EACvBE,EAAa,SAAWK,EACxBL,EAAa,SAAWM,EACxBN,EAAa,iBAAmBG,EAChCH,EAAa,iBAAmBI,EAEhCb,EAAUgB,IAAe,CACvB,GAAGA,EACH,GAAGP,CAAA,EACH,CACJ,EAES,gBAAA,iBAAiB,YAAaJ,CAAW,EAC3C,IAAM,CACF,SAAA,oBAAoB,YAAaA,CAAW,CACvD,CACC,EAAA,CAACH,EAAY,MAAOL,CAAM,CAAC,EAE1BA,EAAeE,EACZ,CACL,IAAKG,EACL,GAAGH,CACL,CACF"}
1
+ {"version":3,"file":"useMouse.cjs","sources":["../../../../src/hooks/useMouse/useMouse.ts"],"sourcesContent":["import { useEffect, 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 mouse return type */\nexport interface UseMouseReturn {\n /** The current element */\n element?: Element;\n /** The current element position x */\n elementPositionX: number;\n /** The current element position y */\n elementPositionY: number;\n /** The current element x position */\n elementX: number;\n /** The current element y position */\n elementY: number;\n /** The current mouse x position */\n x: number;\n /** The current mouse y position */\n y: number;\n}\n\nexport interface UseMouse {\n (target: HookTarget): UseMouseReturn;\n\n <Target extends Element>(target?: never): UseMouseReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useMouse\n * @description - Hook that manages a mouse position\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to manage the mouse position for\n * @returns {UseMouseReturn} An object with the current mouse position\n *\n * @example\n * const { x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse(ref);\n *\n * @overload\n * @template Target The target element\n * @returns {UseMouseReturn & { ref: StateRef<Target> }} An object with the current mouse position and a ref\n *\n * @example\n * const { ref, x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse();\n */\nexport const useMouse = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n\n const [value, setValue] = useState<UseMouseReturn>({\n x: 0,\n y: 0,\n element: undefined,\n elementX: 0,\n elementY: 0,\n elementPositionX: 0,\n elementPositionY: 0\n });\n\n const internalRef = useRefState<Element>();\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const onMouseMove = (event: MouseEvent) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const updatedValue = {\n x: event.pageX,\n y: event.pageY\n } as typeof value;\n\n const { left, top } = element.getBoundingClientRect();\n const elementPositionX = left + window.scrollX;\n const elementPositionY = top + window.scrollY;\n const elementX = event.pageX - elementPositionX;\n const elementY = event.pageY - elementPositionY;\n\n updatedValue.element = element;\n updatedValue.elementX = elementX;\n updatedValue.elementY = elementY;\n updatedValue.elementPositionX = elementPositionX;\n updatedValue.elementPositionY = elementPositionY;\n\n setValue((prevValue) => ({\n ...prevValue,\n ...updatedValue\n }));\n };\n\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [internalRef.state, target]);\n\n if (target) return value;\n return {\n ref: internalRef,\n ...value\n };\n}) as UseMouse;\n"],"names":["useMouse","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","onMouseMove","event","element","getElement","updatedValue","left","top","elementPositionX","elementPositionY","elementX","elementY","prevValue"],"mappings":"mPAqDaA,EAAY,IAAIC,IAAkB,CACvC,MAAAC,EAASC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE3C,CAACG,EAAOC,CAAQ,EAAIC,WAAyB,CACjD,EAAG,EACH,EAAG,EACH,QAAS,OACT,SAAU,EACV,SAAU,EACV,iBAAkB,EAClB,iBAAkB,CAAA,CACnB,EAEKC,EAAcC,EAAAA,YAAqB,EAsCzC,OApCAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,GAAU,CAACK,EAAY,MAAO,OAE7B,MAAAG,EAAeC,GAAsB,CACzC,MAAMC,EAAWV,EAASW,EAAAA,WAAWX,CAAM,EAAIK,EAAY,QAC3D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAe,CACnB,EAAGH,EAAM,MACT,EAAGA,EAAM,KACX,EAEM,CAAE,KAAAI,EAAM,IAAAC,GAAQJ,EAAQ,sBAAsB,EAC9CK,EAAmBF,EAAO,OAAO,QACjCG,EAAmBF,EAAM,OAAO,QAChCG,EAAWR,EAAM,MAAQM,EACzBG,EAAWT,EAAM,MAAQO,EAE/BJ,EAAa,QAAUF,EACvBE,EAAa,SAAWK,EACxBL,EAAa,SAAWM,EACxBN,EAAa,iBAAmBG,EAChCH,EAAa,iBAAmBI,EAEhCb,EAAUgB,IAAe,CACvB,GAAGA,EACH,GAAGP,CAAA,EACH,CACJ,EAES,gBAAA,iBAAiB,YAAaJ,CAAW,EAC3C,IAAM,CACF,SAAA,oBAAoB,YAAaA,CAAW,CACvD,CACC,EAAA,CAACH,EAAY,MAAOL,CAAM,CAAC,EAE1BA,EAAeE,EACZ,CACL,IAAKG,EACL,GAAGH,CACL,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),T=require("../useDeviceOrientation/useDeviceOrientation.cjs"),k=require("../useMouse/useMouse.cjs"),R=require("../useRefState/useRefState.cjs"),S=require("../useScreenOrientation/useScreenOrientation.cjs"),q=require("../../utils/helpers/isTarget.cjs"),j=(...i)=>{const c=q.isTarget(i[0])?i[0]:void 0,m=i[1]?i[1]:i[0],l=R.useRefState(),a=k.useMouse(c??l),o=S.useScreenOrientation(),t=T.useDeviceOrientation(),{deviceOrientationRollAdjust:g=n=>n,deviceOrientationTiltAdjust:b=n=>n,mouseRollAdjust:p=n=>n,mouseTiltAdjust:f=n=>n}=m??{},[v,y]=d.useState({roll:0,tilt:0,source:"mouse"}),s=()=>t.supported&&(t.value.alpha||t.value.gamma)?"deviceOrientation":"mouse",O=()=>{if(s()==="deviceOrientation"){let e;switch(o.value.orientationType){case"landscape-primary":e=t.value.gamma/90;break;case"landscape-secondary":e=-t.value.gamma/90;break;case"portrait-primary":e=-t.value.beta/90;break;case"portrait-secondary":e=t.value.beta/90;break;default:e=-t.value.beta/90}return g(e)}else{if(!a.element)return 0;const e=a.y-a.elementPositionY,r=a.element.getBoundingClientRect().height,u=-(e-r/2)/r;return p(u)}},h=()=>{if(s()==="deviceOrientation"){let e;switch(o.value.orientationType){case"landscape-primary":e=t.value.beta/90;break;case"landscape-secondary":e=-t.value.beta/90;break;case"portrait-primary":e=t.value.gamma/90;break;case"portrait-secondary":e=-t.value.gamma/90;break;default:e=t.value.gamma/90}return b(e)}else{if(!a.element)return 0;const e=a.x-a.elementPositionX,r=a.element.getBoundingClientRect().width,u=(e-r/2)/r;return f(u)}};return d.useEffect(()=>{if(!a.element)return;const n=s(),e=O(),r=h();y({roll:e,source:n,tilt:r})},[o.value.angle,o.value.orientationType,t.value.gamma,t.value.beta,t.value.alpha,t.value.absolute,a.x,a.y,a.element]),c?{value:v}:{ref:l,value:v}};exports.useParallax=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),A=require("../useDeviceOrientation/useDeviceOrientation.cjs"),D=require("../useRefState/useRefState.cjs"),x=require("../useScreenOrientation/useScreenOrientation.cjs"),B=require("../../utils/helpers/isTarget.cjs"),C=require("../../utils/helpers/getElement.cjs"),M=(...a)=>{const o=B.isTarget(a[0])?a[0]:void 0,p=a[1]?a[1]:a[0],i=D.useRefState(),s=x.useScreenOrientation(),e=A.useDeviceOrientation(),{deviceOrientationRollAdjust:b=n=>n,deviceOrientationTiltAdjust:f=n=>n,mouseRollAdjust:y=n=>n,mouseTiltAdjust:O=n=>n}=p??{},[l,h]=g.useState({roll:0,tilt:0,source:"mouse"});return g.useEffect(()=>{if(!o&&!i.state)return;const n=o?C.getElement(o):i.current;if(!n)return;console.log("element",n);const v=d=>{const{left:R,top:T}=n.getBoundingClientRect(),k=R+window.scrollX,w=T+window.scrollY,c=()=>e.supported&&(e.value.alpha||e.value.gamma)?"deviceOrientation":"mouse",S=()=>{if(c()==="deviceOrientation"){let t;switch(s.value.orientationType){case"landscape-primary":t=e.value.gamma/90;break;case"landscape-secondary":t=-e.value.gamma/90;break;case"portrait-primary":t=-e.value.beta/90;break;case"portrait-secondary":t=e.value.beta/90;break;default:t=-e.value.beta/90}return b(t)}else{const t=d.pageY-w,r=n.getBoundingClientRect().height,u=-(t-r/2)/r;return y(u)}},q=()=>{if(c()==="deviceOrientation"){let t;switch(s.value.orientationType){case"landscape-primary":t=e.value.beta/90;break;case"landscape-secondary":t=-e.value.beta/90;break;case"portrait-primary":t=e.value.gamma/90;break;case"portrait-secondary":t=-e.value.gamma/90;break;default:t=e.value.gamma/90}return f(t)}else{const t=d.pageX-k,r=n.getBoundingClientRect().width,u=(t-r/2)/r;return O(u)}},j=c(),E=S(),P=q();h({roll:E,source:j,tilt:P})};return document.addEventListener("mousemove",v),()=>{document.removeEventListener("mousemove",v)}},[o,i.state,s.value.angle,s.value.orientationType,e.value.gamma,e.value.beta,e.value.alpha,e.value.absolute]),o?{value:l}:{ref:i,value:l}};exports.useParallax=M;
2
2
  //# sourceMappingURL=useParallax.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useParallax.cjs","sources":["../../../../src/hooks/useParallax/useParallax.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useDeviceOrientation } from '../useDeviceOrientation/useDeviceOrientation';\nimport { useMouse } from '../useMouse/useMouse';\nimport { useRefState } from '../useRefState/useRefState';\nimport { useScreenOrientation } from '../useScreenOrientation/useScreenOrientation';\n\n/** The use parallax value type */\nexport interface UseParallaxValue {\n /** Roll value. Scaled to `-0.5 ~ 0.5` */\n roll: number;\n /** Sensor source, can be `mouse` or `deviceOrientation` */\n source: 'deviceOrientation' | 'mouse';\n /** Tilt value. Scaled to `-0.5 ~ 0.5` */\n tilt: number;\n}\n\n/** The use parallax options type */\nexport interface UseParallaxOptions {\n /** Device orientation roll adjust function */\n deviceOrientationRollAdjust?: (value: number) => number;\n /** Device orientation tilt adjust function */\n deviceOrientationTiltAdjust?: (value: number) => number;\n /** Mouse roll adjust function */\n mouseRollAdjust?: (value: number) => number;\n /** Mouse tilt adjust function */\n mouseTiltAdjust?: (value: number) => number;\n}\n\ninterface UseParallaxReturn {\n value: UseParallaxValue;\n}\n\nexport interface UseParallax {\n (target: HookTarget, options?: UseParallaxOptions): UseParallaxReturn;\n\n <Target extends Element>(\n options?: UseParallaxOptions,\n target?: never\n ): UseParallaxReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useParallax\n * @description - Hook to help create parallax effect\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element for the parallax effect\n * @param {UseParallaxOptions} options The options for the parallax effect\n * @returns {UseParallaxReturn} An object of parallax values\n *\n * @example\n * const { value } = useParallax(ref);\n *\n * @overload\n * @template Target The target element for the parallax effect\n * @param {UseParallaxOptions} options The options for the parallax effect\n * @returns {UseParallaxReturn & { ref: StateRef<Target> }} An object of parallax values\n *\n * @example\n * const { ref, value } = useParallax();\n */\nexport const useParallax = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (params[1] ? params[1] : params[0]) as UseParallaxOptions | undefined;\n\n const internalRef = useRefState<Element>();\n\n const mouse = useMouse(target ?? internalRef);\n const screenOrientation = useScreenOrientation();\n const deviceOrientation = useDeviceOrientation();\n\n const {\n deviceOrientationRollAdjust = (value) => value,\n deviceOrientationTiltAdjust = (value) => value,\n mouseRollAdjust = (value) => value,\n mouseTiltAdjust = (value) => value\n } = (options ?? {}) as UseParallaxOptions;\n\n const [value, setValue] = useState({\n roll: 0,\n tilt: 0,\n source: 'mouse'\n });\n\n const getSource = () => {\n const isDeviceOrientation =\n deviceOrientation.supported &&\n (deviceOrientation.value.alpha || deviceOrientation.value.gamma);\n\n if (isDeviceOrientation) return 'deviceOrientation';\n return 'mouse';\n };\n\n const getRoll = () => {\n const source = getSource();\n if (source === 'deviceOrientation') {\n let value: number;\n switch (screenOrientation.value.orientationType) {\n case 'landscape-primary':\n value = deviceOrientation.value.gamma! / 90;\n break;\n case 'landscape-secondary':\n value = -deviceOrientation.value.gamma! / 90;\n break;\n case 'portrait-primary':\n value = -deviceOrientation.value.beta! / 90;\n break;\n case 'portrait-secondary':\n value = deviceOrientation.value.beta! / 90;\n break;\n default:\n value = -deviceOrientation.value.beta! / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n if (!mouse.element) return 0;\n const y = mouse.y - mouse.elementPositionY;\n const height = mouse.element.getBoundingClientRect().height;\n const value = -(y - height / 2) / height;\n return mouseRollAdjust(value);\n }\n };\n\n const getTilt = () => {\n const source = getSource();\n if (source === 'deviceOrientation') {\n let value: number;\n switch (screenOrientation.value.orientationType) {\n case 'landscape-primary':\n value = deviceOrientation.value.beta! / 90;\n break;\n case 'landscape-secondary':\n value = -deviceOrientation.value.beta! / 90;\n break;\n case 'portrait-primary':\n value = deviceOrientation.value.gamma! / 90;\n break;\n case 'portrait-secondary':\n value = -deviceOrientation.value.gamma! / 90;\n break;\n default:\n value = deviceOrientation.value.gamma! / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n if (!mouse.element) return 0;\n const x = mouse.x - mouse.elementPositionX;\n const width = mouse.element.getBoundingClientRect().width;\n const value = (x - width / 2) / width;\n return mouseTiltAdjust(value);\n }\n };\n\n useEffect(() => {\n if (!mouse.element) return;\n\n const source = getSource();\n const roll = getRoll();\n const tilt = getTilt();\n\n setValue({\n roll,\n source,\n tilt\n });\n }, [\n screenOrientation.value.angle,\n screenOrientation.value.orientationType,\n deviceOrientation.value.gamma,\n deviceOrientation.value.beta,\n deviceOrientation.value.alpha,\n deviceOrientation.value.absolute,\n mouse.x,\n mouse.y,\n mouse.element\n ]);\n\n if (target) return { value };\n\n return {\n ref: internalRef,\n value\n };\n}) as UseParallax;\n"],"names":["useParallax","params","target","isTarget","options","internalRef","useRefState","mouse","useMouse","screenOrientation","useScreenOrientation","deviceOrientation","useDeviceOrientation","deviceOrientationRollAdjust","value","deviceOrientationTiltAdjust","mouseRollAdjust","mouseTiltAdjust","setValue","useState","getSource","getRoll","y","height","getTilt","x","width","useEffect","source","roll","tilt"],"mappings":"qWAuEaA,EAAe,IAAIC,IAAkB,CAC1C,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWH,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAE3CI,EAAcC,EAAAA,YAAqB,EAEnCC,EAAQC,EAAAA,SAASN,GAAUG,CAAW,EACtCI,EAAoBC,EAAAA,qBAAqB,EACzCC,EAAoBC,EAAAA,qBAAqB,EAEzC,CACJ,4BAAAC,EAA+BC,GAAUA,EACzC,4BAAAC,EAA+BD,GAAUA,EACzC,gBAAAE,EAAmBF,GAAUA,EAC7B,gBAAAG,EAAmBH,GAAUA,CAC/B,EAAKV,GAAW,CAAC,EAEX,CAACU,EAAOI,CAAQ,EAAIC,WAAS,CACjC,KAAM,EACN,KAAM,EACN,OAAQ,OAAA,CACT,EAEKC,EAAY,IAEdT,EAAkB,YACjBA,EAAkB,MAAM,OAASA,EAAkB,MAAM,OAE5B,oBACzB,QAGHU,EAAU,IAAM,CAEpB,GADeD,EAAU,IACV,oBAAqB,CAC9BN,IAAAA,EACI,OAAAL,EAAkB,MAAM,gBAAiB,CAC/C,IAAK,oBACHK,EAAQH,EAAkB,MAAM,MAAS,GACzC,MACF,IAAK,sBACHG,EAAQ,CAACH,EAAkB,MAAM,MAAS,GAC1C,MACF,IAAK,mBACHG,EAAQ,CAACH,EAAkB,MAAM,KAAQ,GACzC,MACF,IAAK,qBACHG,EAAQH,EAAkB,MAAM,KAAQ,GACxC,MACF,QACEG,EAAQ,CAACH,EAAkB,MAAM,KAAQ,EAAA,CAE7C,OAAOE,EAA4BC,CAAK,CAAA,KACnC,CACD,GAAA,CAACP,EAAM,QAAgB,MAAA,GACrB,MAAAe,EAAIf,EAAM,EAAIA,EAAM,iBACpBgB,EAAShB,EAAM,QAAQ,sBAAwB,EAAA,OAC/CO,EAAQ,EAAEQ,EAAIC,EAAS,GAAKA,EAClC,OAAOP,EAAgBF,CAAK,CAAA,CAEhC,EAEMU,EAAU,IAAM,CAEpB,GADeJ,EAAU,IACV,oBAAqB,CAC9BN,IAAAA,EACI,OAAAL,EAAkB,MAAM,gBAAiB,CAC/C,IAAK,oBACHK,EAAQH,EAAkB,MAAM,KAAQ,GACxC,MACF,IAAK,sBACHG,EAAQ,CAACH,EAAkB,MAAM,KAAQ,GACzC,MACF,IAAK,mBACHG,EAAQH,EAAkB,MAAM,MAAS,GACzC,MACF,IAAK,qBACHG,EAAQ,CAACH,EAAkB,MAAM,MAAS,GAC1C,MACF,QACEG,EAAQH,EAAkB,MAAM,MAAS,EAAA,CAE7C,OAAOI,EAA4BD,CAAK,CAAA,KACnC,CACD,GAAA,CAACP,EAAM,QAAgB,MAAA,GACrB,MAAAkB,EAAIlB,EAAM,EAAIA,EAAM,iBACpBmB,EAAQnB,EAAM,QAAQ,sBAAwB,EAAA,MAC9CO,GAASW,EAAIC,EAAQ,GAAKA,EAChC,OAAOT,EAAgBH,CAAK,CAAA,CAEhC,EA0BI,OAxBJa,EAAAA,UAAU,IAAM,CACV,GAAA,CAACpB,EAAM,QAAS,OAEpB,MAAMqB,EAASR,EAAU,EACnBS,EAAOR,EAAQ,EACfS,EAAON,EAAQ,EAEZN,EAAA,CACP,KAAAW,EACA,OAAAD,EACA,KAAAE,CAAA,CACD,CAAA,EACA,CACDrB,EAAkB,MAAM,MACxBA,EAAkB,MAAM,gBACxBE,EAAkB,MAAM,MACxBA,EAAkB,MAAM,KACxBA,EAAkB,MAAM,MACxBA,EAAkB,MAAM,SACxBJ,EAAM,EACNA,EAAM,EACNA,EAAM,OAAA,CACP,EAEGL,EAAe,CAAE,MAAAY,CAAM,EAEpB,CACL,IAAKT,EACL,MAAAS,CACF,CACF"}
1
+ {"version":3,"file":"useParallax.cjs","sources":["../../../../src/hooks/useParallax/useParallax.ts"],"sourcesContent":["import { useEffect, 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 { useDeviceOrientation } from '../useDeviceOrientation/useDeviceOrientation';\nimport { useRefState } from '../useRefState/useRefState';\nimport { useScreenOrientation } from '../useScreenOrientation/useScreenOrientation';\n\n/** The use parallax value type */\nexport interface UseParallaxValue {\n /** Roll value. Scaled to `-0.5 ~ 0.5` */\n roll: number;\n /** Sensor source, can be `mouse` or `deviceOrientation` */\n source: 'deviceOrientation' | 'mouse';\n /** Tilt value. Scaled to `-0.5 ~ 0.5` */\n tilt: number;\n}\n\n/** The use parallax options type */\nexport interface UseParallaxOptions {\n /** Device orientation roll adjust function */\n deviceOrientationRollAdjust?: (value: number) => number;\n /** Device orientation tilt adjust function */\n deviceOrientationTiltAdjust?: (value: number) => number;\n /** Mouse roll adjust function */\n mouseRollAdjust?: (value: number) => number;\n /** Mouse tilt adjust function */\n mouseTiltAdjust?: (value: number) => number;\n}\n\ninterface UseParallaxReturn {\n value: UseParallaxValue;\n}\n\nexport interface UseParallax {\n (target: HookTarget, options?: UseParallaxOptions): UseParallaxReturn;\n\n <Target extends Element>(\n options?: UseParallaxOptions,\n target?: never\n ): UseParallaxReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useParallax\n * @description - Hook to help create parallax effect\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element for the parallax effect\n * @param {UseParallaxOptions} options The options for the parallax effect\n * @returns {UseParallaxReturn} An object of parallax values\n *\n * @example\n * const { value } = useParallax(ref);\n *\n * @overload\n * @template Target The target element for the parallax effect\n * @param {UseParallaxOptions} options The options for the parallax effect\n * @returns {UseParallaxReturn & { ref: StateRef<Target> }} An object of parallax values\n *\n * @example\n * const { ref, value } = useParallax();\n */\nexport const useParallax = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (params[1] ? params[1] : params[0]) as UseParallaxOptions | undefined;\n\n const internalRef = useRefState<Element>();\n\n const screenOrientation = useScreenOrientation();\n const deviceOrientation = useDeviceOrientation();\n\n const {\n deviceOrientationRollAdjust = (value) => value,\n deviceOrientationTiltAdjust = (value) => value,\n mouseRollAdjust = (value) => value,\n mouseTiltAdjust = (value) => value\n } = (options ?? {}) as UseParallaxOptions;\n\n const [value, setValue] = useState({\n roll: 0,\n tilt: 0,\n source: 'mouse'\n });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n console.log('element', element);\n const onMouseMove = (event: MouseEvent) => {\n const { left, top } = element.getBoundingClientRect();\n const elementPositionX = left + window.scrollX;\n const elementPositionY = top + window.scrollY;\n\n const getSource = () => {\n const isDeviceOrientation =\n deviceOrientation.supported &&\n (deviceOrientation.value.alpha || deviceOrientation.value.gamma);\n\n if (isDeviceOrientation) return 'deviceOrientation';\n return 'mouse';\n };\n\n const getRoll = () => {\n const source = getSource();\n if (source === 'deviceOrientation') {\n let value: number;\n switch (screenOrientation.value.orientationType) {\n case 'landscape-primary':\n value = deviceOrientation.value.gamma! / 90;\n break;\n case 'landscape-secondary':\n value = -deviceOrientation.value.gamma! / 90;\n break;\n case 'portrait-primary':\n value = -deviceOrientation.value.beta! / 90;\n break;\n case 'portrait-secondary':\n value = deviceOrientation.value.beta! / 90;\n break;\n default:\n value = -deviceOrientation.value.beta! / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const y = event.pageY - elementPositionY;\n const height = element.getBoundingClientRect().height;\n const value = -(y - height / 2) / height;\n return mouseRollAdjust(value);\n }\n };\n\n const getTilt = () => {\n const source = getSource();\n if (source === 'deviceOrientation') {\n let value: number;\n switch (screenOrientation.value.orientationType) {\n case 'landscape-primary':\n value = deviceOrientation.value.beta! / 90;\n break;\n case 'landscape-secondary':\n value = -deviceOrientation.value.beta! / 90;\n break;\n case 'portrait-primary':\n value = deviceOrientation.value.gamma! / 90;\n break;\n case 'portrait-secondary':\n value = -deviceOrientation.value.gamma! / 90;\n break;\n default:\n value = deviceOrientation.value.gamma! / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const x = event.pageX - elementPositionX;\n const width = element.getBoundingClientRect().width;\n const value = (x - width / 2) / width;\n return mouseTiltAdjust(value);\n }\n };\n\n const source = getSource();\n const roll = getRoll();\n const tilt = getTilt();\n\n setValue({\n roll,\n source,\n tilt\n });\n };\n\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [\n target,\n internalRef.state,\n screenOrientation.value.angle,\n screenOrientation.value.orientationType,\n deviceOrientation.value.gamma,\n deviceOrientation.value.beta,\n deviceOrientation.value.alpha,\n deviceOrientation.value.absolute\n ]);\n\n if (target) return { value };\n\n return {\n ref: internalRef,\n value\n };\n}) as UseParallax;\n"],"names":["useParallax","params","target","isTarget","options","internalRef","useRefState","screenOrientation","useScreenOrientation","deviceOrientation","useDeviceOrientation","deviceOrientationRollAdjust","value","deviceOrientationTiltAdjust","mouseRollAdjust","mouseTiltAdjust","setValue","useState","useEffect","element","getElement","onMouseMove","event","left","top","elementPositionX","elementPositionY","getSource","getRoll","y","height","getTilt","x","width","source","roll","tilt"],"mappings":"+WAsEaA,EAAe,IAAIC,IAAkB,CAC1C,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWH,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAE3CI,EAAcC,EAAAA,YAAqB,EAEnCC,EAAoBC,EAAAA,qBAAqB,EACzCC,EAAoBC,EAAAA,qBAAqB,EAEzC,CACJ,4BAAAC,EAA+BC,GAAUA,EACzC,4BAAAC,EAA+BD,GAAUA,EACzC,gBAAAE,EAAmBF,GAAUA,EAC7B,gBAAAG,EAAmBH,GAAUA,CAC/B,EAAKR,GAAW,CAAC,EAEX,CAACQ,EAAOI,CAAQ,EAAIC,WAAS,CACjC,KAAM,EACN,KAAM,EACN,OAAQ,OAAA,CACT,EA2GG,OAzGJC,EAAAA,UAAU,IAAM,CACd,GAAI,CAAChB,GAAU,CAACG,EAAY,MAAO,OAEnC,MAAMc,EAAWjB,EAASkB,EAAAA,WAAWlB,CAAM,EAAIG,EAAY,QAC3D,GAAI,CAACc,EAAS,OAEN,QAAA,IAAI,UAAWA,CAAO,EACxB,MAAAE,EAAeC,GAAsB,CACzC,KAAM,CAAE,KAAAC,EAAM,IAAAC,GAAQL,EAAQ,sBAAsB,EAC9CM,EAAmBF,EAAO,OAAO,QACjCG,EAAmBF,EAAM,OAAO,QAEhCG,EAAY,IAEdlB,EAAkB,YACjBA,EAAkB,MAAM,OAASA,EAAkB,MAAM,OAE5B,oBACzB,QAGHmB,EAAU,IAAM,CAEpB,GADeD,EAAU,IACV,oBAAqB,CAC9Bf,IAAAA,EACI,OAAAL,EAAkB,MAAM,gBAAiB,CAC/C,IAAK,oBACHK,EAAQH,EAAkB,MAAM,MAAS,GACzC,MACF,IAAK,sBACHG,EAAQ,CAACH,EAAkB,MAAM,MAAS,GAC1C,MACF,IAAK,mBACHG,EAAQ,CAACH,EAAkB,MAAM,KAAQ,GACzC,MACF,IAAK,qBACHG,EAAQH,EAAkB,MAAM,KAAQ,GACxC,MACF,QACEG,EAAQ,CAACH,EAAkB,MAAM,KAAQ,EAAA,CAE7C,OAAOE,EAA4BC,CAAK,CAAA,KACnC,CACC,MAAAiB,EAAIP,EAAM,MAAQI,EAClBI,EAASX,EAAQ,sBAAA,EAAwB,OACzCP,EAAQ,EAAEiB,EAAIC,EAAS,GAAKA,EAClC,OAAOhB,EAAgBF,CAAK,CAAA,CAEhC,EAEMmB,EAAU,IAAM,CAEpB,GADeJ,EAAU,IACV,oBAAqB,CAC9Bf,IAAAA,EACI,OAAAL,EAAkB,MAAM,gBAAiB,CAC/C,IAAK,oBACHK,EAAQH,EAAkB,MAAM,KAAQ,GACxC,MACF,IAAK,sBACHG,EAAQ,CAACH,EAAkB,MAAM,KAAQ,GACzC,MACF,IAAK,mBACHG,EAAQH,EAAkB,MAAM,MAAS,GACzC,MACF,IAAK,qBACHG,EAAQ,CAACH,EAAkB,MAAM,MAAS,GAC1C,MACF,QACEG,EAAQH,EAAkB,MAAM,MAAS,EAAA,CAE7C,OAAOI,EAA4BD,CAAK,CAAA,KACnC,CACC,MAAAoB,EAAIV,EAAM,MAAQG,EAClBQ,EAAQd,EAAQ,sBAAA,EAAwB,MACxCP,GAASoB,EAAIC,EAAQ,GAAKA,EAChC,OAAOlB,EAAgBH,CAAK,CAAA,CAEhC,EAEMsB,EAASP,EAAU,EACnBQ,EAAOP,EAAQ,EACfQ,EAAOL,EAAQ,EAEZf,EAAA,CACP,KAAAmB,EACA,OAAAD,EACA,KAAAE,CAAA,CACD,CACH,EAES,gBAAA,iBAAiB,YAAaf,CAAW,EAC3C,IAAM,CACF,SAAA,oBAAoB,YAAaA,CAAW,CACvD,CAAA,EACC,CACDnB,EACAG,EAAY,MACZE,EAAkB,MAAM,MACxBA,EAAkB,MAAM,gBACxBE,EAAkB,MAAM,MACxBA,EAAkB,MAAM,KACxBA,EAAkB,MAAM,MACxBA,EAAkB,MAAM,QAAA,CACzB,EAEGP,EAAe,CAAE,MAAAU,CAAM,EAEpB,CACL,IAAKP,EACL,MAAAO,CACF,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWindowFocus.cjs","sources":["../../../../src/hooks/useWindowFocus/useWindowFocus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useWindowFocus\n * @description - Hook that provides the current focus state of the window\n * @category Elements\n *\n * @returns {boolean} The current focus state of the window\n *\n * @example\n * const focused = useWindowFocus();\n */\nexport const useWindowFocus = () => {\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n window.addEventListener('focus', onFocus);\n window.addEventListener('blur', onBlur);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n });\n\n return focused;\n};\n"],"names":["useWindowFocus","focused","setFocused","useState","useEffect","onFocus","onBlur"],"mappings":"yGAYaA,EAAiB,IAAM,CAClC,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EAE5CC,OAAAA,EAAAA,UAAU,IAAM,CACR,MAAAC,EAAU,IAAMH,EAAW,EAAI,EAC/BI,EAAS,IAAMJ,EAAW,EAAK,EAE9B,cAAA,iBAAiB,QAASG,CAAO,EACjC,OAAA,iBAAiB,OAAQC,CAAM,EAE/B,IAAM,CACJ,OAAA,oBAAoB,QAASD,CAAO,EACpC,OAAA,oBAAoB,OAAQC,CAAM,CAC3C,CAAA,CACD,EAEML,CACT"}
1
+ {"version":3,"file":"useWindowFocus.cjs","sources":["../../../../src/hooks/useWindowFocus/useWindowFocus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useWindowFocus\n * @description - Hook that provides the current focus state of the window\n * @category Elements\n *\n * @returns {boolean} The current focus state of the window\n *\n * @example\n * const focused = useWindowFocus();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useWindowFocus.html}\n */\nexport const useWindowFocus = () => {\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n window.addEventListener('focus', onFocus);\n window.addEventListener('blur', onBlur);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n });\n\n return focused;\n};\n"],"names":["useWindowFocus","focused","setFocused","useState","useEffect","onFocus","onBlur"],"mappings":"yGAcaA,EAAiB,IAAM,CAClC,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EAE5CC,OAAAA,EAAAA,UAAU,IAAM,CACR,MAAAC,EAAU,IAAMH,EAAW,EAAI,EAC/BI,EAAS,IAAMJ,EAAW,EAAK,EAE9B,cAAA,iBAAiB,QAASG,CAAO,EACjC,OAAA,iBAAiB,OAAQC,CAAM,EAE/B,IAAM,CACJ,OAAA,oBAAoB,QAASD,CAAO,EACpC,OAAA,oBAAoB,OAAQC,CAAM,CAC3C,CAAA,CACD,EAEML,CACT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("./hooks/useActiveElement/useActiveElement.cjs"),C=require("./hooks/useAsync/useAsync.cjs"),E=require("./hooks/useBattery/useBattery.cjs"),m=require("./hooks/useBluetooth/useBluetooth.cjs"),p=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),R=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),O=require("./hooks/useClickOutside/useClickOutside.cjs"),y=require("./hooks/useClipboard/useClipboard.cjs"),I=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),u=require("./hooks/useCookies/useCookies.cjs"),v=require("./hooks/useCopy/useCopy.cjs"),k=require("./hooks/useCounter/useCounter.cjs"),D=require("./hooks/useCssVar/useCssVar.cjs"),b=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),A=require("./hooks/useDebounceValue/useDebounceValue.cjs"),M=require("./hooks/useDefault/useDefault.cjs"),f=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),L=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),h=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),_=require("./hooks/useDidUpdate/useDidUpdate.cjs"),N=require("./hooks/useDisclosure/useDisclosure.cjs"),B=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),K=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),V=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),F=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),w=require("./hooks/useElementSize/useElementSize.cjs"),W=require("./hooks/useEvent/useEvent.cjs"),x=require("./hooks/useEventListener/useEventListener.cjs"),H=require("./hooks/useEyeDropper/useEyeDropper.cjs"),U=require("./hooks/useFavicon/useFavicon.cjs"),z=require("./hooks/useField/useField.cjs"),G=require("./hooks/useFileDialog/useFileDialog.cjs"),Q=require("./hooks/useFocus/useFocus.cjs"),X=require("./hooks/useFps/useFps.cjs"),j=require("./hooks/useFullscreen/useFullscreen.cjs"),i=require("./hooks/useGamepad/useGamepad.cjs"),J=require("./hooks/useGeolocation/useGeolocation.cjs"),Y=require("./hooks/useHash/useHash.cjs"),n=require("./hooks/useHotkeys/useHotkeys.cjs"),Z=require("./hooks/useHover/useHover.cjs"),$=require("./hooks/useIdle/useIdle.cjs"),ee=require("./hooks/useImage/useImage.cjs"),se=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),ue=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),re=require("./hooks/useInterval/useInterval.cjs"),te=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),oe=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),ie=require("./hooks/useKeyboard/useKeyboard.cjs"),ne=require("./hooks/useKeyPress/useKeyPress.cjs"),ce=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),ae=require("./hooks/useKeysPressed/useKeysPressed.cjs"),le=require("./hooks/useLastChanged/useLastChanged.cjs"),qe=require("./hooks/useLatest/useLatest.cjs"),Se=require("./hooks/useLess/useLess.cjs"),de=require("./hooks/useList/useList.cjs"),ge=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Te=require("./hooks/useLockCallback/useLockCallback.cjs"),Pe=require("./hooks/useLogger/useLogger.cjs"),Ce=require("./hooks/useLongPress/useLongPress.cjs"),Ee=require("./hooks/useMap/useMap.cjs"),me=require("./hooks/useMeasure/useMeasure.cjs"),pe=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Re=require("./hooks/useMemory/useMemory.cjs"),Oe=require("./hooks/useMount/useMount.cjs"),ye=require("./hooks/useMouse/useMouse.cjs"),Ie=require("./hooks/useMutation/useMutation.cjs"),ve=require("./hooks/useMutationObserver/useMutationObserver.cjs"),c=require("./hooks/useNetwork/useNetwork.cjs"),ke=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),De=require("./hooks/useOnce/useOnce.cjs"),be=require("./hooks/useOnline/useOnline.cjs"),a=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Ae=require("./hooks/useOptimistic/useOptimistic.cjs"),Me=require("./hooks/useOrientation/useOrientation.cjs"),fe=require("./hooks/useOtpCredential/useOtpCredential.cjs"),Le=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),he=require("./hooks/useParallax/useParallax.cjs"),_e=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),Ne=require("./hooks/usePermission/usePermission.cjs"),Be=require("./hooks/usePointerLock/usePointerLock.cjs"),Ke=require("./hooks/usePostMessage/usePostMessage.cjs"),Ve=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Fe=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),we=require("./hooks/usePreferredDark/usePreferredDark.cjs"),We=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),xe=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),He=require("./hooks/usePrevious/usePrevious.cjs"),Ue=require("./hooks/useQuery/useQuery.cjs"),ze=require("./hooks/useQueue/useQueue.cjs"),Ge=require("./hooks/useRaf/useRaf.cjs"),Qe=require("./hooks/useRafValue/useRafValue.cjs"),Xe=require("./hooks/useRefState/useRefState.cjs"),je=require("./hooks/useRenderCount/useRenderCount.cjs"),Je=require("./hooks/useRenderInfo/useRenderInfo.cjs"),Ye=require("./hooks/useRerender/useRerender.cjs"),Ze=require("./hooks/useResizeObserver/useResizeObserver.cjs"),$e=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),l=require("./hooks/useScript/useScript.cjs"),es=require("./hooks/useScroll/useScroll.cjs"),ss=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),us=require("./hooks/useScrollTo/useScrollTo.cjs"),rs=require("./hooks/useSessionStorage/useSessionStorage.cjs"),ts=require("./hooks/useSet/useSet.cjs"),os=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),is=require("./hooks/useStateHistory/useStateHistory.cjs"),ns=require("./hooks/useStep/useStep.cjs"),cs=require("./hooks/useSticky/useSticky.cjs"),as=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),ls=require("./hooks/useTextDirection/useTextDirection.cjs"),S=require("./hooks/useTextSelection/useTextSelection.cjs"),qs=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),Ss=require("./hooks/useThrottleValue/useThrottleValue.cjs"),ds=require("./hooks/useTime/useTime.cjs"),gs=require("./hooks/useTimeout/useTimeout.cjs"),d=require("./hooks/useTimer/useTimer.cjs"),Ts=require("./hooks/useToggle/useToggle.cjs"),Ps=require("./hooks/useUnmount/useUnmount.cjs"),Cs=require("./hooks/useVibrate/useVibrate.cjs"),Es=require("./hooks/useWebSocket/useWebSocket.cjs"),ms=require("./hooks/useWindowEvent/useWindowEvent.cjs"),ps=require("./hooks/useWindowFocus/useWindowFocus.cjs"),g=require("./hooks/useWindowScroll/useWindowScroll.cjs"),Rs=require("./hooks/useWindowSize/useWindowSize.cjs"),Os=require("./hooks/useWizard/useWizard.cjs"),T=require("./utils/helpers/copy.cjs"),ys=require("./utils/helpers/debounce.cjs"),Is=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),vs=require("./utils/helpers/getRetry.cjs"),ks=require("./utils/helpers/isTarget.cjs"),Ds=require("./utils/helpers/throttle.cjs");exports.useActiveElement=P.useActiveElement;exports.useAsync=C.useAsync;exports.useBattery=E.useBattery;exports.useBluetooth=m.useBluetooth;exports.useBoolean=p.useBoolean;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useBrowserLanguage=R.useBrowserLanguage;exports.useClickOutside=O.useClickOutside;exports.useClipboard=y.useClipboard;exports.useConst=I.useConst;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=u.clearCookies;exports.getParsedCookies=u.getParsedCookies;exports.useCookies=u.useCookies;exports.useCopy=v.useCopy;exports.useCounter=k.useCounter;exports.useCssVar=D.useCssVar;exports.useDebounceCallback=b.useDebounceCallback;exports.useDebounceValue=A.useDebounceValue;exports.useDefault=M.useDefault;exports.useDeviceMotion=f.useDeviceMotion;exports.useDeviceOrientation=L.useDeviceOrientation;exports.useDevicePixelRatio=h.useDevicePixelRatio;exports.useDidUpdate=_.useDidUpdate;exports.useDisclosure=N.useDisclosure;exports.useDisplayMedia=B.useDisplayMedia;exports.useDocumentEvent=K.useDocumentEvent;exports.useDocumentTitle=V.useDocumentTitle;exports.useDocumentVisibility=F.useDocumentVisibility;exports.useElementSize=w.useElementSize;exports.useEvent=W.useEvent;exports.useEventListener=x.useEventListener;exports.useEyeDropper=H.useEyeDropper;exports.useFavicon=U.useFavicon;exports.useField=z.useField;exports.useFileDialog=G.useFileDialog;exports.useFocus=Q.useFocus;exports.useFps=X.useFps;exports.useFullscreen=j.useFullscreen;exports.mapGamepadToXbox360Controller=i.mapGamepadToXbox360Controller;exports.useGamepad=i.useGamepad;exports.useGeolocation=J.useGeolocation;exports.useHash=Y.useHash;exports.isHotkeyMatch=n.isHotkeyMatch;exports.useHotkeys=n.useHotkeys;exports.useHover=Z.useHover;exports.useIdle=$.useIdle;exports.useImage=ee.useImage;exports.useInfiniteScroll=se.useInfiniteScroll;exports.useIntersectionObserver=ue.useIntersectionObserver;exports.useInterval=re.useInterval;exports.useIsFirstRender=te.useIsFirstRender;exports.useIsomorphicLayoutEffect=oe.useIsomorphicLayoutEffect;exports.useKeyboard=ie.useKeyboard;exports.useKeyPress=ne.useKeyPress;exports.useKeyPressEvent=ce.useKeyPressEvent;exports.useKeysPressed=ae.useKeysPressed;exports.useLastChanged=le.useLastChanged;exports.useLatest=qe.useLatest;exports.useLess=Se.useLess;exports.useList=de.useList;exports.useLocalStorage=ge.useLocalStorage;exports.useLockCallback=Te.useLockCallback;exports.useLogger=Pe.useLogger;exports.useLongPress=Ce.useLongPress;exports.useMap=Ee.useMap;exports.useMeasure=me.useMeasure;exports.useMediaQuery=pe.useMediaQuery;exports.useMemory=Re.useMemory;exports.useMount=Oe.useMount;exports.useMouse=ye.useMouse;exports.useMutation=Ie.useMutation;exports.useMutationObserver=ve.useMutationObserver;exports.getConnection=c.getConnection;exports.useNetwork=c.useNetwork;exports.useOffsetPagination=ke.useOffsetPagination;exports.useOnce=De.useOnce;exports.useOnline=be.useOnline;exports.getOperatingSystem=a.getOperatingSystem;exports.useOperatingSystem=a.useOperatingSystem;exports.useOptimistic=Ae.useOptimistic;exports.useOrientation=Me.useOrientation;exports.useOtpCredential=fe.useOtpCredential;exports.usePageLeave=Le.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=he.useParallax;exports.usePerformanceObserver=_e.usePerformanceObserver;exports.usePermission=Ne.usePermission;exports.usePointerLock=Be.usePointerLock;exports.usePostMessage=Ke.usePostMessage;exports.usePreferredColorScheme=Ve.usePreferredColorScheme;exports.usePreferredContrast=Fe.usePreferredContrast;exports.usePreferredDark=we.usePreferredDark;exports.usePreferredLanguages=We.usePreferredLanguages;exports.usePreferredReducedMotion=xe.usePreferredReducedMotion;exports.usePrevious=He.usePrevious;exports.useQuery=Ue.useQuery;exports.useQueue=ze.useQueue;exports.useRaf=Ge.useRaf;exports.useRafValue=Qe.useRafValue;exports.useRefState=Xe.useRefState;exports.useRenderCount=je.useRenderCount;exports.useRenderInfo=Je.useRenderInfo;exports.useRerender=Ye.useRerender;exports.useResizeObserver=Ze.useResizeObserver;exports.useScreenOrientation=$e.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=l.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=l.useScript;exports.useScroll=es.useScroll;exports.useScrollIntoView=ss.useScrollIntoView;exports.useScrollTo=us.useScrollTo;exports.useSessionStorage=rs.useSessionStorage;exports.useSet=ts.useSet;exports.useShare=os.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useStateHistory=is.useStateHistory;exports.useStep=ns.useStep;exports.useSticky=cs.useSticky;exports.useStopwatch=as.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=ls.useTextDirection;exports.getRangesSelection=S.getRangesSelection;exports.useTextSelection=S.useTextSelection;exports.useThrottleCallback=qs.useThrottleCallback;exports.useThrottleValue=Ss.useThrottleValue;exports.useTime=ds.useTime;exports.useTimeout=gs.useTimeout;exports.getTimeFromSeconds=d.getTimeFromSeconds;exports.useTimer=d.useTimer;exports.useToggle=Ts.useToggle;exports.useUnmount=Ps.useUnmount;exports.useVibrate=Cs.useVibrate;exports.useWebSocket=Es.useWebSocket;exports.useWindowEvent=ms.useWindowEvent;exports.useWindowFocus=ps.useWindowFocus;exports.scrollTo=g.scrollTo;exports.useWindowScroll=g.useWindowScroll;exports.useWindowSize=Rs.useWindowSize;exports.useWizard=Os.useWizard;exports.copy=T.copy;exports.legacyCopyToClipboard=T.legacyCopyToClipboard;exports.debounce=ys.debounce;exports.getDate=Is.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=vs.getRetry;exports.isTarget=ks.isTarget;exports.throttle=Ds.throttle;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("./hooks/useActiveElement/useActiveElement.cjs"),C=require("./hooks/useAsync/useAsync.cjs"),E=require("./hooks/useBattery/useBattery.cjs"),m=require("./hooks/useBluetooth/useBluetooth.cjs"),p=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),R=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),O=require("./hooks/useClickOutside/useClickOutside.cjs"),y=require("./hooks/useClipboard/useClipboard.cjs"),I=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),u=require("./hooks/useCookies/useCookies.cjs"),k=require("./hooks/useCopy/useCopy.cjs"),v=require("./hooks/useCounter/useCounter.cjs"),D=require("./hooks/useCssVar/useCssVar.cjs"),b=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),A=require("./hooks/useDebounceValue/useDebounceValue.cjs"),M=require("./hooks/useDefault/useDefault.cjs"),f=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),L=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),h=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),_=require("./hooks/useDidUpdate/useDidUpdate.cjs"),N=require("./hooks/useDisclosure/useDisclosure.cjs"),B=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),K=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),V=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),F=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),w=require("./hooks/useDoubleClick/useDoubleClick.cjs"),W=require("./hooks/useElementSize/useElementSize.cjs"),x=require("./hooks/useEvent/useEvent.cjs"),H=require("./hooks/useEventListener/useEventListener.cjs"),U=require("./hooks/useEyeDropper/useEyeDropper.cjs"),z=require("./hooks/useFavicon/useFavicon.cjs"),G=require("./hooks/useField/useField.cjs"),Q=require("./hooks/useFileDialog/useFileDialog.cjs"),X=require("./hooks/useFocus/useFocus.cjs"),j=require("./hooks/useFps/useFps.cjs"),J=require("./hooks/useFullscreen/useFullscreen.cjs"),i=require("./hooks/useGamepad/useGamepad.cjs"),Y=require("./hooks/useGeolocation/useGeolocation.cjs"),Z=require("./hooks/useHash/useHash.cjs"),n=require("./hooks/useHotkeys/useHotkeys.cjs"),$=require("./hooks/useHover/useHover.cjs"),ee=require("./hooks/useIdle/useIdle.cjs"),se=require("./hooks/useImage/useImage.cjs"),ue=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),re=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),te=require("./hooks/useInterval/useInterval.cjs"),oe=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),ie=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),ne=require("./hooks/useKeyboard/useKeyboard.cjs"),ce=require("./hooks/useKeyPress/useKeyPress.cjs"),ae=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),le=require("./hooks/useKeysPressed/useKeysPressed.cjs"),qe=require("./hooks/useLastChanged/useLastChanged.cjs"),Se=require("./hooks/useLatest/useLatest.cjs"),de=require("./hooks/useLess/useLess.cjs"),ge=require("./hooks/useList/useList.cjs"),Te=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Pe=require("./hooks/useLockCallback/useLockCallback.cjs"),Ce=require("./hooks/useLogger/useLogger.cjs"),Ee=require("./hooks/useLongPress/useLongPress.cjs"),me=require("./hooks/useMap/useMap.cjs"),pe=require("./hooks/useMeasure/useMeasure.cjs"),Re=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Oe=require("./hooks/useMemory/useMemory.cjs"),ye=require("./hooks/useMount/useMount.cjs"),Ie=require("./hooks/useMouse/useMouse.cjs"),ke=require("./hooks/useMutation/useMutation.cjs"),ve=require("./hooks/useMutationObserver/useMutationObserver.cjs"),c=require("./hooks/useNetwork/useNetwork.cjs"),De=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),be=require("./hooks/useOnce/useOnce.cjs"),Ae=require("./hooks/useOnline/useOnline.cjs"),a=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Me=require("./hooks/useOptimistic/useOptimistic.cjs"),fe=require("./hooks/useOrientation/useOrientation.cjs"),Le=require("./hooks/useOtpCredential/useOtpCredential.cjs"),he=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),_e=require("./hooks/useParallax/useParallax.cjs"),Ne=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),Be=require("./hooks/usePermission/usePermission.cjs"),Ke=require("./hooks/usePointerLock/usePointerLock.cjs"),Ve=require("./hooks/usePostMessage/usePostMessage.cjs"),Fe=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),we=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),We=require("./hooks/usePreferredDark/usePreferredDark.cjs"),xe=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),He=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Ue=require("./hooks/usePrevious/usePrevious.cjs"),ze=require("./hooks/useQuery/useQuery.cjs"),Ge=require("./hooks/useQueue/useQueue.cjs"),Qe=require("./hooks/useRaf/useRaf.cjs"),Xe=require("./hooks/useRafValue/useRafValue.cjs"),je=require("./hooks/useRefState/useRefState.cjs"),Je=require("./hooks/useRenderCount/useRenderCount.cjs"),Ye=require("./hooks/useRenderInfo/useRenderInfo.cjs"),Ze=require("./hooks/useRerender/useRerender.cjs"),$e=require("./hooks/useResizeObserver/useResizeObserver.cjs"),es=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),l=require("./hooks/useScript/useScript.cjs"),ss=require("./hooks/useScroll/useScroll.cjs"),us=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),rs=require("./hooks/useScrollTo/useScrollTo.cjs"),ts=require("./hooks/useSessionStorage/useSessionStorage.cjs"),os=require("./hooks/useSet/useSet.cjs"),is=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),ns=require("./hooks/useStateHistory/useStateHistory.cjs"),cs=require("./hooks/useStep/useStep.cjs"),as=require("./hooks/useSticky/useSticky.cjs"),ls=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),qs=require("./hooks/useTextDirection/useTextDirection.cjs"),S=require("./hooks/useTextSelection/useTextSelection.cjs"),Ss=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),ds=require("./hooks/useThrottleValue/useThrottleValue.cjs"),gs=require("./hooks/useTime/useTime.cjs"),Ts=require("./hooks/useTimeout/useTimeout.cjs"),d=require("./hooks/useTimer/useTimer.cjs"),Ps=require("./hooks/useToggle/useToggle.cjs"),Cs=require("./hooks/useUnmount/useUnmount.cjs"),Es=require("./hooks/useVibrate/useVibrate.cjs"),ms=require("./hooks/useWebSocket/useWebSocket.cjs"),ps=require("./hooks/useWindowEvent/useWindowEvent.cjs"),Rs=require("./hooks/useWindowFocus/useWindowFocus.cjs"),g=require("./hooks/useWindowScroll/useWindowScroll.cjs"),Os=require("./hooks/useWindowSize/useWindowSize.cjs"),ys=require("./hooks/useWizard/useWizard.cjs"),T=require("./utils/helpers/copy.cjs"),Is=require("./utils/helpers/debounce.cjs"),ks=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),vs=require("./utils/helpers/getRetry.cjs"),Ds=require("./utils/helpers/isTarget.cjs"),bs=require("./utils/helpers/throttle.cjs");exports.useActiveElement=P.useActiveElement;exports.useAsync=C.useAsync;exports.useBattery=E.useBattery;exports.useBluetooth=m.useBluetooth;exports.useBoolean=p.useBoolean;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useBrowserLanguage=R.useBrowserLanguage;exports.useClickOutside=O.useClickOutside;exports.useClipboard=y.useClipboard;exports.useConst=I.useConst;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=u.clearCookies;exports.getParsedCookies=u.getParsedCookies;exports.useCookies=u.useCookies;exports.useCopy=k.useCopy;exports.useCounter=v.useCounter;exports.useCssVar=D.useCssVar;exports.useDebounceCallback=b.useDebounceCallback;exports.useDebounceValue=A.useDebounceValue;exports.useDefault=M.useDefault;exports.useDeviceMotion=f.useDeviceMotion;exports.useDeviceOrientation=L.useDeviceOrientation;exports.useDevicePixelRatio=h.useDevicePixelRatio;exports.useDidUpdate=_.useDidUpdate;exports.useDisclosure=N.useDisclosure;exports.useDisplayMedia=B.useDisplayMedia;exports.useDocumentEvent=K.useDocumentEvent;exports.useDocumentTitle=V.useDocumentTitle;exports.useDocumentVisibility=F.useDocumentVisibility;exports.useDoubleClick=w.useDoubleClick;exports.useElementSize=W.useElementSize;exports.useEvent=x.useEvent;exports.useEventListener=H.useEventListener;exports.useEyeDropper=U.useEyeDropper;exports.useFavicon=z.useFavicon;exports.useField=G.useField;exports.useFileDialog=Q.useFileDialog;exports.useFocus=X.useFocus;exports.useFps=j.useFps;exports.useFullscreen=J.useFullscreen;exports.mapGamepadToXbox360Controller=i.mapGamepadToXbox360Controller;exports.useGamepad=i.useGamepad;exports.useGeolocation=Y.useGeolocation;exports.useHash=Z.useHash;exports.isHotkeyMatch=n.isHotkeyMatch;exports.useHotkeys=n.useHotkeys;exports.useHover=$.useHover;exports.useIdle=ee.useIdle;exports.useImage=se.useImage;exports.useInfiniteScroll=ue.useInfiniteScroll;exports.useIntersectionObserver=re.useIntersectionObserver;exports.useInterval=te.useInterval;exports.useIsFirstRender=oe.useIsFirstRender;exports.useIsomorphicLayoutEffect=ie.useIsomorphicLayoutEffect;exports.useKeyboard=ne.useKeyboard;exports.useKeyPress=ce.useKeyPress;exports.useKeyPressEvent=ae.useKeyPressEvent;exports.useKeysPressed=le.useKeysPressed;exports.useLastChanged=qe.useLastChanged;exports.useLatest=Se.useLatest;exports.useLess=de.useLess;exports.useList=ge.useList;exports.useLocalStorage=Te.useLocalStorage;exports.useLockCallback=Pe.useLockCallback;exports.useLogger=Ce.useLogger;exports.useLongPress=Ee.useLongPress;exports.useMap=me.useMap;exports.useMeasure=pe.useMeasure;exports.useMediaQuery=Re.useMediaQuery;exports.useMemory=Oe.useMemory;exports.useMount=ye.useMount;exports.useMouse=Ie.useMouse;exports.useMutation=ke.useMutation;exports.useMutationObserver=ve.useMutationObserver;exports.getConnection=c.getConnection;exports.useNetwork=c.useNetwork;exports.useOffsetPagination=De.useOffsetPagination;exports.useOnce=be.useOnce;exports.useOnline=Ae.useOnline;exports.getOperatingSystem=a.getOperatingSystem;exports.useOperatingSystem=a.useOperatingSystem;exports.useOptimistic=Me.useOptimistic;exports.useOrientation=fe.useOrientation;exports.useOtpCredential=Le.useOtpCredential;exports.usePageLeave=he.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=_e.useParallax;exports.usePerformanceObserver=Ne.usePerformanceObserver;exports.usePermission=Be.usePermission;exports.usePointerLock=Ke.usePointerLock;exports.usePostMessage=Ve.usePostMessage;exports.usePreferredColorScheme=Fe.usePreferredColorScheme;exports.usePreferredContrast=we.usePreferredContrast;exports.usePreferredDark=We.usePreferredDark;exports.usePreferredLanguages=xe.usePreferredLanguages;exports.usePreferredReducedMotion=He.usePreferredReducedMotion;exports.usePrevious=Ue.usePrevious;exports.useQuery=ze.useQuery;exports.useQueue=Ge.useQueue;exports.useRaf=Qe.useRaf;exports.useRafValue=Xe.useRafValue;exports.useRefState=je.useRefState;exports.useRenderCount=Je.useRenderCount;exports.useRenderInfo=Ye.useRenderInfo;exports.useRerender=Ze.useRerender;exports.useResizeObserver=$e.useResizeObserver;exports.useScreenOrientation=es.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=l.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=l.useScript;exports.useScroll=ss.useScroll;exports.useScrollIntoView=us.useScrollIntoView;exports.useScrollTo=rs.useScrollTo;exports.useSessionStorage=ts.useSessionStorage;exports.useSet=os.useSet;exports.useShare=is.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useStateHistory=ns.useStateHistory;exports.useStep=cs.useStep;exports.useSticky=as.useSticky;exports.useStopwatch=ls.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=qs.useTextDirection;exports.getRangesSelection=S.getRangesSelection;exports.useTextSelection=S.useTextSelection;exports.useThrottleCallback=Ss.useThrottleCallback;exports.useThrottleValue=ds.useThrottleValue;exports.useTime=gs.useTime;exports.useTimeout=Ts.useTimeout;exports.getTimeFromSeconds=d.getTimeFromSeconds;exports.useTimer=d.useTimer;exports.useToggle=Ps.useToggle;exports.useUnmount=Cs.useUnmount;exports.useVibrate=Es.useVibrate;exports.useWebSocket=ms.useWebSocket;exports.useWindowEvent=ps.useWindowEvent;exports.useWindowFocus=Rs.useWindowFocus;exports.scrollTo=g.scrollTo;exports.useWindowScroll=g.useWindowScroll;exports.useWindowSize=Os.useWindowSize;exports.useWizard=ys.useWizard;exports.copy=T.copy;exports.legacyCopyToClipboard=T.legacyCopyToClipboard;exports.debounce=Is.debounce;exports.getDate=ks.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=vs.getRetry;exports.isTarget=Ds.isTarget;exports.throttle=bs.throttle;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveElement.mjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":";AAYO,MAAMA,IAAmB,MAAyC;AACvE,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAA+B,IAAI;AAE7E,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAwB,MAC5BH,EAAiB,qCAAU,aAAqC;AAE3D,kBAAA,iBAAiB,SAASG,GAAuB,EAAI,GACrD,OAAA,iBAAiB,QAAQA,GAAuB,EAAI,GAEpD,MAAM;AACJ,aAAA,oBAAoB,SAASA,GAAuB,EAAI,GACxD,OAAA,oBAAoB,QAAQA,GAAuB,EAAI;AAAA,IAChE;AAAA,EAAA,CACD,GAEDD,EAAU,MAAM;AACd,UAAME,IAAW,IAAI,iBAAiB,CAACC,MAAc;AAEhD,MAAAA,EAAA,OAAO,CAACC,MAAaA,EAAS,aAAa,MAAM,EACjD,IAAI,CAACA,MAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAAQ,CAACC,MAAS;AACjB,QAAAP,EAAiB,CAACQ,MACZD,MAASC,IAA0B,SAAS,gBACzCA,CACR;AAAA,MAAA,CACF;AAAA,IAAA,CACJ;AAED,WAAAJ,EAAS,QAAQ,UAAU;AAAA,MACzB,WAAW;AAAA,MACX,SAAS;AAAA,IAAA,CACV,GAEM,MAAM;AACX,MAAAA,EAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,EAAE,GAEEL;AACT;"}
1
+ {"version":3,"file":"useActiveElement.mjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":";AAcO,MAAMA,IAAmB,MAAyC;AACvE,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAA+B,IAAI;AAE7E,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAwB,MAC5BH,EAAiB,qCAAU,aAAqC;AAE3D,kBAAA,iBAAiB,SAASG,GAAuB,EAAI,GACrD,OAAA,iBAAiB,QAAQA,GAAuB,EAAI,GAEpD,MAAM;AACJ,aAAA,oBAAoB,SAASA,GAAuB,EAAI,GACxD,OAAA,oBAAoB,QAAQA,GAAuB,EAAI;AAAA,IAChE;AAAA,EAAA,CACD,GAEDD,EAAU,MAAM;AACd,UAAME,IAAW,IAAI,iBAAiB,CAACC,MAAc;AAEhD,MAAAA,EAAA,OAAO,CAACC,MAAaA,EAAS,aAAa,MAAM,EACjD,IAAI,CAACA,MAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAAQ,CAACC,MAAS;AACjB,QAAAP,EAAiB,CAACQ,MACZD,MAASC,IAA0B,SAAS,gBACzCA,CACR;AAAA,MAAA,CACF;AAAA,IAAA,CACJ;AAED,WAAAJ,EAAS,QAAQ,UAAU;AAAA,MACzB,WAAW;AAAA,MACX,SAAS;AAAA,IAAA,CACV,GAEM,MAAM;AACX,MAAAA,EAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,EAAE,GAEEL;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClickOutside.mjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.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 interface UseClickOutside {\n (target: HookTarget, callback: (event: Event) => void): void;\n\n <Target extends Element>(callback: (event: Event) => void, target?: never): StateRef<Target>;\n}\n\n/**\n * @name useClickOutside\n * @description - Hook to handle click events outside the specified target element(s)\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element(s) to detect outside clicks for\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {void}\n *\n * @example\n * useClickOutside(ref, () => console.log('click outside'));\n *\n * @overload\n * @template Target The target element(s)\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {(node: Target) => void} A React ref to attach to the target element\n *\n * @example\n * const ref = `useClickOutside`<HTMLDivElement>(() => console.log('click outside'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}\n */\nexport const useClickOutside = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (params[1] ? params[1] : params[0]) as (event: Event) => void;\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onClick = (event: Event) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (element && !element.contains(event.target as Node)) {\n internalCallbackRef.current(event);\n }\n };\n\n document.addEventListener('click', onClick);\n\n return () => {\n document.removeEventListener('click', onClick);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseClickOutside;\n"],"names":["useClickOutside","params","target","isTarget","callback","internalRef","useRefState","internalCallbackRef","useRef","useEffect","onClick","event","element","getElement"],"mappings":";;;;AAuCa,MAAAA,IAAmB,IAAIC,MAAkB;AAC9C,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYH,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE5CI,IAAcC,EAAqB,GACnCC,IAAsBC,EAAOJ,CAAQ;AAoB3C,MAnBAG,EAAoB,UAAUH,GAE9BK,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACG,EAAY,MAAO;AAC7B,UAAAK,IAAU,CAACC,MAAiB;AAChC,YAAMC,IAAWV,IAASW,EAAWX,CAAM,IAAIG,EAAY;AAE3D,MAAIO,KAAW,CAACA,EAAQ,SAASD,EAAM,MAAc,KACnDJ,EAAoB,QAAQI,CAAK;AAAA,IAErC;AAES,oBAAA,iBAAiB,SAASD,CAAO,GAEnC,MAAM;AACF,eAAA,oBAAoB,SAASA,CAAO;AAAA,IAC/C;AAAA,EACC,GAAA,CAACR,GAAQG,EAAY,KAAK,CAAC,GAE1B,CAAAH;AACG,WAAAG;AACT;"}
1
+ {"version":3,"file":"useClickOutside.mjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.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 interface UseClickOutside {\n (target: HookTarget, callback: (event: Event) => void): void;\n\n <Target extends Element>(callback: (event: Event) => void, target?: never): StateRef<Target>;\n}\n\n/**\n * @name useClickOutside\n * @description - Hook to handle click events outside the specified target element(s)\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element(s) to detect outside clicks for\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {void}\n *\n * @example\n * useClickOutside(ref, () => console.log('click outside'));\n *\n * @overload\n * @template Target The target element(s)\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {(node: Target) => void} A React ref to attach to the target element\n *\n * @example\n * const ref = useClickOutside<HTMLDivElement>(() => console.log('click outside'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}\n */\nexport const useClickOutside = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (params[1] ? params[1] : params[0]) as (event: Event) => void;\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onClick = (event: Event) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (element && !element.contains(event.target as Node)) {\n internalCallbackRef.current(event);\n }\n };\n\n document.addEventListener('click', onClick);\n\n return () => {\n document.removeEventListener('click', onClick);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseClickOutside;\n"],"names":["useClickOutside","params","target","isTarget","callback","internalRef","useRefState","internalCallbackRef","useRef","useEffect","onClick","event","element","getElement"],"mappings":";;;;AAuCa,MAAAA,IAAmB,IAAIC,MAAkB;AAC9C,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYH,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE5CI,IAAcC,EAAqB,GACnCC,IAAsBC,EAAOJ,CAAQ;AAoB3C,MAnBAG,EAAoB,UAAUH,GAE9BK,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACG,EAAY,MAAO;AAC7B,UAAAK,IAAU,CAACC,MAAiB;AAChC,YAAMC,IAAWV,IAASW,EAAWX,CAAM,IAAIG,EAAY;AAE3D,MAAIO,KAAW,CAACA,EAAQ,SAASD,EAAM,MAAc,KACnDJ,EAAoB,QAAQI,CAAK;AAAA,IAErC;AAES,oBAAA,iBAAiB,SAASD,CAAO,GAEnC,MAAM;AACF,eAAA,oBAAoB,SAASA,CAAO;AAAA,IAC/C;AAAA,EACC,GAAA,CAACR,GAAQG,EAAY,KAAK,CAAC,GAE1B,CAAAH;AACG,WAAAG;AACT;"}
@@ -0,0 +1,29 @@
1
+ import { useRef as s, useEffect as R } from "react";
2
+ import { useRefState as k } from "../useRefState/useRefState.mjs";
3
+ import { isTarget as T } from "../../utils/helpers/isTarget.mjs";
4
+ import { getElement as v } from "../../utils/helpers/getElement.mjs";
5
+ const C = 300, b = (...e) => {
6
+ const t = T(e[0]) ? e[0] : void 0, f = t ? e[1] : e[0], l = t ? e[2] : e[1], o = s(), r = s(0), c = k(), m = s(f);
7
+ m.current = f;
8
+ const u = s(l);
9
+ if (u.current = l, R(() => {
10
+ if (!t && !c.state) return;
11
+ const n = t ? v(t) : c.current;
12
+ if (!n) return;
13
+ const i = (d) => {
14
+ var E;
15
+ r.current += 1, r.current === 1 && (o.current = setTimeout(() => {
16
+ var a;
17
+ (a = u.current) != null && a.onSingleClick && u.current.onSingleClick(d), r.current = 0;
18
+ }, ((E = u.current) == null ? void 0 : E.threshold) ?? C)), r.current === 2 && (clearTimeout(o.current), m.current(d), r.current = 0);
19
+ };
20
+ return n.addEventListener("mousedown", i), n.addEventListener("touchstart", i), () => {
21
+ n.removeEventListener("mousedown", i), n.removeEventListener("touchstart", i), o.current && clearTimeout(o.current);
22
+ };
23
+ }, [t, c.state]), !t)
24
+ return c;
25
+ };
26
+ export {
27
+ b as useDoubleClick
28
+ };
29
+ //# sourceMappingURL=useDoubleClick.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDoubleClick.mjs","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":";;;;AAkCA,MAAMA,IAAyB,KA2BlBC,IAAkB,IAAIC,MAAuB;AAClD,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCI,IAAWH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCK,IAAeC,EAAsC,GACrDC,IAAgBD,EAAO,CAAC,GACxBE,IAAcC,EAAqB,GAEnCC,IAAsBJ,EAAOH,CAAQ;AAC3C,EAAAO,EAAoB,UAAUP;AACxB,QAAAQ,IAAqBL,EAAOF,CAAO;AAqCzC,MApCAO,EAAmB,UAAUP,GAE7BQ,EAAU,MAAM;AACd,QAAI,CAACX,KAAU,CAACO,EAAY,MAAO;AAEnC,UAAMK,IAAUZ,IAASa,EAAWb,CAAM,IAAIO,EAAY;AAC1D,QAAI,CAACK,EAAS;AAER,UAAAE,IAAU,CAACC,MAA6B;;AAC5C,MAAAT,EAAc,WAAW,GAErBA,EAAc,YAAY,MACfF,EAAA,UAAU,WAAW,MAAM;;AACtC,SAAIY,IAAAN,EAAmB,YAAnB,QAAAM,EAA4B,iBACXN,EAAA,QAAQ,cAAcK,CAAK,GAChDT,EAAc,UAAU;AAAA,MACvB,KAAAU,IAAAN,EAAmB,YAAnB,gBAAAM,EAA4B,cAAanB,CAAsB,IAGhES,EAAc,YAAY,MAC5B,aAAaF,EAAa,OAAO,GACjCK,EAAoB,QAAQM,CAAK,GACjCT,EAAc,UAAU;AAAA,IAE5B;AAEQ,WAAAM,EAAA,iBAAiB,aAAaE,CAAwB,GACtDF,EAAA,iBAAiB,cAAcE,CAAwB,GAExD,MAAM;AACH,MAAAF,EAAA,oBAAoB,aAAaE,CAAwB,GACzDF,EAAA,oBAAoB,cAAcE,CAAwB,GAC9DV,EAAa,WAAsB,aAAAA,EAAa,OAAO;AAAA,IAC7D;AAAA,EACC,GAAA,CAACJ,GAAQO,EAAY,KAAK,CAAC,GAE1B,CAAAP;AACG,WAAAO;AACT;"}
@@ -1,22 +1,35 @@
1
- import { useState as E, useRef as m } from "react";
2
- const P = 400, s = (L, e) => {
3
- const [f, l] = E(!1), u = m(), a = m(!1), T = (r) => {
4
- var c;
5
- (c = e == null ? void 0 : e.onStart) == null || c.call(e, r), a.current = !0, u.current = setTimeout(() => {
6
- L(r), l(!0);
7
- }, (e == null ? void 0 : e.threshold) ?? P);
8
- }, d = (r) => {
9
- var c, h;
10
- f ? (c = e == null ? void 0 : e.onFinish) == null || c.call(e, r) : a.current && ((h = e == null ? void 0 : e.onCancel) == null || h.call(e, r)), l(!1), a.current = !1, u.current && clearTimeout(u.current);
1
+ import { useState as T, useRef as l, useEffect as S } from "react";
2
+ import { useRefState as g } from "../useRefState/useRefState.mjs";
3
+ import { isTarget as C } from "../../utils/helpers/isTarget.mjs";
4
+ import { getElement as P } from "../../utils/helpers/getElement.mjs";
5
+ const b = 400, I = (...o) => {
6
+ const n = C(o[0]) ? o[0] : void 0, E = n ? o[1] : o[0], L = n ? o[2] : o[1], [w, h] = T(!1), u = l(), v = l(!1), f = g(), R = l(E);
7
+ R.current = E;
8
+ const c = l(L);
9
+ return c.current = L, S(() => {
10
+ if (!n && !f.state) return;
11
+ const e = n ? P(n) : f.current;
12
+ if (!e) return;
13
+ const a = (i) => {
14
+ var s, r, d;
15
+ (r = (s = c.current) == null ? void 0 : s.onStart) == null || r.call(s, i), v.current = !0, u.current = setTimeout(() => {
16
+ R.current(i), h(!0);
17
+ }, ((d = c.current) == null ? void 0 : d.threshold) ?? b);
18
+ }, t = (i) => {
19
+ h((s) => {
20
+ var r, d, m, p;
21
+ return s ? (d = (r = c.current) == null ? void 0 : r.onFinish) == null || d.call(r, i) : v.current && ((p = (m = c.current) == null ? void 0 : m.onCancel) == null || p.call(m, i)), !1;
22
+ }), v.current = !1, u.current && clearTimeout(u.current);
23
+ };
24
+ return e.addEventListener("mousedown", a), e.addEventListener("touchstart", a), e.addEventListener("mouseup", t), e.addEventListener("touchend", t), window.addEventListener("mouseup", t), window.addEventListener("touchend", t), () => {
25
+ e.removeEventListener("mousedown", a), e.removeEventListener("touchstart", a), e.removeEventListener("mouseup", t), e.removeEventListener("touchend", t), window.removeEventListener("mouseup", t), window.removeEventListener("touchend", t), u.current && clearTimeout(u.current);
26
+ };
27
+ }, [n, f.state]), n ? w : {
28
+ ref: f,
29
+ pressed: w
11
30
  };
12
- return [{
13
- onMouseDown: T,
14
- onTouchStart: T,
15
- onMouseUp: d,
16
- onTouchEnd: d
17
- }, f];
18
31
  };
19
32
  export {
20
- s as useLongPress
33
+ I as useLongPress
21
34
  };
22
35
  //# sourceMappingURL=useLongPress.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLongPress.mjs","sources":["../../../../src/hooks/useLongPress/useLongPress.ts"],"sourcesContent":["import type { MouseEventHandler, RefObject, TouchEventHandler } from 'react';\n\nimport { useRef, useState } from 'react';\n\n// * The use long press target type */\nexport type UseLongPressTarget = (() => Element) | Element | RefObject<Element | null | undefined>;\n\nexport type LongPressReactEvents<Target extends Element = Element> =\n | MouseEventHandler<Target>\n | TouchEventHandler<Target>;\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: LongPressReactEvents) => void;\n // * The callback function to be invoked on long press end\n onFinish?: (event: LongPressReactEvents) => void;\n // * The callback function to be invoked on long press start\n onStart?: (event: LongPressReactEvents) => void;\n}\n\n// * The use long press bind type */\nexport interface UseLongPressBind {\n /** The callback function to be invoked on mouse down */\n onMouseDown: MouseEventHandler<Element>;\n /** The callback function to be invoked on mouse up */\n onMouseUp: MouseEventHandler<Element>;\n /** The callback function to be invoked on touch end */\n onTouchEnd: TouchEventHandler<Element>;\n /** The callback function to be invoked on touch start */\n onTouchStart: TouchEventHandler<Element>;\n}\n\n// * The use long press return type */\nexport type UseLongPressReturn = [UseLongPressBind, boolean];\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 * @template Target The target element\n * @param {Target} target The target element to be long pressed\n * @param {(event: Event) => void} callback The callback function to be invoked on long press\n * @param {number} [options.threshold=400] The threshold time in milliseconds\n * @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start\n * @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish\n * @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel\n * @returns {UseLongPressReturn<Target>} The ref of the target element\n *\n * @example\n * const [bind, longPressing] = useLongPress(() => console.log('callback'));\n */\nexport const useLongPress = (\n callback: (event: LongPressReactEvents) => void,\n options?: UseLongPressOptions\n): UseLongPressReturn => {\n const [isLongPressActive, setIsLongPressActive] = useState(false);\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const isPressed = useRef(false);\n\n const start = (event: LongPressReactEvents) => {\n options?.onStart?.(event);\n\n isPressed.current = true;\n timeoutIdRef.current = setTimeout(() => {\n callback(event);\n setIsLongPressActive(true);\n }, options?.threshold ?? DEFAULT_THRESHOLD_TIME);\n };\n\n const cancel = (event: LongPressReactEvents) => {\n if (isLongPressActive) {\n options?.onFinish?.(event);\n } else if (isPressed.current) {\n options?.onCancel?.(event);\n }\n\n setIsLongPressActive(false);\n isPressed.current = false;\n\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n\n const bind = {\n onMouseDown: start,\n onTouchStart: start,\n onMouseUp: cancel,\n onTouchEnd: cancel\n } as unknown as UseLongPressBind;\n\n return [bind, isLongPressActive];\n};\n"],"names":["DEFAULT_THRESHOLD_TIME","useLongPress","callback","options","isLongPressActive","setIsLongPressActive","useState","timeoutIdRef","useRef","isPressed","start","event","_a","cancel","_b"],"mappings":";AAsCA,MAAMA,IAAyB,KAmBlBC,IAAe,CAC1BC,GACAC,MACuB;AACvB,QAAM,CAACC,GAAmBC,CAAoB,IAAIC,EAAS,EAAK,GAC1DC,IAAeC,EAAsC,GACrDC,IAAYD,EAAO,EAAK,GAExBE,IAAQ,CAACC,MAAgC;;AAC7C,KAAAC,IAAAT,KAAA,gBAAAA,EAAS,YAAT,QAAAS,EAAA,KAAAT,GAAmBQ,IAEnBF,EAAU,UAAU,IACPF,EAAA,UAAU,WAAW,MAAM;AACtC,MAAAL,EAASS,CAAK,GACdN,EAAqB,EAAI;AAAA,IAAA,IACxBF,KAAA,gBAAAA,EAAS,cAAaH,CAAsB;AAAA,EACjD,GAEMa,IAAS,CAACF,MAAgC;;AAC9C,IAAIP,KACFQ,IAAAT,KAAA,gBAAAA,EAAS,aAAT,QAAAS,EAAA,KAAAT,GAAoBQ,KACXF,EAAU,aACnBK,IAAAX,KAAA,gBAAAA,EAAS,aAAT,QAAAW,EAAA,KAAAX,GAAoBQ,KAGtBN,EAAqB,EAAK,GAC1BI,EAAU,UAAU,IAEhBF,EAAa,WAAsB,aAAAA,EAAa,OAAO;AAAA,EAC7D;AASO,SAAA,CAPM;AAAA,IACX,aAAaG;AAAA,IACb,cAAcA;AAAA,IACd,WAAWG;AAAA,IACX,YAAYA;AAAA,EACd,GAEcT,CAAiB;AACjC;"}
1
+ {"version":3,"file":"useLongPress.mjs","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":";;;;AAyCA,MAAMA,IAAyB,KAyBlBC,IAAgB,IAAIC,MAAuB;AAChD,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCI,IAAWH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExC,CAACK,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtCC,IAAeC,EAAsC,GACrDC,IAAeD,EAAO,EAAK,GAC3BE,IAAcC,EAAqB,GAEnCC,IAAsBJ,EAAON,CAAQ;AAC3C,EAAAU,EAAoB,UAAUV;AACxB,QAAAW,IAAqBL,EAAOL,CAAO;AAqDzC,SApDAU,EAAmB,UAAUV,GAE7BW,EAAU,MAAM;AACd,QAAI,CAACd,KAAU,CAACU,EAAY,MAAO;AAEnC,UAAMK,IAAUf,IAASgB,EAAWhB,CAAM,IAAIU,EAAY;AAC1D,QAAI,CAACK,EAAS;AAER,UAAAE,IAAU,CAACC,MAA2B;;AACvB,OAAAC,KAAAC,IAAAP,EAAA,YAAA,gBAAAO,EAAS,YAAT,QAAAD,EAAA,KAAAC,GAAmBF,IAEtCT,EAAa,UAAU,IACVF,EAAA,UAAU,WAAW,MAAM;AACtC,QAAAK,EAAoB,QAAQM,CAAK,GACjCb,EAAW,EAAI;AAAA,MACd,KAAAgB,IAAAR,EAAmB,YAAnB,gBAAAQ,EAA4B,cAAaxB,CAAsB;AAAA,IACpE,GAEMyB,IAAW,CAACJ,MAA2B;AAC3C,MAAAb,EAAW,CAACkB,MAAgB;;AAC1B,eAAIA,KACiBJ,KAAAC,IAAAP,EAAA,YAAA,gBAAAO,EAAS,aAAT,QAAAD,EAAA,KAAAC,GAAoBF,KAC9BT,EAAa,aACHe,KAAAH,IAAAR,EAAA,YAAA,gBAAAQ,EAAS,aAAT,QAAAG,EAAA,KAAAH,GAAoBH,KAGlC;AAAA,MAAA,CACR,GAEDT,EAAa,UAAU,IACnBF,EAAa,WAAsB,aAAAA,EAAa,OAAO;AAAA,IAC7D;AAEQ,WAAAQ,EAAA,iBAAiB,aAAaE,CAAwB,GACtDF,EAAA,iBAAiB,cAAcE,CAAwB,GACvDF,EAAA,iBAAiB,WAAWO,CAAyB,GACrDP,EAAA,iBAAiB,YAAYO,CAAyB,GACvD,OAAA,iBAAiB,WAAWA,CAAyB,GACrD,OAAA,iBAAiB,YAAYA,CAAyB,GAEtD,MAAM;AACH,MAAAP,EAAA,oBAAoB,aAAaE,CAAwB,GACzDF,EAAA,oBAAoB,cAAcE,CAAwB,GAC1DF,EAAA,oBAAoB,WAAWO,CAAyB,GACxDP,EAAA,oBAAoB,YAAYO,CAAyB,GAC1D,OAAA,oBAAoB,WAAWA,CAAyB,GACxD,OAAA,oBAAoB,YAAYA,CAAyB,GAE5Df,EAAa,WAAsB,aAAAA,EAAa,OAAO;AAAA,IAC7D;AAAA,EACC,GAAA,CAACP,GAAQU,EAAY,KAAK,CAAC,GAE1BV,IAAeI,IACZ;AAAA,IACL,KAAKM;AAAA,IACL,SAAAN;AAAA,EACF;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMouse.mjs","sources":["../../../../src/hooks/useMouse/useMouse.ts"],"sourcesContent":["import { useEffect, 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 mouse return type */\nexport interface UseMouseReturn {\n /** The current element */\n element?: Element;\n /** The current element position x */\n elementPositionX: number;\n /** The current element position y */\n elementPositionY: number;\n /** The current element x position */\n elementX: number;\n /** The current element y position */\n elementY: number;\n /** The current mouse x position */\n x: number;\n /** The current mouse y position */\n y: number;\n}\n\nexport interface UseMouse {\n (target: HookTarget): UseMouseReturn;\n\n <Target extends Element>(target?: never): UseMouseReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useMouse\n * @description - Hook that manages a mouse position\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to manage the mouse position for\n * @returns {UseMouseReturn} An object with the current mouse position\n *\n * @example\n * const { x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse(ref);\n *\n * @overload\n * @template Target The target element\n * @returns {UseMouseReturn & { ref: StateRef<Target> }} An object with the current mouse position and a ref\n *\n * @example\n * const { ref, x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse();\n */\nexport const useMouse = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n\n const [value, setValue] = useState<UseMouseReturn>({\n x: 0,\n y: 0,\n element: undefined,\n elementX: 0,\n elementY: 0,\n elementPositionX: 0,\n elementPositionY: 0\n });\n\n const internalRef = useRefState<Element>();\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onMouseMove = (event: MouseEvent) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const updatedValue = {\n x: event.pageX,\n y: event.pageY\n } as typeof value;\n\n const { left, top } = element.getBoundingClientRect();\n const elementPositionX = left + window.scrollX;\n const elementPositionY = top + window.scrollY;\n const elementX = event.pageX - elementPositionX;\n const elementY = event.pageY - elementPositionY;\n\n updatedValue.element = element;\n updatedValue.elementX = elementX;\n updatedValue.elementY = elementY;\n updatedValue.elementPositionX = elementPositionX;\n updatedValue.elementPositionY = elementPositionY;\n\n setValue((prevValue) => ({\n ...prevValue,\n ...updatedValue\n }));\n };\n\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [internalRef.state, target]);\n\n if (target) return value;\n return {\n ref: internalRef,\n ...value\n };\n}) as UseMouse;\n"],"names":["useMouse","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","onMouseMove","event","element","getElement","updatedValue","left","top","elementPositionX","elementPositionY","elementX","elementY","prevValue"],"mappings":";;;;AAqDa,MAAAA,IAAY,IAAIC,MAAkB;AACvC,QAAAC,IAASC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE3C,CAACG,GAAOC,CAAQ,IAAIC,EAAyB;AAAA,IACjD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EAAA,CACnB,GAEKC,IAAcC,EAAqB;AAqCzC,SAnCAC,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACK,EAAY,MAAO;AAC7B,UAAAG,IAAc,CAACC,MAAsB;AACzC,YAAMC,IAAWV,IAASW,EAAWX,CAAM,IAAIK,EAAY;AAC3D,UAAI,CAACK,EAAS;AAEd,YAAME,IAAe;AAAA,QACnB,GAAGH,EAAM;AAAA,QACT,GAAGA,EAAM;AAAA,MACX,GAEM,EAAE,MAAAI,GAAM,KAAAC,MAAQJ,EAAQ,sBAAsB,GAC9CK,IAAmBF,IAAO,OAAO,SACjCG,IAAmBF,IAAM,OAAO,SAChCG,IAAWR,EAAM,QAAQM,GACzBG,IAAWT,EAAM,QAAQO;AAE/B,MAAAJ,EAAa,UAAUF,GACvBE,EAAa,WAAWK,GACxBL,EAAa,WAAWM,GACxBN,EAAa,mBAAmBG,GAChCH,EAAa,mBAAmBI,GAEhCb,EAAS,CAACgB,OAAe;AAAA,QACvB,GAAGA;AAAA,QACH,GAAGP;AAAA,MAAA,EACH;AAAA,IACJ;AAES,oBAAA,iBAAiB,aAAaJ,CAAW,GAC3C,MAAM;AACF,eAAA,oBAAoB,aAAaA,CAAW;AAAA,IACvD;AAAA,EACC,GAAA,CAACH,EAAY,OAAOL,CAAM,CAAC,GAE1BA,IAAeE,IACZ;AAAA,IACL,KAAKG;AAAA,IACL,GAAGH;AAAA,EACL;AACF;"}
1
+ {"version":3,"file":"useMouse.mjs","sources":["../../../../src/hooks/useMouse/useMouse.ts"],"sourcesContent":["import { useEffect, 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 mouse return type */\nexport interface UseMouseReturn {\n /** The current element */\n element?: Element;\n /** The current element position x */\n elementPositionX: number;\n /** The current element position y */\n elementPositionY: number;\n /** The current element x position */\n elementX: number;\n /** The current element y position */\n elementY: number;\n /** The current mouse x position */\n x: number;\n /** The current mouse y position */\n y: number;\n}\n\nexport interface UseMouse {\n (target: HookTarget): UseMouseReturn;\n\n <Target extends Element>(target?: never): UseMouseReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useMouse\n * @description - Hook that manages a mouse position\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to manage the mouse position for\n * @returns {UseMouseReturn} An object with the current mouse position\n *\n * @example\n * const { x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse(ref);\n *\n * @overload\n * @template Target The target element\n * @returns {UseMouseReturn & { ref: StateRef<Target> }} An object with the current mouse position and a ref\n *\n * @example\n * const { ref, x, y, elementX, elementY, elementPositionX, elementPositionY } = useMouse();\n */\nexport const useMouse = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n\n const [value, setValue] = useState<UseMouseReturn>({\n x: 0,\n y: 0,\n element: undefined,\n elementX: 0,\n elementY: 0,\n elementPositionX: 0,\n elementPositionY: 0\n });\n\n const internalRef = useRefState<Element>();\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const onMouseMove = (event: MouseEvent) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const updatedValue = {\n x: event.pageX,\n y: event.pageY\n } as typeof value;\n\n const { left, top } = element.getBoundingClientRect();\n const elementPositionX = left + window.scrollX;\n const elementPositionY = top + window.scrollY;\n const elementX = event.pageX - elementPositionX;\n const elementY = event.pageY - elementPositionY;\n\n updatedValue.element = element;\n updatedValue.elementX = elementX;\n updatedValue.elementY = elementY;\n updatedValue.elementPositionX = elementPositionX;\n updatedValue.elementPositionY = elementPositionY;\n\n setValue((prevValue) => ({\n ...prevValue,\n ...updatedValue\n }));\n };\n\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [internalRef.state, target]);\n\n if (target) return value;\n return {\n ref: internalRef,\n ...value\n };\n}) as UseMouse;\n"],"names":["useMouse","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","onMouseMove","event","element","getElement","updatedValue","left","top","elementPositionX","elementPositionY","elementX","elementY","prevValue"],"mappings":";;;;AAqDa,MAAAA,IAAY,IAAIC,MAAkB;AACvC,QAAAC,IAASC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE3C,CAACG,GAAOC,CAAQ,IAAIC,EAAyB;AAAA,IACjD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EAAA,CACnB,GAEKC,IAAcC,EAAqB;AAsCzC,SApCAC,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACK,EAAY,MAAO;AAE7B,UAAAG,IAAc,CAACC,MAAsB;AACzC,YAAMC,IAAWV,IAASW,EAAWX,CAAM,IAAIK,EAAY;AAC3D,UAAI,CAACK,EAAS;AAEd,YAAME,IAAe;AAAA,QACnB,GAAGH,EAAM;AAAA,QACT,GAAGA,EAAM;AAAA,MACX,GAEM,EAAE,MAAAI,GAAM,KAAAC,MAAQJ,EAAQ,sBAAsB,GAC9CK,IAAmBF,IAAO,OAAO,SACjCG,IAAmBF,IAAM,OAAO,SAChCG,IAAWR,EAAM,QAAQM,GACzBG,IAAWT,EAAM,QAAQO;AAE/B,MAAAJ,EAAa,UAAUF,GACvBE,EAAa,WAAWK,GACxBL,EAAa,WAAWM,GACxBN,EAAa,mBAAmBG,GAChCH,EAAa,mBAAmBI,GAEhCb,EAAS,CAACgB,OAAe;AAAA,QACvB,GAAGA;AAAA,QACH,GAAGP;AAAA,MAAA,EACH;AAAA,IACJ;AAES,oBAAA,iBAAiB,aAAaJ,CAAW,GAC3C,MAAM;AACF,eAAA,oBAAoB,aAAaA,CAAW;AAAA,IACvD;AAAA,EACC,GAAA,CAACH,EAAY,OAAOL,CAAM,CAAC,GAE1BA,IAAeE,IACZ;AAAA,IACL,KAAKG;AAAA,IACL,GAAGH;AAAA,EACL;AACF;"}