@siberiacancode/reactuse 0.3.12 → 0.3.14

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 (234) hide show
  1. package/README.md +71 -71
  2. package/dist/cjs/_virtual/client.cjs +2 -0
  3. package/dist/cjs/_virtual/client.cjs.map +1 -0
  4. package/dist/cjs/_virtual/client2.cjs +2 -0
  5. package/dist/cjs/_virtual/client2.cjs.map +1 -0
  6. package/dist/cjs/_virtual/index.cjs +2 -0
  7. package/dist/cjs/_virtual/index.cjs.map +1 -0
  8. package/dist/cjs/_virtual/react-dom-client.development.cjs +2 -0
  9. package/dist/cjs/_virtual/react-dom-client.development.cjs.map +1 -0
  10. package/dist/cjs/_virtual/react-dom-client.production.cjs +2 -0
  11. package/dist/cjs/_virtual/react-dom-client.production.cjs.map +1 -0
  12. package/dist/cjs/_virtual/scheduler.development.cjs +2 -0
  13. package/dist/cjs/_virtual/scheduler.development.cjs.map +1 -0
  14. package/dist/cjs/_virtual/scheduler.production.cjs +2 -0
  15. package/dist/cjs/_virtual/scheduler.production.cjs.map +1 -0
  16. package/dist/cjs/helpers/createContext/createContext.cjs +1 -1
  17. package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
  18. package/dist/cjs/helpers/createContextHook/createContextHook.cjs +2 -0
  19. package/dist/cjs/helpers/createContextHook/createContextHook.cjs.map +1 -0
  20. package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs +1 -1
  21. package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs +2 -0
  22. package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs.map +1 -0
  23. package/dist/cjs/helpers/createStore/createStore.cjs +1 -1
  24. package/dist/cjs/hooks/useAsync/useAsync.cjs +1 -1
  25. package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs +1 -1
  26. package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs +1 -1
  27. package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs.map +1 -1
  28. package/dist/cjs/hooks/useBattery/useBattery.cjs +1 -1
  29. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +1 -1
  30. package/dist/cjs/hooks/useBoolean/useBoolean.cjs +1 -1
  31. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs +1 -1
  32. package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs +1 -1
  33. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs +1 -1
  34. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs +1 -1
  35. package/dist/cjs/hooks/useControllableState/useControllableState.cjs +1 -1
  36. package/dist/cjs/hooks/useCookie/useCookie.cjs +1 -1
  37. package/dist/cjs/hooks/useCookies/useCookies.cjs +1 -1
  38. package/dist/cjs/hooks/useCopy/useCopy.cjs +1 -1
  39. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs +1 -1
  40. package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs +1 -1
  41. package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs +1 -1
  42. package/dist/cjs/hooks/useDefault/useDefault.cjs +1 -1
  43. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs +1 -1
  44. package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs +1 -1
  45. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs +1 -1
  46. package/dist/cjs/hooks/useDropZone/useDropZone.cjs +1 -1
  47. package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -1
  48. package/dist/cjs/hooks/useEvent/useEvent.cjs +1 -1
  49. package/dist/cjs/hooks/useEventListener/useEventListener.cjs +1 -1
  50. package/dist/cjs/hooks/useEventSource/useEventSource.cjs +1 -1
  51. package/dist/cjs/hooks/useFavicon/useFavicon.cjs +1 -1
  52. package/dist/cjs/hooks/useField/useField.cjs +1 -1
  53. package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
  54. package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs +1 -1
  55. package/dist/cjs/hooks/useFps/useFps.cjs +1 -1
  56. package/dist/cjs/hooks/useFul/useFul.cjs +1 -1
  57. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs +1 -1
  58. package/dist/cjs/hooks/useGamepad/useGamepad.cjs +1 -1
  59. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs +1 -1
  60. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs.map +1 -1
  61. package/dist/cjs/hooks/useIdle/useIdle.cjs +1 -1
  62. package/dist/cjs/hooks/useImage/useImage.cjs.map +1 -1
  63. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +1 -1
  64. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
  65. package/dist/cjs/hooks/useInterval/useInterval.cjs +1 -1
  66. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +1 -1
  67. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs +1 -1
  68. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs +1 -1
  69. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +1 -1
  70. package/dist/cjs/hooks/useLess/useLess.cjs +1 -1
  71. package/dist/cjs/hooks/useList/useList.cjs +1 -1
  72. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs +1 -1
  73. package/dist/cjs/hooks/useMap/useMap.cjs +1 -1
  74. package/dist/cjs/hooks/useMeasure/useMeasure.cjs +1 -1
  75. package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs +1 -1
  76. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs +1 -1
  77. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs.map +1 -1
  78. package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs +1 -1
  79. package/dist/cjs/hooks/useMouse/useMouse.cjs +1 -1
  80. package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
  81. package/dist/cjs/hooks/useMutation/useMutation.cjs +1 -1
  82. package/dist/cjs/hooks/useMutation/useMutation.cjs.map +1 -1
  83. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs +1 -1
  84. package/dist/cjs/hooks/useNetwork/useNetwork.cjs.map +1 -1
  85. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs +1 -1
  86. package/dist/cjs/hooks/useOnce/useOnce.cjs +1 -1
  87. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
  88. package/dist/cjs/hooks/useOrientation/useOrientation.cjs.map +1 -1
  89. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs +1 -1
  90. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs.map +1 -1
  91. package/dist/cjs/hooks/useParallax/useParallax.cjs +1 -1
  92. package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
  93. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +1 -1
  94. package/dist/cjs/hooks/usePermission/usePermission.cjs +1 -1
  95. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs +1 -1
  96. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
  97. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs +1 -1
  98. package/dist/cjs/hooks/usePrevious/usePrevious.cjs +1 -1
  99. package/dist/cjs/hooks/useProgress/useProgress.cjs +2 -0
  100. package/dist/cjs/hooks/useProgress/useProgress.cjs.map +1 -0
  101. package/dist/cjs/hooks/useQuery/useQuery.cjs +1 -1
  102. package/dist/cjs/hooks/useQueue/useQueue.cjs +1 -1
  103. package/dist/cjs/hooks/useRefState/useRefState.cjs +1 -1
  104. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +1 -1
  105. package/dist/cjs/hooks/useScript/useScript.cjs +1 -1
  106. package/dist/cjs/hooks/useScroll/useScroll.cjs +1 -1
  107. package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
  108. package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs +1 -1
  109. package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs +1 -1
  110. package/dist/cjs/hooks/useSet/useSet.cjs +1 -1
  111. package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs +1 -1
  112. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +1 -1
  113. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs +1 -1
  114. package/dist/cjs/hooks/useStep/useStep.cjs +1 -1
  115. package/dist/cjs/hooks/useSticky/useSticky.cjs +1 -1
  116. package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
  117. package/dist/cjs/hooks/useStorage/useStorage.cjs +1 -1
  118. package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
  119. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +1 -1
  120. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
  121. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs +1 -1
  122. package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs +1 -1
  123. package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs.map +1 -1
  124. package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs +1 -1
  125. package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs +1 -1
  126. package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs +1 -1
  127. package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs +1 -1
  128. package/dist/cjs/hooks/useTime/useTime.cjs +1 -1
  129. package/dist/cjs/hooks/useTimeout/useTimeout.cjs +1 -1
  130. package/dist/cjs/hooks/useToggle/useToggle.cjs +1 -1
  131. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs +1 -1
  132. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
  133. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
  134. package/dist/cjs/hooks/useVibrate/useVibrate.cjs +1 -1
  135. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs +1 -1
  136. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs.map +1 -1
  137. package/dist/cjs/hooks/useVisibility/useVisibility.cjs +1 -1
  138. package/dist/cjs/hooks/useVisibility/useVisibility.cjs.map +1 -1
  139. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
  140. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +1 -1
  141. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
  142. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs +1 -1
  143. package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs +1 -1
  144. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs +1 -1
  145. package/dist/cjs/index.cjs +1 -1
  146. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs +215 -0
  147. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs.map +1 -0
  148. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs +10 -0
  149. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs.map +1 -0
  150. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs +2 -0
  151. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs.map +1 -0
  152. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs +2 -0
  153. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs.map +1 -0
  154. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs +2 -0
  155. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs.map +1 -0
  156. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs +2 -0
  157. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs.map +1 -0
  158. package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
  159. package/dist/esm/_virtual/client.mjs +6 -0
  160. package/dist/esm/_virtual/client.mjs.map +1 -0
  161. package/dist/esm/_virtual/client2.mjs +5 -0
  162. package/dist/esm/_virtual/client2.mjs.map +1 -0
  163. package/dist/esm/_virtual/index.mjs +5 -0
  164. package/dist/esm/_virtual/index.mjs.map +1 -0
  165. package/dist/esm/_virtual/react-dom-client.development.mjs +5 -0
  166. package/dist/esm/_virtual/react-dom-client.development.mjs.map +1 -0
  167. package/dist/esm/_virtual/react-dom-client.production.mjs +5 -0
  168. package/dist/esm/_virtual/react-dom-client.production.mjs.map +1 -0
  169. package/dist/esm/_virtual/scheduler.development.mjs +5 -0
  170. package/dist/esm/_virtual/scheduler.development.mjs.map +1 -0
  171. package/dist/esm/_virtual/scheduler.production.mjs +5 -0
  172. package/dist/esm/_virtual/scheduler.production.mjs.map +1 -0
  173. package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
  174. package/dist/esm/helpers/createContextHook/createContextHook.mjs +13 -0
  175. package/dist/esm/helpers/createContextHook/createContextHook.mjs.map +1 -0
  176. package/dist/esm/helpers/createSharedHook/createSharedHook.mjs +42 -0
  177. package/dist/esm/helpers/createSharedHook/createSharedHook.mjs.map +1 -0
  178. package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs.map +1 -1
  179. package/dist/esm/hooks/useDropZone/useDropZone.mjs +27 -27
  180. package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
  181. package/dist/esm/hooks/useField/useField.mjs +42 -42
  182. package/dist/esm/hooks/useField/useField.mjs.map +1 -1
  183. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
  184. package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
  185. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
  186. package/dist/esm/hooks/useMouse/useMouse.mjs +37 -32
  187. package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
  188. package/dist/esm/hooks/useMutation/useMutation.mjs +29 -28
  189. package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
  190. package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
  191. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
  192. package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
  193. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
  194. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  195. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
  196. package/dist/esm/hooks/useProgress/useProgress.mjs +25 -0
  197. package/dist/esm/hooks/useProgress/useProgress.mjs.map +1 -0
  198. package/dist/esm/hooks/useScroll/useScroll.mjs +62 -44
  199. package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
  200. package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
  201. package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
  202. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
  203. package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs.map +1 -1
  204. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
  205. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
  206. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs.map +1 -1
  207. package/dist/esm/hooks/useVisibility/useVisibility.mjs.map +1 -1
  208. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
  209. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
  210. package/dist/esm/index.mjs +389 -382
  211. package/dist/esm/index.mjs.map +1 -1
  212. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.mjs +17019 -0
  213. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.mjs.map +1 -0
  214. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.mjs +9745 -0
  215. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.mjs.map +1 -0
  216. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.mjs +24 -0
  217. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.mjs.map +1 -0
  218. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.mjs +228 -0
  219. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.mjs.map +1 -0
  220. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.mjs +225 -0
  221. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.mjs.map +1 -0
  222. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.mjs +11 -0
  223. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.mjs.map +1 -0
  224. package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
  225. package/dist/types/helpers/createContextHook/createContextHook.d.ts +26 -0
  226. package/dist/types/helpers/createSharedHook/createSharedHook.d.ts +21 -0
  227. package/dist/types/helpers/index.d.ts +2 -0
  228. package/dist/types/hooks/time.d.ts +1 -0
  229. package/dist/types/hooks/useField/useField.d.ts +6 -8
  230. package/dist/types/hooks/useMouse/useMouse.d.ts +17 -7
  231. package/dist/types/hooks/useProgress/useProgress.d.ts +53 -0
  232. package/dist/types/hooks/useScroll/useScroll.d.ts +13 -11
  233. package/dist/types/hooks/useUrlSearchParams/useUrlSearchParams.d.ts +0 -1
  234. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"useOrientation.cjs","sources":["../../../../src/hooks/useOrientation/useOrientation.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\ndeclare global {\n interface ScreenOrientation {\n lock: (orientation: OrientationLockType) => Promise<void>;\n }\n}\n\n/* The use device orientation value type */\nexport interface UseOrientationValue {\n /** The current angle */\n angle: number;\n /** The current orientation type */\n orientationType?: OrientationType;\n}\n\n/* The screen lock orientation type */\nexport type OrientationLockType =\n | 'any'\n | 'landscape-primary'\n | 'landscape-secondary'\n | 'landscape'\n | 'natural'\n | 'portrait-primary'\n | 'portrait-secondary'\n | 'portrait';\n\n/* The use device orientation return type */\nexport interface useOrientationReturn {\n /** Whether the screen orientation is supported */\n supported: boolean;\n /** The current screen orientation value */\n value: UseOrientationValue;\n /** Lock the screen orientation */\n lock: (orientation: OrientationLockType) => void;\n /** Unlock the screen orientation */\n unlock: () => void;\n}\n\n/**\n * @name useOrientation\n * @description - Hook that provides the current screen orientation\n * @category Sensors\n * @usage low\n *\n * @browserapi screen.orientation https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation\n *\n * @returns {useOrientationReturn} The current screen orientation\n *\n * @example\n * const { supported, value, lock, unlock } = useOrientation();\n */\nexport const useOrientation = (): useOrientationReturn => {\n const supported =\n typeof window !== 'undefined' && 'screen' in window && 'orientation' in window.screen;\n const orientation = (supported ? window.screen.orientation : {}) as ScreenOrientation;\n\n const [value, setValue] = useState<UseOrientationValue>({\n angle: orientation.angle ?? 0,\n orientationType: orientation.type\n });\n\n useEffect(() => {\n if (!supported) return;\n\n const onOrientationChange = () =>\n setValue({\n angle: window.screen.orientation.angle,\n orientationType: window.screen.orientation.type\n });\n\n window.addEventListener('orientationchange', onOrientationChange);\n return () => {\n window.removeEventListener('orientationchange', onOrientationChange);\n };\n }, []);\n\n const lock = (type: OrientationLockType) => {\n if (supported && typeof orientation.lock === 'function') return orientation.lock(type);\n };\n\n const unlock = () => {\n if (supported && typeof orientation.unlock === 'function') orientation.unlock();\n };\n\n return {\n supported,\n value,\n lock,\n unlock\n };\n};\n"],"names":["useOrientation","supported","orientation","value","setValue","useState","useEffect","onOrientationChange","type"],"mappings":"yGAoDaA,EAAiB,IAA4B,CACxD,MAAMC,EACJ,OAAO,OAAW,KAAe,WAAY,QAAU,gBAAiB,OAAO,OAC3EC,EAAeD,EAAY,OAAO,OAAO,YAAc,CAAA,EAEvD,CAACE,EAAOC,CAAQ,EAAIC,WAA8B,CACtD,MAAOH,EAAY,OAAS,EAC5B,gBAAiBA,EAAY,IAAA,CAC9B,EAEDI,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,EAAW,OAEhB,MAAMM,EAAsB,IAC1BH,EAAS,CACP,MAAO,OAAO,OAAO,YAAY,MACjC,gBAAiB,OAAO,OAAO,YAAY,IAAA,CAC5C,EAEH,cAAO,iBAAiB,oBAAqBG,CAAmB,EACzD,IAAM,CACX,OAAO,oBAAoB,oBAAqBA,CAAmB,CAAA,CACrE,EACC,EAAE,EAUE,CACL,UAAAN,EACA,MAAAE,EACA,KAXYK,GAA8B,CAC1C,GAAIP,GAAa,OAAOC,EAAY,MAAS,WAAY,OAAOA,EAAY,KAAKM,CAAI,CAAA,EAWrF,OARa,IAAM,CACfP,GAAa,OAAOC,EAAY,QAAW,cAAwB,OAAA,CAAO,CAO9E,CAEJ"}
