@mantine/hooks 9.0.0-alpha.5 → 9.0.0-alpha.7

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 (378) hide show
  1. package/cjs/index.cjs +183 -188
  2. package/cjs/use-click-outside/use-click-outside.cjs +22 -26
  3. package/cjs/use-click-outside/use-click-outside.cjs.map +1 -1
  4. package/cjs/use-clipboard/use-clipboard.cjs +29 -28
  5. package/cjs/use-clipboard/use-clipboard.cjs.map +1 -1
  6. package/cjs/use-collapse/use-collapse.cjs +95 -98
  7. package/cjs/use-collapse/use-collapse.cjs.map +1 -1
  8. package/cjs/use-collapse/use-horizontal-collapse.cjs +94 -97
  9. package/cjs/use-collapse/use-horizontal-collapse.cjs.map +1 -1
  10. package/cjs/use-color-scheme/use-color-scheme.cjs +7 -8
  11. package/cjs/use-color-scheme/use-color-scheme.cjs.map +1 -1
  12. package/cjs/use-counter/use-counter.cjs +24 -26
  13. package/cjs/use-counter/use-counter.cjs.map +1 -1
  14. package/cjs/use-debounced-callback/use-debounced-callback.cjs +89 -93
  15. package/cjs/use-debounced-callback/use-debounced-callback.cjs.map +1 -1
  16. package/cjs/use-debounced-state/use-debounced-state.cjs +20 -28
  17. package/cjs/use-debounced-state/use-debounced-state.cjs.map +1 -1
  18. package/cjs/use-debounced-value/use-debounced-value.cjs +32 -31
  19. package/cjs/use-debounced-value/use-debounced-value.cjs.map +1 -1
  20. package/cjs/use-did-update/use-did-update.cjs +14 -21
  21. package/cjs/use-did-update/use-did-update.cjs.map +1 -1
  22. package/cjs/use-disclosure/use-disclosure.cjs +37 -30
  23. package/cjs/use-disclosure/use-disclosure.cjs.map +1 -1
  24. package/cjs/use-document-title/use-document-title.cjs +9 -12
  25. package/cjs/use-document-title/use-document-title.cjs.map +1 -1
  26. package/cjs/use-document-visibility/use-document-visibility.cjs +14 -15
  27. package/cjs/use-document-visibility/use-document-visibility.cjs.map +1 -1
  28. package/cjs/use-event-listener/use-event-listener.cjs +23 -32
  29. package/cjs/use-event-listener/use-event-listener.cjs.map +1 -1
  30. package/cjs/use-eye-dropper/use-eye-dropper.cjs +19 -24
  31. package/cjs/use-eye-dropper/use-eye-dropper.cjs.map +1 -1
  32. package/cjs/use-favicon/use-favicon.cjs +25 -32
  33. package/cjs/use-favicon/use-favicon.cjs.map +1 -1
  34. package/cjs/use-fetch/use-fetch.cjs +43 -45
  35. package/cjs/use-fetch/use-fetch.cjs.map +1 -1
  36. package/cjs/use-file-dialog/use-file-dialog.cjs +65 -77
  37. package/cjs/use-file-dialog/use-file-dialog.cjs.map +1 -1
  38. package/cjs/use-floating-window/use-floating-window.cjs +244 -255
  39. package/cjs/use-floating-window/use-floating-window.cjs.map +1 -1
  40. package/cjs/use-focus-return/use-focus-return.cjs +26 -37
  41. package/cjs/use-focus-return/use-focus-return.cjs.map +1 -1
  42. package/cjs/use-focus-trap/scope-tab.cjs +20 -31
  43. package/cjs/use-focus-trap/scope-tab.cjs.map +1 -1
  44. package/cjs/use-focus-trap/tabbable.cjs +24 -40
  45. package/cjs/use-focus-trap/tabbable.cjs.map +1 -1
  46. package/cjs/use-focus-trap/use-focus-trap.cjs +41 -68
  47. package/cjs/use-focus-trap/use-focus-trap.cjs.map +1 -1
  48. package/cjs/use-focus-within/use-focus-within.cjs +51 -62
  49. package/cjs/use-focus-within/use-focus-within.cjs.map +1 -1
  50. package/cjs/use-force-update/use-force-update.cjs +8 -9
  51. package/cjs/use-force-update/use-force-update.cjs.map +1 -1
  52. package/cjs/use-fullscreen/use-fullscreen.cjs +80 -89
  53. package/cjs/use-fullscreen/use-fullscreen.cjs.map +1 -1
  54. package/cjs/use-hash/use-hash.cjs +21 -28
  55. package/cjs/use-hash/use-hash.cjs.map +1 -1
  56. package/cjs/use-headroom/use-headroom.cjs +71 -94
  57. package/cjs/use-headroom/use-headroom.cjs.map +1 -1
  58. package/cjs/use-hotkeys/parse-hotkey.cjs +74 -82
  59. package/cjs/use-hotkeys/parse-hotkey.cjs.map +1 -1
  60. package/cjs/use-hotkeys/use-hotkeys.cjs +32 -33
  61. package/cjs/use-hotkeys/use-hotkeys.cjs.map +1 -1
  62. package/cjs/use-hover/use-hover.cjs +31 -33
  63. package/cjs/use-hover/use-hover.cjs.map +1 -1
  64. package/cjs/use-id/use-id.cjs +14 -18
  65. package/cjs/use-id/use-id.cjs.map +1 -1
  66. package/cjs/use-idle/use-idle.cjs +40 -33
  67. package/cjs/use-idle/use-idle.cjs.map +1 -1
  68. package/cjs/use-in-viewport/use-in-viewport.cjs +22 -27
  69. package/cjs/use-in-viewport/use-in-viewport.cjs.map +1 -1
  70. package/cjs/use-input-state/use-input-state.cjs +17 -26
  71. package/cjs/use-input-state/use-input-state.cjs.map +1 -1
  72. package/cjs/use-intersection/use-intersection.cjs +29 -27
  73. package/cjs/use-intersection/use-intersection.cjs.map +1 -1
  74. package/cjs/use-interval/use-interval.cjs +42 -41
  75. package/cjs/use-interval/use-interval.cjs.map +1 -1
  76. package/cjs/use-is-first-render/use-is-first-render.cjs +12 -13
  77. package/cjs/use-is-first-render/use-is-first-render.cjs.map +1 -1
  78. package/cjs/use-isomorphic-effect/use-isomorphic-effect.cjs +6 -7
  79. package/cjs/use-isomorphic-effect/use-isomorphic-effect.cjs.map +1 -1
  80. package/cjs/use-list-state/use-list-state.cjs +74 -73
  81. package/cjs/use-list-state/use-list-state.cjs.map +1 -1
  82. package/cjs/use-local-storage/create-storage.cjs +127 -139
  83. package/cjs/use-local-storage/create-storage.cjs.map +1 -1
  84. package/cjs/use-local-storage/use-local-storage.cjs +8 -9
  85. package/cjs/use-local-storage/use-local-storage.cjs.map +1 -1
  86. package/cjs/use-logger/use-logger.cjs +15 -16
  87. package/cjs/use-logger/use-logger.cjs.map +1 -1
  88. package/cjs/use-long-press/use-long-press.cjs +49 -58
  89. package/cjs/use-long-press/use-long-press.cjs.map +1 -1
  90. package/cjs/use-map/use-map.cjs +24 -25
  91. package/cjs/use-map/use-map.cjs.map +1 -1
  92. package/cjs/use-media-query/use-media-query.cjs +27 -33
  93. package/cjs/use-media-query/use-media-query.cjs.map +1 -1
  94. package/cjs/use-merged-ref/use-merged-ref.cjs +24 -35
  95. package/cjs/use-merged-ref/use-merged-ref.cjs.map +1 -1
  96. package/cjs/use-mounted/use-mounted.cjs +9 -10
  97. package/cjs/use-mounted/use-mounted.cjs.map +1 -1
  98. package/cjs/use-mouse/use-mouse.cjs +55 -53
  99. package/cjs/use-mouse/use-mouse.cjs.map +1 -1
  100. package/cjs/use-move/use-move.cjs +98 -98
  101. package/cjs/use-move/use-move.cjs.map +1 -1
  102. package/cjs/use-mutation-observer/use-mutation-observer.cjs +45 -46
  103. package/cjs/use-mutation-observer/use-mutation-observer.cjs.map +1 -1
  104. package/cjs/use-network/use-network.cjs +48 -44
  105. package/cjs/use-network/use-network.cjs.map +1 -1
  106. package/cjs/use-orientation/use-orientation.cjs +30 -41
  107. package/cjs/use-orientation/use-orientation.cjs.map +1 -1
  108. package/cjs/use-os/use-os.cjs +27 -52
  109. package/cjs/use-os/use-os.cjs.map +1 -1
  110. package/cjs/use-page-leave/use-page-leave.cjs +11 -12
  111. package/cjs/use-page-leave/use-page-leave.cjs.map +1 -1
  112. package/cjs/use-pagination/use-pagination.cjs +75 -88
  113. package/cjs/use-pagination/use-pagination.cjs.map +1 -1
  114. package/cjs/use-previous/use-previous.cjs +11 -12
  115. package/cjs/use-previous/use-previous.cjs.map +1 -1
  116. package/cjs/use-queue/use-queue.cjs +40 -37
  117. package/cjs/use-queue/use-queue.cjs.map +1 -1
  118. package/cjs/use-radial-move/use-radial-move.cjs +87 -94
  119. package/cjs/use-radial-move/use-radial-move.cjs.map +1 -1
  120. package/cjs/use-reduced-motion/use-reduced-motion.cjs +7 -8
  121. package/cjs/use-reduced-motion/use-reduced-motion.cjs.map +1 -1
  122. package/cjs/use-resize-observer/use-resize-observer.cjs +55 -62
  123. package/cjs/use-resize-observer/use-resize-observer.cjs.map +1 -1
  124. package/cjs/use-scroll-direction/use-scroll-direction.cjs +33 -36
  125. package/cjs/use-scroll-direction/use-scroll-direction.cjs.map +1 -1
  126. package/cjs/use-scroll-into-view/use-scroll-into-view.cjs +128 -160
  127. package/cjs/use-scroll-into-view/use-scroll-into-view.cjs.map +1 -1
  128. package/cjs/use-scroll-spy/use-scroll-spy.cjs +58 -84
  129. package/cjs/use-scroll-spy/use-scroll-spy.cjs.map +1 -1
  130. package/cjs/use-scroller/use-scroller.cjs +128 -151
  131. package/cjs/use-scroller/use-scroller.cjs.map +1 -1
  132. package/cjs/use-selection/use-selection.cjs +61 -72
  133. package/cjs/use-selection/use-selection.cjs.map +1 -1
  134. package/cjs/use-session-storage/use-session-storage.cjs +8 -9
  135. package/cjs/use-session-storage/use-session-storage.cjs.map +1 -1
  136. package/cjs/use-set/use-set.cjs +60 -74
  137. package/cjs/use-set/use-set.cjs.map +1 -1
  138. package/cjs/use-set-state/use-set-state.cjs +11 -16
  139. package/cjs/use-set-state/use-set-state.cjs.map +1 -1
  140. package/cjs/use-shallow-effect/use-shallow-effect.cjs +20 -31
  141. package/cjs/use-shallow-effect/use-shallow-effect.cjs.map +1 -1
  142. package/cjs/use-state-history/use-state-history.cjs +47 -40
  143. package/cjs/use-state-history/use-state-history.cjs.map +1 -1
  144. package/cjs/use-text-selection/use-text-selection.cjs +19 -20
  145. package/cjs/use-text-selection/use-text-selection.cjs.map +1 -1
  146. package/cjs/use-throttled-callback/use-throttled-callback.cjs +37 -48
  147. package/cjs/use-throttled-callback/use-throttled-callback.cjs.map +1 -1
  148. package/cjs/use-throttled-state/use-throttled-state.cjs +11 -12
  149. package/cjs/use-throttled-state/use-throttled-state.cjs.map +1 -1
  150. package/cjs/use-throttled-value/use-throttled-value.cjs +18 -22
  151. package/cjs/use-throttled-value/use-throttled-value.cjs.map +1 -1
  152. package/cjs/use-timeout/use-timeout.cjs +27 -32
  153. package/cjs/use-timeout/use-timeout.cjs.map +1 -1
  154. package/cjs/use-toggle/use-toggle.cjs +12 -13
  155. package/cjs/use-toggle/use-toggle.cjs.map +1 -1
  156. package/cjs/use-uncontrolled/use-uncontrolled.cjs +22 -25
  157. package/cjs/use-uncontrolled/use-uncontrolled.cjs.map +1 -1
  158. package/cjs/use-validated-state/use-validated-state.cjs +21 -24
  159. package/cjs/use-validated-state/use-validated-state.cjs.map +1 -1
  160. package/cjs/use-viewport-size/use-viewport-size.cjs +22 -22
  161. package/cjs/use-viewport-size/use-viewport-size.cjs.map +1 -1
  162. package/cjs/use-window-event/use-window-event.cjs +11 -12
  163. package/cjs/use-window-event/use-window-event.cjs.map +1 -1
  164. package/cjs/use-window-scroll/use-window-scroll.cjs +30 -26
  165. package/cjs/use-window-scroll/use-window-scroll.cjs.map +1 -1
  166. package/cjs/utils/clamp/clamp.cjs +9 -15
  167. package/cjs/utils/clamp/clamp.cjs.map +1 -1
  168. package/cjs/utils/lower-first/lower-first.cjs +6 -6
  169. package/cjs/utils/lower-first/lower-first.cjs.map +1 -1
  170. package/cjs/utils/random-id/random-id.cjs +6 -6
  171. package/cjs/utils/random-id/random-id.cjs.map +1 -1
  172. package/cjs/utils/range/range.cjs +8 -11
  173. package/cjs/utils/range/range.cjs.map +1 -1
  174. package/cjs/utils/shallow-equal/shallow-equal.cjs +17 -29
  175. package/cjs/utils/shallow-equal/shallow-equal.cjs.map +1 -1
  176. package/cjs/utils/upper-first/upper-first.cjs +6 -6
  177. package/cjs/utils/upper-first/upper-first.cjs.map +1 -1
  178. package/cjs/utils/use-callback-ref/use-callback-ref.cjs +11 -12
  179. package/cjs/utils/use-callback-ref/use-callback-ref.cjs.map +1 -1
  180. package/esm/index.mjs +87 -87
  181. package/esm/use-click-outside/use-click-outside.mjs +22 -24
  182. package/esm/use-click-outside/use-click-outside.mjs.map +1 -1
  183. package/esm/use-clipboard/use-clipboard.mjs +29 -26
  184. package/esm/use-clipboard/use-clipboard.mjs.map +1 -1
  185. package/esm/use-collapse/use-collapse.mjs +95 -95
  186. package/esm/use-collapse/use-collapse.mjs.map +1 -1
  187. package/esm/use-collapse/use-horizontal-collapse.mjs +94 -94
  188. package/esm/use-collapse/use-horizontal-collapse.mjs.map +1 -1
  189. package/esm/use-color-scheme/use-color-scheme.mjs +7 -6
  190. package/esm/use-color-scheme/use-color-scheme.mjs.map +1 -1
  191. package/esm/use-counter/use-counter.mjs +24 -24
  192. package/esm/use-counter/use-counter.mjs.map +1 -1
  193. package/esm/use-debounced-callback/use-debounced-callback.mjs +89 -91
  194. package/esm/use-debounced-callback/use-debounced-callback.mjs.map +1 -1
  195. package/esm/use-debounced-state/use-debounced-state.mjs +20 -26
  196. package/esm/use-debounced-state/use-debounced-state.mjs.map +1 -1
  197. package/esm/use-debounced-value/use-debounced-value.mjs +32 -29
  198. package/esm/use-debounced-value/use-debounced-value.mjs.map +1 -1
  199. package/esm/use-did-update/use-did-update.mjs +14 -19
  200. package/esm/use-did-update/use-did-update.mjs.map +1 -1
  201. package/esm/use-disclosure/use-disclosure.mjs +37 -28
  202. package/esm/use-disclosure/use-disclosure.mjs.map +1 -1
  203. package/esm/use-document-title/use-document-title.mjs +9 -10
  204. package/esm/use-document-title/use-document-title.mjs.map +1 -1
  205. package/esm/use-document-visibility/use-document-visibility.mjs +14 -13
  206. package/esm/use-document-visibility/use-document-visibility.mjs.map +1 -1
  207. package/esm/use-event-listener/use-event-listener.mjs +23 -30
  208. package/esm/use-event-listener/use-event-listener.mjs.map +1 -1
  209. package/esm/use-eye-dropper/use-eye-dropper.mjs +19 -22
  210. package/esm/use-eye-dropper/use-eye-dropper.mjs.map +1 -1
  211. package/esm/use-favicon/use-favicon.mjs +25 -30
  212. package/esm/use-favicon/use-favicon.mjs.map +1 -1
  213. package/esm/use-fetch/use-fetch.mjs +43 -43
  214. package/esm/use-fetch/use-fetch.mjs.map +1 -1
  215. package/esm/use-file-dialog/use-file-dialog.mjs +65 -75
  216. package/esm/use-file-dialog/use-file-dialog.mjs.map +1 -1
  217. package/esm/use-floating-window/use-floating-window.mjs +244 -253
  218. package/esm/use-floating-window/use-floating-window.mjs.map +1 -1
  219. package/esm/use-focus-return/use-focus-return.mjs +26 -35
  220. package/esm/use-focus-return/use-focus-return.mjs.map +1 -1
  221. package/esm/use-focus-trap/scope-tab.mjs +20 -29
  222. package/esm/use-focus-trap/scope-tab.mjs.map +1 -1
  223. package/esm/use-focus-trap/tabbable.mjs +23 -38
  224. package/esm/use-focus-trap/tabbable.mjs.map +1 -1
  225. package/esm/use-focus-trap/use-focus-trap.mjs +41 -66
  226. package/esm/use-focus-trap/use-focus-trap.mjs.map +1 -1
  227. package/esm/use-focus-within/use-focus-within.mjs +51 -60
  228. package/esm/use-focus-within/use-focus-within.mjs.map +1 -1
  229. package/esm/use-force-update/use-force-update.mjs +8 -7
  230. package/esm/use-force-update/use-force-update.mjs.map +1 -1
  231. package/esm/use-fullscreen/use-fullscreen.mjs +80 -87
  232. package/esm/use-fullscreen/use-fullscreen.mjs.map +1 -1
  233. package/esm/use-hash/use-hash.mjs +21 -26
  234. package/esm/use-hash/use-hash.mjs.map +1 -1
  235. package/esm/use-headroom/use-headroom.mjs +71 -89
  236. package/esm/use-headroom/use-headroom.mjs.map +1 -1
  237. package/esm/use-hotkeys/parse-hotkey.mjs +74 -79
  238. package/esm/use-hotkeys/parse-hotkey.mjs.map +1 -1
  239. package/esm/use-hotkeys/use-hotkeys.mjs +32 -31
  240. package/esm/use-hotkeys/use-hotkeys.mjs.map +1 -1
  241. package/esm/use-hover/use-hover.mjs +31 -31
  242. package/esm/use-hover/use-hover.mjs.map +1 -1
  243. package/esm/use-id/use-id.mjs +15 -17
  244. package/esm/use-id/use-id.mjs.map +1 -1
  245. package/esm/use-idle/use-idle.mjs +40 -31
  246. package/esm/use-idle/use-idle.mjs.map +1 -1
  247. package/esm/use-in-viewport/use-in-viewport.mjs +22 -25
  248. package/esm/use-in-viewport/use-in-viewport.mjs.map +1 -1
  249. package/esm/use-input-state/use-input-state.mjs +17 -23
  250. package/esm/use-input-state/use-input-state.mjs.map +1 -1
  251. package/esm/use-intersection/use-intersection.mjs +29 -25
  252. package/esm/use-intersection/use-intersection.mjs.map +1 -1
  253. package/esm/use-interval/use-interval.mjs +42 -39
  254. package/esm/use-interval/use-interval.mjs.map +1 -1
  255. package/esm/use-is-first-render/use-is-first-render.mjs +12 -11
  256. package/esm/use-is-first-render/use-is-first-render.mjs.map +1 -1
  257. package/esm/use-isomorphic-effect/use-isomorphic-effect.mjs +6 -5
  258. package/esm/use-isomorphic-effect/use-isomorphic-effect.mjs.map +1 -1
  259. package/esm/use-list-state/use-list-state.mjs +74 -71
  260. package/esm/use-list-state/use-list-state.mjs.map +1 -1
  261. package/esm/use-local-storage/create-storage.mjs +127 -137
  262. package/esm/use-local-storage/create-storage.mjs.map +1 -1
  263. package/esm/use-local-storage/use-local-storage.mjs +7 -6
  264. package/esm/use-local-storage/use-local-storage.mjs.map +1 -1
  265. package/esm/use-logger/use-logger.mjs +15 -14
  266. package/esm/use-logger/use-logger.mjs.map +1 -1
  267. package/esm/use-long-press/use-long-press.mjs +49 -56
  268. package/esm/use-long-press/use-long-press.mjs.map +1 -1
  269. package/esm/use-map/use-map.mjs +24 -23
  270. package/esm/use-map/use-map.mjs.map +1 -1
  271. package/esm/use-media-query/use-media-query.mjs +27 -31
  272. package/esm/use-media-query/use-media-query.mjs.map +1 -1
  273. package/esm/use-merged-ref/use-merged-ref.mjs +24 -33
  274. package/esm/use-merged-ref/use-merged-ref.mjs.map +1 -1
  275. package/esm/use-mounted/use-mounted.mjs +9 -8
  276. package/esm/use-mounted/use-mounted.mjs.map +1 -1
  277. package/esm/use-mouse/use-mouse.mjs +55 -51
  278. package/esm/use-mouse/use-mouse.mjs.map +1 -1
  279. package/esm/use-move/use-move.mjs +98 -96
  280. package/esm/use-move/use-move.mjs.map +1 -1
  281. package/esm/use-mutation-observer/use-mutation-observer.mjs +45 -44
  282. package/esm/use-mutation-observer/use-mutation-observer.mjs.map +1 -1
  283. package/esm/use-network/use-network.mjs +48 -42
  284. package/esm/use-network/use-network.mjs.map +1 -1
  285. package/esm/use-orientation/use-orientation.mjs +30 -39
  286. package/esm/use-orientation/use-orientation.mjs.map +1 -1
  287. package/esm/use-os/use-os.mjs +27 -50
  288. package/esm/use-os/use-os.mjs.map +1 -1
  289. package/esm/use-page-leave/use-page-leave.mjs +11 -10
  290. package/esm/use-page-leave/use-page-leave.mjs.map +1 -1
  291. package/esm/use-pagination/use-pagination.mjs +75 -85
  292. package/esm/use-pagination/use-pagination.mjs.map +1 -1
  293. package/esm/use-previous/use-previous.mjs +11 -10
  294. package/esm/use-previous/use-previous.mjs.map +1 -1
  295. package/esm/use-queue/use-queue.mjs +40 -35
  296. package/esm/use-queue/use-queue.mjs.map +1 -1
  297. package/esm/use-radial-move/use-radial-move.mjs +87 -92
  298. package/esm/use-radial-move/use-radial-move.mjs.map +1 -1
  299. package/esm/use-reduced-motion/use-reduced-motion.mjs +7 -6
  300. package/esm/use-reduced-motion/use-reduced-motion.mjs.map +1 -1
  301. package/esm/use-resize-observer/use-resize-observer.mjs +55 -60
  302. package/esm/use-resize-observer/use-resize-observer.mjs.map +1 -1
  303. package/esm/use-scroll-direction/use-scroll-direction.mjs +33 -34
  304. package/esm/use-scroll-direction/use-scroll-direction.mjs.map +1 -1
  305. package/esm/use-scroll-into-view/use-scroll-into-view.mjs +128 -158
  306. package/esm/use-scroll-into-view/use-scroll-into-view.mjs.map +1 -1
  307. package/esm/use-scroll-spy/use-scroll-spy.mjs +58 -82
  308. package/esm/use-scroll-spy/use-scroll-spy.mjs.map +1 -1
  309. package/esm/use-scroller/use-scroller.mjs +128 -149
  310. package/esm/use-scroller/use-scroller.mjs.map +1 -1
  311. package/esm/use-selection/use-selection.mjs +61 -70
  312. package/esm/use-selection/use-selection.mjs.map +1 -1
  313. package/esm/use-session-storage/use-session-storage.mjs +7 -6
  314. package/esm/use-session-storage/use-session-storage.mjs.map +1 -1
  315. package/esm/use-set/use-set.mjs +60 -71
  316. package/esm/use-set/use-set.mjs.map +1 -1
  317. package/esm/use-set-state/use-set-state.mjs +11 -14
  318. package/esm/use-set-state/use-set-state.mjs.map +1 -1
  319. package/esm/use-shallow-effect/use-shallow-effect.mjs +20 -29
  320. package/esm/use-shallow-effect/use-shallow-effect.mjs.map +1 -1
  321. package/esm/use-state-history/use-state-history.mjs +47 -38
  322. package/esm/use-state-history/use-state-history.mjs.map +1 -1
  323. package/esm/use-text-selection/use-text-selection.mjs +19 -18
  324. package/esm/use-text-selection/use-text-selection.mjs.map +1 -1
  325. package/esm/use-throttled-callback/use-throttled-callback.mjs +37 -46
  326. package/esm/use-throttled-callback/use-throttled-callback.mjs.map +1 -1
  327. package/esm/use-throttled-state/use-throttled-state.mjs +11 -10
  328. package/esm/use-throttled-state/use-throttled-state.mjs.map +1 -1
  329. package/esm/use-throttled-value/use-throttled-value.mjs +18 -20
  330. package/esm/use-throttled-value/use-throttled-value.mjs.map +1 -1
  331. package/esm/use-timeout/use-timeout.mjs +27 -30
  332. package/esm/use-timeout/use-timeout.mjs.map +1 -1
  333. package/esm/use-toggle/use-toggle.mjs +12 -11
  334. package/esm/use-toggle/use-toggle.mjs.map +1 -1
  335. package/esm/use-uncontrolled/use-uncontrolled.mjs +22 -23
  336. package/esm/use-uncontrolled/use-uncontrolled.mjs.map +1 -1
  337. package/esm/use-validated-state/use-validated-state.mjs +21 -22
  338. package/esm/use-validated-state/use-validated-state.mjs.map +1 -1
  339. package/esm/use-viewport-size/use-viewport-size.mjs +22 -20
  340. package/esm/use-viewport-size/use-viewport-size.mjs.map +1 -1
  341. package/esm/use-window-event/use-window-event.mjs +11 -10
  342. package/esm/use-window-event/use-window-event.mjs.map +1 -1
  343. package/esm/use-window-scroll/use-window-scroll.mjs +30 -24
  344. package/esm/use-window-scroll/use-window-scroll.mjs.map +1 -1
  345. package/esm/utils/clamp/clamp.mjs +9 -13
  346. package/esm/utils/clamp/clamp.mjs.map +1 -1
  347. package/esm/utils/lower-first/lower-first.mjs +6 -4
  348. package/esm/utils/lower-first/lower-first.mjs.map +1 -1
  349. package/esm/utils/random-id/random-id.mjs +6 -4
  350. package/esm/utils/random-id/random-id.mjs.map +1 -1
  351. package/esm/utils/range/range.mjs +8 -9
  352. package/esm/utils/range/range.mjs.map +1 -1
  353. package/esm/utils/shallow-equal/shallow-equal.mjs +17 -27
  354. package/esm/utils/shallow-equal/shallow-equal.mjs.map +1 -1
  355. package/esm/utils/upper-first/upper-first.mjs +6 -4
  356. package/esm/utils/upper-first/upper-first.mjs.map +1 -1
  357. package/esm/utils/use-callback-ref/use-callback-ref.mjs +11 -10
  358. package/esm/utils/use-callback-ref/use-callback-ref.mjs.map +1 -1
  359. package/lib/use-local-storage/use-local-storage.d.ts +13 -3
  360. package/lib/use-session-storage/use-session-storage.d.ts +13 -3
  361. package/package.json +1 -1
  362. package/cjs/index.cjs.map +0 -1
  363. package/cjs/use-drag/use-drag.cjs +0 -304
  364. package/cjs/use-drag/use-drag.cjs.map +0 -1
  365. package/cjs/use-mask/use-mask.cjs +0 -583
  366. package/cjs/use-mask/use-mask.cjs.map +0 -1
  367. package/cjs/use-roving-index/use-roving-index.cjs +0 -270
  368. package/cjs/use-roving-index/use-roving-index.cjs.map +0 -1
  369. package/esm/index.mjs.map +0 -1
  370. package/esm/use-drag/use-drag.mjs +0 -302
  371. package/esm/use-drag/use-drag.mjs.map +0 -1
  372. package/esm/use-mask/use-mask.mjs +0 -577
  373. package/esm/use-mask/use-mask.mjs.map +0 -1
  374. package/esm/use-roving-index/use-roving-index.mjs +0 -268
  375. package/esm/use-roving-index/use-roving-index.mjs.map +0 -1
  376. package/lib/use-drag/use-drag.d.ts +0 -60
  377. package/lib/use-mask/use-mask.d.ts +0 -60
  378. package/lib/use-roving-index/use-roving-index.d.ts +0 -49
