@wirekyt/dom 0.0.1 → 0.0.2

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 (476) hide show
  1. package/dist/anatomy-DMuSMbOP.d.cts +18 -0
  2. package/dist/anatomy-DMuSMbOP.d.ts +18 -0
  3. package/dist/anatomy.cjs +3 -0
  4. package/dist/anatomy.d.cts +2 -0
  5. package/dist/anatomy.d.ts +2 -0
  6. package/dist/anatomy.js +2 -0
  7. package/dist/angle-3hqP0Mp5.cjs +13 -0
  8. package/dist/angle-oNt8uGHQ.js +8 -0
  9. package/dist/aria-hidden-CEXexb2I.js +127 -0
  10. package/dist/aria-hidden-Y7iJHPMr.cjs +132 -0
  11. package/dist/aria-hidden.cjs +3 -0
  12. package/dist/aria-hidden.d.cts +10 -0
  13. package/dist/aria-hidden.d.ts +10 -0
  14. package/dist/aria-hidden.js +2 -0
  15. package/dist/array-BGtygd0o.cjs +198 -0
  16. package/dist/array-C4KbHsha.js +73 -0
  17. package/dist/auto-resize-5F5iiKZb.cjs +106 -0
  18. package/dist/auto-resize-KkNfCcBt.js +95 -0
  19. package/dist/auto-resize.cjs +4 -0
  20. package/dist/auto-resize.d.cts +7 -0
  21. package/dist/auto-resize.d.ts +7 -0
  22. package/dist/auto-resize.js +2 -0
  23. package/dist/caret-CHqaP4XG.cjs +30 -0
  24. package/dist/caret-aiDJ6mAS.js +19 -0
  25. package/dist/closest-Clo6ODcK.js +117 -0
  26. package/dist/closest-IiRz1GIJ.cjs +176 -0
  27. package/dist/collection-CJU0oDtX.js +1295 -0
  28. package/dist/collection-CwzUJwBJ.cjs +1342 -0
  29. package/dist/collection.cjs +15 -0
  30. package/dist/collection.d.cts +34 -0
  31. package/dist/collection.d.ts +34 -0
  32. package/dist/collection.js +3 -0
  33. package/dist/color-CsugZjq6.d.cts +60 -0
  34. package/dist/color-CsugZjq6.d.ts +60 -0
  35. package/dist/color-utils-DzeOVYlL.cjs +662 -0
  36. package/dist/color-utils-lDDg9FEh.js +639 -0
  37. package/dist/color-utils.cjs +6 -0
  38. package/dist/color-utils.d.cts +18 -0
  39. package/dist/color-utils.d.ts +18 -0
  40. package/dist/color-utils.js +2 -0
  41. package/dist/computed-style-B1MKlCoo.js +9 -0
  42. package/dist/computed-style-DLArEFNw.cjs +14 -0
  43. package/dist/controller-B8E8ZJCI.cjs +133 -0
  44. package/dist/controller-Dv7lWHDr.js +92 -0
  45. package/dist/core-BF6G2RiC.d.cts +1 -0
  46. package/dist/core-BNMw-JId.cjs +372 -0
  47. package/dist/core-BdeZuSX6.d.ts +1 -0
  48. package/dist/core-CJ0MZr3D.js +289 -0
  49. package/dist/core.cjs +19 -0
  50. package/dist/core.d.cts +3 -0
  51. package/dist/core.d.ts +3 -0
  52. package/dist/core.js +3 -0
  53. package/dist/create-anatomy-B2q3wiaw.js +22 -0
  54. package/dist/create-anatomy-BwDn25ph.cjs +27 -0
  55. package/dist/create-props-CgtcN_Qu.js +4 -0
  56. package/dist/create-props-CjLx2oS8.cjs +9 -0
  57. package/dist/data-url-C-Uk31Q9.cjs +42 -0
  58. package/dist/data-url-DHUHj7UF.js +37 -0
  59. package/dist/data-url-Gx_SWG-k.d.cts +10 -0
  60. package/dist/data-url-Gx_SWG-k.d.ts +10 -0
  61. package/dist/date-utils-D-JJHedx.cjs +868 -0
  62. package/dist/date-utils-D5zXW-Cs.js +569 -0
  63. package/dist/date-utils.cjs +52 -0
  64. package/dist/date-utils.d.cts +7 -0
  65. package/dist/date-utils.d.ts +7 -0
  66. package/dist/date-utils.js +2 -0
  67. package/dist/dismissable-C0bixtzl.cjs +348 -0
  68. package/dist/dismissable-KM1jPtNQ.js +337 -0
  69. package/dist/dismissable-layer-BTX5EvXw.d.ts +40 -0
  70. package/dist/dismissable-layer-Ch5niVaq.d.cts +40 -0
  71. package/dist/dismissable.cjs +4 -0
  72. package/dist/dismissable.d.cts +3 -0
  73. package/dist/dismissable.d.ts +3 -0
  74. package/dist/dismissable.js +2 -0
  75. package/dist/dom-query-CQzY93XU.cjs +488 -0
  76. package/dist/dom-query-e7fh0TEH.js +243 -0
  77. package/dist/dom-query.cjs +180 -0
  78. package/dist/dom-query.d.cts +142 -0
  79. package/dist/dom-query.d.ts +142 -0
  80. package/dist/dom-query.js +43 -0
  81. package/dist/equal-C927y7MN.cjs +30 -0
  82. package/dist/equal-DtrP8DPh.js +25 -0
  83. package/dist/event-DDz-mMhM.cjs +242 -0
  84. package/dist/event-bTItRgiw.js +117 -0
  85. package/dist/file-utils-6EXCdfHx.js +116 -0
  86. package/dist/file-utils-B7OJigQq.cjs +151 -0
  87. package/dist/file-utils.cjs +92 -0
  88. package/dist/file-utils.d.cts +40 -0
  89. package/dist/file-utils.d.ts +40 -0
  90. package/dist/file-utils.js +82 -0
  91. package/dist/focus-trap-89E5I9nm.js +487 -0
  92. package/dist/focus-trap-D7jKsfHW.cjs +498 -0
  93. package/dist/focus-trap.cjs +4 -0
  94. package/dist/focus-trap.d.cts +89 -0
  95. package/dist/focus-trap.d.ts +89 -0
  96. package/dist/focus-trap.js +2 -0
  97. package/dist/focus-visible-DWdQf__4.js +176 -0
  98. package/dist/focus-visible-G4cmlWqq.cjs +217 -0
  99. package/dist/focus-visible.cjs +9 -0
  100. package/dist/focus-visible.d.cts +32 -0
  101. package/dist/focus-visible.d.ts +32 -0
  102. package/dist/focus-visible.js +2 -0
  103. package/dist/form-B1DW_w_3.js +89 -0
  104. package/dist/form-CoupKpuP.cjs +130 -0
  105. package/dist/from-window-5ZhzSURC.js +68 -0
  106. package/dist/from-window-B9DKtaoR.cjs +115 -0
  107. package/dist/functions-isw5Ovcx.d.cts +16 -0
  108. package/dist/functions-isw5Ovcx.d.ts +16 -0
  109. package/dist/highlight-word.cjs +95 -0
  110. package/dist/highlight-word.d.cts +24 -0
  111. package/dist/highlight-word.d.ts +24 -0
  112. package/dist/highlight-word.js +94 -0
  113. package/dist/hotkeys.cjs +1183 -0
  114. package/dist/hotkeys.d.cts +199 -0
  115. package/dist/hotkeys.d.ts +199 -0
  116. package/dist/hotkeys.js +1173 -0
  117. package/dist/i18n-utils-BD4VtonY.cjs +345 -0
  118. package/dist/i18n-utils-C4FQZ39m.js +280 -0
  119. package/dist/i18n-utils.cjs +216 -0
  120. package/dist/i18n-utils.d.cts +71 -0
  121. package/dist/i18n-utils.d.ts +71 -0
  122. package/dist/i18n-utils.js +204 -0
  123. package/dist/index-3tNJficI.d.cts +117 -0
  124. package/dist/index-3tNJficI.d.ts +117 -0
  125. package/dist/index-BEfvdGE2.d.cts +116 -0
  126. package/dist/index-BEfvdGE2.d.ts +116 -0
  127. package/dist/index-BF6G2RiC.d.cts +1 -0
  128. package/dist/index-BKgxIVbE.d.cts +285 -0
  129. package/dist/index-BMtpmaRD.d.cts +16 -0
  130. package/dist/index-BMtpmaRD.d.ts +16 -0
  131. package/dist/index-BWiYePx8.d.cts +216 -0
  132. package/dist/index-BXfunVyD.d.cts +1342 -0
  133. package/dist/index-BXfunVyD.d.ts +1342 -0
  134. package/dist/index-BdeZuSX6.d.ts +1 -0
  135. package/dist/index-C2865AJq.d.cts +25 -0
  136. package/dist/index-C2865AJq.d.ts +25 -0
  137. package/dist/index-CFoN0L3C.d.ts +285 -0
  138. package/dist/index-vPrqYDHu.d.ts +216 -0
  139. package/dist/index.cjs +19 -0
  140. package/dist/index.d.cts +3 -0
  141. package/dist/index.d.ts +3 -0
  142. package/dist/index.js +3 -0
  143. package/dist/initial-focus-BQxRRFPa.cjs +37 -0
  144. package/dist/initial-focus-BrN5tT2X.js +26 -0
  145. package/dist/interact-outside-BjqIunFx.js +211 -0
  146. package/dist/interact-outside-Dphjr2Zh.cjs +216 -0
  147. package/dist/interact-outside.cjs +3 -0
  148. package/dist/interact-outside.d.cts +2 -0
  149. package/dist/interact-outside.d.ts +2 -0
  150. package/dist/interact-outside.js +2 -0
  151. package/dist/json-tree-utils.cjs +1518 -0
  152. package/dist/json-tree-utils.d.cts +117 -0
  153. package/dist/json-tree-utils.d.ts +117 -0
  154. package/dist/json-tree-utils.js +1469 -0
  155. package/dist/list-collection-D_eNKrot.d.cts +60 -0
  156. package/dist/list-collection-RqYEWHb4.d.ts +60 -0
  157. package/dist/live-region-BD0OgmrH.cjs +68 -0
  158. package/dist/live-region-F8YMmbrY.js +63 -0
  159. package/dist/live-region.cjs +3 -0
  160. package/dist/live-region.d.cts +2 -0
  161. package/dist/live-region.d.ts +2 -0
  162. package/dist/live-region.js +2 -0
  163. package/dist/machines/accordion/index.cjs +328 -0
  164. package/dist/machines/accordion/index.d.cts +83 -0
  165. package/dist/machines/accordion/index.d.ts +83 -0
  166. package/dist/machines/accordion/index.js +321 -0
  167. package/dist/machines/angle-slider/index.cjs +420 -0
  168. package/dist/machines/angle-slider/index.d.cts +84 -0
  169. package/dist/machines/angle-slider/index.d.ts +84 -0
  170. package/dist/machines/angle-slider/index.js +415 -0
  171. package/dist/machines/async-list/index.cjs +310 -0
  172. package/dist/machines/async-list/index.d.cts +90 -0
  173. package/dist/machines/async-list/index.d.ts +90 -0
  174. package/dist/machines/async-list/index.js +308 -0
  175. package/dist/machines/avatar/index.cjs +165 -0
  176. package/dist/machines/avatar/index.d.cts +63 -0
  177. package/dist/machines/avatar/index.d.ts +63 -0
  178. package/dist/machines/avatar/index.js +160 -0
  179. package/dist/machines/carousel/index.cjs +929 -0
  180. package/dist/machines/carousel/index.d.cts +146 -0
  181. package/dist/machines/carousel/index.d.ts +146 -0
  182. package/dist/machines/carousel/index.js +920 -0
  183. package/dist/machines/cascade-select/index.cjs +1426 -0
  184. package/dist/machines/cascade-select/index.d.cts +167 -0
  185. package/dist/machines/cascade-select/index.d.ts +167 -0
  186. package/dist/machines/cascade-select/index.js +1419 -0
  187. package/dist/machines/checkbox/index.cjs +316 -0
  188. package/dist/machines/checkbox/index.d.cts +81 -0
  189. package/dist/machines/checkbox/index.d.ts +81 -0
  190. package/dist/machines/checkbox/index.js +311 -0
  191. package/dist/machines/clipboard/index.cjs +228 -0
  192. package/dist/machines/clipboard/index.d.cts +72 -0
  193. package/dist/machines/clipboard/index.d.ts +72 -0
  194. package/dist/machines/clipboard/index.js +221 -0
  195. package/dist/machines/collapsible/index.cjs +363 -0
  196. package/dist/machines/collapsible/index.d.cts +82 -0
  197. package/dist/machines/collapsible/index.d.ts +82 -0
  198. package/dist/machines/collapsible/index.js +358 -0
  199. package/dist/machines/color-picker/index.cjs +1534 -0
  200. package/dist/machines/color-picker/index.d.cts +207 -0
  201. package/dist/machines/color-picker/index.d.ts +207 -0
  202. package/dist/machines/color-picker/index.js +1518 -0
  203. package/dist/machines/combobox/index.cjs +1554 -0
  204. package/dist/machines/combobox/index.d.cts +219 -0
  205. package/dist/machines/combobox/index.d.ts +219 -0
  206. package/dist/machines/combobox/index.js +1542 -0
  207. package/dist/machines/date-input/index.cjs +1974 -0
  208. package/dist/machines/date-input/index.d.cts +230 -0
  209. package/dist/machines/date-input/index.d.ts +230 -0
  210. package/dist/machines/date-input/index.js +1958 -0
  211. package/dist/machines/date-picker/index.cjs +2424 -0
  212. package/dist/machines/date-picker/index.d.cts +378 -0
  213. package/dist/machines/date-picker/index.d.ts +378 -0
  214. package/dist/machines/date-picker/index.js +2408 -0
  215. package/dist/machines/dialog/index.cjs +378 -0
  216. package/dist/machines/dialog/index.d.cts +94 -0
  217. package/dist/machines/dialog/index.d.ts +94 -0
  218. package/dist/machines/dialog/index.js +373 -0
  219. package/dist/machines/drawer/index.cjs +2066 -0
  220. package/dist/machines/drawer/index.d.cts +334 -0
  221. package/dist/machines/drawer/index.d.ts +334 -0
  222. package/dist/machines/drawer/index.js +2059 -0
  223. package/dist/machines/editable/index.cjs +550 -0
  224. package/dist/machines/editable/index.d.cts +114 -0
  225. package/dist/machines/editable/index.d.ts +114 -0
  226. package/dist/machines/editable/index.js +545 -0
  227. package/dist/machines/file-upload/index.cjs +648 -0
  228. package/dist/machines/file-upload/index.d.cts +150 -0
  229. package/dist/machines/file-upload/index.d.ts +150 -0
  230. package/dist/machines/file-upload/index.js +641 -0
  231. package/dist/machines/floating-panel/index.cjs +1020 -0
  232. package/dist/machines/floating-panel/index.d.cts +149 -0
  233. package/dist/machines/floating-panel/index.d.ts +149 -0
  234. package/dist/machines/floating-panel/index.js +1012 -0
  235. package/dist/machines/hover-card/index.cjs +441 -0
  236. package/dist/machines/hover-card/index.d.cts +82 -0
  237. package/dist/machines/hover-card/index.d.ts +82 -0
  238. package/dist/machines/hover-card/index.js +436 -0
  239. package/dist/machines/image-cropper/index.cjs +2082 -0
  240. package/dist/machines/image-cropper/index.d.cts +182 -0
  241. package/dist/machines/image-cropper/index.d.ts +182 -0
  242. package/dist/machines/image-cropper/index.js +2076 -0
  243. package/dist/machines/listbox/index.cjs +873 -0
  244. package/dist/machines/listbox/index.d.cts +175 -0
  245. package/dist/machines/listbox/index.d.ts +175 -0
  246. package/dist/machines/listbox/index.js +860 -0
  247. package/dist/machines/marquee/index.cjs +387 -0
  248. package/dist/machines/marquee/index.d.cts +102 -0
  249. package/dist/machines/marquee/index.d.ts +102 -0
  250. package/dist/machines/marquee/index.js +382 -0
  251. package/dist/machines/menu/index.cjs +1562 -0
  252. package/dist/machines/menu/index.d.cts +188 -0
  253. package/dist/machines/menu/index.d.ts +188 -0
  254. package/dist/machines/menu/index.js +1549 -0
  255. package/dist/machines/navigation-menu/index.cjs +860 -0
  256. package/dist/machines/navigation-menu/index.d.cts +131 -0
  257. package/dist/machines/navigation-menu/index.d.ts +131 -0
  258. package/dist/machines/navigation-menu/index.js +855 -0
  259. package/dist/machines/number-input/index.cjs +1014 -0
  260. package/dist/machines/number-input/index.d.cts +136 -0
  261. package/dist/machines/number-input/index.d.ts +136 -0
  262. package/dist/machines/number-input/index.js +1009 -0
  263. package/dist/machines/pagination/index.cjs +413 -0
  264. package/dist/machines/pagination/index.d.cts +139 -0
  265. package/dist/machines/pagination/index.d.ts +139 -0
  266. package/dist/machines/pagination/index.js +404 -0
  267. package/dist/machines/password-input/index.cjs +224 -0
  268. package/dist/machines/password-input/index.d.cts +71 -0
  269. package/dist/machines/password-input/index.d.ts +71 -0
  270. package/dist/machines/password-input/index.js +219 -0
  271. package/dist/machines/pin-input/index.cjs +595 -0
  272. package/dist/machines/pin-input/index.d.cts +107 -0
  273. package/dist/machines/pin-input/index.d.ts +107 -0
  274. package/dist/machines/pin-input/index.js +590 -0
  275. package/dist/machines/popover/index.cjs +516 -0
  276. package/dist/machines/popover/index.d.cts +107 -0
  277. package/dist/machines/popover/index.d.ts +107 -0
  278. package/dist/machines/popover/index.js +511 -0
  279. package/dist/machines/presence/index.cjs +193 -0
  280. package/dist/machines/presence/index.d.cts +44 -0
  281. package/dist/machines/presence/index.d.ts +44 -0
  282. package/dist/machines/presence/index.js +190 -0
  283. package/dist/machines/progress/index.cjs +282 -0
  284. package/dist/machines/progress/index.d.cts +96 -0
  285. package/dist/machines/progress/index.d.ts +96 -0
  286. package/dist/machines/progress/index.js +277 -0
  287. package/dist/machines/qr-code/index.cjs +167 -0
  288. package/dist/machines/qr-code/index.d.cts +71 -0
  289. package/dist/machines/qr-code/index.d.ts +71 -0
  290. package/dist/machines/qr-code/index.js +162 -0
  291. package/dist/machines/radio-group/index.cjs +465 -0
  292. package/dist/machines/radio-group/index.d.cts +218 -0
  293. package/dist/machines/radio-group/index.d.ts +218 -0
  294. package/dist/machines/radio-group/index.js +458 -0
  295. package/dist/machines/rating-group/index.cjs +405 -0
  296. package/dist/machines/rating-group/index.d.cts +101 -0
  297. package/dist/machines/rating-group/index.d.ts +101 -0
  298. package/dist/machines/rating-group/index.js +398 -0
  299. package/dist/machines/scroll-area/index.cjs +865 -0
  300. package/dist/machines/scroll-area/index.d.cts +126 -0
  301. package/dist/machines/scroll-area/index.d.ts +126 -0
  302. package/dist/machines/scroll-area/index.js +860 -0
  303. package/dist/machines/select/index.cjs +1226 -0
  304. package/dist/machines/select/index.d.cts +190 -0
  305. package/dist/machines/select/index.d.ts +190 -0
  306. package/dist/machines/select/index.js +1214 -0
  307. package/dist/machines/signature-pad/index.cjs +337 -0
  308. package/dist/machines/signature-pad/index.d.cts +108 -0
  309. package/dist/machines/signature-pad/index.d.ts +108 -0
  310. package/dist/machines/signature-pad/index.js +330 -0
  311. package/dist/machines/slider/index.cjs +1103 -0
  312. package/dist/machines/slider/index.d.cts +154 -0
  313. package/dist/machines/slider/index.d.ts +154 -0
  314. package/dist/machines/slider/index.js +1094 -0
  315. package/dist/machines/splitter/index.cjs +1686 -0
  316. package/dist/machines/splitter/index.d.cts +282 -0
  317. package/dist/machines/splitter/index.d.ts +282 -0
  318. package/dist/machines/splitter/index.js +1675 -0
  319. package/dist/machines/steps/index.cjs +330 -0
  320. package/dist/machines/steps/index.d.cts +109 -0
  321. package/dist/machines/steps/index.d.ts +109 -0
  322. package/dist/machines/steps/index.js +325 -0
  323. package/dist/machines/switch/index.cjs +307 -0
  324. package/dist/machines/switch/index.d.cts +80 -0
  325. package/dist/machines/switch/index.d.ts +80 -0
  326. package/dist/machines/switch/index.js +302 -0
  327. package/dist/machines/tabs/index.cjs +542 -0
  328. package/dist/machines/tabs/index.d.cts +113 -0
  329. package/dist/machines/tabs/index.d.ts +113 -0
  330. package/dist/machines/tabs/index.js +533 -0
  331. package/dist/machines/tags-input/index.cjs +1151 -0
  332. package/dist/machines/tags-input/index.d.cts +182 -0
  333. package/dist/machines/tags-input/index.d.ts +182 -0
  334. package/dist/machines/tags-input/index.js +1144 -0
  335. package/dist/machines/timer/index.cjs +329 -0
  336. package/dist/machines/timer/index.d.cts +102 -0
  337. package/dist/machines/timer/index.d.ts +102 -0
  338. package/dist/machines/timer/index.js +323 -0
  339. package/dist/machines/toast/index.cjs +1185 -0
  340. package/dist/machines/toast/index.d.cts +204 -0
  341. package/dist/machines/toast/index.d.ts +204 -0
  342. package/dist/machines/toast/index.js +1180 -0
  343. package/dist/machines/toc/index.cjs +358 -0
  344. package/dist/machines/toc/index.d.cts +98 -0
  345. package/dist/machines/toc/index.d.ts +98 -0
  346. package/dist/machines/toc/index.js +351 -0
  347. package/dist/machines/toggle/index.cjs +99 -0
  348. package/dist/machines/toggle/index.d.cts +46 -0
  349. package/dist/machines/toggle/index.d.ts +46 -0
  350. package/dist/machines/toggle/index.js +94 -0
  351. package/dist/machines/toggle-group/index.cjs +329 -0
  352. package/dist/machines/toggle-group/index.d.cts +81 -0
  353. package/dist/machines/toggle-group/index.d.ts +81 -0
  354. package/dist/machines/toggle-group/index.js +322 -0
  355. package/dist/machines/tooltip/index.cjs +638 -0
  356. package/dist/machines/tooltip/index.d.cts +84 -0
  357. package/dist/machines/tooltip/index.d.ts +84 -0
  358. package/dist/machines/tooltip/index.js +633 -0
  359. package/dist/machines/tour/index.cjs +1123 -0
  360. package/dist/machines/tour/index.d.cts +207 -0
  361. package/dist/machines/tour/index.d.ts +207 -0
  362. package/dist/machines/tour/index.js +1115 -0
  363. package/dist/machines/tree-view/index.cjs +1288 -0
  364. package/dist/machines/tree-view/index.d.cts +221 -0
  365. package/dist/machines/tree-view/index.d.ts +221 -0
  366. package/dist/machines/tree-view/index.js +1279 -0
  367. package/dist/mutation-observer-_LbwtN3W.cjs +61 -0
  368. package/dist/mutation-observer-qObPUo3D.js +50 -0
  369. package/dist/navigate-CJOaL3vx.js +31 -0
  370. package/dist/navigate-uJG-006f.cjs +42 -0
  371. package/dist/overflow-BBihfMxX.cjs +67 -0
  372. package/dist/overflow-C-zO1CWA.js +44 -0
  373. package/dist/platform-BDB0wXUk.js +26 -0
  374. package/dist/platform-BZS-dkZN.cjs +109 -0
  375. package/dist/point-C9A4dk1i.js +27 -0
  376. package/dist/point-DxnCrJBy.cjs +32 -0
  377. package/dist/pointer-lock-BvfSjt_s.cjs +31 -0
  378. package/dist/pointer-lock-WezxTqu-.js +26 -0
  379. package/dist/pointer-move-CGzan38r.cjs +42 -0
  380. package/dist/pointer-move-Tijb8Ptk.js +37 -0
  381. package/dist/polygon-BvdwYRBw.js +76 -0
  382. package/dist/polygon-CTR1kEoU.cjs +93 -0
  383. package/dist/popper-DkAAS9VE.cjs +487 -0
  384. package/dist/popper-DzBZzAe4.js +464 -0
  385. package/dist/popper.cjs +6 -0
  386. package/dist/popper.d.cts +2 -0
  387. package/dist/popper.d.ts +2 -0
  388. package/dist/popper.js +2 -0
  389. package/dist/press-B7XLrLGR.js +65 -0
  390. package/dist/press-BdD5suLQ.cjs +70 -0
  391. package/dist/proxy-tab-focus-DWMXvAfO.js +54 -0
  392. package/dist/proxy-tab-focus-NthYgHdY.cjs +59 -0
  393. package/dist/raf-BSDcY4UD.cjs +85 -0
  394. package/dist/raf-DgINgykK.d.cts +15 -0
  395. package/dist/raf-DgINgykK.d.ts +15 -0
  396. package/dist/raf-Dhvm7f1e.js +62 -0
  397. package/dist/rect-utils-DiT4k3jS.cjs +548 -0
  398. package/dist/rect-utils-d_3gZVsc.js +459 -0
  399. package/dist/rect-utils.cjs +165 -0
  400. package/dist/rect-utils.d.cts +197 -0
  401. package/dist/rect-utils.d.ts +197 -0
  402. package/dist/rect-utils.js +116 -0
  403. package/dist/remove-scroll-DTVA5f4w.cjs +86 -0
  404. package/dist/remove-scroll-WEheFCiq.js +81 -0
  405. package/dist/remove-scroll.cjs +3 -0
  406. package/dist/remove-scroll.d.cts +4 -0
  407. package/dist/remove-scroll.d.ts +4 -0
  408. package/dist/remove-scroll.js +2 -0
  409. package/dist/rolldown-runtime-D6vf50IK.cjs +28 -0
  410. package/dist/scale-C5BBHVgH.js +17 -0
  411. package/dist/scale-C7iiUGhS.cjs +22 -0
  412. package/dist/scope-CysKlKe9.cjs +28 -0
  413. package/dist/scope-D1873Mzi.js +23 -0
  414. package/dist/scroll-CVJ40w2e.js +46 -0
  415. package/dist/scroll-Dyd1QLrc.cjs +63 -0
  416. package/dist/scroll-snap-Cuaqdevf.cjs +224 -0
  417. package/dist/scroll-snap-DqMiFASa.js +201 -0
  418. package/dist/scroll-snap.cjs +6 -0
  419. package/dist/scroll-snap.d.cts +14 -0
  420. package/dist/scroll-snap.d.ts +14 -0
  421. package/dist/scroll-snap.js +2 -0
  422. package/dist/selection-ClKhnWit.d.cts +49 -0
  423. package/dist/selection-DzLiSVkg.d.ts +49 -0
  424. package/dist/selection-map-962WvX2k.js +45 -0
  425. package/dist/selection-map-BwlZr1LH.cjs +68 -0
  426. package/dist/set-CFNGOW5W.js +50 -0
  427. package/dist/set-DrtWCLFb.cjs +73 -0
  428. package/dist/store-BLpJlMxz.js +257 -0
  429. package/dist/store-Btfrm2bs.cjs +47 -0
  430. package/dist/store-C5HvdLyc.js +42 -0
  431. package/dist/store-Wg8KVwNv.cjs +298 -0
  432. package/dist/store.cjs +9 -0
  433. package/dist/store.d.cts +26 -0
  434. package/dist/store.d.ts +26 -0
  435. package/dist/store.js +2 -0
  436. package/dist/stringify-state.cjs +48 -0
  437. package/dist/stringify-state.d.cts +8 -0
  438. package/dist/stringify-state.d.ts +8 -0
  439. package/dist/stringify-state.js +44 -0
  440. package/dist/tabbable-Bz1-1GAY.cjs +206 -0
  441. package/dist/tabbable-CDA1YMjZ.js +147 -0
  442. package/dist/text-selection-B3OQpQGy.cjs +75 -0
  443. package/dist/text-selection-DXvWvm6k.js +64 -0
  444. package/dist/timers-BRyPrXIX.js +82 -0
  445. package/dist/timers-Beu4SfAj.cjs +99 -0
  446. package/dist/tree-collection-3QX3EIhq.d.ts +77 -0
  447. package/dist/tree-collection-C6oDQGUJ.d.cts +77 -0
  448. package/dist/typeahead-DremEgML.d.cts +45 -0
  449. package/dist/typeahead-DremEgML.d.ts +45 -0
  450. package/dist/types-BFuHIo7S.js +10 -0
  451. package/dist/types-CczqoQLL.d.cts +57 -0
  452. package/dist/types-CczqoQLL.d.ts +57 -0
  453. package/dist/types-CjocssbC.d.cts +13 -0
  454. package/dist/types-CjocssbC.d.ts +13 -0
  455. package/dist/types-D7oF7eWh.d.cts +54 -0
  456. package/dist/types-D7oF7eWh.d.ts +54 -0
  457. package/dist/types-HCvp3Bhv.cjs +21 -0
  458. package/dist/types.cjs +14 -0
  459. package/dist/types.d.cts +6 -0
  460. package/dist/types.d.ts +6 -0
  461. package/dist/types.js +12 -0
  462. package/dist/utils-BH-oBBz2.cjs +614 -0
  463. package/dist/utils-Cht5XaHf.js +267 -0
  464. package/dist/utils.cjs +95 -0
  465. package/dist/utils.d.cts +144 -0
  466. package/dist/utils.d.ts +144 -0
  467. package/dist/utils.js +7 -0
  468. package/dist/visually-hidden-BgSCFLz_.cjs +29 -0
  469. package/dist/visually-hidden-yDJ517KZ.js +18 -0
  470. package/dist/wait-for-3n85JcCU.d.cts +15 -0
  471. package/dist/wait-for-3n85JcCU.d.ts +15 -0
  472. package/dist/wait-for-CI5Ye-Lo.js +69 -0
  473. package/dist/wait-for-Db73VpZQ.cjs +86 -0
  474. package/dist/warning-CrzBpWT1.js +19 -0
  475. package/dist/warning-HAmFXLHm.cjs +42 -0
  476. package/package.json +349 -6