1
+ {"version":3,"file":"useOrientation.cjs","sources":["../../../../src/hooks/useOrientation/useOrientation.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\r\n\r\ndeclare global {\r\n interface ScreenOrientation {\r\n lock: (orientation: OrientationLockType) => Promise<void>;\r\n }\r\n}\r\n\r\n/* The use device orientation value type */\r\nexport interface UseOrientationValue {\r\n /** The current angle */\r\n angle: number;\r\n /** The current orientation type */\r\n orientationType?: OrientationType;\r\n}\r\n\r\n/* The screen lock orientation type */\r\nexport type OrientationLockType =\r\n | 'any'\r\n | 'landscape-primary'\r\n | 'landscape-secondary'\r\n | 'landscape'\r\n | 'natural'\r\n | 'portrait-primary'\r\n | 'portrait-secondary'\r\n | 'portrait';\r\n\r\n/* The use device orientation return type */\r\nexport interface useOrientationReturn {\r\n /** Whether the screen orientation is supported */\r\n supported: boolean;\r\n /** The current screen orientation value */\r\n value: UseOrientationValue;\r\n /** Lock the screen orientation */\r\n lock: (orientation: OrientationLockType) => void;\r\n /** Unlock the screen orientation */\r\n unlock: () => void;\r\n}\r\n\r\n/**\r\n * @name useOrientation\r\n * @description - Hook that provides the current screen orientation\r\n * @category Sensors\r\n * @usage low\r\n *\r\n * @browserapi screen.orientation https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation\r\n *\r\n * @returns {useOrientationReturn} The current screen orientation\r\n *\r\n * @example\r\n * const { supported, value, lock, unlock } = useOrientation();\r\n */\r\nexport const useOrientation = (): useOrientationReturn => {\r\n const supported =\r\n typeof window !== 'undefined' && 'screen' in window && 'orientation' in window.screen;\r\n const orientation = (supported ? window.screen.orientation : {}) as ScreenOrientation;\r\n\r\n const [value, setValue] = useState<UseOrientationValue>({\r\n angle: orientation.angle ?? 0,\r\n orientationType: orientation.type\r\n });\r\n\r\n useEffect(() => {\r\n if (!supported) return;\r\n\r\n const onOrientationChange = () =>\r\n setValue({\r\n angle: window.screen.orientation.angle,\r\n orientationType: window.screen.orientation.type\r\n });\r\n\r\n window.addEventListener('orientationchange', onOrientationChange);\r\n return () => {\r\n window.removeEventListener('orientationchange', onOrientationChange);\r\n };\r\n }, []);\r\n\r\n const lock = (type: OrientationLockType) => {\r\n if (supported && typeof orientation.lock === 'function') return orientation.lock(type);\r\n };\r\n\r\n const unlock = () => {\r\n if (supported && typeof orientation.unlock === 'function') orientation.unlock();\r\n };\r\n\r\n return {\r\n supported,\r\n value,\r\n lock,\r\n unlock\r\n };\r\n};\r\n"],"names":["useOrientation","supported","orientation","value","setValue","useState","useEffect","onOrientationChange","type"],"mappings":"yGAoDaA,EAAiB,IAA4B,CACxD,MAAMC,EACJ,OAAO,OAAW,KAAe,WAAY,QAAU,gBAAiB,OAAO,OAC3EC,EAAeD,EAAY,OAAO,OAAO,YAAc,CAAA,EAEvD,CAACE,EAAOC,CAAQ,EAAIC,WAA8B,CACtD,MAAOH,EAAY,OAAS,EAC5B,gBAAiBA,EAAY,IAAA,CAC9B,EAEDI,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,EAAW,OAEhB,MAAMM,EAAsB,IAC1BH,EAAS,CACP,MAAO,OAAO,OAAO,YAAY,MACjC,gBAAiB,OAAO,OAAO,YAAY,IAAA,CAC5C,EAEH,cAAO,iBAAiB,oBAAqBG,CAAmB,EACzD,IAAM,CACX,OAAO,oBAAoB,oBAAqBA,CAAmB,CAAA,CACrE,EACC,EAAE,EAUE,CACL,UAAAN,EACA,MAAAE,EACA,KAXYK,GAA8B,CAC1C,GAAIP,GAAa,OAAOC,EAAY,MAAS,WAAY,OAAOA,EAAY,KAAKM,CAAI,CAAA,EAWrF,OARa,IAAM,CACfP,GAAa,OAAOC,EAAY,QAAW,cAAwB,OAAA,CAAO,CAO9E,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),a=((...e)=>{const n=typeof navigator<"u"&&"OTPCredential"in navigator&&!!navigator.OTPCredential,o=typeof e[0]=="object"?e[0]:{onSuccess:e[0]},t=c.useRef(new AbortController);return{supported:n,abort:()=>{t.current.abort(),t.current=new AbortController},get:async()=>{if(n){t.current=new AbortController;try{const r=await navigator.credentials.get({otp:{transport:["sms"]},signal:t.current.signal});return o.onSuccess?.(r),r}catch(r){o.onError?.(r)}}}}});exports.useOtpCredential=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),s=((...e)=>{const n=typeof navigator<"u"&&"OTPCredential"in navigator&&!!navigator.OTPCredential,o=typeof e[0]=="object"?e[0]:{onSuccess:e[0]},t=c.useRef(new AbortController);return{supported:n,abort:()=>{t.current.abort(),t.current=new AbortController},get:async()=>{if(n){t.current=new AbortController;try{const r=await navigator.credentials.get({otp:{transport:["sms"]},signal:t.current.signal});return o.onSuccess?.(r),r}catch(r){o.onError?.(r)}}}}});exports.useOtpCredential=s;
2
2
  //# sourceMappingURL=useOtpCredential.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOtpCredential.cjs","sources":["../../../../src/hooks/useOtpCredential/useOtpCredential.ts"],"sourcesContent":["import { useRef } from 'react';\n\ndeclare global {\n interface OTPOptions {\n readonly transport: string[];\n }\n\n interface CredentialRequestOptions {\n readonly otp: OTPOptions;\n }\n\n interface Credential {\n readonly code: string;\n }\n}\n\n/* The use otp credential callback type */\nexport type UseOtpCredentialCallback = (otp: Credential | null) => void;\n\n/* The use otp credential options type */\nexport interface UseOtpCredentialParams {\n /* The callback function to be invoked on error */\n onError?: (error: any) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (credential: Credential | null) => void;\n}\n\n/* The use otp credential return type */\nexport interface UseOtpCredentialReturn {\n /* The abort function */\n abort: AbortController['abort'];\n /* The supported state of the otp credential */\n supported: boolean;\n /* The get otp credential function */\n get: () => Promise<Credential | null>;\n}\n\nexport interface UseOtpCredential {\n (callback?: UseOtpCredentialCallback): UseOtpCredentialReturn;\n\n (params?: UseOtpCredentialParams): UseOtpCredentialReturn;\n}\n\n/**\n * @name useOtpCredential\n * @description - Hook that creates an otp credential\n * @category Browser\n * @usage low\n *\n * @browserapi navigator.credentials https://developer.mozilla.org/en-US/docs/Web/API/Navigator/credentials\n *\n * @overload\n * @param {UseOtpCredentialCallback} callback The callback function to be invoked\n * @returns {UseOtpCredentialReturn}\n *\n * @example\n * useOtpCredential((credential) => console.log(credential));\n *\n * @overload\n * @param {UseOtpCredentialCallback} params.onSuccess The callback function to be invoked on success\n * @param {UseOtpCredentialCallback} params.onError The callback function to be invoked on error\n * @returns {UseOtpCredentialReturn}\n *\n * @example\n * useOtpCredential({ onSuccess: (credential) => console.log(credential), onError: (error) => console.log(error) });\n */\nexport const useOtpCredential = ((...params: any[]) => {\n const supported =\n typeof navigator !== 'undefined' && 'OTPCredential' in navigator && !!navigator.OTPCredential;\n\n const options =\n typeof params[0] === 'object'\n ? params[0]\n : {\n onSuccess: params[0]\n };\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n\n const get = async () => {\n if (!supported) return;\n\n abortControllerRef.current = new AbortController();\n try {\n const credential = await navigator.credentials.get({\n otp: { transport: ['sms'] },\n signal: abortControllerRef.current.signal\n });\n options.onSuccess?.(credential);\n\n return credential;\n } catch (error) {\n options.onError?.(error);\n }\n };\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n return { supported, abort, get };\n}) as UseOtpCredential;\n"],"names":["useOtpCredential","params","supported","options","abortControllerRef","useRef","credential","error"],"mappings":"yGAkEaA,GAAoB,IAAIC,IAAkB,CACrD,MAAMC,EACJ,OAAO,UAAc,KAAe,kBAAmB,WAAa,CAAC,CAAC,UAAU,cAE5EC,EACJ,OAAOF,EAAO,CAAC,GAAM,SACjBA,EAAO,CAAC,EACR,CACE,UAAWA,EAAO,CAAC,CAAA,EAGrBG,EAAqBC,EAAAA,OAAwB,IAAI,eAAiB,EAwBxE,MAAO,CAAE,UAAAH,EAAW,MALN,IAAM,CAClBE,EAAmB,QAAQ,MAAA,EAC3BA,EAAmB,QAAU,IAAI,eAAgB,EAGxB,IAtBf,SAAY,CACtB,GAAKF,EAEL,CAAAE,EAAmB,QAAU,IAAI,gBACjC,GAAI,CACF,MAAME,EAAa,MAAM,UAAU,YAAY,IAAI,CACjD,IAAK,CAAE,UAAW,CAAC,KAAK,CAAA,EACxB,OAAQF,EAAmB,QAAQ,MAAA,CACpC,EACD,OAAAD,EAAQ,YAAYG,CAAU,EAEvBA,CAAA,OACAC,EAAO,CACdJ,EAAQ,UAAUI,CAAK,CAAA,EACzB,CAQyB,CAC7B"}
1
+ {"version":3,"file":"useOtpCredential.cjs","sources":["../../../../src/hooks/useOtpCredential/useOtpCredential.ts"],"sourcesContent":["import { useRef } from 'react';\r\n\r\ndeclare global {\r\n interface OTPOptions {\r\n readonly transport: string[];\r\n }\r\n\r\n interface CredentialRequestOptions {\r\n readonly otp: OTPOptions;\r\n }\r\n\r\n interface Credential {\r\n readonly code: string;\r\n }\r\n}\r\n\r\n/* The use otp credential callback type */\r\nexport type UseOtpCredentialCallback = (otp: Credential | null) => void;\r\n\r\n/* The use otp credential options type */\r\nexport interface UseOtpCredentialParams {\r\n /* The callback function to be invoked on error */\r\n onError?: (error: any) => void;\r\n /* The callback function to be invoked on success */\r\n onSuccess?: (credential: Credential | null) => void;\r\n}\r\n\r\n/* The use otp credential return type */\r\nexport interface UseOtpCredentialReturn {\r\n /* The abort function */\r\n abort: AbortController['abort'];\r\n /* The supported state of the otp credential */\r\n supported: boolean;\r\n /* The get otp credential function */\r\n get: () => Promise<Credential | null>;\r\n}\r\n\r\nexport interface UseOtpCredential {\r\n (callback?: UseOtpCredentialCallback): UseOtpCredentialReturn;\r\n\r\n (params?: UseOtpCredentialParams): UseOtpCredentialReturn;\r\n}\r\n\r\n/**\r\n * @name useOtpCredential\r\n * @description - Hook that creates an otp credential\r\n * @category Browser\r\n * @usage low\r\n *\r\n * @browserapi navigator.credentials https://developer.mozilla.org/en-US/docs/Web/API/Navigator/credentials\r\n *\r\n * @overload\r\n * @param {UseOtpCredentialCallback} callback The callback function to be invoked\r\n * @returns {UseOtpCredentialReturn}\r\n *\r\n * @example\r\n * useOtpCredential((credential) => console.log(credential));\r\n *\r\n * @overload\r\n * @param {UseOtpCredentialCallback} params.onSuccess The callback function to be invoked on success\r\n * @param {UseOtpCredentialCallback} params.onError The callback function to be invoked on error\r\n * @returns {UseOtpCredentialReturn}\r\n *\r\n * @example\r\n * useOtpCredential({ onSuccess: (credential) => console.log(credential), onError: (error) => console.log(error) });\r\n */\r\nexport const useOtpCredential = ((...params: any[]) => {\r\n const supported =\r\n typeof navigator !== 'undefined' && 'OTPCredential' in navigator && !!navigator.OTPCredential;\r\n\r\n const options =\r\n typeof params[0] === 'object'\r\n ? params[0]\r\n : {\r\n onSuccess: params[0]\r\n };\r\n\r\n const abortControllerRef = useRef<AbortController>(new AbortController());\r\n\r\n const get = async () => {\r\n if (!supported) return;\r\n\r\n abortControllerRef.current = new AbortController();\r\n try {\r\n const credential = await navigator.credentials.get({\r\n otp: { transport: ['sms'] },\r\n signal: abortControllerRef.current.signal\r\n });\r\n options.onSuccess?.(credential);\r\n\r\n return credential;\r\n } catch (error) {\r\n options.onError?.(error);\r\n }\r\n };\r\n\r\n const abort = () => {\r\n abortControllerRef.current.abort();\r\n abortControllerRef.current = new AbortController();\r\n };\r\n\r\n return { supported, abort, get };\r\n}) as UseOtpCredential;\r\n"],"names":["useOtpCredential","params","supported","options","abortControllerRef","useRef","credential","error"],"mappings":"yGAkEaA,GAAoB,IAAIC,IAAkB,CACrD,MAAMC,EACJ,OAAO,UAAc,KAAe,kBAAmB,WAAa,CAAC,CAAC,UAAU,cAE5EC,EACJ,OAAOF,EAAO,CAAC,GAAM,SACjBA,EAAO,CAAC,EACR,CACE,UAAWA,EAAO,CAAC,CAAA,EAGrBG,EAAqBC,EAAAA,OAAwB,IAAI,eAAiB,EAwBxE,MAAO,CAAE,UAAAH,EAAW,MALN,IAAM,CAClBE,EAAmB,QAAQ,MAAA,EAC3BA,EAAmB,QAAU,IAAI,eAAgB,EAGxB,IAtBf,SAAY,CACtB,GAAKF,EAEL,CAAAE,EAAmB,QAAU,IAAI,gBACjC,GAAI,CACF,MAAME,EAAa,MAAM,UAAU,YAAY,IAAI,CACjD,IAAK,CAAE,UAAW,CAAC,KAAK,CAAA,EACxB,OAAQF,EAAmB,QAAQ,MAAA,CACpC,EACD,OAAAD,EAAQ,YAAYG,CAAU,EAEvBA,CAAA,OACAC,EAAO,CACdJ,EAAQ,UAAUI,CAAK,CAAA,EACzB,CAQyB,CAC7B"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),D=require("../useDeviceOrientation/useDeviceOrientation.cjs"),x=require("../useOrientation/useOrientation.cjs"),B=require("../useRefState/useRefState.cjs"),l=require("../../utils/helpers/isTarget.cjs"),C=((...o)=>{const n=l.isTarget(o[0])?o[0]:void 0,b=o[1]?o[1]:o[0],i=B.useRefState(),s=x.useOrientation(),e=D.useDeviceOrientation(),{deviceOrientationRollAdjust:f=a=>a,deviceOrientationTiltAdjust:y=a=>a,mouseRollAdjust:O=a=>a,mouseTiltAdjust:T=a=>a}=b??{},[v,h]=p.useState({roll:0,tilt:0,source:"mouse"});return p.useEffect(()=>{if(!n&&!i.state)return;const a=n?l.isTarget.getElement(n):i.current;if(!a)return;const d=m=>{const{left:R,top:w}=a.getBoundingClientRect(),k=R+window.scrollX,S=w+window.scrollY,u=()=>e.supported&&(e.value.alpha||e.value.gamma)?"deviceOrientation":"mouse",j=()=>{if(u()==="deviceOrientation"){let t;switch(s.value.orientationType){case"landscape-primary":t=e.value.gamma/90;break;case"landscape-secondary":t=-e.value.gamma/90;break;case"portrait-primary":t=-e.value.beta/90;break;case"portrait-secondary":t=e.value.beta/90;break;default:t=-e.value.beta/90}return f(t)}else{const t=m.pageY-S,r=a.getBoundingClientRect().height,c=-(t-r/2)/r;return O(c)}},q=()=>{if(u()==="deviceOrientation"){let t;switch(s.value.orientationType){case"landscape-primary":t=e.value.beta/90;break;case"landscape-secondary":t=-e.value.beta/90;break;case"portrait-primary":t=e.value.gamma/90;break;case"portrait-secondary":t=-e.value.gamma/90;break;default:t=e.value.gamma/90}return y(t)}else{const t=m.pageX-k,r=a.getBoundingClientRect().width,c=(t-r/2)/r;return T(c)}},E=u(),P=j(),A=q();h({roll:P,source:E,tilt:A})};return document.addEventListener("mousemove",d),()=>{document.removeEventListener("mousemove",d)}},[n&&l.isTarget.getRawElement(n),i.state,s.value.angle,s.value.orientationType,e.value.gamma,e.value.beta,e.value.alpha,e.value.absolute]),n?{value:v}:{ref:i,value:v}});exports.useParallax=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),D=require("../useDeviceOrientation/useDeviceOrientation.cjs"),x=require("../useOrientation/useOrientation.cjs"),B=require("../useRefState/useRefState.cjs"),l=require("../../utils/helpers/isTarget.cjs"),C=((...o)=>{const n=l.isTarget(o[0])?o[0]:void 0,b=o[1]?o[1]:o[0],i=B.useRefState(),s=x.useOrientation(),e=D.useDeviceOrientation(),{deviceOrientationRollAdjust:f=a=>a,deviceOrientationTiltAdjust:y=a=>a,mouseRollAdjust:O=a=>a,mouseTiltAdjust:T=a=>a}=b??{},[v,h]=p.useState({roll:0,tilt:0,source:"mouse"});return p.useEffect(()=>{if(!n&&!i.state)return;const a=n?l.isTarget.getElement(n):i.current;if(!a)return;const d=m=>{const{left:R,top:w}=a.getBoundingClientRect(),k=R+window.scrollX,q=w+window.scrollY,u=()=>e.supported&&(e.value.alpha||e.value.gamma)?"deviceOrientation":"mouse",S=()=>{if(u()==="deviceOrientation"){let t;switch(s.value.orientationType){case"landscape-primary":t=e.value.gamma/90;break;case"landscape-secondary":t=-e.value.gamma/90;break;case"portrait-primary":t=-e.value.beta/90;break;case"portrait-secondary":t=e.value.beta/90;break;default:t=-e.value.beta/90}return f(t)}else{const t=m.pageY-q,r=a.getBoundingClientRect().height,c=-(t-r/2)/r;return O(c)}},j=()=>{if(u()==="deviceOrientation"){let t;switch(s.value.orientationType){case"landscape-primary":t=e.value.beta/90;break;case"landscape-secondary":t=-e.value.beta/90;break;case"portrait-primary":t=e.value.gamma/90;break;case"portrait-secondary":t=-e.value.gamma/90;break;default:t=e.value.gamma/90}return y(t)}else{const t=m.pageX-k,r=a.getBoundingClientRect().width,c=(t-r/2)/r;return T(c)}},E=u(),P=S(),A=j();h({roll:P,source:E,tilt:A})};return document.addEventListener("mousemove",d),()=>{document.removeEventListener("mousemove",d)}},[n&&l.isTarget.getRawElement(n),i.state,s.value.angle,s.value.orientationType,e.value.gamma,e.value.beta,e.value.alpha,e.value.absolute]),n?{value:v}:{ref:i,value:v}});exports.useParallax=C;
2
2
  //# sourceMappingURL=useParallax.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useParallax.cjs","sources":["../../../../src/hooks/useParallax/useParallax.ts"],"sourcesContent":["import { useEffect, 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 { useDeviceOrientation } from '../useDeviceOrientation/useDeviceOrientation';\nimport { useOrientation } from '../useOrientation/useOrientation';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use parallax value type */\nexport interface UseParallaxValue {\n /** Roll value. Scaled to `-0.5 ~ 0.5` */\n roll: number;\n /** Sensor source, can be `mouse` or `deviceOrientation` */\n source: 'deviceOrientation' | 'mouse';\n /** Tilt value. Scaled to `-0.5 ~ 0.5` */\n tilt: number;\n}\n\n/** The use parallax options type */\nexport interface UseParallaxOptions {\n /** Device orientation roll adjust function */\n deviceOrientationRollAdjust?: (value: number) => number;\n /** Device orientation tilt adjust function */\n deviceOrientationTiltAdjust?: (value: number) => number;\n /** Mouse roll adjust function */\n mouseRollAdjust?: (value: number) => number;\n /** Mouse tilt adjust function */\n mouseTiltAdjust?: (value: number) => number;\n}\n\ninterface UseParallaxReturn {\n value: UseParallaxValue;\n}\n\nexport interface UseParallax {\n (target: HookTarget, options?: UseParallaxOptions): UseParallaxReturn;\n\n <Target extends Element>(\n options?: UseParallaxOptions,\n target?: never\n ): UseParallaxReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useParallax\n * @description - Hook to help create parallax effect\n * @category Sensors\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target element for the parallax effect\n * @param {UseParallaxOptions} options The options for the parallax effect\n * @returns {UseParallaxReturn} An object of parallax values\n *\n * @example\n * const { value } = useParallax(ref);\n *\n * @overload\n * @template Target The target element for the parallax effect\n * @param {UseParallaxOptions} options The options for the parallax effect\n * @returns {UseParallaxReturn & { ref: StateRef<Target> }} An object of parallax values\n *\n * @example\n * const { ref, value } = useParallax();\n */\nexport const useParallax = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (params[1] ? params[1] : params[0]) as UseParallaxOptions | undefined;\n\n const internalRef = useRefState<Element>();\n\n const screenOrientation = useOrientation();\n const deviceOrientation = useDeviceOrientation();\n\n const {\n deviceOrientationRollAdjust = (value) => value,\n deviceOrientationTiltAdjust = (value) => value,\n mouseRollAdjust = (value) => value,\n mouseTiltAdjust = (value) => value\n } = (options ?? {}) as UseParallaxOptions;\n\n const [value, setValue] = useState({\n roll: 0,\n tilt: 0,\n source: 'mouse'\n });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const onMouseMove = (event: MouseEvent) => {\n const { left, top } = element.getBoundingClientRect();\n const elementPositionX = left + window.scrollX;\n const elementPositionY = top + window.scrollY;\n\n const getSource = () => {\n const isDeviceOrientation =\n deviceOrientation.supported &&\n (deviceOrientation.value.alpha || deviceOrientation.value.gamma);\n\n if (isDeviceOrientation) return 'deviceOrientation';\n return 'mouse';\n };\n\n const getRoll = () => {\n const source = getSource();\n if (source === 'deviceOrientation') {\n let value: number;\n switch (screenOrientation.value.orientationType) {\n case 'landscape-primary':\n value = deviceOrientation.value.gamma! / 90;\n break;\n case 'landscape-secondary':\n value = -deviceOrientation.value.gamma! / 90;\n break;\n case 'portrait-primary':\n value = -deviceOrientation.value.beta! / 90;\n break;\n case 'portrait-secondary':\n value = deviceOrientation.value.beta! / 90;\n break;\n default:\n value = -deviceOrientation.value.beta! / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const y = event.pageY - elementPositionY;\n const height = element.getBoundingClientRect().height;\n const value = -(y - height / 2) / height;\n return mouseRollAdjust(value);\n }\n };\n\n const getTilt = () => {\n const source = getSource();\n if (source === 'deviceOrientation') {\n let value: number;\n switch (screenOrientation.value.orientationType) {\n case 'landscape-primary':\n value = deviceOrientation.value.beta! / 90;\n break;\n case 'landscape-secondary':\n value = -deviceOrientation.value.beta! / 90;\n break;\n case 'portrait-primary':\n value = deviceOrientation.value.gamma! / 90;\n break;\n case 'portrait-secondary':\n value = -deviceOrientation.value.gamma! / 90;\n break;\n default:\n value = deviceOrientation.value.gamma! / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const x = event.pageX - elementPositionX;\n const width = element.getBoundingClientRect().width;\n const value = (x - width / 2) / width;\n return mouseTiltAdjust(value);\n }\n };\n\n const source = getSource();\n const roll = getRoll();\n const tilt = getTilt();\n\n setValue({\n roll,\n source,\n tilt\n });\n };\n\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [\n target && isTarget.getRawElement(target),\n internalRef.state,\n screenOrientation.value.angle,\n screenOrientation.value.orientationType,\n deviceOrientation.value.gamma,\n deviceOrientation.value.beta,\n deviceOrientation.value.alpha,\n deviceOrientation.value.absolute\n ]);\n\n if (target) return { value };\n\n return {\n ref: internalRef,\n value\n };\n}) as UseParallax;\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.cjs","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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),l=(n,s)=>{const e=typeof window<"u"&&!!window.PerformanceObserver,[a,b]=r.useState([]),t=r.useRef(null),o=r.useRef(s);o.current=s;const u=()=>{if(!e)return;const f=new PerformanceObserver((i,d)=>{b(i.getEntries()),o.current?.(i,d)});f.observe(n),t.current=f},c=()=>{e&&(t.current?.disconnect(),t.current=null)};return r.useEffect(()=>{if(e)return n.immediate&&u(),()=>{c()}},[]),{supported:e,entries:a,start:u,stop:c}};exports.usePerformanceObserver=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),l=(n,s)=>{const e=typeof window<"u"&&!!window.PerformanceObserver,[a,b]=r.useState([]),t=r.useRef(null),u=r.useRef(s);u.current=s;const o=()=>{if(!e)return;const i=new PerformanceObserver((f,d)=>{b(f.getEntries()),u.current?.(f,d)});i.observe(n),t.current=i},c=()=>{e&&(t.current?.disconnect(),t.current=null)};return r.useEffect(()=>{if(e)return n.immediate&&o(),()=>{c()}},[]),{supported:e,entries:a,start:o,stop:c}};exports.usePerformanceObserver=l;
