react-simplikit 0.0.51 → 0.0.52

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 (279) hide show
  1. package/dist/components/ImpressionArea/ImpressionArea.cjs +57 -0
  2. package/{esm/components/ImpressionArea/index.d.ts → dist/components/ImpressionArea/ImpressionArea.d.cts} +9 -8
  3. package/dist/components/ImpressionArea/ImpressionArea.d.mts +48 -0
  4. package/dist/components/ImpressionArea/ImpressionArea.mjs +57 -0
  5. package/dist/components/ImpressionArea/index.d.cts +2 -46
  6. package/dist/components/ImpressionArea/index.d.mts +3 -0
  7. package/dist/components/Separated/Separated.cjs +38 -0
  8. package/{esm/components/Separated/index.d.ts → dist/components/Separated/Separated.d.cts} +7 -7
  9. package/dist/components/Separated/Separated.d.mts +38 -0
  10. package/dist/components/Separated/Separated.mjs +38 -0
  11. package/dist/components/Separated/index.d.cts +2 -37
  12. package/dist/components/Separated/index.d.mts +3 -0
  13. package/dist/components/SwitchCase/SwitchCase.cjs +40 -0
  14. package/{esm/components/SwitchCase/index.d.ts → dist/components/SwitchCase/SwitchCase.d.cts} +7 -8
  15. package/dist/components/SwitchCase/SwitchCase.d.mts +45 -0
  16. package/dist/components/SwitchCase/SwitchCase.mjs +40 -0
  17. package/dist/components/SwitchCase/index.d.cts +2 -45
  18. package/dist/components/SwitchCase/index.d.mts +3 -0
  19. package/dist/hooks/useAsyncEffect/index.d.cts +2 -24
  20. package/dist/hooks/useAsyncEffect/index.d.mts +3 -0
  21. package/dist/hooks/useAsyncEffect/useAsyncEffect.cjs +39 -0
  22. package/{esm/hooks/useAsyncEffect/index.d.ts → dist/hooks/useAsyncEffect/useAsyncEffect.d.cts} +4 -3
  23. package/dist/hooks/useAsyncEffect/useAsyncEffect.d.mts +26 -0
  24. package/dist/hooks/useAsyncEffect/useAsyncEffect.mjs +39 -0
  25. package/dist/hooks/useBooleanState/useBooleanState.cjs +36 -0
  26. package/dist/hooks/useBooleanState/{index.d.cts → useBooleanState.d.cts} +4 -2
  27. package/{esm/hooks/useBooleanState/index.d.ts → dist/hooks/useBooleanState/useBooleanState.d.mts} +4 -2
  28. package/dist/hooks/useBooleanState/useBooleanState.mjs +36 -0
  29. package/dist/hooks/useCallbackOncePerRender/index.d.cts +2 -39
  30. package/dist/hooks/useCallbackOncePerRender/index.d.mts +3 -0
  31. package/dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.cjs +52 -0
  32. package/{esm/hooks/useCallbackOncePerRender/index.d.ts → dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.d.cts} +4 -3
  33. package/dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.d.mts +41 -0
  34. package/dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.mjs +52 -0
  35. package/dist/hooks/useConditionalEffect/index.d.cts +2 -42
  36. package/dist/hooks/useConditionalEffect/index.d.mts +3 -0
  37. package/dist/hooks/useConditionalEffect/useConditionalEffect.cjs +57 -0
  38. package/{esm/hooks/useConditionalEffect/index.d.ts → dist/hooks/useConditionalEffect/useConditionalEffect.d.cts} +4 -3
  39. package/dist/hooks/useConditionalEffect/useConditionalEffect.d.mts +44 -0
  40. package/dist/hooks/useConditionalEffect/useConditionalEffect.mjs +57 -0
  41. package/dist/hooks/useControlledState/index.d.cts +2 -50
  42. package/dist/hooks/useControlledState/index.d.mts +3 -0
  43. package/dist/hooks/useControlledState/useControlledState.cjs +60 -0
  44. package/{esm/hooks/useControlledState/index.d.ts → dist/hooks/useControlledState/useControlledState.d.cts} +11 -10
  45. package/dist/hooks/useControlledState/useControlledState.d.mts +52 -0
  46. package/dist/hooks/useControlledState/useControlledState.mjs +60 -0
  47. package/dist/hooks/useCounter/useCounter.cjs +75 -0
  48. package/{esm/hooks/useCounter/index.d.ts → dist/hooks/useCounter/useCounter.d.cts} +12 -10
  49. package/dist/hooks/useCounter/{index.d.cts → useCounter.d.mts} +12 -10
  50. package/dist/hooks/useCounter/useCounter.mjs +75 -0
  51. package/dist/hooks/useDebounce/debounce.cjs +49 -0
  52. package/dist/hooks/useDebounce/debounce.d.cts +8 -0
  53. package/dist/hooks/useDebounce/debounce.d.mts +8 -0
  54. package/dist/hooks/useDebounce/debounce.mjs +49 -0
  55. package/dist/hooks/useDebounce/useDebounce.cjs +66 -0
  56. package/{esm/hooks/useDebounce/index.d.ts → dist/hooks/useDebounce/useDebounce.d.cts} +6 -8
  57. package/dist/hooks/useDebounce/{index.d.cts → useDebounce.d.mts} +6 -8
  58. package/dist/hooks/useDebounce/useDebounce.mjs +66 -0
  59. package/dist/hooks/useDebouncedCallback/useDebouncedCallback.cjs +62 -0
  60. package/{esm/hooks/useDebouncedCallback/index.d.ts → dist/hooks/useDebouncedCallback/useDebouncedCallback.d.cts} +9 -7
  61. package/dist/hooks/useDebouncedCallback/{index.d.cts → useDebouncedCallback.d.mts} +9 -7
  62. package/dist/hooks/useDebouncedCallback/useDebouncedCallback.mjs +62 -0
  63. package/dist/hooks/useDoubleClick/index.d.cts +2 -45
  64. package/dist/hooks/useDoubleClick/index.d.mts +3 -0
  65. package/dist/hooks/useDoubleClick/useDoubleClick.cjs +64 -0
  66. package/{esm/hooks/useDoubleClick/index.d.ts → dist/hooks/useDoubleClick/useDoubleClick.d.cts} +8 -7
  67. package/dist/hooks/useDoubleClick/useDoubleClick.d.mts +47 -0
  68. package/dist/hooks/useDoubleClick/useDoubleClick.mjs +64 -0
  69. package/dist/hooks/useGeolocation/useGeolocation.cjs +210 -0
  70. package/{esm/hooks/useGeolocation/index.d.ts → dist/hooks/useGeolocation/useGeolocation.d.cts} +26 -24
  71. package/dist/hooks/useGeolocation/{index.d.cts → useGeolocation.d.mts} +26 -24
  72. package/dist/hooks/useGeolocation/useGeolocation.mjs +209 -0
  73. package/dist/hooks/useImpressionRef/useImpressionRef.cjs +67 -0
  74. package/{esm/hooks/useImpressionRef/index.d.ts → dist/hooks/useImpressionRef/useImpressionRef.d.cts} +10 -8
  75. package/dist/hooks/useImpressionRef/{index.d.cts → useImpressionRef.d.mts} +10 -8
  76. package/dist/hooks/useImpressionRef/useImpressionRef.mjs +67 -0
  77. package/dist/hooks/useInputState/index.d.cts +2 -22
  78. package/dist/hooks/useInputState/index.d.mts +3 -0
  79. package/dist/hooks/useInputState/useInputState.cjs +32 -0
  80. package/{esm/hooks/useInputState/index.d.ts → dist/hooks/useInputState/useInputState.d.cts} +4 -3
  81. package/dist/hooks/useInputState/useInputState.d.mts +24 -0
  82. package/dist/hooks/useInputState/useInputState.mjs +32 -0
  83. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.cjs +58 -0
  84. package/dist/hooks/useIntersectionObserver/{index.d.cts → useIntersectionObserver.d.cts} +4 -2
  85. package/{esm/hooks/useIntersectionObserver/index.d.ts → dist/hooks/useIntersectionObserver/useIntersectionObserver.d.mts} +4 -2
  86. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.mjs +58 -0
  87. package/dist/hooks/useInterval/useInterval.cjs +65 -0
  88. package/dist/hooks/useInterval/{index.d.cts → useInterval.d.cts} +7 -5
  89. package/{esm/hooks/useInterval/index.d.ts → dist/hooks/useInterval/useInterval.d.mts} +7 -5
  90. package/dist/hooks/useInterval/useInterval.mjs +65 -0
  91. package/dist/hooks/useIsClient/useIsClient.cjs +49 -0
  92. package/dist/hooks/useIsClient/{index.d.cts → useIsClient.d.cts} +4 -2
  93. package/{esm/hooks/useIsClient/index.d.ts → dist/hooks/useIsClient/useIsClient.d.mts} +4 -2
  94. package/dist/hooks/useIsClient/useIsClient.mjs +49 -0
  95. package/dist/hooks/useIsomorphicLayoutEffect/index.d.cts +2 -24
  96. package/dist/hooks/useIsomorphicLayoutEffect/index.d.mts +3 -0
  97. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +25 -0
  98. package/{esm/hooks/useIsomorphicLayoutEffect/index.d.ts → dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.cts} +4 -3
  99. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.mts +26 -0
  100. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +25 -0
  101. package/dist/hooks/useList/useList.cjs +94 -0
  102. package/{esm/hooks/useList/index.d.ts → dist/hooks/useList/useList.d.cts} +10 -8
  103. package/dist/hooks/useList/{index.d.cts → useList.d.mts} +10 -8
  104. package/dist/hooks/useList/useList.mjs +94 -0
  105. package/dist/hooks/useLoading/useLoading.cjs +61 -0
  106. package/dist/hooks/useLoading/{index.d.cts → useLoading.d.cts} +4 -2
  107. package/{esm/hooks/useLoading/index.d.ts → dist/hooks/useLoading/useLoading.d.mts} +4 -2
  108. package/dist/hooks/useLoading/useLoading.mjs +61 -0
  109. package/dist/hooks/useLongPress/index.d.cts +2 -73
  110. package/dist/hooks/useLongPress/index.d.mts +3 -0
  111. package/dist/hooks/useLongPress/useLongPress.cjs +133 -0
  112. package/{esm/hooks/useLongPress/index.d.ts → dist/hooks/useLongPress/useLongPress.d.cts} +18 -17
  113. package/dist/hooks/useLongPress/useLongPress.d.mts +75 -0
  114. package/dist/hooks/useLongPress/useLongPress.mjs +133 -0
  115. package/dist/hooks/useMap/useMap.cjs +64 -0
  116. package/dist/hooks/useMap/{index.d.cts → useMap.d.cts} +12 -10
  117. package/{esm/hooks/useMap/index.d.ts → dist/hooks/useMap/useMap.d.mts} +12 -10
  118. package/dist/hooks/useMap/useMap.mjs +64 -0
  119. package/dist/hooks/useOutsideClickEffect/useOutsideClickEffect.cjs +51 -0
  120. package/dist/hooks/useOutsideClickEffect/{index.d.cts → useOutsideClickEffect.d.cts} +4 -2
  121. package/{esm/hooks/useOutsideClickEffect/index.d.ts → dist/hooks/useOutsideClickEffect/useOutsideClickEffect.d.mts} +4 -2
  122. package/dist/hooks/useOutsideClickEffect/useOutsideClickEffect.mjs +51 -0
  123. package/dist/hooks/usePreservedCallback/usePreservedCallback.cjs +41 -0
  124. package/dist/hooks/usePreservedCallback/{index.d.cts → usePreservedCallback.d.cts} +4 -2
  125. package/{esm/hooks/usePreservedCallback/index.d.ts → dist/hooks/usePreservedCallback/usePreservedCallback.d.mts} +4 -2
  126. package/dist/hooks/usePreservedCallback/usePreservedCallback.mjs +41 -0
  127. package/dist/hooks/usePreservedReference/usePreservedReference.cjs +55 -0
  128. package/dist/hooks/usePreservedReference/{index.d.cts → usePreservedReference.d.cts} +4 -2
  129. package/{esm/hooks/usePreservedReference/index.d.ts → dist/hooks/usePreservedReference/usePreservedReference.d.mts} +4 -2
  130. package/dist/hooks/usePreservedReference/usePreservedReference.mjs +55 -0
  131. package/dist/hooks/usePrevious/usePrevious.cjs +38 -0
  132. package/{esm/hooks/usePrevious/index.d.ts → dist/hooks/usePrevious/usePrevious.d.cts} +4 -2
  133. package/dist/hooks/usePrevious/{index.d.cts → usePrevious.d.mts} +4 -2
  134. package/dist/hooks/usePrevious/usePrevious.mjs +38 -0
  135. package/dist/hooks/useRefEffect/index.d.cts +2 -30
  136. package/dist/hooks/useRefEffect/index.d.mts +3 -0
  137. package/dist/hooks/useRefEffect/useRefEffect.cjs +42 -0
  138. package/{esm/hooks/useRefEffect/index.d.ts → dist/hooks/useRefEffect/useRefEffect.d.cts} +4 -3
  139. package/dist/hooks/useRefEffect/useRefEffect.d.mts +32 -0
  140. package/dist/hooks/useRefEffect/useRefEffect.mjs +42 -0
  141. package/dist/hooks/useSet/useSet.cjs +79 -0
  142. package/dist/hooks/useSet/{index.d.cts → useSet.d.cts} +9 -7
  143. package/{esm/hooks/useSet/index.d.ts → dist/hooks/useSet/useSet.d.mts} +9 -7
  144. package/dist/hooks/useSet/useSet.mjs +79 -0
  145. package/dist/hooks/useStorageState/index.d.cts +2 -60
  146. package/dist/hooks/useStorageState/index.d.mts +3 -0
  147. package/dist/hooks/useStorageState/storage.cjs +85 -0
  148. package/dist/hooks/useStorageState/storage.d.cts +10 -0
  149. package/dist/hooks/useStorageState/storage.d.mts +10 -0
  150. package/dist/hooks/useStorageState/storage.mjs +80 -0
  151. package/dist/hooks/useStorageState/useStorageState.cjs +81 -0
  152. package/{esm/hooks/useStorageState/index.d.ts → dist/hooks/useStorageState/useStorageState.d.cts} +10 -15
  153. package/dist/hooks/useStorageState/useStorageState.d.mts +56 -0
  154. package/dist/hooks/useStorageState/useStorageState.mjs +81 -0
  155. package/dist/hooks/useThrottle/throttle.cjs +19 -0
  156. package/dist/hooks/useThrottle/throttle.d.cts +19 -0
  157. package/dist/hooks/useThrottle/throttle.d.mts +19 -0
  158. package/dist/hooks/useThrottle/throttle.mjs +19 -0
  159. package/dist/hooks/useThrottle/useThrottle.cjs +49 -0
  160. package/dist/hooks/useThrottle/{index.d.cts → useThrottle.d.cts} +6 -19
  161. package/{esm/hooks/useThrottle/index.d.ts → dist/hooks/useThrottle/useThrottle.d.mts} +6 -19
  162. package/dist/hooks/useThrottle/useThrottle.mjs +49 -0
  163. package/dist/hooks/useThrottledCallback/useThrottledCallback.cjs +57 -0
  164. package/{esm/hooks/useThrottledCallback/index.d.ts → dist/hooks/useThrottledCallback/useThrottledCallback.d.cts} +8 -6
  165. package/dist/hooks/useThrottledCallback/{index.d.cts → useThrottledCallback.d.mts} +8 -6
  166. package/dist/hooks/useThrottledCallback/useThrottledCallback.mjs +57 -0
  167. package/dist/hooks/useTimeout/useTimeout.cjs +40 -0
  168. package/dist/hooks/useTimeout/{index.d.cts → useTimeout.d.cts} +4 -2
  169. package/{esm/hooks/useTimeout/index.d.ts → dist/hooks/useTimeout/useTimeout.d.mts} +4 -2
  170. package/dist/hooks/useTimeout/useTimeout.mjs +40 -0
  171. package/dist/hooks/useToggle/useToggle.cjs +34 -0
  172. package/dist/hooks/useToggle/{index.d.cts → useToggle.d.cts} +4 -4
  173. package/{esm/hooks/useToggle/index.d.ts → dist/hooks/useToggle/useToggle.d.mts} +4 -4
  174. package/dist/hooks/useToggle/useToggle.mjs +34 -0
  175. package/dist/hooks/useVisibilityEvent/useVisibilityEvent.cjs +42 -0
  176. package/{esm/hooks/useVisibilityEvent/index.d.ts → dist/hooks/useVisibilityEvent/useVisibilityEvent.d.cts} +5 -3
  177. package/dist/hooks/useVisibilityEvent/{index.d.cts → useVisibilityEvent.d.mts} +5 -3
  178. package/dist/hooks/useVisibilityEvent/useVisibilityEvent.mjs +42 -0
  179. package/dist/index.cjs +77 -1397
  180. package/dist/index.d.cts +56 -40
  181. package/dist/index.d.mts +56 -0
  182. package/dist/index.mjs +40 -0
  183. package/dist/utils/buildContext/buildContext.cjs +50 -0
  184. package/{esm/utils/buildContext/index.d.ts → dist/utils/buildContext/buildContext.d.cts} +7 -7
  185. package/dist/utils/buildContext/buildContext.d.mts +38 -0
  186. package/dist/utils/buildContext/buildContext.mjs +50 -0
  187. package/dist/utils/buildContext/index.d.cts +2 -37
  188. package/dist/utils/buildContext/index.d.mts +3 -0
  189. package/dist/utils/mergeProps/index.d.cts +2 -25
  190. package/dist/utils/mergeProps/index.d.mts +3 -0
  191. package/dist/utils/mergeProps/mergeProps.cjs +53 -0
  192. package/{esm/utils/mergeProps/index.d.ts → dist/utils/mergeProps/mergeProps.d.cts} +7 -8
  193. package/dist/utils/mergeProps/mergeProps.d.mts +25 -0
  194. package/dist/utils/mergeProps/mergeProps.mjs +53 -0
  195. package/dist/utils/mergeRefs/index.d.cts +2 -38
  196. package/dist/utils/mergeRefs/index.d.mts +3 -0
  197. package/dist/utils/mergeRefs/mergeRefs.cjs +50 -0
  198. package/{esm/utils/mergeRefs/index.d.ts → dist/utils/mergeRefs/mergeRefs.d.cts} +4 -3
  199. package/dist/utils/mergeRefs/mergeRefs.d.mts +40 -0
  200. package/dist/utils/mergeRefs/mergeRefs.mjs +50 -0
  201. package/package.json +9 -11
  202. package/dist/components/ImpressionArea/index.cjs +0 -295
  203. package/dist/components/Separated/index.cjs +0 -41
  204. package/dist/components/SwitchCase/index.cjs +0 -36
  205. package/dist/hooks/useAsyncEffect/index.cjs +0 -49
  206. package/dist/hooks/useBooleanState/index.cjs +0 -46
  207. package/dist/hooks/useCallbackOncePerRender/index.cjs +0 -63
  208. package/dist/hooks/useConditionalEffect/index.cjs +0 -51
  209. package/dist/hooks/useControlledState/index.cjs +0 -57
  210. package/dist/hooks/useCounter/index.cjs +0 -70
  211. package/dist/hooks/useDebounce/index.cjs +0 -130
  212. package/dist/hooks/useDebouncedCallback/index.cjs +0 -148
  213. package/dist/hooks/useDoubleClick/index.cjs +0 -79
  214. package/dist/hooks/useGeolocation/index.cjs +0 -154
  215. package/dist/hooks/useImpressionRef/index.cjs +0 -258
  216. package/dist/hooks/useInputState/index.cjs +0 -46
  217. package/dist/hooks/useIntersectionObserver/index.cjs +0 -95
  218. package/dist/hooks/useInterval/index.cjs +0 -84
  219. package/dist/hooks/useIsClient/index.cjs +0 -40
  220. package/dist/hooks/useIsomorphicLayoutEffect/index.cjs +0 -35
  221. package/dist/hooks/useList/index.cjs +0 -104
  222. package/dist/hooks/useLoading/index.cjs +0 -65
  223. package/dist/hooks/useLongPress/index.cjs +0 -127
  224. package/dist/hooks/useMap/index.cjs +0 -78
  225. package/dist/hooks/useOutsideClickEffect/index.cjs +0 -74
  226. package/dist/hooks/usePreservedCallback/index.cjs +0 -45
  227. package/dist/hooks/usePreservedReference/index.cjs +0 -45
  228. package/dist/hooks/usePrevious/index.cjs +0 -48
  229. package/dist/hooks/useRefEffect/index.cjs +0 -72
  230. package/dist/hooks/useSet/index.cjs +0 -105
  231. package/dist/hooks/useStorageState/index.cjs +0 -196
  232. package/dist/hooks/useThrottle/index.cjs +0 -151
  233. package/dist/hooks/useThrottledCallback/index.cjs +0 -172
  234. package/dist/hooks/useTimeout/index.cjs +0 -57
  235. package/dist/hooks/useToggle/index.cjs +0 -37
  236. package/dist/hooks/useVisibilityEvent/index.cjs +0 -47
  237. package/dist/utils/buildContext/index.cjs +0 -56
  238. package/dist/utils/mergeProps/index.cjs +0 -71
  239. package/dist/utils/mergeRefs/index.cjs +0 -46
  240. package/esm/components/ImpressionArea/index.js +0 -269
  241. package/esm/components/Separated/index.js +0 -15
  242. package/esm/components/SwitchCase/index.js +0 -10
  243. package/esm/hooks/useAsyncEffect/index.js +0 -23
  244. package/esm/hooks/useBooleanState/index.js +0 -20
  245. package/esm/hooks/useCallbackOncePerRender/index.js +0 -37
  246. package/esm/hooks/useConditionalEffect/index.js +0 -25
  247. package/esm/hooks/useControlledState/index.js +0 -31
  248. package/esm/hooks/useCounter/index.js +0 -44
  249. package/esm/hooks/useDebounce/index.js +0 -104
  250. package/esm/hooks/useDebouncedCallback/index.js +0 -122
  251. package/esm/hooks/useDoubleClick/index.js +0 -53
  252. package/esm/hooks/useGeolocation/index.js +0 -128
  253. package/esm/hooks/useImpressionRef/index.js +0 -232
  254. package/esm/hooks/useInputState/index.js +0 -20
  255. package/esm/hooks/useIntersectionObserver/index.js +0 -69
  256. package/esm/hooks/useInterval/index.js +0 -58
  257. package/esm/hooks/useIsClient/index.js +0 -14
  258. package/esm/hooks/useIsomorphicLayoutEffect/index.js +0 -9
  259. package/esm/hooks/useList/index.js +0 -78
  260. package/esm/hooks/useLoading/index.js +0 -39
  261. package/esm/hooks/useLongPress/index.js +0 -101
  262. package/esm/hooks/useMap/index.js +0 -52
  263. package/esm/hooks/useOutsideClickEffect/index.js +0 -48
  264. package/esm/hooks/usePreservedCallback/index.js +0 -19
  265. package/esm/hooks/usePreservedReference/index.js +0 -19
  266. package/esm/hooks/usePrevious/index.js +0 -22
  267. package/esm/hooks/useRefEffect/index.js +0 -46
  268. package/esm/hooks/useSet/index.js +0 -79
  269. package/esm/hooks/useStorageState/index.js +0 -170
  270. package/esm/hooks/useThrottle/index.js +0 -125
  271. package/esm/hooks/useThrottledCallback/index.js +0 -146
  272. package/esm/hooks/useTimeout/index.js +0 -31
  273. package/esm/hooks/useToggle/index.js +0 -11
  274. package/esm/hooks/useVisibilityEvent/index.js +0 -21
  275. package/esm/index.d.ts +0 -40
  276. package/esm/index.js +0 -1335
  277. package/esm/utils/buildContext/index.js +0 -30
  278. package/esm/utils/mergeProps/index.js +0 -45
  279. package/esm/utils/mergeRefs/index.js +0 -20
