@siberiacancode/reactuse 0.2.11 → 0.2.13

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 (413) hide show
  1. package/README.md +71 -71
  2. package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
  3. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -1
  4. package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
  5. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs +1 -1
  6. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
  7. package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
  8. package/dist/cjs/hooks/useBattery/useBattery.cjs +1 -1
  9. package/dist/cjs/hooks/useBattery/useBattery.cjs.map +1 -1
  10. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +1 -1
  11. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs.map +1 -1
  12. package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
  13. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
  14. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
  15. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  16. package/dist/cjs/hooks/useClipboard/useClipboard.cjs +1 -1
  17. package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
  18. package/dist/cjs/hooks/useCookie/useCookie.cjs +1 -1
  19. package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
  20. package/dist/cjs/hooks/useCookies/useCookies.cjs +1 -1
  21. package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
  22. package/dist/cjs/hooks/useCopy/useCopy.cjs.map +1 -1
  23. package/dist/cjs/hooks/useCounter/useCounter.cjs +1 -1
  24. package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
  25. package/dist/cjs/hooks/useCssVar/useCssVar.cjs +1 -1
  26. package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
  27. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs.map +1 -1
  28. package/dist/cjs/hooks/useDebounceValue/useDebounceValue.cjs.map +1 -1
  29. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs +1 -1
  30. package/dist/cjs/hooks/useDeviceMotion/useDeviceMotion.cjs.map +1 -1
  31. package/dist/cjs/hooks/useDeviceOrientation/useDeviceOrientation.cjs.map +1 -1
  32. package/dist/cjs/hooks/useDevicePixelRatio/useDevicePixelRatio.cjs.map +1 -1
  33. package/dist/cjs/hooks/useDidUpdate/useDidUpdate.cjs.map +1 -1
  34. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs +1 -1
  35. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs.map +1 -1
  36. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs +1 -1
  37. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
  38. package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
  39. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs +1 -1
  40. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs.map +1 -1
  41. package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.cjs.map +1 -1
  42. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +1 -1
  43. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
  44. package/dist/cjs/hooks/useDropZone/useDropZone.cjs +1 -1
  45. package/dist/cjs/hooks/useDropZone/useDropZone.cjs.map +1 -1
  46. package/dist/cjs/hooks/useElementSize/useElementSize.cjs.map +1 -1
  47. package/dist/cjs/hooks/useEvent/useEvent.cjs.map +1 -1
  48. package/dist/cjs/hooks/useEventListener/useEventListener.cjs.map +1 -1
  49. package/dist/cjs/hooks/useEventSource/useEventSource.cjs +1 -1
  50. package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -1
  51. package/dist/cjs/hooks/useEyeDropper/useEyeDropper.cjs.map +1 -1
  52. package/dist/cjs/hooks/useFavicon/useFavicon.cjs +1 -1
  53. package/dist/cjs/hooks/useFavicon/useFavicon.cjs.map +1 -1
  54. package/dist/cjs/hooks/useField/useField.cjs +1 -1
  55. package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
  56. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs +1 -1
  57. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs.map +1 -1
  58. package/dist/cjs/hooks/useFocus/useFocus.cjs +1 -1
  59. package/dist/cjs/hooks/useFocus/useFocus.cjs.map +1 -1
  60. package/dist/cjs/hooks/useFps/useFps.cjs.map +1 -1
  61. package/dist/cjs/hooks/useFul/useFul.cjs.map +1 -1
  62. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs +1 -1
  63. package/dist/cjs/hooks/useFullscreen/useFullscreen.cjs.map +1 -1
  64. package/dist/cjs/hooks/useGamepad/useGamepad.cjs.map +1 -1
  65. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs +1 -1
  66. package/dist/cjs/hooks/useGeolocation/useGeolocation.cjs.map +1 -1
  67. package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
  68. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs +1 -1
  69. package/dist/cjs/hooks/useHotkeys/useHotkeys.cjs.map +1 -1
  70. package/dist/cjs/hooks/useHover/useHover.cjs +1 -1
  71. package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
  72. package/dist/cjs/hooks/useIdle/useIdle.cjs.map +1 -1
  73. package/dist/cjs/hooks/useImage/useImage.cjs.map +1 -1
  74. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +1 -1
  75. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
  76. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
  77. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  78. package/dist/cjs/hooks/useInterval/useInterval.cjs +1 -1
  79. package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
  80. package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.cjs.map +1 -1
  81. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +1 -1
  82. package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
  83. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs +1 -1
  84. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.cjs.map +1 -1
  85. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs +1 -1
  86. package/dist/cjs/hooks/useKeyboard/useKeyboard.cjs.map +1 -1
  87. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +1 -1
  88. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
  89. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs +1 -1
  90. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs.map +1 -1
  91. package/dist/cjs/hooks/useLatest/useLatest.cjs +1 -1
  92. package/dist/cjs/hooks/useLatest/useLatest.cjs.map +1 -1
  93. package/dist/cjs/hooks/useLess/useLess.cjs.map +1 -1
  94. package/dist/cjs/hooks/useList/useList.cjs.map +1 -1
  95. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs.map +1 -1
  96. package/dist/cjs/hooks/useLogger/useLogger.cjs.map +1 -1
  97. package/dist/cjs/hooks/useLongPress/useLongPress.cjs +1 -1
  98. package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
  99. package/dist/cjs/hooks/useMap/useMap.cjs.map +1 -1
  100. package/dist/cjs/hooks/useMeasure/useMeasure.cjs.map +1 -1
  101. package/dist/cjs/hooks/useMediaQuery/useMediaQuery.cjs.map +1 -1
  102. package/dist/cjs/hooks/useMemory/useMemory.cjs +1 -1
  103. package/dist/cjs/hooks/useMemory/useMemory.cjs.map +1 -1
  104. package/dist/cjs/hooks/useMount/useMount.cjs.map +1 -1
  105. package/dist/cjs/hooks/useMouse/useMouse.cjs.map +1 -1
  106. package/dist/cjs/hooks/useMutation/useMutation.cjs +1 -1
  107. package/dist/cjs/hooks/useMutation/useMutation.cjs.map +1 -1
  108. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs +1 -1
  109. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  110. package/dist/cjs/hooks/useNetwork/useNetwork.cjs +1 -1
  111. package/dist/cjs/hooks/useNetwork/useNetwork.cjs.map +1 -1
  112. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
  113. package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
  114. package/dist/cjs/hooks/useOnline/useOnline.cjs.map +1 -1
  115. package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs.map +1 -1
  116. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
  117. package/dist/cjs/hooks/useOrientation/useOrientation.cjs.map +1 -1
  118. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs +1 -1
  119. package/dist/cjs/hooks/useOtpCredential/useOtpCredential.cjs.map +1 -1
  120. package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs +1 -1
  121. package/dist/cjs/hooks/usePageLeave/usePageLeave.cjs.map +1 -1
  122. package/dist/cjs/hooks/usePaint/usePaint.cjs +1 -1
  123. package/dist/cjs/hooks/usePaint/usePaint.cjs.map +1 -1
  124. package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
  125. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +1 -1
  126. package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
  127. package/dist/cjs/hooks/usePermission/usePermission.cjs +1 -1
  128. package/dist/cjs/hooks/usePermission/usePermission.cjs.map +1 -1
  129. package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs.map +1 -1
  130. package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
  131. package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs.map +1 -1
  132. package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs.map +1 -1
  133. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs.map +1 -1
  134. package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs.map +1 -1
  135. package/dist/cjs/hooks/usePrevious/usePrevious.cjs +1 -1
  136. package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
  137. package/dist/cjs/hooks/useQuery/useQuery.cjs +1 -1
  138. package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
  139. package/dist/cjs/hooks/useQueue/useQueue.cjs.map +1 -1
  140. package/dist/cjs/hooks/useRaf/useRaf.cjs +1 -1
  141. package/dist/cjs/hooks/useRaf/useRaf.cjs.map +1 -1
  142. package/dist/cjs/hooks/useRafValue/useRafValue.cjs.map +1 -1
  143. package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
  144. package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs.map +1 -1
  145. package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs.map +1 -1
  146. package/dist/cjs/hooks/useRerender/useRerender.cjs.map +1 -1
  147. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +1 -1
  148. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
  149. package/dist/cjs/hooks/useScreenOrientation/useScreenOrientation.cjs +1 -1
  150. package/dist/cjs/hooks/useScreenOrientation/useScreenOrientation.cjs.map +1 -1
  151. package/dist/cjs/hooks/useScript/useScript.cjs +1 -1
  152. package/dist/cjs/hooks/useScript/useScript.cjs.map +1 -1
  153. package/dist/cjs/hooks/useScroll/useScroll.cjs +1 -1
  154. package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
  155. package/dist/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
  156. package/dist/cjs/hooks/useScrollTo/useScrollTo.cjs.map +1 -1
  157. package/dist/cjs/hooks/useSet/useSet.cjs.map +1 -1
  158. package/dist/cjs/hooks/useShare/useShare.cjs.map +1 -1
  159. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +1 -1
  160. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -1
  161. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs +1 -1
  162. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs.map +1 -1
  163. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs.map +1 -1
  164. package/dist/cjs/hooks/useStep/useStep.cjs.map +1 -1
  165. package/dist/cjs/hooks/useSticky/useSticky.cjs +1 -1
  166. package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
  167. package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs +1 -1
  168. package/dist/cjs/hooks/useStopwatch/useStopwatch.cjs.map +1 -1
  169. package/dist/cjs/hooks/useStorage/useStorage.cjs +1 -1
  170. package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
  171. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +1 -1
  172. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
  173. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs +1 -1
  174. package/dist/cjs/hooks/useTextSelection/useTextSelection.cjs.map +1 -1
  175. package/dist/cjs/hooks/useThrottleCallback/useThrottleCallback.cjs.map +1 -1
  176. package/dist/cjs/hooks/useThrottleValue/useThrottleValue.cjs.map +1 -1
  177. package/dist/cjs/hooks/useTime/useTime.cjs.map +1 -1
  178. package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
  179. package/dist/cjs/hooks/useTimer/useTimer.cjs +1 -1
  180. package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
  181. package/dist/cjs/hooks/useToggle/useToggle.cjs.map +1 -1
  182. package/dist/cjs/hooks/useUnmount/useUnmount.cjs.map +1 -1
  183. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs +1 -1
  184. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
  185. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs +1 -1
  186. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
  187. package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
  188. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +1 -1
  189. package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
  190. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +1 -1
  191. package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
  192. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
  193. package/dist/cjs/hooks/useWindowFocus/useWindowFocus.cjs.map +1 -1
  194. package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs.map +1 -1
  195. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs +1 -1
  196. package/dist/cjs/hooks/useWindowSize/useWindowSize.cjs.map +1 -1
  197. package/dist/cjs/hooks/useWizard/useWizard.cjs +1 -1
  198. package/dist/cjs/hooks/useWizard/useWizard.cjs.map +1 -1
  199. package/dist/cjs/utils/helpers/copy.cjs.map +1 -1
  200. package/dist/cjs/utils/helpers/debounce.cjs.map +1 -1
  201. package/dist/cjs/utils/helpers/getDate.cjs.map +1 -1
  202. package/dist/cjs/utils/helpers/getElement.cjs.map +1 -1
  203. package/dist/cjs/utils/helpers/getRetry.cjs.map +1 -1
  204. package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
  205. package/dist/cjs/utils/helpers/throttle.cjs.map +1 -1
  206. package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
  207. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -1
  208. package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
  209. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +1 -1
  210. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
  211. package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
  212. package/dist/esm/hooks/useBattery/useBattery.mjs +10 -10
  213. package/dist/esm/hooks/useBattery/useBattery.mjs.map +1 -1
  214. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs +14 -15
  215. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs.map +1 -1
  216. package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
  217. package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
  218. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
  219. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
  220. package/dist/esm/hooks/useClipboard/useClipboard.mjs +13 -14
  221. package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
  222. package/dist/esm/hooks/useConst/useConst.mjs.map +1 -1
  223. package/dist/esm/hooks/useCookie/useCookie.mjs +27 -27
  224. package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
  225. package/dist/esm/hooks/useCookies/useCookies.mjs +19 -19
  226. package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
  227. package/dist/esm/hooks/useCopy/useCopy.mjs.map +1 -1
  228. package/dist/esm/hooks/useCounter/useCounter.mjs +5 -6
  229. package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
  230. package/dist/esm/hooks/useCssVar/useCssVar.mjs +13 -14
  231. package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
  232. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs.map +1 -1
  233. package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs.map +1 -1
  234. package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
  235. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs +18 -19
  236. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
  237. package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs.map +1 -1
  238. package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs.map +1 -1
  239. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
  240. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs +5 -11
  241. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
  242. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs +28 -28
  243. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
  244. package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
  245. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs +15 -15
  246. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
  247. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs.map +1 -1
  248. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +11 -13
  249. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
  250. package/dist/esm/hooks/useDropZone/useDropZone.mjs +27 -28
  251. package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
  252. package/dist/esm/hooks/useElementSize/useElementSize.mjs.map +1 -1
  253. package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
  254. package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
  255. package/dist/esm/hooks/useEventSource/useEventSource.mjs +37 -40
  256. package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
  257. package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs.map +1 -1
  258. package/dist/esm/hooks/useFavicon/useFavicon.mjs +11 -12
  259. package/dist/esm/hooks/useFavicon/useFavicon.mjs.map +1 -1
  260. package/dist/esm/hooks/useField/useField.mjs +45 -49
  261. package/dist/esm/hooks/useField/useField.mjs.map +1 -1
  262. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs +22 -25
  263. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
  264. package/dist/esm/hooks/useFocus/useFocus.mjs +24 -32
  265. package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
  266. package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
  267. package/dist/esm/hooks/useFul/useFul.mjs.map +1 -1
  268. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs +23 -24
  269. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
  270. package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
  271. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs +24 -24
  272. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs.map +1 -1
  273. package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
  274. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs +24 -25
  275. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
  276. package/dist/esm/hooks/useHover/useHover.mjs +20 -22
  277. package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
  278. package/dist/esm/hooks/useIdle/useIdle.mjs.map +1 -1
  279. package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
  280. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +14 -14
  281. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
  282. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +19 -20
  283. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
  284. package/dist/esm/hooks/useInterval/useInterval.mjs +8 -8
  285. package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
  286. package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs.map +1 -1
  287. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +22 -24
  288. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
  289. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs +23 -23
  290. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
  291. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs +16 -22
  292. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
  293. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +20 -20
  294. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
  295. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs +6 -6
  296. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
  297. package/dist/esm/hooks/useLatest/useLatest.mjs +12 -4
  298. package/dist/esm/hooks/useLatest/useLatest.mjs.map +1 -1
  299. package/dist/esm/hooks/useLess/useLess.mjs.map +1 -1
  300. package/dist/esm/hooks/useList/useList.mjs.map +1 -1
  301. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
  302. package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
  303. package/dist/esm/hooks/useLongPress/useLongPress.mjs +23 -27
  304. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  305. package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
  306. package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
  307. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
  308. package/dist/esm/hooks/useMemory/useMemory.mjs +1 -1
  309. package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
  310. package/dist/esm/hooks/useMount/useMount.mjs.map +1 -1
  311. package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
  312. package/dist/esm/hooks/useMutation/useMutation.mjs +38 -42
  313. package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
  314. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +12 -12
  315. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
  316. package/dist/esm/hooks/useNetwork/useNetwork.mjs +28 -28
  317. package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
  318. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
  319. package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
  320. package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
  321. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
  322. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
  323. package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
  324. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +12 -13
  325. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
  326. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs +6 -6
  327. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs.map +1 -1
  328. package/dist/esm/hooks/usePaint/usePaint.mjs +87 -93
  329. package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
  330. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  331. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +17 -19
  332. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
  333. package/dist/esm/hooks/usePermission/usePermission.mjs +13 -13
  334. package/dist/esm/hooks/usePermission/usePermission.mjs.map +1 -1
  335. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
  336. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
  337. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
  338. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
  339. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
  340. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
  341. package/dist/esm/hooks/usePrevious/usePrevious.mjs +4 -4
  342. package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
  343. package/dist/esm/hooks/useQuery/useQuery.mjs +39 -41
  344. package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
  345. package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
  346. package/dist/esm/hooks/useRaf/useRaf.mjs +21 -21
  347. package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
  348. package/dist/esm/hooks/useRafValue/useRafValue.mjs.map +1 -1
  349. package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
  350. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
  351. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
  352. package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
  353. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +16 -17
  354. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
  355. package/dist/esm/hooks/useScreenOrientation/useScreenOrientation.mjs +11 -11
  356. package/dist/esm/hooks/useScreenOrientation/useScreenOrientation.mjs.map +1 -1
  357. package/dist/esm/hooks/useScript/useScript.mjs +16 -16
  358. package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
  359. package/dist/esm/hooks/useScroll/useScroll.mjs +37 -39
  360. package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
  361. package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
  362. package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
  363. package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
  364. package/dist/esm/hooks/useShare/useShare.mjs.map +1 -1
  365. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +35 -35
  366. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
  367. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +36 -42
  368. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
  369. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
  370. package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
  371. package/dist/esm/hooks/useSticky/useSticky.mjs +12 -12
  372. package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
  373. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs +10 -11
  374. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
  375. package/dist/esm/hooks/useStorage/useStorage.mjs +27 -27
  376. package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
  377. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +21 -24
  378. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
  379. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs +7 -7
  380. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs.map +1 -1
  381. package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs.map +1 -1
  382. package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs.map +1 -1
  383. package/dist/esm/hooks/useTime/useTime.mjs.map +1 -1
  384. package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
  385. package/dist/esm/hooks/useTimer/useTimer.mjs +51 -54
  386. package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
  387. package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
  388. package/dist/esm/hooks/useUnmount/useUnmount.mjs.map +1 -1
  389. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs +38 -38
  390. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
  391. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +29 -29
  392. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
  393. package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
  394. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +16 -16
  395. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
  396. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +28 -38
  397. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
  398. package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
  399. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
  400. package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
  401. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs +9 -9
  402. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs.map +1 -1
  403. package/dist/esm/hooks/useWizard/useWizard.mjs +9 -11
  404. package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
  405. package/dist/esm/utils/helpers/copy.mjs.map +1 -1
  406. package/dist/esm/utils/helpers/debounce.mjs.map +1 -1
  407. package/dist/esm/utils/helpers/getDate.mjs.map +1 -1
  408. package/dist/esm/utils/helpers/getElement.mjs.map +1 -1
  409. package/dist/esm/utils/helpers/getRetry.mjs.map +1 -1
  410. package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
  411. package/dist/esm/utils/helpers/throttle.mjs.map +1 -1
  412. package/dist/types/hooks/useLatest/useLatest.d.ts +7 -2
  413. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"useFocus.mjs","sources":["../../../../src/hooks/useFocus/useFocus.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use focus options type */\nexport interface UseFocusOptions {\n /** The initial focus state of the target */\n initialValue?: boolean;\n /** The on blur callback */\n onBlur?: (event: FocusEvent) => void;\n /** The on focus callback */\n onFocus?: (event: FocusEvent) => void;\n}\n\n/** The use focus return type */\nexport interface UseFocusReturn {\n /** The boolean state value of the target */\n focused: boolean;\n /** Blur the target */\n blur: () => void;\n /** Focus the target */\n focus: () => void;\n}\n\nexport interface UseFocus {\n (target: HookTarget, options?: UseFocusOptions): UseFocusReturn;\n\n <Target extends Element>(\n options?: UseFocusOptions,\n target?: never\n ): UseFocusReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useFocus\n * @description - Hook that allows you to focus on a specific element\n * @category Browser\n *\n * @overload\n * @param {HookTarget} target The target element to focus\n * @param {boolean} [options.initialValue=false] The initial focus state of the target\n * @param {(event: FocusEvent) => void} [options.onFocus] The callback function to be invoked on focus\n * @param {(event: FocusEvent) => void} [options.onBlur] The callback function to be invoked on blur\n * @returns {UseFocusReturn} An object with focus state and methods\n *\n * @example\n * const { focus, blur, focused } = useFocus(ref);\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.initialValue=false] The initial focus state of the target\n * @param {(event: FocusEvent) => void} [options.onFocus] The callback function to be invoked on focus\n * @param {(event: FocusEvent) => void} [options.onBlur] The callback function to be invoked on blur\n * @returns {UseFocusReturn & { ref: StateRef<Target> }} An object with focus state, methods and ref\n *\n * @example\n * const { ref, focus, blur, focused } = useFocus();\n */\nexport const useFocus = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = ((target ? params[1] : params[0]) as UseFocusOptions) ?? {};\n const initialValue = options.initialValue ?? false;\n\n const [focused, setFocused] = useState(initialValue);\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n const elementRef = useRef<HTMLElement | null>(null);\n\n const focus = () => elementRef.current?.focus();\n const blur = () => elementRef.current?.blur();\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = (target ? getElement(target) : internalRef.current) as HTMLElement;\n if (!element) return;\n\n elementRef.current = element;\n\n const onFocus = (event: FocusEvent) => {\n internalOptionsRef.current?.onFocus?.(event);\n if (!focus || (event.target as HTMLElement).matches?.(':focus-visible')) setFocused(true);\n };\n\n const onBlur = (event: FocusEvent) => {\n internalOptionsRef.current?.onBlur?.(event);\n setFocused(false);\n };\n\n if (initialValue) element.focus();\n\n element.addEventListener('focus', onFocus);\n element.addEventListener('blur', onBlur);\n\n return () => {\n element.removeEventListener('focus', onFocus);\n element.removeEventListener('blur', onBlur);\n };\n }, [target, internalRef.state]);\n\n if (target) return { focus, blur, focused };\n return {\n ref: internalRef,\n focus,\n blur,\n focused\n };\n}) as UseFocus;\n"],"names":["useFocus","params","target","isTarget","options","initialValue","focused","setFocused","useState","internalRef","useRefState","internalOptionsRef","useRef","elementRef","focus","_a","blur","useEffect","element","getElement","onFocus","event","_b","_d","_c","onBlur"],"mappings":";;;;AAgEa,MAAAA,IAAY,IAAIC,MAAkB;AACvC,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,KAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,MAA0B,CAAC,GACpEI,IAAeD,EAAQ,gBAAgB,IAEvC,CAACE,GAASC,CAAU,IAAIC,EAASH,CAAY,GAC7CI,IAAcC,EAAqB,GACnCC,IAAqBC,EAAOR,CAAO;AACzC,EAAAO,EAAmB,UAAUP;AAEvB,QAAAS,IAAaD,EAA2B,IAAI,GAE5CE,IAAQ,MAAA;;AAAM,YAAAC,IAAAF,EAAW,YAAX,gBAAAE,EAAoB;AAAA,KAClCC,IAAO,MAAA;;AAAM,YAAAD,IAAAF,EAAW,YAAX,gBAAAE,EAAoB;AAAA;AA8BvC,SA5BAE,EAAU,MAAM;AACd,QAAI,CAACf,KAAU,CAACO,EAAY,MAAO;AACnC,UAAMS,IAAWhB,IAASiB,EAAWjB,CAAM,IAAIO,EAAY;AAC3D,QAAI,CAACS,EAAS;AAEd,IAAAL,EAAW,UAAUK;AAEf,UAAAE,IAAU,CAACC,MAAsB;;AAClB,OAAAC,KAAAP,IAAAJ,EAAA,YAAA,gBAAAI,EAAS,YAAT,QAAAO,EAAA,KAAAP,GAAmBM,KAClC,CAACP,MAAUS,KAAAC,IAAAH,EAAM,QAAuB,YAA7B,QAAAE,EAAA,KAAAC,GAAuC,wBAA8B,EAAI;AAAA,IAC1F,GAEMC,IAAS,CAACJ,MAAsB;;AACjB,OAAAC,KAAAP,IAAAJ,EAAA,YAAA,gBAAAI,EAAS,WAAT,QAAAO,EAAA,KAAAP,GAAkBM,IACrCd,EAAW,EAAK;AAAA,IAClB;AAEI,WAAAF,OAAsB,MAAM,GAExBa,EAAA,iBAAiB,SAASE,CAAO,GACjCF,EAAA,iBAAiB,QAAQO,CAAM,GAEhC,MAAM;AACH,MAAAP,EAAA,oBAAoB,SAASE,CAAO,GACpCF,EAAA,oBAAoB,QAAQO,CAAM;AAAA,IAC5C;AAAA,EACC,GAAA,CAACvB,GAAQO,EAAY,KAAK,CAAC,GAE1BP,IAAe,EAAE,OAAAY,GAAO,MAAAE,GAAM,SAAAV,EAAQ,IACnC;AAAA,IACL,KAAKG;AAAA,IACL,OAAAK;AAAA,IACA,MAAAE;AAAA,IACA,SAAAV;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"useFocus.mjs","sources":["../../../../src/hooks/useFocus/useFocus.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use focus options type */\nexport interface UseFocusOptions {\n /** The initial focus state of the target */\n initialValue?: boolean;\n /** The on blur callback */\n onBlur?: (event: FocusEvent) => void;\n /** The on focus callback */\n onFocus?: (event: FocusEvent) => void;\n}\n\n/** The use focus return type */\nexport interface UseFocusReturn {\n /** The boolean state value of the target */\n focused: boolean;\n /** Blur the target */\n blur: () => void;\n /** Focus the target */\n focus: () => void;\n}\n\nexport interface UseFocus {\n (target: HookTarget, options?: UseFocusOptions): UseFocusReturn;\n\n <Target extends Element>(\n options?: UseFocusOptions,\n target?: never\n ): UseFocusReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useFocus\n * @description - Hook that allows you to focus on a specific element\n * @category Browser\n *\n * @overload\n * @param {HookTarget} target The target element to focus\n * @param {boolean} [options.initialValue=false] The initial focus state of the target\n * @param {(event: FocusEvent) => void} [options.onFocus] The callback function to be invoked on focus\n * @param {(event: FocusEvent) => void} [options.onBlur] The callback function to be invoked on blur\n * @returns {UseFocusReturn} An object with focus state and methods\n *\n * @example\n * const { focus, blur, focused } = useFocus(ref);\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.initialValue=false] The initial focus state of the target\n * @param {(event: FocusEvent) => void} [options.onFocus] The callback function to be invoked on focus\n * @param {(event: FocusEvent) => void} [options.onBlur] The callback function to be invoked on blur\n * @returns {UseFocusReturn & { ref: StateRef<Target> }} An object with focus state, methods and ref\n *\n * @example\n * const { ref, focus, blur, focused } = useFocus();\n */\nexport const useFocus = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = ((target ? params[1] : params[0]) as UseFocusOptions) ?? {};\n const initialValue = options.initialValue ?? false;\n\n const [focused, setFocused] = useState(initialValue);\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n const elementRef = useRef<HTMLElement | null>(null);\n\n const focus = () => elementRef.current?.focus();\n const blur = () => elementRef.current?.blur();\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = (target ? getElement(target) : internalRef.current) as HTMLElement;\n if (!element) return;\n\n elementRef.current = element;\n\n const onFocus = (event: FocusEvent) => {\n internalOptionsRef.current?.onFocus?.(event);\n if (!focus || (event.target as HTMLElement).matches?.(':focus-visible')) setFocused(true);\n };\n\n const onBlur = (event: FocusEvent) => {\n internalOptionsRef.current?.onBlur?.(event);\n setFocused(false);\n };\n\n if (initialValue) element.focus();\n\n element.addEventListener('focus', onFocus);\n element.addEventListener('blur', onBlur);\n\n return () => {\n element.removeEventListener('focus', onFocus);\n element.removeEventListener('blur', onBlur);\n };\n }, [target, internalRef.state]);\n\n if (target) return { focus, blur, focused };\n return {\n ref: internalRef,\n focus,\n blur,\n focused\n };\n}) as UseFocus;\n"],"names":["useFocus","params","target","isTarget","options","initialValue","focused","setFocused","useState","internalRef","useRefState","internalOptionsRef","useRef","elementRef","focus","blur","useEffect","element","getElement","onFocus","event","onBlur"],"mappings":";;;;AAgEO,MAAMA,IAAY,IAAIC,MAAkB;AAC7C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,KAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,MAA0B,CAAA,GACnEI,IAAeD,EAAQ,gBAAgB,IAEvC,CAACE,GAASC,CAAU,IAAIC,EAASH,CAAY,GAC7CI,IAAcC,EAAA,GACdC,IAAqBC,EAAOR,CAAO;AACzC,EAAAO,EAAmB,UAAUP;AAE7B,QAAMS,IAAaD,EAA2B,IAAI,GAE5CE,IAAQ,MAAMD,EAAW,SAAS,MAAA,GAClCE,IAAO,MAAMF,EAAW,SAAS,KAAA;AA8BvC,SA5BAG,EAAU,MAAM;AACd,QAAI,CAACd,KAAU,CAACO,EAAY,MAAO;AACnC,UAAMQ,IAAWf,IAASgB,EAAWhB,CAAM,IAAIO,EAAY;AAC3D,QAAI,CAACQ,EAAS;AAEd,IAAAJ,EAAW,UAAUI;AAErB,UAAME,IAAU,CAACC,MAAsB;AACrC,MAAAT,EAAmB,SAAS,UAAUS,CAAK,IACvC,CAACN,KAAUM,EAAM,OAAuB,UAAU,gBAAgB,QAAc,EAAI;AAAA,IAAA,GAGpFC,IAAS,CAACD,MAAsB;AACpC,MAAAT,EAAmB,SAAS,SAASS,CAAK,GAC1Cb,EAAW,EAAK;AAAA,IAAA;AAGlB,WAAIF,OAAsB,MAAA,GAE1BY,EAAQ,iBAAiB,SAASE,CAAO,GACzCF,EAAQ,iBAAiB,QAAQI,CAAM,GAEhC,MAAM;AACX,MAAAJ,EAAQ,oBAAoB,SAASE,CAAO,GAC5CF,EAAQ,oBAAoB,QAAQI,CAAM;AAAA,IAAA;AAAA,EAC5C,GACC,CAACnB,GAAQO,EAAY,KAAK,CAAC,GAE1BP,IAAe,EAAE,OAAAY,GAAO,MAAAC,GAAM,SAAAT,EAAA,IAC3B;AAAA,IACL,KAAKG;AAAA,IACL,OAAAK;AAAA,IACA,MAAAC;AAAA,IACA,SAAAT;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFps.mjs","sources":["../../../../src/hooks/useFps/useFps.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useFps\n * @description - Hook that measures frames per second\n * @category Sensors\n *\n * @browserapi requestAnimationFrame https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n *\n * @returns {number} A number which determines frames per second\n *\n * @example\n * const fps = useFps();\n */\nexport const useFps = () => {\n const [fps, setFps] = useState(0);\n\n useEffect(() => {\n let frameCount = 0;\n let startTime = performance.now();\n let rafId: number;\n\n const onRequestAnimationFrame = () => {\n frameCount += 1;\n const currentTime = performance.now();\n const elapsedTime = currentTime - startTime;\n\n if (elapsedTime >= 1000) {\n const calculatedFps = Math.round((frameCount * 1000) / elapsedTime);\n setFps(calculatedFps);\n frameCount = 0;\n startTime = currentTime;\n }\n\n rafId = requestAnimationFrame(onRequestAnimationFrame);\n };\n\n rafId = requestAnimationFrame(onRequestAnimationFrame);\n\n return () => {\n cancelAnimationFrame(rafId);\n };\n }, []);\n\n return fps;\n};\n"],"names":["useFps","fps","setFps","useState","useEffect","frameCount","startTime","rafId","onRequestAnimationFrame","currentTime","elapsedTime","calculatedFps"],"mappings":";AAcO,MAAMA,IAAS,MAAM;AAC1B,QAAM,CAACC,GAAKC,CAAM,IAAIC,EAAS,CAAC;AAEhC,SAAAC,EAAU,MAAM;AACd,QAAIC,IAAa,GACbC,IAAY,YAAY,IAAI,GAC5BC;AAEJ,UAAMC,IAA0B,MAAM;AACtB,MAAAH,KAAA;AACR,YAAAI,IAAc,YAAY,IAAI,GAC9BC,IAAcD,IAAcH;AAElC,UAAII,KAAe,KAAM;AACvB,cAAMC,IAAgB,KAAK,MAAON,IAAa,MAAQK,CAAW;AAClE,QAAAR,EAAOS,CAAa,GACPN,IAAA,GACDC,IAAAG;AAAA,MAAA;AAGd,MAAAF,IAAQ,sBAAsBC,CAAuB;AAAA,IACvD;AAEA,WAAAD,IAAQ,sBAAsBC,CAAuB,GAE9C,MAAM;AACX,2BAAqBD,CAAK;AAAA,IAC5B;AAAA,EACF,GAAG,EAAE,GAEEN;AACT;"}