2
2
  //# sourceMappingURL=usePerformanceObserver.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),p=require("../useEvent/useEvent.cjs"),d=(t,a)=>{const n=typeof navigator<"u"&&"permissions"in navigator&&!!navigator.permissions,[u,s]=i.useState("prompt"),r=a?.enabled??!0,c={name:t},e=p.useEvent(async()=>{try{const o=await navigator.permissions.query(c);return s(o.state),o.state}catch{return s("prompt"),"prompt"}});return i.useEffect(()=>{if(!(!n||!r))return e(),window.addEventListener("change",e),()=>{window.removeEventListener("change",e)}},[t,r]),{state:u,supported:n,query:e}};exports.usePermission=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),p=require("../useEvent/useEvent.cjs"),d=(t,a)=>{const n=typeof navigator<"u"&&"permissions"in navigator&&!!navigator.permissions,[u,r]=i.useState("prompt"),s=a?.enabled??!0,c={name:t},e=p.useEvent(async()=>{try{const o=await navigator.permissions.query(c);return r(o.state),o.state}catch{return r("prompt"),"prompt"}});return i.useEffect(()=>{if(!(!n||!s))return e(),window.addEventListener("change",e),()=>{window.removeEventListener("change",e)}},[t,s]),{state:u,supported:n,query:e}};exports.usePermission=d;
2
2
  //# sourceMappingURL=usePermission.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),i=(n,u)=>{const o=t.useRef(u);o.current=u;const e=t.useRef(n);return e.current=n,t.useEffect(()=>{const s=r=>{if(Array.isArray(e.current)){if(!e.current.includes(r.origin))return}else if(e.current!=="*"&&r.origin!==e.current)return;o.current(r.data,r)};return window.addEventListener("message",s),()=>window.removeEventListener("message",s)},[]),s=>{if(Array.isArray(e.current))return e.current.forEach(r=>window.postMessage(s,r));window.postMessage(s,e.current)}};exports.usePostMessage=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),o=(n,u)=>{const i=t.useRef(u);i.current=u;const e=t.useRef(n);return e.current=n,t.useEffect(()=>{const s=r=>{if(Array.isArray(e.current)){if(!e.current.includes(r.origin))return}else if(e.current!=="*"&&r.origin!==e.current)return;i.current(r.data,r)};return window.addEventListener("message",s),()=>window.removeEventListener("message",s)},[]),s=>{if(Array.isArray(e.current))return e.current.forEach(r=>window.postMessage(s,r));window.postMessage(s,e.current)}};exports.usePostMessage=o;
2
2
  //# sourceMappingURL=usePostMessage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePostMessage.cjs","sources":["../../../../src/hooks/usePostMessage/usePostMessage.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/** The origin of the message */\nexport type UsePostMessageOrigin = string | '*' | string[];\n\n/** The return type of the usePostMessage hook */\nexport type UsePostMessageReturn<Message> = (message: Message) => void;\n\n/**\n * @name usePostMessage\n * @description - Hook that allows you to receive messages from other origins\n * @category Browser\n * @usage low\n *\n * @overload\n * @template Message The message data type\n * @param {UsePostMessageOrigin} origin The origin of the message\n * @param {(message: Message) => Message} callback callback to get received message\n * @returns {(message: Message) => void} An object containing the current message\n *\n * @example\n * const postMessage = usePostMessage();\n */\nexport const usePostMessage = <Message>(\n origin: UsePostMessageOrigin,\n callback: (message: Message, event: MessageEvent<Message>) => void\n): UsePostMessageReturn<Message> => {\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOriginRef = useRef(origin);\n internalOriginRef.current = origin;\n\n useEffect(() => {\n const onMessage = (event: MessageEvent<Message>) => {\n if (Array.isArray(internalOriginRef.current)) {\n if (!internalOriginRef.current.includes(event.origin)) return;\n } else if (internalOriginRef.current !== '*' && event.origin !== internalOriginRef.current)\n return;\n\n internalCallbackRef.current(event.data as Message, event);\n };\n\n window.addEventListener('message', onMessage);\n return () => window.removeEventListener('message', onMessage);\n }, []);\n\n const postMessage = (message: Message) => {\n if (Array.isArray(internalOriginRef.current))\n return internalOriginRef.current.forEach((origin) => window.postMessage(message, origin));\n\n window.postMessage(message, internalOriginRef.current);\n };\n\n return postMessage;\n};\n"],"names":["usePostMessage","origin","callback","internalCallbackRef","useRef","internalOriginRef","useEffect","onMessage","event","message"],"mappings":"yGAuBaA,EAAiB,CAC5BC,EACAC,IACkC,CAClC,MAAMC,EAAsBC,EAAAA,OAAOF,CAAQ,EAC3CC,EAAoB,QAAUD,EAC9B,MAAMG,EAAoBD,EAAAA,OAAOH,CAAM,EACvC,OAAAI,EAAkB,QAAUJ,EAE5BK,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAaC,GAAiC,CAClD,GAAI,MAAM,QAAQH,EAAkB,OAAO,GACzC,GAAI,CAACA,EAAkB,QAAQ,SAASG,EAAM,MAAM,EAAG,eAC9CH,EAAkB,UAAY,KAAOG,EAAM,SAAWH,EAAkB,QACjF,OAEFF,EAAoB,QAAQK,EAAM,KAAiBA,CAAK,CAAA,EAG1D,cAAO,iBAAiB,UAAWD,CAAS,EACrC,IAAM,OAAO,oBAAoB,UAAWA,CAAS,CAAA,EAC3D,EAAE,EAEgBE,GAAqB,CACxC,GAAI,MAAM,QAAQJ,EAAkB,OAAO,EACzC,OAAOA,EAAkB,QAAQ,QAASJ,GAAW,OAAO,YAAYQ,EAASR,CAAM,CAAC,EAE1F,OAAO,YAAYQ,EAASJ,EAAkB,OAAO,CAAA,CAIzD"}