@@ -0,0 +1,210 @@
1
+ "use client";
2
+ let react = require("react");
3
+ //#region src/hooks/useGeolocation/useGeolocation.ts
4
+ var CustomGeoLocationError = class extends Error {
5
+ code;
6
+ constructor({ code, message }) {
7
+ super(message);
8
+ this.name = "CustomGeoLocationError";
9
+ this.code = code;
10
+ }
11
+ };
12
+ const GeolocationMountBehavior = {
13
+ GET: "get",
14
+ WATCH: "watch"
15
+ };
16
+ /**
17
+ * @deprecated This hook is deprecated as it depends on browser-specific APIs (navigator.geolocation).
18
+ * react-simplikit is now focused on platform-independent, pure state/logic hooks.
19
+ * This hook will be removed in a future major version.
20
+ *
21
+ * @description
22
+ * `useGeolocation` is a React hook that retrieves and tracks the user's geographical location.
23
+ * It uses the browser's `Geolocation API` to support both one-time position retrieval and continuous location tracking.
24
+ *
25
+ * @param {GeolocationOptions} [options] - Geolocation options configuration
26
+ * @param {GeolocationMountBehaviorType} [options.mountBehavior] - How the hook behaves on mount:
27
+ * -- If not provided, no automatic location fetching occurs
28
+ * -- `get`: automatically fetches location once when component mounts
29
+ * -- `watch`: automatically starts tracking location changes when component mounts
30
+ * @param {boolean} [options.enableHighAccuracy=false] - If true, provides more accurate position information (increases battery consumption)
31
+ * @param {number} [options.maximumAge=0] - Maximum age in milliseconds of a cached position that is acceptable to return
32
+ * @param {number} [options.timeout=Infinity] - Maximum time (in milliseconds) allowed for the location request
33
+ *
34
+ * @returns {Object} Object containing location data and related functions
35
+ * - loading `boolean` - Whether location data is currently being fetched;
36
+ * - error `CustomGeoLocationError|null` - Error object if an error occurred, or null
37
+ * The hook uses standard Geolocation API error codes (`1-3`) and adds a custom code (`0`)
38
+ * : `0` - Geolocation is not supported by the environment
39
+ * : `1` - User denied permission to access geolocation
40
+ * : `2` - Position unavailable
41
+ * : `3` - Timeout - geolocation request took too long;
42
+ * - data `GeolocationData|null` - Location data object or null
43
+ * : latitude `number` - The latitude in decimal degrees
44
+ * : longitude `number` - The longitude in decimal degrees
45
+ * : accuracy `number` - The accuracy of position in meters
46
+ * : altitude `number|null` - The altitude in meters above the WGS84 ellipsoid
47
+ * : altitudeAccuracy `number|null` - The altitude accuracy in meters
48
+ * : heading `number|null` - The heading in degrees clockwise from true north
49
+ * : speed `number|null` - The speed in meters per second
50
+ * : timestamp `number` - The time when the position was retrieved;
51
+ * - getCurrentPosition `Function` - Function to get the current position once;
52
+ * - startTracking `Function` - Function to start tracking location changes;
53
+ * - stopTracking `Function` - Function to stop tracking location;
54
+ * - isTracking `boolean` - Whether location tracking is currently active;
55
+ *
56
+ * @example
57
+ * // Basic usage
58
+ * const {
59
+ * loading,
60
+ * error,
61
+ * data,
62
+ * getCurrentPosition
63
+ * } = useGeolocation();
64
+ *
65
+ * // Automatically fetch location when component mounts
66
+ * const {
67
+ * loading,
68
+ * error,
69
+ * data
70
+ * } = useGeolocation({ mountBehavior: 'get' });
71
+ *
72
+ * // Location tracking
73
+ * const {
74
+ * loading,
75
+ * error,
76
+ * data,
77
+ * startTracking,
78
+ * stopTracking,
79
+ * isTracking
80
+ * } = useGeolocation();
81
+ *
82
+ * const handleStartTracking = () => {
83
+ * startTracking();
84
+ * };
85
+ *
86
+ * const handleStopTracking = () => {
87
+ * stopTracking();
88
+ * };
89
+ */
90
+ function useGeolocation(options) {
91
+ const [state, setState] = (0, react.useState)({
92
+ loading: !!options?.mountBehavior,
93
+ error: null,
94
+ data: null
95
+ });
96
+ const [isTracking, setIsTracking] = (0, react.useState)(false);
97
+ const watchIdRef = (0, react.useRef)(null);
98
+ const checkGeolocationSupport = (0, react.useCallback)(() => {
99
+ if (typeof window === "undefined" || navigator.geolocation === void 0) {
100
+ setState((prev) => ({
101
+ ...prev,
102
+ loading: false,
103
+ error: new CustomGeoLocationError({
104
+ code: 0,
105
+ message: "Geolocation is not supported by this environment."
106
+ })
107
+ }));
108
+ return false;
109
+ }
110
+ return true;
111
+ }, []);
112
+ const handleSuccess = (0, react.useCallback)((position) => {
113
+ const { coords } = position;
114
+ setState((prev) => ({
115
+ ...prev,
116
+ loading: false,
117
+ error: null,
118
+ data: {
119
+ latitude: coords.latitude,
120
+ longitude: coords.longitude,
121
+ accuracy: coords.accuracy,
122
+ altitude: coords.altitude,
123
+ altitudeAccuracy: coords.altitudeAccuracy,
124
+ heading: coords.heading,
125
+ speed: coords.speed,
126
+ timestamp: position.timestamp
127
+ }
128
+ }));
129
+ }, []);
130
+ const handleError = (0, react.useCallback)((error) => {
131
+ const { code, message } = error;
132
+ setState((prev) => ({
133
+ ...prev,
134
+ loading: false,
135
+ error: new CustomGeoLocationError({
136
+ code,
137
+ message
138
+ })
139
+ }));
140
+ }, []);
141
+ const getGeolocationOptions = (0, react.useCallback)(() => ({
142
+ enableHighAccuracy: options?.enableHighAccuracy,
143
+ maximumAge: options?.maximumAge,
144
+ timeout: options?.timeout
145
+ }), [
146
+ options?.enableHighAccuracy,
147
+ options?.maximumAge,
148
+ options?.timeout
149
+ ]);
150
+ const getCurrentPosition = (0, react.useCallback)(() => {
151
+ if (!checkGeolocationSupport()) return;
152
+ setState((prev) => ({
153
+ ...prev,
154
+ loading: true
155
+ }));
156
+ navigator.geolocation.getCurrentPosition(handleSuccess, handleError, getGeolocationOptions());
157
+ }, [
158
+ handleSuccess,
159
+ handleError,
160
+ getGeolocationOptions,
161
+ checkGeolocationSupport
162
+ ]);
163
+ const startTracking = (0, react.useCallback)(() => {
164
+ if (!checkGeolocationSupport()) return;
165
+ if (watchIdRef.current !== null) navigator.geolocation.clearWatch(watchIdRef.current);
166
+ setState((prev) => ({
167
+ ...prev,
168
+ loading: true
169
+ }));
170
+ watchIdRef.current = navigator.geolocation.watchPosition((position) => {
171
+ setIsTracking(true);
172
+ handleSuccess(position);
173
+ }, handleError, getGeolocationOptions());
174
+ }, [
175
+ handleSuccess,
176
+ handleError,
177
+ getGeolocationOptions,
178
+ checkGeolocationSupport
179
+ ]);
180
+ const stopTracking = (0, react.useCallback)(() => {
181
+ if (watchIdRef.current === null) return;
182
+ navigator.geolocation.clearWatch(watchIdRef.current);
183
+ watchIdRef.current = null;
184
+ setIsTracking(false);
185
+ }, []);
186
+ (0, react.useEffect)(() => {
187
+ if (options?.mountBehavior === GeolocationMountBehavior.WATCH) startTracking();
188
+ else if (options?.mountBehavior === GeolocationMountBehavior.GET) getCurrentPosition();
189
+ return () => {
190
+ if (watchIdRef.current !== null) {
191
+ navigator.geolocation.clearWatch(watchIdRef.current);
192
+ watchIdRef.current = null;
193
+ }
194
+ };
195
+ }, [
196
+ options?.mountBehavior,
197
+ getCurrentPosition,
198
+ startTracking
199
+ ]);
200
+ return {
201
+ ...state,
202
+ getCurrentPosition,
203
+ startTracking,
204
+ stopTracking,
205
+ isTracking
206
+ };
207
+ }
208
+ //#endregion
209
+ exports.CustomGeoLocationError = CustomGeoLocationError;
210
+ exports.useGeolocation = useGeolocation;
@@ -1,27 +1,29 @@
1
+
2
+ //#region src/hooks/useGeolocation/useGeolocation.d.ts
1
3
  declare class CustomGeoLocationError extends Error {
4
+ code: number;
5
+ constructor({ code, message }: {
6
+ message: string;
2
7
  code: number;
3
- constructor({ code, message }: {
4
- message: string;
5
- code: number;
6
- });
8
+ });
7
9
  }
