@siberiacancode/reactuse 0.0.115 → 0.0.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveElement.cjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":"yGAYaA,EAAmB,IAAyC,CACvE,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAA+B,IAAI,EAE7EC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAwB,IAC5BH,EAAiB,+BAAU,aAAqC,EAE3D,cAAA,iBAAiB,QAASG,EAAuB,EAAI,EACrD,OAAA,iBAAiB,OAAQA,EAAuB,EAAI,EAEpD,IAAM,CACJ,OAAA,oBAAoB,QAASA,EAAuB,EAAI,EACxD,OAAA,oBAAoB,OAAQA,EAAuB,EAAI,CAChE,CAAA,CACD,EAEDD,EAAAA,UAAU,IAAM,CACd,MAAME,EAAW,IAAI,iBAAkBC,GAAc,CAEhDA,EAAA,OAAQC,GAAaA,EAAS,aAAa,MAAM,EACjD,IAAKA,GAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAASC,GAAS,CACjBP,EAAkBQ,GACZD,IAASC,EAA0B,SAAS,cACzCA,CACR,CAAA,CACF,CAAA,CACJ,EAED,OAAAJ,EAAS,QAAQ,SAAU,CACzB,UAAW,GACX,QAAS,EAAA,CACV,EAEM,IAAM,CACXA,EAAS,WAAW,CACtB,CACF,EAAG,EAAE,EAEEL,CACT"}
1
+ {"version":3,"file":"useActiveElement.cjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":"yGAcaA,EAAmB,IAAyC,CACvE,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAA+B,IAAI,EAE7EC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAwB,IAC5BH,EAAiB,+BAAU,aAAqC,EAE3D,cAAA,iBAAiB,QAASG,EAAuB,EAAI,EACrD,OAAA,iBAAiB,OAAQA,EAAuB,EAAI,EAEpD,IAAM,CACJ,OAAA,oBAAoB,QAASA,EAAuB,EAAI,EACxD,OAAA,oBAAoB,OAAQA,EAAuB,EAAI,CAChE,CAAA,CACD,EAEDD,EAAAA,UAAU,IAAM,CACd,MAAME,EAAW,IAAI,iBAAkBC,GAAc,CAEhDA,EAAA,OAAQC,GAAaA,EAAS,aAAa,MAAM,EACjD,IAAKA,GAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAASC,GAAS,CACjBP,EAAkBQ,GACZD,IAASC,EAA0B,SAAS,cACzCA,CACR,CAAA,CACF,CAAA,CACJ,EAED,OAAAJ,EAAS,QAAQ,SAAU,CACzB,UAAW,GACX,QAAS,EAAA,CACV,EAEM,IAAM,CACXA,EAAS,WAAW,CACtB,CACF,EAAG,EAAE,EAEEL,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"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
+ {"version":3,"file":"useDoubleClick.cjs","sources":["../../../../src/hooks/useDoubleClick/useDoubleClick.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DoubleClickEvents = MouseEvent | TouchEvent;\n\n// * The use double click options type */\nexport interface UseDoubleClickOptions {\n // * The threshold time in milliseconds between clicks\n threshold?: number;\n // * The callback function to be invoked on single click\n onSingleClick?: (event: DoubleClickEvents) => void;\n}\n\nexport interface UseDoubleClick {\n (\n target: HookTarget,\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\nconst DEFAULT_THRESHOLD_TIME = 300;\n\n/**\n * @name useDoubleClick\n * @description - Hook that defines the logic when double clicking an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be double clicked\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * useDoubleClick(ref, () => console.log('double clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * const ref = useDoubleClick(() => console.log('double clicked'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}\n */\nexport const useDoubleClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: DoubleClickEvents) => void;\n const options = (target ? params[2] : params[1]) as UseDoubleClickOptions | undefined;\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const clickCountRef = useRef(0);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onClick = (event: DoubleClickEvents) => {\n clickCountRef.current += 1;\n\n if (clickCountRef.current === 1) {\n timeoutIdRef.current = setTimeout(() => {\n if (internalOptionsRef.current?.onSingleClick)\n internalOptionsRef.current.onSingleClick(event);\n clickCountRef.current = 0;\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n }\n\n if (clickCountRef.current === 2) {\n clearTimeout(timeoutIdRef.current);\n internalCallbackRef.current(event);\n clickCountRef.current = 0;\n }\n };\n\n element.addEventListener('mousedown', onClick as EventListener);\n element.addEventListener('touchstart', onClick as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onClick as EventListener);\n element.removeEventListener('touchstart', onClick as EventListener);\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseDoubleClick;\n"],"names":["DEFAULT_THRESHOLD_TIME","useDoubleClick","params","target","isTarget","callback","options","timeoutIdRef","useRef","clickCountRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onClick","event","_a"],"mappings":"mPAkCMA,EAAyB,IA2BlBC,EAAkB,IAAIC,IAAuB,CAClD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAYF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACzCI,EAAWH,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EAExCK,EAAeC,EAAAA,OAAsC,EACrDC,EAAgBD,SAAO,CAAC,EACxBE,EAAcC,EAAAA,YAAqB,EAEnCC,EAAsBJ,SAAOH,CAAQ,EAC3CO,EAAoB,QAAUP,EACxB,MAAAQ,EAAqBL,SAAOF,CAAO,EAqCzC,GApCAO,EAAmB,QAAUP,EAE7BQ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACX,GAAU,CAACO,EAAY,MAAO,OAEnC,MAAMK,EAAUZ,EAASa,EAAAA,WAAWb,CAAM,EAAIO,EAAY,QAC1D,GAAI,CAACK,EAAS,OAER,MAAAE,EAAWC,GAA6B,OAC5CT,EAAc,SAAW,EAErBA,EAAc,UAAY,IACfF,EAAA,QAAU,WAAW,IAAM,QAClCY,EAAAN,EAAmB,UAAnB,MAAAM,EAA4B,eACXN,EAAA,QAAQ,cAAcK,CAAK,EAChDT,EAAc,QAAU,CACvB,IAAAU,EAAAN,EAAmB,UAAnB,YAAAM,EAA4B,YAAanB,CAAsB,GAGhES,EAAc,UAAY,IAC5B,aAAaF,EAAa,OAAO,EACjCK,EAAoB,QAAQM,CAAK,EACjCT,EAAc,QAAU,EAE5B,EAEQ,OAAAM,EAAA,iBAAiB,YAAaE,CAAwB,EACtDF,EAAA,iBAAiB,aAAcE,CAAwB,EAExD,IAAM,CACHF,EAAA,oBAAoB,YAAaE,CAAwB,EACzDF,EAAA,oBAAoB,aAAcE,CAAwB,EAC9DV,EAAa,SAAsB,aAAAA,EAAa,OAAO,CAC7D,CACC,EAAA,CAACJ,EAAQO,EAAY,KAAK,CAAC,EAE1B,CAAAP,EACG,OAAAO,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWindowFocus.cjs","sources":["../../../../src/hooks/useWindowFocus/useWindowFocus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useWindowFocus\n * @description - Hook that provides the current focus state of the window\n * @category Elements\n *\n * @returns {boolean} The current focus state of the window\n *\n * @example\n * const focused = useWindowFocus();\n */\nexport const useWindowFocus = () => {\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n window.addEventListener('focus', onFocus);\n window.addEventListener('blur', onBlur);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n });\n\n return focused;\n};\n"],"names":["useWindowFocus","focused","setFocused","useState","useEffect","onFocus","onBlur"],"mappings":"yGAYaA,EAAiB,IAAM,CAClC,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EAE5CC,OAAAA,EAAAA,UAAU,IAAM,CACR,MAAAC,EAAU,IAAMH,EAAW,EAAI,EAC/BI,EAAS,IAAMJ,EAAW,EAAK,EAE9B,cAAA,iBAAiB,QAASG,CAAO,EACjC,OAAA,iBAAiB,OAAQC,CAAM,EAE/B,IAAM,CACJ,OAAA,oBAAoB,QAASD,CAAO,EACpC,OAAA,oBAAoB,OAAQC,CAAM,CAC3C,CAAA,CACD,EAEML,CACT"}
1
+ {"version":3,"file":"useWindowFocus.cjs","sources":["../../../../src/hooks/useWindowFocus/useWindowFocus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useWindowFocus\n * @description - Hook that provides the current focus state of the window\n * @category Elements\n *\n * @returns {boolean} The current focus state of the window\n *\n * @example\n * const focused = useWindowFocus();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useWindowFocus.html}\n */\nexport const useWindowFocus = () => {\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n window.addEventListener('focus', onFocus);\n window.addEventListener('blur', onBlur);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n });\n\n return focused;\n};\n"],"names":["useWindowFocus","focused","setFocused","useState","useEffect","onFocus","onBlur"],"mappings":"yGAcaA,EAAiB,IAAM,CAClC,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EAE5CC,OAAAA,EAAAA,UAAU,IAAM,CACR,MAAAC,EAAU,IAAMH,EAAW,EAAI,EAC/BI,EAAS,IAAMJ,EAAW,EAAK,EAE9B,cAAA,iBAAiB,QAASG,CAAO,EACjC,OAAA,iBAAiB,OAAQC,CAAM,EAE/B,IAAM,CACJ,OAAA,oBAAoB,QAASD,CAAO,EACpC,OAAA,oBAAoB,OAAQC,CAAM,CAC3C,CAAA,CACD,EAEML,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveElement.mjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":";AAYO,MAAMA,IAAmB,MAAyC;AACvE,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAA+B,IAAI;AAE7E,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAwB,MAC5BH,EAAiB,qCAAU,aAAqC;AAE3D,kBAAA,iBAAiB,SAASG,GAAuB,EAAI,GACrD,OAAA,iBAAiB,QAAQA,GAAuB,EAAI,GAEpD,MAAM;AACJ,aAAA,oBAAoB,SAASA,GAAuB,EAAI,GACxD,OAAA,oBAAoB,QAAQA,GAAuB,EAAI;AAAA,IAChE;AAAA,EAAA,CACD,GAEDD,EAAU,MAAM;AACd,UAAME,IAAW,IAAI,iBAAiB,CAACC,MAAc;AAEhD,MAAAA,EAAA,OAAO,CAACC,MAAaA,EAAS,aAAa,MAAM,EACjD,IAAI,CAACA,MAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAAQ,CAACC,MAAS;AACjB,QAAAP,EAAiB,CAACQ,MACZD,MAASC,IAA0B,SAAS,gBACzCA,CACR;AAAA,MAAA,CACF;AAAA,IAAA,CACJ;AAED,WAAAJ,EAAS,QAAQ,UAAU;AAAA,MACzB,WAAW;AAAA,MACX,SAAS;AAAA,IAAA,CACV,GAEM,MAAM;AACX,MAAAA,EAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,EAAE,GAEEL;AACT;"}
1
+ {"version":3,"file":"useActiveElement.mjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = <ActiveElement extends HTMLElement>() => {\n const [activeElement, setActiveElement] = useState<ActiveElement | null>(null);\n\n useEffect(() => {\n const onActiveElementChange = () =>\n setActiveElement(document?.activeElement as ActiveElement | null);\n\n window.addEventListener('focus', onActiveElementChange, true);\n window.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n window.removeEventListener('focus', onActiveElementChange, true);\n window.removeEventListener('blur', onActiveElementChange, true);\n };\n });\n\n useEffect(() => {\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setActiveElement((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as ActiveElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return activeElement;\n};\n"],"names":["useActiveElement","activeElement","setActiveElement","useState","useEffect","onActiveElementChange","observer","mutations","mutation","node","prevActiveElement"],"mappings":";AAcO,MAAMA,IAAmB,MAAyC;AACvE,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAA+B,IAAI;AAE7E,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAwB,MAC5BH,EAAiB,qCAAU,aAAqC;AAE3D,kBAAA,iBAAiB,SAASG,GAAuB,EAAI,GACrD,OAAA,iBAAiB,QAAQA,GAAuB,EAAI,GAEpD,MAAM;AACJ,aAAA,oBAAoB,SAASA,GAAuB,EAAI,GACxD,OAAA,oBAAoB,QAAQA,GAAuB,EAAI;AAAA,IAChE;AAAA,EAAA,CACD,GAEDD,EAAU,MAAM;AACd,UAAME,IAAW,IAAI,iBAAiB,CAACC,MAAc;AAEhD,MAAAA,EAAA,OAAO,CAACC,MAAaA,EAAS,aAAa,MAAM,EACjD,IAAI,CAACA,MAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAAQ,CAACC,MAAS;AACjB,QAAAP,EAAiB,CAACQ,MACZD,MAASC,IAA0B,SAAS,gBACzCA,CACR;AAAA,MAAA,CACF;AAAA,IAAA,CACJ;AAED,WAAAJ,EAAS,QAAQ,UAAU;AAAA,MACzB,WAAW;AAAA,MACX,SAAS;AAAA,IAAA,CACV,GAEM,MAAM;AACX,MAAAA,EAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,EAAE,GAEEL;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"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
+ {"version":3,"file":"useDoubleClick.mjs","sources":["../../../../src/hooks/useDoubleClick/useDoubleClick.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DoubleClickEvents = MouseEvent | TouchEvent;\n\n// * The use double click options type */\nexport interface UseDoubleClickOptions {\n // * The threshold time in milliseconds between clicks\n threshold?: number;\n // * The callback function to be invoked on single click\n onSingleClick?: (event: DoubleClickEvents) => void;\n}\n\nexport interface UseDoubleClick {\n (\n target: HookTarget,\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\nconst DEFAULT_THRESHOLD_TIME = 300;\n\n/**\n * @name useDoubleClick\n * @description - Hook that defines the logic when double clicking an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be double clicked\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * useDoubleClick(ref, () => console.log('double clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * const ref = useDoubleClick(() => console.log('double clicked'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}\n */\nexport const useDoubleClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: DoubleClickEvents) => void;\n const options = (target ? params[2] : params[1]) as UseDoubleClickOptions | undefined;\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const clickCountRef = useRef(0);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onClick = (event: DoubleClickEvents) => {\n clickCountRef.current += 1;\n\n if (clickCountRef.current === 1) {\n timeoutIdRef.current = setTimeout(() => {\n if (internalOptionsRef.current?.onSingleClick)\n internalOptionsRef.current.onSingleClick(event);\n clickCountRef.current = 0;\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n }\n\n if (clickCountRef.current === 2) {\n clearTimeout(timeoutIdRef.current);\n internalCallbackRef.current(event);\n clickCountRef.current = 0;\n }\n };\n\n element.addEventListener('mousedown', onClick as EventListener);\n element.addEventListener('touchstart', onClick as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onClick as EventListener);\n element.removeEventListener('touchstart', onClick as EventListener);\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseDoubleClick;\n"],"names":["DEFAULT_THRESHOLD_TIME","useDoubleClick","params","target","isTarget","callback","options","timeoutIdRef","useRef","clickCountRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onClick","event","_a"],"mappings":";;;;AAkCA,MAAMA,IAAyB,KA2BlBC,IAAkB,IAAIC,MAAuB;AAClD,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCI,IAAWH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCK,IAAeC,EAAsC,GACrDC,IAAgBD,EAAO,CAAC,GACxBE,IAAcC,EAAqB,GAEnCC,IAAsBJ,EAAOH,CAAQ;AAC3C,EAAAO,EAAoB,UAAUP;AACxB,QAAAQ,IAAqBL,EAAOF,CAAO;AAqCzC,MApCAO,EAAmB,UAAUP,GAE7BQ,EAAU,MAAM;AACd,QAAI,CAACX,KAAU,CAACO,EAAY,MAAO;AAEnC,UAAMK,IAAUZ,IAASa,EAAWb,CAAM,IAAIO,EAAY;AAC1D,QAAI,CAACK,EAAS;AAER,UAAAE,IAAU,CAACC,MAA6B;;AAC5C,MAAAT,EAAc,WAAW,GAErBA,EAAc,YAAY,MACfF,EAAA,UAAU,WAAW,MAAM;;AACtC,SAAIY,IAAAN,EAAmB,YAAnB,QAAAM,EAA4B,iBACXN,EAAA,QAAQ,cAAcK,CAAK,GAChDT,EAAc,UAAU;AAAA,MACvB,KAAAU,IAAAN,EAAmB,YAAnB,gBAAAM,EAA4B,cAAanB,CAAsB,IAGhES,EAAc,YAAY,MAC5B,aAAaF,EAAa,OAAO,GACjCK,EAAoB,QAAQM,CAAK,GACjCT,EAAc,UAAU;AAAA,IAE5B;AAEQ,WAAAM,EAAA,iBAAiB,aAAaE,CAAwB,GACtDF,EAAA,iBAAiB,cAAcE,CAAwB,GAExD,MAAM;AACH,MAAAF,EAAA,oBAAoB,aAAaE,CAAwB,GACzDF,EAAA,oBAAoB,cAAcE,CAAwB,GAC9DV,EAAa,WAAsB,aAAAA,EAAa,OAAO;AAAA,IAC7D;AAAA,EACC,GAAA,CAACJ,GAAQO,EAAY,KAAK,CAAC,GAE1B,CAAAP;AACG,WAAAO;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWindowFocus.mjs","sources":["../../../../src/hooks/useWindowFocus/useWindowFocus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useWindowFocus\n * @description - Hook that provides the current focus state of the window\n * @category Elements\n *\n * @returns {boolean} The current focus state of the window\n *\n * @example\n * const focused = useWindowFocus();\n */\nexport const useWindowFocus = () => {\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n window.addEventListener('focus', onFocus);\n window.addEventListener('blur', onBlur);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n });\n\n return focused;\n};\n"],"names":["useWindowFocus","focused","setFocused","useState","useEffect","onFocus","onBlur"],"mappings":";AAYO,MAAMA,IAAiB,MAAM;AAClC,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,SAAAC,EAAU,MAAM;AACR,UAAAC,IAAU,MAAMH,EAAW,EAAI,GAC/BI,IAAS,MAAMJ,EAAW,EAAK;AAE9B,kBAAA,iBAAiB,SAASG,CAAO,GACjC,OAAA,iBAAiB,QAAQC,CAAM,GAE/B,MAAM;AACJ,aAAA,oBAAoB,SAASD,CAAO,GACpC,OAAA,oBAAoB,QAAQC,CAAM;AAAA,IAC3C;AAAA,EAAA,CACD,GAEML;AACT;"}
1
+ {"version":3,"file":"useWindowFocus.mjs","sources":["../../../../src/hooks/useWindowFocus/useWindowFocus.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useWindowFocus\n * @description - Hook that provides the current focus state of the window\n * @category Elements\n *\n * @returns {boolean} The current focus state of the window\n *\n * @example\n * const focused = useWindowFocus();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useWindowFocus.html}\n */\nexport const useWindowFocus = () => {\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n window.addEventListener('focus', onFocus);\n window.addEventListener('blur', onBlur);\n\n return () => {\n window.removeEventListener('focus', onFocus);\n window.removeEventListener('blur', onBlur);\n };\n });\n\n return focused;\n};\n"],"names":["useWindowFocus","focused","setFocused","useState","useEffect","onFocus","onBlur"],"mappings":";AAcO,MAAMA,IAAiB,MAAM;AAClC,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,SAAAC,EAAU,MAAM;AACR,UAAAC,IAAU,MAAMH,EAAW,EAAI,GAC/BI,IAAS,MAAMJ,EAAW,EAAK;AAE9B,kBAAA,iBAAiB,SAASG,CAAO,GACjC,OAAA,iBAAiB,QAAQC,CAAM,GAE/B,MAAM;AACJ,aAAA,oBAAoB,SAASD,CAAO,GACpC,OAAA,oBAAoB,QAAQC,CAAM;AAAA,IAC3C;AAAA,EAAA,CACD,GAEML;AACT;"}
@@ -7,5 +7,7 @@
7
7
  *
8
8
  * @example
9
9
  * const activeElement = useActiveElement();
10
+ *
11
+ * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}
10
12
  */
11
13
  export declare const useActiveElement: <ActiveElement extends HTMLElement>() => ActiveElement | null;
@@ -7,10 +7,7 @@ export interface UseDoubleClickOptions {
7
7
  }
8
8
  export interface UseDoubleClick {
9
9
  (target: HookTarget, callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions): boolean;
10
- <Target extends Element>(callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions, target?: never): {
11
- ref: StateRef<Target>;
12
- clicked: boolean;
13
- };
10
+ <Target extends Element>(callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions, target?: never): StateRef<Target>;
14
11
  }
15
12
  /**
16
13
  * @name useDoubleClick
@@ -34,5 +31,7 @@ export interface UseDoubleClick {
34
31
  *
35
32
  * @example
36
33
  * const ref = useDoubleClick(() => console.log('double clicked'));
34
+ *
35
+ * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}
37
36
  */
38
37
  export declare const useDoubleClick: UseDoubleClick;
@@ -7,5 +7,7 @@
7
7
  *
8
8
  * @example
9
9
  * const focused = useWindowFocus();
10
+ *
11
+ * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useWindowFocus.html}
10
12
  */
11
13
  export declare const useWindowFocus: () => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siberiacancode/reactuse",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "description": "The ultimate collection of react hooks",
5
5
  "author": {
6
6
  "name": "SIBERIA CAN CODE 🧊",