@siberiacancode/reactuse 0.3.3 → 0.3.5
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/useActiveElement/useActiveElement.cjs +1 -1
- package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
- package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs +1 -1
- package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs +1 -1
- package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useCookie/useCookie.cjs +1 -1
- package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
- package/dist/cjs/hooks/useCounter/useCounter.cjs +1 -1
- package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
- package/dist/cjs/hooks/useCssVar/useCssVar.cjs +1 -1
- package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
- package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs +1 -1
- package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs.map +1 -1
- package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs +1 -1
- package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
- package/dist/cjs/hooks/useDropZone/useDropZone.cjs +1 -1
- package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -1
- package/dist/cjs/hooks/useElementSize/useElementSize.cjs +1 -1
- package/dist/cjs/hooks/useElementSize/useElementSize.cjs.map +1 -1
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs +1 -1
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs.map +1 -1
- package/dist/cjs/hooks/useEventSource/useEventSource.cjs +1 -1
- package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -1
- package/dist/cjs/hooks/useField/useField.cjs +1 -1
- package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
- package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs +1 -1
- package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs.map +1 -1
- package/dist/cjs/hooks/useFocus/useFocus.cjs +1 -1
- package/dist/cjs/hooks/useFocus/useFocus.cjs.map +1 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs +1 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs.map +1 -1
- package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs +1 -1
- package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs.map +1 -1
- package/dist/cjs/hooks/useHash/useHash.cjs +1 -1
- package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
- package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs +1 -1
- package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs.map +1 -1
- package/dist/cjs/hooks/useHover/useHover.cjs +1 -1
- package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
- package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +1 -1
- package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useInterval/useInterval.cjs +1 -1
- package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs +1 -1
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs +1 -1
- package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs.map +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
- package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs +1 -1
- package/dist/cjs/hooks/useLockScroll/useLockScroll.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/useMeasure/useMeasure.cjs +1 -1
- package/dist/cjs/hooks/useMeasure/useMeasure.cjs.map +1 -1
- package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs +1 -1
- package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs.map +1 -1
- package/dist/cjs/hooks/useMouse/useMouse.cjs +1 -1
- package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
- package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs +1 -1
- package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs +1 -1
- package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs.map +1 -1
- package/dist/cjs/hooks/usePaint/usePaint.cjs +1 -1
- package/dist/cjs/hooks/usePaint/usePaint.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/usePictureInPicture/usePictureInPicture.cjs +1 -1
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs.map +1 -1
- package/dist/cjs/hooks/useRefState/useRefState.cjs +1 -1
- package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +1 -1
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useRightClick/useRightClick.cjs +1 -1
- package/dist/cjs/hooks/useRightClick/useRightClick.cjs.map +1 -1
- package/dist/cjs/hooks/useScroll/useScroll.cjs +1 -1
- package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs +1 -1
- package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
- package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs +1 -1
- package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs.map +1 -1
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +1 -1
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -1
- package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs +1 -1
- package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs.map +1 -1
- package/dist/cjs/hooks/useSticky/useSticky.cjs +1 -1
- package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
- package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs +1 -1
- package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs.map +1 -1
- package/dist/cjs/hooks/useStorage/useStorage.cjs +1 -1
- package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
- package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +1 -1
- package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
- package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs +1 -1
- package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs.map +1 -1
- package/dist/cjs/hooks/useTimer/useTimer.cjs +1 -1
- package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
- package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs +1 -1
- package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
- package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs +1 -1
- package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
- package/dist/cjs/hooks/useVisibility/useVisibility.cjs +1 -1
- package/dist/cjs/hooks/useVisibility/useVisibility.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs +1 -1
- package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/utils/helpers/isTarget.cjs +1 -1
- package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +13 -13
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs +24 -24
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
- package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs +30 -35
- package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs +15 -14
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
- package/dist/esm/hooks/useCookie/useCookie.mjs +2 -2
- package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
- package/dist/esm/hooks/useCounter/useCounter.mjs +2 -2
- package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
- package/dist/esm/hooks/useCssVar/useCssVar.mjs +8 -8
- package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
- package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs +2 -2
- package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
- package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs +17 -17
- package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +14 -14
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
- package/dist/esm/hooks/useDropZone/useDropZone.mjs +23 -23
- package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
- package/dist/esm/hooks/useElementSize/useElementSize.mjs +14 -14
- package/dist/esm/hooks/useElementSize/useElementSize.mjs.map +1 -1
- package/dist/esm/hooks/useEventListener/useEventListener.mjs +14 -14
- package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
- package/dist/esm/hooks/useEventSource/useEventSource.mjs +33 -34
- package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
- package/dist/esm/hooks/useField/useField.mjs +2 -1
- package/dist/esm/hooks/useField/useField.mjs.map +1 -1
- package/dist/esm/hooks/useFileDialog/useFileDialog.mjs +2 -2
- package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
- package/dist/esm/hooks/useFocus/useFocus.mjs +20 -20
- package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs +21 -21
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs.map +1 -1
- package/dist/esm/hooks/useFullscreen/useFullscreen.mjs +2 -2
- package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
- package/dist/esm/hooks/useHash/useHash.mjs +2 -2
- package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
- package/dist/esm/hooks/useHotkeys/useHotkeys.mjs +24 -16
- package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
- package/dist/esm/hooks/useHover/useHover.mjs +16 -16
- package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +16 -16
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +26 -18
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
- package/dist/esm/hooks/useInterval/useInterval.mjs +2 -2
- package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +15 -15
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs +22 -15
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
- package/dist/esm/hooks/useKeyboard/useKeyboard.mjs +10 -10
- package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +12 -12
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
- package/dist/esm/hooks/useLockScroll/useLockScroll.mjs +23 -23
- package/dist/esm/hooks/useLockScroll/useLockScroll.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs +22 -22
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useMeasure/useMeasure.mjs +15 -15
- package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
- package/dist/esm/hooks/useMediaControls/useMediaControls.mjs +28 -28
- package/dist/esm/hooks/useMediaControls/useMediaControls.mjs.map +1 -1
- package/dist/esm/hooks/useMouse/useMouse.mjs +17 -17
- package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
- package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +17 -16
- package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
- package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +2 -2
- package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
- package/dist/esm/hooks/usePaint/usePaint.mjs +31 -31
- package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
- package/dist/esm/hooks/useParallax/useParallax.mjs +24 -23
- package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs +25 -25
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs.map +1 -1
- package/dist/esm/hooks/useRefState/useRefState.mjs +1 -0
- package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +16 -16
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
- package/dist/esm/hooks/useRightClick/useRightClick.mjs +14 -14
- package/dist/esm/hooks/useRightClick/useRightClick.mjs.map +1 -1
- package/dist/esm/hooks/useScroll/useScroll.mjs +22 -22
- package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
- package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs +16 -16
- package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
- package/dist/esm/hooks/useScrollTo/useScrollTo.mjs +10 -10
- package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +20 -21
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +51 -36
- package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
- package/dist/esm/hooks/useSticky/useSticky.mjs +17 -17
- package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
- package/dist/esm/hooks/useStopwatch/useStopwatch.mjs +4 -4
- package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
- package/dist/esm/hooks/useStorage/useStorage.mjs +40 -37
- package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
- package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +12 -12
- package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
- package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs +20 -20
- package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs.map +1 -1
- package/dist/esm/hooks/useTimer/useTimer.mjs +3 -3
- package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
- package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs +2 -2
- package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
- package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +2 -2
- package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
- package/dist/esm/hooks/useVisibility/useVisibility.mjs +25 -17
- package/dist/esm/hooks/useVisibility/useVisibility.mjs.map +1 -1
- package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs +1 -1
- package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
- package/dist/esm/index.mjs +98 -96
- package/dist/esm/utils/helpers/isTarget.mjs +10 -8
- package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
- package/dist/types/hooks/useBreakpoints/useBreakpoints.d.ts +1 -11
- package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +1 -1
- package/dist/types/hooks/useEventSource/useEventSource.d.ts +2 -2
- package/dist/types/hooks/useField/useField.d.ts +3 -0
- package/dist/types/hooks/useHover/useHover.d.ts +6 -6
- package/dist/types/hooks/useRefState/useRefState.d.ts +1 -0
- package/dist/types/hooks/useSpeechSynthesis/useSpeechSynthesis.d.ts +1 -1
- package/dist/types/utils/helpers/isTarget.d.ts +9 -1
- package/package.json +89 -89
|
@@ -17,7 +17,7 @@ const f = "reactuse-url-search-params-event", w = (n = "history") => {
|
|
|
17
17
|
return `${s}${h}${r ? `?${r}` : ""}`;
|
|
18
18
|
}
|
|
19
19
|
throw new Error("Invalid mode");
|
|
20
|
-
}, L = () => window.dispatchEvent(new Event(f)), U = (n, i) => {
|
|
20
|
+
}, L = () => window.dispatchEvent(new Event(f)), U = ((n, i) => {
|
|
21
21
|
const r = typeof i == "object" && i && ("serializer" in i || "deserializer" in i || "initialValue" in i || "mode" in i || "write" in i) ? i : void 0, s = r ? r?.initialValue : i, { mode: t = "history", write: a = "replace" } = r ?? {};
|
|
22
22
|
if (typeof window > "u")
|
|
23
23
|
return {
|
|
@@ -66,7 +66,7 @@ const f = "reactuse-url-search-params-event", w = (n = "history") => {
|
|
|
66
66
|
remove: g,
|
|
67
67
|
set: P
|
|
68
68
|
};
|
|
69
|
-
};
|
|
69
|
+
});
|
|
70
70
|
export {
|
|
71
71
|
f as URL_SEARCH_PARAMS_EVENT,
|
|
72
72
|
z as createQueryString,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUrlSearchParam.mjs","sources":["../../../../src/hooks/useUrlSearchParam/useUrlSearchParam.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/** The url search params mode type */\nexport type UrlSearchParamMode = 'hash-params' | 'hash' | 'history';\n\n/** The use url search param options type */\nexport interface UseUrlSearchParamOptions<Value> {\n /** The initial value of the search param */\n initialValue?: Value;\n /** The mode to use for writing to the URL */\n mode?: UrlSearchParamMode;\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n /** The deserializer function to be invoked */\n deserializer?: (value: string) => Value;\n /** The serializer function to be invoked */\n serializer?: (value: Value) => string;\n}\n\n/** The use url search params set options type */\nexport interface UseUrlSearchParamsActionOptions {\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/** The use url search param return type */\nexport interface UseUrlSearchParamReturn<Value> {\n /** Current search param value */\n value: Value | undefined;\n /** Function to remove the search param */\n remove: (options?: UseUrlSearchParamsActionOptions) => void;\n /** Function to update search param */\n set: (value: Value, options?: UseUrlSearchParamsActionOptions) => void;\n}\n\nexport const URL_SEARCH_PARAMS_EVENT = 'reactuse-url-search-params-event';\n\nexport const getUrlSearchParams = (mode: UrlSearchParamMode = 'history') => {\n const { search, hash } = window.location;\n\n let path = '';\n\n if (mode === 'history') path = search;\n if (mode === 'hash-params') path = hash.replace(/^#/, '');\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n path = ~index ? hash.slice(index) : '';\n }\n\n return new URLSearchParams(path);\n};\n\nexport const createQueryString = (searchParams: URLSearchParams, mode: UrlSearchParamMode) => {\n const searchParamsString = searchParams.toString();\n const { search, hash } = window.location;\n\n if (mode === 'history') return `${searchParamsString ? `?${searchParamsString}` : ''}${hash}`;\n if (mode === 'hash-params')\n return `${search}${searchParamsString ? `#${searchParamsString}` : ''}`;\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n const base = index > -1 ? hash.slice(0, index) : hash;\n return `${search}${base}${searchParamsString ? `?${searchParamsString}` : ''}`;\n }\n\n throw new Error('Invalid mode');\n};\n\nexport const dispatchUrlSearchParamsEvent = () =>\n window.dispatchEvent(new Event(URL_SEARCH_PARAMS_EVENT));\n\nexport interface UseUrlSearchParam {\n <Value>(\n key: string,\n options: UseUrlSearchParamOptions<Value> & { initialValue: Value }\n ): UseUrlSearchParamReturn<Value>;\n\n <Value>(\n key: string,\n options?: UseUrlSearchParamOptions<Value>\n ): UseUrlSearchParamReturn<Value | undefined>;\n\n <Value>(key: string, initialValue: Value): UseUrlSearchParamReturn<Value>;\n\n <Value>(key: string): UseUrlSearchParamReturn<Value | undefined>;\n}\n\n/**\n * @name useUrlSearchParam\n * @description - Hook that provides reactive URLSearchParams for a single key\n * @category State\n * @usage high\n *\n * @overload\n * @template Value The type of the url param values\n * @param {string} key The key of the url param\n * @param {UseUrlSearchParamOptions<Value> & { initialValue: Value }} options The options object with required initialValue\n * @param {Value} options.initialValue The initial value for the url param\n * @param {UrlSearchParamsMode} [options.mode='history'] The mode to use for the URL ('history' | 'hash-params' | 'hash')\n * @param {'push' | 'replace'} [options.write='replace'] The mode to use for writing to the URL\n * @param {(value: Value) => string} [options.serializer] Custom serializer function to convert value to string\n * @param {(value: string) => Value} [options.deserializer] Custom deserializer function to convert string to value\n * @returns {UseUrlSearchParamReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParam('page', { initialValue: 1 });\n *\n * @overload\n * @template Value The type of the url param values\n * @param {string} key The key of the url param\n * @param {Value} [initialValue] The initial value for the url param\n * @returns {UseUrlSearchParamReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParam('page', 1);\n */\nexport const useUrlSearchParam = (<Value>(key: string, params?: any) => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params ||\n 'deserializer' in params ||\n 'initialValue' in params ||\n 'mode' in params ||\n 'write' in params)\n ? params\n : undefined\n ) as UseUrlSearchParamOptions<Value>;\n\n const initialValue = (options ? options?.initialValue : params) as Value;\n const { mode = 'history', write: writeMode = 'replace' } = options ?? {};\n\n if (typeof window === 'undefined') {\n return {\n value: initialValue,\n remove: () => {},\n set: () => {}\n } as UseUrlSearchParamReturn<Value>;\n }\n\n const serializer = (value: Value) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined' || value === 'null') return undefined as unknown as Value;\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value;\n }\n };\n\n const setUrlSearchParam = (\n key: string,\n value: Value | undefined,\n mode: UrlSearchParamMode,\n write: 'push' | 'replace' = 'replace'\n ) => {\n const urlSearchParams = getUrlSearchParams(mode);\n\n if (value === undefined) {\n urlSearchParams.delete(key);\n } else {\n const serializedValue = serializer ? serializer(value) : String(value);\n urlSearchParams.set(key, serializedValue);\n }\n\n const query = createQueryString(urlSearchParams, mode);\n if (write === 'replace') window.history.replaceState({}, '', query);\n if (write === 'push') window.history.pushState({}, '', query);\n\n dispatchUrlSearchParamsEvent();\n };\n\n const [value, setValue] = useState<Value | undefined>(() => {\n const urlSearchParams = getUrlSearchParams(mode);\n const currentValue = urlSearchParams.get(key);\n\n if (currentValue === null && initialValue !== undefined) {\n setUrlSearchParam(key, initialValue, mode, writeMode);\n return initialValue;\n }\n\n return currentValue ? deserializer(currentValue) : undefined;\n });\n\n const set = (value: Value, options?: UseUrlSearchParamsActionOptions) => {\n setUrlSearchParam(key, value, mode, options?.write ?? writeMode);\n setValue(value);\n };\n\n const remove = (options?: UseUrlSearchParamsActionOptions) => {\n setUrlSearchParam(key, undefined, mode, options?.write ?? writeMode);\n setValue(undefined);\n };\n\n useEffect(() => {\n const onParamsChange = () => {\n const urlSearchParams = getUrlSearchParams(mode);\n const newValue = urlSearchParams.get(key);\n setValue(newValue ? deserializer(newValue) : undefined);\n };\n\n window.addEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.addEventListener('popstate', onParamsChange);\n if (mode !== 'history') {\n window.addEventListener('hashchange', onParamsChange);\n }\n\n return () => {\n window.removeEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.removeEventListener('popstate', onParamsChange);\n if (mode !== 'history') {\n window.removeEventListener('hashchange', onParamsChange);\n }\n };\n }, [key, mode]);\n\n return {\n value,\n remove,\n set\n };\n}) as UseUrlSearchParam;\n"],"names":["URL_SEARCH_PARAMS_EVENT","getUrlSearchParams","mode","search","hash","path","index","createQueryString","searchParams","searchParamsString","base","dispatchUrlSearchParamsEvent","useUrlSearchParam","key","params","options","initialValue","writeMode","serializer","value","deserializer","setUrlSearchParam","write","urlSearchParams","serializedValue","query","setValue","useState","currentValue","set","remove","useEffect","onParamsChange","newValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useUrlSearchParam.mjs","sources":["../../../../src/hooks/useUrlSearchParam/useUrlSearchParam.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/** The url search params mode type */\nexport type UrlSearchParamMode = 'hash-params' | 'hash' | 'history';\n\n/** The use url search param options type */\nexport interface UseUrlSearchParamOptions<Value> {\n /** The initial value of the search param */\n initialValue?: Value;\n /** The mode to use for writing to the URL */\n mode?: UrlSearchParamMode;\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n /** The deserializer function to be invoked */\n deserializer?: (value: string) => Value;\n /** The serializer function to be invoked */\n serializer?: (value: Value) => string;\n}\n\n/** The use url search params set options type */\nexport interface UseUrlSearchParamsActionOptions {\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/** The use url search param return type */\nexport interface UseUrlSearchParamReturn<Value> {\n /** Current search param value */\n value: Value | undefined;\n /** Function to remove the search param */\n remove: (options?: UseUrlSearchParamsActionOptions) => void;\n /** Function to update search param */\n set: (value: Value, options?: UseUrlSearchParamsActionOptions) => void;\n}\n\nexport const URL_SEARCH_PARAMS_EVENT = 'reactuse-url-search-params-event';\n\nexport const getUrlSearchParams = (mode: UrlSearchParamMode = 'history') => {\n const { search, hash } = window.location;\n\n let path = '';\n\n if (mode === 'history') path = search;\n if (mode === 'hash-params') path = hash.replace(/^#/, '');\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n path = ~index ? hash.slice(index) : '';\n }\n\n return new URLSearchParams(path);\n};\n\nexport const createQueryString = (searchParams: URLSearchParams, mode: UrlSearchParamMode) => {\n const searchParamsString = searchParams.toString();\n const { search, hash } = window.location;\n\n if (mode === 'history') return `${searchParamsString ? `?${searchParamsString}` : ''}${hash}`;\n if (mode === 'hash-params')\n return `${search}${searchParamsString ? `#${searchParamsString}` : ''}`;\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n const base = index > -1 ? hash.slice(0, index) : hash;\n return `${search}${base}${searchParamsString ? `?${searchParamsString}` : ''}`;\n }\n\n throw new Error('Invalid mode');\n};\n\nexport const dispatchUrlSearchParamsEvent = () =>\n window.dispatchEvent(new Event(URL_SEARCH_PARAMS_EVENT));\n\nexport interface UseUrlSearchParam {\n <Value>(\n key: string,\n options: UseUrlSearchParamOptions<Value> & { initialValue: Value }\n ): UseUrlSearchParamReturn<Value>;\n\n <Value>(\n key: string,\n options?: UseUrlSearchParamOptions<Value>\n ): UseUrlSearchParamReturn<Value | undefined>;\n\n <Value>(key: string, initialValue: Value): UseUrlSearchParamReturn<Value>;\n\n <Value>(key: string): UseUrlSearchParamReturn<Value | undefined>;\n}\n\n/**\n * @name useUrlSearchParam\n * @description - Hook that provides reactive URLSearchParams for a single key\n * @category State\n * @usage high\n *\n * @overload\n * @template Value The type of the url param values\n * @param {string} key The key of the url param\n * @param {UseUrlSearchParamOptions<Value> & { initialValue: Value }} options The options object with required initialValue\n * @param {Value} options.initialValue The initial value for the url param\n * @param {UrlSearchParamsMode} [options.mode='history'] The mode to use for the URL ('history' | 'hash-params' | 'hash')\n * @param {'push' | 'replace'} [options.write='replace'] The mode to use for writing to the URL\n * @param {(value: Value) => string} [options.serializer] Custom serializer function to convert value to string\n * @param {(value: string) => Value} [options.deserializer] Custom deserializer function to convert string to value\n * @returns {UseUrlSearchParamReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParam('page', { initialValue: 1 });\n *\n * @overload\n * @template Value The type of the url param values\n * @param {string} key The key of the url param\n * @param {Value} [initialValue] The initial value for the url param\n * @returns {UseUrlSearchParamReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParam('page', 1);\n */\nexport const useUrlSearchParam = (<Value>(key: string, params?: any) => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params ||\n 'deserializer' in params ||\n 'initialValue' in params ||\n 'mode' in params ||\n 'write' in params)\n ? params\n : undefined\n ) as UseUrlSearchParamOptions<Value>;\n\n const initialValue = (options ? options?.initialValue : params) as Value;\n const { mode = 'history', write: writeMode = 'replace' } = options ?? {};\n\n if (typeof window === 'undefined') {\n return {\n value: initialValue,\n remove: () => {},\n set: () => {}\n } as UseUrlSearchParamReturn<Value>;\n }\n\n const serializer = (value: Value) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined' || value === 'null') return undefined as unknown as Value;\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value;\n }\n };\n\n const setUrlSearchParam = (\n key: string,\n value: Value | undefined,\n mode: UrlSearchParamMode,\n write: 'push' | 'replace' = 'replace'\n ) => {\n const urlSearchParams = getUrlSearchParams(mode);\n\n if (value === undefined) {\n urlSearchParams.delete(key);\n } else {\n const serializedValue = serializer ? serializer(value) : String(value);\n urlSearchParams.set(key, serializedValue);\n }\n\n const query = createQueryString(urlSearchParams, mode);\n if (write === 'replace') window.history.replaceState({}, '', query);\n if (write === 'push') window.history.pushState({}, '', query);\n\n dispatchUrlSearchParamsEvent();\n };\n\n const [value, setValue] = useState<Value | undefined>(() => {\n const urlSearchParams = getUrlSearchParams(mode);\n const currentValue = urlSearchParams.get(key);\n\n if (currentValue === null && initialValue !== undefined) {\n setUrlSearchParam(key, initialValue, mode, writeMode);\n return initialValue;\n }\n\n return currentValue ? deserializer(currentValue) : undefined;\n });\n\n const set = (value: Value, options?: UseUrlSearchParamsActionOptions) => {\n setUrlSearchParam(key, value, mode, options?.write ?? writeMode);\n setValue(value);\n };\n\n const remove = (options?: UseUrlSearchParamsActionOptions) => {\n setUrlSearchParam(key, undefined, mode, options?.write ?? writeMode);\n setValue(undefined);\n };\n\n useEffect(() => {\n const onParamsChange = () => {\n const urlSearchParams = getUrlSearchParams(mode);\n const newValue = urlSearchParams.get(key);\n setValue(newValue ? deserializer(newValue) : undefined);\n };\n\n window.addEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.addEventListener('popstate', onParamsChange);\n if (mode !== 'history') {\n window.addEventListener('hashchange', onParamsChange);\n }\n\n return () => {\n window.removeEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.removeEventListener('popstate', onParamsChange);\n if (mode !== 'history') {\n window.removeEventListener('hashchange', onParamsChange);\n }\n };\n }, [key, mode]);\n\n return {\n value,\n remove,\n set\n };\n}) as UseUrlSearchParam;\n"],"names":["URL_SEARCH_PARAMS_EVENT","getUrlSearchParams","mode","search","hash","path","index","createQueryString","searchParams","searchParamsString","base","dispatchUrlSearchParamsEvent","useUrlSearchParam","key","params","options","initialValue","writeMode","serializer","value","deserializer","setUrlSearchParam","write","urlSearchParams","serializedValue","query","setValue","useState","currentValue","set","remove","useEffect","onParamsChange","newValue"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState as L, useEffect as v } from "react";
|
|
2
2
|
import { getUrlSearchParams as u, URL_SEARCH_PARAMS_EVENT as g, createQueryString as U, dispatchUrlSearchParamsEvent as m } from "../useUrlSearchParam/useUrlSearchParam.mjs";
|
|
3
|
-
const A = (t) => {
|
|
3
|
+
const A = ((t) => {
|
|
4
4
|
const i = typeof t == "object" && t && ("serializer" in t || "deserializer" in t || "initialValue" in t || "mode" in t || "write" in t) ? t : {}, c = i ? i?.initialValue : t, { mode: n = "history", write: f = "replace" } = i, l = (e) => i?.serializer ? i.serializer(e) : typeof e == "string" ? e : JSON.stringify(e), p = (e) => {
|
|
5
5
|
if (i?.deserializer) return i.deserializer(e);
|
|
6
6
|
if (e !== "undefined")
|
|
@@ -51,7 +51,7 @@ const A = (t) => {
|
|
|
51
51
|
value: w,
|
|
52
52
|
set: P
|
|
53
53
|
};
|
|
54
|
-
};
|
|
54
|
+
});
|
|
55
55
|
export {
|
|
56
56
|
U as createQueryString,
|
|
57
57
|
m as dispatchUrlSearchParamsEvent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUrlSearchParams.mjs","sources":["../../../../src/hooks/useUrlSearchParams/useUrlSearchParams.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n createQueryString,\n dispatchUrlSearchParamsEvent,\n getUrlSearchParams,\n URL_SEARCH_PARAMS_EVENT\n} from '../useUrlSearchParam/useUrlSearchParam';\n\n/** The url params type */\nexport type UrlParams = Record<string, any>;\n\n/** The url search params mod */\nexport type UrlSearchParamsMode = 'hash-params' | 'hash' | 'history';\n\n/** The use url search params set options type */\nexport interface UseUrlSearchParamsSetOptions {\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/* The use search params initial value type */\nexport type UseUrlSearchParamsInitialValue<Value> = (() => Value) | Value;\n\n/** The use url search params options type */\nexport interface UseUrlSearchParamsOptions<Value> {\n /* The initial value of the url search params */\n initialValue?: UseUrlSearchParamsInitialValue<string | URLSearchParams | Value>;\n /** The mode to use for writing to the URL */\n mode?: UrlSearchParamsMode;\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value[keyof Value];\n /* The serializer function to be invoked */\n serializer?: (value: Value[keyof Value]) => string;\n}\n\n/** The use url search params return type */\nexport interface UseUrlSearchParamsReturn<Value> {\n /** The value of the url search params */\n value: Value;\n /** The set function */\n set: (value: Partial<Value>, options?: UseUrlSearchParamsSetOptions) => void;\n}\n\nexport interface UseUrlSearchParams {\n <Value>(\n key: string,\n options: UseUrlSearchParamsOptions<Value> & {\n initialValue: UseUrlSearchParamsInitialValue<Value>;\n }\n ): UseUrlSearchParamsReturn<Value>;\n\n <Value>(options?: UseUrlSearchParamsOptions<Value>): UseUrlSearchParamsReturn<Value | undefined>;\n\n <Value>(initialValue: UseUrlSearchParamsInitialValue<Value>): UseUrlSearchParamsReturn<Value>;\n\n <Value>(key: string): UseUrlSearchParamsReturn<Value | undefined>;\n}\n\n/**\n * @name useUrlSearchParams\n * @description - Hook that provides reactive URLSearchParams\n * @category State\n * @usage high\n *\n * @overload\n * @template Value The type of the url param values\n * @param {UseUrlSearchParamsOptions<Value> & { initialValue: UseUrlSearchParamsInitialValue<Value> }} options The options object with required initialValue\n * @param {UseUrlSearchParamsInitialValue<Value>} [options.initialValue] The initial value for the url params\n * @param {UrlSearchParamsMode} [options.mode='history'] The mode to use for the URL ('history' | 'hash-params' | 'hash')\n * @param {'push' | 'replace'} [options.write='replace'] The mode to use for writing to the URL\n * @param {(value: Value[keyof Value]) => string} [options.serializer] Custom serializer function to convert value to string\n * @param {(value: string) => Value[keyof Value]} [options.deserializer] Custom deserializer function to convert string to value\n * @returns {UseUrlSearchParamsReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParams({ initialValue: { page: 1 } });\n *\n * @overload\n * @template Value The type of the url param values\n * @param {UseUrlSearchParamsInitialValue<Value>} [initialValue] The initial value for the url params\n * @returns {UseUrlSearchParamsReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParams({ page: 1 });\n */\nexport const useUrlSearchParams = (<Value extends UrlParams>(\n params: any\n): UseUrlSearchParamsReturn<Value> => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params ||\n 'deserializer' in params ||\n 'initialValue' in params ||\n 'mode' in params ||\n 'write' in params)\n ? params\n : {}\n ) as UseUrlSearchParamsOptions<Value>;\n const initialValue = (\n options ? options?.initialValue : params\n ) as UseUrlSearchParamsInitialValue<Value>;\n\n const { mode = 'history', write: writeMode = 'replace' } = options;\n\n const serializer = (value: Value[keyof Value]) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value[keyof Value];\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value[keyof Value];\n }\n };\n\n const setUrlSearchParams = <Value extends UrlParams>(\n mode: UrlSearchParamsMode,\n value: Partial<Value>,\n write: 'push' | 'replace' = 'replace'\n ) => {\n const urlSearchParams = getUrlSearchParams(mode);\n\n Object.entries(value).forEach(([key, param]) => {\n if (param === undefined) {\n urlSearchParams.delete(key);\n } else {\n const serializedValue = serializer ? serializer(param) : String(param);\n urlSearchParams.set(key, serializedValue);\n }\n });\n\n const query = createQueryString(urlSearchParams, mode);\n if (write === 'replace') window.history.replaceState({}, '', query);\n if (write === 'push') window.history.pushState({}, '', query);\n dispatchUrlSearchParamsEvent();\n\n return urlSearchParams;\n };\n\n const getParsedUrlSearchParams = (searchParams: string | UrlParams | URLSearchParams) => {\n if (typeof searchParams === 'string') {\n return getParsedUrlSearchParams(new URLSearchParams(searchParams));\n }\n\n if (searchParams instanceof URLSearchParams) {\n return Array.from(searchParams.entries()).reduce(\n (acc, [key, value]) => {\n acc[key] = deserializer(value);\n return acc;\n },\n {} as Record<string, any>\n );\n }\n\n return searchParams;\n };\n\n const [value, setValue] = useState<Value>(() => {\n if (typeof window === 'undefined') return (initialValue ?? {}) as Value;\n\n const urlSearchParams = getUrlSearchParams(mode);\n const value = {\n ...(initialValue && getParsedUrlSearchParams(initialValue)),\n ...getParsedUrlSearchParams(urlSearchParams)\n } as Value;\n\n setUrlSearchParams(mode, value, writeMode);\n\n return value;\n });\n\n const set = (params: Partial<Value>, options?: UseUrlSearchParamsSetOptions) => {\n const searchParams = setUrlSearchParams(\n mode,\n { ...value, ...params },\n options?.write ?? writeMode\n );\n setValue(getParsedUrlSearchParams(searchParams) as Value);\n };\n\n useEffect(() => {\n const onParamsChange = () => {\n const searchParams = getUrlSearchParams(mode);\n setValue(getParsedUrlSearchParams(searchParams) as Value);\n };\n\n window.addEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.addEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.addEventListener('hashchange', onParamsChange);\n\n return () => {\n window.removeEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.removeEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.removeEventListener('hashchange', onParamsChange);\n };\n }, [mode]);\n\n return {\n value,\n set\n };\n}) as UseUrlSearchParams;\n\nexport { createQueryString, dispatchUrlSearchParamsEvent, getUrlSearchParams };\n"],"names":["useUrlSearchParams","params","options","initialValue","mode","writeMode","serializer","value","deserializer","setUrlSearchParams","write","urlSearchParams","getUrlSearchParams","key","param","serializedValue","query","createQueryString","dispatchUrlSearchParamsEvent","getParsedUrlSearchParams","searchParams","acc","setValue","useState","set","useEffect","onParamsChange","URL_SEARCH_PARAMS_EVENT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useUrlSearchParams.mjs","sources":["../../../../src/hooks/useUrlSearchParams/useUrlSearchParams.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport {\n createQueryString,\n dispatchUrlSearchParamsEvent,\n getUrlSearchParams,\n URL_SEARCH_PARAMS_EVENT\n} from '../useUrlSearchParam/useUrlSearchParam';\n\n/** The url params type */\nexport type UrlParams = Record<string, any>;\n\n/** The url search params mod */\nexport type UrlSearchParamsMode = 'hash-params' | 'hash' | 'history';\n\n/** The use url search params set options type */\nexport interface UseUrlSearchParamsSetOptions {\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/* The use search params initial value type */\nexport type UseUrlSearchParamsInitialValue<Value> = (() => Value) | Value;\n\n/** The use url search params options type */\nexport interface UseUrlSearchParamsOptions<Value> {\n /* The initial value of the url search params */\n initialValue?: UseUrlSearchParamsInitialValue<string | URLSearchParams | Value>;\n /** The mode to use for writing to the URL */\n mode?: UrlSearchParamsMode;\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value[keyof Value];\n /* The serializer function to be invoked */\n serializer?: (value: Value[keyof Value]) => string;\n}\n\n/** The use url search params return type */\nexport interface UseUrlSearchParamsReturn<Value> {\n /** The value of the url search params */\n value: Value;\n /** The set function */\n set: (value: Partial<Value>, options?: UseUrlSearchParamsSetOptions) => void;\n}\n\nexport interface UseUrlSearchParams {\n <Value>(\n key: string,\n options: UseUrlSearchParamsOptions<Value> & {\n initialValue: UseUrlSearchParamsInitialValue<Value>;\n }\n ): UseUrlSearchParamsReturn<Value>;\n\n <Value>(options?: UseUrlSearchParamsOptions<Value>): UseUrlSearchParamsReturn<Value | undefined>;\n\n <Value>(initialValue: UseUrlSearchParamsInitialValue<Value>): UseUrlSearchParamsReturn<Value>;\n\n <Value>(key: string): UseUrlSearchParamsReturn<Value | undefined>;\n}\n\n/**\n * @name useUrlSearchParams\n * @description - Hook that provides reactive URLSearchParams\n * @category State\n * @usage high\n *\n * @overload\n * @template Value The type of the url param values\n * @param {UseUrlSearchParamsOptions<Value> & { initialValue: UseUrlSearchParamsInitialValue<Value> }} options The options object with required initialValue\n * @param {UseUrlSearchParamsInitialValue<Value>} [options.initialValue] The initial value for the url params\n * @param {UrlSearchParamsMode} [options.mode='history'] The mode to use for the URL ('history' | 'hash-params' | 'hash')\n * @param {'push' | 'replace'} [options.write='replace'] The mode to use for writing to the URL\n * @param {(value: Value[keyof Value]) => string} [options.serializer] Custom serializer function to convert value to string\n * @param {(value: string) => Value[keyof Value]} [options.deserializer] Custom deserializer function to convert string to value\n * @returns {UseUrlSearchParamsReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParams({ initialValue: { page: 1 } });\n *\n * @overload\n * @template Value The type of the url param values\n * @param {UseUrlSearchParamsInitialValue<Value>} [initialValue] The initial value for the url params\n * @returns {UseUrlSearchParamsReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParams({ page: 1 });\n */\nexport const useUrlSearchParams = (<Value extends UrlParams>(\n params: any\n): UseUrlSearchParamsReturn<Value> => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params ||\n 'deserializer' in params ||\n 'initialValue' in params ||\n 'mode' in params ||\n 'write' in params)\n ? params\n : {}\n ) as UseUrlSearchParamsOptions<Value>;\n const initialValue = (\n options ? options?.initialValue : params\n ) as UseUrlSearchParamsInitialValue<Value>;\n\n const { mode = 'history', write: writeMode = 'replace' } = options;\n\n const serializer = (value: Value[keyof Value]) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value[keyof Value];\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value[keyof Value];\n }\n };\n\n const setUrlSearchParams = <Value extends UrlParams>(\n mode: UrlSearchParamsMode,\n value: Partial<Value>,\n write: 'push' | 'replace' = 'replace'\n ) => {\n const urlSearchParams = getUrlSearchParams(mode);\n\n Object.entries(value).forEach(([key, param]) => {\n if (param === undefined) {\n urlSearchParams.delete(key);\n } else {\n const serializedValue = serializer ? serializer(param) : String(param);\n urlSearchParams.set(key, serializedValue);\n }\n });\n\n const query = createQueryString(urlSearchParams, mode);\n if (write === 'replace') window.history.replaceState({}, '', query);\n if (write === 'push') window.history.pushState({}, '', query);\n dispatchUrlSearchParamsEvent();\n\n return urlSearchParams;\n };\n\n const getParsedUrlSearchParams = (searchParams: string | UrlParams | URLSearchParams) => {\n if (typeof searchParams === 'string') {\n return getParsedUrlSearchParams(new URLSearchParams(searchParams));\n }\n\n if (searchParams instanceof URLSearchParams) {\n return Array.from(searchParams.entries()).reduce(\n (acc, [key, value]) => {\n acc[key] = deserializer(value);\n return acc;\n },\n {} as Record<string, any>\n );\n }\n\n return searchParams;\n };\n\n const [value, setValue] = useState<Value>(() => {\n if (typeof window === 'undefined') return (initialValue ?? {}) as Value;\n\n const urlSearchParams = getUrlSearchParams(mode);\n const value = {\n ...(initialValue && getParsedUrlSearchParams(initialValue)),\n ...getParsedUrlSearchParams(urlSearchParams)\n } as Value;\n\n setUrlSearchParams(mode, value, writeMode);\n\n return value;\n });\n\n const set = (params: Partial<Value>, options?: UseUrlSearchParamsSetOptions) => {\n const searchParams = setUrlSearchParams(\n mode,\n { ...value, ...params },\n options?.write ?? writeMode\n );\n setValue(getParsedUrlSearchParams(searchParams) as Value);\n };\n\n useEffect(() => {\n const onParamsChange = () => {\n const searchParams = getUrlSearchParams(mode);\n setValue(getParsedUrlSearchParams(searchParams) as Value);\n };\n\n window.addEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.addEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.addEventListener('hashchange', onParamsChange);\n\n return () => {\n window.removeEventListener(URL_SEARCH_PARAMS_EVENT, onParamsChange);\n window.removeEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.removeEventListener('hashchange', onParamsChange);\n };\n }, [mode]);\n\n return {\n value,\n set\n };\n}) as UseUrlSearchParams;\n\nexport { createQueryString, dispatchUrlSearchParamsEvent, getUrlSearchParams };\n"],"names":["useUrlSearchParams","params","options","initialValue","mode","writeMode","serializer","value","deserializer","setUrlSearchParams","write","urlSearchParams","getUrlSearchParams","key","param","serializedValue","query","createQueryString","dispatchUrlSearchParamsEvent","getParsedUrlSearchParams","searchParams","acc","setValue","useState","set","useEffect","onParamsChange","URL_SEARCH_PARAMS_EVENT"],"mappings":";;AAwFO,MAAMA,KAAsB,CACjCC,MACoC;AACpC,QAAMC,IACJ,OAAOD,KAAW,YAClBA,MACC,gBAAgBA,KACf,kBAAkBA,KAClB,kBAAkBA,KAClB,UAAUA,KACV,WAAWA,KACTA,IACA,CAAA,GAEAE,IACJD,IAAUA,GAAS,eAAeD,GAG9B,EAAE,MAAAG,IAAO,WAAW,OAAOC,IAAY,cAAcH,GAErDI,IAAa,CAACC,MACdL,GAAS,aAAmBA,EAAQ,WAAWK,CAAK,IACpD,OAAOA,KAAU,WAAiBA,IAC/B,KAAK,UAAUA,CAAK,GAGvBC,IAAe,CAACD,MAAkB;AACtC,QAAIL,GAAS,aAAc,QAAOA,EAAQ,aAAaK,CAAK;AAC5D,QAAIA,MAAU;AAEd,UAAI;AACF,eAAO,KAAK,MAAMA,CAAK;AAAA,MAAA,QACjB;AACN,eAAOA;AAAAA,MAAA;AAAA,EACT,GAGIE,IAAqB,CACzBL,GACAG,GACAG,IAA4B,cACzB;AACH,UAAMC,IAAkBC,EAAmBR,CAAI;AAE/C,WAAO,QAAQG,CAAK,EAAE,QAAQ,CAAC,CAACM,GAAKC,CAAK,MAAM;AAC9C,UAAIA,MAAU;AACZ,QAAAH,EAAgB,OAAOE,CAAG;AAAA,WACrB;AACL,cAAME,IAAkBT,IAAaA,EAAWQ,CAAK,IAAI,OAAOA,CAAK;AACrE,QAAAH,EAAgB,IAAIE,GAAKE,CAAe;AAAA,MAAA;AAAA,IAC1C,CACD;AAED,UAAMC,IAAQC,EAAkBN,GAAiBP,CAAI;AACrD,WAAIM,MAAU,aAAW,OAAO,QAAQ,aAAa,CAAA,GAAI,IAAIM,CAAK,GAC9DN,MAAU,UAAQ,OAAO,QAAQ,UAAU,CAAA,GAAI,IAAIM,CAAK,GAC5DE,EAAA,GAEOP;AAAA,EAAA,GAGHQ,IAA2B,CAACC,MAC5B,OAAOA,KAAiB,WACnBD,EAAyB,IAAI,gBAAgBC,CAAY,CAAC,IAG/DA,aAAwB,kBACnB,MAAM,KAAKA,EAAa,QAAA,CAAS,EAAE;AAAA,IACxC,CAACC,GAAK,CAACR,GAAKN,CAAK,OACfc,EAAIR,CAAG,IAAIL,EAAaD,CAAK,GACtBc;AAAA,IAET,CAAA;AAAA,EAAC,IAIED,GAGH,CAACb,GAAOe,CAAQ,IAAIC,EAAgB,MAAM;AAC9C,QAAI,OAAO,SAAW,IAAa,QAAQpB,KAAgB,CAAA;AAE3D,UAAMQ,IAAkBC,EAAmBR,CAAI,GACzCG,IAAQ;AAAA,MACZ,GAAIJ,KAAgBgB,EAAyBhB,CAAY;AAAA,MACzD,GAAGgB,EAAyBR,CAAe;AAAA,IAAA;AAG7C,WAAAF,EAAmBL,GAAMG,GAAOF,CAAS,GAElCE;AAAAA,EAAA,CACR,GAEKiB,IAAM,CAACvB,GAAwBC,MAA2C;AAC9E,UAAMkB,IAAeX;AAAA,MACnBL;AAAA,MACA,EAAE,GAAGG,GAAO,GAAGN,EAAAA;AAAAA,MACfC,GAAS,SAASG;AAAA,IAAA;AAEpB,IAAAiB,EAASH,EAAyBC,CAAY,CAAU;AAAA,EAAA;AAG1D,SAAAK,EAAU,MAAM;AACd,UAAMC,IAAiB,MAAM;AAC3B,YAAMN,IAAeR,EAAmBR,CAAI;AAC5C,MAAAkB,EAASH,EAAyBC,CAAY,CAAU;AAAA,IAAA;AAG1D,kBAAO,iBAAiBO,GAAyBD,CAAc,GAC/D,OAAO,iBAAiB,YAAYA,CAAc,GAC9CtB,MAAS,aAAW,OAAO,iBAAiB,cAAcsB,CAAc,GAErE,MAAM;AACX,aAAO,oBAAoBC,GAAyBD,CAAc,GAClE,OAAO,oBAAoB,YAAYA,CAAc,GACjDtB,MAAS,aAAW,OAAO,oBAAoB,cAAcsB,CAAc;AAAA,IAAA;AAAA,EACjF,GACC,CAACtB,CAAI,CAAC,GAEF;AAAA,IACL,OAAAG;AAAA,IACA,KAAAiB;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,33 +1,41 @@
|
|
|
1
|
-
import { useState as d, useRef as
|
|
2
|
-
import { useRefState as
|
|
3
|
-
import { isTarget as
|
|
4
|
-
const
|
|
5
|
-
const n =
|
|
6
|
-
return l.current = i,
|
|
1
|
+
import { useState as d, useRef as R, useEffect as C } from "react";
|
|
2
|
+
import { useRefState as E } from "../useRefState/useRefState.mjs";
|
|
3
|
+
import { isTarget as s } from "../../utils/helpers/isTarget.mjs";
|
|
4
|
+
const S = ((...e) => {
|
|
5
|
+
const n = s(e[0]) ? e[0] : void 0, t = n ? typeof e[1] == "object" ? e[1] : { onChange: e[1] } : typeof e[0] == "object" ? e[0] : { onChange: e[0] }, i = t?.onChange, f = t?.enabled ?? !0, [u, v] = d(), [o, y] = d(), r = E(), l = R(i);
|
|
6
|
+
return l.current = i, C(() => {
|
|
7
7
|
if (!f || !n && !r.state) return;
|
|
8
|
-
const b = n ?
|
|
8
|
+
const b = n ? s.getElement(n) : r.current;
|
|
9
9
|
if (!b) return;
|
|
10
|
-
const
|
|
11
|
-
(
|
|
12
|
-
const g =
|
|
13
|
-
y(g), l.current?.(g,
|
|
10
|
+
const c = new IntersectionObserver(
|
|
11
|
+
(a, h) => {
|
|
12
|
+
const g = a.pop();
|
|
13
|
+
y(g), l.current?.(g, h);
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
...t,
|
|
17
|
-
root: t?.root ?
|
|
17
|
+
root: t?.root ? s.getElement(t.root) : document
|
|
18
18
|
}
|
|
19
19
|
);
|
|
20
|
-
return v(
|
|
21
|
-
|
|
20
|
+
return v(c), c.observe(b), () => {
|
|
21
|
+
c.disconnect();
|
|
22
22
|
};
|
|
23
|
-
}, [
|
|
23
|
+
}, [
|
|
24
|
+
n,
|
|
25
|
+
r.state,
|
|
26
|
+
s.getRefState(n),
|
|
27
|
+
t?.rootMargin,
|
|
28
|
+
t?.threshold,
|
|
29
|
+
t?.root,
|
|
30
|
+
f
|
|
31
|
+
]), n ? { observer: u, entry: o, inView: !!o?.isIntersecting } : {
|
|
24
32
|
observer: u,
|
|
25
33
|
ref: r,
|
|
26
34
|
entry: o,
|
|
27
35
|
inView: !!o?.isIntersecting
|
|
28
36
|
};
|
|
29
|
-
};
|
|
37
|
+
});
|
|
30
38
|
export {
|
|
31
|
-
|
|
39
|
+
S as useVisibility
|
|
32
40
|
};
|
|
33
41
|
//# sourceMappingURL=useVisibility.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVisibility.mjs","sources":["../../../../src/hooks/useVisibility/useVisibility.ts"],"sourcesContent":["import { useEffect, useRef, 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 { useRefState } from '../useRefState/useRefState';\n\n/** The visibility callback type */\nexport type UseVisibilityCallback = (\n entry: IntersectionObserverEntry,\n observer: IntersectionObserver\n) => void;\n\n/** The visibility options type */\nexport interface UseVisibilityOptions extends Omit<IntersectionObserverInit, 'root'> {\n /** The enabled state of the intersection */\n enabled?: boolean;\n /** The callback to execute when intersection is detected */\n onChange?: UseVisibilityCallback;\n /** The root element to observe */\n root?: HookTarget;\n}\n\n/** The intersection observer return type */\nexport interface UseVisibilityReturn {\n /** The intersection observer entry */\n entry?: IntersectionObserverEntry;\n /** The intersection observer in view */\n inView?: boolean;\n\n /** The intersection observer instance */\n observer?: IntersectionObserver;\n}\n\nexport interface UseVisibility {\n <Target extends Element>(\n options?: UseVisibilityOptions,\n target?: never\n ): UseVisibilityReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseVisibilityOptions): UseVisibilityReturn;\n\n <Target extends Element>(\n callback: UseVisibilityCallback,\n target?: never\n ): UseVisibilityReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, callback: UseVisibilityCallback): UseVisibilityReturn;\n}\n\n/**\n * @name useVisibility\n * @description - Hook that gives you visibility observer state\n * @category Sensors\n * @usage medium\n *\n * @browserapi IntersectionObserver https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @overload\n * @param {HookTarget} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The Intersection options\n * @param {((entries: IntersectionEntry[], observer: Intersection) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseVisibilityReturn} An object containing the state\n *\n * @example\n * const { ref, entries, observer } = useVisibility();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The Intersection options\n * @param {((entries: IntersectionEntry[], observer: Intersection) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseVisibilityReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entries, observer } = useVisibility(ref);\n *\n * @overload\n * @template Target The target element\n * @param {UseVisibilityCallback} callback The callback to execute when intersection is detected\n * @returns {UseVisibilityReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { ref, entries, observer } = useVisibility(() => console.log('callback'));\n *\n * @overload\n * @param {UseVisibilityCallback} callback The callback to execute when intersection is detected\n * @param {HookTarget} target The target element to detect intersection\n * @returns {UseVisibilityReturn} An object containing the state\n *\n * @example\n * const { entries, observer } = useVisibility(ref, () => console.log('callback'));\n */\nexport const useVisibility = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onChange: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onChange: params[0] }\n ) as UseVisibilityOptions | undefined;\n\n const callback = options?.onChange;\n const enabled = options?.enabled ?? true;\n\n const [observer, setObserver] = useState<IntersectionObserver>();\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = target ? isTarget.getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\n const entry = entries.pop()!;\n setEntry(entry);\n internalCallbackRef.current?.(entry, observer);\n },\n {\n ...options,\n root: options?.root ? (isTarget.getElement(options.root) as Document | Element) : document\n }\n );\n\n setObserver(observer);\n observer.observe(element as Element);\n\n return () => {\n observer.disconnect();\n };\n }, [target
|
|
1
|
+
{"version":3,"file":"useVisibility.mjs","sources":["../../../../src/hooks/useVisibility/useVisibility.ts"],"sourcesContent":["import { useEffect, useRef, 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 { useRefState } from '../useRefState/useRefState';\n\n/** The visibility callback type */\nexport type UseVisibilityCallback = (\n entry: IntersectionObserverEntry,\n observer: IntersectionObserver\n) => void;\n\n/** The visibility options type */\nexport interface UseVisibilityOptions extends Omit<IntersectionObserverInit, 'root'> {\n /** The enabled state of the intersection */\n enabled?: boolean;\n /** The callback to execute when intersection is detected */\n onChange?: UseVisibilityCallback;\n /** The root element to observe */\n root?: HookTarget;\n}\n\n/** The intersection observer return type */\nexport interface UseVisibilityReturn {\n /** The intersection observer entry */\n entry?: IntersectionObserverEntry;\n /** The intersection observer in view */\n inView?: boolean;\n\n /** The intersection observer instance */\n observer?: IntersectionObserver;\n}\n\nexport interface UseVisibility {\n <Target extends Element>(\n options?: UseVisibilityOptions,\n target?: never\n ): UseVisibilityReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseVisibilityOptions): UseVisibilityReturn;\n\n <Target extends Element>(\n callback: UseVisibilityCallback,\n target?: never\n ): UseVisibilityReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, callback: UseVisibilityCallback): UseVisibilityReturn;\n}\n\n/**\n * @name useVisibility\n * @description - Hook that gives you visibility observer state\n * @category Sensors\n * @usage medium\n *\n * @browserapi IntersectionObserver https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @overload\n * @param {HookTarget} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The Intersection options\n * @param {((entries: IntersectionEntry[], observer: Intersection) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseVisibilityReturn} An object containing the state\n *\n * @example\n * const { ref, entries, observer } = useVisibility();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The Intersection options\n * @param {((entries: IntersectionEntry[], observer: Intersection) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseVisibilityReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entries, observer } = useVisibility(ref);\n *\n * @overload\n * @template Target The target element\n * @param {UseVisibilityCallback} callback The callback to execute when intersection is detected\n * @returns {UseVisibilityReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { ref, entries, observer } = useVisibility(() => console.log('callback'));\n *\n * @overload\n * @param {UseVisibilityCallback} callback The callback to execute when intersection is detected\n * @param {HookTarget} target The target element to detect intersection\n * @returns {UseVisibilityReturn} An object containing the state\n *\n * @example\n * const { entries, observer } = useVisibility(ref, () => console.log('callback'));\n */\nexport const useVisibility = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onChange: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onChange: params[0] }\n ) as UseVisibilityOptions | undefined;\n\n const callback = options?.onChange;\n const enabled = options?.enabled ?? true;\n\n const [observer, setObserver] = useState<IntersectionObserver>();\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = target ? isTarget.getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\n const entry = entries.pop()!;\n setEntry(entry);\n internalCallbackRef.current?.(entry, observer);\n },\n {\n ...options,\n root: options?.root ? (isTarget.getElement(options.root) as Document | Element) : document\n }\n );\n\n setObserver(observer);\n observer.observe(element as Element);\n\n return () => {\n observer.disconnect();\n };\n }, [\n target,\n internalRef.state,\n isTarget.getRefState(target),\n options?.rootMargin,\n options?.threshold,\n options?.root,\n enabled\n ]);\n\n if (target) return { observer, entry, inView: !!entry?.isIntersecting };\n return {\n observer,\n ref: internalRef,\n entry,\n inView: !!entry?.isIntersecting\n };\n}) as UseVisibility;\n"],"names":["useVisibility","params","target","isTarget","options","callback","enabled","observer","setObserver","useState","entry","setEntry","internalRef","useRefState","internalCallbackRef","useRef","useEffect","element","entries"],"mappings":";;;AAiGO,MAAMA,KAAiB,IAAIC,MAAkB;AAClD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5CG,IACJF,IACI,OAAOD,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,UAAUA,EAAO,CAAC,EAAA,IACtB,OAAOA,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,UAAUA,EAAO,CAAC,EAAA,GAGtBI,IAAWD,GAAS,UACpBE,IAAUF,GAAS,WAAW,IAE9B,CAACG,GAAUC,CAAW,IAAIC,EAAA,GAC1B,CAACC,GAAOC,CAAQ,IAAIF,EAAA,GAEpBG,IAAcC,EAAA,GACdC,IAAsBC,EAAOV,CAAQ;AAqC3C,SApCAS,EAAoB,UAAUT,GAE9BW,EAAU,MAAM;AACd,QAAI,CAACV,KAAY,CAACJ,KAAU,CAACU,EAAY,MAAQ;AAEjD,UAAMK,IAAUf,IAASC,EAAS,WAAWD,CAAM,IAAIU,EAAY;AACnE,QAAI,CAACK,EAAS;AAEd,UAAMV,IAAW,IAAI;AAAA,MACnB,CAACW,GAAsCX,MAAmC;AACxE,cAAMG,IAAQQ,EAAQ,IAAA;AACtB,QAAAP,EAASD,CAAK,GACdI,EAAoB,UAAUJ,GAAOH,CAAQ;AAAA,MAAA;AAAA,MAE/C;AAAA,QACE,GAAGH;AAAA,QACH,MAAMA,GAAS,OAAQD,EAAS,WAAWC,EAAQ,IAAI,IAA2B;AAAA,MAAA;AAAA,IACpF;AAGF,WAAAI,EAAYD,CAAQ,GACpBA,EAAS,QAAQU,CAAkB,GAE5B,MAAM;AACXV,MAAAA,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC;AAAA,IACDL;AAAA,IACAU,EAAY;AAAA,IACZT,EAAS,YAAYD,CAAM;AAAA,IAC3BE,GAAS;AAAA,IACTA,GAAS;AAAA,IACTA,GAAS;AAAA,IACTE;AAAA,EAAA,CACD,GAEGJ,IAAe,EAAE,UAAAK,GAAU,OAAAG,GAAO,QAAQ,CAAC,CAACA,GAAO,eAAA,IAChD;AAAA,IACL,UAAAH;AAAA,IACA,KAAKK;AAAA,IACL,OAAAF;AAAA,IACA,QAAQ,CAAC,CAACA,GAAO;AAAA,EAAA;AAErB;"}
|
|
@@ -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 * @usage low\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":";AAeO,MAAMA,IAAiB,MAAM;AAClC,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAU,MAAMH,EAAW,EAAI,GAC/BI,IAAS,MAAMJ,EAAW,EAAK;AAErC,kBAAO,iBAAiB,SAASG,CAAO,GACxC,OAAO,iBAAiB,QAAQC,CAAM,GAE/B,MAAM;AACX,aAAO,oBAAoB,SAASD,CAAO,GAC3C,OAAO,oBAAoB,QAAQC,CAAM;AAAA,IAAA;AAAA,EAC3C,
|
|
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 * @usage low\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":";AAeO,MAAMA,IAAiB,MAAM;AAClC,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAU,MAAMH,EAAW,EAAI,GAC/BI,IAAS,MAAMJ,EAAW,EAAK;AAErC,kBAAO,iBAAiB,SAASG,CAAO,GACxC,OAAO,iBAAiB,QAAQC,CAAM,GAE/B,MAAM;AACX,aAAO,oBAAoB,SAASD,CAAO,GAC3C,OAAO,oBAAoB,QAAQC,CAAM;AAAA,IAAA;AAAA,EAC3C,GACC,EAAE,GAEEL;AACT;"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { useLockCallback as n } from "./hooks/useLockCallback/useLockCallback.mj
|
|
|
7
7
|
import { useMutation as l } from "./hooks/useMutation/useMutation.mjs";
|
|
8
8
|
import { useOptimistic as E } from "./hooks/useOptimistic/useOptimistic.mjs";
|
|
9
9
|
import { useQuery as g } from "./hooks/useQuery/useQuery.mjs";
|
|
10
|
-
import { useAudio as
|
|
10
|
+
import { useAudio as d } from "./hooks/useAudio/useAudio.mjs";
|
|
11
11
|
import { useBattery as P } from "./hooks/useBattery/useBattery.mjs";
|
|
12
12
|
import { useBluetooth as I } from "./hooks/useBluetooth/useBluetooth.mjs";
|
|
13
13
|
import { useBroadcastChannel as O } from "./hooks/useBroadcastChannel/useBroadcastChannel.mjs";
|
|
@@ -32,7 +32,7 @@ import { usePermission as ie } from "./hooks/usePermission/usePermission.mjs";
|
|
|
32
32
|
import { usePictureInPicture as ce } from "./hooks/usePictureInPicture/usePictureInPicture.mjs";
|
|
33
33
|
import { usePointerLock as Se } from "./hooks/usePointerLock/usePointerLock.mjs";
|
|
34
34
|
import { usePostMessage as Te } from "./hooks/usePostMessage/usePostMessage.mjs";
|
|
35
|
-
import { useRaf as
|
|
35
|
+
import { useRaf as Re } from "./hooks/useRaf/useRaf.mjs";
|
|
36
36
|
import { useShare as Ce } from "./hooks/useShare/useShare.mjs";
|
|
37
37
|
import { getSpeechRecognition as Ae, useSpeechRecognition as Ie } from "./hooks/useSpeechRecognition/useSpeechRecognition.mjs";
|
|
38
38
|
import { useSpeechSynthesis as Oe } from "./hooks/useSpeechSynthesis/useSpeechSynthesis.mjs";
|
|
@@ -78,7 +78,7 @@ import { useDevicePixelRatio as nr } from "./hooks/useDevicePixelRatio/useDevice
|
|
|
78
78
|
import { useDocumentEvent as lr } from "./hooks/useDocumentEvent/useDocumentEvent.mjs";
|
|
79
79
|
import { useDocumentVisibility as Er } from "./hooks/useDocumentVisibility/useDocumentVisibility.mjs";
|
|
80
80
|
import { useElementSize as gr } from "./hooks/useElementSize/useElementSize.mjs";
|
|
81
|
-
import { useEventListener as
|
|
81
|
+
import { useEventListener as dr } from "./hooks/useEventListener/useEventListener.mjs";
|
|
82
82
|
import { isHotkeyMatch as Pr, useHotkeys as Ar } from "./hooks/useHotkeys/useHotkeys.mjs";
|
|
83
83
|
import { useIdle as yr } from "./hooks/useIdle/useIdle.mjs";
|
|
84
84
|
import { useInfiniteScroll as kr } from "./hooks/useInfiniteScroll/useInfiniteScroll.mjs";
|
|
@@ -104,7 +104,7 @@ import { getRangesSelection as it, useTextSelection as nt } from "./hooks/useTex
|
|
|
104
104
|
import { useVisibility as lt } from "./hooks/useVisibility/useVisibility.mjs";
|
|
105
105
|
import { useWindowEvent as Et } from "./hooks/useWindowEvent/useWindowEvent.mjs";
|
|
106
106
|
import { useWindowFocus as gt } from "./hooks/useWindowFocus/useWindowFocus.mjs";
|
|
107
|
-
import { scrollTo as
|
|
107
|
+
import { scrollTo as dt, useWindowScroll as Ct } from "./hooks/useWindowScroll/useWindowScroll.mjs";
|
|
108
108
|
import { useWindowSize as At } from "./hooks/useWindowSize/useWindowSize.mjs";
|
|
109
109
|
import { useBoolean as yt } from "./hooks/useBoolean/useBoolean.mjs";
|
|
110
110
|
import { useControllableState as kt } from "./hooks/useControllableState/useControllableState.mjs";
|
|
@@ -122,45 +122,45 @@ import { assignRef as us, mergeRefs as ms, useMergedRef as ps } from "./hooks/us
|
|
|
122
122
|
import { useOffsetPagination as xs } from "./hooks/useOffsetPagination/useOffsetPagination.mjs";
|
|
123
123
|
import { useQueue as is } from "./hooks/useQueue/useQueue.mjs";
|
|
124
124
|
import { useRafState as cs } from "./hooks/useRafState/useRafState.mjs";
|
|
125
|
-
import {
|
|
126
|
-
import { useSessionStorage as
|
|
125
|
+
import { createRefState as Ss, useRefState as Es } from "./hooks/useRefState/useRefState.mjs";
|
|
126
|
+
import { useSessionStorage as gs } from "./hooks/useSessionStorage/useSessionStorage.mjs";
|
|
127
127
|
import { useSet as ds } from "./hooks/useSet/useSet.mjs";
|
|
128
|
-
import { stateHistoryReducer as
|
|
129
|
-
import { useStep as
|
|
130
|
-
import { STORAGE_EVENT as
|
|
131
|
-
import { useToggle as
|
|
132
|
-
import { URL_SEARCH_PARAMS_EVENT as
|
|
133
|
-
import { useUrlSearchParams as
|
|
134
|
-
import { useWizard as
|
|
135
|
-
import { useInterval as
|
|
136
|
-
import { useStopwatch as
|
|
137
|
-
import { useTime as
|
|
138
|
-
import { useTimeout as
|
|
139
|
-
import { getTimeFromSeconds as
|
|
140
|
-
import { useBrowserLanguage as
|
|
141
|
-
import { getOperatingSystem as
|
|
142
|
-
import { usePreferredColorScheme as
|
|
143
|
-
import { usePreferredContrast as
|
|
144
|
-
import { usePreferredDark as
|
|
145
|
-
import { usePreferredLanguages as
|
|
146
|
-
import { usePreferredReducedMotion as
|
|
147
|
-
import { useConst as
|
|
148
|
-
import { useDebounceCallback as
|
|
149
|
-
import { useDebounceState as
|
|
150
|
-
import { useDebounceValue as
|
|
151
|
-
import { useEvent as
|
|
152
|
-
import { useLastChanged as
|
|
153
|
-
import { useLatest as
|
|
154
|
-
import { usePrevious as
|
|
155
|
-
import { useThrottleCallback as
|
|
156
|
-
import { useThrottleState as
|
|
157
|
-
import { useThrottleValue as
|
|
158
|
-
import { copy as
|
|
159
|
-
import { debounce as
|
|
160
|
-
import { getDate as
|
|
161
|
-
import { getRetry as
|
|
162
|
-
import { isTarget as
|
|
163
|
-
import { throttle as
|
|
128
|
+
import { stateHistoryReducer as Ps, useStateHistory as As } from "./hooks/useStateHistory/useStateHistory.mjs";
|
|
129
|
+
import { useStep as ys } from "./hooks/useStep/useStep.mjs";
|
|
130
|
+
import { STORAGE_EVENT as ks, dispatchStorageEvent as hs, useStorage as vs } from "./hooks/useStorage/useStorage.mjs";
|
|
131
|
+
import { useToggle as Ds } from "./hooks/useToggle/useToggle.mjs";
|
|
132
|
+
import { URL_SEARCH_PARAMS_EVENT as Ls, createQueryString as Ms, dispatchUrlSearchParamsEvent as Ns, getUrlSearchParams as Bs, useUrlSearchParam as Ks } from "./hooks/useUrlSearchParam/useUrlSearchParam.mjs";
|
|
133
|
+
import { useUrlSearchParams as Us } from "./hooks/useUrlSearchParams/useUrlSearchParams.mjs";
|
|
134
|
+
import { useWizard as Hs } from "./hooks/useWizard/useWizard.mjs";
|
|
135
|
+
import { useInterval as Ws } from "./hooks/useInterval/useInterval.mjs";
|
|
136
|
+
import { useStopwatch as Gs } from "./hooks/useStopwatch/useStopwatch.mjs";
|
|
137
|
+
import { useTime as Xs } from "./hooks/useTime/useTime.mjs";
|
|
138
|
+
import { useTimeout as Zs } from "./hooks/useTimeout/useTimeout.mjs";
|
|
139
|
+
import { getTimeFromSeconds as Js, useTimer as Ys } from "./hooks/useTimer/useTimer.mjs";
|
|
140
|
+
import { useBrowserLanguage as eu } from "./hooks/useBrowserLanguage/useBrowserLanguage.mjs";
|
|
141
|
+
import { getOperatingSystem as ru, useOperatingSystem as tu } from "./hooks/useOperatingSystem/useOperatingSystem.mjs";
|
|
142
|
+
import { usePreferredColorScheme as uu } from "./hooks/usePreferredColorScheme/usePreferredColorScheme.mjs";
|
|
143
|
+
import { usePreferredContrast as pu } from "./hooks/usePreferredContrast/usePreferredContrast.mjs";
|
|
144
|
+
import { usePreferredDark as xu } from "./hooks/usePreferredDark/usePreferredDark.mjs";
|
|
145
|
+
import { usePreferredLanguages as iu } from "./hooks/usePreferredLanguages/usePreferredLanguages.mjs";
|
|
146
|
+
import { usePreferredReducedMotion as cu } from "./hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs";
|
|
147
|
+
import { useConst as Su } from "./hooks/useConst/useConst.mjs";
|
|
148
|
+
import { useDebounceCallback as Tu } from "./hooks/useDebounceCallback/useDebounceCallback.mjs";
|
|
149
|
+
import { useDebounceState as Ru } from "./hooks/useDebounceState/useDebounceState.mjs";
|
|
150
|
+
import { useDebounceValue as Cu } from "./hooks/useDebounceValue/useDebounceValue.mjs";
|
|
151
|
+
import { useEvent as Au } from "./hooks/useEvent/useEvent.mjs";
|
|
152
|
+
import { useLastChanged as yu } from "./hooks/useLastChanged/useLastChanged.mjs";
|
|
153
|
+
import { useLatest as ku } from "./hooks/useLatest/useLatest.mjs";
|
|
154
|
+
import { usePrevious as vu } from "./hooks/usePrevious/usePrevious.mjs";
|
|
155
|
+
import { useThrottleCallback as Du } from "./hooks/useThrottleCallback/useThrottleCallback.mjs";
|
|
156
|
+
import { useThrottleState as Lu } from "./hooks/useThrottleState/useThrottleState.mjs";
|
|
157
|
+
import { useThrottleValue as Nu } from "./hooks/useThrottleValue/useThrottleValue.mjs";
|
|
158
|
+
import { copy as Ku, legacyCopyToClipboard as Fu } from "./utils/helpers/copy.mjs";
|
|
159
|
+
import { debounce as Vu } from "./utils/helpers/debounce.mjs";
|
|
160
|
+
import { getDate as wu } from "./utils/helpers/getDate.mjs";
|
|
161
|
+
import { getRetry as zu } from "./utils/helpers/getRetry.mjs";
|
|
162
|
+
import { getRefState as Qu, isTarget as Xu, target as qu, targetSymbol as Zu } from "./utils/helpers/isTarget.mjs";
|
|
163
|
+
import { throttle as Ju } from "./utils/helpers/throttle.mjs";
|
|
164
164
|
export {
|
|
165
165
|
Jo as BREAKPOINTS_ANT_DESIGN,
|
|
166
166
|
Yo as BREAKPOINTS_BOOTSTRAP_V5,
|
|
@@ -177,70 +177,72 @@ export {
|
|
|
177
177
|
lo as Paint,
|
|
178
178
|
So as Pointer,
|
|
179
179
|
Co as SCRIPT_STATUS_ATTRIBUTE_NAME,
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
ks as STORAGE_EVENT,
|
|
181
|
+
Ls as URL_SEARCH_PARAMS_EVENT,
|
|
182
182
|
us as assignRef,
|
|
183
183
|
Ut as clearCookies,
|
|
184
|
-
|
|
184
|
+
Ku as copy,
|
|
185
185
|
r as createContext,
|
|
186
186
|
s as createEventEmitter,
|
|
187
|
-
|
|
187
|
+
Ms as createQueryString,
|
|
188
188
|
m as createReactiveContext,
|
|
189
|
+
Ss as createRefState,
|
|
189
190
|
f as createStore,
|
|
190
|
-
|
|
191
|
+
Vu as debounce,
|
|
191
192
|
Qo as deepEqual,
|
|
192
193
|
_t as dispatchCookieEvent,
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
hs as dispatchStorageEvent,
|
|
195
|
+
Ns as dispatchUrlSearchParamsEvent,
|
|
195
196
|
se as getConnection,
|
|
196
197
|
Dt as getCookie,
|
|
197
198
|
bt as getCookies,
|
|
198
|
-
|
|
199
|
+
wu as getDate,
|
|
199
200
|
jt as getHash,
|
|
200
|
-
|
|
201
|
+
ru as getOperatingSystem,
|
|
201
202
|
it as getRangesSelection,
|
|
202
|
-
|
|
203
|
+
Qu as getRefState,
|
|
204
|
+
zu as getRetry,
|
|
203
205
|
Ae as getSpeechRecognition,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
+
Js as getTimeFromSeconds,
|
|
207
|
+
Bs as getUrlSearchParams,
|
|
206
208
|
Pr as isHotkeyMatch,
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
Xu as isTarget,
|
|
210
|
+
Fu as legacyCopyToClipboard,
|
|
209
211
|
q as mapGamepadToXbox360Controller,
|
|
210
212
|
ms as mergeRefs,
|
|
211
213
|
Lt as removeCookie,
|
|
212
214
|
Mt as removeCookieItem,
|
|
213
|
-
|
|
215
|
+
dt as scrollTo,
|
|
214
216
|
Nt as setCookie,
|
|
215
217
|
Bt as setCookieItem,
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
Ps as stateHistoryReducer,
|
|
219
|
+
qu as target,
|
|
220
|
+
Zu as targetSymbol,
|
|
221
|
+
Ju as throttle,
|
|
220
222
|
$ as timeRangeToArray,
|
|
221
223
|
ze as useActiveElement,
|
|
222
224
|
a as useAsync,
|
|
223
225
|
Bo as useAsyncEffect,
|
|
224
|
-
|
|
226
|
+
d as useAudio,
|
|
225
227
|
Qe as useAutoScroll,
|
|
226
228
|
P as useBattery,
|
|
227
229
|
I as useBluetooth,
|
|
228
230
|
yt as useBoolean,
|
|
229
231
|
mr as useBreakpoints,
|
|
230
232
|
O as useBroadcastChannel,
|
|
231
|
-
|
|
233
|
+
eu as useBrowserLanguage,
|
|
232
234
|
qe as useClickOutside,
|
|
233
235
|
h as useClipboard,
|
|
234
|
-
|
|
236
|
+
Su as useConst,
|
|
235
237
|
kt as useControllableState,
|
|
236
238
|
Kt as useCookie,
|
|
237
239
|
Vt as useCookies,
|
|
238
240
|
_ as useCopy,
|
|
239
241
|
wt as useCounter,
|
|
240
242
|
b as useCssVar,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
Tu as useDebounceCallback,
|
|
244
|
+
Ru as useDebounceState,
|
|
245
|
+
Cu as useDebounceValue,
|
|
244
246
|
zt as useDefault,
|
|
245
247
|
fr as useDeviceMotion,
|
|
246
248
|
ar as useDeviceOrientation,
|
|
@@ -254,8 +256,8 @@ export {
|
|
|
254
256
|
Je as useDoubleClick,
|
|
255
257
|
$e as useDropZone,
|
|
256
258
|
gr as useElementSize,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
+
Au as useEvent,
|
|
260
|
+
dr as useEventListener,
|
|
259
261
|
F as useEventSource,
|
|
260
262
|
V as useEyeDropper,
|
|
261
263
|
w as useFavicon,
|
|
@@ -275,15 +277,15 @@ export {
|
|
|
275
277
|
ao as useImage,
|
|
276
278
|
kr as useInfiniteScroll,
|
|
277
279
|
vr as useIntersectionObserver,
|
|
278
|
-
|
|
280
|
+
Ws as useInterval,
|
|
279
281
|
Vo as useIsFirstRender,
|
|
280
282
|
wo as useIsomorphicLayoutEffect,
|
|
281
283
|
Lr as useKeyPress,
|
|
282
284
|
Nr as useKeyPressEvent,
|
|
283
285
|
Dr as useKeyboard,
|
|
284
286
|
Kr as useKeysPressed,
|
|
285
|
-
|
|
286
|
-
|
|
287
|
+
yu as useLastChanged,
|
|
288
|
+
ku as useLatest,
|
|
287
289
|
bo as useLess,
|
|
288
290
|
$t as useList,
|
|
289
291
|
os as useLocalStorage,
|
|
@@ -305,7 +307,7 @@ export {
|
|
|
305
307
|
xs as useOffsetPagination,
|
|
306
308
|
Mo as useOnce,
|
|
307
309
|
pe as useOnline,
|
|
308
|
-
|
|
310
|
+
tu as useOperatingSystem,
|
|
309
311
|
E as useOptimistic,
|
|
310
312
|
Zr as useOrientation,
|
|
311
313
|
xe as useOtpCredential,
|
|
@@ -317,17 +319,17 @@ export {
|
|
|
317
319
|
ce as usePictureInPicture,
|
|
318
320
|
Se as usePointerLock,
|
|
319
321
|
Te as usePostMessage,
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
322
|
+
uu as usePreferredColorScheme,
|
|
323
|
+
pu as usePreferredContrast,
|
|
324
|
+
xu as usePreferredDark,
|
|
325
|
+
iu as usePreferredLanguages,
|
|
326
|
+
cu as usePreferredReducedMotion,
|
|
327
|
+
vu as usePrevious,
|
|
326
328
|
g as useQuery,
|
|
327
329
|
is as useQueue,
|
|
328
|
-
|
|
330
|
+
Re as useRaf,
|
|
329
331
|
cs as useRafState,
|
|
330
|
-
|
|
332
|
+
Es as useRefState,
|
|
331
333
|
Fe as useRenderCount,
|
|
332
334
|
Ve as useRenderInfo,
|
|
333
335
|
we as useRerender,
|
|
@@ -337,30 +339,30 @@ export {
|
|
|
337
339
|
ut as useScroll,
|
|
338
340
|
pt as useScrollIntoView,
|
|
339
341
|
xt as useScrollTo,
|
|
340
|
-
|
|
342
|
+
gs as useSessionStorage,
|
|
341
343
|
ds as useSet,
|
|
342
344
|
Xo as useShallowEffect,
|
|
343
345
|
Ce as useShare,
|
|
344
346
|
Ie as useSpeechRecognition,
|
|
345
347
|
Oe as useSpeechSynthesis,
|
|
346
|
-
|
|
347
|
-
|
|
348
|
+
As as useStateHistory,
|
|
349
|
+
ys as useStep,
|
|
348
350
|
Io as useSticky,
|
|
349
|
-
|
|
350
|
-
|
|
351
|
+
Gs as useStopwatch,
|
|
352
|
+
vs as useStorage,
|
|
351
353
|
ho as useTextDirection,
|
|
352
354
|
nt as useTextSelection,
|
|
353
355
|
Oo as useTextareaAutosize,
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
356
|
+
Du as useThrottleCallback,
|
|
357
|
+
Lu as useThrottleState,
|
|
358
|
+
Nu as useThrottleValue,
|
|
359
|
+
Xs as useTime,
|
|
360
|
+
Zs as useTimeout,
|
|
361
|
+
Ys as useTimer,
|
|
362
|
+
Ds as useToggle,
|
|
361
363
|
Zo as useUnmount,
|
|
362
|
-
|
|
363
|
-
|
|
364
|
+
Ks as useUrlSearchParam,
|
|
365
|
+
Us as useUrlSearchParams,
|
|
364
366
|
he as useVibrate,
|
|
365
367
|
_e as useVirtualKeyboard,
|
|
366
368
|
lt as useVisibility,
|
|
@@ -370,6 +372,6 @@ export {
|
|
|
370
372
|
gt as useWindowFocus,
|
|
371
373
|
Ct as useWindowScroll,
|
|
372
374
|
At as useWindowSize,
|
|
373
|
-
|
|
375
|
+
Hs as useWizard
|
|
374
376
|
};
|
|
375
377
|
//# sourceMappingURL=index.mjs.map
|