8
10
  type GeolocationData = {
9
- latitude: number;
10
- longitude: number;
11
- accuracy: number;
12
- altitude: number | null;
13
- altitudeAccuracy: number | null;
14
- heading: number | null;
15
- speed: number | null;
16
- timestamp: number;
11
+ latitude: number;
12
+ longitude: number;
13
+ accuracy: number;
14
+ altitude: number | null;
15
+ altitudeAccuracy: number | null;
16
+ heading: number | null;
17
+ speed: number | null;
18
+ timestamp: number;
17
19
  };
18
20
  declare const GeolocationMountBehavior: {
19
- readonly GET: "get";
20
- readonly WATCH: "watch";
21
+ readonly GET: "get";
22
+ readonly WATCH: "watch";
21
23
  };
22
24
  type GeolocationMountBehaviorType = (typeof GeolocationMountBehavior)[keyof typeof GeolocationMountBehavior];
23
25
  type GeolocationOptions = {
24
- mountBehavior?: GeolocationMountBehaviorType;
26
+ mountBehavior?: GeolocationMountBehaviorType;
25
27
  } & PositionOptions;
26
28
  /**
27
29
  * @deprecated This hook is deprecated as it depends on browser-specific APIs (navigator.geolocation).
@@ -98,13 +100,13 @@ type GeolocationOptions = {
98
100
  * };
99
101
  */
