@siberiacancode/reactuse 0.2.12 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
  2. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -1
  3. package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
  4. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs +1 -1
  5. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
  6. package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
  7. package/dist/cjs/hooks/useBattery/useBattery.cjs +1 -1
  8. package/dist/cjs/hooks/useBattery/useBattery.cjs.map +1 -1
  9. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs +1 -1
  10. package/dist/cjs/hooks/useBluetooth/useBluetooth.cjs.map +1 -1
  11. package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
  12. package/dist/cjs/hooks/useBreakpoints/useBreakpoints.cjs.map +1 -1
  13. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
  14. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  15. package/dist/cjs/hooks/useClipboard/useClipboard.cjs +1 -1
  16. package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
  17. package/dist/cjs/hooks/useCookie/useCookie.cjs +1 -1
  18. package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
  19. package/dist/cjs/hooks/useCookies/useCookies.cjs +1 -1
  20. package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
  21. package/dist/cjs/hooks/useCopy/useCopy.cjs.map +1 -1
  22. package/dist/cjs/hooks/useCounter/useCounter.cjs +1 -1
  23. package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
  24. package/dist/cjs/hooks/useCssVar/useCssVar.cjs +1 -1
  25. package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
  26. package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.cjs +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 +1 -1
  201. package/dist/cjs/utils/helpers/debounce.cjs.map +1 -1
  202. package/dist/cjs/utils/helpers/getDate.cjs.map +1 -1
  203. package/dist/cjs/utils/helpers/getElement.cjs.map +1 -1
  204. package/dist/cjs/utils/helpers/getRetry.cjs.map +1 -1
  205. package/dist/cjs/utils/helpers/isTarget.cjs.map +1 -1
  206. package/dist/cjs/utils/helpers/throttle.cjs.map +1 -1
  207. package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
  208. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -1
  209. package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
  210. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +1 -1
  211. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
  212. package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
  213. package/dist/esm/hooks/useBattery/useBattery.mjs +10 -10
  214. package/dist/esm/hooks/useBattery/useBattery.mjs.map +1 -1
  215. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs +14 -15
  216. package/dist/esm/hooks/useBluetooth/useBluetooth.mjs.map +1 -1
  217. package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
  218. package/dist/esm/hooks/useBreakpoints/useBreakpoints.mjs.map +1 -1
  219. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
  220. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
  221. package/dist/esm/hooks/useClipboard/useClipboard.mjs +13 -14
  222. package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
  223. package/dist/esm/hooks/useConst/useConst.mjs.map +1 -1
  224. package/dist/esm/hooks/useCookie/useCookie.mjs +27 -27
  225. package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
  226. package/dist/esm/hooks/useCookies/useCookies.mjs +19 -19
  227. package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
  228. package/dist/esm/hooks/useCopy/useCopy.mjs.map +1 -1
  229. package/dist/esm/hooks/useCounter/useCounter.mjs +5 -6
  230. package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
  231. package/dist/esm/hooks/useCssVar/useCssVar.mjs +13 -14
  232. package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
  233. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs +14 -7
  234. package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.mjs.map +1 -1
  235. package/dist/esm/hooks/useDebounceValue/useDebounceValue.mjs.map +1 -1
  236. package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
  237. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs +18 -19
  238. package/dist/esm/hooks/useDeviceMotion/useDeviceMotion.mjs.map +1 -1
  239. package/dist/esm/hooks/useDeviceOrientation/useDeviceOrientation.mjs.map +1 -1
  240. package/dist/esm/hooks/useDevicePixelRatio/useDevicePixelRatio.mjs.map +1 -1
  241. package/dist/esm/hooks/useDidUpdate/useDidUpdate.mjs.map +1 -1
  242. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs +5 -11
  243. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
  244. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs +28 -28
  245. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
  246. package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
  247. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs +15 -15
  248. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
  249. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.mjs.map +1 -1
  250. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +11 -13
  251. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
  252. package/dist/esm/hooks/useDropZone/useDropZone.mjs +27 -28
  253. package/dist/esm/hooks/useDropZone/useDropZone.mjs.map +1 -1
  254. package/dist/esm/hooks/useElementSize/useElementSize.mjs.map +1 -1
  255. package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
  256. package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
  257. package/dist/esm/hooks/useEventSource/useEventSource.mjs +37 -40
  258. package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
  259. package/dist/esm/hooks/useEyeDropper/useEyeDropper.mjs.map +1 -1
  260. package/dist/esm/hooks/useFavicon/useFavicon.mjs +11 -12
  261. package/dist/esm/hooks/useFavicon/useFavicon.mjs.map +1 -1
  262. package/dist/esm/hooks/useField/useField.mjs +45 -49
  263. package/dist/esm/hooks/useField/useField.mjs.map +1 -1
  264. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs +22 -25
  265. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
  266. package/dist/esm/hooks/useFocus/useFocus.mjs +24 -32
  267. package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
  268. package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
  269. package/dist/esm/hooks/useFul/useFul.mjs.map +1 -1
  270. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs +23 -24
  271. package/dist/esm/hooks/useFullscreen/useFullscreen.mjs.map +1 -1
  272. package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
  273. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs +24 -24
  274. package/dist/esm/hooks/useGeolocation/useGeolocation.mjs.map +1 -1
  275. package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
  276. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs +24 -25
  277. package/dist/esm/hooks/useHotkeys/useHotkeys.mjs.map +1 -1
  278. package/dist/esm/hooks/useHover/useHover.mjs +20 -22
  279. package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
  280. package/dist/esm/hooks/useIdle/useIdle.mjs.map +1 -1
  281. package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
  282. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +14 -14
  283. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
  284. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +19 -20
  285. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
  286. package/dist/esm/hooks/useInterval/useInterval.mjs +8 -8
  287. package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
  288. package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.mjs.map +1 -1
  289. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +22 -24
  290. package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
  291. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs +23 -23
  292. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.mjs.map +1 -1
  293. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs +16 -22
  294. package/dist/esm/hooks/useKeyboard/useKeyboard.mjs.map +1 -1
  295. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +20 -20
  296. package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
  297. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs +6 -6
  298. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
  299. package/dist/esm/hooks/useLatest/useLatest.mjs +12 -4
  300. package/dist/esm/hooks/useLatest/useLatest.mjs.map +1 -1
  301. package/dist/esm/hooks/useLess/useLess.mjs.map +1 -1
  302. package/dist/esm/hooks/useList/useList.mjs.map +1 -1
  303. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
  304. package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
  305. package/dist/esm/hooks/useLongPress/useLongPress.mjs +23 -27
  306. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  307. package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
  308. package/dist/esm/hooks/useMeasure/useMeasure.mjs.map +1 -1
  309. package/dist/esm/hooks/useMediaQuery/useMediaQuery.mjs.map +1 -1
  310. package/dist/esm/hooks/useMemory/useMemory.mjs +1 -1
  311. package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
  312. package/dist/esm/hooks/useMount/useMount.mjs.map +1 -1
  313. package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
  314. package/dist/esm/hooks/useMutation/useMutation.mjs +38 -42
  315. package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
  316. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs +12 -12
  317. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
  318. package/dist/esm/hooks/useNetwork/useNetwork.mjs +28 -28
  319. package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
  320. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
  321. package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
  322. package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
  323. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
  324. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
  325. package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
  326. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs +12 -13
  327. package/dist/esm/hooks/useOtpCredential/useOtpCredential.mjs.map +1 -1
  328. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs +6 -6
  329. package/dist/esm/hooks/usePageLeave/usePageLeave.mjs.map +1 -1
  330. package/dist/esm/hooks/usePaint/usePaint.mjs +87 -93
  331. package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
  332. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  333. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +17 -19
  334. package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
  335. package/dist/esm/hooks/usePermission/usePermission.mjs +13 -13
  336. package/dist/esm/hooks/usePermission/usePermission.mjs.map +1 -1
  337. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
  338. package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
  339. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
  340. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
  341. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
  342. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
  343. package/dist/esm/hooks/usePrevious/usePrevious.mjs +4 -4
  344. package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
  345. package/dist/esm/hooks/useQuery/useQuery.mjs +39 -41
  346. package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
  347. package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
  348. package/dist/esm/hooks/useRaf/useRaf.mjs +21 -21
  349. package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
  350. package/dist/esm/hooks/useRafValue/useRafValue.mjs.map +1 -1
  351. package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
  352. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
  353. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
  354. package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
  355. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +16 -17
  356. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
  357. package/dist/esm/hooks/useScreenOrientation/useScreenOrientation.mjs +11 -11
  358. package/dist/esm/hooks/useScreenOrientation/useScreenOrientation.mjs.map +1 -1
  359. package/dist/esm/hooks/useScript/useScript.mjs +16 -16
  360. package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
  361. package/dist/esm/hooks/useScroll/useScroll.mjs +37 -39
  362. package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
  363. package/dist/esm/hooks/useScrollIntoView/useScrollIntoView.mjs.map +1 -1
  364. package/dist/esm/hooks/useScrollTo/useScrollTo.mjs.map +1 -1
  365. package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
  366. package/dist/esm/hooks/useShare/useShare.mjs.map +1 -1
  367. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +35 -35
  368. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
  369. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs +36 -42
  370. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
  371. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
  372. package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
  373. package/dist/esm/hooks/useSticky/useSticky.mjs +12 -12
  374. package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
  375. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs +10 -11
  376. package/dist/esm/hooks/useStopwatch/useStopwatch.mjs.map +1 -1
  377. package/dist/esm/hooks/useStorage/useStorage.mjs +27 -27
  378. package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
  379. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +21 -24
  380. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
  381. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs +7 -7
  382. package/dist/esm/hooks/useTextSelection/useTextSelection.mjs.map +1 -1
  383. package/dist/esm/hooks/useThrottleCallback/useThrottleCallback.mjs.map +1 -1
  384. package/dist/esm/hooks/useThrottleValue/useThrottleValue.mjs.map +1 -1
  385. package/dist/esm/hooks/useTime/useTime.mjs.map +1 -1
  386. package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
  387. package/dist/esm/hooks/useTimer/useTimer.mjs +51 -54
  388. package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
  389. package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
  390. package/dist/esm/hooks/useUnmount/useUnmount.mjs.map +1 -1
  391. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs +38 -38
  392. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
  393. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +29 -29
  394. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
  395. package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
  396. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +16 -16
  397. package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
  398. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +28 -38
  399. package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
  400. package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
  401. package/dist/esm/hooks/useWindowFocus/useWindowFocus.mjs.map +1 -1
  402. package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
  403. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs +9 -9
  404. package/dist/esm/hooks/useWindowSize/useWindowSize.mjs.map +1 -1
  405. package/dist/esm/hooks/useWizard/useWizard.mjs +9 -11
  406. package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
  407. package/dist/esm/utils/helpers/copy.mjs.map +1 -1
  408. package/dist/esm/utils/helpers/debounce.mjs +6 -5
  409. package/dist/esm/utils/helpers/debounce.mjs.map +1 -1
  410. package/dist/esm/utils/helpers/getDate.mjs.map +1 -1
  411. package/dist/esm/utils/helpers/getElement.mjs.map +1 -1
  412. package/dist/esm/utils/helpers/getRetry.mjs.map +1 -1
  413. package/dist/esm/utils/helpers/isTarget.mjs.map +1 -1
  414. package/dist/esm/utils/helpers/throttle.mjs.map +1 -1
  415. package/dist/types/hooks/useDebounceCallback/useDebounceCallback.d.ts +4 -1
  416. package/dist/types/hooks/useLatest/useLatest.d.ts +8 -3
  417. package/dist/types/utils/helpers/debounce.d.ts +5 -1
  418. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"useDropZone.mjs","sources":["../../../../src/hooks/useDropZone/useDropZone.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\nexport type DropZoneDataTypes = ((types: string[]) => boolean) | string[];\n\nexport interface UseDropZoneOptions {\n /** The data types for drop zone */\n dataTypes?: DropZoneDataTypes;\n /** The multiple mode for drop zone */\n multiple?: boolean;\n /** The on drop callback */\n onDrop?: (files: File[] | null, event: DragEvent) => void;\n /** The on enter callback */\n onEnter?: (event: DragEvent) => void;\n /** The on leave callback */\n onLeave?: (event: DragEvent) => void;\n /** The on over callback */\n onOver?: (event: DragEvent) => void;\n}\n\nexport interface UseDropZoneReturn {\n /** The files that was dropped in drop zone */\n files: File[] | null;\n /** The over drop zone status */\n overed: boolean;\n}\n\nexport interface UseDropZone {\n (\n target: HookTarget,\n callback?: (files: File[] | null, event: DragEvent) => void\n ): UseDropZoneReturn;\n\n <Target extends Element>(\n callback?: (files: File[] | null, event: DragEvent) => void,\n target?: never\n ): UseDropZoneReturn & {\n ref: StateRef<Target>;\n };\n\n (target: HookTarget, options?: UseDropZoneOptions): UseDropZoneReturn;\n\n <Target extends Element>(\n options?: UseDropZoneOptions,\n target?: never\n ): UseDropZoneReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useDropZone\n * @description - Hook that provides drop zone functionality\n * @category Elements\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element drop zone's\n * @param {DataTypes} [options.dataTypes] The data types\n * @param {boolean} [options.multiple] The multiple mode\n * @param {(files: File[] | null, event: DragEvent) => void} [options.onDrop] The on drop callback function\n * @param {(event: DragEvent) => void} [options.onEnter] The on enter callback function\n * @param {(event: DragEvent) => void} [options.onLeave] The on leave callback function\n * @param {(event: DragEvent) => void} [options.onOver] The on over callback function\n * @returns {UseDropZoneReturn} The object with drop zone states\n *\n * @example\n * const { overed, files } = useDropZone(ref, options);\n *\n * @overload\n * @param {Target} target The target element drop zone's\n * @param {(files: File[] | null, event: DragEvent) => void} [callback] The callback function to be invoked on drop\n * @returns {UseDropZoneReturn} The object with drop zone states\n *\n * @example\n * const { overed, files } = useDropZone(ref, () => console.log('callback'));\n *\n * @overload\n * @param {DataTypes} [options.dataTypes] The data types\n * @param {boolean} [options.multiple] The multiple mode\n * @param {(files: File[] | null, event: DragEvent) => void} [options.onDrop] The on drop callback function\n * @param {(event: DragEvent) => void} [options.onEnter] The on enter callback function\n * @param {(event: DragEvent) => void} [options.onLeave] The on leave callback function\n * @param {(event: DragEvent) => void} [options.onOver] The on over callback function\n * @returns {UseDropZoneReturn & { ref: StateRef<Target> }} The object with drop zone states and ref\n *\n * @example\n * const { ref, overed, files } = useDropZone(options);\n *\n * @overload\n * @param {(files: File[] | null, event: DragEvent) => void} [callback] The callback function to be invoked on drop\n * @returns {UseDropZoneReturn & { ref: StateRef<Target> }} The object with drop zone states and ref\n *\n * @example\n * const { ref, overed, files } = useDropZone(() => console.log('callback'));\n */\n\nexport const useDropZone = ((...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 : { onDrop: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onDrop: params[0] }\n ) as UseDropZoneOptions;\n\n const internalRef = useRefState<Element>();\n\n const counterRef = useRef(0);\n const [files, setFiles] = useState<File[] | null>(null);\n const [overed, setOvered] = useState(false);\n\n const dataTypes = options.dataTypes;\n\n const getFiles = (event: DragEvent) => {\n if (!event.dataTransfer) return null;\n const list = Array.from(event.dataTransfer.files);\n if (options.multiple) return list;\n if (!list.length) return null;\n return [list[0]];\n };\n\n const checkDataTypes = (types: string[]) => {\n if (!dataTypes) return true;\n if (typeof dataTypes === 'function') return dataTypes(types);\n if (!dataTypes.length) return true;\n if (!types.length) return false;\n\n return types.every((type) => {\n console.log('type', type);\n console.log('dataTypes', dataTypes);\n return dataTypes.some((dataType) => type.includes(dataType));\n });\n };\n\n const checkValidity = (items: DataTransferItemList) => {\n const types = Array.from(items).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = options.multiple || items.length <= 1;\n\n return dataTypesValid && multipleFilesValid;\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n\n if (!element) return;\n\n const onEvent = (event: DragEvent, type: 'drop' | 'enter' | 'leave' | 'over') => {\n if (!event.dataTransfer) return;\n\n const isValid = checkValidity(event.dataTransfer.items);\n if (!isValid) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n\n const currentFiles = getFiles(event);\n\n if (type === 'drop') {\n counterRef.current = 0;\n setOvered(false);\n setFiles(currentFiles);\n options.onDrop?.(currentFiles, event);\n return;\n }\n\n if (type === 'enter') {\n counterRef.current += 1;\n setOvered(true);\n options.onEnter?.(event);\n return;\n }\n\n if (type === 'leave') {\n counterRef.current -= 1;\n if (counterRef.current !== 0) return;\n setOvered(false);\n options.onLeave?.(event);\n return;\n }\n\n if (type === 'over') options.onOver?.(event);\n };\n\n const onDrop = ((event: DragEvent) => onEvent(event, 'drop')) as EventListener;\n const onDragOver = ((event: DragEvent) => onEvent(event, 'over')) as EventListener;\n const onDragEnter = ((event: DragEvent) => onEvent(event, 'enter')) as EventListener;\n const onDragLeave = ((event: DragEvent) => onEvent(event, 'leave')) as EventListener;\n\n element.addEventListener('dragenter', onDragEnter);\n element.addEventListener('dragover', onDragOver);\n element.addEventListener('dragleave', onDragLeave);\n element.addEventListener('drop', onDrop);\n\n return () => {\n element.removeEventListener('dragenter', onDragEnter);\n element.removeEventListener('dragover', onDragOver);\n element.removeEventListener('dragleave', onDragLeave);\n element.removeEventListener('drop', onDrop);\n };\n }, [target, internalRef.current]);\n\n if (target) return { overed, files };\n return { ref: internalRef, overed, files };\n}) as UseDropZone;\n"],"names":["useDropZone","params","target","isTarget","options","internalRef","useRefState","counterRef","useRef","files","setFiles","useState","overed","setOvered","dataTypes","getFiles","event","list","checkDataTypes","types","type","dataType","checkValidity","items","item","dataTypesValid","multipleFilesValid","useEffect","element","getElement","onEvent","currentFiles","_a","_b","_c","_d","onDrop","onDragOver","onDragEnter","onDragLeave"],"mappings":"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"}