1
+ {"version":3,"file":"usePostMessage.cjs","sources":["../../../../src/hooks/usePostMessage/usePostMessage.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\r\n\r\n/** The origin of the message */\r\nexport type UsePostMessageOrigin = string | '*' | string[];\r\n\r\n/** The return type of the usePostMessage hook */\r\nexport type UsePostMessageReturn<Message> = (message: Message) => void;\r\n\r\n/**\r\n * @name usePostMessage\r\n * @description - Hook that allows you to receive messages from other origins\r\n * @category Browser\r\n * @usage low\r\n *\r\n * @overload\r\n * @template Message The message data type\r\n * @param {UsePostMessageOrigin} origin The origin of the message\r\n * @param {(message: Message) => Message} callback callback to get received message\r\n * @returns {(message: Message) => void} An object containing the current message\r\n *\r\n * @example\r\n * const postMessage = usePostMessage();\r\n */\r\nexport const usePostMessage = <Message>(\r\n origin: UsePostMessageOrigin,\r\n callback: (message: Message, event: MessageEvent<Message>) => void\r\n): UsePostMessageReturn<Message> => {\r\n const internalCallbackRef = useRef(callback);\r\n internalCallbackRef.current = callback;\r\n const internalOriginRef = useRef(origin);\r\n internalOriginRef.current = origin;\r\n\r\n useEffect(() => {\r\n const onMessage = (event: MessageEvent<Message>) => {\r\n if (Array.isArray(internalOriginRef.current)) {\r\n if (!internalOriginRef.current.includes(event.origin)) return;\r\n } else if (internalOriginRef.current !== '*' && event.origin !== internalOriginRef.current)\r\n return;\r\n\r\n internalCallbackRef.current(event.data as Message, event);\r\n };\r\n\r\n window.addEventListener('message', onMessage);\r\n return () => window.removeEventListener('message', onMessage);\r\n }, []);\r\n\r\n const postMessage = (message: Message) => {\r\n if (Array.isArray(internalOriginRef.current))\r\n return internalOriginRef.current.forEach((origin) => window.postMessage(message, origin));\r\n\r\n window.postMessage(message, internalOriginRef.current);\r\n };\r\n\r\n return postMessage;\r\n};\r\n"],"names":["usePostMessage","origin","callback","internalCallbackRef","useRef","internalOriginRef","useEffect","onMessage","event","message"],"mappings":"yGAuBaA,EAAiB,CAC5BC,EACAC,IACkC,CAClC,MAAMC,EAAsBC,EAAAA,OAAOF,CAAQ,EAC3CC,EAAoB,QAAUD,EAC9B,MAAMG,EAAoBD,EAAAA,OAAOH,CAAM,EACvC,OAAAI,EAAkB,QAAUJ,EAE5BK,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAaC,GAAiC,CAClD,GAAI,MAAM,QAAQH,EAAkB,OAAO,GACzC,GAAI,CAACA,EAAkB,QAAQ,SAASG,EAAM,MAAM,EAAG,eAC9CH,EAAkB,UAAY,KAAOG,EAAM,SAAWH,EAAkB,QACjF,OAEFF,EAAoB,QAAQK,EAAM,KAAiBA,CAAK,CAAA,EAG1D,cAAO,iBAAiB,UAAWD,CAAS,EACrC,IAAM,OAAO,oBAAoB,UAAWA,CAAS,CAAA,EAC3D,EAAE,EAEgBE,GAAqB,CACxC,GAAI,MAAM,QAAQJ,EAAkB,OAAO,EACzC,OAAOA,EAAkB,QAAQ,QAASJ,GAAW,OAAO,YAAYQ,EAASR,CAAM,CAAC,EAE1F,OAAO,YAAYQ,EAASJ,EAAkB,OAAO,CAAA,CAIzD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),r=()=>window.navigator.languages,t=()=>[],a=e=>(window.addEventListener("languagechange",e),()=>{window.removeEventListener("languagechange",e)}),s=()=>n.useSyncExternalStore(a,r,t);exports.usePreferredLanguages=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),r=()=>window.navigator.languages,t=()=>[],s=e=>(window.addEventListener("languagechange",e),()=>{window.removeEventListener("languagechange",e)}),a=()=>n.useSyncExternalStore(s,r,t);exports.usePreferredLanguages=a;
2
2
  //# sourceMappingURL=usePreferredLanguages.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),s=(e,c)=>{const r=u.useRef(e),t=u.useRef(void 0);return(c?.equality??Object.is)(e,r.current)||(t.current=r.current,r.current=e),t.current};exports.usePrevious=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),c=(e,s)=>{const r=u.useRef(e),t=u.useRef(void 0);return(s?.equality??Object.is)(e,r.current)||(t.current=r.current,r.current=e),t.current};exports.usePrevious=c;
2
2
  //# sourceMappingURL=usePrevious.cjs.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),v=(t,e,n)=>Math.min(Math.max(t,e),n),A=(t,e)=>t<.25?.12+e*Math.random():t<.5?.08+e*Math.random():t<.8?.03+e*Math.random():t<.95?.01+e/2*Math.random():t<.99?.005*Math.random():0,P=(t=0,e={})=>{const n=Math.max(e.speed??250,16),m=v(e.rate??.02,0,.3),M=e.maximum??.98,h=e.delay??250,[o,a]=r.useState(t),[d,s]=r.useState(!!e.immediately),[f,u]=r.useState(d),l=r.useRef(void 0),y=()=>{a(1),u(!1),setTimeout(()=>s(!1),h)},i=(c=A(o,m))=>a(x=>v(x+c,t,M)),I=(c=t)=>{s(!0),u(!0),a(c)},S=()=>{s(!1),u(!1),a(0)};return r.useEffect(()=>{if(f)return l.current=setInterval(i,n),()=>clearInterval(l.current)},[f,n,m]),{value:o,active:d,start:I,done:y,inc:i,remove:S}};exports.useProgress=P;
2
+ //# sourceMappingURL=useProgress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProgress.cjs","sources":["../../../../src/hooks/useProgress/useProgress.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveAutoIncrement = (progress: number, trickleRate: number) => {\n if (progress < 0.25) return 0.12 + trickleRate * Math.random();\n if (progress < 0.5) return 0.08 + trickleRate * Math.random();\n if (progress < 0.8) return 0.03 + trickleRate * Math.random();\n if (progress < 0.95) return 0.01 + (trickleRate / 2) * Math.random();\n if (progress < 0.99) return 0.005 * Math.random();\n return 0;\n};\n\n/** The use progress options type */\nexport interface UseProgressOptions {\n /** Delay before reset to null after done */\n delay?: number;\n /** Start progress immediately */\n immediately?: boolean;\n /** Maximum progress value */\n maximum?: number;\n /** Additional random amount for each auto increment */\n rate?: number;\n /** Auto-increment frequency in milliseconds */\n speed?: number;\n}\n\n/** The use progress return type */\nexport interface UseProgressReturn {\n /** Whether progress is currently active */\n active: boolean;\n /** Current progress value in range 0..1, null means hidden */\n value: number;\n /** Complete progress to 100% */\n done: (force?: boolean) => number | null;\n /** Increment progress with easing behavior */\n inc: (amount?: number) => number | null;\n /** Remove progress and stop timers */\n remove: () => void;\n /** Start progress and auto incrementing */\n start: (from?: number | null) => number;\n}\n\n/**\n * @name useProgress\n * @description - Hook that creates a lightweight progress bar\n * @category Time\n * @usage medium\n *\n * @param {number} [initialProgress] Initial progress value in range 0..1\n * @param {boolean} [options.active] Controls progress externally (true -> start, false -> done)\n * @param {number} [options.maximum=0.95] Maximum value when progress starts\n * @param {number} [options.speed=250] Auto increment interval in milliseconds\n * @param {number} [options.rate=0.02] Additional random increment amount on each tick\n * @param {number} [options.delay=250] Delay before reset to null after done\n * @returns {UseProgressReturn} Current progress state and control methods\n *\n * @example\n * const { value, active, start, done, inc, set, remove } = useProgress(0.2);\n */\nexport const useProgress = (initialValue: number = 0, options: UseProgressOptions = {}) => {\n const speed = Math.max(options.speed ?? 250, 16);\n const rate = clamp(options.rate ?? 0.02, 0, 0.3);\n const maximum = options.maximum ?? 0.98;\n const delay = options.delay ?? 250;\n\n const [value, setValue] = useState(initialValue);\n const [active, setActive] = useState(!!options.immediately);\n const [internalActive, setInternalActive] = useState(active);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n\n const done = () => {\n setValue(1);\n setInternalActive(false);\n setTimeout(() => setActive(false), delay);\n };\n\n const inc = (amount: number = resolveAutoIncrement(value, rate)) =>\n setValue((currentValue) => clamp(currentValue + amount, initialValue, maximum));\n\n const start = (from: number = initialValue) => {\n setActive(true);\n setInternalActive(true);\n setValue(from);\n };\n\n const remove = () => {\n setActive(false);\n setInternalActive(false);\n setValue(0);\n };\n\n useEffect(() => {\n if (!internalActive) return;\n intervalIdRef.current = setInterval(inc, speed);\n return () => clearInterval(intervalIdRef.current);\n }, [internalActive, speed, rate]);\n\n return {\n value,\n active,\n start,\n done,\n inc,\n remove\n };\n};\n"],"names":["clamp","value","min","max","resolveAutoIncrement","progress","trickleRate","useProgress","initialValue","options","speed","rate","maximum","delay","setValue","useState","active","setActive","internalActive","setInternalActive","intervalIdRef","useRef","done","inc","amount","currentValue","start","from","remove","useEffect"],"mappings":"yGAEMA,EAAQ,CAACC,EAAeC,EAAaC,IAAgB,KAAK,IAAI,KAAK,IAAIF,EAAOC,CAAG,EAAGC,CAAG,EAEvFC,EAAuB,CAACC,EAAkBC,IAC1CD,EAAW,IAAa,IAAOC,EAAc,KAAK,OAAA,EAClDD,EAAW,GAAY,IAAOC,EAAc,KAAK,OAAA,EACjDD,EAAW,GAAY,IAAOC,EAAc,KAAK,OAAA,EACjDD,EAAW,IAAa,IAAQC,EAAc,EAAK,KAAK,OAAA,EACxDD,EAAW,IAAa,KAAQ,KAAK,OAAA,EAClC,EAkDIE,EAAc,CAACC,EAAuB,EAAGC,EAA8B,CAAA,IAAO,CACzF,MAAMC,EAAQ,KAAK,IAAID,EAAQ,OAAS,IAAK,EAAE,EACzCE,EAAOX,EAAMS,EAAQ,MAAQ,IAAM,EAAG,EAAG,EACzCG,EAAUH,EAAQ,SAAW,IAC7BI,EAAQJ,EAAQ,OAAS,IAEzB,CAACR,EAAOa,CAAQ,EAAIC,EAAAA,SAASP,CAAY,EACzC,CAACQ,EAAQC,CAAS,EAAIF,EAAAA,SAAS,CAAC,CAACN,EAAQ,WAAW,EACpD,CAACS,EAAgBC,CAAiB,EAAIJ,EAAAA,SAASC,CAAM,EAErDI,EAAgBC,EAAAA,OAAuC,MAAS,EAEhEC,EAAO,IAAM,CACjBR,EAAS,CAAC,EACVK,EAAkB,EAAK,EACvB,WAAW,IAAMF,EAAU,EAAK,EAAGJ,CAAK,CAAA,EAGpCU,EAAM,CAACC,EAAiBpB,EAAqBH,EAAOU,CAAI,IAC5DG,EAAUW,GAAiBzB,EAAMyB,EAAeD,EAAQhB,EAAcI,CAAO,CAAC,EAE1Ec,EAAQ,CAACC,EAAenB,IAAiB,CAC7CS,EAAU,EAAI,EACdE,EAAkB,EAAI,EACtBL,EAASa,CAAI,CAAA,EAGTC,EAAS,IAAM,CACnBX,EAAU,EAAK,EACfE,EAAkB,EAAK,EACvBL,EAAS,CAAC,CAAA,EAGZe,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAKX,EACL,OAAAE,EAAc,QAAU,YAAYG,EAAKb,CAAK,EACvC,IAAM,cAAcU,EAAc,OAAO,CAAA,EAC/C,CAACF,EAAgBR,EAAOC,CAAI,CAAC,EAEzB,CACL,MAAAV,EACA,OAAAe,EACA,MAAAU,EACA,KAAAJ,EACA,IAAAC,EACA,OAAAK,CAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),A=require("../useDidUpdate/useDidUpdate.cjs"),F=require("../useMount/useMount.cjs"),b=require("../../utils/helpers/getRetry.cjs"),L=(D,e)=>{const a=e?.enabled??!0,n=t.useRef(e?.retry?b.getRetry(e.retry):0),h=t.useRef(!1),[q,f]=t.useState(!1),[E,l]=t.useState(!1),[C,o]=t.useState(!1),[M,i]=t.useState(!1),[k,g]=t.useState(!!e?.placeholderData),[m,v]=t.useState(void 0),[w,R]=t.useState(e?.placeholderData),y=t.useRef(new AbortController),I=t.useRef(void 0),d=e?.keys??[],S=()=>{y.current.abort(),y.current=new AbortController},c=s=>{S(),f(!0),s==="init"&&(h.current=!0,l(!0)),s==="refetch"&&i(!0),D({signal:y.current.signal,keys:d}).then(r=>{const u=e?.select?e?.select(r):r;e?.onSuccess?.(u),R(u),g(!0),v(void 0),o(!1),f(!1),s==="init"&&l(!1),s==="refetch"&&i(!1)}).catch(r=>{if(n.current>0){n.current-=1;const u=typeof e?.retryDelay=="function"?e?.retryDelay(n.current,r):e?.retryDelay;if(u){setTimeout(()=>c(s),u);return}return c(s)}e?.onError?.(r),R(void 0),g(!1),v(r),o(!0),f(!1),s==="init"&&l(!1),s==="refetch"&&i(!1),n.current=e?.retry?b.getRetry(e.retry):0}).finally(()=>{if(e?.refetchInterval){const r=setInterval(()=>{clearInterval(r),c("refetch")},e?.refetchInterval);I.current=r}})};return F.useMount(()=>{a&&c("init")}),A.useDidUpdate(()=>{a&&c(h.current?"refetch":"init")},[a,...d]),t.useEffect(()=>()=>{clearInterval(I.current)},[a,e?.refetchInterval,e?.retry,...d]),{abort:S,data:w,error:m,refetch:()=>c("refetch"),isFetching:q,isLoading:E,isError:C,isSuccess:k,isRefetching:M}};exports.useQuery=L;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),A=require("../useDidUpdate/useDidUpdate.cjs"),F=require("../useMount/useMount.cjs"),b=require("../../utils/helpers/getRetry.cjs"),L=(D,e)=>{const a=e?.enabled??!0,n=r.useRef(e?.retry?b.getRetry(e.retry):0),h=r.useRef(!1),[q,f]=r.useState(!1),[E,l]=r.useState(!1),[C,o]=r.useState(!1),[M,i]=r.useState(!1),[k,g]=r.useState(!!e?.placeholderData),[m,v]=r.useState(void 0),[w,R]=r.useState(e?.placeholderData),y=r.useRef(new AbortController),I=r.useRef(void 0),d=e?.keys??[],S=()=>{y.current.abort(),y.current=new AbortController},u=s=>{S(),f(!0),s==="init"&&(h.current=!0,l(!0)),s==="refetch"&&i(!0),D({signal:y.current.signal,keys:d}).then(t=>{const c=e?.select?e?.select(t):t;e?.onSuccess?.(c),R(c),g(!0),v(void 0),o(!1),f(!1),s==="init"&&l(!1),s==="refetch"&&i(!1)}).catch(t=>{if(n.current>0){n.current-=1;const c=typeof e?.retryDelay=="function"?e?.retryDelay(n.current,t):e?.retryDelay;if(c){setTimeout(()=>u(s),c);return}return u(s)}e?.onError?.(t),R(void 0),g(!1),v(t),o(!0),f(!1),s==="init"&&l(!1),s==="refetch"&&i(!1),n.current=e?.retry?b.getRetry(e.retry):0}).finally(()=>{if(e?.refetchInterval){const t=setInterval(()=>{clearInterval(t),u("refetch")},e?.refetchInterval);I.current=t}})};return F.useMount(()=>{a&&u("init")}),A.useDidUpdate(()=>{a&&u(h.current?"refetch":"init")},[a,...d]),r.useEffect(()=>()=>{clearInterval(I.current)},[a,e?.refetchInterval,e?.retry,...d]),{abort:S,data:w,error:m,refetch:()=>u("refetch"),isFetching:q,isLoading:E,isError:C,isSuccess:k,isRefetching:M}};exports.useQuery=L;
2
2
  //# sourceMappingURL=useQuery.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),c=require("react-dom"),a=(s=[])=>{const[e,r]=o.useState(s);return{add:t=>r(u=>[...u,t]),remove:()=>{let t;return c.flushSync(()=>{r(([u,...n])=>(t=u,n))}),t},clear:()=>r([]),first:e[0],last:e[e.length-1],size:e.length,queue:e}};exports.useQueue=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),c=require("react-dom"),l=(s=[])=>{const[e,t]=o.useState(s);return{add:r=>t(u=>[...u,r]),remove:()=>{let r;return c.flushSync(()=>{t(([u,...n])=>(r=u,n))}),r},clear:()=>t([]),first:e[0],last:e[e.length-1],size:e.length,queue:e}};exports.useQueue=l;
2
2
  //# sourceMappingURL=useQueue.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),s=(n,u)=>{let e=n;function t(r){e!==r&&(e=r,u(e))}return Object.defineProperty(t,"current",{get(){return e},set(r){e!==r&&(e=r,u(e))},configurable:!0,enumerable:!0}),t},f=n=>{const[u,e]=c.useState(n),[t]=c.useState(()=>s(n,e));return t.state=u,t};exports.createRefState=s;exports.useRefState=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),c=(n,u)=>{let e=n;function t(r){e!==r&&(e=r,u(e))}return Object.defineProperty(t,"current",{get(){return e},set(r){e!==r&&(e=r,u(e))},configurable:!0,enumerable:!0}),t},f=n=>{const[u,e]=s.useState(n),[t]=s.useState(()=>c(n,e));return t.state=u,t};exports.createRefState=c;exports.useRefState=f;
2
2
  //# sourceMappingURL=useRefState.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),S=require("../useRefState/useRefState.cjs"),c=require("../../utils/helpers/isTarget.cjs"),y=((...e)=>{const t=c.isTarget(e[0])?e[0]:void 0,n=t?typeof e[1]=="object"?e[1]:{onChange:e[1]}:typeof e[0]=="object"?e[0]:{onChange:e[0]},u=n?.onChange,i=n?.enabled??!0,[b,v]=s.useState(),[f,R]=s.useState(),r=S.useRefState(),l=s.useRef(u);return l.current=u,s.useEffect(()=>{if(!i||!t&&!r.state)return;const a=t?c.isTarget.getElement(t):r.current;if(!a)return;const o=new ResizeObserver(([g],d)=>{v(g),l.current?.(g,d)});return R(o),o.observe(a,n),()=>{o.disconnect()}},[t&&c.isTarget.getRawElement(t),r.state,n?.box,i]),t?{entry:b,observer:f}:{ref:r,entry:b,observer:f}});exports.useResizeObserver=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),S=require("../useRefState/useRefState.cjs"),c=require("../../utils/helpers/isTarget.cjs"),y=((...e)=>{const t=c.isTarget(e[0])?e[0]:void 0,n=t?typeof e[1]=="object"?e[1]:{onChange:e[1]}:typeof e[0]=="object"?e[0]:{onChange:e[0]},u=n?.onChange,i=n?.enabled??!0,[b,v]=s.useState(),[f,R]=s.useState(),r=S.useRefState(),l=s.useRef(u);return l.current=u,s.useEffect(()=>{if(!i||!t&&!r.state)return;const g=t?c.isTarget.getElement(t):r.current;if(!g)return;const o=new ResizeObserver(([a],d)=>{v(a),l.current?.(a,d)});return R(o),o.observe(g,n),()=>{o.disconnect()}},[t&&c.isTarget.getRawElement(t),r.state,n?.box,i]),t?{entry:b,observer:f}:{ref:r,entry:b,observer:f}});exports.useResizeObserver=y;
2
2
  //# sourceMappingURL=useResizeObserver.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),e="script-status",A=(s,c={})=>{const[S,o]=d.useState(()=>{const r=document.querySelector(`script[src="${s}"]`),n=r?.getAttribute(e);return n||(r?"unknown":"loading")}),{removeOnUnmount:u=!0,async:p=!0}=c;return d.useEffect(()=>{const r=document.querySelector(`script[src="${s}"]`),n=r?.getAttribute(e);if(n)return o(n);if(r)return o("unknown");const t=document.createElement("script");t.src=s,t.async=p;for(const[T,l]of Object.entries(c))t.setAttribute(T,String(l));t.setAttribute(e,"loading"),document.body.appendChild(t);const i=()=>{t.setAttribute(e,"ready"),o("ready")},a=()=>{t.setAttribute(e,"error"),o("error")};return t.addEventListener("load",i),t.addEventListener("error",a),()=>{u&&t.remove(),t.removeEventListener("load",i),t.removeEventListener("error",a)}},[s,u]),S};exports.SCRIPT_STATUS_ATTRIBUTE_NAME=e;exports.useScript=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),e="script-status",A=(s,u={})=>{const[S,o]=d.useState(()=>{const r=document.querySelector(`script[src="${s}"]`),n=r?.getAttribute(e);return n||(r?"unknown":"loading")}),{removeOnUnmount:c=!0,async:p=!0}=u;return d.useEffect(()=>{const r=document.querySelector(`script[src="${s}"]`),n=r?.getAttribute(e);if(n)return o(n);if(r)return o("unknown");const t=document.createElement("script");t.src=s,t.async=p;for(const[T,l]of Object.entries(u))t.setAttribute(T,String(l));t.setAttribute(e,"loading"),document.body.appendChild(t);const i=()=>{t.setAttribute(e,"ready"),o("ready")},a=()=>{t.setAttribute(e,"error"),o("error")};return t.addEventListener("load",i),t.addEventListener("error",a),()=>{c&&t.remove(),t.removeEventListener("load",i),t.removeEventListener("error",a)}},[s,c]),S};exports.SCRIPT_STATUS_ATTRIBUTE_NAME=e;exports.useScript=A;
2
2
  //# sourceMappingURL=useScript.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),P=require("../useRefState/useRefState.cjs"),m=require("../../utils/helpers/isTarget.cjs"),j=1,V=((...o)=>{const c=m.isTarget(o[0])?o[0]:void 0,S=c?typeof o[1]=="object"?o[1]:{onScroll:o[1]}:typeof o[0]=="object"?o[0]:{onScroll:o[0]},g=P.useRefState(),R=d.useRef(S),u=d.useRef(null);R.current=S;const[y,E]=d.useState(!1),f=d.useRef({x:0,y:0});d.useEffect(()=>{if(!c&&!g.state)return;const e=(c?m.isTarget.getElement(c):g.current)??window;u.current=e;const l=t=>{E(!1),S?.onStop?.(t)},s=t=>{E(!0);const r=t.target===document?t.target.documentElement:t.target,{display:v,flexDirection:h,direction:q}=r.style,p=q==="rtl"?-1:1,i=r.scrollLeft;let n=r.scrollTop;r instanceof Document&&!n&&(n=window.document.body.scrollTop);const a=R.current?.offset,x=i*p<=(a?.left??0),w=i*p+r.clientWidth>=r.scrollWidth-(a?.right??0)-j,L=n<=(a?.top??0),D=n+r.clientHeight>=r.scrollHeight-(a?.bottom??0)-j,H=v==="flex"&&h==="column-reverse",I=v==="flex"&&h==="column-reverse",O={x:i,y:n,directions:{left:i<f.current.x,right:i>f.current.x,top:n<f.current.y,bottom:n>f.current.y},arrived:{left:I?w:x,right:I?x:w,top:H?D:L,bottom:H?L:D}};f.current={x:i,y:n},R.current?.onScroll?.(O,t)};return e.addEventListener("scroll",s),e.addEventListener("scrollend",l),()=>{e.removeEventListener("scroll",s),e.removeEventListener("scrollend",l)}},[c&&m.isTarget.getRawElement(c),g.state]);const T=e=>{if(!u.current)return;const{behavior:l,block:s,inline:t}=e??{};u.current.scrollIntoView({behavior:l,block:s,inline:t})},b=e=>{if(!u.current)return;const{x:l,y:s,behavior:t}=e??{};u.current.scrollTo({left:l,top:s,behavior:t})};return c?{scrollIntoView:T,scrollTo:b,scrolling:y}:{ref:g,scrolling:y,scrollIntoView:T,scrollTo:b}});exports.useScroll=V;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),A=require("../useRefState/useRefState.cjs"),M=require("../useRerender/useRerender.cjs"),h=require("../../utils/helpers/isTarget.cjs"),I=1,P=((...e)=>{const c=h.isTarget(e[0])?e[0]:void 0,S=c?typeof e[1]=="function"?{...e[2],onScroll:e[1]}:e[1]:typeof e[0]=="object"?e[0]:typeof e[0]=="function"?{...e[1],onScroll:e[0]}:void 0,a=A.useRefState(),g=d.useRef(S),u=d.useRef(null),o=d.useRef({x:0,y:0,directions:{left:!1,right:!1,top:!1,bottom:!1},arrived:{left:!0,right:!1,top:!0,bottom:!1}}),p=d.useRef(!1),O=M.useRerender();g.current=S;const v=()=>(p.current=!0,o.current),_=t=>{o.current=t,p.current&&O()};d.useEffect(()=>{if(!c&&!a.state)return;const t=(c?h.isTarget.getElement(c):a.current)??window;u.current=t;const l=r=>{g.current?.onStop?.(r)},i=r=>{const n=r.target===document?r.target.documentElement:r.target,{display:E,flexDirection:T,direction:j}=n.style,w=j==="rtl"?-1:1,f=n.scrollLeft;let s=n.scrollTop;n instanceof Document&&!s&&(s=window.document.body.scrollTop);const R=g.current?.offset,m=f*w<=(R?.left??0),x=f*w+n.clientWidth>=n.scrollWidth-(R?.right??0)-I,L=s<=(R?.top??0),q=s+n.clientHeight>=n.scrollHeight-(R?.bottom??0)-I,V=E==="flex"&&T==="column-reverse",D=E==="flex"&&T==="row-reverse",H={x:f,y:s,directions:{left:f<o.current.x,right:f>o.current.x,top:s<o.current.y,bottom:s>o.current.y},arrived:{left:D?x:m,right:D?m:x,top:V?q:L,bottom:V?L:q}};_(H),g.current?.onScroll?.(H,r)};return t.addEventListener("scroll",i),t.addEventListener("scrollend",l),()=>{t.removeEventListener("scroll",i),t.removeEventListener("scrollend",l)}},[c&&h.isTarget.getRawElement(c),a.state]);const b=t=>{if(!u.current)return;const{behavior:l,block:i,inline:r}=t??{};u.current.scrollIntoView({behavior:l,block:i,inline:r})},y=t=>{if(!u.current)return;const{x:l,y:i,behavior:r}=t??{};u.current.scrollTo({left:l,top:i,behavior:r})};return c?{scrollIntoView:b,scrollTo:y,snapshot:o.current,watch:v}:{ref:a,snapshot:o.current,watch:v,scrollIntoView:b,scrollTo:y}});exports.useScroll=P;
2
2
  //# sourceMappingURL=useScroll.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScroll.cjs","sources":["../../../../src/hooks/useScroll/useScroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n\nexport interface UseScrollOptions {\n /** The on scroll callback */\n onScroll?: (params: UseScrollCallbackParams, event: Event) => void;\n\n /** The on end scroll callback */\n onStop?: (event: Event) => void;\n\n /** Offset arrived states by x pixels. */\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n}\n\nexport interface UseScrollCallbackParams {\n /** The element x position */\n x: number;\n /** The element y position */\n y: number;\n /** State of scroll arrived */\n arrived: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** State of scroll direction */\n directions: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n}\n\n/** The scroll into view params type */\nexport interface ScrollIntoViewParams {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n/** The scroll to params type */\nexport interface ScrollToParams {\n behavior?: ScrollBehavior;\n x: number;\n y: number;\n}\n\n/** The use scroll return type */\nexport interface UseScrollReturn {\n /** The state of scrolling */\n scrolling: boolean;\n /** Function to scroll element into view */\n scrollIntoView: (params?: ScrollIntoViewParams) => void;\n /** Function to scroll element to a specific position */\n scrollTo: (params?: ScrollToParams) => void;\n}\n\nexport interface UseScroll {\n (\n target?: HookTarget,\n callback?: (params: UseScrollCallbackParams, event: Event) => void\n ): UseScrollReturn;\n\n (target?: HookTarget, options?: UseScrollOptions): UseScrollReturn;\n\n <Target extends Element>(\n callback?: (params: UseScrollCallbackParams, event: Event) => void,\n target?: never\n ): UseScrollReturn & { ref: StateRef<Target> };\n\n <Target extends Element>(\n options?: UseScrollOptions,\n target?: never\n ): UseScrollReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useScroll\n * @description - Hook that allows you to control scroll a element\n * @category Sensors\n * @usage low\n *\n * @overload\n * @template Target The target element\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} [target=window] The target element to scroll\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(options);\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to scroll\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(() => console.log('callback'));\n */\nexport const useScroll = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onScroll: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onScroll: params[0] }\n ) as UseScrollOptions | undefined;\n\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n const elementRef = useRef<Element>(null);\n internalOptionsRef.current = options;\n\n const [scrolling, setScrolling] = useState(false);\n const scrollPositionRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element =\n ((target ? isTarget.getElement(target) : internalRef.current) as Element) ?? window;\n\n elementRef.current = element;\n\n const onScrollEnd = (event: Event) => {\n setScrolling(false);\n options?.onStop?.(event);\n };\n\n const onScroll = (event: Event) => {\n setScrolling(true);\n const target = (\n event.target === document ? (event.target as Document).documentElement : event.target\n ) as HTMLElement;\n\n const { display, flexDirection, direction } = target.style;\n const directionMultiplier = direction === 'rtl' ? -1 : 1;\n\n const scrollLeft = target.scrollLeft;\n let scrollTop = target.scrollTop;\n if (target instanceof Document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\n const offset = internalOptionsRef.current?.offset;\n const left = scrollLeft * directionMultiplier <= (offset?.left ?? 0);\n const right =\n scrollLeft * directionMultiplier + target.clientWidth >=\n target.scrollWidth - (offset?.right ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n const top = scrollTop <= (offset?.top ?? 0);\n const bottom =\n scrollTop + target.clientHeight >=\n target.scrollHeight - (offset?.bottom ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\n const isColumnReverse = display === 'flex' && flexDirection === 'column-reverse';\n const isRowReverse = display === 'flex' && flexDirection === 'column-reverse';\n\n const params = {\n x: scrollLeft,\n y: scrollTop,\n directions: {\n left: scrollLeft < scrollPositionRef.current.x,\n right: scrollLeft > scrollPositionRef.current.x,\n top: scrollTop < scrollPositionRef.current.y,\n bottom: scrollTop > scrollPositionRef.current.y\n },\n arrived: {\n left: isRowReverse ? right : left,\n right: isRowReverse ? left : right,\n top: isColumnReverse ? bottom : top,\n bottom: isColumnReverse ? top : bottom\n }\n };\n\n scrollPositionRef.current = { x: scrollLeft, y: scrollTop };\n internalOptionsRef.current?.onScroll?.(params, event);\n };\n\n element.addEventListener('scroll', onScroll);\n element.addEventListener('scrollend', onScrollEnd);\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state]);\n\n const scrollIntoView = (params?: {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n }) => {\n if (!elementRef.current) return;\n\n const { behavior, block, inline } = params ?? {};\n\n elementRef.current.scrollIntoView({\n behavior,\n block,\n inline\n });\n };\n\n const scrollTo = (params?: { x: number; y: number; behavior?: ScrollBehavior }) => {\n if (!elementRef.current) return;\n\n const { x, y, behavior } = params ?? {};\n\n elementRef.current.scrollTo({ left: x, top: y, behavior });\n };\n\n if (target) return { scrollIntoView, scrollTo, scrolling };\n return {\n ref: internalRef,\n scrolling,\n scrollIntoView,\n scrollTo\n };\n}) as UseScroll;\n"],"names":["ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","params","target","isTarget","options","internalRef","useRefState","internalOptionsRef","useRef","elementRef","scrolling","setScrolling","useState","scrollPositionRef","useEffect","element","onScrollEnd","event","onScroll","display","flexDirection","direction","directionMultiplier","scrollLeft","scrollTop","offset","left","right","top","bottom","isColumnReverse","isRowReverse","scrollIntoView","behavior","block","inline","scrollTo","x","y"],"mappings":"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"}
1
+ {"version":3,"file":"useScroll.cjs","sources":["../../../../src/hooks/useScroll/useScroll.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\nimport { useRerender } from '../useRerender/useRerender';\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n\nexport interface UseScrollOptions {\n /** Offset arrived states by x pixels. */\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n\n /** The on scroll callback */\n onScroll?: (params: UseScrollCallbackParams, event: Event) => void;\n\n /** The on end scroll callback */\n onStop?: (event: Event) => void;\n}\n\nexport interface UseScrollCallbackParams {\n /** State of scroll arrived */\n arrived: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** State of scroll direction */\n directions: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** The element x position */\n x: number;\n /** The element y position */\n y: number;\n}\n\n/** The scroll into view params type */\nexport interface ScrollIntoViewParams {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n/** The scroll to params type */\nexport interface ScrollToParams {\n behavior?: ScrollBehavior;\n x: number;\n y: number;\n}\n\n/** The use scroll return type */\nexport interface UseScrollReturn {\n /** The latest scroll value snapshot */\n snapshot: UseScrollCallbackParams;\n /** Function to scroll element into view */\n scrollIntoView: (params?: ScrollIntoViewParams) => void;\n /** Function to scroll element to a specific position */\n scrollTo: (params?: ScrollToParams) => void;\n /** Function to enable subscriptions and rerender on next updates */\n watch: () => UseScrollCallbackParams;\n}\n\nexport interface UseScroll {\n (\n target?: HookTarget,\n callback?: (params: UseScrollCallbackParams, event: Event) => void\n ): UseScrollReturn;\n\n (target: HookTarget, options?: UseScrollOptions): UseScrollReturn;\n\n <Target extends Element>(\n callback?: (params: UseScrollCallbackParams, event: Event) => void,\n target?: never\n ): UseScrollReturn & { ref: StateRef<Target> };\n\n <Target extends Element>(\n options?: UseScrollOptions,\n target?: never\n ): UseScrollReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useScroll\n * @description - Hook that allows you to control scroll a element\n * @category Sensors\n * @usage low\n *\n * @overload\n * @template Target The target element\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} [target=window] The target element to scroll\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(options);\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to scroll\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(() => console.log('callback'));\n */\nexport const useScroll = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (\n target\n ? typeof params[1] === 'function'\n ? { ...params[2], onScroll: params[1] }\n : params[1]\n : typeof params[0] === 'object'\n ? params[0]\n : typeof params[0] === 'function'\n ? { ...params[1], onScroll: params[0] }\n : undefined\n ) as UseScrollOptions | undefined;\n\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n const elementRef = useRef<Element>(null);\n const snapshotRef = useRef<UseScrollCallbackParams>({\n x: 0,\n y: 0,\n directions: {\n left: false,\n right: false,\n top: false,\n bottom: false\n },\n arrived: {\n left: true,\n right: false,\n top: true,\n bottom: false\n }\n });\n const watchingRef = useRef(false);\n const rerender = useRerender();\n internalOptionsRef.current = options;\n\n const watch = () => {\n watchingRef.current = true;\n return snapshotRef.current;\n };\n const updateValue = (value: UseScrollCallbackParams) => {\n snapshotRef.current = value;\n if (watchingRef.current) rerender();\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element =\n ((target ? isTarget.getElement(target) : internalRef.current) as Element) ?? window;\n\n elementRef.current = element;\n\n const onScrollEnd = (event: Event) => {\n internalOptionsRef.current?.onStop?.(event);\n };\n\n const onScroll = (event: Event) => {\n const target = (\n event.target === document ? (event.target as Document).documentElement : event.target\n ) as HTMLElement;\n\n const { display, flexDirection, direction } = target.style;\n const directionMultiplier = direction === 'rtl' ? -1 : 1;\n\n const scrollLeft = target.scrollLeft;\n let scrollTop = target.scrollTop;\n if (target instanceof Document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\n const offset = internalOptionsRef.current?.offset;\n const left = scrollLeft * directionMultiplier <= (offset?.left ?? 0);\n const right =\n scrollLeft * directionMultiplier + target.clientWidth >=\n target.scrollWidth - (offset?.right ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n const top = scrollTop <= (offset?.top ?? 0);\n const bottom =\n scrollTop + target.clientHeight >=\n target.scrollHeight - (offset?.bottom ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\n const isColumnReverse = display === 'flex' && flexDirection === 'column-reverse';\n const isRowReverse = display === 'flex' && flexDirection === 'row-reverse';\n\n const updatedValue: UseScrollCallbackParams = {\n x: scrollLeft,\n y: scrollTop,\n directions: {\n left: scrollLeft < snapshotRef.current.x,\n right: scrollLeft > snapshotRef.current.x,\n top: scrollTop < snapshotRef.current.y,\n bottom: scrollTop > snapshotRef.current.y\n },\n arrived: {\n left: isRowReverse ? right : left,\n right: isRowReverse ? left : right,\n top: isColumnReverse ? bottom : top,\n bottom: isColumnReverse ? top : bottom\n }\n };\n\n updateValue(updatedValue);\n internalOptionsRef.current?.onScroll?.(updatedValue, event);\n };\n\n element.addEventListener('scroll', onScroll);\n element.addEventListener('scrollend', onScrollEnd);\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state]);\n\n const scrollIntoView = (params?: {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n }) => {\n if (!elementRef.current) return;\n\n const { behavior, block, inline } = params ?? {};\n\n elementRef.current.scrollIntoView({\n behavior,\n block,\n inline\n });\n };\n\n const scrollTo = (params?: { x: number; y: number; behavior?: ScrollBehavior }) => {\n if (!elementRef.current) return;\n const { x, y, behavior } = params ?? {};\n\n elementRef.current.scrollTo({ left: x, top: y, behavior });\n };\n\n if (target) return { scrollIntoView, scrollTo, snapshot: snapshotRef.current, watch };\n return {\n ref: internalRef,\n snapshot: snapshotRef.current,\n watch,\n scrollIntoView,\n scrollTo\n };\n}) as UseScroll;\n"],"names":["ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","params","target","isTarget","options","internalRef","useRefState","internalOptionsRef","useRef","elementRef","snapshotRef","watchingRef","rerender","useRerender","watch","updateValue","value","useEffect","element","onScrollEnd","event","onScroll","display","flexDirection","direction","directionMultiplier","scrollLeft","scrollTop","offset","left","right","top","bottom","isColumnReverse","isRowReverse","updatedValue","scrollIntoView","behavior","block","inline","scrollTo","x","y"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react"),w=require("../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),v=require("../useRefState/useRefState.cjs"),i=require("../../utils/helpers/isTarget.cjs"),I=((...t)=>{const e=i.isTarget(t[0])?t[0]:void 0,c=e?t[1]:t[0],r=v.useRefState(),{behavior:l="smooth",block:u="start",inline:a="nearest",immediately:f=!0}=c??{},o=m.useRef(null);w.useIsomorphicLayoutEffect(()=>{if(!f||!e&&!r.state)return;const n=(e?i.isTarget.getElement(e):r.current)??window;o.current=n,n.scrollIntoView({behavior:l,block:u,inline:a})},[e&&i.isTarget.getRawElement(e),r.state]);const s=n=>{if(!o.current)return;const{behavior:g,block:b,inline:h}=n??{};o.current.scrollIntoView({behavior:g,block:b,inline:h})};return e?{trigger:s}:{ref:r,trigger:s}});exports.useScrollIntoView=I;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react"),w=require("../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),v=require("../useRefState/useRefState.cjs"),i=require("../../utils/helpers/isTarget.cjs"),I=((...t)=>{const e=i.isTarget(t[0])?t[0]:void 0,c=e?t[1]:t[0],r=v.useRefState(),{behavior:u="smooth",block:l="start",inline:a="nearest",immediately:f=!0}=c??{},o=m.useRef(null);w.useIsomorphicLayoutEffect(()=>{if(!f||!e&&!r.state)return;const n=(e?i.isTarget.getElement(e):r.current)??window;o.current=n,n.scrollIntoView({behavior:u,block:l,inline:a})},[e&&i.isTarget.getRawElement(e),r.state]);const s=n=>{if(!o.current)return;const{behavior:g,block:b,inline:h}=n??{};o.current.scrollIntoView({behavior:g,block:b,inline:h})};return e?{trigger:s}:{ref:r,trigger:s}});exports.useScrollIntoView=I;
2
2
  //# sourceMappingURL=useScrollIntoView.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react"),h=require("../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),m=require("../useRefState/useRefState.cjs"),s=require("../../utils/helpers/isTarget.cjs"),v=((...t)=>{const e=s.isTarget(t[0])?t[0]:void 0,i=e?t[1]:t[0],{x:u,y:l,behavior:f="auto",immediately:a=!0}=i??{},r=m.useRefState(),n=b.useRef(null);h.useIsomorphicLayoutEffect(()=>{if(!a||!e&&!r.state)return;const o=(e?s.isTarget.getElement(e):r.current)??window;n.current=o,o.scrollTo({top:l,left:u,behavior:f})},[e&&s.isTarget.getRawElement(e),r.state]);const c=o=>{if(!n.current)return;const{x:g,y:T,behavior:y}=o??{};n.current.scrollTo({left:g,top:T,behavior:y})};return e?{trigger:c}:{ref:r,trigger:c}});exports.useScrollTo=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react"),h=require("../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),m=require("../useRefState/useRefState.cjs"),s=require("../../utils/helpers/isTarget.cjs"),v=((...t)=>{const e=s.isTarget(t[0])?t[0]:void 0,u=e?t[1]:t[0],{x:c,y:l,behavior:f="auto",immediately:a=!0}=u??{},r=m.useRefState(),n=b.useRef(null);h.useIsomorphicLayoutEffect(()=>{if(!a||!e&&!r.state)return;const o=(e?s.isTarget.getElement(e):r.current)??window;n.current=o,o.scrollTo({top:l,left:c,behavior:f})},[e&&s.isTarget.getRawElement(e),r.state]);const i=o=>{if(!n.current)return;const{x:g,y:T,behavior:y}=o??{};n.current.scrollTo({left:g,top:T,behavior:y})};return e?{trigger:i}:{ref:r,trigger:i}});exports.useScrollTo=v;
2
2
  //# sourceMappingURL=useScrollTo.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react"),l=o=>{const[s,t]=h.useState(new Set(o)),r=e=>t(n=>new Set(n).add(e)),i=e=>t(n=>{if(!n.has(e))return n;const c=new Set(n);return c.delete(e),c}),d=()=>t(new Set),f=()=>t(new Set(o)),u=e=>t(n=>{if(!n.has(e))return new Set(n).add(e);const c=new Set(n);return c.delete(e),c}),S=e=>t(s.union(e)),a=e=>t(s.difference(e)),w=e=>t(s.symmetricDifference(e)),m=e=>t(s.intersection(e)),g=e=>s.has(e);return{value:s,size:s.size,has:g,add:r,remove:i,clear:d,reset:f,toggle:u,union:S,difference:a,symmetricDifference:w,intersection:m}};exports.useSet=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react"),l=o=>{const[s,t]=h.useState(new Set(o)),r=e=>t(n=>new Set(n).add(e)),i=e=>t(n=>{if(!n.has(e))return n;const c=new Set(n);return c.delete(e),c}),d=()=>t(new Set),u=()=>t(new Set(o)),f=e=>t(n=>{if(!n.has(e))return new Set(n).add(e);const c=new Set(n);return c.delete(e),c}),S=e=>t(s.union(e)),w=e=>t(s.difference(e)),a=e=>t(s.symmetricDifference(e)),m=e=>t(s.intersection(e)),g=e=>s.has(e);return{value:s,size:s.size,has:g,add:r,remove:i,clear:d,reset:u,toggle:f,union:S,difference:w,symmetricDifference:a,intersection:m}};exports.useSet=l;
2
2
  //# sourceMappingURL=useSet.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),f=(e,r)=>{if(e===r)return!0;if(e==null||r==null)return e===r;if(typeof e!=typeof r)return!1;if(typeof e!="object")return e===r;if(Array.isArray(e)!==Array.isArray(r))return!1;if(Array.isArray(e))return e.length===r.length&&e.every((n,l)=>f(n,r[l]));const t=Object.keys(e),u=Object.keys(r);if(t.length!==u.length)return!1;for(const n of t)if(!u.includes(n)||!f(e[n],r[n]))return!1;return!0},c=(e,r)=>{const t=s.useRef(r);(!t.current||!f(r,t.current))&&(t.current=r),s.useEffect(e,t.current)};exports.deepEqual=f;exports.useShallowEffect=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),u=(e,r)=>{if(e===r)return!0;if(e==null||r==null)return e===r;if(typeof e!=typeof r)return!1;if(typeof e!="object")return e===r;if(Array.isArray(e)!==Array.isArray(r))return!1;if(Array.isArray(e))return e.length===r.length&&e.every((n,l)=>u(n,r[l]));const t=Object.keys(e),f=Object.keys(r);if(t.length!==f.length)return!1;for(const n of t)if(!f.includes(n)||!u(e[n],r[n]))return!1;return!0},c=(e,r)=>{const t=s.useRef(r);(!t.current||!u(r,t.current))&&(t.current=r),s.useEffect(e,t.current)};exports.deepEqual=u;exports.useShallowEffect=c;
2
2
  //# sourceMappingURL=useShallowEffect.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),i=()=>window?.SpeechRecognition??window?.webkitSpeechRecognition,v=(S={})=>{const c=typeof window<"u"&&!!i(),{continuous:d=!1,interimResults:R=!1,language:a="en-US",grammars:u,maxAlternatives:m=1,onStart:h,onEnd:w,onError:E,onResult:b}=S,[l,s]=n.useState(!1),[x,y]=n.useState(""),[A,T]=n.useState(!1),[j,g]=n.useState(null),[o]=n.useState(()=>{if(!c)return;const r=i(),t=new r;return t.continuous=d,u&&(t.grammars=u),t.interimResults=R,t.lang=a,t.maxAlternatives=m,t.onstart=()=>{s(!0),T(!1),h?.()},t.onerror=e=>{g(e),s(!1),E?.(e)},t.onresult=e=>{const k=e.results[e.resultIndex],{transcript:q}=k[0];s(!1),y(q),g(null),b?.(e)},t.onend=()=>{s(!1),w?.(),t.lang=a},t});n.useEffect(()=>()=>o?.stop(),[]);const p=()=>o?.start(),f=()=>o?.stop();return{supported:c,transcript:x,recognition:o,final:A,listening:l,error:j,start:p,stop:f,toggle:(r=!l)=>r?p():f()}};exports.getSpeechRecognition=i;exports.useSpeechRecognition=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),i=()=>window?.SpeechRecognition??window?.webkitSpeechRecognition,k=(S={})=>{const c=typeof window<"u"&&!!i(),{continuous:d=!1,interimResults:R=!1,language:a="en-US",grammars:u,maxAlternatives:m=1,onStart:h,onEnd:w,onError:E,onResult:b}=S,[l,s]=n.useState(!1),[x,y]=n.useState(""),[q,A]=n.useState(!1),[T,g]=n.useState(null),[o]=n.useState(()=>{if(!c)return;const r=i(),e=new r;return e.continuous=d,u&&(e.grammars=u),e.interimResults=R,e.lang=a,e.maxAlternatives=m,e.onstart=()=>{s(!0),A(!1),h?.()},e.onerror=t=>{g(t),s(!1),E?.(t)},e.onresult=t=>{const $=t.results[t.resultIndex],{transcript:j}=$[0];s(!1),y(j),g(null),b?.(t)},e.onend=()=>{s(!1),w?.(),e.lang=a},e});n.useEffect(()=>()=>o?.stop(),[]);const p=()=>o?.start(),f=()=>o?.stop();return{supported:c,transcript:x,recognition:o,final:q,listening:l,error:T,start:p,stop:f,toggle:(r=!l)=>r?p():f()}};exports.getSpeechRecognition=i;exports.useSpeechRecognition=k;
2
2
  //# sourceMappingURL=useSpeechRecognition.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("react"),u=(r,t)=>{switch(t.type){case"SET":{const{value:n,capacity:e}=t.payload,o=[...r.history.slice(0,r.currentIndex+1),n];o.length>e&&o.shift();const c=[r.history,...r.undoStack];return c.length>e&&c.pop(),{history:o,currentIndex:o.length-1,undoStack:c,redoStack:[]}}case"UNDO":return r.undoStack.length===0?r:{history:r.undoStack[0],currentIndex:r.undoStack[0].length-1,undoStack:r.undoStack.slice(1),redoStack:[r.history,...r.redoStack]};case"REDO":return r.redoStack.length===0?r:{history:r.redoStack[0],currentIndex:r.redoStack[0].length-1,undoStack:[r.history,...r.undoStack],redoStack:r.redoStack.slice(1)};case"BACK":{const{steps:n}=t.payload;return{...r,currentIndex:Math.max(0,r.currentIndex-n)}}case"FORWARD":{const{steps:n}=t.payload;return{...r,currentIndex:Math.min(r.currentIndex+n,r.history.length-1)}}case"RESET":{const{initialValue:n,capacity:e}=t.payload;if(r.history.length===1)return r;const o=[r.history,...r.undoStack];return o.length>e&&o.pop(),{history:[n],currentIndex:0,undoStack:o,redoStack:[]}}default:throw new Error("Unsupported action type")}},p=(r,t=10)=>{const[n,e]=k.useReducer(u,{history:[r],currentIndex:0,undoStack:[],redoStack:[]}),o=n.history[n.currentIndex],c=n.undoStack.length>0,a=n.redoStack.length>0,s=d=>e({type:"SET",payload:{value:d,capacity:t}}),y=()=>e({type:"UNDO"}),i=()=>e({type:"REDO"}),S=(d=1)=>e({type:"BACK",payload:{steps:d}}),h=(d=1)=>e({type:"FORWARD",payload:{steps:d}}),l=()=>e({type:"RESET",payload:{initialValue:r,capacity:t}});return{history:n.history,value:o,set:s,index:n.currentIndex,back:S,forward:h,reset:l,undo:y,redo:i,canUndo:c,canRedo:a}};exports.stateHistoryReducer=u;exports.useStateHistory=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("react"),u=(r,t)=>{switch(t.type){case"SET":{const{value:n,capacity:e}=t.payload,o=[...r.history.slice(0,r.currentIndex+1),n];o.length>e&&o.shift();const c=[r.history,...r.undoStack];return c.length>e&&c.pop(),{history:o,currentIndex:o.length-1,undoStack:c,redoStack:[]}}case"UNDO":return r.undoStack.length===0?r:{history:r.undoStack[0],currentIndex:r.undoStack[0].length-1,undoStack:r.undoStack.slice(1),redoStack:[r.history,...r.redoStack]};case"REDO":return r.redoStack.length===0?r:{history:r.redoStack[0],currentIndex:r.redoStack[0].length-1,undoStack:[r.history,...r.undoStack],redoStack:r.redoStack.slice(1)};case"BACK":{const{steps:n}=t.payload;return{...r,currentIndex:Math.max(0,r.currentIndex-n)}}case"FORWARD":{const{steps:n}=t.payload;return{...r,currentIndex:Math.min(r.currentIndex+n,r.history.length-1)}}case"RESET":{const{initialValue:n,capacity:e}=t.payload;if(r.history.length===1)return r;const o=[r.history,...r.undoStack];return o.length>e&&o.pop(),{history:[n],currentIndex:0,undoStack:o,redoStack:[]}}default:throw new Error("Unsupported action type")}},p=(r,t=10)=>{const[n,e]=k.useReducer(u,{history:[r],currentIndex:0,undoStack:[],redoStack:[]}),o=n.history[n.currentIndex],c=n.undoStack.length>0,s=n.redoStack.length>0,a=d=>e({type:"SET",payload:{value:d,capacity:t}}),y=()=>e({type:"UNDO"}),i=()=>e({type:"REDO"}),S=(d=1)=>e({type:"BACK",payload:{steps:d}}),h=(d=1)=>e({type:"FORWARD",payload:{steps:d}}),l=()=>e({type:"RESET",payload:{initialValue:r,capacity:t}});return{history:n.history,value:o,set:a,index:n.currentIndex,back:S,forward:h,reset:l,undo:y,redo:i,canUndo:c,canRedo:s}};exports.stateHistoryReducer=u;exports.useStateHistory=p;
2
2
  //# sourceMappingURL=useStateHistory.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react"),r=1,b=s=>{const n=typeof s=="object"?s.max:s,c=typeof s=="object"?s.initial:r,o=S.useRef(c>n||c<r?r:c),[i,e]=S.useState(c),u=i===r,f=i===n;return{counts:n,currentStep:i,isFirst:u,isLast:f,next:()=>{f||e(t=>t+1)},back:()=>{u||e(t=>t-1)},reset:()=>e(o.current),set:t=>{if(t==="first")return e(o.current);if(t==="last"||t>=n)return e(n);if(t<=r)return e(r);e(t)}}};exports.useStep=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react"),r=1,b=s=>{const n=typeof s=="object"?s.max:s,i=typeof s=="object"?s.initial:r,o=S.useRef(i>n||i<r?r:i),[c,e]=S.useState(i),u=c===r,f=c===n;return{counts:n,currentStep:c,isFirst:u,isLast:f,next:()=>{f||e(t=>t+1)},back:()=>{u||e(t=>t-1)},reset:()=>e(o.current),set:t=>{if(t==="first")return e(o.current);if(t==="last"||t>=n)return e(n);if(t<=r)return e(r);e(t)}}};exports.useStep=b;
2
2
  //# sourceMappingURL=useStep.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),E=require("../useRefState/useRefState.cjs"),i=require("../../utils/helpers/isTarget.cjs"),L=((...o)=>{const t=i.isTarget(o[0])?o[0]:void 0,r=t?o[1]:o[0],c=r?.axis??"vertical",s=E.useRefState(),[a,f]=g.useState(!1);return g.useEffect(()=>{if(!t&&!s.state)return;const l=t?i.isTarget.getElement(t):s.current;if(!l)return;const e=r?.root?i.isTarget.getElement(r.root):document,d=l.getBoundingClientRect().top+e.scrollTop-e.getBoundingClientRect().top,v=l.getBoundingClientRect().left+e.scrollLeft-e.getBoundingClientRect().left,n=()=>{if(c==="vertical"){const u=e.scrollTop;f(u>=d)}if(c==="horizontal"){const u=e.scrollLeft;f(u>=v)}};return e.addEventListener("scroll",n),window.addEventListener("resize",n),window.addEventListener("orientationchange",n),n(),()=>{e.removeEventListener("scroll",n),window.removeEventListener("resize",n),window.removeEventListener("orientationchange",n)}},[t&&i.isTarget.getRawElement(t),s.state,c,r?.root]),t?{stuck:a}:{stuck:a,ref:s}});exports.useSticky=L;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),E=require("../useRefState/useRefState.cjs"),s=require("../../utils/helpers/isTarget.cjs"),L=((...o)=>{const t=s.isTarget(o[0])?o[0]:void 0,r=t?o[1]:o[0],c=r?.axis??"vertical",i=E.useRefState(),[f,a]=g.useState(!1);return g.useEffect(()=>{if(!t&&!i.state)return;const l=t?s.isTarget.getElement(t):i.current;if(!l)return;const e=r?.root?s.isTarget.getElement(r.root):document,d=l.getBoundingClientRect().top+e.scrollTop-e.getBoundingClientRect().top,v=l.getBoundingClientRect().left+e.scrollLeft-e.getBoundingClientRect().left,n=()=>{if(c==="vertical"){const u=e.scrollTop;a(u>=d)}if(c==="horizontal"){const u=e.scrollLeft;a(u>=v)}};return e.addEventListener("scroll",n),window.addEventListener("resize",n),window.addEventListener("orientationchange",n),n(),()=>{e.removeEventListener("scroll",n),window.removeEventListener("resize",n),window.removeEventListener("orientationchange",n)}},[t&&s.isTarget.getRawElement(t),i.state,c,r?.root]),t?{stuck:f}:{stuck:f,ref:i}});exports.useSticky=L;
2
2
  //# sourceMappingURL=useSticky.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSticky.cjs","sources":["../../../../src/hooks/useSticky/useSticky.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use sticky return type */\nexport interface UseStickyReturn {\n stuck: boolean;\n}\n\n/** The use sticky axis type */\nexport type UseStickyAxis = 'horizontal' | 'vertical';\n\n/** The use sticky options type */\nexport interface UseStickyOptions {\n axis?: UseStickyAxis;\n root?: HookTarget;\n}\n\nexport interface UseSticky {\n (target: HookTarget, options?: UseStickyOptions): UseStickyReturn;\n\n <Target extends Element>(\n options?: UseStickyOptions,\n target?: never\n ): UseStickyReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name UseSticky\n * @description - Hook that allows you to detect that your sticky component is stuck\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target sticky element\n * @param {UseStickyAxis} [options.axis='vertical'] The axis of motion of the sticky component\n * @param {UseStickyRoot} [options.root=document] The element that contains your sticky component\n * @returns {UseStickyReturn} The state of the sticky\n *\n * @example\n * const { stuck } = useSticky(ref);\n *\n * @overload\n * @param {UseStickyAxis} [options.axis='vertical'] The axis of motion of the sticky component\n * @param {UseStickyRoot} [options.root=document] The element that contains your sticky component\n * @returns {{ ref: StateRef<Target> } & UseStickyReturn} The state of the sticky\n *\n * @example\n * const { stuck, ref } = useSticky();\n */\nexport const useSticky = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseStickyOptions;\n const axis = options?.axis ?? 'vertical';\n\n const internalRef = useRefState<Element>();\n const [stuck, setStuck] = useState(false);\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const root = (options?.root ? isTarget.getElement(options.root) : document) as Element;\n const elementOffsetTop =\n element.getBoundingClientRect().top + root.scrollTop - root.getBoundingClientRect().top;\n const elementOffsetLeft =\n element.getBoundingClientRect().left + root.scrollLeft - root.getBoundingClientRect().left;\n\n const onSticky = () => {\n if (axis === 'vertical') {\n const scrollTop = root.scrollTop;\n setStuck(scrollTop >= elementOffsetTop);\n }\n\n if (axis === 'horizontal') {\n const scrollLeft = root.scrollLeft;\n setStuck(scrollLeft >= elementOffsetLeft);\n }\n };\n\n root.addEventListener('scroll', onSticky);\n window.addEventListener('resize', onSticky);\n window.addEventListener('orientationchange', onSticky);\n\n onSticky();\n\n return () => {\n root.removeEventListener('scroll', onSticky);\n window.removeEventListener('resize', onSticky);\n window.removeEventListener('orientationchange', onSticky);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state, axis, options?.root]);\n\n if (target) return { stuck };\n return {\n stuck,\n ref: internalRef\n };\n}) as UseSticky;\n"],"names":["useSticky","params","target","isTarget","options","axis","internalRef","useRefState","stuck","setStuck","useState","useEffect","element","root","elementOffsetTop","elementOffsetLeft","onSticky","scrollTop","scrollLeft"],"mappings":"mMA0DaA,GAAa,IAAIC,IAAkB,CAC9C,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACxCI,EAAOD,GAAS,MAAQ,WAExBE,EAAcC,EAAAA,YAAA,EACd,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAK,EAwCxC,OAtCAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACT,GAAU,CAACI,EAAY,MAAO,OAEnC,MAAMM,EAAWV,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAII,EAAY,QAEpE,GAAI,CAACM,EAAS,OAEd,MAAMC,EAAQT,GAAS,KAAOD,EAAAA,SAAS,WAAWC,EAAQ,IAAI,EAAI,SAC5DU,EACJF,EAAQ,wBAAwB,IAAMC,EAAK,UAAYA,EAAK,sBAAA,EAAwB,IAChFE,EACJH,EAAQ,wBAAwB,KAAOC,EAAK,WAAaA,EAAK,sBAAA,EAAwB,KAElFG,EAAW,IAAM,CACrB,GAAIX,IAAS,WAAY,CACvB,MAAMY,EAAYJ,EAAK,UACvBJ,EAASQ,GAAaH,CAAgB,CAAA,CAGxC,GAAIT,IAAS,aAAc,CACzB,MAAMa,EAAaL,EAAK,WACxBJ,EAASS,GAAcH,CAAiB,CAAA,CAC1C,EAGF,OAAAF,EAAK,iBAAiB,SAAUG,CAAQ,EACxC,OAAO,iBAAiB,SAAUA,CAAQ,EAC1C,OAAO,iBAAiB,oBAAqBA,CAAQ,EAErDA,EAAA,EAEO,IAAM,CACXH,EAAK,oBAAoB,SAAUG,CAAQ,EAC3C,OAAO,oBAAoB,SAAUA,CAAQ,EAC7C,OAAO,oBAAoB,oBAAqBA,CAAQ,CAAA,CAC1D,EACC,CAACd,GAAUC,WAAS,cAAcD,CAAM,EAAGI,EAAY,MAAOD,EAAMD,GAAS,IAAI,CAAC,EAEjFF,EAAe,CAAE,MAAAM,CAAA,EACd,CACL,MAAAA,EACA,IAAKF,CAAA,CAET"}
1
+ {"version":3,"file":"useSticky.cjs","sources":["../../../../src/hooks/useSticky/useSticky.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use sticky return type */\nexport interface UseStickyReturn {\n stuck: boolean;\n}\n\n/** The use sticky axis type */\nexport type UseStickyAxis = 'horizontal' | 'vertical';\n\n/** The use sticky options type */\nexport interface UseStickyOptions {\n axis?: UseStickyAxis;\n root?: HookTarget;\n}\n\nexport interface UseSticky {\n (target: HookTarget, options?: UseStickyOptions): UseStickyReturn;\n\n <Target extends Element>(\n options?: UseStickyOptions,\n target?: never\n ): UseStickyReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name UseSticky\n * @description - Hook that allows you to detect that your sticky component is stuck\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target sticky element\n * @param {UseStickyAxis} [options.axis='vertical'] The axis of motion of the sticky component\n * @param {UseStickyRoot} [options.root=document] The element that contains your sticky component\n * @returns {UseStickyReturn} The state of the sticky\n *\n * @example\n * const { stuck } = useSticky(ref);\n *\n * @overload\n * @param {UseStickyAxis} [options.axis='vertical'] The axis of motion of the sticky component\n * @param {UseStickyRoot} [options.root=document] The element that contains your sticky component\n * @returns {{ ref: StateRef<Target> } & UseStickyReturn} The state of the sticky\n *\n * @example\n * const { stuck, ref } = useSticky();\n */\nexport const useSticky = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseStickyOptions;\n const axis = options?.axis ?? 'vertical';\n\n const internalRef = useRefState<Element>();\n const [stuck, setStuck] = useState(false);\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const root = (options?.root ? isTarget.getElement(options.root) : document) as Element;\n const elementOffsetTop =\n element.getBoundingClientRect().top + root.scrollTop - root.getBoundingClientRect().top;\n const elementOffsetLeft =\n element.getBoundingClientRect().left + root.scrollLeft - root.getBoundingClientRect().left;\n\n const onSticky = () => {\n if (axis === 'vertical') {\n const scrollTop = root.scrollTop;\n setStuck(scrollTop >= elementOffsetTop);\n }\n\n if (axis === 'horizontal') {\n const scrollLeft = root.scrollLeft;\n setStuck(scrollLeft >= elementOffsetLeft);\n }\n };\n\n root.addEventListener('scroll', onSticky);\n window.addEventListener('resize', onSticky);\n window.addEventListener('orientationchange', onSticky);\n\n onSticky();\n\n return () => {\n root.removeEventListener('scroll', onSticky);\n window.removeEventListener('resize', onSticky);\n window.removeEventListener('orientationchange', onSticky);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state, axis, options?.root]);\n\n if (target) return { stuck };\n return {\n stuck,\n ref: internalRef\n };\n}) as UseSticky;\n"],"names":["useSticky","params","target","isTarget","options","axis","internalRef","useRefState","stuck","setStuck","useState","useEffect","element","root","elementOffsetTop","elementOffsetLeft","onSticky","scrollTop","scrollLeft"],"mappings":"mMA0DaA,GAAa,IAAIC,IAAkB,CAC9C,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACxCI,EAAOD,GAAS,MAAQ,WAExBE,EAAcC,EAAAA,YAAA,EACd,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAK,EAuCxC,OArCAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACT,GAAU,CAACI,EAAY,MAAO,OAEnC,MAAMM,EAAWV,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAII,EAAY,QACpE,GAAI,CAACM,EAAS,OAEd,MAAMC,EAAQT,GAAS,KAAOD,EAAAA,SAAS,WAAWC,EAAQ,IAAI,EAAI,SAC5DU,EACJF,EAAQ,wBAAwB,IAAMC,EAAK,UAAYA,EAAK,sBAAA,EAAwB,IAChFE,EACJH,EAAQ,wBAAwB,KAAOC,EAAK,WAAaA,EAAK,sBAAA,EAAwB,KAElFG,EAAW,IAAM,CACrB,GAAIX,IAAS,WAAY,CACvB,MAAMY,EAAYJ,EAAK,UACvBJ,EAASQ,GAAaH,CAAgB,CAAA,CAGxC,GAAIT,IAAS,aAAc,CACzB,MAAMa,EAAaL,EAAK,WACxBJ,EAASS,GAAcH,CAAiB,CAAA,CAC1C,EAGF,OAAAF,EAAK,iBAAiB,SAAUG,CAAQ,EACxC,OAAO,iBAAiB,SAAUA,CAAQ,EAC1C,OAAO,iBAAiB,oBAAqBA,CAAQ,EAErDA,EAAA,EAEO,IAAM,CACXH,EAAK,oBAAoB,SAAUG,CAAQ,EAC3C,OAAO,oBAAoB,SAAUA,CAAQ,EAC7C,OAAO,oBAAoB,oBAAqBA,CAAQ,CAAA,CAC1D,EACC,CAACd,GAAUC,WAAS,cAAcD,CAAM,EAAGI,EAAY,MAAOD,EAAMD,GAAS,IAAI,CAAC,EAEjFF,EAAe,CAAE,MAAAM,CAAA,EACd,CACL,MAAAA,EACA,IAAKF,CAAA,CAET"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),a="reactuse-storage",u=t=>window.dispatchEvent(new StorageEvent(a,t)),f=(t,r,n)=>{const o=t.getItem(r);t.setItem(r,n),u({key:r,oldValue:o,newValue:n,storageArea:t})},m=(t,r)=>{const n=t.getItem(r);t.removeItem(r),u({key:r,oldValue:n,newValue:null,storageArea:t})},v=(t,r)=>{const n=t.getItem(r);if(n)return n},z=((t,r)=>{const n=typeof r=="object"&&r&&("serializer"in r||"deserializer"in r||"initialValue"in r||"storage"in r)?r:void 0,o=n?n?.initialValue:r;if(typeof window>"u")return{value:typeof o=="function"?o():o,set:()=>{},remove:()=>{}};const c=e=>n?.serializer?n.serializer(e):typeof e=="string"?e:JSON.stringify(e),i=n?.storage??window?.localStorage,w=e=>f(i,t,c(e)),S=()=>m(i,t),d=e=>{if(n?.deserializer)return n.deserializer(e);if(e!=="undefined")try{return JSON.parse(e)}catch{return e}},[E,V]=g.useState(()=>{const e=v(i,t);if(e===void 0&&o!==void 0){const s=typeof o=="function"?o():o;return f(i,t,c(s)),s}return e?d(e):void 0});return g.useEffect(()=>{const e=s=>{if(s&&s.storageArea!==i||s&&s.key!==t)return;const l=v(i,t);V(l?d(l):void 0)};return window.addEventListener(a,e),window.addEventListener("storage",e,{passive:!0}),()=>{window.removeEventListener(a,e),window.removeEventListener("storage",e)}},[t,i]),{value:E,set:w,remove:S}});exports.STORAGE_EVENT=a;exports.dispatchStorageEvent=u;exports.useStorage=z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),u="reactuse-storage",a=t=>window.dispatchEvent(new StorageEvent(u,t)),f=(t,r,n)=>{const o=t.getItem(r);t.setItem(r,n),a({key:r,oldValue:o,newValue:n,storageArea:t})},m=(t,r)=>{const n=t.getItem(r);t.removeItem(r),a({key:r,oldValue:n,newValue:null,storageArea:t})},v=(t,r)=>{const n=t.getItem(r);if(n)return n},z=((t,r)=>{const n=typeof r=="object"&&r&&("serializer"in r||"deserializer"in r||"initialValue"in r||"storage"in r)?r:void 0,o=n?n?.initialValue:r;if(typeof window>"u")return{value:typeof o=="function"?o():o,set:()=>{},remove:()=>{}};const c=e=>n?.serializer?n.serializer(e):typeof e=="string"?e:JSON.stringify(e),i=n?.storage??window?.localStorage,w=e=>f(i,t,c(e)),S=()=>m(i,t),d=e=>{if(n?.deserializer)return n.deserializer(e);if(e!=="undefined")try{return JSON.parse(e)}catch{return e}},[E,V]=g.useState(()=>{const e=v(i,t);if(e===void 0&&o!==void 0){const s=typeof o=="function"?o():o;return f(i,t,c(s)),s}return e?d(e):void 0});return g.useEffect(()=>{const e=s=>{if(s&&s.storageArea!==i||s&&s.key!==t)return;const l=v(i,t);V(l?d(l):void 0)};return window.addEventListener(u,e),window.addEventListener("storage",e,{passive:!0}),()=>{window.removeEventListener(u,e),window.removeEventListener("storage",e)}},[t,i]),{value:E,set:w,remove:S}});exports.STORAGE_EVENT=u;exports.dispatchStorageEvent=a;exports.useStorage=z;
2
2
  //# sourceMappingURL=useStorage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStorage.cjs","sources":["../../../../src/hooks/useStorage/useStorage.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/* The use storage initial value type */\nexport type UseStorageInitialValue<Value> = (() => Value) | Value;\n\n/* The use storage options type */\nexport interface UseStorageOptions<Value> {\n /* The initial value of the storage */\n initialValue?: UseStorageInitialValue<Value>;\n /* The storage to be used */\n storage?: Storage;\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value;\n /* The serializer function to be invoked */\n serializer?: (value: Value) => string;\n}\n\n/* The use storage return type */\nexport interface UseStorageReturn<Value> {\n /* The value of the storage */\n value: Value;\n /* The error state of the storage */\n remove: () => void;\n /* The loading state of the storage */\n set: (value: Value) => void;\n}\n\nexport interface UseStorage {\n <Value>(key: string, options?: UseStorageOptions<Value>): UseStorageReturn<Value | undefined>;\n\n <Value>(\n key: string,\n initialValue?: UseStorageInitialValue<Value>\n ): UseStorageReturn<Value | undefined>;\n}\n\nexport const STORAGE_EVENT = 'reactuse-storage';\n\nexport const dispatchStorageEvent = (params: Partial<StorageEvent>) =>\n window.dispatchEvent(new StorageEvent(STORAGE_EVENT, params));\n\nconst setStorageItem = (storage: Storage, key: string, value: string) => {\n const oldValue = storage.getItem(key);\n\n storage.setItem(key, value);\n dispatchStorageEvent({\n key,\n oldValue,\n newValue: value,\n storageArea: storage\n });\n};\n\nconst removeStorageItem = (storage: Storage, key: string) => {\n const oldValue = storage.getItem(key);\n\n storage.removeItem(key);\n dispatchStorageEvent({ key, oldValue, newValue: null, storageArea: storage });\n};\n\nconst getStorageItem = (storage: Storage, key: string) => {\n const value = storage.getItem(key);\n if (!value) return undefined;\n return value;\n};\n\n/**\n * @name useStorage\n * @description - Hook that manages storage value\n * @category State\n * @usage high\n *\n * @overload\n * @param {string} key The key of the storage\n * @param {UseStorageInitialValue<Value>} [initialValue] The initial value of the storage\n * @returns {UseStorageReturn<Value>} The value and the set function\n *\n * @overload\n * @param {string} key The key of the storage\n * @param {(value: Value) => string} [params.serializer] The serializer function\n * @param {(value: string) => Value} [params.deserializer] The deserializer function\n * @param {Storage} [params.storage] The storage\n * @param {UseStorageInitialValue<Value>} [params.initialValue] The initial value of the storage\n * @returns {UseStorageReturn<Value>} The value and the set function\n *\n * @example\n * const { value, set, remove } = useStorage('key', 'value');\n */\nexport const useStorage = (<Value>(key: string, params?: any): UseStorageReturn<Value> => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params ||\n 'deserializer' in params ||\n 'initialValue' in params ||\n 'storage' in params)\n ? params\n : undefined\n ) as UseStorageOptions<Value>;\n\n const initialValue = (options ? options?.initialValue : params) as UseStorageInitialValue<Value>;\n\n if (typeof window === 'undefined') {\n const value = typeof initialValue === 'function' ? (initialValue as () => any)() : initialValue;\n return {\n value,\n set: () => {},\n remove: () => {}\n };\n }\n\n const serializer = (value: Value) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const storage = options?.storage ?? window?.localStorage;\n\n const set = (value: Value) => setStorageItem(storage, key, serializer(value));\n const remove = () => removeStorageItem(storage, key);\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value;\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value;\n }\n };\n\n const [value, setValue] = useState<Value | undefined>(() => {\n const storageValue = getStorageItem(storage, key);\n if (storageValue === undefined && initialValue !== undefined) {\n const value =\n typeof initialValue === 'function' ? (initialValue as () => Value)() : initialValue;\n setStorageItem(storage, key, serializer(value));\n return value;\n }\n return storageValue ? deserializer(storageValue) : undefined;\n });\n\n useEffect(() => {\n const onChange = (event?: StorageEvent) => {\n if (event && event.storageArea !== storage) return;\n if (event && event.key !== key) return;\n\n const storageValue = getStorageItem(storage, key);\n setValue(storageValue ? deserializer(storageValue) : undefined);\n };\n\n window.addEventListener(STORAGE_EVENT, onChange as EventListener);\n window.addEventListener('storage', onChange, { passive: true });\n\n return () => {\n window.removeEventListener(STORAGE_EVENT, onChange as EventListener);\n window.removeEventListener('storage', onChange);\n };\n }, [key, storage]);\n\n return {\n value: value as Value,\n set,\n remove\n };\n}) as UseStorage;\n"],"names":["STORAGE_EVENT","dispatchStorageEvent","params","setStorageItem","storage","key","value","oldValue","removeStorageItem","getStorageItem","useStorage","options","initialValue","serializer","set","remove","deserializer","setValue","useState","storageValue","useEffect","onChange","event"],"mappings":"yGAoCaA,EAAgB,mBAEhBC,EAAwBC,GACnC,OAAO,cAAc,IAAI,aAAaF,EAAeE,CAAM,CAAC,EAExDC,EAAiB,CAACC,EAAkBC,EAAaC,IAAkB,CACvE,MAAMC,EAAWH,EAAQ,QAAQC,CAAG,EAEpCD,EAAQ,QAAQC,EAAKC,CAAK,EAC1BL,EAAqB,CACnB,IAAAI,EACA,SAAAE,EACA,SAAUD,EACV,YAAaF,CAAA,CACd,CACH,EAEMI,EAAoB,CAACJ,EAAkBC,IAAgB,CAC3D,MAAME,EAAWH,EAAQ,QAAQC,CAAG,EAEpCD,EAAQ,WAAWC,CAAG,EACtBJ,EAAqB,CAAE,IAAAI,EAAK,SAAAE,EAAU,SAAU,KAAM,YAAaH,EAAS,CAC9E,EAEMK,EAAiB,CAACL,EAAkBC,IAAgB,CACxD,MAAMC,EAAQF,EAAQ,QAAQC,CAAG,EACjC,GAAKC,EACL,OAAOA,CACT,EAwBaI,GAAc,CAAQL,EAAaH,IAA0C,CACxF,MAAMS,EACJ,OAAOT,GAAW,UAClBA,IACC,eAAgBA,GACf,iBAAkBA,GAClB,iBAAkBA,GAClB,YAAaA,GACXA,EACA,OAGAU,EAAgBD,EAAUA,GAAS,aAAeT,EAExD,GAAI,OAAO,OAAW,IAEpB,MAAO,CACL,MAFY,OAAOU,GAAiB,WAAcA,IAA+BA,EAGjF,IAAK,IAAM,CAAA,EACX,OAAQ,IAAM,CAAA,CAAC,EAInB,MAAMC,EAAcP,GACdK,GAAS,WAAmBA,EAAQ,WAAWL,CAAK,EACpD,OAAOA,GAAU,SAAiBA,EAC/B,KAAK,UAAUA,CAAK,EAGvBF,EAAUO,GAAS,SAAW,QAAQ,aAEtCG,EAAOR,GAAiBH,EAAeC,EAASC,EAAKQ,EAAWP,CAAK,CAAC,EACtES,EAAS,IAAMP,EAAkBJ,EAASC,CAAG,EAE7CW,EAAgBV,GAAkB,CACtC,GAAIK,GAAS,aAAc,OAAOA,EAAQ,aAAaL,CAAK,EAC5D,GAAIA,IAAU,YAEd,GAAI,CACF,OAAO,KAAK,MAAMA,CAAK,CAAA,MACjB,CACN,OAAOA,CAAA,CACT,EAGI,CAACA,EAAOW,CAAQ,EAAIC,EAAAA,SAA4B,IAAM,CAC1D,MAAMC,EAAeV,EAAeL,EAASC,CAAG,EAChD,GAAIc,IAAiB,QAAaP,IAAiB,OAAW,CAC5D,MAAMN,EACJ,OAAOM,GAAiB,WAAcA,IAAiCA,EACzE,OAAAT,EAAeC,EAASC,EAAKQ,EAAWP,CAAK,CAAC,EACvCA,CAAA,CAET,OAAOa,EAAeH,EAAaG,CAAY,EAAI,MAAA,CACpD,EAEDC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAYC,GAAyB,CAEzC,GADIA,GAASA,EAAM,cAAgBlB,GAC/BkB,GAASA,EAAM,MAAQjB,EAAK,OAEhC,MAAMc,EAAeV,EAAeL,EAASC,CAAG,EAChDY,EAASE,EAAeH,EAAaG,CAAY,EAAI,MAAS,CAAA,EAGhE,cAAO,iBAAiBnB,EAAeqB,CAAyB,EAChE,OAAO,iBAAiB,UAAWA,EAAU,CAAE,QAAS,GAAM,EAEvD,IAAM,CACX,OAAO,oBAAoBrB,EAAeqB,CAAyB,EACnE,OAAO,oBAAoB,UAAWA,CAAQ,CAAA,CAChD,EACC,CAAChB,EAAKD,CAAO,CAAC,EAEV,CACL,MAAAE,EACA,IAAAQ,EACA,OAAAC,CAAA,CAEJ"}