1
+ {"version":3,"file":"useFps.mjs","sources":["../../../../src/hooks/useFps/useFps.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * @name useFps\n * @description - Hook that measures frames per second\n * @category Sensors\n *\n * @browserapi requestAnimationFrame https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n *\n * @returns {number} A number which determines frames per second\n *\n * @example\n * const fps = useFps();\n */\nexport const useFps = () => {\n const [fps, setFps] = useState(0);\n\n useEffect(() => {\n let frameCount = 0;\n let startTime = performance.now();\n let rafId: number;\n\n const onRequestAnimationFrame = () => {\n frameCount += 1;\n const currentTime = performance.now();\n const elapsedTime = currentTime - startTime;\n\n if (elapsedTime >= 1000) {\n const calculatedFps = Math.round((frameCount * 1000) / elapsedTime);\n setFps(calculatedFps);\n frameCount = 0;\n startTime = currentTime;\n }\n\n rafId = requestAnimationFrame(onRequestAnimationFrame);\n };\n\n rafId = requestAnimationFrame(onRequestAnimationFrame);\n\n return () => {\n cancelAnimationFrame(rafId);\n };\n }, []);\n\n return fps;\n};\n"],"names":["useFps","fps","setFps","useState","useEffect","frameCount","startTime","rafId","onRequestAnimationFrame","currentTime","elapsedTime","calculatedFps"],"mappings":";AAcO,MAAMA,IAAS,MAAM;AAC1B,QAAM,CAACC,GAAKC,CAAM,IAAIC,EAAS,CAAC;AAEhC,SAAAC,EAAU,MAAM;AACd,QAAIC,IAAa,GACbC,IAAY,YAAY,IAAA,GACxBC;AAEJ,UAAMC,IAA0B,MAAM;AACpC,MAAAH,KAAc;AACd,YAAMI,IAAc,YAAY,IAAA,GAC1BC,IAAcD,IAAcH;AAElC,UAAII,KAAe,KAAM;AACvB,cAAMC,IAAgB,KAAK,MAAON,IAAa,MAAQK,CAAW;AAClE,QAAAR,EAAOS,CAAa,GACpBN,IAAa,GACbC,IAAYG;AAAA,MAAA;AAGd,MAAAF,IAAQ,sBAAsBC,CAAuB;AAAA,IAAA;AAGvD,WAAAD,IAAQ,sBAAsBC,CAAuB,GAE9C,MAAM;AACX,2BAAqBD,CAAK;AAAA,IAAA;AAAA,EAC5B,GACC,EAAE,GAEEN;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFul.mjs","sources":["../../../../src/hooks/useFul/useFul.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * @name useFul\n * @description - Hook that can be so useful\n * @category Humor\n *\n * @warning - This hook is a joke. Please do not use it in production code!\n *\n * @template Value The type of the value\n * @param {Value} [value] The value to be returned\n * @returns {Value} The value passed to the hook\n *\n * @example\n * const value = useFul(state);\n */\nexport const useFul = <Value>(value?: Value) => {\n useEffect(() => {\n console.warn(\"Warning: You forgot to delete the 'useFul' hook.\");\n }, []);\n\n return value;\n};\n"],"names":["useFul","value","useEffect"],"mappings":";AAgBa,MAAAA,IAAS,CAAQC,OAC5BC,EAAU,MAAM;AACd,UAAQ,KAAK,kDAAkD;AACjE,GAAG,EAAE,GAEED;"}
1
+ {"version":3,"file":"useFul.mjs","sources":["../../../../src/hooks/useFul/useFul.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * @name useFul\n * @description - Hook that can be so useful\n * @category Humor\n *\n * @warning - This hook is a joke. Please do not use it in production code!\n *\n * @template Value The type of the value\n * @param {Value} [value] The value to be returned\n * @returns {Value} The value passed to the hook\n *\n * @example\n * const value = useFul(state);\n */\nexport const useFul = <Value>(value?: Value) => {\n useEffect(() => {\n console.warn(\"Warning: You forgot to delete the 'useFul' hook.\");\n }, []);\n\n return value;\n};\n"],"names":["useFul","value","useEffect"],"mappings":";AAgBO,MAAMA,IAAS,CAAQC,OAC5BC,EAAU,MAAM;AACd,UAAQ,KAAK,kDAAkD;AAAA,GAC9D,EAAE,GAEED;"}
@@ -1,45 +1,44 @@
1
1
  import { useState as m, useEffect as E } from "react";