1
+ {"version":3,"file":"useDropZone.mjs","sources":["../../../../src/hooks/useDropZone/useDropZone.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\nexport type DropZoneDataTypes = ((types: string[]) => boolean) | string[];\n\nexport interface UseDropZoneOptions {\n /** The data types for drop zone */\n dataTypes?: DropZoneDataTypes;\n /** The multiple mode for drop zone */\n multiple?: boolean;\n /** The on drop callback */\n onDrop?: (files: File[] | null, event: DragEvent) => void;\n /** The on enter callback */\n onEnter?: (event: DragEvent) => void;\n /** The on leave callback */\n onLeave?: (event: DragEvent) => void;\n /** The on over callback */\n onOver?: (event: DragEvent) => void;\n}\n\nexport interface UseDropZoneReturn {\n /** The files that was dropped in drop zone */\n files: File[] | null;\n /** The over drop zone status */\n overed: boolean;\n}\n\nexport interface UseDropZone {\n (\n target: HookTarget,\n callback?: (files: File[] | null, event: DragEvent) => void\n ): UseDropZoneReturn;\n\n <Target extends Element>(\n callback?: (files: File[] | null, event: DragEvent) => void,\n target?: never\n ): UseDropZoneReturn & {\n ref: StateRef<Target>;\n };\n\n (target: HookTarget, options?: UseDropZoneOptions): UseDropZoneReturn;\n\n <Target extends Element>(\n options?: UseDropZoneOptions,\n target?: never\n ): UseDropZoneReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useDropZone\n * @description - Hook that provides drop zone functionality\n * @category Elements\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element drop zone's\n * @param {DataTypes} [options.dataTypes] The data types\n * @param {boolean} [options.multiple] The multiple mode\n * @param {(files: File[] | null, event: DragEvent) => void} [options.onDrop] The on drop callback function\n * @param {(event: DragEvent) => void} [options.onEnter] The on enter callback function\n * @param {(event: DragEvent) => void} [options.onLeave] The on leave callback function\n * @param {(event: DragEvent) => void} [options.onOver] The on over callback function\n * @returns {UseDropZoneReturn} The object with drop zone states\n *\n * @example\n * const { overed, files } = useDropZone(ref, options);\n *\n * @overload\n * @param {Target} target The target element drop zone's\n * @param {(files: File[] | null, event: DragEvent) => void} [callback] The callback function to be invoked on drop\n * @returns {UseDropZoneReturn} The object with drop zone states\n *\n * @example\n * const { overed, files } = useDropZone(ref, () => console.log('callback'));\n *\n * @overload\n * @param {DataTypes} [options.dataTypes] The data types\n * @param {boolean} [options.multiple] The multiple mode\n * @param {(files: File[] | null, event: DragEvent) => void} [options.onDrop] The on drop callback function\n * @param {(event: DragEvent) => void} [options.onEnter] The on enter callback function\n * @param {(event: DragEvent) => void} [options.onLeave] The on leave callback function\n * @param {(event: DragEvent) => void} [options.onOver] The on over callback function\n * @returns {UseDropZoneReturn & { ref: StateRef<Target> }} The object with drop zone states and ref\n *\n * @example\n * const { ref, overed, files } = useDropZone(options);\n *\n * @overload\n * @param {(files: File[] | null, event: DragEvent) => void} [callback] The callback function to be invoked on drop\n * @returns {UseDropZoneReturn & { ref: StateRef<Target> }} The object with drop zone states and ref\n *\n * @example\n * const { ref, overed, files } = useDropZone(() => console.log('callback'));\n */\n\nexport const useDropZone = ((...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 : { onDrop: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onDrop: params[0] }\n ) as UseDropZoneOptions;\n\n const internalRef = useRefState<Element>();\n\n const counterRef = useRef(0);\n const [files, setFiles] = useState<File[] | null>(null);\n const [overed, setOvered] = useState(false);\n\n const dataTypes = options.dataTypes;\n\n const getFiles = (event: DragEvent) => {\n if (!event.dataTransfer) return null;\n const list = Array.from(event.dataTransfer.files);\n if (options.multiple) return list;\n if (!list.length) return null;\n return [list[0]];\n };\n\n const checkDataTypes = (types: string[]) => {\n if (!dataTypes) return true;\n if (typeof dataTypes === 'function') return dataTypes(types);\n if (!dataTypes.length) return true;\n if (!types.length) return false;\n\n return types.every((type) => {\n console.log('type', type);\n console.log('dataTypes', dataTypes);\n return dataTypes.some((dataType) => type.includes(dataType));\n });\n };\n\n const checkValidity = (items: DataTransferItemList) => {\n const types = Array.from(items).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = options.multiple || items.length <= 1;\n\n return dataTypesValid && multipleFilesValid;\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n\n if (!element) return;\n\n const onEvent = (event: DragEvent, type: 'drop' | 'enter' | 'leave' | 'over') => {\n if (!event.dataTransfer) return;\n\n const isValid = checkValidity(event.dataTransfer.items);\n if (!isValid) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n\n const currentFiles = getFiles(event);\n\n if (type === 'drop') {\n counterRef.current = 0;\n setOvered(false);\n setFiles(currentFiles);\n options.onDrop?.(currentFiles, event);\n return;\n }\n\n if (type === 'enter') {\n counterRef.current += 1;\n setOvered(true);\n options.onEnter?.(event);\n return;\n }\n\n if (type === 'leave') {\n counterRef.current -= 1;\n if (counterRef.current !== 0) return;\n setOvered(false);\n options.onLeave?.(event);\n return;\n }\n\n if (type === 'over') options.onOver?.(event);\n };\n\n const onDrop = ((event: DragEvent) => onEvent(event, 'drop')) as EventListener;\n const onDragOver = ((event: DragEvent) => onEvent(event, 'over')) as EventListener;\n const onDragEnter = ((event: DragEvent) => onEvent(event, 'enter')) as EventListener;\n const onDragLeave = ((event: DragEvent) => onEvent(event, 'leave')) as EventListener;\n\n element.addEventListener('dragenter', onDragEnter);\n element.addEventListener('dragover', onDragOver);\n element.addEventListener('dragleave', onDragLeave);\n element.addEventListener('drop', onDrop);\n\n return () => {\n element.removeEventListener('dragenter', onDragEnter);\n element.removeEventListener('dragover', onDragOver);\n element.removeEventListener('dragleave', onDragLeave);\n element.removeEventListener('drop', onDrop);\n };\n }, [target, internalRef.current]);\n\n if (target) return { overed, files };\n return { ref: internalRef, overed, files };\n}) as UseDropZone;\n"],"names":["useDropZone","params","target","isTarget","options","internalRef","useRefState","counterRef","useRef","files","setFiles","useState","overed","setOvered","dataTypes","getFiles","event","list","checkDataTypes","types","type","dataType","checkValidity","items","item","dataTypesValid","multipleFilesValid","useEffect","element","getElement","onEvent","currentFiles","onDrop","onDragOver","onDragEnter","onDragLeave"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useElementSize.mjs","sources":["../../../../src/hooks/useElementSize/useElementSize.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The element size value type */\nexport interface UseElementSizeValue {\n /** The element's height */\n height: number;\n /** The element's width */\n width: number;\n}\n\n/** The use element size return type */\nexport interface UseElementSizeReturn {\n value: UseElementSizeValue;\n}\n\nexport interface UseElementSize {\n (target: HookTarget): UseElementSizeReturn;\n\n <Target extends Element>(target?: never): { ref: StateRef<Target> } & UseElementSizeReturn;\n}\n\n/**\n * @name useElementSize\n * @description - Hook that observes and returns the width and height of element\n * @category Elements\n *\n * @overload\n * @param {HookTarget} target The target element to observe\n * @returns {UseElementSizeReturn} An object containing the current width and height of the element\n *\n * @example\n * const { value } = useElementSize(ref);\n *\n * @overload\n * @returns { { ref: StateRef<Target> } & UseElementSizeReturn } An object containing the current width and height of the element\n *\n * @example\n * const { ref, value } = useElementSize();\n */\nexport const useElementSize = ((...params: any[]) => {\n const target = params[0] as HookTarget | undefined;\n const [size, setSize] = useState({ width: 0, height: 0 });\n const internalRef = useRefState<Element>();\n\n useIsomorphicLayoutEffect(() => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const { width, height } = element.getBoundingClientRect();\n setSize({\n width,\n height\n });\n\n const observer = new ResizeObserver(() => {\n const { width, height } = element.getBoundingClientRect();\n setSize({ width, height });\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [internalRef.current, target]);\n\n if (target) return { value: size };\n return {\n ref: internalRef,\n value: size\n };\n}) as UseElementSize;\n"],"names":["useElementSize","params","target","size","setSize","useState","internalRef","useRefState","useIsomorphicLayoutEffect","element","getElement","width","height","observer"],"mappings":";;;;AAgDa,MAAAA,IAAkB,IAAIC,MAAkB;AAC7C,QAAAC,IAASD,EAAO,CAAC,GACjB,CAACE,GAAMC,CAAO,IAAIC,EAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,GAClDC,IAAcC,EAAqB;AAyBzC,SAvBAC,EAA0B,MAAM;AAC9B,UAAMC,IAAWP,IAASQ,EAAWR,CAAM,IAAII,EAAY;AAE3D,QAAI,CAACG,EAAS;AAEd,UAAM,EAAE,OAAAE,GAAO,QAAAC,MAAWH,EAAQ,sBAAsB;AAChD,IAAAL,EAAA;AAAA,MACN,OAAAO;AAAA,MACA,QAAAC;AAAA,IAAA,CACD;AAEK,UAAAC,IAAW,IAAI,eAAe,MAAM;AACxC,YAAM,EAAE,OAAAF,GAAO,QAAAC,EAAO,IAAIH,EAAQ,sBAAsB;AACxD,MAAAL,EAAQ,EAAE,OAAAO,GAAO,QAAAC,GAAQ;AAAA,IAAA,CAC1B;AAED,WAAAC,EAAS,QAAQJ,CAAO,GAEjB,MAAM;AACX,MAAAI,EAAS,WAAW;AAAA,IACtB;AAAA,EACC,GAAA,CAACP,EAAY,SAASJ,CAAM,CAAC,GAE5BA,IAAe,EAAE,OAAOC,EAAK,IAC1B;AAAA,IACL,KAAKG;AAAA,IACL,OAAOH;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"useElementSize.mjs","sources":["../../../../src/hooks/useElementSize/useElementSize.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect';\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The element size value type */\nexport interface UseElementSizeValue {\n /** The element's height */\n height: number;\n /** The element's width */\n width: number;\n}\n\n/** The use element size return type */\nexport interface UseElementSizeReturn {\n value: UseElementSizeValue;\n}\n\nexport interface UseElementSize {\n (target: HookTarget): UseElementSizeReturn;\n\n <Target extends Element>(target?: never): { ref: StateRef<Target> } & UseElementSizeReturn;\n}\n\n/**\n * @name useElementSize\n * @description - Hook that observes and returns the width and height of element\n * @category Elements\n *\n * @overload\n * @param {HookTarget} target The target element to observe\n * @returns {UseElementSizeReturn} An object containing the current width and height of the element\n *\n * @example\n * const { value } = useElementSize(ref);\n *\n * @overload\n * @returns { { ref: StateRef<Target> } & UseElementSizeReturn } An object containing the current width and height of the element\n *\n * @example\n * const { ref, value } = useElementSize();\n */\nexport const useElementSize = ((...params: any[]) => {\n const target = params[0] as HookTarget | undefined;\n const [size, setSize] = useState({ width: 0, height: 0 });\n const internalRef = useRefState<Element>();\n\n useIsomorphicLayoutEffect(() => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const { width, height } = element.getBoundingClientRect();\n setSize({\n width,\n height\n });\n\n const observer = new ResizeObserver(() => {\n const { width, height } = element.getBoundingClientRect();\n setSize({ width, height });\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [internalRef.current, target]);\n\n if (target) return { value: size };\n return {\n ref: internalRef,\n value: size\n };\n}) as UseElementSize;\n"],"names":["useElementSize","params","target","size","setSize","useState","internalRef","useRefState","useIsomorphicLayoutEffect","element","getElement","width","height","observer"],"mappings":";;;;AAgDO,MAAMA,IAAkB,IAAIC,MAAkB;AACnD,QAAMC,IAASD,EAAO,CAAC,GACjB,CAACE,GAAMC,CAAO,IAAIC,EAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,GAClDC,IAAcC,EAAA;AAyBpB,SAvBAC,EAA0B,MAAM;AAC9B,UAAMC,IAAWP,IAASQ,EAAWR,CAAM,IAAII,EAAY;AAE3D,QAAI,CAACG,EAAS;AAEd,UAAM,EAAE,OAAAE,GAAO,QAAAC,MAAWH,EAAQ,sBAAA;AAClC,IAAAL,EAAQ;AAAA,MACN,OAAAO;AAAA,MACA,QAAAC;AAAA,IAAA,CACD;AAED,UAAMC,IAAW,IAAI,eAAe,MAAM;AACxC,YAAM,EAAE,OAAAF,GAAO,QAAAC,EAAAA,IAAWH,EAAQ,sBAAA;AAClC,MAAAL,EAAQ,EAAE,OAAAO,GAAO,QAAAC,GAAQ;AAAA,IAAA,CAC1B;AAED,WAAAC,EAAS,QAAQJ,CAAO,GAEjB,MAAM;AACX,MAAAI,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,CAACP,EAAY,SAASJ,CAAM,CAAC,GAE5BA,IAAe,EAAE,OAAOC,EAAA,IACrB;AAAA,IACL,KAAKG;AAAA,IACL,OAAOH;AAAA,EAAA;AAEX;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEvent.mjs","sources":["../../../../src/hooks/useEvent/useEvent.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\n/**\n * @name useEvent\n * @description - Hook that creates an event and returns a stable reference of it\n * @category Browser\n *\n * @template Params The type of the params\n * @template Return The type of the return\n * @param {(...args: Params) => Return} callback The callback function\n * @returns {(...args: Params) => Return} The callback\n *\n * @example\n * const onClick = useEvent(() => console.log('clicked'));\n */\nexport const useEvent = <Params extends unknown[], Return>(\n callback: (...args: Params) => Return\n): ((...args: Params) => Return) => {\n const callbackRef = useRef<typeof callback>(callback);\n callbackRef.current = callback;\n\n return useCallback((...args) => {\n const fn = callbackRef.current;\n return fn(...args);\n }, []);\n};\n"],"names":["useEvent","callback","callbackRef","useRef","useCallback","args","fn"],"mappings":";AAea,MAAAA,IAAW,CACtBC,MACkC;AAC5B,QAAAC,IAAcC,EAAwBF,CAAQ;AACpD,SAAAC,EAAY,UAAUD,GAEfG,EAAY,IAAIC,MAAS;AAC9B,UAAMC,IAAKJ,EAAY;AAChB,WAAAI,EAAG,GAAGD,CAAI;AAAA,EACnB,GAAG,EAAE;AACP;"}
1
+ {"version":3,"file":"useEvent.mjs","sources":["../../../../src/hooks/useEvent/useEvent.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\n/**\n * @name useEvent\n * @description - Hook that creates an event and returns a stable reference of it\n * @category Browser\n *\n * @template Params The type of the params\n * @template Return The type of the return\n * @param {(...args: Params) => Return} callback The callback function\n * @returns {(...args: Params) => Return} The callback\n *\n * @example\n * const onClick = useEvent(() => console.log('clicked'));\n */\nexport const useEvent = <Params extends unknown[], Return>(\n callback: (...args: Params) => Return\n): ((...args: Params) => Return) => {\n const callbackRef = useRef<typeof callback>(callback);\n callbackRef.current = callback;\n\n return useCallback((...args) => {\n const fn = callbackRef.current;\n return fn(...args);\n }, []);\n};\n"],"names":["useEvent","callback","callbackRef","useRef","useCallback","args","fn"],"mappings":";AAeO,MAAMA,IAAW,CACtBC,MACkC;AAClC,QAAMC,IAAcC,EAAwBF,CAAQ;AACpD,SAAAC,EAAY,UAAUD,GAEfG,EAAY,IAAIC,MAAS;AAC9B,UAAMC,IAAKJ,EAAY;AACvB,WAAOI,EAAG,GAAGD,CAAI;AAAA,EAAA,GAChB,EAAE;AACP;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEventListener.mjs","sources":["../../../../src/hooks/useEventListener/useEventListener.ts"],"sourcesContent":["import { useEffect } 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 event listener options */\nexport type UseEventListenerOptions = boolean | AddEventListenerOptions;\n\n/** The use event listener return type */\nexport type UseEventListenerReturn<Target extends Element> = StateRef<Target>;\n\nexport interface UseEventListener {\n <Event extends keyof WindowEventMap = keyof WindowEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Window, event: WindowEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof DocumentEventMap = keyof DocumentEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Element, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends Element, Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n event: Event,\n listener: (this: Target, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n\n <\n Target extends Element,\n Event extends keyof MediaQueryListEventMap = keyof MediaQueryListEventMap\n >(\n event: Event,\n listener: (this: Target, event: MediaQueryListEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n}\n\n/**\n * @name useEventListener\n * @description - Hook that attaches an event listener to the specified target\n * @category Browser\n *\n * @overload\n * @template Event Key of window event map\n * @param {Window} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Window, event: WindowEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(window, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @param {Document} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Document, event: DocumentEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(document, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {HookTarget} target The target element to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(ref, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event] | MediaQueryListEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {UseEventListenerReturn<Target>} A reference to the target element\n *\n * @example\n * const ref = useEventListener('click', () => console.log('click'));\n */\nexport const useEventListener = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const event = (target ? params[1] : params[0]) as string;\n const listener = (target ? params[2] : params[1]) as (...arg: any[]) => undefined | void;\n const options = (target ? params[3] : params[2]) as UseEventListenerOptions | undefined;\n\n const internalRef = useRefState(window);\n const internalListener = useEvent(listener);\n\n useEffect(() => {\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const callback = (event: Event) => internalListener(event);\n\n element.addEventListener(event, callback, options);\n return () => {\n element.removeEventListener(event, callback, options);\n };\n }, [target, internalRef.state, event, options]);\n\n if (target) return;\n return internalRef;\n}) as UseEventListener;\n"],"names":["useEventListener","params","target","isTarget","event","listener","options","internalRef","useRefState","internalListener","useEvent","useEffect","element","getElement","callback"],"mappings":";;;;;AA2Ga,MAAAA,IAAoB,IAAIC,MAAkB;AAC/C,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAASF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACtCI,IAAYH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCK,IAAWJ,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCM,IAAcC,EAAY,MAAM,GAChCC,IAAmBC,EAASL,CAAQ;AAc1C,MAZAM,EAAU,MAAM;AACd,UAAMC,IAAUV,IAASW,EAAWX,CAAM,IAAIK,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAW,CAACV,MAAiBK,EAAiBL,CAAK;AAEjD,WAAAQ,EAAA,iBAAiBR,GAAOU,GAAUR,CAAO,GAC1C,MAAM;AACH,MAAAM,EAAA,oBAAoBR,GAAOU,GAAUR,CAAO;AAAA,IACtD;AAAA,EAAA,GACC,CAACJ,GAAQK,EAAY,OAAOH,GAAOE,CAAO,CAAC,GAE1C,CAAAJ;AACG,WAAAK;AACT;"}
1
+ {"version":3,"file":"useEventListener.mjs","sources":["../../../../src/hooks/useEventListener/useEventListener.ts"],"sourcesContent":["import { useEffect } 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 event listener options */\nexport type UseEventListenerOptions = boolean | AddEventListenerOptions;\n\n/** The use event listener return type */\nexport type UseEventListenerReturn<Target extends Element> = StateRef<Target>;\n\nexport interface UseEventListener {\n <Event extends keyof WindowEventMap = keyof WindowEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Window, event: WindowEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof DocumentEventMap = keyof DocumentEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Document, event: DocumentEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n target: HookTarget,\n event: Event,\n listener: (this: Element, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends Element, Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(\n event: Event,\n listener: (this: Target, event: HTMLElementEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n\n <\n Target extends Element,\n Event extends keyof MediaQueryListEventMap = keyof MediaQueryListEventMap\n >(\n event: Event,\n listener: (this: Target, event: MediaQueryListEventMap[Event]) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): UseEventListenerReturn<Target>;\n}\n\n/**\n * @name useEventListener\n * @description - Hook that attaches an event listener to the specified target\n * @category Browser\n *\n * @overload\n * @template Event Key of window event map\n * @param {Window} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Window, event: WindowEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(window, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @param {Document} target The window object to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Document, event: DocumentEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(document, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {HookTarget} target The target element to attach the event listener to\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {void}\n *\n * @example\n * useEventListener(ref, 'click', () => console.log('click'));\n *\n * @overload\n * @template Event Key of window event map\n * @template Target The target element\n * @param {Event | Event[]} event An array of event types to listen for\n * @param {(this: Target, event: HTMLElementEventMap[Event] | MediaQueryListEventMap[Event]) => void} handler The event handler function\n * @param {UseEventListenerOptions} [options] Options for the event listener\n * @returns {UseEventListenerReturn<Target>} A reference to the target element\n *\n * @example\n * const ref = useEventListener('click', () => console.log('click'));\n */\nexport const useEventListener = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const event = (target ? params[1] : params[0]) as string;\n const listener = (target ? params[2] : params[1]) as (...arg: any[]) => undefined | void;\n const options = (target ? params[3] : params[2]) as UseEventListenerOptions | undefined;\n\n const internalRef = useRefState(window);\n const internalListener = useEvent(listener);\n\n useEffect(() => {\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const callback = (event: Event) => internalListener(event);\n\n element.addEventListener(event, callback, options);\n return () => {\n element.removeEventListener(event, callback, options);\n };\n }, [target, internalRef.state, event, options]);\n\n if (target) return;\n return internalRef;\n}) as UseEventListener;\n"],"names":["useEventListener","params","target","isTarget","event","listener","options","internalRef","useRefState","internalListener","useEvent","useEffect","element","getElement","callback"],"mappings":";;;;;AA2GO,MAAMA,IAAoB,IAAIC,MAAkB;AACrD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAASF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACtCI,IAAYH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCK,IAAWJ,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCM,IAAcC,EAAY,MAAM,GAChCC,IAAmBC,EAASL,CAAQ;AAc1C,MAZAM,EAAU,MAAM;AACd,UAAMC,IAAUV,IAASW,EAAWX,CAAM,IAAIK,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAW,CAACV,MAAiBK,EAAiBL,CAAK;AAEzD,WAAAQ,EAAQ,iBAAiBR,GAAOU,GAAUR,CAAO,GAC1C,MAAM;AACX,MAAAM,EAAQ,oBAAoBR,GAAOU,GAAUR,CAAO;AAAA,IAAA;AAAA,EACtD,GACC,CAACJ,GAAQK,EAAY,OAAOH,GAAOE,CAAO,CAAC,GAE1C,CAAAJ;AACJ,WAAOK;AACT;"}
@@ -1,52 +1,49 @@
1
- import { useState as l, useRef as S, useEffect as T } from "react";
2
- import { getRetry as h } from "../../utils/helpers/getRetry.mjs";
3
- const k = (R, w = [], e = {}) => {
4
- const [I, y] = l(!1), [O, m] = l(!1), [x, D] = l(!1), d = S(e != null && e.retry ? h(e.retry) : 0), [L, g] = l(void 0), [M, v] = l(e == null ? void 0 : e.placeholderData), c = S(void 0), C = e.immediately ?? !0, t = () => {
5
- c.current && (c.current.close(), c.current = void 0, m(!1), y(!1), D(!1));
6
- }, E = () => {
7
- t();
8
- const u = new EventSource(R, { withCredentials: e.withCredentials ?? !1 });
9
- c.current = u, y(!0), u.onopen = () => {
10
- var r;
11
- m(!0), y(!1), g(void 0), (r = e == null ? void 0 : e.onOpen) == null || r.call(e);
12
- }, u.onerror = (r) => {
13
- var a;
14
- if (m(!1), y(!1), D(!0), g(r), (a = e == null ? void 0 : e.onError) == null || a.call(e, r), d.current > 0) {
15
- d.current -= 1;
16
- const f = typeof (e == null ? void 0 : e.retryDelay) == "function" ? e == null ? void 0 : e.retryDelay(d.current, r) : e == null ? void 0 : e.retryDelay;
17
- if (f) {
18
- setTimeout(E, f);
1
+ import { useState as c, useRef as E, useEffect as I } from "react";
2
+ import { getRetry as D } from "../../utils/helpers/getRetry.mjs";
3
+ const L = (g, v = [], e = {}) => {
4
+ const [C, s] = c(!1), [S, f] = c(!1), [h, y] = c(!1), u = E(e?.retry ? D(e.retry) : 0), [R, d] = c(void 0), [w, i] = c(e?.placeholderData), n = E(void 0), m = e.immediately ?? !0, l = () => {
5
+ n.current && (n.current.close(), n.current = void 0, f(!1), s(!1), y(!1));
6
+ }, o = () => {
7
+ l();
8
+ const a = new EventSource(g, { withCredentials: e.withCredentials ?? !1 });
9
+ n.current = a, s(!0), a.onopen = () => {
10
+ f(!0), s(!1), d(void 0), e?.onOpen?.();
11
+ }, a.onerror = (r) => {
12
+ if (f(!1), s(!1), y(!0), d(r), e?.onError?.(r), u.current > 0) {
13
+ u.current -= 1;
14
+ const t = typeof e?.retryDelay == "function" ? e?.retryDelay(u.current, r) : e?.retryDelay;
15
+ if (t) {
16
+ setTimeout(o, t);
19
17
  return;
20
18
  }
21
19
  }
22
- d.current = e != null && e.retry ? h(e.retry) : 0;
23
- }, u.onmessage = (r) => {
24
- var f;
25
- const a = e != null && e.select ? e == null ? void 0 : e.select(r.data) : r.data;
26
- v(a), (f = e == null ? void 0 : e.onMessage) == null || f.call(e, r);
27
- }, w.forEach((r) => {
28
- u.addEventListener(r, (a) => {
29
- v(a.data);
20
+ u.current = e?.retry ? D(e.retry) : 0;
21
+ }, a.onmessage = (r) => {
22
+ const t = e?.select ? e?.select(r.data) : r.data;
23
+ i(t), e?.onMessage?.(r);
24
+ }, v.forEach((r) => {
25
+ a.addEventListener(r, (t) => {
26
+ i(t.data);
30
27
  });
31
28
  });
32
29
  };
33
- return T(() => {
34
- if (C)
35
- return E(), () => {
36
- t();
30
+ return I(() => {
31
+ if (m)
32
+ return o(), () => {
33
+ l();
37
34
  };
38
- }, [C]), {
39
- instance: c.current,
40
- data: M,
41
- error: L,
42
- isConnecting: I,
43
- isOpen: O,
44
- isError: x,
45
- close: t,
46
- open: E
35
+ }, [m]), {
36
+ instance: n.current,
37
+ data: w,
38
+ error: R,
39
+ isConnecting: C,
40
+ isOpen: S,
41
+ isError: h,
42
+ close: l,
43
+ open: o
47
44
  };
48
45
  };
49
46
  export {
50
- k as useEventSource
47
+ L as useEventSource
51
48
  };
52
49
  //# sourceMappingURL=useEventSource.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEventSource.mjs","sources":["../../../../src/hooks/useEventSource/useEventSource.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\n/** The use event source options type */\nexport interface UseEventSourceOptions<QueryData, Data> extends EventSourceInit {\n /** Immediately open the connection when calling this hook */\n immediately?: boolean;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, event: Event) => number) | number;\n /* The onError function to be invoked */\n onError?: (error: Event) => void;\n /* The onMessage function to be invoked */\n onMessage?: (event: Event & { data?: Data }) => void;\n /* The onOpen function to be invoked */\n onOpen?: () => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\n/** The use event source return type */\ninterface UseEventSourceReturn<Data = any> {\n /** The latest data received via the EventSource */\n data?: Data;\n /** The current error */\n error?: Event;\n /** The instance of the EventSource */\n instance?: EventSource;\n /* The connecting state of the query */\n isConnecting: boolean;\n /* The error state of the query */\n isError: boolean;\n /* The open state of the query */\n isOpen: boolean;\n /** Closes the EventSource connection gracefully */\n close: () => void;\n /** Reopen the EventSource connection */\n open: () => void;\n}\n\n/**\n * @name useEventSource\n * @description - Hook that provides a reactive wrapper for event source\n * @category Browser\n *\n * @browserapi EventSource https://developer.mozilla.org/en-US/docs/Web/API/EventSource\n *\n * @param {string | URL} url The URL of the EventSource\n * @param {string[]} [events=[]] List of events to listen to\n * @param {UseEventSourceOptions} [options={}] Configuration options\n * @returns {UseEventSourceReturn<Data>} The EventSource state and controls\n *\n * @example\n * const { instance, data, isConnecting, isOpen, isError, close, open } = useEventSource('url', ['message']);\n */\nexport const useEventSource = <QueryData = any, Data = QueryData>(\n url: string | URL,\n events: string[] = [],\n options: UseEventSourceOptions<QueryData, Data> = {}\n): UseEventSourceReturn<Data> => {\n const [isConnecting, setIsConnecting] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const [error, setError] = useState<Event | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const eventSourceRef = useRef<EventSource>(undefined);\n\n const immediately = options.immediately ?? true;\n\n const close = () => {\n if (!eventSourceRef.current) return;\n\n eventSourceRef.current.close();\n eventSourceRef.current = undefined;\n setIsOpen(false);\n setIsConnecting(false);\n setIsError(false);\n };\n\n const open = () => {\n close();\n\n const eventSource = new EventSource(url, { withCredentials: options.withCredentials ?? false });\n eventSourceRef.current = eventSource;\n\n setIsConnecting(true);\n\n eventSource.onopen = () => {\n setIsOpen(true);\n setIsConnecting(false);\n setError(undefined);\n options?.onOpen?.();\n };\n\n eventSource.onerror = (event) => {\n setIsOpen(false);\n setIsConnecting(false);\n setIsError(true);\n setError(event);\n options?.onError?.(event);\n\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, event)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(open, retryDelay);\n return;\n }\n }\n\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n };\n\n eventSource.onmessage = (event) => {\n const data = options?.select ? options?.select(event.data) : event.data;\n setData(data);\n options?.onMessage?.(event);\n };\n\n events.forEach((eventName) => {\n eventSource.addEventListener(eventName, (event: Event & { data?: Data }) => {\n setData(event.data);\n });\n });\n };\n\n useEffect(() => {\n if (!immediately) return;\n\n open();\n return () => {\n close();\n };\n }, [immediately]);\n\n return {\n instance: eventSourceRef.current,\n data,\n error,\n isConnecting,\n isOpen,\n isError,\n close,\n open\n };\n};\n"],"names":["useEventSource","url","events","options","isConnecting","setIsConnecting","useState","isOpen","setIsOpen","isError","setIsError","retryCountRef","useRef","getRetry","error","setError","data","setData","eventSourceRef","immediately","close","open","eventSource","_a","event","retryDelay","eventName","useEffect"],"mappings":";;AA2Da,MAAAA,IAAiB,CAC5BC,GACAC,IAAmB,CAAA,GACnBC,IAAkD,CAAA,MACnB;AAC/B,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChD,CAACC,GAAQC,CAAS,IAAIF,EAAS,EAAK,GACpC,CAACG,GAASC,CAAU,IAAIJ,EAAS,EAAK,GAEtCK,IAAgBC,EAAOT,KAAA,QAAAA,EAAS,QAAQU,EAASV,EAAQ,KAAK,IAAI,CAAC,GACnE,CAACW,GAAOC,CAAQ,IAAIT,EAA4B,MAAS,GACzD,CAACU,GAAMC,CAAO,IAAIX,EAA2BH,KAAA,gBAAAA,EAAS,eAAe,GAErEe,IAAiBN,EAAoB,MAAS,GAE9CO,IAAchB,EAAQ,eAAe,IAErCiB,IAAQ,MAAM;AACd,IAACF,EAAe,YAEpBA,EAAe,QAAQ,MAAM,GAC7BA,EAAe,UAAU,QACzBV,EAAU,EAAK,GACfH,EAAgB,EAAK,GACrBK,EAAW,EAAK;AAAA,EAClB,GAEMW,IAAO,MAAM;AACX,IAAAD,EAAA;AAEA,UAAAE,IAAc,IAAI,YAAYrB,GAAK,EAAE,iBAAiBE,EAAQ,mBAAmB,IAAO;AAC9F,IAAAe,EAAe,UAAUI,GAEzBjB,EAAgB,EAAI,GAEpBiB,EAAY,SAAS,MAAM;;AACzB,MAAAd,EAAU,EAAI,GACdH,EAAgB,EAAK,GACrBU,EAAS,MAAS,IAClBQ,IAAApB,KAAA,gBAAAA,EAAS,WAAT,QAAAoB,EAAA,KAAApB;AAAA,IACF,GAEYmB,EAAA,UAAU,CAACE,MAAU;;AAO3B,UANJhB,EAAU,EAAK,GACfH,EAAgB,EAAK,GACrBK,EAAW,EAAI,GACfK,EAASS,CAAK,IACdD,IAAApB,KAAA,gBAAAA,EAAS,YAAT,QAAAoB,EAAA,KAAApB,GAAmBqB,IAEfb,EAAc,UAAU,GAAG;AAC7B,QAAAA,EAAc,WAAW;AAEnB,cAAAc,IACJ,QAAOtB,KAAA,gBAAAA,EAAS,eAAe,aAC3BA,KAAA,gBAAAA,EAAS,WAAWQ,EAAc,SAASa,KAC3CrB,KAAA,gBAAAA,EAAS;AAEf,YAAIsB,GAAY;AACd,qBAAWJ,GAAMI,CAAU;AAC3B;AAAA,QAAA;AAAA,MACF;AAGF,MAAAd,EAAc,UAAUR,KAAA,QAAAA,EAAS,QAAQU,EAASV,EAAQ,KAAK,IAAI;AAAA,IACrE,GAEYmB,EAAA,YAAY,CAACE,MAAU;;AAC3BR,YAAAA,IAAOb,KAAA,QAAAA,EAAS,SAASA,KAAA,gBAAAA,EAAS,OAAOqB,EAAM,QAAQA,EAAM;AACnE,MAAAP,EAAQD,CAAI,IACZO,IAAApB,KAAA,gBAAAA,EAAS,cAAT,QAAAoB,EAAA,KAAApB,GAAqBqB;AAAA,IACvB,GAEOtB,EAAA,QAAQ,CAACwB,MAAc;AAChB,MAAAJ,EAAA,iBAAiBI,GAAW,CAACF,MAAmC;AAC1E,QAAAP,EAAQO,EAAM,IAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACF;AAAA,EACH;AAEA,SAAAG,EAAU,MAAM;AACd,QAAKR;AAEA,aAAAE,EAAA,GACE,MAAM;AACL,QAAAD,EAAA;AAAA,MACR;AAAA,EAAA,GACC,CAACD,CAAW,CAAC,GAET;AAAA,IACL,UAAUD,EAAe;AAAA,IACzB,MAAAF;AAAA,IACA,OAAAF;AAAA,IACA,cAAAV;AAAA,IACA,QAAAG;AAAA,IACA,SAAAE;AAAA,IACA,OAAAW;AAAA,IACA,MAAAC;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"useEventSource.mjs","sources":["../../../../src/hooks/useEventSource/useEventSource.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\n/** The use event source options type */\nexport interface UseEventSourceOptions<QueryData, Data> extends EventSourceInit {\n /** Immediately open the connection when calling this hook */\n immediately?: boolean;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, event: Event) => number) | number;\n /* The onError function to be invoked */\n onError?: (error: Event) => void;\n /* The onMessage function to be invoked */\n onMessage?: (event: Event & { data?: Data }) => void;\n /* The onOpen function to be invoked */\n onOpen?: () => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\n/** The use event source return type */\ninterface UseEventSourceReturn<Data = any> {\n /** The latest data received via the EventSource */\n data?: Data;\n /** The current error */\n error?: Event;\n /** The instance of the EventSource */\n instance?: EventSource;\n /* The connecting state of the query */\n isConnecting: boolean;\n /* The error state of the query */\n isError: boolean;\n /* The open state of the query */\n isOpen: boolean;\n /** Closes the EventSource connection gracefully */\n close: () => void;\n /** Reopen the EventSource connection */\n open: () => void;\n}\n\n/**\n * @name useEventSource\n * @description - Hook that provides a reactive wrapper for event source\n * @category Browser\n *\n * @browserapi EventSource https://developer.mozilla.org/en-US/docs/Web/API/EventSource\n *\n * @param {string | URL} url The URL of the EventSource\n * @param {string[]} [events=[]] List of events to listen to\n * @param {UseEventSourceOptions} [options={}] Configuration options\n * @returns {UseEventSourceReturn<Data>} The EventSource state and controls\n *\n * @example\n * const { instance, data, isConnecting, isOpen, isError, close, open } = useEventSource('url', ['message']);\n */\nexport const useEventSource = <QueryData = any, Data = QueryData>(\n url: string | URL,\n events: string[] = [],\n options: UseEventSourceOptions<QueryData, Data> = {}\n): UseEventSourceReturn<Data> => {\n const [isConnecting, setIsConnecting] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const [error, setError] = useState<Event | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const eventSourceRef = useRef<EventSource>(undefined);\n\n const immediately = options.immediately ?? true;\n\n const close = () => {\n if (!eventSourceRef.current) return;\n\n eventSourceRef.current.close();\n eventSourceRef.current = undefined;\n setIsOpen(false);\n setIsConnecting(false);\n setIsError(false);\n };\n\n const open = () => {\n close();\n\n const eventSource = new EventSource(url, { withCredentials: options.withCredentials ?? false });\n eventSourceRef.current = eventSource;\n\n setIsConnecting(true);\n\n eventSource.onopen = () => {\n setIsOpen(true);\n setIsConnecting(false);\n setError(undefined);\n options?.onOpen?.();\n };\n\n eventSource.onerror = (event) => {\n setIsOpen(false);\n setIsConnecting(false);\n setIsError(true);\n setError(event);\n options?.onError?.(event);\n\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, event)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(open, retryDelay);\n return;\n }\n }\n\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n };\n\n eventSource.onmessage = (event) => {\n const data = options?.select ? options?.select(event.data) : event.data;\n setData(data);\n options?.onMessage?.(event);\n };\n\n events.forEach((eventName) => {\n eventSource.addEventListener(eventName, (event: Event & { data?: Data }) => {\n setData(event.data);\n });\n });\n };\n\n useEffect(() => {\n if (!immediately) return;\n\n open();\n return () => {\n close();\n };\n }, [immediately]);\n\n return {\n instance: eventSourceRef.current,\n data,\n error,\n isConnecting,\n isOpen,\n isError,\n close,\n open\n };\n};\n"],"names":["useEventSource","url","events","options","isConnecting","setIsConnecting","useState","isOpen","setIsOpen","isError","setIsError","retryCountRef","useRef","getRetry","error","setError","data","setData","eventSourceRef","immediately","close","open","eventSource","event","retryDelay","eventName","useEffect"],"mappings":";;AA2DO,MAAMA,IAAiB,CAC5BC,GACAC,IAAmB,CAAA,GACnBC,IAAkD,CAAA,MACnB;AAC/B,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChD,CAACC,GAAQC,CAAS,IAAIF,EAAS,EAAK,GACpC,CAACG,GAASC,CAAU,IAAIJ,EAAS,EAAK,GAEtCK,IAAgBC,EAAOT,GAAS,QAAQU,EAASV,EAAQ,KAAK,IAAI,CAAC,GACnE,CAACW,GAAOC,CAAQ,IAAIT,EAA4B,MAAS,GACzD,CAACU,GAAMC,CAAO,IAAIX,EAA2BH,GAAS,eAAe,GAErEe,IAAiBN,EAAoB,MAAS,GAE9CO,IAAchB,EAAQ,eAAe,IAErCiB,IAAQ,MAAM;AAClB,IAAKF,EAAe,YAEpBA,EAAe,QAAQ,MAAA,GACvBA,EAAe,UAAU,QACzBV,EAAU,EAAK,GACfH,EAAgB,EAAK,GACrBK,EAAW,EAAK;AAAA,EAAA,GAGZW,IAAO,MAAM;AACjB,IAAAD,EAAA;AAEA,UAAME,IAAc,IAAI,YAAYrB,GAAK,EAAE,iBAAiBE,EAAQ,mBAAmB,IAAO;AAC9F,IAAAe,EAAe,UAAUI,GAEzBjB,EAAgB,EAAI,GAEpBiB,EAAY,SAAS,MAAM;AACzB,MAAAd,EAAU,EAAI,GACdH,EAAgB,EAAK,GACrBU,EAAS,MAAS,GAClBZ,GAAS,SAAA;AAAA,IAAS,GAGpBmB,EAAY,UAAU,CAACC,MAAU;AAO/B,UANAf,EAAU,EAAK,GACfH,EAAgB,EAAK,GACrBK,EAAW,EAAI,GACfK,EAASQ,CAAK,GACdpB,GAAS,UAAUoB,CAAK,GAEpBZ,EAAc,UAAU,GAAG;AAC7B,QAAAA,EAAc,WAAW;AAEzB,cAAMa,IACJ,OAAOrB,GAAS,cAAe,aAC3BA,GAAS,WAAWQ,EAAc,SAASY,CAAK,IAChDpB,GAAS;AAEf,YAAIqB,GAAY;AACd,qBAAWH,GAAMG,CAAU;AAC3B;AAAA,QAAA;AAAA,MACF;AAGF,MAAAb,EAAc,UAAUR,GAAS,QAAQU,EAASV,EAAQ,KAAK,IAAI;AAAA,IAAA,GAGrEmB,EAAY,YAAY,CAACC,MAAU;AACjC,YAAMP,IAAOb,GAAS,SAASA,GAAS,OAAOoB,EAAM,IAAI,IAAIA,EAAM;AACnE,MAAAN,EAAQD,CAAI,GACZb,GAAS,YAAYoB,CAAK;AAAA,IAAA,GAG5BrB,EAAO,QAAQ,CAACuB,MAAc;AAC5B,MAAAH,EAAY,iBAAiBG,GAAW,CAACF,MAAmC;AAC1E,QAAAN,EAAQM,EAAM,IAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACF;AAAA,EAAA;AAGH,SAAAG,EAAU,MAAM;AACd,QAAKP;AAEL,aAAAE,EAAA,GACO,MAAM;AACX,QAAAD,EAAA;AAAA,MAAM;AAAA,EACR,GACC,CAACD,CAAW,CAAC,GAET;AAAA,IACL,UAAUD,EAAe;AAAA,IACzB,MAAAF;AAAA,IACA,OAAAF;AAAA,IACA,cAAAV;AAAA,IACA,QAAAG;AAAA,IACA,SAAAE;AAAA,IACA,OAAAW;AAAA,IACA,MAAAC;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEyeDropper.mjs","sources":["../../../../src/hooks/useEyeDropper/useEyeDropper.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport interface ColorSelectionOptions {\n signal?: AbortSignal;\n}\n\nexport interface ColorSelectionResult {\n sRGBHex: string;\n}\n\nexport interface EyeDropper {\n open: (options?: ColorSelectionOptions) => Promise<ColorSelectionResult>;\n}\n\nexport interface EyeDropperConstructor {\n new (): EyeDropper;\n}\n\ndeclare global {\n interface Window {\n readonly EyeDropper?: EyeDropperConstructor | undefined;\n }\n}\n\n/** The color selection return type */\nexport interface UseEyeDropperReturn {\n /** The eye dropper supported status */\n supported: boolean;\n /** The eye dropper value */\n value?: string;\n /** The eye dropper open method */\n open: (colorSelectionOptions?: ColorSelectionOptions) => Promise<ColorSelectionResult>;\n}\n\n/**\n * @name useEyeDropper\n * @description - Hook that gives you access to the eye dropper\n * @category Browser\n *\n * @browserapi EyeDropper https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper\n *\n * @param {string} [initialValue=undefined] The initial value for the eye dropper\n * @returns {UseEyeDropperReturn} An object containing the supported status, the value and the open method\n *\n * @example\n * const { supported, value, open } = useEyeDropper();\n */\nexport const useEyeDropper = (\n initialValue: string | undefined = undefined\n): UseEyeDropperReturn => {\n const supported = typeof window !== 'undefined' && 'EyeDropper' in window;\n const [value, setValue] = useState(initialValue);\n\n const open = async (colorSelectionOptions?: ColorSelectionOptions) => {\n if (!window.EyeDropper) throw new Error('EyeDropper is not supported');\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(colorSelectionOptions);\n setValue(result.sRGBHex);\n return result;\n };\n\n return {\n supported,\n value,\n open\n };\n};\n"],"names":["useEyeDropper","initialValue","supported","value","setValue","useState","colorSelectionOptions","result"],"mappings":";AA+Ca,MAAAA,IAAgB,CAC3BC,IAAmC,WACX;AACxB,QAAMC,IAAY,OAAO,SAAW,OAAe,gBAAgB,QAC7D,CAACC,GAAOC,CAAQ,IAAIC,EAASJ,CAAY;AAUxC,SAAA;AAAA,IACL,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAXW,OAAOG,MAAkD;AACpE,UAAI,CAAC,OAAO,WAAkB,OAAA,IAAI,MAAM,6BAA6B;AAErE,YAAMC,IAAS,MADI,IAAI,OAAO,WAAW,EACT,KAAKD,CAAqB;AAC1D,aAAAF,EAASG,EAAO,OAAO,GAChBA;AAAA,IACT;AAAA,EAMA;AACF;"}
1
+ {"version":3,"file":"useEyeDropper.mjs","sources":["../../../../src/hooks/useEyeDropper/useEyeDropper.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport interface ColorSelectionOptions {\n signal?: AbortSignal;\n}\n\nexport interface ColorSelectionResult {\n sRGBHex: string;\n}\n\nexport interface EyeDropper {\n open: (options?: ColorSelectionOptions) => Promise<ColorSelectionResult>;\n}\n\nexport interface EyeDropperConstructor {\n new (): EyeDropper;\n}\n\ndeclare global {\n interface Window {\n readonly EyeDropper?: EyeDropperConstructor | undefined;\n }\n}\n\n/** The color selection return type */\nexport interface UseEyeDropperReturn {\n /** The eye dropper supported status */\n supported: boolean;\n /** The eye dropper value */\n value?: string;\n /** The eye dropper open method */\n open: (colorSelectionOptions?: ColorSelectionOptions) => Promise<ColorSelectionResult>;\n}\n\n/**\n * @name useEyeDropper\n * @description - Hook that gives you access to the eye dropper\n * @category Browser\n *\n * @browserapi EyeDropper https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper\n *\n * @param {string} [initialValue=undefined] The initial value for the eye dropper\n * @returns {UseEyeDropperReturn} An object containing the supported status, the value and the open method\n *\n * @example\n * const { supported, value, open } = useEyeDropper();\n */\nexport const useEyeDropper = (\n initialValue: string | undefined = undefined\n): UseEyeDropperReturn => {\n const supported = typeof window !== 'undefined' && 'EyeDropper' in window;\n const [value, setValue] = useState(initialValue);\n\n const open = async (colorSelectionOptions?: ColorSelectionOptions) => {\n if (!window.EyeDropper) throw new Error('EyeDropper is not supported');\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(colorSelectionOptions);\n setValue(result.sRGBHex);\n return result;\n };\n\n return {\n supported,\n value,\n open\n };\n};\n"],"names":["useEyeDropper","initialValue","supported","value","setValue","useState","colorSelectionOptions","result"],"mappings":";AA+CO,MAAMA,IAAgB,CAC3BC,IAAmC,WACX;AACxB,QAAMC,IAAY,OAAO,SAAW,OAAe,gBAAgB,QAC7D,CAACC,GAAOC,CAAQ,IAAIC,EAASJ,CAAY;AAU/C,SAAO;AAAA,IACL,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAXW,OAAOG,MAAkD;AACpE,UAAI,CAAC,OAAO,WAAY,OAAM,IAAI,MAAM,6BAA6B;AAErE,YAAMC,IAAS,MADI,IAAI,OAAO,WAAA,EACE,KAAKD,CAAqB;AAC1D,aAAAF,EAASG,EAAO,OAAO,GAChBA;AAAA,IAAA;AAAA,EAMP;AAEJ;"}
@@ -1,23 +1,22 @@
1
- import { useState as s } from "react";
2
- import { useDidUpdate as p } from "../useDidUpdate/useDidUpdate.mjs";
3
- import { useMount as d } from "../useMount/useMount.mjs";
4
- const y = (e) => {
5
- var c;
6
- const [u, n] = s(
7
- e ?? ((c = document.querySelector('link[rel*="icon"]')) == null ? void 0 : c.href)
1
+ import { useState as m } from "react";
2
+ import { useDidUpdate as s } from "../useDidUpdate/useDidUpdate.mjs";
3
+ import { useMount as p } from "../useMount/useMount.mjs";
4
+ const k = (e) => {
5
+ const [c, n] = m(
6
+ e ?? document.querySelector('link[rel*="icon"]')?.href
8
7
  ), r = (o) => {
9
8
  const t = document.querySelector('link[rel*="icon"]') || document.createElement("link");
10
9
  t.rel = "icon", t.href = o, t.type = `image/${o.split(".").pop()}`, document.head.append(t);
11
- }, m = (o) => {
10
+ }, u = (o) => {
12
11
  n(o), r(o);
13
12
  };
14
- return d(() => {
13
+ return p(() => {
15
14
  e && r(e);
16
- }), p(() => {
15
+ }), s(() => {
17
16
  e && (n(e), r(e));
18
- }, [e]), { href: u, set: m };
17
+ }, [e]), { href: c, set: u };
19
18
  };
20
19
  export {
21
- y as useFavicon
20
+ k as useFavicon
22
21
  };
23
22
  //# sourceMappingURL=useFavicon.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFavicon.mjs","sources":["../../../../src/hooks/useFavicon/useFavicon.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\n\nimport { useState } from 'react';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/** The use favicon return type */\nexport type UseFaviconReturn = [string, Dispatch<SetStateAction<string>>];\n\n/**\n * @name useFavicon\n * @description - Hook that manages the favicon\n * @category Browser\n *\n * @param {string} [initialFavicon] The initial favicon. If not provided, the current favicon will be used\n * @returns {UseFaviconReturn} An array containing the current favicon and a function to update the favicon\n *\n * @example\n * const { href, set } = useFavicon('https://www.google.com/favicon.ico');\n */\nexport const useFavicon = (initialHref?: string) => {\n const [href, setHref] = useState(\n initialHref ?? document.querySelector<HTMLLinkElement>(`link[rel*=\"icon\"]`)?.href\n );\n\n const injectFavicon = (favicon: string) => {\n const link =\n document.querySelector<HTMLLinkElement>(`link[rel*=\"icon\"]`) ||\n document.createElement('link');\n link.rel = 'icon';\n link.href = favicon;\n link.type = `image/${favicon.split('.').pop()}`;\n document.head.append(link);\n };\n\n const set = (favicon: string) => {\n setHref(favicon);\n injectFavicon(favicon);\n };\n\n useMount(() => {\n if (!initialHref) return;\n injectFavicon(initialHref);\n });\n\n useDidUpdate(() => {\n if (!initialHref) return;\n setHref(initialHref);\n injectFavicon(initialHref);\n }, [initialHref]);\n\n return { href, set } as const;\n};\n"],"names":["useFavicon","initialHref","href","setHref","useState","_a","injectFavicon","favicon","link","set","useMount","useDidUpdate"],"mappings":";;;AAqBa,MAAAA,IAAa,CAACC,MAAyB;;AAC5C,QAAA,CAACC,GAAMC,CAAO,IAAIC;AAAA,IACtBH,OAAeI,IAAA,SAAS,cAA+B,mBAAmB,MAA3D,gBAAAA,EAA8D;AAAA,EAC/E,GAEMC,IAAgB,CAACC,MAAoB;AACzC,UAAMC,IACJ,SAAS,cAA+B,mBAAmB,KAC3D,SAAS,cAAc,MAAM;AAC/B,IAAAA,EAAK,MAAM,QACXA,EAAK,OAAOD,GACZC,EAAK,OAAO,SAASD,EAAQ,MAAM,GAAG,EAAE,KAAK,IACpC,SAAA,KAAK,OAAOC,CAAI;AAAA,EAC3B,GAEMC,IAAM,CAACF,MAAoB;AAC/B,IAAAJ,EAAQI,CAAO,GACfD,EAAcC,CAAO;AAAA,EACvB;AAEA,SAAAG,EAAS,MAAM;AACb,IAAKT,KACLK,EAAcL,CAAW;AAAA,EAAA,CAC1B,GAEDU,EAAa,MAAM;AACjB,IAAKV,MACLE,EAAQF,CAAW,GACnBK,EAAcL,CAAW;AAAA,EAAA,GACxB,CAACA,CAAW,CAAC,GAET,EAAE,MAAAC,GAAM,KAAAO,EAAI;AACrB;"}
1
+ {"version":3,"file":"useFavicon.mjs","sources":["../../../../src/hooks/useFavicon/useFavicon.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\n\nimport { useState } from 'react';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/** The use favicon return type */\nexport type UseFaviconReturn = [string, Dispatch<SetStateAction<string>>];\n\n/**\n * @name useFavicon\n * @description - Hook that manages the favicon\n * @category Browser\n *\n * @param {string} [initialFavicon] The initial favicon. If not provided, the current favicon will be used\n * @returns {UseFaviconReturn} An array containing the current favicon and a function to update the favicon\n *\n * @example\n * const { href, set } = useFavicon('https://www.google.com/favicon.ico');\n */\nexport const useFavicon = (initialHref?: string) => {\n const [href, setHref] = useState(\n initialHref ?? document.querySelector<HTMLLinkElement>(`link[rel*=\"icon\"]`)?.href\n );\n\n const injectFavicon = (favicon: string) => {\n const link =\n document.querySelector<HTMLLinkElement>(`link[rel*=\"icon\"]`) ||\n document.createElement('link');\n link.rel = 'icon';\n link.href = favicon;\n link.type = `image/${favicon.split('.').pop()}`;\n document.head.append(link);\n };\n\n const set = (favicon: string) => {\n setHref(favicon);\n injectFavicon(favicon);\n };\n\n useMount(() => {\n if (!initialHref) return;\n injectFavicon(initialHref);\n });\n\n useDidUpdate(() => {\n if (!initialHref) return;\n setHref(initialHref);\n injectFavicon(initialHref);\n }, [initialHref]);\n\n return { href, set } as const;\n};\n"],"names":["useFavicon","initialHref","href","setHref","useState","injectFavicon","favicon","link","set","useMount","useDidUpdate"],"mappings":";;;AAqBO,MAAMA,IAAa,CAACC,MAAyB;AAClD,QAAM,CAACC,GAAMC,CAAO,IAAIC;AAAA,IACtBH,KAAe,SAAS,cAA+B,mBAAmB,GAAG;AAAA,EAAA,GAGzEI,IAAgB,CAACC,MAAoB;AACzC,UAAMC,IACJ,SAAS,cAA+B,mBAAmB,KAC3D,SAAS,cAAc,MAAM;AAC/B,IAAAA,EAAK,MAAM,QACXA,EAAK,OAAOD,GACZC,EAAK,OAAO,SAASD,EAAQ,MAAM,GAAG,EAAE,KAAK,IAC7C,SAAS,KAAK,OAAOC,CAAI;AAAA,EAAA,GAGrBC,IAAM,CAACF,MAAoB;AAC/B,IAAAH,EAAQG,CAAO,GACfD,EAAcC,CAAO;AAAA,EAAA;AAGvB,SAAAG,EAAS,MAAM;AACb,IAAKR,KACLI,EAAcJ,CAAW;AAAA,EAAA,CAC1B,GAEDS,EAAa,MAAM;AACjB,IAAKT,MACLE,EAAQF,CAAW,GACnBI,EAAcJ,CAAW;AAAA,EAAA,GACxB,CAACA,CAAW,CAAC,GAET,EAAE,MAAAC,GAAM,KAAAM,EAAA;AACjB;"}
@@ -1,71 +1,67 @@
1
- import { useRef as k, useState as v } from "react";
2
- import { useRerender as C } from "../useRerender/useRerender.mjs";
3
- const F = (t) => {
4
- const i = (t == null ? void 0 : t.initialValue) ?? "", n = k(null), l = k(!1), o = C(), [h, f] = v(!1), [V, g] = v((t == null ? void 0 : t.initialTouched) ?? !1), [L, c] = v(void 0), y = () => {
5
- var e, u, r;
6
- return ((e = n.current) == null ? void 0 : e.type) === "radio" || ((u = n.current) == null ? void 0 : u.type) === "checkbox" ? n.current.checked : ((r = n.current) == null ? void 0 : r.value) ?? i;
7
- }, x = (e) => {
8
- var u, r;
9
- if (((u = n.current) == null ? void 0 : u.type) === "radio" || ((r = n.current) == null ? void 0 : r.type) === "checkbox")
10
- return n.current.checked = e, l.current ? o() : void 0;
11
- if (n.current.value = e, l.current) return o();
12
- }, b = () => {
13
- x(i), f(!1), g(!1), c(void 0);
14
- }, w = () => n.current.focus(), d = (e) => {
15
- if (e.required && !n.current.value)
16
- return c(e.required);
17
- if (e.minLength && n.current.value.length < e.minLength.value)
18
- return c(e.minLength.message);
19
- if (e.maxLength && n.current.value.length > e.maxLength.value)
20
- return c(e.maxLength.message);
21
- if (e.min && Number(n.current.value) < e.min.value)
22
- return c(e.min.message);
23
- if (e.max && Number(n.current.value) > e.max.value)
24
- return c(e.max.message);
25
- if (e.pattern && !e.pattern.value.test(n.current.value))
26
- return c(e.pattern.message);
1
+ import { useRef as s, useState as d } from "react";
2
+ import { useRerender as L } from "../useRerender/useRerender.mjs";
3
+ const B = (n) => {
4
+ const c = n?.initialValue ?? "", t = s(null), i = s(!1), l = L(), [v, o] = d(!1), [y, h] = d(n?.initialTouched ?? !1), [x, r] = d(void 0), a = () => t.current?.type === "radio" || t.current?.type === "checkbox" ? t.current.checked : t.current?.value ?? c, g = (e) => {
5
+ if (t.current?.type === "radio" || t.current?.type === "checkbox")
6
+ return t.current.checked = e, i.current ? l() : void 0;
7
+ if (t.current.value = e, i.current) return l();
8
+ }, k = () => {
9
+ g(c), o(!1), h(!1), r(void 0);
10
+ }, V = () => t.current.focus(), f = (e) => {
11
+ if (e.required && !t.current.value)
12
+ return r(e.required);
13
+ if (e.minLength && t.current.value.length < e.minLength.value)
14
+ return r(e.minLength.message);
15
+ if (e.maxLength && t.current.value.length > e.maxLength.value)
16
+ return r(e.maxLength.message);
17
+ if (e.min && Number(t.current.value) < e.min.value)
18
+ return r(e.min.message);
19
+ if (e.max && Number(t.current.value) > e.max.value)
20
+ return r(e.max.message);
21
+ if (e.pattern && !e.pattern.value.test(t.current.value))
22
+ return r(e.pattern.message);
27
23
  if (e.validate) {
28
- const u = e.validate(n.current.value);
29
- if (typeof u == "string") return c(u);
24
+ const u = e.validate(t.current.value);
25
+ if (typeof u == "string") return r(u);
30
26
  }
31
- c(void 0);
27
+ r(void 0);
32
28
  };
33
29
  return {
34
30
  register: (e) => ({
35
31
  ref: (u) => {
36
- if (!n.current && u) {
37
- if (t != null && t.autoFocus && u.focus(), n.current = u, n.current.type === "radio") {
38
- n.current.defaultChecked = (t == null ? void 0 : t.initialValue) === u.value;
32
+ if (!t.current && u) {
33
+ if (n?.autoFocus && u.focus(), t.current = u, t.current.type === "radio") {
34
+ t.current.defaultChecked = n?.initialValue === u.value;
39
35
  return;
40
36
  }
41
- if (n.current.type === "checkbox") {
42
- n.current.defaultChecked = !!(t != null && t.initialValue);
37
+ if (t.current.type === "checkbox") {
38
+ t.current.defaultChecked = !!n?.initialValue;
43
39
  return;
44
40
  }
45
- n.current.defaultValue = String(i), e && (t != null && t.validateOnMount) && d(e);
41
+ t.current.defaultValue = String(c), e && n?.validateOnMount && f(e);
46
42
  }
47
43
  },
48
44
  onChange: async () => {
49
- if (l.current) return o();
50
- n.current.value !== i && f(!0), h && n.current.value === i && f(!1), e && (t != null && t.validateOnChange) && await d(e), e && (t != null && t.validateOnBlur) && c(void 0);
45
+ if (i.current) return l();
46
+ t.current.value !== c && o(!0), v && t.current.value === c && o(!1), e && n?.validateOnChange && await f(e), e && n?.validateOnBlur && r(void 0);
51
47
  },
52
48
  onBlur: async () => {
53
- e && (t != null && t.validateOnBlur) && await d(e), g(!0);
49
+ e && n?.validateOnBlur && await f(e), h(!0);
54
50
  }
55
51
  }),
56
- dirty: h,
57
- touched: V,
58
- error: L,
59
- setError: c,
60
- clearError: () => c(void 0),
61
- getValue: y,
62
- setValue: x,
63
- reset: b,
64
- watch: () => (l.current = !0, y()),
65
- focus: w
52
+ dirty: v,
53
+ touched: y,
54
+ error: x,
55
+ setError: r,
56
+ clearError: () => r(void 0),
57
+ getValue: a,
58
+ setValue: g,
59
+ reset: k,
60
+ watch: () => (i.current = !0, a()),
61
+ focus: V
66
62
  };
67
63
  };
68
64
  export {
69
- F as useField
65
+ B as useField
70
66
  };
71
67
  //# sourceMappingURL=useField.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useField.mjs","sources":["../../../../src/hooks/useField/useField.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useRerender } from '../useRerender/useRerender';\n\n/** The use field params type */\nexport interface UseFieldParams<Value> {\n /** The auto focus */\n autoFocus?: boolean;\n /** The initial touched */\n initialTouched?: boolean;\n /** The initial value */\n initialValue?: Value;\n /** The validate on blur */\n validateOnBlur?: boolean;\n /** The validate on mount */\n validateOnChange?: boolean;\n /** The validate on mount */\n validateOnMount?: boolean;\n}\n\n/** The use field register params type */\nexport interface UseFieldRegisterParams {\n /** The required validation */\n required?: string;\n /** The custom validation */\n validate?: (value: string) => Promise<string | true>;\n /** The min value validation */\n max?: {\n value: number;\n message: string;\n };\n /** The max length validation */\n maxLength?: {\n value: number;\n message: string;\n };\n /** The max value validation */\n min?: {\n value: number;\n message: string;\n };\n /** The min length validation */\n minLength?: {\n value: number;\n message: string;\n };\n /** The pattern validation */\n pattern?: {\n value: RegExp;\n message: string;\n };\n}\n\n/** The use field return type */\nexport interface UseFieldReturn<Value> {\n /** The dirty state */\n dirty: boolean;\n /** The error state */\n error?: string;\n /** The set error function */\n touched: boolean;\n /** The set error function */\n clearError: () => void;\n /** The focus function */\n focus: () => void;\n /** The get value function */\n getValue: () => Value;\n /** The register function */\n register: (params?: UseFieldRegisterParams) => {\n onBlur: () => void;\n onChange: () => void;\n ref: (\n node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined\n ) => void;\n };\n /** The reset function */\n reset: () => void;\n /** The set error function */\n setError: (error: string) => void;\n /** The set value function */\n setValue: (value: Value) => void;\n /** The watch function */\n watch: () => Value;\n}\n\n/**\n * @name useField\n * @description - Hook to manage a form field\n * @category Utilities\n *\n * @template Value The input value\n * @template Type The input value type\n * @param {Value} [params.initialValue] Initial value\n * @param {boolean} [params.initialTouched=false] Initial touched state\n * @param {boolean} [params.autoFocus=false] Auto focus\n * @param {boolean} [params.validateOnChange=false] Validate on change\n * @param {boolean} [params.validateOnBlur=false] Validate on blur\n * @param {boolean} [params.validateOnMount=false] Validate on mount\n * @returns {UseFieldReturn<Value>} An object containing input information\n *\n * @example\n * const { register, getValue, setValue, reset, dirty, error, setError, clearError, touched, focus, watch } = useField();\n */\nexport const useField = <\n Value extends boolean | number | string = string,\n Type = Value extends string ? string : Value extends boolean ? boolean : number\n>(\n params?: UseFieldParams<Value>\n): UseFieldReturn<Type> => {\n const initialValue = (params?.initialValue ?? '') as Value;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const watchingRef = useRef(false);\n const rerender = useRerender();\n\n const [dirty, setDirty] = useState(false);\n const [touched, setTouched] = useState(params?.initialTouched ?? false);\n const [error, setError] = useState<string | undefined>(undefined);\n\n const getValue = () => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox')\n return inputRef.current.checked as Type;\n return (inputRef.current?.value ?? initialValue) as Type;\n };\n\n const setValue = (value: Type) => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox') {\n inputRef.current.checked = value as boolean;\n if (watchingRef.current) return rerender();\n return;\n }\n\n inputRef.current!.value = value as string;\n if (watchingRef.current) return rerender();\n };\n\n const reset = () => {\n setValue(initialValue as unknown as Type);\n setDirty(false);\n setTouched(false);\n setError(undefined);\n };\n\n const focus = () => inputRef.current!.focus();\n\n const validate = (params: UseFieldRegisterParams) => {\n if (params.required && !inputRef.current!.value) {\n return setError(params.required);\n }\n\n if (params.minLength && inputRef.current!.value.length < params.minLength.value) {\n return setError(params.minLength.message);\n }\n\n if (params.maxLength && inputRef.current!.value.length > params.maxLength.value) {\n return setError(params.maxLength.message);\n }\n\n if (params.min && Number(inputRef.current!.value) < params.min.value) {\n return setError(params.min.message);\n }\n\n if (params.max && Number(inputRef.current!.value) > params.max.value) {\n return setError(params.max.message);\n }\n\n if (params.pattern && !params.pattern.value.test(inputRef.current!.value)) {\n return setError(params.pattern.message);\n }\n\n if (params.validate) {\n const error = params.validate(inputRef.current!.value);\n if (typeof error === 'string') return setError(error);\n }\n\n setError(undefined);\n };\n\n const register = (registerParams?: UseFieldRegisterParams) => ({\n ref: (node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined) => {\n if (!inputRef.current && node) {\n if (params?.autoFocus) node.focus();\n inputRef.current = node as HTMLInputElement;\n if (inputRef.current.type === 'radio') {\n inputRef.current.defaultChecked = params?.initialValue === node.value;\n return;\n }\n if (inputRef.current.type === 'checkbox') {\n inputRef.current.defaultChecked = !!params?.initialValue;\n return;\n }\n inputRef.current.defaultValue = String(initialValue);\n\n if (registerParams && params?.validateOnMount) validate(registerParams);\n }\n },\n onChange: async () => {\n if (watchingRef.current) return rerender();\n if (inputRef.current!.value !== initialValue) setDirty(true);\n if (dirty && inputRef.current!.value === initialValue) setDirty(false);\n if (registerParams && params?.validateOnChange) await validate(registerParams);\n if (registerParams && params?.validateOnBlur) setError(undefined);\n },\n onBlur: async () => {\n if (registerParams && params?.validateOnBlur) await validate(registerParams);\n setTouched(true);\n }\n });\n\n const watch = () => {\n watchingRef.current = true;\n return getValue();\n };\n\n const clearError = () => setError(undefined);\n\n return {\n register,\n dirty,\n touched,\n error,\n setError,\n clearError,\n getValue,\n setValue,\n reset,\n watch,\n focus\n };\n};\n"],"names":["useField","params","initialValue","inputRef","useRef","watchingRef","rerender","useRerender","dirty","setDirty","useState","touched","setTouched","error","setError","getValue","_a","_b","_c","setValue","value","reset","focus","validate","registerParams","node"],"mappings":"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"}
1
+ {"version":3,"file":"useField.mjs","sources":["../../../../src/hooks/useField/useField.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useRerender } from '../useRerender/useRerender';\n\n/** The use field params type */\nexport interface UseFieldParams<Value> {\n /** The auto focus */\n autoFocus?: boolean;\n /** The initial touched */\n initialTouched?: boolean;\n /** The initial value */\n initialValue?: Value;\n /** The validate on blur */\n validateOnBlur?: boolean;\n /** The validate on mount */\n validateOnChange?: boolean;\n /** The validate on mount */\n validateOnMount?: boolean;\n}\n\n/** The use field register params type */\nexport interface UseFieldRegisterParams {\n /** The required validation */\n required?: string;\n /** The custom validation */\n validate?: (value: string) => Promise<string | true>;\n /** The min value validation */\n max?: {\n value: number;\n message: string;\n };\n /** The max length validation */\n maxLength?: {\n value: number;\n message: string;\n };\n /** The max value validation */\n min?: {\n value: number;\n message: string;\n };\n /** The min length validation */\n minLength?: {\n value: number;\n message: string;\n };\n /** The pattern validation */\n pattern?: {\n value: RegExp;\n message: string;\n };\n}\n\n/** The use field return type */\nexport interface UseFieldReturn<Value> {\n /** The dirty state */\n dirty: boolean;\n /** The error state */\n error?: string;\n /** The set error function */\n touched: boolean;\n /** The set error function */\n clearError: () => void;\n /** The focus function */\n focus: () => void;\n /** The get value function */\n getValue: () => Value;\n /** The register function */\n register: (params?: UseFieldRegisterParams) => {\n onBlur: () => void;\n onChange: () => void;\n ref: (\n node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined\n ) => void;\n };\n /** The reset function */\n reset: () => void;\n /** The set error function */\n setError: (error: string) => void;\n /** The set value function */\n setValue: (value: Value) => void;\n /** The watch function */\n watch: () => Value;\n}\n\n/**\n * @name useField\n * @description - Hook to manage a form field\n * @category Utilities\n *\n * @template Value The input value\n * @template Type The input value type\n * @param {Value} [params.initialValue] Initial value\n * @param {boolean} [params.initialTouched=false] Initial touched state\n * @param {boolean} [params.autoFocus=false] Auto focus\n * @param {boolean} [params.validateOnChange=false] Validate on change\n * @param {boolean} [params.validateOnBlur=false] Validate on blur\n * @param {boolean} [params.validateOnMount=false] Validate on mount\n * @returns {UseFieldReturn<Value>} An object containing input information\n *\n * @example\n * const { register, getValue, setValue, reset, dirty, error, setError, clearError, touched, focus, watch } = useField();\n */\nexport const useField = <\n Value extends boolean | number | string = string,\n Type = Value extends string ? string : Value extends boolean ? boolean : number\n>(\n params?: UseFieldParams<Value>\n): UseFieldReturn<Type> => {\n const initialValue = (params?.initialValue ?? '') as Value;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const watchingRef = useRef(false);\n const rerender = useRerender();\n\n const [dirty, setDirty] = useState(false);\n const [touched, setTouched] = useState(params?.initialTouched ?? false);\n const [error, setError] = useState<string | undefined>(undefined);\n\n const getValue = () => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox')\n return inputRef.current.checked as Type;\n return (inputRef.current?.value ?? initialValue) as Type;\n };\n\n const setValue = (value: Type) => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox') {\n inputRef.current.checked = value as boolean;\n if (watchingRef.current) return rerender();\n return;\n }\n\n inputRef.current!.value = value as string;\n if (watchingRef.current) return rerender();\n };\n\n const reset = () => {\n setValue(initialValue as unknown as Type);\n setDirty(false);\n setTouched(false);\n setError(undefined);\n };\n\n const focus = () => inputRef.current!.focus();\n\n const validate = (params: UseFieldRegisterParams) => {\n if (params.required && !inputRef.current!.value) {\n return setError(params.required);\n }\n\n if (params.minLength && inputRef.current!.value.length < params.minLength.value) {\n return setError(params.minLength.message);\n }\n\n if (params.maxLength && inputRef.current!.value.length > params.maxLength.value) {\n return setError(params.maxLength.message);\n }\n\n if (params.min && Number(inputRef.current!.value) < params.min.value) {\n return setError(params.min.message);\n }\n\n if (params.max && Number(inputRef.current!.value) > params.max.value) {\n return setError(params.max.message);\n }\n\n if (params.pattern && !params.pattern.value.test(inputRef.current!.value)) {\n return setError(params.pattern.message);\n }\n\n if (params.validate) {\n const error = params.validate(inputRef.current!.value);\n if (typeof error === 'string') return setError(error);\n }\n\n setError(undefined);\n };\n\n const register = (registerParams?: UseFieldRegisterParams) => ({\n ref: (node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined) => {\n if (!inputRef.current && node) {\n if (params?.autoFocus) node.focus();\n inputRef.current = node as HTMLInputElement;\n if (inputRef.current.type === 'radio') {\n inputRef.current.defaultChecked = params?.initialValue === node.value;\n return;\n }\n if (inputRef.current.type === 'checkbox') {\n inputRef.current.defaultChecked = !!params?.initialValue;\n return;\n }\n inputRef.current.defaultValue = String(initialValue);\n\n if (registerParams && params?.validateOnMount) validate(registerParams);\n }\n },\n onChange: async () => {\n if (watchingRef.current) return rerender();\n if (inputRef.current!.value !== initialValue) setDirty(true);\n if (dirty && inputRef.current!.value === initialValue) setDirty(false);\n if (registerParams && params?.validateOnChange) await validate(registerParams);\n if (registerParams && params?.validateOnBlur) setError(undefined);\n },\n onBlur: async () => {\n if (registerParams && params?.validateOnBlur) await validate(registerParams);\n setTouched(true);\n }\n });\n\n const watch = () => {\n watchingRef.current = true;\n return getValue();\n };\n\n const clearError = () => setError(undefined);\n\n return {\n register,\n dirty,\n touched,\n error,\n setError,\n clearError,\n getValue,\n setValue,\n reset,\n watch,\n focus\n };\n};\n"],"names":["useField","params","initialValue","inputRef","useRef","watchingRef","rerender","useRerender","dirty","setDirty","useState","touched","setTouched","error","setError","getValue","setValue","value","reset","focus","validate","registerParams","node"],"mappings":"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"}
@@ -1,36 +1,33 @@
1
- import { useState as O, useRef as d, useEffect as S } from "react";
1
+ import { useState as g, useRef as f, useEffect as k } from "react";
2
2
  const i = {
3
3
  multiple: !0,
4
4
  accept: "*",
5
5
  reset: !1
6
- }, h = (...l) => {
7
- const f = typeof l[0] == "function" ? l[0] : void 0, t = f ? l[0] : l[1], [y, n] = O(null), c = d(null), r = d(f);
8
- r.current = f;
9
- const v = () => {
10
- var e;
11
- n(null), (e = r.current) == null || e.call(r, null), c.current && (c.current.value = "");
12
- }, D = (e) => {
13
- if (!c.current) return;
14
- c.current.multiple = (e == null ? void 0 : e.multiple) ?? (t == null ? void 0 : t.multiple) ?? i.multiple, c.current.accept = (e == null ? void 0 : e.accept) ?? (t == null ? void 0 : t.accept) ?? i.accept;
15
- const u = (e == null ? void 0 : e.capture) ?? (t == null ? void 0 : t.capture);
16
- u && (c.current.capture = u), ((e == null ? void 0 : e.reset) ?? (t == null ? void 0 : t.reset) ?? i.reset) && v(), c.current.click();
6
+ }, R = (...n) => {
7
+ const u = typeof n[0] == "function" ? n[0] : void 0, t = u ? n[0] : n[1], [a, o] = g(null), e = f(null), l = f(u);
8
+ l.current = u;
9
+ const s = () => {
10
+ o(null), l.current?.(null), e.current && (e.current.value = "");
11
+ }, m = (c) => {
12
+ if (!e.current) return;
13
+ e.current.multiple = c?.multiple ?? t?.multiple ?? i.multiple, e.current.accept = c?.accept ?? t?.accept ?? i.accept;
14
+ const r = c?.capture ?? t?.capture;
15
+ r && (e.current.capture = r), (c?.reset ?? t?.reset ?? i.reset) && s(), e.current.click();
17
16
  };
18
- return S(() => {
19
- const e = () => {
20
- const u = document.createElement("input");
21
- return u.type = "file", u.onchange = (F) => {
22
- var E;
23
- const { files: g } = F.target;
24
- n(g), (E = r.current) == null || E.call(r, g);
25
- }, u;
17
+ return k(() => {
18
+ const c = () => {
19
+ const r = document.createElement("input");
20
+ return r.type = "file", r.onchange = (v) => {
21
+ const { files: p } = v.target;
22
+ o(p), l.current?.(p);
23
+ }, r;
26
24
  };
27
- return c.current = e(), () => {
28
- var u;
29
- (u = c.current) == null || u.remove();
25
+ return e.current = c(), () => {
26
+ e.current?.remove();
30
27
  };
31
- }, [t == null ? void 0 : t.multiple, t == null ? void 0 : t.accept, t == null ? void 0 : t.capture, t == null ? void 0 : t.reset]), { value: y, open: D, reset: v };
28
+ }, [t?.multiple, t?.accept, t?.capture, t?.reset]), { value: a, open: m, reset: s };
32
29
  };
33
30
  export {
34
- h as useFileDialog
31
+ R as useFileDialog
35
32
  };
36
33
  //# sourceMappingURL=useFileDialog.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFileDialog.mjs","sources":["../../../../src/hooks/useFileDialog/useFileDialog.ts"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\n/* The use file dialog options */\nexport interface UseFileDialogOptions extends Pick<ComponentProps<'input'>, 'accept' | 'multiple'> {\n /** The capture value */\n capture?: string;\n /** The reset value */\n reset?: boolean;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: '*',\n reset: false\n} satisfies UseFileDialogOptions;\n\n/* The use file dialog return type */\nexport interface UseFileDialogReturn {\n /** The selected files */\n value: FileList | null;\n /** The open function */\n open: (openParams?: UseFileDialogOptions) => void;\n /** The reset function */\n reset: () => void;\n}\n\nexport interface UseFileDialog {\n (\n callback?: (value: FileList | null) => void,\n options?: UseFileDialogOptions\n ): UseFileDialogReturn;\n\n (options?: UseFileDialogOptions, callback?: never): UseFileDialogReturn;\n}\n\n/**\n * @name useFileDialog\n * @description - Hook to handle file input\n * @category Browser\n *\n * @overload\n * @param {(value: FileList | null) => void} callback The callback to execute when a file is selected\n * @param {boolean} [options.multiple=true] Whether multiple files can be selected\n * @param {string} [options.accept='*'] The accepted file types\n * @param {boolean} [options.reset=false] Whether the input should be reset when the callback is called\n * @param {string} [options.capture] The capture value\n * @returns {UseFileDialogReturn} An object containing the selected files\n *\n * @example\n * const { values, open, reset } = useFileDialog((value) => console.log(value));\n *\n * @overload\n * @param {boolean} [options.multiple=true] Whether multiple files can be selected\n * @param {string} [options.accept='*'] The accepted file types\n * @param {boolean} [options.reset=false] Whether the input should be reset when the callback is called\n * @param {string} [options.capture] The capture value\n * @returns {UseFileDialogReturn} An object containing the selected files\n *\n * @example\n * const { values, open, reset } = useFileDialog({ accept: 'image/*' });\n */\nexport const useFileDialog = ((...params: any[]) => {\n const callback = (typeof params[0] === 'function' ? params[0] : undefined) as\n | ((value: FileList | null) => void)\n | undefined;\n const options = (callback ? params[0] : params[1]) as UseFileDialogOptions | undefined;\n\n const [value, setValue] = useState<FileList | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n const reset = () => {\n setValue(null);\n internalCallbackRef.current?.(null);\n if (inputRef.current) inputRef.current.value = '';\n };\n\n const open = (openParams?: UseFileDialogOptions) => {\n if (!inputRef.current) return;\n\n inputRef.current.multiple =\n openParams?.multiple ?? options?.multiple ?? DEFAULT_OPTIONS.multiple;\n inputRef.current.accept = openParams?.accept ?? options?.accept ?? DEFAULT_OPTIONS.accept;\n\n const capture = openParams?.capture ?? options?.capture;\n if (capture) inputRef.current.capture = capture;\n\n if (openParams?.reset ?? options?.reset ?? DEFAULT_OPTIONS.reset) reset();\n\n inputRef.current.click();\n };\n\n useEffect(() => {\n const init = () => {\n const input = document.createElement('input');\n input.type = 'file';\n\n input.onchange = (event: Event) => {\n const { files } = event.target as HTMLInputElement;\n setValue(files);\n internalCallbackRef.current?.(files);\n };\n return input;\n };\n\n inputRef.current = init();\n return () => {\n inputRef.current?.remove();\n };\n }, [options?.multiple, options?.accept, options?.capture, options?.reset]);\n\n return { value, open, reset };\n}) as UseFileDialog;\n"],"names":["DEFAULT_OPTIONS","useFileDialog","params","callback","options","value","setValue","useState","inputRef","useRef","internalCallbackRef","reset","_a","open","openParams","capture","useEffect","init","input","event","files"],"mappings":";AAYA,MAAMA,IAAkB;AAAA,EACtB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AACT,GA+CaC,IAAiB,IAAIC,MAAkB;AAC5C,QAAAC,IAAY,OAAOD,EAAO,CAAC,KAAM,aAAaA,EAAO,CAAC,IAAI,QAG1DE,IAAWD,IAAWD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE1C,CAACG,GAAOC,CAAQ,IAAIC,EAA0B,IAAI,GAClDC,IAAWC,EAAgC,IAAI,GAC/CC,IAAsBD,EAAON,CAAQ;AAC3C,EAAAO,EAAoB,UAAUP;AAE9B,QAAMQ,IAAQ,MAAM;;AAClB,IAAAL,EAAS,IAAI,IACbM,IAAAF,EAAoB,YAApB,QAAAE,EAAA,KAAAF,GAA8B,OAC1BF,EAAS,YAAkBA,EAAA,QAAQ,QAAQ;AAAA,EACjD,GAEMK,IAAO,CAACC,MAAsC;AAC9C,QAAA,CAACN,EAAS,QAAS;AAEvB,IAAAA,EAAS,QAAQ,YACfM,KAAA,gBAAAA,EAAY,cAAYV,KAAA,gBAAAA,EAAS,aAAYJ,EAAgB,UAC/DQ,EAAS,QAAQ,UAASM,KAAA,gBAAAA,EAAY,YAAUV,KAAA,gBAAAA,EAAS,WAAUJ,EAAgB;AAE7E,UAAAe,KAAUD,KAAA,gBAAAA,EAAY,aAAWV,KAAA,gBAAAA,EAAS;AAC5C,IAAAW,MAAkBP,EAAA,QAAQ,UAAUO,MAEpCD,KAAA,gBAAAA,EAAY,WAASV,KAAA,gBAAAA,EAAS,UAASJ,EAAgB,UAAaW,EAAA,GAExEH,EAAS,QAAQ,MAAM;AAAA,EACzB;AAEA,SAAAQ,EAAU,MAAM;AACd,UAAMC,IAAO,MAAM;AACX,YAAAC,IAAQ,SAAS,cAAc,OAAO;AAC5C,aAAAA,EAAM,OAAO,QAEPA,EAAA,WAAW,CAACC,MAAiB;;AAC3B,cAAA,EAAE,OAAAC,MAAUD,EAAM;AACxB,QAAAb,EAASc,CAAK,IACdR,IAAAF,EAAoB,YAApB,QAAAE,EAAA,KAAAF,GAA8BU;AAAA,MAChC,GACOF;AAAA,IACT;AAEA,WAAAV,EAAS,UAAUS,EAAK,GACjB,MAAM;;AACX,OAAAL,IAAAJ,EAAS,YAAT,QAAAI,EAAkB;AAAA,IACpB;AAAA,EAAA,GACC,CAACR,KAAA,gBAAAA,EAAS,UAAUA,KAAA,gBAAAA,EAAS,QAAQA,KAAA,gBAAAA,EAAS,SAASA,KAAA,gBAAAA,EAAS,KAAK,CAAC,GAElE,EAAE,OAAAC,GAAO,MAAAQ,GAAM,OAAAF,EAAM;AAC9B;"}
1
+ {"version":3,"file":"useFileDialog.mjs","sources":["../../../../src/hooks/useFileDialog/useFileDialog.ts"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\n/* The use file dialog options */\nexport interface UseFileDialogOptions extends Pick<ComponentProps<'input'>, 'accept' | 'multiple'> {\n /** The capture value */\n capture?: string;\n /** The reset value */\n reset?: boolean;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: '*',\n reset: false\n} satisfies UseFileDialogOptions;\n\n/* The use file dialog return type */\nexport interface UseFileDialogReturn {\n /** The selected files */\n value: FileList | null;\n /** The open function */\n open: (openParams?: UseFileDialogOptions) => void;\n /** The reset function */\n reset: () => void;\n}\n\nexport interface UseFileDialog {\n (\n callback?: (value: FileList | null) => void,\n options?: UseFileDialogOptions\n ): UseFileDialogReturn;\n\n (options?: UseFileDialogOptions, callback?: never): UseFileDialogReturn;\n}\n\n/**\n * @name useFileDialog\n * @description - Hook to handle file input\n * @category Browser\n *\n * @overload\n * @param {(value: FileList | null) => void} callback The callback to execute when a file is selected\n * @param {boolean} [options.multiple=true] Whether multiple files can be selected\n * @param {string} [options.accept='*'] The accepted file types\n * @param {boolean} [options.reset=false] Whether the input should be reset when the callback is called\n * @param {string} [options.capture] The capture value\n * @returns {UseFileDialogReturn} An object containing the selected files\n *\n * @example\n * const { values, open, reset } = useFileDialog((value) => console.log(value));\n *\n * @overload\n * @param {boolean} [options.multiple=true] Whether multiple files can be selected\n * @param {string} [options.accept='*'] The accepted file types\n * @param {boolean} [options.reset=false] Whether the input should be reset when the callback is called\n * @param {string} [options.capture] The capture value\n * @returns {UseFileDialogReturn} An object containing the selected files\n *\n * @example\n * const { values, open, reset } = useFileDialog({ accept: 'image/*' });\n */\nexport const useFileDialog = ((...params: any[]) => {\n const callback = (typeof params[0] === 'function' ? params[0] : undefined) as\n | ((value: FileList | null) => void)\n | undefined;\n const options = (callback ? params[0] : params[1]) as UseFileDialogOptions | undefined;\n\n const [value, setValue] = useState<FileList | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n const reset = () => {\n setValue(null);\n internalCallbackRef.current?.(null);\n if (inputRef.current) inputRef.current.value = '';\n };\n\n const open = (openParams?: UseFileDialogOptions) => {\n if (!inputRef.current) return;\n\n inputRef.current.multiple =\n openParams?.multiple ?? options?.multiple ?? DEFAULT_OPTIONS.multiple;\n inputRef.current.accept = openParams?.accept ?? options?.accept ?? DEFAULT_OPTIONS.accept;\n\n const capture = openParams?.capture ?? options?.capture;\n if (capture) inputRef.current.capture = capture;\n\n if (openParams?.reset ?? options?.reset ?? DEFAULT_OPTIONS.reset) reset();\n\n inputRef.current.click();\n };\n\n useEffect(() => {\n const init = () => {\n const input = document.createElement('input');\n input.type = 'file';\n\n input.onchange = (event: Event) => {\n const { files } = event.target as HTMLInputElement;\n setValue(files);\n internalCallbackRef.current?.(files);\n };\n return input;\n };\n\n inputRef.current = init();\n return () => {\n inputRef.current?.remove();\n };\n }, [options?.multiple, options?.accept, options?.capture, options?.reset]);\n\n return { value, open, reset };\n}) as UseFileDialog;\n"],"names":["DEFAULT_OPTIONS","useFileDialog","params","callback","options","value","setValue","useState","inputRef","useRef","internalCallbackRef","reset","open","openParams","capture","useEffect","init","input","event","files"],"mappings":";AAYA,MAAMA,IAAkB;AAAA,EACtB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AACT,GA+CaC,IAAiB,IAAIC,MAAkB;AAClD,QAAMC,IAAY,OAAOD,EAAO,CAAC,KAAM,aAAaA,EAAO,CAAC,IAAI,QAG1DE,IAAWD,IAAWD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE1C,CAACG,GAAOC,CAAQ,IAAIC,EAA0B,IAAI,GAClDC,IAAWC,EAAgC,IAAI,GAC/CC,IAAsBD,EAAON,CAAQ;AAC3C,EAAAO,EAAoB,UAAUP;AAE9B,QAAMQ,IAAQ,MAAM;AAClB,IAAAL,EAAS,IAAI,GACbI,EAAoB,UAAU,IAAI,GAC9BF,EAAS,YAASA,EAAS,QAAQ,QAAQ;AAAA,EAAA,GAG3CI,IAAO,CAACC,MAAsC;AAClD,QAAI,CAACL,EAAS,QAAS;AAEvB,IAAAA,EAAS,QAAQ,WACfK,GAAY,YAAYT,GAAS,YAAYJ,EAAgB,UAC/DQ,EAAS,QAAQ,SAASK,GAAY,UAAUT,GAAS,UAAUJ,EAAgB;AAEnF,UAAMc,IAAUD,GAAY,WAAWT,GAAS;AAChD,IAAIU,MAASN,EAAS,QAAQ,UAAUM,KAEpCD,GAAY,SAAST,GAAS,SAASJ,EAAgB,UAAOW,EAAA,GAElEH,EAAS,QAAQ,MAAA;AAAA,EAAM;AAGzB,SAAAO,EAAU,MAAM;AACd,UAAMC,IAAO,MAAM;AACjB,YAAMC,IAAQ,SAAS,cAAc,OAAO;AAC5C,aAAAA,EAAM,OAAO,QAEbA,EAAM,WAAW,CAACC,MAAiB;AACjC,cAAM,EAAE,OAAAC,MAAUD,EAAM;AACxB,QAAAZ,EAASa,CAAK,GACdT,EAAoB,UAAUS,CAAK;AAAA,MAAA,GAE9BF;AAAA,IAAA;AAGT,WAAAT,EAAS,UAAUQ,EAAA,GACZ,MAAM;AACX,MAAAR,EAAS,SAAS,OAAA;AAAA,IAAO;AAAA,EAC3B,GACC,CAACJ,GAAS,UAAUA,GAAS,QAAQA,GAAS,SAASA,GAAS,KAAK,CAAC,GAElE,EAAE,OAAAC,GAAO,MAAAO,GAAM,OAAAD,EAAA;AACxB;"}