@siberiacancode/reactuse 0.2.29 → 0.2.30
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/README.md +71 -71
- package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
- package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs.map +1 -1
- package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -1
- package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
- package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
- package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
- package/dist/cjs/hooks/useAudio/useAudio.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/useBattery/useBattery.cjs +1 -1
- package/dist/cjs/hooks/useBattery/useBattery.cjs.map +1 -1
- package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +1 -1
- package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs.map +1 -1
- package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
- package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
- package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs +1 -1
- package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs.map +1 -1
- package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
- package/dist/cjs/hooks/useConst/useConst.cjs.map +1 -1
- package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
- package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
- package/dist/cjs/hooks/useCopy/useCopy.cjs.map +1 -1
- package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
- package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
- package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs +2 -0
- package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs.map +1 -0
- package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs.map +1 -1
- package/dist/cjs/hooks/useDefault/useDefault.cjs.map +1 -1
- package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs.map +1 -1
- package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs +1 -1
- package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs.map +1 -1
- package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs +1 -1
- package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs.map +1 -1
- package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs.map +1 -1
- package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs.map +1 -1
- package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs.map +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.map +1 -1
- package/dist/cjs/hooks/useEvent/useEvent.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.map +1 -1
- package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs +1 -1
- package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs.map +1 -1
- package/dist/cjs/hooks/useFavicon/useFavicon.cjs +1 -1
- package/dist/cjs/hooks/useFavicon/useFavicon.cjs.map +1 -1
- package/dist/cjs/hooks/useField/useField.cjs.map +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/useFps/useFps.cjs.map +1 -1
- package/dist/cjs/hooks/useFul/useFul.cjs.map +1 -1
- package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs.map +1 -1
- package/dist/cjs/hooks/useGamepad/useGamepad.cjs +1 -1
- package/dist/cjs/hooks/useGamepad/useGamepad.cjs.map +1 -1
- package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs.map +1 -1
- package/dist/cjs/hooks/useHash/useHash.cjs.map +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/useIdle/useIdle.cjs.map +1 -1
- package/dist/cjs/hooks/useImage/useImage.cjs.map +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.map +1 -1
- package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs.map +1 -1
- package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs.map +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
- package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs.map +1 -1
- package/dist/cjs/hooks/useLatest/useLatest.cjs.map +1 -1
- package/dist/cjs/hooks/useLess/useLess.cjs.map +1 -1
- package/dist/cjs/hooks/useList/useList.cjs.map +1 -1
- package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
- package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useLogger/useLogger.cjs.map +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
- package/dist/cjs/hooks/useMap/useMap.cjs.map +1 -1
- package/dist/cjs/hooks/useMeasure/useMeasure.cjs.map +1 -1
- package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs.map +1 -1
- package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs.map +1 -1
- package/dist/cjs/hooks/useMemory/useMemory.cjs +1 -1
- package/dist/cjs/hooks/useMemory/useMemory.cjs.map +1 -1
- package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs +2 -0
- package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs.map +1 -0
- package/dist/cjs/hooks/useMount/useMount.cjs.map +1 -1
- package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
- package/dist/cjs/hooks/useMutation/useMutation.cjs +1 -1
- package/dist/cjs/hooks/useMutation/useMutation.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/useNetwork/useNetwork.cjs.map +1 -1
- package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
- package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
- package/dist/cjs/hooks/useOnline/useOnline.cjs.map +1 -1
- package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs.map +1 -1
- package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
- package/dist/cjs/hooks/useOrientation/useOrientation.cjs +1 -1
- package/dist/cjs/hooks/useOrientation/useOrientation.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/usePageLeave/usePageLeave.cjs.map +1 -1
- package/dist/cjs/hooks/usePaint/usePaint.cjs.map +1 -1
- package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
- package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +1 -1
- package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
- package/dist/cjs/hooks/usePermission/usePermission.cjs +1 -1
- package/dist/cjs/hooks/usePermission/usePermission.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/usePointerLock/usePointerLock.cjs +1 -1
- package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs.map +1 -1
- package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs.map +1 -1
- package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
- package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
- package/dist/cjs/hooks/useQueue/useQueue.cjs.map +1 -1
- package/dist/cjs/hooks/useRaf/useRaf.cjs.map +1 -1
- package/dist/cjs/hooks/useRafState/useRafState.cjs.map +1 -1
- package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
- package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs.map +1 -1
- package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs.map +1 -1
- package/dist/cjs/hooks/useRerender/useRerender.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.map +1 -1
- package/dist/cjs/hooks/useScript/useScript.cjs.map +1 -1
- package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
- package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs.map +1 -1
- package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs.map +1 -1
- package/dist/cjs/hooks/useSet/useSet.cjs.map +1 -1
- package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useShare/useShare.cjs +1 -1
- package/dist/cjs/hooks/useShare/useShare.cjs.map +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/useStateHistory/useStateHistory.cjs.map +1 -1
- package/dist/cjs/hooks/useStep/useStep.cjs.map +1 -1
- package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
- package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs.map +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/useTextSelection/useTextSelection.cjs.map +1 -1
- package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs +2 -0
- package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs.map +1 -0
- package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs.map +1 -1
- package/dist/cjs/hooks/useTime/useTime.cjs.map +1 -1
- package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
- package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
- package/dist/cjs/hooks/useToggle/useToggle.cjs.map +1 -1
- package/dist/cjs/hooks/useUnmount/useUnmount.cjs.map +1 -1
- package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
- package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
- package/dist/cjs/hooks/useVibrate/useVibrate.cjs +1 -1
- package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
- package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs +1 -1
- package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs.map +1 -1
- package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +1 -1
- package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
- package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs.map +1 -1
- package/dist/cjs/hooks/useWizard/useWizard.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs.map +1 -1
- package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -1
- package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
- package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
- package/dist/esm/hooks/useAudio/useAudio.mjs.map +1 -1
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs +25 -31
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
- package/dist/esm/hooks/useBattery/useBattery.mjs +1 -1
- package/dist/esm/hooks/useBattery/useBattery.mjs.map +1 -1
- package/dist/esm/hooks/useBluetooth/useBluetooth.mjs +16 -18
- package/dist/esm/hooks/useBluetooth/useBluetooth.mjs.map +1 -1
- package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
- package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
- package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs +8 -8
- package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs.map +1 -1
- package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
- package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
- package/dist/esm/hooks/useConst/useConst.mjs.map +1 -1
- package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
- package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
- package/dist/esm/hooks/useCopy/useCopy.mjs.map +1 -1
- package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
- package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
- package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs.map +1 -1
- package/dist/esm/hooks/useDebounceState/useDebounceState.mjs +10 -0
- package/dist/esm/hooks/useDebounceState/useDebounceState.mjs.map +1 -0
- package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs.map +1 -1
- package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
- package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
- package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs +1 -1
- package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs.map +1 -1
- package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs +1 -1
- package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs.map +1 -1
- package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
- package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
- package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
- package/dist/esm/hooks/useDropZone/useDropZone.mjs +12 -12
- package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
- package/dist/esm/hooks/useElementSize/useElementSize.mjs.map +1 -1
- package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
- package/dist/esm/hooks/useEventListener/useEventListener.mjs +15 -15
- package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
- package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
- package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs +3 -3
- package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs.map +1 -1
- package/dist/esm/hooks/useFavicon/useFavicon.mjs +12 -15
- package/dist/esm/hooks/useFavicon/useFavicon.mjs.map +1 -1
- package/dist/esm/hooks/useField/useField.mjs.map +1 -1
- package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
- package/dist/esm/hooks/useFocus/useFocus.mjs +26 -22
- package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
- package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
- package/dist/esm/hooks/useFul/useFul.mjs.map +1 -1
- package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
- package/dist/esm/hooks/useGamepad/useGamepad.mjs +13 -13
- package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
- package/dist/esm/hooks/useGeolocation/useGeolocation.mjs.map +1 -1
- package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
- package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
- package/dist/esm/hooks/useHover/useHover.mjs +15 -15
- package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
- package/dist/esm/hooks/useIdle/useIdle.mjs.map +1 -1
- package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +19 -18
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
- package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
- package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs.map +1 -1
- package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
- package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
- package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
- package/dist/esm/hooks/useLatest/useLatest.mjs.map +1 -1
- package/dist/esm/hooks/useLess/useLess.mjs.map +1 -1
- package/dist/esm/hooks/useList/useList.mjs.map +1 -1
- package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs.map +1 -1
- package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
- package/dist/esm/hooks/useLockScroll/useLockScroll.mjs.map +1 -1
- package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
- package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
- package/dist/esm/hooks/useMediaControls/useMediaControls.mjs.map +1 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
- package/dist/esm/hooks/useMemory/useMemory.mjs +4 -4
- package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.mjs +25 -0
- package/dist/esm/hooks/useMergedRef/useMergedRef.mjs.map +1 -0
- package/dist/esm/hooks/useMount/useMount.mjs.map +1 -1
- package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
- package/dist/esm/hooks/useMutation/useMutation.mjs +18 -18
- package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
- package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +28 -20
- package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
- package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
- package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
- package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
- package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
- package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
- package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
- package/dist/esm/hooks/useOrientation/useOrientation.mjs +9 -9
- package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
- package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +3 -3
- package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
- package/dist/esm/hooks/usePageLeave/usePageLeave.mjs.map +1 -1
- package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
- package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
- package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +11 -11
- package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
- package/dist/esm/hooks/usePermission/usePermission.mjs +4 -4
- package/dist/esm/hooks/usePermission/usePermission.mjs.map +1 -1
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs +17 -17
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs.map +1 -1
- package/dist/esm/hooks/usePointerLock/usePointerLock.mjs +3 -3
- package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
- package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs.map +1 -1
- package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
- package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
- package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
- package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
- package/dist/esm/hooks/useRafState/useRafState.mjs.map +1 -1
- package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
- package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
- package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
- package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +17 -16
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
- package/dist/esm/hooks/useRightClick/useRightClick.mjs.map +1 -1
- package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
- package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
- package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
- package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
- package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs.map +1 -1
- package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
- package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs.map +1 -1
- package/dist/esm/hooks/useShare/useShare.mjs +1 -1
- package/dist/esm/hooks/useShare/useShare.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +11 -11
- package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
- package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
- package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
- package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
- package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
- package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
- package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +14 -14
- package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
- package/dist/esm/hooks/useTextSelection/useTextSelection.mjs.map +1 -1
- package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs.map +1 -1
- package/dist/esm/hooks/useThrottleState/useThrottleState.mjs +10 -0
- package/dist/esm/hooks/useThrottleState/useThrottleState.mjs.map +1 -0
- package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs.map +1 -1
- package/dist/esm/hooks/useTime/useTime.mjs.map +1 -1
- package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
- package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
- package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
- package/dist/esm/hooks/useUnmount/useUnmount.mjs.map +1 -1
- package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
- package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
- package/dist/esm/hooks/useVibrate/useVibrate.mjs +12 -12
- package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
- package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs +7 -7
- package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs.map +1 -1
- package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +1 -1
- package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
- package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
- package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
- package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
- package/dist/esm/hooks/useWindowSize/useWindowSize.mjs.map +1 -1
- package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
- package/dist/esm/index.mjs +147 -139
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/helpers/createContext/createContext.d.ts +1 -0
- package/dist/types/helpers/createEventEmitter/createEventEmitter.d.ts +1 -0
- package/dist/types/helpers/createReactiveContext/createReactiveContext.d.ts +1 -0
- package/dist/types/helpers/createStore/createStore.d.ts +1 -0
- package/dist/types/hooks/state.d.ts +1 -0
- package/dist/types/hooks/useActiveElement/useActiveElement.d.ts +1 -0
- package/dist/types/hooks/useAsync/useAsync.d.ts +1 -0
- package/dist/types/hooks/useAudio/useAudio.d.ts +2 -1
- package/dist/types/hooks/useAutoScroll/useAutoScroll.d.ts +1 -0
- package/dist/types/hooks/useBattery/useBattery.d.ts +1 -0
- package/dist/types/hooks/useBluetooth/useBluetooth.d.ts +1 -0
- package/dist/types/hooks/useBoolean/useBoolean.d.ts +2 -1
- package/dist/types/hooks/useBreakpoints/useBreakpoints.d.ts +1 -0
- package/dist/types/hooks/useBroadcastChannel/useBroadcastChannel.d.ts +1 -0
- package/dist/types/hooks/useBrowserLanguage/useBrowserLanguage.d.ts +2 -1
- package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +2 -1
- package/dist/types/hooks/useClipboard/useClipboard.d.ts +2 -1
- package/dist/types/hooks/useConst/useConst.d.ts +2 -1
- package/dist/types/hooks/useCookie/useCookie.d.ts +2 -1
- package/dist/types/hooks/useCookies/useCookies.d.ts +2 -1
- package/dist/types/hooks/useCopy/useCopy.d.ts +2 -1
- package/dist/types/hooks/useCounter/useCounter.d.ts +2 -1
- package/dist/types/hooks/useCssVar/useCssVar.d.ts +2 -1
- package/dist/types/hooks/useDebounceCallback/useDebounceCallback.d.ts +1 -0
- package/dist/types/hooks/useDebounceState/useDebounceState.d.ts +15 -0
- package/dist/types/hooks/useDebounceValue/useDebounceValue.d.ts +2 -1
- package/dist/types/hooks/useDefault/useDefault.d.ts +2 -1
- package/dist/types/hooks/useDeviceMotion/useDeviceMotion.d.ts +2 -1
- package/dist/types/hooks/useDeviceOrientation/useDeviceOrientation.d.ts +1 -0
- package/dist/types/hooks/useDevicePixelRatio/useDevicePixelRatio.d.ts +1 -0
- package/dist/types/hooks/useDidUpdate/useDidUpdate.d.ts +2 -1
- package/dist/types/hooks/useDisclosure/useDisclosure.d.ts +2 -1
- package/dist/types/hooks/useDisplayMedia/useDisplayMedia.d.ts +1 -0
- package/dist/types/hooks/useDocumentEvent/useDocumentEvent.d.ts +2 -1
- package/dist/types/hooks/useDocumentTitle/useDocumentTitle.d.ts +2 -1
- package/dist/types/hooks/useDocumentVisibility/useDocumentVisibility.d.ts +2 -1
- package/dist/types/hooks/useDoubleClick/useDoubleClick.d.ts +2 -1
- package/dist/types/hooks/useDropZone/useDropZone.d.ts +2 -1
- package/dist/types/hooks/useElementSize/useElementSize.d.ts +2 -1
- package/dist/types/hooks/useEvent/useEvent.d.ts +2 -1
- package/dist/types/hooks/useEventListener/useEventListener.d.ts +5 -2
- package/dist/types/hooks/useEventSource/useEventSource.d.ts +1 -0
- package/dist/types/hooks/useEyeDropper/useEyeDropper.d.ts +1 -0
- package/dist/types/hooks/useFavicon/useFavicon.d.ts +2 -1
- package/dist/types/hooks/useField/useField.d.ts +1 -0
- package/dist/types/hooks/useFileDialog/useFileDialog.d.ts +1 -0
- package/dist/types/hooks/useFocus/useFocus.d.ts +25 -0
- package/dist/types/hooks/useFps/useFps.d.ts +1 -0
- package/dist/types/hooks/useFul/useFul.d.ts +1 -0
- package/dist/types/hooks/useFullscreen/useFullscreen.d.ts +1 -0
- package/dist/types/hooks/useGamepad/useGamepad.d.ts +1 -0
- package/dist/types/hooks/useGeolocation/useGeolocation.d.ts +1 -0
- package/dist/types/hooks/useHash/useHash.d.ts +1 -0
- package/dist/types/hooks/useHotkeys/useHotkeys.d.ts +1 -0
- package/dist/types/hooks/useHover/useHover.d.ts +3 -0
- package/dist/types/hooks/useIdle/useIdle.d.ts +1 -0
- package/dist/types/hooks/useImage/useImage.d.ts +1 -0
- package/dist/types/hooks/useInfiniteScroll/useInfiniteScroll.d.ts +1 -0
- package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +15 -6
- package/dist/types/hooks/useInterval/useInterval.d.ts +1 -0
- package/dist/types/hooks/useIsFirstRender/useIsFirstRender.d.ts +1 -0
- package/dist/types/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts +1 -0
- package/dist/types/hooks/useKeyPress/useKeyPress.d.ts +1 -0
- package/dist/types/hooks/useKeyPressEvent/useKeyPressEvent.d.ts +1 -0
- package/dist/types/hooks/useKeyboard/useKeyboard.d.ts +1 -0
- package/dist/types/hooks/useKeysPressed/useKeysPressed.d.ts +1 -2
- package/dist/types/hooks/useLastChanged/useLastChanged.d.ts +1 -0
- package/dist/types/hooks/useLatest/useLatest.d.ts +1 -0
- package/dist/types/hooks/useLess/useLess.d.ts +1 -0
- package/dist/types/hooks/useList/useList.d.ts +1 -0
- package/dist/types/hooks/useLocalStorage/useLocalStorage.d.ts +1 -0
- package/dist/types/hooks/useLockCallback/useLockCallback.d.ts +1 -0
- package/dist/types/hooks/useLockScroll/useLockScroll.d.ts +1 -1
- package/dist/types/hooks/useLogger/useLogger.d.ts +1 -0
- package/dist/types/hooks/useLongPress/useLongPress.d.ts +1 -0
- package/dist/types/hooks/useMap/useMap.d.ts +1 -0
- package/dist/types/hooks/useMeasure/useMeasure.d.ts +1 -0
- package/dist/types/hooks/useMediaControls/useMediaControls.d.ts +1 -0
- package/dist/types/hooks/useMediaQuery/useMediaQuery.d.ts +1 -0
- package/dist/types/hooks/useMemory/useMemory.d.ts +1 -0
- package/dist/types/hooks/useMergedRef/useMergedRef.d.ts +17 -0
- package/dist/types/hooks/useMount/useMount.d.ts +1 -0
- package/dist/types/hooks/useMouse/useMouse.d.ts +1 -0
- package/dist/types/hooks/useMutation/useMutation.d.ts +1 -0
- package/dist/types/hooks/useMutationObserver/useMutationObserver.d.ts +43 -26
- package/dist/types/hooks/useNetwork/useNetwork.d.ts +1 -0
- package/dist/types/hooks/useObject/useObject.d.ts +1 -0
- package/dist/types/hooks/useOffsetPagination/useOffsetPagination.d.ts +1 -0
- package/dist/types/hooks/useOnce/useOnce.d.ts +1 -0
- package/dist/types/hooks/useOnline/useOnline.d.ts +1 -0
- package/dist/types/hooks/useOperatingSystem/useOperatingSystem.d.ts +1 -0
- package/dist/types/hooks/useOptimistic/useOptimistic.d.ts +1 -0
- package/dist/types/hooks/useOrientation/useOrientation.d.ts +2 -1
- package/dist/types/hooks/useOtpCredential/useOtpCredential.d.ts +1 -0
- package/dist/types/hooks/usePageLeave/usePageLeave.d.ts +1 -0
- package/dist/types/hooks/usePaint/usePaint.d.ts +1 -0
- package/dist/types/hooks/useParallax/useParallax.d.ts +1 -0
- package/dist/types/hooks/usePerformanceObserver/usePerformanceObserver.d.ts +1 -0
- package/dist/types/hooks/usePermission/usePermission.d.ts +1 -0
- package/dist/types/hooks/usePictureInPicture/usePictureInPicture.d.ts +1 -0
- package/dist/types/hooks/usePointerLock/usePointerLock.d.ts +1 -0
- package/dist/types/hooks/usePostMessage/usePostMessage.d.ts +1 -0
- package/dist/types/hooks/usePreferredColorScheme/usePreferredColorScheme.d.ts +1 -0
- package/dist/types/hooks/usePreferredContrast/usePreferredContrast.d.ts +1 -0
- package/dist/types/hooks/usePreferredDark/usePreferredDark.d.ts +1 -0
- package/dist/types/hooks/usePreferredLanguages/usePreferredLanguages.d.ts +1 -0
- package/dist/types/hooks/usePreferredReducedMotion/usePreferredReducedMotion.d.ts +1 -0
- package/dist/types/hooks/usePrevious/usePrevious.d.ts +1 -0
- package/dist/types/hooks/useQuery/useQuery.d.ts +1 -0
- package/dist/types/hooks/useQueue/useQueue.d.ts +1 -0
- package/dist/types/hooks/useRaf/useRaf.d.ts +1 -0
- package/dist/types/hooks/useRafState/useRafState.d.ts +3 -0
- package/dist/types/hooks/useRefState/useRefState.d.ts +1 -0
- package/dist/types/hooks/useRenderCount/useRenderCount.d.ts +1 -0
- package/dist/types/hooks/useRenderInfo/useRenderInfo.d.ts +1 -0
- package/dist/types/hooks/useRerender/useRerender.d.ts +1 -0
- package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +55 -31
- package/dist/types/hooks/useRightClick/useRightClick.d.ts +1 -0
- package/dist/types/hooks/useScript/useScript.d.ts +1 -0
- package/dist/types/hooks/useScroll/useScroll.d.ts +1 -0
- package/dist/types/hooks/useScrollIntoView/useScrollIntoView.d.ts +1 -0
- package/dist/types/hooks/useScrollTo/useScrollTo.d.ts +1 -0
- package/dist/types/hooks/useSessionStorage/useSessionStorage.d.ts +1 -0
- package/dist/types/hooks/useSet/useSet.d.ts +1 -0
- package/dist/types/hooks/useShallowEffect/useShallowEffect.d.ts +1 -0
- package/dist/types/hooks/useShare/useShare.d.ts +1 -0
- package/dist/types/hooks/useSpeechRecognition/useSpeechRecognition.d.ts +1 -0
- package/dist/types/hooks/useSpeechSynthesis/useSpeechSynthesis.d.ts +1 -0
- package/dist/types/hooks/useStateHistory/useStateHistory.d.ts +1 -0
- package/dist/types/hooks/useStep/useStep.d.ts +1 -0
- package/dist/types/hooks/useSticky/useSticky.d.ts +1 -0
- package/dist/types/hooks/useStopwatch/useStopwatch.d.ts +1 -0
- package/dist/types/hooks/useStorage/useStorage.d.ts +1 -0
- package/dist/types/hooks/useTextDirection/useTextDirection.d.ts +1 -0
- package/dist/types/hooks/useTextSelection/useTextSelection.d.ts +1 -0
- package/dist/types/hooks/useThrottleCallback/useThrottleCallback.d.ts +1 -0
- package/dist/types/hooks/useThrottleState/useThrottleState.d.ts +15 -0
- package/dist/types/hooks/useThrottleValue/useThrottleValue.d.ts +1 -0
- package/dist/types/hooks/useTime/useTime.d.ts +1 -0
- package/dist/types/hooks/useTimeout/useTimeout.d.ts +1 -0
- package/dist/types/hooks/useTimer/useTimer.d.ts +1 -0
- package/dist/types/hooks/useToggle/useToggle.d.ts +1 -0
- package/dist/types/hooks/useUnmount/useUnmount.d.ts +1 -0
- package/dist/types/hooks/useUrlSearchParam/useUrlSearchParam.d.ts +1 -0
- package/dist/types/hooks/useUrlSearchParams/useUrlSearchParams.d.ts +1 -0
- package/dist/types/hooks/useVibrate/useVibrate.d.ts +1 -0
- package/dist/types/hooks/useVirtualKeyboard/useVirtualKeyboard.d.ts +1 -0
- package/dist/types/hooks/useWakeLock/useWakeLock.d.ts +1 -0
- package/dist/types/hooks/useWebSocket/useWebSocket.d.ts +17 -0
- package/dist/types/hooks/useWindowEvent/useWindowEvent.d.ts +1 -0
- package/dist/types/hooks/useWindowFocus/useWindowFocus.d.ts +1 -0
- package/dist/types/hooks/useWindowScroll/useWindowScroll.d.ts +1 -0
- package/dist/types/hooks/useWindowSize/useWindowSize.d.ts +1 -0
- package/dist/types/hooks/useWizard/useWizard.d.ts +1 -0
- package/dist/types/hooks/utilities.d.ts +2 -0
- package/package.json +89 -89
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { useState as b, useRef as i, useEffect as
|
|
2
|
-
const
|
|
3
|
-
const e = typeof window < "u" &&
|
|
1
|
+
import { useState as b, useRef as i, useEffect as v } from "react";
|
|
2
|
+
const p = (n, t) => {
|
|
3
|
+
const e = typeof window < "u" && !!window.PerformanceObserver, [a, d] = b([]), r = i(null), s = i(t);
|
|
4
4
|
s.current = t;
|
|
5
5
|
const o = () => {
|
|
6
6
|
if (!e) return;
|
|
7
|
-
const
|
|
8
|
-
|
|
7
|
+
const u = new PerformanceObserver((f, m) => {
|
|
8
|
+
d(f.getEntries()), s.current?.(f, m);
|
|
9
9
|
});
|
|
10
|
-
|
|
11
|
-
},
|
|
10
|
+
u.observe(n), r.current = u;
|
|
11
|
+
}, c = () => {
|
|
12
12
|
e && (r.current?.disconnect(), r.current = null);
|
|
13
13
|
};
|
|
14
|
-
return
|
|
14
|
+
return v(() => {
|
|
15
15
|
if (e)
|
|
16
16
|
return n.immediate && o(), () => {
|
|
17
|
-
|
|
17
|
+
c();
|
|
18
18
|
};
|
|
19
|
-
}, []), { supported: e, entries:
|
|
19
|
+
}, []), { supported: e, entries: a, start: o, stop: c };
|
|
20
20
|
};
|
|
21
21
|
export {
|
|
22
|
-
|
|
22
|
+
p as usePerformanceObserver
|
|
23
23
|
};
|
|
24
24
|
//# sourceMappingURL=usePerformanceObserver.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePerformanceObserver.mjs","sources":["../../../../src/hooks/usePerformanceObserver/usePerformanceObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use performance observer options type */\nexport type UsePerformanceObserverOptions = PerformanceObserverInit & {\n /** Whether to start the observer immediately */\n immediate?: boolean;\n};\n\n/**\n * @name usePerformanceObserver\n * @description - Hook that allows you to observe performance entries\n * @category Sensors\n *\n * @browserapi PerformanceObserver https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver\n *\n * @param {UsePerformanceObserverOptions} options The options for the performance observer\n * @param {PerformanceObserverCallback} callback The function to handle performance entries\n * @returns {object} An object containing the observer's support status and methods to start and stop the observer\n *\n * @example\n * const { supported, entries, start, stop } = usePerformanceObserver();\n */\nexport const usePerformanceObserver = (\n options: UsePerformanceObserverOptions,\n callback?: PerformanceObserverCallback\n) => {\n const supported = typeof window !== 'undefined' &&
|
|
1
|
+
{"version":3,"file":"usePerformanceObserver.mjs","sources":["../../../../src/hooks/usePerformanceObserver/usePerformanceObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use performance observer options type */\nexport type UsePerformanceObserverOptions = PerformanceObserverInit & {\n /** Whether to start the observer immediately */\n immediate?: boolean;\n};\n\n/**\n * @name usePerformanceObserver\n * @description - Hook that allows you to observe performance entries\n * @category Sensors\n * @usage low\n *\n * @browserapi PerformanceObserver https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver\n *\n * @param {UsePerformanceObserverOptions} options The options for the performance observer\n * @param {PerformanceObserverCallback} callback The function to handle performance entries\n * @returns {object} An object containing the observer's support status and methods to start and stop the observer\n *\n * @example\n * const { supported, entries, start, stop } = usePerformanceObserver();\n */\nexport const usePerformanceObserver = (\n options: UsePerformanceObserverOptions,\n callback?: PerformanceObserverCallback\n) => {\n const supported = typeof window !== 'undefined' && !!window.PerformanceObserver;\n const [entries, setEntries] = useState<PerformanceEntry[]>([]);\n\n const observerRef = useRef<PerformanceObserver | null>(null);\n const internalCallback = useRef<PerformanceObserverCallback | null>(callback);\n internalCallback.current = callback;\n\n const start = () => {\n if (!supported) return;\n const observer = new PerformanceObserver((entryList, observer) => {\n setEntries(entryList.getEntries());\n internalCallback.current?.(entryList, observer);\n });\n observer.observe(options);\n observerRef.current = observer;\n };\n\n const stop = () => {\n if (!supported) return;\n observerRef.current?.disconnect();\n observerRef.current = null;\n };\n\n useEffect(() => {\n if (!supported) return;\n if (options.immediate) start();\n\n return () => {\n stop();\n };\n }, []);\n\n return { supported, entries, start, stop };\n};\n"],"names":["usePerformanceObserver","options","callback","supported","entries","setEntries","useState","observerRef","useRef","internalCallback","start","observer","entryList","stop","useEffect"],"mappings":";AAuBO,MAAMA,IAAyB,CACpCC,GACAC,MACG;AACH,QAAMC,IAAY,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO,qBACtD,CAACC,GAASC,CAAU,IAAIC,EAA6B,CAAA,CAAE,GAEvDC,IAAcC,EAAmC,IAAI,GACrDC,IAAmBD,EAA2CN,CAAQ;AAC5E,EAAAO,EAAiB,UAAUP;AAE3B,QAAMQ,IAAQ,MAAM;AAClB,QAAI,CAACP,EAAW;AAChB,UAAMQ,IAAW,IAAI,oBAAoB,CAACC,GAAWD,MAAa;AAChE,MAAAN,EAAWO,EAAU,YAAY,GACjCH,EAAiB,UAAUG,GAAWD,CAAQ;AAAA,IAAA,CAC/C;AACD,IAAAA,EAAS,QAAQV,CAAO,GACxBM,EAAY,UAAUI;AAAA,EAAA,GAGlBE,IAAO,MAAM;AACjB,IAAKV,MACLI,EAAY,SAAS,WAAA,GACrBA,EAAY,UAAU;AAAA,EAAA;AAGxB,SAAAO,EAAU,MAAM;AACd,QAAKX;AACL,aAAIF,EAAQ,aAAWS,EAAA,GAEhB,MAAM;AACX,QAAAG,EAAA;AAAA,MAAK;AAAA,EACP,GACC,EAAE,GAEE,EAAE,WAAAV,GAAW,SAAAC,GAAS,OAAAM,GAAO,MAAAG,EAAA;AACtC;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState as u, useEffect as c } from "react";
|
|
2
2
|
import { useEvent as m } from "../useEvent/useEvent.mjs";
|
|
3
|
-
const
|
|
4
|
-
const n = typeof navigator < "u" && "permissions" in navigator, [
|
|
3
|
+
const f = (e, i) => {
|
|
4
|
+
const n = typeof navigator < "u" && "permissions" in navigator && !!navigator.permissions, [a, r] = u("prompt"), s = i?.enabled ?? !0, p = { name: e }, t = m(async () => {
|
|
5
5
|
try {
|
|
6
6
|
const o = await navigator.permissions.query(
|
|
7
7
|
p
|
|
@@ -17,12 +17,12 @@ const v = (e, a) => {
|
|
|
17
17
|
window.removeEventListener("change", t);
|
|
18
18
|
};
|
|
19
19
|
}, [e, s]), {
|
|
20
|
-
state:
|
|
20
|
+
state: a,
|
|
21
21
|
supported: n,
|
|
22
22
|
query: t
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
25
|
export {
|
|
26
|
-
|
|
26
|
+
f as usePermission
|
|
27
27
|
};
|
|
28
28
|
//# sourceMappingURL=usePermission.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePermission.mjs","sources":["../../../../src/hooks/usePermission/usePermission.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/** The permission name */\nexport type UsePermissionName =\n | 'accelerometer'\n | 'accessibility-events'\n | 'ambient-light-sensor'\n | 'background-sync'\n | 'camera'\n | 'clipboard-read'\n | 'clipboard-write'\n | 'gyroscope'\n | 'magnetometer'\n | 'microphone'\n | 'notifications'\n | 'payment-handler'\n | 'persistent-storage'\n | 'push'\n | 'speaker'\n | PermissionName;\n\n/** The use permission options type */\nexport interface UsePermissionOptions {\n /** Whether the permission is enabled */\n enabled: boolean;\n}\n\n/** The use permission return type */\nexport interface UsePermissionReturn {\n /** The permission state */\n state: PermissionState;\n /** The permission supported status */\n supported: boolean;\n /** The permission query function */\n query: () => Promise<PermissionState>;\n}\n\n/**\n * @name usePermission\n * @description - Hook that gives you the state of permission\n * @category Browser\n *\n * @browserapi navigator.permissions https://developer.mozilla.org/en-US/docs/Web/API/Navigator/permissions\n *\n * @param {UsePermissionName} permissionDescriptorName - The permission name\n * @param {boolean} [options.enabled=true] - Whether the permission is enabled\n * @returns {UsePermissionReturn} An object containing the state and the supported status\n *\n * @example\n * const { state, supported, query } = usePermission('microphone');\n */\nexport const usePermission = (\n permissionDescriptorName: UsePermissionName,\n options?: UsePermissionOptions\n) => {\n const supported
|
|
1
|
+
{"version":3,"file":"usePermission.mjs","sources":["../../../../src/hooks/usePermission/usePermission.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/** The permission name */\nexport type UsePermissionName =\n | 'accelerometer'\n | 'accessibility-events'\n | 'ambient-light-sensor'\n | 'background-sync'\n | 'camera'\n | 'clipboard-read'\n | 'clipboard-write'\n | 'gyroscope'\n | 'magnetometer'\n | 'microphone'\n | 'notifications'\n | 'payment-handler'\n | 'persistent-storage'\n | 'push'\n | 'speaker'\n | PermissionName;\n\n/** The use permission options type */\nexport interface UsePermissionOptions {\n /** Whether the permission is enabled */\n enabled: boolean;\n}\n\n/** The use permission return type */\nexport interface UsePermissionReturn {\n /** The permission state */\n state: PermissionState;\n /** The permission supported status */\n supported: boolean;\n /** The permission query function */\n query: () => Promise<PermissionState>;\n}\n\n/**\n * @name usePermission\n * @description - Hook that gives you the state of permission\n * @category Browser\n * @usage medium\n *\n * @browserapi navigator.permissions https://developer.mozilla.org/en-US/docs/Web/API/Navigator/permissions\n *\n * @param {UsePermissionName} permissionDescriptorName - The permission name\n * @param {boolean} [options.enabled=true] - Whether the permission is enabled\n * @returns {UsePermissionReturn} An object containing the state and the supported status\n *\n * @example\n * const { state, supported, query } = usePermission('microphone');\n */\nexport const usePermission = (\n permissionDescriptorName: UsePermissionName,\n options?: UsePermissionOptions\n) => {\n const supported =\n typeof navigator !== 'undefined' && 'permissions' in navigator && !!navigator.permissions;\n const [state, setState] = useState<PermissionState>('prompt');\n const enabled = options?.enabled ?? true;\n\n const permissionDescriptor = { name: permissionDescriptorName };\n\n const query = useEvent(async () => {\n try {\n const permissionStatus = await navigator.permissions.query(\n permissionDescriptor as PermissionDescriptor\n );\n setState(permissionStatus.state);\n return permissionStatus.state;\n } catch {\n setState('prompt');\n return 'prompt';\n }\n });\n\n useEffect(() => {\n if (!supported || !enabled) return;\n query();\n window.addEventListener('change', query);\n return () => {\n window.removeEventListener('change', query);\n };\n }, [permissionDescriptorName, enabled]);\n\n return {\n state,\n supported,\n query\n };\n};\n"],"names":["usePermission","permissionDescriptorName","options","supported","state","setState","useState","enabled","permissionDescriptor","query","useEvent","permissionStatus","useEffect"],"mappings":";;AAsDO,MAAMA,IAAgB,CAC3BC,GACAC,MACG;AACH,QAAMC,IACJ,OAAO,YAAc,OAAe,iBAAiB,aAAa,CAAC,CAAC,UAAU,aAC1E,CAACC,GAAOC,CAAQ,IAAIC,EAA0B,QAAQ,GACtDC,IAAUL,GAAS,WAAW,IAE9BM,IAAuB,EAAE,MAAMP,EAAA,GAE/BQ,IAAQC,EAAS,YAAY;AACjC,QAAI;AACF,YAAMC,IAAmB,MAAM,UAAU,YAAY;AAAA,QACnDH;AAAA,MAAA;AAEF,aAAAH,EAASM,EAAiB,KAAK,GACxBA,EAAiB;AAAA,IAAA,QAClB;AACN,aAAAN,EAAS,QAAQ,GACV;AAAA,IAAA;AAAA,EACT,CACD;AAED,SAAAO,EAAU,MAAM;AACd,QAAI,GAACT,KAAa,CAACI;AACnB,aAAAE,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAK,GAChC,MAAM;AACX,eAAO,oBAAoB,UAAUA,CAAK;AAAA,MAAA;AAAA,EAC5C,GACC,CAACR,GAA0BM,CAAO,CAAC,GAE/B;AAAA,IACL,OAAAH;AAAA,IACA,WAAAD;AAAA,IACA,OAAAM;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { useState as
|
|
1
|
+
import { useState as P, useRef as E, useEffect as v } from "react";
|
|
2
2
|
import { useRefState as g } from "../useRefState/useRefState.mjs";
|
|
3
3
|
import { isTarget as I } from "../../utils/helpers/isTarget.mjs";
|
|
4
4
|
import { getElement as x } from "../../utils/helpers/getElement.mjs";
|
|
5
|
-
const
|
|
6
|
-
const t = I(n[0]) ? n[0] : void 0, r = (t ? n[1] : n[0]) ?? {}, [s, i] =
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
5
|
+
const O = (...n) => {
|
|
6
|
+
const c = typeof document < "u" && "pictureInPictureEnabled" in document && !!document.pictureInPictureEnabled, t = I(n[0]) ? n[0] : void 0, r = (t ? n[1] : n[0]) ?? {}, [s, i] = P(!1), f = g(), u = E(null), o = E(r);
|
|
7
|
+
o.current = r;
|
|
8
|
+
const a = async () => {
|
|
9
|
+
c && u.current && (await u.current.requestPictureInPicture(), i(!0), r.onEnter?.());
|
|
10
10
|
}, p = async () => {
|
|
11
|
-
|
|
11
|
+
c && (await document.exitPictureInPicture(), i(!1), r.onExit?.());
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
v(() => {
|
|
14
14
|
const e = t ? x(t) : f.current;
|
|
15
15
|
if (!e) return;
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
i(!0),
|
|
19
|
-
},
|
|
20
|
-
i(!1),
|
|
16
|
+
u.current = e;
|
|
17
|
+
const d = () => {
|
|
18
|
+
i(!0), o.current.onEnter?.();
|
|
19
|
+
}, m = () => {
|
|
20
|
+
i(!1), o.current.onExit?.();
|
|
21
21
|
};
|
|
22
|
-
return e.addEventListener("enterpictureinpicture",
|
|
23
|
-
e.removeEventListener("enterpictureinpicture",
|
|
22
|
+
return e.addEventListener("enterpictureinpicture", d), e.addEventListener("leavepictureinpicture", m), () => {
|
|
23
|
+
e.removeEventListener("enterpictureinpicture", d), e.removeEventListener("leavepictureinpicture", m);
|
|
24
24
|
};
|
|
25
25
|
}, [t]);
|
|
26
26
|
const l = {
|
|
27
27
|
open: s,
|
|
28
|
-
supported:
|
|
28
|
+
supported: c,
|
|
29
29
|
enter: a,
|
|
30
30
|
exit: p,
|
|
31
31
|
toggle: async () => {
|
|
@@ -35,6 +35,6 @@ const S = (...n) => {
|
|
|
35
35
|
return t ? l : { ...l, ref: f };
|
|
36
36
|
};
|
|
37
37
|
export {
|
|
38
|
-
|
|
38
|
+
O as usePictureInPicture
|
|
39
39
|
};
|
|
40
40
|
//# sourceMappingURL=usePictureInPicture.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePictureInPicture.mjs","sources":["../../../../src/hooks/usePictureInPicture/usePictureInPicture.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use picture in picture options type */\nexport interface UsePictureInPictureOptions {\n /** The callback when Picture-in-Picture mode is entered */\n onEnter?: () => void;\n /** The callback when Picture-in-Picture mode is exited */\n onExit?: () => void;\n}\n\n/** The use picture in picture return type */\nexport interface UsePictureInPictureReturn {\n /** Whether Picture-in-Picture mode is currently active */\n open: boolean;\n /** Whether Picture-in-Picture mode is supported by the browser */\n supported: boolean;\n /** Request to enter Picture-in-Picture mode */\n enter: () => Promise<void>;\n /** Request to exit Picture-in-Picture mode */\n exit: () => Promise<void>;\n /** Toggle Picture-in-Picture mode */\n toggle: () => Promise<void>;\n}\n\nexport interface UsePictureInPicture {\n (target: HookTarget, options?: UsePictureInPictureOptions): UsePictureInPictureReturn;\n\n (options?: UsePictureInPictureOptions): UsePictureInPictureReturn & {\n ref: StateRef<HTMLVideoElement>;\n };\n}\n\n/**\n * @name usePictureInPicture\n * @description - Hook that provides Picture-in-Picture functionality for video elements\n * @category Browser\n *\n * @browserapi window.PictureInPicture https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API\n *\n * @overload\n * @param {HookTarget} target The target video element\n * @param {() => void} [options.onEnter] Callback when Picture-in-Picture mode is entered\n * @param {() => void} [options.onExit] Callback when Picture-in-Picture mode is exited\n * @returns {UsePictureInPictureReturn} An object containing Picture-in-Picture state and controls\n *\n * @example\n * const { open, supported, enter, exit, toggle } = usePictureInPicture(videoRef);\n *\n * @overload\n * @param {() => void} [options.onEnter] Callback when Picture-in-Picture mode is entered\n * @param {() => void} [options.onExit] Callback when Picture-in-Picture mode is exited\n * @returns {UsePictureInPictureReturn & { ref: StateRef<HTMLVideoElement> }} An object containing Picture-in-Picture state, controls and ref\n *\n * @example\n * const { ref, open, supported, enter, exit, toggle } = usePictureInPicture();\n */\nexport const usePictureInPicture = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = ((target ? params[1] : params[0]) as UsePictureInPictureOptions) ?? {};\n\n const [open, setOpen] = useState(false);\n\n const internalRef = useRefState<HTMLVideoElement>();\n const elementRef = useRef<HTMLVideoElement>(null);\n const onOptionsRef = useRef<UsePictureInPictureOptions>(options);\n onOptionsRef.current = options;\n\n const
|
|
1
|
+
{"version":3,"file":"usePictureInPicture.mjs","sources":["../../../../src/hooks/usePictureInPicture/usePictureInPicture.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use picture in picture options type */\nexport interface UsePictureInPictureOptions {\n /** The callback when Picture-in-Picture mode is entered */\n onEnter?: () => void;\n /** The callback when Picture-in-Picture mode is exited */\n onExit?: () => void;\n}\n\n/** The use picture in picture return type */\nexport interface UsePictureInPictureReturn {\n /** Whether Picture-in-Picture mode is currently active */\n open: boolean;\n /** Whether Picture-in-Picture mode is supported by the browser */\n supported: boolean;\n /** Request to enter Picture-in-Picture mode */\n enter: () => Promise<void>;\n /** Request to exit Picture-in-Picture mode */\n exit: () => Promise<void>;\n /** Toggle Picture-in-Picture mode */\n toggle: () => Promise<void>;\n}\n\nexport interface UsePictureInPicture {\n (target: HookTarget, options?: UsePictureInPictureOptions): UsePictureInPictureReturn;\n\n (options?: UsePictureInPictureOptions): UsePictureInPictureReturn & {\n ref: StateRef<HTMLVideoElement>;\n };\n}\n\n/**\n * @name usePictureInPicture\n * @description - Hook that provides Picture-in-Picture functionality for video elements\n * @category Browser\n * @usage low\n *\n * @browserapi window.PictureInPicture https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API\n *\n * @overload\n * @param {HookTarget} target The target video element\n * @param {() => void} [options.onEnter] Callback when Picture-in-Picture mode is entered\n * @param {() => void} [options.onExit] Callback when Picture-in-Picture mode is exited\n * @returns {UsePictureInPictureReturn} An object containing Picture-in-Picture state and controls\n *\n * @example\n * const { open, supported, enter, exit, toggle } = usePictureInPicture(videoRef);\n *\n * @overload\n * @param {() => void} [options.onEnter] Callback when Picture-in-Picture mode is entered\n * @param {() => void} [options.onExit] Callback when Picture-in-Picture mode is exited\n * @returns {UsePictureInPictureReturn & { ref: StateRef<HTMLVideoElement> }} An object containing Picture-in-Picture state, controls and ref\n *\n * @example\n * const { ref, open, supported, enter, exit, toggle } = usePictureInPicture();\n */\nexport const usePictureInPicture = ((...params: any[]) => {\n const supported =\n typeof document !== 'undefined' &&\n 'pictureInPictureEnabled' in document &&\n !!document.pictureInPictureEnabled;\n\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = ((target ? params[1] : params[0]) as UsePictureInPictureOptions) ?? {};\n\n const [open, setOpen] = useState(false);\n\n const internalRef = useRefState<HTMLVideoElement>();\n const elementRef = useRef<HTMLVideoElement>(null);\n const onOptionsRef = useRef<UsePictureInPictureOptions>(options);\n onOptionsRef.current = options;\n\n const enter = async () => {\n if (!supported) return;\n\n if (!elementRef.current) return;\n\n await elementRef.current.requestPictureInPicture();\n setOpen(true);\n\n options.onEnter?.();\n };\n\n const exit = async () => {\n if (!supported) return;\n\n await document.exitPictureInPicture();\n setOpen(false);\n options.onExit?.();\n };\n\n useEffect(() => {\n const element = target ? (getElement(target) as HTMLVideoElement) : internalRef.current;\n if (!element) return;\n\n elementRef.current = element;\n\n const onEnterPictureInPicture = () => {\n setOpen(true);\n onOptionsRef.current.onEnter?.();\n };\n\n const onLeavePictureInPicture = () => {\n setOpen(false);\n onOptionsRef.current.onExit?.();\n };\n\n element.addEventListener('enterpictureinpicture', onEnterPictureInPicture);\n element.addEventListener('leavepictureinpicture', onLeavePictureInPicture);\n\n return () => {\n element.removeEventListener('enterpictureinpicture', onEnterPictureInPicture);\n element.removeEventListener('leavepictureinpicture', onLeavePictureInPicture);\n };\n }, [target]);\n\n const toggle = async () => {\n if (open) await exit();\n else await enter();\n };\n\n const value = {\n open,\n supported,\n enter,\n exit,\n toggle\n };\n\n if (target) return value;\n return { ...value, ref: internalRef };\n}) as UsePictureInPicture;\n"],"names":["usePictureInPicture","params","supported","target","isTarget","options","open","setOpen","useState","internalRef","useRefState","elementRef","useRef","onOptionsRef","enter","exit","useEffect","element","getElement","onEnterPictureInPicture","onLeavePictureInPicture","value"],"mappings":";;;;AAiEO,MAAMA,IAAuB,IAAIC,MAAkB;AACxD,QAAMC,IACJ,OAAO,WAAa,OACpB,6BAA6B,YAC7B,CAAC,CAAC,SAAS,yBAEPC,IAAUC,EAASH,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CI,KAAYF,IAASF,EAAO,CAAC,IAAIA,EAAO,CAAC,MAAqC,CAAA,GAE9E,CAACK,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAEhCC,IAAcC,EAAA,GACdC,IAAaC,EAAyB,IAAI,GAC1CC,IAAeD,EAAmCP,CAAO;AAC/D,EAAAQ,EAAa,UAAUR;AAEvB,QAAMS,IAAQ,YAAY;AACxB,IAAKZ,KAEAS,EAAW,YAEhB,MAAMA,EAAW,QAAQ,wBAAA,GACzBJ,EAAQ,EAAI,GAEZF,EAAQ,UAAA;AAAA,EAAU,GAGdU,IAAO,YAAY;AACvB,IAAKb,MAEL,MAAM,SAAS,qBAAA,GACfK,EAAQ,EAAK,GACbF,EAAQ,SAAA;AAAA,EAAS;AAGnB,EAAAW,EAAU,MAAM;AACd,UAAMC,IAAUd,IAAUe,EAAWf,CAAM,IAAyBM,EAAY;AAChF,QAAI,CAACQ,EAAS;AAEd,IAAAN,EAAW,UAAUM;AAErB,UAAME,IAA0B,MAAM;AACpC,MAAAZ,EAAQ,EAAI,GACZM,EAAa,QAAQ,UAAA;AAAA,IAAU,GAG3BO,IAA0B,MAAM;AACpC,MAAAb,EAAQ,EAAK,GACbM,EAAa,QAAQ,SAAA;AAAA,IAAS;AAGhC,WAAAI,EAAQ,iBAAiB,yBAAyBE,CAAuB,GACzEF,EAAQ,iBAAiB,yBAAyBG,CAAuB,GAElE,MAAM;AACX,MAAAH,EAAQ,oBAAoB,yBAAyBE,CAAuB,GAC5EF,EAAQ,oBAAoB,yBAAyBG,CAAuB;AAAA,IAAA;AAAA,EAC9E,GACC,CAACjB,CAAM,CAAC;AAOX,QAAMkB,IAAQ;AAAA,IACZ,MAAAf;AAAA,IACA,WAAAJ;AAAA,IACA,OAAAY;AAAA,IACA,MAAAC;AAAA,IACA,QAVa,YAAY;AACzB,MAAIT,UAAYS,EAAA,UACLD,EAAA;AAAA,IAAM;AAAA,EAQjB;AAGF,SAAIX,IAAekB,IACZ,EAAE,GAAGA,GAAO,KAAKZ,EAAA;AAC1B;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState as u, useEffect as l } from "react";
|
|
2
|
-
const
|
|
3
|
-
const e = typeof document < "u" && "pointerLockElement" in document, [t, o] = u();
|
|
2
|
+
const k = () => {
|
|
3
|
+
const e = typeof document < "u" && "pointerLockElement" in document && !!document.pointerLockElement, [t, o] = u();
|
|
4
4
|
return l(() => {
|
|
5
5
|
if (!e) return;
|
|
6
6
|
const n = () => {
|
|
@@ -26,6 +26,6 @@ const a = () => {
|
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
28
|
export {
|
|
29
|
-
|
|
29
|
+
k as usePointerLock
|
|
30
30
|
};
|
|
31
31
|
//# sourceMappingURL=usePointerLock.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePointerLock.mjs","sources":["../../../../src/hooks/usePointerLock/usePointerLock.ts"],"sourcesContent":["import type { MouseEvent } from 'react';\n\nimport { useEffect, useState } from 'react';\n\n/** The use pointer lock return type */\ninterface UsePointerLockReturn {\n /** The pointer lock element */\n element?: Element;\n /** Whether the pointer lock is supported */\n supported: boolean;\n /** Lock the pointer lock */\n lock: (event: MouseEvent) => void;\n /** Unlock the pointer lock */\n unlock: () => boolean;\n}\n\n/**\n * @name usePointerLock\n * @description - Hook that provides reactive pointer lock\n * @category Browser\n *\n * @browserapi pointerLockElement https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerLockElement\n *\n * @returns {UsePointerLockReturn} An object containing the pointer lock element and functions to interact with the pointer lock\n *\n * @example\n * const { supported, lock, unlock, element } = usePointerLock();\n */\nexport const usePointerLock = (): UsePointerLockReturn => {\n const supported
|
|
1
|
+
{"version":3,"file":"usePointerLock.mjs","sources":["../../../../src/hooks/usePointerLock/usePointerLock.ts"],"sourcesContent":["import type { MouseEvent } from 'react';\n\nimport { useEffect, useState } from 'react';\n\n/** The use pointer lock return type */\ninterface UsePointerLockReturn {\n /** The pointer lock element */\n element?: Element;\n /** Whether the pointer lock is supported */\n supported: boolean;\n /** Lock the pointer lock */\n lock: (event: MouseEvent) => void;\n /** Unlock the pointer lock */\n unlock: () => boolean;\n}\n\n/**\n * @name usePointerLock\n * @description - Hook that provides reactive pointer lock\n * @category Browser\n * @usage low\n *\n * @browserapi pointerLockElement https://developer.mozilla.org/en-US/docs/Web/API/Document/pointerLockElement\n *\n * @returns {UsePointerLockReturn} An object containing the pointer lock element and functions to interact with the pointer lock\n *\n * @example\n * const { supported, lock, unlock, element } = usePointerLock();\n */\nexport const usePointerLock = (): UsePointerLockReturn => {\n const supported =\n typeof document !== 'undefined' &&\n 'pointerLockElement' in document &&\n !!document.pointerLockElement;\n const [element, setElement] = useState<Element>();\n\n useEffect(() => {\n if (!supported) return;\n\n const handlePointerLockChange = () => {\n if (!supported) return;\n\n const currentElement = document.pointerLockElement ?? element;\n\n if (currentElement && currentElement === element) {\n setElement(document.pointerLockElement as Element);\n }\n };\n const handlePointerLockError = () => {\n if (!supported) return;\n\n const currentElement = document.pointerLockElement ?? element;\n\n if (currentElement && currentElement === element) {\n const action = document.pointerLockElement ? 'release' : 'acquire';\n\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n };\n\n document.addEventListener('pointerlockchange', handlePointerLockChange);\n document.addEventListener('pointerlockerror', handlePointerLockError);\n\n return () => {\n document.removeEventListener('pointerlockchange', handlePointerLockChange);\n document.removeEventListener('pointerlockerror', handlePointerLockError);\n };\n }, []);\n\n const lock = (event: MouseEvent) => {\n if (!supported) return false;\n\n if (event instanceof Event) return false;\n\n event.currentTarget.requestPointerLock();\n\n setElement(event.currentTarget);\n return true;\n };\n\n const unlock = () => {\n if (!supported) return false;\n\n if (!element) return false;\n\n document.exitPointerLock();\n setElement(undefined);\n\n return true;\n };\n\n return {\n supported,\n element,\n lock,\n unlock\n };\n};\n"],"names":["usePointerLock","supported","element","setElement","useState","useEffect","handlePointerLockChange","currentElement","handlePointerLockError","action","event"],"mappings":";AA6BO,MAAMA,IAAiB,MAA4B;AACxD,QAAMC,IACJ,OAAO,WAAa,OACpB,wBAAwB,YACxB,CAAC,CAAC,SAAS,oBACP,CAACC,GAASC,CAAU,IAAIC,EAAA;AAE9B,SAAAC,EAAU,MAAM;AACd,QAAI,CAACJ,EAAW;AAEhB,UAAMK,IAA0B,MAAM;AACpC,UAAI,CAACL,EAAW;AAEhB,YAAMM,IAAiB,SAAS,sBAAsBL;AAEtD,MAAIK,KAAkBA,MAAmBL,KACvCC,EAAW,SAAS,kBAA6B;AAAA,IACnD,GAEIK,IAAyB,MAAM;AACnC,UAAI,CAACP,EAAW;AAEhB,YAAMM,IAAiB,SAAS,sBAAsBL;AAEtD,UAAIK,KAAkBA,MAAmBL,GAAS;AAChD,cAAMO,IAAS,SAAS,qBAAqB,YAAY;AAEzD,cAAM,IAAI,MAAM,aAAaA,CAAM,gBAAgB;AAAA,MAAA;AAAA,IACrD;AAGF,oBAAS,iBAAiB,qBAAqBH,CAAuB,GACtE,SAAS,iBAAiB,oBAAoBE,CAAsB,GAE7D,MAAM;AACX,eAAS,oBAAoB,qBAAqBF,CAAuB,GACzE,SAAS,oBAAoB,oBAAoBE,CAAsB;AAAA,IAAA;AAAA,EACzE,GACC,EAAE,GAwBE;AAAA,IACL,WAAAP;AAAA,IACA,SAAAC;AAAA,IACA,MAzBW,CAACQ,MACR,CAACT,KAEDS,aAAiB,QAAc,MAEnCA,EAAM,cAAc,mBAAA,GAEpBP,EAAWO,EAAM,aAAa,GACvB;AAAA,IAkBP,QAfa,MACT,CAACT,KAED,CAACC,IAAgB,MAErB,SAAS,gBAAA,GACTC,EAAW,MAAS,GAEb;AAAA,EAOP;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePostMessage.mjs","sources":["../../../../src/hooks/usePostMessage/usePostMessage.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport type UsePostMessageReturn<Message> = (message: Message) => void;\n\n/**\n * @name usePostMessage\n * @description - Hook that allows you to receive messages from other origins\n * @category Browser\n *\n * @overload\n * @template Message The message data type\n * @param {string | string[]} origin The origin of the message\n * @param {(message: Message) => Message} callback callback to get received message\n * @returns {(message: Message) => void} An object containing the current message\n *\n * @example\n * const postMessage = usePostMessage();\n */\nexport const usePostMessage = <Message>(\n origin: string | '*' | string[],\n callback: (message: Message, event: MessageEvent<Message>) => void\n): UsePostMessageReturn<Message> => {\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n const onMessage = (event: MessageEvent<Message>) => {\n if (\n (Array.isArray(origin) && (!origin.includes(event.origin) || !origin.includes('*'))) ||\n (event.origin !== origin && origin !== '*')\n )\n return;\n\n internalCallbackRef.current(event.data as Message, event);\n };\n\n window.addEventListener('message', onMessage);\n return () => window.removeEventListener('message', onMessage);\n }, []);\n\n const postMessage = (message: Message) => {\n if (Array.isArray(origin)) {\n origin.forEach((origin) => window.postMessage(message, origin));\n return;\n }\n\n window.postMessage(message, origin);\n };\n\n return postMessage;\n};\n"],"names":["usePostMessage","origin","callback","internalCallbackRef","useRef","useEffect","onMessage","event","message"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePostMessage.mjs","sources":["../../../../src/hooks/usePostMessage/usePostMessage.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport type UsePostMessageReturn<Message> = (message: Message) => void;\n\n/**\n * @name usePostMessage\n * @description - Hook that allows you to receive messages from other origins\n * @category Browser\n * @usage low\n *\n * @overload\n * @template Message The message data type\n * @param {string | string[]} origin The origin of the message\n * @param {(message: Message) => Message} callback callback to get received message\n * @returns {(message: Message) => void} An object containing the current message\n *\n * @example\n * const postMessage = usePostMessage();\n */\nexport const usePostMessage = <Message>(\n origin: string | '*' | string[],\n callback: (message: Message, event: MessageEvent<Message>) => void\n): UsePostMessageReturn<Message> => {\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n const onMessage = (event: MessageEvent<Message>) => {\n if (\n (Array.isArray(origin) && (!origin.includes(event.origin) || !origin.includes('*'))) ||\n (event.origin !== origin && origin !== '*')\n )\n return;\n\n internalCallbackRef.current(event.data as Message, event);\n };\n\n window.addEventListener('message', onMessage);\n return () => window.removeEventListener('message', onMessage);\n }, []);\n\n const postMessage = (message: Message) => {\n if (Array.isArray(origin)) {\n origin.forEach((origin) => window.postMessage(message, origin));\n return;\n }\n\n window.postMessage(message, origin);\n };\n\n return postMessage;\n};\n"],"names":["usePostMessage","origin","callback","internalCallbackRef","useRef","useEffect","onMessage","event","message"],"mappings":";AAmBO,MAAMA,IAAiB,CAC5BC,GACAC,MACkC;AAClC,QAAMC,IAAsBC,EAAOF,CAAQ;AAC3C,SAAAC,EAAoB,UAAUD,GAE9BG,EAAU,MAAM;AACd,UAAMC,IAAY,CAACC,MAAiC;AAClD,MACG,MAAM,QAAQN,CAAM,MAAM,CAACA,EAAO,SAASM,EAAM,MAAM,KAAK,CAACN,EAAO,SAAS,GAAG,MAChFM,EAAM,WAAWN,KAAUA,MAAW,OAIzCE,EAAoB,QAAQI,EAAM,MAAiBA,CAAK;AAAA,IAAA;AAG1D,kBAAO,iBAAiB,WAAWD,CAAS,GACrC,MAAM,OAAO,oBAAoB,WAAWA,CAAS;AAAA,EAAA,GAC3D,EAAE,GAEe,CAACE,MAAqB;AACxC,QAAI,MAAM,QAAQP,CAAM,GAAG;AACzB,MAAAA,EAAO,QAAQ,CAACA,MAAW,OAAO,YAAYO,GAASP,CAAM,CAAC;AAC9D;AAAA,IAAA;AAGF,WAAO,YAAYO,GAASP,CAAM;AAAA,EAAA;AAItC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreferredColorScheme.mjs","sources":["../../../../src/hooks/usePreferredColorScheme/usePreferredColorScheme.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/** The use preferred color scheme return type */\nexport type UsePreferredColorSchemeReturn = 'dark' | 'light' | 'no-preference';\n\n/**\n * @name usePreferredColorScheme\n * @description - Hook that returns user preferred color scheme\n * @category User\n *\n * @returns {UsePreferredColorSchemeReturn} String of preferred color scheme\n *\n * @example\n * const colorScheme = usePreferredColorScheme();\n */\nexport const usePreferredColorScheme = (): UsePreferredColorSchemeReturn => {\n const isLight = useMediaQuery('(prefers-color-scheme: light)');\n const isDark = useMediaQuery('(prefers-color-scheme: dark)');\n\n if (isLight) return 'light';\n if (isDark) return 'dark';\n return 'no-preference';\n};\n"],"names":["usePreferredColorScheme","isLight","useMediaQuery","isDark"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePreferredColorScheme.mjs","sources":["../../../../src/hooks/usePreferredColorScheme/usePreferredColorScheme.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/** The use preferred color scheme return type */\nexport type UsePreferredColorSchemeReturn = 'dark' | 'light' | 'no-preference';\n\n/**\n * @name usePreferredColorScheme\n * @description - Hook that returns user preferred color scheme\n * @category User\n * @usage medium\n *\n * @returns {UsePreferredColorSchemeReturn} String of preferred color scheme\n *\n * @example\n * const colorScheme = usePreferredColorScheme();\n */\nexport const usePreferredColorScheme = (): UsePreferredColorSchemeReturn => {\n const isLight = useMediaQuery('(prefers-color-scheme: light)');\n const isDark = useMediaQuery('(prefers-color-scheme: dark)');\n\n if (isLight) return 'light';\n if (isDark) return 'dark';\n return 'no-preference';\n};\n"],"names":["usePreferredColorScheme","isLight","useMediaQuery","isDark"],"mappings":";AAgBO,MAAMA,IAA0B,MAAqC;AAC1E,QAAMC,IAAUC,EAAc,+BAA+B,GACvDC,IAASD,EAAc,8BAA8B;AAE3D,SAAID,IAAgB,UAChBE,IAAe,SACZ;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreferredContrast.mjs","sources":["../../../../src/hooks/usePreferredContrast/usePreferredContrast.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/** The use preferred contrast return type */\nexport type UsePreferredContrastReturn = 'custom' | 'less' | 'more' | 'no-preference';\n\n/**\n * @name usePreferredContrast\n * @description - Hook that returns the contrast preference\n * @category User\n *\n * @returns {UsePreferredContrastReturn} The contrast preference\n *\n * @example\n * const contrast = usePreferredContrast();\n */\nexport const usePreferredContrast = (): UsePreferredContrastReturn => {\n const more = useMediaQuery('(prefers-contrast: more)');\n const less = useMediaQuery('(prefers-contrast: less)');\n const custom = useMediaQuery('(prefers-contrast: custom)');\n return more ? 'more' : less ? 'less' : custom ? 'custom' : 'no-preference';\n};\n"],"names":["usePreferredContrast","more","useMediaQuery","less","custom"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePreferredContrast.mjs","sources":["../../../../src/hooks/usePreferredContrast/usePreferredContrast.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/** The use preferred contrast return type */\nexport type UsePreferredContrastReturn = 'custom' | 'less' | 'more' | 'no-preference';\n\n/**\n * @name usePreferredContrast\n * @description - Hook that returns the contrast preference\n * @category User\n * @usage medium\n *\n * @returns {UsePreferredContrastReturn} The contrast preference\n *\n * @example\n * const contrast = usePreferredContrast();\n */\nexport const usePreferredContrast = (): UsePreferredContrastReturn => {\n const more = useMediaQuery('(prefers-contrast: more)');\n const less = useMediaQuery('(prefers-contrast: less)');\n const custom = useMediaQuery('(prefers-contrast: custom)');\n return more ? 'more' : less ? 'less' : custom ? 'custom' : 'no-preference';\n};\n"],"names":["usePreferredContrast","more","useMediaQuery","less","custom"],"mappings":";AAgBO,MAAMA,IAAuB,MAAkC;AACpE,QAAMC,IAAOC,EAAc,0BAA0B,GAC/CC,IAAOD,EAAc,0BAA0B,GAC/CE,IAASF,EAAc,4BAA4B;AACzD,SAAOD,IAAO,SAASE,IAAO,SAASC,IAAS,WAAW;AAC7D;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreferredDark.mjs","sources":["../../../../src/hooks/usePreferredDark/usePreferredDark.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/**\n * @name usePreferredDark\n * @description - Hook that returns if the user prefers dark mode\n * @category User\n *\n * @example\n * const isDark = usePreferredDark();\n */\nexport const usePreferredDark = () => useMediaQuery('(prefers-color-scheme: dark)');\n"],"names":["usePreferredDark","useMediaQuery"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePreferredDark.mjs","sources":["../../../../src/hooks/usePreferredDark/usePreferredDark.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/**\n * @name usePreferredDark\n * @description - Hook that returns if the user prefers dark mode\n * @category User\n * @usage medium\n *\n * @example\n * const isDark = usePreferredDark();\n */\nexport const usePreferredDark = () => useMediaQuery('(prefers-color-scheme: dark)');\n"],"names":["usePreferredDark","useMediaQuery"],"mappings":";AAWO,MAAMA,IAAmB,MAAMC,EAAc,8BAA8B;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreferredLanguages.mjs","sources":["../../../../src/hooks/usePreferredLanguages/usePreferredLanguages.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst getSnapshot = () => window.navigator.languages;\nconst getServerSnapshot = () => [] as const;\nconst subscribe = (callback: () => void) => {\n window.addEventListener('languagechange', callback);\n return () => {\n window.removeEventListener('languagechange', callback);\n };\n};\n\n/**\n * @name usePreferredLanguages\n * @description Hook that returns a browser preferred languages from navigator\n * @category User\n *\n * @browserapi navigator.languages https://developer.mozilla.org/en-US/docs/Web/API/Navigator/languages\n *\n * @returns {readonly string[]} An array of strings representing the user's preferred languages\n *\n * @example\n * const languages = usePreferredLanguages();\n */\nexport const usePreferredLanguages = () =>\n useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n"],"names":["getSnapshot","getServerSnapshot","subscribe","callback","usePreferredLanguages","useSyncExternalStore"],"mappings":";AAEA,MAAMA,IAAc,MAAM,OAAO,UAAU,WACrCC,IAAoB,MAAM,CAAA,GAC1BC,IAAY,CAACC,OACjB,OAAO,iBAAiB,kBAAkBA,CAAQ,GAC3C,MAAM;AACX,SAAO,oBAAoB,kBAAkBA,CAAQ;AAAA,
|
|
1
|
+
{"version":3,"file":"usePreferredLanguages.mjs","sources":["../../../../src/hooks/usePreferredLanguages/usePreferredLanguages.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst getSnapshot = () => window.navigator.languages;\nconst getServerSnapshot = () => [] as const;\nconst subscribe = (callback: () => void) => {\n window.addEventListener('languagechange', callback);\n return () => {\n window.removeEventListener('languagechange', callback);\n };\n};\n\n/**\n * @name usePreferredLanguages\n * @description Hook that returns a browser preferred languages from navigator\n * @category User\n * @usage medium\n *\n * @browserapi navigator.languages https://developer.mozilla.org/en-US/docs/Web/API/Navigator/languages\n *\n * @returns {readonly string[]} An array of strings representing the user's preferred languages\n *\n * @example\n * const languages = usePreferredLanguages();\n */\nexport const usePreferredLanguages = () =>\n useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n"],"names":["getSnapshot","getServerSnapshot","subscribe","callback","usePreferredLanguages","useSyncExternalStore"],"mappings":";AAEA,MAAMA,IAAc,MAAM,OAAO,UAAU,WACrCC,IAAoB,MAAM,CAAA,GAC1BC,IAAY,CAACC,OACjB,OAAO,iBAAiB,kBAAkBA,CAAQ,GAC3C,MAAM;AACX,SAAO,oBAAoB,kBAAkBA,CAAQ;AAAA,IAiB5CC,IAAwB,MACnCC,EAAqBH,GAAWF,GAAaC,CAAiB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreferredReducedMotion.mjs","sources":["../../../../src/hooks/usePreferredReducedMotion/usePreferredReducedMotion.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/** The use preferred reduced motion return type */\nexport type UsePreferredReducedMotionReturn = 'no-preference' | 'reduce';\n\n/**\n * @name usePreferredReducedMotion\n * @description - Hook that returns the reduced motion preference\n * @category User\n *\n * @returns {UsePreferredReducedMotionReturn} The reduced motion preference\n *\n * @example\n * const reduced = usePreferredReducedMotion();\n */\nexport const usePreferredReducedMotion = (): UsePreferredReducedMotionReturn => {\n const reduced = useMediaQuery('(prefers-reduced-motion: reduce)');\n return reduced ? 'reduce' : 'no-preference';\n};\n"],"names":["usePreferredReducedMotion","useMediaQuery"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePreferredReducedMotion.mjs","sources":["../../../../src/hooks/usePreferredReducedMotion/usePreferredReducedMotion.ts"],"sourcesContent":["import { useMediaQuery } from '../useMediaQuery/useMediaQuery';\n\n/** The use preferred reduced motion return type */\nexport type UsePreferredReducedMotionReturn = 'no-preference' | 'reduce';\n\n/**\n * @name usePreferredReducedMotion\n * @description - Hook that returns the reduced motion preference\n * @category User\n * @usage low\n *\n * @returns {UsePreferredReducedMotionReturn} The reduced motion preference\n *\n * @example\n * const reduced = usePreferredReducedMotion();\n */\nexport const usePreferredReducedMotion = (): UsePreferredReducedMotionReturn => {\n const reduced = useMediaQuery('(prefers-reduced-motion: reduce)');\n return reduced ? 'reduce' : 'no-preference';\n};\n"],"names":["usePreferredReducedMotion","useMediaQuery"],"mappings":";AAgBO,MAAMA,IAA4B,MACvBC,EAAc,kCAAkC,IAC/C,WAAW;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrevious.mjs","sources":["../../../../src/hooks/usePrevious/usePrevious.ts"],"sourcesContent":["import { useRef } from 'react';\n\nexport interface UsePreviousOptions<Value> {\n equality: (a: Value, b: Value) => boolean;\n}\n\n/**\n * @name usePrevious\n * @description - Hook that returns the previous value\n * @category Utilities\n *\n * @template Value The type of the value\n * @param {Value} value The value to get the previous value\n * @param {(a: Value, b: Value) => boolean} [options.equality] The custom equality function to determine if the value has changed\n * @returns {Value | undefined} The previous value\n *\n * @example\n * const prevValue = usePrevious(value);\n */\nexport const usePrevious = <Value>(value: Value, options?: UsePreviousOptions<Value>) => {\n const currentRef = useRef<Value>(value);\n const previousRef = useRef<Value>(undefined);\n\n const equality = options?.equality ?? Object.is;\n\n if (!equality(value, currentRef.current)) {\n previousRef.current = currentRef.current;\n currentRef.current = value;\n }\n\n return previousRef.current;\n};\n"],"names":["usePrevious","value","options","currentRef","useRef","previousRef"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePrevious.mjs","sources":["../../../../src/hooks/usePrevious/usePrevious.ts"],"sourcesContent":["import { useRef } from 'react';\n\nexport interface UsePreviousOptions<Value> {\n equality: (a: Value, b: Value) => boolean;\n}\n\n/**\n * @name usePrevious\n * @description - Hook that returns the previous value\n * @category Utilities\n * @usage low\n *\n * @template Value The type of the value\n * @param {Value} value The value to get the previous value\n * @param {(a: Value, b: Value) => boolean} [options.equality] The custom equality function to determine if the value has changed\n * @returns {Value | undefined} The previous value\n *\n * @example\n * const prevValue = usePrevious(value);\n */\nexport const usePrevious = <Value>(value: Value, options?: UsePreviousOptions<Value>) => {\n const currentRef = useRef<Value>(value);\n const previousRef = useRef<Value>(undefined);\n\n const equality = options?.equality ?? Object.is;\n\n if (!equality(value, currentRef.current)) {\n previousRef.current = currentRef.current;\n currentRef.current = value;\n }\n\n return previousRef.current;\n};\n"],"names":["usePrevious","value","options","currentRef","useRef","previousRef"],"mappings":";AAoBO,MAAMA,IAAc,CAAQC,GAAcC,MAAwC;AACvF,QAAMC,IAAaC,EAAcH,CAAK,GAChCI,IAAcD,EAAc,MAAS;AAI3C,UAFiBF,GAAS,YAAY,OAAO,IAE/BD,GAAOE,EAAW,OAAO,MACrCE,EAAY,UAAUF,EAAW,SACjCA,EAAW,UAAUF,IAGhBI,EAAY;AACrB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.mjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/* The use query return type */\nexport interface UseQueryOptions<QueryData, Data> {\n /* The enabled state of the query */\n enabled?: boolean;\n /* The depends for the hook */\n keys?: DependencyList;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The refetch interval */\n refetchInterval?: number;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, error: Error) => number) | number;\n /* The callback function to be invoked on error */\n onError?: (error: Error) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (data: Data) => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\ninterface UseQueryCallbackParams {\n /* The depends for the hook */\n keys: DependencyList;\n /* The abort signal */\n signal: AbortSignal;\n}\n\n/* The use query return type */\nexport interface UseQueryReturn<Data> {\n /* The abort function */\n abort: AbortController['abort'];\n /* The state of the query */\n data?: Data;\n /* The success state of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The fetching state of the query */\n isFetching: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n /* The refetching state of the query */\n isRefetching: boolean;\n /* The success state of the query */\n isSuccess: boolean;\n /* The refetch function */\n refetch: () => void;\n}\n\n/**\n * @name useQuery\n * @description - Hook that defines the logic when query data\n * @category Async\n *\n * @template Data The type of the data\n * @param {() => Promise<Data>} callback The callback function to be invoked\n * @param {DependencyList} [options.keys] The dependencies for the hook\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\n * @param {number} [options.refetchInterval] The refetch interval\n * @param {boolean | number} [options.retry] The retry count of requests\n * @returns {UseQueryReturn<Data>} An object with the state of the query\n *\n * @example\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\n */\nexport const useQuery = <QueryData, Data = QueryData>(\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\n options?: UseQueryOptions<QueryData, Data>\n): UseQueryReturn<Data> => {\n const enabled = options?.enabled ?? true;\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const alreadyRequested = useRef(false);\n\n const [isFetching, setIsFetching] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [isRefetching, setIsRefetching] = useState(false);\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n\n const keys = options?.keys ?? [];\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n const request = (action: 'init' | 'refetch') => {\n abort();\n\n setIsFetching(true);\n if (action === 'init') {\n alreadyRequested.current = true;\n setIsLoading(true);\n }\n if (action === 'refetch') setIsRefetching(true);\n callback({ signal: abortControllerRef.current.signal, keys })\n .then((response) => {\n const data = options?.select ? options?.select(response) : response;\n options?.onSuccess?.(data as Data);\n setData(data as Data);\n setIsSuccess(true);\n setError(undefined);\n setIsError(false);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n })\n .catch((error: Error) => {\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, error)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(() => request(action), retryDelay);\n return;\n }\n\n return request(action);\n }\n options?.onError?.(error);\n setData(undefined);\n setIsSuccess(false);\n setError(error);\n setIsError(true);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n })\n .finally(() => {\n if (options?.refetchInterval) {\n const interval = setInterval(() => {\n clearInterval(interval);\n request('refetch');\n }, options?.refetchInterval);\n intervalIdRef.current = interval;\n }\n });\n };\n\n useMount(() => {\n if (!enabled) return;\n request('init');\n });\n\n useDidUpdate(() => {\n if (!enabled) return;\n request(alreadyRequested.current ? 'refetch' : 'init');\n }, [enabled, ...keys]);\n\n useEffect(() => {\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\n\n const refetch = () => request('refetch');\n\n return {\n abort,\n data,\n error,\n refetch,\n isFetching,\n isLoading,\n isError,\n isSuccess,\n isRefetching\n };\n};\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"useQuery.mjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/* The use query return type */\nexport interface UseQueryOptions<QueryData, Data> {\n /* The enabled state of the query */\n enabled?: boolean;\n /* The depends for the hook */\n keys?: DependencyList;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The refetch interval */\n refetchInterval?: number;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, error: Error) => number) | number;\n /* The callback function to be invoked on error */\n onError?: (error: Error) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (data: Data) => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\ninterface UseQueryCallbackParams {\n /* The depends for the hook */\n keys: DependencyList;\n /* The abort signal */\n signal: AbortSignal;\n}\n\n/* The use query return type */\nexport interface UseQueryReturn<Data> {\n /* The abort function */\n abort: AbortController['abort'];\n /* The state of the query */\n data?: Data;\n /* The success state of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The fetching state of the query */\n isFetching: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n /* The refetching state of the query */\n isRefetching: boolean;\n /* The success state of the query */\n isSuccess: boolean;\n /* The refetch function */\n refetch: () => void;\n}\n\n/**\n * @name useQuery\n * @description - Hook that defines the logic when query data\n * @category Async\n * @usage high\n *\n * @template Data The type of the data\n * @param {() => Promise<Data>} callback The callback function to be invoked\n * @param {DependencyList} [options.keys] The dependencies for the hook\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\n * @param {number} [options.refetchInterval] The refetch interval\n * @param {boolean | number} [options.retry] The retry count of requests\n * @returns {UseQueryReturn<Data>} An object with the state of the query\n *\n * @example\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\n */\nexport const useQuery = <QueryData, Data = QueryData>(\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\n options?: UseQueryOptions<QueryData, Data>\n): UseQueryReturn<Data> => {\n const enabled = options?.enabled ?? true;\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const alreadyRequested = useRef(false);\n\n const [isFetching, setIsFetching] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [isRefetching, setIsRefetching] = useState(false);\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n\n const keys = options?.keys ?? [];\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n const request = (action: 'init' | 'refetch') => {\n abort();\n\n setIsFetching(true);\n if (action === 'init') {\n alreadyRequested.current = true;\n setIsLoading(true);\n }\n if (action === 'refetch') setIsRefetching(true);\n callback({ signal: abortControllerRef.current.signal, keys })\n .then((response) => {\n const data = options?.select ? options?.select(response) : response;\n options?.onSuccess?.(data as Data);\n setData(data as Data);\n setIsSuccess(true);\n setError(undefined);\n setIsError(false);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n })\n .catch((error: Error) => {\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, error)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(() => request(action), retryDelay);\n return;\n }\n\n return request(action);\n }\n options?.onError?.(error);\n setData(undefined);\n setIsSuccess(false);\n setError(error);\n setIsError(true);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n })\n .finally(() => {\n if (options?.refetchInterval) {\n const interval = setInterval(() => {\n clearInterval(interval);\n request('refetch');\n }, options?.refetchInterval);\n intervalIdRef.current = interval;\n }\n });\n };\n\n useMount(() => {\n if (!enabled) return;\n request('init');\n });\n\n useDidUpdate(() => {\n if (!enabled) return;\n request(alreadyRequested.current ? 'refetch' : 'init');\n }, [enabled, ...keys]);\n\n useEffect(() => {\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\n\n const refetch = () => request('refetch');\n\n return {\n abort,\n data,\n error,\n refetch,\n isFetching,\n isLoading,\n isError,\n isSuccess,\n isRefetching\n };\n};\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":";;;;AAiFO,MAAMA,IAAW,CACtBC,GACAC,MACyB;AACzB,QAAMC,IAAUD,GAAS,WAAW,IAC9BE,IAAgBC,EAAOH,GAAS,QAAQI,EAASJ,EAAQ,KAAK,IAAI,CAAC,GACnEK,IAAmBF,EAAO,EAAK,GAE/B,CAACG,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5C,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK,GAC1C,CAACG,GAASC,CAAU,IAAIJ,EAAS,EAAK,GACtC,CAACK,GAAcC,CAAe,IAAIN,EAAS,EAAK,GAChD,CAACO,GAAWC,CAAY,IAAIR,EAAS,CAAC,CAACR,GAAS,eAAe,GAE/D,CAACiB,GAAOC,CAAQ,IAAIV,EAA4B,MAAS,GACzD,CAACW,GAAMC,CAAO,IAAIZ,EAA2BR,GAAS,eAAe,GAErEqB,IAAqBlB,EAAwB,IAAI,iBAAiB,GAClEmB,IAAgBnB,EAAuC,MAAS,GAEhEoB,IAAOvB,GAAS,QAAQ,CAAA,GAExBwB,IAAQ,MAAM;AAClB,IAAAH,EAAmB,QAAQ,MAAA,GAC3BA,EAAmB,UAAU,IAAI,gBAAA;AAAA,EAAgB,GAG7CI,IAAU,CAACC,MAA+B;AAC9C,IAAAF,EAAA,GAEAjB,EAAc,EAAI,GACdmB,MAAW,WACbrB,EAAiB,UAAU,IAC3BK,EAAa,EAAI,IAEfgB,MAAW,aAAWZ,EAAgB,EAAI,GAC9Cf,EAAS,EAAE,QAAQsB,EAAmB,QAAQ,QAAQ,MAAAE,GAAM,EACzD,KAAK,CAACI,MAAa;AAClB,YAAMR,IAAOnB,GAAS,SAASA,GAAS,OAAO2B,CAAQ,IAAIA;AAC3D,MAAA3B,GAAS,YAAYmB,CAAY,GACjCC,EAAQD,CAAY,GACpBH,EAAa,EAAI,GACjBE,EAAS,MAAS,GAClBN,EAAW,EAAK,GAChBL,EAAc,EAAK,GACfmB,MAAW,UAAQhB,EAAa,EAAK,GACrCgB,MAAW,aAAWZ,EAAgB,EAAK;AAAA,IAAA,CAChD,EACA,MAAM,CAACG,MAAiB;AACvB,UAAIf,EAAc,UAAU,GAAG;AAC7B,QAAAA,EAAc,WAAW;AACzB,cAAM0B,IACJ,OAAO5B,GAAS,cAAe,aAC3BA,GAAS,WAAWE,EAAc,SAASe,CAAK,IAChDjB,GAAS;AAEf,YAAI4B,GAAY;AACd,qBAAW,MAAMH,EAAQC,CAAM,GAAGE,CAAU;AAC5C;AAAA,QAAA;AAGF,eAAOH,EAAQC,CAAM;AAAA,MAAA;AAEvB,MAAA1B,GAAS,UAAUiB,CAAK,GACxBG,EAAQ,MAAS,GACjBJ,EAAa,EAAK,GAClBE,EAASD,CAAK,GACdL,EAAW,EAAI,GACfL,EAAc,EAAK,GACfmB,MAAW,UAAQhB,EAAa,EAAK,GACrCgB,MAAW,aAAWZ,EAAgB,EAAK,GAC/CZ,EAAc,UAAUF,GAAS,QAAQI,EAASJ,EAAQ,KAAK,IAAI;AAAA,IAAA,CACpE,EACA,QAAQ,MAAM;AACb,UAAIA,GAAS,iBAAiB;AAC5B,cAAM6B,IAAW,YAAY,MAAM;AACjC,wBAAcA,CAAQ,GACtBJ,EAAQ,SAAS;AAAA,QAAA,GAChBzB,GAAS,eAAe;AAC3B,QAAAsB,EAAc,UAAUO;AAAA,MAAA;AAAA,IAC1B,CACD;AAAA,EAAA;AAGL,SAAAC,EAAS,MAAM;AACb,IAAK7B,KACLwB,EAAQ,MAAM;AAAA,EAAA,CACf,GAEDM,EAAa,MAAM;AACjB,IAAK9B,KACLwB,EAAQpB,EAAiB,UAAU,YAAY,MAAM;AAAA,EAAA,GACpD,CAACJ,GAAS,GAAGsB,CAAI,CAAC,GAErBS,EAAU,MACD,MAAM;AACX,kBAAcV,EAAc,OAAO;AAAA,EAAA,GAEpC,CAACrB,GAASD,GAAS,iBAAiBA,GAAS,OAAO,GAAGuB,CAAI,CAAC,GAIxD;AAAA,IACL,OAAAC;AAAA,IACA,MAAAL;AAAA,IACA,OAAAF;AAAA,IACA,SANc,MAAMQ,EAAQ,SAAS;AAAA,IAOrC,YAAAnB;AAAA,IACA,WAAAG;AAAA,IACA,SAAAE;AAAA,IACA,WAAAI;AAAA,IACA,cAAAF;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQueue.mjs","sources":["../../../../src/hooks/useQueue/useQueue.ts"],"sourcesContent":["import { useState } from 'react';\nimport { flushSync } from 'react-dom';\n\n/** The use queue return type */\nexport interface UseQueueReturn<Value> {\n /** Get the first element of the queue */\n first: Value;\n /** Get the last element of the queue */\n last: Value;\n /** The current queue */\n queue: Value[];\n /** Get the size of the queue */\n size: number;\n /** Add an element to the queue */\n add: (element: Value) => void;\n /** Clear the queue */\n clear: () => void;\n /** Remove an element from the queue */\n remove: () => Value;\n}\n\n/**\n * @name useQueue\n * @description - Hook that manages a queue\n * @category State\n *\n * @template Value The type of the value\n * @param {Value[]} [initialValue=[]] The initial value of the queue\n * @returns {UseQueueReturn} An object containing the current queue and functions to interact with the queue\n *\n * @example\n * const { queue, add, remove, clear, first, last, size } = useQueue([1, 2, 3]);\n */\nexport const useQueue = <Value>(initialValue: Value[] = []): UseQueueReturn<Value> => {\n const [queue, setQueue] = useState(initialValue);\n\n const add = (element: Value) => setQueue((queue) => [...queue, element]);\n const clear = () => setQueue([]);\n const remove = () => {\n let removed;\n flushSync(() => {\n setQueue(([first, ...rest]) => {\n removed = first;\n return rest;\n });\n });\n\n return removed as Value;\n };\n\n return {\n add,\n remove,\n clear,\n first: queue[0],\n last: queue[queue.length - 1],\n size: queue.length,\n queue\n };\n};\n"],"names":["useQueue","initialValue","queue","setQueue","useState","element","removed","flushSync","first","rest"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useQueue.mjs","sources":["../../../../src/hooks/useQueue/useQueue.ts"],"sourcesContent":["import { useState } from 'react';\nimport { flushSync } from 'react-dom';\n\n/** The use queue return type */\nexport interface UseQueueReturn<Value> {\n /** Get the first element of the queue */\n first: Value;\n /** Get the last element of the queue */\n last: Value;\n /** The current queue */\n queue: Value[];\n /** Get the size of the queue */\n size: number;\n /** Add an element to the queue */\n add: (element: Value) => void;\n /** Clear the queue */\n clear: () => void;\n /** Remove an element from the queue */\n remove: () => Value;\n}\n\n/**\n * @name useQueue\n * @description - Hook that manages a queue\n * @category State\n * @usage medium\n *\n * @template Value The type of the value\n * @param {Value[]} [initialValue=[]] The initial value of the queue\n * @returns {UseQueueReturn} An object containing the current queue and functions to interact with the queue\n *\n * @example\n * const { queue, add, remove, clear, first, last, size } = useQueue([1, 2, 3]);\n */\nexport const useQueue = <Value>(initialValue: Value[] = []): UseQueueReturn<Value> => {\n const [queue, setQueue] = useState(initialValue);\n\n const add = (element: Value) => setQueue((queue) => [...queue, element]);\n const clear = () => setQueue([]);\n const remove = () => {\n let removed;\n flushSync(() => {\n setQueue(([first, ...rest]) => {\n removed = first;\n return rest;\n });\n });\n\n return removed as Value;\n };\n\n return {\n add,\n remove,\n clear,\n first: queue[0],\n last: queue[queue.length - 1],\n size: queue.length,\n queue\n };\n};\n"],"names":["useQueue","initialValue","queue","setQueue","useState","element","removed","flushSync","first","rest"],"mappings":";;AAkCO,MAAMA,IAAW,CAAQC,IAAwB,OAA8B;AACpF,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAASH,CAAY;AAgB/C,SAAO;AAAA,IACL,KAfU,CAACI,MAAmBF,EAAS,CAACD,MAAU,CAAC,GAAGA,GAAOG,CAAO,CAAC;AAAA,IAgBrE,QAda,MAAM;AACnB,UAAIC;AACJ,aAAAC,EAAU,MAAM;AACd,QAAAJ,EAAS,CAAC,CAACK,GAAU,GAAAC,CAAI,OACvBH,IAAUE,GACHC,EACR;AAAA,MAAA,CACF,GAEMH;AAAA,IAAA;AAAA,IAMP,OAhBY,MAAMH,EAAS,EAAE;AAAA,IAiB7B,OAAOD,EAAM,CAAC;AAAA,IACd,MAAMA,EAAMA,EAAM,SAAS,CAAC;AAAA,IAC5B,MAAMA,EAAM;AAAA,IACZ,OAAAA;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRaf.mjs","sources":["../../../../src/hooks/useRaf/useRaf.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/* The use raf params type */\nexport interface UseRafParams {\n /** The delta between each frame in milliseconds */\n delta: number;\n /** The timestamp of the current frame in milliseconds */\n timestamp: DOMHighResTimeStamp;\n}\n\n/* The use raf type */\nexport type UseRafCallback = (params: UseRafParams) => void;\n\n/* The use raf options type */\nexport interface UseRafOptions {\n /** The delay between each frame in milliseconds */\n delay?: number;\n /** Whether the callback should be enabled */\n enabled?: boolean;\n}\n\n/* The use raf return type */\nexport interface UseRafReturn {\n /** Whether the callback is active */\n active: boolean;\n /** Function to pause the callback */\n pause: () => void;\n /** Function to resume the callback */\n resume: () => void;\n}\n\n/**\n * @name useRaf\n * @description - Hook that defines the logic for raf callback\n * @category Browser\n *\n * @browserapi requestAnimationFrame https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n *\n * @param {UseRafCallback} callback The callback to execute\n * @param {number} [options.delay] The delay between each frame in milliseconds\n * @param {boolean} [options.enabled=true] Whether the callback should be enabled\n * @returns {UseRafCallbackReturn} An object of raf callback functions\n *\n * @example\n * useRaf(() => console.log('callback'));\n */\nexport const useRaf = (callback: UseRafCallback, options?: UseRafOptions): UseRafReturn => {\n const rafIdRef = useRef<number | null>(null);\n const previousFrameTimestampRef = useRef(0);\n const [active, setActive] = useState(false);\n const enabled = options?.enabled ?? true;\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n const loop = (timestamp: DOMHighResTimeStamp) => {\n const delta = timestamp - previousFrameTimestampRef.current;\n\n if (options?.delay && delta < options?.delay) {\n rafIdRef.current = window.requestAnimationFrame(loop);\n return;\n }\n\n previousFrameTimestampRef.current = timestamp;\n internalCallbackRef.current({ delta, timestamp });\n rafIdRef.current = window.requestAnimationFrame(loop);\n };\n\n const resume = () => {\n if (active) return;\n setActive(true);\n previousFrameTimestampRef.current = 0;\n rafIdRef.current = window.requestAnimationFrame(loop);\n };\n\n function pause() {\n if (!rafIdRef.current) return;\n\n setActive(false);\n window.cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n\n useEffect(() => {\n if (!enabled) return;\n resume();\n\n return pause;\n }, [enabled, options?.delay]);\n\n return {\n active,\n pause,\n resume\n };\n};\n"],"names":["useRaf","callback","options","rafIdRef","useRef","previousFrameTimestampRef","active","setActive","useState","enabled","internalCallbackRef","loop","timestamp","delta","resume","pause","useEffect"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useRaf.mjs","sources":["../../../../src/hooks/useRaf/useRaf.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/* The use raf params type */\nexport interface UseRafParams {\n /** The delta between each frame in milliseconds */\n delta: number;\n /** The timestamp of the current frame in milliseconds */\n timestamp: DOMHighResTimeStamp;\n}\n\n/* The use raf type */\nexport type UseRafCallback = (params: UseRafParams) => void;\n\n/* The use raf options type */\nexport interface UseRafOptions {\n /** The delay between each frame in milliseconds */\n delay?: number;\n /** Whether the callback should be enabled */\n enabled?: boolean;\n}\n\n/* The use raf return type */\nexport interface UseRafReturn {\n /** Whether the callback is active */\n active: boolean;\n /** Function to pause the callback */\n pause: () => void;\n /** Function to resume the callback */\n resume: () => void;\n}\n\n/**\n * @name useRaf\n * @description - Hook that defines the logic for raf callback\n * @category Browser\n * @usage low\n *\n * @browserapi requestAnimationFrame https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n *\n * @param {UseRafCallback} callback The callback to execute\n * @param {number} [options.delay] The delay between each frame in milliseconds\n * @param {boolean} [options.enabled=true] Whether the callback should be enabled\n * @returns {UseRafCallbackReturn} An object of raf callback functions\n *\n * @example\n * useRaf(() => console.log('callback'));\n */\nexport const useRaf = (callback: UseRafCallback, options?: UseRafOptions): UseRafReturn => {\n const rafIdRef = useRef<number | null>(null);\n const previousFrameTimestampRef = useRef(0);\n const [active, setActive] = useState(false);\n const enabled = options?.enabled ?? true;\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n const loop = (timestamp: DOMHighResTimeStamp) => {\n const delta = timestamp - previousFrameTimestampRef.current;\n\n if (options?.delay && delta < options?.delay) {\n rafIdRef.current = window.requestAnimationFrame(loop);\n return;\n }\n\n previousFrameTimestampRef.current = timestamp;\n internalCallbackRef.current({ delta, timestamp });\n rafIdRef.current = window.requestAnimationFrame(loop);\n };\n\n const resume = () => {\n if (active) return;\n setActive(true);\n previousFrameTimestampRef.current = 0;\n rafIdRef.current = window.requestAnimationFrame(loop);\n };\n\n function pause() {\n if (!rafIdRef.current) return;\n\n setActive(false);\n window.cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n\n useEffect(() => {\n if (!enabled) return;\n resume();\n\n return pause;\n }, [enabled, options?.delay]);\n\n return {\n active,\n pause,\n resume\n };\n};\n"],"names":["useRaf","callback","options","rafIdRef","useRef","previousFrameTimestampRef","active","setActive","useState","enabled","internalCallbackRef","loop","timestamp","delta","resume","pause","useEffect"],"mappings":";AA+CO,MAAMA,IAAS,CAACC,GAA0BC,MAA0C;AACzF,QAAMC,IAAWC,EAAsB,IAAI,GACrCC,IAA4BD,EAAO,CAAC,GACpC,CAACE,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAUP,GAAS,WAAW,IAE9BQ,IAAsBN,EAAOH,CAAQ;AAC3C,EAAAS,EAAoB,UAAUT;AAE9B,QAAMU,IAAO,CAACC,MAAmC;AAC/C,UAAMC,IAAQD,IAAYP,EAA0B;AAEpD,QAAIH,GAAS,SAASW,IAAQX,GAAS,OAAO;AAC5C,MAAAC,EAAS,UAAU,OAAO,sBAAsBQ,CAAI;AACpD;AAAA,IAAA;AAGF,IAAAN,EAA0B,UAAUO,GACpCF,EAAoB,QAAQ,EAAE,OAAAG,GAAO,WAAAD,EAAA,CAAW,GAChDT,EAAS,UAAU,OAAO,sBAAsBQ,CAAI;AAAA,EAAA,GAGhDG,IAAS,MAAM;AACnB,IAAIR,MACJC,EAAU,EAAI,GACdF,EAA0B,UAAU,GACpCF,EAAS,UAAU,OAAO,sBAAsBQ,CAAI;AAAA,EAAA;AAGtD,WAASI,IAAQ;AACf,IAAKZ,EAAS,YAEdI,EAAU,EAAK,GACf,OAAO,qBAAqBJ,EAAS,OAAO,GAC5CA,EAAS,UAAU;AAAA,EAAA;AAGrB,SAAAa,EAAU,MAAM;AACd,QAAKP;AACL,aAAAK,EAAA,GAEOC;AAAA,EAAA,GACN,CAACN,GAASP,GAAS,KAAK,CAAC,GAErB;AAAA,IACL,QAAAI;AAAA,IACA,OAAAS;AAAA,IACA,QAAAD;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRafState.mjs","sources":["../../../../src/hooks/useRafState/useRafState.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useUnmount } from '../useUnmount/useUnmount';\n\n/* The use raf value params type */\nexport type UseRafStateReturn<Value> = [Value, (value: Value) => void];\n\n/**\n * @name useRafState\n * @description - Hook that returns the value and a function to set the value\n * @category State\n *\n * @template Value The type of the value\n * @param {Value} initialValue The initial value\n * @returns {UseRafStateReturn<Value>} An array containing the value and a function to set the value\n *\n * @example\n * const [value, setValue] = useRafState(initialValue);\n */\nexport const useRafState = <Value>(initialValue: (() => Value) | Value) => {\n const rafIdRef = useRef(0);\n const [value, setValue] = useState(initialValue);\n\n const set = (value: Value) => {\n cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = requestAnimationFrame(() => setValue(value));\n };\n\n useUnmount(() => cancelAnimationFrame(rafIdRef.current));\n\n return [value, set] as const;\n};\n"],"names":["useRafState","initialValue","rafIdRef","useRef","value","setValue","useState","set","useUnmount"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useRafState.mjs","sources":["../../../../src/hooks/useRafState/useRafState.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useUnmount } from '../useUnmount/useUnmount';\n\n/* The use raf value params type */\nexport type UseRafStateReturn<Value> = [Value, (value: Value) => void];\n\n/**\n * @name useRafState\n * @description - Hook that returns the value and a function to set the value\n * @category State\n * @usage low\n *\n * @browserapi requestAnimationFrame https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n *\n * @template Value The type of the value\n * @param {Value} initialValue The initial value\n * @returns {UseRafStateReturn<Value>} An array containing the value and a function to set the value\n *\n * @example\n * const [value, setValue] = useRafState(initialValue);\n */\nexport const useRafState = <Value>(initialValue: (() => Value) | Value) => {\n const rafIdRef = useRef(0);\n const [value, setValue] = useState(initialValue);\n\n const set = (value: Value) => {\n cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = requestAnimationFrame(() => setValue(value));\n };\n\n useUnmount(() => cancelAnimationFrame(rafIdRef.current));\n\n return [value, set] as const;\n};\n"],"names":["useRafState","initialValue","rafIdRef","useRef","value","setValue","useState","set","useUnmount"],"mappings":";;AAsBO,MAAMA,IAAc,CAAQC,MAAwC;AACzE,QAAMC,IAAWC,EAAO,CAAC,GACnB,CAACC,GAAOC,CAAQ,IAAIC,EAASL,CAAY,GAEzCM,IAAM,CAACH,MAAiB;AAC5B,yBAAqBF,EAAS,OAAO,GACrCA,EAAS,UAAU,sBAAsB,MAAMG,EAASD,CAAK,CAAC;AAAA,EAAA;AAGhE,SAAAI,EAAW,MAAM,qBAAqBN,EAAS,OAAO,CAAC,GAEhD,CAACE,GAAOG,CAAG;AACpB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRefState.mjs","sources":["../../../../src/hooks/useRefState/useRefState.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport interface StateRef<Value> {\n (node: Value): void;\n current: Value;\n state?: Value;\n}\n\nconst createRefState = <Value>(\n initialValue: Value | undefined,\n setState: (value: Value) => void\n) => {\n let temp = initialValue;\n function ref(value: Value) {\n if (temp === value) return;\n temp = value;\n setState(temp);\n }\n\n Object.defineProperty(ref, 'current', {\n get() {\n return temp;\n },\n set(value: Value) {\n if (temp === value) return;\n temp = value;\n setState(temp);\n },\n configurable: true,\n enumerable: true\n });\n\n return ref as StateRef<Value>;\n};\n\n/**\n * @name useRefState\n * @description - Hook that returns the state reference of the value\n * @category State\n *\n * @template Value The type of the value\n * @param {Value} [initialValue] The initial value\n * @returns {StateRef<Value>} The current value\n *\n * @example\n * const internalRefState = useRefState();\n */\nexport const useRefState = <Value>(initialValue?: Value) => {\n const [state, setState] = useState<Value | undefined>(initialValue);\n const [ref] = useState(() => createRefState<Value>(initialValue, setState));\n ref.state = state;\n return ref;\n};\n"],"names":["createRefState","initialValue","setState","temp","ref","value","useRefState","state","useState"],"mappings":";AAQA,MAAMA,IAAiB,CACrBC,GACAC,MACG;AACH,MAAIC,IAAOF;AACX,WAASG,EAAIC,GAAc;AACzB,IAAIF,MAASE,MACbF,IAAOE,GACPH,EAASC,CAAI;AAAA,EAAA;AAGf,gBAAO,eAAeC,GAAK,WAAW;AAAA,IACpC,MAAM;AACJ,aAAOD;AAAA,IAAA;AAAA,IAET,IAAIE,GAAc;AAChB,MAAIF,MAASE,MACbF,IAAOE,GACPH,EAASC,CAAI;AAAA,IAAA;AAAA,IAEf,cAAc;AAAA,IACd,YAAY;AAAA,EAAA,CACb,GAEMC;AACT,
|
|
1
|
+
{"version":3,"file":"useRefState.mjs","sources":["../../../../src/hooks/useRefState/useRefState.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport interface StateRef<Value> {\n (node: Value): void;\n current: Value;\n state?: Value;\n}\n\nconst createRefState = <Value>(\n initialValue: Value | undefined,\n setState: (value: Value) => void\n) => {\n let temp = initialValue;\n function ref(value: Value) {\n if (temp === value) return;\n temp = value;\n setState(temp);\n }\n\n Object.defineProperty(ref, 'current', {\n get() {\n return temp;\n },\n set(value: Value) {\n if (temp === value) return;\n temp = value;\n setState(temp);\n },\n configurable: true,\n enumerable: true\n });\n\n return ref as StateRef<Value>;\n};\n\n/**\n * @name useRefState\n * @description - Hook that returns the state reference of the value\n * @category State\n * @usage low\n *\n * @template Value The type of the value\n * @param {Value} [initialValue] The initial value\n * @returns {StateRef<Value>} The current value\n *\n * @example\n * const internalRefState = useRefState();\n */\nexport const useRefState = <Value>(initialValue?: Value) => {\n const [state, setState] = useState<Value | undefined>(initialValue);\n const [ref] = useState(() => createRefState<Value>(initialValue, setState));\n ref.state = state;\n return ref;\n};\n"],"names":["createRefState","initialValue","setState","temp","ref","value","useRefState","state","useState"],"mappings":";AAQA,MAAMA,IAAiB,CACrBC,GACAC,MACG;AACH,MAAIC,IAAOF;AACX,WAASG,EAAIC,GAAc;AACzB,IAAIF,MAASE,MACbF,IAAOE,GACPH,EAASC,CAAI;AAAA,EAAA;AAGf,gBAAO,eAAeC,GAAK,WAAW;AAAA,IACpC,MAAM;AACJ,aAAOD;AAAA,IAAA;AAAA,IAET,IAAIE,GAAc;AAChB,MAAIF,MAASE,MACbF,IAAOE,GACPH,EAASC,CAAI;AAAA,IAAA;AAAA,IAEf,cAAc;AAAA,IACd,YAAY;AAAA,EAAA,CACb,GAEMC;AACT,GAeaE,IAAc,CAAQL,MAAyB;AAC1D,QAAM,CAACM,GAAOL,CAAQ,IAAIM,EAA4BP,CAAY,GAC5D,CAACG,CAAG,IAAII,EAAS,MAAMR,EAAsBC,GAAcC,CAAQ,CAAC;AAC1E,SAAAE,EAAI,QAAQG,GACLH;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderCount.mjs","sources":["../../../../src/hooks/useRenderCount/useRenderCount.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * @name useRenderCount\n * @description - Hook returns count component render times\n * @category Debug\n *\n * @returns {number} A number which determines how many times component renders\n *\n * @example\n * const renderCount = useRenderCount();\n */\nexport const useRenderCount = () => {\n const renderCountRef = useRef(0);\n\n useEffect(() => {\n renderCountRef.current += 1;\n });\n\n return renderCountRef.current;\n};\n"],"names":["useRenderCount","renderCountRef","useRef","useEffect"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useRenderCount.mjs","sources":["../../../../src/hooks/useRenderCount/useRenderCount.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * @name useRenderCount\n * @description - Hook returns count component render times\n * @category Debug\n * @usage low\n *\n * @returns {number} A number which determines how many times component renders\n *\n * @example\n * const renderCount = useRenderCount();\n */\nexport const useRenderCount = () => {\n const renderCountRef = useRef(0);\n\n useEffect(() => {\n renderCountRef.current += 1;\n });\n\n return renderCountRef.current;\n};\n"],"names":["useRenderCount","renderCountRef","useRef","useEffect"],"mappings":";AAaO,MAAMA,IAAiB,MAAM;AAClC,QAAMC,IAAiBC,EAAO,CAAC;AAE/B,SAAAC,EAAU,MAAM;AACd,IAAAF,EAAe,WAAW;AAAA,EAAA,CAC3B,GAEMA,EAAe;AACxB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderInfo.mjs","sources":["../../../../src/hooks/useRenderInfo/useRenderInfo.ts"],"sourcesContent":["import { useRef } from 'react';\n\n/** The use render info return type */\nexport interface UseRenderInfoReturn {\n /** The name of the component */\n component: string;\n /** The number of renders */\n renders: number;\n /** The time since the last render */\n sinceLast: number;\n /** The timestamp of the render */\n timestamp: number | null;\n}\n\n/**\n * @name useRenderInfo\n * @description - Hook for getting information about component rerender\n * @category Debug\n *\n * @param {string} [name='Unknown'] Component name\n * @param {boolean} [log=true] Toggle logging\n * @returns {UseRenderInfoReturn} An object containing rerender information\n *\n * @example\n * const rerenderInfo = useRenderInfo('Component');\n */\nexport const useRenderInfo = (name: string = 'Unknown', log: boolean = true) => {\n const renderInfoRef = useRef<UseRenderInfoReturn>({\n component: name,\n renders: 0,\n timestamp: Date.now(),\n sinceLast: 0\n });\n const now = Date.now();\n\n renderInfoRef.current.renders += 1;\n renderInfoRef.current.sinceLast = renderInfoRef.current.timestamp\n ? now - renderInfoRef.current.timestamp\n : 0;\n renderInfoRef.current.timestamp = now;\n\n if (log) {\n console.group(`${name} info, render number: ${renderInfoRef.current.renders}`);\n console.log(`Timestamp: ${renderInfoRef.current.timestamp}`);\n console.log(`Since last render: ${renderInfoRef.current.sinceLast}`);\n console.log(`Renders: ${renderInfoRef.current.renders}`);\n console.dir(renderInfoRef.current);\n console.groupEnd();\n }\n\n return renderInfoRef.current;\n};\n"],"names":["useRenderInfo","name","log","renderInfoRef","useRef","now"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useRenderInfo.mjs","sources":["../../../../src/hooks/useRenderInfo/useRenderInfo.ts"],"sourcesContent":["import { useRef } from 'react';\n\n/** The use render info return type */\nexport interface UseRenderInfoReturn {\n /** The name of the component */\n component: string;\n /** The number of renders */\n renders: number;\n /** The time since the last render */\n sinceLast: number;\n /** The timestamp of the render */\n timestamp: number | null;\n}\n\n/**\n * @name useRenderInfo\n * @description - Hook for getting information about component rerender\n * @category Debug\n * @usage low\n *\n * @param {string} [name='Unknown'] Component name\n * @param {boolean} [log=true] Toggle logging\n * @returns {UseRenderInfoReturn} An object containing rerender information\n *\n * @example\n * const rerenderInfo = useRenderInfo('Component');\n */\nexport const useRenderInfo = (name: string = 'Unknown', log: boolean = true) => {\n const renderInfoRef = useRef<UseRenderInfoReturn>({\n component: name,\n renders: 0,\n timestamp: Date.now(),\n sinceLast: 0\n });\n const now = Date.now();\n\n renderInfoRef.current.renders += 1;\n renderInfoRef.current.sinceLast = renderInfoRef.current.timestamp\n ? now - renderInfoRef.current.timestamp\n : 0;\n renderInfoRef.current.timestamp = now;\n\n if (log) {\n console.group(`${name} info, render number: ${renderInfoRef.current.renders}`);\n console.log(`Timestamp: ${renderInfoRef.current.timestamp}`);\n console.log(`Since last render: ${renderInfoRef.current.sinceLast}`);\n console.log(`Renders: ${renderInfoRef.current.renders}`);\n console.dir(renderInfoRef.current);\n console.groupEnd();\n }\n\n return renderInfoRef.current;\n};\n"],"names":["useRenderInfo","name","log","renderInfoRef","useRef","now"],"mappings":";AA2BO,MAAMA,IAAgB,CAACC,IAAe,WAAWC,IAAe,OAAS;AAC9E,QAAMC,IAAgBC,EAA4B;AAAA,IAChD,WAAWH;AAAA,IACX,SAAS;AAAA,IACT,WAAW,KAAK,IAAA;AAAA,IAChB,WAAW;AAAA,EAAA,CACZ,GACKI,IAAM,KAAK,IAAA;AAEjB,SAAAF,EAAc,QAAQ,WAAW,GACjCA,EAAc,QAAQ,YAAYA,EAAc,QAAQ,YACpDE,IAAMF,EAAc,QAAQ,YAC5B,GACJA,EAAc,QAAQ,YAAYE,GAE9BH,MACF,QAAQ,MAAM,GAAGD,CAAI,yBAAyBE,EAAc,QAAQ,OAAO,EAAE,GAC7E,QAAQ,IAAI,cAAcA,EAAc,QAAQ,SAAS,EAAE,GAC3D,QAAQ,IAAI,sBAAsBA,EAAc,QAAQ,SAAS,EAAE,GACnE,QAAQ,IAAI,YAAYA,EAAc,QAAQ,OAAO,EAAE,GACvD,QAAQ,IAAIA,EAAc,OAAO,GACjC,QAAQ,SAAA,IAGHA,EAAc;AACvB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRerender.mjs","sources":["../../../../src/hooks/useRerender/useRerender.ts"],"sourcesContent":["import { useReducer } from 'react';\n\n/** The use rerender return type */\ntype UseRerenderReturn = () => void;\n\n/**\n * @name useRerender\n * @description - Hook that defines the logic to force rerender a component\n * @category Debug\n *\n * @returns {UseRerenderReturn} The rerender function\n *\n * @example\n * const rerender = useRerender();\n */\nexport const useRerender = (): UseRerenderReturn => useReducer(() => ({}), {})[1];\n"],"names":["useRerender","useReducer"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useRerender.mjs","sources":["../../../../src/hooks/useRerender/useRerender.ts"],"sourcesContent":["import { useReducer } from 'react';\n\n/** The use rerender return type */\ntype UseRerenderReturn = () => void;\n\n/**\n * @name useRerender\n * @description - Hook that defines the logic to force rerender a component\n * @category Debug\n * @usage medium\n *\n * @returns {UseRerenderReturn} The rerender function\n *\n * @example\n * const rerender = useRerender();\n */\nexport const useRerender = (): UseRerenderReturn => useReducer(() => ({}), {})[1];\n"],"names":["useRerender","useReducer"],"mappings":";AAgBO,MAAMA,IAAc,MAAyBC,EAAW,OAAO,CAAA,IAAK,CAAA,CAAE,EAAE,CAAC;"}
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
import { useRefState as
|
|
3
|
-
import { isTarget as
|
|
4
|
-
import { getElement as
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
return
|
|
8
|
-
if (!
|
|
9
|
-
const
|
|
10
|
-
if (!
|
|
11
|
-
const o = new ResizeObserver((
|
|
12
|
-
|
|
1
|
+
import { useState as v, useRef as C, useEffect as a } from "react";
|
|
2
|
+
import { useRefState as h } from "../useRefState/useRefState.mjs";
|
|
3
|
+
import { isTarget as m } from "../../utils/helpers/isTarget.mjs";
|
|
4
|
+
import { getElement as y } from "../../utils/helpers/getElement.mjs";
|
|
5
|
+
const x = (...e) => {
|
|
6
|
+
const t = m(e[0]) ? e[0] : void 0, n = t ? typeof e[1] == "object" ? e[1] : { onChange: e[1] } : typeof e[0] == "object" ? e[0] : { onChange: e[0] }, s = n?.onChange, c = n?.enabled ?? !0, [f, g] = v(), [i, R] = v(), r = h(), u = C(s);
|
|
7
|
+
return u.current = s, a(() => {
|
|
8
|
+
if (!c || !t && !r.state) return;
|
|
9
|
+
const b = t ? y(t) : r.current;
|
|
10
|
+
if (!b) return;
|
|
11
|
+
const o = new ResizeObserver(([l], d) => {
|
|
12
|
+
g(l), u.current?.(l, d);
|
|
13
13
|
});
|
|
14
|
-
return o.observe(
|
|
14
|
+
return R(o), o.observe(b, n), () => {
|
|
15
15
|
o.disconnect();
|
|
16
16
|
};
|
|
17
|
-
}, [
|
|
17
|
+
}, [t, r.state, n?.box, c]), t ? { entry: f, observer: i } : {
|
|
18
18
|
ref: r,
|
|
19
|
-
|
|
19
|
+
entry: f,
|
|
20
|
+
observer: i
|
|
20
21
|
};
|
|
21
22
|
};
|
|
22
23
|
export {
|
|
23
|
-
|
|
24
|
+
x as useResizeObserver
|
|
24
25
|
};
|
|
25
26
|
//# sourceMappingURL=useResizeObserver.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizeObserver.mjs","sources":["../../../../src/hooks/useResizeObserver/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The resize observer options type */\nexport interface UseResizeObserverOptions extends ResizeObserverOptions {\n /** The enabled state */\n enabled?: boolean;\n /** The resize
|
|
1
|
+
{"version":3,"file":"useResizeObserver.mjs","sources":["../../../../src/hooks/useResizeObserver/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The resize observer callback type */\nexport type UseResizeObserverCallback = (\n entry: ResizeObserverEntry,\n observer: ResizeObserver\n) => void;\n\n/** The resize observer options type */\nexport interface UseResizeObserverOptions extends ResizeObserverOptions {\n /** The enabled state of the resize observer */\n enabled?: boolean;\n /** The callback to execute when resize is detected */\n onChange?: UseResizeObserverCallback;\n}\n\n/** The resize observer return type */\nexport interface UseResizeObserverReturn {\n /** The resize observer entries */\n entry: ResizeObserverEntry;\n /** The resize observer instance */\n observer?: ResizeObserver;\n}\n\nexport interface UseResizeObserver {\n <Target extends Element>(\n options?: UseResizeObserverOptions,\n target?: never\n ): UseResizeObserverReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseResizeObserverOptions): UseResizeObserverReturn;\n\n <Target extends Element>(\n callback: UseResizeObserverCallback,\n target?: never\n ): UseResizeObserverReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, callback: UseResizeObserverCallback): UseResizeObserverReturn;\n}\n\n/**\n * @name useResizeObserver\n * @description - Hook that gives you resize observer state\n * @category Sensors\n * @usage low\n *\n * @browserapi ResizeObserver https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n *\n * @overload\n * @param {HookTarget} target The target element to observe\n * @param {boolean} [options.enabled=true] The enabled state of the resize observer\n * @param {ResizeObserverBoxOptions} [options.box] The box model to observe\n * @param {UseResizeObserverCallback} [options.onChange] The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn} An object containing the resize observer state\n *\n * @example\n * const { entries, observer } = useResizeObserver(ref);\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The enabled state of the resize observer\n * @param {ResizeObserverBoxOptions} [options.box] The box model to observe\n * @param {UseResizeObserverCallback} [options.onChange] The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { ref, entry, observer } = useResizeObserver();\n *\n * @overload\n * @template Target The target element\n * @param {UseResizeObserverCallback} callback The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { ref, entry, observer } = useResizeObserver((entry) => console.log(entry));\n *\n * @overload\n * @param {HookTarget} target The target element to observe\n * @param {UseResizeObserverCallback} callback The callback to execute when resize is detected\n * @returns {UseResizeObserverReturn} An object containing the resize observer state\n *\n * @example\n * const { entry, observer } = useResizeObserver(ref, (entry) => console.log(entry));\n */\nexport const useResizeObserver = ((...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 UseResizeObserverOptions | undefined;\n\n const callback = options?.onChange;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<ResizeObserverEntry>();\n const [observer, setObserver] = useState<ResizeObserver>();\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 ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new ResizeObserver(([entry], observer) => {\n setEntry(entry);\n internalCallbackRef.current?.(entry, observer);\n });\n\n setObserver(observer);\n observer.observe(element as Element, options);\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state, options?.box, enabled]);\n\n if (target) return { entry, observer };\n return {\n ref: internalRef,\n entry,\n observer\n };\n}) as UseResizeObserver;\n"],"names":["useResizeObserver","params","target","isTarget","options","callback","enabled","entry","setEntry","useState","observer","setObserver","internalRef","useRefState","internalCallbackRef","useRef","useEffect","element","getElement"],"mappings":";;;;AA4FO,MAAMA,IAAqB,IAAIC,MAAkB;AACtD,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,GAAOC,CAAQ,IAAIC,EAAA,GACpB,CAACC,GAAUC,CAAW,IAAIF,EAAA,GAE1BG,IAAcC,EAAA,GACdC,IAAsBC,EAAOV,CAAQ;AAsB3C,SArBAS,EAAoB,UAAUT,GAE9BW,EAAU,MAAM;AACd,QAAI,CAACV,KAAY,CAACJ,KAAU,CAACU,EAAY,MAAQ;AAEjD,UAAMK,IAAUf,IAASgB,EAAWhB,CAAM,IAAIU,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAMP,IAAW,IAAI,eAAe,CAAC,CAACH,CAAK,GAAGG,MAAa;AACzD,MAAAF,EAASD,CAAK,GACdO,EAAoB,UAAUP,GAAOG,CAAQ;AAAA,IAAA,CAC9C;AAED,WAAAC,EAAYD,CAAQ,GACpBA,EAAS,QAAQO,GAAoBb,CAAO,GAErC,MAAM;AACXM,MAAAA,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,CAACR,GAAQU,EAAY,OAAOR,GAAS,KAAKE,CAAO,CAAC,GAEjDJ,IAAe,EAAE,OAAAK,GAAO,UAAAG,EAAA,IACrB;AAAA,IACL,KAAKE;AAAA,IACL,OAAAL;AAAA,IACA,UAAAG;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRightClick.mjs","sources":["../../../../src/hooks/useRightClick/useRightClick.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 RightClickEvent = MouseEvent | TouchEvent;\nexport interface RightClickPositions {\n x: number;\n y: number;\n}\n\nexport interface UseRightClickOptions {\n // * The callback function to be invoked on right click end\n onEnd?: (event: RightClickEvent) => void;\n // * The callback function to be invoked on right click start\n onStart?: (event: RightClickEvent) => void;\n}\n\nexport interface UseRightClick {\n (target: HookTarget, callback: (event: Event) => void, options?: UseRightClickOptions): void;\n\n <Target extends Element>(\n callback: (positions: RightClickPositions, event: Event) => void,\n options?: UseRightClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\n/**\n * @name useRightClick\n * @description - Hook that handles right-click events and long press on mobile devices\n * @category Elements\n *\n * @overload\n * @param {HookTarget} target The target element for right-click handling\n * @param {(event: RightClickEvents) => void} callback The callback function to be invoked on right click\n * @returns {void}\n *\n * @example\n * useRightClick(ref, () => console.log('clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: RightClickEvents) => void} callback The callback function to be invoked on right click\n * @returns {StateRef<Target>} Ref to attach to the element\n *\n * @example\n * const ref = useRightClick(() => console.log('clicked'));\n */\nexport const useRightClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (\n positions: RightClickPositions,\n event: RightClickEvent\n ) => void;\n const options = (target ? params[2] : params[1]) as UseRightClickOptions;\n\n const internalRef = useRefState<Element>();\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 onContextMenu = (event: RightClickEvent) => {\n event.preventDefault();\n internalOptionsRef.current?.onStart?.(event);\n const mouseEvent = event as MouseEvent;\n internalCallbackRef.current({ x: mouseEvent.clientX, y: mouseEvent.clientY }, event);\n };\n\n const onTouchStart = (event: RightClickEvent) => {\n event.preventDefault();\n internalOptionsRef.current?.onStart?.(event);\n const touchEvent = event as TouchEvent;\n internalCallbackRef.current(\n { x: touchEvent.touches[0].clientX, y: touchEvent.touches[0].clientY },\n event\n );\n };\n\n const onTouchEnd = (event: RightClickEvent) => {\n event.preventDefault();\n internalOptionsRef.current?.onEnd?.(event);\n };\n\n element.addEventListener('contextmenu', onContextMenu as EventListener);\n\n element.addEventListener('touchstart', onTouchStart as EventListener);\n element.addEventListener('touchend', onTouchEnd as EventListener);\n\n return () => {\n element.removeEventListener('contextmenu', onContextMenu as EventListener);\n\n element.removeEventListener('touchstart', onTouchStart as EventListener);\n element.removeEventListener('touchend', onTouchEnd as EventListener);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseRightClick;\n"],"names":["useRightClick","params","target","isTarget","callback","options","internalRef","useRefState","internalCallbackRef","useRef","internalOptionsRef","useEffect","element","getElement","onContextMenu","event","mouseEvent","onTouchStart","touchEvent","onTouchEnd"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"useRightClick.mjs","sources":["../../../../src/hooks/useRightClick/useRightClick.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 RightClickEvent = MouseEvent | TouchEvent;\nexport interface RightClickPositions {\n x: number;\n y: number;\n}\n\nexport interface UseRightClickOptions {\n // * The callback function to be invoked on right click end\n onEnd?: (event: RightClickEvent) => void;\n // * The callback function to be invoked on right click start\n onStart?: (event: RightClickEvent) => void;\n}\n\nexport interface UseRightClick {\n (target: HookTarget, callback: (event: Event) => void, options?: UseRightClickOptions): void;\n\n <Target extends Element>(\n callback: (positions: RightClickPositions, event: Event) => void,\n options?: UseRightClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\n/**\n * @name useRightClick\n * @description - Hook that handles right-click events and long press on mobile devices\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target element for right-click handling\n * @param {(event: RightClickEvents) => void} callback The callback function to be invoked on right click\n * @returns {void}\n *\n * @example\n * useRightClick(ref, () => console.log('clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: RightClickEvents) => void} callback The callback function to be invoked on right click\n * @returns {StateRef<Target>} Ref to attach to the element\n *\n * @example\n * const ref = useRightClick(() => console.log('clicked'));\n */\nexport const useRightClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (\n positions: RightClickPositions,\n event: RightClickEvent\n ) => void;\n const options = (target ? params[2] : params[1]) as UseRightClickOptions;\n\n const internalRef = useRefState<Element>();\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 onContextMenu = (event: RightClickEvent) => {\n event.preventDefault();\n internalOptionsRef.current?.onStart?.(event);\n const mouseEvent = event as MouseEvent;\n internalCallbackRef.current({ x: mouseEvent.clientX, y: mouseEvent.clientY }, event);\n };\n\n const onTouchStart = (event: RightClickEvent) => {\n event.preventDefault();\n internalOptionsRef.current?.onStart?.(event);\n const touchEvent = event as TouchEvent;\n internalCallbackRef.current(\n { x: touchEvent.touches[0].clientX, y: touchEvent.touches[0].clientY },\n event\n );\n };\n\n const onTouchEnd = (event: RightClickEvent) => {\n event.preventDefault();\n internalOptionsRef.current?.onEnd?.(event);\n };\n\n element.addEventListener('contextmenu', onContextMenu as EventListener);\n\n element.addEventListener('touchstart', onTouchStart as EventListener);\n element.addEventListener('touchend', onTouchEnd as EventListener);\n\n return () => {\n element.removeEventListener('contextmenu', onContextMenu as EventListener);\n\n element.removeEventListener('touchstart', onTouchStart as EventListener);\n element.removeEventListener('touchend', onTouchEnd as EventListener);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseRightClick;\n"],"names":["useRightClick","params","target","isTarget","callback","options","internalRef","useRefState","internalCallbackRef","useRef","internalOptionsRef","useEffect","element","getElement","onContextMenu","event","mouseEvent","onTouchStart","touchEvent","onTouchEnd"],"mappings":";;;;AAuDO,MAAMA,IAAiB,IAAIC,MAAuB;AACvD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAIzCI,IAAWH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCK,IAAcC,EAAA,GACdC,IAAsBC,EAAOL,CAAQ;AAC3C,EAAAI,EAAoB,UAAUJ;AAC9B,QAAMM,IAAqBD,EAAOJ,CAAO;AA4CzC,MA3CAK,EAAmB,UAAUL,GAE7BM,EAAU,MAAM;AACd,QAAI,CAACT,KAAU,CAACI,EAAY,MAAO;AAEnC,UAAMM,IAAUV,IAASW,EAAWX,CAAM,IAAII,EAAY;AAC1D,QAAI,CAACM,EAAS;AAEd,UAAME,IAAgB,CAACC,MAA2B;AAChD,MAAAA,EAAM,eAAA,GACNL,EAAmB,SAAS,UAAUK,CAAK;AAC3C,YAAMC,IAAaD;AACnB,MAAAP,EAAoB,QAAQ,EAAE,GAAGQ,EAAW,SAAS,GAAGA,EAAW,QAAA,GAAWD,CAAK;AAAA,IAAA,GAG/EE,IAAe,CAACF,MAA2B;AAC/C,MAAAA,EAAM,eAAA,GACNL,EAAmB,SAAS,UAAUK,CAAK;AAC3C,YAAMG,IAAaH;AACnB,MAAAP,EAAoB;AAAA,QAClB,EAAE,GAAGU,EAAW,QAAQ,CAAC,EAAE,SAAS,GAAGA,EAAW,QAAQ,CAAC,EAAE,QAAA;AAAA,QAC7DH;AAAA,MAAA;AAAA,IACF,GAGII,IAAa,CAACJ,MAA2B;AAC7C,MAAAA,EAAM,eAAA,GACNL,EAAmB,SAAS,QAAQK,CAAK;AAAA,IAAA;AAG3C,WAAAH,EAAQ,iBAAiB,eAAeE,CAA8B,GAEtEF,EAAQ,iBAAiB,cAAcK,CAA6B,GACpEL,EAAQ,iBAAiB,YAAYO,CAA2B,GAEzD,MAAM;AACX,MAAAP,EAAQ,oBAAoB,eAAeE,CAA8B,GAEzEF,EAAQ,oBAAoB,cAAcK,CAA6B,GACvEL,EAAQ,oBAAoB,YAAYO,CAA2B;AAAA,IAAA;AAAA,EACrE,GACC,CAACjB,GAAQI,EAAY,KAAK,CAAC,GAE1B,CAAAJ;AACJ,WAAOI;AACT;"}
|