@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,1121 @@
1
+ import { t as createAnatomy } from "../../create-anatomy-BbDZbHpC.mjs";
2
+ import { S as queryAll, U as raf, Xt as contains, _ as indexOfId, _n as ariaAttr, at as setElementValue, b as prevById, lt as getEventKey, mt as isComposingEvent, ot as trackFormControl, pt as getNativeEvent, rt as dispatchInputValueEvent, vn as dataAttr, y as nextById, yn as isCaretAtStart, yt as isLeftClick } from "../../dom-query-DFCRhyj1.mjs";
3
+ import { n as autoResizeInput } from "../../auto-resize-D3qHtFy1.mjs";
4
+ import { At as removeAt, Mt as uniq, dt as isEqual, i as warn, u as createSplitProps } from "../../utils-BZyrxWWR.mjs";
5
+ import { a as createMachine, i as createGuards } from "../../core-DCFNMTZF.mjs";
6
+ import { t as trackInteractOutside } from "../../interact-outside-BplxR9cR.mjs";
7
+ import { t as createLiveRegion } from "../../live-region-CnPh21WH.mjs";
8
+ import { t as createProps } from "../../create-props-BnF_vl-E.mjs";
9
+
10
+ //#region src/machines/tags-input/tags-input.anatomy.ts
11
+ const anatomy = createAnatomy("tagsInput").parts("root", "label", "control", "input", "clearTrigger", "item", "itemPreview", "itemInput", "itemText", "itemDeleteTrigger");
12
+ const parts = anatomy.build();
13
+
14
+ //#endregion
15
+ //#region src/machines/tags-input/tags-input.dom.ts
16
+ const getRootId = (ctx) => ctx.ids?.root ?? `tags-input:${ctx.id}`;
17
+ const getInputId = (ctx) => ctx.ids?.input ?? `tags-input:${ctx.id}:input`;
18
+ const getClearTriggerId = (ctx) => ctx.ids?.clearBtn ?? `tags-input:${ctx.id}:clear-btn`;
19
+ const getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `tags-input:${ctx.id}:hidden-input`;
20
+ const getLabelId = (ctx) => ctx.ids?.label ?? `tags-input:${ctx.id}:label`;
21
+ const getControlId = (ctx) => ctx.ids?.control ?? `tags-input:${ctx.id}:control`;
22
+ const getItemId = (ctx, opt) => ctx.ids?.item?.(opt) ?? `tags-input:${ctx.id}:tag:${opt.value}:${opt.index}`;
23
+ const getItemDeleteTriggerId = (ctx, opt) => ctx.ids?.itemDeleteTrigger?.(opt) ?? `${getItemId(ctx, opt)}:delete-btn`;
24
+ const getItemInputId = (ctx, opt) => ctx.ids?.itemInput?.(opt) ?? `${getItemId(ctx, opt)}:input`;
25
+ const getEditInputId = (id) => `${id}:input`;
26
+ const getEditInputEl = (ctx, id) => ctx.getById(getEditInputId(id));
27
+ const getItemEls = (ctx) => queryAll(getRootEl(ctx), `[data-part=item]`);
28
+ const getTagInputEl = (ctx, opt) => ctx.getById(getItemInputId(ctx, opt));
29
+ const getRootEl = (ctx) => ctx.getById(getRootId(ctx));
30
+ const getInputEl = (ctx) => ctx.getById(getInputId(ctx));
31
+ const getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));
32
+ const getTagElements = (ctx) => queryAll(getRootEl(ctx), `[data-part=item-preview]:not([data-disabled])`);
33
+ const getFirstEl = (ctx) => getTagElements(ctx)[0];
34
+ const getLastEl = (ctx) => getTagElements(ctx)[getTagElements(ctx).length - 1];
35
+ const getPrevEl = (ctx, id) => prevById(getTagElements(ctx), id, false);
36
+ const getNextEl = (ctx, id) => nextById(getTagElements(ctx), id, false);
37
+ const getTagElAtIndex = (ctx, index) => getTagElements(ctx)[index];
38
+ const getIndexOfId = (ctx, id) => indexOfId(getTagElements(ctx), id);
39
+ const setHoverIntent = (el) => {
40
+ const tagEl = el.closest("[data-part=item-preview]");
41
+ if (!tagEl) return;
42
+ tagEl.dataset.deleteIntent = "";
43
+ };
44
+ const clearHoverIntent = (el) => {
45
+ const tagEl = el.closest("[data-part=item-preview]");
46
+ if (!tagEl) return;
47
+ delete tagEl.dataset.deleteIntent;
48
+ };
49
+ const dispatchInputEvent = (ctx, value) => {
50
+ const inputEl = getHiddenInputEl(ctx);
51
+ if (!inputEl) return;
52
+ dispatchInputValueEvent(inputEl, { value });
53
+ };
54
+
55
+ //#endregion
56
+ //#region src/machines/tags-input/tags-input.connect.ts
57
+ function connect(service, normalize) {
58
+ const { state, send, computed, prop, scope, context } = service;
59
+ const interactive = computed("isInteractive");
60
+ const disabled = !!prop("disabled");
61
+ const readOnly = !!prop("readOnly");
62
+ const required = !!prop("required");
63
+ const invalid = prop("invalid") || computed("isOverflowing");
64
+ const translations = prop("translations");
65
+ const focused = state.hasTag("focused");
66
+ const editingTag = state.matches("editing:tag");
67
+ const empty = computed("count") === 0;
68
+ function getItemState(options) {
69
+ const id = getItemId(scope, options);
70
+ const editedTagId = context.get("editedTagId");
71
+ const highlightedTagId = context.get("highlightedTagId");
72
+ return {
73
+ id,
74
+ editing: editingTag && editedTagId === id,
75
+ highlighted: id === highlightedTagId,
76
+ disabled: Boolean(options.disabled || disabled)
77
+ };
78
+ }
79
+ return {
80
+ empty,
81
+ inputValue: computed("trimmedInputValue"),
82
+ value: context.get("value"),
83
+ valueAsString: computed("valueAsString"),
84
+ count: computed("count"),
85
+ atMax: computed("isAtMax"),
86
+ setValue(value) {
87
+ send({
88
+ type: "SET_VALUE",
89
+ value
90
+ });
91
+ },
92
+ clearValue(id) {
93
+ if (id) send({
94
+ type: "CLEAR_TAG",
95
+ id
96
+ });
97
+ else send({ type: "CLEAR_VALUE" });
98
+ },
99
+ addValue(value) {
100
+ send({
101
+ type: "ADD_TAG",
102
+ value
103
+ });
104
+ },
105
+ setValueAtIndex(index, value) {
106
+ send({
107
+ type: "SET_VALUE_AT_INDEX",
108
+ index,
109
+ value
110
+ });
111
+ },
112
+ setInputValue(value) {
113
+ send({
114
+ type: "SET_INPUT_VALUE",
115
+ value
116
+ });
117
+ },
118
+ clearInputValue() {
119
+ send({
120
+ type: "SET_INPUT_VALUE",
121
+ value: ""
122
+ });
123
+ },
124
+ focus() {
125
+ getInputEl(scope)?.focus();
126
+ },
127
+ getItemState,
128
+ getRootProps() {
129
+ return normalize.element({
130
+ dir: prop("dir"),
131
+ ...parts.root.attrs,
132
+ "data-invalid": dataAttr(invalid),
133
+ "data-readonly": dataAttr(readOnly),
134
+ "data-disabled": dataAttr(disabled),
135
+ "data-focus": dataAttr(focused),
136
+ "data-empty": dataAttr(empty),
137
+ id: getRootId(scope),
138
+ onPointerDown() {
139
+ if (!interactive) return;
140
+ send({ type: "POINTER_DOWN" });
141
+ }
142
+ });
143
+ },
144
+ getLabelProps() {
145
+ return normalize.label({
146
+ ...parts.label.attrs,
147
+ "data-disabled": dataAttr(disabled),
148
+ "data-invalid": dataAttr(invalid),
149
+ "data-readonly": dataAttr(readOnly),
150
+ "data-required": dataAttr(required),
151
+ id: getLabelId(scope),
152
+ dir: prop("dir"),
153
+ htmlFor: getInputId(scope)
154
+ });
155
+ },
156
+ getControlProps() {
157
+ return normalize.element({
158
+ id: getControlId(scope),
159
+ ...parts.control.attrs,
160
+ dir: prop("dir"),
161
+ tabIndex: readOnly ? 0 : void 0,
162
+ "data-disabled": dataAttr(disabled),
163
+ "data-readonly": dataAttr(readOnly),
164
+ "data-invalid": dataAttr(invalid),
165
+ "data-focus": dataAttr(focused)
166
+ });
167
+ },
168
+ getInputProps() {
169
+ return normalize.input({
170
+ ...parts.input.attrs,
171
+ dir: prop("dir"),
172
+ "data-invalid": dataAttr(invalid),
173
+ "aria-invalid": ariaAttr(invalid),
174
+ "data-readonly": dataAttr(readOnly),
175
+ "data-empty": dataAttr(empty),
176
+ maxLength: prop("maxLength"),
177
+ id: getInputId(scope),
178
+ defaultValue: context.get("inputValue"),
179
+ autoComplete: "off",
180
+ autoCorrect: "off",
181
+ autoCapitalize: "none",
182
+ disabled: disabled || readOnly,
183
+ onInput(event) {
184
+ const evt = getNativeEvent(event);
185
+ const value = event.currentTarget.value;
186
+ if (evt.inputType === "insertFromPaste") {
187
+ send({
188
+ type: "PASTE",
189
+ value
190
+ });
191
+ return;
192
+ }
193
+ if (endsWith(value, prop("delimiter"))) {
194
+ send({ type: "DELIMITER_KEY" });
195
+ return;
196
+ }
197
+ send({
198
+ type: "TYPE",
199
+ value,
200
+ key: evt.inputType
201
+ });
202
+ },
203
+ onFocus() {
204
+ queueMicrotask(() => {
205
+ send({ type: "FOCUS" });
206
+ });
207
+ },
208
+ onKeyDown(event) {
209
+ if (event.defaultPrevented) return;
210
+ if (isComposingEvent(event)) return;
211
+ const target = event.currentTarget;
212
+ const isCombobox = target.getAttribute("role") === "combobox";
213
+ const isExpanded = target.ariaExpanded === "true";
214
+ const exec = {
215
+ ArrowDown() {
216
+ send({ type: "ARROW_DOWN" });
217
+ },
218
+ ArrowLeft() {
219
+ if (isCombobox && isExpanded) return;
220
+ send({ type: "ARROW_LEFT" });
221
+ },
222
+ ArrowRight(event$1) {
223
+ if (context.get("highlightedTagId")) event$1.preventDefault();
224
+ if (isCombobox && isExpanded) return;
225
+ send({ type: "ARROW_RIGHT" });
226
+ },
227
+ Escape(event$1) {
228
+ event$1.preventDefault();
229
+ send({ type: "ESCAPE" });
230
+ },
231
+ Backspace() {
232
+ send({ type: "BACKSPACE" });
233
+ },
234
+ Delete() {
235
+ send({ type: "DELETE" });
236
+ },
237
+ Enter(event$1) {
238
+ const hasHighlightedItem = target.getAttribute("aria-activedescendant");
239
+ if (isCombobox && isExpanded && hasHighlightedItem) return;
240
+ send({ type: "ENTER" });
241
+ event$1.preventDefault();
242
+ }
243
+ }[getEventKey(event, { dir: prop("dir") })];
244
+ if (exec) {
245
+ exec(event);
246
+ return;
247
+ }
248
+ }
249
+ });
250
+ },
251
+ getHiddenInputProps() {
252
+ return normalize.input({
253
+ type: "text",
254
+ hidden: true,
255
+ name: prop("name"),
256
+ form: prop("form"),
257
+ disabled,
258
+ readOnly,
259
+ required: prop("required"),
260
+ id: getHiddenInputId(scope),
261
+ defaultValue: computed("valueAsString")
262
+ });
263
+ },
264
+ getItemProps(props$1) {
265
+ return normalize.element({
266
+ ...parts.item.attrs,
267
+ dir: prop("dir"),
268
+ "data-value": props$1.value,
269
+ "data-disabled": dataAttr(disabled)
270
+ });
271
+ },
272
+ getItemPreviewProps(props$1) {
273
+ const itemState = getItemState(props$1);
274
+ return normalize.element({
275
+ ...parts.itemPreview.attrs,
276
+ id: itemState.id,
277
+ dir: prop("dir"),
278
+ hidden: itemState.editing,
279
+ "data-value": props$1.value,
280
+ "data-disabled": dataAttr(disabled),
281
+ "data-highlighted": dataAttr(itemState.highlighted),
282
+ onPointerDown(event) {
283
+ if (!interactive || itemState.disabled) return;
284
+ if (!isLeftClick(event)) return;
285
+ event.preventDefault();
286
+ send({
287
+ type: "POINTER_DOWN_TAG",
288
+ id: itemState.id
289
+ });
290
+ },
291
+ onDoubleClick() {
292
+ if (!interactive || itemState.disabled) return;
293
+ send({
294
+ type: "DOUBLE_CLICK_TAG",
295
+ id: itemState.id
296
+ });
297
+ }
298
+ });
299
+ },
300
+ getItemTextProps(props$1) {
301
+ const itemState = getItemState(props$1);
302
+ return normalize.element({
303
+ ...parts.itemText.attrs,
304
+ dir: prop("dir"),
305
+ "data-disabled": dataAttr(disabled),
306
+ "data-highlighted": dataAttr(itemState.highlighted)
307
+ });
308
+ },
309
+ getItemInputProps(props$1) {
310
+ const itemState = getItemState(props$1);
311
+ return normalize.input({
312
+ ...parts.itemInput.attrs,
313
+ dir: prop("dir"),
314
+ "aria-label": translations?.tagEdited?.(props$1.value),
315
+ disabled,
316
+ id: getItemInputId(scope, props$1),
317
+ tabIndex: -1,
318
+ hidden: !itemState.editing,
319
+ maxLength: prop("maxLength"),
320
+ defaultValue: itemState.editing ? context.get("editedTagValue") : "",
321
+ onInput(event) {
322
+ send({
323
+ type: "TAG_INPUT_TYPE",
324
+ value: event.currentTarget.value
325
+ });
326
+ },
327
+ onBlur(event) {
328
+ queueMicrotask(() => {
329
+ send({
330
+ type: "TAG_INPUT_BLUR",
331
+ target: event.relatedTarget,
332
+ id: itemState.id
333
+ });
334
+ });
335
+ },
336
+ onKeyDown(event) {
337
+ if (event.defaultPrevented) return;
338
+ if (isComposingEvent(event)) return;
339
+ const exec = {
340
+ Enter() {
341
+ send({ type: "TAG_INPUT_ENTER" });
342
+ },
343
+ Escape() {
344
+ send({ type: "TAG_INPUT_ESCAPE" });
345
+ }
346
+ }[event.key];
347
+ if (exec) {
348
+ event.preventDefault();
349
+ exec(event);
350
+ }
351
+ }
352
+ });
353
+ },
354
+ getItemDeleteTriggerProps(props$1) {
355
+ const itemState = getItemState(props$1);
356
+ return normalize.button({
357
+ ...parts.itemDeleteTrigger.attrs,
358
+ dir: prop("dir"),
359
+ "data-disabled": dataAttr(itemState.disabled),
360
+ "aria-disabled": itemState.disabled,
361
+ "data-highlighted": dataAttr(itemState.highlighted),
362
+ id: getItemDeleteTriggerId(scope, props$1),
363
+ type: "button",
364
+ disabled: itemState.disabled,
365
+ "aria-label": translations?.deleteTagTriggerLabel?.(props$1.value),
366
+ tabIndex: -1,
367
+ onPointerDown(event) {
368
+ if (!isLeftClick(event)) return;
369
+ if (!interactive) event.preventDefault();
370
+ },
371
+ onPointerMove(event) {
372
+ if (!interactive) return;
373
+ setHoverIntent(event.currentTarget);
374
+ },
375
+ onPointerLeave(event) {
376
+ if (!interactive) return;
377
+ clearHoverIntent(event.currentTarget);
378
+ },
379
+ onClick(event) {
380
+ if (event.defaultPrevented) return;
381
+ if (!interactive) return;
382
+ send({
383
+ type: "CLICK_DELETE_TAG",
384
+ id: itemState.id
385
+ });
386
+ }
387
+ });
388
+ },
389
+ getClearTriggerProps() {
390
+ return normalize.button({
391
+ ...parts.clearTrigger.attrs,
392
+ dir: prop("dir"),
393
+ id: getClearTriggerId(scope),
394
+ type: "button",
395
+ "data-readonly": dataAttr(readOnly),
396
+ disabled,
397
+ "aria-label": translations?.clearTriggerLabel,
398
+ hidden: empty,
399
+ onClick() {
400
+ if (!interactive) return;
401
+ send({ type: "CLEAR_VALUE" });
402
+ }
403
+ });
404
+ }
405
+ };
406
+ }
407
+ function endsWith(str, del) {
408
+ if (!del) return false;
409
+ if (typeof del === "string") return str.endsWith(del);
410
+ return (/* @__PURE__ */ new RegExp(`${del.source}$`)).test(str);
411
+ }
412
+
413
+ //#endregion
414
+ //#region src/machines/tags-input/tags-input.machine.ts
415
+ const { and, not, or } = createGuards();
416
+ const machine = createMachine({
417
+ props({ props: props$1 }) {
418
+ return {
419
+ dir: "ltr",
420
+ addOnPaste: false,
421
+ editable: true,
422
+ validate: () => true,
423
+ delimiter: ",",
424
+ defaultValue: [],
425
+ defaultInputValue: "",
426
+ max: Infinity,
427
+ ...props$1,
428
+ translations: {
429
+ clearTriggerLabel: "Clear all tags",
430
+ deleteTagTriggerLabel: (value) => `Delete tag ${value}`,
431
+ tagAdded: (value) => `Added tag ${value}`,
432
+ tagsPasted: (values) => `Pasted ${values.length} tags`,
433
+ tagEdited: (value) => `Editing tag ${value}. Press enter to save or escape to cancel.`,
434
+ tagUpdated: (value) => `Tag update to ${value}`,
435
+ tagDeleted: (value) => `Tag ${value} deleted`,
436
+ tagSelected: (value) => `Tag ${value} selected. Press enter to edit, delete or backspace to remove.`,
437
+ ...props$1.translations
438
+ }
439
+ };
440
+ },
441
+ initialState({ prop }) {
442
+ return prop("autoFocus") ? "focused:input" : "idle";
443
+ },
444
+ refs() {
445
+ return {
446
+ liveRegion: null,
447
+ log: {
448
+ current: null,
449
+ prev: null
450
+ }
451
+ };
452
+ },
453
+ context({ bindable, prop }) {
454
+ return {
455
+ value: bindable(() => ({
456
+ defaultValue: prop("defaultValue"),
457
+ value: prop("value"),
458
+ isEqual,
459
+ hash(value) {
460
+ return value.join(", ");
461
+ },
462
+ onChange(value) {
463
+ prop("onValueChange")?.({ value });
464
+ }
465
+ })),
466
+ inputValue: bindable(() => ({
467
+ sync: true,
468
+ defaultValue: prop("defaultInputValue"),
469
+ value: prop("inputValue"),
470
+ onChange(value) {
471
+ prop("onInputValueChange")?.({ inputValue: value });
472
+ }
473
+ })),
474
+ fieldsetDisabled: bindable(() => ({ defaultValue: false })),
475
+ editedTagValue: bindable(() => ({ defaultValue: "" })),
476
+ editedTagId: bindable(() => ({ defaultValue: null })),
477
+ editedTagIndex: bindable(() => ({
478
+ defaultValue: null,
479
+ sync: true
480
+ })),
481
+ highlightedTagId: bindable(() => ({
482
+ defaultValue: null,
483
+ sync: true,
484
+ onChange(value) {
485
+ prop("onHighlightChange")?.({ highlightedValue: value });
486
+ }
487
+ }))
488
+ };
489
+ },
490
+ computed: {
491
+ count: ({ context }) => context.get("value").length,
492
+ valueAsString: ({ context }) => context.hash("value"),
493
+ trimmedInputValue: ({ context }) => context.get("inputValue").trim(),
494
+ isDisabled: ({ prop }) => !!prop("disabled"),
495
+ isInteractive: ({ prop }) => !(prop("readOnly") || !!prop("disabled")),
496
+ isAtMax: ({ context, prop }) => context.get("value").length === prop("max"),
497
+ isOverflowing: ({ context, prop }) => context.get("value").length > prop("max")
498
+ },
499
+ watch({ track, context, action, computed, refs }) {
500
+ track([() => context.get("editedTagValue")], () => {
501
+ action(["syncEditedTagInputValue"]);
502
+ });
503
+ track([() => context.get("inputValue")], () => {
504
+ action(["syncInputValue"]);
505
+ });
506
+ track([() => context.get("highlightedTagId")], () => {
507
+ action(["logHighlightedTag"]);
508
+ });
509
+ track([() => computed("isOverflowing")], () => {
510
+ action(["invokeOnInvalid"]);
511
+ });
512
+ track([() => JSON.stringify(refs.get("log"))], () => {
513
+ action(["announceLog"]);
514
+ });
515
+ },
516
+ effects: ["trackLiveRegion", "trackFormControlState"],
517
+ exit: ["clearLog"],
518
+ on: {
519
+ DOUBLE_CLICK_TAG: {
520
+ guard: "isTagEditable",
521
+ target: "editing:tag",
522
+ actions: ["setEditedId"]
523
+ },
524
+ POINTER_DOWN_TAG: {
525
+ target: "navigating:tag",
526
+ actions: ["highlightTag", "focusInput"]
527
+ },
528
+ CLICK_DELETE_TAG: {
529
+ target: "focused:input",
530
+ actions: ["deleteTag"]
531
+ },
532
+ SET_INPUT_VALUE: { actions: ["setInputValue"] },
533
+ SET_VALUE: { actions: ["setValue"] },
534
+ CLEAR_TAG: { actions: ["deleteTag"] },
535
+ SET_VALUE_AT_INDEX: { actions: ["setValueAtIndex"] },
536
+ CLEAR_VALUE: { actions: [
537
+ "clearTags",
538
+ "clearInputValue",
539
+ "focusInput"
540
+ ] },
541
+ ADD_TAG: { actions: ["addTag"] },
542
+ INSERT_TAG: {
543
+ guard: and(or(not("isAtMax"), "allowOverflow"), not("isInputValueEmpty")),
544
+ actions: ["addTag", "clearInputValue"]
545
+ },
546
+ EXTERNAL_BLUR: [{
547
+ guard: "addOnBlur",
548
+ actions: ["raiseInsertTagEvent"]
549
+ }, {
550
+ guard: "clearOnBlur",
551
+ actions: ["clearInputValue"]
552
+ }]
553
+ },
554
+ states: {
555
+ idle: { on: {
556
+ FOCUS: { target: "focused:input" },
557
+ POINTER_DOWN: {
558
+ guard: not("hasHighlightedTag"),
559
+ target: "focused:input"
560
+ }
561
+ } },
562
+ "focused:input": {
563
+ tags: ["focused"],
564
+ entry: ["focusInput", "clearHighlightedId"],
565
+ effects: ["trackInteractOutside"],
566
+ on: {
567
+ TYPE: { actions: ["setInputValue"] },
568
+ BLUR: [
569
+ {
570
+ guard: "addOnBlur",
571
+ target: "idle",
572
+ actions: ["raiseInsertTagEvent"]
573
+ },
574
+ {
575
+ guard: "clearOnBlur",
576
+ target: "idle",
577
+ actions: ["clearInputValue"]
578
+ },
579
+ { target: "idle" }
580
+ ],
581
+ ENTER: { actions: ["raiseInsertTagEvent"] },
582
+ DELIMITER_KEY: { actions: ["raiseInsertTagEvent"] },
583
+ ARROW_LEFT: {
584
+ guard: and("hasTags", "isCaretAtStart"),
585
+ target: "navigating:tag",
586
+ actions: ["highlightLastTag"]
587
+ },
588
+ BACKSPACE: {
589
+ target: "navigating:tag",
590
+ guard: and("hasTags", "isCaretAtStart"),
591
+ actions: ["highlightLastTag"]
592
+ },
593
+ DELETE: {
594
+ guard: "hasHighlightedTag",
595
+ actions: ["deleteHighlightedTag", "highlightTagAtIndex"]
596
+ },
597
+ PASTE: [{
598
+ guard: "addOnPaste",
599
+ actions: ["setInputValue", "addTagFromPaste"]
600
+ }, { actions: ["setInputValue"] }]
601
+ }
602
+ },
603
+ "navigating:tag": {
604
+ tags: ["focused"],
605
+ effects: ["trackInteractOutside"],
606
+ on: {
607
+ ARROW_RIGHT: [{
608
+ guard: and("hasTags", "isCaretAtStart", not("isLastTagHighlighted")),
609
+ actions: ["highlightNextTag"]
610
+ }, { target: "focused:input" }],
611
+ ARROW_LEFT: [{
612
+ guard: not("isCaretAtStart"),
613
+ target: "focused:input"
614
+ }, { actions: ["highlightPrevTag"] }],
615
+ BLUR: {
616
+ target: "idle",
617
+ actions: ["clearHighlightedId"]
618
+ },
619
+ ENTER: {
620
+ guard: and("isTagEditable", "hasHighlightedTag"),
621
+ target: "editing:tag",
622
+ actions: ["setEditedId", "focusEditedTagInput"]
623
+ },
624
+ ARROW_DOWN: { target: "focused:input" },
625
+ ESCAPE: { target: "focused:input" },
626
+ TYPE: {
627
+ target: "focused:input",
628
+ actions: ["setInputValue"]
629
+ },
630
+ BACKSPACE: [
631
+ {
632
+ guard: not("isCaretAtStart"),
633
+ target: "focused:input"
634
+ },
635
+ {
636
+ guard: "isFirstTagHighlighted",
637
+ actions: ["deleteHighlightedTag", "highlightFirstTag"]
638
+ },
639
+ {
640
+ guard: "hasHighlightedTag",
641
+ actions: ["deleteHighlightedTag", "highlightPrevTag"]
642
+ },
643
+ { actions: ["highlightLastTag"] }
644
+ ],
645
+ DELETE: [{
646
+ guard: not("isCaretAtStart"),
647
+ target: "focused:input"
648
+ }, {
649
+ target: "focused:input",
650
+ actions: ["deleteHighlightedTag", "highlightTagAtIndex"]
651
+ }],
652
+ PASTE: [{
653
+ guard: "addOnPaste",
654
+ target: "focused:input",
655
+ actions: ["setInputValue", "addTagFromPaste"]
656
+ }, {
657
+ target: "focused:input",
658
+ actions: ["setInputValue"]
659
+ }]
660
+ }
661
+ },
662
+ "editing:tag": {
663
+ tags: ["editing", "focused"],
664
+ entry: ["focusEditedTagInput"],
665
+ effects: ["autoResize"],
666
+ on: {
667
+ TAG_INPUT_TYPE: { actions: ["setEditedTagValue"] },
668
+ TAG_INPUT_ESCAPE: {
669
+ target: "navigating:tag",
670
+ actions: [
671
+ "clearEditedTagValue",
672
+ "focusInput",
673
+ "clearEditedId",
674
+ "highlightTagAtIndex"
675
+ ]
676
+ },
677
+ TAG_INPUT_BLUR: [{
678
+ guard: "isInputRelatedTarget",
679
+ target: "navigating:tag",
680
+ actions: [
681
+ "clearEditedTagValue",
682
+ "clearHighlightedId",
683
+ "clearEditedId"
684
+ ]
685
+ }, {
686
+ target: "idle",
687
+ actions: [
688
+ "clearEditedTagValue",
689
+ "clearHighlightedId",
690
+ "clearEditedId",
691
+ "raiseExternalBlurEvent"
692
+ ]
693
+ }],
694
+ TAG_INPUT_ENTER: [{
695
+ guard: "isEditedTagEmpty",
696
+ target: "navigating:tag",
697
+ actions: [
698
+ "deleteHighlightedTag",
699
+ "focusInput",
700
+ "clearEditedId",
701
+ "highlightTagAtIndex"
702
+ ]
703
+ }, {
704
+ target: "navigating:tag",
705
+ actions: [
706
+ "submitEditedTagValue",
707
+ "focusInput",
708
+ "clearEditedId",
709
+ "highlightTagAtIndex"
710
+ ]
711
+ }]
712
+ }
713
+ }
714
+ },
715
+ implementations: {
716
+ guards: {
717
+ isInputRelatedTarget: ({ scope, event }) => event.relatedTarget === getInputEl(scope),
718
+ isAtMax: ({ computed }) => computed("isAtMax"),
719
+ hasHighlightedTag: ({ context }) => context.get("highlightedTagId") != null,
720
+ isFirstTagHighlighted: ({ context, scope }) => {
721
+ const value = context.get("value");
722
+ return getItemId(scope, {
723
+ value: value[0],
724
+ index: 0
725
+ }) === context.get("highlightedTagId");
726
+ },
727
+ isEditedTagEmpty: ({ context }) => context.get("editedTagValue").trim() === "",
728
+ isLastTagHighlighted: ({ context, scope }) => {
729
+ const value = context.get("value");
730
+ const lastIndex = value.length - 1;
731
+ return getItemId(scope, {
732
+ value: value[lastIndex],
733
+ index: lastIndex
734
+ }) === context.get("highlightedTagId");
735
+ },
736
+ isInputValueEmpty: ({ context }) => context.get("inputValue").trim().length === 0,
737
+ hasTags: ({ context }) => context.get("value").length > 0,
738
+ allowOverflow: ({ prop }) => !!prop("allowOverflow"),
739
+ autoFocus: ({ prop }) => !!prop("autoFocus"),
740
+ addOnBlur: ({ prop }) => prop("blurBehavior") === "add",
741
+ clearOnBlur: ({ prop }) => prop("blurBehavior") === "clear",
742
+ addOnPaste: ({ prop }) => !!prop("addOnPaste"),
743
+ isTagEditable: ({ prop }) => !!prop("editable"),
744
+ isCaretAtStart: ({ scope }) => isCaretAtStart(getInputEl(scope))
745
+ },
746
+ effects: {
747
+ trackInteractOutside({ scope, prop, send }) {
748
+ return trackInteractOutside(getInputEl(scope), {
749
+ exclude(target) {
750
+ return getItemEls(scope).some((el) => contains(el, target));
751
+ },
752
+ onFocusOutside: prop("onFocusOutside"),
753
+ onPointerDownOutside: prop("onPointerDownOutside"),
754
+ onInteractOutside(event) {
755
+ prop("onInteractOutside")?.(event);
756
+ if (event.defaultPrevented) return;
757
+ send({
758
+ type: "BLUR",
759
+ src: "interact-outside"
760
+ });
761
+ }
762
+ });
763
+ },
764
+ trackFormControlState({ context, send, scope }) {
765
+ return trackFormControl(getHiddenInputEl(scope), {
766
+ onFieldsetDisabledChange(disabled) {
767
+ context.set("fieldsetDisabled", disabled);
768
+ },
769
+ onFormReset() {
770
+ send({
771
+ type: "SET_VALUE",
772
+ value: context.initial("value"),
773
+ src: "form-reset"
774
+ });
775
+ }
776
+ });
777
+ },
778
+ autoResize({ context, prop, scope }) {
779
+ let fn_cleanup;
780
+ queueMicrotask(() => {
781
+ const editedTagValue = context.get("editedTagValue");
782
+ const editedTagIndex = context.get("editedTagIndex");
783
+ if (!editedTagValue || editedTagIndex == null || !prop("editable")) return;
784
+ fn_cleanup = autoResizeInput(getTagInputEl(scope, {
785
+ value: editedTagValue,
786
+ index: editedTagIndex
787
+ }));
788
+ });
789
+ return () => {
790
+ fn_cleanup?.();
791
+ };
792
+ },
793
+ trackLiveRegion({ scope, refs }) {
794
+ const liveRegion = createLiveRegion({
795
+ level: "assertive",
796
+ document: scope.getDoc()
797
+ });
798
+ refs.set("liveRegion", liveRegion);
799
+ return () => liveRegion.destroy();
800
+ }
801
+ },
802
+ actions: {
803
+ raiseInsertTagEvent({ send }) {
804
+ send({ type: "INSERT_TAG" });
805
+ },
806
+ raiseExternalBlurEvent({ send, event }) {
807
+ send({
808
+ type: "EXTERNAL_BLUR",
809
+ id: event.id
810
+ });
811
+ },
812
+ dispatchChangeEvent({ scope, computed }) {
813
+ dispatchInputEvent(scope, computed("valueAsString"));
814
+ },
815
+ highlightNextTag({ context, scope }) {
816
+ const highlightedTagId = context.get("highlightedTagId");
817
+ if (highlightedTagId == null) return;
818
+ const next = getNextEl(scope, highlightedTagId);
819
+ context.set("highlightedTagId", next?.id ?? null);
820
+ },
821
+ highlightFirstTag({ context, scope }) {
822
+ raf(() => {
823
+ const first = getFirstEl(scope);
824
+ context.set("highlightedTagId", first?.id ?? null);
825
+ });
826
+ },
827
+ highlightLastTag({ context, scope }) {
828
+ const last = getLastEl(scope);
829
+ context.set("highlightedTagId", last?.id ?? null);
830
+ },
831
+ highlightPrevTag({ context, scope }) {
832
+ const highlightedTagId = context.get("highlightedTagId");
833
+ if (highlightedTagId == null) return;
834
+ const prev = getPrevEl(scope, highlightedTagId);
835
+ context.set("highlightedTagId", prev?.id ?? null);
836
+ },
837
+ highlightTag({ context, event }) {
838
+ context.set("highlightedTagId", event.id);
839
+ },
840
+ highlightTagAtIndex({ context, scope }) {
841
+ raf(() => {
842
+ const idx = context.get("editedTagIndex");
843
+ if (idx == null) return;
844
+ const tagEl = getTagElAtIndex(scope, idx);
845
+ if (tagEl == null) return;
846
+ context.set("highlightedTagId", tagEl.id);
847
+ context.set("editedTagIndex", null);
848
+ });
849
+ },
850
+ deleteTag({ context, scope, event, refs }) {
851
+ const index = getIndexOfId(scope, event.id);
852
+ const value = context.get("value")[index];
853
+ const prevLog = refs.get("log");
854
+ refs.set("log", {
855
+ prev: prevLog.current,
856
+ current: {
857
+ type: "delete",
858
+ value
859
+ }
860
+ });
861
+ context.set("value", (prev) => removeAt(prev, index));
862
+ },
863
+ deleteHighlightedTag({ context, scope, refs }) {
864
+ const highlightedTagId = context.get("highlightedTagId");
865
+ if (highlightedTagId == null) return;
866
+ const index = getIndexOfId(scope, highlightedTagId);
867
+ context.set("editedTagIndex", index);
868
+ const value = context.get("value");
869
+ const prevLog = refs.get("log");
870
+ refs.set("log", {
871
+ prev: prevLog.current,
872
+ current: {
873
+ type: "delete",
874
+ value: value[index]
875
+ }
876
+ });
877
+ context.set("value", (prev) => removeAt(prev, index));
878
+ },
879
+ setEditedId({ context, event, scope }) {
880
+ const highlightedTagId = context.get("highlightedTagId");
881
+ const editedTagId = event.id ?? highlightedTagId;
882
+ context.set("editedTagId", editedTagId);
883
+ const index = getIndexOfId(scope, editedTagId);
884
+ const valueAtIndex = context.get("value")[index];
885
+ context.set("editedTagIndex", index);
886
+ context.set("editedTagValue", valueAtIndex);
887
+ },
888
+ clearEditedId({ context }) {
889
+ context.set("editedTagId", null);
890
+ },
891
+ clearEditedTagValue({ context }) {
892
+ context.set("editedTagValue", "");
893
+ },
894
+ setEditedTagValue({ context, event }) {
895
+ context.set("editedTagValue", event.value);
896
+ },
897
+ submitEditedTagValue({ context, scope, refs }) {
898
+ const editedTagId = context.get("editedTagId");
899
+ if (!editedTagId) return;
900
+ const index = getIndexOfId(scope, editedTagId);
901
+ context.set("value", (prev) => {
902
+ const value = prev.slice();
903
+ value[index] = context.get("editedTagValue");
904
+ return value;
905
+ });
906
+ const prevLog = refs.get("log");
907
+ refs.set("log", {
908
+ prev: prevLog.current,
909
+ current: {
910
+ type: "update",
911
+ value: context.get("editedTagValue")
912
+ }
913
+ });
914
+ },
915
+ setValueAtIndex({ context, event, refs }) {
916
+ if (event.value) {
917
+ context.set("value", (prev) => {
918
+ const value = prev.slice();
919
+ value[event.index] = event.value;
920
+ return value;
921
+ });
922
+ const prevLog = refs.get("log");
923
+ refs.set("log", {
924
+ prev: prevLog.current,
925
+ current: {
926
+ type: "update",
927
+ value: event.value
928
+ }
929
+ });
930
+ } else warn("You need to provide a value for the tag");
931
+ },
932
+ focusEditedTagInput({ context, scope }) {
933
+ raf(() => {
934
+ const editedTagId = context.get("editedTagId");
935
+ if (!editedTagId) return;
936
+ getEditInputEl(scope, editedTagId)?.select();
937
+ });
938
+ },
939
+ setInputValue({ context, event }) {
940
+ context.set("inputValue", event.value);
941
+ },
942
+ clearHighlightedId({ context }) {
943
+ context.set("highlightedTagId", null);
944
+ },
945
+ focusInput({ scope }) {
946
+ raf(() => {
947
+ getInputEl(scope)?.focus();
948
+ });
949
+ },
950
+ clearInputValue({ context }) {
951
+ raf(() => {
952
+ context.set("inputValue", "");
953
+ });
954
+ },
955
+ syncInputValue({ context, scope }) {
956
+ const inputEl = getInputEl(scope);
957
+ if (!inputEl) return;
958
+ setElementValue(inputEl, context.get("inputValue"));
959
+ },
960
+ syncEditedTagInputValue({ context, event, scope }) {
961
+ const id = context.get("editedTagId") || context.get("highlightedTagId") || event.id;
962
+ if (id == null) return;
963
+ const editTagInputEl = getEditInputEl(scope, id);
964
+ if (!editTagInputEl) return;
965
+ setElementValue(editTagInputEl, context.get("editedTagValue"));
966
+ },
967
+ addTag({ context, event, computed, prop, refs }) {
968
+ const inputValue = event.value ?? computed("trimmedInputValue");
969
+ const value = context.get("value");
970
+ if (prop("validate")?.({
971
+ inputValue,
972
+ value: Array.from(value)
973
+ })) {
974
+ const nextValue = uniq(value.concat(inputValue));
975
+ context.set("value", nextValue);
976
+ const prevLog = refs.get("log");
977
+ refs.set("log", {
978
+ prev: prevLog.current,
979
+ current: {
980
+ type: "add",
981
+ value: inputValue
982
+ }
983
+ });
984
+ } else prop("onValueInvalid")?.({ reason: "invalidTag" });
985
+ },
986
+ addTagFromPaste({ context, computed, prop, refs }) {
987
+ raf(() => {
988
+ const inputValue = computed("trimmedInputValue");
989
+ const value = context.get("value");
990
+ if (prop("validate")?.({
991
+ inputValue,
992
+ value: Array.from(value)
993
+ })) {
994
+ const delimiter = prop("delimiter");
995
+ const trimmedValue = delimiter ? inputValue.split(delimiter).map((v) => v.trim()) : [inputValue];
996
+ const nextValue = uniq(value.concat(...trimmedValue));
997
+ context.set("value", nextValue);
998
+ const prevLog = refs.get("log");
999
+ refs.set("log", {
1000
+ prev: prevLog.current,
1001
+ current: {
1002
+ type: "paste",
1003
+ values: trimmedValue
1004
+ }
1005
+ });
1006
+ } else prop("onValueInvalid")?.({ reason: "invalidTag" });
1007
+ context.set("inputValue", "");
1008
+ });
1009
+ },
1010
+ clearTags({ context, refs }) {
1011
+ context.set("value", []);
1012
+ const prevLog = refs.get("log");
1013
+ refs.set("log", {
1014
+ prev: prevLog.current,
1015
+ current: { type: "clear" }
1016
+ });
1017
+ },
1018
+ setValue({ context, event }) {
1019
+ context.set("value", event.value);
1020
+ },
1021
+ invokeOnInvalid({ prop, computed }) {
1022
+ if (computed("isOverflowing")) prop("onValueInvalid")?.({ reason: "rangeOverflow" });
1023
+ },
1024
+ clearLog({ refs }) {
1025
+ const log = refs.get("log");
1026
+ log.prev = log.current = null;
1027
+ },
1028
+ logHighlightedTag({ refs, context, scope }) {
1029
+ const highlightedTagId = context.get("highlightedTagId");
1030
+ const log = refs.get("log");
1031
+ if (highlightedTagId == null || !log.current) return;
1032
+ const index = getIndexOfId(scope, highlightedTagId);
1033
+ const value = context.get("value")[index];
1034
+ const prevLog = refs.get("log");
1035
+ refs.set("log", {
1036
+ prev: prevLog.current,
1037
+ current: {
1038
+ type: "select",
1039
+ value
1040
+ }
1041
+ });
1042
+ },
1043
+ announceLog({ refs, prop }) {
1044
+ const liveRegion = refs.get("liveRegion");
1045
+ const translations = prop("translations");
1046
+ const log = refs.get("log");
1047
+ if (!log.current || liveRegion == null) return;
1048
+ const region = liveRegion;
1049
+ const { current, prev } = log;
1050
+ let msg;
1051
+ switch (current.type) {
1052
+ case "add":
1053
+ msg = translations.tagAdded(current.value);
1054
+ break;
1055
+ case "delete":
1056
+ msg = translations.tagDeleted(current.value);
1057
+ break;
1058
+ case "update":
1059
+ msg = translations.tagUpdated(current.value);
1060
+ break;
1061
+ case "paste":
1062
+ msg = translations.tagsPasted(current.values);
1063
+ break;
1064
+ case "select":
1065
+ msg = translations.tagSelected(current.value);
1066
+ if (prev?.type === "delete") msg = `${translations.tagDeleted(prev.value)}. ${msg}`;
1067
+ else if (prev?.type === "update") msg = `${translations.tagUpdated(prev.value)}. ${msg}`;
1068
+ break;
1069
+ default: break;
1070
+ }
1071
+ if (msg) region.announce(msg);
1072
+ }
1073
+ }
1074
+ }
1075
+ });
1076
+
1077
+ //#endregion
1078
+ //#region src/machines/tags-input/tags-input.props.ts
1079
+ const props = createProps()([
1080
+ "addOnPaste",
1081
+ "allowOverflow",
1082
+ "autoFocus",
1083
+ "blurBehavior",
1084
+ "delimiter",
1085
+ "dir",
1086
+ "disabled",
1087
+ "editable",
1088
+ "form",
1089
+ "getRootNode",
1090
+ "id",
1091
+ "ids",
1092
+ "inputValue",
1093
+ "invalid",
1094
+ "max",
1095
+ "maxLength",
1096
+ "name",
1097
+ "onFocusOutside",
1098
+ "onHighlightChange",
1099
+ "onInputValueChange",
1100
+ "onInteractOutside",
1101
+ "onPointerDownOutside",
1102
+ "onValueChange",
1103
+ "onValueInvalid",
1104
+ "required",
1105
+ "readOnly",
1106
+ "translations",
1107
+ "validate",
1108
+ "value",
1109
+ "defaultValue",
1110
+ "defaultInputValue"
1111
+ ]);
1112
+ const splitProps = createSplitProps(props);
1113
+ const itemProps = createProps()([
1114
+ "index",
1115
+ "disabled",
1116
+ "value"
1117
+ ]);
1118
+ const splitItemProps = createSplitProps(itemProps);
1119
+
1120
+ //#endregion
1121
+ export { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };