react-simplikit 0.0.51 → 0.0.53

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/README.md +34 -24
  2. package/dist/components/ImpressionArea/ImpressionArea.cjs +57 -0
  3. package/{esm/components/ImpressionArea/index.d.ts → dist/components/ImpressionArea/ImpressionArea.d.cts} +9 -8
  4. package/dist/components/ImpressionArea/ImpressionArea.d.mts +48 -0
  5. package/dist/components/ImpressionArea/ImpressionArea.mjs +57 -0
  6. package/dist/components/ImpressionArea/index.d.cts +2 -46
  7. package/dist/components/ImpressionArea/index.d.mts +3 -0
  8. package/dist/components/Separated/Separated.cjs +38 -0
  9. package/{esm/components/Separated/index.d.ts → dist/components/Separated/Separated.d.cts} +7 -7
  10. package/dist/components/Separated/Separated.d.mts +38 -0
  11. package/dist/components/Separated/Separated.mjs +38 -0
  12. package/dist/components/Separated/index.d.cts +2 -37
  13. package/dist/components/Separated/index.d.mts +3 -0
  14. package/dist/components/SwitchCase/SwitchCase.cjs +40 -0
  15. package/{esm/components/SwitchCase/index.d.ts → dist/components/SwitchCase/SwitchCase.d.cts} +7 -8
  16. package/dist/components/SwitchCase/SwitchCase.d.mts +45 -0
  17. package/dist/components/SwitchCase/SwitchCase.mjs +40 -0
  18. package/dist/components/SwitchCase/index.d.cts +2 -45
  19. package/dist/components/SwitchCase/index.d.mts +3 -0
  20. package/dist/hooks/useAsyncEffect/index.d.cts +2 -24
  21. package/dist/hooks/useAsyncEffect/index.d.mts +3 -0
  22. package/dist/hooks/useAsyncEffect/useAsyncEffect.cjs +39 -0
  23. package/{esm/hooks/useAsyncEffect/index.d.ts → dist/hooks/useAsyncEffect/useAsyncEffect.d.cts} +4 -3
  24. package/dist/hooks/useAsyncEffect/useAsyncEffect.d.mts +26 -0
  25. package/dist/hooks/useAsyncEffect/useAsyncEffect.mjs +39 -0
  26. package/dist/hooks/useBooleanState/useBooleanState.cjs +36 -0
  27. package/dist/hooks/useBooleanState/{index.d.cts → useBooleanState.d.cts} +4 -2
  28. package/{esm/hooks/useBooleanState/index.d.ts → dist/hooks/useBooleanState/useBooleanState.d.mts} +4 -2
  29. package/dist/hooks/useBooleanState/useBooleanState.mjs +36 -0
  30. package/dist/hooks/useCallbackOncePerRender/index.d.cts +2 -39
  31. package/dist/hooks/useCallbackOncePerRender/index.d.mts +3 -0
  32. package/dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.cjs +52 -0
  33. package/{esm/hooks/useCallbackOncePerRender/index.d.ts → dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.d.cts} +4 -3
  34. package/dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.d.mts +41 -0
  35. package/dist/hooks/useCallbackOncePerRender/useCallbackOncePerRender.mjs +52 -0
  36. package/dist/hooks/useConditionalEffect/index.d.cts +2 -42
  37. package/dist/hooks/useConditionalEffect/index.d.mts +3 -0
  38. package/dist/hooks/useConditionalEffect/useConditionalEffect.cjs +57 -0
  39. package/{esm/hooks/useConditionalEffect/index.d.ts → dist/hooks/useConditionalEffect/useConditionalEffect.d.cts} +4 -3
  40. package/dist/hooks/useConditionalEffect/useConditionalEffect.d.mts +44 -0
  41. package/dist/hooks/useConditionalEffect/useConditionalEffect.mjs +57 -0
  42. package/dist/hooks/useControlledState/index.d.cts +2 -50
  43. package/dist/hooks/useControlledState/index.d.mts +3 -0
  44. package/dist/hooks/useControlledState/useControlledState.cjs +60 -0
  45. package/{esm/hooks/useControlledState/index.d.ts → dist/hooks/useControlledState/useControlledState.d.cts} +11 -10
  46. package/dist/hooks/useControlledState/useControlledState.d.mts +52 -0
  47. package/dist/hooks/useControlledState/useControlledState.mjs +60 -0
  48. package/dist/hooks/useCounter/useCounter.cjs +75 -0
  49. package/{esm/hooks/useCounter/index.d.ts → dist/hooks/useCounter/useCounter.d.cts} +12 -10
  50. package/dist/hooks/useCounter/{index.d.cts → useCounter.d.mts} +12 -10
  51. package/dist/hooks/useCounter/useCounter.mjs +75 -0
  52. package/dist/hooks/useDebounce/debounce.cjs +49 -0
  53. package/dist/hooks/useDebounce/debounce.d.cts +8 -0
  54. package/dist/hooks/useDebounce/debounce.d.mts +8 -0
  55. package/dist/hooks/useDebounce/debounce.mjs +49 -0
  56. package/dist/hooks/useDebounce/useDebounce.cjs +66 -0
  57. package/{esm/hooks/useDebounce/index.d.ts → dist/hooks/useDebounce/useDebounce.d.cts} +6 -8
  58. package/dist/hooks/useDebounce/{index.d.cts → useDebounce.d.mts} +6 -8
  59. package/dist/hooks/useDebounce/useDebounce.mjs +66 -0
  60. package/dist/hooks/useDebouncedCallback/useDebouncedCallback.cjs +62 -0
  61. package/{esm/hooks/useDebouncedCallback/index.d.ts → dist/hooks/useDebouncedCallback/useDebouncedCallback.d.cts} +9 -7
  62. package/dist/hooks/useDebouncedCallback/{index.d.cts → useDebouncedCallback.d.mts} +9 -7
  63. package/dist/hooks/useDebouncedCallback/useDebouncedCallback.mjs +62 -0
  64. package/dist/hooks/useDoubleClick/index.d.cts +2 -45
  65. package/dist/hooks/useDoubleClick/index.d.mts +3 -0
  66. package/dist/hooks/useDoubleClick/useDoubleClick.cjs +64 -0
  67. package/{esm/hooks/useDoubleClick/index.d.ts → dist/hooks/useDoubleClick/useDoubleClick.d.cts} +8 -7
  68. package/dist/hooks/useDoubleClick/useDoubleClick.d.mts +47 -0
  69. package/dist/hooks/useDoubleClick/useDoubleClick.mjs +64 -0
  70. package/dist/hooks/useGeolocation/useGeolocation.cjs +210 -0
  71. package/{esm/hooks/useGeolocation/index.d.ts → dist/hooks/useGeolocation/useGeolocation.d.cts} +26 -24
  72. package/dist/hooks/useGeolocation/{index.d.cts → useGeolocation.d.mts} +26 -24
  73. package/dist/hooks/useGeolocation/useGeolocation.mjs +209 -0
  74. package/dist/hooks/useImpressionRef/useImpressionRef.cjs +67 -0
  75. package/{esm/hooks/useImpressionRef/index.d.ts → dist/hooks/useImpressionRef/useImpressionRef.d.cts} +10 -8
  76. package/dist/hooks/useImpressionRef/{index.d.cts → useImpressionRef.d.mts} +10 -8
  77. package/dist/hooks/useImpressionRef/useImpressionRef.mjs +67 -0
  78. package/dist/hooks/useInputState/index.d.cts +2 -22
  79. package/dist/hooks/useInputState/index.d.mts +3 -0
  80. package/dist/hooks/useInputState/useInputState.cjs +32 -0
  81. package/{esm/hooks/useInputState/index.d.ts → dist/hooks/useInputState/useInputState.d.cts} +4 -3
  82. package/dist/hooks/useInputState/useInputState.d.mts +24 -0
  83. package/dist/hooks/useInputState/useInputState.mjs +32 -0
  84. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.cjs +58 -0
  85. package/dist/hooks/useIntersectionObserver/{index.d.cts → useIntersectionObserver.d.cts} +4 -2
  86. package/{esm/hooks/useIntersectionObserver/index.d.ts → dist/hooks/useIntersectionObserver/useIntersectionObserver.d.mts} +4 -2
  87. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.mjs +58 -0
  88. package/dist/hooks/useInterval/useInterval.cjs +65 -0
  89. package/dist/hooks/useInterval/{index.d.cts → useInterval.d.cts} +7 -5
  90. package/{esm/hooks/useInterval/index.d.ts → dist/hooks/useInterval/useInterval.d.mts} +7 -5
  91. package/dist/hooks/useInterval/useInterval.mjs +65 -0
  92. package/dist/hooks/useIsClient/useIsClient.cjs +49 -0
  93. package/dist/hooks/useIsClient/{index.d.cts → useIsClient.d.cts} +4 -2
  94. package/{esm/hooks/useIsClient/index.d.ts → dist/hooks/useIsClient/useIsClient.d.mts} +4 -2
  95. package/dist/hooks/useIsClient/useIsClient.mjs +49 -0
  96. package/dist/hooks/useIsomorphicLayoutEffect/index.d.cts +2 -24
  97. package/dist/hooks/useIsomorphicLayoutEffect/index.d.mts +3 -0
  98. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +25 -0
  99. package/{esm/hooks/useIsomorphicLayoutEffect/index.d.ts → dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.cts} +4 -3
  100. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.mts +26 -0
  101. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +25 -0
  102. package/dist/hooks/useList/useList.cjs +94 -0
  103. package/{esm/hooks/useList/index.d.ts → dist/hooks/useList/useList.d.cts} +10 -8
  104. package/dist/hooks/useList/{index.d.cts → useList.d.mts} +10 -8
  105. package/dist/hooks/useList/useList.mjs +94 -0
  106. package/dist/hooks/useLoading/useLoading.cjs +61 -0
  107. package/dist/hooks/useLoading/{index.d.cts → useLoading.d.cts} +4 -2
  108. package/{esm/hooks/useLoading/index.d.ts → dist/hooks/useLoading/useLoading.d.mts} +4 -2
  109. package/dist/hooks/useLoading/useLoading.mjs +61 -0
  110. package/dist/hooks/useLongPress/index.d.cts +2 -73
  111. package/dist/hooks/useLongPress/index.d.mts +3 -0
  112. package/dist/hooks/useLongPress/useLongPress.cjs +133 -0
  113. package/{esm/hooks/useLongPress/index.d.ts → dist/hooks/useLongPress/useLongPress.d.cts} +18 -17
  114. package/dist/hooks/useLongPress/useLongPress.d.mts +75 -0
  115. package/dist/hooks/useLongPress/useLongPress.mjs +133 -0
  116. package/dist/hooks/useMap/useMap.cjs +64 -0
  117. package/dist/hooks/useMap/{index.d.cts → useMap.d.cts} +12 -10
  118. package/{esm/hooks/useMap/index.d.ts → dist/hooks/useMap/useMap.d.mts} +12 -10
  119. package/dist/hooks/useMap/useMap.mjs +64 -0
  120. package/dist/hooks/useOutsideClickEffect/useOutsideClickEffect.cjs +51 -0
  121. package/dist/hooks/useOutsideClickEffect/{index.d.cts → useOutsideClickEffect.d.cts} +4 -2
  122. package/{esm/hooks/useOutsideClickEffect/index.d.ts → dist/hooks/useOutsideClickEffect/useOutsideClickEffect.d.mts} +4 -2
  123. package/dist/hooks/useOutsideClickEffect/useOutsideClickEffect.mjs +51 -0
  124. package/dist/hooks/usePreservedCallback/usePreservedCallback.cjs +41 -0
  125. package/dist/hooks/usePreservedCallback/{index.d.cts → usePreservedCallback.d.cts} +4 -2
  126. package/{esm/hooks/usePreservedCallback/index.d.ts → dist/hooks/usePreservedCallback/usePreservedCallback.d.mts} +4 -2
  127. package/dist/hooks/usePreservedCallback/usePreservedCallback.mjs +41 -0
  128. package/dist/hooks/usePreservedReference/usePreservedReference.cjs +55 -0
  129. package/dist/hooks/usePreservedReference/{index.d.cts → usePreservedReference.d.cts} +4 -2
  130. package/{esm/hooks/usePreservedReference/index.d.ts → dist/hooks/usePreservedReference/usePreservedReference.d.mts} +4 -2
  131. package/dist/hooks/usePreservedReference/usePreservedReference.mjs +55 -0
  132. package/dist/hooks/usePrevious/usePrevious.cjs +39 -0
  133. package/{esm/hooks/usePrevious/index.d.ts → dist/hooks/usePrevious/usePrevious.d.cts} +4 -2
  134. package/dist/hooks/usePrevious/{index.d.cts → usePrevious.d.mts} +4 -2
  135. package/dist/hooks/usePrevious/usePrevious.mjs +39 -0
  136. package/dist/hooks/useRefEffect/index.d.cts +2 -30
  137. package/dist/hooks/useRefEffect/index.d.mts +3 -0
  138. package/dist/hooks/useRefEffect/useRefEffect.cjs +42 -0
  139. package/{esm/hooks/useRefEffect/index.d.ts → dist/hooks/useRefEffect/useRefEffect.d.cts} +4 -3
  140. package/dist/hooks/useRefEffect/useRefEffect.d.mts +32 -0
  141. package/dist/hooks/useRefEffect/useRefEffect.mjs +42 -0
  142. package/dist/hooks/useSet/useSet.cjs +79 -0
  143. package/dist/hooks/useSet/{index.d.cts → useSet.d.cts} +9 -7
  144. package/{esm/hooks/useSet/index.d.ts → dist/hooks/useSet/useSet.d.mts} +9 -7
  145. package/dist/hooks/useSet/useSet.mjs +79 -0
  146. package/dist/hooks/useStorageState/index.d.cts +2 -60
  147. package/dist/hooks/useStorageState/index.d.mts +3 -0
  148. package/dist/hooks/useStorageState/storage.cjs +85 -0
  149. package/dist/hooks/useStorageState/storage.d.cts +10 -0
  150. package/dist/hooks/useStorageState/storage.d.mts +10 -0
  151. package/dist/hooks/useStorageState/storage.mjs +80 -0
  152. package/dist/hooks/useStorageState/useStorageState.cjs +81 -0
  153. package/{esm/hooks/useStorageState/index.d.ts → dist/hooks/useStorageState/useStorageState.d.cts} +10 -15
  154. package/dist/hooks/useStorageState/useStorageState.d.mts +56 -0
  155. package/dist/hooks/useStorageState/useStorageState.mjs +81 -0
  156. package/dist/hooks/useThrottle/throttle.cjs +19 -0
  157. package/dist/hooks/useThrottle/throttle.d.cts +19 -0
  158. package/dist/hooks/useThrottle/throttle.d.mts +19 -0
  159. package/dist/hooks/useThrottle/throttle.mjs +19 -0
  160. package/dist/hooks/useThrottle/useThrottle.cjs +49 -0
  161. package/dist/hooks/useThrottle/{index.d.cts → useThrottle.d.cts} +6 -19
  162. package/{esm/hooks/useThrottle/index.d.ts → dist/hooks/useThrottle/useThrottle.d.mts} +6 -19
  163. package/dist/hooks/useThrottle/useThrottle.mjs +49 -0
  164. package/dist/hooks/useThrottledCallback/useThrottledCallback.cjs +65 -0
  165. package/{esm/hooks/useThrottledCallback/index.d.ts → dist/hooks/useThrottledCallback/useThrottledCallback.d.cts} +8 -6
  166. package/dist/hooks/useThrottledCallback/{index.d.cts → useThrottledCallback.d.mts} +8 -6
  167. package/dist/hooks/useThrottledCallback/useThrottledCallback.mjs +65 -0
  168. package/dist/hooks/useTimeout/useTimeout.cjs +40 -0
  169. package/dist/hooks/useTimeout/{index.d.cts → useTimeout.d.cts} +4 -2
  170. package/{esm/hooks/useTimeout/index.d.ts → dist/hooks/useTimeout/useTimeout.d.mts} +4 -2
  171. package/dist/hooks/useTimeout/useTimeout.mjs +40 -0
  172. package/dist/hooks/useToggle/useToggle.cjs +34 -0
  173. package/dist/hooks/useToggle/{index.d.cts → useToggle.d.cts} +4 -4
  174. package/{esm/hooks/useToggle/index.d.ts → dist/hooks/useToggle/useToggle.d.mts} +4 -4
  175. package/dist/hooks/useToggle/useToggle.mjs +34 -0
  176. package/dist/hooks/useVisibilityEvent/useVisibilityEvent.cjs +42 -0
  177. package/{esm/hooks/useVisibilityEvent/index.d.ts → dist/hooks/useVisibilityEvent/useVisibilityEvent.d.cts} +5 -3
  178. package/dist/hooks/useVisibilityEvent/{index.d.cts → useVisibilityEvent.d.mts} +5 -3
  179. package/dist/hooks/useVisibilityEvent/useVisibilityEvent.mjs +42 -0
  180. package/dist/index.cjs +77 -1397
  181. package/dist/index.d.cts +56 -40
  182. package/dist/index.d.mts +56 -0
  183. package/dist/index.mjs +40 -0
  184. package/dist/utils/buildContext/buildContext.cjs +50 -0
  185. package/{esm/utils/buildContext/index.d.ts → dist/utils/buildContext/buildContext.d.cts} +7 -7
  186. package/dist/utils/buildContext/buildContext.d.mts +38 -0
  187. package/dist/utils/buildContext/buildContext.mjs +50 -0
  188. package/dist/utils/buildContext/index.d.cts +2 -37
  189. package/dist/utils/buildContext/index.d.mts +3 -0
  190. package/dist/utils/mergeProps/index.d.cts +2 -25
  191. package/dist/utils/mergeProps/index.d.mts +3 -0
  192. package/dist/utils/mergeProps/mergeProps.cjs +53 -0
  193. package/{esm/utils/mergeProps/index.d.ts → dist/utils/mergeProps/mergeProps.d.cts} +7 -8
  194. package/dist/utils/mergeProps/mergeProps.d.mts +25 -0
  195. package/dist/utils/mergeProps/mergeProps.mjs +53 -0
  196. package/dist/utils/mergeRefs/index.d.cts +2 -38
  197. package/dist/utils/mergeRefs/index.d.mts +3 -0
  198. package/dist/utils/mergeRefs/mergeRefs.cjs +50 -0
  199. package/{esm/utils/mergeRefs/index.d.ts → dist/utils/mergeRefs/mergeRefs.d.cts} +4 -3
  200. package/dist/utils/mergeRefs/mergeRefs.d.mts +40 -0
  201. package/dist/utils/mergeRefs/mergeRefs.mjs +50 -0
  202. package/package.json +9 -11
  203. package/dist/components/ImpressionArea/index.cjs +0 -295
  204. package/dist/components/Separated/index.cjs +0 -41
  205. package/dist/components/SwitchCase/index.cjs +0 -36
  206. package/dist/hooks/useAsyncEffect/index.cjs +0 -49
  207. package/dist/hooks/useBooleanState/index.cjs +0 -46
  208. package/dist/hooks/useCallbackOncePerRender/index.cjs +0 -63
  209. package/dist/hooks/useConditionalEffect/index.cjs +0 -51
  210. package/dist/hooks/useControlledState/index.cjs +0 -57
  211. package/dist/hooks/useCounter/index.cjs +0 -70
  212. package/dist/hooks/useDebounce/index.cjs +0 -130
  213. package/dist/hooks/useDebouncedCallback/index.cjs +0 -148
  214. package/dist/hooks/useDoubleClick/index.cjs +0 -79
  215. package/dist/hooks/useGeolocation/index.cjs +0 -154
  216. package/dist/hooks/useImpressionRef/index.cjs +0 -258
  217. package/dist/hooks/useInputState/index.cjs +0 -46
  218. package/dist/hooks/useIntersectionObserver/index.cjs +0 -95
  219. package/dist/hooks/useInterval/index.cjs +0 -84
  220. package/dist/hooks/useIsClient/index.cjs +0 -40
  221. package/dist/hooks/useIsomorphicLayoutEffect/index.cjs +0 -35
  222. package/dist/hooks/useList/index.cjs +0 -104
  223. package/dist/hooks/useLoading/index.cjs +0 -65
  224. package/dist/hooks/useLongPress/index.cjs +0 -127
  225. package/dist/hooks/useMap/index.cjs +0 -78
  226. package/dist/hooks/useOutsideClickEffect/index.cjs +0 -74
  227. package/dist/hooks/usePreservedCallback/index.cjs +0 -45
  228. package/dist/hooks/usePreservedReference/index.cjs +0 -45
  229. package/dist/hooks/usePrevious/index.cjs +0 -48
  230. package/dist/hooks/useRefEffect/index.cjs +0 -72
  231. package/dist/hooks/useSet/index.cjs +0 -105
  232. package/dist/hooks/useStorageState/index.cjs +0 -196
  233. package/dist/hooks/useThrottle/index.cjs +0 -151
  234. package/dist/hooks/useThrottledCallback/index.cjs +0 -172
  235. package/dist/hooks/useTimeout/index.cjs +0 -57
  236. package/dist/hooks/useToggle/index.cjs +0 -37
  237. package/dist/hooks/useVisibilityEvent/index.cjs +0 -47
  238. package/dist/utils/buildContext/index.cjs +0 -56
  239. package/dist/utils/mergeProps/index.cjs +0 -71
  240. package/dist/utils/mergeRefs/index.cjs +0 -46
  241. package/esm/components/ImpressionArea/index.js +0 -269
  242. package/esm/components/Separated/index.js +0 -15
  243. package/esm/components/SwitchCase/index.js +0 -10
  244. package/esm/hooks/useAsyncEffect/index.js +0 -23
  245. package/esm/hooks/useBooleanState/index.js +0 -20
  246. package/esm/hooks/useCallbackOncePerRender/index.js +0 -37
  247. package/esm/hooks/useConditionalEffect/index.js +0 -25
  248. package/esm/hooks/useControlledState/index.js +0 -31
  249. package/esm/hooks/useCounter/index.js +0 -44
  250. package/esm/hooks/useDebounce/index.js +0 -104
  251. package/esm/hooks/useDebouncedCallback/index.js +0 -122
  252. package/esm/hooks/useDoubleClick/index.js +0 -53
  253. package/esm/hooks/useGeolocation/index.js +0 -128
  254. package/esm/hooks/useImpressionRef/index.js +0 -232
  255. package/esm/hooks/useInputState/index.js +0 -20
  256. package/esm/hooks/useIntersectionObserver/index.js +0 -69
  257. package/esm/hooks/useInterval/index.js +0 -58
  258. package/esm/hooks/useIsClient/index.js +0 -14
  259. package/esm/hooks/useIsomorphicLayoutEffect/index.js +0 -9
  260. package/esm/hooks/useList/index.js +0 -78
  261. package/esm/hooks/useLoading/index.js +0 -39
  262. package/esm/hooks/useLongPress/index.js +0 -101
  263. package/esm/hooks/useMap/index.js +0 -52
  264. package/esm/hooks/useOutsideClickEffect/index.js +0 -48
  265. package/esm/hooks/usePreservedCallback/index.js +0 -19
  266. package/esm/hooks/usePreservedReference/index.js +0 -19
  267. package/esm/hooks/usePrevious/index.js +0 -22
  268. package/esm/hooks/useRefEffect/index.js +0 -46
  269. package/esm/hooks/useSet/index.js +0 -79
  270. package/esm/hooks/useStorageState/index.js +0 -170
  271. package/esm/hooks/useThrottle/index.js +0 -125
  272. package/esm/hooks/useThrottledCallback/index.js +0 -146
  273. package/esm/hooks/useTimeout/index.js +0 -31
  274. package/esm/hooks/useToggle/index.js +0 -11
  275. package/esm/hooks/useVisibilityEvent/index.js +0 -21
  276. package/esm/index.d.ts +0 -40
  277. package/esm/index.js +0 -1335
  278. package/esm/utils/buildContext/index.js +0 -30
  279. package/esm/utils/mergeProps/index.js +0 -45
  280. package/esm/utils/mergeRefs/index.js +0 -20
@@ -0,0 +1,19 @@
1
+
2
+ //#region src/hooks/useThrottle/throttle.d.ts
3
+ type ThrottleOptions = {
4
+ /**
5
+ * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
6
+ * If `edges` includes "leading", the function will be invoked at the start of the delay period.
7
+ * If `edges` includes "trailing", the function will be invoked at the end of the delay period.
8
+ * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period.
9
+ * @default ["leading", "trailing"]
10
+ */
11
+ edges?: Array<'leading' | 'trailing'>;
12
+ };
13
+ type ThrottledFunction<F extends (...args: any[]) => void> = {
14
+ (...args: Parameters<F>): void;
15
+ cancel: () => void;
16
+ };
17
+ declare function throttle<F extends (...args: any[]) => void>(func: F, throttleMs: number, { edges }?: ThrottleOptions): ThrottledFunction<F>;
18
+ //#endregion
19
+ export { throttle };
@@ -0,0 +1,19 @@
1
+
2
+ //#region src/hooks/useThrottle/throttle.d.ts
3
+ type ThrottleOptions = {
4
+ /**
5
+ * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
6
+ * If `edges` includes "leading", the function will be invoked at the start of the delay period.
7
+ * If `edges` includes "trailing", the function will be invoked at the end of the delay period.
8
+ * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period.
9
+ * @default ["leading", "trailing"]
10
+ */
11
+ edges?: Array<'leading' | 'trailing'>;
12
+ };
13
+ type ThrottledFunction<F extends (...args: any[]) => void> = {
14
+ (...args: Parameters<F>): void;
15
+ cancel: () => void;
16
+ };
17
+ declare function throttle<F extends (...args: any[]) => void>(func: F, throttleMs: number, { edges }?: ThrottleOptions): ThrottledFunction<F>;
18
+ //#endregion
19
+ export { throttle };
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { debounce } from "../useDebounce/debounce.mjs";
3
+ //#region src/hooks/useThrottle/throttle.ts
4
+ function throttle(func, throttleMs, { edges = ["leading", "trailing"] } = {}) {
5
+ let pendingAt = null;
6
+ const debounced = debounce(func, throttleMs, { edges });
7
+ const throttled = function(...args) {
8
+ if (pendingAt == null) pendingAt = Date.now();
9
+ else if (Date.now() - pendingAt >= throttleMs) {
10
+ pendingAt = Date.now();
11
+ debounced.cancel();
12
+ }
13
+ debounced(...args);
14
+ };
15
+ throttled.cancel = debounced.cancel;
16
+ return throttled;
17
+ }
18
+ //#endregion
19
+ export { throttle };
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ const require_usePreservedCallback = require("../usePreservedCallback/usePreservedCallback.cjs");
3
+ const require_usePreservedReference = require("../usePreservedReference/usePreservedReference.cjs");
4
+ const require_throttle = require("./throttle.cjs");
5
+ let react = require("react");
6
+ //#region src/hooks/useThrottle/useThrottle.ts
7
+ /**
8
+ * @description
9
+ * `useThrottle` is a React hook that creates a throttled version of a callback function.
10
+ * This is useful for limiting the rate at which a function can be called,
11
+ * such as when handling scroll or resize events.
12
+ *
13
+ * @template {(...args: any[]) => any} F - The type of the callback function.
14
+ * @param {F} callback - The function to be throttled.
15
+ * @param {number} wait - The number of milliseconds to throttle invocations to.
16
+ * @param {{ edges?: Array<'leading' | 'trailing'> }} [options] - Options to control the behavior of the throttle.
17
+ * @param {Array<'leading' | 'trailing'>} [options.edges=['leading', 'trailing']] - An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
18
+ * @returns {F & { cancel: () => void }} - Returns the throttled function with a `cancel` method to cancel pending executions.
19
+ *
20
+ * @example
21
+ * const throttledScroll = useThrottle(() => {
22
+ * console.log('Scroll event');
23
+ * }, 200, { edges: ['leading', 'trailing'] });
24
+ *
25
+ * useEffect(() => {
26
+ * window.addEventListener('scroll', throttledScroll);
27
+ * return () => {
28
+ * window.removeEventListener('scroll', throttledScroll);
29
+ * throttledScroll.cancel();
30
+ * };
31
+ * }, [throttledScroll]);
32
+ */
33
+ function useThrottle(callback, wait, options) {
34
+ const preservedCallback = require_usePreservedCallback.usePreservedCallback(callback);
35
+ const preservedOptions = require_usePreservedReference.usePreservedReference(options ?? {});
36
+ const throttledCallback = (0, react.useMemo)(() => require_throttle.throttle(preservedCallback, wait, preservedOptions), [
37
+ preservedOptions,
38
+ preservedCallback,
39
+ wait
40
+ ]);
41
+ (0, react.useEffect)(() => {
42
+ return () => {
43
+ throttledCallback.cancel();
44
+ };
45
+ }, [throttledCallback]);
46
+ return throttledCallback;
47
+ }
48
+ //#endregion
49
+ exports.useThrottle = useThrottle;
@@ -1,19 +1,6 @@
1
- type ThrottleOptions = {
2
- /**
3
- * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
4
- * If `edges` includes "leading", the function will be invoked at the start of the delay period.
5
- * If `edges` includes "trailing", the function will be invoked at the end of the delay period.
6
- * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period.
7
- * @default ["leading", "trailing"]
8
- */
9
- edges?: Array<'leading' | 'trailing'>;
10
- };
11
- type ThrottledFunction<F extends (...args: any[]) => void> = {
12
- (...args: Parameters<F>): void;
13
- cancel: () => void;
14
- };
15
- declare function throttle<F extends (...args: any[]) => void>(func: F, throttleMs: number, { edges }?: ThrottleOptions): ThrottledFunction<F>;
16
1
 
2
+ import { throttle } from "./throttle.cjs";
3
+ //#region src/hooks/useThrottle/useThrottle.d.ts
17
4
  /**
18
5
  * @description
19
6
  * `useThrottle` is a React hook that creates a throttled version of a callback function.
@@ -41,8 +28,8 @@ declare function throttle<F extends (...args: any[]) => void>(func: F, throttleM
41
28
  * }, [throttledScroll]);
42
29
  */
43
30
  declare function useThrottle<F extends (...args: any[]) => any>(callback: F, wait: number, options?: Parameters<typeof throttle>[2]): {
44
- (...args: any[]): void;
45
- cancel: () => void;
31
+ (...args: any[]): void;
32
+ cancel: () => void;
46
33
  };
47
-
48
- export { useThrottle };
34
+ //#endregion
35
+ export { useThrottle };
@@ -1,19 +1,6 @@
1
- type ThrottleOptions = {
2
- /**
3
- * An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
4
- * If `edges` includes "leading", the function will be invoked at the start of the delay period.
5
- * If `edges` includes "trailing", the function will be invoked at the end of the delay period.
6
- * If both "leading" and "trailing" are included, the function will be invoked at both the start and end of the delay period.
7
- * @default ["leading", "trailing"]
8
- */
9
- edges?: Array<'leading' | 'trailing'>;
10
- };
11
- type ThrottledFunction<F extends (...args: any[]) => void> = {
12
- (...args: Parameters<F>): void;
13
- cancel: () => void;
14
- };
15
- declare function throttle<F extends (...args: any[]) => void>(func: F, throttleMs: number, { edges }?: ThrottleOptions): ThrottledFunction<F>;
16
1
 
2
+ import { throttle } from "./throttle.mjs";
3
+ //#region src/hooks/useThrottle/useThrottle.d.ts
17
4
  /**
18
5
  * @description
19
6
  * `useThrottle` is a React hook that creates a throttled version of a callback function.
@@ -41,8 +28,8 @@ declare function throttle<F extends (...args: any[]) => void>(func: F, throttleM
41
28
  * }, [throttledScroll]);
42
29
  */
43
30
  declare function useThrottle<F extends (...args: any[]) => any>(callback: F, wait: number, options?: Parameters<typeof throttle>[2]): {
44
- (...args: any[]): void;
45
- cancel: () => void;
31
+ (...args: any[]): void;
32
+ cancel: () => void;
46
33
  };
47
-
48
- export { useThrottle };
34
+ //#endregion
35
+ export { useThrottle };
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { usePreservedCallback } from "../usePreservedCallback/usePreservedCallback.mjs";
3
+ import { usePreservedReference } from "../usePreservedReference/usePreservedReference.mjs";
4
+ import { throttle } from "./throttle.mjs";
5
+ import { useEffect, useMemo } from "react";
6
+ //#region src/hooks/useThrottle/useThrottle.ts
7
+ /**
8
+ * @description
9
+ * `useThrottle` is a React hook that creates a throttled version of a callback function.
10
+ * This is useful for limiting the rate at which a function can be called,
11
+ * such as when handling scroll or resize events.
12
+ *
13
+ * @template {(...args: any[]) => any} F - The type of the callback function.
14
+ * @param {F} callback - The function to be throttled.
15
+ * @param {number} wait - The number of milliseconds to throttle invocations to.
16
+ * @param {{ edges?: Array<'leading' | 'trailing'> }} [options] - Options to control the behavior of the throttle.
17
+ * @param {Array<'leading' | 'trailing'>} [options.edges=['leading', 'trailing']] - An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
18
+ * @returns {F & { cancel: () => void }} - Returns the throttled function with a `cancel` method to cancel pending executions.
19
+ *
20
+ * @example
21
+ * const throttledScroll = useThrottle(() => {
22
+ * console.log('Scroll event');
23
+ * }, 200, { edges: ['leading', 'trailing'] });
24
+ *
25
+ * useEffect(() => {
26
+ * window.addEventListener('scroll', throttledScroll);
27
+ * return () => {
28
+ * window.removeEventListener('scroll', throttledScroll);
29
+ * throttledScroll.cancel();
30
+ * };
31
+ * }, [throttledScroll]);
32
+ */
33
+ function useThrottle(callback, wait, options) {
34
+ const preservedCallback = usePreservedCallback(callback);
35
+ const preservedOptions = usePreservedReference(options ?? {});
36
+ const throttledCallback = useMemo(() => throttle(preservedCallback, wait, preservedOptions), [
37
+ preservedOptions,
38
+ preservedCallback,
39
+ wait
40
+ ]);
41
+ useEffect(() => {
42
+ return () => {
43
+ throttledCallback.cancel();
44
+ };
45
+ }, [throttledCallback]);
46
+ return throttledCallback;
47
+ }
48
+ //#endregion
49
+ export { useThrottle };
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ const require_usePreservedCallback = require("../usePreservedCallback/usePreservedCallback.cjs");
3
+ const require_usePreservedReference = require("../usePreservedReference/usePreservedReference.cjs");
4
+ const require_throttle = require("../useThrottle/throttle.cjs");
5
+ let react = require("react");
6
+ //#region src/hooks/useThrottledCallback/useThrottledCallback.ts
7
+ /**
8
+ * Marks that no value has been forwarded to `onChange` yet.
9
+ *
10
+ * The hook skips redundant invocations by comparing against the last forwarded value, but it
11
+ * receives no initial value from the caller. Seeding that comparison with `false` would treat the
12
+ * first `false` as redundant and swallow it, so an unreachable sentinel is used instead.
13
+ */
14
+ const NOT_INVOKED = Symbol("NOT_INVOKED");
15
+ /**
16
+ * @description
17
+ * `useThrottledCallback` is a React hook that returns a throttled version of the provided callback function.
18
+ * The throttled callback will only be invoked at most once per specified interval.
19
+ *
20
+ * @param {Object} options - The options object.
21
+ * @param {Function} options.onChange - The callback function to throttle.
22
+ * @param {number} options.timeThreshold - The number of milliseconds to throttle invocations to.
23
+ * @param {Array<'leading' | 'trailing'>} [options.edges=['leading', 'trailing']] - An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
24
+ *
25
+ * @returns {Function} A throttled function that limits invoking the callback.
26
+ *
27
+ * @example
28
+ * function ScrollTracker() {
29
+ * const throttledScroll = useThrottledCallback({
30
+ * onChange: (scrollY: number) => console.log(scrollY),
31
+ * timeThreshold: 200,
32
+ * });
33
+ * return <div onScroll={(e) => throttledScroll(e.currentTarget.scrollTop)} />;
34
+ * }
35
+ */
36
+ function useThrottledCallback({ onChange, timeThreshold, edges = ["leading", "trailing"] }) {
37
+ const handleChange = require_usePreservedCallback.usePreservedCallback(onChange);
38
+ const ref = (0, react.useRef)({
39
+ value: NOT_INVOKED,
40
+ clearPreviousThrottle: () => {}
41
+ });
42
+ (0, react.useEffect)(function cleanupThrottleOnUnmount() {
43
+ const current = ref.current;
44
+ return () => {
45
+ current.clearPreviousThrottle();
46
+ };
47
+ }, []);
48
+ const preservedEdges = require_usePreservedReference.usePreservedReference(edges);
49
+ return (0, react.useCallback)((nextValue) => {
50
+ if (nextValue === ref.current.value) return;
51
+ const throttled = require_throttle.throttle(() => {
52
+ handleChange(nextValue);
53
+ ref.current.value = nextValue;
54
+ }, timeThreshold, { edges: preservedEdges });
55
+ ref.current.clearPreviousThrottle();
56
+ throttled();
57
+ ref.current.clearPreviousThrottle = throttled.cancel;
58
+ }, [
59
+ handleChange,
60
+ timeThreshold,
61
+ preservedEdges
62
+ ]);
63
+ }
64
+ //#endregion
65
+ exports.useThrottledCallback = useThrottledCallback;
@@ -1,5 +1,7 @@
1
+
2
+ //#region src/hooks/useThrottledCallback/useThrottledCallback.d.ts
1
3
  type ThrottleOptions = {
2
- edges?: Array<'leading' | 'trailing'>;
4
+ edges?: Array<'leading' | 'trailing'>;
3
5
  };
4
6
  /**
5
7
  * @description
@@ -22,9 +24,9 @@ type ThrottleOptions = {
22
24
  * return <div onScroll={(e) => throttledScroll(e.currentTarget.scrollTop)} />;
23
25
  * }
24
26
  */
25
- declare function useThrottledCallback({ onChange, timeThreshold, edges, }: ThrottleOptions & {
26
- onChange: (newValue: boolean) => void;
27
- timeThreshold: number;
27
+ declare function useThrottledCallback({ onChange, timeThreshold, edges }: ThrottleOptions & {
28
+ onChange: (newValue: boolean) => void;
29
+ timeThreshold: number;
28
30
  }): (nextValue: boolean) => void;
29
-
30
- export { useThrottledCallback };
31
+ //#endregion
32
+ export { useThrottledCallback };
@@ -1,5 +1,7 @@
1
+
2
+ //#region src/hooks/useThrottledCallback/useThrottledCallback.d.ts
1
3
  type ThrottleOptions = {
2
- edges?: Array<'leading' | 'trailing'>;
4
+ edges?: Array<'leading' | 'trailing'>;
3
5
  };
4
6
  /**
5
7
  * @description
@@ -22,9 +24,9 @@ type ThrottleOptions = {
22
24
  * return <div onScroll={(e) => throttledScroll(e.currentTarget.scrollTop)} />;
23
25
  * }
24
26
  */
25
- declare function useThrottledCallback({ onChange, timeThreshold, edges, }: ThrottleOptions & {
26
- onChange: (newValue: boolean) => void;
27
- timeThreshold: number;
27
+ declare function useThrottledCallback({ onChange, timeThreshold, edges }: ThrottleOptions & {
28
+ onChange: (newValue: boolean) => void;
29
+ timeThreshold: number;
28
30
  }): (nextValue: boolean) => void;
29
-
30
- export { useThrottledCallback };
31
+ //#endregion
32
+ export { useThrottledCallback };
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { usePreservedCallback } from "../usePreservedCallback/usePreservedCallback.mjs";
3
+ import { usePreservedReference } from "../usePreservedReference/usePreservedReference.mjs";
4
+ import { throttle } from "../useThrottle/throttle.mjs";
5
+ import { useCallback, useEffect, useRef } from "react";
6
+ //#region src/hooks/useThrottledCallback/useThrottledCallback.ts
7
+ /**
8
+ * Marks that no value has been forwarded to `onChange` yet.
9
+ *
10
+ * The hook skips redundant invocations by comparing against the last forwarded value, but it
11
+ * receives no initial value from the caller. Seeding that comparison with `false` would treat the
12
+ * first `false` as redundant and swallow it, so an unreachable sentinel is used instead.
13
+ */
14
+ const NOT_INVOKED = Symbol("NOT_INVOKED");
15
+ /**
16
+ * @description
17
+ * `useThrottledCallback` is a React hook that returns a throttled version of the provided callback function.
18
+ * The throttled callback will only be invoked at most once per specified interval.
19
+ *
20
+ * @param {Object} options - The options object.
21
+ * @param {Function} options.onChange - The callback function to throttle.
22
+ * @param {number} options.timeThreshold - The number of milliseconds to throttle invocations to.
23
+ * @param {Array<'leading' | 'trailing'>} [options.edges=['leading', 'trailing']] - An optional array specifying whether the function should be invoked on the leading edge, trailing edge, or both.
24
+ *
25
+ * @returns {Function} A throttled function that limits invoking the callback.
26
+ *
27
+ * @example
28
+ * function ScrollTracker() {
29
+ * const throttledScroll = useThrottledCallback({
30
+ * onChange: (scrollY: number) => console.log(scrollY),
31
+ * timeThreshold: 200,
32
+ * });
33
+ * return <div onScroll={(e) => throttledScroll(e.currentTarget.scrollTop)} />;
34
+ * }
35
+ */
36
+ function useThrottledCallback({ onChange, timeThreshold, edges = ["leading", "trailing"] }) {
37
+ const handleChange = usePreservedCallback(onChange);
38
+ const ref = useRef({
39
+ value: NOT_INVOKED,
40
+ clearPreviousThrottle: () => {}
41
+ });
42
+ useEffect(function cleanupThrottleOnUnmount() {
43
+ const current = ref.current;
44
+ return () => {
45
+ current.clearPreviousThrottle();
46
+ };
47
+ }, []);
48
+ const preservedEdges = usePreservedReference(edges);
49
+ return useCallback((nextValue) => {
50
+ if (nextValue === ref.current.value) return;
51
+ const throttled = throttle(() => {
52
+ handleChange(nextValue);
53
+ ref.current.value = nextValue;
54
+ }, timeThreshold, { edges: preservedEdges });
55
+ ref.current.clearPreviousThrottle();
56
+ throttled();
57
+ ref.current.clearPreviousThrottle = throttled.cancel;
58
+ }, [
59
+ handleChange,
60
+ timeThreshold,
61
+ preservedEdges
62
+ ]);
63
+ }
64
+ //#endregion
65
+ export { useThrottledCallback };
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ const require_usePreservedCallback = require("../usePreservedCallback/usePreservedCallback.cjs");
3
+ let react = require("react");
4
+ //#region src/hooks/useTimeout/useTimeout.ts
5
+ /**
6
+ * @description
7
+ * `useTimeout` is a React hook that executes a callback function after a specified delay.
8
+ * It manages `setTimeout` in accordance with the React lifecycle, ensuring cleanup on unmount or when dependencies change.
9
+ *
10
+ * @param {() => void} callback - The function to be executed after the delay.
11
+ * @param {number} [delay=0] - The time in milliseconds to wait before executing the callback.
12
+ *
13
+ * @example
14
+ * // Updating a title after a delay
15
+ * import { useTimeout } from 'react-simplikit';
16
+ * import { useState } from 'react';
17
+ *
18
+ * function Example() {
19
+ * const [title, setTitle] = useState('');
20
+ *
21
+ * useTimeout(() => {
22
+ * setTitle('Searching for products...');
23
+ * }, 2000);
24
+ *
25
+ * useTimeout(() => {
26
+ * setTitle('Almost done...');
27
+ * }, 4000);
28
+ *
29
+ * return <div>{title}</div>;
30
+ * }
31
+ */
32
+ function useTimeout(callback, delay = 0) {
33
+ const preservedCallback = require_usePreservedCallback.usePreservedCallback(callback);
34
+ (0, react.useEffect)(() => {
35
+ const timeoutId = setTimeout(preservedCallback, delay);
36
+ return () => clearTimeout(timeoutId);
37
+ }, [delay, preservedCallback]);
38
+ }
39
+ //#endregion
40
+ exports.useTimeout = useTimeout;
@@ -1,3 +1,5 @@
1
+
2
+ //#region src/hooks/useTimeout/useTimeout.d.ts
1
3
  /**
2
4
  * @description
3
5
  * `useTimeout` is a React hook that executes a callback function after a specified delay.
@@ -26,5 +28,5 @@
26
28
  * }
27
29
  */
28
30
  declare function useTimeout(callback: () => void, delay?: number): void;
29
-
30
- export { useTimeout };
31
+ //#endregion
32
+ export { useTimeout };
@@ -1,3 +1,5 @@
1
+
2
+ //#region src/hooks/useTimeout/useTimeout.d.ts
1
3
  /**
2
4
  * @description
3
5
  * `useTimeout` is a React hook that executes a callback function after a specified delay.
@@ -26,5 +28,5 @@
26
28
  * }
27
29
  */
28
30
  declare function useTimeout(callback: () => void, delay?: number): void;
29
-
30
- export { useTimeout };
31
+ //#endregion
32
+ export { useTimeout };
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { usePreservedCallback } from "../usePreservedCallback/usePreservedCallback.mjs";
3
+ import { useEffect } from "react";
4
+ //#region src/hooks/useTimeout/useTimeout.ts
5
+ /**
6
+ * @description
7
+ * `useTimeout` is a React hook that executes a callback function after a specified delay.
8
+ * It manages `setTimeout` in accordance with the React lifecycle, ensuring cleanup on unmount or when dependencies change.
9
+ *
10
+ * @param {() => void} callback - The function to be executed after the delay.
11
+ * @param {number} [delay=0] - The time in milliseconds to wait before executing the callback.
12
+ *
13
+ * @example
14
+ * // Updating a title after a delay
15
+ * import { useTimeout } from 'react-simplikit';
16
+ * import { useState } from 'react';
17
+ *
18
+ * function Example() {
19
+ * const [title, setTitle] = useState('');
20
+ *
21
+ * useTimeout(() => {
22
+ * setTitle('Searching for products...');
23
+ * }, 2000);
24
+ *
25
+ * useTimeout(() => {
26
+ * setTitle('Almost done...');
27
+ * }, 4000);
28
+ *
29
+ * return <div>{title}</div>;
30
+ * }
31
+ */
32
+ function useTimeout(callback, delay = 0) {
33
+ const preservedCallback = usePreservedCallback(callback);
34
+ useEffect(() => {
35
+ const timeoutId = setTimeout(preservedCallback, delay);
36
+ return () => clearTimeout(timeoutId);
37
+ }, [delay, preservedCallback]);
38
+ }
39
+ //#endregion
40
+ export { useTimeout };
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ let react = require("react");
3
+ //#region src/hooks/useToggle/useToggle.ts
4
+ /**
5
+ * @description
6
+ * `useToggle` is a React hook that simplifies managing a boolean state.
7
+ * It provides a function to toggle the state between `true` and `false`.
8
+ *
9
+ * @param {boolean} [initialValue=false] - The initial state value. Defaults to `false`.
10
+ *
11
+ * @returns {[state: boolean, toggle: () => void]} A tuple:
12
+ * - state `boolean` - The current state value;
13
+ * - toggle `() => void` - A function to toggle the state;
14
+ *
15
+ * @example
16
+ * import { useToggle } from 'react-simplikit';
17
+ *
18
+ * function Component() {
19
+ * const [open, toggle] = useToggle(false);
20
+ *
21
+ * return (
22
+ * <div>
23
+ * <p>Bottom Sheet state: {open ? 'opened' : 'closed'}</p>
24
+ * <button onClick={toggle}>Toggle</button>
25
+ * </div>
26
+ * );
27
+ * }
28
+ */
29
+ function useToggle(initialValue = false) {
30
+ return (0, react.useReducer)(toggle, initialValue);
31
+ }
32
+ const toggle = (state) => !state;
33
+ //#endregion
34
+ exports.useToggle = useToggle;
@@ -1,5 +1,5 @@
1
- import * as react from 'react';
2
1
 
2
+ //#region src/hooks/useToggle/useToggle.d.ts
3
3
  /**
4
4
  * @description
5
5
  * `useToggle` is a React hook that simplifies managing a boolean state.
@@ -25,6 +25,6 @@ import * as react from 'react';
25
25
  * );
26
26
  * }
27
27
  */
28
- declare function useToggle(initialValue?: boolean): [boolean, react.ActionDispatch<[]>];
29
-
30
- export { useToggle };
28
+ declare function useToggle(initialValue?: boolean): [boolean, import("react").ActionDispatch<[]>];
29
+ //#endregion
30
+ export { useToggle };
@@ -1,5 +1,5 @@
1
- import * as react from 'react';
2
1
 
2
+ //#region src/hooks/useToggle/useToggle.d.ts
3
3
  /**
4
4
  * @description
5
5
  * `useToggle` is a React hook that simplifies managing a boolean state.
@@ -25,6 +25,6 @@ import * as react from 'react';
25
25
  * );
26
26
  * }
27
27
  */
28
- declare function useToggle(initialValue?: boolean): [boolean, react.ActionDispatch<[]>];
29
-
30
- export { useToggle };
28
+ declare function useToggle(initialValue?: boolean): [boolean, import("react").ActionDispatch<[]>];
29
+ //#endregion
30
+ export { useToggle };
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { useReducer } from "react";
3
+ //#region src/hooks/useToggle/useToggle.ts
4
+ /**
5
+ * @description
6
+ * `useToggle` is a React hook that simplifies managing a boolean state.
7
+ * It provides a function to toggle the state between `true` and `false`.
8
+ *
9
+ * @param {boolean} [initialValue=false] - The initial state value. Defaults to `false`.
10
+ *
11
+ * @returns {[state: boolean, toggle: () => void]} A tuple:
12
+ * - state `boolean` - The current state value;
13
+ * - toggle `() => void` - A function to toggle the state;
14
+ *
15
+ * @example
16
+ * import { useToggle } from 'react-simplikit';
17
+ *
18
+ * function Component() {
19
+ * const [open, toggle] = useToggle(false);
20
+ *
21
+ * return (
22
+ * <div>
23
+ * <p>Bottom Sheet state: {open ? 'opened' : 'closed'}</p>
24
+ * <button onClick={toggle}>Toggle</button>
25
+ * </div>
26
+ * );
27
+ * }
28
+ */
29
+ function useToggle(initialValue = false) {
30
+ return useReducer(toggle, initialValue);
31
+ }
32
+ const toggle = (state) => !state;
33
+ //#endregion
34
+ export { useToggle };