100
102
  declare function useGeolocation(options?: GeolocationOptions): {
101
- getCurrentPosition: () => void;
102
- startTracking: () => void;
103
- stopTracking: () => void;
104
- isTracking: boolean;
105
- loading: boolean;
106
- error: CustomGeoLocationError | null;
107
- data: GeolocationData | null;
103
+ getCurrentPosition: () => void;
104
+ startTracking: () => void;
105
+ stopTracking: () => void;
106
+ isTracking: boolean;
107
+ loading: boolean;
108
+ error: CustomGeoLocationError | null;
109
+ data: GeolocationData | null;
108
110
  };
109
-
110
- export { useGeolocation };
111
+ //#endregion
112
+ export { CustomGeoLocationError, useGeolocation };
@@ -1,27 +1,29 @@
1
+
2
+ //#region src/hooks/useGeolocation/useGeolocation.d.ts
1
3
  declare class CustomGeoLocationError extends Error {
4
+ code: number;
5
+ constructor({ code, message }: {
6
+ message: string;
2
7
  code: number;
3
- constructor({ code, message }: {
4
- message: string;
5
- code: number;
6
- });
8
+ });
7
9
  }
8
10
  type GeolocationData = {
9
- latitude: number;
10
- longitude: number;
11
- accuracy: number;
12
- altitude: number | null;
13
- altitudeAccuracy: number | null;
14
- heading: number | null;
15
- speed: number | null;
16
- timestamp: number;
11
+ latitude: number;
12
+ longitude: number;
13
+ accuracy: number;
14
+ altitude: number | null;
15
+ altitudeAccuracy: number | null;
16
+ heading: number | null;
17
+ speed: number | null;
18
+ timestamp: number;
17
19
  };