1
+ {"version":3,"file":"useStorage.cjs","sources":["../../../../src/hooks/useStorage/useStorage.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\r\n\r\n/* The use storage initial value type */\r\nexport type UseStorageInitialValue<Value> = (() => Value) | Value;\r\n\r\n/* The use storage options type */\r\nexport interface UseStorageOptions<Value> {\r\n /* The initial value of the storage */\r\n initialValue?: UseStorageInitialValue<Value>;\r\n /* The storage to be used */\r\n storage?: Storage;\r\n /* The deserializer function to be invoked */\r\n deserializer?: (value: string) => Value;\r\n /* The serializer function to be invoked */\r\n serializer?: (value: Value) => string;\r\n}\r\n\r\n/* The use storage return type */\r\nexport interface UseStorageReturn<Value> {\r\n /* The value of the storage */\r\n value: Value;\r\n /* The error state of the storage */\r\n remove: () => void;\r\n /* The loading state of the storage */\r\n set: (value: Value) => void;\r\n}\r\n\r\nexport interface UseStorage {\r\n <Value>(key: string, options?: UseStorageOptions<Value>): UseStorageReturn<Value | undefined>;\r\n\r\n <Value>(\r\n key: string,\r\n initialValue?: UseStorageInitialValue<Value>\r\n ): UseStorageReturn<Value | undefined>;\r\n}\r\n\r\nexport const STORAGE_EVENT = 'reactuse-storage';\r\n\r\nexport const dispatchStorageEvent = (params: Partial<StorageEvent>) =>\r\n window.dispatchEvent(new StorageEvent(STORAGE_EVENT, params));\r\n\r\nconst setStorageItem = (storage: Storage, key: string, value: string) => {\r\n const oldValue = storage.getItem(key);\r\n\r\n storage.setItem(key, value);\r\n dispatchStorageEvent({\r\n key,\r\n oldValue,\r\n newValue: value,\r\n storageArea: storage\r\n });\r\n};\r\n\r\nconst removeStorageItem = (storage: Storage, key: string) => {\r\n const oldValue = storage.getItem(key);\r\n\r\n storage.removeItem(key);\r\n dispatchStorageEvent({ key, oldValue, newValue: null, storageArea: storage });\r\n};\r\n\r\nconst getStorageItem = (storage: Storage, key: string) => {\r\n const value = storage.getItem(key);\r\n if (!value) return undefined;\r\n return value;\r\n};\r\n\r\n/**\r\n * @name useStorage\r\n * @description - Hook that manages storage value\r\n * @category State\r\n * @usage high\r\n *\r\n * @overload\r\n * @param {string} key The key of the storage\r\n * @param {UseStorageInitialValue<Value>} [initialValue] The initial value of the storage\r\n * @returns {UseStorageReturn<Value>} The value and the set function\r\n *\r\n * @overload\r\n * @param {string} key The key of the storage\r\n * @param {(value: Value) => string} [params.serializer] The serializer function\r\n * @param {(value: string) => Value} [params.deserializer] The deserializer function\r\n * @param {Storage} [params.storage] The storage\r\n * @param {UseStorageInitialValue<Value>} [params.initialValue] The initial value of the storage\r\n * @returns {UseStorageReturn<Value>} The value and the set function\r\n *\r\n * @example\r\n * const { value, set, remove } = useStorage('key', 'value');\r\n */\r\nexport const useStorage = (<Value>(key: string, params?: any): UseStorageReturn<Value> => {\r\n const options = (\r\n typeof params === 'object' &&\r\n params &&\r\n ('serializer' in params ||\r\n 'deserializer' in params ||\r\n 'initialValue' in params ||\r\n 'storage' in params)\r\n ? params\r\n : undefined\r\n ) as UseStorageOptions<Value>;\r\n\r\n const initialValue = (options ? options?.initialValue : params) as UseStorageInitialValue<Value>;\r\n\r\n if (typeof window === 'undefined') {\r\n const value = typeof initialValue === 'function' ? (initialValue as () => any)() : initialValue;\r\n return {\r\n value,\r\n set: () => {},\r\n remove: () => {}\r\n };\r\n }\r\n\r\n const serializer = (value: Value) => {\r\n if (options?.serializer) return options.serializer(value);\r\n if (typeof value === 'string') return value;\r\n return JSON.stringify(value);\r\n };\r\n\r\n const storage = options?.storage ?? window?.localStorage;\r\n\r\n const set = (value: Value) => setStorageItem(storage, key, serializer(value));\r\n const remove = () => removeStorageItem(storage, key);\r\n\r\n const deserializer = (value: string) => {\r\n if (options?.deserializer) return options.deserializer(value);\r\n if (value === 'undefined') return undefined as unknown as Value;\r\n\r\n try {\r\n return JSON.parse(value) as Value;\r\n } catch {\r\n return value as Value;\r\n }\r\n };\r\n\r\n const [value, setValue] = useState<Value | undefined>(() => {\r\n const storageValue = getStorageItem(storage, key);\r\n if (storageValue === undefined && initialValue !== undefined) {\r\n const value =\r\n typeof initialValue === 'function' ? (initialValue as () => Value)() : initialValue;\r\n setStorageItem(storage, key, serializer(value));\r\n return value;\r\n }\r\n return storageValue ? deserializer(storageValue) : undefined;\r\n });\r\n\r\n useEffect(() => {\r\n const onChange = (event?: StorageEvent) => {\r\n if (event && event.storageArea !== storage) return;\r\n if (event && event.key !== key) return;\r\n\r\n const storageValue = getStorageItem(storage, key);\r\n setValue(storageValue ? deserializer(storageValue) : undefined);\r\n };\r\n\r\n window.addEventListener(STORAGE_EVENT, onChange as EventListener);\r\n window.addEventListener('storage', onChange, { passive: true });\r\n\r\n return () => {\r\n window.removeEventListener(STORAGE_EVENT, onChange as EventListener);\r\n window.removeEventListener('storage', onChange);\r\n };\r\n }, [key, storage]);\r\n\r\n return {\r\n value: value as Value,\r\n set,\r\n remove\r\n };\r\n}) as UseStorage;\r\n"],"names":["STORAGE_EVENT","dispatchStorageEvent","params","setStorageItem","storage","key","value","oldValue","removeStorageItem","getStorageItem","useStorage","options","initialValue","serializer","set","remove","deserializer","setValue","useState","storageValue","useEffect","onChange","event"],"mappings":"yGAoCaA,EAAgB,mBAEhBC,EAAwBC,GACnC,OAAO,cAAc,IAAI,aAAaF,EAAeE,CAAM,CAAC,EAExDC,EAAiB,CAACC,EAAkBC,EAAaC,IAAkB,CACvE,MAAMC,EAAWH,EAAQ,QAAQC,CAAG,EAEpCD,EAAQ,QAAQC,EAAKC,CAAK,EAC1BL,EAAqB,CACnB,IAAAI,EACA,SAAAE,EACA,SAAUD,EACV,YAAaF,CAAA,CACd,CACH,EAEMI,EAAoB,CAACJ,EAAkBC,IAAgB,CAC3D,MAAME,EAAWH,EAAQ,QAAQC,CAAG,EAEpCD,EAAQ,WAAWC,CAAG,EACtBJ,EAAqB,CAAE,IAAAI,EAAK,SAAAE,EAAU,SAAU,KAAM,YAAaH,EAAS,CAC9E,EAEMK,EAAiB,CAACL,EAAkBC,IAAgB,CACxD,MAAMC,EAAQF,EAAQ,QAAQC,CAAG,EACjC,GAAKC,EACL,OAAOA,CACT,EAwBaI,GAAc,CAAQL,EAAaH,IAA0C,CACxF,MAAMS,EACJ,OAAOT,GAAW,UAClBA,IACC,eAAgBA,GACf,iBAAkBA,GAClB,iBAAkBA,GAClB,YAAaA,GACXA,EACA,OAGAU,EAAgBD,EAAUA,GAAS,aAAeT,EAExD,GAAI,OAAO,OAAW,IAEpB,MAAO,CACL,MAFY,OAAOU,GAAiB,WAAcA,IAA+BA,EAGjF,IAAK,IAAM,CAAA,EACX,OAAQ,IAAM,CAAA,CAAC,EAInB,MAAMC,EAAcP,GACdK,GAAS,WAAmBA,EAAQ,WAAWL,CAAK,EACpD,OAAOA,GAAU,SAAiBA,EAC/B,KAAK,UAAUA,CAAK,EAGvBF,EAAUO,GAAS,SAAW,QAAQ,aAEtCG,EAAOR,GAAiBH,EAAeC,EAASC,EAAKQ,EAAWP,CAAK,CAAC,EACtES,EAAS,IAAMP,EAAkBJ,EAASC,CAAG,EAE7CW,EAAgBV,GAAkB,CACtC,GAAIK,GAAS,aAAc,OAAOA,EAAQ,aAAaL,CAAK,EAC5D,GAAIA,IAAU,YAEd,GAAI,CACF,OAAO,KAAK,MAAMA,CAAK,CAAA,MACjB,CACN,OAAOA,CAAA,CACT,EAGI,CAACA,EAAOW,CAAQ,EAAIC,EAAAA,SAA4B,IAAM,CAC1D,MAAMC,EAAeV,EAAeL,EAASC,CAAG,EAChD,GAAIc,IAAiB,QAAaP,IAAiB,OAAW,CAC5D,MAAMN,EACJ,OAAOM,GAAiB,WAAcA,IAAiCA,EACzE,OAAAT,EAAeC,EAASC,EAAKQ,EAAWP,CAAK,CAAC,EACvCA,CAAA,CAET,OAAOa,EAAeH,EAAaG,CAAY,EAAI,MAAA,CACpD,EAEDC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAYC,GAAyB,CAEzC,GADIA,GAASA,EAAM,cAAgBlB,GAC/BkB,GAASA,EAAM,MAAQjB,EAAK,OAEhC,MAAMc,EAAeV,EAAeL,EAASC,CAAG,EAChDY,EAASE,EAAeH,EAAaG,CAAY,EAAI,MAAS,CAAA,EAGhE,cAAO,iBAAiBnB,EAAeqB,CAAyB,EAChE,OAAO,iBAAiB,UAAWA,EAAU,CAAE,QAAS,GAAM,EAEvD,IAAM,CACX,OAAO,oBAAoBrB,EAAeqB,CAAyB,EACnE,OAAO,oBAAoB,UAAWA,CAAQ,CAAA,CAChD,EACC,CAAChB,EAAKD,CAAO,CAAC,EAEV,CACL,MAAAE,EACA,IAAAQ,EACA,OAAAC,CAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),m=require("../useRefState/useRefState.cjs"),u=require("../../utils/helpers/isTarget.cjs"),T=((...i)=>{const e=u.isTarget(i[0])?i[0]:void 0,l=(e?i[1]:i[0])??"ltr",r=m.useRefState(),n=o.useRef(null),s=()=>typeof window>"u"?l:(e?u.isTarget.getElement(e):r.current)?.getAttribute("dir")??l,[f,c]=o.useState(s()),a=()=>{n.current&&n.current?.removeAttribute("dir")},d=t=>{n.current&&(c(t),n.current.setAttribute("dir",t))};return o.useEffect(()=>{if(!e&&!r.state)return;const t=(e?u.isTarget.getElement(e):r.current)??document.querySelector("html");if(!t)return;n.current=t;const g=s();t.setAttribute("dir",g),c(g);const b=new MutationObserver(()=>c(s()));return b.observe(t,{attributes:!0}),()=>{b.disconnect()}},[r.state,e&&u.isTarget.getRawElement(e)]),e?{value:f,set:d,remove:a}:{ref:r,value:f,set:d,remove:a}});exports.useTextDirection=T;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),m=require("../useRefState/useRefState.cjs"),u=require("../../utils/helpers/isTarget.cjs"),T=((...i)=>{const e=u.isTarget(i[0])?i[0]:void 0,l=(e?i[1]:i[0])??"ltr",r=m.useRefState(),n=c.useRef(null),s=()=>typeof window>"u"?l:(e?u.isTarget.getElement(e):r.current)?.getAttribute("dir")??l,[f,o]=c.useState(s()),a=()=>{n.current&&n.current?.removeAttribute("dir")},d=t=>{n.current&&(o(t),n.current.setAttribute("dir",t))};return c.useEffect(()=>{if(!e&&!r.state)return;const t=(e?u.isTarget.getElement(e):r.current)??document.querySelector("html");if(!t)return;n.current=t;const g=s();t.setAttribute("dir",g),o(g);const b=new MutationObserver(()=>o(s()));return b.observe(t,{attributes:!0}),()=>{b.disconnect()}},[r.state,e&&u.isTarget.getRawElement(e)]),e?{value:f,set:d,remove:a}:{ref:r,value:f,set:d,remove:a}});exports.useTextDirection=T;
2
2
  //# sourceMappingURL=useTextDirection.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTextDirection.cjs","sources":["../../../../src/hooks/useTextDirection/useTextDirection.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use text direction value type */\nexport type UseTextDirectionValue = 'auto' | 'ltr' | 'rtl';\n\n/** The use text direction return type */\nexport interface UseTextDirectionReturn {\n /** The current direction */\n value: UseTextDirectionValue;\n /*** The function to remove the direction */\n remove: () => void;\n /*** The function to set the direction */\n set: (value: UseTextDirectionValue | null) => void;\n}\n\nexport interface UseTextDirection {\n (target: HookTarget, initialValue?: UseTextDirectionValue): UseTextDirectionReturn;\n\n <Target extends Element>(\n initialValue?: UseTextDirectionValue,\n target?: never\n ): UseTextDirectionReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useTextDirection\n * @description - Hook that can get and set the direction of the element\n * @category Elements\n * @usage medium\n *\n * @overload\n * @param {HookTarget} [target=document.querySelector('html')] The target element to observe\n * @param {UseTextDirectionValue} [initialValue = 'ltr'] The initial direction of the element\n * @returns {UseTextDirectionReturn} An object containing the current text direction of the element\n *\n * @example\n * const { value, set, remove } = useTextDirection(ref);\n *\n * @overload\n * @template Target The target element type\n * @param {UseTextDirectionValue} [initialValue = 'ltr'] The initial direction of the element\n * @returns { { ref: StateRef<Target> } & UseTextDirectionReturn } An object containing the current text direction of the element\n *\n * @example\n * const { ref, value, set, remove } = useTextDirection();\n */\nexport const useTextDirection = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const initialValue = ((target ? params[1] : params[0]) as UseTextDirectionValue) ?? 'ltr';\n\n const internalRef = useRefState();\n const elementRef = useRef<Element>(null);\n\n const getDirection = () => {\n if (typeof window === 'undefined') return initialValue;\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\n return (element?.getAttribute('dir') as UseTextDirectionValue) ?? initialValue;\n };\n\n const [value, setValue] = useState<UseTextDirectionValue>(getDirection());\n\n const remove = () => {\n if (!elementRef.current) return;\n\n elementRef.current?.removeAttribute('dir');\n };\n\n const set = (value: UseTextDirectionValue) => {\n if (!elementRef.current) return;\n\n setValue(value);\n elementRef.current.setAttribute('dir', value);\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element =\n ((target ? isTarget.getElement(target) : internalRef.current) as Element) ??\n document.querySelector('html');\n if (!element) return;\n\n elementRef.current = element;\n\n const direction = getDirection();\n element.setAttribute('dir', direction);\n setValue(direction);\n\n const observer = new MutationObserver(() => setValue(getDirection()));\n\n observer.observe(element, { attributes: true });\n\n return () => {\n observer.disconnect();\n };\n }, [internalRef.state, target && isTarget.getRawElement(target)]);\n\n if (target) return { value, set, remove };\n return {\n ref: internalRef,\n value,\n set,\n remove\n };\n}) as UseTextDirection;\n"],"names":["useTextDirection","params","target","isTarget","initialValue","internalRef","useRefState","elementRef","useRef","getDirection","value","setValue","useState","remove","set","useEffect","element","direction","observer"],"mappings":"mMAsDaA,GAAoB,IAAIC,IAAkB,CACrD,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,GAAiBF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,IAAgC,MAE9EI,EAAcC,EAAAA,YAAA,EACdC,EAAaC,EAAAA,OAAgB,IAAI,EAEjCC,EAAe,IACf,OAAO,OAAW,IAAoBL,GACzBF,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAIG,EAAY,UACnD,aAAa,KAAK,GAA+BD,EAG9D,CAACM,EAAOC,CAAQ,EAAIC,EAAAA,SAAgCH,GAAc,EAElEI,EAAS,IAAM,CACdN,EAAW,SAEhBA,EAAW,SAAS,gBAAgB,KAAK,CAAA,EAGrCO,EAAOJ,GAAiC,CACvCH,EAAW,UAEhBI,EAASD,CAAK,EACdH,EAAW,QAAQ,aAAa,MAAOG,CAAK,EAAA,EA0B9C,OAvBAK,EAAAA,UAAU,IAAM,CACd,GAAI,CAACb,GAAU,CAACG,EAAY,MAAO,OAEnC,MAAMW,GACFd,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAIG,EAAY,UACrD,SAAS,cAAc,MAAM,EAC/B,GAAI,CAACW,EAAS,OAEdT,EAAW,QAAUS,EAErB,MAAMC,EAAYR,EAAA,EAClBO,EAAQ,aAAa,MAAOC,CAAS,EACrCN,EAASM,CAAS,EAElB,MAAMC,EAAW,IAAI,iBAAiB,IAAMP,EAASF,EAAA,CAAc,CAAC,EAEpE,OAAAS,EAAS,QAAQF,EAAS,CAAE,WAAY,GAAM,EAEvC,IAAM,CACXE,EAAS,WAAA,CAAW,CACtB,EACC,CAACb,EAAY,MAAOH,GAAUC,EAAAA,SAAS,cAAcD,CAAM,CAAC,CAAC,EAE5DA,EAAe,CAAE,MAAAQ,EAAO,IAAAI,EAAK,OAAAD,CAAA,EAC1B,CACL,IAAKR,EACL,MAAAK,EACA,IAAAI,EACA,OAAAD,CAAA,CAEJ"}
1
+ {"version":3,"file":"useTextDirection.cjs","sources":["../../../../src/hooks/useTextDirection/useTextDirection.ts"],"sourcesContent":["import { useEffect, useRef, 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 { useRefState } from '../useRefState/useRefState';\r\n\r\n/** The use text direction value type */\r\nexport type UseTextDirectionValue = 'auto' | 'ltr' | 'rtl';\r\n\r\n/** The use text direction return type */\r\nexport interface UseTextDirectionReturn {\r\n /** The current direction */\r\n value: UseTextDirectionValue;\r\n /*** The function to remove the direction */\r\n remove: () => void;\r\n /*** The function to set the direction */\r\n set: (value: UseTextDirectionValue | null) => void;\r\n}\r\n\r\nexport interface UseTextDirection {\r\n (target: HookTarget, initialValue?: UseTextDirectionValue): UseTextDirectionReturn;\r\n\r\n <Target extends Element>(\r\n initialValue?: UseTextDirectionValue,\r\n target?: never\r\n ): UseTextDirectionReturn & { ref: StateRef<Target> };\r\n}\r\n\r\n/**\r\n * @name useTextDirection\r\n * @description - Hook that can get and set the direction of the element\r\n * @category Elements\r\n * @usage medium\r\n *\r\n * @overload\r\n * @param {HookTarget} [target=document.querySelector('html')] The target element to observe\r\n * @param {UseTextDirectionValue} [initialValue = 'ltr'] The initial direction of the element\r\n * @returns {UseTextDirectionReturn} An object containing the current text direction of the element\r\n *\r\n * @example\r\n * const { value, set, remove } = useTextDirection(ref);\r\n *\r\n * @overload\r\n * @template Target The target element type\r\n * @param {UseTextDirectionValue} [initialValue = 'ltr'] The initial direction of the element\r\n * @returns { { ref: StateRef<Target> } & UseTextDirectionReturn } An object containing the current text direction of the element\r\n *\r\n * @example\r\n * const { ref, value, set, remove } = useTextDirection();\r\n */\r\nexport const useTextDirection = ((...params: any[]) => {\r\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\r\n const initialValue = ((target ? params[1] : params[0]) as UseTextDirectionValue) ?? 'ltr';\r\n\r\n const internalRef = useRefState();\r\n const elementRef = useRef<Element>(null);\r\n\r\n const getDirection = () => {\r\n if (typeof window === 'undefined') return initialValue;\r\n const element = (target ? isTarget.getElement(target) : internalRef.current) as Element;\r\n return (element?.getAttribute('dir') as UseTextDirectionValue) ?? initialValue;\r\n };\r\n\r\n const [value, setValue] = useState<UseTextDirectionValue>(getDirection());\r\n\r\n const remove = () => {\r\n if (!elementRef.current) return;\r\n\r\n elementRef.current?.removeAttribute('dir');\r\n };\r\n\r\n const set = (value: UseTextDirectionValue) => {\r\n if (!elementRef.current) return;\r\n\r\n setValue(value);\r\n elementRef.current.setAttribute('dir', value);\r\n };\r\n\r\n useEffect(() => {\r\n if (!target && !internalRef.state) return;\r\n\r\n const element =\r\n ((target ? isTarget.getElement(target) : internalRef.current) as Element) ??\r\n document.querySelector('html');\r\n if (!element) return;\r\n\r\n elementRef.current = element;\r\n\r\n const direction = getDirection();\r\n element.setAttribute('dir', direction);\r\n setValue(direction);\r\n\r\n const observer = new MutationObserver(() => setValue(getDirection()));\r\n\r\n observer.observe(element, { attributes: true });\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n }, [internalRef.state, target && isTarget.getRawElement(target)]);\r\n\r\n if (target) return { value, set, remove };\r\n return {\r\n ref: internalRef,\r\n value,\r\n set,\r\n remove\r\n };\r\n}) as UseTextDirection;\r\n"],"names":["useTextDirection","params","target","isTarget","initialValue","internalRef","useRefState","elementRef","useRef","getDirection","value","setValue","useState","remove","set","useEffect","element","direction","observer"],"mappings":"mMAsDaA,GAAoB,IAAIC,IAAkB,CACrD,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,GAAiBF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,IAAgC,MAE9EI,EAAcC,EAAAA,YAAA,EACdC,EAAaC,EAAAA,OAAgB,IAAI,EAEjCC,EAAe,IACf,OAAO,OAAW,IAAoBL,GACzBF,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAIG,EAAY,UACnD,aAAa,KAAK,GAA+BD,EAG9D,CAACM,EAAOC,CAAQ,EAAIC,EAAAA,SAAgCH,GAAc,EAElEI,EAAS,IAAM,CACdN,EAAW,SAEhBA,EAAW,SAAS,gBAAgB,KAAK,CAAA,EAGrCO,EAAOJ,GAAiC,CACvCH,EAAW,UAEhBI,EAASD,CAAK,EACdH,EAAW,QAAQ,aAAa,MAAOG,CAAK,EAAA,EA0B9C,OAvBAK,EAAAA,UAAU,IAAM,CACd,GAAI,CAACb,GAAU,CAACG,EAAY,MAAO,OAEnC,MAAMW,GACFd,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAIG,EAAY,UACrD,SAAS,cAAc,MAAM,EAC/B,GAAI,CAACW,EAAS,OAEdT,EAAW,QAAUS,EAErB,MAAMC,EAAYR,EAAA,EAClBO,EAAQ,aAAa,MAAOC,CAAS,EACrCN,EAASM,CAAS,EAElB,MAAMC,EAAW,IAAI,iBAAiB,IAAMP,EAASF,EAAA,CAAc,CAAC,EAEpE,OAAAS,EAAS,QAAQF,EAAS,CAAE,WAAY,GAAM,EAEvC,IAAM,CACXE,EAAS,WAAA,CAAW,CACtB,EACC,CAACb,EAAY,MAAOH,GAAUC,EAAAA,SAAS,cAAcD,CAAM,CAAC,CAAC,EAE5DA,EAAe,CAAE,MAAAQ,EAAO,IAAAI,EAAK,OAAAD,CAAA,EAC1B,CACL,IAAKR,EACL,MAAAK,EACA,IAAAI,EACA,OAAAD,CAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),g=require("../useRerender/useRerender.cjs"),u=t=>{const e=t.rangeCount??0;return Array.from({length:e},(c,o)=>t.getRangeAt(o))},l=()=>{const t=g.useRerender(),[e,c]=s.useState(typeof document<"u"?document.getSelection():null);s.useEffect(()=>{const n=()=>{c(document.getSelection()),t()};return document.addEventListener("selectionchange",n),()=>document.removeEventListener("selectionchange",n)},[]);const o=e?.toString()??"",r=e?u(e):[],i=r.map(n=>n.getBoundingClientRect());return{text:o,ranges:r,rects:i,selection:e}};exports.getRangesSelection=u;exports.useTextSelection=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),g=require("../useRerender/useRerender.cjs"),u=t=>{const e=t.rangeCount??0;return Array.from({length:e},(r,o)=>t.getRangeAt(o))},l=()=>{const t=g.useRerender(),[e,r]=s.useState(typeof document<"u"?document.getSelection():null);s.useEffect(()=>{const n=()=>{r(document.getSelection()),t()};return document.addEventListener("selectionchange",n),()=>document.removeEventListener("selectionchange",n)},[]);const o=e?.toString()??"",c=e?u(e):[],i=c.map(n=>n.getBoundingClientRect());return{text:o,ranges:c,rects:i,selection:e}};exports.getRangesSelection=u;exports.useTextSelection=l;
2
2
  //# sourceMappingURL=useTextSelection.cjs.map