@sprawlify/primitives 0.0.1

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/dist/anatomy.cjs +3 -0
  2. package/dist/anatomy.d.cts +2 -0
  3. package/dist/anatomy.d.mts +2 -0
  4. package/dist/anatomy.mjs +3 -0
  5. package/dist/aria-hidden-DqYx0f_y.mjs +177 -0
  6. package/dist/aria-hidden-DtLU6hSU.cjs +182 -0
  7. package/dist/aria-hidden.cjs +4 -0
  8. package/dist/aria-hidden.d.cts +16 -0
  9. package/dist/aria-hidden.d.mts +16 -0
  10. package/dist/aria-hidden.mjs +4 -0
  11. package/dist/auto-resize-D3qHtFy1.mjs +114 -0
  12. package/dist/auto-resize-xzlPFDyD.cjs +125 -0
  13. package/dist/auto-resize.cjs +5 -0
  14. package/dist/auto-resize.d.cts +17 -0
  15. package/dist/auto-resize.d.mts +17 -0
  16. package/dist/auto-resize.mjs +4 -0
  17. package/dist/chunk-CbDLau6x.cjs +34 -0
  18. package/dist/collection-8XqaNHs_.mjs +1279 -0
  19. package/dist/collection-DIoIDISa.cjs +1326 -0
  20. package/dist/collection.cjs +11 -0
  21. package/dist/collection.d.cts +5 -0
  22. package/dist/collection.d.mts +5 -0
  23. package/dist/collection.mjs +4 -0
  24. package/dist/color-BkAP1Tkd.d.mts +60 -0
  25. package/dist/color-VKewNv2e.d.cts +60 -0
  26. package/dist/color-utils-Cc5GVXZh.mjs +657 -0
  27. package/dist/color-utils-LER_6Zwu.cjs +680 -0
  28. package/dist/color-utils.cjs +7 -0
  29. package/dist/color-utils.d.cts +19 -0
  30. package/dist/color-utils.d.mts +19 -0
  31. package/dist/color-utils.mjs +4 -0
  32. package/dist/core-30pJjyC2.d.mts +49 -0
  33. package/dist/core-CQFbMdTl.cjs +176 -0
  34. package/dist/core-CefBjbst.d.cts +49 -0
  35. package/dist/core-DCFNMTZF.mjs +129 -0
  36. package/dist/core.cjs +12 -0
  37. package/dist/core.d.cts +3 -0
  38. package/dist/core.d.mts +3 -0
  39. package/dist/core.mjs +5 -0
  40. package/dist/create-anatomy-B3XYc-qG.d.mts +70 -0
  41. package/dist/create-anatomy-BGQ8pv8J.d.cts +70 -0
  42. package/dist/create-anatomy-BbDZbHpC.mjs +39 -0
  43. package/dist/create-anatomy-CDsIFUXg.cjs +45 -0
  44. package/dist/create-props-BnF_vl-E.mjs +5 -0
  45. package/dist/create-props-YKy7JIKj.cjs +11 -0
  46. package/dist/data-url-C3ITPVRX.d.cts +10 -0
  47. package/dist/data-url-DLwZ9M77.d.mts +10 -0
  48. package/dist/date-utils-D2xPHa_I.cjs +738 -0
  49. package/dist/date-utils-wEa1hhpc.mjs +474 -0
  50. package/dist/date-utils.cjs +46 -0
  51. package/dist/date-utils.d.cts +101 -0
  52. package/dist/date-utils.d.mts +2 -0
  53. package/dist/date-utils.mjs +3 -0
  54. package/dist/defineProperty-BoUOT9Ie.cjs +49 -0
  55. package/dist/defineProperty-DrXfyjd4.mjs +43 -0
  56. package/dist/dismissable-CTfKZ4OG.cjs +282 -0
  57. package/dist/dismissable-DDrx0xnH.mjs +271 -0
  58. package/dist/dismissable-layer-C7pZU2wi.d.cts +39 -0
  59. package/dist/dismissable-layer-t_b0fk-p.d.mts +39 -0
  60. package/dist/dismissable.cjs +7 -0
  61. package/dist/dismissable.d.cts +3 -0
  62. package/dist/dismissable.d.mts +3 -0
  63. package/dist/dismissable.mjs +6 -0
  64. package/dist/dom-query-CWZdWUGp.cjs +2141 -0
  65. package/dist/dom-query-DFCRhyj1.mjs +1374 -0
  66. package/dist/dom-query.cjs +130 -0
  67. package/dist/dom-query.d.cts +307 -0
  68. package/dist/dom-query.d.mts +307 -0
  69. package/dist/dom-query.mjs +3 -0
  70. package/dist/file-utils.cjs +220 -0
  71. package/dist/file-utils.d.cts +51 -0
  72. package/dist/file-utils.d.mts +51 -0
  73. package/dist/file-utils.mjs +210 -0
  74. package/dist/focus-trap-D-bypQEJ.mjs +485 -0
  75. package/dist/focus-trap-D4i52S9A.cjs +496 -0
  76. package/dist/focus-trap.cjs +5 -0
  77. package/dist/focus-trap.d.cts +88 -0
  78. package/dist/focus-trap.d.mts +88 -0
  79. package/dist/focus-trap.mjs +4 -0
  80. package/dist/focus-visible-DYTWdWpa.cjs +210 -0
  81. package/dist/focus-visible-irppYatv.mjs +175 -0
  82. package/dist/focus-visible.cjs +9 -0
  83. package/dist/focus-visible.d.cts +31 -0
  84. package/dist/focus-visible.d.mts +31 -0
  85. package/dist/focus-visible.mjs +4 -0
  86. package/dist/functions-BOkTDEFM.d.cts +15 -0
  87. package/dist/functions-IZtWcC8Q.d.mts +15 -0
  88. package/dist/highlight-word.cjs +100 -0
  89. package/dist/highlight-word.d.cts +24 -0
  90. package/dist/highlight-word.d.mts +24 -0
  91. package/dist/highlight-word.mjs +99 -0
  92. package/dist/hotkeys.cjs +758 -0
  93. package/dist/hotkeys.d.cts +130 -0
  94. package/dist/hotkeys.d.mts +130 -0
  95. package/dist/hotkeys.mjs +754 -0
  96. package/dist/i18n-utils.cjs +450 -0
  97. package/dist/i18n-utils.d.cts +61 -0
  98. package/dist/i18n-utils.d.mts +61 -0
  99. package/dist/i18n-utils.mjs +440 -0
  100. package/dist/index-BkzYij2j.d.mts +25 -0
  101. package/dist/index-Bqw3r34-.d.cts +1383 -0
  102. package/dist/index-C0MKXQmE.d.mts +1383 -0
  103. package/dist/index-C9-feK5c.d.cts +25 -0
  104. package/dist/index-CD5FN7kY.d.mts +114 -0
  105. package/dist/index-CJji6wHl.d.cts +15 -0
  106. package/dist/index-CNi5FkPe.d.mts +15 -0
  107. package/dist/index-D96rs8B0.d.mts +115 -0
  108. package/dist/index.cjs +0 -0
  109. package/dist/index.d.cts +1 -0
  110. package/dist/index.d.mts +1 -0
  111. package/dist/index.mjs +1 -0
  112. package/dist/interact-outside-BplxR9cR.mjs +200 -0
  113. package/dist/interact-outside-C8-oFBpB.cjs +205 -0
  114. package/dist/interact-outside.cjs +5 -0
  115. package/dist/interact-outside.d.cts +2 -0
  116. package/dist/interact-outside.d.mts +2 -0
  117. package/dist/interact-outside.mjs +5 -0
  118. package/dist/json-tree-utils.cjs +1512 -0
  119. package/dist/json-tree-utils.d.cts +117 -0
  120. package/dist/json-tree-utils.d.mts +117 -0
  121. package/dist/json-tree-utils.mjs +1463 -0
  122. package/dist/list-collection-BIMJGQjn.d.cts +61 -0
  123. package/dist/list-collection-Db3eixRU.d.mts +61 -0
  124. package/dist/live-region-CcZPGo89.cjs +52 -0
  125. package/dist/live-region-CnPh21WH.mjs +46 -0
  126. package/dist/live-region.cjs +3 -0
  127. package/dist/live-region.d.cts +2 -0
  128. package/dist/live-region.d.mts +2 -0
  129. package/dist/live-region.mjs +3 -0
  130. package/dist/machines/accordion/index.cjs +328 -0
  131. package/dist/machines/accordion/index.d.cts +83 -0
  132. package/dist/machines/accordion/index.d.mts +83 -0
  133. package/dist/machines/accordion/index.mjs +322 -0
  134. package/dist/machines/async-list/index.cjs +311 -0
  135. package/dist/machines/async-list/index.d.cts +89 -0
  136. package/dist/machines/async-list/index.d.mts +89 -0
  137. package/dist/machines/async-list/index.mjs +310 -0
  138. package/dist/machines/avatar/index.cjs +169 -0
  139. package/dist/machines/avatar/index.d.cts +63 -0
  140. package/dist/machines/avatar/index.d.mts +63 -0
  141. package/dist/machines/avatar/index.mjs +165 -0
  142. package/dist/machines/bottom-sheet/index.cjs +676 -0
  143. package/dist/machines/bottom-sheet/index.d.cts +239 -0
  144. package/dist/machines/bottom-sheet/index.d.mts +239 -0
  145. package/dist/machines/bottom-sheet/index.mjs +672 -0
  146. package/dist/machines/carousel/index.cjs +859 -0
  147. package/dist/machines/carousel/index.d.cts +146 -0
  148. package/dist/machines/carousel/index.d.mts +146 -0
  149. package/dist/machines/carousel/index.mjs +851 -0
  150. package/dist/machines/checkbox/index.cjs +316 -0
  151. package/dist/machines/checkbox/index.d.cts +81 -0
  152. package/dist/machines/checkbox/index.d.mts +81 -0
  153. package/dist/machines/checkbox/index.mjs +312 -0
  154. package/dist/machines/clipboard/index.cjs +225 -0
  155. package/dist/machines/clipboard/index.d.cts +68 -0
  156. package/dist/machines/clipboard/index.d.mts +68 -0
  157. package/dist/machines/clipboard/index.mjs +219 -0
  158. package/dist/machines/collapsible/index.cjs +362 -0
  159. package/dist/machines/collapsible/index.d.cts +82 -0
  160. package/dist/machines/collapsible/index.d.mts +82 -0
  161. package/dist/machines/collapsible/index.mjs +358 -0
  162. package/dist/machines/color-picker/index.cjs +1529 -0
  163. package/dist/machines/color-picker/index.d.cts +205 -0
  164. package/dist/machines/color-picker/index.d.mts +205 -0
  165. package/dist/machines/color-picker/index.mjs +1514 -0
  166. package/dist/machines/combobox/index.cjs +1593 -0
  167. package/dist/machines/combobox/index.d.cts +214 -0
  168. package/dist/machines/combobox/index.d.mts +214 -0
  169. package/dist/machines/combobox/index.mjs +1582 -0
  170. package/dist/machines/date-picker/index.cjs +2177 -0
  171. package/dist/machines/date-picker/index.d.cts +350 -0
  172. package/dist/machines/date-picker/index.d.mts +350 -0
  173. package/dist/machines/date-picker/index.mjs +2161 -0
  174. package/dist/machines/dialog/index.cjs +325 -0
  175. package/dist/machines/dialog/index.d.cts +80 -0
  176. package/dist/machines/dialog/index.d.mts +80 -0
  177. package/dist/machines/dialog/index.mjs +321 -0
  178. package/dist/machines/editable/index.cjs +551 -0
  179. package/dist/machines/editable/index.d.cts +114 -0
  180. package/dist/machines/editable/index.d.mts +114 -0
  181. package/dist/machines/editable/index.mjs +547 -0
  182. package/dist/machines/floating-panel/index.cjs +995 -0
  183. package/dist/machines/floating-panel/index.d.cts +147 -0
  184. package/dist/machines/floating-panel/index.d.mts +147 -0
  185. package/dist/machines/floating-panel/index.mjs +988 -0
  186. package/dist/machines/hover-card/index.cjs +383 -0
  187. package/dist/machines/hover-card/index.d.cts +69 -0
  188. package/dist/machines/hover-card/index.d.mts +69 -0
  189. package/dist/machines/hover-card/index.mjs +379 -0
  190. package/dist/machines/image-cropper/index.cjs +1995 -0
  191. package/dist/machines/image-cropper/index.d.cts +182 -0
  192. package/dist/machines/image-cropper/index.d.mts +182 -0
  193. package/dist/machines/image-cropper/index.mjs +1990 -0
  194. package/dist/machines/listbox/index.cjs +794 -0
  195. package/dist/machines/listbox/index.d.cts +168 -0
  196. package/dist/machines/listbox/index.d.mts +168 -0
  197. package/dist/machines/listbox/index.mjs +782 -0
  198. package/dist/machines/marquee/index.cjs +395 -0
  199. package/dist/machines/marquee/index.d.cts +102 -0
  200. package/dist/machines/marquee/index.d.mts +102 -0
  201. package/dist/machines/marquee/index.mjs +391 -0
  202. package/dist/machines/menu/index.cjs +1298 -0
  203. package/dist/machines/menu/index.d.cts +175 -0
  204. package/dist/machines/menu/index.d.mts +175 -0
  205. package/dist/machines/menu/index.mjs +1286 -0
  206. package/dist/machines/navigation-menu/index.cjs +861 -0
  207. package/dist/machines/navigation-menu/index.d.cts +127 -0
  208. package/dist/machines/navigation-menu/index.d.mts +127 -0
  209. package/dist/machines/navigation-menu/index.mjs +857 -0
  210. package/dist/machines/number-input/index.cjs +996 -0
  211. package/dist/machines/number-input/index.d.cts +134 -0
  212. package/dist/machines/number-input/index.d.mts +134 -0
  213. package/dist/machines/number-input/index.mjs +991 -0
  214. package/dist/machines/pagination/index.cjs +419 -0
  215. package/dist/machines/pagination/index.d.cts +139 -0
  216. package/dist/machines/pagination/index.d.mts +139 -0
  217. package/dist/machines/pagination/index.mjs +411 -0
  218. package/dist/machines/password-input/index.cjs +228 -0
  219. package/dist/machines/password-input/index.d.cts +71 -0
  220. package/dist/machines/password-input/index.d.mts +71 -0
  221. package/dist/machines/password-input/index.mjs +224 -0
  222. package/dist/machines/pin-input/index.cjs +523 -0
  223. package/dist/machines/pin-input/index.d.cts +105 -0
  224. package/dist/machines/pin-input/index.d.mts +105 -0
  225. package/dist/machines/pin-input/index.mjs +519 -0
  226. package/dist/machines/popover/index.cjs +430 -0
  227. package/dist/machines/popover/index.d.cts +88 -0
  228. package/dist/machines/popover/index.d.mts +88 -0
  229. package/dist/machines/popover/index.mjs +426 -0
  230. package/dist/machines/presence/index.cjs +192 -0
  231. package/dist/machines/presence/index.d.cts +44 -0
  232. package/dist/machines/presence/index.d.mts +44 -0
  233. package/dist/machines/presence/index.mjs +190 -0
  234. package/dist/machines/progress/index.cjs +288 -0
  235. package/dist/machines/progress/index.d.cts +96 -0
  236. package/dist/machines/progress/index.d.mts +96 -0
  237. package/dist/machines/progress/index.mjs +284 -0
  238. package/dist/machines/qr-code/index.cjs +172 -0
  239. package/dist/machines/qr-code/index.d.cts +70 -0
  240. package/dist/machines/qr-code/index.d.mts +70 -0
  241. package/dist/machines/qr-code/index.mjs +167 -0
  242. package/dist/machines/radio-group/index.cjs +436 -0
  243. package/dist/machines/radio-group/index.d.cts +106 -0
  244. package/dist/machines/radio-group/index.d.mts +106 -0
  245. package/dist/machines/radio-group/index.mjs +430 -0
  246. package/dist/machines/rating-group/index.cjs +405 -0
  247. package/dist/machines/rating-group/index.d.cts +101 -0
  248. package/dist/machines/rating-group/index.d.mts +101 -0
  249. package/dist/machines/rating-group/index.mjs +399 -0
  250. package/dist/machines/scroll-area/index.cjs +857 -0
  251. package/dist/machines/scroll-area/index.d.cts +159 -0
  252. package/dist/machines/scroll-area/index.d.mts +159 -0
  253. package/dist/machines/scroll-area/index.mjs +853 -0
  254. package/dist/machines/select/index.cjs +1165 -0
  255. package/dist/machines/select/index.d.cts +183 -0
  256. package/dist/machines/select/index.d.mts +183 -0
  257. package/dist/machines/select/index.mjs +1154 -0
  258. package/dist/machines/signature-pad/index.cjs +334 -0
  259. package/dist/machines/signature-pad/index.d.cts +108 -0
  260. package/dist/machines/signature-pad/index.d.mts +108 -0
  261. package/dist/machines/signature-pad/index.mjs +328 -0
  262. package/dist/machines/slider/index.cjs +957 -0
  263. package/dist/machines/slider/index.d.cts +149 -0
  264. package/dist/machines/slider/index.d.mts +149 -0
  265. package/dist/machines/slider/index.mjs +949 -0
  266. package/dist/machines/splitter/index.cjs +1112 -0
  267. package/dist/machines/splitter/index.d.cts +155 -0
  268. package/dist/machines/splitter/index.d.mts +155 -0
  269. package/dist/machines/splitter/index.mjs +1103 -0
  270. package/dist/machines/steps/index.cjs +289 -0
  271. package/dist/machines/steps/index.d.cts +97 -0
  272. package/dist/machines/steps/index.d.mts +97 -0
  273. package/dist/machines/steps/index.mjs +285 -0
  274. package/dist/machines/switch/index.cjs +305 -0
  275. package/dist/machines/switch/index.d.cts +80 -0
  276. package/dist/machines/switch/index.d.mts +80 -0
  277. package/dist/machines/switch/index.mjs +301 -0
  278. package/dist/machines/tabs/index.cjs +508 -0
  279. package/dist/machines/tabs/index.d.cts +111 -0
  280. package/dist/machines/tabs/index.d.mts +111 -0
  281. package/dist/machines/tabs/index.mjs +500 -0
  282. package/dist/machines/tags-input/index.cjs +1127 -0
  283. package/dist/machines/tags-input/index.d.cts +179 -0
  284. package/dist/machines/tags-input/index.d.mts +179 -0
  285. package/dist/machines/tags-input/index.mjs +1121 -0
  286. package/dist/machines/timer/index.cjs +329 -0
  287. package/dist/machines/timer/index.d.cts +98 -0
  288. package/dist/machines/timer/index.d.mts +98 -0
  289. package/dist/machines/timer/index.mjs +324 -0
  290. package/dist/machines/toast/index.cjs +1155 -0
  291. package/dist/machines/toast/index.d.cts +195 -0
  292. package/dist/machines/toast/index.d.mts +195 -0
  293. package/dist/machines/toast/index.mjs +1151 -0
  294. package/dist/machines/toggle/index.cjs +103 -0
  295. package/dist/machines/toggle/index.d.cts +46 -0
  296. package/dist/machines/toggle/index.d.mts +46 -0
  297. package/dist/machines/toggle/index.mjs +99 -0
  298. package/dist/machines/toggle-group/index.cjs +328 -0
  299. package/dist/machines/toggle-group/index.d.cts +81 -0
  300. package/dist/machines/toggle-group/index.d.mts +81 -0
  301. package/dist/machines/toggle-group/index.mjs +322 -0
  302. package/dist/machines/tooltip/index.cjs +516 -0
  303. package/dist/machines/tooltip/index.d.cts +71 -0
  304. package/dist/machines/tooltip/index.d.mts +71 -0
  305. package/dist/machines/tooltip/index.mjs +512 -0
  306. package/dist/machines/tour/index.cjs +1108 -0
  307. package/dist/machines/tour/index.d.cts +206 -0
  308. package/dist/machines/tour/index.d.mts +206 -0
  309. package/dist/machines/tour/index.mjs +1101 -0
  310. package/dist/machines/tree-view/index.cjs +1271 -0
  311. package/dist/machines/tree-view/index.d.cts +215 -0
  312. package/dist/machines/tree-view/index.d.mts +215 -0
  313. package/dist/machines/tree-view/index.mjs +1263 -0
  314. package/dist/node-BctU8GXk.d.mts +24 -0
  315. package/dist/node-CSsuPZVZ.d.cts +24 -0
  316. package/dist/popper-BPJeAtcA.mjs +349 -0
  317. package/dist/popper-D0FAW_p7.cjs +373 -0
  318. package/dist/popper.cjs +8 -0
  319. package/dist/popper.d.cts +74 -0
  320. package/dist/popper.d.mts +2 -0
  321. package/dist/popper.mjs +5 -0
  322. package/dist/raf-BnlYUlDi.d.mts +15 -0
  323. package/dist/raf-Cd2FGy0z.d.cts +15 -0
  324. package/dist/rect-utils-0ellN0a_.mjs +854 -0
  325. package/dist/rect-utils-DKLRhP8G.cjs +1147 -0
  326. package/dist/rect-utils.cjs +51 -0
  327. package/dist/rect-utils.d.cts +198 -0
  328. package/dist/rect-utils.d.mts +198 -0
  329. package/dist/rect-utils.mjs +3 -0
  330. package/dist/remove-scroll-Lrfv79X_.mjs +58 -0
  331. package/dist/remove-scroll-Uvzg1L9r.cjs +63 -0
  332. package/dist/remove-scroll.cjs +0 -0
  333. package/dist/remove-scroll.d.cts +1 -0
  334. package/dist/remove-scroll.d.mts +1 -0
  335. package/dist/remove-scroll.mjs +1 -0
  336. package/dist/scroll-snap-CrTmQRzA.mjs +152 -0
  337. package/dist/scroll-snap-zyiZLv7W.cjs +175 -0
  338. package/dist/scroll-snap.cjs +7 -0
  339. package/dist/scroll-snap.d.cts +14 -0
  340. package/dist/scroll-snap.d.mts +14 -0
  341. package/dist/scroll-snap.mjs +4 -0
  342. package/dist/selection-BIhSzkF7.d.mts +50 -0
  343. package/dist/selection-CS1GBp8e.d.cts +50 -0
  344. package/dist/store-BZcXv49B.cjs +305 -0
  345. package/dist/store-DEojWy9H.mjs +263 -0
  346. package/dist/store.cjs +9 -0
  347. package/dist/store.d.cts +26 -0
  348. package/dist/store.d.mts +26 -0
  349. package/dist/store.mjs +3 -0
  350. package/dist/stringify-state.cjs +49 -0
  351. package/dist/stringify-state.d.cts +8 -0
  352. package/dist/stringify-state.d.mts +8 -0
  353. package/dist/stringify-state.mjs +46 -0
  354. package/dist/tree-collection-BwU5WhGQ.d.mts +78 -0
  355. package/dist/tree-collection-DP_eznnI.d.cts +78 -0
  356. package/dist/typeahead-BdNwVP09.d.cts +45 -0
  357. package/dist/typeahead-XN6lZ7G9.d.mts +45 -0
  358. package/dist/types-BivBkYg9.d.cts +57 -0
  359. package/dist/types-Bl_6JtPQ.d.mts +57 -0
  360. package/dist/types-CPUMVt7c.d.mts +54 -0
  361. package/dist/types-CT_W6HWr.d.cts +54 -0
  362. package/dist/types-DDTcG99l.d.mts +201 -0
  363. package/dist/types-DejIu60O.d.cts +201 -0
  364. package/dist/types-DiIdKZ3K.d.cts +45 -0
  365. package/dist/types-GxLIgJib.d.cts +17 -0
  366. package/dist/types.cjs +15 -0
  367. package/dist/types.d.cts +2 -0
  368. package/dist/types.d.mts +2 -0
  369. package/dist/types.mjs +14 -0
  370. package/dist/utils-BZyrxWWR.mjs +525 -0
  371. package/dist/utils-_6frwjgJ.cjs +1040 -0
  372. package/dist/utils.cjs +88 -0
  373. package/dist/utils.d.cts +144 -0
  374. package/dist/utils.d.mts +144 -0
  375. package/dist/utils.mjs +3 -0
  376. package/dist/wait-for-CMjPsqWk.d.cts +10 -0
  377. package/dist/wait-for-D2nkdD4z.d.mts +10 -0
  378. package/package.json +399 -0