18
20
  declare const GeolocationMountBehavior: {
19
- readonly GET: "get";
20
- readonly WATCH: "watch";
21
+ readonly GET: "get";
22
+ readonly WATCH: "watch";
21
23
  };
22
24
  type GeolocationMountBehaviorType = (typeof GeolocationMountBehavior)[keyof typeof GeolocationMountBehavior];
23
25
  type GeolocationOptions = {
24
- mountBehavior?: GeolocationMountBehaviorType;
26
+ mountBehavior?: GeolocationMountBehaviorType;
25
27
  } & PositionOptions;
26
28
  /**
27
29
  * @deprecated This hook is deprecated as it depends on browser-specific APIs (navigator.geolocation).
@@ -98,13 +100,13 @@ type GeolocationOptions = {
98
100
  * };
99
101
  */
100
102
  declare function useGeolocation(options?: GeolocationOptions): {
101
- getCurrentPosition: () => void;
102
- startTracking: () => void;
103
- stopTracking: () => void;
104
- isTracking: boolean;
105
- loading: boolean;
106
- error: CustomGeoLocationError | null;
107
- data: GeolocationData | null;
103
+ getCurrentPosition: () => void;
104
+ startTracking: () => void;
105
+ stopTracking: () => void;
106
+ isTracking: boolean;
107
+ loading: boolean;
108
+ error: CustomGeoLocationError | null;
109
+ data: GeolocationData | null;
108
110
  };
