@siberiacancode/reactuse 0.3.14 → 0.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -0
- package/dist/cjs/helpers/createContext/createContext.cjs +2 -2
- package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
- package/dist/cjs/helpers/createContextHook/createContextHook.cjs +2 -2
- package/dist/cjs/helpers/createContextHook/createContextHook.cjs.map +1 -1
- package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs +2 -2
- package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs.map +1 -1
- package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs +2 -2
- package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -1
- package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs +2 -2
- package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs.map +1 -1
- package/dist/cjs/helpers/createStore/createStore.cjs +2 -2
- package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
- package/dist/cjs/helpers/makeDestructurable/makeDestructurable.cjs +2 -0
- package/dist/cjs/helpers/makeDestructurable/makeDestructurable.cjs.map +1 -0
- package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs +2 -2
- package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
- package/dist/cjs/hooks/useAsync/useAsync.cjs +2 -2
- package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
- package/dist/cjs/hooks/useAsyncEffect/useAsyncEffect.cjs +2 -2
- package/dist/cjs/hooks/useAsyncEffect/useAsyncEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useAudio/useAudio.cjs +2 -2
- package/dist/cjs/hooks/useAudio/useAudio.cjs.map +1 -1
- package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs +2 -2
- package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs +2 -2
- package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useBattery/useBattery.cjs +2 -2
- package/dist/cjs/hooks/useBattery/useBattery.cjs.map +1 -1
- package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +2 -2
- package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs.map +1 -1
- package/dist/cjs/hooks/useBoolean/useBoolean.cjs +2 -2
- package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
- package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs +2 -2
- package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
- package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs +2 -2
- package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs.map +1 -1
- package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs +2 -2
- package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs +2 -2
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useClipboard/useClipboard.cjs +2 -2
- package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
- package/dist/cjs/hooks/useConst/useConst.cjs +2 -2
- package/dist/cjs/hooks/useConst/useConst.cjs.map +1 -1
- package/dist/cjs/hooks/useControllableState/useControllableState.cjs +2 -2
- package/dist/cjs/hooks/useControllableState/useControllableState.cjs.map +1 -1
- package/dist/cjs/hooks/useCookie/useCookie.cjs +2 -2
- package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
- package/dist/cjs/hooks/useCookies/useCookies.cjs +2 -2
- package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
- package/dist/cjs/hooks/useCopy/useCopy.cjs +2 -2
- package/dist/cjs/hooks/useCopy/useCopy.cjs.map +1 -1
- package/dist/cjs/hooks/useCounter/useCounter.cjs +2 -2
- package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
- package/dist/cjs/hooks/useCssVar/useCssVar.cjs +2 -2
- package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
- package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs +2 -2
- package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useDebounceEffect/useDebounceEffect.cjs +2 -2
- package/dist/cjs/hooks/useDebounceEffect/useDebounceEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs +2 -2
- package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs.map +1 -1
- package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs +2 -2
- package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs.map +1 -1
- package/dist/cjs/hooks/useDefault/useDefault.cjs +2 -2
- package/dist/cjs/hooks/useDefault/useDefault.cjs.map +1 -1
- package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs +2 -2
- package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs.map +1 -1
- package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs +2 -2
- package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs.map +1 -1
- package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs +2 -2
- package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs.map +1 -1
- package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs +2 -2
- package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs.map +1 -1
- package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs +2 -2
- package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs.map +1 -1
- package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs +2 -2
- package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs +2 -2
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs +2 -2
- package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs +2 -2
- package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs.map +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +2 -2
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
- package/dist/cjs/hooks/useDropZone/useDropZone.cjs +2 -2
- package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -1
- package/dist/cjs/hooks/useEvent/useEvent.cjs +2 -2
- package/dist/cjs/hooks/useEvent/useEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs +2 -2
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs.map +1 -1
- package/dist/cjs/hooks/useEventSource/useEventSource.cjs +2 -2
- package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -1
- package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs +2 -2
- package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs.map +1 -1
- package/dist/cjs/hooks/useFavicon/useFavicon.cjs +2 -2
- package/dist/cjs/hooks/useFavicon/useFavicon.cjs.map +1 -1
- package/dist/cjs/hooks/useField/useField.cjs +2 -2
- package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
- package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs +2 -2
- package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs.map +1 -1
- package/dist/cjs/hooks/useFileSystemAccess/useFileSystemAccess.cjs +2 -0
- package/dist/cjs/hooks/useFileSystemAccess/useFileSystemAccess.cjs.map +1 -0
- package/dist/cjs/hooks/useFocus/useFocus.cjs +2 -2
- package/dist/cjs/hooks/useFocus/useFocus.cjs.map +1 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs +2 -2
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs.map +1 -1
- package/dist/cjs/hooks/useFps/useFps.cjs +2 -2
- package/dist/cjs/hooks/useFps/useFps.cjs.map +1 -1
- package/dist/cjs/hooks/useFul/useFul.cjs +2 -2
- package/dist/cjs/hooks/useFul/useFul.cjs.map +1 -1
- package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs +2 -2
- package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs.map +1 -1
- package/dist/cjs/hooks/useGamepad/useGamepad.cjs +2 -2
- package/dist/cjs/hooks/useGamepad/useGamepad.cjs.map +1 -1
- package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs +2 -2
- package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs.map +1 -1
- package/dist/cjs/hooks/useHash/useHash.cjs +2 -2
- package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
- package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs +2 -2
- package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs.map +1 -1
- package/dist/cjs/hooks/useHover/useHover.cjs +2 -2
- package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
- package/dist/cjs/hooks/useIdle/useIdle.cjs +2 -2
- package/dist/cjs/hooks/useIdle/useIdle.cjs.map +1 -1
- package/dist/cjs/hooks/useImage/useImage.cjs +2 -2
- package/dist/cjs/hooks/useImage/useImage.cjs.map +1 -1
- package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +2 -2
- package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +2 -2
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useInterval/useInterval.cjs +2 -2
- package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
- package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs +2 -2
- package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs.map +1 -1
- package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +2 -2
- package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +2 -2
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs +2 -2
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs +2 -2
- package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs.map +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +2 -2
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
- package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs +2 -2
- package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs.map +1 -1
- package/dist/cjs/hooks/useLatest/useLatest.cjs +2 -2
- package/dist/cjs/hooks/useLatest/useLatest.cjs.map +1 -1
- package/dist/cjs/hooks/useLess/useLess.cjs +2 -2
- package/dist/cjs/hooks/useLess/useLess.cjs.map +1 -1
- package/dist/cjs/hooks/useList/useList.cjs +2 -2
- package/dist/cjs/hooks/useList/useList.cjs.map +1 -1
- package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs +2 -2
- package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
- package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs +2 -2
- package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs +2 -2
- package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useLogger/useLogger.cjs +2 -2
- package/dist/cjs/hooks/useLogger/useLogger.cjs.map +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs +2 -2
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
- package/dist/cjs/hooks/useMap/useMap.cjs +2 -2
- package/dist/cjs/hooks/useMap/useMap.cjs.map +1 -1
- package/dist/cjs/hooks/useMeasure/useMeasure.cjs +2 -2
- package/dist/cjs/hooks/useMeasure/useMeasure.cjs.map +1 -1
- package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs +2 -2
- package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs.map +1 -1
- package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs +2 -2
- package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs.map +1 -1
- package/dist/cjs/hooks/useMemory/useMemory.cjs +2 -2
- package/dist/cjs/hooks/useMemory/useMemory.cjs.map +1 -1
- package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs +2 -2
- package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs.map +1 -1
- package/dist/cjs/hooks/useMount/useMount.cjs +2 -2
- package/dist/cjs/hooks/useMount/useMount.cjs.map +1 -1
- package/dist/cjs/hooks/useMouse/useMouse.cjs +2 -2
- package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
- package/dist/cjs/hooks/useMutation/useMutation.cjs +2 -2
- package/dist/cjs/hooks/useMutation/useMutation.cjs.map +1 -1
- package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs +2 -2
- package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useNetwork/useNetwork.cjs +2 -2
- package/dist/cjs/hooks/useNetwork/useNetwork.cjs.map +1 -1
- package/dist/cjs/hooks/useObjectUrl/useObjectUrl.cjs +2 -0
- package/dist/cjs/hooks/useObjectUrl/useObjectUrl.cjs.map +1 -0
- package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs +2 -2
- package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
- package/dist/cjs/hooks/useOnce/useOnce.cjs +2 -2
- package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
- package/dist/cjs/hooks/useOnline/useOnline.cjs +2 -2
- package/dist/cjs/hooks/useOnline/useOnline.cjs.map +1 -1
- package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs +2 -2
- package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs.map +1 -1
- package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs +2 -2
- package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
- package/dist/cjs/hooks/useOrientation/useOrientation.cjs +2 -2
- package/dist/cjs/hooks/useOrientation/useOrientation.cjs.map +1 -1
- package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs +2 -2
- package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs.map +1 -1
- package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs +2 -2
- package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs.map +1 -1
- package/dist/cjs/hooks/usePaint/usePaint.cjs +2 -2
- package/dist/cjs/hooks/usePaint/usePaint.cjs.map +1 -1
- package/dist/cjs/hooks/useParallax/useParallax.cjs +2 -2
- package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
- package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +2 -2
- package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
- package/dist/cjs/hooks/usePermission/usePermission.cjs +2 -2
- package/dist/cjs/hooks/usePermission/usePermission.cjs.map +1 -1
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs +2 -2
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs.map +1 -1
- package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs +2 -2
- package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs.map +1 -1
- package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs +2 -2
- package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs +2 -2
- package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs +2 -2
- package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs +2 -2
- package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs +2 -2
- package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs.map +1 -1
- package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs +2 -2
- package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs.map +1 -1
- package/dist/cjs/hooks/usePrevious/usePrevious.cjs +2 -2
- package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
- package/dist/cjs/hooks/useProgress/useProgress.cjs +2 -2
- package/dist/cjs/hooks/useProgress/useProgress.cjs.map +1 -1
- package/dist/cjs/hooks/useQuery/useQuery.cjs +2 -2
- package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
- package/dist/cjs/hooks/useQueue/useQueue.cjs +2 -2
- package/dist/cjs/hooks/useQueue/useQueue.cjs.map +1 -1
- package/dist/cjs/hooks/useRaf/useRaf.cjs +2 -2
- package/dist/cjs/hooks/useRaf/useRaf.cjs.map +1 -1
- package/dist/cjs/hooks/useRafState/useRafState.cjs +2 -2
- package/dist/cjs/hooks/useRafState/useRafState.cjs.map +1 -1
- package/dist/cjs/hooks/useRefState/useRefState.cjs +2 -2
- package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
- package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs +2 -2
- package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs.map +1 -1
- package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs +2 -2
- package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs.map +1 -1
- package/dist/cjs/hooks/useRerender/useRerender.cjs +2 -2
- package/dist/cjs/hooks/useRerender/useRerender.cjs.map +1 -1
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +2 -2
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useRightClick/useRightClick.cjs +2 -2
- package/dist/cjs/hooks/useRightClick/useRightClick.cjs.map +1 -1
- package/dist/cjs/hooks/useScript/useScript.cjs +2 -2
- package/dist/cjs/hooks/useScript/useScript.cjs.map +1 -1
- package/dist/cjs/hooks/useScroll/useScroll.cjs +2 -2
- package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs +2 -2
- package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
- package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs +2 -2
- package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs.map +1 -1
- package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs +2 -2
- package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs.map +1 -1
- package/dist/cjs/hooks/useSet/useSet.cjs +2 -2
- package/dist/cjs/hooks/useSet/useSet.cjs.map +1 -1
- package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs +2 -2
- package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useShare/useShare.cjs +2 -2
- package/dist/cjs/hooks/useShare/useShare.cjs.map +1 -1
- package/dist/cjs/hooks/useSize/useSize.cjs +2 -2
- package/dist/cjs/hooks/useSize/useSize.cjs.map +1 -1
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +2 -2
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -1
- package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs +2 -2
- package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs.map +1 -1
- package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs +2 -2
- package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs.map +1 -1
- package/dist/cjs/hooks/useStep/useStep.cjs +2 -2
- package/dist/cjs/hooks/useStep/useStep.cjs.map +1 -1
- package/dist/cjs/hooks/useSticky/useSticky.cjs +2 -2
- package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
- package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs +2 -2
- package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs.map +1 -1
- package/dist/cjs/hooks/useStorage/useStorage.cjs +2 -2
- package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
- package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +2 -2
- package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
- package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs +2 -2
- package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs.map +1 -1
- package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs +2 -2
- package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs.map +1 -1
- package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs +2 -2
- package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs.map +1 -1
- package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs +2 -2
- package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs.map +1 -1
- package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs +2 -2
- package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs.map +1 -1
- package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs +2 -2
- package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs.map +1 -1
- package/dist/cjs/hooks/useTime/useTime.cjs +2 -2
- package/dist/cjs/hooks/useTime/useTime.cjs.map +1 -1
- package/dist/cjs/hooks/useTimeout/useTimeout.cjs +2 -2
- package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
- package/dist/cjs/hooks/useTimer/useTimer.cjs +2 -2
- package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
- package/dist/cjs/hooks/useToggle/useToggle.cjs +2 -2
- package/dist/cjs/hooks/useToggle/useToggle.cjs.map +1 -1
- package/dist/cjs/hooks/useUnmount/useUnmount.cjs +2 -2
- package/dist/cjs/hooks/useUnmount/useUnmount.cjs.map +1 -1
- package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs +2 -2
- package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
- package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs +2 -2
- package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
- package/dist/cjs/hooks/useVibrate/useVibrate.cjs +2 -2
- package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
- package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs +2 -2
- package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs.map +1 -1
- package/dist/cjs/hooks/useVisibility/useVisibility.cjs +2 -2
- package/dist/cjs/hooks/useVisibility/useVisibility.cjs.map +1 -1
- package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +2 -2
- package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
- package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +2 -2
- package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs +2 -2
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs +2 -2
- package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs +2 -2
- package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs +2 -2
- package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs.map +1 -1
- package/dist/cjs/hooks/useWizard/useWizard.cjs +2 -2
- package/dist/cjs/hooks/useWizard/useWizard.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -2
- package/dist/cjs/utils/helpers/copy.cjs +2 -2
- package/dist/cjs/utils/helpers/copy.cjs.map +1 -1
- package/dist/cjs/utils/helpers/debounce.cjs +2 -2
- package/dist/cjs/utils/helpers/debounce.cjs.map +1 -1
- package/dist/cjs/utils/helpers/getDate.cjs +2 -2
- package/dist/cjs/utils/helpers/getDate.cjs.map +1 -1
- package/dist/cjs/utils/helpers/getRetry.cjs +2 -2
- package/dist/cjs/utils/helpers/getRetry.cjs.map +1 -1
- package/dist/cjs/utils/helpers/isTarget.cjs +2 -2
- package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
- package/dist/cjs/utils/helpers/throttle.cjs +2 -2
- package/dist/cjs/utils/helpers/throttle.cjs.map +1 -1
- package/dist/esm/helpers/createContext/createContext.mjs +32 -33
- package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
- package/dist/esm/helpers/createContextHook/createContextHook.mjs +19 -12
- package/dist/esm/helpers/createContextHook/createContextHook.mjs.map +1 -1
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs +34 -33
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs.map +1 -1
- package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs +53 -53
- package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -1
- package/dist/esm/helpers/createSharedHook/createSharedHook.mjs +36 -41
- package/dist/esm/helpers/createSharedHook/createSharedHook.mjs.map +1 -1
- package/dist/esm/helpers/createStore/createStore.mjs +25 -29
- package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
- package/dist/esm/helpers/makeDestructurable/makeDestructurable.mjs +21 -0
- package/dist/esm/helpers/makeDestructurable/makeDestructurable.mjs.map +1 -0
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +28 -27
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
- package/dist/esm/hooks/useAsync/useAsync.mjs +22 -21
- package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
- package/dist/esm/hooks/useAsyncEffect/useAsyncEffect.mjs +10 -9
- package/dist/esm/hooks/useAsyncEffect/useAsyncEffect.mjs.map +1 -1
- package/dist/esm/hooks/useAudio/useAudio.mjs +55 -55
- package/dist/esm/hooks/useAudio/useAudio.mjs.map +1 -1
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs +43 -40
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
- package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs +20 -19
- package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs.map +1 -1
- package/dist/esm/hooks/useBattery/useBattery.mjs +32 -29
- package/dist/esm/hooks/useBattery/useBattery.mjs.map +1 -1
- package/dist/esm/hooks/useBluetooth/useBluetooth.mjs +35 -33
- package/dist/esm/hooks/useBluetooth/useBluetooth.mjs.map +1 -1
- package/dist/esm/hooks/useBoolean/useBoolean.mjs +9 -8
- package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
- package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs +90 -104
- package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
- package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs +30 -31
- package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs.map +1 -1
- package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs +7 -6
- package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs +21 -21
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
- package/dist/esm/hooks/useClipboard/useClipboard.mjs +25 -23
- package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
- package/dist/esm/hooks/useConst/useConst.mjs +7 -6
- package/dist/esm/hooks/useConst/useConst.mjs.map +1 -1
- package/dist/esm/hooks/useControllableState/useControllableState.mjs +18 -16
- package/dist/esm/hooks/useControllableState/useControllableState.mjs.map +1 -1
- package/dist/esm/hooks/useCookie/useCookie.mjs +53 -56
- package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
- package/dist/esm/hooks/useCookies/useCookies.mjs +38 -37
- package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
- package/dist/esm/hooks/useCopy/useCopy.mjs +15 -10
- package/dist/esm/hooks/useCopy/useCopy.mjs.map +1 -1
- package/dist/esm/hooks/useCounter/useCounter.mjs +26 -22
- package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
- package/dist/esm/hooks/useCssVar/useCssVar.mjs +42 -32
- package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
- package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs +18 -17
- package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs.map +1 -1
- package/dist/esm/hooks/useDebounceEffect/useDebounceEffect.mjs +19 -18
- package/dist/esm/hooks/useDebounceEffect/useDebounceEffect.mjs.map +1 -1
- package/dist/esm/hooks/useDebounceState/useDebounceState.mjs +10 -9
- package/dist/esm/hooks/useDebounceState/useDebounceState.mjs.map +1 -1
- package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs +12 -11
- package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs.map +1 -1
- package/dist/esm/hooks/useDefault/useDefault.mjs +9 -8
- package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
- package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs +49 -36
- package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
- package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs +28 -27
- package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs.map +1 -1
- package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs +18 -14
- package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs.map +1 -1
- package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs +15 -18
- package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
- package/dist/esm/hooks/useDisclosure/useDisclosure.mjs +14 -8
- package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
- package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs +39 -39
- package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs +8 -7
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs +28 -27
- package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs +9 -8
- package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +25 -28
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
- package/dist/esm/hooks/useDropZone/useDropZone.mjs +55 -47
- package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
- package/dist/esm/hooks/useEvent/useEvent.mjs +12 -11
- package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
- package/dist/esm/hooks/useEventListener/useEventListener.mjs +24 -19
- package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
- package/dist/esm/hooks/useEventSource/useEventSource.mjs +44 -49
- package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
- package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs +17 -16
- package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs.map +1 -1
- package/dist/esm/hooks/useFavicon/useFavicon.mjs +20 -18
- package/dist/esm/hooks/useFavicon/useFavicon.mjs.map +1 -1
- package/dist/esm/hooks/useField/useField.mjs +61 -67
- package/dist/esm/hooks/useField/useField.mjs.map +1 -1
- package/dist/esm/hooks/useFileDialog/useFileDialog.mjs +34 -32
- package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
- package/dist/esm/hooks/useFileSystemAccess/useFileSystemAccess.mjs +59 -0
- package/dist/esm/hooks/useFileSystemAccess/useFileSystemAccess.mjs.map +1 -0
- package/dist/esm/hooks/useFocus/useFocus.mjs +43 -34
- package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs +51 -36
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs.map +1 -1
- package/dist/esm/hooks/useFps/useFps.mjs +18 -22
- package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
- package/dist/esm/hooks/useFul/useFul.mjs +8 -7
- package/dist/esm/hooks/useFul/useFul.mjs.map +1 -1
- package/dist/esm/hooks/useFullscreen/useFullscreen.mjs +39 -42
- package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
- package/dist/esm/hooks/useGamepad/useGamepad.mjs +76 -83
- package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
- package/dist/esm/hooks/useGeolocation/useGeolocation.mjs +50 -45
- package/dist/esm/hooks/useGeolocation/useGeolocation.mjs.map +1 -1
- package/dist/esm/hooks/useHash/useHash.mjs +24 -26
- package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
- package/dist/esm/hooks/useHotkeys/useHotkeys.mjs +35 -37
- package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
- package/dist/esm/hooks/useHover/useHover.mjs +30 -25
- package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
- package/dist/esm/hooks/useIdle/useIdle.mjs +29 -26
- package/dist/esm/hooks/useIdle/useIdle.mjs.map +1 -1
- package/dist/esm/hooks/useImage/useImage.mjs +24 -26
- package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +38 -32
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +38 -37
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
- package/dist/esm/hooks/useInterval/useInterval.mjs +20 -20
- package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
- package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs +8 -7
- package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs.map +1 -1
- package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +7 -6
- package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +30 -26
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs +33 -35
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
- package/dist/esm/hooks/useKeyboard/useKeyboard.mjs +16 -19
- package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +36 -25
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
- package/dist/esm/hooks/useLastChanged/useLastChanged.mjs +10 -9
- package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
- package/dist/esm/hooks/useLatest/useLatest.mjs +14 -16
- package/dist/esm/hooks/useLatest/useLatest.mjs.map +1 -1
- package/dist/esm/hooks/useLess/useLess.mjs +9 -8
- package/dist/esm/hooks/useLess/useLess.mjs.map +1 -1
- package/dist/esm/hooks/useList/useList.mjs +22 -22
- package/dist/esm/hooks/useList/useList.mjs.map +1 -1
- package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs +10 -9
- package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs.map +1 -1
- package/dist/esm/hooks/useLockCallback/useLockCallback.mjs +18 -17
- package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
- package/dist/esm/hooks/useLockScroll/useLockScroll.mjs +44 -39
- package/dist/esm/hooks/useLockScroll/useLockScroll.mjs.map +1 -1
- package/dist/esm/hooks/useLogger/useLogger.mjs +10 -9
- package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs +30 -26
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useMap/useMap.mjs +21 -20
- package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
- package/dist/esm/hooks/useMeasure/useMeasure.mjs +45 -32
- package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
- package/dist/esm/hooks/useMediaControls/useMediaControls.mjs +67 -68
- package/dist/esm/hooks/useMediaControls/useMediaControls.mjs.map +1 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs +12 -17
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
- package/dist/esm/hooks/useMemory/useMemory.mjs +20 -18
- package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.mjs +23 -25
- package/dist/esm/hooks/useMergedRef/useMergedRef.mjs.map +1 -1
- package/dist/esm/hooks/useMount/useMount.mjs +7 -6
- package/dist/esm/hooks/useMount/useMount.mjs.map +1 -1
- package/dist/esm/hooks/useMouse/useMouse.mjs +61 -58
- package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
- package/dist/esm/hooks/useMutation/useMutation.mjs +63 -60
- package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
- package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +35 -34
- package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
- package/dist/esm/hooks/useNetwork/useNetwork.mjs +47 -48
- package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
- package/dist/esm/hooks/useObjectUrl/useObjectUrl.mjs +20 -0
- package/dist/esm/hooks/useObjectUrl/useObjectUrl.mjs.map +1 -0
- package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs +50 -40
- package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
- package/dist/esm/hooks/useOnce/useOnce.mjs +13 -13
- package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
- package/dist/esm/hooks/useOnline/useOnline.mjs +9 -8
- package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
- package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs +12 -12
- package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
- package/dist/esm/hooks/useOptimistic/useOptimistic.mjs +14 -13
- package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
- package/dist/esm/hooks/useOrientation/useOrientation.mjs +30 -29
- package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
- package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +28 -25
- package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
- package/dist/esm/hooks/usePageLeave/usePageLeave.mjs +15 -14
- package/dist/esm/hooks/usePageLeave/usePageLeave.mjs.map +1 -1
- package/dist/esm/hooks/usePaint/usePaint.mjs +139 -151
- package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
- package/dist/esm/hooks/useParallax/useParallax.mjs +90 -96
- package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
- package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +29 -23
- package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
- package/dist/esm/hooks/usePermission/usePermission.mjs +25 -27
- package/dist/esm/hooks/usePermission/usePermission.mjs.map +1 -1
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs +42 -38
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs.map +1 -1
- package/dist/esm/hooks/usePointerLock/usePointerLock.mjs +31 -30
- package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
- package/dist/esm/hooks/usePostMessage/usePostMessage.mjs +22 -23
- package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs +8 -7
- package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs +8 -7
- package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs +6 -5
- package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs +9 -8
- package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
- package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs +6 -5
- package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs.map +1 -1
- package/dist/esm/hooks/usePrevious/usePrevious.mjs +9 -8
- package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
- package/dist/esm/hooks/useProgress/useProgress.mjs +28 -24
- package/dist/esm/hooks/useProgress/useProgress.mjs.map +1 -1
- package/dist/esm/hooks/useQuery/useQuery.mjs +61 -52
- package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
- package/dist/esm/hooks/useQueue/useQueue.mjs +23 -22
- package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
- package/dist/esm/hooks/useRaf/useRaf.mjs +32 -29
- package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
- package/dist/esm/hooks/useRafState/useRafState.mjs +12 -11
- package/dist/esm/hooks/useRafState/useRafState.mjs.map +1 -1
- package/dist/esm/hooks/useRefState/useRefState.mjs +24 -24
- package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
- package/dist/esm/hooks/useRenderCount/useRenderCount.mjs +11 -10
- package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
- package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs +14 -13
- package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
- package/dist/esm/hooks/useRerender/useRerender.mjs +6 -5
- package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +33 -24
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
- package/dist/esm/hooks/useRightClick/useRightClick.mjs +37 -34
- package/dist/esm/hooks/useRightClick/useRightClick.mjs.map +1 -1
- package/dist/esm/hooks/useScript/useScript.mjs +28 -31
- package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
- package/dist/esm/hooks/useScroll/useScroll.mjs +95 -81
- package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
- package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs +33 -34
- package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
- package/dist/esm/hooks/useScrollTo/useScrollTo.mjs +33 -21
- package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
- package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs +10 -9
- package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs.map +1 -1
- package/dist/esm/hooks/useSet/useSet.mjs +30 -29
- package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
- package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs +20 -22
- package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs.map +1 -1
- package/dist/esm/hooks/useShare/useShare.mjs +18 -14
- package/dist/esm/hooks/useShare/useShare.mjs.map +1 -1
- package/dist/esm/hooks/useSize/useSize.mjs +40 -30
- package/dist/esm/hooks/useSize/useSize.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +34 -44
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +65 -64
- package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
- package/dist/esm/hooks/useStateHistory/useStateHistory.mjs +96 -84
- package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
- package/dist/esm/hooks/useStep/useStep.mjs +27 -28
- package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
- package/dist/esm/hooks/useSticky/useSticky.mjs +36 -30
- package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
- package/dist/esm/hooks/useStopwatch/useStopwatch.mjs +59 -57
- package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
- package/dist/esm/hooks/useStorage/useStorage.mjs +61 -62
- package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
- package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +35 -30
- package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
- package/dist/esm/hooks/useTextSelection/useTextSelection.mjs +25 -27
- package/dist/esm/hooks/useTextSelection/useTextSelection.mjs.map +1 -1
- package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs +53 -52
- package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs.map +1 -1
- package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs +18 -17
- package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs.map +1 -1
- package/dist/esm/hooks/useThrottleEffect/useThrottleEffect.mjs +21 -21
- package/dist/esm/hooks/useThrottleEffect/useThrottleEffect.mjs.map +1 -1
- package/dist/esm/hooks/useThrottleState/useThrottleState.mjs +10 -9
- package/dist/esm/hooks/useThrottleState/useThrottleState.mjs.map +1 -1
- package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs +12 -11
- package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs.map +1 -1
- package/dist/esm/hooks/useTime/useTime.mjs +14 -13
- package/dist/esm/hooks/useTime/useTime.mjs.map +1 -1
- package/dist/esm/hooks/useTimeout/useTimeout.mjs +19 -15
- package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
- package/dist/esm/hooks/useTimer/useTimer.mjs +61 -66
- package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
- package/dist/esm/hooks/useToggle/useToggle.mjs +12 -11
- package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
- package/dist/esm/hooks/useUnmount/useUnmount.mjs +11 -13
- package/dist/esm/hooks/useUnmount/useUnmount.mjs.map +1 -1
- package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs +66 -76
- package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
- package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +50 -60
- package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
- package/dist/esm/hooks/useVibrate/useVibrate.mjs +28 -21
- package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
- package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs +30 -29
- package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs.map +1 -1
- package/dist/esm/hooks/useVisibility/useVisibility.mjs +41 -39
- package/dist/esm/hooks/useVisibility/useVisibility.mjs.map +1 -1
- package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +28 -23
- package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
- package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +38 -35
- package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs +7 -6
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
- package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs +14 -13
- package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
- package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs +29 -21
- package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
- package/dist/esm/hooks/useWindowSize/useWindowSize.mjs +24 -23
- package/dist/esm/hooks/useWindowSize/useWindowSize.mjs.map +1 -1
- package/dist/esm/hooks/useWizard/useWizard.mjs +25 -20
- package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
- package/dist/esm/index.mjs +173 -394
- package/dist/esm/utils/helpers/copy.mjs +18 -18
- package/dist/esm/utils/helpers/copy.mjs.map +1 -1
- package/dist/esm/utils/helpers/debounce.mjs +10 -10
- package/dist/esm/utils/helpers/debounce.mjs.map +1 -1
- package/dist/esm/utils/helpers/getDate.mjs +20 -16
- package/dist/esm/utils/helpers/getDate.mjs.map +1 -1
- package/dist/esm/utils/helpers/getRetry.mjs +6 -5
- package/dist/esm/utils/helpers/getRetry.mjs.map +1 -1
- package/dist/esm/utils/helpers/isTarget.mjs +10 -19
- package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
- package/dist/esm/utils/helpers/throttle.mjs +20 -20
- package/dist/esm/utils/helpers/throttle.mjs.map +1 -1
- package/dist/types/helpers/index.d.ts +1 -0
- package/dist/types/helpers/makeDestructurable/makeDestructurable.d.ts +16 -0
- package/dist/types/hooks/browser.d.ts +2 -0
- package/dist/types/hooks/useEventListener/useEventListener.d.ts +0 -22
- package/dist/types/hooks/useField/useField.d.ts +3 -3
- package/dist/types/hooks/useFileSystemAccess/useFileSystemAccess.d.ts +116 -0
- package/dist/types/hooks/useKeyboard/useKeyboard.d.ts +4 -2
- package/dist/types/hooks/useObjectUrl/useObjectUrl.d.ts +24 -0
- package/dist/types/hooks/usePerformanceObserver/usePerformanceObserver.d.ts +1 -0
- package/dist/types/hooks/useScrollIntoView/useScrollIntoView.d.ts +1 -1
- package/dist/types/hooks/useWebSocket/useWebSocket.d.ts +1 -0
- package/package.json +5 -5
- package/dist/cjs/_virtual/client.cjs +0 -2
- package/dist/cjs/_virtual/client.cjs.map +0 -1
- package/dist/cjs/_virtual/client2.cjs +0 -2
- package/dist/cjs/_virtual/client2.cjs.map +0 -1
- package/dist/cjs/_virtual/index.cjs +0 -2
- package/dist/cjs/_virtual/index.cjs.map +0 -1
- package/dist/cjs/_virtual/react-dom-client.development.cjs +0 -2
- package/dist/cjs/_virtual/react-dom-client.development.cjs.map +0 -1
- package/dist/cjs/_virtual/react-dom-client.production.cjs +0 -2
- package/dist/cjs/_virtual/react-dom-client.production.cjs.map +0 -1
- package/dist/cjs/_virtual/scheduler.development.cjs +0 -2
- package/dist/cjs/_virtual/scheduler.development.cjs.map +0 -1
- package/dist/cjs/_virtual/scheduler.production.cjs +0 -2
- package/dist/cjs/_virtual/scheduler.production.cjs.map +0 -1
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs +0 -215
- package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs +0 -10
- package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs +0 -2
- package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs +0 -2
- package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs +0 -2
- package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs +0 -2
- package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs.map +0 -1
- package/dist/esm/_virtual/client.mjs +0 -6
- package/dist/esm/_virtual/client.mjs.map +0 -1
- package/dist/esm/_virtual/client2.mjs +0 -5
- package/dist/esm/_virtual/client2.mjs.map +0 -1
- package/dist/esm/_virtual/index.mjs +0 -5
- package/dist/esm/_virtual/index.mjs.map +0 -1
- package/dist/esm/_virtual/react-dom-client.development.mjs +0 -5
- package/dist/esm/_virtual/react-dom-client.development.mjs.map +0 -1
- package/dist/esm/_virtual/react-dom-client.production.mjs +0 -5
- package/dist/esm/_virtual/react-dom-client.production.mjs.map +0 -1
- package/dist/esm/_virtual/scheduler.development.mjs +0 -5
- package/dist/esm/_virtual/scheduler.development.mjs.map +0 -1
- package/dist/esm/_virtual/scheduler.production.mjs +0 -5
- package/dist/esm/_virtual/scheduler.production.mjs.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.mjs +0 -17019
- package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.mjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.mjs +0 -9745
- package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.mjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.mjs +0 -24
- package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.mjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.mjs +0 -228
- package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.mjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.mjs +0 -225
- package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.mjs.map +0 -1
- package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.mjs +0 -11
- package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.mjs.map +0 -1
|
@@ -1,152 +1,140 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
class
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
r && (r.removeEventListener("mousedown", T), r.removeEventListener("mousemove", E), r.removeEventListener("mouseup", R));
|
|
137
|
-
};
|
|
138
|
-
}, [t && b.getRawElement(t), g.state]), t ? { drawing: m, clear: D, undo: L, draw: c, lines: s.current.lines } : {
|
|
139
|
-
ref: g,
|
|
140
|
-
drawing: m,
|
|
141
|
-
clear: D,
|
|
142
|
-
undo: L,
|
|
143
|
-
draw: c,
|
|
144
|
-
lines: s.current.lines
|
|
145
|
-
};
|
|
1
|
+
import { isTarget as e } from "../../utils/helpers/isTarget.mjs";
|
|
2
|
+
import { useRefState as t } from "../useRefState/useRefState.mjs";
|
|
3
|
+
import { useEvent as n } from "../useEvent/useEvent.mjs";
|
|
4
|
+
import { useEffect as r, useRef as i, useState as a } from "react";
|
|
5
|
+
//#region src/hooks/usePaint/usePaint.ts
|
|
6
|
+
var o = 10, s = class e {
|
|
7
|
+
x;
|
|
8
|
+
y;
|
|
9
|
+
constructor(e, t) {
|
|
10
|
+
this.x = e, this.y = t;
|
|
11
|
+
}
|
|
12
|
+
update(e) {
|
|
13
|
+
this.x = e.x, this.y = e.y;
|
|
14
|
+
}
|
|
15
|
+
getDifferenceTo(t) {
|
|
16
|
+
return new e(this.x - t.x, this.y - t.y);
|
|
17
|
+
}
|
|
18
|
+
getDistanceTo(e) {
|
|
19
|
+
let t = this.getDifferenceTo(e);
|
|
20
|
+
return Math.sqrt(t.x ** 2 + t.y ** 2);
|
|
21
|
+
}
|
|
22
|
+
getAngleTo(e) {
|
|
23
|
+
let t = this.getDifferenceTo(e);
|
|
24
|
+
return Math.atan2(t.y, t.x);
|
|
25
|
+
}
|
|
26
|
+
equalsTo(e) {
|
|
27
|
+
return this.x === e.x && this.y === e.y;
|
|
28
|
+
}
|
|
29
|
+
moveByAngle(e, t) {
|
|
30
|
+
let n = e + Math.PI / 2;
|
|
31
|
+
return this.x += Math.sin(n) * t, this.y -= Math.cos(n) * t, this;
|
|
32
|
+
}
|
|
33
|
+
}, c = class {
|
|
34
|
+
pointer;
|
|
35
|
+
brush;
|
|
36
|
+
radius;
|
|
37
|
+
smooth = !1;
|
|
38
|
+
points = [];
|
|
39
|
+
lines = [];
|
|
40
|
+
constructor({ x: e, y: t, radius: n, smooth: r }) {
|
|
41
|
+
this.smooth = r, this.pointer = new s(e, t), this.brush = new s(e, t), this.radius = n, this.points = [], this.lines = [];
|
|
42
|
+
}
|
|
43
|
+
getBrushCoordinates() {
|
|
44
|
+
return {
|
|
45
|
+
x: this.brush.x,
|
|
46
|
+
y: this.brush.y
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
getPointerCoordinates() {
|
|
50
|
+
return {
|
|
51
|
+
x: this.pointer.x,
|
|
52
|
+
y: this.pointer.y
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
update(e) {
|
|
56
|
+
if (this.pointer.equalsTo(e)) return !1;
|
|
57
|
+
if (this.pointer.update(e), !this.smooth) return this.brush.update(e), this.points.push(this.getBrushCoordinates()), !0;
|
|
58
|
+
let t = this.pointer.getDistanceTo(this.brush), n = this.pointer.getAngleTo(this.brush);
|
|
59
|
+
if (Math.round((t - this.radius) * 10) / 10 > 0) {
|
|
60
|
+
let e = n + Math.PI / 2;
|
|
61
|
+
return this.brush.update({
|
|
62
|
+
x: this.brush.x + Math.sin(e) * (t - this.radius),
|
|
63
|
+
y: this.brush.y - Math.cos(e) * (t - this.radius)
|
|
64
|
+
}), this.points.push(this.getBrushCoordinates()), !0;
|
|
65
|
+
}
|
|
66
|
+
return !1;
|
|
67
|
+
}
|
|
68
|
+
}, l = ((...s) => {
|
|
69
|
+
let l = e(s[0]) ? s[0] : void 0, u = (l ? s[1] : s[0]) ?? {}, d = u?.color ?? "black", f = u?.opacity ?? 1, p = u?.radius ?? o, m = i(new c({
|
|
70
|
+
x: 0,
|
|
71
|
+
y: 0,
|
|
72
|
+
radius: u?.radius ?? o,
|
|
73
|
+
smooth: u?.smooth ?? !1
|
|
74
|
+
})), [h, g] = a(!1), _ = t(), v = i(null), y = (e, t, n, r) => {
|
|
75
|
+
if (!v.current) return;
|
|
76
|
+
v.current.globalAlpha = n, v.current.strokeStyle = t, v.current.lineWidth = r * 2, v.current.lineCap = "round", v.current.lineJoin = "round";
|
|
77
|
+
let i = e[0], a = e[1];
|
|
78
|
+
v.current.beginPath();
|
|
79
|
+
for (let t = 1; t < e.length; t += 1) {
|
|
80
|
+
let n = {
|
|
81
|
+
x: i.x + (a.x - i.x) / 2,
|
|
82
|
+
y: i.y + (a.y - i.y) / 2
|
|
83
|
+
};
|
|
84
|
+
v.current.quadraticCurveTo(i.x, i.y, n.x, n.y), i = e[t], a = e[t + 1];
|
|
85
|
+
}
|
|
86
|
+
v.current.lineTo(i.x, i.y), v.current.stroke();
|
|
87
|
+
}, b = () => {
|
|
88
|
+
v.current && v.current.clearRect(0, 0, v.current.canvas.width, v.current.canvas.height);
|
|
89
|
+
}, x = n((e) => {
|
|
90
|
+
if (!h) return;
|
|
91
|
+
u?.onMouseMove?.(e, m.current);
|
|
92
|
+
let t = {
|
|
93
|
+
x: e.offsetX,
|
|
94
|
+
y: e.offsetY
|
|
95
|
+
};
|
|
96
|
+
m.current.update(t) && v.current && (b(), v.current.clearRect(0, 0, v.current.canvas.width, v.current.canvas.height), m.current.lines.forEach(({ points: e, color: t, opacity: n, radius: r }) => y(e, t, n, r)), y(m.current.points, d, f, p));
|
|
97
|
+
}), S = n((e) => {
|
|
98
|
+
if (!v.current) return;
|
|
99
|
+
let t = {
|
|
100
|
+
x: e.offsetX,
|
|
101
|
+
y: e.offsetY
|
|
102
|
+
};
|
|
103
|
+
m.current.brush.update(t), m.current.points.push(t), y(m.current.points, d, f, p), u?.onMouseDown?.(e, m.current), g(!0);
|
|
104
|
+
}), C = n((e) => {
|
|
105
|
+
v.current && (m.current.points.length && (m.current.lines.push({
|
|
106
|
+
points: m.current.points,
|
|
107
|
+
color: d,
|
|
108
|
+
opacity: f,
|
|
109
|
+
radius: p
|
|
110
|
+
}), m.current.points = []), u?.onMouseUp?.(e, m.current), g(!1));
|
|
111
|
+
}), w = () => {
|
|
112
|
+
v.current && (b(), m.current.lines = [], m.current.points = []);
|
|
113
|
+
}, T = () => {
|
|
114
|
+
v.current && (b(), m.current.lines.pop(), m.current.lines.forEach(({ points: e, color: t, opacity: n, radius: r }) => y(e, t, n, r)));
|
|
115
|
+
};
|
|
116
|
+
return r(() => {
|
|
117
|
+
if (!l && !_.state) return;
|
|
118
|
+
let t = l ? e.getElement(l) : _.current;
|
|
119
|
+
if (t) return v.current = t.getContext("2d"), u?.initialLines && (m.current.lines = u.initialLines, u.initialLines.forEach(({ points: e, color: t, opacity: n, radius: r }) => y(e, t, n, r))), t.addEventListener("mousedown", S), t.addEventListener("mousemove", x), t.addEventListener("mouseup", C), () => {
|
|
120
|
+
t && (t.removeEventListener("mousedown", S), t.removeEventListener("mousemove", x), t.removeEventListener("mouseup", C));
|
|
121
|
+
};
|
|
122
|
+
}, [l && e.getRawElement(l), _.state]), l ? {
|
|
123
|
+
drawing: h,
|
|
124
|
+
clear: w,
|
|
125
|
+
undo: T,
|
|
126
|
+
draw: y,
|
|
127
|
+
lines: m.current.lines
|
|
128
|
+
} : {
|
|
129
|
+
ref: _,
|
|
130
|
+
drawing: h,
|
|
131
|
+
clear: w,
|
|
132
|
+
undo: T,
|
|
133
|
+
draw: y,
|
|
134
|
+
lines: m.current.lines
|
|
135
|
+
};
|
|
146
136
|
});
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
};
|
|
152
|
-
//# sourceMappingURL=usePaint.mjs.map
|
|
137
|
+
//#endregion
|
|
138
|
+
export { c as Paint, s as Pointer, l as usePaint };
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=usePaint.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaint.mjs","sources":["../../../../src/hooks/usePaint/usePaint.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\nconst DEFAULT_BRUSH_RADIUS = 10;\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport class Pointer implements Point {\n x: number;\n\n y: number;\n\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n\n update(point: Point) {\n this.x = point.x;\n this.y = point.y;\n }\n\n getDifferenceTo(point: Point) {\n return new Pointer(this.x - point.x, this.y - point.y);\n }\n\n getDistanceTo(point: Point) {\n const diff = this.getDifferenceTo(point);\n return Math.sqrt(diff.x ** 2 + diff.y ** 2);\n }\n\n getAngleTo(point: Point) {\n const diff = this.getDifferenceTo(point);\n return Math.atan2(diff.y, diff.x);\n }\n\n equalsTo(point: Point) {\n return this.x === point.x && this.y === point.y;\n }\n\n moveByAngle(\n // The angle in radians\n angle: number,\n // How much the point should be moved\n distance: number\n ) {\n // Rotate the angle based on the browser coordinate system ([0,0] in the top left)\n const angleRotated = angle + Math.PI / 2;\n\n this.x += Math.sin(angleRotated) * distance;\n this.y -= Math.cos(angleRotated) * distance;\n\n return this;\n }\n}\n\nexport class Paint {\n pointer: Pointer;\n\n brush: Pointer;\n\n radius: number;\n\n smooth: boolean = false;\n\n points: Point[] = [];\n\n lines: { points: Point[]; color: string; radius: number; opacity: number }[] = [];\n\n constructor({ x, y, radius, smooth }: { x: number; y: number; radius: number; smooth: boolean }) {\n this.smooth = smooth;\n this.pointer = new Pointer(x, y);\n this.brush = new Pointer(x, y);\n this.radius = radius;\n this.points = [];\n this.lines = [];\n }\n\n getBrushCoordinates() {\n return {\n x: this.brush.x,\n y: this.brush.y\n };\n }\n\n getPointerCoordinates() {\n return {\n x: this.pointer.x,\n y: this.pointer.y\n };\n }\n\n update(point: Point) {\n if (this.pointer.equalsTo(point)) return false;\n this.pointer.update(point);\n\n if (!this.smooth) {\n this.brush.update(point);\n this.points.push(this.getBrushCoordinates());\n return true;\n }\n\n const distance = this.pointer.getDistanceTo(this.brush);\n const angle = this.pointer.getAngleTo(this.brush);\n const isOutside = Math.round((distance - this.radius) * 10) / 10 > 0;\n\n if (isOutside) {\n const angleRotated = angle + Math.PI / 2;\n this.brush.update({\n x: this.brush.x + Math.sin(angleRotated) * (distance - this.radius),\n y: this.brush.y - Math.cos(angleRotated) * (distance - this.radius)\n });\n this.points.push(this.getBrushCoordinates());\n return true;\n }\n\n return false;\n }\n}\n\nexport interface UsePaintOptions {\n /** Brush color */\n color?: string;\n /** Initial lines */\n initialLines?: Paint['lines'];\n /** Brush opacity */\n opacity?: number;\n /** Brush radius */\n radius?: number;\n /** Smooth brush movement */\n smooth?: boolean;\n /** Callback when the mouse is down */\n onMouseDown?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is moved */\n onMouseMove?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is up */\n onMouseUp?: (event: MouseEvent, paint: Paint) => void;\n}\n\nexport interface UsePaintReturn {\n drawing: boolean;\n lines: Paint['lines'];\n clear: () => void;\n draw: (points: Point[], color: string, opacity: number, radius: number) => void;\n undo: () => void;\n}\n\nexport interface UsePaint {\n (target: HookTarget, options?: UsePaintOptions): UsePaintReturn;\n\n <Target extends HTMLCanvasElement>(\n options?: UsePaintOptions,\n target?: never\n ): UsePaintReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name usePaint\n * @description - Hook that allows you to draw in a specific area\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target element to be painted\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const drawing = usePaint(canvasRef);\n *\n * @overload\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn & { ref: StateRef<HTMLCanvasElement> }} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const { ref, drawing } = usePaint();\n */\nexport const usePaint = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = ((target ? params[1] : params[0]) as UsePaintOptions) ?? {};\n\n const color = options?.color ?? 'black';\n const opacity = options?.opacity ?? 1;\n const radius = options?.radius ?? DEFAULT_BRUSH_RADIUS;\n\n const paintRef = useRef<Paint>(\n new Paint({\n x: 0,\n y: 0,\n radius: options?.radius ?? DEFAULT_BRUSH_RADIUS,\n smooth: options?.smooth ?? false\n })\n );\n const [drawing, setIsDrawing] = useState(false);\n const internalRef = useRefState<HTMLCanvasElement>();\n const contextRef = useRef<CanvasRenderingContext2D | null>(null);\n\n const draw = (points: Point[], color: string, opacity: number, radius: number) => {\n if (!contextRef.current) return;\n\n contextRef.current.globalAlpha = opacity;\n contextRef.current.strokeStyle = color;\n contextRef.current.lineWidth = radius * 2;\n contextRef.current.lineCap = 'round';\n contextRef.current.lineJoin = 'round';\n\n let p1 = points[0];\n let p2 = points[1];\n\n contextRef.current.beginPath();\n\n for (let i = 1; i < points.length; i += 1) {\n const midPoint = {\n x: p1.x + (p2.x - p1.x) / 2,\n y: p1.y + (p2.y - p1.y) / 2\n };\n contextRef.current.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n p1 = points[i];\n p2 = points[i + 1];\n }\n contextRef.current.lineTo(p1.x, p1.y);\n contextRef.current.stroke();\n };\n\n const clearCanvas = () => {\n if (!contextRef.current) return;\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n };\n\n const onMouseMove = useEvent((event: MouseEvent) => {\n if (!drawing) return;\n options?.onMouseMove?.(event, paintRef.current);\n\n const point = { x: event.offsetX, y: event.offsetY };\n\n const isUpdated = paintRef.current.update(point);\n\n if (!isUpdated) return;\n if (!contextRef.current) return;\n clearCanvas();\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n\n // const brush = paintRef.current.getBrushCoordinates();\n // // Draw brush point\n // contextRef.current.beginPath();\n // contextRef.current.fillStyle = 'red';\n // contextRef.current.arc(brush.x, brush.y, radius, 0, Math.PI * 2, true);\n // contextRef.current.fill();\n\n // // Draw the lazy radius.\n // contextRef.current.beginPath();\n // contextRef.current.strokeStyle = '#ccc';\n // contextRef.current.arc(brush.x, brush.y, radius * 2, 0, Math.PI * 2, true);\n // contextRef.current.stroke();\n\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n draw(paintRef.current.points, color, opacity, radius);\n });\n\n const onMouseDown = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n const point = { x: event.offsetX, y: event.offsetY };\n paintRef.current.brush.update(point);\n paintRef.current.points.push(point);\n draw(paintRef.current.points, color, opacity, radius);\n\n options?.onMouseDown?.(event, paintRef.current);\n setIsDrawing(true);\n });\n\n const onMouseUp = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n if (paintRef.current.points.length) {\n paintRef.current.lines.push({\n points: paintRef.current.points,\n color,\n opacity,\n radius\n });\n paintRef.current.points = [];\n }\n\n options?.onMouseUp?.(event, paintRef.current);\n setIsDrawing(false);\n });\n\n const clear = () => {\n if (!contextRef.current) return;\n clearCanvas();\n paintRef.current.lines = [];\n paintRef.current.points = [];\n };\n\n const undo = () => {\n if (!contextRef.current) return;\n clearCanvas();\n\n paintRef.current.lines.pop();\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (\n target ? isTarget.getElement(target) : internalRef.current\n ) as HTMLCanvasElement;\n if (!element) return;\n contextRef.current = element.getContext('2d');\n\n if (options?.initialLines) {\n paintRef.current.lines = options.initialLines;\n options.initialLines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n }\n\n element.addEventListener('mousedown', onMouseDown);\n element.addEventListener('mousemove', onMouseMove);\n element.addEventListener('mouseup', onMouseUp);\n\n return () => {\n if (!element) return;\n element.removeEventListener('mousedown', onMouseDown);\n element.removeEventListener('mousemove', onMouseMove);\n element.removeEventListener('mouseup', onMouseUp);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state]);\n\n if (target) return { drawing, clear, undo, draw, lines: paintRef.current.lines };\n return {\n ref: internalRef,\n drawing,\n clear,\n undo,\n draw,\n lines: paintRef.current.lines\n };\n}) as UsePaint;\n"],"names":["DEFAULT_BRUSH_RADIUS","Pointer","x","y","point","diff","angle","distance","angleRotated","Paint","radius","smooth","usePaint","params","target","isTarget","options","color","opacity","paintRef","useRef","drawing","setIsDrawing","useState","internalRef","useRefState","contextRef","draw","points","p1","p2","i","midPoint","clearCanvas","onMouseMove","useEvent","event","onMouseDown","onMouseUp","clear","undo","useEffect","element"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePaint.mjs","names":[],"sources":["../../../../src/hooks/usePaint/usePaint.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\nconst DEFAULT_BRUSH_RADIUS = 10;\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport class Pointer implements Point {\n x: number;\n\n y: number;\n\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n\n update(point: Point) {\n this.x = point.x;\n this.y = point.y;\n }\n\n getDifferenceTo(point: Point) {\n return new Pointer(this.x - point.x, this.y - point.y);\n }\n\n getDistanceTo(point: Point) {\n const diff = this.getDifferenceTo(point);\n return Math.sqrt(diff.x ** 2 + diff.y ** 2);\n }\n\n getAngleTo(point: Point) {\n const diff = this.getDifferenceTo(point);\n return Math.atan2(diff.y, diff.x);\n }\n\n equalsTo(point: Point) {\n return this.x === point.x && this.y === point.y;\n }\n\n moveByAngle(\n // The angle in radians\n angle: number,\n // How much the point should be moved\n distance: number\n ) {\n // Rotate the angle based on the browser coordinate system ([0,0] in the top left)\n const angleRotated = angle + Math.PI / 2;\n\n this.x += Math.sin(angleRotated) * distance;\n this.y -= Math.cos(angleRotated) * distance;\n\n return this;\n }\n}\n\nexport class Paint {\n pointer: Pointer;\n\n brush: Pointer;\n\n radius: number;\n\n smooth: boolean = false;\n\n points: Point[] = [];\n\n lines: { points: Point[]; color: string; radius: number; opacity: number }[] = [];\n\n constructor({ x, y, radius, smooth }: { x: number; y: number; radius: number; smooth: boolean }) {\n this.smooth = smooth;\n this.pointer = new Pointer(x, y);\n this.brush = new Pointer(x, y);\n this.radius = radius;\n this.points = [];\n this.lines = [];\n }\n\n getBrushCoordinates() {\n return {\n x: this.brush.x,\n y: this.brush.y\n };\n }\n\n getPointerCoordinates() {\n return {\n x: this.pointer.x,\n y: this.pointer.y\n };\n }\n\n update(point: Point) {\n if (this.pointer.equalsTo(point)) return false;\n this.pointer.update(point);\n\n if (!this.smooth) {\n this.brush.update(point);\n this.points.push(this.getBrushCoordinates());\n return true;\n }\n\n const distance = this.pointer.getDistanceTo(this.brush);\n const angle = this.pointer.getAngleTo(this.brush);\n const isOutside = Math.round((distance - this.radius) * 10) / 10 > 0;\n\n if (isOutside) {\n const angleRotated = angle + Math.PI / 2;\n this.brush.update({\n x: this.brush.x + Math.sin(angleRotated) * (distance - this.radius),\n y: this.brush.y - Math.cos(angleRotated) * (distance - this.radius)\n });\n this.points.push(this.getBrushCoordinates());\n return true;\n }\n\n return false;\n }\n}\n\nexport interface UsePaintOptions {\n /** Brush color */\n color?: string;\n /** Initial lines */\n initialLines?: Paint['lines'];\n /** Brush opacity */\n opacity?: number;\n /** Brush radius */\n radius?: number;\n /** Smooth brush movement */\n smooth?: boolean;\n /** Callback when the mouse is down */\n onMouseDown?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is moved */\n onMouseMove?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is up */\n onMouseUp?: (event: MouseEvent, paint: Paint) => void;\n}\n\nexport interface UsePaintReturn {\n drawing: boolean;\n lines: Paint['lines'];\n clear: () => void;\n draw: (points: Point[], color: string, opacity: number, radius: number) => void;\n undo: () => void;\n}\n\nexport interface UsePaint {\n (target: HookTarget, options?: UsePaintOptions): UsePaintReturn;\n\n <Target extends HTMLCanvasElement>(\n options?: UsePaintOptions,\n target?: never\n ): UsePaintReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name usePaint\n * @description - Hook that allows you to draw in a specific area\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target element to be painted\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const drawing = usePaint(canvasRef);\n *\n * @overload\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn & { ref: StateRef<HTMLCanvasElement> }} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const { ref, drawing } = usePaint();\n */\nexport const usePaint = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = ((target ? params[1] : params[0]) as UsePaintOptions) ?? {};\n\n const color = options?.color ?? 'black';\n const opacity = options?.opacity ?? 1;\n const radius = options?.radius ?? DEFAULT_BRUSH_RADIUS;\n\n const paintRef = useRef<Paint>(\n new Paint({\n x: 0,\n y: 0,\n radius: options?.radius ?? DEFAULT_BRUSH_RADIUS,\n smooth: options?.smooth ?? false\n })\n );\n const [drawing, setIsDrawing] = useState(false);\n const internalRef = useRefState<HTMLCanvasElement>();\n const contextRef = useRef<CanvasRenderingContext2D | null>(null);\n\n const draw = (points: Point[], color: string, opacity: number, radius: number) => {\n if (!contextRef.current) return;\n\n contextRef.current.globalAlpha = opacity;\n contextRef.current.strokeStyle = color;\n contextRef.current.lineWidth = radius * 2;\n contextRef.current.lineCap = 'round';\n contextRef.current.lineJoin = 'round';\n\n let p1 = points[0];\n let p2 = points[1];\n\n contextRef.current.beginPath();\n\n for (let i = 1; i < points.length; i += 1) {\n const midPoint = {\n x: p1.x + (p2.x - p1.x) / 2,\n y: p1.y + (p2.y - p1.y) / 2\n };\n contextRef.current.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n p1 = points[i];\n p2 = points[i + 1];\n }\n contextRef.current.lineTo(p1.x, p1.y);\n contextRef.current.stroke();\n };\n\n const clearCanvas = () => {\n if (!contextRef.current) return;\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n };\n\n const onMouseMove = useEvent((event: MouseEvent) => {\n if (!drawing) return;\n options?.onMouseMove?.(event, paintRef.current);\n\n const point = { x: event.offsetX, y: event.offsetY };\n\n const isUpdated = paintRef.current.update(point);\n\n if (!isUpdated) return;\n if (!contextRef.current) return;\n clearCanvas();\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n\n // const brush = paintRef.current.getBrushCoordinates();\n // // Draw brush point\n // contextRef.current.beginPath();\n // contextRef.current.fillStyle = 'red';\n // contextRef.current.arc(brush.x, brush.y, radius, 0, Math.PI * 2, true);\n // contextRef.current.fill();\n\n // // Draw the lazy radius.\n // contextRef.current.beginPath();\n // contextRef.current.strokeStyle = '#ccc';\n // contextRef.current.arc(brush.x, brush.y, radius * 2, 0, Math.PI * 2, true);\n // contextRef.current.stroke();\n\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n draw(paintRef.current.points, color, opacity, radius);\n });\n\n const onMouseDown = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n const point = { x: event.offsetX, y: event.offsetY };\n paintRef.current.brush.update(point);\n paintRef.current.points.push(point);\n draw(paintRef.current.points, color, opacity, radius);\n\n options?.onMouseDown?.(event, paintRef.current);\n setIsDrawing(true);\n });\n\n const onMouseUp = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n if (paintRef.current.points.length) {\n paintRef.current.lines.push({\n points: paintRef.current.points,\n color,\n opacity,\n radius\n });\n paintRef.current.points = [];\n }\n\n options?.onMouseUp?.(event, paintRef.current);\n setIsDrawing(false);\n });\n\n const clear = () => {\n if (!contextRef.current) return;\n clearCanvas();\n paintRef.current.lines = [];\n paintRef.current.points = [];\n };\n\n const undo = () => {\n if (!contextRef.current) return;\n clearCanvas();\n\n paintRef.current.lines.pop();\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (\n target ? isTarget.getElement(target) : internalRef.current\n ) as HTMLCanvasElement;\n if (!element) return;\n contextRef.current = element.getContext('2d');\n\n if (options?.initialLines) {\n paintRef.current.lines = options.initialLines;\n options.initialLines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n }\n\n element.addEventListener('mousedown', onMouseDown);\n element.addEventListener('mousemove', onMouseMove);\n element.addEventListener('mouseup', onMouseUp);\n\n return () => {\n if (!element) return;\n element.removeEventListener('mousedown', onMouseDown);\n element.removeEventListener('mousemove', onMouseMove);\n element.removeEventListener('mouseup', onMouseUp);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state]);\n\n if (target) return { drawing, clear, undo, draw, lines: paintRef.current.lines };\n return {\n ref: internalRef,\n drawing,\n clear,\n undo,\n draw,\n lines: paintRef.current.lines\n };\n}) as UsePaint;\n"],"mappings":"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"}
|
|
@@ -1,97 +1,91 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
e.value.alpha,
|
|
88
|
-
e.value.absolute
|
|
89
|
-
]), o ? { value: m } : {
|
|
90
|
-
ref: i,
|
|
91
|
-
value: m
|
|
92
|
-
};
|
|
1
|
+
import { isTarget as e } from "../../utils/helpers/isTarget.mjs";
|
|
2
|
+
import { useRefState as t } from "../useRefState/useRefState.mjs";
|
|
3
|
+
import { useDeviceOrientation as n } from "../useDeviceOrientation/useDeviceOrientation.mjs";
|
|
4
|
+
import { useOrientation as r } from "../useOrientation/useOrientation.mjs";
|
|
5
|
+
import { useEffect as i, useState as a } from "react";
|
|
6
|
+
//#region src/hooks/useParallax/useParallax.ts
|
|
7
|
+
var o = ((...o) => {
|
|
8
|
+
let s = e(o[0]) ? o[0] : void 0, c = o[1] ? o[1] : o[0], l = t(), u = r(), d = n(), { deviceOrientationRollAdjust: f = (e) => e, deviceOrientationTiltAdjust: p = (e) => e, mouseRollAdjust: m = (e) => e, mouseTiltAdjust: h = (e) => e } = c ?? {}, [g, _] = a({
|
|
9
|
+
roll: 0,
|
|
10
|
+
tilt: 0,
|
|
11
|
+
source: "mouse"
|
|
12
|
+
});
|
|
13
|
+
return i(() => {
|
|
14
|
+
if (!s && !l.state) return;
|
|
15
|
+
let t = s ? e.getElement(s) : l.current;
|
|
16
|
+
if (!t) return;
|
|
17
|
+
let n = (e) => {
|
|
18
|
+
let { left: n, top: r } = t.getBoundingClientRect(), i = n + window.scrollX, a = r + window.scrollY, o = () => d.supported && (d.value.alpha || d.value.gamma) ? "deviceOrientation" : "mouse", s = () => {
|
|
19
|
+
if (o() === "deviceOrientation") {
|
|
20
|
+
let e;
|
|
21
|
+
switch (u.value.orientationType) {
|
|
22
|
+
case "landscape-primary":
|
|
23
|
+
e = d.value.gamma / 90;
|
|
24
|
+
break;
|
|
25
|
+
case "landscape-secondary":
|
|
26
|
+
e = -d.value.gamma / 90;
|
|
27
|
+
break;
|
|
28
|
+
case "portrait-primary":
|
|
29
|
+
e = -d.value.beta / 90;
|
|
30
|
+
break;
|
|
31
|
+
case "portrait-secondary":
|
|
32
|
+
e = d.value.beta / 90;
|
|
33
|
+
break;
|
|
34
|
+
default: e = -d.value.beta / 90;
|
|
35
|
+
}
|
|
36
|
+
return f(e);
|
|
37
|
+
} else {
|
|
38
|
+
let n = e.pageY - a, r = t.getBoundingClientRect().height;
|
|
39
|
+
return m(-(n - r / 2) / r);
|
|
40
|
+
}
|
|
41
|
+
}, c = () => {
|
|
42
|
+
if (o() === "deviceOrientation") {
|
|
43
|
+
let e;
|
|
44
|
+
switch (u.value.orientationType) {
|
|
45
|
+
case "landscape-primary":
|
|
46
|
+
e = d.value.beta / 90;
|
|
47
|
+
break;
|
|
48
|
+
case "landscape-secondary":
|
|
49
|
+
e = -d.value.beta / 90;
|
|
50
|
+
break;
|
|
51
|
+
case "portrait-primary":
|
|
52
|
+
e = d.value.gamma / 90;
|
|
53
|
+
break;
|
|
54
|
+
case "portrait-secondary":
|
|
55
|
+
e = -d.value.gamma / 90;
|
|
56
|
+
break;
|
|
57
|
+
default: e = d.value.gamma / 90;
|
|
58
|
+
}
|
|
59
|
+
return p(e);
|
|
60
|
+
} else {
|
|
61
|
+
let n = e.pageX - i, r = t.getBoundingClientRect().width;
|
|
62
|
+
return h((n - r / 2) / r);
|
|
63
|
+
}
|
|
64
|
+
}, l = o();
|
|
65
|
+
_({
|
|
66
|
+
roll: s(),
|
|
67
|
+
source: l,
|
|
68
|
+
tilt: c()
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
return document.addEventListener("mousemove", n), () => {
|
|
72
|
+
document.removeEventListener("mousemove", n);
|
|
73
|
+
};
|
|
74
|
+
}, [
|
|
75
|
+
s && e.getRawElement(s),
|
|
76
|
+
l.state,
|
|
77
|
+
u.value.angle,
|
|
78
|
+
u.value.orientationType,
|
|
79
|
+
d.value.gamma,
|
|
80
|
+
d.value.beta,
|
|
81
|
+
d.value.alpha,
|
|
82
|
+
d.value.absolute
|
|
83
|
+
]), s ? { value: g } : {
|
|
84
|
+
ref: l,
|
|
85
|
+
value: g
|
|
86
|
+
};
|
|
93
87
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
//# sourceMappingURL=useParallax.mjs.map
|
|
88
|
+
//#endregion
|
|
89
|
+
export { o as useParallax };
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=useParallax.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useParallax.mjs","sources":["../../../../src/hooks/useParallax/useParallax.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\r\n\r\nimport type { HookTarget } from '@/utils/helpers';\r\n\r\nimport { isTarget } from '@/utils/helpers';\r\n\r\nimport type { StateRef } from '../useRefState/useRefState';\r\n\r\nimport { useDeviceOrientation } from '../useDeviceOrientation/useDeviceOrientation';\r\nimport { useOrientation } from '../useOrientation/useOrientation';\r\nimport { useRefState } from '../useRefState/useRefState';\r\n\r\n/** The use parallax value type */\r\nexport interface UseParallaxValue {\r\n /** Roll value. Scaled to `-0.5 ~ 0.5` */\r\n roll: number;\r\n /** Sensor source, can be `mouse` or `deviceOrientation` */\r\n source: 'deviceOrientation' | 'mouse';\r\n /** Tilt value. Scaled to `-0.5 ~ 0.5` */\r\n tilt: number;\r\n}\r\n\r\n/** The use parallax options type */\r\nexport interface UseParallaxOptions {\r\n /** Device orientation roll adjust function */\r\n deviceOrientationRollAdjust?: (value: number) => number;\r\n /** Device orientation tilt adjust function */\r\n deviceOrientationTiltAdjust?: (value: number) => number;\r\n /** Mouse roll adjust function */\r\n mouseRollAdjust?: (value: number) => number;\r\n /** Mouse tilt adjust function */\r\n mouseTiltAdjust?: (value: number) => number;\r\n}\r\n\r\ninterface UseParallaxReturn {\r\n value: UseParallaxValue;\r\n}\r\n\r\nexport interface UseParallax {\r\n (target: HookTarget, options?: UseParallaxOptions): UseParallaxReturn;\r\n\r\n <Target extends Element>(\r\n options?: UseParallaxOptions,\r\n target?: never\r\n ): UseParallaxReturn & {\r\n ref: StateRef<Target>;\r\n };\r\n}\r\n\r\n/**\r\n * @name useParallax\r\n * @description - Hook to help create parallax effect\r\n * @category Sensors\r\n * @usage low\r\n *\r\n * @overload\r\n * @param {HookTarget} target The target element for the parallax effect\r\n * @param {UseParallaxOptions} options The options for the parallax effect\r\n * @returns {UseParallaxReturn} An object of parallax values\r\n *\r\n * @example\r\n * const { value } = useParallax(ref);\r\n *\r\n * @overload\r\n * @template Target The target element for the parallax effect\r\n * @param {UseParallaxOptions} options The options for the parallax effect\r\n * @returns {UseParallaxReturn & { ref: StateRef<Target> }} An object of parallax values\r\n *\r\n * @example\r\n * const { ref, value } = useParallax();\r\n */\r\nexport const useParallax = ((...params: any[]) => {\r\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\r\n const options = (params[1] ? params[1] : params[0]) as UseParallaxOptions | undefined;\r\n\r\n const internalRef = useRefState<Element>();\r\n\r\n const screenOrientation = useOrientation();\r\n const deviceOrientation = useDeviceOrientation();\r\n\r\n const {\r\n deviceOrientationRollAdjust = (value) => value,\r\n deviceOrientationTiltAdjust = (value) => value,\r\n mouseRollAdjust = (value) => value,\r\n mouseTiltAdjust = (value) => value\r\n } = (options ?? {}) as UseParallaxOptions;\r\n\r\n const [value, setValue] = useState({\r\n roll: 0,\r\n tilt: 0,\r\n source: 'mouse'\r\n });\r\n\r\n useEffect(() => {\r\n if (!target && !internalRef.state) return;\r\n\r\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\r\n if (!element) return;\r\n\r\n const onMouseMove = (event: MouseEvent) => {\r\n const { left, top } = element.getBoundingClientRect();\r\n const elementPositionX = left + window.scrollX;\r\n const elementPositionY = top + window.scrollY;\r\n\r\n const getSource = () => {\r\n const isDeviceOrientation =\r\n deviceOrientation.supported &&\r\n (deviceOrientation.value.alpha || deviceOrientation.value.gamma);\r\n\r\n if (isDeviceOrientation) return 'deviceOrientation';\r\n return 'mouse';\r\n };\r\n\r\n const getRoll = () => {\r\n const source = getSource();\r\n if (source === 'deviceOrientation') {\r\n let value: number;\r\n switch (screenOrientation.value.orientationType) {\r\n case 'landscape-primary':\r\n value = deviceOrientation.value.gamma! / 90;\r\n break;\r\n case 'landscape-secondary':\r\n value = -deviceOrientation.value.gamma! / 90;\r\n break;\r\n case 'portrait-primary':\r\n value = -deviceOrientation.value.beta! / 90;\r\n break;\r\n case 'portrait-secondary':\r\n value = deviceOrientation.value.beta! / 90;\r\n break;\r\n default:\r\n value = -deviceOrientation.value.beta! / 90;\r\n }\r\n return deviceOrientationRollAdjust(value);\r\n } else {\r\n const y = event.pageY - elementPositionY;\r\n const height = element.getBoundingClientRect().height;\r\n const value = -(y - height / 2) / height;\r\n return mouseRollAdjust(value);\r\n }\r\n };\r\n\r\n const getTilt = () => {\r\n const source = getSource();\r\n if (source === 'deviceOrientation') {\r\n let value: number;\r\n switch (screenOrientation.value.orientationType) {\r\n case 'landscape-primary':\r\n value = deviceOrientation.value.beta! / 90;\r\n break;\r\n case 'landscape-secondary':\r\n value = -deviceOrientation.value.beta! / 90;\r\n break;\r\n case 'portrait-primary':\r\n value = deviceOrientation.value.gamma! / 90;\r\n break;\r\n case 'portrait-secondary':\r\n value = -deviceOrientation.value.gamma! / 90;\r\n break;\r\n default:\r\n value = deviceOrientation.value.gamma! / 90;\r\n }\r\n return deviceOrientationTiltAdjust(value);\r\n } else {\r\n const x = event.pageX - elementPositionX;\r\n const width = element.getBoundingClientRect().width;\r\n const value = (x - width / 2) / width;\r\n return mouseTiltAdjust(value);\r\n }\r\n };\r\n\r\n const source = getSource();\r\n const roll = getRoll();\r\n const tilt = getTilt();\r\n\r\n setValue({\r\n roll,\r\n source,\r\n tilt\r\n });\r\n };\r\n\r\n document.addEventListener('mousemove', onMouseMove);\r\n return () => {\r\n document.removeEventListener('mousemove', onMouseMove);\r\n };\r\n }, [\r\n target && isTarget.getRawElement(target),\r\n internalRef.state,\r\n screenOrientation.value.angle,\r\n screenOrientation.value.orientationType,\r\n deviceOrientation.value.gamma,\r\n deviceOrientation.value.beta,\r\n deviceOrientation.value.alpha,\r\n deviceOrientation.value.absolute\r\n ]);\r\n\r\n if (target) return { value };\r\n\r\n return {\r\n ref: internalRef,\r\n value\r\n };\r\n}) as UseParallax;\r\n"],"names":["useParallax","params","target","isTarget","options","internalRef","useRefState","screenOrientation","useOrientation","deviceOrientation","useDeviceOrientation","deviceOrientationRollAdjust","value","deviceOrientationTiltAdjust","mouseRollAdjust","mouseTiltAdjust","setValue","useState","useEffect","element","onMouseMove","event","left","top","elementPositionX","elementPositionY","getSource","getRoll","y","height","getTilt","x","width","source","roll","tilt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useParallax.mjs","names":[],"sources":["../../../../src/hooks/useParallax/useParallax.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\r\n\r\nimport type { HookTarget } from '@/utils/helpers';\r\n\r\nimport { isTarget } from '@/utils/helpers';\r\n\r\nimport type { StateRef } from '../useRefState/useRefState';\r\n\r\nimport { useDeviceOrientation } from '../useDeviceOrientation/useDeviceOrientation';\r\nimport { useOrientation } from '../useOrientation/useOrientation';\r\nimport { useRefState } from '../useRefState/useRefState';\r\n\r\n/** The use parallax value type */\r\nexport interface UseParallaxValue {\r\n /** Roll value. Scaled to `-0.5 ~ 0.5` */\r\n roll: number;\r\n /** Sensor source, can be `mouse` or `deviceOrientation` */\r\n source: 'deviceOrientation' | 'mouse';\r\n /** Tilt value. Scaled to `-0.5 ~ 0.5` */\r\n tilt: number;\r\n}\r\n\r\n/** The use parallax options type */\r\nexport interface UseParallaxOptions {\r\n /** Device orientation roll adjust function */\r\n deviceOrientationRollAdjust?: (value: number) => number;\r\n /** Device orientation tilt adjust function */\r\n deviceOrientationTiltAdjust?: (value: number) => number;\r\n /** Mouse roll adjust function */\r\n mouseRollAdjust?: (value: number) => number;\r\n /** Mouse tilt adjust function */\r\n mouseTiltAdjust?: (value: number) => number;\r\n}\r\n\r\ninterface UseParallaxReturn {\r\n value: UseParallaxValue;\r\n}\r\n\r\nexport interface UseParallax {\r\n (target: HookTarget, options?: UseParallaxOptions): UseParallaxReturn;\r\n\r\n <Target extends Element>(\r\n options?: UseParallaxOptions,\r\n target?: never\r\n ): UseParallaxReturn & {\r\n ref: StateRef<Target>;\r\n };\r\n}\r\n\r\n/**\r\n * @name useParallax\r\n * @description - Hook to help create parallax effect\r\n * @category Sensors\r\n * @usage low\r\n *\r\n * @overload\r\n * @param {HookTarget} target The target element for the parallax effect\r\n * @param {UseParallaxOptions} options The options for the parallax effect\r\n * @returns {UseParallaxReturn} An object of parallax values\r\n *\r\n * @example\r\n * const { value } = useParallax(ref);\r\n *\r\n * @overload\r\n * @template Target The target element for the parallax effect\r\n * @param {UseParallaxOptions} options The options for the parallax effect\r\n * @returns {UseParallaxReturn & { ref: StateRef<Target> }} An object of parallax values\r\n *\r\n * @example\r\n * const { ref, value } = useParallax();\r\n */\r\nexport const useParallax = ((...params: any[]) => {\r\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\r\n const options = (params[1] ? params[1] : params[0]) as UseParallaxOptions | undefined;\r\n\r\n const internalRef = useRefState<Element>();\r\n\r\n const screenOrientation = useOrientation();\r\n const deviceOrientation = useDeviceOrientation();\r\n\r\n const {\r\n deviceOrientationRollAdjust = (value) => value,\r\n deviceOrientationTiltAdjust = (value) => value,\r\n mouseRollAdjust = (value) => value,\r\n mouseTiltAdjust = (value) => value\r\n } = (options ?? {}) as UseParallaxOptions;\r\n\r\n const [value, setValue] = useState({\r\n roll: 0,\r\n tilt: 0,\r\n source: 'mouse'\r\n });\r\n\r\n useEffect(() => {\r\n if (!target && !internalRef.state) return;\r\n\r\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\r\n if (!element) return;\r\n\r\n const onMouseMove = (event: MouseEvent) => {\r\n const { left, top } = element.getBoundingClientRect();\r\n const elementPositionX = left + window.scrollX;\r\n const elementPositionY = top + window.scrollY;\r\n\r\n const getSource = () => {\r\n const isDeviceOrientation =\r\n deviceOrientation.supported &&\r\n (deviceOrientation.value.alpha || deviceOrientation.value.gamma);\r\n\r\n if (isDeviceOrientation) return 'deviceOrientation';\r\n return 'mouse';\r\n };\r\n\r\n const getRoll = () => {\r\n const source = getSource();\r\n if (source === 'deviceOrientation') {\r\n let value: number;\r\n switch (screenOrientation.value.orientationType) {\r\n case 'landscape-primary':\r\n value = deviceOrientation.value.gamma! / 90;\r\n break;\r\n case 'landscape-secondary':\r\n value = -deviceOrientation.value.gamma! / 90;\r\n break;\r\n case 'portrait-primary':\r\n value = -deviceOrientation.value.beta! / 90;\r\n break;\r\n case 'portrait-secondary':\r\n value = deviceOrientation.value.beta! / 90;\r\n break;\r\n default:\r\n value = -deviceOrientation.value.beta! / 90;\r\n }\r\n return deviceOrientationRollAdjust(value);\r\n } else {\r\n const y = event.pageY - elementPositionY;\r\n const height = element.getBoundingClientRect().height;\r\n const value = -(y - height / 2) / height;\r\n return mouseRollAdjust(value);\r\n }\r\n };\r\n\r\n const getTilt = () => {\r\n const source = getSource();\r\n if (source === 'deviceOrientation') {\r\n let value: number;\r\n switch (screenOrientation.value.orientationType) {\r\n case 'landscape-primary':\r\n value = deviceOrientation.value.beta! / 90;\r\n break;\r\n case 'landscape-secondary':\r\n value = -deviceOrientation.value.beta! / 90;\r\n break;\r\n case 'portrait-primary':\r\n value = deviceOrientation.value.gamma! / 90;\r\n break;\r\n case 'portrait-secondary':\r\n value = -deviceOrientation.value.gamma! / 90;\r\n break;\r\n default:\r\n value = deviceOrientation.value.gamma! / 90;\r\n }\r\n return deviceOrientationTiltAdjust(value);\r\n } else {\r\n const x = event.pageX - elementPositionX;\r\n const width = element.getBoundingClientRect().width;\r\n const value = (x - width / 2) / width;\r\n return mouseTiltAdjust(value);\r\n }\r\n };\r\n\r\n const source = getSource();\r\n const roll = getRoll();\r\n const tilt = getTilt();\r\n\r\n setValue({\r\n roll,\r\n source,\r\n tilt\r\n });\r\n };\r\n\r\n document.addEventListener('mousemove', onMouseMove);\r\n return () => {\r\n document.removeEventListener('mousemove', onMouseMove);\r\n };\r\n }, [\r\n target && isTarget.getRawElement(target),\r\n internalRef.state,\r\n screenOrientation.value.angle,\r\n screenOrientation.value.orientationType,\r\n deviceOrientation.value.gamma,\r\n deviceOrientation.value.beta,\r\n deviceOrientation.value.alpha,\r\n deviceOrientation.value.absolute\r\n ]);\r\n\r\n if (target) return { value };\r\n\r\n return {\r\n ref: internalRef,\r\n value\r\n };\r\n}) as UseParallax;\r\n"],"mappings":";;;;;;AAuEA,IAAa,MAAgB,GAAG,MAAkB;CAChD,IAAM,IAAU,EAAS,EAAO,GAAG,GAAG,EAAO,KAAK,KAAA,GAC5C,IAAW,EAAO,KAAK,EAAO,KAAK,EAAO,IAE1C,IAAc,GAAsB,EAEpC,IAAoB,GAAgB,EACpC,IAAoB,GAAsB,EAE1C,EACJ,kCAA+B,MAAU,GACzC,kCAA+B,MAAU,GACzC,sBAAmB,MAAU,GAC7B,sBAAmB,MAAU,MAC1B,KAAW,EAAE,EAEZ,CAAC,GAAO,KAAY,EAAS;EACjC,MAAM;EACN,MAAM;EACN,QAAQ;EACT,CAAC;AA4GF,QA1GA,QAAgB;AACd,MAAI,CAAC,KAAU,CAAC,EAAY,MAAO;EAEnC,IAAM,IAAW,IAAS,EAAS,WAAW,EAAO,GAAG,EAAY;AACpE,MAAI,CAAC,EAAS;EAEd,IAAM,KAAe,MAAsB;GACzC,IAAM,EAAE,SAAM,WAAQ,EAAQ,uBAAuB,EAC/C,IAAmB,IAAO,OAAO,SACjC,IAAmB,IAAM,OAAO,SAEhC,UAEF,EAAkB,cACjB,EAAkB,MAAM,SAAS,EAAkB,MAAM,SAE5B,sBACzB,SAGH,UAAgB;AAEpB,QADe,GAAW,KACX,qBAAqB;KAClC,IAAI;AACJ,aAAQ,EAAkB,MAAM,iBAAhC;MACE,KAAK;AACH,WAAQ,EAAkB,MAAM,QAAS;AACzC;MACF,KAAK;AACH,WAAQ,CAAC,EAAkB,MAAM,QAAS;AAC1C;MACF,KAAK;AACH,WAAQ,CAAC,EAAkB,MAAM,OAAQ;AACzC;MACF,KAAK;AACH,WAAQ,EAAkB,MAAM,OAAQ;AACxC;MACF,QACE,KAAQ,CAAC,EAAkB,MAAM,OAAQ;;AAE7C,YAAO,EAA4B,EAAM;WACpC;KACL,IAAM,IAAI,EAAM,QAAQ,GAClB,IAAS,EAAQ,uBAAuB,CAAC;AAE/C,YAAO,EADO,EAAE,IAAI,IAAS,KAAK,EACL;;MAI3B,UAAgB;AAEpB,QADe,GAAW,KACX,qBAAqB;KAClC,IAAI;AACJ,aAAQ,EAAkB,MAAM,iBAAhC;MACE,KAAK;AACH,WAAQ,EAAkB,MAAM,OAAQ;AACxC;MACF,KAAK;AACH,WAAQ,CAAC,EAAkB,MAAM,OAAQ;AACzC;MACF,KAAK;AACH,WAAQ,EAAkB,MAAM,QAAS;AACzC;MACF,KAAK;AACH,WAAQ,CAAC,EAAkB,MAAM,QAAS;AAC1C;MACF,QACE,KAAQ,EAAkB,MAAM,QAAS;;AAE7C,YAAO,EAA4B,EAAM;WACpC;KACL,IAAM,IAAI,EAAM,QAAQ,GAClB,IAAQ,EAAQ,uBAAuB,CAAC;AAE9C,YAAO,GADQ,IAAI,IAAQ,KAAK,EACH;;MAI3B,IAAS,GAAW;AAI1B,KAAS;IACP,MAJW,GAAS;IAKpB;IACA,MALW,GAAS;IAMrB,CAAC;;AAIJ,SADA,SAAS,iBAAiB,aAAa,EAAY,QACtC;AACX,YAAS,oBAAoB,aAAa,EAAY;;IAEvD;EACD,KAAU,EAAS,cAAc,EAAO;EACxC,EAAY;EACZ,EAAkB,MAAM;EACxB,EAAkB,MAAM;EACxB,EAAkB,MAAM;EACxB,EAAkB,MAAM;EACxB,EAAkB,MAAM;EACxB,EAAkB,MAAM;EACzB,CAAC,EAEE,IAAe,EAAE,UAAO,GAErB;EACL,KAAK;EACL;EACD"}
|