@siberiacancode/reactuse 0.0.113 → 0.0.115
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.
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs +1 -1
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +2 -0
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -0
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs +1 -1
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs.map +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
- package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
- package/dist/cjs/hooks/useParallax/useParallax.cjs +1 -1
- package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +2 -0
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -0
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs +1 -1
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs +4 -3
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +29 -0
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -0
- package/dist/esm/hooks/useEventListener/useEventListener.mjs +15 -15
- package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs +30 -17
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
- package/dist/esm/hooks/useParallax/useParallax.mjs +90 -85
- package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +41 -0
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -0
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs +4 -3
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
- package/dist/esm/index.mjs +257 -252
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +2 -0
- package/dist/types/hooks/useDoubleClick/useDoubleClick.d.ts +38 -0
- package/dist/types/hooks/useEventListener/useEventListener.d.ts +5 -5
- package/dist/types/hooks/useLongPress/useLongPress.d.ts +27 -25
- package/dist/types/hooks/useSpeechRecognition/useSpeechRecognition.d.ts +69 -0
- package/package.json +2 -1
|
@@ -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 */\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":"
|
|
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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../useEventListener/useEventListener.cjs"),s=(e,t,n)=>u.useEventListener(document,e,t,n);exports.useDocumentEvent=s;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../useEventListener/useEventListener.cjs"),r=require("../../utils/helpers/getElement.cjs"),s=(e,t,n)=>u.useEventListener(r.target(document),e,t,n);exports.useDocumentEvent=s;
|
|
2
2
|
//# sourceMappingURL=useDocumentEvent.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentEvent.cjs","sources":["../../../../src/hooks/useDocumentEvent/useDocumentEvent.ts"],"sourcesContent":["import type { UseEventListenerOptions } from '../useEventListener/useEventListener';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/**\n * @name useDocumentEvent\n * @description - Hook attaches an event listener to the document object for the specified event\n * @category Browser\n *\n * @template Event Key of document event map.\n * @param {Event} event The event to listen for.\n * @param {(event: DocumentEventMap[Event]) => void} listener The callback function to be executed when the event is triggered\n * @param {UseEventListenerOptions} [options] The options for the event listener\n * @returns {void}\n *\n * @example\n * useDocumentEvent('click', () => console.log('clicked'));\n */\nexport const useDocumentEvent = <Event extends keyof DocumentEventMap>(\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => any,\n options?: UseEventListenerOptions\n) => useEventListener(document, event, listener, options);\n"],"names":["useDocumentEvent","event","listener","options","useEventListener"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDocumentEvent.cjs","sources":["../../../../src/hooks/useDocumentEvent/useDocumentEvent.ts"],"sourcesContent":["import { target } from '@/utils/helpers';\n\nimport type { UseEventListenerOptions } from '../useEventListener/useEventListener';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/**\n * @name useDocumentEvent\n * @description - Hook attaches an event listener to the document object for the specified event\n * @category Browser\n *\n * @template Event Key of document event map.\n * @param {Event} event The event to listen for.\n * @param {(event: DocumentEventMap[Event]) => void} listener The callback function to be executed when the event is triggered\n * @param {UseEventListenerOptions} [options] The options for the event listener\n * @returns {void}\n *\n * @example\n * useDocumentEvent('click', () => console.log('clicked'));\n */\nexport const useDocumentEvent = <Event extends keyof DocumentEventMap>(\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => any,\n options?: UseEventListenerOptions\n) => useEventListener(target(document), event, listener, options);\n"],"names":["useDocumentEvent","event","listener","options","useEventListener","target"],"mappings":"4LAoBaA,EAAmB,CAC9BC,EACAC,EACAC,IACGC,EAAAA,iBAAiBC,EAAA,OAAO,QAAQ,EAAGJ,EAAOC,EAAUC,CAAO"}
|
|
@@ -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 ): {\n ref: StateRef<Target>;\n clicked: boolean;\n };\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 */\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":"mPAqCMA,EAAyB,IAyBlBC,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
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),E=require("../useEvent/useEvent.cjs"),f=require("../useRefState/useRefState.cjs"),g=require("../../utils/helpers/isTarget.cjs"),d=require("../../utils/helpers/getElement.cjs"),q=(...e)=>{const t=g.isTarget(e[0])?e[0]:void 0,n=t?e[1]:e[0],c=t?e[2]:e[1],r=t?e[3]:e[2],s=f.useRefState(window),u=E.useEvent(c);if(v.useEffect(()=>{const i=t?d.getElement(t):s.current;if(!i)return;const o=l=>u(l);return i.addEventListener(n,o,r),()=>{i.removeEventListener(n,o,r)}},[t,s.state,n,r]),!t)return s};exports.useEventListener=q;
|
|
2
2
|
//# sourceMappingURL=useEventListener.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEventListener.cjs","sources":["../../../../src/hooks/useEventListener/useEventListener.ts"],"sourcesContent":["import { useEffect } 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 { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use event listener options */\nexport type UseEventListenerOptions = boolean | AddEventListenerOptions;\n\n/** The use event listener return type */\nexport type UseEventListenerReturn<Target extends Element> = StateRef<Target>;\n\nexport interface UseEventListener {\n <Event extends keyof WindowEventMap = keyof WindowEventMap>(\n target:
|
|
1
|
+
{"version":3,"file":"useEventListener.cjs","sources":["../../../../src/hooks/useEventListener/useEventListener.ts"],"sourcesContent":["import { useEffect } 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 { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use event listener options */\nexport type UseEventListenerOptions = boolean | AddEventListenerOptions;\n\n/** The use event listener return type */\nexport type UseEventListenerReturn<Target extends Element> = StateRef<Target>;\n\nexport interface UseEventListener {\n <Event extends keyof WindowEventMap = keyof WindowEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Window, event: WindowEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof DocumentEventMap = keyof DocumentEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Element, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends Element, Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n event: Event,\n listener: (this: Target, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n\n <\n Target extends Element,\n Event extends keyof MediaQueryListEventMap = keyof MediaQueryListEventMap\n >(\n event: Event,\n listener: (this: Target, event: MediaQueryListEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n}\n\n/**\n * @name useEventListener\n * @description - Hook that attaches an event listener to the specified target\n * @category Browser\n *\n * @overload\n * @template Event Key of window event map\n * @param {Window} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Window, event: WindowEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(window, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @param {Document} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Document, event: DocumentEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(document, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {HookTarget} target The target element to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(ref, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event] | MediaQueryListEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {UseEventListenerReturn<Target>} A reference to the target element\n *\n * @example\n * const ref = useEventListener('click', () => console.log('click'));\n */\nexport const useEventListener = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const event = (target ? params[1] : params[0]) as string;\n const listener = (target ? params[2] : params[1]) as (...arg: any[]) => undefined | void;\n const options = (target ? params[3] : params[2]) as UseEventListenerOptions | undefined;\n\n const internalRef = useRefState(window);\n const internalListener = useEvent(listener);\n\n useEffect(() => {\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const callback = (event: Event) => internalListener(event);\n\n element.addEventListener(event, callback, options);\n return () => {\n element.removeEventListener(event, callback, options);\n };\n }, [target, internalRef.state, event, options]);\n\n if (target) return;\n return internalRef;\n}) as UseEventListener;\n"],"names":["useEventListener","params","target","isTarget","event","listener","options","internalRef","useRefState","internalListener","useEvent","useEffect","element","getElement","callback"],"mappings":"yRA2GaA,EAAoB,IAAIC,IAAkB,CAC/C,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAASF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACtCI,EAAYH,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACzCK,EAAWJ,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAExCM,EAAcC,cAAY,MAAM,EAChCC,EAAmBC,WAASL,CAAQ,EAc1C,GAZAM,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAUV,EAASW,EAAAA,WAAWX,CAAM,EAAIK,EAAY,QAC1D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAYV,GAAiBK,EAAiBL,CAAK,EAEjD,OAAAQ,EAAA,iBAAiBR,EAAOU,EAAUR,CAAO,EAC1C,IAAM,CACHM,EAAA,oBAAoBR,EAAOU,EAAUR,CAAO,CACtD,CAAA,EACC,CAACJ,EAAQK,EAAY,MAAOH,EAAOE,CAAO,CAAC,EAE1C,CAAAJ,EACG,OAAAK,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
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
|
|
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,
|
|
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
|
|
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 {
|
|
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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),u=()=>(window==null?void 0:window.SpeechRecognition)??(window==null?void 0:window.webkitSpeechRecognition),I=(h={})=>{const g=typeof window<"u"&&!!u(),{continuous:w=!1,interimResults:b=!1,language:p="en-US",grammars:f,maxAlternatives:x=1,onStart:i,onEnd:r,onError:c,onResult:a}=h,[S,s]=n.useState(!1),[y,A]=n.useState(""),[T,j]=n.useState(!1),[k,d]=n.useState(null),[o]=n.useState(()=>{if(!g)return{};const l=u(),e=new l;return e.continuous=w,f&&(e.grammars=f),e.interimResults=b,e.lang=p,e.maxAlternatives=x,e.onstart=()=>{s(!0),j(!1),i==null||i()},e.onend=()=>{s(!1),r==null||r()},e.onerror=t=>{d(t),s(!1),c==null||c(t)},e.onresult=t=>{console.log("onresult",t);const q=t.results[t.resultIndex],{transcript:F}=q[0];A(F),d(null),a==null||a(t)},e.onend=()=>{s(!1),e.lang=p},e});n.useEffect(()=>()=>o.stop(),[]);const R=()=>o.start(),m=()=>o.stop();return{supported:g,transcript:y,recognition:o,final:T,listening:S,error:k,start:R,stop:m,toggle:(l=!S)=>{if(l)return R();m()}}};exports.getSpeechRecognition=u;exports.useSpeechRecognition=I;
|
|
2
|
+
//# sourceMappingURL=useSpeechRecognition.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSpeechRecognition.cjs","sources":["../../../../src/hooks/useSpeechRecognition/useSpeechRecognition.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/** The use speech recognition hook options type */\ninterface UseSpeechRecognitionOptions {\n /** If true, recognition continues even after pauses in speech. Default is false */\n continuous?: SpeechRecognition['continuous'];\n /** A list of grammar rules */\n grammars?: SpeechRecognition['grammars'];\n /** If true, interim (non-final) results are provided as the user speaks */\n interimResults?: SpeechRecognition['interimResults'];\n /** The language in which recognition should occur. Must be a valid BCP 47 language tag (e.g., \"en-US\", \"ru-RU\") */\n language?: SpeechRecognition['lang'];\n /** The maximum number of alternative transcripts returned for a given recognition result. Must be a positive integer */\n maxAlternatives?: SpeechRecognition['maxAlternatives'];\n /** Callback invoked when speech recognition ends */\n onEnd?: () => void;\n /** Callback invoked when an error occurs during recognition */\n onError?: (error: SpeechRecognitionErrorEvent) => void;\n /** Callback invoked when recognition produces a result */\n onResult?: (event: SpeechRecognitionEvent) => void;\n /** Callback invoked when speech recognition starts */\n onStart?: () => void;\n}\n\n/** The return type of the useSpeechRecognition hook. */\ninterface UseSpeechRecognitionReturn {\n /** The error state */\n error: SpeechRecognitionErrorEvent | null;\n /** The final transcript */\n final: boolean;\n /** Whether the hook is currently listening for speech */\n listening: boolean;\n /** The speech recognition instance */\n recognition: SpeechRecognition;\n /** Whether the current browser supports the Web Speech API */\n supported: boolean;\n /** The current transcript */\n transcript: string;\n /** Begins speech recognition */\n start: () => void;\n /** Ends speech recognition, finalizing results */\n stop: () => void;\n /** Toggles the listening state */\n toggle: (value?: boolean) => void;\n}\n\nexport const getSpeechRecognition = () =>\n window?.SpeechRecognition ?? window?.webkitSpeechRecognition;\n\n/**\n * @name useSpeechRecognition\n * @description - Hook that provides a streamlined interface for incorporating speech-to-text functionality\n * @category Sensors\n *\n * @browserapi window.SpeechRecognition https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n *\n * @param {boolean} [options.continuous=false] Whether recognition should continue after pauses\n * @param {boolean} [options.interimResults=false] Whether interim results should be provided\n * @param {string} [options.language=\"en-US\"] The language for recognition, as a valid BCP 47 tag\n * @param {number} [options.maxAlternatives=1] The maximum number of alternative transcripts to return\n * @param {SpeechGrammarList} [options.grammars] A list of grammar rules\n * @param {() => void} [options.onStart] Callback invoked when speech recognition starts\n * @param {() => void} [options.onEnd] Callback invoked when speech recognition ends\n * @param {(error: SpeechRecognitionErrorEvent) => void} [options.onError] Callback invoked when an error occurs during recognition\n * @param {(event: SpeechRecognitionEvent) => void} [options.onResult] Callback invoked when recognition produces a result\n * @returns {UseSpeechRecognitionReturn} An object containing the speech recognition functionality\n *\n * @example\n * const { supported, value, recognition, listening, error, start, stop, toggle } = useSpeechRecognition();\n */\nexport const useSpeechRecognition = (\n options: UseSpeechRecognitionOptions = {}\n): UseSpeechRecognitionReturn => {\n const supported = typeof window !== 'undefined' && !!getSpeechRecognition();\n\n const {\n continuous = false,\n interimResults = false,\n language = 'en-US',\n grammars,\n maxAlternatives = 1,\n onStart,\n onEnd,\n onError,\n onResult\n } = options;\n\n const [listening, setListening] = useState(false);\n const [transcript, setTranscript] = useState('');\n const [final, setFinal] = useState(false);\n const [error, setError] = useState<SpeechRecognitionErrorEvent | null>(null);\n const [recognition] = useState<SpeechRecognition>(() => {\n if (!supported) return {} as SpeechRecognition;\n\n const SpeechRecognition = getSpeechRecognition();\n const speechRecognition = new SpeechRecognition();\n\n speechRecognition.continuous = continuous;\n if (grammars) speechRecognition.grammars = grammars;\n speechRecognition.interimResults = interimResults;\n speechRecognition.lang = language;\n speechRecognition.maxAlternatives = maxAlternatives;\n\n speechRecognition.onstart = () => {\n setListening(true);\n setFinal(false);\n onStart?.();\n };\n speechRecognition.onend = () => {\n setListening(false);\n onEnd?.();\n };\n speechRecognition.onerror = (event) => {\n setError(event);\n setListening(false);\n onError?.(event);\n };\n speechRecognition.onresult = (event) => {\n console.log('onresult', event);\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n\n setTranscript(transcript);\n setError(null);\n onResult?.(event);\n };\n speechRecognition.onend = () => {\n setListening(false);\n speechRecognition.lang = language;\n };\n\n return speechRecognition;\n });\n\n useEffect(() => () => recognition.stop(), []);\n\n const start = () => recognition.start();\n const stop = () => recognition.stop();\n\n const toggle = (value = !listening) => {\n if (value) return start();\n stop();\n };\n\n return { supported, transcript, recognition, final, listening, error, start, stop, toggle };\n};\n"],"names":["getSpeechRecognition","useSpeechRecognition","options","supported","continuous","interimResults","language","grammars","maxAlternatives","onStart","onEnd","onError","onResult","listening","setListening","useState","transcript","setTranscript","final","setFinal","error","setError","recognition","SpeechRecognition","speechRecognition","event","currentResult","useEffect","start","stop","value"],"mappings":"yGA8CaA,EAAuB,KAClC,2BAAQ,qBAAqB,2BAAQ,yBAuB1BC,EAAuB,CAClCC,EAAuC,KACR,CAC/B,MAAMC,EAAY,OAAO,OAAW,KAAe,CAAC,CAACH,EAAqB,EAEpE,CACJ,WAAAI,EAAa,GACb,eAAAC,EAAiB,GACjB,SAAAC,EAAW,QACX,SAAAC,EACA,gBAAAC,EAAkB,EAClB,QAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,CAAA,EACEV,EAEE,CAACW,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAC1C,CAACC,EAAYC,CAAa,EAAIF,EAAAA,SAAS,EAAE,EACzC,CAACG,EAAOC,CAAQ,EAAIJ,EAAAA,SAAS,EAAK,EAClC,CAACK,EAAOC,CAAQ,EAAIN,EAAAA,SAA6C,IAAI,EACrE,CAACO,CAAW,EAAIP,EAAAA,SAA4B,IAAM,CAClD,GAAA,CAACZ,EAAW,MAAO,CAAC,EAExB,MAAMoB,EAAoBvB,EAAqB,EACzCwB,EAAoB,IAAID,EAE9B,OAAAC,EAAkB,WAAapB,EAC3BG,MAA4B,SAAWA,GAC3CiB,EAAkB,eAAiBnB,EACnCmB,EAAkB,KAAOlB,EACzBkB,EAAkB,gBAAkBhB,EAEpCgB,EAAkB,QAAU,IAAM,CAChCV,EAAa,EAAI,EACjBK,EAAS,EAAK,EACJV,GAAA,MAAAA,GACZ,EACAe,EAAkB,MAAQ,IAAM,CAC9BV,EAAa,EAAK,EACVJ,GAAA,MAAAA,GACV,EACkBc,EAAA,QAAWC,GAAU,CACrCJ,EAASI,CAAK,EACdX,EAAa,EAAK,EAClBH,GAAA,MAAAA,EAAUc,EACZ,EACkBD,EAAA,SAAYC,GAAU,CAC9B,QAAA,IAAI,WAAYA,CAAK,EAC7B,MAAMC,EAAgBD,EAAM,QAAQA,EAAM,WAAW,EAC/C,CAAE,WAAAT,GAAeU,EAAc,CAAC,EAEtCT,EAAcD,CAAU,EACxBK,EAAS,IAAI,EACbT,GAAA,MAAAA,EAAWa,EACb,EACAD,EAAkB,MAAQ,IAAM,CAC9BV,EAAa,EAAK,EAClBU,EAAkB,KAAOlB,CAC3B,EAEOkB,CAAA,CACR,EAEDG,EAAAA,UAAU,IAAM,IAAML,EAAY,KAAK,EAAG,CAAA,CAAE,EAEtC,MAAAM,EAAQ,IAAMN,EAAY,MAAM,EAChCO,EAAO,IAAMP,EAAY,KAAK,EAO7B,MAAA,CAAE,UAAAnB,EAAW,WAAAa,EAAY,YAAAM,EAAa,MAAAJ,EAAO,UAAAL,EAAW,MAAAO,EAAO,MAAAQ,EAAO,KAAAC,EAAM,OALpE,CAACC,EAAQ,CAACjB,IAAc,CACjC,GAAAiB,SAAcF,EAAM,EACnBC,EAAA,CACP,CAE0F,CAC5F"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../useEventListener/useEventListener.cjs"),s=require("../../utils/helpers/getElement.cjs"),i=(e,t,n)=>r.useEventListener(s.target(window),e,t,n);exports.useWindowEvent=i;
|
|
2
2
|
//# sourceMappingURL=useWindowEvent.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWindowEvent.cjs","sources":["../../../../src/hooks/useWindowEvent/useWindowEvent.ts"],"sourcesContent":["import type { UseEventListenerOptions } from '../useEventListener/useEventListener';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/**\n * @name useWindowEvent\n * @description - Hook attaches an event listener to the window object for the specified event\n * @category Browser\n *\n * @template Event Key of window event map.\n * @param {Event} event The event to listen for.\n * @param {(event: WindowEventMap[Event]) => void} listener The callback function to be executed when the event is triggered\n * @param {UseEventListenerOptions} [options] The options for the event listener\n * @returns {void}\n *\n * @example\n * useWindowEvent('click', () => console.log('clicked'));\n */\nexport const useWindowEvent = <Event extends keyof WindowEventMap>(\n event: Event,\n listener: (this: Window, event: WindowEventMap[Event]) => any,\n options?: UseEventListenerOptions\n) => useEventListener(window, event, listener, options);\n"],"names":["useWindowEvent","event","listener","options","useEventListener"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWindowEvent.cjs","sources":["../../../../src/hooks/useWindowEvent/useWindowEvent.ts"],"sourcesContent":["import { target } from '@/utils/helpers';\n\nimport type { UseEventListenerOptions } from '../useEventListener/useEventListener';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/**\n * @name useWindowEvent\n * @description - Hook attaches an event listener to the window object for the specified event\n * @category Browser\n *\n * @template Event Key of window event map.\n * @param {Event} event The event to listen for.\n * @param {(event: WindowEventMap[Event]) => void} listener The callback function to be executed when the event is triggered\n * @param {UseEventListenerOptions} [options] The options for the event listener\n * @returns {void}\n *\n * @example\n * useWindowEvent('click', () => console.log('clicked'));\n */\nexport const useWindowEvent = <Event extends keyof WindowEventMap>(\n event: Event,\n listener: (this: Window, event: WindowEventMap[Event]) => any,\n options?: UseEventListenerOptions\n) => useEventListener(target(window), event, listener, options);\n"],"names":["useWindowEvent","event","listener","options","useEventListener","target"],"mappings":"4LAoBaA,EAAiB,CAC5BC,EACAC,EACAC,IACGC,EAAAA,iBAAiBC,EAAA,OAAO,MAAM,EAAGJ,EAAOC,EAAUC,CAAO"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("./hooks/useActiveElement/useActiveElement.cjs"),P=require("./hooks/useAsync/useAsync.cjs"),C=require("./hooks/useBattery/useBattery.cjs"),E=require("./hooks/useBluetooth/useBluetooth.cjs"),m=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),O=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),y=require("./hooks/useClickOutside/useClickOutside.cjs"),I=require("./hooks/useClipboard/useClipboard.cjs"),p=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),u=require("./hooks/useCookies/useCookies.cjs"),R=require("./hooks/useCopy/useCopy.cjs"),v=require("./hooks/useCounter/useCounter.cjs"),k=require("./hooks/useCssVar/useCssVar.cjs"),D=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),b=require("./hooks/useDebounceValue/useDebounceValue.cjs"),A=require("./hooks/useDefault/useDefault.cjs"),M=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),f=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),L=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),_=require("./hooks/useDidUpdate/useDidUpdate.cjs"),N=require("./hooks/useDisclosure/useDisclosure.cjs"),B=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),h=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),K=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),V=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),F=require("./hooks/useElementSize/useElementSize.cjs"),w=require("./hooks/useEvent/useEvent.cjs"),W=require("./hooks/useEventListener/useEventListener.cjs"),x=require("./hooks/useEyeDropper/useEyeDropper.cjs"),H=require("./hooks/useFavicon/useFavicon.cjs"),U=require("./hooks/useField/useField.cjs"),z=require("./hooks/useFileDialog/useFileDialog.cjs"),G=require("./hooks/useFocus/useFocus.cjs"),Q=require("./hooks/useFps/useFps.cjs"),X=require("./hooks/useFullscreen/useFullscreen.cjs"),i=require("./hooks/useGamepad/useGamepad.cjs"),j=require("./hooks/useGeolocation/useGeolocation.cjs"),J=require("./hooks/useHash/useHash.cjs"),n=require("./hooks/useHotkeys/useHotkeys.cjs"),Y=require("./hooks/useHover/useHover.cjs"),Z=require("./hooks/useIdle/useIdle.cjs"),$=require("./hooks/useImage/useImage.cjs"),ee=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),se=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),ue=require("./hooks/useInterval/useInterval.cjs"),re=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),te=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),oe=require("./hooks/useKeyboard/useKeyboard.cjs"),ie=require("./hooks/useKeyPress/useKeyPress.cjs"),ne=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),ce=require("./hooks/useKeysPressed/useKeysPressed.cjs"),ae=require("./hooks/useLastChanged/useLastChanged.cjs"),le=require("./hooks/useLatest/useLatest.cjs"),qe=require("./hooks/useLess/useLess.cjs"),Se=require("./hooks/useList/useList.cjs"),de=require("./hooks/useLocalStorage/useLocalStorage.cjs"),ge=require("./hooks/useLockCallback/useLockCallback.cjs"),Te=require("./hooks/useLogger/useLogger.cjs"),Pe=require("./hooks/useLongPress/useLongPress.cjs"),Ce=require("./hooks/useMap/useMap.cjs"),Ee=require("./hooks/useMeasure/useMeasure.cjs"),me=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Oe=require("./hooks/useMemory/useMemory.cjs"),ye=require("./hooks/useMount/useMount.cjs"),Ie=require("./hooks/useMouse/useMouse.cjs"),pe=require("./hooks/useMutation/useMutation.cjs"),Re=require("./hooks/useMutationObserver/useMutationObserver.cjs"),c=require("./hooks/useNetwork/useNetwork.cjs"),ve=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),ke=require("./hooks/useOnce/useOnce.cjs"),De=require("./hooks/useOnline/useOnline.cjs"),a=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),be=require("./hooks/useOptimistic/useOptimistic.cjs"),Ae=require("./hooks/useOrientation/useOrientation.cjs"),Me=require("./hooks/useOtpCredential/useOtpCredential.cjs"),fe=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),Le=require("./hooks/useParallax/useParallax.cjs"),_e=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),Ne=require("./hooks/usePermission/usePermission.cjs"),Be=require("./hooks/usePointerLock/usePointerLock.cjs"),he=require("./hooks/usePostMessage/usePostMessage.cjs"),Ke=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Ve=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Fe=require("./hooks/usePreferredDark/usePreferredDark.cjs"),we=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),We=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),xe=require("./hooks/usePrevious/usePrevious.cjs"),He=require("./hooks/useQuery/useQuery.cjs"),Ue=require("./hooks/useQueue/useQueue.cjs"),ze=require("./hooks/useRaf/useRaf.cjs"),Ge=require("./hooks/useRafValue/useRafValue.cjs"),Qe=require("./hooks/useRefState/useRefState.cjs"),Xe=require("./hooks/useRenderCount/useRenderCount.cjs"),je=require("./hooks/useRenderInfo/useRenderInfo.cjs"),Je=require("./hooks/useRerender/useRerender.cjs"),Ye=require("./hooks/useResizeObserver/useResizeObserver.cjs"),Ze=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),l=require("./hooks/useScript/useScript.cjs"),$e=require("./hooks/useScroll/useScroll.cjs"),es=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),ss=require("./hooks/useScrollTo/useScrollTo.cjs"),us=require("./hooks/useSessionStorage/useSessionStorage.cjs"),rs=require("./hooks/useSet/useSet.cjs"),ts=require("./hooks/useShare/useShare.cjs"),os=require("./hooks/useStateHistory/useStateHistory.cjs"),is=require("./hooks/useStep/useStep.cjs"),ns=require("./hooks/useSticky/useSticky.cjs"),cs=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),as=require("./hooks/useTextDirection/useTextDirection.cjs"),q=require("./hooks/useTextSelection/useTextSelection.cjs"),ls=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),qs=require("./hooks/useThrottleValue/useThrottleValue.cjs"),Ss=require("./hooks/useTime/useTime.cjs"),ds=require("./hooks/useTimeout/useTimeout.cjs"),S=require("./hooks/useTimer/useTimer.cjs"),gs=require("./hooks/useToggle/useToggle.cjs"),Ts=require("./hooks/useUnmount/useUnmount.cjs"),Ps=require("./hooks/useVibrate/useVibrate.cjs"),Cs=require("./hooks/useWebSocket/useWebSocket.cjs"),Es=require("./hooks/useWindowEvent/useWindowEvent.cjs"),ms=require("./hooks/useWindowFocus/useWindowFocus.cjs"),d=require("./hooks/useWindowScroll/useWindowScroll.cjs"),Os=require("./hooks/useWindowSize/useWindowSize.cjs"),ys=require("./hooks/useWizard/useWizard.cjs"),g=require("./utils/helpers/copy.cjs"),Is=require("./utils/helpers/debounce.cjs"),ps=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),Rs=require("./utils/helpers/getRetry.cjs"),vs=require("./utils/helpers/isTarget.cjs"),ks=require("./utils/helpers/throttle.cjs");exports.useActiveElement=T.useActiveElement;exports.useAsync=P.useAsync;exports.useBattery=C.useBattery;exports.useBluetooth=E.useBluetooth;exports.useBoolean=m.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=O.useBrowserLanguage;exports.useClickOutside=y.useClickOutside;exports.useClipboard=I.useClipboard;exports.useConst=p.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=R.useCopy;exports.useCounter=v.useCounter;exports.useCssVar=k.useCssVar;exports.useDebounceCallback=D.useDebounceCallback;exports.useDebounceValue=b.useDebounceValue;exports.useDefault=A.useDefault;exports.useDeviceMotion=M.useDeviceMotion;exports.useDeviceOrientation=f.useDeviceOrientation;exports.useDevicePixelRatio=L.useDevicePixelRatio;exports.useDidUpdate=_.useDidUpdate;exports.useDisclosure=N.useDisclosure;exports.useDisplayMedia=B.useDisplayMedia;exports.useDocumentEvent=h.useDocumentEvent;exports.useDocumentTitle=K.useDocumentTitle;exports.useDocumentVisibility=V.useDocumentVisibility;exports.useElementSize=F.useElementSize;exports.useEvent=w.useEvent;exports.useEventListener=W.useEventListener;exports.useEyeDropper=x.useEyeDropper;exports.useFavicon=H.useFavicon;exports.useField=U.useField;exports.useFileDialog=z.useFileDialog;exports.useFocus=G.useFocus;exports.useFps=Q.useFps;exports.useFullscreen=X.useFullscreen;exports.mapGamepadToXbox360Controller=i.mapGamepadToXbox360Controller;exports.useGamepad=i.useGamepad;exports.useGeolocation=j.useGeolocation;exports.useHash=J.useHash;exports.isHotkeyMatch=n.isHotkeyMatch;exports.useHotkeys=n.useHotkeys;exports.useHover=Y.useHover;exports.useIdle=Z.useIdle;exports.useImage=$.useImage;exports.useInfiniteScroll=ee.useInfiniteScroll;exports.useIntersectionObserver=se.useIntersectionObserver;exports.useInterval=ue.useInterval;exports.useIsFirstRender=re.useIsFirstRender;exports.useIsomorphicLayoutEffect=te.useIsomorphicLayoutEffect;exports.useKeyboard=oe.useKeyboard;exports.useKeyPress=ie.useKeyPress;exports.useKeyPressEvent=ne.useKeyPressEvent;exports.useKeysPressed=ce.useKeysPressed;exports.useLastChanged=ae.useLastChanged;exports.useLatest=le.useLatest;exports.useLess=qe.useLess;exports.useList=Se.useList;exports.useLocalStorage=de.useLocalStorage;exports.useLockCallback=ge.useLockCallback;exports.useLogger=Te.useLogger;exports.useLongPress=Pe.useLongPress;exports.useMap=Ce.useMap;exports.useMeasure=Ee.useMeasure;exports.useMediaQuery=me.useMediaQuery;exports.useMemory=Oe.useMemory;exports.useMount=ye.useMount;exports.useMouse=Ie.useMouse;exports.useMutation=pe.useMutation;exports.useMutationObserver=Re.useMutationObserver;exports.getConnection=c.getConnection;exports.useNetwork=c.useNetwork;exports.useOffsetPagination=ve.useOffsetPagination;exports.useOnce=ke.useOnce;exports.useOnline=De.useOnline;exports.getOperatingSystem=a.getOperatingSystem;exports.useOperatingSystem=a.useOperatingSystem;exports.useOptimistic=be.useOptimistic;exports.useOrientation=Ae.useOrientation;exports.useOtpCredential=Me.useOtpCredential;exports.usePageLeave=fe.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=Le.useParallax;exports.usePerformanceObserver=_e.usePerformanceObserver;exports.usePermission=Ne.usePermission;exports.usePointerLock=Be.usePointerLock;exports.usePostMessage=he.usePostMessage;exports.usePreferredColorScheme=Ke.usePreferredColorScheme;exports.usePreferredContrast=Ve.usePreferredContrast;exports.usePreferredDark=Fe.usePreferredDark;exports.usePreferredLanguages=we.usePreferredLanguages;exports.usePreferredReducedMotion=We.usePreferredReducedMotion;exports.usePrevious=xe.usePrevious;exports.useQuery=He.useQuery;exports.useQueue=Ue.useQueue;exports.useRaf=ze.useRaf;exports.useRafValue=Ge.useRafValue;exports.useRefState=Qe.useRefState;exports.useRenderCount=Xe.useRenderCount;exports.useRenderInfo=je.useRenderInfo;exports.useRerender=Je.useRerender;exports.useResizeObserver=Ye.useResizeObserver;exports.useScreenOrientation=Ze.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=l.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=l.useScript;exports.useScroll=$e.useScroll;exports.useScrollIntoView=es.useScrollIntoView;exports.useScrollTo=ss.useScrollTo;exports.useSessionStorage=us.useSessionStorage;exports.useSet=rs.useSet;exports.useShare=ts.useShare;exports.useStateHistory=os.useStateHistory;exports.useStep=is.useStep;exports.useSticky=ns.useSticky;exports.useStopwatch=cs.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=as.useTextDirection;exports.getRangesSelection=q.getRangesSelection;exports.useTextSelection=q.useTextSelection;exports.useThrottleCallback=ls.useThrottleCallback;exports.useThrottleValue=qs.useThrottleValue;exports.useTime=Ss.useTime;exports.useTimeout=ds.useTimeout;exports.getTimeFromSeconds=S.getTimeFromSeconds;exports.useTimer=S.useTimer;exports.useToggle=gs.useToggle;exports.useUnmount=Ts.useUnmount;exports.useVibrate=Ps.useVibrate;exports.useWebSocket=Cs.useWebSocket;exports.useWindowEvent=Es.useWindowEvent;exports.useWindowFocus=ms.useWindowFocus;exports.scrollTo=d.scrollTo;exports.useWindowScroll=d.useWindowScroll;exports.useWindowSize=Os.useWindowSize;exports.useWizard=ys.useWizard;exports.copy=g.copy;exports.legacyCopyToClipboard=g.legacyCopyToClipboard;exports.debounce=Is.debounce;exports.getDate=ps.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=Rs.getRetry;exports.isTarget=vs.isTarget;exports.throttle=ks.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":"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 */\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":";;;;
|
|
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,6 +1,7 @@
|
|
|
1
|
-
import { useEventListener as
|
|
2
|
-
|
|
1
|
+
import { useEventListener as r } from "../useEventListener/useEventListener.mjs";
|
|
2
|
+
import { target as m } from "../../utils/helpers/getElement.mjs";
|
|
3
|
+
const u = (t, e, o) => r(m(document), t, e, o);
|
|
3
4
|
export {
|
|
4
|
-
|
|
5
|
+
u as useDocumentEvent
|
|
5
6
|
};
|
|
6
7
|
//# sourceMappingURL=useDocumentEvent.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentEvent.mjs","sources":["../../../../src/hooks/useDocumentEvent/useDocumentEvent.ts"],"sourcesContent":["import type { UseEventListenerOptions } from '../useEventListener/useEventListener';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/**\n * @name useDocumentEvent\n * @description - Hook attaches an event listener to the document object for the specified event\n * @category Browser\n *\n * @template Event Key of document event map.\n * @param {Event} event The event to listen for.\n * @param {(event: DocumentEventMap[Event]) => void} listener The callback function to be executed when the event is triggered\n * @param {UseEventListenerOptions} [options] The options for the event listener\n * @returns {void}\n *\n * @example\n * useDocumentEvent('click', () => console.log('clicked'));\n */\nexport const useDocumentEvent = <Event extends keyof DocumentEventMap>(\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => any,\n options?: UseEventListenerOptions\n) => useEventListener(document, event, listener, options);\n"],"names":["useDocumentEvent","event","listener","options","useEventListener"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDocumentEvent.mjs","sources":["../../../../src/hooks/useDocumentEvent/useDocumentEvent.ts"],"sourcesContent":["import { target } from '@/utils/helpers';\n\nimport type { UseEventListenerOptions } from '../useEventListener/useEventListener';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/**\n * @name useDocumentEvent\n * @description - Hook attaches an event listener to the document object for the specified event\n * @category Browser\n *\n * @template Event Key of document event map.\n * @param {Event} event The event to listen for.\n * @param {(event: DocumentEventMap[Event]) => void} listener The callback function to be executed when the event is triggered\n * @param {UseEventListenerOptions} [options] The options for the event listener\n * @returns {void}\n *\n * @example\n * useDocumentEvent('click', () => console.log('clicked'));\n */\nexport const useDocumentEvent = <Event extends keyof DocumentEventMap>(\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => any,\n options?: UseEventListenerOptions\n) => useEventListener(target(document), event, listener, options);\n"],"names":["useDocumentEvent","event","listener","options","useEventListener","target"],"mappings":";;AAoBa,MAAAA,IAAmB,CAC9BC,GACAC,GACAC,MACGC,EAAiBC,EAAO,QAAQ,GAAGJ,GAAOC,GAAUC,CAAO;"}
|
|
@@ -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 ): {\n ref: StateRef<Target>;\n clicked: boolean;\n };\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 */\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":";;;;AAqCA,MAAMA,IAAyB,KAyBlBC,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,21 +1,21 @@
|
|
|
1
|
-
import { useEffect as
|
|
2
|
-
import { useEvent as
|
|
1
|
+
import { useEffect as l } from "react";
|
|
2
|
+
import { useEvent as v } from "../useEvent/useEvent.mjs";
|
|
3
3
|
import { useRefState as m } from "../useRefState/useRefState.mjs";
|
|
4
|
-
import { isTarget as
|
|
5
|
-
import { getElement as
|
|
6
|
-
const
|
|
7
|
-
const e =
|
|
8
|
-
if (
|
|
9
|
-
const
|
|
10
|
-
if (!
|
|
11
|
-
const
|
|
12
|
-
return
|
|
13
|
-
|
|
4
|
+
import { isTarget as E } from "../../utils/helpers/isTarget.mjs";
|
|
5
|
+
import { getElement as d } from "../../utils/helpers/getElement.mjs";
|
|
6
|
+
const k = (...t) => {
|
|
7
|
+
const e = E(t[0]) ? t[0] : void 0, n = e ? t[1] : t[0], c = e ? t[2] : t[1], o = e ? t[3] : t[2], r = m(window), f = v(c);
|
|
8
|
+
if (l(() => {
|
|
9
|
+
const i = e ? d(e) : r.current;
|
|
10
|
+
if (!i) return;
|
|
11
|
+
const s = (u) => f(u);
|
|
12
|
+
return i.addEventListener(n, s, o), () => {
|
|
13
|
+
i.removeEventListener(n, s, o);
|
|
14
14
|
};
|
|
15
|
-
}, [e,
|
|
16
|
-
return
|
|
15
|
+
}, [e, r.state, n, o]), !e)
|
|
16
|
+
return r;
|
|
17
17
|
};
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
k as useEventListener
|
|
20
20
|
};
|
|
21
21
|
//# sourceMappingURL=useEventListener.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEventListener.mjs","sources":["../../../../src/hooks/useEventListener/useEventListener.ts"],"sourcesContent":["import { useEffect } 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 { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use event listener options */\nexport type UseEventListenerOptions = boolean | AddEventListenerOptions;\n\n/** The use event listener return type */\nexport type UseEventListenerReturn<Target extends Element> = StateRef<Target>;\n\nexport interface UseEventListener {\n <Event extends keyof WindowEventMap = keyof WindowEventMap>(\n target:
|
|
1
|
+
{"version":3,"file":"useEventListener.mjs","sources":["../../../../src/hooks/useEventListener/useEventListener.ts"],"sourcesContent":["import { useEffect } 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 { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use event listener options */\nexport type UseEventListenerOptions = boolean | AddEventListenerOptions;\n\n/** The use event listener return type */\nexport type UseEventListenerReturn<Target extends Element> = StateRef<Target>;\n\nexport interface UseEventListener {\n <Event extends keyof WindowEventMap = keyof WindowEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Window, event: WindowEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof DocumentEventMap = keyof DocumentEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Element, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends Element, Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n event: Event,\n listener: (this: Target, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n\n <\n Target extends Element,\n Event extends keyof MediaQueryListEventMap = keyof MediaQueryListEventMap\n >(\n event: Event,\n listener: (this: Target, event: MediaQueryListEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n}\n\n/**\n * @name useEventListener\n * @description - Hook that attaches an event listener to the specified target\n * @category Browser\n *\n * @overload\n * @template Event Key of window event map\n * @param {Window} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Window, event: WindowEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(window, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @param {Document} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Document, event: DocumentEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(document, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {HookTarget} target The target element to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(ref, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event] | MediaQueryListEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {UseEventListenerReturn<Target>} A reference to the target element\n *\n * @example\n * const ref = useEventListener('click', () => console.log('click'));\n */\nexport const useEventListener = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const event = (target ? params[1] : params[0]) as string;\n const listener = (target ? params[2] : params[1]) as (...arg: any[]) => undefined | void;\n const options = (target ? params[3] : params[2]) as UseEventListenerOptions | undefined;\n\n const internalRef = useRefState(window);\n const internalListener = useEvent(listener);\n\n useEffect(() => {\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const callback = (event: Event) => internalListener(event);\n\n element.addEventListener(event, callback, options);\n return () => {\n element.removeEventListener(event, callback, options);\n };\n }, [target, internalRef.state, event, options]);\n\n if (target) return;\n return internalRef;\n}) as UseEventListener;\n"],"names":["useEventListener","params","target","isTarget","event","listener","options","internalRef","useRefState","internalListener","useEvent","useEffect","element","getElement","callback"],"mappings":";;;;;AA2Ga,MAAAA,IAAoB,IAAIC,MAAkB;AAC/C,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAASF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACtCI,IAAYH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCK,IAAWJ,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCM,IAAcC,EAAY,MAAM,GAChCC,IAAmBC,EAASL,CAAQ;AAc1C,MAZAM,EAAU,MAAM;AACd,UAAMC,IAAUV,IAASW,EAAWX,CAAM,IAAIK,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAW,CAACV,MAAiBK,EAAiBL,CAAK;AAEjD,WAAAQ,EAAA,iBAAiBR,GAAOU,GAAUR,CAAO,GAC1C,MAAM;AACH,MAAAM,EAAA,oBAAoBR,GAAOU,GAAUR,CAAO;AAAA,IACtD;AAAA,EAAA,GACC,CAACJ,GAAQK,EAAY,OAAOH,GAAOE,CAAO,CAAC,GAE1C,CAAAJ;AACG,WAAAK;AACT;"}
|