109
-
110
- export { useGeolocation };
111
+ //#endregion
112
+ export { CustomGeoLocationError, useGeolocation };
@@ -0,0 +1,209 @@
1
+ "use client";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ //#region src/hooks/useGeolocation/useGeolocation.ts
4
+ var CustomGeoLocationError = class extends Error {
5
+ code;
6
+ constructor({ code, message }) {
7
+ super(message);
8
+ this.name = "CustomGeoLocationError";
9
+ this.code = code;
10
+ }
11
+ };
12
+ const GeolocationMountBehavior = {
13
+ GET: "get",
14
+ WATCH: "watch"
15
+ };
16
+ /**
17
+ * @deprecated This hook is deprecated as it depends on browser-specific APIs (navigator.geolocation).
18
+ * react-simplikit is now focused on platform-independent, pure state/logic hooks.
19
+ * This hook will be removed in a future major version.
20
+ *
21
+ * @description
22
+ * `useGeolocation` is a React hook that retrieves and tracks the user's geographical location.
23
+ * It uses the browser's `Geolocation API` to support both one-time position retrieval and continuous location tracking.
24
+ *
25
+ * @param {GeolocationOptions} [options] - Geolocation options configuration
26
+ * @param {GeolocationMountBehaviorType} [options.mountBehavior] - How the hook behaves on mount:
27
+ * -- If not provided, no automatic location fetching occurs
28
+ * -- `get`: automatically fetches location once when component mounts
29
+ * -- `watch`: automatically starts tracking location changes when component mounts
30
+ * @param {boolean} [options.enableHighAccuracy=false] - If true, provides more accurate position information (increases battery consumption)
31
+ * @param {number} [options.maximumAge=0] - Maximum age in milliseconds of a cached position that is acceptable to return
32
+ * @param {number} [options.timeout=Infinity] - Maximum time (in milliseconds) allowed for the location request
33
+ *
34
+ * @returns {Object} Object containing location data and related functions
35
+ * - loading `boolean` - Whether location data is currently being fetched;
36
+ * - error `CustomGeoLocationError|null` - Error object if an error occurred, or null
37
+ * The hook uses standard Geolocation API error codes (`1-3`) and adds a custom code (`0`)
38
+ * : `0` - Geolocation is not supported by the environment
39
+ * : `1` - User denied permission to access geolocation
40
+ * : `2` - Position unavailable
41
+ * : `3` - Timeout - geolocation request took too long;
42
+ * - data `GeolocationData|null` - Location data object or null
43
+ * : latitude `number` - The latitude in decimal degrees
44
+ * : longitude `number` - The longitude in decimal degrees
45
+ * : accuracy `number` - The accuracy of position in meters
46
+ * : altitude `number|null` - The altitude in meters above the WGS84 ellipsoid
47
+ * : altitudeAccuracy `number|null` - The altitude accuracy in meters
48
+ * : heading `number|null` - The heading in degrees clockwise from true north
49
+ * : speed `number|null` - The speed in meters per second
50
+ * : timestamp `number` - The time when the position was retrieved;
51
+ * - getCurrentPosition `Function` - Function to get the current position once;
52
+ * - startTracking `Function` - Function to start tracking location changes;
53
+ * - stopTracking `Function` - Function to stop tracking location;
54
+ * - isTracking `boolean` - Whether location tracking is currently active;
55
+ *
56
+ * @example
57
+ * // Basic usage
58
+ * const {
59
+ * loading,
60
+ * error,
61
+ * data,
62
+ * getCurrentPosition
63
+ * } = useGeolocation();
64
+ *
65
+ * // Automatically fetch location when component mounts
66
+ * const {
67
+ * loading,
68
+ * error,
69
+ * data
70
+ * } = useGeolocation({ mountBehavior: 'get' });
71
+ *
72
+ * // Location tracking
73
+ * const {
74
+ * loading,
75
+ * error,
76
+ * data,
77
+ * startTracking,
78
+ * stopTracking,
79
+ * isTracking
80
+ * } = useGeolocation();
81
+ *
82
+ * const handleStartTracking = () => {
83
+ * startTracking();
84
+ * };
85
+ *
86
+ * const handleStopTracking = () => {
87
+ * stopTracking();
88
+ * };
89
+ */
90
+ function useGeolocation(options) {
91
+ const [state, setState] = useState({
92
+ loading: !!options?.mountBehavior,
93
+ error: null,
94
+ data: null
95
+ });
96
+ const [isTracking, setIsTracking] = useState(false);
97
+ const watchIdRef = useRef(null);
98
+ const checkGeolocationSupport = useCallback(() => {
99
+ if (typeof window === "undefined" || navigator.geolocation === void 0) {
100
+ setState((prev) => ({
101
+ ...prev,
102
+ loading: false,
103
+ error: new CustomGeoLocationError({
104
+ code: 0,
105
+ message: "Geolocation is not supported by this environment."
106
+ })
107
+ }));
108
+ return false;
109
+ }
110
+ return true;
111
+ }, []);
112
+ const handleSuccess = useCallback((position) => {
113
+ const { coords } = position;
114
+ setState((prev) => ({
115
+ ...prev,
116
+ loading: false,
117
+ error: null,
118
+ data: {
119
+ latitude: coords.latitude,
120
+ longitude: coords.longitude,
121
+ accuracy: coords.accuracy,
122
+ altitude: coords.altitude,
123
+ altitudeAccuracy: coords.altitudeAccuracy,
124
+ heading: coords.heading,
125
+ speed: coords.speed,
126
+ timestamp: position.timestamp
127
+ }
128
+ }));
129
+ }, []);
130
+ const handleError = useCallback((error) => {
131
+ const { code, message } = error;
132
+ setState((prev) => ({
133
+ ...prev,
134
+ loading: false,
135
+ error: new CustomGeoLocationError({
136
+ code,
137
+ message
138
+ })
139
+ }));
140
+ }, []);
141
+ const getGeolocationOptions = useCallback(() => ({
142
+ enableHighAccuracy: options?.enableHighAccuracy,
143
+ maximumAge: options?.maximumAge,
144
+ timeout: options?.timeout
145
+ }), [
146
+ options?.enableHighAccuracy,
147
+ options?.maximumAge,
148
+ options?.timeout
149
+ ]);
150
+ const getCurrentPosition = useCallback(() => {
151
+ if (!checkGeolocationSupport()) return;
152
+ setState((prev) => ({
153
+ ...prev,
154
+ loading: true
155
+ }));
156
+ navigator.geolocation.getCurrentPosition(handleSuccess, handleError, getGeolocationOptions());
157
+ }, [
158
+ handleSuccess,
159
+ handleError,
160
+ getGeolocationOptions,
161
+ checkGeolocationSupport
162
+ ]);
163
+ const startTracking = useCallback(() => {
164
+ if (!checkGeolocationSupport()) return;
165
+ if (watchIdRef.current !== null) navigator.geolocation.clearWatch(watchIdRef.current);
166
+ setState((prev) => ({
167
+ ...prev,
168
+ loading: true
169
+ }));
170
+ watchIdRef.current = navigator.geolocation.watchPosition((position) => {
171
+ setIsTracking(true);
172
+ handleSuccess(position);
173
+ }, handleError, getGeolocationOptions());
174
+ }, [
175
+ handleSuccess,
176
+ handleError,
177
+ getGeolocationOptions,
178
+ checkGeolocationSupport
179
+ ]);
180
+ const stopTracking = useCallback(() => {
181
+ if (watchIdRef.current === null) return;
182
+ navigator.geolocation.clearWatch(watchIdRef.current);
183
+ watchIdRef.current = null;
184
+ setIsTracking(false);
185
+ }, []);
186
+ useEffect(() => {
187
+ if (options?.mountBehavior === GeolocationMountBehavior.WATCH) startTracking();
188
+ else if (options?.mountBehavior === GeolocationMountBehavior.GET) getCurrentPosition();
189
+ return () => {
190
+ if (watchIdRef.current !== null) {
191
+ navigator.geolocation.clearWatch(watchIdRef.current);
192
+ watchIdRef.current = null;
193
+ }
194
+ };
195
+ }, [
196
+ options?.mountBehavior,
197
+ getCurrentPosition,
198
+ startTracking
199
+ ]);
200
+ return {
201
+ ...state,
202
+ getCurrentPosition,
203
+ startTracking,
204
+ stopTracking,
205
+ isTracking
206
+ };
207
+ }
208
+ //#endregion
209
+ export { CustomGeoLocationError, useGeolocation };
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ const require_usePreservedCallback = require("../usePreservedCallback/usePreservedCallback.cjs");
3
+ const require_useDebouncedCallback = require("../useDebouncedCallback/useDebouncedCallback.cjs");
4
+ const require_useIntersectionObserver = require("../useIntersectionObserver/useIntersectionObserver.cjs");
5
+ const require_useVisibilityEvent = require("../useVisibilityEvent/useVisibilityEvent.cjs");
6
+ let react = require("react");
7
+ //#region src/hooks/useImpressionRef/useImpressionRef.ts
8
+ /**
9
+ * @deprecated This hook is deprecated as it depends on browser-specific APIs (IntersectionObserver, Visibility API).
10
+ * react-simplikit is now focused on platform-independent, pure state/logic hooks.
11
+ * This hook will be removed in a future major version.
12
+ *
13
+ * @description
14
+ * `useImpressionRef` is a React hook that measures the time a specific DOM element is visible on the screen and executes callbacks when the element enters or exits the viewport.
15
+ * It uses `IntersectionObserver` and the `Visibility API` to track the element's visibility.
16
+ *
17
+ * @param {UseImpressionRefOptions} options - Options for tracking the element's visibility.
18
+ * @param {() => void} [options.onImpressionStart] - Callback function executed when the element enters the view
19
+ * @param {() => void} [options.onImpressionEnd] - Callback function executed when the element exits the view
20
+ * @param {number} [options.timeThreshold=0] - Minimum time the element must be visible (in milliseconds)
21
+ * @param {number} [options.areaThreshold=0] - Minimum ratio of the element that must be visible (0 to 1)
22
+ * @param {string} options.rootMargin - Margin to adjust the detection area
23
+ *
24
+ * @returns {(element: Element | null) => void} A function to set the element. Attach this function to the `ref` attribute, and the callbacks will be executed whenever the element's visibility changes.
25
+ *
26
+ * @example
27
+ * import { useImpressionRef } from 'react-simplikit';
28
+ *
29
+ * function Component() {
30
+ * const ref = useImpressionRef<HTMLDivElement>({
31
+ * onImpressionStart: () => console.log('Element entered view'),
32
+ * onImpressionEnd: () => console.log('Element exited view'),
33
+ * timeThreshold: 1000,
34
+ * areaThreshold: 0.5,
35
+ * });
36
+ *
37
+ * return <div ref={ref}>Track my visibility!</div>;
38
+ * }
39
+ */
40
+ function useImpressionRef({ onImpressionStart = () => {}, onImpressionEnd = () => {}, rootMargin, areaThreshold = 0, timeThreshold = 0 }) {
41
+ const impressionStartHandler = require_usePreservedCallback.usePreservedCallback(onImpressionStart);
42
+ const impressionEndHandler = require_usePreservedCallback.usePreservedCallback(onImpressionEnd);
43
+ const isIntersectingRef = (0, react.useRef)(false);
44
+ const impressionEventHandler = require_useDebouncedCallback.useDebouncedCallback({
45
+ timeThreshold,
46
+ onChange: (impressed) => {
47
+ (impressed ? impressionStartHandler : impressionEndHandler)();
48
+ },
49
+ leading: true
50
+ });
51
+ require_useVisibilityEvent.useVisibilityEvent((documentVisible) => {
52
+ if (!isIntersectingRef.current) return;
53
+ impressionEventHandler(documentVisible === "visible");
54
+ });
55
+ return require_useIntersectionObserver.useIntersectionObserver((entry) => {
56
+ if (document.visibilityState === "hidden") return;
57
+ const currentRatio = entry.intersectionRatio;
58
+ const isIntersecting = areaThreshold === 0 ? entry.isIntersecting : currentRatio >= areaThreshold;
59
+ isIntersectingRef.current = isIntersecting;
60
+ impressionEventHandler(isIntersecting);
61
+ }, {
62
+ rootMargin,
63
+ threshold: areaThreshold
64
+ });
65
+ }
66
+ //#endregion
67
+ exports.useImpressionRef = useImpressionRef;
@@ -1,9 +1,11 @@
1
+
2
+ //#region src/hooks/useImpressionRef/useImpressionRef.d.ts
1
3
  type UseImpressionRefOptions = Partial<{
2
- onImpressionStart: () => void;
3
- onImpressionEnd: () => void;
4
- rootMargin: string;
5
- areaThreshold: number;
6
- timeThreshold: number;
4
+ onImpressionStart: () => void;
5
+ onImpressionEnd: () => void;
6
+ rootMargin: string;
7
+ areaThreshold: number;
8
+ timeThreshold: number;
7
9
  }>;