@@ -0,0 +1,991 @@
1
+ import { t as createAnatomy } from "../../create-anatomy-BbDZbHpC.mjs";
2
+ import { O as requestPointerLock, R as observeAttributes, Rt as isSafari, U as raf, _n as ariaAttr, at as setElementValue, bt as isModifierKey, dt as getEventStep, gn as MAX_Z_INDEX, mt as isComposingEvent, ot as trackFormControl, rn as getWindow, st as addDomEvent, ut as getEventPoint, vn as dataAttr, yt as isLeftClick } from "../../dom-query-DFCRhyj1.mjs";
3
+ import { I as roundToDpr, M as isValueAtMin, N as isValueWithinRange, U as wrap, W as callAll, _ as decrementValue, g as clampValue, j as isValueAtMax, k as incrementValue, u as createSplitProps } from "../../utils-BZyrxWWR.mjs";
4
+ import { o as setup, s as memo } from "../../core-DCFNMTZF.mjs";
5
+ import { t as createProps } from "../../create-props-BnF_vl-E.mjs";
6
+ import { NumberParser } from "@internationalized/number";
7
+
8
+ //#region src/machines/number-input/number-input.anatomy.ts
9
+ const anatomy = createAnatomy("numberInput").parts("root", "label", "input", "control", "valueText", "incrementTrigger", "decrementTrigger", "scrubber");
10
+ const parts = anatomy.build();
11
+
12
+ //#endregion
13
+ //#region src/machines/number-input/number-input.dom.ts
14
+ const getRootId = (ctx) => ctx.ids?.root ?? `number-input:${ctx.id}`;
15
+ const getInputId = (ctx) => ctx.ids?.input ?? `number-input:${ctx.id}:input`;
16
+ const getIncrementTriggerId = (ctx) => ctx.ids?.incrementTrigger ?? `number-input:${ctx.id}:inc`;
17
+ const getDecrementTriggerId = (ctx) => ctx.ids?.decrementTrigger ?? `number-input:${ctx.id}:dec`;
18
+ const getScrubberId = (ctx) => ctx.ids?.scrubber ?? `number-input:${ctx.id}:scrubber`;
19
+ const getCursorId = (ctx) => `number-input:${ctx.id}:cursor`;
20
+ const getLabelId = (ctx) => ctx.ids?.label ?? `number-input:${ctx.id}:label`;
21
+ const getInputEl = (ctx) => ctx.getById(getInputId(ctx));
22
+ const getIncrementTriggerEl = (ctx) => ctx.getById(getIncrementTriggerId(ctx));
23
+ const getDecrementTriggerEl = (ctx) => ctx.getById(getDecrementTriggerId(ctx));
24
+ const getCursorEl = (ctx) => ctx.getDoc().getElementById(getCursorId(ctx));
25
+ const getPressedTriggerEl = (ctx, hint) => {
26
+ let btnEl = null;
27
+ if (hint === "increment") btnEl = getIncrementTriggerEl(ctx);
28
+ if (hint === "decrement") btnEl = getDecrementTriggerEl(ctx);
29
+ return btnEl;
30
+ };
31
+ const setupVirtualCursor = (ctx, point) => {
32
+ if (isSafari()) return;
33
+ createVirtualCursor(ctx, point);
34
+ return () => {
35
+ getCursorEl(ctx)?.remove();
36
+ };
37
+ };
38
+ const preventTextSelection = (ctx) => {
39
+ const doc = ctx.getDoc();
40
+ const html = doc.documentElement;
41
+ const body = doc.body;
42
+ body.style.pointerEvents = "none";
43
+ html.style.userSelect = "none";
44
+ html.style.cursor = "ew-resize";
45
+ return () => {
46
+ body.style.pointerEvents = "";
47
+ html.style.userSelect = "";
48
+ html.style.cursor = "";
49
+ if (!html.style.length) html.removeAttribute("style");
50
+ if (!body.style.length) body.removeAttribute("style");
51
+ };
52
+ };
53
+ const getMousemoveValue = (ctx, opts) => {
54
+ const { point, isRtl, event } = opts;
55
+ const win = ctx.getWin();
56
+ const x = roundToDpr(event.movementX, win.devicePixelRatio);
57
+ const y = roundToDpr(event.movementY, win.devicePixelRatio);
58
+ let hint = x > 0 ? "increment" : x < 0 ? "decrement" : null;
59
+ if (isRtl && hint === "increment") hint = "decrement";
60
+ if (isRtl && hint === "decrement") hint = "increment";
61
+ const newPoint = {
62
+ x: point.x + x,
63
+ y: point.y + y
64
+ };
65
+ const width = win.innerWidth;
66
+ const half = roundToDpr(7.5, win.devicePixelRatio);
67
+ newPoint.x = wrap(newPoint.x + half, width) - half;
68
+ return {
69
+ hint,
70
+ point: newPoint
71
+ };
72
+ };
73
+ const createVirtualCursor = (ctx, point) => {
74
+ const doc = ctx.getDoc();
75
+ const el = doc.createElement("div");
76
+ el.className = "scrubber--cursor";
77
+ el.id = getCursorId(ctx);
78
+ Object.assign(el.style, {
79
+ width: "15px",
80
+ height: "15px",
81
+ position: "fixed",
82
+ pointerEvents: "none",
83
+ left: "0px",
84
+ top: "0px",
85
+ zIndex: MAX_Z_INDEX,
86
+ transform: point ? `translate3d(${point.x}px, ${point.y}px, 0px)` : void 0,
87
+ willChange: "transform"
88
+ });
89
+ el.innerHTML = `
90
+ <svg width="46" height="15" style="left: -15.5px; position: absolute; top: 0; filter: drop-shadow(rgba(0, 0, 0, 0.4) 0px 1px 1.1px);">
91
+ <g transform="translate(2 3)">
92
+ <path fill-rule="evenodd" d="M 15 4.5L 15 2L 11.5 5.5L 15 9L 15 6.5L 31 6.5L 31 9L 34.5 5.5L 31 2L 31 4.5Z" style="stroke-width: 2px; stroke: white;"></path>
93
+ <path fill-rule="evenodd" d="M 15 4.5L 15 2L 11.5 5.5L 15 9L 15 6.5L 31 6.5L 31 9L 34.5 5.5L 31 2L 31 4.5Z"></path>
94
+ </g>
95
+ </svg>`;
96
+ doc.body.appendChild(el);
97
+ };
98
+
99
+ //#endregion
100
+ //#region src/machines/number-input/cursor.ts
101
+ function recordCursor(inputEl, scope) {
102
+ if (!inputEl || !scope.isActiveElement(inputEl)) return;
103
+ try {
104
+ const { selectionStart: start, selectionEnd: end, value } = inputEl;
105
+ if (start == null || end == null) return void 0;
106
+ return {
107
+ start,
108
+ end,
109
+ value
110
+ };
111
+ } catch {
112
+ return;
113
+ }
114
+ }
115
+ function restoreCursor(inputEl, selection, scope) {
116
+ if (!inputEl || !scope.isActiveElement(inputEl)) return;
117
+ if (!selection) {
118
+ const len = inputEl.value.length;
119
+ inputEl.setSelectionRange(len, len);
120
+ return;
121
+ }
122
+ try {
123
+ const newValue = inputEl.value;
124
+ const { start, end, value: oldValue } = selection;
125
+ if (newValue === oldValue) {
126
+ inputEl.setSelectionRange(start, end);
127
+ return;
128
+ }
129
+ const newStart = getNewCursorPosition(oldValue, newValue, start);
130
+ const newEnd = start === end ? newStart : getNewCursorPosition(oldValue, newValue, end);
131
+ const clampedStart = Math.max(0, Math.min(newStart, newValue.length));
132
+ const clampedEnd = Math.max(clampedStart, Math.min(newEnd, newValue.length));
133
+ inputEl.setSelectionRange(clampedStart, clampedEnd);
134
+ } catch {
135
+ const len = inputEl.value.length;
136
+ inputEl.setSelectionRange(len, len);
137
+ }
138
+ }
139
+ function getNewCursorPosition(oldValue, newValue, oldPosition) {
140
+ const beforeCursor = oldValue.slice(0, oldPosition);
141
+ const afterCursor = oldValue.slice(oldPosition);
142
+ let prefixLength = 0;
143
+ const maxPrefixLength = Math.min(beforeCursor.length, newValue.length);
144
+ for (let i = 0; i < maxPrefixLength; i++) if (beforeCursor[i] === newValue[i]) prefixLength = i + 1;
145
+ else break;
146
+ let suffixLength = 0;
147
+ const maxSuffixLength = Math.min(afterCursor.length, newValue.length - prefixLength);
148
+ for (let i = 0; i < maxSuffixLength; i++) {
149
+ const oldIndex = afterCursor.length - 1 - i;
150
+ const newIndex = newValue.length - 1 - i;
151
+ if (afterCursor[oldIndex] === newValue[newIndex]) suffixLength = i + 1;
152
+ else break;
153
+ }
154
+ if (prefixLength >= beforeCursor.length) return prefixLength;
155
+ if (suffixLength >= afterCursor.length) return newValue.length - suffixLength;
156
+ if (prefixLength > 0) return prefixLength;
157
+ if (suffixLength > 0) return newValue.length - suffixLength;
158
+ if (oldValue.length > 0) {
159
+ const ratio = oldPosition / oldValue.length;
160
+ return Math.round(ratio * newValue.length);
161
+ }
162
+ return newValue.length;
163
+ }
164
+
165
+ //#endregion
166
+ //#region src/machines/number-input/number-input.connect.ts
167
+ function connect(service, normalize) {
168
+ const { state, send, prop, scope, computed } = service;
169
+ const focused = state.hasTag("focus");
170
+ const disabled = computed("isDisabled");
171
+ const readOnly = !!prop("readOnly");
172
+ const required = !!prop("required");
173
+ const scrubbing = state.matches("scrubbing");
174
+ const empty = computed("isValueEmpty");
175
+ const invalid = computed("isOutOfRange") || !!prop("invalid");
176
+ const isIncrementDisabled = disabled || !computed("canIncrement") || readOnly;
177
+ const isDecrementDisabled = disabled || !computed("canDecrement") || readOnly;
178
+ const translations = prop("translations");
179
+ return {
180
+ focused,
181
+ invalid,
182
+ empty,
183
+ value: computed("formattedValue"),
184
+ valueAsNumber: computed("valueAsNumber"),
185
+ setValue(value) {
186
+ send({
187
+ type: "VALUE.SET",
188
+ value
189
+ });
190
+ },
191
+ clearValue() {
192
+ send({ type: "VALUE.CLEAR" });
193
+ },
194
+ increment() {
195
+ send({ type: "VALUE.INCREMENT" });
196
+ },
197
+ decrement() {
198
+ send({ type: "VALUE.DECREMENT" });
199
+ },
200
+ setToMax() {
201
+ send({
202
+ type: "VALUE.SET",
203
+ value: prop("max")
204
+ });
205
+ },
206
+ setToMin() {
207
+ send({
208
+ type: "VALUE.SET",
209
+ value: prop("min")
210
+ });
211
+ },
212
+ focus() {
213
+ getInputEl(scope)?.focus();
214
+ },
215
+ getRootProps() {
216
+ return normalize.element({
217
+ id: getRootId(scope),
218
+ ...parts.root.attrs,
219
+ dir: prop("dir"),
220
+ "data-disabled": dataAttr(disabled),
221
+ "data-focus": dataAttr(focused),
222
+ "data-invalid": dataAttr(invalid),
223
+ "data-scrubbing": dataAttr(scrubbing)
224
+ });
225
+ },
226
+ getLabelProps() {
227
+ return normalize.label({
228
+ ...parts.label.attrs,
229
+ dir: prop("dir"),
230
+ "data-disabled": dataAttr(disabled),
231
+ "data-focus": dataAttr(focused),
232
+ "data-invalid": dataAttr(invalid),
233
+ "data-required": dataAttr(required),
234
+ "data-scrubbing": dataAttr(scrubbing),
235
+ id: getLabelId(scope),
236
+ htmlFor: getInputId(scope)
237
+ });
238
+ },
239
+ getControlProps() {
240
+ return normalize.element({
241
+ ...parts.control.attrs,
242
+ dir: prop("dir"),
243
+ role: "group",
244
+ "aria-disabled": disabled,
245
+ "data-focus": dataAttr(focused),
246
+ "data-disabled": dataAttr(disabled),
247
+ "data-invalid": dataAttr(invalid),
248
+ "data-scrubbing": dataAttr(scrubbing),
249
+ "aria-invalid": ariaAttr(invalid)
250
+ });
251
+ },
252
+ getValueTextProps() {
253
+ return normalize.element({
254
+ ...parts.valueText.attrs,
255
+ dir: prop("dir"),
256
+ "data-disabled": dataAttr(disabled),
257
+ "data-invalid": dataAttr(invalid),
258
+ "data-focus": dataAttr(focused),
259
+ "data-scrubbing": dataAttr(scrubbing)
260
+ });
261
+ },
262
+ getInputProps() {
263
+ return normalize.input({
264
+ ...parts.input.attrs,
265
+ dir: prop("dir"),
266
+ name: prop("name"),
267
+ form: prop("form"),
268
+ id: getInputId(scope),
269
+ role: "spinbutton",
270
+ defaultValue: computed("formattedValue"),
271
+ pattern: prop("formatOptions") ? void 0 : prop("pattern"),
272
+ inputMode: prop("inputMode"),
273
+ "aria-invalid": ariaAttr(invalid),
274
+ "data-invalid": dataAttr(invalid),
275
+ disabled,
276
+ "data-disabled": dataAttr(disabled),
277
+ readOnly,
278
+ required: prop("required"),
279
+ autoComplete: "off",
280
+ autoCorrect: "off",
281
+ spellCheck: "false",
282
+ type: "text",
283
+ "aria-roledescription": "numberfield",
284
+ "aria-valuemin": prop("min"),
285
+ "aria-valuemax": prop("max"),
286
+ "aria-valuenow": Number.isNaN(computed("valueAsNumber")) ? void 0 : computed("valueAsNumber"),
287
+ "aria-valuetext": computed("valueText"),
288
+ "data-scrubbing": dataAttr(scrubbing),
289
+ onFocus() {
290
+ send({ type: "INPUT.FOCUS" });
291
+ },
292
+ onBlur() {
293
+ send({ type: "INPUT.BLUR" });
294
+ },
295
+ onInput(event) {
296
+ const selection = recordCursor(event.currentTarget, scope);
297
+ send({
298
+ type: "INPUT.CHANGE",
299
+ target: event.currentTarget,
300
+ hint: "set",
301
+ selection
302
+ });
303
+ },
304
+ onBeforeInput(event) {
305
+ try {
306
+ const { selectionStart, selectionEnd, value } = event.currentTarget;
307
+ const nextValue = value.slice(0, selectionStart) + (event.data ?? "") + value.slice(selectionEnd);
308
+ if (!computed("parser").isValidPartialNumber(nextValue)) event.preventDefault();
309
+ } catch {}
310
+ },
311
+ onKeyDown(event) {
312
+ if (event.defaultPrevented) return;
313
+ if (readOnly) return;
314
+ if (isComposingEvent(event)) return;
315
+ const step = getEventStep(event) * prop("step");
316
+ const exec = {
317
+ ArrowUp() {
318
+ send({
319
+ type: "INPUT.ARROW_UP",
320
+ step
321
+ });
322
+ event.preventDefault();
323
+ },
324
+ ArrowDown() {
325
+ send({
326
+ type: "INPUT.ARROW_DOWN",
327
+ step
328
+ });
329
+ event.preventDefault();
330
+ },
331
+ Home() {
332
+ if (isModifierKey(event)) return;
333
+ send({ type: "INPUT.HOME" });
334
+ event.preventDefault();
335
+ },
336
+ End() {
337
+ if (isModifierKey(event)) return;
338
+ send({ type: "INPUT.END" });
339
+ event.preventDefault();
340
+ },
341
+ Enter(event$1) {
342
+ send({
343
+ type: "INPUT.ENTER",
344
+ selection: recordCursor(event$1.currentTarget, scope)
345
+ });
346
+ }
347
+ }[event.key];
348
+ exec?.(event);
349
+ }
350
+ });
351
+ },
352
+ getDecrementTriggerProps() {
353
+ return normalize.button({
354
+ ...parts.decrementTrigger.attrs,
355
+ dir: prop("dir"),
356
+ id: getDecrementTriggerId(scope),
357
+ disabled: isDecrementDisabled,
358
+ "data-disabled": dataAttr(isDecrementDisabled),
359
+ "aria-label": translations.decrementLabel,
360
+ type: "button",
361
+ tabIndex: -1,
362
+ "aria-controls": getInputId(scope),
363
+ "data-scrubbing": dataAttr(scrubbing),
364
+ onPointerDown(event) {
365
+ if (isDecrementDisabled) return;
366
+ if (!isLeftClick(event)) return;
367
+ send({
368
+ type: "TRIGGER.PRESS_DOWN",
369
+ hint: "decrement",
370
+ pointerType: event.pointerType
371
+ });
372
+ if (event.pointerType === "mouse") event.preventDefault();
373
+ if (event.pointerType === "touch") event.currentTarget?.focus({ preventScroll: true });
374
+ },
375
+ onPointerUp(event) {
376
+ send({
377
+ type: "TRIGGER.PRESS_UP",
378
+ hint: "decrement",
379
+ pointerType: event.pointerType
380
+ });
381
+ },
382
+ onPointerLeave() {
383
+ if (isDecrementDisabled) return;
384
+ send({
385
+ type: "TRIGGER.PRESS_UP",
386
+ hint: "decrement"
387
+ });
388
+ }
389
+ });
390
+ },
391
+ getIncrementTriggerProps() {
392
+ return normalize.button({
393
+ ...parts.incrementTrigger.attrs,
394
+ dir: prop("dir"),
395
+ id: getIncrementTriggerId(scope),
396
+ disabled: isIncrementDisabled,
397
+ "data-disabled": dataAttr(isIncrementDisabled),
398
+ "aria-label": translations.incrementLabel,
399
+ type: "button",
400
+ tabIndex: -1,
401
+ "aria-controls": getInputId(scope),
402
+ "data-scrubbing": dataAttr(scrubbing),
403
+ onPointerDown(event) {
404
+ if (isIncrementDisabled || !isLeftClick(event)) return;
405
+ send({
406
+ type: "TRIGGER.PRESS_DOWN",
407
+ hint: "increment",
408
+ pointerType: event.pointerType
409
+ });
410
+ if (event.pointerType === "mouse") event.preventDefault();
411
+ if (event.pointerType === "touch") event.currentTarget?.focus({ preventScroll: true });
412
+ },
413
+ onPointerUp(event) {
414
+ send({
415
+ type: "TRIGGER.PRESS_UP",
416
+ hint: "increment",
417
+ pointerType: event.pointerType
418
+ });
419
+ },
420
+ onPointerLeave(event) {
421
+ send({
422
+ type: "TRIGGER.PRESS_UP",
423
+ hint: "increment",
424
+ pointerType: event.pointerType
425
+ });
426
+ }
427
+ });
428
+ },
429
+ getScrubberProps() {
430
+ return normalize.element({
431
+ ...parts.scrubber.attrs,
432
+ dir: prop("dir"),
433
+ "data-disabled": dataAttr(disabled),
434
+ id: getScrubberId(scope),
435
+ role: "presentation",
436
+ "data-scrubbing": dataAttr(scrubbing),
437
+ onMouseDown(event) {
438
+ if (disabled) return;
439
+ if (!isLeftClick(event)) return;
440
+ const point = getEventPoint(event);
441
+ const dpr = getWindow(event.currentTarget).devicePixelRatio;
442
+ point.x = point.x - roundToDpr(7.5, dpr);
443
+ point.y = point.y - roundToDpr(7.5, dpr);
444
+ send({
445
+ type: "SCRUBBER.PRESS_DOWN",
446
+ point
447
+ });
448
+ event.preventDefault();
449
+ },
450
+ style: { cursor: disabled ? void 0 : "ew-resize" }
451
+ });
452
+ }
453
+ };
454
+ }
455
+
456
+ //#endregion
457
+ //#region src/machines/number-input/number-input.utils.ts
458
+ const createFormatter = (locale, options = {}) => {
459
+ return new Intl.NumberFormat(locale, options);
460
+ };
461
+ const createParser = (locale, options = {}) => {
462
+ return new NumberParser(locale, options);
463
+ };
464
+ const parseValue = (value, params) => {
465
+ const { prop, computed } = params;
466
+ if (!prop("formatOptions")) return parseFloat(value);
467
+ if (value === "") return NaN;
468
+ return computed("parser").parse(value);
469
+ };
470
+ const formatValue = (value, params) => {
471
+ const { prop, computed } = params;
472
+ if (Number.isNaN(value)) return "";
473
+ if (!prop("formatOptions")) return value.toString();
474
+ return computed("formatter").format(value);
475
+ };
476
+ const getDefaultStep = (step, formatOptions) => {
477
+ let defaultStep = step !== void 0 && !Number.isNaN(step) ? step : 1;
478
+ if (formatOptions?.style === "percent" && (step === void 0 || Number.isNaN(step))) defaultStep = .01;
479
+ return defaultStep;
480
+ };
481
+
482
+ //#endregion
483
+ //#region src/machines/number-input/number-input.machine.ts
484
+ const { choose, guards, createMachine } = setup();
485
+ const { not, and } = guards;
486
+ const machine = createMachine({
487
+ props({ props: props$1 }) {
488
+ const step = getDefaultStep(props$1.step, props$1.formatOptions);
489
+ return {
490
+ dir: "ltr",
491
+ locale: "en-US",
492
+ focusInputOnChange: true,
493
+ clampValueOnBlur: !props$1.allowOverflow,
494
+ allowOverflow: false,
495
+ inputMode: "decimal",
496
+ pattern: "-?[0-9]*(.[0-9]+)?",
497
+ defaultValue: "",
498
+ step,
499
+ min: Number.MIN_SAFE_INTEGER,
500
+ max: Number.MAX_SAFE_INTEGER,
501
+ spinOnPress: true,
502
+ ...props$1,
503
+ translations: {
504
+ incrementLabel: "increment value",
505
+ decrementLabel: "decrease value",
506
+ ...props$1.translations
507
+ }
508
+ };
509
+ },
510
+ initialState() {
511
+ return "idle";
512
+ },
513
+ context({ prop, bindable, getComputed }) {
514
+ return {
515
+ value: bindable(() => ({
516
+ defaultValue: prop("defaultValue"),
517
+ value: prop("value"),
518
+ onChange(value) {
519
+ const valueAsNumber = parseValue(value, {
520
+ computed: getComputed(),
521
+ prop
522
+ });
523
+ prop("onValueChange")?.({
524
+ value,
525
+ valueAsNumber
526
+ });
527
+ }
528
+ })),
529
+ hint: bindable(() => ({ defaultValue: null })),
530
+ scrubberCursorPoint: bindable(() => ({
531
+ defaultValue: null,
532
+ hash(value) {
533
+ return value ? `x:${value.x}, y:${value.y}` : "";
534
+ }
535
+ })),
536
+ fieldsetDisabled: bindable(() => ({ defaultValue: false }))
537
+ };
538
+ },
539
+ computed: {
540
+ isRtl: ({ prop }) => prop("dir") === "rtl",
541
+ valueAsNumber: ({ context, computed, prop }) => parseValue(context.get("value"), {
542
+ computed,
543
+ prop
544
+ }),
545
+ formattedValue: ({ computed, prop }) => formatValue(computed("valueAsNumber"), {
546
+ computed,
547
+ prop
548
+ }),
549
+ isAtMin: ({ computed, prop }) => isValueAtMin(computed("valueAsNumber"), prop("min")),
550
+ isAtMax: ({ computed, prop }) => isValueAtMax(computed("valueAsNumber"), prop("max")),
551
+ isOutOfRange: ({ computed, prop }) => !isValueWithinRange(computed("valueAsNumber"), prop("min"), prop("max")),
552
+ isValueEmpty: ({ context }) => context.get("value") === "",
553
+ isDisabled: ({ prop, context }) => !!prop("disabled") || context.get("fieldsetDisabled"),
554
+ canIncrement: ({ prop, computed }) => prop("allowOverflow") || !computed("isAtMax"),
555
+ canDecrement: ({ prop, computed }) => prop("allowOverflow") || !computed("isAtMin"),
556
+ valueText: ({ prop, context }) => prop("translations").valueText?.(context.get("value")),
557
+ formatter: memo(({ prop }) => [prop("locale"), prop("formatOptions")], ([locale, formatOptions]) => createFormatter(locale, formatOptions)),
558
+ parser: memo(({ prop }) => [prop("locale"), prop("formatOptions")], ([locale, formatOptions]) => createParser(locale, formatOptions))
559
+ },
560
+ watch({ track, action, context, computed, prop }) {
561
+ track([
562
+ () => context.get("value"),
563
+ () => prop("locale"),
564
+ () => JSON.stringify(prop("formatOptions"))
565
+ ], () => {
566
+ action(["syncInputElement"]);
567
+ });
568
+ track([() => computed("isOutOfRange")], () => {
569
+ action(["invokeOnInvalid"]);
570
+ });
571
+ track([() => context.hash("scrubberCursorPoint")], () => {
572
+ action(["setVirtualCursorPosition"]);
573
+ });
574
+ },
575
+ effects: ["trackFormControl"],
576
+ on: {
577
+ "VALUE.SET": { actions: ["setRawValue"] },
578
+ "VALUE.CLEAR": { actions: ["clearValue"] },
579
+ "VALUE.INCREMENT": { actions: ["increment"] },
580
+ "VALUE.DECREMENT": { actions: ["decrement"] }
581
+ },
582
+ states: {
583
+ idle: { on: {
584
+ "TRIGGER.PRESS_DOWN": [{
585
+ guard: "isTouchPointer",
586
+ target: "before:spin",
587
+ actions: ["setHint"]
588
+ }, {
589
+ target: "before:spin",
590
+ actions: [
591
+ "focusInput",
592
+ "invokeOnFocus",
593
+ "setHint"
594
+ ]
595
+ }],
596
+ "SCRUBBER.PRESS_DOWN": {
597
+ target: "scrubbing",
598
+ actions: [
599
+ "focusInput",
600
+ "invokeOnFocus",
601
+ "setHint",
602
+ "setCursorPoint"
603
+ ]
604
+ },
605
+ "INPUT.FOCUS": {
606
+ target: "focused",
607
+ actions: ["focusInput", "invokeOnFocus"]
608
+ }
609
+ } },
610
+ focused: {
611
+ tags: ["focus"],
612
+ effects: ["attachWheelListener"],
613
+ on: {
614
+ "TRIGGER.PRESS_DOWN": [{
615
+ guard: "isTouchPointer",
616
+ target: "before:spin",
617
+ actions: ["setHint"]
618
+ }, {
619
+ target: "before:spin",
620
+ actions: ["focusInput", "setHint"]
621
+ }],
622
+ "SCRUBBER.PRESS_DOWN": {
623
+ target: "scrubbing",
624
+ actions: [
625
+ "focusInput",
626
+ "setHint",
627
+ "setCursorPoint"
628
+ ]
629
+ },
630
+ "INPUT.ARROW_UP": { actions: ["increment"] },
631
+ "INPUT.ARROW_DOWN": { actions: ["decrement"] },
632
+ "INPUT.HOME": { actions: ["decrementToMin"] },
633
+ "INPUT.END": { actions: ["incrementToMax"] },
634
+ "INPUT.CHANGE": { actions: ["setValue", "setHint"] },
635
+ "INPUT.BLUR": [
636
+ {
637
+ guard: and("clampValueOnBlur", not("isInRange")),
638
+ target: "idle",
639
+ actions: [
640
+ "setClampedValue",
641
+ "clearHint",
642
+ "invokeOnBlur",
643
+ "invokeOnValueCommit"
644
+ ]
645
+ },
646
+ {
647
+ guard: not("isInRange"),
648
+ target: "idle",
649
+ actions: [
650
+ "setFormattedValue",
651
+ "clearHint",
652
+ "invokeOnBlur",
653
+ "invokeOnInvalid",
654
+ "invokeOnValueCommit"
655
+ ]
656
+ },
657
+ {
658
+ target: "idle",
659
+ actions: [
660
+ "setFormattedValue",
661
+ "clearHint",
662
+ "invokeOnBlur",
663
+ "invokeOnValueCommit"
664
+ ]
665
+ }
666
+ ],
667
+ "INPUT.ENTER": { actions: [
668
+ "setFormattedValue",
669
+ "clearHint",
670
+ "invokeOnBlur",
671
+ "invokeOnValueCommit"
672
+ ] }
673
+ }
674
+ },
675
+ "before:spin": {
676
+ tags: ["focus"],
677
+ effects: ["trackButtonDisabled", "waitForChangeDelay"],
678
+ entry: choose([{
679
+ guard: "isIncrementHint",
680
+ actions: ["increment"]
681
+ }, {
682
+ guard: "isDecrementHint",
683
+ actions: ["decrement"]
684
+ }]),
685
+ on: {
686
+ CHANGE_DELAY: {
687
+ target: "spinning",
688
+ guard: and("isInRange", "spinOnPress")
689
+ },
690
+ "TRIGGER.PRESS_UP": [{
691
+ guard: "isTouchPointer",
692
+ target: "focused",
693
+ actions: ["clearHint"]
694
+ }, {
695
+ target: "focused",
696
+ actions: ["focusInput", "clearHint"]
697
+ }]
698
+ }
699
+ },
700
+ spinning: {
701
+ tags: ["focus"],
702
+ effects: ["trackButtonDisabled", "spinValue"],
703
+ on: {
704
+ SPIN: [{
705
+ guard: "isIncrementHint",
706
+ actions: ["increment"]
707
+ }, {
708
+ guard: "isDecrementHint",
709
+ actions: ["decrement"]
710
+ }],
711
+ "TRIGGER.PRESS_UP": {
712
+ target: "focused",
713
+ actions: ["focusInput", "clearHint"]
714
+ }
715
+ }
716
+ },
717
+ scrubbing: {
718
+ tags: ["focus"],
719
+ effects: [
720
+ "activatePointerLock",
721
+ "trackMousemove",
722
+ "setupVirtualCursor",
723
+ "preventTextSelection"
724
+ ],
725
+ on: {
726
+ "SCRUBBER.POINTER_UP": {
727
+ target: "focused",
728
+ actions: ["focusInput", "clearCursorPoint"]
729
+ },
730
+ "SCRUBBER.POINTER_MOVE": [{
731
+ guard: "isIncrementHint",
732
+ actions: ["increment", "setCursorPoint"]
733
+ }, {
734
+ guard: "isDecrementHint",
735
+ actions: ["decrement", "setCursorPoint"]
736
+ }]
737
+ }
738
+ }
739
+ },
740
+ implementations: {
741
+ guards: {
742
+ clampValueOnBlur: ({ prop }) => prop("clampValueOnBlur"),
743
+ spinOnPress: ({ prop }) => !!prop("spinOnPress"),
744
+ isInRange: ({ computed }) => !computed("isOutOfRange"),
745
+ isDecrementHint: ({ context, event }) => (event.hint ?? context.get("hint")) === "decrement",
746
+ isIncrementHint: ({ context, event }) => (event.hint ?? context.get("hint")) === "increment",
747
+ isTouchPointer: ({ event }) => event.pointerType === "touch"
748
+ },
749
+ effects: {
750
+ waitForChangeDelay({ send }) {
751
+ const id = setTimeout(() => {
752
+ send({ type: "CHANGE_DELAY" });
753
+ }, 300);
754
+ return () => clearTimeout(id);
755
+ },
756
+ spinValue({ send }) {
757
+ const id = setInterval(() => {
758
+ send({ type: "SPIN" });
759
+ }, 50);
760
+ return () => clearInterval(id);
761
+ },
762
+ trackFormControl({ context, scope }) {
763
+ return trackFormControl(getInputEl(scope), {
764
+ onFieldsetDisabledChange(disabled) {
765
+ context.set("fieldsetDisabled", disabled);
766
+ },
767
+ onFormReset() {
768
+ context.set("value", context.initial("value"));
769
+ }
770
+ });
771
+ },
772
+ setupVirtualCursor({ context, scope }) {
773
+ const point = context.get("scrubberCursorPoint");
774
+ return setupVirtualCursor(scope, point);
775
+ },
776
+ preventTextSelection({ scope }) {
777
+ return preventTextSelection(scope);
778
+ },
779
+ trackButtonDisabled({ context, scope, send }) {
780
+ const hint = context.get("hint");
781
+ return observeAttributes(getPressedTriggerEl(scope, hint), {
782
+ attributes: ["disabled"],
783
+ callback() {
784
+ send({
785
+ type: "TRIGGER.PRESS_UP",
786
+ src: "attr"
787
+ });
788
+ }
789
+ });
790
+ },
791
+ attachWheelListener({ scope, send, prop }) {
792
+ const inputEl = getInputEl(scope);
793
+ if (!inputEl || !scope.isActiveElement(inputEl) || !prop("allowMouseWheel")) return;
794
+ function onWheel(event) {
795
+ event.preventDefault();
796
+ const dir = Math.sign(event.deltaY) * -1;
797
+ if (dir === 1) send({ type: "VALUE.INCREMENT" });
798
+ else if (dir === -1) send({ type: "VALUE.DECREMENT" });
799
+ }
800
+ return addDomEvent(inputEl, "wheel", onWheel, { passive: false });
801
+ },
802
+ activatePointerLock({ scope }) {
803
+ if (isSafari()) return;
804
+ return requestPointerLock(scope.getDoc());
805
+ },
806
+ trackMousemove({ scope, send, context, computed }) {
807
+ const doc = scope.getDoc();
808
+ function onMousemove(event) {
809
+ const point = context.get("scrubberCursorPoint");
810
+ const isRtl = computed("isRtl");
811
+ const value = getMousemoveValue(scope, {
812
+ point,
813
+ isRtl,
814
+ event
815
+ });
816
+ if (!value.hint) return;
817
+ send({
818
+ type: "SCRUBBER.POINTER_MOVE",
819
+ hint: value.hint,
820
+ point: value.point
821
+ });
822
+ }
823
+ function onMouseup() {
824
+ send({ type: "SCRUBBER.POINTER_UP" });
825
+ }
826
+ return callAll(addDomEvent(doc, "mousemove", onMousemove, false), addDomEvent(doc, "mouseup", onMouseup, false));
827
+ }
828
+ },
829
+ actions: {
830
+ focusInput({ scope, prop }) {
831
+ if (!prop("focusInputOnChange")) return;
832
+ const inputEl = getInputEl(scope);
833
+ if (scope.isActiveElement(inputEl)) return;
834
+ raf(() => inputEl?.focus({ preventScroll: true }));
835
+ },
836
+ increment({ context, event, prop, computed }) {
837
+ let nextValue = incrementValue(computed("valueAsNumber"), event.step ?? prop("step"));
838
+ if (!prop("allowOverflow")) nextValue = clampValue(nextValue, prop("min"), prop("max"));
839
+ context.set("value", formatValue(nextValue, {
840
+ computed,
841
+ prop
842
+ }));
843
+ },
844
+ decrement({ context, event, prop, computed }) {
845
+ let nextValue = decrementValue(computed("valueAsNumber"), event.step ?? prop("step"));
846
+ if (!prop("allowOverflow")) nextValue = clampValue(nextValue, prop("min"), prop("max"));
847
+ context.set("value", formatValue(nextValue, {
848
+ computed,
849
+ prop
850
+ }));
851
+ },
852
+ setClampedValue({ context, prop, computed }) {
853
+ const nextValue = clampValue(computed("valueAsNumber"), prop("min"), prop("max"));
854
+ context.set("value", formatValue(nextValue, {
855
+ computed,
856
+ prop
857
+ }));
858
+ },
859
+ setRawValue({ context, event, prop, computed }) {
860
+ let nextValue = parseValue(event.value, {
861
+ computed,
862
+ prop
863
+ });
864
+ if (!prop("allowOverflow")) nextValue = clampValue(nextValue, prop("min"), prop("max"));
865
+ context.set("value", formatValue(nextValue, {
866
+ computed,
867
+ prop
868
+ }));
869
+ },
870
+ setValue({ context, event }) {
871
+ const value = event.target?.value ?? event.value;
872
+ context.set("value", value);
873
+ },
874
+ clearValue({ context }) {
875
+ context.set("value", "");
876
+ },
877
+ incrementToMax({ context, prop, computed }) {
878
+ const value = formatValue(prop("max"), {
879
+ computed,
880
+ prop
881
+ });
882
+ context.set("value", value);
883
+ },
884
+ decrementToMin({ context, prop, computed }) {
885
+ const value = formatValue(prop("min"), {
886
+ computed,
887
+ prop
888
+ });
889
+ context.set("value", value);
890
+ },
891
+ setHint({ context, event }) {
892
+ context.set("hint", event.hint);
893
+ },
894
+ clearHint({ context }) {
895
+ context.set("hint", null);
896
+ },
897
+ invokeOnFocus({ computed, prop }) {
898
+ prop("onFocusChange")?.({
899
+ focused: true,
900
+ value: computed("formattedValue"),
901
+ valueAsNumber: computed("valueAsNumber")
902
+ });
903
+ },
904
+ invokeOnBlur({ computed, prop }) {
905
+ prop("onFocusChange")?.({
906
+ focused: false,
907
+ value: computed("formattedValue"),
908
+ valueAsNumber: computed("valueAsNumber")
909
+ });
910
+ },
911
+ invokeOnInvalid({ computed, prop, event }) {
912
+ if (event.type === "INPUT.CHANGE") return;
913
+ const reason = computed("valueAsNumber") > prop("max") ? "rangeOverflow" : "rangeUnderflow";
914
+ prop("onValueInvalid")?.({
915
+ reason,
916
+ value: computed("formattedValue"),
917
+ valueAsNumber: computed("valueAsNumber")
918
+ });
919
+ },
920
+ invokeOnValueCommit({ computed, prop }) {
921
+ prop("onValueCommit")?.({
922
+ value: computed("formattedValue"),
923
+ valueAsNumber: computed("valueAsNumber")
924
+ });
925
+ },
926
+ syncInputElement({ context, event, computed, scope }) {
927
+ const value = event.type.endsWith("CHANGE") ? context.get("value") : computed("formattedValue");
928
+ const inputEl = getInputEl(scope);
929
+ const sel = event.selection ?? recordCursor(inputEl, scope);
930
+ raf(() => {
931
+ setElementValue(inputEl, value);
932
+ restoreCursor(inputEl, sel, scope);
933
+ });
934
+ },
935
+ setFormattedValue({ context, computed, action }) {
936
+ context.set("value", computed("formattedValue"));
937
+ action(["syncInputElement"]);
938
+ },
939
+ setCursorPoint({ context, event }) {
940
+ context.set("scrubberCursorPoint", event.point);
941
+ },
942
+ clearCursorPoint({ context }) {
943
+ context.set("scrubberCursorPoint", null);
944
+ },
945
+ setVirtualCursorPosition({ context, scope }) {
946
+ const cursorEl = getCursorEl(scope);
947
+ const point = context.get("scrubberCursorPoint");
948
+ if (!cursorEl || !point) return;
949
+ cursorEl.style.transform = `translate3d(${point.x}px, ${point.y}px, 0px)`;
950
+ }
951
+ }
952
+ }
953
+ });
954
+
955
+ //#endregion
956
+ //#region src/machines/number-input/number-input.props.ts
957
+ const props = createProps()([
958
+ "allowMouseWheel",
959
+ "allowOverflow",
960
+ "clampValueOnBlur",
961
+ "dir",
962
+ "disabled",
963
+ "focusInputOnChange",
964
+ "form",
965
+ "formatOptions",
966
+ "getRootNode",
967
+ "id",
968
+ "ids",
969
+ "inputMode",
970
+ "invalid",
971
+ "locale",
972
+ "max",
973
+ "min",
974
+ "name",
975
+ "onFocusChange",
976
+ "onValueChange",
977
+ "onValueCommit",
978
+ "onValueInvalid",
979
+ "pattern",
980
+ "required",
981
+ "readOnly",
982
+ "spinOnPress",
983
+ "step",
984
+ "translations",
985
+ "value",
986
+ "defaultValue"
987
+ ]);
988
+ const splitProps = createSplitProps(props);
989
+
990
+ //#endregion
991
+ export { anatomy, connect, machine, props, splitProps };