@siberiacancode/reactuse 0.3.14 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (757) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/cjs/helpers/createContext/createContext.cjs +2 -2
  3. package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
  4. package/dist/cjs/helpers/createContextHook/createContextHook.cjs +2 -2
  5. package/dist/cjs/helpers/createContextHook/createContextHook.cjs.map +1 -1
  6. package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs +2 -2
  7. package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs.map +1 -1
  8. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs +2 -2
  9. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -1
  10. package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs +2 -2
  11. package/dist/cjs/helpers/createSharedHook/createSharedHook.cjs.map +1 -1
  12. package/dist/cjs/helpers/createStore/createStore.cjs +2 -2
  13. package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
  14. package/dist/cjs/helpers/makeDestructurable/makeDestructurable.cjs +2 -0
  15. package/dist/cjs/helpers/makeDestructurable/makeDestructurable.cjs.map +1 -0
  16. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs +2 -2
  17. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
  18. package/dist/cjs/hooks/useAsync/useAsync.cjs +2 -2
  19. package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
  20. package/dist/cjs/hooks/useAsyncEffect/useAsyncEffect.cjs +2 -2
  21. package/dist/cjs/hooks/useAsyncEffect/useAsyncEffect.cjs.map +1 -1
  22. package/dist/cjs/hooks/useAudio/useAudio.cjs +2 -2
  23. package/dist/cjs/hooks/useAudio/useAudio.cjs.map +1 -1
  24. package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs +2 -2
  25. package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs.map +1 -1
  26. package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs +2 -2
  27. package/dist/cjs/hooks/useBatchedCallback/useBatchedCallback.cjs.map +1 -1
  28. package/dist/cjs/hooks/useBattery/useBattery.cjs +2 -2
  29. package/dist/cjs/hooks/useBattery/useBattery.cjs.map +1 -1
  30. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +2 -2
  31. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs.map +1 -1
  32. package/dist/cjs/hooks/useBoolean/useBoolean.cjs +2 -2
  33. package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
  34. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs +2 -2
  35. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
  36. package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs +2 -2
  37. package/dist/cjs/hooks/useBroadcastChannel/useBroadcastChannel.cjs.map +1 -1
  38. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs +2 -2
  39. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
  40. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs +2 -2
  41. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  42. package/dist/cjs/hooks/useClipboard/useClipboard.cjs +2 -2
  43. package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
  44. package/dist/cjs/hooks/useConst/useConst.cjs +2 -2
  45. package/dist/cjs/hooks/useConst/useConst.cjs.map +1 -1
  46. package/dist/cjs/hooks/useControllableState/useControllableState.cjs +2 -2
  47. package/dist/cjs/hooks/useControllableState/useControllableState.cjs.map +1 -1
  48. package/dist/cjs/hooks/useCookie/useCookie.cjs +2 -2
  49. package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
  50. package/dist/cjs/hooks/useCookies/useCookies.cjs +2 -2
  51. package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
  52. package/dist/cjs/hooks/useCopy/useCopy.cjs +2 -2
  53. package/dist/cjs/hooks/useCopy/useCopy.cjs.map +1 -1
  54. package/dist/cjs/hooks/useCounter/useCounter.cjs +2 -2
  55. package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
  56. package/dist/cjs/hooks/useCssVar/useCssVar.cjs +2 -2
  57. package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
  58. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs +2 -2
  59. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs.map +1 -1
  60. package/dist/cjs/hooks/useDebounceEffect/useDebounceEffect.cjs +2 -2
  61. package/dist/cjs/hooks/useDebounceEffect/useDebounceEffect.cjs.map +1 -1
  62. package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs +2 -2
  63. package/dist/cjs/hooks/useDebounceState/useDebounceState.cjs.map +1 -1
  64. package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs +2 -2
  65. package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs.map +1 -1
  66. package/dist/cjs/hooks/useDefault/useDefault.cjs +2 -2
  67. package/dist/cjs/hooks/useDefault/useDefault.cjs.map +1 -1
  68. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs +2 -2
  69. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs.map +1 -1
  70. package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs +2 -2
  71. package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs.map +1 -1
  72. package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs +2 -2
  73. package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs.map +1 -1
  74. package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs +2 -2
  75. package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs.map +1 -1
  76. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs +2 -2
  77. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs.map +1 -1
  78. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs +2 -2
  79. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
  80. package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs +2 -2
  81. package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
  82. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs +2 -2
  83. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs.map +1 -1
  84. package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs +2 -2
  85. package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs.map +1 -1
  86. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +2 -2
  87. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
  88. package/dist/cjs/hooks/useDropZone/useDropZone.cjs +2 -2
  89. package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -1
  90. package/dist/cjs/hooks/useEvent/useEvent.cjs +2 -2
  91. package/dist/cjs/hooks/useEvent/useEvent.cjs.map +1 -1
  92. package/dist/cjs/hooks/useEventListener/useEventListener.cjs +2 -2
  93. package/dist/cjs/hooks/useEventListener/useEventListener.cjs.map +1 -1
  94. package/dist/cjs/hooks/useEventSource/useEventSource.cjs +2 -2
  95. package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -1
  96. package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs +2 -2
  97. package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs.map +1 -1
  98. package/dist/cjs/hooks/useFavicon/useFavicon.cjs +2 -2
  99. package/dist/cjs/hooks/useFavicon/useFavicon.cjs.map +1 -1
  100. package/dist/cjs/hooks/useField/useField.cjs +2 -2
  101. package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
  102. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs +2 -2
  103. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs.map +1 -1
  104. package/dist/cjs/hooks/useFileSystemAccess/useFileSystemAccess.cjs +2 -0
  105. package/dist/cjs/hooks/useFileSystemAccess/useFileSystemAccess.cjs.map +1 -0
  106. package/dist/cjs/hooks/useFocus/useFocus.cjs +2 -2
  107. package/dist/cjs/hooks/useFocus/useFocus.cjs.map +1 -1
  108. package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs +2 -2
  109. package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs.map +1 -1
  110. package/dist/cjs/hooks/useFps/useFps.cjs +2 -2
  111. package/dist/cjs/hooks/useFps/useFps.cjs.map +1 -1
  112. package/dist/cjs/hooks/useFul/useFul.cjs +2 -2
  113. package/dist/cjs/hooks/useFul/useFul.cjs.map +1 -1
  114. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs +2 -2
  115. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs.map +1 -1
  116. package/dist/cjs/hooks/useGamepad/useGamepad.cjs +2 -2
  117. package/dist/cjs/hooks/useGamepad/useGamepad.cjs.map +1 -1
  118. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs +2 -2
  119. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs.map +1 -1
  120. package/dist/cjs/hooks/useHash/useHash.cjs +2 -2
  121. package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
  122. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs +2 -2
  123. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs.map +1 -1
  124. package/dist/cjs/hooks/useHover/useHover.cjs +2 -2
  125. package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
  126. package/dist/cjs/hooks/useIdle/useIdle.cjs +2 -2
  127. package/dist/cjs/hooks/useIdle/useIdle.cjs.map +1 -1
  128. package/dist/cjs/hooks/useImage/useImage.cjs +2 -2
  129. package/dist/cjs/hooks/useImage/useImage.cjs.map +1 -1
  130. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +2 -2
  131. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
  132. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +2 -2
  133. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  134. package/dist/cjs/hooks/useInterval/useInterval.cjs +2 -2
  135. package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
  136. package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs +2 -2
  137. package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs.map +1 -1
  138. package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +2 -2
  139. package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs.map +1 -1
  140. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +2 -2
  141. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
  142. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs +2 -2
  143. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs.map +1 -1
  144. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs +2 -2
  145. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs.map +1 -1
  146. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +2 -2
  147. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
  148. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs +2 -2
  149. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs.map +1 -1
  150. package/dist/cjs/hooks/useLatest/useLatest.cjs +2 -2
  151. package/dist/cjs/hooks/useLatest/useLatest.cjs.map +1 -1
  152. package/dist/cjs/hooks/useLess/useLess.cjs +2 -2
  153. package/dist/cjs/hooks/useLess/useLess.cjs.map +1 -1
  154. package/dist/cjs/hooks/useList/useList.cjs +2 -2
  155. package/dist/cjs/hooks/useList/useList.cjs.map +1 -1
  156. package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs +2 -2
  157. package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
  158. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs +2 -2
  159. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs.map +1 -1
  160. package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs +2 -2
  161. package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs.map +1 -1
  162. package/dist/cjs/hooks/useLogger/useLogger.cjs +2 -2
  163. package/dist/cjs/hooks/useLogger/useLogger.cjs.map +1 -1
  164. package/dist/cjs/hooks/useLongPress/useLongPress.cjs +2 -2
  165. package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
  166. package/dist/cjs/hooks/useMap/useMap.cjs +2 -2
  167. package/dist/cjs/hooks/useMap/useMap.cjs.map +1 -1
  168. package/dist/cjs/hooks/useMeasure/useMeasure.cjs +2 -2
  169. package/dist/cjs/hooks/useMeasure/useMeasure.cjs.map +1 -1
  170. package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs +2 -2
  171. package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs.map +1 -1
  172. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs +2 -2
  173. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs.map +1 -1
  174. package/dist/cjs/hooks/useMemory/useMemory.cjs +2 -2
  175. package/dist/cjs/hooks/useMemory/useMemory.cjs.map +1 -1
  176. package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs +2 -2
  177. package/dist/cjs/hooks/useMergedRef/useMergedRef.cjs.map +1 -1
  178. package/dist/cjs/hooks/useMount/useMount.cjs +2 -2
  179. package/dist/cjs/hooks/useMount/useMount.cjs.map +1 -1
  180. package/dist/cjs/hooks/useMouse/useMouse.cjs +2 -2
  181. package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
  182. package/dist/cjs/hooks/useMutation/useMutation.cjs +2 -2
  183. package/dist/cjs/hooks/useMutation/useMutation.cjs.map +1 -1
  184. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs +2 -2
  185. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  186. package/dist/cjs/hooks/useNetwork/useNetwork.cjs +2 -2
  187. package/dist/cjs/hooks/useNetwork/useNetwork.cjs.map +1 -1
  188. package/dist/cjs/hooks/useObjectUrl/useObjectUrl.cjs +2 -0
  189. package/dist/cjs/hooks/useObjectUrl/useObjectUrl.cjs.map +1 -0
  190. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs +2 -2
  191. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
  192. package/dist/cjs/hooks/useOnce/useOnce.cjs +2 -2
  193. package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
  194. package/dist/cjs/hooks/useOnline/useOnline.cjs +2 -2
  195. package/dist/cjs/hooks/useOnline/useOnline.cjs.map +1 -1
  196. package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs +2 -2
  197. package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs.map +1 -1
  198. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs +2 -2
  199. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
  200. package/dist/cjs/hooks/useOrientation/useOrientation.cjs +2 -2
  201. package/dist/cjs/hooks/useOrientation/useOrientation.cjs.map +1 -1
  202. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs +2 -2
  203. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs.map +1 -1
  204. package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs +2 -2
  205. package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs.map +1 -1
  206. package/dist/cjs/hooks/usePaint/usePaint.cjs +2 -2
  207. package/dist/cjs/hooks/usePaint/usePaint.cjs.map +1 -1
  208. package/dist/cjs/hooks/useParallax/useParallax.cjs +2 -2
  209. package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
  210. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +2 -2
  211. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
  212. package/dist/cjs/hooks/usePermission/usePermission.cjs +2 -2
  213. package/dist/cjs/hooks/usePermission/usePermission.cjs.map +1 -1
  214. package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs +2 -2
  215. package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.cjs.map +1 -1
  216. package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs +2 -2
  217. package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs.map +1 -1
  218. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs +2 -2
  219. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
  220. package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs +2 -2
  221. package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs.map +1 -1
  222. package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs +2 -2
  223. package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs.map +1 -1
  224. package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs +2 -2
  225. package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs.map +1 -1
  226. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs +2 -2
  227. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs.map +1 -1
  228. package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs +2 -2
  229. package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs.map +1 -1
  230. package/dist/cjs/hooks/usePrevious/usePrevious.cjs +2 -2
  231. package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
  232. package/dist/cjs/hooks/useProgress/useProgress.cjs +2 -2
  233. package/dist/cjs/hooks/useProgress/useProgress.cjs.map +1 -1
  234. package/dist/cjs/hooks/useQuery/useQuery.cjs +2 -2
  235. package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
  236. package/dist/cjs/hooks/useQueue/useQueue.cjs +2 -2
  237. package/dist/cjs/hooks/useQueue/useQueue.cjs.map +1 -1
  238. package/dist/cjs/hooks/useRaf/useRaf.cjs +2 -2
  239. package/dist/cjs/hooks/useRaf/useRaf.cjs.map +1 -1
  240. package/dist/cjs/hooks/useRafState/useRafState.cjs +2 -2
  241. package/dist/cjs/hooks/useRafState/useRafState.cjs.map +1 -1
  242. package/dist/cjs/hooks/useRefState/useRefState.cjs +2 -2
  243. package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
  244. package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs +2 -2
  245. package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs.map +1 -1
  246. package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs +2 -2
  247. package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs.map +1 -1
  248. package/dist/cjs/hooks/useRerender/useRerender.cjs +2 -2
  249. package/dist/cjs/hooks/useRerender/useRerender.cjs.map +1 -1
  250. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +2 -2
  251. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
  252. package/dist/cjs/hooks/useRightClick/useRightClick.cjs +2 -2
  253. package/dist/cjs/hooks/useRightClick/useRightClick.cjs.map +1 -1
  254. package/dist/cjs/hooks/useScript/useScript.cjs +2 -2
  255. package/dist/cjs/hooks/useScript/useScript.cjs.map +1 -1
  256. package/dist/cjs/hooks/useScroll/useScroll.cjs +2 -2
  257. package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
  258. package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs +2 -2
  259. package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
  260. package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs +2 -2
  261. package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs.map +1 -1
  262. package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs +2 -2
  263. package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs.map +1 -1
  264. package/dist/cjs/hooks/useSet/useSet.cjs +2 -2
  265. package/dist/cjs/hooks/useSet/useSet.cjs.map +1 -1
  266. package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs +2 -2
  267. package/dist/cjs/hooks/useShallowEffect/useShallowEffect.cjs.map +1 -1
  268. package/dist/cjs/hooks/useShare/useShare.cjs +2 -2
  269. package/dist/cjs/hooks/useShare/useShare.cjs.map +1 -1
  270. package/dist/cjs/hooks/useSize/useSize.cjs +2 -2
  271. package/dist/cjs/hooks/useSize/useSize.cjs.map +1 -1
  272. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +2 -2
  273. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -1
  274. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs +2 -2
  275. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs.map +1 -1
  276. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs +2 -2
  277. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs.map +1 -1
  278. package/dist/cjs/hooks/useStep/useStep.cjs +2 -2
  279. package/dist/cjs/hooks/useStep/useStep.cjs.map +1 -1
  280. package/dist/cjs/hooks/useSticky/useSticky.cjs +2 -2
  281. package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
  282. package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs +2 -2
  283. package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs.map +1 -1
  284. package/dist/cjs/hooks/useStorage/useStorage.cjs +2 -2
  285. package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
  286. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +2 -2
  287. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
  288. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs +2 -2
  289. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs.map +1 -1
  290. package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs +2 -2
  291. package/dist/cjs/hooks/useTextareaAutosize/useTextareaAutosize.cjs.map +1 -1
  292. package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs +2 -2
  293. package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs.map +1 -1
  294. package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs +2 -2
  295. package/dist/cjs/hooks/useThrottleEffect/useThrottleEffect.cjs.map +1 -1
  296. package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs +2 -2
  297. package/dist/cjs/hooks/useThrottleState/useThrottleState.cjs.map +1 -1
  298. package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs +2 -2
  299. package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs.map +1 -1
  300. package/dist/cjs/hooks/useTime/useTime.cjs +2 -2
  301. package/dist/cjs/hooks/useTime/useTime.cjs.map +1 -1
  302. package/dist/cjs/hooks/useTimeout/useTimeout.cjs +2 -2
  303. package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
  304. package/dist/cjs/hooks/useTimer/useTimer.cjs +2 -2
  305. package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
  306. package/dist/cjs/hooks/useToggle/useToggle.cjs +2 -2
  307. package/dist/cjs/hooks/useToggle/useToggle.cjs.map +1 -1
  308. package/dist/cjs/hooks/useUnmount/useUnmount.cjs +2 -2
  309. package/dist/cjs/hooks/useUnmount/useUnmount.cjs.map +1 -1
  310. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs +2 -2
  311. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
  312. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs +2 -2
  313. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
  314. package/dist/cjs/hooks/useVibrate/useVibrate.cjs +2 -2
  315. package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
  316. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs +2 -2
  317. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs.map +1 -1
  318. package/dist/cjs/hooks/useVisibility/useVisibility.cjs +2 -2
  319. package/dist/cjs/hooks/useVisibility/useVisibility.cjs.map +1 -1
  320. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +2 -2
  321. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
  322. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +2 -2
  323. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
  324. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs +2 -2
  325. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
  326. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs +2 -2
  327. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
  328. package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs +2 -2
  329. package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs.map +1 -1
  330. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs +2 -2
  331. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs.map +1 -1
  332. package/dist/cjs/hooks/useWizard/useWizard.cjs +2 -2
  333. package/dist/cjs/hooks/useWizard/useWizard.cjs.map +1 -1
  334. package/dist/cjs/index.cjs +1 -2
  335. package/dist/cjs/utils/helpers/copy.cjs +2 -2
  336. package/dist/cjs/utils/helpers/copy.cjs.map +1 -1
  337. package/dist/cjs/utils/helpers/debounce.cjs +2 -2
  338. package/dist/cjs/utils/helpers/debounce.cjs.map +1 -1
  339. package/dist/cjs/utils/helpers/getDate.cjs +2 -2
  340. package/dist/cjs/utils/helpers/getDate.cjs.map +1 -1
  341. package/dist/cjs/utils/helpers/getRetry.cjs +2 -2
  342. package/dist/cjs/utils/helpers/getRetry.cjs.map +1 -1
  343. package/dist/cjs/utils/helpers/isTarget.cjs +2 -2
  344. package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
  345. package/dist/cjs/utils/helpers/throttle.cjs +2 -2
  346. package/dist/cjs/utils/helpers/throttle.cjs.map +1 -1
  347. package/dist/esm/helpers/createContext/createContext.mjs +32 -33
  348. package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
  349. package/dist/esm/helpers/createContextHook/createContextHook.mjs +19 -12
  350. package/dist/esm/helpers/createContextHook/createContextHook.mjs.map +1 -1
  351. package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs +34 -33
  352. package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs.map +1 -1
  353. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs +53 -53
  354. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -1
  355. package/dist/esm/helpers/createSharedHook/createSharedHook.mjs +36 -41
  356. package/dist/esm/helpers/createSharedHook/createSharedHook.mjs.map +1 -1
  357. package/dist/esm/helpers/createStore/createStore.mjs +25 -29
  358. package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
  359. package/dist/esm/helpers/makeDestructurable/makeDestructurable.mjs +21 -0
  360. package/dist/esm/helpers/makeDestructurable/makeDestructurable.mjs.map +1 -0
  361. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +28 -27
  362. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
  363. package/dist/esm/hooks/useAsync/useAsync.mjs +22 -21
  364. package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
  365. package/dist/esm/hooks/useAsyncEffect/useAsyncEffect.mjs +10 -9
  366. package/dist/esm/hooks/useAsyncEffect/useAsyncEffect.mjs.map +1 -1
  367. package/dist/esm/hooks/useAudio/useAudio.mjs +55 -55
  368. package/dist/esm/hooks/useAudio/useAudio.mjs.map +1 -1
  369. package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs +43 -40
  370. package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
  371. package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs +20 -19
  372. package/dist/esm/hooks/useBatchedCallback/useBatchedCallback.mjs.map +1 -1
  373. package/dist/esm/hooks/useBattery/useBattery.mjs +32 -29
  374. package/dist/esm/hooks/useBattery/useBattery.mjs.map +1 -1
  375. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs +35 -33
  376. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs.map +1 -1
  377. package/dist/esm/hooks/useBoolean/useBoolean.mjs +9 -8
  378. package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
  379. package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs +90 -104
  380. package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
  381. package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs +30 -31
  382. package/dist/esm/hooks/useBroadcastChannel/useBroadcastChannel.mjs.map +1 -1
  383. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs +7 -6
  384. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
  385. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs +21 -21
  386. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
  387. package/dist/esm/hooks/useClipboard/useClipboard.mjs +25 -23
  388. package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
  389. package/dist/esm/hooks/useConst/useConst.mjs +7 -6
  390. package/dist/esm/hooks/useConst/useConst.mjs.map +1 -1
  391. package/dist/esm/hooks/useControllableState/useControllableState.mjs +18 -16
  392. package/dist/esm/hooks/useControllableState/useControllableState.mjs.map +1 -1
  393. package/dist/esm/hooks/useCookie/useCookie.mjs +53 -56
  394. package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
  395. package/dist/esm/hooks/useCookies/useCookies.mjs +38 -37
  396. package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
  397. package/dist/esm/hooks/useCopy/useCopy.mjs +15 -10
  398. package/dist/esm/hooks/useCopy/useCopy.mjs.map +1 -1
  399. package/dist/esm/hooks/useCounter/useCounter.mjs +26 -22
  400. package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
  401. package/dist/esm/hooks/useCssVar/useCssVar.mjs +42 -32
  402. package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
  403. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs +18 -17
  404. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs.map +1 -1
  405. package/dist/esm/hooks/useDebounceEffect/useDebounceEffect.mjs +19 -18
  406. package/dist/esm/hooks/useDebounceEffect/useDebounceEffect.mjs.map +1 -1
  407. package/dist/esm/hooks/useDebounceState/useDebounceState.mjs +10 -9
  408. package/dist/esm/hooks/useDebounceState/useDebounceState.mjs.map +1 -1
  409. package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs +12 -11
  410. package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs.map +1 -1
  411. package/dist/esm/hooks/useDefault/useDefault.mjs +9 -8
  412. package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
  413. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs +49 -36
  414. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
  415. package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs +28 -27
  416. package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs.map +1 -1
  417. package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs +18 -14
  418. package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs.map +1 -1
  419. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs +15 -18
  420. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
  421. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs +14 -8
  422. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
  423. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs +39 -39
  424. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
  425. package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs +8 -7
  426. package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
  427. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs +28 -27
  428. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
  429. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs +9 -8
  430. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs.map +1 -1
  431. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +25 -28
  432. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
  433. package/dist/esm/hooks/useDropZone/useDropZone.mjs +55 -47
  434. package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
  435. package/dist/esm/hooks/useEvent/useEvent.mjs +12 -11
  436. package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
  437. package/dist/esm/hooks/useEventListener/useEventListener.mjs +24 -19
  438. package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
  439. package/dist/esm/hooks/useEventSource/useEventSource.mjs +44 -49
  440. package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
  441. package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs +17 -16
  442. package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs.map +1 -1
  443. package/dist/esm/hooks/useFavicon/useFavicon.mjs +20 -18
  444. package/dist/esm/hooks/useFavicon/useFavicon.mjs.map +1 -1
  445. package/dist/esm/hooks/useField/useField.mjs +61 -67
  446. package/dist/esm/hooks/useField/useField.mjs.map +1 -1
  447. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs +34 -32
  448. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
  449. package/dist/esm/hooks/useFileSystemAccess/useFileSystemAccess.mjs +59 -0
  450. package/dist/esm/hooks/useFileSystemAccess/useFileSystemAccess.mjs.map +1 -0
  451. package/dist/esm/hooks/useFocus/useFocus.mjs +43 -34
  452. package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
  453. package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs +51 -36
  454. package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs.map +1 -1
  455. package/dist/esm/hooks/useFps/useFps.mjs +18 -22
  456. package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
  457. package/dist/esm/hooks/useFul/useFul.mjs +8 -7
  458. package/dist/esm/hooks/useFul/useFul.mjs.map +1 -1
  459. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs +39 -42
  460. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
  461. package/dist/esm/hooks/useGamepad/useGamepad.mjs +76 -83
  462. package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
  463. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs +50 -45
  464. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs.map +1 -1
  465. package/dist/esm/hooks/useHash/useHash.mjs +24 -26
  466. package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
  467. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs +35 -37
  468. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
  469. package/dist/esm/hooks/useHover/useHover.mjs +30 -25
  470. package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
  471. package/dist/esm/hooks/useIdle/useIdle.mjs +29 -26
  472. package/dist/esm/hooks/useIdle/useIdle.mjs.map +1 -1
  473. package/dist/esm/hooks/useImage/useImage.mjs +24 -26
  474. package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
  475. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +38 -32
  476. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
  477. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +38 -37
  478. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
  479. package/dist/esm/hooks/useInterval/useInterval.mjs +20 -20
  480. package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
  481. package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs +8 -7
  482. package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs.map +1 -1
  483. package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +7 -6
  484. package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs.map +1 -1
  485. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +30 -26
  486. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
  487. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs +33 -35
  488. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
  489. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs +16 -19
  490. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
  491. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +36 -25
  492. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
  493. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs +10 -9
  494. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
  495. package/dist/esm/hooks/useLatest/useLatest.mjs +14 -16
  496. package/dist/esm/hooks/useLatest/useLatest.mjs.map +1 -1
  497. package/dist/esm/hooks/useLess/useLess.mjs +9 -8
  498. package/dist/esm/hooks/useLess/useLess.mjs.map +1 -1
  499. package/dist/esm/hooks/useList/useList.mjs +22 -22
  500. package/dist/esm/hooks/useList/useList.mjs.map +1 -1
  501. package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs +10 -9
  502. package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs.map +1 -1
  503. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs +18 -17
  504. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
  505. package/dist/esm/hooks/useLockScroll/useLockScroll.mjs +44 -39
  506. package/dist/esm/hooks/useLockScroll/useLockScroll.mjs.map +1 -1
  507. package/dist/esm/hooks/useLogger/useLogger.mjs +10 -9
  508. package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
  509. package/dist/esm/hooks/useLongPress/useLongPress.mjs +30 -26
  510. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  511. package/dist/esm/hooks/useMap/useMap.mjs +21 -20
  512. package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
  513. package/dist/esm/hooks/useMeasure/useMeasure.mjs +45 -32
  514. package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
  515. package/dist/esm/hooks/useMediaControls/useMediaControls.mjs +67 -68
  516. package/dist/esm/hooks/useMediaControls/useMediaControls.mjs.map +1 -1
  517. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs +12 -17
  518. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
  519. package/dist/esm/hooks/useMemory/useMemory.mjs +20 -18
  520. package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
  521. package/dist/esm/hooks/useMergedRef/useMergedRef.mjs +23 -25
  522. package/dist/esm/hooks/useMergedRef/useMergedRef.mjs.map +1 -1
  523. package/dist/esm/hooks/useMount/useMount.mjs +7 -6
  524. package/dist/esm/hooks/useMount/useMount.mjs.map +1 -1
  525. package/dist/esm/hooks/useMouse/useMouse.mjs +61 -58
  526. package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
  527. package/dist/esm/hooks/useMutation/useMutation.mjs +63 -60
  528. package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
  529. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +35 -34
  530. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
  531. package/dist/esm/hooks/useNetwork/useNetwork.mjs +47 -48
  532. package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
  533. package/dist/esm/hooks/useObjectUrl/useObjectUrl.mjs +20 -0
  534. package/dist/esm/hooks/useObjectUrl/useObjectUrl.mjs.map +1 -0
  535. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs +50 -40
  536. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
  537. package/dist/esm/hooks/useOnce/useOnce.mjs +13 -13
  538. package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
  539. package/dist/esm/hooks/useOnline/useOnline.mjs +9 -8
  540. package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
  541. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs +12 -12
  542. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
  543. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs +14 -13
  544. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
  545. package/dist/esm/hooks/useOrientation/useOrientation.mjs +30 -29
  546. package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
  547. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +28 -25
  548. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
  549. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs +15 -14
  550. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs.map +1 -1
  551. package/dist/esm/hooks/usePaint/usePaint.mjs +139 -151
  552. package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
  553. package/dist/esm/hooks/useParallax/useParallax.mjs +90 -96
  554. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  555. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +29 -23
  556. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
  557. package/dist/esm/hooks/usePermission/usePermission.mjs +25 -27
  558. package/dist/esm/hooks/usePermission/usePermission.mjs.map +1 -1
  559. package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs +42 -38
  560. package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.mjs.map +1 -1
  561. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs +31 -30
  562. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
  563. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs +22 -23
  564. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
  565. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs +8 -7
  566. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
  567. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs +8 -7
  568. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
  569. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs +6 -5
  570. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
  571. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs +9 -8
  572. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
  573. package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs +6 -5
  574. package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs.map +1 -1
  575. package/dist/esm/hooks/usePrevious/usePrevious.mjs +9 -8
  576. package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
  577. package/dist/esm/hooks/useProgress/useProgress.mjs +28 -24
  578. package/dist/esm/hooks/useProgress/useProgress.mjs.map +1 -1
  579. package/dist/esm/hooks/useQuery/useQuery.mjs +61 -52
  580. package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
  581. package/dist/esm/hooks/useQueue/useQueue.mjs +23 -22
  582. package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
  583. package/dist/esm/hooks/useRaf/useRaf.mjs +32 -29
  584. package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
  585. package/dist/esm/hooks/useRafState/useRafState.mjs +12 -11
  586. package/dist/esm/hooks/useRafState/useRafState.mjs.map +1 -1
  587. package/dist/esm/hooks/useRefState/useRefState.mjs +24 -24
  588. package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
  589. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs +11 -10
  590. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
  591. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs +14 -13
  592. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
  593. package/dist/esm/hooks/useRerender/useRerender.mjs +6 -5
  594. package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
  595. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +33 -24
  596. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
  597. package/dist/esm/hooks/useRightClick/useRightClick.mjs +37 -34
  598. package/dist/esm/hooks/useRightClick/useRightClick.mjs.map +1 -1
  599. package/dist/esm/hooks/useScript/useScript.mjs +28 -31
  600. package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
  601. package/dist/esm/hooks/useScroll/useScroll.mjs +95 -81
  602. package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
  603. package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs +33 -34
  604. package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
  605. package/dist/esm/hooks/useScrollTo/useScrollTo.mjs +33 -21
  606. package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
  607. package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs +10 -9
  608. package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs.map +1 -1
  609. package/dist/esm/hooks/useSet/useSet.mjs +30 -29
  610. package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
  611. package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs +20 -22
  612. package/dist/esm/hooks/useShallowEffect/useShallowEffect.mjs.map +1 -1
  613. package/dist/esm/hooks/useShare/useShare.mjs +18 -14
  614. package/dist/esm/hooks/useShare/useShare.mjs.map +1 -1
  615. package/dist/esm/hooks/useSize/useSize.mjs +40 -30
  616. package/dist/esm/hooks/useSize/useSize.mjs.map +1 -1
  617. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +34 -44
  618. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
  619. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +65 -64
  620. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
  621. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs +96 -84
  622. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
  623. package/dist/esm/hooks/useStep/useStep.mjs +27 -28
  624. package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
  625. package/dist/esm/hooks/useSticky/useSticky.mjs +36 -30
  626. package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
  627. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs +59 -57
  628. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
  629. package/dist/esm/hooks/useStorage/useStorage.mjs +61 -62
  630. package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
  631. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +35 -30
  632. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
  633. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs +25 -27
  634. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs.map +1 -1
  635. package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs +53 -52
  636. package/dist/esm/hooks/useTextareaAutosize/useTextareaAutosize.mjs.map +1 -1
  637. package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs +18 -17
  638. package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs.map +1 -1
  639. package/dist/esm/hooks/useThrottleEffect/useThrottleEffect.mjs +21 -21
  640. package/dist/esm/hooks/useThrottleEffect/useThrottleEffect.mjs.map +1 -1
  641. package/dist/esm/hooks/useThrottleState/useThrottleState.mjs +10 -9
  642. package/dist/esm/hooks/useThrottleState/useThrottleState.mjs.map +1 -1
  643. package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs +12 -11
  644. package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs.map +1 -1
  645. package/dist/esm/hooks/useTime/useTime.mjs +14 -13
  646. package/dist/esm/hooks/useTime/useTime.mjs.map +1 -1
  647. package/dist/esm/hooks/useTimeout/useTimeout.mjs +19 -15
  648. package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
  649. package/dist/esm/hooks/useTimer/useTimer.mjs +61 -66
  650. package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
  651. package/dist/esm/hooks/useToggle/useToggle.mjs +12 -11
  652. package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
  653. package/dist/esm/hooks/useUnmount/useUnmount.mjs +11 -13
  654. package/dist/esm/hooks/useUnmount/useUnmount.mjs.map +1 -1
  655. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs +66 -76
  656. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
  657. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +50 -60
  658. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
  659. package/dist/esm/hooks/useVibrate/useVibrate.mjs +28 -21
  660. package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
  661. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs +30 -29
  662. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs.map +1 -1
  663. package/dist/esm/hooks/useVisibility/useVisibility.mjs +41 -39
  664. package/dist/esm/hooks/useVisibility/useVisibility.mjs.map +1 -1
  665. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +28 -23
  666. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
  667. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +38 -35
  668. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
  669. package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs +7 -6
  670. package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
  671. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs +14 -13
  672. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
  673. package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs +29 -21
  674. package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
  675. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs +24 -23
  676. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs.map +1 -1
  677. package/dist/esm/hooks/useWizard/useWizard.mjs +25 -20
  678. package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
  679. package/dist/esm/index.mjs +173 -394
  680. package/dist/esm/utils/helpers/copy.mjs +18 -18
  681. package/dist/esm/utils/helpers/copy.mjs.map +1 -1
  682. package/dist/esm/utils/helpers/debounce.mjs +10 -10
  683. package/dist/esm/utils/helpers/debounce.mjs.map +1 -1
  684. package/dist/esm/utils/helpers/getDate.mjs +20 -16
  685. package/dist/esm/utils/helpers/getDate.mjs.map +1 -1
  686. package/dist/esm/utils/helpers/getRetry.mjs +6 -5
  687. package/dist/esm/utils/helpers/getRetry.mjs.map +1 -1
  688. package/dist/esm/utils/helpers/isTarget.mjs +10 -19
  689. package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
  690. package/dist/esm/utils/helpers/throttle.mjs +20 -20
  691. package/dist/esm/utils/helpers/throttle.mjs.map +1 -1
  692. package/dist/types/helpers/index.d.ts +1 -0
  693. package/dist/types/helpers/makeDestructurable/makeDestructurable.d.ts +16 -0
  694. package/dist/types/hooks/browser.d.ts +2 -0
  695. package/dist/types/hooks/useEventListener/useEventListener.d.ts +0 -22
  696. package/dist/types/hooks/useField/useField.d.ts +3 -3
  697. package/dist/types/hooks/useFileSystemAccess/useFileSystemAccess.d.ts +116 -0
  698. package/dist/types/hooks/useKeyboard/useKeyboard.d.ts +4 -2
  699. package/dist/types/hooks/useObjectUrl/useObjectUrl.d.ts +24 -0
  700. package/dist/types/hooks/usePerformanceObserver/usePerformanceObserver.d.ts +1 -0
  701. package/dist/types/hooks/useScrollIntoView/useScrollIntoView.d.ts +1 -1
  702. package/dist/types/hooks/useWebSocket/useWebSocket.d.ts +1 -0
  703. package/package.json +5 -5
  704. package/dist/cjs/_virtual/client.cjs +0 -2
  705. package/dist/cjs/_virtual/client.cjs.map +0 -1
  706. package/dist/cjs/_virtual/client2.cjs +0 -2
  707. package/dist/cjs/_virtual/client2.cjs.map +0 -1
  708. package/dist/cjs/_virtual/index.cjs +0 -2
  709. package/dist/cjs/_virtual/index.cjs.map +0 -1
  710. package/dist/cjs/_virtual/react-dom-client.development.cjs +0 -2
  711. package/dist/cjs/_virtual/react-dom-client.development.cjs.map +0 -1
  712. package/dist/cjs/_virtual/react-dom-client.production.cjs +0 -2
  713. package/dist/cjs/_virtual/react-dom-client.production.cjs.map +0 -1
  714. package/dist/cjs/_virtual/scheduler.development.cjs +0 -2
  715. package/dist/cjs/_virtual/scheduler.development.cjs.map +0 -1
  716. package/dist/cjs/_virtual/scheduler.production.cjs +0 -2
  717. package/dist/cjs/_virtual/scheduler.production.cjs.map +0 -1
  718. package/dist/cjs/index.cjs.map +0 -1
  719. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs +0 -215
  720. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.cjs.map +0 -1
  721. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs +0 -10
  722. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.cjs.map +0 -1
  723. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs +0 -2
  724. package/dist/cjs/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.cjs.map +0 -1
  725. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs +0 -2
  726. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.cjs.map +0 -1
  727. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs +0 -2
  728. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.cjs.map +0 -1
  729. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs +0 -2
  730. package/dist/cjs/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.cjs.map +0 -1
  731. package/dist/esm/_virtual/client.mjs +0 -6
  732. package/dist/esm/_virtual/client.mjs.map +0 -1
  733. package/dist/esm/_virtual/client2.mjs +0 -5
  734. package/dist/esm/_virtual/client2.mjs.map +0 -1
  735. package/dist/esm/_virtual/index.mjs +0 -5
  736. package/dist/esm/_virtual/index.mjs.map +0 -1
  737. package/dist/esm/_virtual/react-dom-client.development.mjs +0 -5
  738. package/dist/esm/_virtual/react-dom-client.development.mjs.map +0 -1
  739. package/dist/esm/_virtual/react-dom-client.production.mjs +0 -5
  740. package/dist/esm/_virtual/react-dom-client.production.mjs.map +0 -1
  741. package/dist/esm/_virtual/scheduler.development.mjs +0 -5
  742. package/dist/esm/_virtual/scheduler.development.mjs.map +0 -1
  743. package/dist/esm/_virtual/scheduler.production.mjs +0 -5
  744. package/dist/esm/_virtual/scheduler.production.mjs.map +0 -1
  745. package/dist/esm/index.mjs.map +0 -1
  746. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.mjs +0 -17019
  747. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.development.mjs.map +0 -1
  748. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.mjs +0 -9745
  749. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/cjs/react-dom-client.production.mjs.map +0 -1
  750. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.mjs +0 -24
  751. package/dist/esm/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.mjs.map +0 -1
  752. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.mjs +0 -228
  753. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.mjs.map +0 -1
  754. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.mjs +0 -225
  755. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.mjs.map +0 -1
  756. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.mjs +0 -11
  757. package/dist/esm/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react/jsx-runtime"),n=require("react"),x=(s=void 0,o={})=>{const t=n.createContext({value:s,set:()=>{}});t.displayName=o.name;function i(r){const e=n.useContext(t);if(!e&&o.strict)throw new Error(`Context hook ${o.name} must be used inside a Provider`);return r?r(e.value):e}return{useSelect:i,instance:t,Provider:({children:r,initialValue:e})=>{const[u,c]=n.useState(e??s),a=n.useMemo(()=>({value:u,set:c}),[u]);return v.jsx(t,{value:a,children:r})}}};exports.createContext=x;