@@ -1,577 +0,0 @@
1
- 'use client';
2
- import { useRef, useState, useCallback, useEffect } from 'react';
3
-
4
- const DEFAULT_TOKENS = {
5
- "9": /[0-9]/,
6
- a: /[A-Za-z]/,
7
- A: /[A-Z]/,
8
- "*": /[A-Za-z0-9]/,
9
- "#": /[-+0-9]/
10
- };
11
- function parseMask(mask, tokens) {
12
- if (Array.isArray(mask)) {
13
- return mask.map((item) => {
14
- if (item instanceof RegExp) {
15
- return { type: "token", char: "_", pattern: item };
16
- }
17
- return { type: "literal", char: item };
18
- });
19
- }
20
- const slots = [];
21
- let optional = false;
22
- for (let i = 0; i < mask.length; i++) {
23
- const char = mask[i];
24
- if (char === "\\" && i + 1 < mask.length) {
25
- i++;
26
- slots.push({ type: "literal", char: mask[i] });
27
- continue;
28
- }
29
- if (char === "?") {
30
- optional = true;
31
- continue;
32
- }
33
- if (tokens[char]) {
34
- slots.push({ type: "token", char, pattern: tokens[char], optional });
35
- } else {
36
- slots.push({ type: "literal", char, optional });
37
- }
38
- }
39
- return slots;
40
- }
41
- function getSlotChar(slotCharOption, index) {
42
- if (slotCharOption === null || slotCharOption === "" || slotCharOption === void 0) {
43
- return "";
44
- }
45
- if (slotCharOption.length > 1) {
46
- return slotCharOption[index] || "_";
47
- }
48
- return slotCharOption;
49
- }
50
- function applyMaskToRaw(raw, slots, _slotCharOption, transform) {
51
- let result = "";
52
- let rawIndex = 0;
53
- let slotIndex = 0;
54
- for (slotIndex = 0; slotIndex < slots.length; slotIndex++) {
55
- const slot = slots[slotIndex];
56
- if (slot.type === "literal") {
57
- result += slot.char;
58
- } else if (rawIndex < raw.length) {
59
- const ch = transform ? transform(raw[rawIndex]) : raw[rawIndex];
60
- if (slot.pattern && slot.pattern.test(ch)) {
61
- result += ch;
62
- rawIndex++;
63
- } else {
64
- rawIndex++;
65
- slotIndex--;
66
- }
67
- } else {
68
- break;
69
- }
70
- }
71
- return result;
72
- }
73
- function buildDisplayValue(value, slots, slotCharOption, showSlots) {
74
- if (!showSlots) {
75
- return value;
76
- }
77
- let display = value;
78
- for (let i = value.length; i < slots.length; i++) {
79
- const slot = slots[i];
80
- if (slot.type === "literal") {
81
- display += slot.char;
82
- } else {
83
- const sc = getSlotChar(slotCharOption, i);
84
- if (!sc) {
85
- break;
86
- }
87
- display += sc;
88
- }
89
- }
90
- return display;
91
- }
92
- function extractRaw(masked, slots) {
93
- let raw = "";
94
- for (let i = 0; i < masked.length && i < slots.length; i++) {
95
- if (slots[i].type === "token") {
96
- raw += masked[i];
97
- }
98
- }
99
- return raw;
100
- }
101
- function checkComplete(masked, slots) {
102
- for (let i = 0; i < slots.length; i++) {
103
- if (slots[i].type === "token" && !slots[i].optional) {
104
- if (i >= masked.length) {
105
- return false;
106
- }
107
- if (!slots[i].pattern.test(masked[i])) {
108
- return false;
109
- }
110
- }
111
- }
112
- return true;
113
- }
114
- function findNextTokenIndex(slots, from) {
115
- for (let i = from; i < slots.length; i++) {
116
- if (slots[i].type === "token") {
117
- return i;
118
- }
119
- }
120
- return slots.length;
121
- }
122
- function findPrevTokenIndex(slots, from) {
123
- for (let i = from; i >= 0; i--) {
124
- if (slots[i].type === "token") {
125
- return i;
126
- }
127
- }
128
- return -1;
129
- }
130
- function processInput(inputValue, slots, _slotCharOption) {
131
- let result = "";
132
- let inputIndex = 0;
133
- for (let slotIndex = 0; slotIndex < slots.length && inputIndex <= inputValue.length; slotIndex++) {
134
- const slot = slots[slotIndex];
135
- if (slot.type === "literal") {
136
- result += slot.char;
137
- if (inputIndex < inputValue.length && inputValue[inputIndex] === slot.char) {
138
- inputIndex++;
139
- }
140
- continue;
141
- }
142
- if (inputIndex >= inputValue.length) {
143
- break;
144
- }
145
- while (inputIndex < inputValue.length) {
146
- const ch = inputValue[inputIndex];
147
- inputIndex++;
148
- if (slot.pattern.test(ch)) {
149
- result += ch;
150
- break;
151
- }
152
- }
153
- if (result.length <= slotIndex) {
154
- break;
155
- }
156
- }
157
- return result;
158
- }
159
- function getResolvedOptions(options, rawValue) {
160
- const tokens = { ...DEFAULT_TOKENS, ...options.tokens };
161
- let mask = options.mask;
162
- let slotChar = options.slotChar === void 0 ? "_" : options.slotChar;
163
- let separate = options.separate ?? false;
164
- if (options.modify) {
165
- const overrides = options.modify(rawValue);
166
- if (overrides) {
167
- if (overrides.mask !== void 0) {
168
- mask = overrides.mask;
169
- }
170
- if (overrides.tokens !== void 0) {
171
- Object.assign(tokens, overrides.tokens);
172
- }
173
- if (overrides.slotChar !== void 0) {
174
- slotChar = overrides.slotChar;
175
- }
176
- if (overrides.separate !== void 0) {
177
- separate = overrides.separate;
178
- }
179
- }
180
- }
181
- const slots = parseMask(mask, tokens);
182
- return { slots, slotChar, separate, tokens, transform: options.transform };
183
- }
184
- function formatMask(raw, options) {
185
- const { slots, slotChar, transform } = getResolvedOptions(options, raw);
186
- return applyMaskToRaw(raw, slots, slotChar, transform);
187
- }
188
- function unformatMask(masked, options) {
189
- const { slots } = getResolvedOptions(options, "");
190
- return extractRaw(masked, slots);
191
- }
192
- function isMaskComplete(masked, options) {
193
- const { slots } = getResolvedOptions(options, "");
194
- return checkComplete(masked, slots);
195
- }
196
- function generatePattern(mode, options) {
197
- const { slots } = getResolvedOptions(options, "");
198
- let pattern = "";
199
- for (const slot of slots) {
200
- if (slot.type === "literal") {
201
- pattern += slot.char.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
202
- } else {
203
- const src = slot.pattern.source;
204
- if (mode === "full-inexact") {
205
- pattern += slot.optional ? `${src}?` : src;
206
- } else {
207
- pattern += slot.optional ? `(${src})?` : `(${src})`;
208
- }
209
- }
210
- }
211
- return pattern;
212
- }
213
- function useMask(options) {
214
- const optionsRef = useRef(options);
215
- optionsRef.current = options;
216
- const inputRef = useRef(null);
217
- const [maskedValue, setMaskedValue] = useState("");
218
- const [rawValue, setRawValue] = useState("");
219
- const processedRef = useRef("");
220
- const wasCompleteRef = useRef(false);
221
- const isFocusedRef = useRef(false);
222
- const getOptions = useCallback(() => {
223
- const opts = optionsRef.current;
224
- return getResolvedOptions(opts, rawValue);
225
- }, [rawValue]);
226
- const updateValue = useCallback(
227
- (newMasked, cursorPos) => {
228
- const opts = optionsRef.current;
229
- const { slots } = getResolvedOptions(
230
- opts,
231
- extractRaw(newMasked, getResolvedOptions(opts, "").slots)
232
- );
233
- const raw = extractRaw(newMasked, slots);
234
- const { slots: resolvedSlots, slotChar } = getResolvedOptions(opts, raw);
235
- const reprocessed = processInput(newMasked, resolvedSlots);
236
- const newRaw = extractRaw(reprocessed, resolvedSlots);
237
- const showSlots = opts.alwaysShowMask || isFocusedRef.current;
238
- const showOnFocus = opts.showMaskOnFocus !== false;
239
- const shouldShowSlots = showSlots && (showOnFocus || reprocessed.length > 0);
240
- const displayValue = buildDisplayValue(reprocessed, resolvedSlots, slotChar, shouldShowSlots);
241
- processedRef.current = reprocessed;
242
- setMaskedValue(displayValue);
243
- setRawValue(newRaw);
244
- if (inputRef.current) {
245
- inputRef.current.value = displayValue;
246
- if (cursorPos !== void 0 && document.activeElement === inputRef.current) {
247
- const pos = Math.min(cursorPos, reprocessed.length);
248
- inputRef.current.setSelectionRange(pos, pos);
249
- }
250
- }
251
- if (opts.onChangeRaw) {
252
- opts.onChangeRaw(newRaw, displayValue);
253
- }
254
- const complete = checkComplete(reprocessed, resolvedSlots);
255
- if (complete && !wasCompleteRef.current && opts.onComplete) {
256
- opts.onComplete(displayValue, newRaw);
257
- }
258
- wasCompleteRef.current = complete;
259
- return { displayValue, newRaw, reprocessed, resolvedSlots };
260
- },
261
- [getOptions]
262
- );
263
- const handleInput = useCallback(
264
- (e) => {
265
- const input = e.target;
266
- const opts = optionsRef.current;
267
- const { slots: resolvedSlots, slotChar, transform } = getResolvedOptions(opts, "");
268
- const raw = extractRaw(input.value, resolvedSlots);
269
- const reformatted = applyMaskToRaw(raw, resolvedSlots, slotChar, transform);
270
- updateValue(reformatted, reformatted.length);
271
- },
272
- [updateValue]
273
- );
274
- const clampCursorToProcessed = useCallback((input) => {
275
- const opts = optionsRef.current;
276
- const { slots } = getResolvedOptions(opts, "");
277
- const processed = processedRef.current;
278
- const cursorPos = input.selectionStart ?? 0;
279
- const maxPos = processed.length > 0 ? findNextEditablePosition(processed.length, slots, processed) : findNextTokenIndex(slots, 0);
280
- if (cursorPos > maxPos) {
281
- input.setSelectionRange(maxPos, maxPos);
282
- }
283
- }, []);
284
- const handleFocus = useCallback(() => {
285
- isFocusedRef.current = true;
286
- const opts = optionsRef.current;
287
- const input = inputRef.current;
288
- if (!input) {
289
- return;
290
- }
291
- const { slots, slotChar } = getResolvedOptions(opts, "");
292
- const showOnFocus = opts.showMaskOnFocus !== false;
293
- const processed = processedRef.current;
294
- if (showOnFocus || opts.alwaysShowMask) {
295
- const display = buildDisplayValue(processed, slots, slotChar, true);
296
- input.value = display;
297
- setMaskedValue(display);
298
- }
299
- requestAnimationFrame(() => {
300
- if (input === document.activeElement) {
301
- clampCursorToProcessed(input);
302
- }
303
- });
304
- }, [clampCursorToProcessed]);
305
- const handleMouseUp = useCallback(() => {
306
- const input = inputRef.current;
307
- if (!input || input !== document.activeElement) {
308
- return;
309
- }
310
- clampCursorToProcessed(input);
311
- }, [clampCursorToProcessed]);
312
- const handleBlur = useCallback(() => {
313
- isFocusedRef.current = false;
314
- const opts = optionsRef.current;
315
- const input = inputRef.current;
316
- if (!input) {
317
- return;
318
- }
319
- const { slots, slotChar } = getResolvedOptions(opts, rawValue);
320
- const processed = processInput(input.value, slots);
321
- const complete = checkComplete(processed, slots);
322
- if (opts.autoClear && !complete && processed.length > 0) {
323
- input.value = "";
324
- processedRef.current = "";
325
- setMaskedValue("");
326
- setRawValue("");
327
- wasCompleteRef.current = false;
328
- if (opts.onChangeRaw) {
329
- opts.onChangeRaw("", "");
330
- }
331
- if (opts.alwaysShowMask) {
332
- const emptyDisplay = buildDisplayValue("", slots, slotChar, true);
333
- input.value = emptyDisplay;
334
- setMaskedValue(emptyDisplay);
335
- }
336
- return;
337
- }
338
- if (!opts.alwaysShowMask && !complete) {
339
- const display = buildDisplayValue(processed, slots, slotChar, false);
340
- input.value = display;
341
- setMaskedValue(display);
342
- }
343
- }, [rawValue]);
344
- const handleKeyDown = useCallback(
345
- (e) => {
346
- const input = e.target;
347
- const opts = optionsRef.current;
348
- const { slots, slotChar, transform } = getResolvedOptions(opts, rawValue);
349
- const start = input.selectionStart ?? 0;
350
- const end = input.selectionEnd ?? 0;
351
- const processed = processedRef.current;
352
- if (e.key === "Backspace") {
353
- e.preventDefault();
354
- if (e.metaKey || e.ctrlKey && !e.altKey) {
355
- const clampedStart = Math.min(start, processed.length);
356
- const afterRaw2 = extractRaw(processed.slice(clampedStart), slots.slice(clampedStart));
357
- const newValue2 = applyMaskToRaw(afterRaw2, slots, slotChar, transform);
358
- updateValue(newValue2, 0);
359
- return;
360
- }
361
- if (start !== end) {
362
- const clampedEnd = Math.min(end, processed.length);
363
- const before = processed.slice(0, start);
364
- const afterRaw2 = extractRaw(processed.slice(clampedEnd), slots.slice(clampedEnd));
365
- const newValue2 = applyMaskToRaw(
366
- extractRaw(before, slots) + afterRaw2,
367
- slots,
368
- slotChar,
369
- transform
370
- );
371
- updateValue(newValue2, start);
372
- return;
373
- }
374
- if (start === 0) {
375
- return;
376
- }
377
- let deletePos = start - 1;
378
- while (deletePos >= 0 && slots[deletePos] && slots[deletePos].type === "literal") {
379
- deletePos--;
380
- }
381
- if (deletePos < 0) {
382
- return;
383
- }
384
- const beforeRaw = extractRaw(processed.slice(0, deletePos), slots.slice(0, deletePos));
385
- const afterRaw = extractRaw(processed.slice(deletePos + 1), slots.slice(deletePos + 1));
386
- const newValue = applyMaskToRaw(beforeRaw + afterRaw, slots, slotChar, transform);
387
- updateValue(newValue, deletePos);
388
- } else if (e.key === "Delete") {
389
- e.preventDefault();
390
- if (start !== end) {
391
- const clampedEnd = Math.min(end, processed.length);
392
- const before = processed.slice(0, start);
393
- const afterRaw2 = extractRaw(processed.slice(clampedEnd), slots.slice(clampedEnd));
394
- const newValue2 = applyMaskToRaw(
395
- extractRaw(before, slots) + afterRaw2,
396
- slots,
397
- slotChar,
398
- transform
399
- );
400
- updateValue(newValue2, start);
401
- return;
402
- }
403
- let deletePos = start;
404
- while (deletePos < slots.length && slots[deletePos] && slots[deletePos].type === "literal") {
405
- deletePos++;
406
- }
407
- if (deletePos >= processed.length) {
408
- return;
409
- }
410
- const beforeRaw = extractRaw(processed.slice(0, start), slots.slice(0, start));
411
- const afterRaw = extractRaw(processed.slice(deletePos + 1), slots.slice(deletePos + 1));
412
- const newValue = applyMaskToRaw(beforeRaw + afterRaw, slots, slotChar, transform);
413
- updateValue(newValue, start);
414
- } else if (e.key === "ArrowRight" && !e.shiftKey) {
415
- const nextPos = findNextEditablePosition(start + 1, slots, input.value);
416
- if (nextPos !== start + 1) {
417
- e.preventDefault();
418
- input.setSelectionRange(nextPos, nextPos);
419
- }
420
- } else if (e.key === "ArrowLeft" && !e.shiftKey) {
421
- if (start > 0) {
422
- const prevToken = findPrevTokenIndex(slots, start - 1);
423
- if (prevToken >= 0 && prevToken !== start - 1) {
424
- e.preventDefault();
425
- input.setSelectionRange(prevToken + 1, prevToken + 1);
426
- }
427
- }
428
- } else if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {
429
- e.preventDefault();
430
- let insertPos = Math.min(start, processed.length);
431
- while (insertPos < slots.length && slots[insertPos] && slots[insertPos].type === "literal") {
432
- insertPos++;
433
- }
434
- if (insertPos >= slots.length) {
435
- return;
436
- }
437
- const slot = slots[insertPos];
438
- const ch = transform ? transform(e.key) : e.key;
439
- if (!slot.pattern.test(ch)) {
440
- return;
441
- }
442
- const beforeRaw = extractRaw(processed.slice(0, insertPos), slots.slice(0, insertPos));
443
- const afterRaw = start < end ? extractRaw(
444
- processed.slice(Math.min(end, processed.length)),
445
- slots.slice(Math.min(end, processed.length))
446
- ) : extractRaw(processed.slice(insertPos), slots.slice(insertPos));
447
- const newValue = applyMaskToRaw(beforeRaw + ch + afterRaw, slots, slotChar, transform);
448
- const newCursorPos = findNextEditablePosition(insertPos + 1, slots, newValue);
449
- updateValue(newValue, newCursorPos);
450
- }
451
- },
452
- [rawValue, updateValue]
453
- );
454
- const handlePaste = useCallback(
455
- (e) => {
456
- e.preventDefault();
457
- const input = e.target;
458
- const opts = optionsRef.current;
459
- const pastedText = e.clipboardData?.getData("text") ?? "";
460
- const start = input.selectionStart ?? 0;
461
- const end = input.selectionEnd ?? 0;
462
- const processed = processedRef.current;
463
- const { slots, slotChar, transform } = getResolvedOptions(opts, "");
464
- const clampedEnd = Math.min(end, processed.length);
465
- const beforeRaw = extractRaw(processed.slice(0, start), slots.slice(0, start));
466
- const afterRaw = extractRaw(processed.slice(clampedEnd), slots.slice(clampedEnd));
467
- const newValue = applyMaskToRaw(
468
- beforeRaw + pastedText + afterRaw,
469
- slots,
470
- slotChar,
471
- transform
472
- );
473
- const { reprocessed } = updateValue(newValue);
474
- const pasteEndPos = Math.min((reprocessed || newValue).length, slots.length);
475
- if (input === document.activeElement) {
476
- input.setSelectionRange(pasteEndPos, pasteEndPos);
477
- }
478
- },
479
- [updateValue]
480
- );
481
- const setAriaAttributes = useCallback((input) => {
482
- const opts = optionsRef.current;
483
- if (opts.invalid) {
484
- input.setAttribute("aria-invalid", "true");
485
- } else {
486
- input.removeAttribute("aria-invalid");
487
- }
488
- }, []);
489
- const refCallback = useCallback(
490
- (node) => {
491
- const prevInput = inputRef.current;
492
- if (prevInput) {
493
- prevInput.removeEventListener("input", handleInput);
494
- prevInput.removeEventListener("focus", handleFocus);
495
- prevInput.removeEventListener("blur", handleBlur);
496
- prevInput.removeEventListener("mouseup", handleMouseUp);
497
- prevInput.removeEventListener("keydown", handleKeyDown);
498
- prevInput.removeEventListener("paste", handlePaste);
499
- }
500
- inputRef.current = node;
501
- if (node) {
502
- node.addEventListener("input", handleInput);
503
- node.addEventListener("focus", handleFocus);
504
- node.addEventListener("blur", handleBlur);
505
- node.addEventListener("mouseup", handleMouseUp);
506
- node.addEventListener("keydown", handleKeyDown);
507
- node.addEventListener("paste", handlePaste);
508
- setAriaAttributes(node);
509
- if (options.alwaysShowMask && !node.value) {
510
- const { slots, slotChar } = getResolvedOptions(options, "");
511
- const display = buildDisplayValue("", slots, slotChar, true);
512
- node.value = display;
513
- setMaskedValue(display);
514
- }
515
- }
516
- },
517
- [
518
- handleInput,
519
- handleFocus,
520
- handleBlur,
521
- handleMouseUp,
522
- handleKeyDown,
523
- handlePaste,
524
- setAriaAttributes,
525
- options
526
- ]
527
- );
528
- useEffect(() => {
529
- const input = inputRef.current;
530
- if (!input) {
531
- return;
532
- }
533
- setAriaAttributes(input);
534
- }, [options.invalid, setAriaAttributes]);
535
- const isComplete = (() => {
536
- const { slots } = getOptions();
537
- return checkComplete(processedRef.current, slots);
538
- })();
539
- const reset = useCallback(() => {
540
- const opts = optionsRef.current;
541
- const input = inputRef.current;
542
- processedRef.current = "";
543
- setMaskedValue("");
544
- setRawValue("");
545
- wasCompleteRef.current = false;
546
- if (input) {
547
- if (opts.alwaysShowMask) {
548
- const { slots, slotChar } = getResolvedOptions(opts, "");
549
- const display = buildDisplayValue("", slots, slotChar, true);
550
- input.value = display;
551
- setMaskedValue(display);
552
- } else {
553
- input.value = "";
554
- }
555
- }
556
- if (opts.onChangeRaw) {
557
- opts.onChangeRaw("", "");
558
- }
559
- }, []);
560
- return {
561
- ref: refCallback,
562
- value: maskedValue,
563
- rawValue,
564
- isComplete,
565
- reset
566
- };
567
- }
568
- function findNextEditablePosition(from, slots, value) {
569
- let pos = from;
570
- while (pos < slots.length && pos < value.length && slots[pos] && slots[pos].type === "literal") {
571
- pos++;
572
- }
573
- return pos;
574
- }
575
-
576
- export { formatMask, generatePattern, isMaskComplete, unformatMask, useMask };
577
- //# sourceMappingURL=use-mask.mjs.map