@siberiacancode/reactuse 0.2.25 → 0.2.27

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 (280) hide show
  1. package/dist/cjs/helpers/createStore/createStore.cjs +1 -1
  2. package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
  3. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs +1 -1
  4. package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
  5. package/dist/cjs/hooks/useAsync/useAsync.cjs.map +1 -1
  6. package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs.map +1 -1
  7. package/dist/cjs/hooks/useBoolean/useBoolean.cjs.map +1 -1
  8. package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.cjs.map +1 -1
  9. package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  10. package/dist/cjs/hooks/useCookie/useCookie.cjs.map +1 -1
  11. package/dist/cjs/hooks/useCookies/useCookies.cjs.map +1 -1
  12. package/dist/cjs/hooks/useCounter/useCounter.cjs.map +1 -1
  13. package/dist/cjs/hooks/useCssVar/useCssVar.cjs +1 -1
  14. package/dist/cjs/hooks/useCssVar/useCssVar.cjs.map +1 -1
  15. package/dist/cjs/hooks/useDefault/useDefault.cjs.map +1 -1
  16. package/dist/cjs/hooks/useDisclosure/useDisclosure.cjs.map +1 -1
  17. package/dist/cjs/hooks/useDisplayMedia/useDisplayMedia.cjs.map +1 -1
  18. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.cjs.map +1 -1
  19. package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
  20. package/dist/cjs/hooks/useElementSize/useElementSize.cjs.map +1 -1
  21. package/dist/cjs/hooks/useEvent/useEvent.cjs.map +1 -1
  22. package/dist/cjs/hooks/useEventSource/useEventSource.cjs.map +1 -1
  23. package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
  24. package/dist/cjs/hooks/useFileDialog/useFileDialog.cjs.map +1 -1
  25. package/dist/cjs/hooks/useFocus/useFocus.cjs.map +1 -1
  26. package/dist/cjs/hooks/useFps/useFps.cjs.map +1 -1
  27. package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
  28. package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
  29. package/dist/cjs/hooks/useImage/useImage.cjs.map +1 -1
  30. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +1 -1
  31. package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
  32. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
  33. package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  34. package/dist/cjs/hooks/useLastChanged/useLastChanged.cjs.map +1 -1
  35. package/dist/cjs/hooks/useList/useList.cjs.map +1 -1
  36. package/dist/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
  37. package/dist/cjs/hooks/useLockCallback/useLockCallback.cjs.map +1 -1
  38. package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs +2 -0
  39. package/dist/cjs/hooks/useLockScroll/useLockScroll.cjs.map +1 -0
  40. package/dist/cjs/hooks/useLogger/useLogger.cjs.map +1 -1
  41. package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
  42. package/dist/cjs/hooks/useMap/useMap.cjs.map +1 -1
  43. package/dist/cjs/hooks/useMutation/useMutation.cjs.map +1 -1
  44. package/dist/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  45. package/dist/cjs/hooks/useNetwork/useNetwork.cjs.map +1 -1
  46. package/dist/cjs/hooks/useOffsetPagination/useOffsetPagination.cjs.map +1 -1
  47. package/dist/cjs/hooks/useOnline/useOnline.cjs.map +1 -1
  48. package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.cjs.map +1 -1
  49. package/dist/cjs/hooks/useOptimistic/useOptimistic.cjs.map +1 -1
  50. package/dist/cjs/hooks/useOrientation/useOrientation.cjs +1 -1
  51. package/dist/cjs/hooks/useOrientation/useOrientation.cjs.map +1 -1
  52. package/dist/cjs/hooks/usePaint/usePaint.cjs.map +1 -1
  53. package/dist/cjs/hooks/useParallax/useParallax.cjs +1 -1
  54. package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
  55. package/dist/cjs/hooks/usePointerLock/usePointerLock.cjs.map +1 -1
  56. package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.cjs.map +1 -1
  57. package/dist/cjs/hooks/usePreferredContrast/usePreferredContrast.cjs.map +1 -1
  58. package/dist/cjs/hooks/usePreferredDark/usePreferredDark.cjs.map +1 -1
  59. package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.cjs.map +1 -1
  60. package/dist/cjs/hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs.map +1 -1
  61. package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
  62. package/dist/cjs/hooks/useQueue/useQueue.cjs.map +1 -1
  63. package/dist/cjs/hooks/useRaf/useRaf.cjs.map +1 -1
  64. package/dist/cjs/hooks/{useRafValue/useRafValue.cjs → useRafState/useRafState.cjs} +2 -2
  65. package/dist/cjs/hooks/useRafState/useRafState.cjs.map +1 -0
  66. package/dist/cjs/hooks/useRefState/useRefState.cjs.map +1 -1
  67. package/dist/cjs/hooks/useRenderCount/useRenderCount.cjs.map +1 -1
  68. package/dist/cjs/hooks/useRenderInfo/useRenderInfo.cjs.map +1 -1
  69. package/dist/cjs/hooks/useRerender/useRerender.cjs.map +1 -1
  70. package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
  71. package/dist/cjs/hooks/useRightClick/useRightClick.cjs +2 -0
  72. package/dist/cjs/hooks/useRightClick/useRightClick.cjs.map +1 -0
  73. package/dist/cjs/hooks/useScript/useScript.cjs.map +1 -1
  74. package/dist/cjs/hooks/useScroll/useScroll.cjs.map +1 -1
  75. package/dist/cjs/hooks/useSessionStorage/useSessionStorage.cjs.map +1 -1
  76. package/dist/cjs/hooks/useSet/useSet.cjs.map +1 -1
  77. package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -1
  78. package/dist/cjs/hooks/useSpeechSynthesis/useSpeechSynthesis.cjs.map +1 -1
  79. package/dist/cjs/hooks/useStateHistory/useStateHistory.cjs.map +1 -1
  80. package/dist/cjs/hooks/useStep/useStep.cjs.map +1 -1
  81. package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
  82. package/dist/cjs/hooks/useStorage/useStorage.cjs.map +1 -1
  83. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs +1 -1
  84. package/dist/cjs/hooks/useTextDirection/useTextDirection.cjs.map +1 -1
  85. package/dist/cjs/hooks/useToggle/useToggle.cjs.map +1 -1
  86. package/dist/cjs/hooks/useUrlSearchParam/useUrlSearchParam.cjs.map +1 -1
  87. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -1
  88. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs +2 -0
  89. package/dist/cjs/hooks/useVirtualKeyboard/useVirtualKeyboard.cjs.map +1 -0
  90. package/dist/cjs/hooks/useWizard/useWizard.cjs.map +1 -1
  91. package/dist/cjs/index.cjs +1 -1
  92. package/dist/esm/helpers/createStore/createStore.mjs +16 -16
  93. package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
  94. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +9 -10
  95. package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
  96. package/dist/esm/hooks/useAsync/useAsync.mjs.map +1 -1
  97. package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
  98. package/dist/esm/hooks/useBoolean/useBoolean.mjs.map +1 -1
  99. package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.mjs.map +1 -1
  100. package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
  101. package/dist/esm/hooks/useCookie/useCookie.mjs.map +1 -1
  102. package/dist/esm/hooks/useCookies/useCookies.mjs.map +1 -1
  103. package/dist/esm/hooks/useCounter/useCounter.mjs.map +1 -1
  104. package/dist/esm/hooks/useCssVar/useCssVar.mjs +27 -24
  105. package/dist/esm/hooks/useCssVar/useCssVar.mjs.map +1 -1
  106. package/dist/esm/hooks/useDefault/useDefault.mjs.map +1 -1
  107. package/dist/esm/hooks/useDisclosure/useDisclosure.mjs.map +1 -1
  108. package/dist/esm/hooks/useDisplayMedia/useDisplayMedia.mjs.map +1 -1
  109. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs +3 -1
  110. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.mjs.map +1 -1
  111. package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
  112. package/dist/esm/hooks/useElementSize/useElementSize.mjs.map +1 -1
  113. package/dist/esm/hooks/useEvent/useEvent.mjs.map +1 -1
  114. package/dist/esm/hooks/useEventSource/useEventSource.mjs +3 -1
  115. package/dist/esm/hooks/useEventSource/useEventSource.mjs.map +1 -1
  116. package/dist/esm/hooks/useField/useField.mjs.map +1 -1
  117. package/dist/esm/hooks/useFileDialog/useFileDialog.mjs.map +1 -1
  118. package/dist/esm/hooks/useFocus/useFocus.mjs.map +1 -1
  119. package/dist/esm/hooks/useFps/useFps.mjs.map +1 -1
  120. package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
  121. package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
  122. package/dist/esm/hooks/useImage/useImage.mjs.map +1 -1
  123. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +27 -27
  124. package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
  125. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +5 -5
  126. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
  127. package/dist/esm/hooks/useLastChanged/useLastChanged.mjs.map +1 -1
  128. package/dist/esm/hooks/useList/useList.mjs +15 -6
  129. package/dist/esm/hooks/useList/useList.mjs.map +1 -1
  130. package/dist/esm/hooks/useLocalStorage/useLocalStorage.mjs.map +1 -1
  131. package/dist/esm/hooks/useLockCallback/useLockCallback.mjs.map +1 -1
  132. package/dist/esm/hooks/useLockScroll/useLockScroll.mjs +44 -0
  133. package/dist/esm/hooks/useLockScroll/useLockScroll.mjs.map +1 -0
  134. package/dist/esm/hooks/useLogger/useLogger.mjs.map +1 -1
  135. package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
  136. package/dist/esm/hooks/useMap/useMap.mjs.map +1 -1
  137. package/dist/esm/hooks/useMutation/useMutation.mjs.map +1 -1
  138. package/dist/esm/hooks/useMutationObserver/useMutationObserver.mjs.map +1 -1
  139. package/dist/esm/hooks/useNetwork/useNetwork.mjs.map +1 -1
  140. package/dist/esm/hooks/useOffsetPagination/useOffsetPagination.mjs.map +1 -1
  141. package/dist/esm/hooks/useOnline/useOnline.mjs.map +1 -1
  142. package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.mjs.map +1 -1
  143. package/dist/esm/hooks/useOptimistic/useOptimistic.mjs.map +1 -1
  144. package/dist/esm/hooks/useOrientation/useOrientation.mjs +25 -9
  145. package/dist/esm/hooks/useOrientation/useOrientation.mjs.map +1 -1
  146. package/dist/esm/hooks/usePaint/usePaint.mjs +14 -2
  147. package/dist/esm/hooks/usePaint/usePaint.mjs.map +1 -1
  148. package/dist/esm/hooks/useParallax/useParallax.mjs +9 -9
  149. package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
  150. package/dist/esm/hooks/usePointerLock/usePointerLock.mjs.map +1 -1
  151. package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.mjs.map +1 -1
  152. package/dist/esm/hooks/usePreferredContrast/usePreferredContrast.mjs.map +1 -1
  153. package/dist/esm/hooks/usePreferredDark/usePreferredDark.mjs.map +1 -1
  154. package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.mjs.map +1 -1
  155. package/dist/esm/hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs.map +1 -1
  156. package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
  157. package/dist/esm/hooks/useQueue/useQueue.mjs.map +1 -1
  158. package/dist/esm/hooks/useRaf/useRaf.mjs.map +1 -1
  159. package/dist/esm/hooks/{useRafValue/useRafValue.mjs → useRafState/useRafState.mjs} +2 -2
  160. package/dist/esm/hooks/useRafState/useRafState.mjs.map +1 -0
  161. package/dist/esm/hooks/useRefState/useRefState.mjs.map +1 -1
  162. package/dist/esm/hooks/useRenderCount/useRenderCount.mjs.map +1 -1
  163. package/dist/esm/hooks/useRenderInfo/useRenderInfo.mjs.map +1 -1
  164. package/dist/esm/hooks/useRerender/useRerender.mjs.map +1 -1
  165. package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
  166. package/dist/esm/hooks/useRightClick/useRightClick.mjs +36 -0
  167. package/dist/esm/hooks/useRightClick/useRightClick.mjs.map +1 -0
  168. package/dist/esm/hooks/useScript/useScript.mjs.map +1 -1
  169. package/dist/esm/hooks/useScroll/useScroll.mjs.map +1 -1
  170. package/dist/esm/hooks/useSessionStorage/useSessionStorage.mjs.map +1 -1
  171. package/dist/esm/hooks/useSet/useSet.mjs.map +1 -1
  172. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +14 -4
  173. package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -1
  174. package/dist/esm/hooks/useSpeechSynthesis/useSpeechSynthesis.mjs.map +1 -1
  175. package/dist/esm/hooks/useStateHistory/useStateHistory.mjs.map +1 -1
  176. package/dist/esm/hooks/useStep/useStep.mjs.map +1 -1
  177. package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
  178. package/dist/esm/hooks/useStorage/useStorage.mjs.map +1 -1
  179. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs +19 -20
  180. package/dist/esm/hooks/useTextDirection/useTextDirection.mjs.map +1 -1
  181. package/dist/esm/hooks/useToggle/useToggle.mjs.map +1 -1
  182. package/dist/esm/hooks/useUrlSearchParam/useUrlSearchParam.mjs.map +1 -1
  183. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -1
  184. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs +30 -0
  185. package/dist/esm/hooks/useVirtualKeyboard/useVirtualKeyboard.mjs.map +1 -0
  186. package/dist/esm/hooks/useWizard/useWizard.mjs.map +1 -1
  187. package/dist/esm/index.mjs +342 -338
  188. package/dist/esm/index.mjs.map +1 -1
  189. package/dist/types/helpers/createStore/createStore.d.ts +1 -1
  190. package/dist/types/hooks/async.d.ts +5 -0
  191. package/dist/types/hooks/browser.d.ts +33 -0
  192. package/dist/types/hooks/debug.d.ts +4 -0
  193. package/dist/types/hooks/elements.d.ts +15 -0
  194. package/dist/types/hooks/fun.d.ts +3 -0
  195. package/dist/types/hooks/index.d.ts +11 -143
  196. package/dist/types/hooks/lifecycle.d.ts +6 -0
  197. package/dist/types/hooks/sensors.d.ts +34 -0
  198. package/dist/types/hooks/state.d.ts +25 -0
  199. package/dist/types/hooks/time.d.ts +5 -0
  200. package/dist/types/hooks/useAsync/useAsync.d.ts +1 -1
  201. package/dist/types/hooks/useAutoScroll/useAutoScroll.d.ts +1 -1
  202. package/dist/types/hooks/useBoolean/useBoolean.d.ts +1 -1
  203. package/dist/types/hooks/useBrowserLanguage/useBrowserLanguage.d.ts +1 -1
  204. package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +1 -1
  205. package/dist/types/hooks/useCookie/useCookie.d.ts +1 -1
  206. package/dist/types/hooks/useCookies/useCookies.d.ts +1 -1
  207. package/dist/types/hooks/useCounter/useCounter.d.ts +1 -1
  208. package/dist/types/hooks/useCssVar/useCssVar.d.ts +1 -1
  209. package/dist/types/hooks/useDefault/useDefault.d.ts +1 -1
  210. package/dist/types/hooks/useDisclosure/useDisclosure.d.ts +1 -1
  211. package/dist/types/hooks/useDocumentTitle/useDocumentTitle.d.ts +2 -0
  212. package/dist/types/hooks/useDoubleClick/useDoubleClick.d.ts +1 -1
  213. package/dist/types/hooks/useEvent/useEvent.d.ts +1 -1
  214. package/dist/types/hooks/useField/useField.d.ts +1 -1
  215. package/dist/types/hooks/useFileDialog/useFileDialog.d.ts +1 -1
  216. package/dist/types/hooks/useFocus/useFocus.d.ts +1 -1
  217. package/dist/types/hooks/useFps/useFps.d.ts +1 -1
  218. package/dist/types/hooks/useHash/useHash.d.ts +1 -1
  219. package/dist/types/hooks/useHover/useHover.d.ts +1 -1
  220. package/dist/types/hooks/useImage/useImage.d.ts +1 -1
  221. package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +7 -6
  222. package/dist/types/hooks/useLastChanged/useLastChanged.d.ts +1 -1
  223. package/dist/types/hooks/useList/useList.d.ts +1 -1
  224. package/dist/types/hooks/useLocalStorage/useLocalStorage.d.ts +1 -1
  225. package/dist/types/hooks/useLockCallback/useLockCallback.d.ts +1 -1
  226. package/dist/types/hooks/useLockScroll/useLockScroll.d.ts +49 -0
  227. package/dist/types/hooks/useLogger/useLogger.d.ts +1 -1
  228. package/dist/types/hooks/useLongPress/useLongPress.d.ts +1 -1
  229. package/dist/types/hooks/useMap/useMap.d.ts +1 -1
  230. package/dist/types/hooks/useMutation/useMutation.d.ts +1 -1
  231. package/dist/types/hooks/useMutationObserver/useMutationObserver.d.ts +1 -1
  232. package/dist/types/hooks/useNetwork/useNetwork.d.ts +1 -1
  233. package/dist/types/hooks/useOffsetPagination/useOffsetPagination.d.ts +1 -1
  234. package/dist/types/hooks/useOnline/useOnline.d.ts +1 -1
  235. package/dist/types/hooks/useOperatingSystem/useOperatingSystem.d.ts +1 -1
  236. package/dist/types/hooks/useOptimistic/useOptimistic.d.ts +1 -1
  237. package/dist/types/hooks/useOrientation/useOrientation.d.ts +26 -11
  238. package/dist/types/hooks/usePaint/usePaint.d.ts +1 -1
  239. package/dist/types/hooks/usePointerLock/usePointerLock.d.ts +1 -1
  240. package/dist/types/hooks/usePreferredColorScheme/usePreferredColorScheme.d.ts +1 -1
  241. package/dist/types/hooks/usePreferredContrast/usePreferredContrast.d.ts +1 -1
  242. package/dist/types/hooks/usePreferredDark/usePreferredDark.d.ts +1 -1
  243. package/dist/types/hooks/usePreferredLanguages/usePreferredLanguages.d.ts +1 -1
  244. package/dist/types/hooks/usePreferredReducedMotion/usePreferredReducedMotion.d.ts +1 -1
  245. package/dist/types/hooks/useQuery/useQuery.d.ts +1 -1
  246. package/dist/types/hooks/useQueue/useQueue.d.ts +1 -1
  247. package/dist/types/hooks/useRaf/useRaf.d.ts +1 -1
  248. package/dist/types/hooks/{useRafValue/useRafValue.d.ts → useRafState/useRafState.d.ts} +6 -6
  249. package/dist/types/hooks/useRefState/useRefState.d.ts +1 -1
  250. package/dist/types/hooks/useRenderCount/useRenderCount.d.ts +1 -1
  251. package/dist/types/hooks/useRenderInfo/useRenderInfo.d.ts +6 -1
  252. package/dist/types/hooks/useRerender/useRerender.d.ts +1 -1
  253. package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +1 -1
  254. package/dist/types/hooks/useRightClick/useRightClick.d.ts +37 -0
  255. package/dist/types/hooks/useScript/useScript.d.ts +1 -1
  256. package/dist/types/hooks/useSessionStorage/useSessionStorage.d.ts +1 -1
  257. package/dist/types/hooks/useSet/useSet.d.ts +1 -1
  258. package/dist/types/hooks/useSpeechRecognition/useSpeechRecognition.d.ts +1 -1
  259. package/dist/types/hooks/useSpeechSynthesis/useSpeechSynthesis.d.ts +1 -1
  260. package/dist/types/hooks/useStateHistory/useStateHistory.d.ts +1 -1
  261. package/dist/types/hooks/useStep/useStep.d.ts +1 -1
  262. package/dist/types/hooks/useSticky/useSticky.d.ts +1 -1
  263. package/dist/types/hooks/useStorage/useStorage.d.ts +1 -1
  264. package/dist/types/hooks/useTextDirection/useTextDirection.d.ts +2 -2
  265. package/dist/types/hooks/useToggle/useToggle.d.ts +1 -1
  266. package/dist/types/hooks/useUrlSearchParam/useUrlSearchParam.d.ts +1 -1
  267. package/dist/types/hooks/useUrlSearchParams/useUrlSearchParams.d.ts +1 -1
  268. package/dist/types/hooks/useVirtualKeyboard/useVirtualKeyboard.d.ts +41 -0
  269. package/dist/types/hooks/useWizard/useWizard.d.ts +1 -1
  270. package/dist/types/hooks/user.d.ts +7 -0
  271. package/dist/types/hooks/utilities.d.ts +9 -0
  272. package/dist/types/utils/helpers/getElement.d.ts +1 -1
  273. package/package.json +89 -89
  274. package/dist/cjs/hooks/useRafValue/useRafValue.cjs.map +0 -1
  275. package/dist/cjs/hooks/useScreenOrientation/useScreenOrientation.cjs +0 -2
  276. package/dist/cjs/hooks/useScreenOrientation/useScreenOrientation.cjs.map +0 -1
  277. package/dist/esm/hooks/useRafValue/useRafValue.mjs.map +0 -1
  278. package/dist/esm/hooks/useScreenOrientation/useScreenOrientation.mjs +0 -31
  279. package/dist/esm/hooks/useScreenOrientation/useScreenOrientation.mjs.map +0 -1
  280. package/dist/types/hooks/useScreenOrientation/useScreenOrientation.d.ts +0 -35
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.mjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n * @param {StateCreator<Value>} createState - Function that initializes the store state\n * @returns {StoreApi<Value>} - Object containing store methods and hook for accessing state\n *\n * @example\n * const { set, get, use, subscribe } = createStore((set) => ({\n * count: 0,\n * increment: () => set(state => ({ count: state.count + 1 }))\n * }));\n */\nexport const createStore = <Value>(createState: StateCreator<Value> | Value) => {\n type Listener = (state: Value, prevState: Value) => void;\n let state: Value;\n const listeners: Set<Listener> = new Set();\n\n const setState = (action: SetStateAction<Value>) => {\n const nextState =\n typeof action === 'function' ? (action as (state: Value) => Value)(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = nextState;\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const getState = () => state;\n const getInitialState = () => state;\n\n const subscribe = (listener: Listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n if (typeof createState === 'function') {\n state = (createState as StateCreator<Value>)(setState, getState);\n } else {\n state = createState;\n }\n\n const useStore = <Selected>(selector: (state: Value) => Selected) =>\n useSyncExternalStore(\n subscribe,\n () => selector(getState()),\n () => selector(getInitialState())\n );\n\n return {\n set: setState,\n get: getState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore"],"mappings":";AA8BO,MAAMA,IAAc,CAAQC,MAA6C;AAE9E,MAAIC;AACJ,QAAMC,wBAA+B,IAAA,GAE/BC,IAAW,CAACC,MAAkC;AAClD,UAAMC,IACJ,OAAOD,KAAW,aAAcA,EAAmCH,CAAK,IAAIG;AAE9E,QAAI,CAAC,OAAO,GAAGC,GAAWJ,CAAK,GAAG;AAChC,YAAMK,IAAYL;AAClB,MAAAA,IAAQI,GACRH,EAAU,QAAQ,CAACK,MAAaA,EAASN,GAAOK,CAAS,CAAC;AAAA,IAAA;AAAA,EAC5D,GAGIE,IAAW,MAAMP,GACjBQ,IAAkB,MAAMR,GAExBS,IAAY,CAACH,OACjBL,EAAU,IAAIK,CAAQ,GACf,MAAML,EAAU,OAAOK,CAAQ;AAExC,SAAI,OAAOP,KAAgB,aACzBC,IAASD,EAAoCG,GAAUK,CAAQ,IAE/DP,IAAQD,GAUH;AAAA,IACL,KAAKG;AAAA,IACL,KAAKK;AAAA,IACL,KAVe,CAAWG,MAC1BC;AAAA,MACEF;AAAA,MACA,MAAMC,EAASH,GAAU;AAAA,MACzB,MAAMG,EAASF,EAAA,CAAiB;AAAA,IAAA;AAAA,IAOlC,WAAAC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"createStore.mjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n * @param {StateCreator<Value>} createState - Function that initializes the store state\n * @returns {StoreApi<Value>} - Object containing store methods and hook for accessing state\n *\n * @example\n * const { set, get, use, subscribe } = createStore((set) => ({\n * count: 0,\n * increment: () => set(state => ({ count: state.count + 1 }))\n * }));\n */\nexport const createStore = <Value>(createState: StateCreator<Value> | Value) => {\n type Listener = (state: Value, prevState: Value) => void;\n let state: Value;\n const listeners: Set<Listener> = new Set();\n\n const setState = (action: SetStateAction<Value>) => {\n const nextState =\n typeof action === 'function' ? (action as (state: Value) => Value)(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = nextState;\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const getState = () => state;\n const getInitialState = () => state;\n\n const subscribe = (listener: Listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n if (typeof createState === 'function') {\n state = (createState as StateCreator<Value>)(setState, getState);\n } else {\n state = createState;\n }\n\n const useStore = <Selected>(selector?: (state: Value) => Selected) =>\n useSyncExternalStore(\n subscribe,\n () => (selector ? selector(getState()) : getState()),\n () => (selector ? selector(getInitialState()) : getInitialState())\n );\n\n return {\n set: setState,\n get: getState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore"],"mappings":";AA8BO,MAAMA,IAAc,CAAQC,MAA6C;AAE9E,MAAIC;AACJ,QAAMC,wBAA+B,IAAA,GAE/BC,IAAW,CAACC,MAAkC;AAClD,UAAMC,IACJ,OAAOD,KAAW,aAAcA,EAAmCH,CAAK,IAAIG;AAE9E,QAAI,CAAC,OAAO,GAAGC,GAAWJ,CAAK,GAAG;AAChC,YAAMK,IAAYL;AAClB,MAAAA,IAAQI,GACRH,EAAU,QAAQ,CAACK,MAAaA,EAASN,GAAOK,CAAS,CAAC;AAAA,IAAA;AAAA,EAC5D,GAGIE,IAAW,MAAMP,GACjBQ,IAAkB,MAAMR,GAExBS,IAAY,CAACH,OACjBL,EAAU,IAAIK,CAAQ,GACf,MAAML,EAAU,OAAOK,CAAQ;AAExC,SAAI,OAAOP,KAAgB,aACzBC,IAASD,EAAoCG,GAAUK,CAAQ,IAE/DP,IAAQD,GAUH;AAAA,IACL,KAAKG;AAAA,IACL,KAAKK;AAAA,IACL,KAVe,CAAWG,MAC1BC;AAAA,MACEF;AAAA,MACA,MAAOC,IAAWA,EAASH,EAAA,CAAU,IAAIA,EAAA;AAAA,MACzC,MAAOG,IAAWA,EAASF,EAAA,CAAiB,IAAIA,EAAA;AAAA,IAAgB;AAAA,IAOlE,WAAAC;AAAA,EAAA;AAEJ;"}
@@ -3,26 +3,25 @@ import { useRefState as v } from "../useRefState/useRefState.mjs";
3
3
  import { isTarget as d } from "../../utils/helpers/isTarget.mjs";
4
4
  import { getElement as E } from "../../utils/helpers/getElement.mjs";
5
5
  const p = (...u) => {
6
- const t = d(u[0]) ? u[0] : void 0, [s, i] = a(null), n = v(window);
6
+ const r = d(u[0]) ? u[0] : void 0, [s, i] = a(null), o = v(window);
7
7
  return l(() => {
8
- if (!t && !n.state) return;
9
- const e = t ? E(t) : n.current;
8
+ const e = r ? E(r) : o.current;
10
9
  if (!e) return;
11
10
  const c = new MutationObserver((f) => {
12
- f.filter((r) => r.removedNodes.length).map((r) => Array.from(r.removedNodes)).flat().forEach((r) => {
13
- i((m) => r === m ? document.activeElement : m);
11
+ f.filter((t) => t.removedNodes.length).map((t) => Array.from(t.removedNodes)).flat().forEach((t) => {
12
+ i((m) => t === m ? document.activeElement : m);
14
13
  });
15
14
  });
16
15
  c.observe(e, {
17
16
  childList: !0,
18
17
  subtree: !0
19
18
  });
20
- const o = () => i(document?.activeElement);
21
- return e.addEventListener("focus", o, !0), e.addEventListener("blur", o, !0), () => {
22
- c.disconnect(), e.removeEventListener("focus", o, !0), e.removeEventListener("blur", o, !0);
19
+ const n = () => i(document?.activeElement);
20
+ return e.addEventListener("focus", n, !0), e.addEventListener("blur", n, !0), () => {
21
+ c.disconnect(), e.removeEventListener("focus", n, !0), e.removeEventListener("blur", n, !0);
23
22
  };
24
- }, [t, n.state]), t ? s : {
25
- ref: n,
23
+ }, [r, o.state]), r ? s : {
24
+ ref: o,
26
25
  value: s
27
26
  };
28
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveElement.mjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, 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 interface UseActiveElement {\n (): HTMLElement | null;\n\n <Target extends Element, ActiveElement extends HTMLElement = HTMLElement>(\n target?: never\n ): {\n ref: StateRef<Target>;\n value: ActiveElement | null;\n };\n\n <ActiveElement extends HTMLElement = HTMLElement>(target: HookTarget): ActiveElement | null;\n}\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @overload\n * @param {HookTarget} [target=window] The target element to observe active element changes\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement(ref);\n *\n * @overload\n * @template ActiveElement The active element type\n * @returns {{ ref: StateRef<Element>; activeElement: ActiveElement | null }} An object containing the ref and active element\n *\n * @example\n * const { ref, value } = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const [value, setValue] = useState<HTMLElement | null>(null);\n const internalRef = useRefState(window);\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (target ? getElement(target) : internalRef.current) as Element;\n if (!element) return;\n\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setValue((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as HTMLElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(element, {\n childList: true,\n subtree: true\n });\n\n const onActiveElementChange = () => setValue(document?.activeElement as HTMLElement | null);\n\n element.addEventListener('focus', onActiveElementChange, true);\n element.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n observer.disconnect();\n element.removeEventListener('focus', onActiveElementChange, true);\n element.removeEventListener('blur', onActiveElementChange, true);\n };\n }, [target, internalRef.state]);\n\n if (target) return value;\n return {\n ref: internalRef,\n value\n };\n}) as UseActiveElement;\n"],"names":["useActiveElement","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","element","getElement","observer","mutations","mutation","node","prevActiveElement","onActiveElementChange"],"mappings":";;;;AA4CO,MAAMA,IAAoB,IAAIC,MAAkB;AACrD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5C,CAACG,GAAOC,CAAQ,IAAIC,EAA6B,IAAI,GACrDC,IAAcC,EAAY,MAAM;AAsCtC,SApCAC,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACK,EAAY,MAAO;AAEnC,UAAMG,IAAWR,IAASS,EAAWT,CAAM,IAAIK,EAAY;AAC3D,QAAI,CAACG,EAAS;AAEd,UAAME,IAAW,IAAI,iBAAiB,CAACC,MAAc;AACnD,MAAAA,EACG,OAAO,CAACC,MAAaA,EAAS,aAAa,MAAM,EACjD,IAAI,CAACA,MAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAAQ,CAACC,MAAS;AACjB,QAAAV,EAAS,CAACW,MACJD,MAASC,IAA0B,SAAS,gBACzCA,CACR;AAAA,MAAA,CACF;AAAA,IAAA,CACJ;AAED,IAAAJ,EAAS,QAAQF,GAAS;AAAA,MACxB,WAAW;AAAA,MACX,SAAS;AAAA,IAAA,CACV;AAED,UAAMO,IAAwB,MAAMZ,EAAS,UAAU,aAAmC;AAE1F,WAAAK,EAAQ,iBAAiB,SAASO,GAAuB,EAAI,GAC7DP,EAAQ,iBAAiB,QAAQO,GAAuB,EAAI,GAErD,MAAM;AACX,MAAAL,EAAS,WAAA,GACTF,EAAQ,oBAAoB,SAASO,GAAuB,EAAI,GAChEP,EAAQ,oBAAoB,QAAQO,GAAuB,EAAI;AAAA,IAAA;AAAA,EACjE,GACC,CAACf,GAAQK,EAAY,KAAK,CAAC,GAE1BL,IAAeE,IACZ;AAAA,IACL,KAAKG;AAAA,IACL,OAAAH;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useActiveElement.mjs","sources":["../../../../src/hooks/useActiveElement/useActiveElement.ts"],"sourcesContent":["import { useEffect, 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 interface UseActiveElement {\n (): HTMLElement | null;\n\n <Target extends Element, ActiveElement extends HTMLElement = HTMLElement>(\n target?: never\n ): {\n ref: StateRef<Target>;\n value: ActiveElement | null;\n };\n\n <ActiveElement extends HTMLElement = HTMLElement>(target: HookTarget): ActiveElement | null;\n}\n\n/**\n * @name useActiveElement\n * @description - Hook that returns the active element\n * @category Elements\n *\n * @overload\n * @param {HookTarget} [target=window] The target element to observe active element changes\n * @returns {ActiveElement | null} The active element\n *\n * @example\n * const activeElement = useActiveElement(ref);\n *\n * @overload\n * @template ActiveElement The active element type\n * @returns {{ ref: StateRef<Element>; activeElement: ActiveElement | null }} An object containing the ref and active element\n *\n * @example\n * const { ref, value } = useActiveElement();\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useActiveElement.html}\n */\nexport const useActiveElement = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const [value, setValue] = useState<HTMLElement | null>(null);\n const internalRef = useRefState(window);\n\n useEffect(() => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (!element) return;\n\n const observer = new MutationObserver((mutations) => {\n mutations\n .filter((mutation) => mutation.removedNodes.length)\n .map((mutation) => Array.from(mutation.removedNodes))\n .flat()\n .forEach((node) => {\n setValue((prevActiveElement) => {\n if (node === prevActiveElement) return document.activeElement as HTMLElement | null;\n return prevActiveElement;\n });\n });\n });\n\n observer.observe(element, {\n childList: true,\n subtree: true\n });\n\n const onActiveElementChange = () => setValue(document?.activeElement as HTMLElement | null);\n\n element.addEventListener('focus', onActiveElementChange, true);\n element.addEventListener('blur', onActiveElementChange, true);\n\n return () => {\n observer.disconnect();\n element.removeEventListener('focus', onActiveElementChange, true);\n element.removeEventListener('blur', onActiveElementChange, true);\n };\n }, [target, internalRef.state]);\n\n if (target) return value;\n return {\n ref: internalRef,\n value\n };\n}) as UseActiveElement;\n"],"names":["useActiveElement","params","target","isTarget","value","setValue","useState","internalRef","useRefState","useEffect","element","getElement","observer","mutations","mutation","node","prevActiveElement","onActiveElementChange"],"mappings":";;;;AA4CO,MAAMA,IAAoB,IAAIC,MAAkB;AACrD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5C,CAACG,GAAOC,CAAQ,IAAIC,EAA6B,IAAI,GACrDC,IAAcC,EAAY,MAAM;AAqCtC,SAnCAC,EAAU,MAAM;AACd,UAAMC,IAAWR,IAASS,EAAWT,CAAM,IAAIK,EAAY;AAE3D,QAAI,CAACG,EAAS;AAEd,UAAME,IAAW,IAAI,iBAAiB,CAACC,MAAc;AACnD,MAAAA,EACG,OAAO,CAACC,MAAaA,EAAS,aAAa,MAAM,EACjD,IAAI,CAACA,MAAa,MAAM,KAAKA,EAAS,YAAY,CAAC,EACnD,OACA,QAAQ,CAACC,MAAS;AACjB,QAAAV,EAAS,CAACW,MACJD,MAASC,IAA0B,SAAS,gBACzCA,CACR;AAAA,MAAA,CACF;AAAA,IAAA,CACJ;AAED,IAAAJ,EAAS,QAAQF,GAAS;AAAA,MACxB,WAAW;AAAA,MACX,SAAS;AAAA,IAAA,CACV;AAED,UAAMO,IAAwB,MAAMZ,EAAS,UAAU,aAAmC;AAE1F,WAAAK,EAAQ,iBAAiB,SAASO,GAAuB,EAAI,GAC7DP,EAAQ,iBAAiB,QAAQO,GAAuB,EAAI,GAErD,MAAM;AACX,MAAAL,EAAS,WAAA,GACTF,EAAQ,oBAAoB,SAASO,GAAuB,EAAI,GAChEP,EAAQ,oBAAoB,QAAQO,GAAuB,EAAI;AAAA,IAAA;AAAA,EACjE,GACC,CAACf,GAAQK,EAAY,KAAK,CAAC,GAE1BL,IAAeE,IACZ;AAAA,IACL,KAAKG;AAAA,IACL,OAAAH;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAsync.mjs","sources":["../../../../src/hooks/useAsync/useAsync.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useState } from 'react';\n\n/* The use query return type */\nexport interface UseAsyncReturn<Data> {\n /* The state of the query */\n data?: Data;\n /* The error of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n}\n\n/**\n * @name useAsync\n * @description - Hook that provides the state of an async callback\n * @category Utilities\n *\n * @param {() => Promise<Data>} callback The async callback\n * @param {DependencyList} deps The dependencies of the callback\n * @returns {UseAsyncReturn<Data>} The state of the async callback\n *\n * @example\n * const { data, isLoading, isError, error } = useAsync(() => fetch('url'), [deps]);\n */\nexport const useAsync = <Data>(\n callback: () => Promise<Data>,\n deps: DependencyList\n): UseAsyncReturn<Data> => {\n const [isLoading, setIsLoading] = useState(true);\n const [isError, setIsError] = useState(false);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n callback()\n .then((response) => {\n setData(response);\n setError(undefined);\n setIsError(false);\n })\n .catch((error: Error) => {\n setError(error);\n setIsError(true);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, deps);\n\n return {\n data,\n isLoading,\n isError,\n error\n };\n};\n"],"names":["useAsync","callback","deps","isLoading","setIsLoading","useState","isError","setIsError","error","setError","data","setData","useEffect","response"],"mappings":";AA4BO,MAAMA,IAAW,CACtBC,GACAC,MACyB;AACzB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAI,GACzC,CAACC,GAASC,CAAU,IAAIF,EAAS,EAAK,GAEtC,CAACG,GAAOC,CAAQ,IAAIJ,EAA4B,MAAS,GACzD,CAACK,GAAMC,CAAO,IAAIN,EAA2B,MAAS;AAE5D,SAAAO,EAAU,MAAM;AACd,IAAAR,EAAa,EAAI,GACjBH,EAAA,EACG,KAAK,CAACY,MAAa;AAClB,MAAAF,EAAQE,CAAQ,GAChBJ,EAAS,MAAS,GAClBF,EAAW,EAAK;AAAA,IAAA,CACjB,EACA,MAAM,CAACC,MAAiB;AACvB,MAAAC,EAASD,CAAK,GACdD,EAAW,EAAI;AAAA,IAAA,CAChB,EACA,QAAQ,MAAM;AACb,MAAAH,EAAa,EAAK;AAAA,IAAA,CACnB;AAAA,EAAA,GACFF,CAAI,GAEA;AAAA,IACL,MAAAQ;AAAA,IACA,WAAAP;AAAA,IACA,SAAAG;AAAA,IACA,OAAAE;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useAsync.mjs","sources":["../../../../src/hooks/useAsync/useAsync.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useState } from 'react';\n\n/* The use query return type */\nexport interface UseAsyncReturn<Data> {\n /* The state of the query */\n data?: Data;\n /* The error of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n}\n\n/**\n * @name useAsync\n * @description - Hook that provides the state of an async callback\n * @category Async\n *\n * @param {() => Promise<Data>} callback The async callback\n * @param {DependencyList} deps The dependencies of the callback\n * @returns {UseAsyncReturn<Data>} The state of the async callback\n *\n * @example\n * const { data, isLoading, isError, error } = useAsync(() => fetch('url'), [deps]);\n */\nexport const useAsync = <Data>(\n callback: () => Promise<Data>,\n deps: DependencyList\n): UseAsyncReturn<Data> => {\n const [isLoading, setIsLoading] = useState(true);\n const [isError, setIsError] = useState(false);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n callback()\n .then((response) => {\n setData(response);\n setError(undefined);\n setIsError(false);\n })\n .catch((error: Error) => {\n setError(error);\n setIsError(true);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, deps);\n\n return {\n data,\n isLoading,\n isError,\n error\n };\n};\n"],"names":["useAsync","callback","deps","isLoading","setIsLoading","useState","isError","setIsError","error","setError","data","setData","useEffect","response"],"mappings":";AA4BO,MAAMA,IAAW,CACtBC,GACAC,MACyB;AACzB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAI,GACzC,CAACC,GAASC,CAAU,IAAIF,EAAS,EAAK,GAEtC,CAACG,GAAOC,CAAQ,IAAIJ,EAA4B,MAAS,GACzD,CAACK,GAAMC,CAAO,IAAIN,EAA2B,MAAS;AAE5D,SAAAO,EAAU,MAAM;AACd,IAAAR,EAAa,EAAI,GACjBH,EAAA,EACG,KAAK,CAACY,MAAa;AAClB,MAAAF,EAAQE,CAAQ,GAChBJ,EAAS,MAAS,GAClBF,EAAW,EAAK;AAAA,IAAA,CACjB,EACA,MAAM,CAACC,MAAiB;AACvB,MAAAC,EAASD,CAAK,GACdD,EAAW,EAAI;AAAA,IAAA,CAChB,EACA,QAAQ,MAAM;AACb,MAAAH,EAAa,EAAK;AAAA,IAAA,CACnB;AAAA,EAAA,GACFF,CAAI,GAEA;AAAA,IACL,MAAAQ;AAAA,IACA,WAAAP;AAAA,IACA,SAAAG;AAAA,IACA,OAAAE;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoScroll.mjs","sources":["../../../../src/hooks/useAutoScroll/useAutoScroll.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use auto scroll options type */\nexport interface UseAutoScrollOptions {\n /** Whether auto-scrolling is enabled */\n enabled?: boolean;\n /** Whether to force auto-scrolling regardless of user interactions */\n force?: boolean;\n}\n\nexport interface UseAutoScroll {\n (target: HookTarget, options?: UseAutoScrollOptions): void;\n\n <Target extends HTMLElement>(options?: UseAutoScrollOptions): StateRef<Target>;\n}\n\n/**\n * @name useAutoScroll\n * @description - Hook that automatically scrolls a list element to the bottom\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to auto-scroll\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {void}\n *\n * @example\n * useAutoScroll(ref);\n *\n * @overload\n * @template Target\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {StateRef<Target>} A React ref to attach to the list element\n *\n * @example\n * const ref = useAutoScroll();\n */\nexport const useAutoScroll = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n const options = (params[1] ||\n (typeof params[0] === 'object' ? params[0] : {})) as UseAutoScrollOptions;\n const { enabled = true } = options;\n\n const internalRef = useRefState<HTMLElement>();\n const internalOptionsRef = useRef<UseAutoScrollOptions>(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = (target ? getElement(target) : internalRef.state) as HTMLElement;\n\n if (!element) return;\n\n let shouldAutoScroll = true;\n let touchStartY = 0;\n let lastScrollTop = 0;\n\n const onCheckScrollPosition = () => {\n if (internalOptionsRef.current.force) return;\n\n const { scrollHeight, clientHeight, scrollTop } = element;\n const maxScrollHeight = scrollHeight - clientHeight;\n const scrollThreshold = maxScrollHeight / 2;\n console.log(\n maxScrollHeight,\n scrollTop,\n scrollThreshold,\n scrollTop < lastScrollTop,\n maxScrollHeight - scrollTop <= scrollThreshold\n );\n\n if (scrollTop < lastScrollTop) shouldAutoScroll = false;\n else if (maxScrollHeight - scrollTop <= scrollThreshold) shouldAutoScroll = true;\n\n lastScrollTop = scrollTop;\n };\n\n const onWheel = (event: WheelEvent) => {\n if (internalOptionsRef.current.force) return;\n\n if (event.deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n };\n\n const onTouchStart = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n touchStartY = event.touches[0].clientY;\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n\n const touchEndY = event.touches[0].clientY;\n const deltaY = touchStartY - touchEndY;\n\n if (deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n\n touchStartY = touchEndY;\n };\n\n const onMutation = () => {\n if (!shouldAutoScroll && !internalOptionsRef.current.force) return;\n element.scrollTo({ top: element.scrollHeight });\n };\n\n element.addEventListener('wheel', onWheel);\n element.addEventListener('touchstart', onTouchStart);\n element.addEventListener('touchmove', onTouchMove);\n\n const observer = new MutationObserver(onMutation);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n characterData: true\n });\n\n return () => {\n observer.disconnect();\n element.removeEventListener('wheel', onWheel);\n element.removeEventListener('touchstart', onTouchStart);\n element.removeEventListener('touchmove', onTouchMove);\n };\n }, [enabled, target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseAutoScroll;\n"],"names":["useAutoScroll","params","target","isTarget","options","enabled","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","getElement","shouldAutoScroll","touchStartY","lastScrollTop","onCheckScrollPosition","scrollHeight","clientHeight","scrollTop","maxScrollHeight","scrollThreshold","onWheel","event","onTouchStart","onTouchMove","touchEndY","onMutation","observer"],"mappings":";;;;AA6CO,MAAMA,IAAiB,IAAIC,MAAkB;AAClD,QAAMC,IAASC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC3CG,IAAWH,EAAO,CAAC,MACtB,OAAOA,EAAO,CAAC,KAAM,WAAWA,EAAO,CAAC,IAAI,CAAA,IACzC,EAAE,SAAAI,IAAU,GAAA,IAASD,GAErBE,IAAcC,EAAA,GACdC,IAAqBC,EAA6BL,CAAO;AAmF/D,MAlFAI,EAAmB,UAAUJ,GAE7BM,EAAU,MAAM;AACd,QAAI,CAACL,KAAY,CAACH,KAAU,CAACI,EAAY,MAAQ;AAEjD,UAAMK,IAAWT,IAASU,EAAWV,CAAM,IAAII,EAAY;AAE3D,QAAI,CAACK,EAAS;AAEd,QAAIE,IAAmB,IACnBC,IAAc,GACdC,IAAgB;AAEpB,UAAMC,IAAwB,MAAM;AAClC,UAAIR,EAAmB,QAAQ,MAAO;AAEtC,YAAM,EAAE,cAAAS,GAAc,cAAAC,GAAc,WAAAC,EAAA,IAAcR,GAC5CS,IAAkBH,IAAeC,GACjCG,IAAkBD,IAAkB;AAC1C,cAAQ;AAAA,QACNA;AAAA,QACAD;AAAA,QACAE;AAAA,QACAF,IAAYJ;AAAA,QACZK,IAAkBD,KAAaE;AAAA,MAAA,GAG7BF,IAAYJ,IAAeF,IAAmB,KACzCO,IAAkBD,KAAaE,MAAiBR,IAAmB,KAE5EE,IAAgBI;AAAA,IAAA,GAGZG,IAAU,CAACC,MAAsB;AACrC,MAAIf,EAAmB,QAAQ,UAE3Be,EAAM,SAAS,IAAGV,IAAmB,KACpCG,EAAA;AAAA,IAAsB,GAGvBQ,IAAe,CAACD,MAAsB;AAC1C,MAAIf,EAAmB,QAAQ,UAC/BM,IAAcS,EAAM,QAAQ,CAAC,EAAE;AAAA,IAAA,GAG3BE,IAAc,CAACF,MAAsB;AACzC,UAAIf,EAAmB,QAAQ,MAAO;AAEtC,YAAMkB,IAAYH,EAAM,QAAQ,CAAC,EAAE;AAGnC,MAFeT,IAAcY,IAEhB,IAAGb,IAAmB,KAC9BG,EAAA,GAELF,IAAcY;AAAA,IAAA,GAGVC,IAAa,MAAM;AACvB,MAAI,CAACd,KAAoB,CAACL,EAAmB,QAAQ,SACrDG,EAAQ,SAAS,EAAE,KAAKA,EAAQ,cAAc;AAAA,IAAA;AAGhD,IAAAA,EAAQ,iBAAiB,SAASW,CAAO,GACzCX,EAAQ,iBAAiB,cAAca,CAAY,GACnDb,EAAQ,iBAAiB,aAAac,CAAW;AAEjD,UAAMG,IAAW,IAAI,iBAAiBD,CAAU;AAEhD,WAAAC,EAAS,QAAQjB,GAAS;AAAA,MACxB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,IAAA,CAChB,GAEM,MAAM;AACX,MAAAiB,EAAS,WAAA,GACTjB,EAAQ,oBAAoB,SAASW,CAAO,GAC5CX,EAAQ,oBAAoB,cAAca,CAAY,GACtDb,EAAQ,oBAAoB,aAAac,CAAW;AAAA,IAAA;AAAA,EACtD,GACC,CAACpB,GAASH,GAAQI,EAAY,KAAK,CAAC,GAEnC,CAAAJ;AACJ,WAAOI;AACT;"}
1
+ {"version":3,"file":"useAutoScroll.mjs","sources":["../../../../src/hooks/useAutoScroll/useAutoScroll.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use auto scroll options type */\nexport interface UseAutoScrollOptions {\n /** Whether auto-scrolling is enabled */\n enabled?: boolean;\n /** Whether to force auto-scrolling regardless of user interactions */\n force?: boolean;\n}\n\nexport interface UseAutoScroll {\n (target: HookTarget, options?: UseAutoScrollOptions): void;\n\n <Target extends HTMLElement>(options?: UseAutoScrollOptions): StateRef<Target>;\n}\n\n/**\n * @name useAutoScroll\n * @description - Hook that automatically scrolls a list element to the bottom\n * @category Elements\n *\n * @overload\n * @param {HookTarget} target The target element to auto-scroll\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {void}\n *\n * @example\n * useAutoScroll(ref);\n *\n * @overload\n * @template Target\n * @param {boolean} [options.enabled] Whether auto-scrolling is enabled\n * @returns {StateRef<Target>} A React ref to attach to the list element\n *\n * @example\n * const ref = useAutoScroll();\n */\nexport const useAutoScroll = ((...params: any[]) => {\n const target = isTarget(params[0]) ? params[0] : undefined;\n const options = (params[1] ||\n (typeof params[0] === 'object' ? params[0] : {})) as UseAutoScrollOptions;\n const { enabled = true } = options;\n\n const internalRef = useRefState<HTMLElement>();\n const internalOptionsRef = useRef<UseAutoScrollOptions>(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = (target ? getElement(target) : internalRef.state) as HTMLElement;\n\n if (!element) return;\n\n let shouldAutoScroll = true;\n let touchStartY = 0;\n let lastScrollTop = 0;\n\n const onCheckScrollPosition = () => {\n if (internalOptionsRef.current.force) return;\n\n const { scrollHeight, clientHeight, scrollTop } = element;\n const maxScrollHeight = scrollHeight - clientHeight;\n const scrollThreshold = maxScrollHeight / 2;\n console.log(\n maxScrollHeight,\n scrollTop,\n scrollThreshold,\n scrollTop < lastScrollTop,\n maxScrollHeight - scrollTop <= scrollThreshold\n );\n\n if (scrollTop < lastScrollTop) shouldAutoScroll = false;\n else if (maxScrollHeight - scrollTop <= scrollThreshold) shouldAutoScroll = true;\n\n lastScrollTop = scrollTop;\n };\n\n const onWheel = (event: WheelEvent) => {\n if (internalOptionsRef.current.force) return;\n\n if (event.deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n };\n\n const onTouchStart = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n touchStartY = event.touches[0].clientY;\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (internalOptionsRef.current.force) return;\n\n const touchEndY = event.touches[0].clientY;\n const deltaY = touchStartY - touchEndY;\n\n if (deltaY < 0) shouldAutoScroll = false;\n else onCheckScrollPosition();\n\n touchStartY = touchEndY;\n };\n\n const onMutation = () => {\n if (!shouldAutoScroll && !internalOptionsRef.current.force) return;\n element.scrollTo({ top: element.scrollHeight });\n };\n\n element.addEventListener('wheel', onWheel);\n element.addEventListener('touchstart', onTouchStart);\n element.addEventListener('touchmove', onTouchMove);\n\n const observer = new MutationObserver(onMutation);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n characterData: true\n });\n\n return () => {\n observer.disconnect();\n element.removeEventListener('wheel', onWheel);\n element.removeEventListener('touchstart', onTouchStart);\n element.removeEventListener('touchmove', onTouchMove);\n };\n }, [enabled, target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseAutoScroll;\n"],"names":["useAutoScroll","params","target","isTarget","options","enabled","internalRef","useRefState","internalOptionsRef","useRef","useEffect","element","getElement","shouldAutoScroll","touchStartY","lastScrollTop","onCheckScrollPosition","scrollHeight","clientHeight","scrollTop","maxScrollHeight","scrollThreshold","onWheel","event","onTouchStart","onTouchMove","touchEndY","onMutation","observer"],"mappings":";;;;AA6CO,MAAMA,IAAiB,IAAIC,MAAkB;AAClD,QAAMC,IAASC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC3CG,IAAWH,EAAO,CAAC,MACtB,OAAOA,EAAO,CAAC,KAAM,WAAWA,EAAO,CAAC,IAAI,CAAA,IACzC,EAAE,SAAAI,IAAU,GAAA,IAASD,GAErBE,IAAcC,EAAA,GACdC,IAAqBC,EAA6BL,CAAO;AAmF/D,MAlFAI,EAAmB,UAAUJ,GAE7BM,EAAU,MAAM;AACd,QAAI,CAACL,KAAY,CAACH,KAAU,CAACI,EAAY,MAAQ;AAEjD,UAAMK,IAAWT,IAASU,EAAWV,CAAM,IAAII,EAAY;AAE3D,QAAI,CAACK,EAAS;AAEd,QAAIE,IAAmB,IACnBC,IAAc,GACdC,IAAgB;AAEpB,UAAMC,IAAwB,MAAM;AAClC,UAAIR,EAAmB,QAAQ,MAAO;AAEtC,YAAM,EAAE,cAAAS,GAAc,cAAAC,GAAc,WAAAC,EAAA,IAAcR,GAC5CS,IAAkBH,IAAeC,GACjCG,IAAkBD,IAAkB;AAC1C,cAAQ;AAAA,QACNA;AAAA,QACAD;AAAA,QACAE;AAAA,QACAF,IAAYJ;AAAA,QACZK,IAAkBD,KAAaE;AAAA,MAAA,GAG7BF,IAAYJ,IAAeF,IAAmB,KACzCO,IAAkBD,KAAaE,MAAiBR,IAAmB,KAE5EE,IAAgBI;AAAA,IAAA,GAGZG,IAAU,CAACC,MAAsB;AACrC,MAAIf,EAAmB,QAAQ,UAE3Be,EAAM,SAAS,IAAGV,IAAmB,KACpCG,EAAA;AAAA,IAAsB,GAGvBQ,IAAe,CAACD,MAAsB;AAC1C,MAAIf,EAAmB,QAAQ,UAC/BM,IAAcS,EAAM,QAAQ,CAAC,EAAE;AAAA,IAAA,GAG3BE,IAAc,CAACF,MAAsB;AACzC,UAAIf,EAAmB,QAAQ,MAAO;AAEtC,YAAMkB,IAAYH,EAAM,QAAQ,CAAC,EAAE;AAGnC,MAFeT,IAAcY,IAEhB,IAAGb,IAAmB,KAC9BG,EAAA,GAELF,IAAcY;AAAA,IAAA,GAGVC,IAAa,MAAM;AACvB,MAAI,CAACd,KAAoB,CAACL,EAAmB,QAAQ,SACrDG,EAAQ,SAAS,EAAE,KAAKA,EAAQ,cAAc;AAAA,IAAA;AAGhD,IAAAA,EAAQ,iBAAiB,SAASW,CAAO,GACzCX,EAAQ,iBAAiB,cAAca,CAAY,GACnDb,EAAQ,iBAAiB,aAAac,CAAW;AAEjD,UAAMG,IAAW,IAAI,iBAAiBD,CAAU;AAEhD,WAAAC,EAAS,QAAQjB,GAAS;AAAA,MACxB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,IAAA,CAChB,GAEM,MAAM;AACX,MAAAiB,EAAS,WAAA,GACTjB,EAAQ,oBAAoB,SAASW,CAAO,GAC5CX,EAAQ,oBAAoB,cAAca,CAAY,GACtDb,EAAQ,oBAAoB,aAAac,CAAW;AAAA,IAAA;AAAA,EACtD,GACC,CAACpB,GAASH,GAAQI,EAAY,KAAK,CAAC,GAEnC,CAAAJ;AACJ,WAAOI;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBoolean.mjs","sources":["../../../../src/hooks/useBoolean/useBoolean.ts"],"sourcesContent":["import { useState } from 'react';\n\n/** The use boolean return type */\nexport type UseBooleanReturn = [\n /** The current boolean state value */\n value: boolean,\n /** Function to toggle the boolean state */\n toggle: (value?: boolean) => void\n];\n\n/**\n * @name useBoolean\n * @description - Hook provides opportunity to manage boolean state\n * @category Utilities\n *\n * @param {boolean} [initialValue=false] The initial boolean value\n * @returns {UseBooleanReturn} An object containing the boolean state value and utility functions to manipulate the state\n *\n * @example\n * const [on, toggle] = useBoolean()\n */\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = useState(initialValue);\n const toggle = (value?: boolean) => setValue((prevValue) => value ?? !prevValue);\n\n return [value, toggle];\n};\n"],"names":["useBoolean","initialValue","value","setValue","useState","prevValue"],"mappings":";AAqBO,MAAMA,IAAa,CAACC,IAAe,OAA4B;AACpE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAASH,CAAY;AAG/C,SAAO,CAACC,GAFO,CAACA,MAAoBC,EAAS,CAACE,MAAcH,KAAS,CAACG,CAAS,CAE1D;AACvB;"}
1
+ {"version":3,"file":"useBoolean.mjs","sources":["../../../../src/hooks/useBoolean/useBoolean.ts"],"sourcesContent":["import { useState } from 'react';\n\n/** The use boolean return type */\nexport type UseBooleanReturn = [\n /** The current boolean state value */\n value: boolean,\n /** Function to toggle the boolean state */\n toggle: (value?: boolean) => void\n];\n\n/**\n * @name useBoolean\n * @description - Hook provides opportunity to manage boolean state\n * @category State\n *\n * @param {boolean} [initialValue=false] The initial boolean value\n * @returns {UseBooleanReturn} An object containing the boolean state value and utility functions to manipulate the state\n *\n * @example\n * const [on, toggle] = useBoolean()\n */\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = useState(initialValue);\n const toggle = (value?: boolean) => setValue((prevValue) => value ?? !prevValue);\n\n return [value, toggle];\n};\n"],"names":["useBoolean","initialValue","value","setValue","useState","prevValue"],"mappings":";AAqBO,MAAMA,IAAa,CAACC,IAAe,OAA4B;AACpE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAASH,CAAY;AAG/C,SAAO,CAACC,GAFO,CAACA,MAAoBC,EAAS,CAACE,MAAcH,KAAS,CAACG,CAAS,CAE1D;AACvB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBrowserLanguage.mjs","sources":["../../../../src/hooks/useBrowserLanguage/useBrowserLanguage.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst getSnapshot = () => navigator.language;\nconst getServerSnapshot = () => 'undetermined';\nconst subscribe = (callback: () => void) => {\n window.addEventListener('languagechange', callback);\n return () => window.removeEventListener('languagechange', callback);\n};\n\n/**\n * @name useBrowserLanguage\n * @description - Hook that returns the current browser language\n * @category Browser\n *\n * @browserapi navigator.language https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language\n *\n * @returns {string} The current browser language\n *\n * @example\n * const browserLanguage = useBrowserLanguage();\n */\nexport const useBrowserLanguage = () =>\n useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n"],"names":["getSnapshot","getServerSnapshot","subscribe","callback","useBrowserLanguage","useSyncExternalStore"],"mappings":";AAEA,MAAMA,IAAc,MAAM,UAAU,UAC9BC,IAAoB,MAAM,gBAC1BC,IAAY,CAACC,OACjB,OAAO,iBAAiB,kBAAkBA,CAAQ,GAC3C,MAAM,OAAO,oBAAoB,kBAAkBA,CAAQ,IAevDC,IAAqB,MAChCC,EAAqBH,GAAWF,GAAaC,CAAiB;"}
1
+ {"version":3,"file":"useBrowserLanguage.mjs","sources":["../../../../src/hooks/useBrowserLanguage/useBrowserLanguage.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst getSnapshot = () => navigator.language;\nconst getServerSnapshot = () => 'undetermined';\nconst subscribe = (callback: () => void) => {\n window.addEventListener('languagechange', callback);\n return () => window.removeEventListener('languagechange', callback);\n};\n\n/**\n * @name useBrowserLanguage\n * @description - Hook that returns the current browser language\n * @category User\n *\n * @browserapi navigator.language https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language\n *\n * @returns {string} The current browser language\n *\n * @example\n * const browserLanguage = useBrowserLanguage();\n */\nexport const useBrowserLanguage = () =>\n useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n"],"names":["getSnapshot","getServerSnapshot","subscribe","callback","useBrowserLanguage","useSyncExternalStore"],"mappings":";AAEA,MAAMA,IAAc,MAAM,UAAU,UAC9BC,IAAoB,MAAM,gBAC1BC,IAAY,CAACC,OACjB,OAAO,iBAAiB,kBAAkBA,CAAQ,GAC3C,MAAM,OAAO,oBAAoB,kBAAkBA,CAAQ,IAevDC,IAAqB,MAChCC,EAAqBH,GAAWF,GAAaC,CAAiB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClickOutside.mjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport interface UseClickOutside {\n (target: HookTarget, callback: (event: Event) => void): void;\n\n <Target extends Element>(callback: (event: Event) => void, target?: never): StateRef<Target>;\n}\n\n/**\n * @name useClickOutside\n * @description - Hook to handle click events outside the specified target element(s)\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element(s) to detect outside clicks for\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {void}\n *\n * @example\n * useClickOutside(ref, () => console.log('click outside'));\n *\n * @overload\n * @template Target The target element(s)\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {(node: Target) => void} A React ref to attach to the target element\n *\n * @example\n * const ref = useClickOutside<HTMLDivElement>(() => console.log('click outside'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}\n */\nexport const useClickOutside = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (params[1] ? params[1] : params[0]) as (event: Event) => void;\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onClick = (event: Event) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (element && !element.contains(event.target as Node)) {\n internalCallbackRef.current(event);\n }\n };\n\n document.addEventListener('click', onClick);\n\n return () => {\n document.removeEventListener('click', onClick);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseClickOutside;\n"],"names":["useClickOutside","params","target","isTarget","callback","internalRef","useRefState","internalCallbackRef","useRef","useEffect","onClick","event","element","getElement"],"mappings":";;;;AAuCO,MAAMA,IAAmB,IAAIC,MAAkB;AACpD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYH,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE5CI,IAAcC,EAAA,GACdC,IAAsBC,EAAOJ,CAAQ;AAoB3C,MAnBAG,EAAoB,UAAUH,GAE9BK,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACG,EAAY,MAAO;AACnC,UAAMK,IAAU,CAACC,MAAiB;AAChC,YAAMC,IAAWV,IAASW,EAAWX,CAAM,IAAIG,EAAY;AAE3D,MAAIO,KAAW,CAACA,EAAQ,SAASD,EAAM,MAAc,KACnDJ,EAAoB,QAAQI,CAAK;AAAA,IACnC;AAGF,oBAAS,iBAAiB,SAASD,CAAO,GAEnC,MAAM;AACX,eAAS,oBAAoB,SAASA,CAAO;AAAA,IAAA;AAAA,EAC/C,GACC,CAACR,GAAQG,EAAY,KAAK,CAAC,GAE1B,CAAAH;AACJ,WAAOG;AACT;"}
1
+ {"version":3,"file":"useClickOutside.mjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport interface UseClickOutside {\n (target: HookTarget, callback: (event: Event) => void): void;\n\n <Target extends Element>(callback: (event: Event) => void, target?: never): StateRef<Target>;\n}\n\n/**\n * @name useClickOutside\n * @description - Hook to handle click events outside the specified target element(s)\n * @category Elements\n *\n * @overload\n * @param {HookTarget} target The target element(s) to detect outside clicks for\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {void}\n *\n * @example\n * useClickOutside(ref, () => console.log('click outside'));\n *\n * @overload\n * @template Target The target element(s)\n * @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected\n * @returns {(node: Target) => void} A React ref to attach to the target element\n *\n * @example\n * const ref = useClickOutside<HTMLDivElement>(() => console.log('click outside'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}\n */\nexport const useClickOutside = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (params[1] ? params[1] : params[0]) as (event: Event) => void;\n\n const internalRef = useRefState<Element>();\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const onClick = (event: Event) => {\n const element = (target ? getElement(target) : internalRef.current) as Element;\n\n if (element && !element.contains(event.target as Node)) {\n internalCallbackRef.current(event);\n }\n };\n\n document.addEventListener('click', onClick);\n\n return () => {\n document.removeEventListener('click', onClick);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseClickOutside;\n"],"names":["useClickOutside","params","target","isTarget","callback","internalRef","useRefState","internalCallbackRef","useRef","useEffect","onClick","event","element","getElement"],"mappings":";;;;AAuCO,MAAMA,IAAmB,IAAIC,MAAkB;AACpD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYH,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE5CI,IAAcC,EAAA,GACdC,IAAsBC,EAAOJ,CAAQ;AAoB3C,MAnBAG,EAAoB,UAAUH,GAE9BK,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACG,EAAY,MAAO;AACnC,UAAMK,IAAU,CAACC,MAAiB;AAChC,YAAMC,IAAWV,IAASW,EAAWX,CAAM,IAAIG,EAAY;AAE3D,MAAIO,KAAW,CAACA,EAAQ,SAASD,EAAM,MAAc,KACnDJ,EAAoB,QAAQI,CAAK;AAAA,IACnC;AAGF,oBAAS,iBAAiB,SAASD,CAAO,GAEnC,MAAM;AACX,eAAS,oBAAoB,SAASA,CAAO;AAAA,IAAA;AAAA,EAC/C,GACC,CAACR,GAAQG,EAAY,KAAK,CAAC,GAE1B,CAAAH;AACJ,WAAOG;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCookie.mjs","sources":["../../../../src/hooks/useCookie/useCookie.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const getCookies = () =>\n Object.fromEntries(\n document.cookie.split('; ').map((cookie) => {\n const [key, ...value] = cookie.split('=');\n const decodedValue = decodeURIComponent(value.join('='));\n return [key, decodedValue];\n })\n );\n\nexport interface RemoveCookieParams {\n domain?: string;\n expires?: Date;\n maxAge?: number;\n path?: string;\n sameSite?: 'Lax' | 'None' | 'Strict';\n secure?: boolean;\n}\n\nexport const removeCookie = (key: string, options: RemoveCookieParams = {}) => {\n document.cookie = `${encodeURIComponent(key)}=; expires=Thu, 01 Jan 1970 00:00:00 GMT${\n options.path ? `; path=${options.path}` : ''\n }${options.domain ? `; domain=${options.domain}` : ''}${\n options.maxAge ? `; max-age=0` : ''\n }${options.expires ? `; expires=Thu, 01 Jan 1970 00:00:00 GMT` : ''}${\n options.secure ? `; secure` : ''\n }${options.sameSite ? `; samesite=${options.sameSite}` : ''}`;\n};\n\nexport interface SetCookieParams {\n domain?: string;\n expires?: Date;\n httpOnly?: boolean;\n maxAge?: number;\n path?: string;\n sameSite?: 'Lax' | 'None' | 'Strict';\n secure?: boolean;\n}\n\nexport const setCookie = (key: string, value: string, options: SetCookieParams = {}) => {\n const cookie = [`${encodeURIComponent(key)}=${encodeURIComponent(value)}`];\n\n if (options.path) cookie.push(`path=${options.path}`);\n if (options.domain) cookie.push(`domain=${options.domain}`);\n if (typeof options.maxAge === 'number') cookie.push(`max-age=${options.maxAge}`);\n if (options.expires) cookie.push(`expires=${options.expires.toUTCString()}`);\n if (options.secure) cookie.push(`secure`);\n if (options.httpOnly) cookie.push(`httpOnly`);\n if (options.sameSite) cookie.push(`samesite=${options.sameSite}`);\n\n document.cookie = cookie.join('; ');\n};\n\n/* The use cookie initial value type */\nexport type UseCookieInitialValue<Value> = (() => Value) | Value;\n\n/* The use cookie options type */\nexport interface UseCookieOptions<Value> {\n /* The domain of the cookie */\n domain?: string;\n /* The expiration date of the cookie */\n expires?: Date;\n /* Whether the cookie is httpOnly */\n httpOnly?: boolean;\n /* The initial value of the storage */\n initialValue?: UseCookieInitialValue<Value>;\n /* The maximum age of the cookie */\n maxAge?: number;\n /* The path of the cookie */\n path?: string;\n /* The sameSite of the cookie */\n sameSite?: 'Lax' | 'None' | 'Strict';\n /* Whether the cookie is secure */\n secure?: boolean;\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value;\n /* The serializer function to be invoked */\n serializer?: (value: Value) => string;\n}\n\n/* The use cookie return type */\nexport interface UseCookieReturn<Value> {\n /* The value of the cookie */\n value: Value;\n /* The remove function */\n remove: (options?: RemoveCookieParams) => void;\n /* The set function */\n set: (value: Value, options?: SetCookieParams) => void;\n}\n\nexport const COOKIE_EVENT = 'reactuse-cookie';\n\nexport const dispatchCookieEvent = () => window.dispatchEvent(new Event(COOKIE_EVENT));\n\nexport const setCookieItem = (key: string, value: string, options?: SetCookieParams) => {\n setCookie(key, value, options);\n dispatchCookieEvent();\n};\n\nexport const removeCookieItem = (key: string, options?: RemoveCookieParams) => {\n removeCookie(key, options);\n dispatchCookieEvent();\n};\n\nexport const getCookie = (key: string): string | undefined => {\n const cookies = getCookies();\n return cookies[key];\n};\n\nexport interface UseCookie {\n <Value>(\n key: string,\n options: UseCookieOptions<Value> & {\n initialValue: UseCookieInitialValue<Value>;\n }\n ): UseCookieReturn<Value>;\n\n <Value>(key: string, options?: UseCookieOptions<Value>): UseCookieReturn<Value | undefined>;\n\n <Value>(key: string, initialValue: UseCookieInitialValue<Value>): UseCookieReturn<Value>;\n\n <Value>(key: string): UseCookieReturn<Value | undefined>;\n}\n\n/**\n * @name useCookie\n * @description - Hook that manages cookie value\n * @category Browser\n *\n * @overload\n * @template Value The type of the cookie value\n * @param {string} key The key of the cookie\n * @param {UseCookieInitialValue<Value>} [initialValue] The initial value of the cookie\n * @returns {UseCookieReturn<Value>} The value and the set function\n *\n * @overload\n * @template Value The type of the cookie value\n * @param {string} key The key of the cookie\n * @param {UseCookieOptions<Value>} options The options object\n * @param {UseCookieInitialValue<Value>} [options.initialValue] The initial value of the cookie\n * @param {(value: string) => Value} [options.deserializer] The deserializer function to be invoked\n * @param {(value: Value) => string} [options.serializer] The serializer function to be invoked\n * @returns {UseCookieReturn<Value | undefined>} The value and the set function\n *\n * @example\n * const { value, set, remove } = useCookie('key', 'value');\n */\nexport const useCookie = (<Value>(key: string, params?: any) => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params || 'deserializer' in params || 'initialValue' in params)\n ? params\n : undefined\n ) as UseCookieOptions<Value>;\n const initialValue = (options ? options?.initialValue : params) as UseCookieInitialValue<Value>;\n\n if (typeof document === 'undefined')\n return {\n value: typeof initialValue === 'function' ? (initialValue as () => Value)() : initialValue\n } as UseCookieReturn<Value>;\n\n const serializer = (value: Value) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value;\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value;\n }\n };\n\n const [value, setValue] = useState<Value | undefined>(() => {\n const cookieValue = getCookie(key);\n if (cookieValue === undefined && initialValue !== undefined) {\n const value =\n typeof initialValue === 'function' ? (initialValue as () => Value)() : initialValue;\n setCookieItem(key, serializer(value), options);\n return value;\n }\n return cookieValue ? deserializer(cookieValue) : undefined;\n });\n\n useEffect(() => {\n const onChange = () => {\n const cookieValue = getCookie(key);\n setValue(cookieValue ? deserializer(cookieValue) : undefined);\n };\n window.addEventListener(COOKIE_EVENT, onChange);\n return () => window.removeEventListener(COOKIE_EVENT, onChange);\n }, [key]);\n\n const set = (value: Value, params?: SetCookieParams) =>\n setCookieItem(key, serializer(value), { ...options, ...params });\n const remove = (params?: RemoveCookieParams) => removeCookieItem(key, { ...options, ...params });\n\n return { value, set, remove };\n}) as UseCookie;\n"],"names":["getCookies","cookie","key","value","decodedValue","removeCookie","options","setCookie","COOKIE_EVENT","dispatchCookieEvent","setCookieItem","removeCookieItem","getCookie","useCookie","params","initialValue","serializer","deserializer","setValue","useState","cookieValue","useEffect","onChange"],"mappings":";AAEO,MAAMA,IAAa,MACxB,OAAO;AAAA,EACL,SAAS,OAAO,MAAM,IAAI,EAAE,IAAI,CAACC,MAAW;AAC1C,UAAM,CAACC,GAAK,GAAGC,CAAK,IAAIF,EAAO,MAAM,GAAG,GAClCG,IAAe,mBAAmBD,EAAM,KAAK,GAAG,CAAC;AACvD,WAAO,CAACD,GAAKE,CAAY;AAAA,EAAA,CAC1B;AACH,GAWWC,IAAe,CAACH,GAAaI,IAA8B,OAAO;AAC7E,WAAS,SAAS,GAAG,mBAAmBJ,CAAG,CAAC,2CAC1CI,EAAQ,OAAO,UAAUA,EAAQ,IAAI,KAAK,EAC5C,GAAGA,EAAQ,SAAS,YAAYA,EAAQ,MAAM,KAAK,EAAE,GACnDA,EAAQ,SAAS,gBAAgB,EACnC,GAAGA,EAAQ,UAAU,4CAA4C,EAAE,GACjEA,EAAQ,SAAS,aAAa,EAChC,GAAGA,EAAQ,WAAW,cAAcA,EAAQ,QAAQ,KAAK,EAAE;AAC7D,GAYaC,IAAY,CAACL,GAAaC,GAAeG,IAA2B,CAAA,MAAO;AACtF,QAAML,IAAS,CAAC,GAAG,mBAAmBC,CAAG,CAAC,IAAI,mBAAmBC,CAAK,CAAC,EAAE;AAEzE,EAAIG,EAAQ,QAAML,EAAO,KAAK,QAAQK,EAAQ,IAAI,EAAE,GAChDA,EAAQ,UAAQL,EAAO,KAAK,UAAUK,EAAQ,MAAM,EAAE,GACtD,OAAOA,EAAQ,UAAW,cAAiB,KAAK,WAAWA,EAAQ,MAAM,EAAE,GAC3EA,EAAQ,WAASL,EAAO,KAAK,WAAWK,EAAQ,QAAQ,YAAA,CAAa,EAAE,GACvEA,EAAQ,UAAQL,EAAO,KAAK,QAAQ,GACpCK,EAAQ,YAAUL,EAAO,KAAK,UAAU,GACxCK,EAAQ,YAAUL,EAAO,KAAK,YAAYK,EAAQ,QAAQ,EAAE,GAEhE,SAAS,SAASL,EAAO,KAAK,IAAI;AACpC,GAuCaO,IAAe,mBAEfC,IAAsB,MAAM,OAAO,cAAc,IAAI,MAAMD,CAAY,CAAC,GAExEE,IAAgB,CAACR,GAAaC,GAAeG,MAA8B;AACtF,EAAAC,EAAUL,GAAKC,GAAOG,CAAO,GAC7BG,EAAA;AACF,GAEaE,IAAmB,CAACT,GAAaI,MAAiC;AAC7E,EAAAD,EAAaH,GAAKI,CAAO,GACzBG,EAAA;AACF,GAEaG,IAAY,CAACV,MACRF,EAAA,EACDE,CAAG,GAyCPW,IAAa,CAAQX,GAAaY,MAAiB;AAC9D,QAAMR,IACJ,OAAOQ,KAAW,YAClBA,MACC,gBAAgBA,KAAU,kBAAkBA,KAAU,kBAAkBA,KACrEA,IACA,QAEAC,IAAgBT,IAAUA,GAAS,eAAeQ;AAExD,MAAI,OAAO,WAAa;AACtB,WAAO;AAAA,MACL,OAAO,OAAOC,KAAiB,aAAcA,MAAiCA;AAAA,IAAA;AAGlF,QAAMC,IAAa,CAACb,MACdG,GAAS,aAAmBA,EAAQ,WAAWH,CAAK,IACpD,OAAOA,KAAU,WAAiBA,IAC/B,KAAK,UAAUA,CAAK,GAGvBc,IAAe,CAACd,MAAkB;AACtC,QAAIG,GAAS,aAAc,QAAOA,EAAQ,aAAaH,CAAK;AAC5D,QAAIA,MAAU;AAEd,UAAI;AACF,eAAO,KAAK,MAAMA,CAAK;AAAA,MAAA,QACjB;AACN,eAAOA;AAAAA,MAAA;AAAA,EACT,GAGI,CAACA,GAAOe,CAAQ,IAAIC,EAA4B,MAAM;AAC1D,UAAMC,IAAcR,EAAUV,CAAG;AACjC,QAAIkB,MAAgB,UAAaL,MAAiB,QAAW;AAC3D,YAAMZ,IACJ,OAAOY,KAAiB,aAAcA,MAAiCA;AACzE,aAAAL,EAAcR,GAAKc,EAAWb,CAAK,GAAGG,CAAO,GACtCH;AAAAA,IAAA;AAET,WAAOiB,IAAcH,EAAaG,CAAW,IAAI;AAAA,EAAA,CAClD;AAED,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAW,MAAM;AACrB,YAAMF,IAAcR,EAAUV,CAAG;AACjC,MAAAgB,EAASE,IAAcH,EAAaG,CAAW,IAAI,MAAS;AAAA,IAAA;AAE9D,kBAAO,iBAAiBZ,GAAcc,CAAQ,GACvC,MAAM,OAAO,oBAAoBd,GAAcc,CAAQ;AAAA,EAAA,GAC7D,CAACpB,CAAG,CAAC,GAMD,EAAE,OAAAC,GAAO,KAJJ,CAACA,GAAcW,MACzBJ,EAAcR,GAAKc,EAAWb,CAAK,GAAG,EAAE,GAAGG,GAAS,GAAGQ,GAAQ,GAG5C,QAFN,CAACA,MAAgCH,EAAiBT,GAAK,EAAE,GAAGI,GAAS,GAAGQ,GAAQ,EAE1E;AACvB;"}
1
+ {"version":3,"file":"useCookie.mjs","sources":["../../../../src/hooks/useCookie/useCookie.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const getCookies = () =>\n Object.fromEntries(\n document.cookie.split('; ').map((cookie) => {\n const [key, ...value] = cookie.split('=');\n const decodedValue = decodeURIComponent(value.join('='));\n return [key, decodedValue];\n })\n );\n\nexport interface RemoveCookieParams {\n domain?: string;\n expires?: Date;\n maxAge?: number;\n path?: string;\n sameSite?: 'Lax' | 'None' | 'Strict';\n secure?: boolean;\n}\n\nexport const removeCookie = (key: string, options: RemoveCookieParams = {}) => {\n document.cookie = `${encodeURIComponent(key)}=; expires=Thu, 01 Jan 1970 00:00:00 GMT${\n options.path ? `; path=${options.path}` : ''\n }${options.domain ? `; domain=${options.domain}` : ''}${\n options.maxAge ? `; max-age=0` : ''\n }${options.expires ? `; expires=Thu, 01 Jan 1970 00:00:00 GMT` : ''}${\n options.secure ? `; secure` : ''\n }${options.sameSite ? `; samesite=${options.sameSite}` : ''}`;\n};\n\nexport interface SetCookieParams {\n domain?: string;\n expires?: Date;\n httpOnly?: boolean;\n maxAge?: number;\n path?: string;\n sameSite?: 'Lax' | 'None' | 'Strict';\n secure?: boolean;\n}\n\nexport const setCookie = (key: string, value: string, options: SetCookieParams = {}) => {\n const cookie = [`${encodeURIComponent(key)}=${encodeURIComponent(value)}`];\n\n if (options.path) cookie.push(`path=${options.path}`);\n if (options.domain) cookie.push(`domain=${options.domain}`);\n if (typeof options.maxAge === 'number') cookie.push(`max-age=${options.maxAge}`);\n if (options.expires) cookie.push(`expires=${options.expires.toUTCString()}`);\n if (options.secure) cookie.push(`secure`);\n if (options.httpOnly) cookie.push(`httpOnly`);\n if (options.sameSite) cookie.push(`samesite=${options.sameSite}`);\n\n document.cookie = cookie.join('; ');\n};\n\n/* The use cookie initial value type */\nexport type UseCookieInitialValue<Value> = (() => Value) | Value;\n\n/* The use cookie options type */\nexport interface UseCookieOptions<Value> {\n /* The domain of the cookie */\n domain?: string;\n /* The expiration date of the cookie */\n expires?: Date;\n /* Whether the cookie is httpOnly */\n httpOnly?: boolean;\n /* The initial value of the storage */\n initialValue?: UseCookieInitialValue<Value>;\n /* The maximum age of the cookie */\n maxAge?: number;\n /* The path of the cookie */\n path?: string;\n /* The sameSite of the cookie */\n sameSite?: 'Lax' | 'None' | 'Strict';\n /* Whether the cookie is secure */\n secure?: boolean;\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value;\n /* The serializer function to be invoked */\n serializer?: (value: Value) => string;\n}\n\n/* The use cookie return type */\nexport interface UseCookieReturn<Value> {\n /* The value of the cookie */\n value: Value;\n /* The remove function */\n remove: (options?: RemoveCookieParams) => void;\n /* The set function */\n set: (value: Value, options?: SetCookieParams) => void;\n}\n\nexport const COOKIE_EVENT = 'reactuse-cookie';\n\nexport const dispatchCookieEvent = () => window.dispatchEvent(new Event(COOKIE_EVENT));\n\nexport const setCookieItem = (key: string, value: string, options?: SetCookieParams) => {\n setCookie(key, value, options);\n dispatchCookieEvent();\n};\n\nexport const removeCookieItem = (key: string, options?: RemoveCookieParams) => {\n removeCookie(key, options);\n dispatchCookieEvent();\n};\n\nexport const getCookie = (key: string): string | undefined => {\n const cookies = getCookies();\n return cookies[key];\n};\n\nexport interface UseCookie {\n <Value>(\n key: string,\n options: UseCookieOptions<Value> & {\n initialValue: UseCookieInitialValue<Value>;\n }\n ): UseCookieReturn<Value>;\n\n <Value>(key: string, options?: UseCookieOptions<Value>): UseCookieReturn<Value | undefined>;\n\n <Value>(key: string, initialValue: UseCookieInitialValue<Value>): UseCookieReturn<Value>;\n\n <Value>(key: string): UseCookieReturn<Value | undefined>;\n}\n\n/**\n * @name useCookie\n * @description - Hook that manages cookie value\n * @category State\n *\n * @overload\n * @template Value The type of the cookie value\n * @param {string} key The key of the cookie\n * @param {UseCookieInitialValue<Value>} [initialValue] The initial value of the cookie\n * @returns {UseCookieReturn<Value>} The value and the set function\n *\n * @overload\n * @template Value The type of the cookie value\n * @param {string} key The key of the cookie\n * @param {UseCookieOptions<Value>} options The options object\n * @param {UseCookieInitialValue<Value>} [options.initialValue] The initial value of the cookie\n * @param {(value: string) => Value} [options.deserializer] The deserializer function to be invoked\n * @param {(value: Value) => string} [options.serializer] The serializer function to be invoked\n * @returns {UseCookieReturn<Value | undefined>} The value and the set function\n *\n * @example\n * const { value, set, remove } = useCookie('key', 'value');\n */\nexport const useCookie = (<Value>(key: string, params?: any) => {\n const options = (\n typeof params === 'object' &&\n params &&\n ('serializer' in params || 'deserializer' in params || 'initialValue' in params)\n ? params\n : undefined\n ) as UseCookieOptions<Value>;\n const initialValue = (options ? options?.initialValue : params) as UseCookieInitialValue<Value>;\n\n if (typeof document === 'undefined')\n return {\n value: typeof initialValue === 'function' ? (initialValue as () => Value)() : initialValue\n } as UseCookieReturn<Value>;\n\n const serializer = (value: Value) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value;\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value;\n }\n };\n\n const [value, setValue] = useState<Value | undefined>(() => {\n const cookieValue = getCookie(key);\n if (cookieValue === undefined && initialValue !== undefined) {\n const value =\n typeof initialValue === 'function' ? (initialValue as () => Value)() : initialValue;\n setCookieItem(key, serializer(value), options);\n return value;\n }\n return cookieValue ? deserializer(cookieValue) : undefined;\n });\n\n useEffect(() => {\n const onChange = () => {\n const cookieValue = getCookie(key);\n setValue(cookieValue ? deserializer(cookieValue) : undefined);\n };\n window.addEventListener(COOKIE_EVENT, onChange);\n return () => window.removeEventListener(COOKIE_EVENT, onChange);\n }, [key]);\n\n const set = (value: Value, params?: SetCookieParams) =>\n setCookieItem(key, serializer(value), { ...options, ...params });\n const remove = (params?: RemoveCookieParams) => removeCookieItem(key, { ...options, ...params });\n\n return { value, set, remove };\n}) as UseCookie;\n"],"names":["getCookies","cookie","key","value","decodedValue","removeCookie","options","setCookie","COOKIE_EVENT","dispatchCookieEvent","setCookieItem","removeCookieItem","getCookie","useCookie","params","initialValue","serializer","deserializer","setValue","useState","cookieValue","useEffect","onChange"],"mappings":";AAEO,MAAMA,IAAa,MACxB,OAAO;AAAA,EACL,SAAS,OAAO,MAAM,IAAI,EAAE,IAAI,CAACC,MAAW;AAC1C,UAAM,CAACC,GAAK,GAAGC,CAAK,IAAIF,EAAO,MAAM,GAAG,GAClCG,IAAe,mBAAmBD,EAAM,KAAK,GAAG,CAAC;AACvD,WAAO,CAACD,GAAKE,CAAY;AAAA,EAAA,CAC1B;AACH,GAWWC,IAAe,CAACH,GAAaI,IAA8B,OAAO;AAC7E,WAAS,SAAS,GAAG,mBAAmBJ,CAAG,CAAC,2CAC1CI,EAAQ,OAAO,UAAUA,EAAQ,IAAI,KAAK,EAC5C,GAAGA,EAAQ,SAAS,YAAYA,EAAQ,MAAM,KAAK,EAAE,GACnDA,EAAQ,SAAS,gBAAgB,EACnC,GAAGA,EAAQ,UAAU,4CAA4C,EAAE,GACjEA,EAAQ,SAAS,aAAa,EAChC,GAAGA,EAAQ,WAAW,cAAcA,EAAQ,QAAQ,KAAK,EAAE;AAC7D,GAYaC,IAAY,CAACL,GAAaC,GAAeG,IAA2B,CAAA,MAAO;AACtF,QAAML,IAAS,CAAC,GAAG,mBAAmBC,CAAG,CAAC,IAAI,mBAAmBC,CAAK,CAAC,EAAE;AAEzE,EAAIG,EAAQ,QAAML,EAAO,KAAK,QAAQK,EAAQ,IAAI,EAAE,GAChDA,EAAQ,UAAQL,EAAO,KAAK,UAAUK,EAAQ,MAAM,EAAE,GACtD,OAAOA,EAAQ,UAAW,cAAiB,KAAK,WAAWA,EAAQ,MAAM,EAAE,GAC3EA,EAAQ,WAASL,EAAO,KAAK,WAAWK,EAAQ,QAAQ,YAAA,CAAa,EAAE,GACvEA,EAAQ,UAAQL,EAAO,KAAK,QAAQ,GACpCK,EAAQ,YAAUL,EAAO,KAAK,UAAU,GACxCK,EAAQ,YAAUL,EAAO,KAAK,YAAYK,EAAQ,QAAQ,EAAE,GAEhE,SAAS,SAASL,EAAO,KAAK,IAAI;AACpC,GAuCaO,IAAe,mBAEfC,IAAsB,MAAM,OAAO,cAAc,IAAI,MAAMD,CAAY,CAAC,GAExEE,IAAgB,CAACR,GAAaC,GAAeG,MAA8B;AACtF,EAAAC,EAAUL,GAAKC,GAAOG,CAAO,GAC7BG,EAAA;AACF,GAEaE,IAAmB,CAACT,GAAaI,MAAiC;AAC7E,EAAAD,EAAaH,GAAKI,CAAO,GACzBG,EAAA;AACF,GAEaG,IAAY,CAACV,MACRF,EAAA,EACDE,CAAG,GAyCPW,IAAa,CAAQX,GAAaY,MAAiB;AAC9D,QAAMR,IACJ,OAAOQ,KAAW,YAClBA,MACC,gBAAgBA,KAAU,kBAAkBA,KAAU,kBAAkBA,KACrEA,IACA,QAEAC,IAAgBT,IAAUA,GAAS,eAAeQ;AAExD,MAAI,OAAO,WAAa;AACtB,WAAO;AAAA,MACL,OAAO,OAAOC,KAAiB,aAAcA,MAAiCA;AAAA,IAAA;AAGlF,QAAMC,IAAa,CAACb,MACdG,GAAS,aAAmBA,EAAQ,WAAWH,CAAK,IACpD,OAAOA,KAAU,WAAiBA,IAC/B,KAAK,UAAUA,CAAK,GAGvBc,IAAe,CAACd,MAAkB;AACtC,QAAIG,GAAS,aAAc,QAAOA,EAAQ,aAAaH,CAAK;AAC5D,QAAIA,MAAU;AAEd,UAAI;AACF,eAAO,KAAK,MAAMA,CAAK;AAAA,MAAA,QACjB;AACN,eAAOA;AAAAA,MAAA;AAAA,EACT,GAGI,CAACA,GAAOe,CAAQ,IAAIC,EAA4B,MAAM;AAC1D,UAAMC,IAAcR,EAAUV,CAAG;AACjC,QAAIkB,MAAgB,UAAaL,MAAiB,QAAW;AAC3D,YAAMZ,IACJ,OAAOY,KAAiB,aAAcA,MAAiCA;AACzE,aAAAL,EAAcR,GAAKc,EAAWb,CAAK,GAAGG,CAAO,GACtCH;AAAAA,IAAA;AAET,WAAOiB,IAAcH,EAAaG,CAAW,IAAI;AAAA,EAAA,CAClD;AAED,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAW,MAAM;AACrB,YAAMF,IAAcR,EAAUV,CAAG;AACjC,MAAAgB,EAASE,IAAcH,EAAaG,CAAW,IAAI,MAAS;AAAA,IAAA;AAE9D,kBAAO,iBAAiBZ,GAAcc,CAAQ,GACvC,MAAM,OAAO,oBAAoBd,GAAcc,CAAQ;AAAA,EAAA,GAC7D,CAACpB,CAAG,CAAC,GAMD,EAAE,OAAAC,GAAO,KAJJ,CAACA,GAAcW,MACzBJ,EAAcR,GAAKc,EAAWb,CAAK,GAAG,EAAE,GAAGG,GAAS,GAAGQ,GAAQ,GAG5C,QAFN,CAACA,MAAgCH,EAAiBT,GAAK,EAAE,GAAGI,GAAS,GAAGQ,GAAQ,EAE1E;AACvB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCookies.mjs","sources":["../../../../src/hooks/useCookies/useCookies.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { RemoveCookieParams, SetCookieParams } from '../useCookie/useCookie';\n\nimport {\n COOKIE_EVENT,\n dispatchCookieEvent,\n removeCookie,\n removeCookieItem,\n setCookieItem\n} from '../useCookie/useCookie';\n\n/** The cookies params type */\nexport type CookieParams = Record<string, any>;\n\n/* The use cookies options type */\nexport interface UseCookiesOptions<Value> {\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value[keyof Value];\n /* The serializer function to be invoked */\n serializer?: (value: Value[keyof Value]) => string;\n}\n\nexport const clearCookies = () => {\n document.cookie.split('; ').forEach((cookie) => {\n const [name] = cookie.split('=');\n removeCookie(name);\n });\n};\n\nconst clearCookieItems = () => {\n clearCookies();\n dispatchCookieEvent();\n};\n\n/**\n * @name useCookies\n * @description - Hook that manages cookie values\n * @category Browser\n *\n * @overload\n * @template {object} Value The type of the cookie values\n * @returns {UseCookieReturn<Value>} The value and the set function\n *\n * @example\n * const { value, set, remove, getAll, clear } = useCookies();\n */\nexport const useCookies = <Value extends CookieParams>(options?: UseCookiesOptions<Value>) => {\n const serializer = (value: Value[keyof Value]) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value[keyof Value];\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value[keyof Value];\n }\n };\n\n const getParsedCookies = () => {\n if (!document.cookie) return {};\n\n return Object.fromEntries(\n document.cookie\n .split('; ')\n .map((cookie) => {\n const [key, ...value] = cookie.split('=');\n if (!key || !value.length) return [];\n const decodedValue = decodeURIComponent(value.join('='));\n return [key, deserializer(decodedValue)];\n })\n .filter((entry) => entry.length)\n );\n };\n\n const [value, setValue] = useState(() => {\n if (typeof window === 'undefined') return {} as Value;\n return getParsedCookies() as Value;\n });\n\n useEffect(() => {\n const onChange = () => setValue(getParsedCookies() as Value);\n\n window.addEventListener(COOKIE_EVENT, onChange);\n return () => {\n window.removeEventListener(COOKIE_EVENT, onChange);\n };\n }, []);\n\n const set = <Key extends keyof Value>(key: Key, value: Value[Key], options?: SetCookieParams) =>\n setCookieItem(key as string, serializer(value), options);\n\n const remove = <Key extends keyof Value>(key: Key, options?: RemoveCookieParams) =>\n removeCookieItem(key as string, options);\n const getAll = () => getParsedCookies();\n const clear = () => clearCookieItems();\n\n return { value, set, remove, getAll, clear };\n};\n"],"names":["clearCookies","cookie","name","removeCookie","clearCookieItems","dispatchCookieEvent","useCookies","options","serializer","value","deserializer","getParsedCookies","key","decodedValue","entry","setValue","useState","useEffect","onChange","COOKIE_EVENT","setCookieItem","removeCookieItem"],"mappings":";;AAuBO,MAAMA,IAAe,MAAM;AAChC,WAAS,OAAO,MAAM,IAAI,EAAE,QAAQ,CAACC,MAAW;AAC9C,UAAM,CAACC,CAAI,IAAID,EAAO,MAAM,GAAG;AAC/B,IAAAE,EAAaD,CAAI;AAAA,EAAA,CAClB;AACH,GAEME,IAAmB,MAAM;AAC7B,EAAAJ,EAAA,GACAK,EAAA;AACF,GAcaC,IAAa,CAA6BC,MAAuC;AAC5F,QAAMC,IAAa,CAACC,MACdF,GAAS,aAAmBA,EAAQ,WAAWE,CAAK,IACpD,OAAOA,KAAU,WAAiBA,IAC/B,KAAK,UAAUA,CAAK,GAGvBC,IAAe,CAACD,MAAkB;AACtC,QAAIF,GAAS,aAAc,QAAOA,EAAQ,aAAaE,CAAK;AAC5D,QAAIA,MAAU;AAEd,UAAI;AACF,eAAO,KAAK,MAAMA,CAAK;AAAA,MAAA,QACjB;AACN,eAAOA;AAAAA,MAAA;AAAA,EACT,GAGIE,IAAmB,MAClB,SAAS,SAEP,OAAO;AAAA,IACZ,SAAS,OACN,MAAM,IAAI,EACV,IAAI,CAACV,MAAW;AACf,YAAM,CAACW,GAAK,GAAGH,CAAK,IAAIR,EAAO,MAAM,GAAG;AACxC,UAAI,CAACW,KAAO,CAACH,EAAM,eAAe,CAAA;AAClC,YAAMI,IAAe,mBAAmBJ,EAAM,KAAK,GAAG,CAAC;AACvD,aAAO,CAACG,GAAKF,EAAaG,CAAY,CAAC;AAAA,IAAA,CACxC,EACA,OAAO,CAACC,MAAUA,EAAM,MAAM;AAAA,EAAA,IAXN,CAAA,GAezB,CAACL,GAAOM,CAAQ,IAAIC,EAAS,MAC7B,OAAO,SAAW,MAAoB,CAAA,IACnCL,EAAA,CACR;AAED,SAAAM,EAAU,MAAM;AACd,UAAMC,IAAW,MAAMH,EAASJ,GAA2B;AAE3D,kBAAO,iBAAiBQ,GAAcD,CAAQ,GACvC,MAAM;AACX,aAAO,oBAAoBC,GAAcD,CAAQ;AAAA,IAAA;AAAA,EACnD,GACC,EAAE,GAUE,EAAE,OAAAT,GAAO,KARJ,CAA0BG,GAAUH,GAAmBF,MACjEa,EAAcR,GAAeJ,EAAWC,CAAK,GAAGF,CAAO,GAOpC,QALN,CAA0BK,GAAUL,MACjDc,EAAiBT,GAAeL,CAAO,GAIZ,QAHd,MAAMI,EAAA,GAGgB,OAFvB,MAAMP,EAAA,EAEiB;AACvC;"}
1
+ {"version":3,"file":"useCookies.mjs","sources":["../../../../src/hooks/useCookies/useCookies.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { RemoveCookieParams, SetCookieParams } from '../useCookie/useCookie';\n\nimport {\n COOKIE_EVENT,\n dispatchCookieEvent,\n removeCookie,\n removeCookieItem,\n setCookieItem\n} from '../useCookie/useCookie';\n\n/** The cookies params type */\nexport type CookieParams = Record<string, any>;\n\n/* The use cookies options type */\nexport interface UseCookiesOptions<Value> {\n /* The deserializer function to be invoked */\n deserializer?: (value: string) => Value[keyof Value];\n /* The serializer function to be invoked */\n serializer?: (value: Value[keyof Value]) => string;\n}\n\nexport const clearCookies = () => {\n document.cookie.split('; ').forEach((cookie) => {\n const [name] = cookie.split('=');\n removeCookie(name);\n });\n};\n\nconst clearCookieItems = () => {\n clearCookies();\n dispatchCookieEvent();\n};\n\n/**\n * @name useCookies\n * @description - Hook that manages cookie values\n * @category State\n *\n * @overload\n * @template {object} Value The type of the cookie values\n * @returns {UseCookieReturn<Value>} The value and the set function\n *\n * @example\n * const { value, set, remove, getAll, clear } = useCookies();\n */\nexport const useCookies = <Value extends CookieParams>(options?: UseCookiesOptions<Value>) => {\n const serializer = (value: Value[keyof Value]) => {\n if (options?.serializer) return options.serializer(value);\n if (typeof value === 'string') return value;\n return JSON.stringify(value);\n };\n\n const deserializer = (value: string) => {\n if (options?.deserializer) return options.deserializer(value);\n if (value === 'undefined') return undefined as unknown as Value[keyof Value];\n\n try {\n return JSON.parse(value) as Value;\n } catch {\n return value as Value[keyof Value];\n }\n };\n\n const getParsedCookies = () => {\n if (!document.cookie) return {};\n\n return Object.fromEntries(\n document.cookie\n .split('; ')\n .map((cookie) => {\n const [key, ...value] = cookie.split('=');\n if (!key || !value.length) return [];\n const decodedValue = decodeURIComponent(value.join('='));\n return [key, deserializer(decodedValue)];\n })\n .filter((entry) => entry.length)\n );\n };\n\n const [value, setValue] = useState(() => {\n if (typeof window === 'undefined') return {} as Value;\n return getParsedCookies() as Value;\n });\n\n useEffect(() => {\n const onChange = () => setValue(getParsedCookies() as Value);\n\n window.addEventListener(COOKIE_EVENT, onChange);\n return () => {\n window.removeEventListener(COOKIE_EVENT, onChange);\n };\n }, []);\n\n const set = <Key extends keyof Value>(key: Key, value: Value[Key], options?: SetCookieParams) =>\n setCookieItem(key as string, serializer(value), options);\n\n const remove = <Key extends keyof Value>(key: Key, options?: RemoveCookieParams) =>\n removeCookieItem(key as string, options);\n const getAll = () => getParsedCookies();\n const clear = () => clearCookieItems();\n\n return { value, set, remove, getAll, clear };\n};\n"],"names":["clearCookies","cookie","name","removeCookie","clearCookieItems","dispatchCookieEvent","useCookies","options","serializer","value","deserializer","getParsedCookies","key","decodedValue","entry","setValue","useState","useEffect","onChange","COOKIE_EVENT","setCookieItem","removeCookieItem"],"mappings":";;AAuBO,MAAMA,IAAe,MAAM;AAChC,WAAS,OAAO,MAAM,IAAI,EAAE,QAAQ,CAACC,MAAW;AAC9C,UAAM,CAACC,CAAI,IAAID,EAAO,MAAM,GAAG;AAC/B,IAAAE,EAAaD,CAAI;AAAA,EAAA,CAClB;AACH,GAEME,IAAmB,MAAM;AAC7B,EAAAJ,EAAA,GACAK,EAAA;AACF,GAcaC,IAAa,CAA6BC,MAAuC;AAC5F,QAAMC,IAAa,CAACC,MACdF,GAAS,aAAmBA,EAAQ,WAAWE,CAAK,IACpD,OAAOA,KAAU,WAAiBA,IAC/B,KAAK,UAAUA,CAAK,GAGvBC,IAAe,CAACD,MAAkB;AACtC,QAAIF,GAAS,aAAc,QAAOA,EAAQ,aAAaE,CAAK;AAC5D,QAAIA,MAAU;AAEd,UAAI;AACF,eAAO,KAAK,MAAMA,CAAK;AAAA,MAAA,QACjB;AACN,eAAOA;AAAAA,MAAA;AAAA,EACT,GAGIE,IAAmB,MAClB,SAAS,SAEP,OAAO;AAAA,IACZ,SAAS,OACN,MAAM,IAAI,EACV,IAAI,CAACV,MAAW;AACf,YAAM,CAACW,GAAK,GAAGH,CAAK,IAAIR,EAAO,MAAM,GAAG;AACxC,UAAI,CAACW,KAAO,CAACH,EAAM,eAAe,CAAA;AAClC,YAAMI,IAAe,mBAAmBJ,EAAM,KAAK,GAAG,CAAC;AACvD,aAAO,CAACG,GAAKF,EAAaG,CAAY,CAAC;AAAA,IAAA,CACxC,EACA,OAAO,CAACC,MAAUA,EAAM,MAAM;AAAA,EAAA,IAXN,CAAA,GAezB,CAACL,GAAOM,CAAQ,IAAIC,EAAS,MAC7B,OAAO,SAAW,MAAoB,CAAA,IACnCL,EAAA,CACR;AAED,SAAAM,EAAU,MAAM;AACd,UAAMC,IAAW,MAAMH,EAASJ,GAA2B;AAE3D,kBAAO,iBAAiBQ,GAAcD,CAAQ,GACvC,MAAM;AACX,aAAO,oBAAoBC,GAAcD,CAAQ;AAAA,IAAA;AAAA,EACnD,GACC,EAAE,GAUE,EAAE,OAAAT,GAAO,KARJ,CAA0BG,GAAUH,GAAmBF,MACjEa,EAAcR,GAAeJ,EAAWC,CAAK,GAAGF,CAAO,GAOpC,QALN,CAA0BK,GAAUL,MACjDc,EAAiBT,GAAeL,CAAO,GAIZ,QAHd,MAAMI,EAAA,GAGgB,OAFvB,MAAMP,EAAA,EAEiB;AACvC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCounter.mjs","sources":["../../../../src/hooks/useCounter/useCounter.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\n\nimport { useState } from 'react';\n\n/** The use counter options */\nexport interface UseCounterOptions {\n /** The max of count value */\n max?: number;\n /** The min of count value */\n min?: number;\n}\n\n/** The use counter return type */\nexport interface UseCounterReturn {\n /** Function to set a specific value to the counter */\n set: Dispatch<SetStateAction<number>>;\n /** The current count value */\n value: number;\n /** Function to decrement the counter */\n dec: (value?: number) => void;\n /** Function to increment the counter */\n inc: (value?: number) => void;\n /** Function to reset the counter to its initial value. */\n reset: () => void;\n}\n\nexport interface UseCounter {\n (initialValue?: number, options?: UseCounterOptions): UseCounterReturn;\n\n (options: UseCounterOptions & { initialValue?: number }, initialValue?: never): UseCounterReturn;\n}\n\n/**\n * @name useCounter\n * @description - Hook that manages a counter\n * @category Utilities\n *\n * @overload\n * @param {number} [initialValue=0] The initial number value\n * @param {number} [options.min=Number.NEGATIVE_INFINITY] The min of count value\n * @param {number} [options.max=Number.POSITIVE_INFINITY] The max of count value\n * @returns {UseCounterReturn} An object containing the current count and functions to interact with the counter\n\n * @overload\n * @param {number} [params.initialValue=0] The initial number value\n * @param {number} [params.min=Number.NEGATIVE_INFINITY] The min of count value\n * @param {number} [params.max=Number.POSITIVE_INFINITY] The max of count value\n * @returns {UseCounterReturn} An object containing the current count and functions to interact with the counter\n *\n * @example\n * const { count, dec, inc, reset, set } = useCounter(5);\n *\n * @example\n * const { count, dec, inc, reset, set } = useCounter({ initialValue: 5, min: 0, max: 10 });\n */\nexport const useCounter = ((...params: any[]) => {\n const initialValue =\n typeof params[0] === 'number'\n ? params[0]\n : (params[0] as UseCounterOptions & { initialValue?: number })?.initialValue;\n const { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } =\n typeof params[0] === 'number'\n ? ((params[1] ?? {}) as UseCounterOptions)\n : ((params[0] ?? {}) as UseCounterOptions & { initialValue?: number });\n\n const [value, setValue] = useState(initialValue ?? 0);\n\n const inc = (value: number = 1) => {\n setValue((prevValue) => {\n if (typeof max === 'number' && prevValue === max) return prevValue;\n return Math.max(Math.min(max, prevValue + value), min);\n });\n };\n\n const dec = (value: number = 1) => {\n setValue((prevValue) => {\n if (typeof min === 'number' && prevValue === min) return prevValue;\n return Math.min(Math.max(min, prevValue - value), max);\n });\n };\n\n const reset = () => {\n const value = initialValue ?? 0;\n if (typeof max === 'number' && value > max) return setValue(max);\n if (typeof min === 'number' && value < min) return setValue(min);\n setValue(value);\n };\n\n const set = (value: SetStateAction<number>) => {\n setValue((prevValue) => {\n const updatedCount = Math.max(\n min,\n Math.min(max, typeof value === 'number' ? value : value(prevValue))\n );\n\n return updatedCount;\n });\n };\n\n return { value, set, inc, dec, reset };\n}) as UseCounter;\n"],"names":["useCounter","params","initialValue","max","min","value","setValue","useState","prevValue"],"mappings":";AAuDO,MAAMA,IAAc,IAAIC,MAAkB;AAC/C,QAAMC,IACJ,OAAOD,EAAO,CAAC,KAAM,WACjBA,EAAO,CAAC,IACPA,EAAO,CAAC,GAAqD,cAC9D,EAAE,KAAAE,IAAM,OAAO,mBAAmB,KAAAC,IAAM,OAAO,kBAAA,IACnD,OAAOH,EAAO,CAAC,KAAM,WACfA,EAAO,CAAC,KAAK,CAAA,IACbA,EAAO,CAAC,KAAK,CAAA,GAEf,CAACI,GAAOC,CAAQ,IAAIC,EAASL,KAAgB,CAAC;AAkCpD,SAAO,EAAE,OAAAG,GAAO,KAXJ,CAACA,MAAkC;AAC7C,IAAAC,EAAS,CAACE,MACa,KAAK;AAAA,MACxBJ;AAAA,MACA,KAAK,IAAID,GAAK,OAAOE,KAAU,WAAWA,IAAQA,EAAMG,CAAS,CAAC;AAAA,IAAA,CAIrE;AAAA,EAAA,GAGkB,KAhCT,CAACH,IAAgB,MAAM;AACjC,IAAAC,EAAS,CAACE,MACJ,OAAOL,KAAQ,YAAYK,MAAcL,IAAYK,IAClD,KAAK,IAAI,KAAK,IAAIL,GAAKK,IAAYH,CAAK,GAAGD,CAAG,CACtD;AAAA,EAAA,GA4BuB,KAzBd,CAACC,IAAgB,MAAM;AACjC,IAAAC,EAAS,CAACE,MACJ,OAAOJ,KAAQ,YAAYI,MAAcJ,IAAYI,IAClD,KAAK,IAAI,KAAK,IAAIJ,GAAKI,IAAYH,CAAK,GAAGF,CAAG,CACtD;AAAA,EAAA,GAqB4B,OAlBjB,MAAM;AAClB,UAAME,IAAQH,KAAgB;AAC9B,QAAI,OAAOC,KAAQ,YAAYE,IAAQF,EAAK,QAAOG,EAASH,CAAG;AAC/D,QAAI,OAAOC,KAAQ,YAAYC,IAAQD,EAAK,QAAOE,EAASF,CAAG;AAC/D,IAAAE,EAASD,CAAK;AAAA,EAAA,EAce;AACjC;"}
1
+ {"version":3,"file":"useCounter.mjs","sources":["../../../../src/hooks/useCounter/useCounter.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\n\nimport { useState } from 'react';\n\n/** The use counter options */\nexport interface UseCounterOptions {\n /** The max of count value */\n max?: number;\n /** The min of count value */\n min?: number;\n}\n\n/** The use counter return type */\nexport interface UseCounterReturn {\n /** Function to set a specific value to the counter */\n set: Dispatch<SetStateAction<number>>;\n /** The current count value */\n value: number;\n /** Function to decrement the counter */\n dec: (value?: number) => void;\n /** Function to increment the counter */\n inc: (value?: number) => void;\n /** Function to reset the counter to its initial value. */\n reset: () => void;\n}\n\nexport interface UseCounter {\n (initialValue?: number, options?: UseCounterOptions): UseCounterReturn;\n\n (options: UseCounterOptions & { initialValue?: number }, initialValue?: never): UseCounterReturn;\n}\n\n/**\n * @name useCounter\n * @description - Hook that manages a counter\n * @category State\n *\n * @overload\n * @param {number} [initialValue=0] The initial number value\n * @param {number} [options.min=Number.NEGATIVE_INFINITY] The min of count value\n * @param {number} [options.max=Number.POSITIVE_INFINITY] The max of count value\n * @returns {UseCounterReturn} An object containing the current count and functions to interact with the counter\n\n * @overload\n * @param {number} [params.initialValue=0] The initial number value\n * @param {number} [params.min=Number.NEGATIVE_INFINITY] The min of count value\n * @param {number} [params.max=Number.POSITIVE_INFINITY] The max of count value\n * @returns {UseCounterReturn} An object containing the current count and functions to interact with the counter\n *\n * @example\n * const { count, dec, inc, reset, set } = useCounter(5);\n *\n * @example\n * const { count, dec, inc, reset, set } = useCounter({ initialValue: 5, min: 0, max: 10 });\n */\nexport const useCounter = ((...params: any[]) => {\n const initialValue =\n typeof params[0] === 'number'\n ? params[0]\n : (params[0] as UseCounterOptions & { initialValue?: number })?.initialValue;\n const { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } =\n typeof params[0] === 'number'\n ? ((params[1] ?? {}) as UseCounterOptions)\n : ((params[0] ?? {}) as UseCounterOptions & { initialValue?: number });\n\n const [value, setValue] = useState(initialValue ?? 0);\n\n const inc = (value: number = 1) => {\n setValue((prevValue) => {\n if (typeof max === 'number' && prevValue === max) return prevValue;\n return Math.max(Math.min(max, prevValue + value), min);\n });\n };\n\n const dec = (value: number = 1) => {\n setValue((prevValue) => {\n if (typeof min === 'number' && prevValue === min) return prevValue;\n return Math.min(Math.max(min, prevValue - value), max);\n });\n };\n\n const reset = () => {\n const value = initialValue ?? 0;\n if (typeof max === 'number' && value > max) return setValue(max);\n if (typeof min === 'number' && value < min) return setValue(min);\n setValue(value);\n };\n\n const set = (value: SetStateAction<number>) => {\n setValue((prevValue) => {\n const updatedCount = Math.max(\n min,\n Math.min(max, typeof value === 'number' ? value : value(prevValue))\n );\n\n return updatedCount;\n });\n };\n\n return { value, set, inc, dec, reset };\n}) as UseCounter;\n"],"names":["useCounter","params","initialValue","max","min","value","setValue","useState","prevValue"],"mappings":";AAuDO,MAAMA,IAAc,IAAIC,MAAkB;AAC/C,QAAMC,IACJ,OAAOD,EAAO,CAAC,KAAM,WACjBA,EAAO,CAAC,IACPA,EAAO,CAAC,GAAqD,cAC9D,EAAE,KAAAE,IAAM,OAAO,mBAAmB,KAAAC,IAAM,OAAO,kBAAA,IACnD,OAAOH,EAAO,CAAC,KAAM,WACfA,EAAO,CAAC,KAAK,CAAA,IACbA,EAAO,CAAC,KAAK,CAAA,GAEf,CAACI,GAAOC,CAAQ,IAAIC,EAASL,KAAgB,CAAC;AAkCpD,SAAO,EAAE,OAAAG,GAAO,KAXJ,CAACA,MAAkC;AAC7C,IAAAC,EAAS,CAACE,MACa,KAAK;AAAA,MACxBJ;AAAA,MACA,KAAK,IAAID,GAAK,OAAOE,KAAU,WAAWA,IAAQA,EAAMG,CAAS,CAAC;AAAA,IAAA,CAIrE;AAAA,EAAA,GAGkB,KAhCT,CAACH,IAAgB,MAAM;AACjC,IAAAC,EAAS,CAACE,MACJ,OAAOL,KAAQ,YAAYK,MAAcL,IAAYK,IAClD,KAAK,IAAI,KAAK,IAAIL,GAAKK,IAAYH,CAAK,GAAGD,CAAG,CACtD;AAAA,EAAA,GA4BuB,KAzBd,CAACC,IAAgB,MAAM;AACjC,IAAAC,EAAS,CAACE,MACJ,OAAOJ,KAAQ,YAAYI,MAAcJ,IAAYI,IAClD,KAAK,IAAI,KAAK,IAAIJ,GAAKI,IAAYH,CAAK,GAAGF,CAAG,CACtD;AAAA,EAAA,GAqB4B,OAlBjB,MAAM;AAClB,UAAME,IAAQH,KAAgB;AAC9B,QAAI,OAAOC,KAAQ,YAAYE,IAAQF,EAAK,QAAOG,EAASH,CAAG;AAC/D,QAAI,OAAOC,KAAQ,YAAYC,IAAQD,EAAK,QAAOE,EAASF,CAAG;AAC/D,IAAAE,EAASD,CAAK;AAAA,EAAA,EAce;AACjC;"}
@@ -1,31 +1,34 @@
1
- import { useState as v, useEffect as a } from "react";
2
- import { useRefState as g } from "../useRefState/useRefState.mjs";
3
- import { isTarget as w } from "../../utils/helpers/isTarget.mjs";
4
- import { getElement as l } from "../../utils/helpers/getElement.mjs";
5
- const E = (...r) => {
6
- const e = w(r[0]) ? r[0] : void 0, c = e ? r[1] : r[0], s = e ? r[2] : r[1], [f, i] = v(s ?? ""), n = g(window.document.documentElement), u = (t) => {
7
- const o = e ? l(e) : n.current;
8
- !o || !o.style || (o.style.setProperty(c, t), i(t));
9
- }, m = () => {
10
- const t = e ? l(e) : n.current;
11
- !t || !t.style || (t.style.removeProperty(c), i(""));
1
+ import { useState as a, useRef as g, useEffect as d } from "react";
2
+ import { useRefState as p } from "../useRefState/useRefState.mjs";
3
+ import { isTarget as b } from "../../utils/helpers/isTarget.mjs";
4
+ import { getElement as v } from "../../utils/helpers/getElement.mjs";
5
+ const C = (...r) => {
6
+ const t = b(r[0]) ? r[0] : void 0, s = t ? r[1] : r[0], n = t ? r[2] : r[1], [i, u] = a(n ?? ""), c = p(), o = g(null), m = (e) => {
7
+ if (!o.current) return;
8
+ const l = o.current;
9
+ l.style && (l.style.setProperty(s, e), u(e));
10
+ }, f = () => {
11
+ if (!o.current) return;
12
+ const e = o.current;
13
+ e.style && (e.style.removeProperty(s), u(""));
12
14
  };
13
- return a(() => {
14
- s && u(s);
15
- }, []), a(() => {
16
- if (!e && !n.state) return;
17
- const t = e ? l(e) : n.current;
18
- if (!t) return;
19
- const o = () => {
20
- const d = window.getComputedStyle(t).getPropertyValue(c)?.trim();
21
- i(d ?? s);
22
- }, y = new MutationObserver(o);
23
- return y.observe(t, { attributeFilter: ["style", "class"] }), () => {
15
+ return d(() => {
16
+ if (!n) return;
17
+ const e = (t ? v(t) : c.current) ?? window.document.documentElement;
18
+ e.style && (e.style.setProperty(s, n), u(n));
19
+ }, []), d(() => {
20
+ const e = (t ? v(t) : c.current) ?? window.document.documentElement;
21
+ o.current = e;
22
+ const l = () => {
23
+ const w = window.getComputedStyle(e).getPropertyValue(s)?.trim();
24
+ u(w ?? n);
25
+ }, y = new MutationObserver(l);
26
+ return y.observe(e, { attributeFilter: ["style", "class"] }), () => {
24
27
  y.disconnect();
25
28
  };
26
- }, [e, n.state]), e ? { value: f, set: u, remove: m } : { ref: n, value: f, set: u, remove: m };
29
+ }, [t, c.state]), t ? { value: i, set: m, remove: f } : { ref: c, value: i, set: m, remove: f };
27
30
  };
28
31
  export {
29
- E as useCssVar
32
+ C as useCssVar
30
33
  };
31
34
  //# sourceMappingURL=useCssVar.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCssVar.mjs","sources":["../../../../src/hooks/useCssVar/useCssVar.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The css variable return type */\nexport interface UseCssVarReturn {\n /** The value of the CSS variable */\n value: string;\n /** Remove the value of the CSS variable */\n remove: () => void;\n /** Set the value of the CSS variable */\n set: (value: string) => void;\n}\n\nexport interface UseCssVar {\n <Target extends HTMLElement>(\n key: string,\n initialValue?: string\n ): UseCssVarReturn & {\n ref: StateRef<Target>;\n };\n\n (target: HookTarget, key: string, initialValue?: string): UseCssVarReturn;\n}\n\n/**\n * @name useCssVar\n * @description - Hook that returns the value of a css variable\n * @category Utilities\n *\n * @overload\n * @param {string} key The CSS variable key\n * @param {string} initialValue The initial value of the CSS variable\n * @returns {UseCssVarReturn & { ref: StateRef<Element> }} The object containing the value of the CSS variable and ref\n *\n * @example\n * const { ref, value, set, remove } = useCssVar('--color', 'red');\n *\n * @overload\n * @param {HookTarget} target The target element\n * @param {string} key The CSS variable key\n * @param {string} initialValue The initial value of the CSS variable\n * @returns {UseCssVarReturn} The object containing the value of the CSS variable\n *\n * @example\n * const { value, set, remove } = useCssVar(ref, '--color', 'red');\n */\nexport const useCssVar = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const key = (target ? params[1] : params[0]) as string;\n const initialValue = (target ? params[2] : params[1]) as string | undefined;\n\n const [value, setValue] = useState(initialValue ?? '');\n const internalRef = useRefState<HTMLElement>(window.document.documentElement);\n\n const set = (value: string) => {\n const element = (target ? getElement(target) : internalRef.current) as HTMLElement;\n\n if (!element || !element.style) return;\n\n element.style.setProperty(key, value);\n setValue(value);\n };\n\n const remove = () => {\n const element = (target ? getElement(target) : internalRef.current) as HTMLElement;\n\n if (!element || !element.style) return;\n\n element.style.removeProperty(key);\n setValue('');\n };\n\n useEffect(() => {\n if (initialValue) set(initialValue);\n }, []);\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (target ? getElement(target) : internalRef.current) as HTMLElement;\n\n if (!element) return;\n\n const onChange = () => {\n const value = window.getComputedStyle(element).getPropertyValue(key)?.trim();\n\n setValue(value ?? initialValue);\n };\n\n const observer = new MutationObserver(onChange);\n\n observer.observe(element, { attributeFilter: ['style', 'class'] });\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state]);\n\n if (target) return { value, set, remove };\n return { ref: internalRef, value, set, remove };\n}) as UseCssVar;\n"],"names":["useCssVar","params","target","isTarget","key","initialValue","value","setValue","useState","internalRef","useRefState","set","element","getElement","remove","useEffect","onChange","observer"],"mappings":";;;;AAqDO,MAAMA,IAAa,IAAIC,MAAkB;AAC9C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAOF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpCI,IAAgBH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE7C,CAACK,GAAOC,CAAQ,IAAIC,EAASH,KAAgB,EAAE,GAC/CI,IAAcC,EAAyB,OAAO,SAAS,eAAe,GAEtEC,IAAM,CAACL,MAAkB;AAC7B,UAAMM,IAAWV,IAASW,EAAWX,CAAM,IAAIO,EAAY;AAE3D,IAAI,CAACG,KAAW,CAACA,EAAQ,UAEzBA,EAAQ,MAAM,YAAYR,GAAKE,CAAK,GACpCC,EAASD,CAAK;AAAA,EAAA,GAGVQ,IAAS,MAAM;AACnB,UAAMF,IAAWV,IAASW,EAAWX,CAAM,IAAIO,EAAY;AAE3D,IAAI,CAACG,KAAW,CAACA,EAAQ,UAEzBA,EAAQ,MAAM,eAAeR,CAAG,GAChCG,EAAS,EAAE;AAAA,EAAA;AA6Bb,SA1BAQ,EAAU,MAAM;AACd,IAAIV,OAAkBA,CAAY;AAAA,EAAA,GACjC,EAAE,GAELU,EAAU,MAAM;AACd,QAAI,CAACb,KAAU,CAACO,EAAY,MAAO;AAEnC,UAAMG,IAAWV,IAASW,EAAWX,CAAM,IAAIO,EAAY;AAE3D,QAAI,CAACG,EAAS;AAEd,UAAMI,IAAW,MAAM;AACrB,YAAMV,IAAQ,OAAO,iBAAiBM,CAAO,EAAE,iBAAiBR,CAAG,GAAG,KAAA;AAEtE,MAAAG,EAASD,KAASD,CAAY;AAAA,IAAA,GAG1BY,IAAW,IAAI,iBAAiBD,CAAQ;AAE9C,WAAAC,EAAS,QAAQL,GAAS,EAAE,iBAAiB,CAAC,SAAS,OAAO,GAAG,GAE1D,MAAM;AACX,MAAAK,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,CAACf,GAAQO,EAAY,KAAK,CAAC,GAE1BP,IAAe,EAAE,OAAAI,GAAO,KAAAK,GAAK,QAAAG,EAAA,IAC1B,EAAE,KAAKL,GAAa,OAAAH,GAAO,KAAAK,GAAK,QAAAG,EAAA;AACzC;"}
1
+ {"version":3,"file":"useCssVar.mjs","sources":["../../../../src/hooks/useCssVar/useCssVar.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The css variable return type */\nexport interface UseCssVarReturn {\n /** The value of the CSS variable */\n value: string;\n /** Remove the value of the CSS variable */\n remove: () => void;\n /** Set the value of the CSS variable */\n set: (value: string) => void;\n}\n\nexport interface UseCssVar {\n <Target extends HTMLElement>(\n key: string,\n initialValue?: string\n ): UseCssVarReturn & {\n ref: StateRef<Target>;\n };\n\n (target: HookTarget, key: string, initialValue?: string): UseCssVarReturn;\n}\n\n/**\n * @name useCssVar\n * @description - Hook that returns the value of a css variable\n * @category Browser\n *\n * @overload\n * @param {string} key The CSS variable key\n * @param {string} initialValue The initial value of the CSS variable\n * @returns {UseCssVarReturn & { ref: StateRef<Element> }} The object containing the value of the CSS variable and ref\n *\n * @example\n * const { ref, value, set, remove } = useCssVar('--color', 'red');\n *\n * @overload\n * @param {HookTarget} target The target element\n * @param {string} key The CSS variable key\n * @param {string} initialValue The initial value of the CSS variable\n * @returns {UseCssVarReturn} The object containing the value of the CSS variable\n *\n * @example\n * const { value, set, remove } = useCssVar(ref, '--color', 'red');\n */\nexport const useCssVar = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const key = (target ? params[1] : params[0]) as string;\n const initialValue = (target ? params[2] : params[1]) as string | undefined;\n\n const [value, setValue] = useState(initialValue ?? '');\n const internalRef = useRefState<HTMLElement>();\n const elementRef = useRef<HTMLElement>(null);\n\n const set = (value: string) => {\n if (!elementRef.current) return;\n const element = elementRef.current;\n\n if (!element.style) return;\n element.style.setProperty(key, value);\n setValue(value);\n };\n\n const remove = () => {\n if (!elementRef.current) return;\n const element = elementRef.current;\n if (!element.style) return;\n\n element.style.removeProperty(key);\n setValue('');\n };\n\n useEffect(() => {\n if (!initialValue) return;\n\n const element =\n ((target ? getElement(target) : internalRef.current) as HTMLElement) ??\n window.document.documentElement;\n\n if (!element.style) return;\n element.style.setProperty(key, initialValue);\n setValue(initialValue);\n }, []);\n\n useEffect(() => {\n const element =\n ((target ? getElement(target) : internalRef.current) as HTMLElement) ??\n window.document.documentElement;\n\n elementRef.current = element;\n\n const onChange = () => {\n const value = window.getComputedStyle(element).getPropertyValue(key)?.trim();\n\n setValue(value ?? initialValue);\n };\n\n const observer = new MutationObserver(onChange);\n\n observer.observe(element, { attributeFilter: ['style', 'class'] });\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state]);\n\n if (target) return { value, set, remove };\n return { ref: internalRef, value, set, remove };\n}) as UseCssVar;\n"],"names":["useCssVar","params","target","isTarget","key","initialValue","value","setValue","useState","internalRef","useRefState","elementRef","useRef","set","element","remove","useEffect","getElement","onChange","observer"],"mappings":";;;;AAqDO,MAAMA,IAAa,IAAIC,MAAkB;AAC9C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAOF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpCI,IAAgBH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAE7C,CAACK,GAAOC,CAAQ,IAAIC,EAASH,KAAgB,EAAE,GAC/CI,IAAcC,EAAA,GACdC,IAAaC,EAAoB,IAAI,GAErCC,IAAM,CAACP,MAAkB;AAC7B,QAAI,CAACK,EAAW,QAAS;AACzB,UAAMG,IAAUH,EAAW;AAE3B,IAAKG,EAAQ,UACbA,EAAQ,MAAM,YAAYV,GAAKE,CAAK,GACpCC,EAASD,CAAK;AAAA,EAAA,GAGVS,IAAS,MAAM;AACnB,QAAI,CAACJ,EAAW,QAAS;AACzB,UAAMG,IAAUH,EAAW;AAC3B,IAAKG,EAAQ,UAEbA,EAAQ,MAAM,eAAeV,CAAG,GAChCG,EAAS,EAAE;AAAA,EAAA;AAqCb,SAlCAS,EAAU,MAAM;AACd,QAAI,CAACX,EAAc;AAEnB,UAAMS,KACFZ,IAASe,EAAWf,CAAM,IAAIO,EAAY,YAC5C,OAAO,SAAS;AAElB,IAAKK,EAAQ,UACbA,EAAQ,MAAM,YAAYV,GAAKC,CAAY,GAC3CE,EAASF,CAAY;AAAA,EAAA,GACpB,EAAE,GAELW,EAAU,MAAM;AACd,UAAMF,KACFZ,IAASe,EAAWf,CAAM,IAAIO,EAAY,YAC5C,OAAO,SAAS;AAElB,IAAAE,EAAW,UAAUG;AAErB,UAAMI,IAAW,MAAM;AACrB,YAAMZ,IAAQ,OAAO,iBAAiBQ,CAAO,EAAE,iBAAiBV,CAAG,GAAG,KAAA;AAEtE,MAAAG,EAASD,KAASD,CAAY;AAAA,IAAA,GAG1Bc,IAAW,IAAI,iBAAiBD,CAAQ;AAE9C,WAAAC,EAAS,QAAQL,GAAS,EAAE,iBAAiB,CAAC,SAAS,OAAO,GAAG,GAE1D,MAAM;AACX,MAAAK,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,CAACjB,GAAQO,EAAY,KAAK,CAAC,GAE1BP,IAAe,EAAE,OAAAI,GAAO,KAAAO,GAAK,QAAAE,EAAA,IAC1B,EAAE,KAAKN,GAAa,OAAAH,GAAO,KAAAO,GAAK,QAAAE,EAAA;AACzC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDefault.mjs","sources":["../../../../src/hooks/useDefault/useDefault.ts"],"sourcesContent":["import { useState } from 'react';\n\n/**\n * @name useDefault\n * @description - Hook that returns the default value\n * @category Utilities\n *\n * @template Value The type of the value\n * @param {Value} initialValue The initial value\n * @param {Value} defaultValue The default value\n * @returns {[Value, (value: Value) => void]} An array containing the current value and a function to set the value\n *\n * @example\n * const [value, setValue] = useDefault(initialValue, defaultValue);\n */\nexport const useDefault = <Value>(initialValue: (() => Value) | Value, defaultValue: Value) => {\n const [value, setValue] = useState<Value | null | undefined>(initialValue);\n return [value === undefined || value === null ? defaultValue : value, setValue] as const;\n};\n"],"names":["useDefault","initialValue","defaultValue","value","setValue","useState"],"mappings":";AAeO,MAAMA,IAAa,CAAQC,GAAqCC,MAAwB;AAC7F,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAmCJ,CAAY;AACzE,SAAO,CAAwBE,KAAiBD,GAAsBE,CAAQ;AAChF;"}
1
+ {"version":3,"file":"useDefault.mjs","sources":["../../../../src/hooks/useDefault/useDefault.ts"],"sourcesContent":["import { useState } from 'react';\n\n/**\n * @name useDefault\n * @description - Hook that returns the default value\n * @category State\n *\n * @template Value The type of the value\n * @param {Value} initialValue The initial value\n * @param {Value} defaultValue The default value\n * @returns {[Value, (value: Value) => void]} An array containing the current value and a function to set the value\n *\n * @example\n * const [value, setValue] = useDefault(initialValue, defaultValue);\n */\nexport const useDefault = <Value>(initialValue: (() => Value) | Value, defaultValue: Value) => {\n const [value, setValue] = useState<Value | null | undefined>(initialValue);\n return [value === undefined || value === null ? defaultValue : value, setValue] as const;\n};\n"],"names":["useDefault","initialValue","defaultValue","value","setValue","useState"],"mappings":";AAeO,MAAMA,IAAa,CAAQC,GAAqCC,MAAwB;AAC7F,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAmCJ,CAAY;AACzE,SAAO,CAAwBE,KAAiBD,GAAsBE,CAAQ;AAChF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDisclosure.mjs","sources":["../../../../src/hooks/useDisclosure/useDisclosure.ts"],"sourcesContent":["import { useState } from 'react';\n\n/** The use disclosure options type */\nexport interface UseDisclosureOptions {\n /** The callback function to be invoked on close */\n onClose?: () => void;\n /** The callback function to be invoked on open */\n onOpen?: () => void;\n}\n\n/** The use disclosure return type */\nexport interface UseDisclosureReturn {\n /** The opened value */\n opened: boolean;\n /** Function to close the modal */\n close: () => void;\n /** Function to open the modal */\n open: () => void;\n /** Function to toggle the modal */\n toggle: () => void;\n}\n\n/**\n * @name useDisclosure\n * @description - Hook that allows you to open and close a modal\n * @category Utilities\n *\n * @param {boolean} [initialValue=false] The initial value of the component\n * @param {() => void} [options.onOpen] The callback function to be invoked on open\n * @param {() => void} [options.onClose] The callback function to be invoked on close\n * @returns {UseDisclosureReturn} An object with the opened, open, close, and toggle properties\n *\n * @example\n * const { opened, open, close, toggle } = useDisclosure();\n */\nexport const useDisclosure = (\n initialValue = false,\n options?: UseDisclosureOptions\n): UseDisclosureReturn => {\n const [opened, setOpened] = useState(initialValue);\n\n const open = () =>\n setOpened((opened) => {\n if (!opened) {\n options?.onOpen?.();\n return true;\n }\n return opened;\n });\n\n const close = () =>\n setOpened((opened) => {\n if (opened) {\n options?.onClose?.();\n return false;\n }\n return opened;\n });\n\n const toggle = () => (opened ? close() : open());\n\n return { opened, open, close, toggle };\n};\n"],"names":["useDisclosure","initialValue","options","opened","setOpened","useState","open","close"],"mappings":";AAmCO,MAAMA,IAAgB,CAC3BC,IAAe,IACfC,MACwB;AACxB,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAASJ,CAAY,GAE3CK,IAAO,MACXF,EAAU,CAACD,MACJA,MACHD,GAAS,SAAA,GACF,GAGV,GAEGK,IAAQ,MACZH,EAAU,CAACD,MACLA,MACFD,GAAS,UAAA,GACF,GAGV;AAIH,SAAO,EAAE,QAAAC,GAAQ,MAAAG,GAAM,OAAAC,GAAO,QAFf,MAAOJ,IAASI,EAAA,IAAUD,EAAA,EAEX;AAChC;"}
1
+ {"version":3,"file":"useDisclosure.mjs","sources":["../../../../src/hooks/useDisclosure/useDisclosure.ts"],"sourcesContent":["import { useState } from 'react';\n\n/** The use disclosure options type */\nexport interface UseDisclosureOptions {\n /** The callback function to be invoked on close */\n onClose?: () => void;\n /** The callback function to be invoked on open */\n onOpen?: () => void;\n}\n\n/** The use disclosure return type */\nexport interface UseDisclosureReturn {\n /** The opened value */\n opened: boolean;\n /** Function to close the modal */\n close: () => void;\n /** Function to open the modal */\n open: () => void;\n /** Function to toggle the modal */\n toggle: () => void;\n}\n\n/**\n * @name useDisclosure\n * @description - Hook that allows you to open and close a modal\n * @category State\n *\n * @param {boolean} [initialValue=false] The initial value of the component\n * @param {() => void} [options.onOpen] The callback function to be invoked on open\n * @param {() => void} [options.onClose] The callback function to be invoked on close\n * @returns {UseDisclosureReturn} An object with the opened, open, close, and toggle properties\n *\n * @example\n * const { opened, open, close, toggle } = useDisclosure();\n */\nexport const useDisclosure = (\n initialValue = false,\n options?: UseDisclosureOptions\n): UseDisclosureReturn => {\n const [opened, setOpened] = useState(initialValue);\n\n const open = () =>\n setOpened((opened) => {\n if (!opened) {\n options?.onOpen?.();\n return true;\n }\n return opened;\n });\n\n const close = () =>\n setOpened((opened) => {\n if (opened) {\n options?.onClose?.();\n return false;\n }\n return opened;\n });\n\n const toggle = () => (opened ? close() : open());\n\n return { opened, open, close, toggle };\n};\n"],"names":["useDisclosure","initialValue","options","opened","setOpened","useState","open","close"],"mappings":";AAmCO,MAAMA,IAAgB,CAC3BC,IAAe,IACfC,MACwB;AACxB,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAASJ,CAAY,GAE3CK,IAAO,MACXF,EAAU,CAACD,MACJA,MACHD,GAAS,SAAA,GACF,GAGV,GAEGK,IAAQ,MACZH,EAAU,CAACD,MACLA,MACFD,GAAS,UAAA,GACF,GAGV;AAIH,SAAO,EAAE,QAAAC,GAAQ,MAAAG,GAAM,OAAAC,GAAO,QAFf,MAAOJ,IAASI,EAAA,IAAUD,EAAA,EAEX;AAChC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDisplayMedia.mjs","sources":["../../../../src/hooks/useDisplayMedia/useDisplayMedia.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use display media return type */\nexport interface UseDisplayMediaReturn {\n /** Whether screen sharing is currently active */\n sharing: boolean;\n /** The media stream object */\n stream: MediaStream | null;\n /** Whether the display media API is supported */\n supported: boolean;\n /** Start screen sharing */\n start: () => Promise<void>;\n /** Stop screen sharing */\n stop: () => void;\n}\n\n/** The use display media options type */\nexport interface UseDisplayMediaOptions {\n /** Whether to enable audio sharing */\n audio?: boolean | MediaTrackConstraints;\n /** Whether to start immediately */\n immediately?: boolean;\n /** Whether to enable video sharing */\n video?: boolean | MediaTrackConstraints;\n}\n\nexport interface UseDisplayMedia {\n (target: HookTarget, options?: UseDisplayMediaOptions): UseDisplayMediaReturn;\n\n <Target extends HTMLVideoElement>(\n options?: UseDisplayMediaOptions,\n target?: never\n ): { ref: StateRef<Target> } & UseDisplayMediaReturn;\n}\n\n/**\n * @name useDisplayMedia\n * @description - Hook that provides screen sharing functionality\n * @category Browser\n *\n * @browserapi mediaDevices.getDisplayMedia https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n *\n * @overload\n * @param {HookTarget} target The target video element to display the media stream\n * @param {boolean | MediaTrackConstraints} [options.audio] Whether to enable audio sharing\n * @param {boolean} [options.immediately=false] Whether to start immediately\n * @param {boolean | MediaTrackConstraints} [options.video] Whether to enable video sharing\n * @returns {UseDisplayMediaReturn} Object containing stream, sharing status and control methods\n *\n * @example\n * const { stream, sharing, start, stop } = useDisplayMedia(ref);\n *\n * @overload\n * @template Target The target video element\n * @param {boolean | MediaTrackConstraints} [options.audio] Whether to enable audio sharing\n * @param {boolean} [options.immediately=false] Whether to start immediately\n * @param {boolean | MediaTrackConstraints} [options.video] Whether to enable video sharing\n * @returns {UseDisplayMediaReturn & { ref: StateRef<HTMLVideoElement> }} Object containing stream, sharing status, control methods and ref\n *\n * @example\n * const { ref, stream, sharing, start, stop } = useDisplayMedia<HTMLVideoElement>();\n */\nexport const useDisplayMedia = ((...params: any[]) => {\n const supported =\n typeof navigator !== 'undefined' &&\n 'mediaDevices' in navigator &&\n !!navigator.mediaDevices &&\n 'getDisplayMedia' in navigator.mediaDevices;\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (params[1] ? params[1] : params[0]) as UseDisplayMediaOptions | undefined;\n const immediately = options?.immediately ?? false;\n\n const [sharing, setSharing] = useState(false);\n\n const elementRef = useRef<HTMLVideoElement | null>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const internalRef = useRefState<Element>();\n\n const stop = () => {\n if (!streamRef.current || !supported || !elementRef.current) return;\n\n setSharing(false);\n elementRef.current.srcObject = null;\n streamRef.current.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n };\n\n const start = async () => {\n if (!supported || !elementRef.current) return;\n\n const displayMedia = await navigator.mediaDevices.getDisplayMedia({\n video: options?.video,\n audio: options?.audio\n });\n\n setSharing(true);\n streamRef.current = displayMedia;\n elementRef.current.srcObject = displayMedia;\n\n displayMedia.getTracks().forEach((track) => (track.onended = stop));\n return displayMedia;\n };\n\n useEffect(() => {\n if (!supported || (!target && !internalRef.state)) return;\n\n const element = (target ? getElement(target) : internalRef.current) as HTMLVideoElement;\n\n if (!element) return;\n\n elementRef.current = element;\n\n if (!immediately) return;\n\n start();\n\n return () => {\n stop();\n };\n }, [target, internalRef.state]);\n\n if (target)\n return {\n stream: streamRef.current,\n sharing,\n supported,\n start,\n stop\n };\n\n return {\n stream: streamRef.current,\n sharing,\n supported,\n start,\n stop,\n ref: internalRef\n };\n}) as UseDisplayMedia;\n"],"names":["useDisplayMedia","params","supported","target","isTarget","options","immediately","sharing","setSharing","useState","elementRef","useRef","streamRef","internalRef","useRefState","stop","track","start","displayMedia","useEffect","element","getElement"],"mappings":";;;;AAsEO,MAAMA,IAAmB,IAAIC,MAAkB;AACpD,QAAMC,IACJ,OAAO,YAAc,OACrB,kBAAkB,aAClB,CAAC,CAAC,UAAU,gBACZ,qBAAqB,UAAU,cAC3BC,IAAUC,EAASH,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CI,IAAWJ,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,GAC3CK,IAAcD,GAAS,eAAe,IAEtC,CAACE,GAASC,CAAU,IAAIC,EAAS,EAAK,GAEtCC,IAAaC,EAAgC,IAAI,GACjDC,IAAYD,EAA2B,IAAI,GAC3CE,IAAcC,EAAA,GAEdC,IAAO,MAAM;AACjB,IAAI,CAACH,EAAU,WAAW,CAACV,KAAa,CAACQ,EAAW,YAEpDF,EAAW,EAAK,GAChBE,EAAW,QAAQ,YAAY,MAC/BE,EAAU,QAAQ,YAAY,QAAQ,CAACI,MAAUA,EAAM,MAAM,GAC7DJ,EAAU,UAAU;AAAA,EAAA,GAGhBK,IAAQ,YAAY;AACxB,QAAI,CAACf,KAAa,CAACQ,EAAW,QAAS;AAEvC,UAAMQ,IAAe,MAAM,UAAU,aAAa,gBAAgB;AAAA,MAChE,OAAOb,GAAS;AAAA,MAChB,OAAOA,GAAS;AAAA,IAAA,CACjB;AAED,WAAAG,EAAW,EAAI,GACfI,EAAU,UAAUM,GACpBR,EAAW,QAAQ,YAAYQ,GAE/BA,EAAa,YAAY,QAAQ,CAACF,MAAWA,EAAM,UAAUD,CAAK,GAC3DG;AAAA,EAAA;AAqBT,SAlBAC,EAAU,MAAM;AACd,QAAI,CAACjB,KAAc,CAACC,KAAU,CAACU,EAAY,MAAQ;AAEnD,UAAMO,IAAWjB,IAASkB,EAAWlB,CAAM,IAAIU,EAAY;AAE3D,QAAKO,MAELV,EAAW,UAAUU,GAEjB,EAACd;AAEL,aAAAW,EAAA,GAEO,MAAM;AACX,QAAAF,EAAA;AAAA,MAAK;AAAA,EACP,GACC,CAACZ,GAAQU,EAAY,KAAK,CAAC,GAE1BV,IACK;AAAA,IACL,QAAQS,EAAU;AAAA,IAClB,SAAAL;AAAA,IACA,WAAAL;AAAA,IACA,OAAAe;AAAA,IACA,MAAAF;AAAA,EAAA,IAGG;AAAA,IACL,QAAQH,EAAU;AAAA,IAClB,SAAAL;AAAA,IACA,WAAAL;AAAA,IACA,OAAAe;AAAA,IACA,MAAAF;AAAA,IACA,KAAKF;AAAA,EAAA;AAET;"}
1
+ {"version":3,"file":"useDisplayMedia.mjs","sources":["../../../../src/hooks/useDisplayMedia/useDisplayMedia.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use display media return type */\nexport interface UseDisplayMediaReturn {\n /** Whether screen sharing is currently active */\n sharing: boolean;\n /** The media stream object */\n stream: MediaStream | null;\n /** Whether the display media API is supported */\n supported: boolean;\n /** Start screen sharing */\n start: () => Promise<void>;\n /** Stop screen sharing */\n stop: () => void;\n}\n\n/** The use display media options type */\nexport interface UseDisplayMediaOptions {\n /** Whether to enable audio sharing */\n audio?: boolean | MediaTrackConstraints;\n /** Whether to start immediately */\n immediately?: boolean;\n /** Whether to enable video sharing */\n video?: boolean | MediaTrackConstraints;\n}\n\nexport interface UseDisplayMedia {\n (target: HookTarget, options?: UseDisplayMediaOptions): UseDisplayMediaReturn;\n\n <Target extends HTMLVideoElement>(\n options?: UseDisplayMediaOptions,\n target?: never\n ): { ref: StateRef<Target> } & UseDisplayMediaReturn;\n}\n\n/**\n * @name useDisplayMedia\n * @description - Hook that provides screen sharing functionality\n * @category Browser\n *\n * @browserapi mediaDevices.getDisplayMedia https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n *\n * @overload\n * @param {HookTarget} target The target video element to display the media stream\n * @param {boolean | MediaTrackConstraints} [options.audio] Whether to enable audio sharing\n * @param {boolean} [options.immediately=false] Whether to start immediately\n * @param {boolean | MediaTrackConstraints} [options.video] Whether to enable video sharing\n * @returns {UseDisplayMediaReturn} Object containing stream, sharing status and control methods\n *\n * @example\n * const { stream, sharing, start, stop } = useDisplayMedia(ref);\n *\n * @overload\n * @template Target The target video element\n * @param {boolean | MediaTrackConstraints} [options.audio] Whether to enable audio sharing\n * @param {boolean} [options.immediately=false] Whether to start immediately\n * @param {boolean | MediaTrackConstraints} [options.video] Whether to enable video sharing\n * @returns {UseDisplayMediaReturn & { ref: StateRef<HTMLVideoElement> }} Object containing stream, sharing status, control methods and ref\n *\n * @example\n * const { ref, stream, sharing, start, stop } = useDisplayMedia<HTMLVideoElement>();\n */\nexport const useDisplayMedia = ((...params: any[]) => {\n const supported =\n typeof navigator !== 'undefined' &&\n 'mediaDevices' in navigator &&\n !!navigator.mediaDevices &&\n 'getDisplayMedia' in navigator.mediaDevices;\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (params[1] ? params[1] : params[0]) as UseDisplayMediaOptions | undefined;\n const immediately = options?.immediately ?? false;\n\n const [sharing, setSharing] = useState(false);\n\n const elementRef = useRef<HTMLVideoElement>(null);\n const streamRef = useRef<MediaStream>(null);\n const internalRef = useRefState<Element>();\n\n const stop = () => {\n if (!streamRef.current || !supported || !elementRef.current) return;\n\n setSharing(false);\n elementRef.current.srcObject = null;\n streamRef.current.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n };\n\n const start = async () => {\n if (!supported || !elementRef.current) return;\n\n const displayMedia = await navigator.mediaDevices.getDisplayMedia({\n video: options?.video,\n audio: options?.audio\n });\n\n setSharing(true);\n streamRef.current = displayMedia;\n elementRef.current.srcObject = displayMedia;\n\n displayMedia.getTracks().forEach((track) => (track.onended = stop));\n return displayMedia;\n };\n\n useEffect(() => {\n if (!supported || (!target && !internalRef.state)) return;\n\n const element = (target ? getElement(target) : internalRef.current) as HTMLVideoElement;\n\n if (!element) return;\n\n elementRef.current = element;\n\n if (!immediately) return;\n\n start();\n\n return () => {\n stop();\n };\n }, [target, internalRef.state]);\n\n if (target)\n return {\n stream: streamRef.current,\n sharing,\n supported,\n start,\n stop\n };\n\n return {\n stream: streamRef.current,\n sharing,\n supported,\n start,\n stop,\n ref: internalRef\n };\n}) as UseDisplayMedia;\n"],"names":["useDisplayMedia","params","supported","target","isTarget","options","immediately","sharing","setSharing","useState","elementRef","useRef","streamRef","internalRef","useRefState","stop","track","start","displayMedia","useEffect","element","getElement"],"mappings":";;;;AAsEO,MAAMA,IAAmB,IAAIC,MAAkB;AACpD,QAAMC,IACJ,OAAO,YAAc,OACrB,kBAAkB,aAClB,CAAC,CAAC,UAAU,gBACZ,qBAAqB,UAAU,cAC3BC,IAAUC,EAASH,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CI,IAAWJ,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,GAC3CK,IAAcD,GAAS,eAAe,IAEtC,CAACE,GAASC,CAAU,IAAIC,EAAS,EAAK,GAEtCC,IAAaC,EAAyB,IAAI,GAC1CC,IAAYD,EAAoB,IAAI,GACpCE,IAAcC,EAAA,GAEdC,IAAO,MAAM;AACjB,IAAI,CAACH,EAAU,WAAW,CAACV,KAAa,CAACQ,EAAW,YAEpDF,EAAW,EAAK,GAChBE,EAAW,QAAQ,YAAY,MAC/BE,EAAU,QAAQ,YAAY,QAAQ,CAACI,MAAUA,EAAM,MAAM,GAC7DJ,EAAU,UAAU;AAAA,EAAA,GAGhBK,IAAQ,YAAY;AACxB,QAAI,CAACf,KAAa,CAACQ,EAAW,QAAS;AAEvC,UAAMQ,IAAe,MAAM,UAAU,aAAa,gBAAgB;AAAA,MAChE,OAAOb,GAAS;AAAA,MAChB,OAAOA,GAAS;AAAA,IAAA,CACjB;AAED,WAAAG,EAAW,EAAI,GACfI,EAAU,UAAUM,GACpBR,EAAW,QAAQ,YAAYQ,GAE/BA,EAAa,YAAY,QAAQ,CAACF,MAAWA,EAAM,UAAUD,CAAK,GAC3DG;AAAA,EAAA;AAqBT,SAlBAC,EAAU,MAAM;AACd,QAAI,CAACjB,KAAc,CAACC,KAAU,CAACU,EAAY,MAAQ;AAEnD,UAAMO,IAAWjB,IAASkB,EAAWlB,CAAM,IAAIU,EAAY;AAE3D,QAAKO,MAELV,EAAW,UAAUU,GAEjB,EAACd;AAEL,aAAAW,EAAA,GAEO,MAAM;AACX,QAAAF,EAAA;AAAA,MAAK;AAAA,EACP,GACC,CAACZ,GAAQU,EAAY,KAAK,CAAC,GAE1BV,IACK;AAAA,IACL,QAAQS,EAAU;AAAA,IAClB,SAAAL;AAAA,IACA,WAAAL;AAAA,IACA,OAAAe;AAAA,IACA,MAAAF;AAAA,EAAA,IAGG;AAAA,IACL,QAAQH,EAAU;AAAA,IAClB,SAAAL;AAAA,IACA,WAAAL;AAAA,IACA,OAAAe;AAAA,IACA,MAAAF;AAAA,IACA,KAAKF;AAAA,EAAA;AAET;"}
@@ -10,7 +10,9 @@ function f(o, c) {
10
10
  const n = new MutationObserver(() => {
11
11
  s((t) => document && document.title !== t ? document.title : t);
12
12
  });
13
- return n.observe(document.head.querySelector("title"), { childList: !0 }), () => {
13
+ return n.observe(document.head.querySelector("title"), {
14
+ childList: !0
15
+ }), () => {
14
16
  n.disconnect();
15
17
  };
16
18
  }, []), r(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentTitle.mjs","sources":["../../../../src/hooks/useDocumentTitle/useDocumentTitle.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use document title options type */\nexport interface UseDocumentTitleOptions {\n /** Restore the previous title on unmount */\n restoreOnUnmount?: boolean;\n}\n\n/** The use document title return type */\nexport interface UseDocumentTitleReturn {\n /** The current title */\n value: string;\n /** Function to update the title */\n set: (title: string) => void;\n}\n\n/**\n * @name useDocumentTitle\n * @description - Hook that manages the document title and allows updating it\n * @category Browser\n *\n * @param {string} [initialValue] The initial title. If not provided, the current document title will be used\n * @param {boolean} [options.restoreOnUnmount] Restore the previous title on unmount\n * @returns {UseDocumentTitleReturn} An array containing the current title and a function to update the title\n *\n * @example\n * const { value, set } = useDocumentTitle();\n */\nexport function useDocumentTitle(\n initialValue?: string,\n options?: UseDocumentTitleOptions\n): UseDocumentTitleReturn {\n const prevValueRef = useRef(document.title);\n const [value, setValue] = useState(initialValue ?? document.title);\n\n const set = (value: string) => {\n const updatedValue = value.trim();\n if (updatedValue.length > 0) document.title = updatedValue;\n };\n\n useEffect(() => {\n if (typeof value !== 'string') return;\n set(value);\n }, [value]);\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n setValue((prevValue) => {\n if (document && document.title !== prevValue) {\n return document.title;\n }\n return prevValue;\n });\n });\n\n observer.observe(document.head.querySelector('title')!, { childList: true });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (options?.restoreOnUnmount) {\n return () => {\n document.title = prevValueRef.current;\n };\n }\n }, []);\n\n return { value, set };\n}\n"],"names":["useDocumentTitle","initialValue","options","prevValueRef","useRef","value","setValue","useState","set","updatedValue","useEffect","observer","prevValue"],"mappings":";AA4BO,SAASA,EACdC,GACAC,GACwB;AACxB,QAAMC,IAAeC,EAAO,SAAS,KAAK,GACpC,CAACC,GAAOC,CAAQ,IAAIC,EAASN,KAAgB,SAAS,KAAK,GAE3DO,IAAM,CAACH,MAAkB;AAC7B,UAAMI,IAAeJ,EAAM,KAAA;AAC3B,IAAII,EAAa,SAAS,MAAG,SAAS,QAAQA;AAAA,EAAA;AAGhD,SAAAC,EAAU,MAAM;AACd,IAAI,OAAOL,KAAU,YACrBG,EAAIH,CAAK;AAAA,EAAA,GACR,CAACA,CAAK,CAAC,GAEVK,EAAU,MAAM;AACd,UAAMC,IAAW,IAAI,iBAAiB,MAAM;AAC1C,MAAAL,EAAS,CAACM,MACJ,YAAY,SAAS,UAAUA,IAC1B,SAAS,QAEXA,CACR;AAAA,IAAA,CACF;AAED,WAAAD,EAAS,QAAQ,SAAS,KAAK,cAAc,OAAO,GAAI,EAAE,WAAW,IAAM,GAEpE,MAAM;AACX,MAAAA,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,EAAE,GAELD,EAAU,MAAM;AACd,QAAIR,GAAS;AACX,aAAO,MAAM;AACX,iBAAS,QAAQC,EAAa;AAAA,MAAA;AAAA,EAElC,GACC,EAAE,GAEE,EAAE,OAAAE,GAAO,KAAAG,EAAA;AAClB;"}
1
+ {"version":3,"file":"useDocumentTitle.mjs","sources":["../../../../src/hooks/useDocumentTitle/useDocumentTitle.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** The use document title options type */\nexport interface UseDocumentTitleOptions {\n /** Restore the previous title on unmount */\n restoreOnUnmount?: boolean;\n}\n\n/** The use document title return type */\nexport interface UseDocumentTitleReturn {\n /** The current title */\n value: string;\n /** Function to update the title */\n set: (title: string) => void;\n}\n\n/**\n * @name useDocumentTitle\n * @description - Hook that manages the document title and allows updating it\n * @category Browser\n *\n * @browserapi document.title https://developer.mozilla.org/en-US/docs/Web/API/Document/title\n *\n * @param {string} [initialValue] The initial title. If not provided, the current document title will be used\n * @param {boolean} [options.restoreOnUnmount] Restore the previous title on unmount\n * @returns {UseDocumentTitleReturn} An array containing the current title and a function to update the title\n *\n * @example\n * const { value, set } = useDocumentTitle();\n */\nexport function useDocumentTitle(\n initialValue?: string,\n options?: UseDocumentTitleOptions\n): UseDocumentTitleReturn {\n const prevValueRef = useRef(document.title);\n const [value, setValue] = useState(initialValue ?? document.title);\n\n const set = (value: string) => {\n const updatedValue = value.trim();\n if (updatedValue.length > 0) document.title = updatedValue;\n };\n\n useEffect(() => {\n if (typeof value !== 'string') return;\n set(value);\n }, [value]);\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n setValue((prevValue) => {\n if (document && document.title !== prevValue) {\n return document.title;\n }\n return prevValue;\n });\n });\n\n observer.observe(document.head.querySelector('title')!, {\n childList: true\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (options?.restoreOnUnmount) {\n return () => {\n document.title = prevValueRef.current;\n };\n }\n }, []);\n\n return { value, set };\n}\n"],"names":["useDocumentTitle","initialValue","options","prevValueRef","useRef","value","setValue","useState","set","updatedValue","useEffect","observer","prevValue"],"mappings":";AA8BO,SAASA,EACdC,GACAC,GACwB;AACxB,QAAMC,IAAeC,EAAO,SAAS,KAAK,GACpC,CAACC,GAAOC,CAAQ,IAAIC,EAASN,KAAgB,SAAS,KAAK,GAE3DO,IAAM,CAACH,MAAkB;AAC7B,UAAMI,IAAeJ,EAAM,KAAA;AAC3B,IAAII,EAAa,SAAS,MAAG,SAAS,QAAQA;AAAA,EAAA;AAGhD,SAAAC,EAAU,MAAM;AACd,IAAI,OAAOL,KAAU,YACrBG,EAAIH,CAAK;AAAA,EAAA,GACR,CAACA,CAAK,CAAC,GAEVK,EAAU,MAAM;AACd,UAAMC,IAAW,IAAI,iBAAiB,MAAM;AAC1C,MAAAL,EAAS,CAACM,MACJ,YAAY,SAAS,UAAUA,IAC1B,SAAS,QAEXA,CACR;AAAA,IAAA,CACF;AAED,WAAAD,EAAS,QAAQ,SAAS,KAAK,cAAc,OAAO,GAAI;AAAA,MACtD,WAAW;AAAA,IAAA,CACZ,GAEM,MAAM;AACX,MAAAA,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,EAAE,GAELD,EAAU,MAAM;AACd,QAAIR,GAAS;AACX,aAAO,MAAM;AACX,iBAAS,QAAQC,EAAa;AAAA,MAAA;AAAA,EAElC,GACC,EAAE,GAEE,EAAE,OAAAE,GAAO,KAAAG,EAAA;AAClB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDoubleClick.mjs","sources":["../../../../src/hooks/useDoubleClick/useDoubleClick.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DoubleClickEvents = MouseEvent | TouchEvent;\n\n/** The use double click options type */\nexport interface UseDoubleClickOptions {\n /** The threshold time in milliseconds between clicks */\n threshold?: number;\n /** The callback function to be invoked on single click */\n onSingleClick?: (event: DoubleClickEvents) => void;\n}\n\nexport interface UseDoubleClick {\n (\n target: HookTarget,\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\nexport const DEFAULT_THRESHOLD_TIME = 300;\n\n/**\n * @name useDoubleClick\n * @description - Hook that defines the logic when double clicking an element\n * @category Sensors\n *\n * @overload\n * @param {HookTarget} target The target element to be double clicked\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * useDoubleClick(ref, () => console.log('double clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * const ref = useDoubleClick(() => console.log('double clicked'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}\n */\nexport const useDoubleClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: DoubleClickEvents) => void;\n const options = (target ? params[2] : params[1]) as UseDoubleClickOptions | undefined;\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const clickCountRef = useRef(0);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onClick = (event: DoubleClickEvents) => {\n clickCountRef.current += 1;\n\n if (clickCountRef.current === 1) {\n timeoutIdRef.current = setTimeout(() => {\n if (internalOptionsRef.current?.onSingleClick)\n internalOptionsRef.current.onSingleClick(event);\n clickCountRef.current = 0;\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n }\n\n if (clickCountRef.current === 2) {\n clearTimeout(timeoutIdRef.current);\n internalCallbackRef.current(event);\n clickCountRef.current = 0;\n }\n };\n\n element.addEventListener('mousedown', onClick as EventListener);\n element.addEventListener('touchstart', onClick as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onClick as EventListener);\n element.removeEventListener('touchstart', onClick as EventListener);\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseDoubleClick;\n"],"names":["DEFAULT_THRESHOLD_TIME","useDoubleClick","params","target","isTarget","callback","options","timeoutIdRef","useRef","clickCountRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onClick","event"],"mappings":";;;;AAkCO,MAAMA,IAAyB,KA2BzBC,IAAkB,IAAIC,MAAuB;AACxD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCI,IAAWH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCK,IAAeC,EAAsC,MAAS,GAC9DC,IAAgBD,EAAO,CAAC,GACxBE,IAAcC,EAAA,GAEdC,IAAsBJ,EAAOH,CAAQ;AAC3C,EAAAO,EAAoB,UAAUP;AAC9B,QAAMQ,IAAqBL,EAAOF,CAAO;AAqCzC,MApCAO,EAAmB,UAAUP,GAE7BQ,EAAU,MAAM;AACd,QAAI,CAACX,KAAU,CAACO,EAAY,MAAO;AAEnC,UAAMK,IAAUZ,IAASa,EAAWb,CAAM,IAAIO,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAU,CAACC,MAA6B;AAC5C,MAAAT,EAAc,WAAW,GAErBA,EAAc,YAAY,MAC5BF,EAAa,UAAU,WAAW,MAAM;AACtC,QAAIM,EAAmB,SAAS,iBAC9BA,EAAmB,QAAQ,cAAcK,CAAK,GAChDT,EAAc,UAAU;AAAA,MAAA,GACvBI,EAAmB,SAAS,aAAab,CAAsB,IAGhES,EAAc,YAAY,MAC5B,aAAaF,EAAa,OAAO,GACjCK,EAAoB,QAAQM,CAAK,GACjCT,EAAc,UAAU;AAAA,IAC1B;AAGF,WAAAM,EAAQ,iBAAiB,aAAaE,CAAwB,GAC9DF,EAAQ,iBAAiB,cAAcE,CAAwB,GAExD,MAAM;AACX,MAAAF,EAAQ,oBAAoB,aAAaE,CAAwB,GACjEF,EAAQ,oBAAoB,cAAcE,CAAwB,GAC9DV,EAAa,WAAS,aAAaA,EAAa,OAAO;AAAA,IAAA;AAAA,EAC7D,GACC,CAACJ,GAAQO,EAAY,KAAK,CAAC,GAE1B,CAAAP;AACJ,WAAOO;AACT;"}
1
+ {"version":3,"file":"useDoubleClick.mjs","sources":["../../../../src/hooks/useDoubleClick/useDoubleClick.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nexport type DoubleClickEvents = MouseEvent | TouchEvent;\n\n/** The use double click options type */\nexport interface UseDoubleClickOptions {\n /** The threshold time in milliseconds between clicks */\n threshold?: number;\n /** The callback function to be invoked on single click */\n onSingleClick?: (event: DoubleClickEvents) => void;\n}\n\nexport interface UseDoubleClick {\n (\n target: HookTarget,\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions\n ): boolean;\n\n <Target extends Element>(\n callback: (event: DoubleClickEvents) => void,\n options?: UseDoubleClickOptions,\n target?: never\n ): StateRef<Target>;\n}\n\nexport const DEFAULT_THRESHOLD_TIME = 300;\n\n/**\n * @name useDoubleClick\n * @description - Hook that defines the logic when double clicking an element\n * @category Elements\n *\n * @overload\n * @param {HookTarget} target The target element to be double clicked\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * useDoubleClick(ref, () => console.log('double clicked'));\n *\n * @overload\n * @template Target The target element\n * @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click\n * @param {UseDoubleClickOptions} [options] The options for the double click\n * @returns {boolean} The double clicking state\n *\n * @example\n * const ref = useDoubleClick(() => console.log('double clicked'));\n *\n * @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}\n */\nexport const useDoubleClick = ((...params: any[]): any => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: DoubleClickEvents) => void;\n const options = (target ? params[2] : params[1]) as UseDoubleClickOptions | undefined;\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const clickCountRef = useRef(0);\n const internalRef = useRefState<Element>();\n\n const internalCallbackRef = useRef(callback);\n internalCallbackRef.current = callback;\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const onClick = (event: DoubleClickEvents) => {\n clickCountRef.current += 1;\n\n if (clickCountRef.current === 1) {\n timeoutIdRef.current = setTimeout(() => {\n if (internalOptionsRef.current?.onSingleClick)\n internalOptionsRef.current.onSingleClick(event);\n clickCountRef.current = 0;\n }, internalOptionsRef.current?.threshold ?? DEFAULT_THRESHOLD_TIME);\n }\n\n if (clickCountRef.current === 2) {\n clearTimeout(timeoutIdRef.current);\n internalCallbackRef.current(event);\n clickCountRef.current = 0;\n }\n };\n\n element.addEventListener('mousedown', onClick as EventListener);\n element.addEventListener('touchstart', onClick as EventListener);\n\n return () => {\n element.removeEventListener('mousedown', onClick as EventListener);\n element.removeEventListener('touchstart', onClick as EventListener);\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n }, [target, internalRef.state]);\n\n if (target) return;\n return internalRef;\n}) as UseDoubleClick;\n"],"names":["DEFAULT_THRESHOLD_TIME","useDoubleClick","params","target","isTarget","callback","options","timeoutIdRef","useRef","clickCountRef","internalRef","useRefState","internalCallbackRef","internalOptionsRef","useEffect","element","getElement","onClick","event"],"mappings":";;;;AAkCO,MAAMA,IAAyB,KA2BzBC,IAAkB,IAAIC,MAAuB;AACxD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAYF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACzCI,IAAWH,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GAExCK,IAAeC,EAAsC,MAAS,GAC9DC,IAAgBD,EAAO,CAAC,GACxBE,IAAcC,EAAA,GAEdC,IAAsBJ,EAAOH,CAAQ;AAC3C,EAAAO,EAAoB,UAAUP;AAC9B,QAAMQ,IAAqBL,EAAOF,CAAO;AAqCzC,MApCAO,EAAmB,UAAUP,GAE7BQ,EAAU,MAAM;AACd,QAAI,CAACX,KAAU,CAACO,EAAY,MAAO;AAEnC,UAAMK,IAAUZ,IAASa,EAAWb,CAAM,IAAIO,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAU,CAACC,MAA6B;AAC5C,MAAAT,EAAc,WAAW,GAErBA,EAAc,YAAY,MAC5BF,EAAa,UAAU,WAAW,MAAM;AACtC,QAAIM,EAAmB,SAAS,iBAC9BA,EAAmB,QAAQ,cAAcK,CAAK,GAChDT,EAAc,UAAU;AAAA,MAAA,GACvBI,EAAmB,SAAS,aAAab,CAAsB,IAGhES,EAAc,YAAY,MAC5B,aAAaF,EAAa,OAAO,GACjCK,EAAoB,QAAQM,CAAK,GACjCT,EAAc,UAAU;AAAA,IAC1B;AAGF,WAAAM,EAAQ,iBAAiB,aAAaE,CAAwB,GAC9DF,EAAQ,iBAAiB,cAAcE,CAAwB,GAExD,MAAM;AACX,MAAAF,EAAQ,oBAAoB,aAAaE,CAAwB,GACjEF,EAAQ,oBAAoB,cAAcE,CAAwB,GAC9DV,EAAa,WAAS,aAAaA,EAAa,OAAO;AAAA,IAAA;AAAA,EAC7D,GACC,CAACJ,GAAQO,EAAY,KAAK,CAAC,GAE1B,CAAAP;AACJ,WAAOO;AACT;"}
@@ -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":";;;;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
+ {"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>(\n target?: never\n ): {\n ref: StateRef<Target>;\n } & 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":";;;;AAoDO,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 internalCallbackRef = useRef<typeof callback>(callback);\n internalCallbackRef.current = callback;\n\n return useCallback((...args) => {\n const fn = internalCallbackRef.current;\n return fn(...args);\n }, []);\n};\n"],"names":["useEvent","callback","internalCallbackRef","useRef","useCallback","args","fn"],"mappings":";AAeO,MAAMA,IAAW,CACtBC,MACkC;AAClC,QAAMC,IAAsBC,EAAwBF,CAAQ;AAC5D,SAAAC,EAAoB,UAAUD,GAEvBG,EAAY,IAAIC,MAAS;AAC9B,UAAMC,IAAKJ,EAAoB;AAC/B,WAAOI,EAAG,GAAGD,CAAI;AAAA,EAAA,GAChB,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 Utilities\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 internalCallbackRef = useRef<typeof callback>(callback);\n internalCallbackRef.current = callback;\n\n return useCallback((...args) => {\n const fn = internalCallbackRef.current;\n return fn(...args);\n }, []);\n};\n"],"names":["useEvent","callback","internalCallbackRef","useRef","useCallback","args","fn"],"mappings":";AAeO,MAAMA,IAAW,CACtBC,MACkC;AAClC,QAAMC,IAAsBC,EAAwBF,CAAQ;AAC5D,SAAAC,EAAoB,UAAUD,GAEvBG,EAAY,IAAIC,MAAS;AAC9B,UAAMC,IAAKJ,EAAoB;AAC/B,WAAOI,EAAG,GAAGD,CAAI;AAAA,EAAA,GAChB,EAAE;AACP;"}
@@ -5,7 +5,9 @@ const L = (g, v = [], e = {}) => {
5
5
  n.current && (n.current.close(), n.current = void 0, f(!1), s(!1), y(!1));
6
6
  }, o = () => {
7
7
  l();
8
- const a = new EventSource(g, { withCredentials: e.withCredentials ?? !1 });
8
+ const a = new EventSource(g, {
9
+ withCredentials: e.withCredentials ?? !1
10
+ });
9
11
  n.current = a, s(!0), a.onopen = () => {
10
12
  f(!0), s(!1), d(void 0), e?.onOpen?.();
11
13
  }, a.onerror = (r) => {