2
- //# sourceMappingURL=createContext.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`),t=require(`react/jsx-runtime`);var n=(n=void 0,r={})=>{let i=(0,e.createContext)({value:n,set:()=>{}});i.displayName=r.name;function a(t){let n=(0,e.useContext)(i);if(!n&&r.strict)throw Error(`Context hook ${r.name} must be used inside a Provider`);return t?t(n.value):n}return{useSelect:a,instance:i,Provider:({children:r,initialValue:a})=>{let[o,s]=(0,e.useState)(a??n);return(0,t.jsx)(i,{value:(0,e.useMemo)(()=>({value:o,set:s}),[o]),children:r})}}};exports.createContext=n;
2
+ //# sourceMappingURL=createContext.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createContext.cjs","sources":["../../../../src/helpers/createContext/createContext.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\r\n\r\nimport { createContext as createReactContext, useContext, useMemo, useState } from 'react';\r\n\r\n/** The create context options type */\r\nexport interface CreateContextOptions {\r\n /** Display name for the context (useful for debugging) */\r\n name?: string;\r\n /** Whether to throw an error if context is used outside of Provider */\r\n strict?: boolean;\r\n}\r\n\r\n/** The context value type */\r\nexport interface ContextValue<Value> {\r\n /** The context value */\r\n value: Value | undefined;\r\n /** The context set function */\r\n set: (value: Value) => void;\r\n}\r\n\r\n/** The provider props type */\r\nexport interface ProviderProps<Value> {\r\n /** The children */\r\n children?: ReactNode;\r\n /** The initial value */\r\n initialValue?: Value;\r\n}\r\n\r\n/** The create context return type */\r\nexport interface CreateContextReturn<Value> {\r\n /** The context instance */\r\n instance: React.Context<ContextValue<Value>>;\r\n /** The provider component */\r\n Provider: (props: ProviderProps<Value>) => JSX.Element;\r\n /** The selector hook */\r\n useSelect: {\r\n <Selected>(selector: (value: Value) => Selected): Selected;\r\n (): ContextValue<Value>;\r\n };\r\n}\r\n\r\n/**\r\n * @name createContext\r\n * @description - Creates a typed context with additional utilities\r\n * @category Helpers\r\n * @usage high\r\n *\r\n * @template Value - The type of value that will be stored in the context\r\n * @param {Value | undefined} [defaultValue] - Default value for the context\r\n * @param {CreateContextOptions<Value>} [options] - Additional options for context creation\r\n * @returns {CreateContextReturn<Value>} Object containing context utilities and components\r\n *\r\n * @example\r\n * const { useSelect, instance, Provider } = createContext<number>(0);\r\n */\r\nexport const createContext = <Value,>(\r\n defaultValue: Value | undefined = undefined,\r\n options: CreateContextOptions = {}\r\n): CreateContextReturn<Value> => {\r\n const Context = createReactContext<{\r\n value: Value | undefined;\r\n set: (value: Value) => void;\r\n }>({\r\n value: defaultValue,\r\n set: () => {}\r\n });\r\n\r\n Context.displayName = options.name;\r\n\r\n function useSelect(): ContextValue<Value>;\r\n function useSelect<Selected>(selector: (value: Value) => Selected): Selected;\r\n function useSelect<Selected>(selector?: (value: Value) => Selected) {\r\n const context = useContext(Context);\r\n\r\n if (!context && options.strict) {\r\n throw new Error(`Context hook ${options.name} must be used inside a Provider`);\r\n }\r\n\r\n if (!selector) {\r\n return context;\r\n }\r\n\r\n return selector(context.value as Value);\r\n }\r\n\r\n const Provider = ({ children, initialValue }: ProviderProps<Value>) => {\r\n const [profile, setProfile] = useState<Value | undefined>(initialValue ?? defaultValue);\r\n\r\n const value = useMemo(\r\n () => ({\r\n value: profile,\r\n set: setProfile\r\n }),\r\n [profile]\r\n );\r\n\r\n return <Context value={value}>{children}</Context>;\r\n };\r\n\r\n return {\r\n useSelect,\r\n instance: Context,\r\n Provider\r\n } as const;\r\n};\r\n"],"names":["createContext","defaultValue","options","Context","createReactContext","useSelect","selector","context","useContext","children","initialValue","profile","setProfile","useState","value","useMemo","jsx"],"mappings":"wIAuDaA,EAAgB,CAC3BC,EAAkC,OAClCC,EAAgC,CAAA,IACD,CAC/B,MAAMC,EAAUC,EAAAA,cAGb,CACD,MAAOH,EACP,IAAK,IAAM,CAAA,CAAC,CACb,EAEDE,EAAQ,YAAcD,EAAQ,KAI9B,SAASG,EAAoBC,EAAuC,CAClE,MAAMC,EAAUC,EAAAA,WAAWL,CAAO,EAElC,GAAI,CAACI,GAAWL,EAAQ,OACtB,MAAM,IAAI,MAAM,gBAAgBA,EAAQ,IAAI,iCAAiC,EAG/E,OAAKI,EAIEA,EAASC,EAAQ,KAAc,EAH7BA,CAG6B,CAiBxC,MAAO,CACL,UAAAF,EACA,SAAUF,EACV,SAjBe,CAAC,CAAE,SAAAM,EAAU,aAAAC,KAAyC,CACrE,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAA4BH,GAAgBT,CAAY,EAEhFa,EAAQC,EAAAA,QACZ,KAAO,CACL,MAAOJ,EACP,IAAKC,CAAA,GAEP,CAACD,CAAO,CAAA,EAGV,OAAOK,EAAAA,IAACb,EAAA,CAAQ,MAAAW,EAAe,SAAAL,CAAA,CAAS,CAAA,CAMxC,CAEJ"}
1
+ {"version":3,"file":"createContext.cjs","names":[],"sources":["../../../../src/helpers/createContext/createContext.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\r\n\r\nimport { createContext as createReactContext, useContext, useMemo, useState } from 'react';\r\n\r\n/** The create context options type */\r\nexport interface CreateContextOptions {\r\n /** Display name for the context (useful for debugging) */\r\n name?: string;\r\n /** Whether to throw an error if context is used outside of Provider */\r\n strict?: boolean;\r\n}\r\n\r\n/** The context value type */\r\nexport interface ContextValue<Value> {\r\n /** The context value */\r\n value: Value | undefined;\r\n /** The context set function */\r\n set: (value: Value) => void;\r\n}\r\n\r\n/** The provider props type */\r\nexport interface ProviderProps<Value> {\r\n /** The children */\r\n children?: ReactNode;\r\n /** The initial value */\r\n initialValue?: Value;\r\n}\r\n\r\n/** The create context return type */\r\nexport interface CreateContextReturn<Value> {\r\n /** The context instance */\r\n instance: React.Context<ContextValue<Value>>;\r\n /** The provider component */\r\n Provider: (props: ProviderProps<Value>) => JSX.Element;\r\n /** The selector hook */\r\n useSelect: {\r\n <Selected>(selector: (value: Value) => Selected): Selected;\r\n (): ContextValue<Value>;\r\n };\r\n}\r\n\r\n/**\r\n * @name createContext\r\n * @description - Creates a typed context with additional utilities\r\n * @category Helpers\r\n * @usage high\r\n *\r\n * @template Value - The type of value that will be stored in the context\r\n * @param {Value | undefined} [defaultValue] - Default value for the context\r\n * @param {CreateContextOptions<Value>} [options] - Additional options for context creation\r\n * @returns {CreateContextReturn<Value>} Object containing context utilities and components\r\n *\r\n * @example\r\n * const { useSelect, instance, Provider } = createContext<number>(0);\r\n */\r\nexport const createContext = <Value,>(\r\n defaultValue: Value | undefined = undefined,\r\n options: CreateContextOptions = {}\r\n): CreateContextReturn<Value> => {\r\n const Context = createReactContext<{\r\n value: Value | undefined;\r\n set: (value: Value) => void;\r\n }>({\r\n value: defaultValue,\r\n set: () => {}\r\n });\r\n\r\n Context.displayName = options.name;\r\n\r\n function useSelect(): ContextValue<Value>;\r\n function useSelect<Selected>(selector: (value: Value) => Selected): Selected;\r\n function useSelect<Selected>(selector?: (value: Value) => Selected) {\r\n const context = useContext(Context);\r\n\r\n if (!context && options.strict) {\r\n throw new Error(`Context hook ${options.name} must be used inside a Provider`);\r\n }\r\n\r\n if (!selector) {\r\n return context;\r\n }\r\n\r\n return selector(context.value as Value);\r\n }\r\n\r\n const Provider = ({ children, initialValue }: ProviderProps<Value>) => {\r\n const [profile, setProfile] = useState<Value | undefined>(initialValue ?? defaultValue);\r\n\r\n const value = useMemo(\r\n () => ({\r\n value: profile,\r\n set: setProfile\r\n }),\r\n [profile]\r\n );\r\n\r\n return <Context value={value}>{children}</Context>;\r\n };\r\n\r\n return {\r\n useSelect,\r\n instance: Context,\r\n Provider\r\n } as const;\r\n};\r\n"],"mappings":"sGAuDA,IAAa,GACX,EAAkC,IAAA,GAClC,EAAgC,EAAE,GACH,CAC/B,IAAM,GAAA,EAAA,EAAA,eAGH,CACD,MAAO,EACP,QAAW,GACZ,CAAC,CAEF,EAAQ,YAAc,EAAQ,KAI9B,SAAS,EAAoB,EAAuC,CAClE,IAAM,GAAA,EAAA,EAAA,YAAqB,EAAQ,CAEnC,GAAI,CAAC,GAAW,EAAQ,OACtB,MAAU,MAAM,gBAAgB,EAAQ,KAAK,iCAAiC,CAOhF,OAJK,EAIE,EAAS,EAAQ,MAAe,CAH9B,EAoBX,MAAO,CACL,YACA,SAAU,EACV,UAjBgB,CAAE,WAAU,kBAAyC,CACrE,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAA0C,GAAgB,EAAa,CAUvF,OAAA,EAAA,EAAA,KAAQ,EAAD,CAAgB,OAAA,EAAA,EAAA,cAPd,CACL,MAAO,EACP,IAAK,EACN,EACD,CAAC,EAAQ,CACV,CAE8B,WAAmB,CAAA,EAOnD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),t=require("react"),c=o=>{const e=t.createContext(null);return{Provider:({children:r,params:n})=>{const s=o(...n);return u.jsx(e.Provider,{value:s,children:r})},use:()=>t.useContext(e)}};exports.createContextHook=c;
2
- //# sourceMappingURL=createContextHook.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`),t=require(`react/jsx-runtime`);var n=n=>{let r=(0,e.createContext)(null);return{Provider:({children:e,params:i})=>{let a=n(...i);return(0,t.jsx)(r.Provider,{value:a,children:e})},use:()=>(0,e.useContext)(r)}};exports.createContextHook=n;
2
+ //# sourceMappingURL=createContextHook.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createContextHook.cjs","sources":["../../../../src/helpers/createContextHook/createContextHook.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { createContext, useContext } from 'react';\n\n/**\n * @name createContextHook\n * @description - Hook that runs inside a Provider; Provider accepts params (the hook's arguments). Use when you need a scoped instance per subtree.\n * @category Helpers\n * @usage low\n *\n * @warning - For complex interfaces, we strongly recommend using state management solutions outside of React like createStore, reatom, effector, or zustand instead of context\n *\n * @param useHook - The hook to run in the Provider (e.g. useMediaQuery)\n * @returns { Provider, use } — Provider takes params; use() returns the value and must be used inside Provider\n *\n * @example\n * const { Provider, use } = createContextHook(useMediaQuery);\n * <Provider params={[\"(max-width: 768px)\"]}>\n * <Component />\n * </Provider>\n * const matches = use();\n */\nexport const createContextHook = <Hook extends (...args: any[]) => any>(useHook: Hook) => {\n type Value = ReturnType<Hook>;\n const Context = createContext<Value | null>(null);\n\n const Provider = ({ children, params }: { children: ReactNode; params: Parameters<Hook> }) => {\n const value = useHook(...params) as Value;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n const use = () => useContext(Context);\n\n return { Provider, use };\n};\n"],"names":["createContextHook","useHook","Context","createContext","children","params","value","jsx","useContext"],"mappings":"wIAsBaA,EAA2DC,GAAkB,CAExF,MAAMC,EAAUC,EAAAA,cAA4B,IAAI,EAShD,MAAO,CAAE,SAPQ,CAAC,CAAE,SAAAC,EAAU,OAAAC,KAAgE,CAC5F,MAAMC,EAAQL,EAAQ,GAAGI,CAAM,EAC/B,OAAOE,EAAAA,IAACL,EAAQ,SAAR,CAAiB,MAAAI,EAAe,SAAAF,CAAA,CAAS,CAAA,EAKhC,IAFP,IAAMI,EAAAA,WAAWN,CAAO,CAEjB,CACrB"}
1
+ {"version":3,"file":"createContextHook.cjs","names":[],"sources":["../../../../src/helpers/createContextHook/createContextHook.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { createContext, useContext } from 'react';\n\n/**\n * @name createContextHook\n * @description - Hook that runs inside a Provider; Provider accepts params (the hook's arguments). Use when you need a scoped instance per subtree.\n * @category Helpers\n * @usage low\n *\n * @warning - For complex interfaces, we strongly recommend using state management solutions outside of React like createStore, reatom, effector, or zustand instead of context\n *\n * @param useHook - The hook to run in the Provider (e.g. useMediaQuery)\n * @returns { Provider, use } — Provider takes params; use() returns the value and must be used inside Provider\n *\n * @example\n * const { Provider, use } = createContextHook(useMediaQuery);\n * <Provider params={[\"(max-width: 768px)\"]}>\n * <Component />\n * </Provider>\n * const matches = use();\n */\nexport const createContextHook = <Hook extends (...args: any[]) => any>(useHook: Hook) => {\n type Value = ReturnType<Hook>;\n const Context = createContext<Value | null>(null);\n\n const Provider = ({ children, params }: { children: ReactNode; params: Parameters<Hook> }) => {\n const value = useHook(...params) as Value;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n const use = () => useContext(Context);\n\n return { Provider, use };\n};\n"],"mappings":"sGAsBA,IAAa,EAA2D,GAAkB,CAExF,IAAM,GAAA,EAAA,EAAA,eAAsC,KAAK,CASjD,MAAO,CAAE,UAPS,CAAE,WAAU,YAAgE,CAC5F,IAAM,EAAQ,EAAQ,GAAG,EAAO,CAChC,OAAA,EAAA,EAAA,KAAQ,EAAQ,SAAT,CAAyB,QAAQ,WAA4B,CAAA,EAKnD,SAFb,EAAA,EAAA,YAAuB,EAAQ,CAEb"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),v=()=>{const r=new Map,a=(e,t)=>{r.get(e)?.forEach(n=>n(t))},u=(e,t)=>{const s=e,n=r.get(s);n&&(n.delete(t),n.size||r.delete(s))},i=(e,t)=>{const s=e;return r.has(s)||r.set(s,new Set),r.get(e).add(t),()=>{u(e,t)}};return{push:a,subscribe:i,unsubscribe:u,useSubscribe:(e,t)=>{const[s,n]=c.useState(void 0),o=c.useRef(t);return o.current=t,c.useEffect(()=>{const f=i(e,b=>{n(b),o.current?.(b)});return()=>{f()}},[e]),s}}};exports.createEventEmitter=v;
2
- //# sourceMappingURL=createEventEmitter.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=()=>{let t=new Map,n=(e,n)=>{t.get(e)?.forEach(e=>e(n))},r=(e,n)=>{let r=e,i=t.get(r);i&&(i.delete(n),i.size||t.delete(r))},i=(e,n)=>{let i=e;return t.has(i)||t.set(i,new Set),t.get(e).add(n),()=>{r(e,n)}};return{push:n,subscribe:i,unsubscribe:r,useSubscribe:(t,n)=>{let[r,a]=(0,e.useState)(void 0),o=(0,e.useRef)(n);return o.current=n,(0,e.useEffect)(()=>{let e=i(t,e=>{a(e),o.current?.(e)});return()=>{e()}},[t]),r}}};exports.createEventEmitter=t;
2
+ //# sourceMappingURL=createEventEmitter.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createEventEmitter.cjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n * @usage low\n *\n * @template Events - The type of events and their data\n * @returns {EventEmitterApi<Events>} - Object containing event emitter methods and hook\n *\n * @example\n * const { push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();\n */\nexport const createEventEmitter = <Events extends Record<string, any> = Record<string, any>>() => {\n type ListenerMap = Map<string, Set<(data: any) => void>>;\n const listeners: ListenerMap = new Map();\n\n const push = <Event extends keyof Events>(event: Event, data: Events[Event]) => {\n const eventListeners = listeners.get(event as string);\n eventListeners?.forEach((listener) => listener(data));\n };\n\n const unsubscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n const eventListeners = listeners.get(eventKey);\n if (!eventListeners) return;\n eventListeners.delete(listener);\n if (!eventListeners.size) listeners.delete(eventKey);\n };\n\n const subscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n if (!listeners.has(eventKey)) listeners.set(eventKey, new Set());\n const eventListeners = listeners.get(event as string)!;\n eventListeners.add(listener);\n\n return () => {\n unsubscribe(event, listener);\n };\n };\n\n const useSubscribe = <Event extends keyof Events>(\n event: Event,\n listener?: (data: Events[Event]) => void\n ) => {\n const [data, setData] = useState<Events[Event] | undefined>(undefined);\n const listenerRef = useRef(listener);\n listenerRef.current = listener;\n\n useEffect(() => {\n const onSubscribe = (data: Events[Event]) => {\n setData(data);\n listenerRef.current?.(data);\n };\n\n const unsubscribe = subscribe(event, onSubscribe);\n return () => {\n unsubscribe();\n };\n }, [event]);\n\n return data;\n };\n\n return {\n push,\n subscribe,\n unsubscribe,\n useSubscribe\n };\n};\n"],"names":["createEventEmitter","listeners","push","event","data","listener","unsubscribe","eventKey","eventListeners","subscribe","setData","useState","listenerRef","useRef","useEffect"],"mappings":"yGAcaA,EAAqB,IAAgE,CAEhG,MAAMC,MAA6B,IAE7BC,EAAO,CAA6BC,EAAcC,IAAwB,CACvDH,EAAU,IAAIE,CAAe,GACpC,QAASE,GAAaA,EAASD,CAAI,CAAC,CAAA,EAGhDE,EAAc,CAClBH,EACAE,IACG,CACH,MAAME,EAAWJ,EACXK,EAAiBP,EAAU,IAAIM,CAAQ,EACxCC,IACLA,EAAe,OAAOH,CAAQ,EACzBG,EAAe,MAAMP,EAAU,OAAOM,CAAQ,EAAA,EAG/CE,EAAY,CAChBN,EACAE,IACG,CACH,MAAME,EAAWJ,EACjB,OAAKF,EAAU,IAAIM,CAAQ,KAAa,IAAIA,EAAU,IAAI,GAAK,EACxCN,EAAU,IAAIE,CAAe,EACrC,IAAIE,CAAQ,EAEpB,IAAM,CACXC,EAAYH,EAAOE,CAAQ,CAAA,CAC7B,EA0BF,MAAO,CACL,KAAAH,EACA,UAAAO,EACA,YAAAH,EACA,aA3BmB,CACnBH,EACAE,IACG,CACH,KAAM,CAACD,EAAMM,CAAO,EAAIC,EAAAA,SAAoC,MAAS,EAC/DC,EAAcC,EAAAA,OAAOR,CAAQ,EACnC,OAAAO,EAAY,QAAUP,EAEtBS,EAAAA,UAAU,IAAM,CAMd,MAAMR,EAAcG,EAAUN,EALTC,GAAwB,CAC3CM,EAAQN,CAAI,EACZQ,EAAY,UAAUR,CAAI,CAAA,CAGoB,EAChD,MAAO,IAAM,CACXE,EAAAA,CAAY,CACd,EACC,CAACH,CAAK,CAAC,EAEHC,CAAA,CAOP,CAEJ"}
1
+ {"version":3,"file":"createEventEmitter.cjs","names":[],"sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n * @usage low\n *\n * @template Events - The type of events and their data\n * @returns {EventEmitterApi<Events>} - Object containing event emitter methods and hook\n *\n * @example\n * const { push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();\n */\nexport const createEventEmitter = <Events extends Record<string, any> = Record<string, any>>() => {\n type ListenerMap = Map<string, Set<(data: any) => void>>;\n const listeners: ListenerMap = new Map();\n\n const push = <Event extends keyof Events>(event: Event, data: Events[Event]) => {\n const eventListeners = listeners.get(event as string);\n eventListeners?.forEach((listener) => listener(data));\n };\n\n const unsubscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n const eventListeners = listeners.get(eventKey);\n if (!eventListeners) return;\n eventListeners.delete(listener);\n if (!eventListeners.size) listeners.delete(eventKey);\n };\n\n const subscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n if (!listeners.has(eventKey)) listeners.set(eventKey, new Set());\n const eventListeners = listeners.get(event as string)!;\n eventListeners.add(listener);\n\n return () => {\n unsubscribe(event, listener);\n };\n };\n\n const useSubscribe = <Event extends keyof Events>(\n event: Event,\n listener?: (data: Events[Event]) => void\n ) => {\n const [data, setData] = useState<Events[Event] | undefined>(undefined);\n const listenerRef = useRef(listener);\n listenerRef.current = listener;\n\n useEffect(() => {\n const onSubscribe = (data: Events[Event]) => {\n setData(data);\n listenerRef.current?.(data);\n };\n\n const unsubscribe = subscribe(event, onSubscribe);\n return () => {\n unsubscribe();\n };\n }, [event]);\n\n return data;\n };\n\n return {\n push,\n subscribe,\n unsubscribe,\n useSubscribe\n };\n};\n"],"mappings":"uEAcA,IAAa,MAAqF,CAEhG,IAAM,EAAyB,IAAI,IAE7B,GAAoC,EAAc,IAAwB,CACvD,EAAU,IAAI,EAAgB,EACrC,QAAS,GAAa,EAAS,EAAK,CAAC,EAGjD,GACJ,EACA,IACG,CACH,IAAM,EAAW,EACX,EAAiB,EAAU,IAAI,EAAS,CACzC,IACL,EAAe,OAAO,EAAS,CAC1B,EAAe,MAAM,EAAU,OAAO,EAAS,GAGhD,GACJ,EACA,IACG,CACH,IAAM,EAAW,EAKjB,OAJK,EAAU,IAAI,EAAS,EAAE,EAAU,IAAI,EAAU,IAAI,IAAM,CACzC,EAAU,IAAI,EAAgB,CACtC,IAAI,EAAS,KAEf,CACX,EAAY,EAAO,EAAS,GA2BhC,MAAO,CACL,OACA,YACA,cACA,cA1BA,EACA,IACG,CACH,GAAM,CAAC,EAAM,IAAA,EAAA,EAAA,UAA+C,IAAA,GAAU,CAChE,GAAA,EAAA,EAAA,QAAqB,EAAS,CAepC,MAdA,GAAY,QAAU,GAEtB,EAAA,EAAA,eAAgB,CAMd,IAAM,EAAc,EAAU,EALT,GAAwB,CAC3C,EAAQ,EAAK,CACb,EAAY,UAAU,EAAK,EAGoB,CACjD,UAAa,CACX,GAAa,GAEd,CAAC,EAAM,CAAC,CAEJ,GAQR"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),v=require("../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),d=require("../../hooks/useEvent/useEvent.cjs"),f=s=>e=>{const t=r.useRef(e.value),c=r.useMemo(()=>({value:t,listeners:new Set}),[]);return v.useIsomorphicLayoutEffect(()=>{Object.is(t.current,e.value)||(t.current=e.value,r.startTransition(()=>{c.listeners.forEach(u=>{u(t.current)})}))},[e.value]),r.createElement(s,{value:c},e.children)},m=(s,n,e={})=>{const t=r.useContext(s);if(!t&&e.strict)throw new Error(`Context hook ${e.name} must be used inside a Provider`);const[c,u]=r.useState({selected:n(t.value.current),value:t.value.current}),o=d.useEvent(a=>{u(i=>{if(Object.is(i.value,a))return i;const l=n(a);return Object.is(i.selected,l)?i:{value:a,selected:l}})});return v.useIsomorphicLayoutEffect(()=>(t.listeners.add(o),()=>{t.listeners.delete(o)}),[t.listeners]),c.selected},x=(s=void 0,n={})=>{const e=r.createContext({value:{current:s},listeners:new Set}),t=f(e.Provider);e.displayName=n.name;function c(u){return m(e,u??(o=>o),n)}return{instance:e,Provider:t,useSelector:c}};exports.createReactiveContext=x;
2
- //# sourceMappingURL=createReactiveContext.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs`),t=require(`../../hooks/useEvent/useEvent.cjs`);let n=require(`react`);var r=t=>r=>{let i=(0,n.useRef)(r.value),a=(0,n.useMemo)(()=>({value:i,listeners:new Set}),[]);return e.useIsomorphicLayoutEffect(()=>{Object.is(i.current,r.value)||(i.current=r.value,(0,n.startTransition)(()=>{a.listeners.forEach(e=>{e(i.current)})}))},[r.value]),(0,n.createElement)(t,{value:a},r.children)},i=(r,i,a={})=>{let o=(0,n.useContext)(r);if(!o&&a.strict)throw Error(`Context hook ${a.name} must be used inside a Provider`);let[s,c]=(0,n.useState)({selected:i(o.value.current),value:o.value.current}),l=t.useEvent(e=>{c(t=>{if(Object.is(t.value,e))return t;let n=i(e);return Object.is(t.selected,n)?t:{value:e,selected:n}})});return e.useIsomorphicLayoutEffect(()=>(o.listeners.add(l),()=>{o.listeners.delete(l)}),[o.listeners]),s.selected},a=(e=void 0,t={})=>{let a=(0,n.createContext)({value:{current:e},listeners:new Set}),o=r(a.Provider);a.displayName=t.name;function s(e){return i(a,e??(e=>e),t)}return{instance:a,Provider:o,useSelector:s}};exports.createReactiveContext=a;
2
+ //# sourceMappingURL=createReactiveContext.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createReactiveContext.cjs","sources":["../../../../src/helpers/createReactiveContext/createReactiveContext.ts"],"sourcesContent":["import type { Context, FC, Provider, ProviderProps, RefObject } from 'react';\n\nimport {\n createContext,\n createElement,\n startTransition,\n useContext,\n useMemo,\n useRef,\n useState\n} from 'react';\n\nimport { useEvent, useIsomorphicLayoutEffect } from '@/hooks';\n\n/** The create reactive context options type */\nexport interface CreateReactiveContextOptions {\n /** Display name for the context (useful for debugging) */\n name?: string;\n /** Whether to throw an error if context is used outside of Provider */\n strict?: boolean;\n}\n\n/** The create reactive context return type */\nexport interface CreateReactiveContextReturn<Value> {\n /** The context instance */\n instance: Context<ReactiveContextValue<Value>>;\n /** The Provider component for the context */\n Provider: Provider<Value>;\n /** A hook to select a part of the context state */\n useSelector: <Selected>(selector?: (state: Value) => Selected) => Selected;\n}\n\ntype ContextListener<Value> = (value: Value) => void;\n\ninterface ReactiveContextValue<Value> {\n /** The listeners for the context */\n listeners: Set<ContextListener<Value>>;\n /** The value for the context */\n value: RefObject<Value>;\n}\n\nconst createProvider = <Value>(originalProvider: Provider<ReactiveContextValue<Value>>) => {\n const Provider: FC<ProviderProps<Value>> = (props) => {\n const valueRef = useRef(props.value);\n const contextValue = useMemo<ReactiveContextValue<Value>>(\n () => ({\n value: valueRef,\n listeners: new Set()\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!Object.is(valueRef.current, props.value)) {\n valueRef.current = props.value;\n\n startTransition(() => {\n contextValue.listeners.forEach((listener) => {\n listener(valueRef.current);\n });\n });\n }\n }, [props.value]);\n\n return createElement(originalProvider, { value: contextValue }, props.children);\n };\n\n return Provider as unknown as Provider<ReactiveContextValue<Value>>;\n};\n\nconst createReactiveContextSelector = <Value, Selected>(\n Context: Context<ReactiveContextValue<Value>>,\n selector: (state: Value) => Selected,\n options: CreateReactiveContextOptions = {}\n) => {\n const context = useContext(Context);\n\n if (!context && options.strict) {\n throw new Error(`Context hook ${options.name} must be used inside a Provider`);\n }\n\n const [value, setValue] = useState({\n selected: selector(context.value.current),\n value: context.value.current\n });\n\n const dispatch = useEvent((newValue: Value) => {\n setValue((prevValue) => {\n if (Object.is(prevValue.value, newValue)) return prevValue;\n\n const newSelected = selector(newValue);\n if (Object.is(prevValue.selected, newSelected)) return prevValue;\n\n return { value: newValue, selected: newSelected };\n });\n });\n\n useIsomorphicLayoutEffect(() => {\n context.listeners.add(dispatch);\n return () => {\n context.listeners.delete(dispatch);\n };\n }, [context.listeners]);\n\n return value.selected;\n};\n\n/**\n * @name createReactiveContext\n * @description - Creates a typed context selector with optimized updates for state selection\n * @category Helpers\n * @usage low\n *\n * @warning - For complex interfaces, we strongly recommend using state management solutions outside of React like createStore, reatom, effector, or zustand instead of context\n *\n * @template Value - The type of value that will be stored in the context\n * @param {Value | undefined} [defaultValue] - Default value for the context\n * @param {CreateReactiveContextOptions<Value>} [options] - Additional options for context creation\n * @returns {CreateReactiveContextReturn<Value>} Object containing context utilities and components\n *\n * @example\n * const { Provider, useSelector, instance } = createReactiveContext<number>(0);\n */\nexport const createReactiveContext = <Value extends Record<string, any>>(\n defaultValue: Value | undefined = undefined,\n options: CreateReactiveContextOptions = {}\n) => {\n const Context = createContext<ReactiveContextValue<Value>>({\n value: { current: defaultValue as Value },\n listeners: new Set()\n });\n\n const Provider = createProvider(Context.Provider) as unknown as Provider<Value>;\n\n Context.displayName = options.name;\n\n function useSelector(): Value;\n function useSelector<SelectedValue>(selector: (state: Value) => SelectedValue): SelectedValue;\n function useSelector<SelectedValue>(selector?: (state: Value) => SelectedValue) {\n return createReactiveContextSelector(\n Context as unknown as Context<ReactiveContextValue<Value>>,\n selector ?? ((state) => state as unknown as SelectedValue),\n options\n );\n }\n\n return { instance: Context, Provider, useSelector };\n};\n"],"names":["createProvider","originalProvider","props","valueRef","useRef","contextValue","useMemo","useIsomorphicLayoutEffect","startTransition","listener","createElement","createReactiveContextSelector","Context","selector","options","context","useContext","value","setValue","useState","dispatch","useEvent","newValue","prevValue","newSelected","createReactiveContext","defaultValue","createContext","Provider","useSelector","state"],"mappings":"yOAyCMA,EAAyBC,GACeC,GAAU,CACpD,MAAMC,EAAWC,EAAAA,OAAOF,EAAM,KAAK,EAC7BG,EAAeC,EAAAA,QACnB,KAAO,CACL,MAAOH,EACP,cAAe,GAAI,GAErB,CAAA,CAAC,EAGHI,OAAAA,EAAAA,0BAA0B,IAAM,CACzB,OAAO,GAAGJ,EAAS,QAASD,EAAM,KAAK,IAC1CC,EAAS,QAAUD,EAAM,MAEzBM,EAAAA,gBAAgB,IAAM,CACpBH,EAAa,UAAU,QAASI,GAAa,CAC3CA,EAASN,EAAS,OAAO,CAAA,CAC1B,CAAA,CACF,EACH,EACC,CAACD,EAAM,KAAK,CAAC,EAETQ,EAAAA,cAAcT,EAAkB,CAAE,MAAOI,CAAA,EAAgBH,EAAM,QAAQ,CAAA,EAM5ES,EAAgC,CACpCC,EACAC,EACAC,EAAwC,CAAA,IACrC,CACH,MAAMC,EAAUC,EAAAA,WAAWJ,CAAO,EAElC,GAAI,CAACG,GAAWD,EAAQ,OACtB,MAAM,IAAI,MAAM,gBAAgBA,EAAQ,IAAI,iCAAiC,EAG/E,KAAM,CAACG,EAAOC,CAAQ,EAAIC,WAAS,CACjC,SAAUN,EAASE,EAAQ,MAAM,OAAO,EACxC,MAAOA,EAAQ,MAAM,OAAA,CACtB,EAEKK,EAAWC,WAAUC,GAAoB,CAC7CJ,EAAUK,GAAc,CACtB,GAAI,OAAO,GAAGA,EAAU,MAAOD,CAAQ,EAAG,OAAOC,EAEjD,MAAMC,EAAcX,EAASS,CAAQ,EACrC,OAAI,OAAO,GAAGC,EAAU,SAAUC,CAAW,EAAUD,EAEhD,CAAE,MAAOD,EAAU,SAAUE,CAAA,CAAY,CACjD,CAAA,CACF,EAEDjB,OAAAA,EAAAA,0BAA0B,KACxBQ,EAAQ,UAAU,IAAIK,CAAQ,EACvB,IAAM,CACXL,EAAQ,UAAU,OAAOK,CAAQ,CAAA,GAElC,CAACL,EAAQ,SAAS,CAAC,EAEfE,EAAM,QACf,EAkBaQ,EAAwB,CACnCC,EAAkC,OAClCZ,EAAwC,CAAA,IACrC,CACH,MAAMF,EAAUe,EAAAA,cAA2C,CACzD,MAAO,CAAE,QAASD,CAAA,EAClB,cAAe,GAAI,CACpB,EAEKE,EAAW5B,EAAeY,EAAQ,QAAQ,EAEhDA,EAAQ,YAAcE,EAAQ,KAI9B,SAASe,EAA2BhB,EAA4C,CAC9E,OAAOF,EACLC,EACAC,IAAciB,GAAUA,GACxBhB,CAAA,CACF,CAGF,MAAO,CAAE,SAAUF,EAAS,SAAAgB,EAAU,YAAAC,CAAA,CACxC"}
1
+ {"version":3,"file":"createReactiveContext.cjs","names":[],"sources":["../../../../src/helpers/createReactiveContext/createReactiveContext.ts"],"sourcesContent":["import type { Context, FC, Provider, ProviderProps, RefObject } from 'react';\n\nimport {\n createContext,\n createElement,\n startTransition,\n useContext,\n useMemo,\n useRef,\n useState\n} from 'react';\n\nimport { useEvent, useIsomorphicLayoutEffect } from '@/hooks';\n\n/** The create reactive context options type */\nexport interface CreateReactiveContextOptions {\n /** Display name for the context (useful for debugging) */\n name?: string;\n /** Whether to throw an error if context is used outside of Provider */\n strict?: boolean;\n}\n\n/** The create reactive context return type */\nexport interface CreateReactiveContextReturn<Value> {\n /** The context instance */\n instance: Context<ReactiveContextValue<Value>>;\n /** The Provider component for the context */\n Provider: Provider<Value>;\n /** A hook to select a part of the context state */\n useSelector: <Selected>(selector?: (state: Value) => Selected) => Selected;\n}\n\ntype ContextListener<Value> = (value: Value) => void;\n\ninterface ReactiveContextValue<Value> {\n /** The listeners for the context */\n listeners: Set<ContextListener<Value>>;\n /** The value for the context */\n value: RefObject<Value>;\n}\n\nconst createProvider = <Value>(originalProvider: Provider<ReactiveContextValue<Value>>) => {\n const Provider: FC<ProviderProps<Value>> = (props) => {\n const valueRef = useRef(props.value);\n const contextValue = useMemo<ReactiveContextValue<Value>>(\n () => ({\n value: valueRef,\n listeners: new Set()\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!Object.is(valueRef.current, props.value)) {\n valueRef.current = props.value;\n\n startTransition(() => {\n contextValue.listeners.forEach((listener) => {\n listener(valueRef.current);\n });\n });\n }\n }, [props.value]);\n\n return createElement(originalProvider, { value: contextValue }, props.children);\n };\n\n return Provider as unknown as Provider<ReactiveContextValue<Value>>;\n};\n\nconst createReactiveContextSelector = <Value, Selected>(\n Context: Context<ReactiveContextValue<Value>>,\n selector: (state: Value) => Selected,\n options: CreateReactiveContextOptions = {}\n) => {\n const context = useContext(Context);\n\n if (!context && options.strict) {\n throw new Error(`Context hook ${options.name} must be used inside a Provider`);\n }\n\n const [value, setValue] = useState({\n selected: selector(context.value.current),\n value: context.value.current\n });\n\n const dispatch = useEvent((newValue: Value) => {\n setValue((prevValue) => {\n if (Object.is(prevValue.value, newValue)) return prevValue;\n\n const newSelected = selector(newValue);\n if (Object.is(prevValue.selected, newSelected)) return prevValue;\n\n return { value: newValue, selected: newSelected };\n });\n });\n\n useIsomorphicLayoutEffect(() => {\n context.listeners.add(dispatch);\n return () => {\n context.listeners.delete(dispatch);\n };\n }, [context.listeners]);\n\n return value.selected;\n};\n\n/**\n * @name createReactiveContext\n * @description - Creates a typed context selector with optimized updates for state selection\n * @category Helpers\n * @usage low\n *\n * @warning - For complex interfaces, we strongly recommend using state management solutions outside of React like createStore, reatom, effector, or zustand instead of context\n *\n * @template Value - The type of value that will be stored in the context\n * @param {Value | undefined} [defaultValue] - Default value for the context\n * @param {CreateReactiveContextOptions<Value>} [options] - Additional options for context creation\n * @returns {CreateReactiveContextReturn<Value>} Object containing context utilities and components\n *\n * @example\n * const { Provider, useSelector, instance } = createReactiveContext<number>(0);\n */\nexport const createReactiveContext = <Value extends Record<string, any>>(\n defaultValue: Value | undefined = undefined,\n options: CreateReactiveContextOptions = {}\n) => {\n const Context = createContext<ReactiveContextValue<Value>>({\n value: { current: defaultValue as Value },\n listeners: new Set()\n });\n\n const Provider = createProvider(Context.Provider) as unknown as Provider<Value>;\n\n Context.displayName = options.name;\n\n function useSelector(): Value;\n function useSelector<SelectedValue>(selector: (state: Value) => SelectedValue): SelectedValue;\n function useSelector<SelectedValue>(selector?: (state: Value) => SelectedValue) {\n return createReactiveContextSelector(\n Context as unknown as Context<ReactiveContextValue<Value>>,\n selector ?? ((state) => state as unknown as SelectedValue),\n options\n );\n }\n\n return { instance: Context, Provider, useSelector };\n};\n"],"mappings":"6MAyCA,IAAM,EAAyB,GACe,GAAU,CACpD,IAAM,GAAA,EAAA,EAAA,QAAkB,EAAM,MAAM,CAC9B,GAAA,EAAA,EAAA,cACG,CACL,MAAO,EACP,UAAW,IAAI,IAChB,EACD,EAAE,CACH,CAcD,OAZA,EAAA,8BAAgC,CACzB,OAAO,GAAG,EAAS,QAAS,EAAM,MAAM,GAC3C,EAAS,QAAU,EAAM,OAEzB,EAAA,EAAA,qBAAsB,CACpB,EAAa,UAAU,QAAS,GAAa,CAC3C,EAAS,EAAS,QAAQ,EAC1B,EACF,GAEH,CAAC,EAAM,MAAM,CAAC,EAEjB,EAAA,EAAA,eAAqB,EAAkB,CAAE,MAAO,EAAc,CAAE,EAAM,SAAS,EAM7E,GACJ,EACA,EACA,EAAwC,EAAE,GACvC,CACH,IAAM,GAAA,EAAA,EAAA,YAAqB,EAAQ,CAEnC,GAAI,CAAC,GAAW,EAAQ,OACtB,MAAU,MAAM,gBAAgB,EAAQ,KAAK,iCAAiC,CAGhF,GAAM,CAAC,EAAO,IAAA,EAAA,EAAA,UAAqB,CACjC,SAAU,EAAS,EAAQ,MAAM,QAAQ,CACzC,MAAO,EAAQ,MAAM,QACtB,CAAC,CAEI,EAAW,EAAA,SAAU,GAAoB,CAC7C,EAAU,GAAc,CACtB,GAAI,OAAO,GAAG,EAAU,MAAO,EAAS,CAAE,OAAO,EAEjD,IAAM,EAAc,EAAS,EAAS,CAGtC,OAFI,OAAO,GAAG,EAAU,SAAU,EAAY,CAAS,EAEhD,CAAE,MAAO,EAAU,SAAU,EAAa,EACjD,EACF,CASF,OAPA,EAAA,+BACE,EAAQ,UAAU,IAAI,EAAS,KAClB,CACX,EAAQ,UAAU,OAAO,EAAS,GAEnC,CAAC,EAAQ,UAAU,CAAC,CAEhB,EAAM,UAmBF,GACX,EAAkC,IAAA,GAClC,EAAwC,EAAE,GACvC,CACH,IAAM,GAAA,EAAA,EAAA,eAAqD,CACzD,MAAO,CAAE,QAAS,EAAuB,CACzC,UAAW,IAAI,IAChB,CAAC,CAEI,EAAW,EAAe,EAAQ,SAAS,CAEjD,EAAQ,YAAc,EAAQ,KAI9B,SAAS,EAA2B,EAA4C,CAC9E,OAAO,EACL,EACA,IAAc,GAAU,GACxB,EACD,CAGH,MAAO,CAAE,SAAU,EAAS,WAAU,cAAa"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),s=require("react"),a=require("../../_virtual/client.cjs"),i=n=>{const e=document.createElement("div"),t=a.clientExports.createRoot(e);return t.render(n),()=>{t.unmount(),e.remove()}},m=n=>{if(typeof window>"u"){const t=(...r)=>n(...r);return t.useShared=t,t}const e={state:void 0,listeners:new Set,mounted:!1,unmount:void 0};return function(...r){return e.mounted||(e.mounted=!0,queueMicrotask(()=>{const o=()=>{const u=n(...r);return s.useEffect(()=>{e.state=u,e.listeners.forEach(c=>c())},[u]),null};e.unmount=i(d.jsx(o,{}))})),s.useSyncExternalStore(o=>(e.listeners.add(o),()=>{e.listeners.delete(o),e.listeners.size<0&&e.unmount&&(e.unmount(),e.unmount=void 0,e.state=void 0,e.mounted=!1)}),()=>e.state,()=>e.state)}};exports.createSharedHook=m;exports.mount=i;
2
- //# sourceMappingURL=createSharedHook.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`),t=require(`react/jsx-runtime`),n=require(`react-dom/client`);var r=e=>{let t=document.createElement(`div`),r=(0,n.createRoot)(t);return r.render(e),()=>{r.unmount(),t.remove()}},i=n=>{if(typeof window>`u`){let e=(...e)=>n(...e);return e.useShared=e,e}let i={state:void 0,listeners:new Set,mounted:!1,unmount:void 0};return function(...a){return i.mounted||(i.mounted=!0,queueMicrotask(()=>{i.unmount=r((0,t.jsx)(()=>{let t=n(...a);return(0,e.useEffect)(()=>{i.state=t,i.listeners.forEach(e=>e())},[t]),null},{}))})),(0,e.useSyncExternalStore)(e=>(i.listeners.add(e),()=>{i.listeners.delete(e),i.listeners.size<0&&i.unmount&&(i.unmount(),i.unmount=void 0,i.state=void 0,i.mounted=!1)}),()=>i.state,()=>i.state)}};exports.createSharedHook=i,exports.mount=r;
2
+ //# sourceMappingURL=createSharedHook.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createSharedHook.cjs","sources":["../../../../src/helpers/createSharedHook/createSharedHook.tsx"],"sourcesContent":["import { useEffect, useSyncExternalStore } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nexport const mount = (component: React.ReactNode) => {\n const container = document.createElement('div');\n const root = createRoot(container);\n root.render(component);\n return () => {\n root.unmount();\n container.remove();\n };\n};\n\n/**\n * @name createSharedHook\n * @description - One shared instance of the hook globally. First subscriber's args are used; when subscribers hit zero, the runner unmounts.\n * @category Helpers\n * @usage low\n *\n * @warning - For complex interfaces, we strongly recommend using state management solutions outside of React like createStore, reatom, effector, or zustand instead of context\n *\n * @template Hook - The hook to create a shared instance of\n * @param {Hook} useHook - The hook to create a shared instance of\n * @returns {Hook & { useShared: typeof useShared }} - The shared hook\n *\n * @example\n * const useSharedMediaQuery = createSharedHook(useMediaQuery);\n * const matches = useSharedMediaQuery(\"(max-width: 768px)\");\n */\nexport const createSharedHook = <Hook extends (...args: any[]) => any>(useHook: Hook) => {\n if (typeof window === 'undefined') {\n const fn = (...args: Parameters<Hook>) => useHook(...args);\n fn.useShared = fn;\n return fn;\n }\n\n type Value = ReturnType<Hook>;\n const store = {\n state: undefined as Value | undefined,\n listeners: new Set<() => void>(),\n mounted: false,\n unmount: undefined as (() => void) | undefined\n };\n\n return function useShared(...args: Parameters<Hook>): Value {\n if (!store.mounted) {\n store.mounted = true;\n queueMicrotask(() => {\n const HookContainer = () => {\n const value = useHook(...args) as Value;\n useEffect(() => {\n store.state = value;\n store.listeners.forEach((l) => l());\n }, [value]);\n return null;\n };\n\n store.unmount = mount(<HookContainer />);\n });\n }\n\n return useSyncExternalStore(\n (callback) => {\n store.listeners.add(callback);\n return () => {\n store.listeners.delete(callback);\n if (store.listeners.size < 0 && store.unmount) {\n store.unmount();\n store.unmount = undefined;\n store.state = undefined;\n store.mounted = false;\n }\n };\n },\n () => store.state,\n () => store.state\n ) as Value;\n };\n};\n"],"names":["mount","component","container","root","createRoot","createSharedHook","useHook","fn","args","store","HookContainer","value","useEffect","l","jsx","useSyncExternalStore","callback"],"mappings":"+KAGaA,EAASC,GAA+B,CACnD,MAAMC,EAAY,SAAS,cAAc,KAAK,EACxCC,EAAOC,EAAAA,cAAAA,WAAWF,CAAS,EACjC,OAAAC,EAAK,OAAOF,CAAS,EACd,IAAM,CACXE,EAAK,QAAA,EACLD,EAAU,OAAA,CAAO,CAErB,EAkBaG,EAA0DC,GAAkB,CACvF,GAAI,OAAO,OAAW,IAAa,CACjC,MAAMC,EAAK,IAAIC,IAA2BF,EAAQ,GAAGE,CAAI,EACzD,OAAAD,EAAG,UAAYA,EACRA,CAAA,CAIT,MAAME,EAAQ,CACZ,MAAO,OACP,cAAe,IACf,QAAS,GACT,QAAS,MAAA,EAGX,OAAO,YAAsBD,EAA+B,CAC1D,OAAKC,EAAM,UACTA,EAAM,QAAU,GAChB,eAAe,IAAM,CACnB,MAAMC,EAAgB,IAAM,CAC1B,MAAMC,EAAQL,EAAQ,GAAGE,CAAI,EAC7BI,OAAAA,EAAAA,UAAU,IAAM,CACdH,EAAM,MAAQE,EACdF,EAAM,UAAU,QAASI,GAAMA,GAAG,CAAA,EACjC,CAACF,CAAK,CAAC,EACH,IAAA,EAGTF,EAAM,QAAUT,EAAMc,EAAAA,IAACJ,EAAA,CAAA,CAAc,CAAE,CAAA,CACxC,GAGIK,EAAAA,qBACJC,IACCP,EAAM,UAAU,IAAIO,CAAQ,EACrB,IAAM,CACXP,EAAM,UAAU,OAAOO,CAAQ,EAC3BP,EAAM,UAAU,KAAO,GAAKA,EAAM,UACpCA,EAAM,QAAA,EACNA,EAAM,QAAU,OAChBA,EAAM,MAAQ,OACdA,EAAM,QAAU,GAClB,GAGJ,IAAMA,EAAM,MACZ,IAAMA,EAAM,KAAA,CACd,CAEJ"}
1
+ {"version":3,"file":"createSharedHook.cjs","names":[],"sources":["../../../../src/helpers/createSharedHook/createSharedHook.tsx"],"sourcesContent":["import { useEffect, useSyncExternalStore } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nexport const mount = (component: React.ReactNode) => {\n const container = document.createElement('div');\n const root = createRoot(container);\n root.render(component);\n return () => {\n root.unmount();\n container.remove();\n };\n};\n\n/**\n * @name createSharedHook\n * @description - One shared instance of the hook globally. First subscriber's args are used; when subscribers hit zero, the runner unmounts.\n * @category Helpers\n * @usage low\n *\n * @warning - For complex interfaces, we strongly recommend using state management solutions outside of React like createStore, reatom, effector, or zustand instead of context\n *\n * @template Hook - The hook to create a shared instance of\n * @param {Hook} useHook - The hook to create a shared instance of\n * @returns {Hook & { useShared: typeof useShared }} - The shared hook\n *\n * @example\n * const useSharedMediaQuery = createSharedHook(useMediaQuery);\n * const matches = useSharedMediaQuery(\"(max-width: 768px)\");\n */\nexport const createSharedHook = <Hook extends (...args: any[]) => any>(useHook: Hook) => {\n if (typeof window === 'undefined') {\n const fn = (...args: Parameters<Hook>) => useHook(...args);\n fn.useShared = fn;\n return fn;\n }\n\n type Value = ReturnType<Hook>;\n const store = {\n state: undefined as Value | undefined,\n listeners: new Set<() => void>(),\n mounted: false,\n unmount: undefined as (() => void) | undefined\n };\n\n return function useShared(...args: Parameters<Hook>): Value {\n if (!store.mounted) {\n store.mounted = true;\n queueMicrotask(() => {\n const HookContainer = () => {\n const value = useHook(...args) as Value;\n useEffect(() => {\n store.state = value;\n store.listeners.forEach((l) => l());\n }, [value]);\n return null;\n };\n\n store.unmount = mount(<HookContainer />);\n });\n }\n\n return useSyncExternalStore(\n (callback) => {\n store.listeners.add(callback);\n return () => {\n store.listeners.delete(callback);\n if (store.listeners.size < 0 && store.unmount) {\n store.unmount();\n store.unmount = undefined;\n store.state = undefined;\n store.mounted = false;\n }\n };\n },\n () => store.state,\n () => store.state\n ) as Value;\n };\n};\n"],"mappings":"oIAGA,IAAa,EAAS,GAA+B,CACnD,IAAM,EAAY,SAAS,cAAc,MAAM,CACzC,GAAA,EAAA,EAAA,YAAkB,EAAU,CAElC,OADA,EAAK,OAAO,EAAU,KACT,CACX,EAAK,SAAS,CACd,EAAU,QAAQ,GAoBT,EAA0D,GAAkB,CACvF,GAAI,OAAO,OAAW,IAAa,CACjC,IAAM,GAAM,GAAG,IAA2B,EAAQ,GAAG,EAAK,CAE1D,MADA,GAAG,UAAY,EACR,EAIT,IAAM,EAAQ,CACZ,MAAO,IAAA,GACP,UAAW,IAAI,IACf,QAAS,GACT,QAAS,IAAA,GACV,CAED,OAAO,SAAmB,GAAG,EAA+B,CAiB1D,OAhBK,EAAM,UACT,EAAM,QAAU,GAChB,mBAAqB,CAUnB,EAAM,QAAU,GAAA,EAAA,EAAA,SATY,CAC1B,IAAM,EAAQ,EAAQ,GAAG,EAAK,CAK9B,OAJA,EAAA,EAAA,eAAgB,CACd,EAAM,MAAQ,EACd,EAAM,UAAU,QAAS,GAAM,GAAG,CAAC,EAClC,CAAC,EAAM,CAAC,CACJ,MAGa,EAAiB,CAAA,CAAC,EACxC,GAGJ,EAAA,EAAA,sBACG,IACC,EAAM,UAAU,IAAI,EAAS,KAChB,CACX,EAAM,UAAU,OAAO,EAAS,CAC5B,EAAM,UAAU,KAAO,GAAK,EAAM,UACpC,EAAM,SAAS,CACf,EAAM,QAAU,IAAA,GAChB,EAAM,MAAQ,IAAA,GACd,EAAM,QAAU,UAIhB,EAAM,UACN,EAAM,MACb"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react"),b=s=>{let e,o;const i=new Set,c=t=>{const n=typeof t=="function"?t(e):t;if(!Object.is(n,e)){const f=e;e=typeof n!="object"||n===null||Array.isArray(n)?n:Object.assign({},e,n),i.forEach(l=>l(e,f))}},a=t=>(i.add(t),()=>i.delete(t)),r=()=>e,u=()=>o;typeof s=="function"?o=e=s(c,r):o=e=s;function S(t){return y.useSyncExternalStore(a,()=>t?t(r()):r(),()=>t?t(u()):u())}return{set:c,get:r,getInitial:u,use:S,subscribe:a}};exports.createStore=b;
2
- //# sourceMappingURL=createStore.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=t=>{let n,r,i=new Set,a=e=>{let t=typeof e==`function`?e(n):e;if(!Object.is(t,n)){let e=n;n=typeof t!=`object`||!t||Array.isArray(t)?t:Object.assign({},n,t),i.forEach(t=>t(n,e))}},o=e=>(i.add(e),()=>i.delete(e)),s=()=>n,c=()=>r;r=n=typeof t==`function`?t(a,s):t;function l(t){return(0,e.useSyncExternalStore)(o,()=>t?t(s()):s(),()=>t?t(c()):c())}return{set:a,get:s,getInitial:c,use:l,subscribe:o}};exports.createStore=t;
2
+ //# sourceMappingURL=createStore.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.cjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype StoreSetAction<Value> = ((prev: Value) => Partial<Value>) | Partial<Value>;\n\ntype StoreListener<Value> = (state: Value, prevState: Value) => void;\n\ntype StoreCreator<Value> = (\n set: (action: StoreSetAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n get: () => Value;\n getInitial: () => Value;\n set: (action: StoreSetAction<Value>) => void;\n subscribe: (listener: StoreListener<Value>) => () => void;\n\n use: (() => Value) &\n (<Selected>(selector: (state: Value) => Selected) => Selected) &\n (<Selected>(selector?: (state: Value) => Selected) => Selected | Value);\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n * @usage medium\n *\n * @template Value - The type of the store state\n * @param {StateCreator<Value>} createState - Function that initializes the store state\n * @returns {StoreApi<Value>} - Object containing store methods and hook for accessing state\n *\n * @example\n * const { set, get, use, subscribe } = createStore((set) => ({\n * count: 0,\n * increment: () => set(state => ({ count: state.count + 1 }))\n * }));\n */\nexport const createStore = <Value>(createState: StoreCreator<Value> | Value): StoreApi<Value> => {\n let state: Value;\n let initialState: Value;\n const listeners: Set<StoreListener<Value>> = new Set();\n\n const setState: StoreApi<Value>['set'] = (action: StoreSetAction<Value>) => {\n const nextState = typeof action === 'function' ? action(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = (\n typeof nextState !== 'object' || nextState === null || Array.isArray(nextState)\n ? nextState\n : Object.assign({}, state, nextState)\n ) as Value;\n\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const subscribe = (listener: StoreListener<Value>) => {\n listeners.add(listener);\n\n return () => listeners.delete(listener);\n };\n\n const getState = () => state;\n const getInitialState = () => initialState;\n\n if (typeof createState === 'function') {\n initialState = state = (createState as StoreCreator<Value>)(setState, getState);\n } else {\n initialState = state = createState;\n }\n\n function useStore(): Value;\n function useStore<Selected>(selector: (state: Value) => Selected): Selected;\n function useStore<Selected>(selector?: (state: Value) => Selected): Selected | Value {\n return useSyncExternalStore(\n subscribe,\n () => (selector ? selector(getState()) : getState()),\n () => (selector ? selector(getInitialState()) : getInitialState())\n );\n }\n\n return {\n set: setState,\n get: getState,\n getInitial: getInitialState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","initialState","listeners","setState","action","nextState","prevState","listener","subscribe","getState","getInitialState","useStore","selector","useSyncExternalStore"],"mappings":"yGAsCaA,EAAsBC,GAA8D,CAC/F,IAAIC,EACAC,EACJ,MAAMC,MAA2C,IAE3CC,EAAoCC,GAAkC,CAC1E,MAAMC,EAAY,OAAOD,GAAW,WAAaA,EAAOJ,CAAK,EAAII,EAEjE,GAAI,CAAC,OAAO,GAAGC,EAAWL,CAAK,EAAG,CAChC,MAAMM,EAAYN,EAClBA,EACE,OAAOK,GAAc,UAAYA,IAAc,MAAQ,MAAM,QAAQA,CAAS,EAC1EA,EACA,OAAO,OAAO,CAAA,EAAIL,EAAOK,CAAS,EAGxCH,EAAU,QAASK,GAAaA,EAASP,EAAOM,CAAS,CAAC,CAAA,CAC5D,EAGIE,EAAaD,IACjBL,EAAU,IAAIK,CAAQ,EAEf,IAAML,EAAU,OAAOK,CAAQ,GAGlCE,EAAW,IAAMT,EACjBU,EAAkB,IAAMT,EAE1B,OAAOF,GAAgB,WACzBE,EAAeD,EAASD,EAAoCI,EAAUM,CAAQ,EAE9ER,EAAeD,EAAQD,EAKzB,SAASY,EAAmBC,EAAyD,CACnF,OAAOC,EAAAA,qBACLL,EACA,IAAOI,EAAWA,EAASH,EAAA,CAAU,EAAIA,EAAA,EACzC,IAAOG,EAAWA,EAASF,EAAA,CAAiB,EAAIA,EAAA,CAAgB,CAClE,CAGF,MAAO,CACL,IAAKP,EACL,IAAKM,EACL,WAAYC,EACZ,IAAKC,EACL,UAAAH,CAAA,CAEJ"}
1
+ {"version":3,"file":"createStore.cjs","names":[],"sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype StoreSetAction<Value> = ((prev: Value) => Partial<Value>) | Partial<Value>;\n\ntype StoreListener<Value> = (state: Value, prevState: Value) => void;\n\ntype StoreCreator<Value> = (\n set: (action: StoreSetAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n get: () => Value;\n getInitial: () => Value;\n set: (action: StoreSetAction<Value>) => void;\n subscribe: (listener: StoreListener<Value>) => () => void;\n\n use: (() => Value) &\n (<Selected>(selector: (state: Value) => Selected) => Selected) &\n (<Selected>(selector?: (state: Value) => Selected) => Selected | Value);\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n * @usage medium\n *\n * @template Value - The type of the store state\n * @param {StateCreator<Value>} createState - Function that initializes the store state\n * @returns {StoreApi<Value>} - Object containing store methods and hook for accessing state\n *\n * @example\n * const { set, get, use, subscribe } = createStore((set) => ({\n * count: 0,\n * increment: () => set(state => ({ count: state.count + 1 }))\n * }));\n */\nexport const createStore = <Value>(createState: StoreCreator<Value> | Value): StoreApi<Value> => {\n let state: Value;\n let initialState: Value;\n const listeners: Set<StoreListener<Value>> = new Set();\n\n const setState: StoreApi<Value>['set'] = (action: StoreSetAction<Value>) => {\n const nextState = typeof action === 'function' ? action(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = (\n typeof nextState !== 'object' || nextState === null || Array.isArray(nextState)\n ? nextState\n : Object.assign({}, state, nextState)\n ) as Value;\n\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const subscribe = (listener: StoreListener<Value>) => {\n listeners.add(listener);\n\n return () => listeners.delete(listener);\n };\n\n const getState = () => state;\n const getInitialState = () => initialState;\n\n if (typeof createState === 'function') {\n initialState = state = (createState as StoreCreator<Value>)(setState, getState);\n } else {\n initialState = state = createState;\n }\n\n function useStore(): Value;\n function useStore<Selected>(selector: (state: Value) => Selected): Selected;\n function useStore<Selected>(selector?: (state: Value) => Selected): Selected | Value {\n return useSyncExternalStore(\n subscribe,\n () => (selector ? selector(getState()) : getState()),\n () => (selector ? selector(getInitialState()) : getInitialState())\n );\n }\n\n return {\n set: setState,\n get: getState,\n getInitial: getInitialState,\n use: useStore,\n subscribe\n };\n};\n"],"mappings":"uEAsCA,IAAa,EAAsB,GAA8D,CAC/F,IAAI,EACA,EACE,EAAuC,IAAI,IAE3C,EAAoC,GAAkC,CAC1E,IAAM,EAAY,OAAO,GAAW,WAAa,EAAO,EAAM,CAAG,EAEjE,GAAI,CAAC,OAAO,GAAG,EAAW,EAAM,CAAE,CAChC,IAAM,EAAY,EAClB,EACE,OAAO,GAAc,WAAY,GAAsB,MAAM,QAAQ,EAAU,CAC3E,EACA,OAAO,OAAO,EAAE,CAAE,EAAO,EAAU,CAGzC,EAAU,QAAS,GAAa,EAAS,EAAO,EAAU,CAAC,GAIzD,EAAa,IACjB,EAAU,IAAI,EAAS,KAEV,EAAU,OAAO,EAAS,EAGnC,MAAiB,EACjB,MAAwB,EAE9B,AAGE,EAHF,AAGiB,EAHb,OAAO,GAAgB,WACD,EAAoC,EAAU,EAAS,CAExD,EAKzB,SAAS,EAAmB,EAAyD,CACnF,OAAA,EAAA,EAAA,sBACE,MACO,EAAW,EAAS,GAAU,CAAC,CAAG,GAAU,KAC5C,EAAW,EAAS,GAAiB,CAAC,CAAG,GAAiB,CAClE,CAGH,MAAO,CACL,IAAK,EACL,IAAK,EACL,WAAY,EACZ,IAAK,EACL,YACD"}
@@ -0,0 +1,2 @@
1
+ var e=(e,t)=>{if(typeof Symbol<`u`){let n={...e};return Object.defineProperty(n,Symbol.iterator,{enumerable:!1,value(){let e=0;return{next:()=>({value:t[e++],done:e>t.length})}}}),n}return Object.assign([...t],e)};exports.makeDestructurable=e;
2
+ //# sourceMappingURL=makeDestructurable.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeDestructurable.cjs","names":[],"sources":["../../../../src/helpers/makeDestructurable/makeDestructurable.ts"],"sourcesContent":["/**\n * @name makeDestructurable\n * @description - Makes an object also iterable for array-style destructuring\n * @category Helpers\n * @usage low\n *\n * @template Object - The object shape\n * @template Array - The tuple/array shape for destructuring\n * @param {object} obj - Object part of the returned value\n * @param {Array} arr - Iterable tuple/array part of the returned value\n * @returns {object & Array} Combined object that supports both object and array destructuring\n *\n * @example\n * const result = makeDestructurable({ x: 10, y: 20 }, [10, 20] as const);\n */\nexport const makeDestructurable = <\n Obj extends Record<string, unknown>,\n Arr extends readonly unknown[]\n>(\n obj: Obj,\n arr: Arr\n): Obj & Arr => {\n if (typeof Symbol !== 'undefined') {\n const clone = { ...obj };\n\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n\n return clone as unknown as Obj & Arr;\n }\n\n return Object.assign([...arr], obj) as unknown as Obj & Arr;\n};\n"],"mappings":"AAeA,IAAa,GAIX,EACA,IACc,CACd,GAAI,OAAO,OAAW,IAAa,CACjC,IAAM,EAAQ,CAAE,GAAG,EAAK,CAexB,OAbA,OAAO,eAAe,EAAO,OAAO,SAAU,CAC5C,WAAY,GACZ,OAAQ,CACN,IAAI,EAAQ,EACZ,MAAO,CACL,UAAa,CACX,MAAO,EAAI,KACX,KAAM,EAAQ,EAAI,OACnB,EACF,EAEJ,CAAC,CAEK,EAGT,OAAO,OAAO,OAAO,CAAC,GAAG,EAAI,CAAE,EAAI"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),f=require("../useRefState/useRefState.cjs"),u=require("../../utils/helpers/isTarget.cjs"),m=((...o)=>{const e=u.isTarget(o[0])?o[0]:void 0,[i,c]=v.useState(null),s=f.useRefState();return v.useEffect(()=>{const t=(e?u.isTarget.getElement(e):s.current)??window,a=new MutationObserver(d=>{d.filter(r=>r.removedNodes.length).map(r=>Array.from(r.removedNodes)).flat().forEach(r=>{c(l=>r===l?document.activeElement:l)})});a.observe(t,{childList:!0,subtree:!0});const n=()=>c(document?.activeElement);return t.addEventListener("focus",n,!0),t.addEventListener("blur",n,!0),()=>{a.disconnect(),t.removeEventListener("focus",n,!0),t.removeEventListener("blur",n,!0)}},[e&&u.isTarget.getRawElement(e),s.state]),e?{value:i}:{ref:s,value:i}});exports.useActiveElement=m;
2
- //# sourceMappingURL=useActiveElement.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../utils/helpers/isTarget.cjs`),t=require(`../useRefState/useRefState.cjs`);let n=require(`react`);var r=((...r)=>{let i=e.isTarget(r[0])?r[0]:void 0,[a,o]=(0,n.useState)(null),s=t.useRefState();return(0,n.useEffect)(()=>{let t=(i?e.isTarget.getElement(i):s.current)??window,n=new MutationObserver(e=>{e.filter(e=>e.removedNodes.length).map(e=>Array.from(e.removedNodes)).flat().forEach(e=>{o(t=>e===t?document.activeElement:t)})});n.observe(t,{childList:!0,subtree:!0});let r=()=>o(document?.activeElement);return t.addEventListener(`focus`,r,!0),t.addEventListener(`blur`,r,!0),()=>{n.disconnect(),t.removeEventListener(`focus`,r,!0),t.removeEventListener(`blur`,r,!0)}},[i&&e.isTarget.getRawElement(i),s.state]),i?{value:a}:{ref:s,value:a}});exports.useActiveElement=r;
2
+ //# sourceMappingURL=useActiveElement.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveElement.cjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.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 active element return type */\nexport interface UseActiveElementReturn<ActiveElement extends HTMLElement = HTMLElement> {\n value: ActiveElement | null;\n}\n\nexport interface UseActiveElement {\n (): UseActiveElementReturn;\n\n <Target extends Element, ActiveElement extends HTMLElement = HTMLElement>(\n target?: never\n ): {\n ref: StateRef<Target>;\n } & UseActiveElementReturn<ActiveElement>;\n\n <ActiveElement extends HTMLElement = HTMLElement>(\n target: HookTarget\n ): UseActiveElementReturn<ActiveElement>;\n}\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} [target=window] The target element to observe active element changes\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement(ref);\n *\n * @overload\n * @template ActiveElement The active element type\n * @returns {{ ref: StateRef<Element>; activeElement: ActiveElement | null }} An object containing the ref and active element\n *\n * @example\n * const { ref, value } = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const [value, setValue] = useState<HTMLElement | null>(null);\n const internalRef = useRefState();\n\n useEffect(() => {\n const element = ((target ? isTarget.getElement(target) : internalRef.current) ??\n window) as Element;\n\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setValue((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as HTMLElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(element, {\n childList: true,\n subtree: true\n });\n\n const onActiveElementChange = () => setValue(document?.activeElement as HTMLElement | null);\n\n element.addEventListener('focus', onActiveElementChange, true);\n element.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n observer.disconnect();\n element.removeEventListener('focus', onActiveElementChange, true);\n element.removeEventListener('blur', onActiveElementChange, true);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state]);\n\n if (target) return { value };\n return {\n ref: internalRef,\n value\n };\n}) as UseActiveElement;\n"],"names":["useActiveElement","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","element","observer","mutations","mutation","node","prevActiveElement","onActiveElementChange"],"mappings":"mMAmDaA,GAAoB,IAAIC,IAAkB,CACrD,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE5C,CAACG,EAAOC,CAAQ,EAAIC,EAAAA,SAA6B,IAAI,EACrDC,EAAcC,EAAAA,YAAA,EAoCpB,OAlCAC,EAAAA,UAAU,IAAM,CACd,MAAMC,GAAYR,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAIK,EAAY,UACnE,OAEII,EAAW,IAAI,iBAAkBC,GAAc,CACnDA,EACG,OAAQC,GAAaA,EAAS,aAAa,MAAM,EACjD,IAAKA,GAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAASC,GAAS,CACjBT,EAAUU,GACJD,IAASC,EAA0B,SAAS,cACzCA,CACR,CAAA,CACF,CAAA,CACJ,EAEDJ,EAAS,QAAQD,EAAS,CACxB,UAAW,GACX,QAAS,EAAA,CACV,EAED,MAAMM,EAAwB,IAAMX,EAAS,UAAU,aAAmC,EAE1F,OAAAK,EAAQ,iBAAiB,QAASM,EAAuB,EAAI,EAC7DN,EAAQ,iBAAiB,OAAQM,EAAuB,EAAI,EAErD,IAAM,CACXL,EAAS,WAAA,EACTD,EAAQ,oBAAoB,QAASM,EAAuB,EAAI,EAChEN,EAAQ,oBAAoB,OAAQM,EAAuB,EAAI,CAAA,CACjE,EACC,CAACd,GAAUC,WAAS,cAAcD,CAAM,EAAGK,EAAY,KAAK,CAAC,EAE5DL,EAAe,CAAE,MAAAE,CAAA,EACd,CACL,IAAKG,EACL,MAAAH,CAAA,CAEJ"}
1
+ {"version":3,"file":"useActiveElement.cjs","names":[],"sources":["../../../../src/hooks/useActiveElement/useActiveElement.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 active element return type */\nexport interface UseActiveElementReturn<ActiveElement extends HTMLElement = HTMLElement> {\n value: ActiveElement | null;\n}\n\nexport interface UseActiveElement {\n (): UseActiveElementReturn;\n\n <Target extends Element, ActiveElement extends HTMLElement = HTMLElement>(\n target?: never\n ): {\n ref: StateRef<Target>;\n } & UseActiveElementReturn<ActiveElement>;\n\n <ActiveElement extends HTMLElement = HTMLElement>(\n target: HookTarget\n ): UseActiveElementReturn<ActiveElement>;\n}\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} [target=window] The target element to observe active element changes\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement(ref);\n *\n * @overload\n * @template ActiveElement The active element type\n * @returns {{ ref: StateRef<Element>; activeElement: ActiveElement | null }} An object containing the ref and active element\n *\n * @example\n * const { ref, value } = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const [value, setValue] = useState<HTMLElement | null>(null);\n const internalRef = useRefState();\n\n useEffect(() => {\n const element = ((target ? isTarget.getElement(target) : internalRef.current) ??\n window) as Element;\n\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setValue((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as HTMLElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(element, {\n childList: true,\n subtree: true\n });\n\n const onActiveElementChange = () => setValue(document?.activeElement as HTMLElement | null);\n\n element.addEventListener('focus', onActiveElementChange, true);\n element.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n observer.disconnect();\n element.removeEventListener('focus', onActiveElementChange, true);\n element.removeEventListener('blur', onActiveElementChange, true);\n };\n }, [target && isTarget.getRawElement(target), internalRef.state]);\n\n if (target) return { value };\n return {\n ref: internalRef,\n value\n };\n}) as UseActiveElement;\n"],"mappings":"uKAmDA,IAAa,IAAqB,GAAG,IAAkB,CACrD,IAAM,EAAU,EAAA,SAAS,EAAO,GAAG,CAAG,EAAO,GAAK,IAAA,GAE5C,CAAC,EAAO,IAAA,EAAA,EAAA,UAAyC,KAAK,CACtD,EAAc,EAAA,aAAa,CAqCjC,OAnCA,EAAA,EAAA,eAAgB,CACd,IAAM,GAAY,EAAS,EAAA,SAAS,WAAW,EAAO,CAAG,EAAY,UACnE,OAEI,EAAW,IAAI,iBAAkB,GAAc,CACnD,EACG,OAAQ,GAAa,EAAS,aAAa,OAAO,CAClD,IAAK,GAAa,MAAM,KAAK,EAAS,aAAa,CAAC,CACpD,MAAM,CACN,QAAS,GAAS,CACjB,EAAU,GACJ,IAAS,EAA0B,SAAS,cACzC,EACP,EACF,EACJ,CAEF,EAAS,QAAQ,EAAS,CACxB,UAAW,GACX,QAAS,GACV,CAAC,CAEF,IAAM,MAA8B,EAAS,UAAU,cAAoC,CAK3F,OAHA,EAAQ,iBAAiB,QAAS,EAAuB,GAAK,CAC9D,EAAQ,iBAAiB,OAAQ,EAAuB,GAAK,KAEhD,CACX,EAAS,YAAY,CACrB,EAAQ,oBAAoB,QAAS,EAAuB,GAAK,CACjE,EAAQ,oBAAoB,OAAQ,EAAuB,GAAK,GAEjE,CAAC,GAAU,EAAA,SAAS,cAAc,EAAO,CAAE,EAAY,MAAM,CAAC,CAE7D,EAAe,CAAE,QAAO,CACrB,CACL,IAAK,EACL,QACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),f=(a,u=[])=>{const[n,s]=e.useState(!0),[c,r]=e.useState(!1),[i,o]=e.useState(void 0),[d,l]=e.useState(void 0);return e.useEffect(()=>{s(!0),a().then(t=>{l(t),o(void 0),r(!1)}).catch(t=>{o(t),r(!0)}).finally(()=>{s(!1)})},u),{data:d,isLoading:n,isError:c,error:i}};exports.useAsync=f;
2
- //# sourceMappingURL=useAsync.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=(t,n=[])=>{let[r,i]=(0,e.useState)(!0),[a,o]=(0,e.useState)(!1),[s,c]=(0,e.useState)(void 0),[l,u]=(0,e.useState)(void 0);return(0,e.useEffect)(()=>{i(!0),t().then(e=>{u(e),c(void 0),o(!1)}).catch(e=>{c(e),o(!0)}).finally(()=>{i(!1)})},n),{data:l,isLoading:r,isError:a,error:s}};exports.useAsync=t;
2
+ //# sourceMappingURL=useAsync.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAsync.cjs","sources":["../../../../src/hooks/useAsync/useAsync.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useState } from 'react';\n\n/* The use query return type */\nexport interface UseAsyncReturn<Data> {\n /* The state of the query */\n data?: Data;\n /* The error of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n}\n\n/**\n * @name useAsync\n * @description - Hook that provides the state of an async callback\n * @category Async\n * @usage medium\n *\n * @param {() => Promise<Data>} callback The async callback\n * @param {DependencyList} [deps=[]] The dependencies of the callback\n * @returns {UseAsyncReturn<Data>} The state of the async callback\n *\n * @example\n * const { data, isLoading, isError, error } = useAsync(() => fetch('url'), [deps]);\n */\nexport const useAsync = <Data>(\n callback: () => Promise<Data>,\n deps: DependencyList = []\n): UseAsyncReturn<Data> => {\n const [isLoading, setIsLoading] = useState(true);\n const [isError, setIsError] = useState(false);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n callback()\n .then((response) => {\n setData(response);\n setError(undefined);\n setIsError(false);\n })\n .catch((error: Error) => {\n setError(error);\n setIsError(true);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, deps);\n\n return {\n data,\n isLoading,\n isError,\n error\n };\n};\n"],"names":["useAsync","callback","deps","isLoading","setIsLoading","useState","isError","setIsError","error","setError","data","setData","useEffect","response"],"mappings":"yGA6BaA,EAAW,CACtBC,EACAC,EAAuB,KACE,CACzB,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAI,EACzC,CAACC,EAASC,CAAU,EAAIF,EAAAA,SAAS,EAAK,EAEtC,CAACG,EAAOC,CAAQ,EAAIJ,EAAAA,SAA4B,MAAS,EACzD,CAACK,EAAMC,CAAO,EAAIN,EAAAA,SAA2B,MAAS,EAE5DO,OAAAA,EAAAA,UAAU,IAAM,CACdR,EAAa,EAAI,EACjBH,EAAA,EACG,KAAMY,GAAa,CAClBF,EAAQE,CAAQ,EAChBJ,EAAS,MAAS,EAClBF,EAAW,EAAK,CAAA,CACjB,EACA,MAAOC,GAAiB,CACvBC,EAASD,CAAK,EACdD,EAAW,EAAI,CAAA,CAChB,EACA,QAAQ,IAAM,CACbH,EAAa,EAAK,CAAA,CACnB,CAAA,EACFF,CAAI,EAEA,CACL,KAAAQ,EACA,UAAAP,EACA,QAAAG,EACA,MAAAE,CAAA,CAEJ"}
1
+ {"version":3,"file":"useAsync.cjs","names":[],"sources":["../../../../src/hooks/useAsync/useAsync.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useState } from 'react';\n\n/* The use query return type */\nexport interface UseAsyncReturn<Data> {\n /* The state of the query */\n data?: Data;\n /* The error of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n}\n\n/**\n * @name useAsync\n * @description - Hook that provides the state of an async callback\n * @category Async\n * @usage medium\n *\n * @param {() => Promise<Data>} callback The async callback\n * @param {DependencyList} [deps=[]] The dependencies of the callback\n * @returns {UseAsyncReturn<Data>} The state of the async callback\n *\n * @example\n * const { data, isLoading, isError, error } = useAsync(() => fetch('url'), [deps]);\n */\nexport const useAsync = <Data>(\n callback: () => Promise<Data>,\n deps: DependencyList = []\n): UseAsyncReturn<Data> => {\n const [isLoading, setIsLoading] = useState(true);\n const [isError, setIsError] = useState(false);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n callback()\n .then((response) => {\n setData(response);\n setError(undefined);\n setIsError(false);\n })\n .catch((error: Error) => {\n setError(error);\n setIsError(true);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, deps);\n\n return {\n data,\n isLoading,\n isError,\n error\n };\n};\n"],"mappings":"uEA6BA,IAAa,GACX,EACA,EAAuB,EAAE,GACA,CACzB,GAAM,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,GAAK,CAC1C,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CAEvC,CAAC,EAAO,IAAA,EAAA,EAAA,UAAwC,IAAA,GAAU,CAC1D,CAAC,EAAM,IAAA,EAAA,EAAA,UAAsC,IAAA,GAAU,CAmB7D,OAjBA,EAAA,EAAA,eAAgB,CACd,EAAa,GAAK,CAClB,GAAU,CACP,KAAM,GAAa,CAClB,EAAQ,EAAS,CACjB,EAAS,IAAA,GAAU,CACnB,EAAW,GAAM,EACjB,CACD,MAAO,GAAiB,CACvB,EAAS,EAAM,CACf,EAAW,GAAK,EAChB,CACD,YAAc,CACb,EAAa,GAAM,EACnB,EACH,EAAK,CAED,CACL,OACA,YACA,UACA,QACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),o=(e,t)=>{c.useIsomorphicLayoutEffect(()=>{e()},t)};exports.useAsyncEffect=o;
2
- //# sourceMappingURL=useAsyncEffect.cjs.map
1
+ const e=require(`../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs`);var t=(t,n)=>{e.useIsomorphicLayoutEffect(()=>{t()},n)};exports.useAsyncEffect=t;
2
+ //# sourceMappingURL=useAsyncEffect.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAsyncEffect.cjs","sources":["../../../../src/hooks/useAsyncEffect/useAsyncEffect.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect';\n\n/**\n * @name useAsyncEffect\n * @description – Hook that triggers the effect callback on updates\n * @category Lifecycle\n * @usage medium\n\n * @param {EffectCallback} effect The effect callback\n * @param {DependencyList} [deps] The dependencies list for the effect\n *\n * @example\n * useAsyncEffect(async () => console.log(\"effect runs on updates\"), deps);\n */\nexport const useAsyncEffect = (сallback: () => Promise<any>, deps?: DependencyList): void => {\n useIsomorphicLayoutEffect(() => {\n сallback();\n }, deps);\n};\n"],"names":["useAsyncEffect","сallback","deps","useIsomorphicLayoutEffect"],"mappings":"8JAgBaA,EAAiB,CAACC,EAA8BC,IAAgC,CAC3FC,EAAAA,0BAA0B,IAAM,CAC9BF,EAAA,CAAS,EACRC,CAAI,CACT"}
1
+ {"version":3,"file":"useAsyncEffect.cjs","names":[],"sources":["../../../../src/hooks/useAsyncEffect/useAsyncEffect.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect';\n\n/**\n * @name useAsyncEffect\n * @description – Hook that triggers the effect callback on updates\n * @category Lifecycle\n * @usage medium\n\n * @param {EffectCallback} effect The effect callback\n * @param {DependencyList} [deps] The dependencies list for the effect\n *\n * @example\n * useAsyncEffect(async () => console.log(\"effect runs on updates\"), deps);\n */\nexport const useAsyncEffect = (сallback: () => Promise<any>, deps?: DependencyList): void => {\n useIsomorphicLayoutEffect(() => {\n сallback();\n }, deps);\n};\n"],"mappings":"8EAgBA,IAAa,GAAkB,EAA8B,IAAgC,CAC3F,EAAA,8BAAgC,CAC9B,GAAU,EACT,EAAK"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),h=(i,a={})=>{const[l,r]=c.useState(!1),[m,d]=c.useState(a.volume??1),[v,y]=c.useState(a.playbackRate??1),t=c.useRef(null);c.useEffect(()=>{const e=new Audio(i);if(e.volume=m,e.playbackRate=v,t.current=e,a.immediately)try{r(!0),e.play()}catch{r(!1)}const n=()=>r(!0),s=()=>r(!1),u=()=>r(!1),f=()=>d(e.volume),p=()=>y(e.playbackRate);return e.addEventListener("play",n),e.addEventListener("pause",s),e.addEventListener("ended",u),e.addEventListener("volumechange",f),e.addEventListener("ratechange",p),()=>{e.removeEventListener("play",n),e.removeEventListener("pause",s),e.removeEventListener("ended",u),e.removeEventListener("volumechange",f),e.removeEventListener("ratechange",p),e.pause(),e.remove()}},[i]);const o=()=>{t.current&&(t.current.pause(),t.current.currentTime=0,r(!1))};return{play:async e=>{if(!t.current)return;if(a.interrupt&&o(),r(!0),!e||!a.sprite?.[e]){await t.current.play();return}const[n,s]=a.sprite[e];t.current.currentTime=n,await t.current.play();const u=()=>{t.current&&(t.current.currentTime>=s&&o(),l&&requestAnimationFrame(u))};requestAnimationFrame(u)},pause:()=>{t.current&&(t.current.pause(),r(!1))},stop:o,playing:l,setVolume:e=>{if(!t.current)return;const n=Math.max(0,Math.min(1,e));t.current.volume=n,d(n)},volume:m,changePlaybackRate:e=>{if(!t.current)return;const n=Math.max(.5,Math.min(2,e));t.current.playbackRate=n,y(n)},playbackRate:v}};exports.useAudio=h;
2
- //# sourceMappingURL=useAudio.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=(t,n={})=>{let[r,i]=(0,e.useState)(!1),[a,o]=(0,e.useState)(n.volume??1),[s,c]=(0,e.useState)(n.playbackRate??1),l=(0,e.useRef)(null);(0,e.useEffect)(()=>{let e=new Audio(t);if(e.volume=a,e.playbackRate=s,l.current=e,n.immediately)try{i(!0),e.play()}catch{i(!1)}let r=()=>i(!0),u=()=>i(!1),d=()=>i(!1),f=()=>o(e.volume),p=()=>c(e.playbackRate);return e.addEventListener(`play`,r),e.addEventListener(`pause`,u),e.addEventListener(`ended`,d),e.addEventListener(`volumechange`,f),e.addEventListener(`ratechange`,p),()=>{e.removeEventListener(`play`,r),e.removeEventListener(`pause`,u),e.removeEventListener(`ended`,d),e.removeEventListener(`volumechange`,f),e.removeEventListener(`ratechange`,p),e.pause(),e.remove()}},[t]);let u=()=>{l.current&&(l.current.pause(),l.current.currentTime=0,i(!1))};return{play:async e=>{if(!l.current)return;if(n.interrupt&&u(),i(!0),!e||!n.sprite?.[e]){await l.current.play();return}let[t,a]=n.sprite[e];l.current.currentTime=t,await l.current.play();let o=()=>{l.current&&(l.current.currentTime>=a&&u(),r&&requestAnimationFrame(o))};requestAnimationFrame(o)},pause:()=>{l.current&&(l.current.pause(),i(!1))},stop:u,playing:r,setVolume:e=>{if(!l.current)return;let t=Math.max(0,Math.min(1,e));l.current.volume=t,o(t)},volume:a,changePlaybackRate:e=>{if(!l.current)return;let t=Math.max(.5,Math.min(2,e));l.current.playbackRate=t,c(t)},playbackRate:s}};exports.useAudio=t;
2
+ //# sourceMappingURL=useAudio.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAudio.cjs","sources":["../../../../src/hooks/useAudio/useAudio.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** Type sprite map */\nexport interface SpriteMap {\n /** [start time in seconds, end time in seconds] */\n [key: string]: [number, number];\n}\n\n/** Type use audio options */\nexport interface UseAudioOptions {\n /** Whether audio playback is initially enabled */\n immediately?: boolean;\n /** Whether to stop current playback when starting a new one */\n interrupt?: boolean;\n /** Initial playback speed (0.5 to 2) */\n playbackRate?: number;\n /** Map of named audio segments for sprite-based playback */\n sprite?: SpriteMap;\n /** Initial volume level (0 to 1) */\n volume?: number;\n}\n\n/** Type use audio return type */\nexport interface UseAudioReturn {\n /** Current playback speed (0.5 to 2) */\n playbackRate: number;\n /** Whether audio is currently playing */\n playing: boolean;\n /** Current volume level (0 to 1) */\n volume: number;\n /** Set playback speed (0.5 to 2) */\n changePlaybackRate: (value: number) => void;\n /** Pause audio playback at current position */\n pause: () => void;\n /** Start audio playback from the beginning or specified sprite segment */\n play: (sprite?: string) => Promise<void>;\n /** Set audio volume level (0 to 1) */\n setVolume: (value: number) => void;\n /** Stop audio playback and reset position to start */\n stop: () => void;\n}\n\n/**\n * @name useAudio\n * @description - Hook that manages audio playback with sprite support\n * @category Browser\n * @usage low\n\n * @browserapi Audio https://developer.mozilla.org/en-US/docs/Web/API/Audio\n *\n * @template Value The type of the value\n * @param {string} url The URL of the audio file to play\n * @param {UseAudioOptions} [options] Audio configuration options\n * @param {number} [options.volume=1] Initial volume level (0 to 1)\n * @param {number} [options.playbackRate=1] Initial playback speed (0.5 to 2)\n * @param {boolean} [options.interrupt=false] Whether to stop current playback when starting a new one\n * @param {boolean} [options.soundEnabled=true] Whether audio playback is initially enabled\n * @param {SpriteMap} [options.sprite] Map of named audio segments for sprite-based playback\n * @returns {UseAudioReturn} An object containing audio controls and state\n *\n * @example\n * const audio = useAudio(\"/path/to/sound.mp3\");\n */\nexport const useAudio = (src: string, options: UseAudioOptions = {}): UseAudioReturn => {\n const [playing, setPlaying] = useState(false);\n const [volume, setCurrentVolume] = useState(options.volume ?? 1);\n const [playbackRate, setPlaybackRate] = useState(options.playbackRate ?? 1);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n useEffect(() => {\n const audio = new Audio(src);\n\n audio.volume = volume;\n audio.playbackRate = playbackRate;\n audioRef.current = audio;\n\n if (options.immediately) {\n try {\n setPlaying(true);\n audio.play();\n } catch {\n setPlaying(false);\n }\n }\n\n const onPlay = () => setPlaying(true);\n const onPause = () => setPlaying(false);\n const onEnded = () => setPlaying(false);\n const onVolumeChange = () => setCurrentVolume(audio.volume);\n const onRateChange = () => setPlaybackRate(audio.playbackRate);\n\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('volumechange', onVolumeChange);\n audio.addEventListener('ratechange', onRateChange);\n\n return () => {\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('volumechange', onVolumeChange);\n audio.removeEventListener('ratechange', onRateChange);\n\n audio.pause();\n audio.remove();\n };\n }, [src]);\n\n const stop = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n setPlaying(false);\n };\n\n const play = async (spriteName?: string) => {\n if (!audioRef.current) return;\n if (options.interrupt) stop();\n\n setPlaying(true);\n\n if (!spriteName || !options.sprite?.[spriteName]) {\n await audioRef.current.play();\n return;\n }\n\n const [start, end] = options.sprite[spriteName];\n audioRef.current.currentTime = start;\n await audioRef.current.play();\n\n const checkTime = () => {\n if (!audioRef.current) return;\n if (audioRef.current.currentTime >= end) {\n stop();\n }\n\n if (!playing) return;\n\n requestAnimationFrame(checkTime);\n };\n\n requestAnimationFrame(checkTime);\n };\n\n const pause = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n setPlaying(false);\n };\n\n const setVolume = (value: number) => {\n if (!audioRef.current) return;\n const newVolume = Math.max(0, Math.min(1, value));\n audioRef.current.volume = newVolume;\n setCurrentVolume(newVolume);\n };\n\n const changePlaybackRate = (value: number) => {\n if (!audioRef.current) return;\n const newRate = Math.max(0.5, Math.min(2, value));\n audioRef.current.playbackRate = newRate;\n setPlaybackRate(newRate);\n };\n\n return {\n play,\n pause,\n stop,\n playing,\n setVolume,\n volume,\n changePlaybackRate,\n playbackRate\n };\n};\n"],"names":["useAudio","src","options","playing","setPlaying","useState","volume","setCurrentVolume","playbackRate","setPlaybackRate","audioRef","useRef","useEffect","audio","onPlay","onPause","onEnded","onVolumeChange","onRateChange","stop","spriteName","start","end","checkTime","value","newVolume","newRate"],"mappings":"yGA+DaA,EAAW,CAACC,EAAaC,EAA2B,KAAuB,CACtF,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EACtC,CAACC,EAAQC,CAAgB,EAAIF,EAAAA,SAASH,EAAQ,QAAU,CAAC,EACzD,CAACM,EAAcC,CAAe,EAAIJ,EAAAA,SAASH,EAAQ,cAAgB,CAAC,EAEpEQ,EAAWC,EAAAA,OAAgC,IAAI,EAErDC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQ,IAAI,MAAMZ,CAAG,EAM3B,GAJAY,EAAM,OAASP,EACfO,EAAM,aAAeL,EACrBE,EAAS,QAAUG,EAEfX,EAAQ,YACV,GAAI,CACFE,EAAW,EAAI,EACfS,EAAM,KAAA,CAAK,MACL,CACNT,EAAW,EAAK,CAAA,CAIpB,MAAMU,EAAS,IAAMV,EAAW,EAAI,EAC9BW,EAAU,IAAMX,EAAW,EAAK,EAChCY,EAAU,IAAMZ,EAAW,EAAK,EAChCa,EAAiB,IAAMV,EAAiBM,EAAM,MAAM,EACpDK,EAAe,IAAMT,EAAgBI,EAAM,YAAY,EAE7D,OAAAA,EAAM,iBAAiB,OAAQC,CAAM,EACrCD,EAAM,iBAAiB,QAASE,CAAO,EACvCF,EAAM,iBAAiB,QAASG,CAAO,EACvCH,EAAM,iBAAiB,eAAgBI,CAAc,EACrDJ,EAAM,iBAAiB,aAAcK,CAAY,EAE1C,IAAM,CACXL,EAAM,oBAAoB,OAAQC,CAAM,EACxCD,EAAM,oBAAoB,QAASE,CAAO,EAC1CF,EAAM,oBAAoB,QAASG,CAAO,EAC1CH,EAAM,oBAAoB,eAAgBI,CAAc,EACxDJ,EAAM,oBAAoB,aAAcK,CAAY,EAEpDL,EAAM,MAAA,EACNA,EAAM,OAAA,CAAO,CACf,EACC,CAACZ,CAAG,CAAC,EAER,MAAMkB,EAAO,IAAM,CACZT,EAAS,UACdA,EAAS,QAAQ,MAAA,EACjBA,EAAS,QAAQ,YAAc,EAC/BN,EAAW,EAAK,EAAA,EAoDlB,MAAO,CACL,KAlDW,MAAOgB,GAAwB,CAC1C,GAAI,CAACV,EAAS,QAAS,OAKvB,GAJIR,EAAQ,WAAWiB,EAAA,EAEvBf,EAAW,EAAI,EAEX,CAACgB,GAAc,CAAClB,EAAQ,SAASkB,CAAU,EAAG,CAChD,MAAMV,EAAS,QAAQ,KAAA,EACvB,MAAA,CAGF,KAAM,CAACW,EAAOC,CAAG,EAAIpB,EAAQ,OAAOkB,CAAU,EAC9CV,EAAS,QAAQ,YAAcW,EAC/B,MAAMX,EAAS,QAAQ,KAAA,EAEvB,MAAMa,EAAY,IAAM,CACjBb,EAAS,UACVA,EAAS,QAAQ,aAAeY,GAClCH,EAAA,EAGGhB,GAEL,sBAAsBoB,CAAS,EAAA,EAGjC,sBAAsBA,CAAS,CAAA,EAyB/B,MAtBY,IAAM,CACbb,EAAS,UACdA,EAAS,QAAQ,MAAA,EACjBN,EAAW,EAAK,EAAA,EAoBhB,KAAAe,EACA,QAAAhB,EACA,UAnBiBqB,GAAkB,CACnC,GAAI,CAACd,EAAS,QAAS,OACvB,MAAMe,EAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGD,CAAK,CAAC,EAChDd,EAAS,QAAQ,OAASe,EAC1BlB,EAAiBkB,CAAS,CAAA,EAgB1B,OAAAnB,EACA,mBAd0BkB,GAAkB,CAC5C,GAAI,CAACd,EAAS,QAAS,OACvB,MAAMgB,EAAU,KAAK,IAAI,GAAK,KAAK,IAAI,EAAGF,CAAK,CAAC,EAChDd,EAAS,QAAQ,aAAegB,EAChCjB,EAAgBiB,CAAO,CAAA,EAWvB,aAAAlB,CAAA,CAEJ"}
1
+ {"version":3,"file":"useAudio.cjs","names":[],"sources":["../../../../src/hooks/useAudio/useAudio.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** Type sprite map */\nexport interface SpriteMap {\n /** [start time in seconds, end time in seconds] */\n [key: string]: [number, number];\n}\n\n/** Type use audio options */\nexport interface UseAudioOptions {\n /** Whether audio playback is initially enabled */\n immediately?: boolean;\n /** Whether to stop current playback when starting a new one */\n interrupt?: boolean;\n /** Initial playback speed (0.5 to 2) */\n playbackRate?: number;\n /** Map of named audio segments for sprite-based playback */\n sprite?: SpriteMap;\n /** Initial volume level (0 to 1) */\n volume?: number;\n}\n\n/** Type use audio return type */\nexport interface UseAudioReturn {\n /** Current playback speed (0.5 to 2) */\n playbackRate: number;\n /** Whether audio is currently playing */\n playing: boolean;\n /** Current volume level (0 to 1) */\n volume: number;\n /** Set playback speed (0.5 to 2) */\n changePlaybackRate: (value: number) => void;\n /** Pause audio playback at current position */\n pause: () => void;\n /** Start audio playback from the beginning or specified sprite segment */\n play: (sprite?: string) => Promise<void>;\n /** Set audio volume level (0 to 1) */\n setVolume: (value: number) => void;\n /** Stop audio playback and reset position to start */\n stop: () => void;\n}\n\n/**\n * @name useAudio\n * @description - Hook that manages audio playback with sprite support\n * @category Browser\n * @usage low\n\n * @browserapi Audio https://developer.mozilla.org/en-US/docs/Web/API/Audio\n *\n * @template Value The type of the value\n * @param {string} url The URL of the audio file to play\n * @param {UseAudioOptions} [options] Audio configuration options\n * @param {number} [options.volume=1] Initial volume level (0 to 1)\n * @param {number} [options.playbackRate=1] Initial playback speed (0.5 to 2)\n * @param {boolean} [options.interrupt=false] Whether to stop current playback when starting a new one\n * @param {boolean} [options.soundEnabled=true] Whether audio playback is initially enabled\n * @param {SpriteMap} [options.sprite] Map of named audio segments for sprite-based playback\n * @returns {UseAudioReturn} An object containing audio controls and state\n *\n * @example\n * const audio = useAudio(\"/path/to/sound.mp3\");\n */\nexport const useAudio = (src: string, options: UseAudioOptions = {}): UseAudioReturn => {\n const [playing, setPlaying] = useState(false);\n const [volume, setCurrentVolume] = useState(options.volume ?? 1);\n const [playbackRate, setPlaybackRate] = useState(options.playbackRate ?? 1);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n useEffect(() => {\n const audio = new Audio(src);\n\n audio.volume = volume;\n audio.playbackRate = playbackRate;\n audioRef.current = audio;\n\n if (options.immediately) {\n try {\n setPlaying(true);\n audio.play();\n } catch {\n setPlaying(false);\n }\n }\n\n const onPlay = () => setPlaying(true);\n const onPause = () => setPlaying(false);\n const onEnded = () => setPlaying(false);\n const onVolumeChange = () => setCurrentVolume(audio.volume);\n const onRateChange = () => setPlaybackRate(audio.playbackRate);\n\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('volumechange', onVolumeChange);\n audio.addEventListener('ratechange', onRateChange);\n\n return () => {\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('volumechange', onVolumeChange);\n audio.removeEventListener('ratechange', onRateChange);\n\n audio.pause();\n audio.remove();\n };\n }, [src]);\n\n const stop = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n setPlaying(false);\n };\n\n const play = async (spriteName?: string) => {\n if (!audioRef.current) return;\n if (options.interrupt) stop();\n\n setPlaying(true);\n\n if (!spriteName || !options.sprite?.[spriteName]) {\n await audioRef.current.play();\n return;\n }\n\n const [start, end] = options.sprite[spriteName];\n audioRef.current.currentTime = start;\n await audioRef.current.play();\n\n const checkTime = () => {\n if (!audioRef.current) return;\n if (audioRef.current.currentTime >= end) {\n stop();\n }\n\n if (!playing) return;\n\n requestAnimationFrame(checkTime);\n };\n\n requestAnimationFrame(checkTime);\n };\n\n const pause = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n setPlaying(false);\n };\n\n const setVolume = (value: number) => {\n if (!audioRef.current) return;\n const newVolume = Math.max(0, Math.min(1, value));\n audioRef.current.volume = newVolume;\n setCurrentVolume(newVolume);\n };\n\n const changePlaybackRate = (value: number) => {\n if (!audioRef.current) return;\n const newRate = Math.max(0.5, Math.min(2, value));\n audioRef.current.playbackRate = newRate;\n setPlaybackRate(newRate);\n };\n\n return {\n play,\n pause,\n stop,\n playing,\n setVolume,\n volume,\n changePlaybackRate,\n playbackRate\n };\n};\n"],"mappings":"uEA+DA,IAAa,GAAY,EAAa,EAA2B,EAAE,GAAqB,CACtF,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAQ,IAAA,EAAA,EAAA,UAA6B,EAAQ,QAAU,EAAE,CAC1D,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAQ,cAAgB,EAAE,CAErE,GAAA,EAAA,EAAA,QAA2C,KAAK,EAEtD,EAAA,EAAA,eAAgB,CACd,IAAM,EAAQ,IAAI,MAAM,EAAI,CAM5B,GAJA,EAAM,OAAS,EACf,EAAM,aAAe,EACrB,EAAS,QAAU,EAEf,EAAQ,YACV,GAAI,CACF,EAAW,GAAK,CAChB,EAAM,MAAM,MACN,CACN,EAAW,GAAM,CAIrB,IAAM,MAAe,EAAW,GAAK,CAC/B,MAAgB,EAAW,GAAM,CACjC,MAAgB,EAAW,GAAM,CACjC,MAAuB,EAAiB,EAAM,OAAO,CACrD,MAAqB,EAAgB,EAAM,aAAa,CAQ9D,OANA,EAAM,iBAAiB,OAAQ,EAAO,CACtC,EAAM,iBAAiB,QAAS,EAAQ,CACxC,EAAM,iBAAiB,QAAS,EAAQ,CACxC,EAAM,iBAAiB,eAAgB,EAAe,CACtD,EAAM,iBAAiB,aAAc,EAAa,KAErC,CACX,EAAM,oBAAoB,OAAQ,EAAO,CACzC,EAAM,oBAAoB,QAAS,EAAQ,CAC3C,EAAM,oBAAoB,QAAS,EAAQ,CAC3C,EAAM,oBAAoB,eAAgB,EAAe,CACzD,EAAM,oBAAoB,aAAc,EAAa,CAErD,EAAM,OAAO,CACb,EAAM,QAAQ,GAEf,CAAC,EAAI,CAAC,CAET,IAAM,MAAa,CACZ,EAAS,UACd,EAAS,QAAQ,OAAO,CACxB,EAAS,QAAQ,YAAc,EAC/B,EAAW,GAAM,GAoDnB,MAAO,CACL,KAlDW,KAAO,IAAwB,CAC1C,GAAI,CAAC,EAAS,QAAS,OAKvB,GAJI,EAAQ,WAAW,GAAM,CAE7B,EAAW,GAAK,CAEZ,CAAC,GAAc,CAAC,EAAQ,SAAS,GAAa,CAChD,MAAM,EAAS,QAAQ,MAAM,CAC7B,OAGF,GAAM,CAAC,EAAO,GAAO,EAAQ,OAAO,GACpC,EAAS,QAAQ,YAAc,EAC/B,MAAM,EAAS,QAAQ,MAAM,CAE7B,IAAM,MAAkB,CACjB,EAAS,UACV,EAAS,QAAQ,aAAe,GAClC,GAAM,CAGH,GAEL,sBAAsB,EAAU,GAGlC,sBAAsB,EAAU,EAyBhC,UAtBkB,CACb,EAAS,UACd,EAAS,QAAQ,OAAO,CACxB,EAAW,GAAM,GAoBjB,OACA,UACA,UAnBiB,GAAkB,CACnC,GAAI,CAAC,EAAS,QAAS,OACvB,IAAM,EAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,EAAM,CAAC,CACjD,EAAS,QAAQ,OAAS,EAC1B,EAAiB,EAAU,EAgB3B,SACA,mBAd0B,GAAkB,CAC5C,GAAI,CAAC,EAAS,QAAS,OACvB,IAAM,EAAU,KAAK,IAAI,GAAK,KAAK,IAAI,EAAG,EAAM,CAAC,CACjD,EAAS,QAAQ,aAAe,EAChC,EAAgB,EAAQ,EAWxB,eACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("react"),R=require("../useRefState/useRefState.cjs"),a=require("../../utils/helpers/isTarget.cjs"),q=((...n)=>{const r=a.isTarget(n[0])?n[0]:void 0,i=n[1]||(typeof n[0]=="object"?n[0]:{}),{enabled:h=!0}=i,s=R.useRefState(),o=L.useRef(i);if(o.current=i,L.useEffect(()=>{if(!h||!r&&!s.state)return;const e=r?a.isTarget.getElement(r):s.state;if(!e)return;let c=!0,f=0,d=0;const v=()=>{if(o.current.force)return;const{scrollHeight:t,clientHeight:l,scrollTop:u}=e,b=t-l,m=b/2;u<d?c=!1:b-u<=m&&(c=!0),d=u},g=t=>{o.current.force||(t.deltaY<0?c=!1:v())},S=t=>{o.current.force||(f=t.touches[0].clientY)},T=t=>{if(o.current.force)return;const l=t.touches[0].clientY;f-l<0?c=!1:v(),f=l},Y=()=>{!c&&!o.current.force||e.scrollTo({top:e.scrollHeight})};e.addEventListener("wheel",g),e.addEventListener("touchstart",S),e.addEventListener("touchmove",T);const E=new MutationObserver(Y);return E.observe(e,{childList:!0,subtree:!0,characterData:!0}),()=>{E.disconnect(),e.removeEventListener("wheel",g),e.removeEventListener("touchstart",S),e.removeEventListener("touchmove",T)}},[h,r&&a.isTarget.getRawElement(r),s.state]),!r)return{ref:s}});exports.useAutoScroll=q;
2
- //# sourceMappingURL=useAutoScroll.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../utils/helpers/isTarget.cjs`),t=require(`../useRefState/useRefState.cjs`);let n=require(`react`);var r=((...r)=>{let i=e.isTarget(r[0])?r[0]:void 0,a=r[1]||(typeof r[0]==`object`?r[0]:{}),{enabled:o=!0}=a,s=t.useRefState(),c=(0,n.useRef)(a);if(c.current=a,(0,n.useEffect)(()=>{if(!o||!i&&!s.state)return;let t=i?e.isTarget.getElement(i):s.state;if(!t)return;let n=!0,r=0,a=0,l=()=>{if(c.current.force)return;let{scrollHeight:e,clientHeight:r,scrollTop:i}=t,o=e-r,s=o/2;i<a?n=!1:o-i<=s&&(n=!0),a=i},u=e=>{c.current.force||(e.deltaY<0?n=!1:l())},d=e=>{c.current.force||(r=e.touches[0].clientY)},f=e=>{if(c.current.force)return;let t=e.touches[0].clientY;r-t<0?n=!1:l(),r=t},p=()=>{!n&&!c.current.force||t.scrollTo({top:t.scrollHeight})};t.addEventListener(`wheel`,u),t.addEventListener(`touchstart`,d),t.addEventListener(`touchmove`,f);let m=new MutationObserver(p);return m.observe(t,{childList:!0,subtree:!0,characterData:!0}),()=>{m.disconnect(),t.removeEventListener(`wheel`,u),t.removeEventListener(`touchstart`,d),t.removeEventListener(`touchmove`,f)}},[o,i&&e.isTarget.getRawElement(i),s.state]),!i)return{ref:s}});exports.useAutoScroll=r;
2
+ //# sourceMappingURL=useAutoScroll.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoScroll.cjs","sources":["../../../../src/hooks/useAutoScroll/useAutoScroll.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';\n\n/** The use auto scroll options type */\nexport interface UseAutoScrollOptions {\n /** Whether auto-scrolling is enabled */\n enabled?: boolean;\n /** Whether to force auto-scrolling regardless of user interactions */\n force?: boolean;\n}\n\nexport interface UseAutoScroll {\n (target: HookTarget, options?: UseAutoScrollOptions): void;\n\n <Target extends HTMLElement>(\n options?: UseAutoScrollOptions\n ): {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useAutoScroll\n * @description - Hook that automatically scrolls a list element to the bottom\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target element to auto-scroll\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {void}\n *\n * @example\n * useAutoScroll(ref);\n *\n * @overload\n * @template Target\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {{ ref: StateRef<Target> }} A React ref to attach to the list element\n *\n * @example\n * const { ref } = useAutoScroll();\n */\nexport const useAutoScroll = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n const options = (params[1] ||\n (typeof params[0] === 'object' ? params[0] : {})) as UseAutoScrollOptions;\n const { enabled = true } = options;\n\n const internalRef = useRefState<HTMLElement>();\n const internalOptionsRef = useRef<UseAutoScrollOptions>(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = (target ? isTarget.getElement(target) : internalRef.state) as HTMLElement;\n\n if (!element) return;\n\n let shouldAutoScroll = true;\n let touchStartY = 0;\n let lastScrollTop = 0;\n\n const onCheckScrollPosition = () => {\n if (internalOptionsRef.current.force) return;\n\n const { scrollHeight, clientHeight, scrollTop } = element;\n const maxScrollHeight = scrollHeight - clientHeight;\n const scrollThreshold = maxScrollHeight / 2;\n\n if (scrollTop < lastScrollTop) shouldAutoScroll = false;\n else if (maxScrollHeight - scrollTop <= scrollThreshold) shouldAutoScroll = true;\n\n lastScrollTop = scrollTop;\n };\n\n const onWheel = (event: WheelEvent) => {\n if (internalOptionsRef.current.force) return;\n\n if (event.deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n };\n\n const onTouchStart = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n touchStartY = event.touches[0].clientY;\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n\n const touchEndY = event.touches[0].clientY;\n const deltaY = touchStartY - touchEndY;\n\n if (deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n\n touchStartY = touchEndY;\n };\n\n const onMutation = () => {\n if (!shouldAutoScroll && !internalOptionsRef.current.force) return;\n element.scrollTo({ top: element.scrollHeight });\n };\n\n element.addEventListener('wheel', onWheel);\n element.addEventListener('touchstart', onTouchStart);\n element.addEventListener('touchmove', onTouchMove);\n\n const observer = new MutationObserver(onMutation);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n characterData: true\n });\n\n return () => {\n observer.disconnect();\n element.removeEventListener('wheel', onWheel);\n element.removeEventListener('touchstart', onTouchStart);\n element.removeEventListener('touchmove', onTouchMove);\n };\n }, [enabled, target && isTarget.getRawElement(target), internalRef.state]);\n\n if (target) return;\n return { ref: internalRef };\n}) as UseAutoScroll;\n"],"names":["useAutoScroll","params","target","isTarget","options","enabled","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","shouldAutoScroll","touchStartY","lastScrollTop","onCheckScrollPosition","scrollHeight","clientHeight","scrollTop","maxScrollHeight","scrollThreshold","onWheel","event","onTouchStart","onTouchMove","touchEndY","onMutation","observer"],"mappings":"mMAkDaA,GAAiB,IAAIC,IAAkB,CAClD,MAAMC,EAASC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC3CG,EAAWH,EAAO,CAAC,IACtB,OAAOA,EAAO,CAAC,GAAM,SAAWA,EAAO,CAAC,EAAI,CAAA,GACzC,CAAE,QAAAI,EAAU,EAAA,EAASD,EAErBE,EAAcC,EAAAA,YAAA,EACdC,EAAqBC,EAAAA,OAA6BL,CAAO,EA4E/D,GA3EAI,EAAmB,QAAUJ,EAE7BM,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,GAAY,CAACH,GAAU,CAACI,EAAY,MAAQ,OAEjD,MAAMK,EAAWT,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAII,EAAY,MAEpE,GAAI,CAACK,EAAS,OAEd,IAAIC,EAAmB,GACnBC,EAAc,EACdC,EAAgB,EAEpB,MAAMC,EAAwB,IAAM,CAClC,GAAIP,EAAmB,QAAQ,MAAO,OAEtC,KAAM,CAAE,aAAAQ,EAAc,aAAAC,EAAc,UAAAC,CAAA,EAAcP,EAC5CQ,EAAkBH,EAAeC,EACjCG,EAAkBD,EAAkB,EAEtCD,EAAYJ,EAAeF,EAAmB,GACzCO,EAAkBD,GAAaE,IAAiBR,EAAmB,IAE5EE,EAAgBI,CAAA,EAGZG,EAAWC,GAAsB,CACjCd,EAAmB,QAAQ,QAE3Bc,EAAM,OAAS,EAAGV,EAAmB,GACpCG,EAAA,EAAsB,EAGvBQ,EAAgBD,GAAsB,CACtCd,EAAmB,QAAQ,QAC/BK,EAAcS,EAAM,QAAQ,CAAC,EAAE,QAAA,EAG3BE,EAAeF,GAAsB,CACzC,GAAId,EAAmB,QAAQ,MAAO,OAEtC,MAAMiB,EAAYH,EAAM,QAAQ,CAAC,EAAE,QACpBT,EAAcY,EAEhB,EAAGb,EAAmB,GAC9BG,EAAA,EAELF,EAAcY,CAAA,EAGVC,EAAa,IAAM,CACnB,CAACd,GAAoB,CAACJ,EAAmB,QAAQ,OACrDG,EAAQ,SAAS,CAAE,IAAKA,EAAQ,aAAc,CAAA,EAGhDA,EAAQ,iBAAiB,QAASU,CAAO,EACzCV,EAAQ,iBAAiB,aAAcY,CAAY,EACnDZ,EAAQ,iBAAiB,YAAaa,CAAW,EAEjD,MAAMG,EAAW,IAAI,iBAAiBD,CAAU,EAEhD,OAAAC,EAAS,QAAQhB,EAAS,CACxB,UAAW,GACX,QAAS,GACT,cAAe,EAAA,CAChB,EAEM,IAAM,CACXgB,EAAS,WAAA,EACThB,EAAQ,oBAAoB,QAASU,CAAO,EAC5CV,EAAQ,oBAAoB,aAAcY,CAAY,EACtDZ,EAAQ,oBAAoB,YAAaa,CAAW,CAAA,CACtD,EACC,CAACnB,EAASH,GAAUC,EAAAA,SAAS,cAAcD,CAAM,EAAGI,EAAY,KAAK,CAAC,EAErE,CAAAJ,EACJ,MAAO,CAAE,IAAKI,CAAA,CAChB"}
1
+ {"version":3,"file":"useAutoScroll.cjs","names":[],"sources":["../../../../src/hooks/useAutoScroll/useAutoScroll.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';\n\n/** The use auto scroll options type */\nexport interface UseAutoScrollOptions {\n /** Whether auto-scrolling is enabled */\n enabled?: boolean;\n /** Whether to force auto-scrolling regardless of user interactions */\n force?: boolean;\n}\n\nexport interface UseAutoScroll {\n (target: HookTarget, options?: UseAutoScrollOptions): void;\n\n <Target extends HTMLElement>(\n options?: UseAutoScrollOptions\n ): {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useAutoScroll\n * @description - Hook that automatically scrolls a list element to the bottom\n * @category Elements\n * @usage low\n *\n * @overload\n * @param {HookTarget} target The target element to auto-scroll\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {void}\n *\n * @example\n * useAutoScroll(ref);\n *\n * @overload\n * @template Target\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {{ ref: StateRef<Target> }} A React ref to attach to the list element\n *\n * @example\n * const { ref } = useAutoScroll();\n */\nexport const useAutoScroll = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n const options = (params[1] ||\n (typeof params[0] === 'object' ? params[0] : {})) as UseAutoScrollOptions;\n const { enabled = true } = options;\n\n const internalRef = useRefState<HTMLElement>();\n const internalOptionsRef = useRef<UseAutoScrollOptions>(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = (target ? isTarget.getElement(target) : internalRef.state) as HTMLElement;\n\n if (!element) return;\n\n let shouldAutoScroll = true;\n let touchStartY = 0;\n let lastScrollTop = 0;\n\n const onCheckScrollPosition = () => {\n if (internalOptionsRef.current.force) return;\n\n const { scrollHeight, clientHeight, scrollTop } = element;\n const maxScrollHeight = scrollHeight - clientHeight;\n const scrollThreshold = maxScrollHeight / 2;\n\n if (scrollTop < lastScrollTop) shouldAutoScroll = false;\n else if (maxScrollHeight - scrollTop <= scrollThreshold) shouldAutoScroll = true;\n\n lastScrollTop = scrollTop;\n };\n\n const onWheel = (event: WheelEvent) => {\n if (internalOptionsRef.current.force) return;\n\n if (event.deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n };\n\n const onTouchStart = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n touchStartY = event.touches[0].clientY;\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n\n const touchEndY = event.touches[0].clientY;\n const deltaY = touchStartY - touchEndY;\n\n if (deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n\n touchStartY = touchEndY;\n };\n\n const onMutation = () => {\n if (!shouldAutoScroll && !internalOptionsRef.current.force) return;\n element.scrollTo({ top: element.scrollHeight });\n };\n\n element.addEventListener('wheel', onWheel);\n element.addEventListener('touchstart', onTouchStart);\n element.addEventListener('touchmove', onTouchMove);\n\n const observer = new MutationObserver(onMutation);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n characterData: true\n });\n\n return () => {\n observer.disconnect();\n element.removeEventListener('wheel', onWheel);\n element.removeEventListener('touchstart', onTouchStart);\n element.removeEventListener('touchmove', onTouchMove);\n };\n }, [enabled, target && isTarget.getRawElement(target), internalRef.state]);\n\n if (target) return;\n return { ref: internalRef };\n}) as UseAutoScroll;\n"],"mappings":"uKAkDA,IAAa,IAAkB,GAAG,IAAkB,CAClD,IAAM,EAAS,EAAA,SAAS,EAAO,GAAG,CAAG,EAAO,GAAK,IAAA,GAC3C,EAAW,EAAO,KACrB,OAAO,EAAO,IAAO,SAAW,EAAO,GAAK,EAAE,EAC3C,CAAE,UAAU,IAAS,EAErB,EAAc,EAAA,aAA0B,CACxC,GAAA,EAAA,EAAA,QAAkD,EAAQ,CAChE,KAAmB,QAAU,GAE7B,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,GAAY,CAAC,GAAU,CAAC,EAAY,MAAQ,OAEjD,IAAM,EAAW,EAAS,EAAA,SAAS,WAAW,EAAO,CAAG,EAAY,MAEpE,GAAI,CAAC,EAAS,OAEd,IAAI,EAAmB,GACnB,EAAc,EACd,EAAgB,EAEd,MAA8B,CAClC,GAAI,EAAmB,QAAQ,MAAO,OAEtC,GAAM,CAAE,eAAc,eAAc,aAAc,EAC5C,EAAkB,EAAe,EACjC,EAAkB,EAAkB,EAEtC,EAAY,EAAe,EAAmB,GACzC,EAAkB,GAAa,IAAiB,EAAmB,IAE5E,EAAgB,GAGZ,EAAW,GAAsB,CACjC,EAAmB,QAAQ,QAE3B,EAAM,OAAS,EAAG,EAAmB,GACpC,GAAuB,GAGxB,EAAgB,GAAsB,CACtC,EAAmB,QAAQ,QAC/B,EAAc,EAAM,QAAQ,GAAG,UAG3B,EAAe,GAAsB,CACzC,GAAI,EAAmB,QAAQ,MAAO,OAEtC,IAAM,EAAY,EAAM,QAAQ,GAAG,QACpB,EAAc,EAEhB,EAAG,EAAmB,GAC9B,GAAuB,CAE5B,EAAc,GAGV,MAAmB,CACnB,CAAC,GAAoB,CAAC,EAAmB,QAAQ,OACrD,EAAQ,SAAS,CAAE,IAAK,EAAQ,aAAc,CAAC,EAGjD,EAAQ,iBAAiB,QAAS,EAAQ,CAC1C,EAAQ,iBAAiB,aAAc,EAAa,CACpD,EAAQ,iBAAiB,YAAa,EAAY,CAElD,IAAM,EAAW,IAAI,iBAAiB,EAAW,CAQjD,OANA,EAAS,QAAQ,EAAS,CACxB,UAAW,GACX,QAAS,GACT,cAAe,GAChB,CAAC,KAEW,CACX,EAAS,YAAY,CACrB,EAAQ,oBAAoB,QAAS,EAAQ,CAC7C,EAAQ,oBAAoB,aAAc,EAAa,CACvD,EAAQ,oBAAoB,YAAa,EAAY,GAEtD,CAAC,EAAS,GAAU,EAAA,SAAS,cAAc,EAAO,CAAE,EAAY,MAAM,CAAC,CAEtE,GACJ,MAAO,CAAE,IAAK,EAAa"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),o=(c,n)=>{const u=r.useRef(c),s=r.useRef(n),e=r.useRef([]);u.current=c,s.current=n;const a=()=>{if(!e.current.length)return;const t=e.current;e.current=[],u.current(t)};return r.useMemo(()=>{const t=(...l)=>{e.current.push(l),e.current.length>=s.current&&a()};return t.flush=a,t.cancel=()=>e.current=[],t},[])};exports.useBatchedCallback=o;
2
- //# sourceMappingURL=useBatchedCallback.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=(t,n)=>{let r=(0,e.useRef)(t),i=(0,e.useRef)(n),a=(0,e.useRef)([]);r.current=t,i.current=n;let o=()=>{if(!a.current.length)return;let e=a.current;a.current=[],r.current(e)};return(0,e.useMemo)(()=>{let e=(...e)=>{a.current.push(e),a.current.length>=i.current&&o()};return e.flush=o,e.cancel=()=>a.current=[],e},[])};exports.useBatchedCallback=t;
2
+ //# sourceMappingURL=useBatchedCallback.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBatchedCallback.cjs","sources":["../../../../src/hooks/useBatchedCallback/useBatchedCallback.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\n\nexport type BatchedCallback<Params extends unknown[]> = ((...args: Params) => void) & {\n flush: () => void;\n cancel: () => void;\n};\n\n/**\n * @name useBatchedCallback\n * @description - Hook that batches calls and forwards them to a callback\n * @category Utilities\n * @usage medium\n *\n * @template Params The type of the params\n * @param {(batch: Params[]) => void} callback The callback that receives a batch of calls\n * @param {number} batchSize The maximum size of a batch before it is flushed\n * @returns {BatchedCallback<Params>} The batched callback with flush and cancel helpers\n *\n * @example\n * const batched = useBatchedCallback((batch) => console.log(batch), 5);\n */\nexport const useBatchedCallback = <Params extends unknown[]>(\n callback: (batch: Params[]) => void,\n size: number\n): BatchedCallback<Params> => {\n const internalCallbackRef = useRef(callback);\n const sizeRef = useRef(size);\n const queueRef = useRef<Params[]>([]);\n\n internalCallbackRef.current = callback;\n sizeRef.current = size;\n\n const flush = () => {\n if (!queueRef.current.length) return;\n const batch = queueRef.current;\n queueRef.current = [];\n internalCallbackRef.current(batch);\n };\n\n const batched = useMemo(() => {\n const batchedCallback = (...args: Params) => {\n queueRef.current.push(args);\n if (queueRef.current.length >= sizeRef.current) flush();\n };\n\n batchedCallback.flush = flush;\n batchedCallback.cancel = () => (queueRef.current = []);\n\n return batchedCallback as BatchedCallback<Params>;\n }, []);\n\n return batched;\n};\n"],"names":["useBatchedCallback","callback","size","internalCallbackRef","useRef","sizeRef","queueRef","flush","batch","useMemo","batchedCallback","args"],"mappings":"yGAqBaA,EAAqB,CAChCC,EACAC,IAC4B,CAC5B,MAAMC,EAAsBC,EAAAA,OAAOH,CAAQ,EACrCI,EAAUD,EAAAA,OAAOF,CAAI,EACrBI,EAAWF,EAAAA,OAAiB,EAAE,EAEpCD,EAAoB,QAAUF,EAC9BI,EAAQ,QAAUH,EAElB,MAAMK,EAAQ,IAAM,CAClB,GAAI,CAACD,EAAS,QAAQ,OAAQ,OAC9B,MAAME,EAAQF,EAAS,QACvBA,EAAS,QAAU,CAAA,EACnBH,EAAoB,QAAQK,CAAK,CAAA,EAenC,OAZgBC,EAAAA,QAAQ,IAAM,CAC5B,MAAMC,EAAkB,IAAIC,IAAiB,CAC3CL,EAAS,QAAQ,KAAKK,CAAI,EACtBL,EAAS,QAAQ,QAAUD,EAAQ,SAASE,EAAA,CAAM,EAGxD,OAAAG,EAAgB,MAAQH,EACxBG,EAAgB,OAAS,IAAOJ,EAAS,QAAU,CAAA,EAE5CI,CAAA,EACN,EAAE,CAGP"}
1
+ {"version":3,"file":"useBatchedCallback.cjs","names":[],"sources":["../../../../src/hooks/useBatchedCallback/useBatchedCallback.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\n\nexport type BatchedCallback<Params extends unknown[]> = ((...args: Params) => void) & {\n flush: () => void;\n cancel: () => void;\n};\n\n/**\n * @name useBatchedCallback\n * @description - Hook that batches calls and forwards them to a callback\n * @category Utilities\n * @usage medium\n *\n * @template Params The type of the params\n * @param {(batch: Params[]) => void} callback The callback that receives a batch of calls\n * @param {number} batchSize The maximum size of a batch before it is flushed\n * @returns {BatchedCallback<Params>} The batched callback with flush and cancel helpers\n *\n * @example\n * const batched = useBatchedCallback((batch) => console.log(batch), 5);\n */\nexport const useBatchedCallback = <Params extends unknown[]>(\n callback: (batch: Params[]) => void,\n size: number\n): BatchedCallback<Params> => {\n const internalCallbackRef = useRef(callback);\n const sizeRef = useRef(size);\n const queueRef = useRef<Params[]>([]);\n\n internalCallbackRef.current = callback;\n sizeRef.current = size;\n\n const flush = () => {\n if (!queueRef.current.length) return;\n const batch = queueRef.current;\n queueRef.current = [];\n internalCallbackRef.current(batch);\n };\n\n const batched = useMemo(() => {\n const batchedCallback = (...args: Params) => {\n queueRef.current.push(args);\n if (queueRef.current.length >= sizeRef.current) flush();\n };\n\n batchedCallback.flush = flush;\n batchedCallback.cancel = () => (queueRef.current = []);\n\n return batchedCallback as BatchedCallback<Params>;\n }, []);\n\n return batched;\n};\n"],"mappings":"uEAqBA,IAAa,GACX,EACA,IAC4B,CAC5B,IAAM,GAAA,EAAA,EAAA,QAA6B,EAAS,CACtC,GAAA,EAAA,EAAA,QAAiB,EAAK,CACtB,GAAA,EAAA,EAAA,QAA4B,EAAE,CAAC,CAErC,EAAoB,QAAU,EAC9B,EAAQ,QAAU,EAElB,IAAM,MAAc,CAClB,GAAI,CAAC,EAAS,QAAQ,OAAQ,OAC9B,IAAM,EAAQ,EAAS,QACvB,EAAS,QAAU,EAAE,CACrB,EAAoB,QAAQ,EAAM,EAepC,OAAA,EAAA,EAAA,aAZ8B,CAC5B,IAAM,GAAmB,GAAG,IAAiB,CAC3C,EAAS,QAAQ,KAAK,EAAK,CACvB,EAAS,QAAQ,QAAU,EAAQ,SAAS,GAAO,EAMzD,MAHA,GAAgB,MAAQ,EACxB,EAAgB,WAAgB,EAAS,QAAU,EAAE,CAE9C,GACN,EAAE,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),c=()=>{const t=typeof navigator<"u"&&"getBattery"in navigator&&typeof navigator.getBattery=="function",[r,a]=i.useState({loading:t,level:0,charging:!1,chargingTime:0,dischargingTime:0});return i.useEffect(()=>{if(!t)return;let e;const n=()=>a({loading:!1,level:e?.level??0,charging:e?.charging??!1,dischargingTime:e?.dischargingTime??0,chargingTime:e?.chargingTime??0});return navigator.getBattery().then(g=>{e=g,n(),e.addEventListener("levelchange",n),e.addEventListener("chargingchange",n),e.addEventListener("chargingtimechange",n),e.addEventListener("dischargingtimechange",n)}),()=>{e&&(e.removeEventListener("levelchange",n),e.removeEventListener("chargingchange",n),e.removeEventListener("chargingtimechange",n),e.removeEventListener("dischargingtimechange",n))}},[]),{supported:t,value:r}};exports.useBattery=c;
2
- //# sourceMappingURL=useBattery.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=()=>{let t=typeof navigator<`u`&&`getBattery`in navigator&&typeof navigator.getBattery==`function`,[n,r]=(0,e.useState)({loading:t,level:0,charging:!1,chargingTime:0,dischargingTime:0});return(0,e.useEffect)(()=>{if(!t)return;let e,n=()=>r({loading:!1,level:e?.level??0,charging:e?.charging??!1,dischargingTime:e?.dischargingTime??0,chargingTime:e?.chargingTime??0});return navigator.getBattery().then(t=>{e=t,n(),e.addEventListener(`levelchange`,n),e.addEventListener(`chargingchange`,n),e.addEventListener(`chargingtimechange`,n),e.addEventListener(`dischargingtimechange`,n)}),()=>{e&&(e.removeEventListener(`levelchange`,n),e.removeEventListener(`chargingchange`,n),e.removeEventListener(`chargingtimechange`,n),e.removeEventListener(`dischargingtimechange`,n))}},[]),{supported:t,value:n}};exports.useBattery=t;
2
+ //# sourceMappingURL=useBattery.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBattery.cjs","sources":["../../../../src/hooks/useBattery/useBattery.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport interface BatteryManager extends EventTarget {\n charging: boolean;\n chargingTime: number;\n dischargingTime: number;\n level: number;\n}\n\ndeclare global {\n interface Navigator {\n readonly getBattery: () => Promise<BatteryManager>;\n }\n}\n\n/** The use battery value type */\nexport interface UseBatteryValue {\n /** Is charging battery? */\n charging: boolean;\n /** Time until the battery is fully charged */\n chargingTime: number;\n /** Time until the battery is completely discharged */\n dischargingTime: number;\n /** Battery charge level from 0 to 1 */\n level: number;\n /** Is battery information loading? */\n loading: boolean;\n}\n\n/** The use battery return type */\nexport interface UseBatteryStateReturn {\n /** Whether the battery api is supported*/\n supported: boolean;\n /** The use battery value type */\n value: UseBatteryValue;\n}\n\n/**\n * @name useBattery\n * @description - Hook for getting information about battery status\n * @category Browser\n * @usage low\n *\n * @browserapi navigator.getBattery https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery\n *\n * @returns {UseBatteryStateReturn} Object containing battery information & Battery API support\n *\n * @example\n * const { supported, loading, charging, chargingTime, dischargingTime, level } = useBattery();\n */\nexport const useBattery = (): UseBatteryStateReturn => {\n const supported =\n typeof navigator !== 'undefined' &&\n 'getBattery' in navigator &&\n typeof navigator.getBattery === 'function';\n\n const [value, setValue] = useState<UseBatteryValue>({\n loading: supported,\n level: 0,\n charging: false,\n chargingTime: 0,\n dischargingTime: 0\n });\n\n useEffect(() => {\n if (!supported) return;\n\n let battery: BatteryManager | null;\n\n const onChange = () =>\n setValue({\n loading: false,\n level: battery?.level ?? 0,\n charging: battery?.charging ?? false,\n dischargingTime: battery?.dischargingTime ?? 0,\n chargingTime: battery?.chargingTime ?? 0\n });\n\n navigator.getBattery().then((batteryManager) => {\n battery = batteryManager;\n onChange();\n\n battery.addEventListener('levelchange', onChange);\n battery.addEventListener('chargingchange', onChange);\n battery.addEventListener('chargingtimechange', onChange);\n battery.addEventListener('dischargingtimechange', onChange);\n });\n\n return () => {\n if (!battery) return;\n battery.removeEventListener('levelchange', onChange);\n battery.removeEventListener('chargingchange', onChange);\n battery.removeEventListener('chargingtimechange', onChange);\n battery.removeEventListener('dischargingtimechange', onChange);\n };\n }, []);\n\n return { supported, value };\n};\n"],"names":["useBattery","supported","value","setValue","useState","useEffect","battery","onChange","batteryManager"],"mappings":"yGAkDaA,EAAa,IAA6B,CACrD,MAAMC,EACJ,OAAO,UAAc,KACrB,eAAgB,WAChB,OAAO,UAAU,YAAe,WAE5B,CAACC,EAAOC,CAAQ,EAAIC,WAA0B,CAClD,QAASH,EACT,MAAO,EACP,SAAU,GACV,aAAc,EACd,gBAAiB,CAAA,CAClB,EAEDI,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACJ,EAAW,OAEhB,IAAIK,EAEJ,MAAMC,EAAW,IACfJ,EAAS,CACP,QAAS,GACT,MAAOG,GAAS,OAAS,EACzB,SAAUA,GAAS,UAAY,GAC/B,gBAAiBA,GAAS,iBAAmB,EAC7C,aAAcA,GAAS,cAAgB,CAAA,CACxC,EAEH,iBAAU,WAAA,EAAa,KAAME,GAAmB,CAC9CF,EAAUE,EACVD,EAAA,EAEAD,EAAQ,iBAAiB,cAAeC,CAAQ,EAChDD,EAAQ,iBAAiB,iBAAkBC,CAAQ,EACnDD,EAAQ,iBAAiB,qBAAsBC,CAAQ,EACvDD,EAAQ,iBAAiB,wBAAyBC,CAAQ,CAAA,CAC3D,EAEM,IAAM,CACND,IACLA,EAAQ,oBAAoB,cAAeC,CAAQ,EACnDD,EAAQ,oBAAoB,iBAAkBC,CAAQ,EACtDD,EAAQ,oBAAoB,qBAAsBC,CAAQ,EAC1DD,EAAQ,oBAAoB,wBAAyBC,CAAQ,EAAA,CAC/D,EACC,EAAE,EAEE,CAAE,UAAAN,EAAW,MAAAC,CAAA,CACtB"}
1
+ {"version":3,"file":"useBattery.cjs","names":[],"sources":["../../../../src/hooks/useBattery/useBattery.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport interface BatteryManager extends EventTarget {\n charging: boolean;\n chargingTime: number;\n dischargingTime: number;\n level: number;\n}\n\ndeclare global {\n interface Navigator {\n readonly getBattery: () => Promise<BatteryManager>;\n }\n}\n\n/** The use battery value type */\nexport interface UseBatteryValue {\n /** Is charging battery? */\n charging: boolean;\n /** Time until the battery is fully charged */\n chargingTime: number;\n /** Time until the battery is completely discharged */\n dischargingTime: number;\n /** Battery charge level from 0 to 1 */\n level: number;\n /** Is battery information loading? */\n loading: boolean;\n}\n\n/** The use battery return type */\nexport interface UseBatteryStateReturn {\n /** Whether the battery api is supported*/\n supported: boolean;\n /** The use battery value type */\n value: UseBatteryValue;\n}\n\n/**\n * @name useBattery\n * @description - Hook for getting information about battery status\n * @category Browser\n * @usage low\n *\n * @browserapi navigator.getBattery https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery\n *\n * @returns {UseBatteryStateReturn} Object containing battery information & Battery API support\n *\n * @example\n * const { supported, loading, charging, chargingTime, dischargingTime, level } = useBattery();\n */\nexport const useBattery = (): UseBatteryStateReturn => {\n const supported =\n typeof navigator !== 'undefined' &&\n 'getBattery' in navigator &&\n typeof navigator.getBattery === 'function';\n\n const [value, setValue] = useState<UseBatteryValue>({\n loading: supported,\n level: 0,\n charging: false,\n chargingTime: 0,\n dischargingTime: 0\n });\n\n useEffect(() => {\n if (!supported) return;\n\n let battery: BatteryManager | null;\n\n const onChange = () =>\n setValue({\n loading: false,\n level: battery?.level ?? 0,\n charging: battery?.charging ?? false,\n dischargingTime: battery?.dischargingTime ?? 0,\n chargingTime: battery?.chargingTime ?? 0\n });\n\n navigator.getBattery().then((batteryManager) => {\n battery = batteryManager;\n onChange();\n\n battery.addEventListener('levelchange', onChange);\n battery.addEventListener('chargingchange', onChange);\n battery.addEventListener('chargingtimechange', onChange);\n battery.addEventListener('dischargingtimechange', onChange);\n });\n\n return () => {\n if (!battery) return;\n battery.removeEventListener('levelchange', onChange);\n battery.removeEventListener('chargingchange', onChange);\n battery.removeEventListener('chargingtimechange', onChange);\n battery.removeEventListener('dischargingtimechange', onChange);\n };\n }, []);\n\n return { supported, value };\n};\n"],"mappings":"uEAkDA,IAAa,MAA0C,CACrD,IAAM,EACJ,OAAO,UAAc,KACrB,eAAgB,WAChB,OAAO,UAAU,YAAe,WAE5B,CAAC,EAAO,IAAA,EAAA,EAAA,UAAsC,CAClD,QAAS,EACT,MAAO,EACP,SAAU,GACV,aAAc,EACd,gBAAiB,EAClB,CAAC,CAmCF,OAjCA,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,EAAW,OAEhB,IAAI,EAEE,MACJ,EAAS,CACP,QAAS,GACT,MAAO,GAAS,OAAS,EACzB,SAAU,GAAS,UAAY,GAC/B,gBAAiB,GAAS,iBAAmB,EAC7C,aAAc,GAAS,cAAgB,EACxC,CAAC,CAYJ,OAVA,UAAU,YAAY,CAAC,KAAM,GAAmB,CAC9C,EAAU,EACV,GAAU,CAEV,EAAQ,iBAAiB,cAAe,EAAS,CACjD,EAAQ,iBAAiB,iBAAkB,EAAS,CACpD,EAAQ,iBAAiB,qBAAsB,EAAS,CACxD,EAAQ,iBAAiB,wBAAyB,EAAS,EAC3D,KAEW,CACN,IACL,EAAQ,oBAAoB,cAAe,EAAS,CACpD,EAAQ,oBAAoB,iBAAkB,EAAS,CACvD,EAAQ,oBAAoB,qBAAsB,EAAS,CAC3D,EAAQ,oBAAoB,wBAAyB,EAAS,IAE/D,EAAE,CAAC,CAEC,CAAE,YAAW,QAAO"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),p=u=>{const n=typeof navigator<"u"&&"bluetooth"in navigator&&!!navigator.bluetooth,{acceptAllDevices:d=!1,filters:s,optionalServices:l}=u??{},[f,c]=t.useState(!1),[e,r]=t.useState(void 0),[g,i]=t.useState(void 0),S=async()=>{if(!n)return;const o=await navigator.bluetooth.requestDevice({acceptAllDevices:d,optionalServices:l,...s&&{filters:s,acceptAllDevices:!1}});r(o)};return t.useEffect(()=>{if(!e?.gatt)return;const o=async()=>{const v=await e.gatt.connect();i(v),c(v.connected)},a=()=>{i(void 0),r(void 0),c(!1)};return e.addEventListener("gattserverdisconnected",a),o(),()=>{e.removeEventListener("gattserverdisconnected",a),e.gatt?.disconnect()}},[e]),{supported:n,connected:f,device:e,requestDevice:S,server:g}};exports.useBluetooth=p;
2
- //# sourceMappingURL=useBluetooth.cjs.map
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`react`);var t=t=>{let n=typeof navigator<`u`&&`bluetooth`in navigator&&!!navigator.bluetooth,{acceptAllDevices:r=!1,filters:i,optionalServices:a}=t??{},[o,s]=(0,e.useState)(!1),[c,l]=(0,e.useState)(void 0),[u,d]=(0,e.useState)(void 0);return(0,e.useEffect)(()=>{if(!c?.gatt)return;let e=async()=>{let e=await c.gatt.connect();d(e),s(e.connected)},t=()=>{d(void 0),l(void 0),s(!1)};return c.addEventListener(`gattserverdisconnected`,t),e(),()=>{c.removeEventListener(`gattserverdisconnected`,t),c.gatt?.disconnect()}},[c]),{supported:n,connected:o,device:c,requestDevice:async()=>{n&&l(await navigator.bluetooth.requestDevice({acceptAllDevices:r,optionalServices:a,...i&&{filters:i,acceptAllDevices:!1}}))},server:u}};exports.useBluetooth=t;
2
+ //# sourceMappingURL=useBluetooth.cjs.map