2
- import r from "screenfull";
2
+ import e from "screenfull";
3
3
  import { useRefState as d } from "../useRefState/useRefState.mjs";
4
4
  import { isTarget as h } from "../../utils/helpers/isTarget.mjs";
5
5
  import { getElement as b } from "../../utils/helpers/getElement.mjs";
6
- const V = (...n) => {
7
- const f = h(n[0]) ? n[0] : void 0, e = f ? n[1] : n[0], [c, g] = m((e == null ? void 0 : e.initialValue) ?? !1), o = d(), i = () => {
8
- var t, l;
9
- r.isEnabled && (r.isFullscreen ? (t = e == null ? void 0 : e.onEnter) == null || t.call(e) : (r.off("change", i), (l = e == null ? void 0 : e.onExit) == null || l.call(e)), g(r.isFullscreen));
6
+ const S = (...t) => {
7
+ const n = h(t[0]) ? t[0] : void 0, r = n ? t[1] : t[0], [o, a] = m(r?.initialValue ?? !1), l = d(), i = () => {
8
+ e.isEnabled && (e.isFullscreen ? r?.onEnter?.() : (e.off("change", i), r?.onExit?.()), a(e.isFullscreen));
10
9
  }, s = () => {
11
- const t = f ? b(f) : o.current;
12
- if (t && r.isEnabled)
10
+ const u = n ? b(n) : l.current;
11
+ if (u && e.isEnabled)
13
12
  try {
14
- r.request(t), r.on("change", i);
15
- } catch (l) {
16
- console.error(l);
13
+ e.request(u), e.on("change", i);
14
+ } catch (g) {
15
+ console.error(g);
17
16
  }
18
- }, u = () => {
19
- r.isEnabled && r.exit();
20
- }, a = () => {
21
- if (c) return u();
17
+ }, f = () => {
18
+ e.isEnabled && e.exit();
19
+ }, c = () => {
20
+ if (o) return f();
22
21
  s();
23
22
  };
24
23
  return E(
25
24
  () => () => {
26
- r.isEnabled && r.off("change", i);
25
+ e.isEnabled && e.off("change", i);
27
26
  },
28
27
  []
29
- ), f ? {
28
+ ), n ? {
30
29
  enter: s,
31
- exit: u,
32
- toggle: a,
33
- value: c
30
+ exit: f,
31
+ toggle: c,
32
+ value: o
34
33
  } : {
35
- ref: o,
34
+ ref: l,
36
35
  enter: s,
37
- exit: u,
38
- toggle: a,
39
- value: c
36
+ exit: f,
37
+ toggle: c,
38
+ value: o
40
39
  };
41
40
  };
42
41
  export {
43
- V as useFullscreen
42
+ S as useFullscreen
44
43
  };
45
44
  //# sourceMappingURL=useFullscreen.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFullscreen.mjs","sources":["../../../../src/hooks/useFullscreen/useFullscreen.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport screenfull from 'screenfull';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use fullscreen options type */\nexport interface UseFullScreenOptions {\n /** initial value */\n initialValue?: boolean;\n /** on enter fullscreen */\n onEnter?: () => void;\n /** on exit fullscreen */\n onExit?: () => void;\n}\n\n/** The use click outside return type */\nexport interface UseFullScreenReturn {\n /** The fullscreen state */\n value: boolean;\n /** The fullscreen enter method */\n enter: () => void;\n /** The fullscreen exit method */\n exit: () => void;\n /** The fullscreen toggle method */\n toggle: () => void;\n}\n\nexport interface UseFullScreen {\n (target: HookTarget, options?: UseFullScreenOptions): UseFullScreenReturn;\n\n <Target extends Element>(\n options?: UseFullScreenOptions,\n target?: never\n ): UseFullScreenReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useFullscreen\n * @description - Hook to handle fullscreen events\n * @category Browser\n *\n * @overload\n * @param {HookTarget} target The target element for fullscreen\n * @param {boolean} [options.initialValue=false] initial value of fullscreen\n * @param {() => void} [options.onEnter] on enter fullscreen\n * @param {() => void} [options.onExit] on exit fullscreen\n * @returns {UseFullScreenReturn} An object with the fullscreen state and methods\n *\n * @example\n * const { enter, exit, toggle, value } = useFullscreen(ref);\n *\n * @overload\n * @template Target The target element for fullscreen\n * @param {boolean} [options.initialValue=false] initial value of fullscreen\n * @param {() => void} [options.onEnter] on enter fullscreen\n * @param {() => void} [options.onExit] on exit fullscreen\n * @returns {UseFullScreenReturn & { ref: RefObject<Target> }} An object with the fullscreen state and methods\n *\n * @example\n * const { ref, enter, exit, toggle, value } = useFullscreen();\n */\nexport const useFullscreen = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseFullScreenOptions | undefined;\n\n const [value, setValue] = useState(options?.initialValue ?? false);\n const internalRef = useRefState<Element>();\n\n const onChange = () => {\n if (!screenfull.isEnabled) return;\n\n if (screenfull.isFullscreen) {\n options?.onEnter?.();\n } else {\n screenfull.off('change', onChange);\n options?.onExit?.();\n }\n\n setValue(screenfull.isFullscreen);\n };\n\n const enter = () => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n if (screenfull.isEnabled) {\n try {\n screenfull.request(element);\n screenfull.on('change', onChange);\n } catch (error) {\n console.error(error);\n }\n }\n };\n\n const exit = () => {\n if (screenfull.isEnabled) screenfull.exit();\n };\n\n const toggle = () => {\n if (value) return exit();\n enter();\n };\n\n useEffect(\n () => () => {\n if (screenfull.isEnabled) screenfull.off('change', onChange);\n },\n []\n );\n\n if (target)\n return {\n enter,\n exit,\n toggle,\n value\n };\n return {\n ref: internalRef,\n enter,\n exit,\n toggle,\n value\n };\n}) as UseFullScreen;\n"],"names":["useFullscreen","params","target","isTarget","options","value","setValue","useState","internalRef","useRefState","onChange","screenfull","_a","_b","enter","element","getElement","error","exit","toggle","useEffect"],"mappings":";;;;;AAmEa,MAAAA,IAAiB,IAAIC,MAAkB;AAC5C,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAWF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExC,CAACI,GAAOC,CAAQ,IAAIC,GAASH,KAAA,gBAAAA,EAAS,iBAAgB,EAAK,GAC3DI,IAAcC,EAAqB,GAEnCC,IAAW,MAAM;;AACjB,IAACC,EAAW,cAEZA,EAAW,gBACbC,IAAAR,KAAA,gBAAAA,EAAS,YAAT,QAAAQ,EAAA,KAAAR,MAEWO,EAAA,IAAI,UAAUD,CAAQ,IACjCG,IAAAT,KAAA,gBAAAA,EAAS,WAAT,QAAAS,EAAA,KAAAT,KAGFE,EAASK,EAAW,YAAY;AAAA,EAClC,GAEMG,IAAQ,MAAM;AAClB,UAAMC,IAAWb,IAASc,EAAWd,CAAM,IAAIM,EAAY;AAC3D,QAAKO,KAEDJ,EAAW;AACT,UAAA;AACF,QAAAA,EAAW,QAAQI,CAAO,GACfJ,EAAA,GAAG,UAAUD,CAAQ;AAAA,eACzBO,GAAO;AACd,gBAAQ,MAAMA,CAAK;AAAA,MAAA;AAAA,EAGzB,GAEMC,IAAO,MAAM;AACb,IAAAP,EAAW,aAAWA,EAAW,KAAK;AAAA,EAC5C,GAEMQ,IAAS,MAAM;AACf,QAAAd,UAAca,EAAK;AACjB,IAAAJ,EAAA;AAAA,EACR;AASI,SAPJM;AAAA,IACE,MAAM,MAAM;AACV,MAAIT,EAAW,aAAsBA,EAAA,IAAI,UAAUD,CAAQ;AAAA,IAC7D;AAAA,IACA,CAAA;AAAA,EACF,GAEIR,IACK;AAAA,IACL,OAAAY;AAAA,IACA,MAAAI;AAAA,IACA,QAAAC;AAAA,IACA,OAAAd;AAAA,EACF,IACK;AAAA,IACL,KAAKG;AAAA,IACL,OAAAM;AAAA,IACA,MAAAI;AAAA,IACA,QAAAC;AAAA,IACA,OAAAd;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"useFullscreen.mjs","sources":["../../../../src/hooks/useFullscreen/useFullscreen.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport screenfull from 'screenfull';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use fullscreen options type */\nexport interface UseFullScreenOptions {\n /** initial value */\n initialValue?: boolean;\n /** on enter fullscreen */\n onEnter?: () => void;\n /** on exit fullscreen */\n onExit?: () => void;\n}\n\n/** The use click outside return type */\nexport interface UseFullScreenReturn {\n /** The fullscreen state */\n value: boolean;\n /** The fullscreen enter method */\n enter: () => void;\n /** The fullscreen exit method */\n exit: () => void;\n /** The fullscreen toggle method */\n toggle: () => void;\n}\n\nexport interface UseFullScreen {\n (target: HookTarget, options?: UseFullScreenOptions): UseFullScreenReturn;\n\n <Target extends Element>(\n options?: UseFullScreenOptions,\n target?: never\n ): UseFullScreenReturn & { ref: StateRef<Target> };\n}\n\n/**\n * @name useFullscreen\n * @description - Hook to handle fullscreen events\n * @category Browser\n *\n * @overload\n * @param {HookTarget} target The target element for fullscreen\n * @param {boolean} [options.initialValue=false] initial value of fullscreen\n * @param {() => void} [options.onEnter] on enter fullscreen\n * @param {() => void} [options.onExit] on exit fullscreen\n * @returns {UseFullScreenReturn} An object with the fullscreen state and methods\n *\n * @example\n * const { enter, exit, toggle, value } = useFullscreen(ref);\n *\n * @overload\n * @template Target The target element for fullscreen\n * @param {boolean} [options.initialValue=false] initial value of fullscreen\n * @param {() => void} [options.onEnter] on enter fullscreen\n * @param {() => void} [options.onExit] on exit fullscreen\n * @returns {UseFullScreenReturn & { ref: RefObject<Target> }} An object with the fullscreen state and methods\n *\n * @example\n * const { ref, enter, exit, toggle, value } = useFullscreen();\n */\nexport const useFullscreen = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseFullScreenOptions | undefined;\n\n const [value, setValue] = useState(options?.initialValue ?? false);\n const internalRef = useRefState<Element>();\n\n const onChange = () => {\n if (!screenfull.isEnabled) return;\n\n if (screenfull.isFullscreen) {\n options?.onEnter?.();\n } else {\n screenfull.off('change', onChange);\n options?.onExit?.();\n }\n\n setValue(screenfull.isFullscreen);\n };\n\n const enter = () => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n if (screenfull.isEnabled) {\n try {\n screenfull.request(element);\n screenfull.on('change', onChange);\n } catch (error) {\n console.error(error);\n }\n }\n };\n\n const exit = () => {\n if (screenfull.isEnabled) screenfull.exit();\n };\n\n const toggle = () => {\n if (value) return exit();\n enter();\n };\n\n useEffect(\n () => () => {\n if (screenfull.isEnabled) screenfull.off('change', onChange);\n },\n []\n );\n\n if (target)\n return {\n enter,\n exit,\n toggle,\n value\n };\n return {\n ref: internalRef,\n enter,\n exit,\n toggle,\n value\n };\n}) as UseFullScreen;\n"],"names":["useFullscreen","params","target","isTarget","options","value","setValue","useState","internalRef","useRefState","onChange","screenfull","enter","element","getElement","error","exit","toggle","useEffect"],"mappings":";;;;;AAmEO,MAAMA,IAAiB,IAAIC,MAAkB;AAClD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAWF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExC,CAACI,GAAOC,CAAQ,IAAIC,EAASH,GAAS,gBAAgB,EAAK,GAC3DI,IAAcC,EAAA,GAEdC,IAAW,MAAM;AACrB,IAAKC,EAAW,cAEZA,EAAW,eACbP,GAAS,UAAA,KAETO,EAAW,IAAI,UAAUD,CAAQ,GACjCN,GAAS,SAAA,IAGXE,EAASK,EAAW,YAAY;AAAA,EAAA,GAG5BC,IAAQ,MAAM;AAClB,UAAMC,IAAWX,IAASY,EAAWZ,CAAM,IAAIM,EAAY;AAC3D,QAAKK,KAEDF,EAAW;AACb,UAAI;AACF,QAAAA,EAAW,QAAQE,CAAO,GAC1BF,EAAW,GAAG,UAAUD,CAAQ;AAAA,MAAA,SACzBK,GAAO;AACd,gBAAQ,MAAMA,CAAK;AAAA,MAAA;AAAA,EAEvB,GAGIC,IAAO,MAAM;AACjB,IAAIL,EAAW,aAAWA,EAAW,KAAA;AAAA,EAAK,GAGtCM,IAAS,MAAM;AACnB,QAAIZ,UAAcW,EAAA;AAClB,IAAAJ,EAAA;AAAA,EAAM;AAUR,SAPAM;AAAA,IACE,MAAM,MAAM;AACV,MAAIP,EAAW,aAAWA,EAAW,IAAI,UAAUD,CAAQ;AAAA,IAAA;AAAA,IAE7D,CAAA;AAAA,EAAC,GAGCR,IACK;AAAA,IACL,OAAAU;AAAA,IACA,MAAAI;AAAA,IACA,QAAAC;AAAA,IACA,OAAAZ;AAAA,EAAA,IAEG;AAAA,IACL,KAAKG;AAAA,IACL,OAAAI;AAAA,IACA,MAAAI;AAAA,IACA,QAAAC;AAAA,IACA,OAAAZ;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGamepad.mjs","sources":["../../../../src/hooks/useGamepad/useGamepad.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useRaf } from '../useRaf/useRaf';\n\ndeclare global {\n interface Gamepad {\n hapticActuators?: GamepadHapticActuator[];\n }\n}\n\n/** The use gamepad return type */\nexport interface UseGamepadStateReturn {\n /** The gamepad active status */\n active: boolean;\n /** The gamepad state */\n gamepads: Gamepad[];\n /** The gamepad supported status */\n supported: boolean;\n}\n\n/**\n * @name useGamepad\n * @description - Hook for getting information about gamepad\n * @category Browser\n *\n * @browserapi navigator.getGamepads https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getGamepads\n *\n * @returns {UseGamepadStateReturn} An object containing the gamepad information\n *\n * @example\n * const { supported, gamepads, active } = useGamepad();\n */\nexport const useGamepad = () => {\n const supported = typeof navigator !== 'undefined' && 'getGamepads' in navigator;\n const [gamepads, setGamepads] = useState<Record<number, Gamepad>>({});\n\n const createGamepad = (gamepad: Gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null;\n\n if (vibrationActuator) hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\n return {\n ...gamepad,\n hapticActuators\n } as Gamepad;\n };\n\n const updateGamepadState = () => {\n for (const gamepad of navigator.getGamepads() ?? []) {\n if (gamepad && gamepads[gamepad.index]) gamepads[gamepad.index] = createGamepad(gamepad);\n }\n };\n\n const { active } = useRaf(updateGamepadState, {\n enabled: !!Object.keys(gamepads).length\n });\n\n useEffect(() => {\n if (!supported) return;\n const gamepads = navigator.getGamepads();\n setGamepads(\n gamepads.reduce(\n (acc, gamepad) => ({\n ...acc,\n ...(gamepad && { [gamepad.index]: createGamepad(gamepad) })\n }),\n {}\n )\n );\n }, []);\n\n useEffect(() => {\n const onConnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n setGamepads({ ...gamepads, [gamepad.index]: createGamepad(gamepad) });\n };\n\n const onDisconnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n const updatedGamepads = { ...gamepads };\n delete updatedGamepads[gamepad.index];\n setGamepads(updatedGamepads);\n };\n\n document.addEventListener('gamepadconnected', onConnected);\n document.addEventListener('gamepaddisconnected', onDisconnected);\n\n return () => {\n document.removeEventListener('gamepadconnected', onConnected);\n document.removeEventListener('gamepaddisconnected', onDisconnected);\n };\n }, []);\n\n return {\n active,\n supported,\n gamepads: Object.values(gamepads)\n };\n};\n\nexport const mapGamepadToXbox360Controller = (gamepad: Gamepad) => ({\n buttons: {\n a: gamepad.buttons[0],\n b: gamepad.buttons[1],\n x: gamepad.buttons[2],\n y: gamepad.buttons[3]\n },\n bumper: {\n left: gamepad.buttons[4],\n right: gamepad.buttons[5]\n },\n triggers: {\n left: gamepad.buttons[6],\n right: gamepad.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.axes[0],\n vertical: gamepad.axes[1],\n button: gamepad.buttons[10]\n },\n right: {\n horizontal: gamepad.axes[2],\n vertical: gamepad.axes[3],\n button: gamepad.buttons[11]\n }\n },\n dpad: {\n up: gamepad.buttons[12],\n down: gamepad.buttons[13],\n left: gamepad.buttons[14],\n right: gamepad.buttons[15]\n },\n back: gamepad.buttons[8],\n start: gamepad.buttons[9]\n});\n"],"names":["useGamepad","supported","gamepads","setGamepads","useState","createGamepad","gamepad","hapticActuators","vibrationActuator","updateGamepadState","active","useRaf","useEffect","acc","onConnected","event","onDisconnected","updatedGamepads","mapGamepadToXbox360Controller"],"mappings":";;AAgCO,MAAMA,IAAa,MAAM;AAC9B,QAAMC,IAAY,OAAO,YAAc,OAAe,iBAAiB,WACjE,CAACC,GAAUC,CAAW,IAAIC,EAAkC,CAAA,CAAE,GAE9DC,IAAgB,CAACC,MAAqB;AAC1C,UAAMC,IAAkB,CAAC,GACnBC,IAAoB,uBAAuBF,IAAUA,EAAQ,oBAAoB;AAEnF,WAAAE,KAAmCD,EAAA,KAAKC,CAAiB,GACzDF,EAAQ,mBAAiBC,EAAgB,KAAK,GAAGD,EAAQ,eAAe,GAErE;AAAA,MACL,GAAGA;AAAA,MACH,iBAAAC;AAAA,IACF;AAAA,EACF,GAEME,IAAqB,MAAM;AAC/B,eAAWH,KAAW,UAAU,YAAY,KAAK,CAAA;AAC3C,MAAAA,KAAWJ,EAASI,EAAQ,KAAK,QAAYA,EAAQ,KAAK,IAAID,EAAcC,CAAO;AAAA,EAE3F,GAEM,EAAE,QAAAI,EAAA,IAAWC,EAAOF,GAAoB;AAAA,IAC5C,SAAS,CAAC,CAAC,OAAO,KAAKP,CAAQ,EAAE;AAAA,EAAA,CAClC;AAED,SAAAU,EAAU,MAAM;AACd,QAAI,CAACX,EAAW;AACVC,UAAAA,IAAW,UAAU,YAAY;AACvC,IAAAC;AAAA,MACED,EAAS;AAAA,QACP,CAACW,GAAKP,OAAa;AAAA,UACjB,GAAGO;AAAA,UACH,GAAIP,KAAW,EAAE,CAACA,EAAQ,KAAK,GAAGD,EAAcC,CAAO,EAAE;AAAA,QAAA;AAAA,QAE3D,CAAA;AAAA,MAAC;AAAA,IAEL;AAAA,EACF,GAAG,EAAE,GAELM,EAAU,MAAM;AACR,UAAAE,IAAc,CAACC,MAAiB;AAC9B,YAAA,EAAE,SAAAT,MAAYS;AACR,MAAAZ,EAAA,EAAE,GAAGD,GAAU,CAACI,EAAQ,KAAK,GAAGD,EAAcC,CAAO,GAAG;AAAA,IACtE,GAEMU,IAAiB,CAACD,MAAiB;AACjC,YAAA,EAAE,SAAAT,MAAYS,GACdE,IAAkB,EAAE,GAAGf,EAAS;AAC/B,aAAAe,EAAgBX,EAAQ,KAAK,GACpCH,EAAYc,CAAe;AAAA,IAC7B;AAES,oBAAA,iBAAiB,oBAAoBH,CAAW,GAChD,SAAA,iBAAiB,uBAAuBE,CAAc,GAExD,MAAM;AACF,eAAA,oBAAoB,oBAAoBF,CAAW,GACnD,SAAA,oBAAoB,uBAAuBE,CAAc;AAAA,IACpE;AAAA,EACF,GAAG,EAAE,GAEE;AAAA,IACL,QAAAN;AAAA,IACA,WAAAT;AAAA,IACA,UAAU,OAAO,OAAOC,CAAQ;AAAA,EAClC;AACF,GAEagB,IAAgC,CAACZ,OAAsB;AAAA,EAClE,SAAS;AAAA,IACP,GAAGA,EAAQ,QAAQ,CAAC;AAAA,IACpB,GAAGA,EAAQ,QAAQ,CAAC;AAAA,IACpB,GAAGA,EAAQ,QAAQ,CAAC;AAAA,IACpB,GAAGA,EAAQ,QAAQ,CAAC;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,MAAMA,EAAQ,QAAQ,CAAC;AAAA,IACvB,OAAOA,EAAQ,QAAQ,CAAC;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,IACR,MAAMA,EAAQ,QAAQ,CAAC;AAAA,IACvB,OAAOA,EAAQ,QAAQ,CAAC;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,YAAYA,EAAQ,KAAK,CAAC;AAAA,MAC1B,UAAUA,EAAQ,KAAK,CAAC;AAAA,MACxB,QAAQA,EAAQ,QAAQ,EAAE;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,MACL,YAAYA,EAAQ,KAAK,CAAC;AAAA,MAC1B,UAAUA,EAAQ,KAAK,CAAC;AAAA,MACxB,QAAQA,EAAQ,QAAQ,EAAE;AAAA,IAAA;AAAA,EAE9B;AAAA,EACA,MAAM;AAAA,IACJ,IAAIA,EAAQ,QAAQ,EAAE;AAAA,IACtB,MAAMA,EAAQ,QAAQ,EAAE;AAAA,IACxB,MAAMA,EAAQ,QAAQ,EAAE;AAAA,IACxB,OAAOA,EAAQ,QAAQ,EAAE;AAAA,EAC3B;AAAA,EACA,MAAMA,EAAQ,QAAQ,CAAC;AAAA,EACvB,OAAOA,EAAQ,QAAQ,CAAC;AAC1B;"}
1
+ {"version":3,"file":"useGamepad.mjs","sources":["../../../../src/hooks/useGamepad/useGamepad.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useRaf } from '../useRaf/useRaf';\n\ndeclare global {\n interface Gamepad {\n hapticActuators?: GamepadHapticActuator[];\n }\n}\n\n/** The use gamepad return type */\nexport interface UseGamepadStateReturn {\n /** The gamepad active status */\n active: boolean;\n /** The gamepad state */\n gamepads: Gamepad[];\n /** The gamepad supported status */\n supported: boolean;\n}\n\n/**\n * @name useGamepad\n * @description - Hook for getting information about gamepad\n * @category Browser\n *\n * @browserapi navigator.getGamepads https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getGamepads\n *\n * @returns {UseGamepadStateReturn} An object containing the gamepad information\n *\n * @example\n * const { supported, gamepads, active } = useGamepad();\n */\nexport const useGamepad = () => {\n const supported = typeof navigator !== 'undefined' && 'getGamepads' in navigator;\n const [gamepads, setGamepads] = useState<Record<number, Gamepad>>({});\n\n const createGamepad = (gamepad: Gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null;\n\n if (vibrationActuator) hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\n return {\n ...gamepad,\n hapticActuators\n } as Gamepad;\n };\n\n const updateGamepadState = () => {\n for (const gamepad of navigator.getGamepads() ?? []) {\n if (gamepad && gamepads[gamepad.index]) gamepads[gamepad.index] = createGamepad(gamepad);\n }\n };\n\n const { active } = useRaf(updateGamepadState, {\n enabled: !!Object.keys(gamepads).length\n });\n\n useEffect(() => {\n if (!supported) return;\n const gamepads = navigator.getGamepads();\n setGamepads(\n gamepads.reduce(\n (acc, gamepad) => ({\n ...acc,\n ...(gamepad && { [gamepad.index]: createGamepad(gamepad) })\n }),\n {}\n )\n );\n }, []);\n\n useEffect(() => {\n const onConnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n setGamepads({ ...gamepads, [gamepad.index]: createGamepad(gamepad) });\n };\n\n const onDisconnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n const updatedGamepads = { ...gamepads };\n delete updatedGamepads[gamepad.index];\n setGamepads(updatedGamepads);\n };\n\n document.addEventListener('gamepadconnected', onConnected);\n document.addEventListener('gamepaddisconnected', onDisconnected);\n\n return () => {\n document.removeEventListener('gamepadconnected', onConnected);\n document.removeEventListener('gamepaddisconnected', onDisconnected);\n };\n }, []);\n\n return {\n active,\n supported,\n gamepads: Object.values(gamepads)\n };\n};\n\nexport const mapGamepadToXbox360Controller = (gamepad: Gamepad) => ({\n buttons: {\n a: gamepad.buttons[0],\n b: gamepad.buttons[1],\n x: gamepad.buttons[2],\n y: gamepad.buttons[3]\n },\n bumper: {\n left: gamepad.buttons[4],\n right: gamepad.buttons[5]\n },\n triggers: {\n left: gamepad.buttons[6],\n right: gamepad.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.axes[0],\n vertical: gamepad.axes[1],\n button: gamepad.buttons[10]\n },\n right: {\n horizontal: gamepad.axes[2],\n vertical: gamepad.axes[3],\n button: gamepad.buttons[11]\n }\n },\n dpad: {\n up: gamepad.buttons[12],\n down: gamepad.buttons[13],\n left: gamepad.buttons[14],\n right: gamepad.buttons[15]\n },\n back: gamepad.buttons[8],\n start: gamepad.buttons[9]\n});\n"],"names":["useGamepad","supported","gamepads","setGamepads","useState","createGamepad","gamepad","hapticActuators","vibrationActuator","updateGamepadState","active","useRaf","useEffect","acc","onConnected","event","onDisconnected","updatedGamepads","mapGamepadToXbox360Controller"],"mappings":";;AAgCO,MAAMA,IAAa,MAAM;AAC9B,QAAMC,IAAY,OAAO,YAAc,OAAe,iBAAiB,WACjE,CAACC,GAAUC,CAAW,IAAIC,EAAkC,CAAA,CAAE,GAE9DC,IAAgB,CAACC,MAAqB;AAC1C,UAAMC,IAAkB,CAAA,GAClBC,IAAoB,uBAAuBF,IAAUA,EAAQ,oBAAoB;AAEvF,WAAIE,KAAmBD,EAAgB,KAAKC,CAAiB,GACzDF,EAAQ,mBAAiBC,EAAgB,KAAK,GAAGD,EAAQ,eAAe,GAErE;AAAA,MACL,GAAGA;AAAA,MACH,iBAAAC;AAAA,IAAA;AAAA,EACF,GAGIE,IAAqB,MAAM;AAC/B,eAAWH,KAAW,UAAU,YAAA,KAAiB,CAAA;AAC/C,MAAIA,KAAWJ,EAASI,EAAQ,KAAK,QAAYA,EAAQ,KAAK,IAAID,EAAcC,CAAO;AAAA,EACzF,GAGI,EAAE,QAAAI,EAAA,IAAWC,EAAOF,GAAoB;AAAA,IAC5C,SAAS,CAAC,CAAC,OAAO,KAAKP,CAAQ,EAAE;AAAA,EAAA,CAClC;AAED,SAAAU,EAAU,MAAM;AACd,QAAI,CAACX,EAAW;AAChB,UAAMC,IAAW,UAAU,YAAA;AAC3B,IAAAC;AAAA,MACED,EAAS;AAAA,QACP,CAACW,GAAKP,OAAa;AAAA,UACjB,GAAGO;AAAA,UACH,GAAIP,KAAW,EAAE,CAACA,EAAQ,KAAK,GAAGD,EAAcC,CAAO,EAAA;AAAA,QAAE;AAAA,QAE3D,CAAA;AAAA,MAAC;AAAA,IACH;AAAA,EACF,GACC,EAAE,GAELM,EAAU,MAAM;AACd,UAAME,IAAc,CAACC,MAAiB;AACpC,YAAM,EAAE,SAAAT,MAAYS;AACpB,MAAAZ,EAAY,EAAE,GAAGD,GAAU,CAACI,EAAQ,KAAK,GAAGD,EAAcC,CAAO,GAAG;AAAA,IAAA,GAGhEU,IAAiB,CAACD,MAAiB;AACvC,YAAM,EAAE,SAAAT,MAAYS,GACdE,IAAkB,EAAE,GAAGf,EAAA;AAC7B,aAAOe,EAAgBX,EAAQ,KAAK,GACpCH,EAAYc,CAAe;AAAA,IAAA;AAG7B,oBAAS,iBAAiB,oBAAoBH,CAAW,GACzD,SAAS,iBAAiB,uBAAuBE,CAAc,GAExD,MAAM;AACX,eAAS,oBAAoB,oBAAoBF,CAAW,GAC5D,SAAS,oBAAoB,uBAAuBE,CAAc;AAAA,IAAA;AAAA,EACpE,GACC,EAAE,GAEE;AAAA,IACL,QAAAN;AAAA,IACA,WAAAT;AAAA,IACA,UAAU,OAAO,OAAOC,CAAQ;AAAA,EAAA;AAEpC,GAEagB,IAAgC,CAACZ,OAAsB;AAAA,EAClE,SAAS;AAAA,IACP,GAAGA,EAAQ,QAAQ,CAAC;AAAA,IACpB,GAAGA,EAAQ,QAAQ,CAAC;AAAA,IACpB,GAAGA,EAAQ,QAAQ,CAAC;AAAA,IACpB,GAAGA,EAAQ,QAAQ,CAAC;AAAA,EAAA;AAAA,EAEtB,QAAQ;AAAA,IACN,MAAMA,EAAQ,QAAQ,CAAC;AAAA,IACvB,OAAOA,EAAQ,QAAQ,CAAC;AAAA,EAAA;AAAA,EAE1B,UAAU;AAAA,IACR,MAAMA,EAAQ,QAAQ,CAAC;AAAA,IACvB,OAAOA,EAAQ,QAAQ,CAAC;AAAA,EAAA;AAAA,EAE1B,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,YAAYA,EAAQ,KAAK,CAAC;AAAA,MAC1B,UAAUA,EAAQ,KAAK,CAAC;AAAA,MACxB,QAAQA,EAAQ,QAAQ,EAAE;AAAA,IAAA;AAAA,IAE5B,OAAO;AAAA,MACL,YAAYA,EAAQ,KAAK,CAAC;AAAA,MAC1B,UAAUA,EAAQ,KAAK,CAAC;AAAA,MACxB,QAAQA,EAAQ,QAAQ,EAAE;AAAA,IAAA;AAAA,EAC5B;AAAA,EAEF,MAAM;AAAA,IACJ,IAAIA,EAAQ,QAAQ,EAAE;AAAA,IACtB,MAAMA,EAAQ,QAAQ,EAAE;AAAA,IACxB,MAAMA,EAAQ,QAAQ,EAAE;AAAA,IACxB,OAAOA,EAAQ,QAAQ,EAAE;AAAA,EAAA;AAAA,EAE3B,MAAMA,EAAQ,QAAQ,CAAC;AAAA,EACvB,OAAOA,EAAQ,QAAQ,CAAC;AAC1B;"}
@@ -1,6 +1,6 @@
1
- import { useState as g, useEffect as a } from "react";
2
- const I = (t) => {
3
- const [n, u] = g({
1
+ import { useState as o, useEffect as r } from "react";
2
+ const d = (e) => {
3
+ const [a, n] = o({
4
4
  loading: !0,
5
5
  error: null,
6
6
  timestamp: Date.now(),
@@ -12,35 +12,35 @@ const I = (t) => {
12
12
  heading: null,
13
13
  speed: null
14
14
  });
15
- return a(() => {
16
- const l = ({ coords: e, timestamp: o }) => {
17
- u({
18
- ...n,
15
+ return r(() => {
16
+ const u = ({ coords: t, timestamp: c }) => {
17
+ n({
18
+ ...a,
19
19
  loading: !1,
20
- timestamp: o,
21
- latitude: e.latitude,
22
- longitude: e.longitude,
23
- altitude: e.altitude,
24
- accuracy: e.accuracy,
25
- altitudeAccuracy: e.altitudeAccuracy,
26
- heading: e.heading,
27
- speed: e.speed
20
+ timestamp: c,
21
+ latitude: t.latitude,
22
+ longitude: t.longitude,
23
+ altitude: t.altitude,
24
+ accuracy: t.accuracy,
25
+ altitudeAccuracy: t.altitudeAccuracy,
26
+ heading: t.heading,
27
+ speed: t.speed
28
28
  });
29
- }, i = (e) => {
30
- u({
31
- ...n,
29
+ }, l = (t) => {
30
+ n({
31
+ ...a,
32
32
  loading: !1,
33
- error: e
33
+ error: t
34
34
  });
35
35
  };
36
- navigator.geolocation.getCurrentPosition(l, i, t);
37
- const c = navigator.geolocation.watchPosition(l, i, t);
36
+ navigator.geolocation.getCurrentPosition(u, l, e);
37
+ const i = navigator.geolocation.watchPosition(u, l, e);
38
38
  return () => {
39
- navigator.geolocation.clearWatch(c);
39
+ navigator.geolocation.clearWatch(i);
40
40
  };
41
- }, [t == null ? void 0 : t.enableHighAccuracy, t == null ? void 0 : t.maximumAge, t == null ? void 0 : t.timeout]), n;
41
+ }, [e?.enableHighAccuracy, e?.maximumAge, e?.timeout]), a;
42
42
  };
43
43
  export {
44
- I as useGeolocation
44
+ d as useGeolocation
45
45
  };
46
46
  //# sourceMappingURL=useGeolocation.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGeolocation.mjs","sources":["../../../../src/hooks/useGeolocation/useGeolocation.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/** The use geolocation return type */\nexport interface UseGeolocationReturn {\n /** The accuracy of the last position update */\n accuracy: number | null;\n /** The altitude of the last position update */\n altitude: number | null;\n /** The altitude accuracy of the last position update */\n altitudeAccuracy: number | null;\n /** The error of the last position update */\n error: GeolocationPositionError | null;\n /** The heading of the last position update */\n heading: number | null;\n /** The latitude of the last position update */\n latitude: number | null;\n /** The loading state */\n loading: boolean;\n /** The longitude of the last position update */\n longitude: number | null;\n /** The speed of the last position update */\n speed: number | null;\n /** The timestamp of the last position update */\n timestamp: number | null;\n}\n\n/** The use geolocation params type */\nexport type UseGeolocationParams = PositionOptions;\n\n/**\n * @name useGeolocation\n * @description - Hook that returns the current geolocation\n * @category Browser\n *\n * @browserapi navigator.geolocation https://developer.mozilla.org/en-US/docs/Web/API/Navigator/geolocation\n *\n * @param {boolean} [params.enableHighAccuracy] Enable high accuracy\n * @param {number} [params.maximumAge] Maximum age\n * @param {number} [params.timeout] Timeout\n * @returns {UseGeolocationReturn}\n *\n * @example\n * const { loading, error, timestamp, accuracy, latitude, longitude, altitude, altitudeAccuracy, heading, speed } = useGeolocation();\n */\nexport const useGeolocation = (params?: UseGeolocationParams): UseGeolocationReturn => {\n const [value, setValue] = useState<UseGeolocationReturn>({\n loading: true,\n error: null,\n timestamp: Date.now(),\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n\n useEffect(() => {\n const onEvent = ({ coords, timestamp }: GeolocationPosition) => {\n setValue({\n ...value,\n loading: false,\n timestamp,\n latitude: coords.latitude,\n longitude: coords.longitude,\n altitude: coords.altitude,\n accuracy: coords.accuracy,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed\n });\n };\n\n const onEventError = (error: GeolocationPositionError) => {\n setValue({\n ...value,\n loading: false,\n error\n });\n };\n\n navigator.geolocation.getCurrentPosition(onEvent, onEventError, params);\n const watchId = navigator.geolocation.watchPosition(onEvent, onEventError, params);\n\n return () => {\n navigator.geolocation.clearWatch(watchId);\n };\n }, [params?.enableHighAccuracy, params?.maximumAge, params?.timeout]);\n\n return value;\n};\n"],"names":["useGeolocation","params","value","setValue","useState","useEffect","onEvent","coords","timestamp","onEventError","error","watchId"],"mappings":";AA4Ca,MAAAA,IAAiB,CAACC,MAAwD;AACrF,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAA+B;AAAA,IACvD,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW,KAAK,IAAI;AAAA,IACpB,UAAU;AAAA,IACV,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,OAAO;AAAA,EAAA,CACR;AAED,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAU,CAAC,EAAE,QAAAC,GAAQ,WAAAC,QAAqC;AACrD,MAAAL,EAAA;AAAA,QACP,GAAGD;AAAA,QACH,SAAS;AAAA,QACT,WAAAM;AAAA,QACA,UAAUD,EAAO;AAAA,QACjB,WAAWA,EAAO;AAAA,QAClB,UAAUA,EAAO;AAAA,QACjB,UAAUA,EAAO;AAAA,QACjB,kBAAkBA,EAAO;AAAA,QACzB,SAASA,EAAO;AAAA,QAChB,OAAOA,EAAO;AAAA,MAAA,CACf;AAAA,IACH,GAEME,IAAe,CAACC,MAAoC;AAC/C,MAAAP,EAAA;AAAA,QACP,GAAGD;AAAA,QACH,SAAS;AAAA,QACT,OAAAQ;AAAA,MAAA,CACD;AAAA,IACH;AAEA,cAAU,YAAY,mBAAmBJ,GAASG,GAAcR,CAAM;AACtE,UAAMU,IAAU,UAAU,YAAY,cAAcL,GAASG,GAAcR,CAAM;AAEjF,WAAO,MAAM;AACD,gBAAA,YAAY,WAAWU,CAAO;AAAA,IAC1C;AAAA,EAAA,GACC,CAACV,KAAA,gBAAAA,EAAQ,oBAAoBA,KAAA,gBAAAA,EAAQ,YAAYA,KAAA,gBAAAA,EAAQ,OAAO,CAAC,GAE7DC;AACT;"}
1
+ {"version":3,"file":"useGeolocation.mjs","sources":["../../../../src/hooks/useGeolocation/useGeolocation.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/** The use geolocation return type */\nexport interface UseGeolocationReturn {\n /** The accuracy of the last position update */\n accuracy: number | null;\n /** The altitude of the last position update */\n altitude: number | null;\n /** The altitude accuracy of the last position update */\n altitudeAccuracy: number | null;\n /** The error of the last position update */\n error: GeolocationPositionError | null;\n /** The heading of the last position update */\n heading: number | null;\n /** The latitude of the last position update */\n latitude: number | null;\n /** The loading state */\n loading: boolean;\n /** The longitude of the last position update */\n longitude: number | null;\n /** The speed of the last position update */\n speed: number | null;\n /** The timestamp of the last position update */\n timestamp: number | null;\n}\n\n/** The use geolocation params type */\nexport type UseGeolocationParams = PositionOptions;\n\n/**\n * @name useGeolocation\n * @description - Hook that returns the current geolocation\n * @category Browser\n *\n * @browserapi navigator.geolocation https://developer.mozilla.org/en-US/docs/Web/API/Navigator/geolocation\n *\n * @param {boolean} [params.enableHighAccuracy] Enable high accuracy\n * @param {number} [params.maximumAge] Maximum age\n * @param {number} [params.timeout] Timeout\n * @returns {UseGeolocationReturn}\n *\n * @example\n * const { loading, error, timestamp, accuracy, latitude, longitude, altitude, altitudeAccuracy, heading, speed } = useGeolocation();\n */\nexport const useGeolocation = (params?: UseGeolocationParams): UseGeolocationReturn => {\n const [value, setValue] = useState<UseGeolocationReturn>({\n loading: true,\n error: null,\n timestamp: Date.now(),\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n\n useEffect(() => {\n const onEvent = ({ coords, timestamp }: GeolocationPosition) => {\n setValue({\n ...value,\n loading: false,\n timestamp,\n latitude: coords.latitude,\n longitude: coords.longitude,\n altitude: coords.altitude,\n accuracy: coords.accuracy,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed\n });\n };\n\n const onEventError = (error: GeolocationPositionError) => {\n setValue({\n ...value,\n loading: false,\n error\n });\n };\n\n navigator.geolocation.getCurrentPosition(onEvent, onEventError, params);\n const watchId = navigator.geolocation.watchPosition(onEvent, onEventError, params);\n\n return () => {\n navigator.geolocation.clearWatch(watchId);\n };\n }, [params?.enableHighAccuracy, params?.maximumAge, params?.timeout]);\n\n return value;\n};\n"],"names":["useGeolocation","params","value","setValue","useState","useEffect","onEvent","coords","timestamp","onEventError","error","watchId"],"mappings":";AA4CO,MAAMA,IAAiB,CAACC,MAAwD;AACrF,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAA+B;AAAA,IACvD,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW,KAAK,IAAA;AAAA,IAChB,UAAU;AAAA,IACV,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,OAAO;AAAA,EAAA,CACR;AAED,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAU,CAAC,EAAE,QAAAC,GAAQ,WAAAC,QAAqC;AAC9D,MAAAL,EAAS;AAAA,QACP,GAAGD;AAAA,QACH,SAAS;AAAA,QACT,WAAAM;AAAA,QACA,UAAUD,EAAO;AAAA,QACjB,WAAWA,EAAO;AAAA,QAClB,UAAUA,EAAO;AAAA,QACjB,UAAUA,EAAO;AAAA,QACjB,kBAAkBA,EAAO;AAAA,QACzB,SAASA,EAAO;AAAA,QAChB,OAAOA,EAAO;AAAA,MAAA,CACf;AAAA,IAAA,GAGGE,IAAe,CAACC,MAAoC;AACxD,MAAAP,EAAS;AAAA,QACP,GAAGD;AAAA,QACH,SAAS;AAAA,QACT,OAAAQ;AAAA,MAAA,CACD;AAAA,IAAA;AAGH,cAAU,YAAY,mBAAmBJ,GAASG,GAAcR,CAAM;AACtE,UAAMU,IAAU,UAAU,YAAY,cAAcL,GAASG,GAAcR,CAAM;AAEjF,WAAO,MAAM;AACX,gBAAU,YAAY,WAAWU,CAAO;AAAA,IAAA;AAAA,EAC1C,GACC,CAACV,GAAQ,oBAAoBA,GAAQ,YAAYA,GAAQ,OAAO,CAAC,GAE7DC;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useHash.mjs","sources":["../../../../src/hooks/useHash/useHash.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nconst getHash = () => decodeURIComponent(window.location.hash.replace('#', ''));\n\n/** The use hash return type */\ntype UseHashReturn = [string, (value: string) => void];\n\n/**\n * @name useHash\n * @description - Hook that manages the hash value\n * @category Browser\n *\n * @returns {UseHashReturn} An array containing the hash value and a function to set the hash value\n *\n * @example\n * const [hash, setHash] = useHash();\n */\nexport const useHash = (): UseHashReturn => {\n const [hash, setHash] = useState(window ? getHash() : '');\n\n const set = (value: string) => {\n window.location.hash = value;\n setHash(value);\n };\n\n useEffect(() => {\n const onHashChange = () => setHash(getHash());\n window.addEventListener('hashchange', onHashChange);\n return () => {\n window.removeEventListener('hashchange', onHashChange);\n };\n });\n\n return [hash, set] as const;\n};\n"],"names":["getHash","useHash","hash","setHash","useState","set","value","useEffect","onHashChange"],"mappings":";AAEA,MAAMA,IAAU,MAAM,mBAAmB,OAAO,SAAS,KAAK,QAAQ,KAAK,EAAE,CAAC,GAejEC,IAAU,MAAqB;AACpC,QAAA,CAACC,GAAMC,CAAO,IAAIC,EAAS,SAASJ,MAAY,EAAE,GAElDK,IAAM,CAACC,MAAkB;AAC7B,WAAO,SAAS,OAAOA,GACvBH,EAAQG,CAAK;AAAA,EACf;AAEA,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAe,MAAML,EAAQH,GAAS;AACrC,kBAAA,iBAAiB,cAAcQ,CAAY,GAC3C,MAAM;AACJ,aAAA,oBAAoB,cAAcA,CAAY;AAAA,IACvD;AAAA,EAAA,CACD,GAEM,CAACN,GAAMG,CAAG;AACnB;"}
1
+ {"version":3,"file":"useHash.mjs","sources":["../../../../src/hooks/useHash/useHash.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nconst getHash = () => decodeURIComponent(window.location.hash.replace('#', ''));\n\n/** The use hash return type */\ntype UseHashReturn = [string, (value: string) => void];\n\n/**\n * @name useHash\n * @description - Hook that manages the hash value\n * @category Browser\n *\n * @returns {UseHashReturn} An array containing the hash value and a function to set the hash value\n *\n * @example\n * const [hash, setHash] = useHash();\n */\nexport const useHash = (): UseHashReturn => {\n const [hash, setHash] = useState(window ? getHash() : '');\n\n const set = (value: string) => {\n window.location.hash = value;\n setHash(value);\n };\n\n useEffect(() => {\n const onHashChange = () => setHash(getHash());\n window.addEventListener('hashchange', onHashChange);\n return () => {\n window.removeEventListener('hashchange', onHashChange);\n };\n });\n\n return [hash, set] as const;\n};\n"],"names":["getHash","useHash","hash","setHash","useState","set","value","useEffect","onHashChange"],"mappings":";AAEA,MAAMA,IAAU,MAAM,mBAAmB,OAAO,SAAS,KAAK,QAAQ,KAAK,EAAE,CAAC,GAejEC,IAAU,MAAqB;AAC1C,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,SAASJ,EAAA,IAAY,EAAE,GAElDK,IAAM,CAACC,MAAkB;AAC7B,WAAO,SAAS,OAAOA,GACvBH,EAAQG,CAAK;AAAA,EAAA;AAGf,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAe,MAAML,EAAQH,GAAS;AAC5C,kBAAO,iBAAiB,cAAcQ,CAAY,GAC3C,MAAM;AACX,aAAO,oBAAoB,cAAcA,CAAY;AAAA,IAAA;AAAA,EACvD,CACD,GAEM,CAACN,GAAMG,CAAG;AACnB;"}
@@ -1,33 +1,32 @@
1
- import { useRef as L, useEffect as w } from "react";
2
- import { useEvent as m } from "../useEvent/useEvent.mjs";
3
- import { useRefState as E } from "../useRefState/useRefState.mjs";
4
- import { isTarget as h } from "../../utils/helpers/isTarget.mjs";
5
- import { getElement as g } from "../../utils/helpers/getElement.mjs";
6
- const v = (t, r) => t.toLowerCase().split(/[+_,\-]/g).map((o) => o.trim()).every(
7
- (o) => r.find(
8
- (c) => o === c.code.toLocaleLowerCase() || o === c.key.toLocaleLowerCase() || o === c.alias.toLocaleLowerCase()
1
+ import { useRef as m, useEffect as L } from "react";
2
+ import { useEvent as k } from "../useEvent/useEvent.mjs";
3
+ import { useRefState as w } from "../useRefState/useRefState.mjs";
4
+ import { isTarget as p } from "../../utils/helpers/isTarget.mjs";
5
+ import { getElement as E } from "../../utils/helpers/getElement.mjs";
6
+ const h = (t, o) => t.toLowerCase().split(/[+_,\-]/g).map((r) => r.trim()).every(
7
+ (r) => o.find(
8
+ (s) => r === s.code.toLocaleLowerCase() || r === s.key.toLocaleLowerCase() || r === s.alias.toLocaleLowerCase()
9
9
  )
10
- ), x = (...t) => {
11
- const r = h(t[0]) ? t[0] : void 0, o = r ? t[1] : t[0], c = r ? t[2] : t[1], n = r ? t[3] : t[2], u = E(window), s = L([]), f = (n == null ? void 0 : n.enabled) ?? !0, l = m((e) => {
12
- var k;
13
- if (!f || s.current.some(({ code: i }) => i === e.code)) return;
14
- const d = ((k = n == null ? void 0 : n.alias) == null ? void 0 : k[e.key]) ?? e.code, y = [...s.current, { key: e.key, code: e.code, alias: d }];
15
- s.current = y, o.split(",").map((i) => i.trim()).some((i) => v(i, y)) && (e.preventDefault(), c(e));
16
- }), a = m((e) => {
17
- f && (s.current = s.current.filter(({ code: d }) => d !== e.code));
10
+ ), H = (...t) => {
11
+ const o = p(t[0]) ? t[0] : void 0, r = o ? t[1] : t[0], s = o ? t[2] : t[1], d = o ? t[3] : t[2], i = w(window), n = m([]), u = d?.enabled ?? !0, f = k((e) => {
12
+ if (!u || n.current.some(({ code: c }) => c === e.code)) return;
13
+ const a = d?.alias?.[e.key] ?? e.code, y = [...n.current, { key: e.key, code: e.code, alias: a }];
14
+ n.current = y, r.split(",").map((c) => c.trim()).some((c) => h(c, y)) && (e.preventDefault(), s(e));
15
+ }), l = k((e) => {
16
+ u && (n.current = n.current.filter(({ code: a }) => a !== e.code));
18
17
  });
19
- if (w(() => {
20
- if (s.current = [], !r && !u.state && !f) return;
21
- const e = r ? g(r) : u.current;
18
+ if (L(() => {
19
+ if (n.current = [], !o && !i.state && !u) return;
20
+ const e = o ? E(o) : i.current;
22
21
  if (e)
23
- return e.addEventListener("keydown", l), e.addEventListener("keyup", a), () => {
24
- e.removeEventListener("keydown", l), e.removeEventListener("keyup", a);
22
+ return e.addEventListener("keydown", f), e.addEventListener("keyup", l), () => {
23
+ e.removeEventListener("keydown", f), e.removeEventListener("keyup", l);
25
24
  };
26
- }, [r, u.state, f, o, l, a]), !r)
27
- return u;
25
+ }, [o, i.state, u, r, f, l]), !o)
26
+ return i;
28
27
  };
29
28
  export {
30
- v as isHotkeyMatch,
31
- x as useHotkeys
29
+ h as isHotkeyMatch,
30
+ H as useHotkeys
32
31
  };
33
32
  //# sourceMappingURL=useHotkeys.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHotkeys.mjs","sources":["../../../../src/hooks/useHotkeys/useHotkeys.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use hotkeys params type */\nexport interface UseHotkeysOptions {\n /** Alias map for hotkeys */\n alias?: Record<string, string>;\n /** Enable or disable the event listeners */\n enabled?: boolean;\n}\n\nexport const isHotkeyMatch = (hotkey: string, keys: UseHotkeysKey[]) =>\n hotkey\n .toLowerCase()\n .split(/[+_,\\-]/g)\n .map((key) => key.trim())\n .every((key) =>\n keys.find(\n (updatedKey) =>\n key === updatedKey.code.toLocaleLowerCase() ||\n key === updatedKey.key.toLocaleLowerCase() ||\n key === updatedKey.alias.toLocaleLowerCase()\n )\n );\n\n/** The hotkeys string type */\nexport type UseHotkeysHotkeys = string;\n\n/** The hotkey key information */\nexport interface UseHotkeysKey {\n /** The alias for the key */\n alias: string;\n /** The key code */\n code: string;\n /** The key value */\n key: string;\n}\n\n/** The use hotkeys target type */\nexport type UseHotkeysTarget = Element | React.RefObject<Element | null | undefined>;\n\nexport interface UseHotkeys {\n (\n target: UseHotkeysTarget,\n hotkeys: UseHotkeysHotkeys,\n callback: (event: KeyboardEvent) => void,\n options?: UseHotkeysOptions\n ): void;\n\n <Target extends Element>(\n hotkeys: UseHotkeysHotkeys,\n callback: (event: KeyboardEvent) => void,\n options?: UseHotkeysOptions,\n target?: never\n ): StateRef<Target>;\n}\n\n/**\n * @name useHotkeys\n * @description - Hook that listens for hotkeys\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} [target=window] The target element to attach the event listener to\n * @param {string} hotkeys The hotkey to listen for\n * @param {(event: KeyboardEvent) => void} callback The callback function to execute when hotkey is pressed\n * @param {Record<string, string>} [options.alias] Alias map for hotkeys\n * @param {boolean} [options.enabled=true] Enable or disable the event listeners\n * @returns {void}\n *\n * @example\n * useHotkeys(ref, 'ctrl+a', () => console.log('hotkey pressed'));\n * @example\n * useHotkeys(ref, 'ctrl+a, ctrl+b', () => console.log('hotkey pressed'));\n *\n * @overload\n * @template Target The target element\n * @param {string} hotkeys The hotkey to listen for\n * @param {(event: KeyboardEvent) => void} callback The callback function to execute when hotkey is pressed\n * @param {Record<string, string>} [options.alias] Alias map for hotkeys\n * @param {boolean} [options.enabled=true] Enable or disable the event listeners\n * @returns {StateRef<Target>} A reference to the target element\n *\n * @example\n * const ref = useHotkeys('ctrl+a', () => console.log('hotkey pressed'));\n * @example\n * const ref = useHotkeys('ctrl+a, ctrl+b', () => console.log('hotkey pressed'));\n */\nexport const useHotkeys = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const hotkeys = (target ? params[1] : params[0]) as UseHotkeysHotkeys;\n const callback = (target ? params[2] : params[1]) as (event: KeyboardEvent) => void;\n const options = (target ? params[3] : params[2]) as UseHotkeysOptions | undefined;\n\n const internalRef = useRefState(window);\n const keysRef = useRef<UseHotkeysKey[]>([]);\n const enabled = options?.enabled ?? true;\n\n const onKeyDown = useEvent((event: KeyboardEvent) => {\n if (!enabled) return;\n\n if (keysRef.current.some(({ code }) => code === event.code)) return;\n\n const alias = options?.alias?.[event.key] ?? event.code;\n const updatedKeys = [...keysRef.current, { key: event.key, code: event.code, alias }];\n keysRef.current = updatedKeys;\n\n const hotkeysList = hotkeys.split(',').map((h) => h.trim());\n const isMatch = hotkeysList.some((hotkey) => isHotkeyMatch(hotkey, updatedKeys));\n if (!isMatch) return;\n event.preventDefault();\n callback(event);\n });\n\n const onKeyUp = useEvent((event: KeyboardEvent) => {\n if (!enabled) return;\n keysRef.current = keysRef.current.filter(({ code }) => code !== event.code);\n });\n\n useEffect(() => {\n keysRef.current = [];\n if (!target && !internalRef.state && !enabled) return;\n\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n element.addEventListener('keydown', onKeyDown as EventListener);\n element.addEventListener('keyup', onKeyUp as EventListener);\n\n return () => {\n element.removeEventListener('keydown', onKeyDown as EventListener);\n element.removeEventListener('keyup', onKeyUp as EventListener);\n };\n }, [target, internalRef.state, enabled, hotkeys, onKeyDown, onKeyUp]);\n\n if (target) return;\n return internalRef;\n}) as UseHotkeys;\n"],"names":["isHotkeyMatch","hotkey","keys","key","updatedKey","useHotkeys","params","target","isTarget","hotkeys","callback","options","internalRef","useRefState","keysRef","useRef","enabled","onKeyDown","useEvent","event","code","alias","_a","updatedKeys","h","onKeyUp","useEffect","element","getElement"],"mappings":";;;;;AAmBO,MAAMA,IAAgB,CAACC,GAAgBC,MAC5CD,EACG,YACA,EAAA,MAAM,UAAU,EAChB,IAAI,CAACE,MAAQA,EAAI,KAAA,CAAM,EACvB;AAAA,EAAM,CAACA,MACND,EAAK;AAAA,IACH,CAACE,MACCD,MAAQC,EAAW,KAAK,kBAAkB,KAC1CD,MAAQC,EAAW,IAAI,kBAAkB,KACzCD,MAAQC,EAAW,MAAM,kBAAkB;AAAA,EAAA;AAEjD,GAiESC,IAAc,IAAIC,MAAkB;AACzC,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAWF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACxCI,IAAYH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCK,IAAWJ,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCM,IAAcC,EAAY,MAAM,GAChCC,IAAUC,EAAwB,EAAE,GACpCC,KAAUL,KAAA,gBAAAA,EAAS,YAAW,IAE9BM,IAAYC,EAAS,CAACC,MAAyB;;AAG/C,QAFA,CAACH,KAEDF,EAAQ,QAAQ,KAAK,CAAC,EAAE,MAAAM,QAAWA,MAASD,EAAM,IAAI,EAAG;AAE7D,UAAME,MAAQC,IAAAX,KAAA,gBAAAA,EAAS,UAAT,gBAAAW,EAAiBH,EAAM,SAAQA,EAAM,MAC7CI,IAAc,CAAC,GAAGT,EAAQ,SAAS,EAAE,KAAKK,EAAM,KAAK,MAAMA,EAAM,MAAM,OAAAE,GAAO;AAKpF,IAJAP,EAAQ,UAAUS,GAEEd,EAAQ,MAAM,GAAG,EAAE,IAAI,CAACe,MAAMA,EAAE,MAAM,EAC9B,KAAK,CAACvB,MAAWD,EAAcC,GAAQsB,CAAW,CAAC,MAE/EJ,EAAM,eAAe,GACrBT,EAASS,CAAK;AAAA,EAAA,CACf,GAEKM,IAAUP,EAAS,CAACC,MAAyB;AACjD,IAAKH,MACGF,EAAA,UAAUA,EAAQ,QAAQ,OAAO,CAAC,EAAE,MAAAM,QAAWA,MAASD,EAAM,IAAI;AAAA,EAAA,CAC3E;AAkBD,MAhBAO,EAAU,MAAM;AAEd,QADAZ,EAAQ,UAAU,CAAC,GACf,CAACP,KAAU,CAACK,EAAY,SAAS,CAACI,EAAS;AAE/C,UAAMW,IAAWpB,IAASqB,EAAWrB,CAAM,IAAIK,EAAY;AAC3D,QAAKe;AAEG,aAAAA,EAAA,iBAAiB,WAAWV,CAA0B,GACtDU,EAAA,iBAAiB,SAASF,CAAwB,GAEnD,MAAM;AACH,QAAAE,EAAA,oBAAoB,WAAWV,CAA0B,GACzDU,EAAA,oBAAoB,SAASF,CAAwB;AAAA,MAC/D;AAAA,EAAA,GACC,CAAClB,GAAQK,EAAY,OAAOI,GAASP,GAASQ,GAAWQ,CAAO,CAAC,GAEhE,CAAAlB;AACG,WAAAK;AACT;"}
1
+ {"version":3,"file":"useHotkeys.mjs","sources":["../../../../src/hooks/useHotkeys/useHotkeys.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useEvent } from '../useEvent/useEvent';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use hotkeys params type */\nexport interface UseHotkeysOptions {\n /** Alias map for hotkeys */\n alias?: Record<string, string>;\n /** Enable or disable the event listeners */\n enabled?: boolean;\n}\n\nexport const isHotkeyMatch = (hotkey: string, keys: UseHotkeysKey[]) =>\n hotkey\n .toLowerCase()\n .split(/[+_,\\-]/g)\n .map((key) => key.trim())\n .every((key) =>\n keys.find(\n (updatedKey) =>\n key === updatedKey.code.toLocaleLowerCase() ||\n key === updatedKey.key.toLocaleLowerCase() ||\n key === updatedKey.alias.toLocaleLowerCase()\n )\n );\n\n/** The hotkeys string type */\nexport type UseHotkeysHotkeys = string;\n\n/** The hotkey key information */\nexport interface UseHotkeysKey {\n /** The alias for the key */\n alias: string;\n /** The key code */\n code: string;\n /** The key value */\n key: string;\n}\n\n/** The use hotkeys target type */\nexport type UseHotkeysTarget = Element | React.RefObject<Element | null | undefined>;\n\nexport interface UseHotkeys {\n (\n target: UseHotkeysTarget,\n hotkeys: UseHotkeysHotkeys,\n callback: (event: KeyboardEvent) => void,\n options?: UseHotkeysOptions\n ): void;\n\n <Target extends Element>(\n hotkeys: UseHotkeysHotkeys,\n callback: (event: KeyboardEvent) => void,\n options?: UseHotkeysOptions,\n target?: never\n ): StateRef<Target>;\n}\n\n/**\n * @name useHotkeys\n * @description - Hook that listens for hotkeys\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} [target=window] The target element to attach the event listener to\n * @param {string} hotkeys The hotkey to listen for\n * @param {(event: KeyboardEvent) => void} callback The callback function to execute when hotkey is pressed\n * @param {Record<string, string>} [options.alias] Alias map for hotkeys\n * @param {boolean} [options.enabled=true] Enable or disable the event listeners\n * @returns {void}\n *\n * @example\n * useHotkeys(ref, 'ctrl+a', () => console.log('hotkey pressed'));\n * @example\n * useHotkeys(ref, 'ctrl+a, ctrl+b', () => console.log('hotkey pressed'));\n *\n * @overload\n * @template Target The target element\n * @param {string} hotkeys The hotkey to listen for\n * @param {(event: KeyboardEvent) => void} callback The callback function to execute when hotkey is pressed\n * @param {Record<string, string>} [options.alias] Alias map for hotkeys\n * @param {boolean} [options.enabled=true] Enable or disable the event listeners\n * @returns {StateRef<Target>} A reference to the target element\n *\n * @example\n * const ref = useHotkeys('ctrl+a', () => console.log('hotkey pressed'));\n * @example\n * const ref = useHotkeys('ctrl+a, ctrl+b', () => console.log('hotkey pressed'));\n */\nexport const useHotkeys = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const hotkeys = (target ? params[1] : params[0]) as UseHotkeysHotkeys;\n const callback = (target ? params[2] : params[1]) as (event: KeyboardEvent) => void;\n const options = (target ? params[3] : params[2]) as UseHotkeysOptions | undefined;\n\n const internalRef = useRefState(window);\n const keysRef = useRef<UseHotkeysKey[]>([]);\n const enabled = options?.enabled ?? true;\n\n const onKeyDown = useEvent((event: KeyboardEvent) => {\n if (!enabled) return;\n\n if (keysRef.current.some(({ code }) => code === event.code)) return;\n\n const alias = options?.alias?.[event.key] ?? event.code;\n const updatedKeys = [...keysRef.current, { key: event.key, code: event.code, alias }];\n keysRef.current = updatedKeys;\n\n const hotkeysList = hotkeys.split(',').map((h) => h.trim());\n const isMatch = hotkeysList.some((hotkey) => isHotkeyMatch(hotkey, updatedKeys));\n if (!isMatch) return;\n event.preventDefault();\n callback(event);\n });\n\n const onKeyUp = useEvent((event: KeyboardEvent) => {\n if (!enabled) return;\n keysRef.current = keysRef.current.filter(({ code }) => code !== event.code);\n });\n\n useEffect(() => {\n keysRef.current = [];\n if (!target && !internalRef.state && !enabled) return;\n\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n element.addEventListener('keydown', onKeyDown as EventListener);\n element.addEventListener('keyup', onKeyUp as EventListener);\n\n return () => {\n element.removeEventListener('keydown', onKeyDown as EventListener);\n element.removeEventListener('keyup', onKeyUp as EventListener);\n };\n }, [target, internalRef.state, enabled, hotkeys, onKeyDown, onKeyUp]);\n\n if (target) return;\n return internalRef;\n}) as UseHotkeys;\n"],"names":["isHotkeyMatch","hotkey","keys","key","updatedKey","useHotkeys","params","target","isTarget","hotkeys","callback","options","internalRef","useRefState","keysRef","useRef","enabled","onKeyDown","useEvent","event","code","alias","updatedKeys","h","onKeyUp","useEffect","element","getElement"],"mappings":";;;;;AAmBO,MAAMA,IAAgB,CAACC,GAAgBC,MAC5CD,EACG,cACA,MAAM,UAAU,EAChB,IAAI,CAACE,MAAQA,EAAI,KAAA,CAAM,EACvB;AAAA,EAAM,CAACA,MACND,EAAK;AAAA,IACH,CAACE,MACCD,MAAQC,EAAW,KAAK,kBAAA,KACxBD,MAAQC,EAAW,IAAI,kBAAA,KACvBD,MAAQC,EAAW,MAAM,kBAAA;AAAA,EAAkB;AAEjD,GAiESC,IAAc,IAAIC,MAAkB;AAC/C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAWF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACxCI,IAAYH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCK,IAAWJ,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCM,IAAcC,EAAY,MAAM,GAChCC,IAAUC,EAAwB,EAAE,GACpCC,IAAUL,GAAS,WAAW,IAE9BM,IAAYC,EAAS,CAACC,MAAyB;AAGnD,QAFI,CAACH,KAEDF,EAAQ,QAAQ,KAAK,CAAC,EAAE,MAAAM,QAAWA,MAASD,EAAM,IAAI,EAAG;AAE7D,UAAME,IAAQV,GAAS,QAAQQ,EAAM,GAAG,KAAKA,EAAM,MAC7CG,IAAc,CAAC,GAAGR,EAAQ,SAAS,EAAE,KAAKK,EAAM,KAAK,MAAMA,EAAM,MAAM,OAAAE,GAAO;AAKpF,IAJAP,EAAQ,UAAUQ,GAEEb,EAAQ,MAAM,GAAG,EAAE,IAAI,CAACc,MAAMA,EAAE,MAAM,EAC9B,KAAK,CAACtB,MAAWD,EAAcC,GAAQqB,CAAW,CAAC,MAE/EH,EAAM,eAAA,GACNT,EAASS,CAAK;AAAA,EAAA,CACf,GAEKK,IAAUN,EAAS,CAACC,MAAyB;AACjD,IAAKH,MACLF,EAAQ,UAAUA,EAAQ,QAAQ,OAAO,CAAC,EAAE,MAAAM,QAAWA,MAASD,EAAM,IAAI;AAAA,EAAA,CAC3E;AAkBD,MAhBAM,EAAU,MAAM;AAEd,QADAX,EAAQ,UAAU,CAAA,GACd,CAACP,KAAU,CAACK,EAAY,SAAS,CAACI,EAAS;AAE/C,UAAMU,IAAWnB,IAASoB,EAAWpB,CAAM,IAAIK,EAAY;AAC3D,QAAKc;AAEL,aAAAA,EAAQ,iBAAiB,WAAWT,CAA0B,GAC9DS,EAAQ,iBAAiB,SAASF,CAAwB,GAEnD,MAAM;AACX,QAAAE,EAAQ,oBAAoB,WAAWT,CAA0B,GACjES,EAAQ,oBAAoB,SAASF,CAAwB;AAAA,MAAA;AAAA,EAC/D,GACC,CAACjB,GAAQK,EAAY,OAAOI,GAASP,GAASQ,GAAWO,CAAO,CAAC,GAEhE,CAAAjB;AACJ,WAAOK;AACT;"}
@@ -1,29 +1,27 @@
1
- import { useState as m, useRef as L, useEffect as d } from "react";
2
- import { useRefState as g } from "../useRefState/useRefState.mjs";
3
- import { isTarget as y } from "../../utils/helpers/isTarget.mjs";
4
- import { getElement as R } from "../../utils/helpers/getElement.mjs";
5
- const H = (...t) => {
6
- const n = y(t[0]) ? t[0] : void 0, f = n ? typeof t[1] == "object" ? t[1] : { onEntry: t[1] } : typeof t[0] == "object" ? t[0] : { onEntry: t[0] }, [c, v] = m(!1), s = g(), u = L(f);
7
- return u.current = f, d(() => {
8
- if (!n && !s.state) return;
9
- const o = n ? R(n) : s.current;
10
- if (!o) return;
11
- const E = (i) => {
12
- var e, r;
13
- (r = (e = u.current) == null ? void 0 : e.onEntry) == null || r.call(e, i), v(!0);
14
- }, l = (i) => {
15
- var e, r;
16
- (r = (e = u.current) == null ? void 0 : e.onLeave) == null || r.call(e, i), v(!1);
1
+ import { useState as E, useRef as l, useEffect as m } from "react";
2
+ import { useRefState as L } from "../useRefState/useRefState.mjs";
3
+ import { isTarget as d } from "../../utils/helpers/isTarget.mjs";
4
+ import { getElement as g } from "../../utils/helpers/getElement.mjs";
5
+ const j = (...e) => {
6
+ const t = d(e[0]) ? e[0] : void 0, u = t ? typeof e[1] == "object" ? e[1] : { onEntry: e[1] } : typeof e[0] == "object" ? e[0] : { onEntry: e[0] }, [i, f] = E(!1), o = L(), r = l(u);
7
+ return r.current = u, m(() => {
8
+ if (!t && !o.state) return;
9
+ const n = t ? g(t) : o.current;
10
+ if (!n) return;
11
+ const c = (s) => {
12
+ r.current?.onEntry?.(s), f(!0);
13
+ }, v = (s) => {
14
+ r.current?.onLeave?.(s), f(!1);
17
15
  };
18
- return o.addEventListener("mouseenter", E), o.addEventListener("mouseleave", l), () => {
19
- o.removeEventListener("mouseenter", E), o.removeEventListener("mouseleave", l);
16
+ return n.addEventListener("mouseenter", c), n.addEventListener("mouseleave", v), () => {
17
+ n.removeEventListener("mouseenter", c), n.removeEventListener("mouseleave", v);
20
18
  };
21
- }, [n, s.state]), n ? c : {
22
- ref: s,
23
- value: c
19
+ }, [t, o.state]), t ? i : {
20
+ ref: o,
21
+ value: i
24
22
  };
25
23
  };
26
24
  export {
27
- H as useHover
25
+ j as useHover
28
26
  };
29
27
  //# sourceMappingURL=useHover.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHover.mjs","sources":["../../../../src/hooks/useHover/useHover.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use hover options type */\nexport interface UseHoverOptions {\n /** The on entry callback */\n onEntry?: (event: Event) => void;\n /** The on leave callback */\n onLeave?: (event: Event) => void;\n}\n\nexport interface UseHoverReturn {\n value: boolean;\n}\n\nexport interface UseHover {\n (target: HookTarget, callback?: (event: Event) => void): boolean;\n\n (target: HookTarget, options?: UseHoverOptions): boolean;\n\n <Target extends Element>(\n callback?: (event: Event) => void,\n target?: never\n ): { ref: StateRef<Target> } & UseHoverReturn;\n\n <Target extends Element>(\n options?: UseHoverOptions,\n target?: never\n ): { ref: StateRef<Target> } & UseHoverReturn;\n}\n\n/**\n * @name useHover\n * @description - Hook that defines the logic when hovering an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, () => console.log('callback'));\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {{ ref: StateRef<Target> } & UseHoverReturn} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(() => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {{ ref: StateRef<Target> } & UseHoverReturn} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(options);\n */\nexport const useHover = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onEntry: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onEntry: params[0] }\n ) as UseHoverOptions | undefined;\n\n const [hovering, setHovering] = useState(false);\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const onMouseEnter = (event: Event) => {\n internalOptionsRef.current?.onEntry?.(event);\n setHovering(true);\n };\n\n const onMouseLeave = (event: Event) => {\n internalOptionsRef.current?.onLeave?.(event);\n setHovering(false);\n };\n\n element.addEventListener('mouseenter', onMouseEnter);\n element.addEventListener('mouseleave', onMouseLeave);\n\n return () => {\n element.removeEventListener('mouseenter', onMouseEnter);\n element.removeEventListener('mouseleave', onMouseLeave);\n };\n }, [target, internalRef.state]);\n\n if (target) return hovering;\n return {\n ref: internalRef,\n value: hovering\n } as const;\n}) as UseHover;\n"],"names":["useHover","params","target","isTarget","options","hovering","setHovering","useState","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","getElement","onMouseEnter","event","_b","_a","onMouseLeave"],"mappings":";;;;AA6Ea,MAAAA,IAAY,IAAIC,MAAkB;AACvC,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5CG,IACJF,IACI,OAAOD,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,SAASA,EAAO,CAAC,EAAE,IACvB,OAAOA,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,SAASA,EAAO,CAAC,EAAE,GAGvB,CAACI,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAcC,EAAqB,GACnCC,IAAqBC,EAAOP,CAAO;AA4BzC,SA3BAM,EAAmB,UAAUN,GAE7BQ,EAAU,MAAM;AACd,QAAI,CAACV,KAAU,CAACM,EAAY,MAAO;AACnC,UAAMK,IAAWX,IAASY,EAAWZ,CAAM,IAAIM,EAAY;AAE3D,QAAI,CAACK,EAAS;AAER,UAAAE,IAAe,CAACC,MAAiB;;AAClB,OAAAC,KAAAC,IAAAR,EAAA,YAAA,gBAAAQ,EAAS,YAAT,QAAAD,EAAA,KAAAC,GAAmBF,IACtCV,EAAY,EAAI;AAAA,IAClB,GAEMa,IAAe,CAACH,MAAiB;;AAClB,OAAAC,KAAAC,IAAAR,EAAA,YAAA,gBAAAQ,EAAS,YAAT,QAAAD,EAAA,KAAAC,GAAmBF,IACtCV,EAAY,EAAK;AAAA,IACnB;AAEQ,WAAAO,EAAA,iBAAiB,cAAcE,CAAY,GAC3CF,EAAA,iBAAiB,cAAcM,CAAY,GAE5C,MAAM;AACH,MAAAN,EAAA,oBAAoB,cAAcE,CAAY,GAC9CF,EAAA,oBAAoB,cAAcM,CAAY;AAAA,IACxD;AAAA,EACC,GAAA,CAACjB,GAAQM,EAAY,KAAK,CAAC,GAE1BN,IAAeG,IACZ;AAAA,IACL,KAAKG;AAAA,IACL,OAAOH;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"useHover.mjs","sources":["../../../../src/hooks/useHover/useHover.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use hover options type */\nexport interface UseHoverOptions {\n /** The on entry callback */\n onEntry?: (event: Event) => void;\n /** The on leave callback */\n onLeave?: (event: Event) => void;\n}\n\nexport interface UseHoverReturn {\n value: boolean;\n}\n\nexport interface UseHover {\n (target: HookTarget, callback?: (event: Event) => void): boolean;\n\n (target: HookTarget, options?: UseHoverOptions): boolean;\n\n <Target extends Element>(\n callback?: (event: Event) => void,\n target?: never\n ): { ref: StateRef<Target> } & UseHoverReturn;\n\n <Target extends Element>(\n options?: UseHoverOptions,\n target?: never\n ): { ref: StateRef<Target> } & UseHoverReturn;\n}\n\n/**\n * @name useHover\n * @description - Hook that defines the logic when hovering an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, () => console.log('callback'));\n *\n * @overload\n * @param {HookTarget} target The target element to be hovered\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {boolean} The state of the hover\n *\n * @example\n * const hovering = useHover(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [callback] The callback function to be invoked on mouse enter\n * @returns {{ ref: StateRef<Target> } & UseHoverReturn} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(() => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: Event) => void} [options.onEntry] The callback function to be invoked on mouse enter\n * @param {(event: Event) => void} [options.onLeave] The callback function to be invoked on mouse leave\n * @returns {{ ref: StateRef<Target> } & UseHoverReturn} The state of the hover\n *\n * @example\n * const [ref, hovering] = useHover(options);\n */\nexport const useHover = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onEntry: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onEntry: params[0] }\n ) as UseHoverOptions | undefined;\n\n const [hovering, setHovering] = useState(false);\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const onMouseEnter = (event: Event) => {\n internalOptionsRef.current?.onEntry?.(event);\n setHovering(true);\n };\n\n const onMouseLeave = (event: Event) => {\n internalOptionsRef.current?.onLeave?.(event);\n setHovering(false);\n };\n\n element.addEventListener('mouseenter', onMouseEnter);\n element.addEventListener('mouseleave', onMouseLeave);\n\n return () => {\n element.removeEventListener('mouseenter', onMouseEnter);\n element.removeEventListener('mouseleave', onMouseLeave);\n };\n }, [target, internalRef.state]);\n\n if (target) return hovering;\n return {\n ref: internalRef,\n value: hovering\n } as const;\n}) as UseHover;\n"],"names":["useHover","params","target","isTarget","options","hovering","setHovering","useState","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","getElement","onMouseEnter","event","onMouseLeave"],"mappings":";;;;AA6EO,MAAMA,IAAY,IAAIC,MAAkB;AAC7C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5CG,IACJF,IACI,OAAOD,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,SAASA,EAAO,CAAC,EAAA,IACrB,OAAOA,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,SAASA,EAAO,CAAC,EAAA,GAGrB,CAACI,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAcC,EAAA,GACdC,IAAqBC,EAAOP,CAAO;AA4BzC,SA3BAM,EAAmB,UAAUN,GAE7BQ,EAAU,MAAM;AACd,QAAI,CAACV,KAAU,CAACM,EAAY,MAAO;AACnC,UAAMK,IAAWX,IAASY,EAAWZ,CAAM,IAAIM,EAAY;AAE3D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAe,CAACC,MAAiB;AACrC,MAAAN,EAAmB,SAAS,UAAUM,CAAK,GAC3CV,EAAY,EAAI;AAAA,IAAA,GAGZW,IAAe,CAACD,MAAiB;AACrC,MAAAN,EAAmB,SAAS,UAAUM,CAAK,GAC3CV,EAAY,EAAK;AAAA,IAAA;AAGnB,WAAAO,EAAQ,iBAAiB,cAAcE,CAAY,GACnDF,EAAQ,iBAAiB,cAAcI,CAAY,GAE5C,MAAM;AACX,MAAAJ,EAAQ,oBAAoB,cAAcE,CAAY,GACtDF,EAAQ,oBAAoB,cAAcI,CAAY;AAAA,IAAA;AAAA,EACxD,GACC,CAACf,GAAQM,EAAY,KAAK,CAAC,GAE1BN,IAAeG,IACZ;AAAA,IACL,KAAKG;AAAA,IACL,OAAOH;AAAA,EAAA;AAEX;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIdle.mjs","sources":["../../../../src/hooks/useIdle/useIdle.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { throttle } from '@/utils/helpers';\n\n/** The use idle options type */\nexport interface UseIdleOptions {\n /** The idle events */\n events?: Array<keyof DocumentEventMap>;\n /** The idle state */\n initialValue?: boolean;\n}\n\nconst IDLE_EVENTS = [\n 'mousemove',\n 'mousedown',\n 'keydown',\n 'touchstart',\n 'wheel',\n 'resize'\n] satisfies Array<keyof DocumentEventMap>;\nconst ONE_MINUTE = 60e3;\n\n/** The use idle return type */\nexport interface UseIdleReturn {\n /** The idle state */\n idle: boolean;\n /** The last active time */\n lastActive: number;\n}\n\n/**\n * @name useIdle\n * @description - Hook that defines the logic when the user is idle\n * @category Sensors\n *\n * @param {number} [milliseconds=ONE_MINUTE] The idle time in milliseconds\n * @param {boolean} [options.initialState=false] The options for the hook\n * @param {Array<keyof WindowEventMap>} [options.events=IDLE_EVENTS]\n * @returns {UseIdleReturn} An object containing the idle state and the last active time\n *\n * @example\n * const { idle, lastActive } = useIdle();\n */\nexport const useIdle = (\n milliseconds = ONE_MINUTE,\n { initialValue = false, events = IDLE_EVENTS }: UseIdleOptions = {}\n): UseIdleReturn => {\n const [idle, setIdle] = useState(initialValue);\n const [lastActive, setLastActive] = useState(Date.now());\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n const onTimeout = () => setIdle(true);\n\n const onEvent = throttle(() => {\n setIdle(false);\n setLastActive(Date.now());\n clearTimeout(timeoutId);\n timeoutId = setTimeout(onTimeout, milliseconds);\n }, 500);\n\n const onVisibilitychange = () => {\n if (!document.hidden) onEvent();\n };\n\n timeoutId = setTimeout(onTimeout, milliseconds);\n\n events.forEach((event) => window.addEventListener(event, onEvent));\n document.addEventListener('visibilitychange', onVisibilitychange);\n\n return () => {\n events.forEach((event) => window.addEventListener(event, onEvent));\n document.removeEventListener('visibilitychange', onVisibilitychange);\n clearTimeout(timeoutId);\n };\n }, [milliseconds, events]);\n\n return { idle, lastActive };\n};\n"],"names":["IDLE_EVENTS","ONE_MINUTE","useIdle","milliseconds","initialValue","events","idle","setIdle","useState","lastActive","setLastActive","useEffect","timeoutId","onTimeout","onEvent","throttle","onVisibilitychange","event"],"mappings":";;AAYA,MAAMA,IAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACMC,IAAa,KAuBNC,IAAU,CACrBC,IAAeF,GACf,EAAE,cAAAG,IAAe,IAAO,QAAAC,IAASL,EAAgC,IAAA,OAC/C;AAClB,QAAM,CAACM,GAAMC,CAAO,IAAIC,EAASJ,CAAY,GACvC,CAACK,GAAYC,CAAa,IAAIF,EAAS,KAAK,KAAK;AAEvD,SAAAG,EAAU,MAAM;AACV,QAAAC;AACE,UAAAC,IAAY,MAAMN,EAAQ,EAAI,GAE9BO,IAAUC,EAAS,MAAM;AAC7B,MAAAR,EAAQ,EAAK,GACCG,EAAA,KAAK,KAAK,GACxB,aAAaE,CAAS,GACVA,IAAA,WAAWC,GAAWV,CAAY;AAAA,OAC7C,GAAG,GAEAa,IAAqB,MAAM;AAC3B,MAAC,SAAS,UAAgBF,EAAA;AAAA,IAChC;AAEY,WAAAF,IAAA,WAAWC,GAAWV,CAAY,GAE9CE,EAAO,QAAQ,CAACY,MAAU,OAAO,iBAAiBA,GAAOH,CAAO,CAAC,GACxD,SAAA,iBAAiB,oBAAoBE,CAAkB,GAEzD,MAAM;AACX,MAAAX,EAAO,QAAQ,CAACY,MAAU,OAAO,iBAAiBA,GAAOH,CAAO,CAAC,GACxD,SAAA,oBAAoB,oBAAoBE,CAAkB,GACnE,aAAaJ,CAAS;AAAA,IACxB;AAAA,EAAA,GACC,CAACT,GAAcE,CAAM,CAAC,GAElB,EAAE,MAAAC,GAAM,YAAAG,EAAW;AAC5B;"}
1
+ {"version":3,"file":"useIdle.mjs","sources":["../../../../src/hooks/useIdle/useIdle.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { throttle } from '@/utils/helpers';\n\n/** The use idle options type */\nexport interface UseIdleOptions {\n /** The idle events */\n events?: Array<keyof DocumentEventMap>;\n /** The idle state */\n initialValue?: boolean;\n}\n\nconst IDLE_EVENTS = [\n 'mousemove',\n 'mousedown',\n 'keydown',\n 'touchstart',\n 'wheel',\n 'resize'\n] satisfies Array<keyof DocumentEventMap>;\nconst ONE_MINUTE = 60e3;\n\n/** The use idle return type */\nexport interface UseIdleReturn {\n /** The idle state */\n idle: boolean;\n /** The last active time */\n lastActive: number;\n}\n\n/**\n * @name useIdle\n * @description - Hook that defines the logic when the user is idle\n * @category Sensors\n *\n * @param {number} [milliseconds=ONE_MINUTE] The idle time in milliseconds\n * @param {boolean} [options.initialState=false] The options for the hook\n * @param {Array<keyof WindowEventMap>} [options.events=IDLE_EVENTS]\n * @returns {UseIdleReturn} An object containing the idle state and the last active time\n *\n * @example\n * const { idle, lastActive } = useIdle();\n */\nexport const useIdle = (\n milliseconds = ONE_MINUTE,\n { initialValue = false, events = IDLE_EVENTS }: UseIdleOptions = {}\n): UseIdleReturn => {\n const [idle, setIdle] = useState(initialValue);\n const [lastActive, setLastActive] = useState(Date.now());\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n const onTimeout = () => setIdle(true);\n\n const onEvent = throttle(() => {\n setIdle(false);\n setLastActive(Date.now());\n clearTimeout(timeoutId);\n timeoutId = setTimeout(onTimeout, milliseconds);\n }, 500);\n\n const onVisibilitychange = () => {\n if (!document.hidden) onEvent();\n };\n\n timeoutId = setTimeout(onTimeout, milliseconds);\n\n events.forEach((event) => window.addEventListener(event, onEvent));\n document.addEventListener('visibilitychange', onVisibilitychange);\n\n return () => {\n events.forEach((event) => window.addEventListener(event, onEvent));\n document.removeEventListener('visibilitychange', onVisibilitychange);\n clearTimeout(timeoutId);\n };\n }, [milliseconds, events]);\n\n return { idle, lastActive };\n};\n"],"names":["IDLE_EVENTS","ONE_MINUTE","useIdle","milliseconds","initialValue","events","idle","setIdle","useState","lastActive","setLastActive","useEffect","timeoutId","onTimeout","onEvent","throttle","onVisibilitychange","event"],"mappings":";;AAYA,MAAMA,IAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACMC,IAAa,KAuBNC,IAAU,CACrBC,IAAeF,GACf,EAAE,cAAAG,IAAe,IAAO,QAAAC,IAASL,EAAA,IAAgC,OAC/C;AAClB,QAAM,CAACM,GAAMC,CAAO,IAAIC,EAASJ,CAAY,GACvC,CAACK,GAAYC,CAAa,IAAIF,EAAS,KAAK,KAAK;AAEvD,SAAAG,EAAU,MAAM;AACd,QAAIC;AACJ,UAAMC,IAAY,MAAMN,EAAQ,EAAI,GAE9BO,IAAUC,EAAS,MAAM;AAC7B,MAAAR,EAAQ,EAAK,GACbG,EAAc,KAAK,KAAK,GACxB,aAAaE,CAAS,GACtBA,IAAY,WAAWC,GAAWV,CAAY;AAAA,IAAA,GAC7C,GAAG,GAEAa,IAAqB,MAAM;AAC/B,MAAK,SAAS,UAAQF,EAAA;AAAA,IAAQ;AAGhC,WAAAF,IAAY,WAAWC,GAAWV,CAAY,GAE9CE,EAAO,QAAQ,CAACY,MAAU,OAAO,iBAAiBA,GAAOH,CAAO,CAAC,GACjE,SAAS,iBAAiB,oBAAoBE,CAAkB,GAEzD,MAAM;AACX,MAAAX,EAAO,QAAQ,CAACY,MAAU,OAAO,iBAAiBA,GAAOH,CAAO,CAAC,GACjE,SAAS,oBAAoB,oBAAoBE,CAAkB,GACnE,aAAaJ,CAAS;AAAA,IAAA;AAAA,EACxB,GACC,CAACT,GAAcE,CAAM,CAAC,GAElB,EAAE,MAAAC,GAAM,YAAAG,EAAA;AACjB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useImage.mjs","sources":["../../../../src/hooks/useImage/useImage.ts"],"sourcesContent":["import type { UseQueryOptions, UseQueryReturn } from '../useQuery/useQuery';\n\nimport { useQuery } from '../useQuery/useQuery';\n\n/** The use image options */\nexport interface UseImageOptions {\n /** The alt of the image */\n alt?: string;\n /** The class of the image */\n class?: string;\n /** The crossorigin of the image */\n crossorigin?: string;\n /** The loading of the image */\n loading?: HTMLImageElement['loading'];\n /** The referrer policy of the image */\n referrerPolicy?: HTMLImageElement['referrerPolicy'];\n /** The sizes of the image */\n sizes?: string;\n /** The srcset of the image */\n srcset?: string;\n}\n\n/** The use image return type */\nexport type UseImageReturn = UseQueryReturn<HTMLImageElement>;\n\nconst loadImage = async (src: string, options: UseImageOptions = {}): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n const { srcset, sizes, class: className, loading, crossorigin, referrerPolicy } = options;\n\n img.src = src;\n if (srcset) img.srcset = srcset;\n if (sizes) img.sizes = sizes;\n if (className) img.className = className;\n if (loading) img.loading = loading;\n if (crossorigin) img.crossOrigin = crossorigin;\n\n if (referrerPolicy) img.referrerPolicy = referrerPolicy;\n\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n\n/**\n * @name useImage\n * @description - Hook that load an image in the browser\n * @category Browser\n *\n * @param {string} src The source of the image\n * @param {string} [options.srcset] The srcset of the image\n * @param {string} [options.sizes] The sizes of the image\n * @param {string} [options.alt] The alt of the image\n * @param {string} [options.class] The class of the image\n * @param {HTMLImageElement['loading']} [options.loading] The loading of the image\n * @param {string} [options.crossorigin] The crossorigin of the image\n * @param {HTMLImageElement['referrerPolicy']} [options.referrerPolicy] The referrerPolicy of the image\n * @param {DependencyList} [useQueryOptions.keys] The dependencies for the hook\n * @param {(data: Data) => void} [useQueryOptions.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [useQueryOptions.onError] The callback function to be invoked on error\n * @param {number} [useQueryOptions.refetchInterval] The refetch interval\n * @param {boolean | number} [useQueryOptions.retry] The retry count of requests\n * @returns {UseImageReturn} An object with the state of the image\n *\n * @example\n * const { data, isLoading, isError, isSuccess, error, refetch, isRefetching } = useImage('https://example.com/image.png');\n */\nexport const useImage = (\n src: string,\n options?: UseImageOptions,\n useQueryOptions: Omit<\n UseQueryOptions<HTMLImageElement, HTMLImageElement>,\n 'initialData' | 'placeholderData' | 'select'\n > = {}\n) =>\n useQuery(() => loadImage(src, options), {\n keys: [src, ...(useQueryOptions.keys ?? [])],\n ...useQueryOptions\n });\n"],"names":["loadImage","src","options","resolve","reject","img","srcset","sizes","className","loading","crossorigin","referrerPolicy","useImage","useQueryOptions","useQuery"],"mappings":";AAyBA,MAAMA,IAAY,OAAOC,GAAaC,IAA2B,CAAA,MAC/D,IAAI,QAAQ,CAACC,GAASC,MAAW;AACzB,QAAAC,IAAM,IAAI,MAAM,GAChB,EAAE,QAAAC,GAAQ,OAAAC,GAAO,OAAOC,GAAW,SAAAC,GAAS,aAAAC,GAAa,gBAAAC,MAAmBT;AAElF,EAAAG,EAAI,MAAMJ,GACNK,QAAY,SAASA,IACrBC,QAAW,QAAQA,IACnBC,QAAe,YAAYA,IAC3BC,QAAa,UAAUA,IACvBC,QAAiB,cAAcA,IAE/BC,QAAoB,iBAAiBA,IAErCN,EAAA,SAAS,MAAMF,EAAQE,CAAG,GAC9BA,EAAI,UAAUD;AAChB,CAAC,GAyBUQ,IAAW,CACtBX,GACAC,GACAW,IAGI,CAAA,MAEJC,EAAS,MAAMd,EAAUC,GAAKC,CAAO,GAAG;AAAA,EACtC,MAAM,CAACD,GAAK,GAAIY,EAAgB,QAAQ,CAAA,CAAG;AAAA,EAC3C,GAAGA;AACL,CAAC;"}
1
+ {"version":3,"file":"useImage.mjs","sources":["../../../../src/hooks/useImage/useImage.ts"],"sourcesContent":["import type { UseQueryOptions, UseQueryReturn } from '../useQuery/useQuery';\n\nimport { useQuery } from '../useQuery/useQuery';\n\n/** The use image options */\nexport interface UseImageOptions {\n /** The alt of the image */\n alt?: string;\n /** The class of the image */\n class?: string;\n /** The crossorigin of the image */\n crossorigin?: string;\n /** The loading of the image */\n loading?: HTMLImageElement['loading'];\n /** The referrer policy of the image */\n referrerPolicy?: HTMLImageElement['referrerPolicy'];\n /** The sizes of the image */\n sizes?: string;\n /** The srcset of the image */\n srcset?: string;\n}\n\n/** The use image return type */\nexport type UseImageReturn = UseQueryReturn<HTMLImageElement>;\n\nconst loadImage = async (src: string, options: UseImageOptions = {}): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n const { srcset, sizes, class: className, loading, crossorigin, referrerPolicy } = options;\n\n img.src = src;\n if (srcset) img.srcset = srcset;\n if (sizes) img.sizes = sizes;\n if (className) img.className = className;\n if (loading) img.loading = loading;\n if (crossorigin) img.crossOrigin = crossorigin;\n\n if (referrerPolicy) img.referrerPolicy = referrerPolicy;\n\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n\n/**\n * @name useImage\n * @description - Hook that load an image in the browser\n * @category Browser\n *\n * @param {string} src The source of the image\n * @param {string} [options.srcset] The srcset of the image\n * @param {string} [options.sizes] The sizes of the image\n * @param {string} [options.alt] The alt of the image\n * @param {string} [options.class] The class of the image\n * @param {HTMLImageElement['loading']} [options.loading] The loading of the image\n * @param {string} [options.crossorigin] The crossorigin of the image\n * @param {HTMLImageElement['referrerPolicy']} [options.referrerPolicy] The referrerPolicy of the image\n * @param {DependencyList} [useQueryOptions.keys] The dependencies for the hook\n * @param {(data: Data) => void} [useQueryOptions.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [useQueryOptions.onError] The callback function to be invoked on error\n * @param {number} [useQueryOptions.refetchInterval] The refetch interval\n * @param {boolean | number} [useQueryOptions.retry] The retry count of requests\n * @returns {UseImageReturn} An object with the state of the image\n *\n * @example\n * const { data, isLoading, isError, isSuccess, error, refetch, isRefetching } = useImage('https://example.com/image.png');\n */\nexport const useImage = (\n src: string,\n options?: UseImageOptions,\n useQueryOptions: Omit<\n UseQueryOptions<HTMLImageElement, HTMLImageElement>,\n 'initialData' | 'placeholderData' | 'select'\n > = {}\n) =>\n useQuery(() => loadImage(src, options), {\n keys: [src, ...(useQueryOptions.keys ?? [])],\n ...useQueryOptions\n });\n"],"names":["loadImage","src","options","resolve","reject","img","srcset","sizes","className","loading","crossorigin","referrerPolicy","useImage","useQueryOptions","useQuery"],"mappings":";AAyBA,MAAMA,IAAY,OAAOC,GAAaC,IAA2B,CAAA,MAC/D,IAAI,QAAQ,CAACC,GAASC,MAAW;AAC/B,QAAMC,IAAM,IAAI,MAAA,GACV,EAAE,QAAAC,GAAQ,OAAAC,GAAO,OAAOC,GAAW,SAAAC,GAAS,aAAAC,GAAa,gBAAAC,MAAmBT;AAElF,EAAAG,EAAI,MAAMJ,GACNK,QAAY,SAASA,IACrBC,QAAW,QAAQA,IACnBC,QAAe,YAAYA,IAC3BC,QAAa,UAAUA,IACvBC,QAAiB,cAAcA,IAE/BC,QAAoB,iBAAiBA,IAEzCN,EAAI,SAAS,MAAMF,EAAQE,CAAG,GAC9BA,EAAI,UAAUD;AAChB,CAAC,GAyBUQ,IAAW,CACtBX,GACAC,GACAW,IAGI,CAAA,MAEJC,EAAS,MAAMd,EAAUC,GAAKC,CAAO,GAAG;AAAA,EACtC,MAAM,CAACD,GAAK,GAAIY,EAAgB,QAAQ,CAAA,CAAG;AAAA,EAC3C,GAAGA;AACL,CAAC;"}
@@ -1,13 +1,13 @@
1
- import { useState as v, useRef as S, useEffect as k } from "react";
2
- import { useEvent as H } from "../useEvent/useEvent.mjs";
3
- import { useRefState as I } from "../useRefState/useRefState.mjs";
4
- import { isTarget as T } from "../../utils/helpers/isTarget.mjs";
5
- import { getElement as W } from "../../utils/helpers/getElement.mjs";
6
- const j = (...e) => {
7
- const t = T(e[0]) ? e[0] : void 0, s = t ? e[1] : e[0], r = t ? e[2] : e[1], i = (r == null ? void 0 : r.direction) ?? "bottom", l = (r == null ? void 0 : r.distance) ?? 10, [c, f] = v(!1), n = I(), a = S(s);
1
+ import { useState as p, useRef as v, useEffect as S } from "react";
2
+ import { useEvent as k } from "../useEvent/useEvent.mjs";
3
+ import { useRefState as H } from "../useRefState/useRefState.mjs";
4
+ import { isTarget as I } from "../../utils/helpers/isTarget.mjs";
5
+ import { getElement as T } from "../../utils/helpers/getElement.mjs";
6
+ const M = (...e) => {
7
+ const t = I(e[0]) ? e[0] : void 0, s = t ? e[1] : e[0], c = t ? e[2] : e[1], i = c?.direction ?? "bottom", l = c?.distance ?? 10, [r, f] = p(!1), n = H(), a = v(s);
8
8
  a.current = s;
9
- const u = H(async (o) => {
10
- if (c) return;
9
+ const u = k(async (o) => {
10
+ if (r) return;
11
11
  const { clientHeight: g, scrollHeight: h, scrollTop: d, clientWidth: E, scrollWidth: L, scrollLeft: m } = o.target, R = h - (d + g), b = L - (m + E);
12
12
  ({
13
13
  bottom: R,
@@ -16,19 +16,19 @@ const j = (...e) => {
16
16
  left: m
17
17
  })[i] <= l && (f(!0), await a.current(o), f(!1));
18
18
  });
19
- return k(() => {
19
+ return S(() => {
20
20
  if (!t && !n.state) return;
21
- const o = t ? W(t) : n.current;
21
+ const o = t ? T(t) : n.current;
22
22
  if (o)
23
23
  return o.addEventListener("scroll", u), () => {
24
24
  o.removeEventListener("scroll", u);
25
25
  };
26
- }, [t, n.state, i, l]), t ? c : {
26
+ }, [t, n.state, i, l]), t ? r : {
27
27
  ref: n,
28
- loading: c
28
+ loading: r
29
29
  };
30
30
  };
31
31
  export {
32
- j as useInfiniteScroll
32
+ M as useInfiniteScroll
33
33
  };
34
34
  //# sourceMappingURL=useInfiniteScroll.mjs.map