8
10
  /**
9
11
  * @deprecated This hook is deprecated as it depends on browser-specific APIs (IntersectionObserver, Visibility API).
@@ -37,6 +39,6 @@ type UseImpressionRefOptions = Partial<{
37
39
  * return <div ref={ref}>Track my visibility!</div>;
38
40
  * }
39
41
  */
40
- declare function useImpressionRef<Element extends HTMLElement>({ onImpressionStart, onImpressionEnd, rootMargin, areaThreshold, timeThreshold, }: UseImpressionRefOptions): (element: Element | null) => void;
41
-
42
- export { type UseImpressionRefOptions, useImpressionRef };
42
+ declare function useImpressionRef<Element extends HTMLElement>({ onImpressionStart, onImpressionEnd, rootMargin, areaThreshold, timeThreshold }: UseImpressionRefOptions): (element: Element | null) => void;
43
+ //#endregion
44
+ export { UseImpressionRefOptions, useImpressionRef };
@@ -1,9 +1,11 @@
1
+
2
+ //#region src/hooks/useImpressionRef/useImpressionRef.d.ts
1
3
  type UseImpressionRefOptions = Partial<{
2
- onImpressionStart: () => void;
3
- onImpressionEnd: () => void;
4
- rootMargin: string;
5
- areaThreshold: number;
6
- timeThreshold: number;
4
+ onImpressionStart: () => void;
5
+ onImpressionEnd: () => void;
6
+ rootMargin: string;
7
+ areaThreshold: number;
8
+ timeThreshold: number;
7
9
  }>;
8
10
  /**
9
11
  * @deprecated This hook is deprecated as it depends on browser-specific APIs (IntersectionObserver, Visibility API).
@@ -37,6 +39,6 @@ type UseImpressionRefOptions = Partial<{
37
39
  * return <div ref={ref}>Track my visibility!</div>;
38
40
  * }
39
41
  */
40
- declare function useImpressionRef<Element extends HTMLElement>({ onImpressionStart, onImpressionEnd, rootMargin, areaThreshold, timeThreshold, }: UseImpressionRefOptions): (element: Element | null) => void;
41
-
42
- export { type UseImpressionRefOptions, useImpressionRef };
42
+ declare function useImpressionRef<Element extends HTMLElement>({ onImpressionStart, onImpressionEnd, rootMargin, areaThreshold, timeThreshold }: UseImpressionRefOptions): (element: Element | null) => void;
43
+ //#endregion
44
+ export { UseImpressionRefOptions, useImpressionRef };