@@ -0,0 +1,1542 @@
1
+ import { t as createAnatomy } from "../../create-anatomy-B2q3wiaw.js";
2
+ import { n as setCaretToEnd } from "../../caret-aiDJ6mAS.js";
3
+ import { L as ariaAttr, d as query, w as isAnchorElement, z as dataAttr } from "../../dom-query-e7fh0TEH.js";
4
+ import { i as isApple } from "../../platform-BDB0wXUk.js";
5
+ import { f as isDownloadingEvent, g as isOpeningInNewTab, l as isComposingEvent, m as isLeftClick, r as getEventKey, u as isContextMenuEvent } from "../../event-bTItRgiw.js";
6
+ import { i as raf, n as nextTick } from "../../raf-Dhvm7f1e.js";
7
+ import { t as observeAttributes } from "../../mutation-observer-qObPUo3D.js";
8
+ import { t as clickIfLink } from "../../navigate-CJOaL3vx.js";
9
+ import { n as scrollIntoView } from "../../scroll-CVJ40w2e.js";
10
+ import { n as addOrRemove, v as remove } from "../../array-C4KbHsha.js";
11
+ import { t as isEqual } from "../../equal-DtrP8DPh.js";
12
+ import { H as match, X as isBoolean, n as createSplitProps } from "../../utils-Cht5XaHf.js";
13
+ import { t as ensure } from "../../warning-CrzBpWT1.js";
14
+ import { s as ListCollection } from "../../collection-CJU0oDtX.js";
15
+ import { n as deriveSelectionState, r as resolveSelectedItems, t as createSelectedItemMap } from "../../selection-map-962WvX2k.js";
16
+ import { i as setup } from "../../core-CJ0MZr3D.js";
17
+ import { n as trackDismissableElement } from "../../dismissable-KM1jPtNQ.js";
18
+ import { a as setInteractionModality, o as trackFocusVisible, t as getInteractionModality } from "../../focus-visible-DWdQf__4.js";
19
+ import { t as createLiveRegion } from "../../live-region-F8YMmbrY.js";
20
+ import { n as getPlacement, r as getPlacementSide, t as getPlacementStyles } from "../../popper-DzBZzAe4.js";
21
+ import { t as createProps } from "../../create-props-CgtcN_Qu.js";
22
+ //#region src/machines/combobox/anatomy.ts
23
+ const anatomy = createAnatomy("combobox").parts("root", "clearTrigger", "content", "control", "input", "item", "itemGroup", "itemGroupLabel", "itemIndicator", "itemText", "label", "list", "positioner", "trigger");
24
+ const parts = anatomy.build();
25
+ //#endregion
26
+ //#region src/machines/combobox/collection.ts
27
+ const collection = (options) => {
28
+ return new ListCollection(options);
29
+ };
30
+ collection.empty = () => {
31
+ return new ListCollection({ items: [] });
32
+ };
33
+ //#endregion
34
+ //#region src/machines/combobox/dom.ts
35
+ const getRootId = (ctx) => ctx.ids?.root ?? `combobox:${ctx.id}`;
36
+ const getLabelId = (ctx) => ctx.ids?.label ?? `combobox:${ctx.id}:label`;
37
+ const getControlId = (ctx) => ctx.ids?.control ?? `combobox:${ctx.id}:control`;
38
+ const getInputId = (ctx) => ctx.ids?.input ?? `combobox:${ctx.id}:input`;
39
+ const getContentId = (ctx) => ctx.ids?.content ?? `combobox:${ctx.id}:content`;
40
+ const getPositionerId = (ctx) => ctx.ids?.positioner ?? `combobox:${ctx.id}:popper`;
41
+ const getTriggerId = (ctx) => ctx.ids?.trigger ?? `combobox:${ctx.id}:toggle-btn`;
42
+ const getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `combobox:${ctx.id}:clear-btn`;
43
+ const getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `combobox:${ctx.id}:optgroup:${id}`;
44
+ const getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `combobox:${ctx.id}:optgroup-label:${id}`;
45
+ const getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `combobox:${ctx.id}:option:${id}`;
46
+ const getContentEl = (ctx) => ctx.getById(getContentId(ctx));
47
+ const getInputEl = (ctx) => ctx.getById(getInputId(ctx));
48
+ const getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));
49
+ const getControlEl = (ctx) => ctx.getById(getControlId(ctx));
50
+ const getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));
51
+ const getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));
52
+ const getItemEl = (ctx, value) => {
53
+ if (value == null) return null;
54
+ const selector = `[role=option][data-value="${CSS.escape(value)}"]`;
55
+ return query(getContentEl(ctx), selector);
56
+ };
57
+ const focusInputEl = (ctx) => {
58
+ const inputEl = getInputEl(ctx);
59
+ if (!ctx.isActiveElement(inputEl)) inputEl?.focus({ preventScroll: true });
60
+ setCaretToEnd(inputEl);
61
+ };
62
+ const focusTriggerEl = (ctx) => {
63
+ const triggerEl = getTriggerEl(ctx);
64
+ if (ctx.isActiveElement(triggerEl)) return;
65
+ triggerEl?.focus({ preventScroll: true });
66
+ };
67
+ //#endregion
68
+ //#region src/machines/combobox/connect.ts
69
+ function connect(service, normalize) {
70
+ const { context, prop, state, send, scope, computed, event } = service;
71
+ const translations = prop("translations");
72
+ const collection = prop("collection");
73
+ const disabled = !!prop("disabled");
74
+ const interactive = computed("isInteractive");
75
+ const invalid = !!prop("invalid");
76
+ const required = !!prop("required");
77
+ const readOnly = !!prop("readOnly");
78
+ const open = state.hasTag("open");
79
+ const focused = state.hasTag("focused");
80
+ const composite = prop("composite");
81
+ const highlightedValue = context.get("highlightedValue");
82
+ const currentPlacement = context.get("currentPlacement");
83
+ const currentPlacementSide = currentPlacement ? getPlacementSide(currentPlacement) : void 0;
84
+ const popperStyles = getPlacementStyles({
85
+ ...prop("positioning"),
86
+ placement: currentPlacement
87
+ });
88
+ function getItemState(props) {
89
+ const itemDisabled = collection.getItemDisabled(props.item);
90
+ const value = collection.getItemValue(props.item);
91
+ ensure(value, () => `[wirekyt] No value found for item ${JSON.stringify(props.item)}`);
92
+ return {
93
+ value,
94
+ disabled: Boolean(disabled || itemDisabled),
95
+ highlighted: highlightedValue === value,
96
+ selected: context.get("value").includes(value)
97
+ };
98
+ }
99
+ return {
100
+ focused,
101
+ open,
102
+ inputValue: context.get("inputValue"),
103
+ highlightedValue,
104
+ highlightedItem: context.get("highlightedItem"),
105
+ value: context.get("value"),
106
+ valueAsString: computed("valueAsString"),
107
+ hasSelectedItems: computed("hasSelectedItems"),
108
+ selectedItems: computed("selectedItems"),
109
+ collection: prop("collection"),
110
+ multiple: !!prop("multiple"),
111
+ disabled: !!disabled,
112
+ syncSelectedItems() {
113
+ send({ type: "SELECTED_ITEMS.SYNC" });
114
+ },
115
+ reposition(options = {}) {
116
+ send({
117
+ type: "POSITIONING.SET",
118
+ options
119
+ });
120
+ },
121
+ setHighlightValue(value) {
122
+ send({
123
+ type: "HIGHLIGHTED_VALUE.SET",
124
+ value
125
+ });
126
+ },
127
+ clearHighlightValue() {
128
+ send({ type: "HIGHLIGHTED_VALUE.CLEAR" });
129
+ },
130
+ selectValue(value) {
131
+ send({
132
+ type: "ITEM.SELECT",
133
+ value
134
+ });
135
+ },
136
+ setValue(value) {
137
+ send({
138
+ type: "VALUE.SET",
139
+ value
140
+ });
141
+ },
142
+ setInputValue(value, reason = "script") {
143
+ send({
144
+ type: "INPUT_VALUE.SET",
145
+ value,
146
+ src: reason
147
+ });
148
+ },
149
+ clearValue(value) {
150
+ if (value != null) send({
151
+ type: "ITEM.CLEAR",
152
+ value
153
+ });
154
+ else send({ type: "VALUE.CLEAR" });
155
+ },
156
+ focus() {
157
+ getInputEl(scope)?.focus();
158
+ },
159
+ setOpen(nextOpen, reason = "script") {
160
+ if (state.hasTag("open") === nextOpen) return;
161
+ send({
162
+ type: nextOpen ? "OPEN" : "CLOSE",
163
+ src: reason
164
+ });
165
+ },
166
+ getRootProps() {
167
+ return normalize.element({
168
+ ...parts.root.attrs,
169
+ dir: prop("dir"),
170
+ id: getRootId(scope),
171
+ "data-invalid": dataAttr(invalid),
172
+ "data-readonly": dataAttr(readOnly)
173
+ });
174
+ },
175
+ getLabelProps() {
176
+ return normalize.label({
177
+ ...parts.label.attrs,
178
+ dir: prop("dir"),
179
+ htmlFor: getInputId(scope),
180
+ id: getLabelId(scope),
181
+ "data-readonly": dataAttr(readOnly),
182
+ "data-disabled": dataAttr(disabled),
183
+ "data-invalid": dataAttr(invalid),
184
+ "data-required": dataAttr(required),
185
+ "data-focus": dataAttr(focused),
186
+ onClick(event) {
187
+ if (composite) return;
188
+ event.preventDefault();
189
+ getTriggerEl(scope)?.focus({ preventScroll: true });
190
+ }
191
+ });
192
+ },
193
+ getControlProps() {
194
+ return normalize.element({
195
+ ...parts.control.attrs,
196
+ dir: prop("dir"),
197
+ id: getControlId(scope),
198
+ "data-state": open ? "open" : "closed",
199
+ "data-focus": dataAttr(focused),
200
+ "data-disabled": dataAttr(disabled),
201
+ "data-invalid": dataAttr(invalid)
202
+ });
203
+ },
204
+ getPositionerProps() {
205
+ return normalize.element({
206
+ ...parts.positioner.attrs,
207
+ dir: prop("dir"),
208
+ id: getPositionerId(scope),
209
+ style: popperStyles.floating
210
+ });
211
+ },
212
+ getInputProps() {
213
+ return normalize.input({
214
+ ...parts.input.attrs,
215
+ dir: prop("dir"),
216
+ "aria-invalid": ariaAttr(invalid),
217
+ "data-invalid": dataAttr(invalid),
218
+ "data-autofocus": dataAttr(prop("autoFocus")),
219
+ name: prop("name"),
220
+ form: prop("form"),
221
+ disabled,
222
+ required: prop("required"),
223
+ autoComplete: "off",
224
+ autoCorrect: "off",
225
+ autoCapitalize: "none",
226
+ spellCheck: "false",
227
+ readOnly,
228
+ placeholder: prop("placeholder"),
229
+ id: getInputId(scope),
230
+ type: "text",
231
+ role: "combobox",
232
+ defaultValue: context.get("inputValue"),
233
+ "aria-autocomplete": computed("autoComplete") ? "both" : "list",
234
+ "aria-controls": getContentId(scope),
235
+ "aria-expanded": open,
236
+ "data-state": open ? "open" : "closed",
237
+ "aria-activedescendant": highlightedValue ? getItemId(scope, highlightedValue) : void 0,
238
+ onClick(event) {
239
+ if (event.defaultPrevented) return;
240
+ if (!prop("openOnClick")) return;
241
+ if (!interactive) return;
242
+ send({
243
+ type: "INPUT.CLICK",
244
+ src: "input-click"
245
+ });
246
+ },
247
+ onFocus() {
248
+ if (disabled) return;
249
+ send({ type: "INPUT.FOCUS" });
250
+ },
251
+ onBlur() {
252
+ if (disabled) return;
253
+ send({ type: "INPUT.BLUR" });
254
+ },
255
+ onChange(event) {
256
+ send({
257
+ type: "INPUT.CHANGE",
258
+ value: event.currentTarget.value,
259
+ src: "input-change"
260
+ });
261
+ },
262
+ onKeyDown(event) {
263
+ if (event.defaultPrevented) return;
264
+ if (!interactive) return;
265
+ if (event.ctrlKey || event.shiftKey || isComposingEvent(event)) return;
266
+ const openOnKeyPress = prop("openOnKeyPress");
267
+ const isModifierKey = event.ctrlKey || event.metaKey || event.shiftKey;
268
+ const keypress = true;
269
+ const exec = {
270
+ ArrowDown(event) {
271
+ if (!openOnKeyPress && !open) return;
272
+ send({
273
+ type: event.altKey ? "OPEN" : "INPUT.ARROW_DOWN",
274
+ keypress,
275
+ src: "arrow-key"
276
+ });
277
+ event.preventDefault();
278
+ },
279
+ ArrowUp() {
280
+ if (!openOnKeyPress && !open) return;
281
+ send({
282
+ type: event.altKey ? "CLOSE" : "INPUT.ARROW_UP",
283
+ keypress,
284
+ src: "arrow-key"
285
+ });
286
+ event.preventDefault();
287
+ },
288
+ Home(event) {
289
+ if (isModifierKey) return;
290
+ send({
291
+ type: "INPUT.HOME",
292
+ keypress
293
+ });
294
+ if (open) event.preventDefault();
295
+ },
296
+ End(event) {
297
+ if (isModifierKey) return;
298
+ send({
299
+ type: "INPUT.END",
300
+ keypress
301
+ });
302
+ if (open) event.preventDefault();
303
+ },
304
+ Enter(event) {
305
+ send({
306
+ type: "INPUT.ENTER",
307
+ keypress,
308
+ src: "item-select"
309
+ });
310
+ const hasHighlight = highlightedValue != null;
311
+ const alwaysSubmit = prop("alwaysSubmitOnEnter");
312
+ const willBeRejected = computed("isCustomValue") && !prop("allowCustomValue");
313
+ if (open && !alwaysSubmit && (hasHighlight || willBeRejected)) event.preventDefault();
314
+ if (highlightedValue == null) return;
315
+ const itemEl = getItemEl(scope, highlightedValue);
316
+ if (isAnchorElement(itemEl)) prop("navigate")?.({
317
+ value: highlightedValue,
318
+ node: itemEl,
319
+ href: itemEl.href
320
+ });
321
+ },
322
+ Escape() {
323
+ send({
324
+ type: "INPUT.ESCAPE",
325
+ keypress,
326
+ src: "escape-key"
327
+ });
328
+ event.preventDefault();
329
+ }
330
+ }[getEventKey(event, { dir: prop("dir") })];
331
+ exec?.(event);
332
+ }
333
+ });
334
+ },
335
+ getTriggerProps(props = {}) {
336
+ return normalize.button({
337
+ ...parts.trigger.attrs,
338
+ dir: prop("dir"),
339
+ id: getTriggerId(scope),
340
+ "aria-haspopup": composite ? "listbox" : "dialog",
341
+ type: "button",
342
+ tabIndex: props.focusable ? void 0 : -1,
343
+ "aria-label": translations.triggerLabel,
344
+ "aria-expanded": open,
345
+ "data-state": open ? "open" : "closed",
346
+ "aria-controls": open ? getContentId(scope) : void 0,
347
+ disabled,
348
+ "data-invalid": dataAttr(invalid),
349
+ "data-focusable": dataAttr(props.focusable),
350
+ "data-readonly": dataAttr(readOnly),
351
+ "data-disabled": dataAttr(disabled),
352
+ onFocus() {
353
+ if (!props.focusable) return;
354
+ send({
355
+ type: "INPUT.FOCUS",
356
+ src: "trigger"
357
+ });
358
+ },
359
+ onClick(event) {
360
+ if (event.defaultPrevented) return;
361
+ if (!interactive) return;
362
+ if (!isLeftClick(event)) return;
363
+ send({
364
+ type: "TRIGGER.CLICK",
365
+ src: "trigger-click"
366
+ });
367
+ },
368
+ onPointerDown(event) {
369
+ if (!interactive) return;
370
+ if (event.pointerType === "touch") return;
371
+ if (!isLeftClick(event)) return;
372
+ event.preventDefault();
373
+ queueMicrotask(() => {
374
+ focusInputEl(scope);
375
+ });
376
+ },
377
+ onKeyDown(event) {
378
+ if (event.defaultPrevented) return;
379
+ if (composite) return;
380
+ const exec = {
381
+ ArrowDown() {
382
+ send({
383
+ type: "INPUT.ARROW_DOWN",
384
+ src: "arrow-key"
385
+ });
386
+ },
387
+ ArrowUp() {
388
+ send({
389
+ type: "INPUT.ARROW_UP",
390
+ src: "arrow-key"
391
+ });
392
+ }
393
+ }[getEventKey(event, { dir: prop("dir") })];
394
+ if (exec) {
395
+ exec(event);
396
+ event.preventDefault();
397
+ }
398
+ }
399
+ });
400
+ },
401
+ getContentProps() {
402
+ return normalize.element({
403
+ ...parts.content.attrs,
404
+ dir: prop("dir"),
405
+ id: getContentId(scope),
406
+ role: !composite ? "dialog" : "listbox",
407
+ tabIndex: -1,
408
+ hidden: !open,
409
+ "data-state": open ? "open" : "closed",
410
+ "data-placement": currentPlacement,
411
+ "data-side": currentPlacementSide,
412
+ "aria-labelledby": getLabelId(scope),
413
+ "aria-multiselectable": prop("multiple") && composite ? true : void 0,
414
+ "data-empty": dataAttr(collection.size === 0),
415
+ onPointerDown(event) {
416
+ if (!isLeftClick(event)) return;
417
+ event.preventDefault();
418
+ }
419
+ });
420
+ },
421
+ getListProps() {
422
+ return normalize.element({
423
+ ...parts.list.attrs,
424
+ role: !composite ? "listbox" : void 0,
425
+ "data-empty": dataAttr(collection.size === 0),
426
+ "aria-labelledby": getLabelId(scope),
427
+ "aria-multiselectable": prop("multiple") && !composite ? true : void 0
428
+ });
429
+ },
430
+ getClearTriggerProps() {
431
+ return normalize.button({
432
+ ...parts.clearTrigger.attrs,
433
+ dir: prop("dir"),
434
+ id: getClearTriggerId(scope),
435
+ type: "button",
436
+ tabIndex: -1,
437
+ disabled,
438
+ "data-invalid": dataAttr(invalid),
439
+ "aria-label": translations.clearTriggerLabel,
440
+ "aria-controls": getInputId(scope),
441
+ hidden: !context.get("value").length,
442
+ onPointerDown(event) {
443
+ if (!isLeftClick(event)) return;
444
+ event.preventDefault();
445
+ },
446
+ onClick(event) {
447
+ if (event.defaultPrevented) return;
448
+ if (!interactive) return;
449
+ send({
450
+ type: "VALUE.CLEAR",
451
+ src: "clear-trigger"
452
+ });
453
+ }
454
+ });
455
+ },
456
+ getItemState,
457
+ getItemProps(props) {
458
+ const itemState = getItemState(props);
459
+ const value = itemState.value;
460
+ return normalize.element({
461
+ ...parts.item.attrs,
462
+ dir: prop("dir"),
463
+ id: getItemId(scope, value),
464
+ role: "option",
465
+ tabIndex: -1,
466
+ "data-highlighted": dataAttr(itemState.highlighted),
467
+ "data-state": itemState.selected ? "checked" : "unchecked",
468
+ "aria-selected": ariaAttr(itemState.selected),
469
+ "aria-disabled": ariaAttr(itemState.disabled),
470
+ "data-disabled": dataAttr(itemState.disabled),
471
+ "data-value": itemState.value,
472
+ onPointerMove() {
473
+ if (itemState.disabled) return;
474
+ if (itemState.highlighted) return;
475
+ send({
476
+ type: "ITEM.POINTER_MOVE",
477
+ value
478
+ });
479
+ },
480
+ onPointerLeave() {
481
+ if (props.persistFocus) return;
482
+ if (itemState.disabled) return;
483
+ if (!event.previous()?.type.includes("POINTER")) return;
484
+ send({
485
+ type: "ITEM.POINTER_LEAVE",
486
+ value
487
+ });
488
+ },
489
+ onClick(event) {
490
+ if (isDownloadingEvent(event)) return;
491
+ if (isOpeningInNewTab(event)) return;
492
+ if (isContextMenuEvent(event)) return;
493
+ if (itemState.disabled) return;
494
+ send({
495
+ type: "ITEM.CLICK",
496
+ src: "item-select",
497
+ value
498
+ });
499
+ }
500
+ });
501
+ },
502
+ getItemTextProps(props) {
503
+ const itemState = getItemState(props);
504
+ return normalize.element({
505
+ ...parts.itemText.attrs,
506
+ dir: prop("dir"),
507
+ "data-state": itemState.selected ? "checked" : "unchecked",
508
+ "data-disabled": dataAttr(itemState.disabled),
509
+ "data-highlighted": dataAttr(itemState.highlighted)
510
+ });
511
+ },
512
+ getItemIndicatorProps(props) {
513
+ const itemState = getItemState(props);
514
+ return normalize.element({
515
+ "aria-hidden": true,
516
+ ...parts.itemIndicator.attrs,
517
+ dir: prop("dir"),
518
+ "data-state": itemState.selected ? "checked" : "unchecked",
519
+ hidden: !itemState.selected
520
+ });
521
+ },
522
+ getItemGroupProps(props) {
523
+ const { id } = props;
524
+ return normalize.element({
525
+ ...parts.itemGroup.attrs,
526
+ dir: prop("dir"),
527
+ id: getItemGroupId(scope, id),
528
+ "aria-labelledby": getItemGroupLabelId(scope, id),
529
+ "data-empty": dataAttr(collection.size === 0),
530
+ role: "group"
531
+ });
532
+ },
533
+ getItemGroupLabelProps(props) {
534
+ const { htmlFor } = props;
535
+ return normalize.element({
536
+ ...parts.itemGroupLabel.attrs,
537
+ dir: prop("dir"),
538
+ id: getItemGroupLabelId(scope, htmlFor),
539
+ role: "presentation"
540
+ });
541
+ }
542
+ };
543
+ }
544
+ //#endregion
545
+ //#region src/machines/combobox/machine.ts
546
+ const { guards, createMachine, choose } = setup();
547
+ const { and, not } = guards;
548
+ const machine = createMachine({
549
+ props({ props }) {
550
+ return {
551
+ loopFocus: true,
552
+ openOnClick: false,
553
+ defaultValue: [],
554
+ defaultInputValue: "",
555
+ closeOnSelect: !props.multiple,
556
+ allowCustomValue: false,
557
+ alwaysSubmitOnEnter: false,
558
+ inputBehavior: "none",
559
+ selectionBehavior: props.multiple ? "clear" : "replace",
560
+ openOnKeyPress: true,
561
+ openOnChange: true,
562
+ composite: true,
563
+ navigate({ node }) {
564
+ clickIfLink(node);
565
+ },
566
+ collection: collection.empty(),
567
+ ...props,
568
+ positioning: {
569
+ placement: "bottom",
570
+ sameWidth: true,
571
+ ...props.positioning
572
+ },
573
+ translations: {
574
+ triggerLabel: "Toggle suggestions",
575
+ clearTriggerLabel: "Clear value",
576
+ ...props.translations
577
+ }
578
+ };
579
+ },
580
+ initialState({ prop }) {
581
+ return prop("open") || prop("defaultOpen") ? "open.suggesting" : "closed.idle";
582
+ },
583
+ context({ prop, bindable, getContext, getEvent }) {
584
+ const initialValue = prop("value") ?? prop("defaultValue") ?? [];
585
+ const initialSelectedItems = prop("collection").findMany(initialValue);
586
+ return {
587
+ currentPlacement: bindable(() => ({ defaultValue: void 0 })),
588
+ value: bindable(() => ({
589
+ defaultValue: prop("defaultValue"),
590
+ value: prop("value"),
591
+ isEqual,
592
+ hash(value) {
593
+ return value.join(",");
594
+ },
595
+ onChange(value) {
596
+ const context = getContext();
597
+ const collection = prop("collection");
598
+ const proposed = deriveSelectionState({
599
+ values: value,
600
+ collection,
601
+ selectedItemMap: context.get("selectedItemMap")
602
+ });
603
+ const effectiveValue = prop("value") ?? value;
604
+ const effective = effectiveValue === value ? proposed : deriveSelectionState({
605
+ values: effectiveValue,
606
+ collection,
607
+ selectedItemMap: proposed.nextSelectedItemMap
608
+ });
609
+ context.set("selectedItemMap", effective.nextSelectedItemMap);
610
+ prop("onValueChange")?.({
611
+ value,
612
+ items: proposed.selectedItems
613
+ });
614
+ }
615
+ })),
616
+ highlightedValue: bindable(() => ({
617
+ defaultValue: prop("defaultHighlightedValue") || null,
618
+ value: prop("highlightedValue"),
619
+ onChange(value) {
620
+ const item = prop("collection").find(value);
621
+ prop("onHighlightChange")?.({
622
+ highlightedValue: value,
623
+ highlightedItem: item
624
+ });
625
+ }
626
+ })),
627
+ inputValue: bindable(() => {
628
+ let inputValue = prop("inputValue") || prop("defaultInputValue");
629
+ const value = prop("value") || prop("defaultValue");
630
+ if (!inputValue.trim() && !prop("multiple")) {
631
+ const valueAsString = prop("collection").stringifyMany(value);
632
+ inputValue = match(prop("selectionBehavior"), {
633
+ preserve: inputValue || valueAsString,
634
+ replace: valueAsString,
635
+ clear: ""
636
+ });
637
+ }
638
+ return {
639
+ defaultValue: inputValue,
640
+ value: prop("inputValue"),
641
+ onChange(value) {
642
+ const event = getEvent();
643
+ const reason = (event.previousEvent || event).src;
644
+ prop("onInputValueChange")?.({
645
+ inputValue: value,
646
+ reason
647
+ });
648
+ }
649
+ };
650
+ }),
651
+ highlightedItem: bindable(() => {
652
+ const highlightedValue = prop("highlightedValue");
653
+ return { defaultValue: prop("collection").find(highlightedValue) };
654
+ }),
655
+ selectedItemMap: bindable(() => {
656
+ return { defaultValue: createSelectedItemMap({
657
+ selectedItems: initialSelectedItems,
658
+ collection: prop("collection")
659
+ }) };
660
+ })
661
+ };
662
+ },
663
+ computed: {
664
+ isInputValueEmpty: ({ context }) => context.get("inputValue").length === 0,
665
+ isInteractive: ({ prop }) => !(prop("readOnly") || prop("disabled")),
666
+ autoComplete: ({ prop }) => prop("inputBehavior") === "autocomplete",
667
+ autoHighlight: ({ prop }) => prop("inputBehavior") === "autohighlight",
668
+ hasSelectedItems: ({ context }) => context.get("value").length > 0,
669
+ selectedItems: ({ context, prop }) => resolveSelectedItems({
670
+ values: context.get("value"),
671
+ collection: prop("collection"),
672
+ selectedItemMap: context.get("selectedItemMap")
673
+ }),
674
+ valueAsString: ({ computed, prop }) => prop("collection").stringifyItems(computed("selectedItems")),
675
+ isCustomValue: ({ context, computed }) => context.get("inputValue") !== computed("valueAsString")
676
+ },
677
+ watch({ context, prop, track, action, send }) {
678
+ track([() => context.hash("value")], () => {
679
+ action(["syncSelectedItems"]);
680
+ });
681
+ track([() => context.get("inputValue")], () => {
682
+ action(["syncInputValue"]);
683
+ });
684
+ track([() => context.get("highlightedValue")], () => {
685
+ action([
686
+ "syncHighlightedItem",
687
+ "autofillInputValue",
688
+ "announceHighlightedItem"
689
+ ]);
690
+ });
691
+ track([() => prop("open")], () => {
692
+ action(["toggleVisibility"]);
693
+ });
694
+ track([() => prop("collection").toString()], () => {
695
+ send({ type: "CHILDREN_CHANGE" });
696
+ });
697
+ },
698
+ on: {
699
+ "SELECTED_ITEMS.SYNC": { actions: ["syncSelectedItems"] },
700
+ "HIGHLIGHTED_VALUE.SET": { actions: ["setHighlightedValue"] },
701
+ "HIGHLIGHTED_VALUE.CLEAR": { actions: ["clearHighlightedValue"] },
702
+ "ITEM.SELECT": { actions: ["selectItem"] },
703
+ "ITEM.CLEAR": { actions: ["clearItem"] },
704
+ "VALUE.SET": { actions: ["setValue"] },
705
+ "INPUT_VALUE.SET": { actions: ["setInputValue"] },
706
+ "POSITIONING.SET": { actions: ["reposition"] }
707
+ },
708
+ entry: choose([{
709
+ guard: "autoFocus",
710
+ actions: ["setInitialFocus"]
711
+ }]),
712
+ states: {
713
+ closed: {
714
+ tags: ["closed"],
715
+ initial: "idle",
716
+ states: {
717
+ idle: {
718
+ tags: ["idle"],
719
+ entry: ["scrollContentToTop", "clearHighlightedValue"],
720
+ on: {
721
+ "CONTROLLED.OPEN": { target: "open.interacting" },
722
+ "TRIGGER.CLICK": [{
723
+ guard: "isOpenControlled",
724
+ actions: [
725
+ "setInitialFocus",
726
+ "highlightFirstSelectedItem",
727
+ "invokeOnOpen"
728
+ ]
729
+ }, {
730
+ target: "open.interacting",
731
+ actions: [
732
+ "setInitialFocus",
733
+ "highlightFirstSelectedItem",
734
+ "invokeOnOpen"
735
+ ]
736
+ }],
737
+ "INPUT.CLICK": [{
738
+ guard: "isOpenControlled",
739
+ actions: ["highlightFirstSelectedItem", "invokeOnOpen"]
740
+ }, {
741
+ target: "open.interacting",
742
+ actions: ["highlightFirstSelectedItem", "invokeOnOpen"]
743
+ }],
744
+ "INPUT.FOCUS": { target: "focused" },
745
+ OPEN: [{
746
+ guard: "isOpenControlled",
747
+ actions: ["invokeOnOpen"]
748
+ }, {
749
+ target: "open.interacting",
750
+ actions: ["invokeOnOpen"]
751
+ }],
752
+ "VALUE.CLEAR": {
753
+ target: "focused",
754
+ actions: [
755
+ "clearInputValue",
756
+ "clearSelectedItems",
757
+ "setInitialFocus"
758
+ ]
759
+ }
760
+ }
761
+ },
762
+ focused: {
763
+ tags: ["focused"],
764
+ entry: ["scrollContentToTop", "clearHighlightedValue"],
765
+ on: {
766
+ "CONTROLLED.OPEN": [{
767
+ guard: "isChangeEvent",
768
+ target: "open.suggesting"
769
+ }, { target: "open.interacting" }],
770
+ "INPUT.CHANGE": [
771
+ {
772
+ guard: and("isOpenControlled", "openOnChange"),
773
+ actions: [
774
+ "setInputValue",
775
+ "invokeOnOpen",
776
+ "highlightFirstItemIfNeeded"
777
+ ]
778
+ },
779
+ {
780
+ guard: "openOnChange",
781
+ target: "open.suggesting",
782
+ actions: [
783
+ "setInputValue",
784
+ "invokeOnOpen",
785
+ "highlightFirstItemIfNeeded"
786
+ ]
787
+ },
788
+ { actions: ["setInputValue"] }
789
+ ],
790
+ "LAYER.INTERACT_OUTSIDE": { target: "idle" },
791
+ "INPUT.ESCAPE": {
792
+ guard: and("isCustomValue", not("allowCustomValue")),
793
+ actions: ["revertInputValue"]
794
+ },
795
+ "INPUT.BLUR": { target: "idle" },
796
+ "INPUT.CLICK": [{
797
+ guard: "isOpenControlled",
798
+ actions: ["highlightFirstSelectedItem", "invokeOnOpen"]
799
+ }, {
800
+ target: "open.interacting",
801
+ actions: ["highlightFirstSelectedItem", "invokeOnOpen"]
802
+ }],
803
+ "TRIGGER.CLICK": [{
804
+ guard: "isOpenControlled",
805
+ actions: [
806
+ "setInitialFocus",
807
+ "highlightFirstSelectedItem",
808
+ "invokeOnOpen"
809
+ ]
810
+ }, {
811
+ target: "open.interacting",
812
+ actions: [
813
+ "setInitialFocus",
814
+ "highlightFirstSelectedItem",
815
+ "invokeOnOpen"
816
+ ]
817
+ }],
818
+ "INPUT.ARROW_DOWN": [
819
+ {
820
+ guard: and("isOpenControlled", "autoComplete"),
821
+ actions: ["invokeOnOpen"]
822
+ },
823
+ {
824
+ guard: "autoComplete",
825
+ target: "open.interacting",
826
+ actions: ["invokeOnOpen"]
827
+ },
828
+ {
829
+ guard: "isOpenControlled",
830
+ actions: ["highlightFirstOrSelectedItem", "invokeOnOpen"]
831
+ },
832
+ {
833
+ target: "open.interacting",
834
+ actions: ["highlightFirstOrSelectedItem", "invokeOnOpen"]
835
+ }
836
+ ],
837
+ "INPUT.ARROW_UP": [
838
+ {
839
+ guard: and("isOpenControlled", "autoComplete"),
840
+ actions: ["invokeOnOpen"]
841
+ },
842
+ {
843
+ guard: "autoComplete",
844
+ target: "open.interacting",
845
+ actions: ["invokeOnOpen"]
846
+ },
847
+ {
848
+ guard: "isOpenControlled",
849
+ actions: ["highlightLastOrSelectedItem", "invokeOnOpen"]
850
+ },
851
+ {
852
+ target: "open.interacting",
853
+ actions: ["highlightLastOrSelectedItem", "invokeOnOpen"]
854
+ }
855
+ ],
856
+ OPEN: [{
857
+ guard: "isOpenControlled",
858
+ actions: ["invokeOnOpen"]
859
+ }, {
860
+ target: "open.interacting",
861
+ actions: ["invokeOnOpen"]
862
+ }],
863
+ "VALUE.CLEAR": { actions: ["clearInputValue", "clearSelectedItems"] }
864
+ }
865
+ }
866
+ }
867
+ },
868
+ open: {
869
+ tags: ["open", "focused"],
870
+ entry: ["setInitialFocus"],
871
+ effects: [
872
+ "trackFocusVisible",
873
+ "scrollToHighlightedItem",
874
+ "trackDismissableLayer",
875
+ "trackPlacement",
876
+ "trackLiveRegion"
877
+ ],
878
+ on: {
879
+ "CONTROLLED.CLOSE": [{
880
+ guard: "restoreFocus",
881
+ target: "closed.focused",
882
+ actions: ["setFinalFocus"]
883
+ }, { target: "closed.idle" }],
884
+ "INPUT.ENTER": [
885
+ {
886
+ guard: and("isOpenControlled", "isCustomValue", not("hasHighlightedItem"), not("allowCustomValue")),
887
+ actions: ["revertInputValue", "invokeOnClose"]
888
+ },
889
+ {
890
+ guard: and("isCustomValue", not("hasHighlightedItem"), not("allowCustomValue")),
891
+ target: "closed.focused",
892
+ actions: ["revertInputValue", "invokeOnClose"]
893
+ },
894
+ {
895
+ guard: and("isOpenControlled", "closeOnSelect"),
896
+ actions: ["selectHighlightedItem", "invokeOnClose"]
897
+ },
898
+ {
899
+ guard: "closeOnSelect",
900
+ target: "closed.focused",
901
+ actions: [
902
+ "selectHighlightedItem",
903
+ "invokeOnClose",
904
+ "setFinalFocus"
905
+ ]
906
+ },
907
+ { actions: ["selectHighlightedItem"] }
908
+ ],
909
+ "ITEM.CLICK": [
910
+ {
911
+ guard: and("isOpenControlled", "closeOnSelect"),
912
+ actions: ["selectItem", "invokeOnClose"]
913
+ },
914
+ {
915
+ guard: "closeOnSelect",
916
+ target: "closed.focused",
917
+ actions: [
918
+ "selectItem",
919
+ "invokeOnClose",
920
+ "setFinalFocus"
921
+ ]
922
+ },
923
+ { actions: ["selectItem"] }
924
+ ],
925
+ "TRIGGER.CLICK": [{
926
+ guard: "isOpenControlled",
927
+ actions: ["invokeOnClose"]
928
+ }, {
929
+ target: "closed.focused",
930
+ actions: ["invokeOnClose"]
931
+ }],
932
+ "LAYER.INTERACT_OUTSIDE": [
933
+ {
934
+ guard: and("isOpenControlled", "isCustomValue", not("allowCustomValue")),
935
+ actions: ["revertInputValue", "invokeOnClose"]
936
+ },
937
+ {
938
+ guard: and("isCustomValue", not("allowCustomValue")),
939
+ target: "closed.idle",
940
+ actions: ["revertInputValue", "invokeOnClose"]
941
+ },
942
+ {
943
+ guard: "isOpenControlled",
944
+ actions: ["invokeOnClose"]
945
+ },
946
+ {
947
+ target: "closed.idle",
948
+ actions: ["invokeOnClose"]
949
+ }
950
+ ],
951
+ CLOSE: [{
952
+ guard: "isOpenControlled",
953
+ actions: ["invokeOnClose"]
954
+ }, {
955
+ target: "closed.focused",
956
+ actions: ["invokeOnClose", "setFinalFocus"]
957
+ }],
958
+ "VALUE.CLEAR": [{
959
+ guard: "isOpenControlled",
960
+ actions: [
961
+ "clearInputValue",
962
+ "clearSelectedItems",
963
+ "invokeOnClose"
964
+ ]
965
+ }, {
966
+ target: "closed.focused",
967
+ actions: [
968
+ "clearInputValue",
969
+ "clearSelectedItems",
970
+ "invokeOnClose",
971
+ "setFinalFocus"
972
+ ]
973
+ }]
974
+ },
975
+ initial: "interacting",
976
+ states: {
977
+ interacting: { on: {
978
+ CHILDREN_CHANGE: [{
979
+ guard: "isHighlightedItemRemoved",
980
+ actions: ["clearHighlightedValue"]
981
+ }, { actions: ["scrollToHighlightedItem"] }],
982
+ "INPUT.HOME": { actions: ["highlightFirstItem"] },
983
+ "INPUT.END": { actions: ["highlightLastItem"] },
984
+ "INPUT.ARROW_DOWN": [{
985
+ guard: and("autoComplete", "isLastItemHighlighted"),
986
+ actions: ["clearHighlightedValue", "scrollContentToTop"]
987
+ }, { actions: ["highlightNextItem"] }],
988
+ "INPUT.ARROW_UP": [{
989
+ guard: and("autoComplete", "isFirstItemHighlighted"),
990
+ actions: ["clearHighlightedValue"]
991
+ }, { actions: ["highlightPrevItem"] }],
992
+ "INPUT.CHANGE": [{
993
+ guard: "autoComplete",
994
+ target: "suggesting",
995
+ actions: ["setInputValue"]
996
+ }, {
997
+ target: "suggesting",
998
+ actions: ["clearHighlightedValue", "setInputValue"]
999
+ }],
1000
+ "ITEM.POINTER_MOVE": { actions: ["setHighlightedValue"] },
1001
+ "ITEM.POINTER_LEAVE": { actions: ["clearHighlightedValue"] },
1002
+ "LAYER.ESCAPE": [
1003
+ {
1004
+ guard: and("isOpenControlled", "autoComplete"),
1005
+ actions: ["syncInputValue", "invokeOnClose"]
1006
+ },
1007
+ {
1008
+ guard: "autoComplete",
1009
+ target: "closed.focused",
1010
+ actions: ["syncInputValue", "invokeOnClose"]
1011
+ },
1012
+ {
1013
+ guard: "isOpenControlled",
1014
+ actions: ["invokeOnClose"]
1015
+ },
1016
+ {
1017
+ target: "closed.focused",
1018
+ actions: ["invokeOnClose", "setFinalFocus"]
1019
+ }
1020
+ ]
1021
+ } },
1022
+ suggesting: { on: {
1023
+ CHILDREN_CHANGE: [
1024
+ {
1025
+ guard: and("isHighlightedItemRemoved", "hasCollectionItems", "autoHighlight"),
1026
+ actions: ["clearHighlightedValue", "highlightFirstItem"]
1027
+ },
1028
+ {
1029
+ guard: "isHighlightedItemRemoved",
1030
+ actions: ["clearHighlightedValue"]
1031
+ },
1032
+ {
1033
+ guard: "autoHighlight",
1034
+ actions: ["highlightFirstItem"]
1035
+ }
1036
+ ],
1037
+ "INPUT.ARROW_DOWN": {
1038
+ target: "interacting",
1039
+ actions: ["highlightNextItem"]
1040
+ },
1041
+ "INPUT.ARROW_UP": {
1042
+ target: "interacting",
1043
+ actions: ["highlightPrevItem"]
1044
+ },
1045
+ "INPUT.HOME": {
1046
+ target: "interacting",
1047
+ actions: ["highlightFirstItem"]
1048
+ },
1049
+ "INPUT.END": {
1050
+ target: "interacting",
1051
+ actions: ["highlightLastItem"]
1052
+ },
1053
+ "INPUT.CHANGE": { actions: ["setInputValue"] },
1054
+ "LAYER.ESCAPE": [{
1055
+ guard: "isOpenControlled",
1056
+ actions: ["invokeOnClose"]
1057
+ }, {
1058
+ target: "closed.focused",
1059
+ actions: ["invokeOnClose"]
1060
+ }],
1061
+ "ITEM.POINTER_MOVE": {
1062
+ target: "interacting",
1063
+ actions: ["setHighlightedValue"]
1064
+ },
1065
+ "ITEM.POINTER_LEAVE": { actions: ["clearHighlightedValue"] }
1066
+ } }
1067
+ }
1068
+ }
1069
+ },
1070
+ implementations: {
1071
+ guards: {
1072
+ isInputValueEmpty: ({ computed }) => computed("isInputValueEmpty"),
1073
+ autoComplete: ({ computed, prop }) => computed("autoComplete") && !prop("multiple"),
1074
+ autoHighlight: ({ computed }) => computed("autoHighlight"),
1075
+ isFirstItemHighlighted: ({ prop, context }) => prop("collection").firstValue === context.get("highlightedValue"),
1076
+ isLastItemHighlighted: ({ prop, context }) => prop("collection").lastValue === context.get("highlightedValue"),
1077
+ isCustomValue: ({ computed }) => computed("isCustomValue"),
1078
+ allowCustomValue: ({ prop }) => !!prop("allowCustomValue"),
1079
+ hasHighlightedItem: ({ context }) => context.get("highlightedValue") != null,
1080
+ closeOnSelect: ({ prop }) => !!prop("closeOnSelect"),
1081
+ isOpenControlled: ({ prop }) => prop("open") != null,
1082
+ openOnChange: ({ prop, context }) => {
1083
+ const openOnChange = prop("openOnChange");
1084
+ if (isBoolean(openOnChange)) return openOnChange;
1085
+ return !!openOnChange?.({ inputValue: context.get("inputValue") });
1086
+ },
1087
+ restoreFocus: ({ event }) => {
1088
+ const restoreFocus = event.restoreFocus ?? event.previousEvent?.restoreFocus;
1089
+ return restoreFocus == null ? true : !!restoreFocus;
1090
+ },
1091
+ isChangeEvent: ({ event }) => event.previousEvent?.type === "INPUT.CHANGE",
1092
+ autoFocus: ({ prop }) => !!prop("autoFocus"),
1093
+ isHighlightedItemRemoved: ({ prop, context }) => !prop("collection").has(context.get("highlightedValue")),
1094
+ hasCollectionItems: ({ prop }) => prop("collection").size > 0
1095
+ },
1096
+ effects: {
1097
+ trackFocusVisible({ scope }) {
1098
+ return trackFocusVisible({ root: scope.getRootNode?.() });
1099
+ },
1100
+ trackDismissableLayer({ send, prop, scope }) {
1101
+ if (prop("disableLayer")) return;
1102
+ const contentEl = () => getContentEl(scope);
1103
+ return trackDismissableElement(contentEl, {
1104
+ type: "listbox",
1105
+ defer: true,
1106
+ exclude: () => [
1107
+ getInputEl(scope),
1108
+ getTriggerEl(scope),
1109
+ getClearTriggerEl(scope)
1110
+ ],
1111
+ onFocusOutside: prop("onFocusOutside"),
1112
+ onPointerDownOutside: prop("onPointerDownOutside"),
1113
+ onInteractOutside: prop("onInteractOutside"),
1114
+ onEscapeKeyDown(event) {
1115
+ event.preventDefault();
1116
+ event.stopPropagation();
1117
+ send({
1118
+ type: "LAYER.ESCAPE",
1119
+ src: "escape-key"
1120
+ });
1121
+ },
1122
+ onDismiss() {
1123
+ send({
1124
+ type: "LAYER.INTERACT_OUTSIDE",
1125
+ src: "interact-outside",
1126
+ restoreFocus: false
1127
+ });
1128
+ }
1129
+ });
1130
+ },
1131
+ trackLiveRegion({ refs, scope }) {
1132
+ const liveRegion = createLiveRegion({
1133
+ level: "assertive",
1134
+ document: scope.getDoc()
1135
+ });
1136
+ refs.set("liveRegion", liveRegion);
1137
+ return () => liveRegion.destroy();
1138
+ },
1139
+ trackPlacement({ context, prop, scope }) {
1140
+ const anchorEl = () => getControlEl(scope) || getTriggerEl(scope);
1141
+ const positionerEl = () => getPositionerEl(scope);
1142
+ context.set("currentPlacement", prop("positioning").placement);
1143
+ return getPlacement(anchorEl, positionerEl, {
1144
+ ...prop("positioning"),
1145
+ defer: true,
1146
+ onComplete(data) {
1147
+ context.set("currentPlacement", data.placement);
1148
+ }
1149
+ });
1150
+ },
1151
+ scrollToHighlightedItem({ context, prop, scope }) {
1152
+ const inputEl = getInputEl(scope);
1153
+ let cleanups = [];
1154
+ const exec = (immediate) => {
1155
+ if (getInteractionModality() === "pointer") return;
1156
+ const highlightedValue = context.get("highlightedValue");
1157
+ if (!highlightedValue) return;
1158
+ const contentEl = getContentEl(scope);
1159
+ const scrollToIndexFn = prop("scrollToIndexFn");
1160
+ if (scrollToIndexFn) {
1161
+ scrollToIndexFn({
1162
+ index: prop("collection").indexOf(highlightedValue),
1163
+ immediate,
1164
+ getElement: () => getItemEl(scope, highlightedValue)
1165
+ });
1166
+ return;
1167
+ }
1168
+ const itemEl = getItemEl(scope, highlightedValue);
1169
+ const raf_cleanup = raf(() => {
1170
+ scrollIntoView(itemEl, {
1171
+ rootEl: contentEl,
1172
+ block: "nearest"
1173
+ });
1174
+ });
1175
+ cleanups.push(raf_cleanup);
1176
+ };
1177
+ const rafCleanup = raf(() => {
1178
+ setInteractionModality("virtual");
1179
+ exec(true);
1180
+ });
1181
+ cleanups.push(rafCleanup);
1182
+ const observerCleanup = observeAttributes(inputEl, {
1183
+ attributes: ["aria-activedescendant"],
1184
+ callback: () => exec(false)
1185
+ });
1186
+ cleanups.push(observerCleanup);
1187
+ return () => {
1188
+ cleanups.forEach((cleanup) => cleanup());
1189
+ };
1190
+ }
1191
+ },
1192
+ actions: {
1193
+ reposition({ context, prop, scope, event }) {
1194
+ const controlEl = () => getControlEl(scope);
1195
+ const positionerEl = () => getPositionerEl(scope);
1196
+ getPlacement(controlEl, positionerEl, {
1197
+ ...prop("positioning"),
1198
+ ...event.options,
1199
+ defer: true,
1200
+ listeners: false,
1201
+ onComplete(data) {
1202
+ context.set("currentPlacement", data.placement);
1203
+ }
1204
+ });
1205
+ },
1206
+ setHighlightedValue({ context, event }) {
1207
+ if (event.value == null) return;
1208
+ context.set("highlightedValue", event.value);
1209
+ },
1210
+ clearHighlightedValue({ context }) {
1211
+ context.set("highlightedValue", null);
1212
+ },
1213
+ selectHighlightedItem(params) {
1214
+ const { context, prop } = params;
1215
+ const collection = prop("collection");
1216
+ const highlightedValue = context.get("highlightedValue");
1217
+ if (!highlightedValue || !collection.has(highlightedValue)) return;
1218
+ const nextValue = prop("multiple") ? addOrRemove(context.get("value"), highlightedValue) : [highlightedValue];
1219
+ prop("onSelect")?.({
1220
+ value: nextValue,
1221
+ itemValue: highlightedValue
1222
+ });
1223
+ context.set("value", nextValue);
1224
+ const inputValue = match(prop("selectionBehavior"), {
1225
+ preserve: context.get("inputValue"),
1226
+ replace: collection.stringifyMany(nextValue),
1227
+ clear: ""
1228
+ });
1229
+ context.set("inputValue", inputValue);
1230
+ },
1231
+ scrollToHighlightedItem({ context, prop, scope }) {
1232
+ nextTick(() => {
1233
+ const highlightedValue = context.get("highlightedValue");
1234
+ if (highlightedValue == null) return;
1235
+ const itemEl = getItemEl(scope, highlightedValue);
1236
+ const contentEl = getContentEl(scope);
1237
+ const scrollToIndexFn = prop("scrollToIndexFn");
1238
+ if (scrollToIndexFn) {
1239
+ scrollToIndexFn({
1240
+ index: prop("collection").indexOf(highlightedValue),
1241
+ immediate: true,
1242
+ getElement: () => getItemEl(scope, highlightedValue)
1243
+ });
1244
+ return;
1245
+ }
1246
+ scrollIntoView(itemEl, {
1247
+ rootEl: contentEl,
1248
+ block: "nearest"
1249
+ });
1250
+ });
1251
+ },
1252
+ selectItem(params) {
1253
+ const { context, event, flush, prop } = params;
1254
+ if (event.value == null) return;
1255
+ flush(() => {
1256
+ const nextValue = prop("multiple") ? addOrRemove(context.get("value"), event.value) : [event.value];
1257
+ prop("onSelect")?.({
1258
+ value: nextValue,
1259
+ itemValue: event.value
1260
+ });
1261
+ context.set("value", nextValue);
1262
+ const inputValue = match(prop("selectionBehavior"), {
1263
+ preserve: context.get("inputValue"),
1264
+ replace: prop("collection").stringifyMany(nextValue),
1265
+ clear: ""
1266
+ });
1267
+ context.set("inputValue", inputValue);
1268
+ });
1269
+ },
1270
+ clearItem(params) {
1271
+ const { context, event, flush, prop } = params;
1272
+ if (event.value == null) return;
1273
+ flush(() => {
1274
+ const nextValue = remove(context.get("value"), event.value);
1275
+ context.set("value", nextValue);
1276
+ const inputValue = match(prop("selectionBehavior"), {
1277
+ preserve: context.get("inputValue"),
1278
+ replace: prop("collection").stringifyMany(nextValue),
1279
+ clear: ""
1280
+ });
1281
+ context.set("inputValue", inputValue);
1282
+ });
1283
+ },
1284
+ setInitialFocus({ scope }) {
1285
+ raf(() => {
1286
+ focusInputEl(scope);
1287
+ });
1288
+ },
1289
+ setFinalFocus({ scope }) {
1290
+ raf(() => {
1291
+ if (getTriggerEl(scope)?.dataset.focusable == null) focusInputEl(scope);
1292
+ else focusTriggerEl(scope);
1293
+ });
1294
+ },
1295
+ syncInputValue({ context, scope, event }) {
1296
+ const inputEl = getInputEl(scope);
1297
+ if (!inputEl) return;
1298
+ inputEl.value = context.get("inputValue");
1299
+ queueMicrotask(() => {
1300
+ if (event.current().type === "INPUT.CHANGE") return;
1301
+ setCaretToEnd(inputEl);
1302
+ });
1303
+ },
1304
+ setInputValue({ context, event }) {
1305
+ context.set("inputValue", event.value);
1306
+ },
1307
+ clearInputValue({ context }) {
1308
+ context.set("inputValue", "");
1309
+ },
1310
+ revertInputValue({ context, prop, computed }) {
1311
+ const inputValue = match(prop("selectionBehavior"), {
1312
+ replace: computed("hasSelectedItems") ? computed("valueAsString") : "",
1313
+ preserve: context.get("inputValue"),
1314
+ clear: ""
1315
+ });
1316
+ context.set("inputValue", inputValue);
1317
+ },
1318
+ setValue(params) {
1319
+ const { context, flush, event, prop } = params;
1320
+ flush(() => {
1321
+ context.set("value", event.value);
1322
+ const inputValue = match(prop("selectionBehavior"), {
1323
+ preserve: context.get("inputValue"),
1324
+ replace: prop("collection").stringifyMany(event.value),
1325
+ clear: ""
1326
+ });
1327
+ context.set("inputValue", inputValue);
1328
+ });
1329
+ },
1330
+ clearSelectedItems(params) {
1331
+ const { context, flush, prop } = params;
1332
+ flush(() => {
1333
+ context.set("value", []);
1334
+ const inputValue = match(prop("selectionBehavior"), {
1335
+ preserve: context.get("inputValue"),
1336
+ replace: prop("collection").stringifyMany([]),
1337
+ clear: ""
1338
+ });
1339
+ context.set("inputValue", inputValue);
1340
+ });
1341
+ },
1342
+ scrollContentToTop({ prop, scope }) {
1343
+ const scrollToIndexFn = prop("scrollToIndexFn");
1344
+ if (scrollToIndexFn) {
1345
+ const firstValue = prop("collection").firstValue;
1346
+ scrollToIndexFn({
1347
+ index: 0,
1348
+ immediate: true,
1349
+ getElement: () => getItemEl(scope, firstValue)
1350
+ });
1351
+ } else {
1352
+ const contentEl = getContentEl(scope);
1353
+ if (!contentEl) return;
1354
+ contentEl.scrollTop = 0;
1355
+ }
1356
+ },
1357
+ invokeOnOpen({ prop, event, context }) {
1358
+ const reason = getOpenChangeReason(event);
1359
+ prop("onOpenChange")?.({
1360
+ open: true,
1361
+ reason,
1362
+ value: context.get("value")
1363
+ });
1364
+ },
1365
+ invokeOnClose({ prop, event, context }) {
1366
+ const reason = getOpenChangeReason(event);
1367
+ prop("onOpenChange")?.({
1368
+ open: false,
1369
+ reason,
1370
+ value: context.get("value")
1371
+ });
1372
+ },
1373
+ highlightFirstItem({ context, prop, scope }) {
1374
+ (getContentEl(scope) ? queueMicrotask : raf)(() => {
1375
+ const value = prop("collection").firstValue;
1376
+ if (value) context.set("highlightedValue", value);
1377
+ });
1378
+ },
1379
+ highlightFirstItemIfNeeded({ computed, action }) {
1380
+ if (!computed("autoHighlight")) return;
1381
+ action(["highlightFirstItem"]);
1382
+ },
1383
+ highlightLastItem({ context, prop, scope }) {
1384
+ (getContentEl(scope) ? queueMicrotask : raf)(() => {
1385
+ const value = prop("collection").lastValue;
1386
+ if (value) context.set("highlightedValue", value);
1387
+ });
1388
+ },
1389
+ highlightNextItem({ context, prop }) {
1390
+ let value = null;
1391
+ const highlightedValue = context.get("highlightedValue");
1392
+ const collection = prop("collection");
1393
+ if (highlightedValue) {
1394
+ value = collection.getNextValue(highlightedValue);
1395
+ if (!value && prop("loopFocus")) value = collection.firstValue;
1396
+ } else value = collection.firstValue;
1397
+ if (value) context.set("highlightedValue", value);
1398
+ },
1399
+ highlightPrevItem({ context, prop }) {
1400
+ let value = null;
1401
+ const highlightedValue = context.get("highlightedValue");
1402
+ const collection = prop("collection");
1403
+ if (highlightedValue) {
1404
+ value = collection.getPreviousValue(highlightedValue);
1405
+ if (!value && prop("loopFocus")) value = collection.lastValue;
1406
+ } else value = collection.lastValue;
1407
+ if (value) context.set("highlightedValue", value);
1408
+ },
1409
+ highlightFirstSelectedItem({ context, prop }) {
1410
+ raf(() => {
1411
+ const [value] = prop("collection").sort(context.get("value"));
1412
+ if (value) context.set("highlightedValue", value);
1413
+ });
1414
+ },
1415
+ highlightFirstOrSelectedItem({ context, prop, computed }) {
1416
+ raf(() => {
1417
+ let value = null;
1418
+ if (computed("hasSelectedItems")) value = prop("collection").sort(context.get("value"))[0];
1419
+ else value = prop("collection").firstValue;
1420
+ if (value) context.set("highlightedValue", value);
1421
+ });
1422
+ },
1423
+ highlightLastOrSelectedItem({ context, prop, computed }) {
1424
+ raf(() => {
1425
+ const collection = prop("collection");
1426
+ let value = null;
1427
+ if (computed("hasSelectedItems")) value = collection.sort(context.get("value"))[0];
1428
+ else value = collection.lastValue;
1429
+ if (value) context.set("highlightedValue", value);
1430
+ });
1431
+ },
1432
+ autofillInputValue({ context, computed, prop, event, scope }) {
1433
+ const inputEl = getInputEl(scope);
1434
+ const collection = prop("collection");
1435
+ if (!computed("autoComplete") || !inputEl || !event.keypress) return;
1436
+ const valueText = collection.stringify(context.get("highlightedValue"));
1437
+ raf(() => {
1438
+ inputEl.value = valueText || context.get("inputValue");
1439
+ });
1440
+ },
1441
+ syncSelectedItems(params) {
1442
+ queueMicrotask(() => {
1443
+ const { context, prop } = params;
1444
+ const collection = prop("collection");
1445
+ const value = context.get("value");
1446
+ const next = deriveSelectionState({
1447
+ values: value,
1448
+ collection,
1449
+ selectedItemMap: context.get("selectedItemMap")
1450
+ });
1451
+ context.set("selectedItemMap", next.nextSelectedItemMap);
1452
+ const inputValue = match(prop("selectionBehavior"), {
1453
+ preserve: context.get("inputValue"),
1454
+ replace: collection.stringifyMany(value),
1455
+ clear: ""
1456
+ });
1457
+ context.set("inputValue", inputValue);
1458
+ });
1459
+ },
1460
+ syncHighlightedItem({ context, prop }) {
1461
+ const item = prop("collection").find(context.get("highlightedValue"));
1462
+ context.set("highlightedItem", item);
1463
+ },
1464
+ announceHighlightedItem({ context, prop, refs }) {
1465
+ if (!isApple()) return;
1466
+ const value = context.get("highlightedValue");
1467
+ const optionText = value ? prop("collection").stringifyItem(prop("collection").find(value)) : null;
1468
+ if (!optionText) return;
1469
+ const isSelected = value ? context.get("value").includes(value) : false;
1470
+ refs.get("liveRegion")?.announce(isSelected ? `${optionText}, selected` : optionText);
1471
+ },
1472
+ toggleVisibility({ event, send, prop }) {
1473
+ send({
1474
+ type: prop("open") ? "CONTROLLED.OPEN" : "CONTROLLED.CLOSE",
1475
+ previousEvent: event
1476
+ });
1477
+ }
1478
+ }
1479
+ }
1480
+ });
1481
+ function getOpenChangeReason(event) {
1482
+ return (event.previousEvent || event).src;
1483
+ }
1484
+ //#endregion
1485
+ //#region src/machines/combobox/props.ts
1486
+ const props = createProps()([
1487
+ "allowCustomValue",
1488
+ "autoFocus",
1489
+ "closeOnSelect",
1490
+ "collection",
1491
+ "composite",
1492
+ "defaultHighlightedValue",
1493
+ "defaultInputValue",
1494
+ "defaultOpen",
1495
+ "defaultValue",
1496
+ "dir",
1497
+ "disabled",
1498
+ "disableLayer",
1499
+ "form",
1500
+ "getRootNode",
1501
+ "highlightedValue",
1502
+ "id",
1503
+ "ids",
1504
+ "inputBehavior",
1505
+ "inputValue",
1506
+ "invalid",
1507
+ "loopFocus",
1508
+ "multiple",
1509
+ "name",
1510
+ "navigate",
1511
+ "onFocusOutside",
1512
+ "onHighlightChange",
1513
+ "onInputValueChange",
1514
+ "onInteractOutside",
1515
+ "onOpenChange",
1516
+ "onOpenChange",
1517
+ "onPointerDownOutside",
1518
+ "onSelect",
1519
+ "onValueChange",
1520
+ "open",
1521
+ "openOnChange",
1522
+ "openOnClick",
1523
+ "openOnKeyPress",
1524
+ "placeholder",
1525
+ "positioning",
1526
+ "readOnly",
1527
+ "required",
1528
+ "scrollToIndexFn",
1529
+ "selectionBehavior",
1530
+ "translations",
1531
+ "value",
1532
+ "alwaysSubmitOnEnter"
1533
+ ]);
1534
+ const splitProps = createSplitProps(props);
1535
+ const itemGroupLabelProps = createProps()(["htmlFor"]);
1536
+ const splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);
1537
+ const itemGroupProps = createProps()(["id"]);
1538
+ const splitItemGroupProps = createSplitProps(itemGroupProps);
1539
+ const itemProps = createProps()(["item", "persistFocus"]);
1540
+ const splitItemProps = createSplitProps(itemProps);
1541
+ //#endregion
1542
+ export { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };