@siberiacancode/reactuse 0.3.15 → 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.
Files changed (705) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/cjs/helpers/createContext/createContext.cjs +2 -2
  3. package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
  4. package/dist/cjs/helpers/createContextHook/createContextHook.cjs +2 -2
  5. package/dist/cjs/helpers/createContextHook/createContextHook.cjs.map +1 -1
  6. package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs +2 -2
  7. package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs.map +1 -1
  8. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs +2 -2
  9. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -1
  10. package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs +2 -2
  11. package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs.map +1 -1
  12. package/dist/cjs/helpers/createStore/createStore.cjs +2 -2
  13. package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
  14. package/dist/cjs/helpers/makeDestructurable/makeDestructurable.cjs +2 -0
  15. package/dist/cjs/helpers/makeDestructurable/makeDestructurable.cjs.map +1 -0
  16. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs +2 -2
  17. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
  18. package/dist/cjs/hooks/useAsync/useAsync.cjs +2 -2
  19. package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
  20. package/dist/cjs/hooks/useAsyncEffect/useAsyncEffect.cjs +2 -2
  21. package/dist/cjs/hooks/useAsyncEffect/useAsyncEffect.cjs.map +1 -1
  22. package/dist/cjs/hooks/useAudio/useAudio.cjs +2 -2
  23. package/dist/cjs/hooks/useAudio/useAudio.cjs.map +1 -1
  24. package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs +2 -2
  25. package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs.map +1 -1
  26. package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs +2 -2
  27. package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs.map +1 -1
  28. package/dist/cjs/hooks/useBattery/useBattery.cjs +2 -2
  29. package/dist/cjs/hooks/useBattery/useBattery.cjs.map +1 -1
  30. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +2 -2
  31. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs.map +1 -1
  32. package/dist/cjs/hooks/useBoolean/useBoolean.cjs +2 -2
  33. package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
  34. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs +2 -2
  35. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
  36. package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs +2 -2
  37. package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs.map +1 -1
  38. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs +2 -2
  39. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
  40. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs +2 -2
  41. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  42. package/dist/cjs/hooks/useClipboard/useClipboard.cjs +2 -2
  43. package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
  44. package/dist/cjs/hooks/useConst/useConst.cjs +2 -2
  45. package/dist/cjs/hooks/useConst/useConst.cjs.map +1 -1
  46. package/dist/cjs/hooks/useControllableState/useControllableState.cjs +2 -2
  47. package/dist/cjs/hooks/useControllableState/useControllableState.cjs.map +1 -1
  48. package/dist/cjs/hooks/useCookie/useCookie.cjs +2 -2
  49. package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
  50. package/dist/cjs/hooks/useCookies/useCookies.cjs +2 -2
  51. package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
  52. package/dist/cjs/hooks/useCopy/useCopy.cjs +2 -2
  53. package/dist/cjs/hooks/useCopy/useCopy.cjs.map +1 -1
  54. package/dist/cjs/hooks/useCounter/useCounter.cjs +2 -2
  55. package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
  56. package/dist/cjs/hooks/useCssVar/useCssVar.cjs +2 -2
  57. package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
  58. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs +2 -2
  59. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs.map +1 -1
  60. package/dist/cjs/hooks/useDebounceEffect/useDebounceEffect.cjs +2 -2
  61. package/dist/cjs/hooks/useDebounceEffect/useDebounceEffect.cjs.map +1 -1
  62. package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs +2 -2
  63. package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs.map +1 -1
  64. package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs +2 -2
  65. package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs.map +1 -1
  66. package/dist/cjs/hooks/useDefault/useDefault.cjs +2 -2
  67. package/dist/cjs/hooks/useDefault/useDefault.cjs.map +1 -1
  68. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs +2 -2
  69. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs.map +1 -1
  70. package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs +2 -2
  71. package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs.map +1 -1
  72. package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs +2 -2
  73. package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs.map +1 -1
  74. package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs +2 -2
  75. package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs.map +1 -1
  76. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs +2 -2
  77. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs.map +1 -1
  78. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs +2 -2
  79. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
  80. package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs +2 -2
  81. package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
  82. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs +2 -2
  83. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs.map +1 -1
  84. package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs +2 -2
  85. package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs.map +1 -1
  86. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +2 -2
  87. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
  88. package/dist/cjs/hooks/useDropZone/useDropZone.cjs +2 -2
  89. package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -1
  90. package/dist/cjs/hooks/useEvent/useEvent.cjs +2 -2
  91. package/dist/cjs/hooks/useEvent/useEvent.cjs.map +1 -1
  92. package/dist/cjs/hooks/useEventListener/useEventListener.cjs +2 -2
  93. package/dist/cjs/hooks/useEventListener/useEventListener.cjs.map +1 -1
  94. package/dist/cjs/hooks/useEventSource/useEventSource.cjs +2 -2
  95. package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -1
  96. package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs +2 -2
  97. package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs.map +1 -1
  98. package/dist/cjs/hooks/useFavicon/useFavicon.cjs +2 -2
  99. package/dist/cjs/hooks/useFavicon/useFavicon.cjs.map +1 -1
  100. package/dist/cjs/hooks/useField/useField.cjs +2 -2
  101. package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
  102. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs +2 -2
  103. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs.map +1 -1
  104. package/dist/cjs/hooks/useFileSystemAccess/useFileSystemAccess.cjs +2 -0
  105. package/dist/cjs/hooks/useFileSystemAccess/useFileSystemAccess.cjs.map +1 -0
  106. package/dist/cjs/hooks/useFocus/useFocus.cjs +2 -2
  107. package/dist/cjs/hooks/useFocus/useFocus.cjs.map +1 -1
  108. package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs +2 -2
  109. package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs.map +1 -1
  110. package/dist/cjs/hooks/useFps/useFps.cjs +2 -2
  111. package/dist/cjs/hooks/useFps/useFps.cjs.map +1 -1
  112. package/dist/cjs/hooks/useFul/useFul.cjs +2 -2
  113. package/dist/cjs/hooks/useFul/useFul.cjs.map +1 -1
  114. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs +2 -2
  115. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs.map +1 -1
  116. package/dist/cjs/hooks/useGamepad/useGamepad.cjs +2 -2
  117. package/dist/cjs/hooks/useGamepad/useGamepad.cjs.map +1 -1
  118. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs +2 -2
  119. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs.map +1 -1
  120. package/dist/cjs/hooks/useHash/useHash.cjs +2 -2
  121. package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
  122. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs +2 -2
  123. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs.map +1 -1
  124. package/dist/cjs/hooks/useHover/useHover.cjs +2 -2
  125. package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
  126. package/dist/cjs/hooks/useIdle/useIdle.cjs +2 -2
  127. package/dist/cjs/hooks/useIdle/useIdle.cjs.map +1 -1
  128. package/dist/cjs/hooks/useImage/useImage.cjs +2 -2
  129. package/dist/cjs/hooks/useImage/useImage.cjs.map +1 -1
  130. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +2 -2
  131. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
  132. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +2 -2
  133. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  134. package/dist/cjs/hooks/useInterval/useInterval.cjs +2 -2
  135. package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
  136. package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs +2 -2
  137. package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs.map +1 -1
  138. package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +2 -2
  139. package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs.map +1 -1
  140. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +2 -2
  141. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
  142. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs +2 -2
  143. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs.map +1 -1
  144. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs +2 -2
  145. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs.map +1 -1
  146. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +2 -2
  147. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
  148. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs +2 -2
  149. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs.map +1 -1
  150. package/dist/cjs/hooks/useLatest/useLatest.cjs +2 -2
  151. package/dist/cjs/hooks/useLatest/useLatest.cjs.map +1 -1
  152. package/dist/cjs/hooks/useLess/useLess.cjs +2 -2
  153. package/dist/cjs/hooks/useLess/useLess.cjs.map +1 -1
  154. package/dist/cjs/hooks/useList/useList.cjs +2 -2
  155. package/dist/cjs/hooks/useList/useList.cjs.map +1 -1
  156. package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs +2 -2
  157. package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
  158. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs +2 -2
  159. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs.map +1 -1
  160. package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs +2 -2
  161. package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs.map +1 -1
  162. package/dist/cjs/hooks/useLogger/useLogger.cjs +2 -2
  163. package/dist/cjs/hooks/useLogger/useLogger.cjs.map +1 -1
  164. package/dist/cjs/hooks/useLongPress/useLongPress.cjs +2 -2
  165. package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
  166. package/dist/cjs/hooks/useMap/useMap.cjs +2 -2
  167. package/dist/cjs/hooks/useMap/useMap.cjs.map +1 -1
  168. package/dist/cjs/hooks/useMeasure/useMeasure.cjs +2 -2
  169. package/dist/cjs/hooks/useMeasure/useMeasure.cjs.map +1 -1
  170. package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs +2 -2
  171. package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs.map +1 -1
  172. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs +2 -2
  173. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs.map +1 -1
  174. package/dist/cjs/hooks/useMemory/useMemory.cjs +2 -2
  175. package/dist/cjs/hooks/useMemory/useMemory.cjs.map +1 -1
  176. package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs +2 -2
  177. package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs.map +1 -1
  178. package/dist/cjs/hooks/useMount/useMount.cjs +2 -2
  179. package/dist/cjs/hooks/useMount/useMount.cjs.map +1 -1
  180. package/dist/cjs/hooks/useMouse/useMouse.cjs +2 -2
  181. package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
  182. package/dist/cjs/hooks/useMutation/useMutation.cjs +2 -2
  183. package/dist/cjs/hooks/useMutation/useMutation.cjs.map +1 -1
  184. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs +2 -2
  185. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  186. package/dist/cjs/hooks/useNetwork/useNetwork.cjs +2 -2
  187. package/dist/cjs/hooks/useNetwork/useNetwork.cjs.map +1 -1
  188. package/dist/cjs/hooks/useObjectUrl/useObjectUrl.cjs +2 -0
  189. package/dist/cjs/hooks/useObjectUrl/useObjectUrl.cjs.map +1 -0
  190. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs +2 -2
  191. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
  192. package/dist/cjs/hooks/useOnce/useOnce.cjs +2 -2
  193. package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
  194. package/dist/cjs/hooks/useOnline/useOnline.cjs +2 -2
  195. package/dist/cjs/hooks/useOnline/useOnline.cjs.map +1 -1
  196. package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs +2 -2
  197. package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs.map +1 -1
  198. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs +2 -2
  199. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
  200. package/dist/cjs/hooks/useOrientation/useOrientation.cjs +2 -2
  201. package/dist/cjs/hooks/useOrientation/useOrientation.cjs.map +1 -1
  202. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs +2 -2
  203. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs.map +1 -1
  204. package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs +2 -2
  205. package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs.map +1 -1
  206. package/dist/cjs/hooks/usePaint/usePaint.cjs +2 -2
  207. package/dist/cjs/hooks/usePaint/usePaint.cjs.map +1 -1
  208. package/dist/cjs/hooks/useParallax/useParallax.cjs +2 -2
  209. package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
  210. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +2 -2
  211. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
  212. package/dist/cjs/hooks/usePermission/usePermission.cjs +2 -2
  213. package/dist/cjs/hooks/usePermission/usePermission.cjs.map +1 -1
  214. package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs +2 -2
  215. package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs.map +1 -1
  216. package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs +2 -2
  217. package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs.map +1 -1
  218. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs +2 -2
  219. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
  220. package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs +2 -2
  221. package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs.map +1 -1
  222. package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs +2 -2
  223. package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs.map +1 -1
  224. package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs +2 -2
  225. package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs.map +1 -1
  226. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs +2 -2
  227. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs.map +1 -1
  228. package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs +2 -2
  229. package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs.map +1 -1
  230. package/dist/cjs/hooks/usePrevious/usePrevious.cjs +2 -2
  231. package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
  232. package/dist/cjs/hooks/useProgress/useProgress.cjs +2 -2
  233. package/dist/cjs/hooks/useProgress/useProgress.cjs.map +1 -1
  234. package/dist/cjs/hooks/useQuery/useQuery.cjs +2 -2
  235. package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
  236. package/dist/cjs/hooks/useQueue/useQueue.cjs +2 -2
  237. package/dist/cjs/hooks/useQueue/useQueue.cjs.map +1 -1
  238. package/dist/cjs/hooks/useRaf/useRaf.cjs +2 -2
  239. package/dist/cjs/hooks/useRaf/useRaf.cjs.map +1 -1
  240. package/dist/cjs/hooks/useRafState/useRafState.cjs +2 -2
  241. package/dist/cjs/hooks/useRafState/useRafState.cjs.map +1 -1
  242. package/dist/cjs/hooks/useRefState/useRefState.cjs +2 -2
  243. package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
  244. package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs +2 -2
  245. package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs.map +1 -1
  246. package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs +2 -2
  247. package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs.map +1 -1
  248. package/dist/cjs/hooks/useRerender/useRerender.cjs +2 -2
  249. package/dist/cjs/hooks/useRerender/useRerender.cjs.map +1 -1
  250. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +2 -2
  251. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
  252. package/dist/cjs/hooks/useRightClick/useRightClick.cjs +2 -2
  253. package/dist/cjs/hooks/useRightClick/useRightClick.cjs.map +1 -1
  254. package/dist/cjs/hooks/useScript/useScript.cjs +2 -2
  255. package/dist/cjs/hooks/useScript/useScript.cjs.map +1 -1
  256. package/dist/cjs/hooks/useScroll/useScroll.cjs +2 -2
  257. package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
  258. package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs +2 -2
  259. package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
  260. package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs +2 -2
  261. package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs.map +1 -1
  262. package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs +2 -2
  263. package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs.map +1 -1
  264. package/dist/cjs/hooks/useSet/useSet.cjs +2 -2
  265. package/dist/cjs/hooks/useSet/useSet.cjs.map +1 -1
  266. package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs +2 -2
  267. package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs.map +1 -1
  268. package/dist/cjs/hooks/useShare/useShare.cjs +2 -2
  269. package/dist/cjs/hooks/useShare/useShare.cjs.map +1 -1
  270. package/dist/cjs/hooks/useSize/useSize.cjs +2 -2
  271. package/dist/cjs/hooks/useSize/useSize.cjs.map +1 -1
  272. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +2 -2
  273. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -1
  274. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs +2 -2
  275. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs.map +1 -1
  276. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs +2 -2
  277. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs.map +1 -1
  278. package/dist/cjs/hooks/useStep/useStep.cjs +2 -2
  279. package/dist/cjs/hooks/useStep/useStep.cjs.map +1 -1
  280. package/dist/cjs/hooks/useSticky/useSticky.cjs +2 -2
  281. package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
  282. package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs +2 -2
  283. package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs.map +1 -1
  284. package/dist/cjs/hooks/useStorage/useStorage.cjs +2 -2
  285. package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
  286. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +2 -2
  287. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
  288. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs +2 -2
  289. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs.map +1 -1
  290. package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs +2 -2
  291. package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs.map +1 -1
  292. package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs +2 -2
  293. package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs.map +1 -1
  294. package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs +2 -2
  295. package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs.map +1 -1
  296. package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs +2 -2
  297. package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs.map +1 -1
  298. package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs +2 -2
  299. package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs.map +1 -1
  300. package/dist/cjs/hooks/useTime/useTime.cjs +2 -2
  301. package/dist/cjs/hooks/useTime/useTime.cjs.map +1 -1
  302. package/dist/cjs/hooks/useTimeout/useTimeout.cjs +2 -2
  303. package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
  304. package/dist/cjs/hooks/useTimer/useTimer.cjs +2 -2
  305. package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
  306. package/dist/cjs/hooks/useToggle/useToggle.cjs +2 -2
  307. package/dist/cjs/hooks/useToggle/useToggle.cjs.map +1 -1
  308. package/dist/cjs/hooks/useUnmount/useUnmount.cjs +2 -2
  309. package/dist/cjs/hooks/useUnmount/useUnmount.cjs.map +1 -1
  310. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs +2 -2
  311. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
  312. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs +2 -2
  313. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
  314. package/dist/cjs/hooks/useVibrate/useVibrate.cjs +2 -2
  315. package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
  316. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs +2 -2
  317. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs.map +1 -1
  318. package/dist/cjs/hooks/useVisibility/useVisibility.cjs +2 -2
  319. package/dist/cjs/hooks/useVisibility/useVisibility.cjs.map +1 -1
  320. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +2 -2
  321. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
  322. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +2 -2
  323. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
  324. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs +2 -2
  325. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
  326. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs +2 -2
  327. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
  328. package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs +2 -2
  329. package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs.map +1 -1
  330. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs +2 -2
  331. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs.map +1 -1
  332. package/dist/cjs/hooks/useWizard/useWizard.cjs +2 -2
  333. package/dist/cjs/hooks/useWizard/useWizard.cjs.map +1 -1
  334. package/dist/cjs/index.cjs +1 -2
  335. package/dist/cjs/utils/helpers/copy.cjs +2 -2
  336. package/dist/cjs/utils/helpers/copy.cjs.map +1 -1
  337. package/dist/cjs/utils/helpers/debounce.cjs +2 -2
  338. package/dist/cjs/utils/helpers/debounce.cjs.map +1 -1
  339. package/dist/cjs/utils/helpers/getDate.cjs +2 -2
  340. package/dist/cjs/utils/helpers/getDate.cjs.map +1 -1
  341. package/dist/cjs/utils/helpers/getRetry.cjs +2 -2
  342. package/dist/cjs/utils/helpers/getRetry.cjs.map +1 -1
  343. package/dist/cjs/utils/helpers/isTarget.cjs +2 -2
  344. package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
  345. package/dist/cjs/utils/helpers/throttle.cjs +2 -2
  346. package/dist/cjs/utils/helpers/throttle.cjs.map +1 -1
  347. package/dist/esm/helpers/createContext/createContext.mjs +32 -33
  348. package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
  349. package/dist/esm/helpers/createContextHook/createContextHook.mjs +19 -12
  350. package/dist/esm/helpers/createContextHook/createContextHook.mjs.map +1 -1
  351. package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs +34 -33
  352. package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs.map +1 -1
  353. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs +53 -53
  354. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -1
  355. package/dist/esm/helpers/createSharedHook/createSharedHook.mjs +36 -41
  356. package/dist/esm/helpers/createSharedHook/createSharedHook.mjs.map +1 -1
  357. package/dist/esm/helpers/createStore/createStore.mjs +25 -29
  358. package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
  359. package/dist/esm/helpers/makeDestructurable/makeDestructurable.mjs +21 -0
  360. package/dist/esm/helpers/makeDestructurable/makeDestructurable.mjs.map +1 -0
  361. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +28 -27
  362. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
  363. package/dist/esm/hooks/useAsync/useAsync.mjs +22 -21
  364. package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
  365. package/dist/esm/hooks/useAsyncEffect/useAsyncEffect.mjs +10 -9
  366. package/dist/esm/hooks/useAsyncEffect/useAsyncEffect.mjs.map +1 -1
  367. package/dist/esm/hooks/useAudio/useAudio.mjs +55 -55
  368. package/dist/esm/hooks/useAudio/useAudio.mjs.map +1 -1
  369. package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs +43 -40
  370. package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
  371. package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs +20 -19
  372. package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs.map +1 -1
  373. package/dist/esm/hooks/useBattery/useBattery.mjs +32 -29
  374. package/dist/esm/hooks/useBattery/useBattery.mjs.map +1 -1
  375. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs +35 -33
  376. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs.map +1 -1
  377. package/dist/esm/hooks/useBoolean/useBoolean.mjs +9 -8
  378. package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
  379. package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs +90 -104
  380. package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
  381. package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs +30 -31
  382. package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs.map +1 -1
  383. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs +7 -6
  384. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
  385. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs +21 -21
  386. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
  387. package/dist/esm/hooks/useClipboard/useClipboard.mjs +25 -23
  388. package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
  389. package/dist/esm/hooks/useConst/useConst.mjs +7 -6
  390. package/dist/esm/hooks/useConst/useConst.mjs.map +1 -1
  391. package/dist/esm/hooks/useControllableState/useControllableState.mjs +18 -16
  392. package/dist/esm/hooks/useControllableState/useControllableState.mjs.map +1 -1
  393. package/dist/esm/hooks/useCookie/useCookie.mjs +53 -56
  394. package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
  395. package/dist/esm/hooks/useCookies/useCookies.mjs +38 -37
  396. package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
  397. package/dist/esm/hooks/useCopy/useCopy.mjs +15 -10
  398. package/dist/esm/hooks/useCopy/useCopy.mjs.map +1 -1
  399. package/dist/esm/hooks/useCounter/useCounter.mjs +26 -22
  400. package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
  401. package/dist/esm/hooks/useCssVar/useCssVar.mjs +42 -32
  402. package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
  403. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs +18 -17
  404. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs.map +1 -1
  405. package/dist/esm/hooks/useDebounceEffect/useDebounceEffect.mjs +19 -18
  406. package/dist/esm/hooks/useDebounceEffect/useDebounceEffect.mjs.map +1 -1
  407. package/dist/esm/hooks/useDebounceState/useDebounceState.mjs +10 -9
  408. package/dist/esm/hooks/useDebounceState/useDebounceState.mjs.map +1 -1
  409. package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs +12 -11
  410. package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs.map +1 -1
  411. package/dist/esm/hooks/useDefault/useDefault.mjs +9 -8
  412. package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
  413. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs +49 -36
  414. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
  415. package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs +28 -27
  416. package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs.map +1 -1
  417. package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs +18 -14
  418. package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs.map +1 -1
  419. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs +15 -18
  420. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
  421. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs +14 -8
  422. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
  423. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs +39 -39
  424. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
  425. package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs +8 -7
  426. package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
  427. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs +28 -27
  428. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
  429. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs +9 -8
  430. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs.map +1 -1
  431. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +25 -28
  432. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
  433. package/dist/esm/hooks/useDropZone/useDropZone.mjs +55 -47
  434. package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
  435. package/dist/esm/hooks/useEvent/useEvent.mjs +12 -11
  436. package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
  437. package/dist/esm/hooks/useEventListener/useEventListener.mjs +24 -19
  438. package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
  439. package/dist/esm/hooks/useEventSource/useEventSource.mjs +44 -49
  440. package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
  441. package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs +17 -16
  442. package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs.map +1 -1
  443. package/dist/esm/hooks/useFavicon/useFavicon.mjs +20 -18
  444. package/dist/esm/hooks/useFavicon/useFavicon.mjs.map +1 -1
  445. package/dist/esm/hooks/useField/useField.mjs +61 -67
  446. package/dist/esm/hooks/useField/useField.mjs.map +1 -1
  447. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs +34 -32
  448. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
  449. package/dist/esm/hooks/useFileSystemAccess/useFileSystemAccess.mjs +59 -0
  450. package/dist/esm/hooks/useFileSystemAccess/useFileSystemAccess.mjs.map +1 -0
  451. package/dist/esm/hooks/useFocus/useFocus.mjs +43 -34
  452. package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
  453. package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs +51 -36
  454. package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs.map +1 -1
  455. package/dist/esm/hooks/useFps/useFps.mjs +18 -22
  456. package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
  457. package/dist/esm/hooks/useFul/useFul.mjs +8 -7
  458. package/dist/esm/hooks/useFul/useFul.mjs.map +1 -1
  459. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs +39 -42
  460. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
  461. package/dist/esm/hooks/useGamepad/useGamepad.mjs +76 -83
  462. package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
  463. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs +50 -45
  464. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs.map +1 -1
  465. package/dist/esm/hooks/useHash/useHash.mjs +24 -26
  466. package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
  467. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs +35 -37
  468. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
  469. package/dist/esm/hooks/useHover/useHover.mjs +30 -25
  470. package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
  471. package/dist/esm/hooks/useIdle/useIdle.mjs +29 -26
  472. package/dist/esm/hooks/useIdle/useIdle.mjs.map +1 -1
  473. package/dist/esm/hooks/useImage/useImage.mjs +24 -26
  474. package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
  475. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +38 -32
  476. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
  477. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +38 -37
  478. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
  479. package/dist/esm/hooks/useInterval/useInterval.mjs +20 -20
  480. package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
  481. package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs +8 -7
  482. package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs.map +1 -1
  483. package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +7 -6
  484. package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs.map +1 -1
  485. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +30 -26
  486. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
  487. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs +33 -35
  488. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
  489. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs +16 -19
  490. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
  491. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +36 -25
  492. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
  493. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs +10 -9
  494. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
  495. package/dist/esm/hooks/useLatest/useLatest.mjs +14 -16
  496. package/dist/esm/hooks/useLatest/useLatest.mjs.map +1 -1
  497. package/dist/esm/hooks/useLess/useLess.mjs +9 -8
  498. package/dist/esm/hooks/useLess/useLess.mjs.map +1 -1
  499. package/dist/esm/hooks/useList/useList.mjs +22 -22
  500. package/dist/esm/hooks/useList/useList.mjs.map +1 -1
  501. package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs +10 -9
  502. package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs.map +1 -1
  503. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs +18 -17
  504. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
  505. package/dist/esm/hooks/useLockScroll/useLockScroll.mjs +44 -39
  506. package/dist/esm/hooks/useLockScroll/useLockScroll.mjs.map +1 -1
  507. package/dist/esm/hooks/useLogger/useLogger.mjs +10 -9
  508. package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
  509. package/dist/esm/hooks/useLongPress/useLongPress.mjs +30 -26
  510. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  511. package/dist/esm/hooks/useMap/useMap.mjs +21 -20
  512. package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
  513. package/dist/esm/hooks/useMeasure/useMeasure.mjs +45 -32
  514. package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
  515. package/dist/esm/hooks/useMediaControls/useMediaControls.mjs +67 -68
  516. package/dist/esm/hooks/useMediaControls/useMediaControls.mjs.map +1 -1
  517. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs +12 -17
  518. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
  519. package/dist/esm/hooks/useMemory/useMemory.mjs +20 -18
  520. package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
  521. package/dist/esm/hooks/useMergedRef/useMergedRef.mjs +23 -25
  522. package/dist/esm/hooks/useMergedRef/useMergedRef.mjs.map +1 -1
  523. package/dist/esm/hooks/useMount/useMount.mjs +7 -6
  524. package/dist/esm/hooks/useMount/useMount.mjs.map +1 -1
  525. package/dist/esm/hooks/useMouse/useMouse.mjs +61 -58
  526. package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
  527. package/dist/esm/hooks/useMutation/useMutation.mjs +63 -60
  528. package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
  529. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +35 -34
  530. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
  531. package/dist/esm/hooks/useNetwork/useNetwork.mjs +47 -48
  532. package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
  533. package/dist/esm/hooks/useObjectUrl/useObjectUrl.mjs +20 -0
  534. package/dist/esm/hooks/useObjectUrl/useObjectUrl.mjs.map +1 -0
  535. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs +50 -40
  536. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
  537. package/dist/esm/hooks/useOnce/useOnce.mjs +13 -13
  538. package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
  539. package/dist/esm/hooks/useOnline/useOnline.mjs +9 -8
  540. package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
  541. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs +12 -12
  542. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
  543. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs +14 -13
  544. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
  545. package/dist/esm/hooks/useOrientation/useOrientation.mjs +30 -29
  546. package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
  547. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +28 -25
  548. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
  549. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs +15 -14
  550. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs.map +1 -1
  551. package/dist/esm/hooks/usePaint/usePaint.mjs +139 -151
  552. package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
  553. package/dist/esm/hooks/useParallax/useParallax.mjs +90 -96
  554. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  555. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +29 -23
  556. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
  557. package/dist/esm/hooks/usePermission/usePermission.mjs +25 -27
  558. package/dist/esm/hooks/usePermission/usePermission.mjs.map +1 -1
  559. package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs +42 -38
  560. package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs.map +1 -1
  561. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs +31 -30
  562. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
  563. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs +22 -23
  564. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
  565. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs +8 -7
  566. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
  567. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs +8 -7
  568. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
  569. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs +6 -5
  570. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
  571. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs +9 -8
  572. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
  573. package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs +6 -5
  574. package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs.map +1 -1
  575. package/dist/esm/hooks/usePrevious/usePrevious.mjs +9 -8
  576. package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
  577. package/dist/esm/hooks/useProgress/useProgress.mjs +28 -24
  578. package/dist/esm/hooks/useProgress/useProgress.mjs.map +1 -1
  579. package/dist/esm/hooks/useQuery/useQuery.mjs +61 -52
  580. package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
  581. package/dist/esm/hooks/useQueue/useQueue.mjs +23 -22
  582. package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
  583. package/dist/esm/hooks/useRaf/useRaf.mjs +32 -29
  584. package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
  585. package/dist/esm/hooks/useRafState/useRafState.mjs +12 -11
  586. package/dist/esm/hooks/useRafState/useRafState.mjs.map +1 -1
  587. package/dist/esm/hooks/useRefState/useRefState.mjs +24 -24
  588. package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
  589. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs +11 -10
  590. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
  591. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs +14 -13
  592. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
  593. package/dist/esm/hooks/useRerender/useRerender.mjs +6 -5
  594. package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
  595. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +33 -24
  596. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
  597. package/dist/esm/hooks/useRightClick/useRightClick.mjs +37 -34
  598. package/dist/esm/hooks/useRightClick/useRightClick.mjs.map +1 -1
  599. package/dist/esm/hooks/useScript/useScript.mjs +28 -31
  600. package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
  601. package/dist/esm/hooks/useScroll/useScroll.mjs +95 -81
  602. package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
  603. package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs +33 -34
  604. package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
  605. package/dist/esm/hooks/useScrollTo/useScrollTo.mjs +33 -21
  606. package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
  607. package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs +10 -9
  608. package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs.map +1 -1
  609. package/dist/esm/hooks/useSet/useSet.mjs +30 -29
  610. package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
  611. package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs +20 -22
  612. package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs.map +1 -1
  613. package/dist/esm/hooks/useShare/useShare.mjs +18 -14
  614. package/dist/esm/hooks/useShare/useShare.mjs.map +1 -1
  615. package/dist/esm/hooks/useSize/useSize.mjs +40 -30
  616. package/dist/esm/hooks/useSize/useSize.mjs.map +1 -1
  617. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +34 -44
  618. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
  619. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +65 -64
  620. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
  621. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs +96 -84
  622. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
  623. package/dist/esm/hooks/useStep/useStep.mjs +27 -28
  624. package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
  625. package/dist/esm/hooks/useSticky/useSticky.mjs +36 -30
  626. package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
  627. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs +59 -57
  628. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
  629. package/dist/esm/hooks/useStorage/useStorage.mjs +61 -62
  630. package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
  631. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +35 -30
  632. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
  633. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs +25 -27
  634. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs.map +1 -1
  635. package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs +53 -52
  636. package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs.map +1 -1
  637. package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs +18 -17
  638. package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs.map +1 -1
  639. package/dist/esm/hooks/useThrottleEffect/useThrottleEffect.mjs +21 -21
  640. package/dist/esm/hooks/useThrottleEffect/useThrottleEffect.mjs.map +1 -1
  641. package/dist/esm/hooks/useThrottleState/useThrottleState.mjs +10 -9
  642. package/dist/esm/hooks/useThrottleState/useThrottleState.mjs.map +1 -1
  643. package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs +12 -11
  644. package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs.map +1 -1
  645. package/dist/esm/hooks/useTime/useTime.mjs +14 -13
  646. package/dist/esm/hooks/useTime/useTime.mjs.map +1 -1
  647. package/dist/esm/hooks/useTimeout/useTimeout.mjs +19 -15
  648. package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
  649. package/dist/esm/hooks/useTimer/useTimer.mjs +61 -66
  650. package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
  651. package/dist/esm/hooks/useToggle/useToggle.mjs +12 -11
  652. package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
  653. package/dist/esm/hooks/useUnmount/useUnmount.mjs +11 -13
  654. package/dist/esm/hooks/useUnmount/useUnmount.mjs.map +1 -1
  655. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs +66 -76
  656. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
  657. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +50 -60
  658. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
  659. package/dist/esm/hooks/useVibrate/useVibrate.mjs +28 -21
  660. package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
  661. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs +30 -29
  662. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs.map +1 -1
  663. package/dist/esm/hooks/useVisibility/useVisibility.mjs +41 -39
  664. package/dist/esm/hooks/useVisibility/useVisibility.mjs.map +1 -1
  665. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +28 -23
  666. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
  667. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +38 -35
  668. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
  669. package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs +7 -6
  670. package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
  671. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs +14 -13
  672. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
  673. package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs +29 -21
  674. package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
  675. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs +24 -23
  676. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs.map +1 -1
  677. package/dist/esm/hooks/useWizard/useWizard.mjs +25 -20
  678. package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
  679. package/dist/esm/index.mjs +173 -394
  680. package/dist/esm/utils/helpers/copy.mjs +18 -18
  681. package/dist/esm/utils/helpers/copy.mjs.map +1 -1
  682. package/dist/esm/utils/helpers/debounce.mjs +10 -10
  683. package/dist/esm/utils/helpers/debounce.mjs.map +1 -1
  684. package/dist/esm/utils/helpers/getDate.mjs +20 -16
  685. package/dist/esm/utils/helpers/getDate.mjs.map +1 -1
  686. package/dist/esm/utils/helpers/getRetry.mjs +6 -5
  687. package/dist/esm/utils/helpers/getRetry.mjs.map +1 -1
  688. package/dist/esm/utils/helpers/isTarget.mjs +10 -19
  689. package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
  690. package/dist/esm/utils/helpers/throttle.mjs +20 -20
  691. package/dist/esm/utils/helpers/throttle.mjs.map +1 -1
  692. package/dist/types/helpers/index.d.ts +1 -0
  693. package/dist/types/helpers/makeDestructurable/makeDestructurable.d.ts +16 -0
  694. package/dist/types/hooks/browser.d.ts +2 -0
  695. package/dist/types/hooks/useEventListener/useEventListener.d.ts +0 -22
  696. package/dist/types/hooks/useField/useField.d.ts +2 -2
  697. package/dist/types/hooks/useFileSystemAccess/useFileSystemAccess.d.ts +116 -0
  698. package/dist/types/hooks/useKeyboard/useKeyboard.d.ts +4 -2
  699. package/dist/types/hooks/useObjectUrl/useObjectUrl.d.ts +24 -0
  700. package/dist/types/hooks/usePerformanceObserver/usePerformanceObserver.d.ts +1 -0
  701. package/dist/types/hooks/useScrollIntoView/useScrollIntoView.d.ts +1 -1
  702. package/dist/types/hooks/useWebSocket/useWebSocket.d.ts +1 -0
  703. package/package.json +5 -5
  704. package/dist/cjs/index.cjs.map +0 -1
  705. package/dist/esm/index.mjs.map +0 -1
@@ -1,152 +1,140 @@
1
- import { useRef as P, useState as A, useEffect as B } from "react";
2
- import { useEvent as M } from "../useEvent/useEvent.mjs";
3
- import { useRefState as S } from "../useRefState/useRefState.mjs";
4
- import { isTarget as b } from "../../utils/helpers/isTarget.mjs";
5
- const U = 10;
6
- class x {
7
- x;
8
- y;
9
- constructor(t, e) {
10
- this.x = t, this.y = e;
11
- }
12
- update(t) {
13
- this.x = t.x, this.y = t.y;
14
- }
15
- getDifferenceTo(t) {
16
- return new x(this.x - t.x, this.y - t.y);
17
- }
18
- getDistanceTo(t) {
19
- const e = this.getDifferenceTo(t);
20
- return Math.sqrt(e.x ** 2 + e.y ** 2);
21
- }
22
- getAngleTo(t) {
23
- const e = this.getDifferenceTo(t);
24
- return Math.atan2(e.y, e.x);
25
- }
26
- equalsTo(t) {
27
- return this.x === t.x && this.y === t.y;
28
- }
29
- moveByAngle(t, e) {
30
- const o = t + Math.PI / 2;
31
- return this.x += Math.sin(o) * e, this.y -= Math.cos(o) * e, this;
32
- }
33
- }
34
- class q {
35
- pointer;
36
- brush;
37
- radius;
38
- smooth = !1;
39
- points = [];
40
- lines = [];
41
- constructor({ x: t, y: e, radius: o, smooth: h }) {
42
- this.smooth = h, this.pointer = new x(t, e), this.brush = new x(t, e), this.radius = o, this.points = [], this.lines = [];
43
- }
44
- getBrushCoordinates() {
45
- return {
46
- x: this.brush.x,
47
- y: this.brush.y
48
- };
49
- }
50
- getPointerCoordinates() {
51
- return {
52
- x: this.pointer.x,
53
- y: this.pointer.y
54
- };
55
- }
56
- update(t) {
57
- if (this.pointer.equalsTo(t)) return !1;
58
- if (this.pointer.update(t), !this.smooth)
59
- return this.brush.update(t), this.points.push(this.getBrushCoordinates()), !0;
60
- const e = this.pointer.getDistanceTo(this.brush), o = this.pointer.getAngleTo(this.brush);
61
- if (Math.round((e - this.radius) * 10) / 10 > 0) {
62
- const l = o + Math.PI / 2;
63
- return this.brush.update({
64
- x: this.brush.x + Math.sin(l) * (e - this.radius),
65
- y: this.brush.y - Math.cos(l) * (e - this.radius)
66
- }), this.points.push(this.getBrushCoordinates()), !0;
67
- }
68
- return !1;
69
- }
70
- }
71
- const Y = ((...p) => {
72
- const t = b(p[0]) ? p[0] : void 0, e = (t ? p[1] : p[0]) ?? {}, o = e?.color ?? "black", h = e?.opacity ?? 1, l = e?.radius ?? U, s = P(
73
- new q({
74
- x: 0,
75
- y: 0,
76
- radius: e?.radius ?? U,
77
- smooth: e?.smooth ?? !1
78
- })
79
- ), [m, w] = A(!1), g = S(), n = P(null), c = (r, u, f, a) => {
80
- if (!n.current) return;
81
- n.current.globalAlpha = f, n.current.strokeStyle = u, n.current.lineWidth = a * 2, n.current.lineCap = "round", n.current.lineJoin = "round";
82
- let i = r[0], y = r[1];
83
- n.current.beginPath();
84
- for (let d = 1; d < r.length; d += 1) {
85
- const C = {
86
- x: i.x + (y.x - i.x) / 2,
87
- y: i.y + (y.y - i.y) / 2
88
- };
89
- n.current.quadraticCurveTo(i.x, i.y, C.x, C.y), i = r[d], y = r[d + 1];
90
- }
91
- n.current.lineTo(i.x, i.y), n.current.stroke();
92
- }, v = () => {
93
- n.current && n.current.clearRect(
94
- 0,
95
- 0,
96
- n.current.canvas.width,
97
- n.current.canvas.height
98
- );
99
- }, E = M((r) => {
100
- if (!m) return;
101
- e?.onMouseMove?.(r, s.current);
102
- const u = { x: r.offsetX, y: r.offsetY };
103
- s.current.update(u) && n.current && (v(), n.current.clearRect(
104
- 0,
105
- 0,
106
- n.current.canvas.width,
107
- n.current.canvas.height
108
- ), s.current.lines.forEach(
109
- ({ points: a, color: i, opacity: y, radius: d }) => c(a, i, y, d)
110
- ), c(s.current.points, o, h, l));
111
- }), T = M((r) => {
112
- if (!n.current) return;
113
- const u = { x: r.offsetX, y: r.offsetY };
114
- s.current.brush.update(u), s.current.points.push(u), c(s.current.points, o, h, l), e?.onMouseDown?.(r, s.current), w(!0);
115
- }), R = M((r) => {
116
- n.current && (s.current.points.length && (s.current.lines.push({
117
- points: s.current.points,
118
- color: o,
119
- opacity: h,
120
- radius: l
121
- }), s.current.points = []), e?.onMouseUp?.(r, s.current), w(!1));
122
- }), D = () => {
123
- n.current && (v(), s.current.lines = [], s.current.points = []);
124
- }, L = () => {
125
- n.current && (v(), s.current.lines.pop(), s.current.lines.forEach(
126
- ({ points: r, color: u, opacity: f, radius: a }) => c(r, u, f, a)
127
- ));
128
- };
129
- return B(() => {
130
- if (!t && !g.state) return;
131
- const r = t ? b.getElement(t) : g.current;
132
- if (r)
133
- return n.current = r.getContext("2d"), e?.initialLines && (s.current.lines = e.initialLines, e.initialLines.forEach(
134
- ({ points: u, color: f, opacity: a, radius: i }) => c(u, f, a, i)
135
- )), r.addEventListener("mousedown", T), r.addEventListener("mousemove", E), r.addEventListener("mouseup", R), () => {
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
- export {
148
- q as Paint,
149
- x as Pointer,
150
- Y as usePaint
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 { useState as C, useEffect as D } from "react";
2
- import { useDeviceOrientation as P } from "../useDeviceOrientation/useDeviceOrientation.mjs";
3
- import { useOrientation as S } from "../useOrientation/useOrientation.mjs";
4
- import { useRefState as X } from "../useRefState/useRefState.mjs";
5
- import { isTarget as u } from "../../utils/helpers/isTarget.mjs";
6
- const z = ((...n) => {
7
- const o = u(n[0]) ? n[0] : void 0, p = n[1] ? n[1] : n[0], i = X(), s = S(), e = P(), {
8
- deviceOrientationRollAdjust: f = (a) => a,
9
- deviceOrientationTiltAdjust: b = (a) => a,
10
- mouseRollAdjust: y = (a) => a,
11
- mouseTiltAdjust: O = (a) => a
12
- } = p ?? {}, [m, h] = C({
13
- roll: 0,
14
- tilt: 0,
15
- source: "mouse"
16
- });
17
- return D(() => {
18
- if (!o && !i.state) return;
19
- const a = o ? u.getElement(o) : i.current;
20
- if (!a) return;
21
- const v = (d) => {
22
- const { left: w, top: R } = a.getBoundingClientRect(), k = w + window.scrollX, T = R + window.scrollY, c = () => e.supported && (e.value.alpha || e.value.gamma) ? "deviceOrientation" : "mouse", E = () => {
23
- if (c() === "deviceOrientation") {
24
- let t;
25
- switch (s.value.orientationType) {
26
- case "landscape-primary":
27
- t = e.value.gamma / 90;
28
- break;
29
- case "landscape-secondary":
30
- t = -e.value.gamma / 90;
31
- break;
32
- case "portrait-primary":
33
- t = -e.value.beta / 90;
34
- break;
35
- case "portrait-secondary":
36
- t = e.value.beta / 90;
37
- break;
38
- default:
39
- t = -e.value.beta / 90;
40
- }
41
- return f(t);
42
- } else {
43
- const t = d.pageY - T, r = a.getBoundingClientRect().height, l = -(t - r / 2) / r;
44
- return y(l);
45
- }
46
- }, j = () => {
47
- if (c() === "deviceOrientation") {
48
- let t;
49
- switch (s.value.orientationType) {
50
- case "landscape-primary":
51
- t = e.value.beta / 90;
52
- break;
53
- case "landscape-secondary":
54
- t = -e.value.beta / 90;
55
- break;
56
- case "portrait-primary":
57
- t = e.value.gamma / 90;
58
- break;
59
- case "portrait-secondary":
60
- t = -e.value.gamma / 90;
61
- break;
62
- default:
63
- t = e.value.gamma / 90;
64
- }
65
- return b(t);
66
- } else {
67
- const t = d.pageX - k, r = a.getBoundingClientRect().width, l = (t - r / 2) / r;
68
- return O(l);
69
- }
70
- }, A = c(), x = E(), B = j();
71
- h({
72
- roll: x,
73
- source: A,
74
- tilt: B
75
- });
76
- };
77
- return document.addEventListener("mousemove", v), () => {
78
- document.removeEventListener("mousemove", v);
79
- };
80
- }, [
81
- o && u.getRawElement(o),
82
- i.state,
83
- s.value.angle,
84
- s.value.orientationType,
85
- e.value.gamma,
86
- e.value.beta,
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
- export {
95
- z as useParallax
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"}