@proyecto-viviana/solidaria 0.4.2 → 0.6.0-rc.0

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 (1377) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/dist/_chunk/DragManager.js +71 -25
  4. package/dist/_chunk/DragManager.js.map +1 -1
  5. package/dist/_chunk/DragManager.jsx +71 -25
  6. package/dist/_chunk/DragManager.jsx.map +1 -1
  7. package/dist/_chunk/FocusScope.js +281 -66
  8. package/dist/_chunk/FocusScope.js.map +1 -1
  9. package/dist/_chunk/FocusScope.jsx +274 -55
  10. package/dist/_chunk/FocusScope.jsx.map +1 -1
  11. package/dist/_chunk/actiongroup.js +43 -19
  12. package/dist/_chunk/actiongroup.js.map +1 -1
  13. package/dist/_chunk/actiongroup.jsx +43 -19
  14. package/dist/_chunk/actiongroup.jsx.map +1 -1
  15. package/dist/_chunk/announce.js +19 -6
  16. package/dist/_chunk/announce.js.map +1 -1
  17. package/dist/_chunk/announce.jsx +19 -6
  18. package/dist/_chunk/announce.jsx.map +1 -1
  19. package/dist/_chunk/ariaHideOutside.js +212 -10
  20. package/dist/_chunk/ariaHideOutside.js.map +1 -1
  21. package/dist/_chunk/ariaHideOutside.jsx +212 -10
  22. package/dist/_chunk/ariaHideOutside.jsx.map +1 -1
  23. package/dist/_chunk/autocomplete.js +26 -7
  24. package/dist/_chunk/autocomplete.js.map +1 -1
  25. package/dist/_chunk/autocomplete.jsx +26 -7
  26. package/dist/_chunk/autocomplete.jsx.map +1 -1
  27. package/dist/_chunk/breadcrumbs.js +17 -2
  28. package/dist/_chunk/breadcrumbs.js.map +1 -1
  29. package/dist/_chunk/breadcrumbs.jsx +17 -2
  30. package/dist/_chunk/breadcrumbs.jsx.map +1 -1
  31. package/dist/_chunk/button.js +53 -20
  32. package/dist/_chunk/button.js.map +1 -1
  33. package/dist/_chunk/button.jsx +53 -20
  34. package/dist/_chunk/button.jsx.map +1 -1
  35. package/dist/_chunk/calendar.js +341 -56
  36. package/dist/_chunk/calendar.js.map +1 -1
  37. package/dist/_chunk/calendar.jsx +341 -56
  38. package/dist/_chunk/calendar.jsx.map +1 -1
  39. package/dist/_chunk/checkbox.js +69 -26
  40. package/dist/_chunk/checkbox.js.map +1 -1
  41. package/dist/_chunk/checkbox.jsx +69 -26
  42. package/dist/_chunk/checkbox.jsx.map +1 -1
  43. package/dist/_chunk/color.js +307 -48
  44. package/dist/_chunk/color.js.map +1 -1
  45. package/dist/_chunk/color.jsx +307 -48
  46. package/dist/_chunk/color.jsx.map +1 -1
  47. package/dist/_chunk/combobox.js +193 -103
  48. package/dist/_chunk/combobox.js.map +1 -1
  49. package/dist/_chunk/combobox.jsx +193 -103
  50. package/dist/_chunk/combobox.jsx.map +1 -1
  51. package/dist/_chunk/constants.js +12 -0
  52. package/dist/_chunk/constants.js.map +1 -1
  53. package/dist/_chunk/constants.jsx +12 -0
  54. package/dist/_chunk/constants.jsx.map +1 -1
  55. package/dist/_chunk/createCollator.js +12 -0
  56. package/dist/_chunk/createCollator.js.map +1 -1
  57. package/dist/_chunk/createCollator.jsx +12 -0
  58. package/dist/_chunk/createCollator.jsx.map +1 -1
  59. package/dist/_chunk/createCollectionRowInteraction.js +50 -13
  60. package/dist/_chunk/createCollectionRowInteraction.js.map +1 -1
  61. package/dist/_chunk/createCollectionRowInteraction.jsx +50 -13
  62. package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -1
  63. package/dist/_chunk/createField.js +35 -25
  64. package/dist/_chunk/createField.js.map +1 -1
  65. package/dist/_chunk/createField.jsx +35 -25
  66. package/dist/_chunk/createField.jsx.map +1 -1
  67. package/dist/_chunk/createFocus.js +18 -5
  68. package/dist/_chunk/createFocus.js.map +1 -1
  69. package/dist/_chunk/createFocus.jsx +18 -5
  70. package/dist/_chunk/createFocus.jsx.map +1 -1
  71. package/dist/_chunk/createFocusRing.js +16 -7
  72. package/dist/_chunk/createFocusRing.js.map +1 -1
  73. package/dist/_chunk/createFocusRing.jsx +16 -7
  74. package/dist/_chunk/createFocusRing.jsx.map +1 -1
  75. package/dist/_chunk/createFocusWithin.js +16 -4
  76. package/dist/_chunk/createFocusWithin.js.map +1 -1
  77. package/dist/_chunk/createFocusWithin.jsx +16 -4
  78. package/dist/_chunk/createFocusWithin.jsx.map +1 -1
  79. package/dist/_chunk/createFocusable.js +39 -53
  80. package/dist/_chunk/createFocusable.js.map +1 -1
  81. package/dist/_chunk/createFocusable.jsx +39 -53
  82. package/dist/_chunk/createFocusable.jsx.map +1 -1
  83. package/dist/_chunk/createFormReset.js +24 -12
  84. package/dist/_chunk/createFormReset.js.map +1 -1
  85. package/dist/_chunk/createFormReset.jsx +24 -12
  86. package/dist/_chunk/createFormReset.jsx.map +1 -1
  87. package/dist/_chunk/createFormValidation.js +41 -17
  88. package/dist/_chunk/createFormValidation.js.map +1 -1
  89. package/dist/_chunk/createFormValidation.jsx +41 -17
  90. package/dist/_chunk/createFormValidation.jsx.map +1 -1
  91. package/dist/_chunk/createHover.js +56 -42
  92. package/dist/_chunk/createHover.js.map +1 -1
  93. package/dist/_chunk/createHover.jsx +56 -42
  94. package/dist/_chunk/createHover.jsx.map +1 -1
  95. package/dist/_chunk/createKeyboard.js +205 -0
  96. package/dist/_chunk/createKeyboard.js.map +1 -0
  97. package/dist/_chunk/createKeyboard.jsx +205 -0
  98. package/dist/_chunk/createKeyboard.jsx.map +1 -0
  99. package/dist/_chunk/createLabel.js +17 -4
  100. package/dist/_chunk/createLabel.js.map +1 -1
  101. package/dist/_chunk/createLabel.jsx +17 -4
  102. package/dist/_chunk/createLabel.jsx.map +1 -1
  103. package/dist/_chunk/createLabels.js +14 -2
  104. package/dist/_chunk/createLabels.js.map +1 -1
  105. package/dist/_chunk/createLabels.jsx +14 -2
  106. package/dist/_chunk/createLabels.jsx.map +1 -1
  107. package/dist/_chunk/createLandmark.js +19 -3
  108. package/dist/_chunk/createLandmark.js.map +1 -1
  109. package/dist/_chunk/createLandmark.jsx +19 -3
  110. package/dist/_chunk/createLandmark.jsx.map +1 -1
  111. package/dist/_chunk/createLongPress.js +105 -0
  112. package/dist/_chunk/createLongPress.js.map +1 -0
  113. package/dist/_chunk/createLongPress.jsx +105 -0
  114. package/dist/_chunk/createLongPress.jsx.map +1 -0
  115. package/dist/_chunk/createOverlay.js +220 -111
  116. package/dist/_chunk/createOverlay.js.map +1 -1
  117. package/dist/_chunk/createOverlay.jsx +220 -111
  118. package/dist/_chunk/createOverlay.jsx.map +1 -1
  119. package/dist/_chunk/createOverlayTrigger.js +58 -0
  120. package/dist/_chunk/createOverlayTrigger.js.map +1 -0
  121. package/dist/_chunk/createOverlayTrigger.jsx +58 -0
  122. package/dist/_chunk/createOverlayTrigger.jsx.map +1 -0
  123. package/dist/_chunk/createPress.js +38 -28
  124. package/dist/_chunk/createPress.js.map +1 -1
  125. package/dist/_chunk/createPress.jsx +38 -28
  126. package/dist/_chunk/createPress.jsx.map +1 -1
  127. package/dist/_chunk/createProgressBar.js +17 -4
  128. package/dist/_chunk/createProgressBar.js.map +1 -1
  129. package/dist/_chunk/createProgressBar.jsx +17 -4
  130. package/dist/_chunk/createProgressBar.jsx.map +1 -1
  131. package/dist/_chunk/createSelectableItem.js +58 -20
  132. package/dist/_chunk/createSelectableItem.js.map +1 -1
  133. package/dist/_chunk/createSelectableItem.jsx +58 -20
  134. package/dist/_chunk/createSelectableItem.jsx.map +1 -1
  135. package/dist/_chunk/createSelectableList.js +776 -0
  136. package/dist/_chunk/createSelectableList.js.map +1 -0
  137. package/dist/_chunk/createSelectableList.jsx +776 -0
  138. package/dist/_chunk/createSelectableList.jsx.map +1 -0
  139. package/dist/_chunk/createStringFormatter.js +350 -5
  140. package/dist/_chunk/createStringFormatter.js.map +1 -1
  141. package/dist/_chunk/createStringFormatter.jsx +350 -5
  142. package/dist/_chunk/createStringFormatter.jsx.map +1 -1
  143. package/dist/_chunk/createToggle.js +68 -19
  144. package/dist/_chunk/createToggle.js.map +1 -1
  145. package/dist/_chunk/createToggle.jsx +68 -19
  146. package/dist/_chunk/createToggle.jsx.map +1 -1
  147. package/dist/_chunk/createTypeSelect.js +15 -3
  148. package/dist/_chunk/createTypeSelect.js.map +1 -1
  149. package/dist/_chunk/createTypeSelect.jsx +15 -3
  150. package/dist/_chunk/createTypeSelect.jsx.map +1 -1
  151. package/dist/_chunk/{visually-hidden.js → createVisuallyHidden.js} +16 -4
  152. package/dist/_chunk/createVisuallyHidden.js.map +1 -0
  153. package/dist/_chunk/{visually-hidden.jsx → createVisuallyHidden.jsx} +16 -4
  154. package/dist/_chunk/createVisuallyHidden.jsx.map +1 -0
  155. package/dist/_chunk/datepicker.js +687 -602
  156. package/dist/_chunk/datepicker.js.map +1 -1
  157. package/dist/_chunk/datepicker.jsx +687 -602
  158. package/dist/_chunk/datepicker.jsx.map +1 -1
  159. package/dist/_chunk/dialog.js +49 -19
  160. package/dist/_chunk/dialog.js.map +1 -1
  161. package/dist/_chunk/dialog.jsx +49 -19
  162. package/dist/_chunk/dialog.jsx.map +1 -1
  163. package/dist/_chunk/disclosure.js +48 -28
  164. package/dist/_chunk/disclosure.js.map +1 -1
  165. package/dist/_chunk/disclosure.jsx +48 -28
  166. package/dist/_chunk/disclosure.jsx.map +1 -1
  167. package/dist/_chunk/dnd.js +1340 -1172
  168. package/dist/_chunk/dnd.js.map +1 -1
  169. package/dist/_chunk/dnd.jsx +1340 -1172
  170. package/dist/_chunk/dnd.jsx.map +1 -1
  171. package/dist/_chunk/dom.js +1200 -0
  172. package/dist/_chunk/dom.js.map +1 -0
  173. package/dist/_chunk/dom.jsx +1200 -0
  174. package/dist/_chunk/dom.jsx.map +1 -0
  175. package/dist/_chunk/env.js +1 -57
  176. package/dist/_chunk/env.js.map +1 -1
  177. package/dist/_chunk/env.jsx +1 -57
  178. package/dist/_chunk/env.jsx.map +1 -1
  179. package/dist/_chunk/filterDOMProps.js +32 -7
  180. package/dist/_chunk/filterDOMProps.js.map +1 -1
  181. package/dist/_chunk/filterDOMProps.jsx +32 -7
  182. package/dist/_chunk/filterDOMProps.jsx.map +1 -1
  183. package/dist/_chunk/focus.js +570 -338
  184. package/dist/_chunk/focus.js.map +1 -1
  185. package/dist/_chunk/focus.jsx +570 -338
  186. package/dist/_chunk/focus.jsx.map +1 -1
  187. package/dist/_chunk/grid.js +62 -8
  188. package/dist/_chunk/grid.js.map +1 -1
  189. package/dist/_chunk/grid.jsx +62 -8
  190. package/dist/_chunk/grid.jsx.map +1 -1
  191. package/dist/_chunk/gridlist.js +192 -53
  192. package/dist/_chunk/gridlist.js.map +1 -1
  193. package/dist/_chunk/gridlist.jsx +192 -53
  194. package/dist/_chunk/gridlist.jsx.map +1 -1
  195. package/dist/_chunk/i18n.js +68 -1
  196. package/dist/_chunk/i18n.js.map +1 -1
  197. package/dist/_chunk/i18n.jsx +68 -1
  198. package/dist/_chunk/i18n.jsx.map +1 -1
  199. package/dist/_chunk/interactions.js +38 -102
  200. package/dist/_chunk/interactions.js.map +1 -1
  201. package/dist/_chunk/interactions.jsx +38 -100
  202. package/dist/_chunk/interactions.jsx.map +1 -1
  203. package/dist/_chunk/intl.js +280 -0
  204. package/dist/_chunk/intl.js.map +1 -0
  205. package/dist/_chunk/intl.jsx +280 -0
  206. package/dist/_chunk/intl.jsx.map +1 -0
  207. package/dist/_chunk/link.js +15 -4
  208. package/dist/_chunk/link.js.map +1 -1
  209. package/dist/_chunk/link.jsx +15 -4
  210. package/dist/_chunk/link.jsx.map +1 -1
  211. package/dist/_chunk/listbox.js +99 -175
  212. package/dist/_chunk/listbox.js.map +1 -1
  213. package/dist/_chunk/listbox.jsx +99 -175
  214. package/dist/_chunk/listbox.jsx.map +1 -1
  215. package/dist/_chunk/locale.js +58 -12
  216. package/dist/_chunk/locale.js.map +1 -1
  217. package/dist/_chunk/locale.jsx +57 -11
  218. package/dist/_chunk/locale.jsx.map +1 -1
  219. package/dist/_chunk/menu.js +298 -57
  220. package/dist/_chunk/menu.js.map +1 -1
  221. package/dist/_chunk/menu.jsx +298 -57
  222. package/dist/_chunk/menu.jsx.map +1 -1
  223. package/dist/_chunk/mergeProps.js +216 -0
  224. package/dist/_chunk/mergeProps.js.map +1 -0
  225. package/dist/_chunk/mergeProps.jsx +216 -0
  226. package/dist/_chunk/mergeProps.jsx.map +1 -0
  227. package/dist/_chunk/meter.js +16 -4
  228. package/dist/_chunk/meter.js.map +1 -1
  229. package/dist/_chunk/meter.jsx +16 -4
  230. package/dist/_chunk/meter.jsx.map +1 -1
  231. package/dist/_chunk/numberfield.js +167 -22
  232. package/dist/_chunk/numberfield.js.map +1 -1
  233. package/dist/_chunk/numberfield.jsx +167 -22
  234. package/dist/_chunk/numberfield.jsx.map +1 -1
  235. package/dist/_chunk/overlays.js +87 -74
  236. package/dist/_chunk/overlays.js.map +1 -1
  237. package/dist/_chunk/overlays.jsx +71 -57
  238. package/dist/_chunk/overlays.jsx.map +1 -1
  239. package/dist/_chunk/owner.js +23 -0
  240. package/dist/_chunk/owner.js.map +1 -0
  241. package/dist/_chunk/owner.jsx +23 -0
  242. package/dist/_chunk/owner.jsx.map +1 -0
  243. package/dist/_chunk/popover.js +180 -42
  244. package/dist/_chunk/popover.js.map +1 -1
  245. package/dist/_chunk/popover.jsx +180 -42
  246. package/dist/_chunk/popover.jsx.map +1 -1
  247. package/dist/_chunk/radio.js +92 -32
  248. package/dist/_chunk/radio.js.map +1 -1
  249. package/dist/_chunk/radio.jsx +92 -32
  250. package/dist/_chunk/radio.jsx.map +1 -1
  251. package/dist/_chunk/reactivity.js.map +1 -1
  252. package/dist/_chunk/reactivity.jsx.map +1 -1
  253. package/dist/_chunk/refs.js +41 -0
  254. package/dist/_chunk/refs.js.map +1 -0
  255. package/dist/_chunk/refs.jsx +41 -0
  256. package/dist/_chunk/refs.jsx.map +1 -0
  257. package/dist/_chunk/searchfield.js +69 -3
  258. package/dist/_chunk/searchfield.js.map +1 -1
  259. package/dist/_chunk/searchfield.jsx +69 -3
  260. package/dist/_chunk/searchfield.jsx.map +1 -1
  261. package/dist/_chunk/select.js +226 -80
  262. package/dist/_chunk/select.js.map +1 -1
  263. package/dist/_chunk/select.jsx +162 -70
  264. package/dist/_chunk/select.jsx.map +1 -1
  265. package/dist/_chunk/selection.js +20 -638
  266. package/dist/_chunk/selection.js.map +1 -1
  267. package/dist/_chunk/selection.jsx +20 -638
  268. package/dist/_chunk/selection.jsx.map +1 -1
  269. package/dist/_chunk/separator.js +12 -0
  270. package/dist/_chunk/separator.js.map +1 -1
  271. package/dist/_chunk/separator.jsx +12 -0
  272. package/dist/_chunk/separator.jsx.map +1 -1
  273. package/dist/_chunk/slider.js +25 -16
  274. package/dist/_chunk/slider.js.map +1 -1
  275. package/dist/_chunk/slider.jsx +25 -16
  276. package/dist/_chunk/slider.jsx.map +1 -1
  277. package/dist/_chunk/spinbutton.js +52 -42
  278. package/dist/_chunk/spinbutton.js.map +1 -1
  279. package/dist/_chunk/spinbutton.jsx +52 -42
  280. package/dist/_chunk/spinbutton.jsx.map +1 -1
  281. package/dist/_chunk/steplist.js +14 -1
  282. package/dist/_chunk/steplist.js.map +1 -1
  283. package/dist/_chunk/steplist.jsx +14 -1
  284. package/dist/_chunk/steplist.jsx.map +1 -1
  285. package/dist/_chunk/switch.js +21 -3
  286. package/dist/_chunk/switch.js.map +1 -1
  287. package/dist/_chunk/switch.jsx +21 -3
  288. package/dist/_chunk/switch.jsx.map +1 -1
  289. package/dist/_chunk/table.js +666 -88
  290. package/dist/_chunk/table.js.map +1 -1
  291. package/dist/_chunk/table.jsx +666 -88
  292. package/dist/_chunk/table.jsx.map +1 -1
  293. package/dist/_chunk/tabs.js +115 -17
  294. package/dist/_chunk/tabs.js.map +1 -1
  295. package/dist/_chunk/tabs.jsx +115 -17
  296. package/dist/_chunk/tabs.jsx.map +1 -1
  297. package/dist/_chunk/tag.js +240 -39
  298. package/dist/_chunk/tag.js.map +1 -1
  299. package/dist/_chunk/tag.jsx +240 -39
  300. package/dist/_chunk/tag.jsx.map +1 -1
  301. package/dist/_chunk/textfield.js +83 -12
  302. package/dist/_chunk/textfield.js.map +1 -1
  303. package/dist/_chunk/textfield.jsx +83 -12
  304. package/dist/_chunk/textfield.jsx.map +1 -1
  305. package/dist/_chunk/toast.js +61 -28
  306. package/dist/_chunk/toast.js.map +1 -1
  307. package/dist/_chunk/toast.jsx +61 -28
  308. package/dist/_chunk/toast.jsx.map +1 -1
  309. package/dist/_chunk/tokenfield.js +567 -0
  310. package/dist/_chunk/tokenfield.js.map +1 -0
  311. package/dist/_chunk/tokenfield.jsx +567 -0
  312. package/dist/_chunk/tokenfield.jsx.map +1 -0
  313. package/dist/_chunk/toolbar.js +25 -8
  314. package/dist/_chunk/toolbar.js.map +1 -1
  315. package/dist/_chunk/toolbar.jsx +25 -8
  316. package/dist/_chunk/toolbar.jsx.map +1 -1
  317. package/dist/_chunk/tooltip.js +379 -6
  318. package/dist/_chunk/tooltip.js.map +1 -1
  319. package/dist/_chunk/tooltip.jsx +379 -6
  320. package/dist/_chunk/tooltip.jsx.map +1 -1
  321. package/dist/_chunk/tree.js +280 -69
  322. package/dist/_chunk/tree.js.map +1 -1
  323. package/dist/_chunk/tree.jsx +280 -69
  324. package/dist/_chunk/tree.jsx.map +1 -1
  325. package/dist/_chunk/utils.js +192 -150
  326. package/dist/_chunk/utils.js.map +1 -1
  327. package/dist/_chunk/utils.jsx +192 -150
  328. package/dist/_chunk/utils.jsx.map +1 -1
  329. package/dist/_chunk/virtualFocus.js +54 -0
  330. package/dist/_chunk/virtualFocus.js.map +1 -0
  331. package/dist/_chunk/virtualFocus.jsx +54 -0
  332. package/dist/_chunk/virtualFocus.jsx.map +1 -0
  333. package/dist/_chunk/virtualizer.js +202 -0
  334. package/dist/_chunk/virtualizer.js.map +1 -0
  335. package/dist/_chunk/virtualizer.jsx +202 -0
  336. package/dist/_chunk/virtualizer.jsx.map +1 -0
  337. package/dist/actiongroup/createActionGroup.d.ts +2 -1
  338. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  339. package/dist/autocomplete/createAutocomplete.d.ts +1 -9
  340. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  341. package/dist/autocomplete/intl/index.d.ts +13 -0
  342. package/dist/autocomplete/intl/index.d.ts.map +1 -0
  343. package/dist/breadcrumbs/createBreadcrumbs.d.ts +3 -1
  344. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  345. package/dist/breadcrumbs/intl/index.d.ts +13 -0
  346. package/dist/breadcrumbs/intl/index.d.ts.map +1 -0
  347. package/dist/button/createButton.d.ts.map +1 -1
  348. package/dist/button/createToggleButton.d.ts.map +1 -1
  349. package/dist/button/createToggleButtonGroup.d.ts +1 -1
  350. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  351. package/dist/button/types.d.ts +14 -0
  352. package/dist/button/types.d.ts.map +1 -1
  353. package/dist/calendar/createCalendar.d.ts +1 -7
  354. package/dist/calendar/createCalendar.d.ts.map +1 -1
  355. package/dist/calendar/createCalendarCell.d.ts +0 -6
  356. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  357. package/dist/calendar/createCalendarGrid.d.ts +1 -7
  358. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  359. package/dist/calendar/createCalendarMonthPicker.d.ts +0 -8
  360. package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -1
  361. package/dist/calendar/createCalendarYearPicker.d.ts +0 -8
  362. package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -1
  363. package/dist/calendar/createRangeCalendar.d.ts +13 -7
  364. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  365. package/dist/calendar/createRangeCalendarCell.d.ts +2 -6
  366. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  367. package/dist/calendar/intl/index.d.ts.map +1 -1
  368. package/dist/calendar/utils.d.ts.map +1 -1
  369. package/dist/checkbox/createCheckbox.d.ts +2 -1
  370. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  371. package/dist/checkbox/createCheckboxGroup.d.ts +1 -9
  372. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  373. package/dist/checkbox/createCheckboxGroupItem.d.ts +0 -8
  374. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  375. package/dist/collections/index.d.ts +1 -1
  376. package/dist/collections/index.d.ts.map +1 -1
  377. package/dist/collections/index.js +18 -2
  378. package/dist/collections/index.js.map +1 -1
  379. package/dist/collections/index.jsx +18 -2
  380. package/dist/collections/index.jsx.map +1 -1
  381. package/dist/color/createColorArea.d.ts +2 -7
  382. package/dist/color/createColorArea.d.ts.map +1 -1
  383. package/dist/color/createColorField.d.ts +2 -7
  384. package/dist/color/createColorField.d.ts.map +1 -1
  385. package/dist/color/createColorSlider.d.ts +1 -6
  386. package/dist/color/createColorSlider.d.ts.map +1 -1
  387. package/dist/color/createColorSwatch.d.ts +1 -6
  388. package/dist/color/createColorSwatch.d.ts.map +1 -1
  389. package/dist/color/createColorWheel.d.ts +1 -6
  390. package/dist/color/createColorWheel.d.ts.map +1 -1
  391. package/dist/color/intl/index.d.ts.map +1 -1
  392. package/dist/color/types.d.ts +47 -1
  393. package/dist/color/types.d.ts.map +1 -1
  394. package/dist/combobox/createComboBox.d.ts +17 -8
  395. package/dist/combobox/createComboBox.d.ts.map +1 -1
  396. package/dist/combobox/intl/generated-locales.d.ts +3 -0
  397. package/dist/combobox/intl/generated-locales.d.ts.map +1 -1
  398. package/dist/combobox/intl/index.d.ts +3 -2
  399. package/dist/combobox/intl/index.d.ts.map +1 -1
  400. package/dist/datepicker/createDateField.d.ts +0 -10
  401. package/dist/datepicker/createDateField.d.ts.map +1 -1
  402. package/dist/datepicker/createDatePicker.d.ts +0 -16
  403. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  404. package/dist/datepicker/createDatePickerGroup.d.ts +1 -1
  405. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
  406. package/dist/datepicker/createDateRangePicker.d.ts +0 -21
  407. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  408. package/dist/datepicker/createDateSegment.d.ts +0 -9
  409. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  410. package/dist/datepicker/createDisplayNames.d.ts +1 -9
  411. package/dist/datepicker/createDisplayNames.d.ts.map +1 -1
  412. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  413. package/dist/datepicker/intl.d.ts.map +1 -1
  414. package/dist/dialog/createDialog.d.ts +2 -4
  415. package/dist/dialog/createDialog.d.ts.map +1 -1
  416. package/dist/dialog/types.d.ts +14 -0
  417. package/dist/dialog/types.d.ts.map +1 -1
  418. package/dist/disclosure/createDisclosure.d.ts +1 -8
  419. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  420. package/dist/disclosure/createDisclosureGroup.d.ts +3 -4
  421. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  422. package/dist/dnd/DragManager.d.ts +1 -16
  423. package/dist/dnd/DragManager.d.ts.map +1 -1
  424. package/dist/dnd/DropTargetKeyboardNavigation.d.ts +2 -2
  425. package/dist/dnd/createDrag.d.ts +1 -7
  426. package/dist/dnd/createDrag.d.ts.map +1 -1
  427. package/dist/dnd/createDraggableCollection.d.ts +1 -7
  428. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  429. package/dist/dnd/createDraggableItem.d.ts +2 -7
  430. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  431. package/dist/dnd/createDrop.d.ts +1 -7
  432. package/dist/dnd/createDrop.d.ts.map +1 -1
  433. package/dist/dnd/createDropIndicator.d.ts +27 -0
  434. package/dist/dnd/createDropIndicator.d.ts.map +1 -0
  435. package/dist/dnd/createDroppableCollection.d.ts +6 -8
  436. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  437. package/dist/dnd/createDroppableItem.d.ts +12 -10
  438. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  439. package/dist/dnd/index.d.ts +3 -1
  440. package/dist/dnd/index.d.ts.map +1 -1
  441. package/dist/dnd/index.js +2 -2
  442. package/dist/dnd/index.jsx +2 -2
  443. package/dist/dnd/intl/index.d.ts +6 -4
  444. package/dist/dnd/intl/index.d.ts.map +1 -1
  445. package/dist/dnd/types.d.ts +20 -1
  446. package/dist/dnd/types.d.ts.map +1 -1
  447. package/dist/dnd/utils.d.ts +4 -0
  448. package/dist/dnd/utils.d.ts.map +1 -1
  449. package/dist/focus/FocusScope.d.ts +9 -5
  450. package/dist/focus/FocusScope.d.ts.map +1 -1
  451. package/dist/focus/createAutoFocus.d.ts +3 -0
  452. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  453. package/dist/focus/createFocusRestore.d.ts +3 -0
  454. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  455. package/dist/focus/createHasTabbableChild.d.ts +13 -0
  456. package/dist/focus/createHasTabbableChild.d.ts.map +1 -0
  457. package/dist/focus/createVirtualFocus.d.ts +4 -1
  458. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  459. package/dist/focus/index.js +3 -2
  460. package/dist/focus/index.jsx +3 -2
  461. package/dist/focus/virtualFocus.d.ts +1 -1
  462. package/dist/form/createFormReset.d.ts +1 -7
  463. package/dist/form/createFormReset.d.ts.map +1 -1
  464. package/dist/form/createFormValidation.d.ts +1 -9
  465. package/dist/form/createFormValidation.d.ts.map +1 -1
  466. package/dist/grid/GridKeyboardDelegate.d.ts.map +1 -1
  467. package/dist/grid/createGrid.d.ts +1 -5
  468. package/dist/grid/createGrid.d.ts.map +1 -1
  469. package/dist/grid/createGridCell.d.ts +1 -5
  470. package/dist/grid/createGridCell.d.ts.map +1 -1
  471. package/dist/grid/createGridRow.d.ts +1 -5
  472. package/dist/grid/createGridRow.d.ts.map +1 -1
  473. package/dist/grid/index.d.ts +2 -2
  474. package/dist/grid/intl/index.d.ts +18 -0
  475. package/dist/grid/intl/index.d.ts.map +1 -0
  476. package/dist/grid/types.d.ts +25 -2
  477. package/dist/grid/types.d.ts.map +1 -1
  478. package/dist/gridlist/createGridList.d.ts +3 -5
  479. package/dist/gridlist/createGridList.d.ts.map +1 -1
  480. package/dist/gridlist/createGridListItem.d.ts +1 -5
  481. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  482. package/dist/gridlist/createGridListSection.d.ts +0 -4
  483. package/dist/gridlist/createGridListSection.d.ts.map +1 -1
  484. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +1 -5
  485. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  486. package/dist/gridlist/intl/index.d.ts +14 -0
  487. package/dist/gridlist/intl/index.d.ts.map +1 -0
  488. package/dist/gridlist/types.d.ts +56 -2
  489. package/dist/gridlist/types.d.ts.map +1 -1
  490. package/dist/i18n/compileIcu.d.ts +24 -0
  491. package/dist/i18n/compileIcu.d.ts.map +1 -0
  492. package/dist/i18n/createCollator.d.ts +0 -7
  493. package/dist/i18n/createCollator.d.ts.map +1 -1
  494. package/dist/i18n/createDateFormatter.d.ts +0 -7
  495. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  496. package/dist/i18n/createFilter.d.ts +0 -7
  497. package/dist/i18n/createFilter.d.ts.map +1 -1
  498. package/dist/i18n/createListFormatter.d.ts +9 -0
  499. package/dist/i18n/createListFormatter.d.ts.map +1 -0
  500. package/dist/i18n/createNumberFormatter.d.ts +0 -7
  501. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  502. package/dist/i18n/createStringFormatter.d.ts +14 -4
  503. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  504. package/dist/i18n/index.d.ts +1 -0
  505. package/dist/i18n/index.d.ts.map +1 -1
  506. package/dist/i18n/index.js +2 -2
  507. package/dist/i18n/index.jsx +2 -2
  508. package/dist/i18n/locale.d.ts +2 -8
  509. package/dist/i18n/locale.d.ts.map +1 -1
  510. package/dist/i18n/utils.d.ts +0 -7
  511. package/dist/i18n/utils.d.ts.map +1 -1
  512. package/dist/index.d.ts +10 -7
  513. package/dist/index.d.ts.map +1 -1
  514. package/dist/index.js +27 -21
  515. package/dist/index.jsx +27 -21
  516. package/dist/interactions/FocusableProvider.d.ts +3 -2
  517. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  518. package/dist/interactions/PressEvent.d.ts +2 -1
  519. package/dist/interactions/PressEvent.d.ts.map +1 -1
  520. package/dist/interactions/createContextMenu.d.ts +24 -0
  521. package/dist/interactions/createContextMenu.d.ts.map +1 -0
  522. package/dist/interactions/createFocus.d.ts +3 -2
  523. package/dist/interactions/createFocus.d.ts.map +1 -1
  524. package/dist/interactions/createFocusRing.d.ts +2 -1
  525. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  526. package/dist/interactions/createFocusWithin.d.ts +1 -6
  527. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  528. package/dist/interactions/createFocusable.d.ts +2 -6
  529. package/dist/interactions/createFocusable.d.ts.map +1 -1
  530. package/dist/interactions/createHover.d.ts +3 -10
  531. package/dist/interactions/createHover.d.ts.map +1 -1
  532. package/dist/interactions/createInteractionModality.d.ts +12 -10
  533. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  534. package/dist/interactions/createKeyboard.d.ts +12 -3
  535. package/dist/interactions/createKeyboard.d.ts.map +1 -1
  536. package/dist/interactions/createKeyboardShortcutHandler.d.ts +24 -0
  537. package/dist/interactions/createKeyboardShortcutHandler.d.ts.map +1 -0
  538. package/dist/interactions/createLongPress.d.ts +4 -7
  539. package/dist/interactions/createLongPress.d.ts.map +1 -1
  540. package/dist/interactions/createMove.d.ts +1 -6
  541. package/dist/interactions/createMove.d.ts.map +1 -1
  542. package/dist/interactions/createPress.d.ts +2 -7
  543. package/dist/interactions/createPress.d.ts.map +1 -1
  544. package/dist/interactions/index.d.ts +1 -1
  545. package/dist/interactions/index.d.ts.map +1 -1
  546. package/dist/interactions/index.js +5 -3
  547. package/dist/interactions/index.jsx +5 -3
  548. package/dist/label/createField.d.ts +7 -1
  549. package/dist/label/createField.d.ts.map +1 -1
  550. package/dist/label/createLabel.d.ts +1 -1
  551. package/dist/label/createLabel.d.ts.map +1 -1
  552. package/dist/label/createLabels.d.ts +0 -7
  553. package/dist/label/createLabels.d.ts.map +1 -1
  554. package/dist/landmark/createLandmark.d.ts +4 -1
  555. package/dist/landmark/createLandmark.d.ts.map +1 -1
  556. package/dist/link/createLink.d.ts +1 -1
  557. package/dist/link/createLink.d.ts.map +1 -1
  558. package/dist/listbox/createListBox.d.ts +8 -7
  559. package/dist/listbox/createListBox.d.ts.map +1 -1
  560. package/dist/listbox/createOption.d.ts +7 -1
  561. package/dist/listbox/createOption.d.ts.map +1 -1
  562. package/dist/live-announcer/announce.d.ts +2 -13
  563. package/dist/live-announcer/announce.d.ts.map +1 -1
  564. package/dist/menu/createMenu.d.ts +3 -7
  565. package/dist/menu/createMenu.d.ts.map +1 -1
  566. package/dist/menu/createMenuItem.d.ts +2 -1
  567. package/dist/menu/createMenuItem.d.ts.map +1 -1
  568. package/dist/menu/createMenuTrigger.d.ts +24 -20
  569. package/dist/menu/createMenuTrigger.d.ts.map +1 -1
  570. package/dist/menu/index.d.ts +1 -1
  571. package/dist/menu/index.d.ts.map +1 -1
  572. package/dist/menu/intl/index.d.ts +4 -0
  573. package/dist/menu/intl/index.d.ts.map +1 -0
  574. package/dist/meter/createMeter.d.ts +2 -1
  575. package/dist/meter/createMeter.d.ts.map +1 -1
  576. package/dist/numberfield/createNumberField.d.ts +29 -6
  577. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  578. package/dist/overlays/ariaHideOutside.d.ts +0 -4
  579. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  580. package/dist/overlays/createInteractOutside.d.ts +2 -5
  581. package/dist/overlays/createInteractOutside.d.ts.map +1 -1
  582. package/dist/overlays/createModal.d.ts +3 -6
  583. package/dist/overlays/createModal.d.ts.map +1 -1
  584. package/dist/overlays/createOverlay.d.ts +1 -5
  585. package/dist/overlays/createOverlay.d.ts.map +1 -1
  586. package/dist/overlays/createOverlayTrigger.d.ts +2 -6
  587. package/dist/overlays/createOverlayTrigger.d.ts.map +1 -1
  588. package/dist/overlays/createPreventScroll.d.ts +0 -4
  589. package/dist/overlays/createPreventScroll.d.ts.map +1 -1
  590. package/dist/overlays/index.d.ts +1 -0
  591. package/dist/overlays/index.d.ts.map +1 -1
  592. package/dist/overlays/index.js +3 -2
  593. package/dist/overlays/index.jsx +3 -2
  594. package/dist/overlays/intl/index.d.ts +13 -0
  595. package/dist/overlays/intl/index.d.ts.map +1 -0
  596. package/dist/popover/calculatePosition.d.ts +1 -1
  597. package/dist/popover/calculatePosition.d.ts.map +1 -1
  598. package/dist/popover/createOverlayPosition.d.ts +1 -7
  599. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  600. package/dist/popover/createPopover.d.ts +6 -7
  601. package/dist/popover/createPopover.d.ts.map +1 -1
  602. package/dist/progress/createProgressBar.d.ts +2 -10
  603. package/dist/progress/createProgressBar.d.ts.map +1 -1
  604. package/dist/radio/createRadio.d.ts +8 -1
  605. package/dist/radio/createRadio.d.ts.map +1 -1
  606. package/dist/radio/createRadioGroup.d.ts +1 -9
  607. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  608. package/dist/searchfield/createSearchField.d.ts +1 -1
  609. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  610. package/dist/searchfield/intl/index.d.ts +13 -0
  611. package/dist/searchfield/intl/index.d.ts.map +1 -0
  612. package/dist/select/createHiddenSelect.d.ts +3 -10
  613. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  614. package/dist/select/createSelect.d.ts +10 -6
  615. package/dist/select/createSelect.d.ts.map +1 -1
  616. package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -1
  617. package/dist/selection/ListKeyboardDelegate.d.ts +2 -1
  618. package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -1
  619. package/dist/selection/constants.d.ts.map +1 -1
  620. package/dist/selection/createCollectionRowInteraction.d.ts +12 -1
  621. package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -1
  622. package/dist/selection/createScrollIntoViewOnFocus.d.ts +0 -11
  623. package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -1
  624. package/dist/selection/createSelectableCollection.d.ts +1 -23
  625. package/dist/selection/createSelectableCollection.d.ts.map +1 -1
  626. package/dist/selection/createSelectableItem.d.ts +2 -29
  627. package/dist/selection/createSelectableItem.d.ts.map +1 -1
  628. package/dist/selection/createSelectableList.d.ts +4 -17
  629. package/dist/selection/createSelectableList.d.ts.map +1 -1
  630. package/dist/selection/createTypeSelect.d.ts +2 -8
  631. package/dist/selection/createTypeSelect.d.ts.map +1 -1
  632. package/dist/selection/index.js +3 -2
  633. package/dist/selection/index.jsx +3 -2
  634. package/dist/selection/selectItem.d.ts.map +1 -1
  635. package/dist/selection/utils.d.ts +1 -1
  636. package/dist/selection/utils.d.ts.map +1 -1
  637. package/dist/separator/createSeparator.d.ts +3 -1
  638. package/dist/separator/createSeparator.d.ts.map +1 -1
  639. package/dist/slider/createSlider.d.ts +1 -6
  640. package/dist/slider/createSlider.d.ts.map +1 -1
  641. package/dist/spinbutton/createSpinButton.d.ts +0 -9
  642. package/dist/spinbutton/createSpinButton.d.ts.map +1 -1
  643. package/dist/spinbutton/index.d.ts +2 -2
  644. package/dist/spinbutton/index.d.ts.map +1 -1
  645. package/dist/spinbutton/intl.d.ts.map +1 -1
  646. package/dist/ssr/index.d.ts +3 -9
  647. package/dist/ssr/index.d.ts.map +1 -1
  648. package/dist/ssr/index.js +47 -26
  649. package/dist/ssr/index.js.map +1 -1
  650. package/dist/ssr/index.jsx +47 -26
  651. package/dist/ssr/index.jsx.map +1 -1
  652. package/dist/steplist/createStepList.d.ts +1 -1
  653. package/dist/steplist/createStepList.d.ts.map +1 -1
  654. package/dist/switch/createSwitch.d.ts +2 -1
  655. package/dist/switch/createSwitch.d.ts.map +1 -1
  656. package/dist/table/createTable.d.ts +1 -5
  657. package/dist/table/createTable.d.ts.map +1 -1
  658. package/dist/table/createTableCell.d.ts +1 -5
  659. package/dist/table/createTableCell.d.ts.map +1 -1
  660. package/dist/table/createTableColumnHeader.d.ts +1 -5
  661. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  662. package/dist/table/createTableColumnResize.d.ts +2 -8
  663. package/dist/table/createTableColumnResize.d.ts.map +1 -1
  664. package/dist/table/createTableHeaderRow.d.ts +1 -5
  665. package/dist/table/createTableHeaderRow.d.ts.map +1 -1
  666. package/dist/table/createTableRow.d.ts +1 -5
  667. package/dist/table/createTableRow.d.ts.map +1 -1
  668. package/dist/table/createTableRowGroup.d.ts +1 -5
  669. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  670. package/dist/table/createTableSelectAllCheckbox.d.ts +1 -5
  671. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  672. package/dist/table/createTableSelectionCheckbox.d.ts +1 -5
  673. package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
  674. package/dist/table/index.d.ts +2 -2
  675. package/dist/table/intl/index.d.ts +23 -0
  676. package/dist/table/intl/index.d.ts.map +1 -0
  677. package/dist/table/types.d.ts +44 -2
  678. package/dist/table/types.d.ts.map +1 -1
  679. package/dist/table/utils.d.ts.map +1 -1
  680. package/dist/tabs/createTabs.d.ts +5 -9
  681. package/dist/tabs/createTabs.d.ts.map +1 -1
  682. package/dist/tag/createTag.d.ts +4 -8
  683. package/dist/tag/createTag.d.ts.map +1 -1
  684. package/dist/tag/createTagGroup.d.ts +0 -9
  685. package/dist/tag/createTagGroup.d.ts.map +1 -1
  686. package/dist/tag/intl/index.d.ts +14 -0
  687. package/dist/tag/intl/index.d.ts.map +1 -0
  688. package/dist/textfield/createTextField.d.ts +6 -8
  689. package/dist/textfield/createTextField.d.ts.map +1 -1
  690. package/dist/toast/createToast.d.ts +1 -8
  691. package/dist/toast/createToast.d.ts.map +1 -1
  692. package/dist/toast/createToastRegion.d.ts +7 -18
  693. package/dist/toast/createToastRegion.d.ts.map +1 -1
  694. package/dist/toast/intl/index.d.ts +14 -0
  695. package/dist/toast/intl/index.d.ts.map +1 -0
  696. package/dist/toggle/createToggle.d.ts +8 -1
  697. package/dist/toggle/createToggle.d.ts.map +1 -1
  698. package/dist/tokenfield/createToken.d.ts +15 -0
  699. package/dist/tokenfield/createToken.d.ts.map +1 -0
  700. package/dist/tokenfield/createTokenField.d.ts +52 -0
  701. package/dist/tokenfield/createTokenField.d.ts.map +1 -0
  702. package/dist/tokenfield/index.d.ts +3 -0
  703. package/dist/tokenfield/index.d.ts.map +1 -0
  704. package/dist/tokenfield/index.js +2 -0
  705. package/dist/tokenfield/index.jsx +2 -0
  706. package/dist/toolbar/createToolbar.d.ts +1 -1
  707. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  708. package/dist/tooltip/createPreviewTrigger.d.ts +23 -0
  709. package/dist/tooltip/createPreviewTrigger.d.ts.map +1 -0
  710. package/dist/tooltip/createSafeArea.d.ts +20 -0
  711. package/dist/tooltip/createSafeArea.d.ts.map +1 -0
  712. package/dist/tooltip/createTooltip.d.ts +1 -1
  713. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  714. package/dist/tooltip/createTooltipTrigger.d.ts +1 -9
  715. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  716. package/dist/tooltip/index.d.ts +2 -0
  717. package/dist/tooltip/index.d.ts.map +1 -1
  718. package/dist/tooltip/index.js +2 -2
  719. package/dist/tooltip/index.jsx +2 -2
  720. package/dist/tooltip/intl/index.d.ts +4 -0
  721. package/dist/tooltip/intl/index.d.ts.map +1 -0
  722. package/dist/tree/createTree.d.ts +1 -5
  723. package/dist/tree/createTree.d.ts.map +1 -1
  724. package/dist/tree/createTreeItem.d.ts +1 -5
  725. package/dist/tree/createTreeItem.d.ts.map +1 -1
  726. package/dist/tree/createTreeSelectionCheckbox.d.ts +1 -5
  727. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  728. package/dist/tree/intl/index.d.ts +14 -0
  729. package/dist/tree/intl/index.d.ts.map +1 -0
  730. package/dist/tree/types.d.ts +35 -2
  731. package/dist/tree/types.d.ts.map +1 -1
  732. package/dist/utils/ShadowTreeWalker.d.ts +30 -0
  733. package/dist/utils/ShadowTreeWalker.d.ts.map +1 -0
  734. package/dist/utils/animation.d.ts +1 -29
  735. package/dist/utils/animation.d.ts.map +1 -1
  736. package/dist/utils/capture.d.ts +14 -0
  737. package/dist/utils/capture.d.ts.map +1 -0
  738. package/dist/utils/createDescription.d.ts +1 -25
  739. package/dist/utils/createDescription.d.ts.map +1 -1
  740. package/dist/utils/dom.d.ts +45 -11
  741. package/dist/utils/dom.d.ts.map +1 -1
  742. package/dist/utils/domAttrs.d.ts +16 -0
  743. package/dist/utils/domAttrs.d.ts.map +1 -0
  744. package/dist/utils/env.d.ts +2 -0
  745. package/dist/utils/env.d.ts.map +1 -1
  746. package/dist/utils/events.d.ts +0 -4
  747. package/dist/utils/events.d.ts.map +1 -1
  748. package/dist/utils/filterDOMProps.d.ts +0 -6
  749. package/dist/utils/filterDOMProps.d.ts.map +1 -1
  750. package/dist/utils/focus.d.ts +19 -6
  751. package/dist/utils/focus.d.ts.map +1 -1
  752. package/dist/utils/geometry.d.ts +1 -1
  753. package/dist/utils/geometry.d.ts.map +1 -1
  754. package/dist/utils/getMetaValue.d.ts +13 -0
  755. package/dist/utils/getMetaValue.d.ts.map +1 -0
  756. package/dist/utils/getNonce.d.ts +9 -0
  757. package/dist/utils/getNonce.d.ts.map +1 -0
  758. package/dist/utils/globalListeners.d.ts +0 -6
  759. package/dist/utils/globalListeners.d.ts.map +1 -1
  760. package/dist/utils/index.d.ts +6 -1
  761. package/dist/utils/index.d.ts.map +1 -1
  762. package/dist/utils/index.js +7 -4
  763. package/dist/utils/index.jsx +7 -4
  764. package/dist/utils/keyboard.d.ts +0 -4
  765. package/dist/utils/keyboard.d.ts.map +1 -1
  766. package/dist/utils/mergeProps.d.ts +5 -2
  767. package/dist/utils/mergeProps.d.ts.map +1 -1
  768. package/dist/utils/owner.d.ts +14 -0
  769. package/dist/utils/owner.d.ts.map +1 -0
  770. package/dist/utils/platform.d.ts +0 -4
  771. package/dist/utils/platform.d.ts.map +1 -1
  772. package/dist/utils/reactivity.d.ts +2 -0
  773. package/dist/utils/reactivity.d.ts.map +1 -1
  774. package/dist/utils/refs.d.ts +20 -0
  775. package/dist/utils/refs.d.ts.map +1 -0
  776. package/dist/utils/runAfterTransition.d.ts +2 -0
  777. package/dist/utils/runAfterTransition.d.ts.map +1 -0
  778. package/dist/utils/scrollIntoView.d.ts +0 -4
  779. package/dist/utils/scrollIntoView.d.ts.map +1 -1
  780. package/dist/utils/splitProps.d.ts +17 -0
  781. package/dist/utils/splitProps.d.ts.map +1 -0
  782. package/dist/utils/textSelection.d.ts +0 -8
  783. package/dist/utils/textSelection.d.ts.map +1 -1
  784. package/dist/virtualizer/ScrollView.d.ts +38 -0
  785. package/dist/virtualizer/ScrollView.d.ts.map +1 -0
  786. package/dist/virtualizer/index.d.ts +3 -0
  787. package/dist/virtualizer/index.d.ts.map +1 -0
  788. package/dist/virtualizer/index.js +2 -0
  789. package/dist/virtualizer/index.jsx +2 -0
  790. package/dist/virtualizer/utils.d.ts +10 -0
  791. package/dist/virtualizer/utils.d.ts.map +1 -0
  792. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -9
  793. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  794. package/dist/visually-hidden/index.js +1 -1
  795. package/dist/visually-hidden/index.jsx +1 -1
  796. package/package.json +30 -11
  797. package/src/actiongroup/createActionGroup.ts +49 -27
  798. package/src/autocomplete/createAutocomplete.ts +32 -5
  799. package/src/autocomplete/intl/ar-AE.json +3 -0
  800. package/src/autocomplete/intl/bg-BG.json +3 -0
  801. package/src/autocomplete/intl/cs-CZ.json +3 -0
  802. package/src/autocomplete/intl/da-DK.json +3 -0
  803. package/src/autocomplete/intl/de-DE.json +3 -0
  804. package/src/autocomplete/intl/el-GR.json +3 -0
  805. package/src/autocomplete/intl/en-US.json +3 -0
  806. package/src/autocomplete/intl/es-ES.json +3 -0
  807. package/src/autocomplete/intl/et-EE.json +3 -0
  808. package/src/autocomplete/intl/fi-FI.json +3 -0
  809. package/src/autocomplete/intl/fr-FR.json +3 -0
  810. package/src/autocomplete/intl/he-IL.json +3 -0
  811. package/src/autocomplete/intl/hr-HR.json +3 -0
  812. package/src/autocomplete/intl/hu-HU.json +3 -0
  813. package/src/autocomplete/intl/index.ts +122 -0
  814. package/src/autocomplete/intl/it-IT.json +3 -0
  815. package/src/autocomplete/intl/ja-JP.json +3 -0
  816. package/src/autocomplete/intl/ko-KR.json +3 -0
  817. package/src/autocomplete/intl/lt-LT.json +3 -0
  818. package/src/autocomplete/intl/lv-LV.json +3 -0
  819. package/src/autocomplete/intl/nb-NO.json +3 -0
  820. package/src/autocomplete/intl/nl-NL.json +3 -0
  821. package/src/autocomplete/intl/pl-PL.json +3 -0
  822. package/src/autocomplete/intl/pt-BR.json +3 -0
  823. package/src/autocomplete/intl/pt-PT.json +3 -0
  824. package/src/autocomplete/intl/ro-RO.json +3 -0
  825. package/src/autocomplete/intl/ru-RU.json +3 -0
  826. package/src/autocomplete/intl/sk-SK.json +3 -0
  827. package/src/autocomplete/intl/sl-SI.json +3 -0
  828. package/src/autocomplete/intl/sr-SP.json +3 -0
  829. package/src/autocomplete/intl/sv-SE.json +3 -0
  830. package/src/autocomplete/intl/tr-TR.json +3 -0
  831. package/src/autocomplete/intl/uk-UA.json +3 -0
  832. package/src/autocomplete/intl/zh-CN.json +3 -0
  833. package/src/autocomplete/intl/zh-TW.json +3 -0
  834. package/src/breadcrumbs/createBreadcrumbs.ts +18 -1
  835. package/src/breadcrumbs/intl/ar-AE.json +3 -0
  836. package/src/breadcrumbs/intl/bg-BG.json +3 -0
  837. package/src/breadcrumbs/intl/cs-CZ.json +3 -0
  838. package/src/breadcrumbs/intl/da-DK.json +3 -0
  839. package/src/breadcrumbs/intl/de-DE.json +3 -0
  840. package/src/breadcrumbs/intl/el-GR.json +3 -0
  841. package/src/breadcrumbs/intl/en-US.json +3 -0
  842. package/src/breadcrumbs/intl/es-ES.json +3 -0
  843. package/src/breadcrumbs/intl/et-EE.json +3 -0
  844. package/src/breadcrumbs/intl/fi-FI.json +3 -0
  845. package/src/breadcrumbs/intl/fr-FR.json +3 -0
  846. package/src/breadcrumbs/intl/he-IL.json +3 -0
  847. package/src/breadcrumbs/intl/hr-HR.json +3 -0
  848. package/src/breadcrumbs/intl/hu-HU.json +3 -0
  849. package/src/breadcrumbs/intl/index.ts +122 -0
  850. package/src/breadcrumbs/intl/it-IT.json +3 -0
  851. package/src/breadcrumbs/intl/ja-JP.json +3 -0
  852. package/src/breadcrumbs/intl/ko-KR.json +3 -0
  853. package/src/breadcrumbs/intl/lt-LT.json +3 -0
  854. package/src/breadcrumbs/intl/lv-LV.json +3 -0
  855. package/src/breadcrumbs/intl/nb-NO.json +3 -0
  856. package/src/breadcrumbs/intl/nl-NL.json +3 -0
  857. package/src/breadcrumbs/intl/pl-PL.json +3 -0
  858. package/src/breadcrumbs/intl/pt-BR.json +3 -0
  859. package/src/breadcrumbs/intl/pt-PT.json +3 -0
  860. package/src/breadcrumbs/intl/ro-RO.json +3 -0
  861. package/src/breadcrumbs/intl/ru-RU.json +3 -0
  862. package/src/breadcrumbs/intl/sk-SK.json +3 -0
  863. package/src/breadcrumbs/intl/sl-SI.json +3 -0
  864. package/src/breadcrumbs/intl/sr-SP.json +3 -0
  865. package/src/breadcrumbs/intl/sv-SE.json +3 -0
  866. package/src/breadcrumbs/intl/tr-TR.json +3 -0
  867. package/src/breadcrumbs/intl/uk-UA.json +3 -0
  868. package/src/breadcrumbs/intl/zh-CN.json +3 -0
  869. package/src/breadcrumbs/intl/zh-TW.json +3 -0
  870. package/src/button/createButton.ts +15 -1
  871. package/src/button/createToggleButton.ts +18 -5
  872. package/src/button/createToggleButtonGroup.ts +23 -8
  873. package/src/button/types.ts +16 -0
  874. package/src/calendar/createCalendar.ts +22 -3
  875. package/src/calendar/createCalendarCell.ts +104 -15
  876. package/src/calendar/createCalendarGrid.ts +37 -13
  877. package/src/calendar/createCalendarMonthPicker.ts +14 -0
  878. package/src/calendar/createCalendarYearPicker.ts +14 -0
  879. package/src/calendar/createRangeCalendar.ts +124 -1
  880. package/src/calendar/createRangeCalendarCell.ts +179 -40
  881. package/src/calendar/intl/index.ts +37 -0
  882. package/src/calendar/utils.ts +14 -0
  883. package/src/checkbox/createCheckbox.ts +32 -17
  884. package/src/checkbox/createCheckboxGroup.ts +31 -13
  885. package/src/checkbox/createCheckboxGroupItem.ts +15 -1
  886. package/src/collections/index.ts +21 -3
  887. package/src/color/createColorArea.ts +226 -29
  888. package/src/color/createColorField.ts +98 -22
  889. package/src/color/createColorSlider.ts +24 -3
  890. package/src/color/createColorSwatch.ts +18 -1
  891. package/src/color/createColorWheel.ts +27 -5
  892. package/src/color/intl/index.ts +35 -0
  893. package/src/color/types.ts +47 -1
  894. package/src/combobox/createComboBox.ts +303 -152
  895. package/src/combobox/intl/generated-locales.ts +38 -1
  896. package/src/combobox/intl/index.ts +38 -2
  897. package/src/datepicker/createDateField.ts +38 -22
  898. package/src/datepicker/createDatePicker.ts +14 -0
  899. package/src/datepicker/createDatePickerGroup.ts +24 -12
  900. package/src/datepicker/createDateRangePicker.ts +14 -0
  901. package/src/datepicker/createDateSegment.ts +110 -46
  902. package/src/datepicker/createDisplayNames.ts +16 -1
  903. package/src/datepicker/createTimeField.ts +15 -5
  904. package/src/datepicker/intl.ts +623 -544
  905. package/src/dialog/createDialog.ts +57 -30
  906. package/src/dialog/types.ts +14 -0
  907. package/src/disclosure/createDisclosure.ts +28 -6
  908. package/src/disclosure/createDisclosureGroup.ts +3 -4
  909. package/src/dnd/DragManager.ts +60 -9
  910. package/src/dnd/DropTargetKeyboardNavigation.ts +8 -6
  911. package/src/dnd/createDrag.ts +18 -1
  912. package/src/dnd/createDraggableCollection.ts +96 -32
  913. package/src/dnd/createDraggableItem.ts +73 -31
  914. package/src/dnd/createDrop.ts +18 -1
  915. package/src/dnd/createDropIndicator.ts +92 -0
  916. package/src/dnd/createDroppableCollection.ts +113 -48
  917. package/src/dnd/createDroppableItem.ts +161 -13
  918. package/src/dnd/index.ts +3 -0
  919. package/src/dnd/intl/index.ts +77 -66
  920. package/src/dnd/types.ts +20 -1
  921. package/src/dnd/utils.ts +19 -0
  922. package/src/focus/FocusScope.tsx +542 -157
  923. package/src/focus/createAutoFocus.ts +94 -68
  924. package/src/focus/createFocusRestore.ts +16 -12
  925. package/src/focus/createHasTabbableChild.ts +78 -0
  926. package/src/focus/createVirtualFocus.ts +21 -5
  927. package/src/focus/virtualFocus.ts +1 -1
  928. package/src/form/createFormReset.ts +40 -17
  929. package/src/form/createFormValidation.ts +128 -86
  930. package/src/grid/GridKeyboardDelegate.ts +14 -0
  931. package/src/grid/createGrid.ts +17 -2
  932. package/src/grid/createGridCell.ts +17 -2
  933. package/src/grid/createGridRow.ts +17 -2
  934. package/src/grid/index.ts +2 -2
  935. package/src/grid/intl/ar-AE.json +8 -0
  936. package/src/grid/intl/bg-BG.json +8 -0
  937. package/src/grid/intl/cs-CZ.json +8 -0
  938. package/src/grid/intl/da-DK.json +8 -0
  939. package/src/grid/intl/de-DE.json +8 -0
  940. package/src/grid/intl/el-GR.json +8 -0
  941. package/src/grid/intl/en-US.json +8 -0
  942. package/src/grid/intl/es-ES.json +8 -0
  943. package/src/grid/intl/et-EE.json +8 -0
  944. package/src/grid/intl/fi-FI.json +8 -0
  945. package/src/grid/intl/fr-FR.json +8 -0
  946. package/src/grid/intl/he-IL.json +8 -0
  947. package/src/grid/intl/hr-HR.json +8 -0
  948. package/src/grid/intl/hu-HU.json +8 -0
  949. package/src/grid/intl/index.ts +127 -0
  950. package/src/grid/intl/it-IT.json +8 -0
  951. package/src/grid/intl/ja-JP.json +8 -0
  952. package/src/grid/intl/ko-KR.json +8 -0
  953. package/src/grid/intl/lt-LT.json +8 -0
  954. package/src/grid/intl/lv-LV.json +8 -0
  955. package/src/grid/intl/nb-NO.json +8 -0
  956. package/src/grid/intl/nl-NL.json +8 -0
  957. package/src/grid/intl/pl-PL.json +8 -0
  958. package/src/grid/intl/pt-BR.json +8 -0
  959. package/src/grid/intl/pt-PT.json +8 -0
  960. package/src/grid/intl/ro-RO.json +8 -0
  961. package/src/grid/intl/ru-RU.json +8 -0
  962. package/src/grid/intl/sk-SK.json +8 -0
  963. package/src/grid/intl/sl-SI.json +8 -0
  964. package/src/grid/intl/sr-SP.json +8 -0
  965. package/src/grid/intl/sv-SE.json +8 -0
  966. package/src/grid/intl/tr-TR.json +8 -0
  967. package/src/grid/intl/uk-UA.json +8 -0
  968. package/src/grid/intl/zh-CN.json +8 -0
  969. package/src/grid/intl/zh-TW.json +8 -0
  970. package/src/grid/types.ts +25 -2
  971. package/src/gridlist/createGridList.ts +172 -42
  972. package/src/gridlist/createGridListItem.ts +51 -13
  973. package/src/gridlist/createGridListSection.ts +14 -0
  974. package/src/gridlist/createGridListSelectionCheckbox.ts +31 -4
  975. package/src/gridlist/intl/ar-AE.json +4 -0
  976. package/src/gridlist/intl/bg-BG.json +4 -0
  977. package/src/gridlist/intl/cs-CZ.json +4 -0
  978. package/src/gridlist/intl/da-DK.json +4 -0
  979. package/src/gridlist/intl/de-DE.json +4 -0
  980. package/src/gridlist/intl/el-GR.json +4 -0
  981. package/src/gridlist/intl/en-US.json +4 -0
  982. package/src/gridlist/intl/es-ES.json +4 -0
  983. package/src/gridlist/intl/et-EE.json +4 -0
  984. package/src/gridlist/intl/fi-FI.json +4 -0
  985. package/src/gridlist/intl/fr-FR.json +4 -0
  986. package/src/gridlist/intl/he-IL.json +4 -0
  987. package/src/gridlist/intl/hr-HR.json +4 -0
  988. package/src/gridlist/intl/hu-HU.json +4 -0
  989. package/src/gridlist/intl/index.ts +123 -0
  990. package/src/gridlist/intl/it-IT.json +4 -0
  991. package/src/gridlist/intl/ja-JP.json +4 -0
  992. package/src/gridlist/intl/ko-KR.json +4 -0
  993. package/src/gridlist/intl/lt-LT.json +4 -0
  994. package/src/gridlist/intl/lv-LV.json +4 -0
  995. package/src/gridlist/intl/nb-NO.json +4 -0
  996. package/src/gridlist/intl/nl-NL.json +4 -0
  997. package/src/gridlist/intl/pl-PL.json +4 -0
  998. package/src/gridlist/intl/pt-BR.json +4 -0
  999. package/src/gridlist/intl/pt-PT.json +4 -0
  1000. package/src/gridlist/intl/ro-RO.json +4 -0
  1001. package/src/gridlist/intl/ru-RU.json +4 -0
  1002. package/src/gridlist/intl/sk-SK.json +4 -0
  1003. package/src/gridlist/intl/sl-SI.json +4 -0
  1004. package/src/gridlist/intl/sr-SP.json +4 -0
  1005. package/src/gridlist/intl/sv-SE.json +4 -0
  1006. package/src/gridlist/intl/tr-TR.json +4 -0
  1007. package/src/gridlist/intl/uk-UA.json +4 -0
  1008. package/src/gridlist/intl/zh-CN.json +4 -0
  1009. package/src/gridlist/intl/zh-TW.json +4 -0
  1010. package/src/gridlist/types.ts +54 -2
  1011. package/src/i18n/compileIcu.ts +440 -0
  1012. package/src/i18n/createCollator.ts +14 -0
  1013. package/src/i18n/createDateFormatter.ts +14 -0
  1014. package/src/i18n/createFilter.ts +14 -0
  1015. package/src/i18n/createListFormatter.ts +38 -0
  1016. package/src/i18n/createNumberFormatter.ts +14 -0
  1017. package/src/i18n/createStringFormatter.ts +64 -8
  1018. package/src/i18n/index.ts +3 -0
  1019. package/src/i18n/locale.tsx +60 -19
  1020. package/src/i18n/utils.ts +14 -0
  1021. package/src/index.ts +49 -1
  1022. package/src/interactions/FocusableProvider.tsx +28 -11
  1023. package/src/interactions/PressEvent.ts +16 -1
  1024. package/src/interactions/createContextMenu.ts +108 -0
  1025. package/src/interactions/createFocus.ts +26 -6
  1026. package/src/interactions/createFocusRing.ts +28 -13
  1027. package/src/interactions/createFocusWithin.ts +23 -3
  1028. package/src/interactions/createFocusable.ts +45 -28
  1029. package/src/interactions/createHover.ts +102 -81
  1030. package/src/interactions/createInteractionModality.ts +135 -45
  1031. package/src/interactions/createKeyboard.ts +85 -9
  1032. package/src/interactions/createKeyboardShortcutHandler.ts +157 -0
  1033. package/src/interactions/createLongPress.ts +31 -9
  1034. package/src/interactions/createMove.ts +24 -3
  1035. package/src/interactions/createPress.ts +85 -41
  1036. package/src/interactions/index.ts +1 -0
  1037. package/src/label/createField.ts +58 -63
  1038. package/src/label/createLabel.ts +21 -4
  1039. package/src/label/createLabels.ts +25 -1
  1040. package/src/landmark/createLandmark.ts +27 -4
  1041. package/src/link/createLink.ts +20 -12
  1042. package/src/listbox/createListBox.ts +86 -310
  1043. package/src/listbox/createOption.ts +50 -14
  1044. package/src/live-announcer/announce.ts +21 -6
  1045. package/src/menu/createMenu.ts +92 -5
  1046. package/src/menu/createMenuItem.ts +40 -23
  1047. package/src/menu/createMenuTrigger.ts +179 -51
  1048. package/src/menu/index.ts +2 -0
  1049. package/src/menu/intl/index.ts +130 -0
  1050. package/src/meter/createMeter.ts +20 -5
  1051. package/src/numberfield/createNumberField.ts +254 -14
  1052. package/src/overlays/ariaHideOutside.ts +76 -11
  1053. package/src/overlays/createInteractOutside.ts +74 -47
  1054. package/src/overlays/createModal.tsx +42 -27
  1055. package/src/overlays/createOverlay.ts +107 -66
  1056. package/src/overlays/createOverlayTrigger.ts +21 -6
  1057. package/src/overlays/createPreventScroll.ts +92 -62
  1058. package/src/overlays/index.ts +2 -0
  1059. package/src/overlays/intl/ar-AE.json +3 -0
  1060. package/src/overlays/intl/bg-BG.json +3 -0
  1061. package/src/overlays/intl/cs-CZ.json +3 -0
  1062. package/src/overlays/intl/da-DK.json +3 -0
  1063. package/src/overlays/intl/de-DE.json +3 -0
  1064. package/src/overlays/intl/el-GR.json +3 -0
  1065. package/src/overlays/intl/en-US.json +3 -0
  1066. package/src/overlays/intl/es-ES.json +3 -0
  1067. package/src/overlays/intl/et-EE.json +3 -0
  1068. package/src/overlays/intl/fi-FI.json +3 -0
  1069. package/src/overlays/intl/fr-FR.json +3 -0
  1070. package/src/overlays/intl/he-IL.json +3 -0
  1071. package/src/overlays/intl/hr-HR.json +3 -0
  1072. package/src/overlays/intl/hu-HU.json +3 -0
  1073. package/src/overlays/intl/index.ts +122 -0
  1074. package/src/overlays/intl/it-IT.json +3 -0
  1075. package/src/overlays/intl/ja-JP.json +3 -0
  1076. package/src/overlays/intl/ko-KR.json +3 -0
  1077. package/src/overlays/intl/lt-LT.json +3 -0
  1078. package/src/overlays/intl/lv-LV.json +3 -0
  1079. package/src/overlays/intl/nb-NO.json +3 -0
  1080. package/src/overlays/intl/nl-NL.json +3 -0
  1081. package/src/overlays/intl/pl-PL.json +3 -0
  1082. package/src/overlays/intl/pt-BR.json +3 -0
  1083. package/src/overlays/intl/pt-PT.json +3 -0
  1084. package/src/overlays/intl/ro-RO.json +3 -0
  1085. package/src/overlays/intl/ru-RU.json +3 -0
  1086. package/src/overlays/intl/sk-SK.json +3 -0
  1087. package/src/overlays/intl/sl-SI.json +3 -0
  1088. package/src/overlays/intl/sr-SP.json +3 -0
  1089. package/src/overlays/intl/sv-SE.json +3 -0
  1090. package/src/overlays/intl/tr-TR.json +3 -0
  1091. package/src/overlays/intl/uk-UA.json +3 -0
  1092. package/src/overlays/intl/zh-CN.json +3 -0
  1093. package/src/overlays/intl/zh-TW.json +3 -0
  1094. package/src/popover/calculatePosition.ts +21 -3
  1095. package/src/popover/createOverlayPosition.ts +149 -41
  1096. package/src/popover/createPopover.ts +88 -23
  1097. package/src/progress/createProgressBar.ts +19 -4
  1098. package/src/radio/createRadio.ts +80 -25
  1099. package/src/radio/createRadioGroup.ts +47 -13
  1100. package/src/searchfield/createSearchField.ts +31 -2
  1101. package/src/searchfield/intl/ar-AE.json +3 -0
  1102. package/src/searchfield/intl/bg-BG.json +3 -0
  1103. package/src/searchfield/intl/cs-CZ.json +3 -0
  1104. package/src/searchfield/intl/da-DK.json +3 -0
  1105. package/src/searchfield/intl/de-DE.json +3 -0
  1106. package/src/searchfield/intl/el-GR.json +3 -0
  1107. package/src/searchfield/intl/en-US.json +3 -0
  1108. package/src/searchfield/intl/es-ES.json +3 -0
  1109. package/src/searchfield/intl/et-EE.json +3 -0
  1110. package/src/searchfield/intl/fi-FI.json +3 -0
  1111. package/src/searchfield/intl/fr-FR.json +3 -0
  1112. package/src/searchfield/intl/he-IL.json +3 -0
  1113. package/src/searchfield/intl/hr-HR.json +3 -0
  1114. package/src/searchfield/intl/hu-HU.json +3 -0
  1115. package/src/searchfield/intl/index.ts +122 -0
  1116. package/src/searchfield/intl/it-IT.json +3 -0
  1117. package/src/searchfield/intl/ja-JP.json +3 -0
  1118. package/src/searchfield/intl/ko-KR.json +3 -0
  1119. package/src/searchfield/intl/lt-LT.json +3 -0
  1120. package/src/searchfield/intl/lv-LV.json +3 -0
  1121. package/src/searchfield/intl/nb-NO.json +3 -0
  1122. package/src/searchfield/intl/nl-NL.json +3 -0
  1123. package/src/searchfield/intl/pl-PL.json +3 -0
  1124. package/src/searchfield/intl/pt-BR.json +3 -0
  1125. package/src/searchfield/intl/pt-PT.json +3 -0
  1126. package/src/searchfield/intl/ro-RO.json +3 -0
  1127. package/src/searchfield/intl/ru-RU.json +3 -0
  1128. package/src/searchfield/intl/sk-SK.json +3 -0
  1129. package/src/searchfield/intl/sl-SI.json +3 -0
  1130. package/src/searchfield/intl/sr-SP.json +3 -0
  1131. package/src/searchfield/intl/sv-SE.json +3 -0
  1132. package/src/searchfield/intl/tr-TR.json +3 -0
  1133. package/src/searchfield/intl/uk-UA.json +3 -0
  1134. package/src/searchfield/intl/zh-CN.json +3 -0
  1135. package/src/searchfield/intl/zh-TW.json +3 -0
  1136. package/src/select/createHiddenSelect.tsx +166 -69
  1137. package/src/select/createSelect.ts +80 -34
  1138. package/src/selection/DOMLayoutDelegate.ts +14 -0
  1139. package/src/selection/ListKeyboardDelegate.ts +16 -1
  1140. package/src/selection/constants.ts +14 -0
  1141. package/src/selection/createCollectionRowInteraction.ts +75 -6
  1142. package/src/selection/createScrollIntoViewOnFocus.ts +23 -8
  1143. package/src/selection/createSelectableCollection.ts +352 -226
  1144. package/src/selection/createSelectableItem.ts +51 -12
  1145. package/src/selection/createSelectableList.ts +21 -1
  1146. package/src/selection/createTypeSelect.ts +21 -5
  1147. package/src/selection/selectItem.ts +14 -0
  1148. package/src/selection/utils.ts +15 -1
  1149. package/src/separator/createSeparator.ts +17 -1
  1150. package/src/slider/createSlider.ts +24 -18
  1151. package/src/spinbutton/createSpinButton.ts +16 -2
  1152. package/src/spinbutton/index.ts +2 -10
  1153. package/src/spinbutton/intl.ts +70 -34
  1154. package/src/ssr/index.tsx +79 -48
  1155. package/src/steplist/createStepList.ts +17 -2
  1156. package/src/switch/createSwitch.ts +25 -4
  1157. package/src/table/createTable.ts +104 -52
  1158. package/src/table/createTableCell.ts +17 -2
  1159. package/src/table/createTableColumnHeader.ts +21 -3
  1160. package/src/table/createTableColumnResize.ts +19 -3
  1161. package/src/table/createTableHeaderRow.ts +17 -2
  1162. package/src/table/createTableRow.ts +29 -22
  1163. package/src/table/createTableRowGroup.ts +18 -3
  1164. package/src/table/createTableSelectAllCheckbox.ts +30 -14
  1165. package/src/table/createTableSelectionCheckbox.ts +21 -3
  1166. package/src/table/index.ts +2 -2
  1167. package/src/table/intl/ar-AE.json +13 -0
  1168. package/src/table/intl/bg-BG.json +13 -0
  1169. package/src/table/intl/cs-CZ.json +13 -0
  1170. package/src/table/intl/da-DK.json +13 -0
  1171. package/src/table/intl/de-DE.json +13 -0
  1172. package/src/table/intl/el-GR.json +13 -0
  1173. package/src/table/intl/en-US.json +13 -0
  1174. package/src/table/intl/es-ES.json +13 -0
  1175. package/src/table/intl/et-EE.json +13 -0
  1176. package/src/table/intl/fi-FI.json +13 -0
  1177. package/src/table/intl/fr-FR.json +13 -0
  1178. package/src/table/intl/he-IL.json +13 -0
  1179. package/src/table/intl/hr-HR.json +13 -0
  1180. package/src/table/intl/hu-HU.json +13 -0
  1181. package/src/table/intl/index.ts +132 -0
  1182. package/src/table/intl/it-IT.json +13 -0
  1183. package/src/table/intl/ja-JP.json +13 -0
  1184. package/src/table/intl/ko-KR.json +13 -0
  1185. package/src/table/intl/lt-LT.json +13 -0
  1186. package/src/table/intl/lv-LV.json +13 -0
  1187. package/src/table/intl/nb-NO.json +13 -0
  1188. package/src/table/intl/nl-NL.json +13 -0
  1189. package/src/table/intl/pl-PL.json +13 -0
  1190. package/src/table/intl/pt-BR.json +13 -0
  1191. package/src/table/intl/pt-PT.json +13 -0
  1192. package/src/table/intl/ro-RO.json +13 -0
  1193. package/src/table/intl/ru-RU.json +13 -0
  1194. package/src/table/intl/sk-SK.json +13 -0
  1195. package/src/table/intl/sl-SI.json +13 -0
  1196. package/src/table/intl/sr-SP.json +13 -0
  1197. package/src/table/intl/sv-SE.json +13 -0
  1198. package/src/table/intl/tr-TR.json +13 -0
  1199. package/src/table/intl/uk-UA.json +13 -0
  1200. package/src/table/intl/zh-CN.json +13 -0
  1201. package/src/table/intl/zh-TW.json +13 -0
  1202. package/src/table/types.ts +44 -2
  1203. package/src/table/utils.ts +15 -6
  1204. package/src/tabs/createTabs.ts +104 -37
  1205. package/src/tag/createTag.ts +118 -37
  1206. package/src/tag/createTagGroup.ts +20 -12
  1207. package/src/tag/intl/ar-AE.json +4 -0
  1208. package/src/tag/intl/bg-BG.json +4 -0
  1209. package/src/tag/intl/cs-CZ.json +4 -0
  1210. package/src/tag/intl/da-DK.json +4 -0
  1211. package/src/tag/intl/de-DE.json +4 -0
  1212. package/src/tag/intl/el-GR.json +4 -0
  1213. package/src/tag/intl/en-US.json +4 -0
  1214. package/src/tag/intl/es-ES.json +4 -0
  1215. package/src/tag/intl/et-EE.json +4 -0
  1216. package/src/tag/intl/fi-FI.json +4 -0
  1217. package/src/tag/intl/fr-FR.json +4 -0
  1218. package/src/tag/intl/he-IL.json +4 -0
  1219. package/src/tag/intl/hr-HR.json +4 -0
  1220. package/src/tag/intl/hu-HU.json +4 -0
  1221. package/src/tag/intl/index.ts +123 -0
  1222. package/src/tag/intl/it-IT.json +4 -0
  1223. package/src/tag/intl/ja-JP.json +4 -0
  1224. package/src/tag/intl/ko-KR.json +4 -0
  1225. package/src/tag/intl/lt-LT.json +4 -0
  1226. package/src/tag/intl/lv-LV.json +4 -0
  1227. package/src/tag/intl/nb-NO.json +4 -0
  1228. package/src/tag/intl/nl-NL.json +4 -0
  1229. package/src/tag/intl/pl-PL.json +4 -0
  1230. package/src/tag/intl/pt-BR.json +4 -0
  1231. package/src/tag/intl/pt-PT.json +4 -0
  1232. package/src/tag/intl/ro-RO.json +4 -0
  1233. package/src/tag/intl/ru-RU.json +4 -0
  1234. package/src/tag/intl/sk-SK.json +4 -0
  1235. package/src/tag/intl/sl-SI.json +4 -0
  1236. package/src/tag/intl/sr-SP.json +4 -0
  1237. package/src/tag/intl/sv-SE.json +4 -0
  1238. package/src/tag/intl/tr-TR.json +4 -0
  1239. package/src/tag/intl/uk-UA.json +4 -0
  1240. package/src/tag/intl/zh-CN.json +4 -0
  1241. package/src/tag/intl/zh-TW.json +4 -0
  1242. package/src/textfield/createTextField.ts +104 -14
  1243. package/src/toast/createToast.ts +39 -6
  1244. package/src/toast/createToastRegion.ts +28 -15
  1245. package/src/toast/intl/ar-AE.json +4 -0
  1246. package/src/toast/intl/bg-BG.json +4 -0
  1247. package/src/toast/intl/cs-CZ.json +4 -0
  1248. package/src/toast/intl/da-DK.json +4 -0
  1249. package/src/toast/intl/de-DE.json +4 -0
  1250. package/src/toast/intl/el-GR.json +4 -0
  1251. package/src/toast/intl/en-US.json +4 -0
  1252. package/src/toast/intl/es-ES.json +4 -0
  1253. package/src/toast/intl/et-EE.json +4 -0
  1254. package/src/toast/intl/fi-FI.json +4 -0
  1255. package/src/toast/intl/fr-FR.json +4 -0
  1256. package/src/toast/intl/he-IL.json +4 -0
  1257. package/src/toast/intl/hr-HR.json +4 -0
  1258. package/src/toast/intl/hu-HU.json +4 -0
  1259. package/src/toast/intl/index.ts +123 -0
  1260. package/src/toast/intl/it-IT.json +4 -0
  1261. package/src/toast/intl/ja-JP.json +4 -0
  1262. package/src/toast/intl/ko-KR.json +4 -0
  1263. package/src/toast/intl/lt-LT.json +4 -0
  1264. package/src/toast/intl/lv-LV.json +4 -0
  1265. package/src/toast/intl/nb-NO.json +4 -0
  1266. package/src/toast/intl/nl-NL.json +4 -0
  1267. package/src/toast/intl/pl-PL.json +4 -0
  1268. package/src/toast/intl/pt-BR.json +4 -0
  1269. package/src/toast/intl/pt-PT.json +4 -0
  1270. package/src/toast/intl/ro-RO.json +4 -0
  1271. package/src/toast/intl/ru-RU.json +4 -0
  1272. package/src/toast/intl/sk-SK.json +4 -0
  1273. package/src/toast/intl/sl-SI.json +4 -0
  1274. package/src/toast/intl/sr-SP.json +4 -0
  1275. package/src/toast/intl/sv-SE.json +4 -0
  1276. package/src/toast/intl/tr-TR.json +4 -0
  1277. package/src/toast/intl/uk-UA.json +4 -0
  1278. package/src/toast/intl/zh-CN.json +4 -0
  1279. package/src/toast/intl/zh-TW.json +4 -0
  1280. package/src/toggle/createToggle.ts +96 -15
  1281. package/src/tokenfield/createToken.ts +82 -0
  1282. package/src/tokenfield/createTokenField.ts +859 -0
  1283. package/src/tokenfield/index.ts +10 -0
  1284. package/src/toolbar/createToolbar.ts +26 -5
  1285. package/src/tooltip/createPreviewTrigger.ts +301 -0
  1286. package/src/tooltip/createSafeArea.ts +165 -0
  1287. package/src/tooltip/createTooltip.ts +15 -1
  1288. package/src/tooltip/createTooltipTrigger.ts +24 -3
  1289. package/src/tooltip/index.ts +7 -0
  1290. package/src/tooltip/intl/index.ts +76 -0
  1291. package/src/tree/createTree.ts +66 -50
  1292. package/src/tree/createTreeItem.ts +85 -21
  1293. package/src/tree/createTreeSelectionCheckbox.ts +29 -28
  1294. package/src/tree/intl/ar-AE.json +4 -0
  1295. package/src/tree/intl/bg-BG.json +4 -0
  1296. package/src/tree/intl/cs-CZ.json +4 -0
  1297. package/src/tree/intl/da-DK.json +4 -0
  1298. package/src/tree/intl/de-DE.json +4 -0
  1299. package/src/tree/intl/el-GR.json +4 -0
  1300. package/src/tree/intl/en-US.json +4 -0
  1301. package/src/tree/intl/es-ES.json +4 -0
  1302. package/src/tree/intl/et-EE.json +4 -0
  1303. package/src/tree/intl/fi-FI.json +4 -0
  1304. package/src/tree/intl/fr-FR.json +4 -0
  1305. package/src/tree/intl/he-IL.json +4 -0
  1306. package/src/tree/intl/hr-HR.json +4 -0
  1307. package/src/tree/intl/hu-HU.json +4 -0
  1308. package/src/tree/intl/index.ts +123 -0
  1309. package/src/tree/intl/it-IT.json +4 -0
  1310. package/src/tree/intl/ja-JP.json +4 -0
  1311. package/src/tree/intl/ko-KR.json +4 -0
  1312. package/src/tree/intl/lt-LT.json +4 -0
  1313. package/src/tree/intl/lv-LV.json +4 -0
  1314. package/src/tree/intl/nb-NO.json +4 -0
  1315. package/src/tree/intl/nl-NL.json +4 -0
  1316. package/src/tree/intl/pl-PL.json +4 -0
  1317. package/src/tree/intl/pt-BR.json +4 -0
  1318. package/src/tree/intl/pt-PT.json +4 -0
  1319. package/src/tree/intl/ro-RO.json +4 -0
  1320. package/src/tree/intl/ru-RU.json +4 -0
  1321. package/src/tree/intl/sk-SK.json +4 -0
  1322. package/src/tree/intl/sl-SI.json +4 -0
  1323. package/src/tree/intl/sr-SP.json +4 -0
  1324. package/src/tree/intl/sv-SE.json +4 -0
  1325. package/src/tree/intl/tr-TR.json +4 -0
  1326. package/src/tree/intl/uk-UA.json +4 -0
  1327. package/src/tree/intl/zh-CN.json +4 -0
  1328. package/src/tree/intl/zh-TW.json +4 -0
  1329. package/src/tree/types.ts +35 -2
  1330. package/src/utils/ShadowTreeWalker.ts +249 -0
  1331. package/src/utils/animation.ts +106 -85
  1332. package/src/utils/capture.ts +51 -0
  1333. package/src/utils/createDescription.ts +31 -8
  1334. package/src/utils/dom.ts +314 -33
  1335. package/src/utils/domAttrs.ts +84 -0
  1336. package/src/utils/env.ts +2 -0
  1337. package/src/utils/events.ts +39 -3
  1338. package/src/utils/filterDOMProps.ts +34 -2
  1339. package/src/utils/focus.ts +186 -32
  1340. package/src/utils/geometry.ts +15 -1
  1341. package/src/utils/getMetaValue.ts +57 -0
  1342. package/src/utils/getNonce.ts +40 -0
  1343. package/src/utils/globalListeners.ts +16 -3
  1344. package/src/utils/index.ts +14 -0
  1345. package/src/utils/keyboard.ts +15 -1
  1346. package/src/utils/mergeProps.ts +149 -16
  1347. package/src/utils/owner.ts +26 -0
  1348. package/src/utils/platform.ts +15 -1
  1349. package/src/utils/reactivity.ts +2 -0
  1350. package/src/utils/refs.ts +53 -0
  1351. package/src/utils/runAfterTransition.ts +117 -0
  1352. package/src/utils/scrollIntoView.ts +14 -0
  1353. package/src/utils/splitProps.ts +70 -0
  1354. package/src/utils/textSelection.ts +15 -1
  1355. package/src/virtualizer/ScrollView.ts +210 -0
  1356. package/src/virtualizer/index.ts +2 -0
  1357. package/src/virtualizer/utils.ts +100 -0
  1358. package/src/visually-hidden/createVisuallyHidden.ts +20 -4
  1359. package/dist/_chunk/createInteractionModality.js +0 -268
  1360. package/dist/_chunk/createInteractionModality.js.map +0 -1
  1361. package/dist/_chunk/createInteractionModality.jsx +0 -268
  1362. package/dist/_chunk/createInteractionModality.jsx.map +0 -1
  1363. package/dist/_chunk/focus2.js +0 -631
  1364. package/dist/_chunk/focus2.js.map +0 -1
  1365. package/dist/_chunk/focus2.jsx +0 -631
  1366. package/dist/_chunk/focus2.jsx.map +0 -1
  1367. package/dist/_chunk/visually-hidden.js.map +0 -1
  1368. package/dist/_chunk/visually-hidden.jsx.map +0 -1
  1369. package/dist/checkbox/createCheckboxGroupState.d.ts +0 -71
  1370. package/dist/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  1371. package/dist/radio/createRadioGroupState.d.ts +0 -77
  1372. package/dist/radio/createRadioGroupState.d.ts.map +0 -1
  1373. package/dist/toggle/createToggleState.d.ts +0 -34
  1374. package/dist/toggle/createToggleState.d.ts.map +0 -1
  1375. package/src/checkbox/createCheckboxGroupState.ts +0 -174
  1376. package/src/radio/createRadioGroupState.ts +0 -177
  1377. package/src/toggle/createToggleState.ts +0 -86
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSelectableList.jsx","names":[],"sources":["../../src/selection/DOMLayoutDelegate.ts","../../src/selection/ListKeyboardDelegate.ts","../../src/selection/createSelectableCollection.ts","../../src/selection/createSelectableList.ts"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/selection/DOMLayoutDelegate.ts\n\n/**\n * DOMLayoutDelegate - reads layout information for collection items directly\n * from the DOM, used by {@link ListKeyboardDelegate} for page up/down\n * navigation. Based on @react-aria/selection's `DOMLayoutDelegate`.\n *\n * React → Solid adaptation: the layout delegate captures a Solid ref accessor\n * (`() => HTMLElement | null`) instead of a React `RefObject`; everything else\n * is a faithful port.\n */\n\nimport type { Accessor } from \"solid-js\";\nimport type { Key } from \"@proyecto-viviana/solid-stately\";\nimport { getItemElement } from \"./utils\";\n\n/** A rectangle in the collection's scroll coordinate space. */\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/** The size of the collection's scrollable content. */\nexport interface Size {\n width: number;\n height: number;\n}\n\n/**\n * Provides layout information about the items in a collection. By default this\n * is read from the DOM (see {@link DOMLayoutDelegate}), but a virtualized\n * collection can supply its own implementation. Mirrors @react-types/shared's\n * `LayoutDelegate`, scoped to the members that selection navigation consumes.\n */\nexport interface LayoutDelegate {\n /** Returns the rectangle for the item with the given key, in scroll coordinates. */\n getItemRect(key: Key): Rect | null;\n /** Returns the total size of the scrollable content. */\n getContentSize(): Size;\n /** Returns the currently visible rectangle (the scroll viewport). */\n getVisibleRect(): Rect;\n /** Returns the keys between two keys (inclusive), if known without walking the collection. */\n getKeyRange?(from: Key, to: Key): Key[];\n /** Returns the key spatially to the left of the given key, if known. */\n getKeyLeftOf?(key: Key): Key | null;\n /** Returns the key spatially to the right of the given key, if known. */\n getKeyRightOf?(key: Key): Key | null;\n /** Returns the key spatially above the given key, if known. */\n getKeyAbove?(key: Key): Key | null;\n /** Returns the key spatially below the given key, if known. */\n getKeyBelow?(key: Key): Key | null;\n}\n\n/**\n * A {@link LayoutDelegate} that measures items via the DOM.\n */\nexport class DOMLayoutDelegate implements LayoutDelegate {\n private ref: Accessor<HTMLElement | null>;\n\n constructor(ref: Accessor<HTMLElement | null>) {\n this.ref = ref;\n }\n\n getItemRect(key: Key): Rect | null {\n const container = this.ref();\n if (!container) {\n return null;\n }\n const item = key != null ? getItemElement(this.ref, key) : null;\n if (!item) {\n return null;\n }\n\n const containerRect = container.getBoundingClientRect();\n const itemRect = item.getBoundingClientRect();\n\n return {\n x: itemRect.left - containerRect.left - container.clientLeft + container.scrollLeft,\n y: itemRect.top - containerRect.top - container.clientTop + container.scrollTop,\n width: itemRect.width,\n height: itemRect.height,\n };\n }\n\n getContentSize(): Size {\n const container = this.ref();\n return {\n width: container?.scrollWidth ?? 0,\n height: container?.scrollHeight ?? 0,\n };\n }\n\n getVisibleRect(): Rect {\n const container = this.ref();\n return {\n x: container?.scrollLeft ?? 0,\n y: container?.scrollTop ?? 0,\n width: container?.clientWidth ?? 0,\n height: container?.clientHeight ?? 0,\n };\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/selection/ListKeyboardDelegate.ts\n\n/**\n * ListKeyboardDelegate - keyboard navigation for a list/stack collection.\n * Based on\n * `packages/react-aria/src/selection/ListKeyboardDelegate.ts`.\n *\n * React → Solid adaptations (faithful to upstream behavior):\n * - The ref is a Solid accessor (`() => HTMLElement | null`) rather than a\n * React `RefObject`; `this.ref()` replaces `this.ref.current`.\n * - Only the options-object constructor is kept. Upstream also retains a legacy\n * positional overload for old `useSelectableCollection` callers; we have none.\n * - `getKeyLeftOf` / `getKeyRightOf` are still removed for a vertical stack\n * (so `delegate.getKeyLeftOf` is `undefined`, exactly as upstream), which the\n * selectable-collection handler relies on to no-op Left/Right.\n * - Disabled resolution reads our node shape: per-item disabled lives on the\n * top-level `node.isDisabled` (and is also funneled into `disabledKeys`),\n * while upstream reads `node.props.isDisabled`. We check both so the delegate\n * is correct whether constructed from a manager or directly in a test.\n */\n\nimport type { Accessor } from \"solid-js\";\nimport type {\n Collection,\n CollectionNode,\n DisabledBehavior,\n Key,\n} from \"@proyecto-viviana/solid-stately\";\nimport type { KeyboardDelegate } from \"../grid/types\";\nimport { isScrollable } from \"../utils/dom\";\nimport { getItemElement } from \"./utils\";\nimport { DOMLayoutDelegate, type LayoutDelegate, type Rect } from \"./DOMLayoutDelegate\";\n\n/** The primary orientation of a list's items. */\nexport type Orientation = \"horizontal\" | \"vertical\";\n/** Text direction. */\nexport type Direction = \"ltr\" | \"rtl\";\n\nexport interface ListKeyboardDelegateOptions<T> {\n /** The collection to navigate. */\n collection: Collection<T>;\n /** A Solid ref accessor to the collection element. */\n ref: Accessor<HTMLElement | null>;\n /** A locale-aware collator used for typeahead search. */\n collator?: Intl.Collator;\n /** The layout of the items: a 1D `stack` (default) or a 2D `grid`. */\n layout?: \"stack\" | \"grid\";\n /** The primary orientation of the items. @default 'vertical' */\n orientation?: Orientation;\n /** The text direction. */\n direction?: Direction;\n /** The item keys that are disabled. */\n disabledKeys?: Set<Key>;\n /** Whether disabled items are skipped by navigation. @default 'all' */\n disabledBehavior?: DisabledBehavior;\n /** A delegate providing layout information (defaults to a DOM-backed one). */\n layoutDelegate?: LayoutDelegate;\n}\n\n/**\n * A keyboard delegate that handles navigation within a list/stack collection.\n */\nexport class ListKeyboardDelegate<T> implements KeyboardDelegate {\n private collection: Collection<T>;\n private disabledKeys: Set<Key>;\n private disabledBehavior: DisabledBehavior;\n private ref: Accessor<HTMLElement | null>;\n private collator: Intl.Collator | undefined;\n private layout: \"stack\" | \"grid\";\n private orientation: Orientation;\n private direction: Direction | undefined;\n private layoutDelegate: LayoutDelegate;\n\n /** Present unless this is a vertical stack (mirrors upstream's method deletion). */\n getKeyLeftOf?: (key: Key, options?: { includeDisabled?: boolean }) => Key | null;\n /** Present unless this is a vertical stack (mirrors upstream's method deletion). */\n getKeyRightOf?: (key: Key, options?: { includeDisabled?: boolean }) => Key | null;\n\n constructor(options: ListKeyboardDelegateOptions<T>) {\n this.collection = options.collection;\n this.ref = options.ref;\n this.collator = options.collator;\n this.disabledKeys = options.disabledKeys ?? new Set();\n this.disabledBehavior = options.disabledBehavior ?? \"all\";\n this.orientation = options.orientation ?? \"vertical\";\n this.direction = options.direction;\n this.layout = options.layout ?? \"stack\";\n this.layoutDelegate = options.layoutDelegate ?? new DOMLayoutDelegate(options.ref);\n\n // For anything but a vertical stack, expose the left/right methods. Leaving\n // them undefined for a vertical stack matches upstream, which deletes them so\n // the selectable-collection handler treats Left/Right as no-ops.\n if (!(this.layout === \"stack\" && this.orientation === \"vertical\")) {\n this.getKeyLeftOf = (key, opts) => this.computeKeyLeftOf(key, opts);\n this.getKeyRightOf = (key, opts) => this.computeKeyRightOf(key, opts);\n }\n }\n\n private isDisabled(item: CollectionNode<T>): boolean {\n return (\n this.disabledBehavior === \"all\" &&\n (item.props?.isDisabled === true ||\n item.isDisabled === true ||\n this.disabledKeys.has(item.key)) &&\n item.props?.disabledBehavior !== \"selection\"\n );\n }\n\n private findNextNonDisabled(\n key: Key | null,\n getNext: (key: Key) => Key | null,\n includeDisabled = false,\n ): Key | null {\n let nextKey = key;\n while (nextKey != null) {\n const item = this.collection.getItem(nextKey);\n if (item?.type === \"item\" && (includeDisabled || !this.isDisabled(item))) {\n return nextKey;\n }\n\n nextKey = getNext(nextKey);\n }\n\n return null;\n }\n\n getNextKey(key: Key, options?: { includeDisabled?: boolean }): Key | null {\n let nextKey: Key | null = key;\n nextKey = this.collection.getKeyAfter(nextKey);\n return this.findNextNonDisabled(\n nextKey,\n (k) => this.collection.getKeyAfter(k),\n options?.includeDisabled,\n );\n }\n\n getPreviousKey(key: Key, options?: { includeDisabled?: boolean }): Key | null {\n let nextKey: Key | null = key;\n nextKey = this.collection.getKeyBefore(nextKey);\n return this.findNextNonDisabled(\n nextKey,\n (k) => this.collection.getKeyBefore(k),\n options?.includeDisabled,\n );\n }\n\n private findKey(\n key: Key,\n nextKey: (key: Key) => Key | null,\n shouldSkip: (prevRect: Rect, itemRect: Rect) => boolean,\n ): Key | null {\n let tempKey: Key | null = key;\n let itemRect = this.layoutDelegate.getItemRect(tempKey);\n if (!itemRect || tempKey == null) {\n return null;\n }\n\n // Find the item above or below in the same column.\n const prevRect = itemRect;\n do {\n tempKey = nextKey(tempKey);\n if (tempKey == null) {\n break;\n }\n itemRect = this.layoutDelegate.getItemRect(tempKey);\n } while (itemRect && shouldSkip(prevRect, itemRect) && tempKey != null);\n\n return tempKey;\n }\n\n private isSameRow(prevRect: Rect, itemRect: Rect): boolean {\n return prevRect.y === itemRect.y || prevRect.x !== itemRect.x;\n }\n\n private isSameColumn(prevRect: Rect, itemRect: Rect): boolean {\n return prevRect.x === itemRect.x || prevRect.y !== itemRect.y;\n }\n\n // Checks whether the next/prev key is spatially above/below the current key.\n // If not, we are in a reversed (column-reverse) layout and need to flip.\n private isReversed(key: Key): boolean {\n const nextKey = this.getNextKey(key);\n const currentEl = getItemElement(this.ref, key);\n if (nextKey != null) {\n const nextEl = getItemElement(this.ref, nextKey);\n if (!currentEl || !nextEl) {\n return false;\n }\n return currentEl.getBoundingClientRect().top > nextEl.getBoundingClientRect().top;\n }\n const prevKey = this.getPreviousKey(key);\n if (prevKey != null) {\n const prevEl = getItemElement(this.ref, prevKey);\n if (!currentEl || !prevEl) {\n return false;\n }\n return prevEl.getBoundingClientRect().top > currentEl.getBoundingClientRect().top;\n }\n return false;\n }\n\n getKeyBelow(key: Key, options?: { includeDisabled?: boolean }): Key | null {\n if (this.layout === \"grid\" && this.orientation === \"vertical\") {\n return this.findKey(key, (k) => this.getNextKey(k, options), this.isSameRow);\n } else if (this.orientation === \"vertical\") {\n return this.isReversed(key)\n ? this.getPreviousKey(key, options)\n : this.getNextKey(key, options);\n } else {\n return this.getNextKey(key, options);\n }\n }\n\n getKeyAbove(key: Key, options?: { includeDisabled?: boolean }): Key | null {\n if (this.layout === \"grid\" && this.orientation === \"vertical\") {\n return this.findKey(key, (k) => this.getPreviousKey(k, options), this.isSameRow);\n } else if (this.orientation === \"vertical\") {\n return this.isReversed(key)\n ? this.getNextKey(key, options)\n : this.getPreviousKey(key, options);\n } else {\n return this.getPreviousKey(key, options);\n }\n }\n\n private getNextColumn(\n key: Key,\n right: boolean,\n options?: { includeDisabled?: boolean },\n ): Key | null {\n return right ? this.getPreviousKey(key, options) : this.getNextKey(key, options);\n }\n\n private computeKeyRightOf(key: Key, options?: { includeDisabled?: boolean }): Key | null {\n const method = this.direction === \"ltr\" ? \"getKeyRightOf\" : \"getKeyLeftOf\";\n const layoutMethod = this.layoutDelegate[method];\n if (layoutMethod) {\n const next = layoutMethod.call(this.layoutDelegate, key);\n return this.findNextNonDisabled(\n next,\n (k) => this.layoutDelegate[method]?.call(this.layoutDelegate, k) ?? null,\n options?.includeDisabled,\n );\n }\n\n if (this.layout === \"grid\") {\n if (this.orientation === \"vertical\") {\n return this.getNextColumn(key, this.direction === \"rtl\", options);\n } else {\n return this.findKey(\n key,\n (k) => this.getNextColumn(k, this.direction === \"rtl\", options),\n this.isSameColumn,\n );\n }\n } else if (this.orientation === \"horizontal\") {\n return this.getNextColumn(key, this.direction === \"rtl\", options);\n }\n\n return null;\n }\n\n private computeKeyLeftOf(key: Key, options?: { includeDisabled?: boolean }): Key | null {\n const method = this.direction === \"ltr\" ? \"getKeyLeftOf\" : \"getKeyRightOf\";\n const layoutMethod = this.layoutDelegate[method];\n if (layoutMethod) {\n const next = layoutMethod.call(this.layoutDelegate, key);\n return this.findNextNonDisabled(\n next,\n (k) => this.layoutDelegate[method]?.call(this.layoutDelegate, k) ?? null,\n options?.includeDisabled,\n );\n }\n\n if (this.layout === \"grid\") {\n if (this.orientation === \"vertical\") {\n return this.getNextColumn(key, this.direction === \"ltr\", options);\n } else {\n return this.findKey(\n key,\n (k) => this.getNextColumn(k, this.direction === \"ltr\", options),\n this.isSameColumn,\n );\n }\n } else if (this.orientation === \"horizontal\") {\n return this.getNextColumn(key, this.direction === \"ltr\", options);\n }\n\n return null;\n }\n\n getFirstKey(): Key | null {\n const key = this.collection.getFirstKey();\n return this.findNextNonDisabled(key, (k) => this.collection.getKeyAfter(k));\n }\n\n getLastKey(): Key | null {\n const key = this.collection.getLastKey();\n return this.findNextNonDisabled(key, (k) => this.collection.getKeyBefore(k));\n }\n\n getKeyPageAbove(key: Key): Key | null {\n const menu = this.ref();\n let itemRect = this.layoutDelegate.getItemRect(key);\n if (!itemRect) {\n return null;\n }\n\n const reversed = this.isReversed(key);\n if (menu && !isScrollable(menu)) {\n return this.getFirstKey();\n }\n\n let nextKey: Key | null = key;\n if (this.orientation === \"horizontal\") {\n const pageX = Math.max(\n 0,\n itemRect.x + itemRect.width - this.layoutDelegate.getVisibleRect().width,\n );\n\n while (itemRect && itemRect.x > pageX && nextKey != null) {\n nextKey = this.getKeyAbove(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n } else {\n const visibleRect = this.layoutDelegate.getVisibleRect();\n // Column-reverse makes y negative for items, so use current pos - height instead.\n const pageY = reversed\n ? itemRect.y - visibleRect.height\n : Math.max(0, itemRect.y + itemRect.height - visibleRect.height);\n\n while (itemRect && itemRect.y > pageY && nextKey != null) {\n nextKey = this.getKeyAbove(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n }\n\n return nextKey ?? (reversed ? this.getLastKey() : this.getFirstKey());\n }\n\n getKeyPageBelow(key: Key): Key | null {\n const menu = this.ref();\n let itemRect = this.layoutDelegate.getItemRect(key);\n if (!itemRect) {\n return null;\n }\n\n const reversed = this.isReversed(key);\n if (menu && !isScrollable(menu)) {\n return this.getLastKey();\n }\n\n let nextKey: Key | null = key;\n if (this.orientation === \"horizontal\") {\n const pageX = Math.min(\n this.layoutDelegate.getContentSize().width,\n itemRect.x - itemRect.width + this.layoutDelegate.getVisibleRect().width,\n );\n\n while (itemRect && itemRect.x < pageX && nextKey != null) {\n nextKey = this.getKeyBelow(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n } else {\n const pageY = Math.min(\n this.layoutDelegate.getContentSize().height,\n itemRect.y - itemRect.height + this.layoutDelegate.getVisibleRect().height,\n );\n\n while (itemRect && itemRect.y < pageY && nextKey != null) {\n nextKey = this.getKeyBelow(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n }\n\n return nextKey ?? (reversed ? this.getFirstKey() : this.getLastKey());\n }\n\n getKeyForSearch(search: string, fromKey?: Key): Key | null {\n if (!this.collator) {\n return null;\n }\n\n const collection = this.collection;\n let key = fromKey ?? this.getFirstKey();\n while (key != null) {\n const item = collection.getItem(key);\n if (!item) {\n return null;\n }\n const substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getNextKey(key);\n }\n\n return null;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/selection/useSelectableCollection.ts\n\n/**\n * createSelectableCollection - keyboard, focus, and selection interactions for a\n * selectable collection. Based on @react-aria/selection's\n * `useSelectableCollection`.\n *\n * React → Solid adaptations (faithful to upstream behavior):\n * - `ref` / `scrollRef` are Solid accessors; `keyboardDelegate` may be an\n * accessor so a recreated delegate stays current.\n * - Per-render React effects become `createEffect`s that read the manager's\n * reactive getters: the autofocus and scroll-into-view effects track\n * `isFocused` / `focusedKey` / `collection.size` and run when those change.\n * `useUpdateLayoutEffect` (skip-first) maps to `on(..., { defer: true })`.\n * - Plain closure variables replace `useRef` (a Solid component body runs once).\n * - React's bubbling `onFocus` / `onBlur` are `onFocusIn` / `onFocusOut`\n * (the native bubbling focus events) here.\n * - The link branch opens the anchor directly (we have no router abstraction)\n * and needs no `flushSync` — `setFocusedKey` is synchronous and the keyed\n * item element already exists in the DOM.\n * - Ticket #100 tracks the missing virtual-focus cursor movement through\n * `moveVirtualFocus` and `dispatchVirtualFocus`. The focused-key bookkeeping\n * around it is preserved.\n */\n\nimport { onOwnedCleanup } from \"../utils/owner\";\nimport { createEffect, createTrackedEffect, flush } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport type { FocusStrategy, Key, SelectionManager } from \"@proyecto-viviana/solid-stately\";\nimport type { KeyboardDelegate } from \"../grid/types\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport {\n getActiveElement,\n getEventTarget,\n getFocusableTreeWalker,\n isFocusWithin,\n isTabbable,\n nodeContains,\n openLink,\n} from \"../utils/dom\";\nimport { focusSafely, focusWithoutScrolling } from \"../utils/focus\";\nimport { scrollIntoView, scrollIntoViewport } from \"../utils/scrollIntoView\";\nimport { getInteractionModality } from \"../interactions/createInteractionModality\";\nimport {\n createKeyboard,\n type KeyboardEvent as AriaKeyboardEvent,\n type KeyboardShortcutBindings,\n} from \"../interactions/createKeyboard\";\nimport { isCtrlKeyPressed } from \"../utils/keyboard\";\nimport { isMac } from \"../utils/platform\";\nimport { useLocale } from \"../i18n\";\nimport { createTypeSelect } from \"./createTypeSelect\";\nimport { getItemElement, isNonContiguousSelectionModifier, registerCollectionId } from \"./utils\";\nimport { CLEAR_FOCUS_EVENT, FOCUS_EVENT } from \"./constants\";\nimport { isVirtualDragging } from \"../dnd/DragManager\";\n\nexport interface CreateSelectableCollectionOptions<T = unknown> {\n /** An interface for reading and updating multiple selection state. */\n selectionManager: SelectionManager<T>;\n /** A delegate object that implements behavior for keyboard focus movement. */\n keyboardDelegate: MaybeAccessor<KeyboardDelegate>;\n /** The ref accessor attached to the element representing the collection. */\n ref: () => HTMLElement | null;\n /** Whether the collection or one of its items should be auto-focused. @default false */\n autoFocus?: boolean | FocusStrategy;\n /** Whether focus should wrap around when the end/start is reached. @default false */\n shouldFocusWrap?: boolean;\n /** Whether the collection allows empty selection. @default false */\n disallowEmptySelection?: boolean;\n /** Whether the user can select all items via keyboard shortcut. @default false */\n disallowSelectAll?: boolean;\n /** Whether Escape clears selection. @default 'clearSelection' */\n escapeKeyBehavior?: \"clearSelection\" | \"none\";\n /** Whether selection should occur automatically on focus. @default selectionBehavior === 'replace' */\n selectOnFocus?: boolean;\n /** Whether typeahead is disabled. @default false */\n disallowTypeAhead?: boolean;\n /** Whether the collection items use virtual focus instead of being focused directly. */\n shouldUseVirtualFocus?: boolean;\n /** Whether navigation through the Tab key is enabled. */\n allowsTabNavigation?: boolean;\n /** Whether the collection items are contained in a virtual scroller. */\n isVirtualized?: boolean;\n /** The ref accessor attached to the scrollable body. Defaults to the collection ref. */\n scrollRef?: () => HTMLElement | null;\n /** The behavior of links in the collection. @default 'action' */\n linkBehavior?: \"action\" | \"selection\" | \"override\";\n /** Which item to focus when tabbing into the collection. @private */\n UNSTABLE_focusOnEntry?: \"first\" | \"last\";\n}\n\nexport interface SelectableCollectionAria {\n /** Props for the collection element. */\n collectionProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Handles interactions with selectable collections.\n */\nexport function createSelectableCollection<T = unknown>(\n options: CreateSelectableCollectionOptions<T>,\n): SelectableCollectionAria {\n const manager = options.selectionManager;\n const delegate = (): KeyboardDelegate => access(options.keyboardDelegate);\n const ref = options.ref;\n const scrollRef = options.scrollRef ?? ref;\n const autoFocus = options.autoFocus ?? false;\n const shouldFocusWrap = options.shouldFocusWrap ?? false;\n const disallowEmptySelection = options.disallowEmptySelection ?? false;\n const disallowSelectAll = options.disallowSelectAll ?? false;\n const escapeKeyBehavior = options.escapeKeyBehavior ?? \"clearSelection\";\n const disallowTypeAhead = options.disallowTypeAhead ?? false;\n const shouldUseVirtualFocus = options.shouldUseVirtualFocus ?? false;\n const allowsTabNavigation = options.allowsTabNavigation ?? false;\n const linkBehavior = options.linkBehavior ?? \"action\";\n const focusOnEntry = options.UNSTABLE_focusOnEntry;\n\n // Read at call time so a long-press toggling selectionBehavior is reflected.\n const selectOnFocus = (): boolean =>\n options.selectOnFocus ?? manager.selectionBehavior === \"replace\";\n\n const locale = useLocale();\n const direction = (): \"ltr\" | \"rtl\" => locale().direction;\n\n const navigateToKey = (\n e: AriaKeyboardEvent,\n key: Key | undefined | null,\n childFocus?: FocusStrategy,\n ): boolean | void => {\n if (key != null) {\n if (\n manager.isLink(key) &&\n linkBehavior === \"selection\" &&\n selectOnFocus() &&\n !isNonContiguousSelectionModifier(e)\n ) {\n manager.setFocusedKey(key, childFocus);\n const item = getItemElement(ref, key);\n if (item instanceof HTMLAnchorElement) {\n openLink(item, e);\n return;\n }\n\n return false;\n }\n\n manager.setFocusedKey(key, childFocus);\n\n if (manager.isLink(key) && linkBehavior === \"override\") {\n return false;\n }\n\n if (e.shiftKey && manager.selectionMode === \"multiple\") {\n manager.extendSelection(key);\n return;\n } else if (selectOnFocus() && !isNonContiguousSelectionModifier(e)) {\n manager.replaceSelection(key);\n return;\n }\n }\n\n return false;\n };\n\n const arrowDown = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getKeyBelow) {\n let nextKey =\n manager.focusedKey != null ? d.getKeyBelow(manager.focusedKey) : d.getFirstKey?.();\n if (nextKey == null && shouldFocusWrap) {\n nextKey = d.getFirstKey?.(manager.focusedKey ?? undefined);\n }\n if (nextKey != null) {\n navigateToKey(e, nextKey);\n return;\n }\n }\n return false;\n };\n\n const arrowUp = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getKeyAbove) {\n let nextKey =\n manager.focusedKey != null ? d.getKeyAbove(manager.focusedKey) : d.getLastKey?.();\n if (nextKey == null && shouldFocusWrap) {\n nextKey = d.getLastKey?.(manager.focusedKey ?? undefined);\n }\n if (nextKey != null) {\n navigateToKey(e, nextKey);\n return;\n }\n }\n return false;\n };\n\n const home = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getFirstKey) {\n if (manager.focusedKey == null && e.shiftKey) {\n return false;\n }\n const firstKey = d.getFirstKey(manager.focusedKey ?? undefined, isCtrlKeyPressed(e));\n manager.setFocusedKey(firstKey);\n if (firstKey != null) {\n if (isCtrlKeyPressed(e) && e.shiftKey && manager.selectionMode === \"multiple\") {\n manager.extendSelection(firstKey);\n return;\n } else if (selectOnFocus()) {\n manager.replaceSelection(firstKey);\n return;\n }\n }\n }\n return false;\n };\n\n const arrowLeft = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getKeyLeftOf) {\n let nextKey =\n manager.focusedKey != null ? d.getKeyLeftOf(manager.focusedKey) : d.getFirstKey?.();\n if (nextKey == null && shouldFocusWrap) {\n nextKey =\n direction() === \"rtl\"\n ? d.getFirstKey?.(manager.focusedKey ?? undefined)\n : d.getLastKey?.(manager.focusedKey ?? undefined);\n }\n if (nextKey != null) {\n navigateToKey(e, nextKey, direction() === \"rtl\" ? \"first\" : \"last\");\n return;\n }\n }\n return false;\n };\n\n const arrowRight = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getKeyRightOf) {\n let nextKey =\n manager.focusedKey != null ? d.getKeyRightOf(manager.focusedKey) : d.getFirstKey?.();\n if (nextKey == null && shouldFocusWrap) {\n nextKey =\n direction() === \"rtl\"\n ? d.getLastKey?.(manager.focusedKey ?? undefined)\n : d.getFirstKey?.(manager.focusedKey ?? undefined);\n }\n if (nextKey != null) {\n navigateToKey(e, nextKey, direction() === \"rtl\" ? \"last\" : \"first\");\n return;\n }\n }\n return false;\n };\n\n const end = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getLastKey) {\n if (manager.focusedKey == null && e.shiftKey) {\n return false;\n }\n const lastKey = d.getLastKey(manager.focusedKey ?? undefined, isCtrlKeyPressed(e));\n manager.setFocusedKey(lastKey);\n if (lastKey != null) {\n if (isCtrlKeyPressed(e) && e.shiftKey && manager.selectionMode === \"multiple\") {\n manager.extendSelection(lastKey);\n return;\n } else if (selectOnFocus()) {\n manager.replaceSelection(lastKey);\n return;\n }\n }\n }\n return false;\n };\n\n const pageDown = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getKeyPageBelow && manager.focusedKey != null) {\n const nextKey = d.getKeyPageBelow(manager.focusedKey);\n if (nextKey != null) {\n return navigateToKey(e, nextKey);\n }\n }\n return false;\n };\n\n const pageUp = (e: AriaKeyboardEvent): boolean | void => {\n const d = delegate();\n if (d.getKeyPageAbove && manager.focusedKey != null) {\n const nextKey = d.getKeyPageAbove(manager.focusedKey);\n if (nextKey != null) {\n return navigateToKey(e, nextKey);\n }\n }\n return false;\n };\n\n const selectAll = (): boolean | void => {\n if (manager.selectionMode === \"multiple\" && disallowSelectAll !== true) {\n manager.selectAll();\n return;\n }\n return false;\n };\n\n const escape = (): boolean | void => {\n if (\n escapeKeyBehavior === \"clearSelection\" &&\n !disallowEmptySelection &&\n manager.selectedKeys.size !== 0\n ) {\n manager.clearSelection();\n return;\n }\n return false;\n };\n\n const tab = () => {\n const root = ref();\n if (!allowsTabNavigation && root) {\n const walker = getFocusableTreeWalker(root, { tabbable: true });\n let next: HTMLElement | undefined;\n let last: Node | null;\n do {\n last = walker.lastChild();\n if (last) {\n next = last as HTMLElement;\n }\n } while (last);\n\n const activeElement = getActiveElement();\n if (next && (!isFocusWithin(next) || (activeElement && !isTabbable(activeElement)))) {\n focusWithoutScrolling(next);\n }\n }\n return { shouldContinuePropagation: true, shouldPreventDefault: false };\n };\n\n const shiftTab = () => {\n const root = ref();\n if (!allowsTabNavigation && root) {\n root.focus();\n }\n return { shouldContinuePropagation: true, shouldPreventDefault: false };\n };\n\n type ShortcutAction = KeyboardShortcutBindings[string];\n const withShiftSelection = (key: string, callback: ShortcutAction): KeyboardShortcutBindings => ({\n [isMac() ? `${key}+Shift+Alt` : `${key}+Shift+Control`]: callback,\n [`${key}+Shift`]: callback,\n [isMac() ? `${key}+Alt` : `${key}+Control`]: callback,\n [key]: callback,\n });\n\n const { keyboardProps: repeatKeyboardProps } = createKeyboard({\n shortcuts: {\n ...withShiftSelection(\"ArrowDown\", arrowDown),\n ...withShiftSelection(\"ArrowUp\", arrowUp),\n ...withShiftSelection(\"ArrowLeft\", arrowLeft),\n ...withShiftSelection(\"ArrowRight\", arrowRight),\n ...withShiftSelection(\"PageDown\", pageDown),\n ...withShiftSelection(\"PageUp\", pageUp),\n },\n allowRepeats: true,\n });\n\n const { keyboardProps } = createKeyboard({\n shortcuts: {\n ...withShiftSelection(\"Home\", home),\n ...withShiftSelection(\"End\", end),\n \"Mod+A\": selectAll,\n Escape: escape,\n Tab: tab,\n \"Tab+Shift\": shiftTab,\n },\n });\n\n // Store the scroll position so we can restore it later.\n const scrollPos = { top: 0, left: 0 };\n addRefListener(scrollRef, \"scroll\", () => {\n const sr = scrollRef();\n scrollPos.top = sr?.scrollTop ?? 0;\n scrollPos.left = sr?.scrollLeft ?? 0;\n });\n\n const onFocusIn = (e: FocusEvent) => {\n const currentTarget = e.currentTarget as Element;\n if (manager.isFocused) {\n // If a focus event bubbled through a portal, reset focus state.\n if (!nodeContains(currentTarget, getEventTarget(e) as Node)) {\n manager.setFocused(false);\n }\n return;\n }\n\n // Focus events can bubble through portals. Ignore these events.\n if (!nodeContains(currentTarget, getEventTarget(e) as Node)) {\n return;\n }\n\n const modality = getInteractionModality();\n manager.setFocused(true);\n const navigate = (key: Key | undefined | null) => {\n if (key != null) {\n manager.setFocusedKey(key);\n if (selectOnFocus() && !manager.isSelected(key)) {\n manager.replaceSelection(key);\n }\n }\n };\n\n if (focusOnEntry && (modality === \"keyboard\" || modality === \"virtual\")) {\n navigate(focusOnEntry === \"first\" ? delegate().getFirstKey?.() : delegate().getLastKey?.());\n } else if (manager.focusedKey == null) {\n // If the user hasn't yet interacted with the collection there will be no\n // focusedKey set. Detect whether the user is tabbing forward or backward\n // and focus the first or last item accordingly.\n const relatedTarget = e.relatedTarget as Element | null;\n if (\n relatedTarget &&\n currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING\n ) {\n navigate(manager.lastSelectedKey ?? delegate().getLastKey?.());\n } else {\n navigate(manager.firstSelectedKey ?? delegate().getFirstKey?.());\n }\n } else if (scrollRef()) {\n // Restore the scroll position to what it was before.\n const sr = scrollRef()!;\n sr.scrollTop = scrollPos.top;\n sr.scrollLeft = scrollPos.left;\n }\n\n if (manager.focusedKey != null && scrollRef()) {\n // Refocus and scroll the focused item into view if it exists within the\n // scrollable region.\n const element = getItemElement(ref, manager.focusedKey);\n if (element instanceof HTMLElement) {\n // Prevents a flash of focus on the first/last element, or the collection.\n if (!isFocusWithin(element) && !shouldUseVirtualFocus) {\n focusWithoutScrolling(element);\n }\n\n if (modality === \"keyboard\" || (focusOnEntry && modality === \"virtual\")) {\n scrollIntoViewport(element, { containingElement: ref()! });\n }\n }\n }\n\n try {\n flush();\n } catch {\n /* inside an effect apply — DOM updates on the current flush */\n }\n };\n\n const onFocusOut = (e: FocusEvent) => {\n const currentTarget = e.currentTarget as Element;\n // Don't set blurred and then focused again if moving focus within the collection.\n if (nodeContains(currentTarget, e.relatedTarget as Node)) {\n return;\n }\n\n // Windowed collections remount the focused option when the slice/spacers\n // change. Removing that node fires focusout with a null relatedTarget and\n // would otherwise clear isFocused, so the remounted option never restores\n // DOM focus (RAC keeps the persisted node, so this path does not run).\n const focusedKey = manager.focusedKey;\n if (e.relatedTarget == null && focusedKey != null) {\n // During a keyboard/virtual drag, DOM focus belongs to the drop indicator\n // (`useDroppableItem.ts:84-88`). Restoring the focused option here — and\n // especially restoring an `inert` option, which Chromium then maps to the\n // collection — bounces `document.activeElement` onto `listbox:Permissions`.\n if (isVirtualDragging()) {\n return;\n }\n const lostTarget = e.target as Node;\n requestAnimationFrame(() => {\n if (manager.focusedKey !== focusedKey) {\n return;\n }\n const item = getItemElement(ref, focusedKey);\n if (item instanceof HTMLElement && item !== lostTarget) {\n manager.setFocused(true);\n if (!shouldUseVirtualFocus) {\n focusWithoutScrolling(item);\n }\n return;\n }\n if (lostTarget.isConnected) {\n manager.setFocused(false);\n }\n });\n return;\n }\n\n manager.setFocused(false);\n };\n\n // Whether to auto-focus the first item once the collection updates (used by\n // virtual focus / autocomplete as the user types).\n let shouldVirtualFocusFirst = false;\n\n if (shouldUseVirtualFocus) {\n addRefListener(ref, FOCUS_EVENT, (e: Event) => {\n const detail = (e as CustomEvent).detail;\n e.stopPropagation();\n manager.setFocused(true);\n // If the user is typing forwards, autofocus the first option in the list.\n if (detail?.focusStrategy === \"first\") {\n shouldVirtualFocusFirst = true;\n }\n });\n\n addRefListener(ref, CLEAR_FOCUS_EVENT, (e: Event) => {\n e.stopPropagation();\n manager.setFocused(false);\n if ((e as CustomEvent).detail?.clearFocusKey) {\n manager.setFocusedKey(null);\n }\n });\n }\n\n // Update active descendant (skip-first; runs on [firstKey, collection.size]).\n createEffect(\n () => [delegate().getFirstKey?.() ?? null, manager.collection.size] as const,\n ([firstKey]) => {\n if (!shouldVirtualFocusFirst) {\n return;\n }\n if (firstKey == null) {\n // No focusable items: clear the virtual-focus intent once the\n // collection is settled. Ticket #100 tracks the missing AT cursor\n // reset for this branch.\n if (manager.collection.size > 0) {\n shouldVirtualFocusFirst = false;\n }\n } else {\n manager.setFocusedKey(firstKey);\n shouldVirtualFocusFirst = false;\n }\n },\n { defer: true },\n );\n\n // Reset the focus-first flag if the focused key changed by any other means.\n createEffect(\n () => manager.focusedKey,\n () => {\n if (manager.collection.size > 0) {\n shouldVirtualFocusFirst = false;\n }\n },\n { defer: true },\n );\n\n // Auto-focus the collection (or its first/last/selected item) on mount, once\n // the collection has items. Re-runs as the collection size changes.\n let autoFocusActive = autoFocus !== false;\n let didAutoFocus = false;\n createTrackedEffect(() => {\n const size = manager.collection.size;\n const selectedKeys = manager.selectedKeys;\n if (!autoFocusActive) {\n return;\n }\n\n let focusedKey: Key | null = null;\n if (autoFocus === \"first\") {\n focusedKey = delegate().getFirstKey?.() ?? null;\n }\n if (autoFocus === \"last\") {\n focusedKey = delegate().getLastKey?.() ?? null;\n }\n\n // If there are any selected keys, make the first selectable one the focus target.\n if (selectedKeys.size) {\n for (const key of selectedKeys) {\n if (manager.canSelectItem(key)) {\n focusedKey = key;\n break;\n }\n }\n }\n\n manager.setFocused(true);\n manager.setFocusedKey(focusedKey);\n\n if (\n focusedKey != null &&\n selectOnFocus() &&\n !selectedKeys.size &&\n manager.canSelectItem(focusedKey)\n ) {\n manager.replaceSelection(focusedKey);\n }\n\n // If no default focus key is selected, focus the collection itself.\n const root = ref();\n if (focusedKey == null && !shouldUseVirtualFocus && root) {\n focusSafely(root);\n }\n\n // Wait until the collection has items to finish auto-focusing.\n if (size > 0) {\n autoFocusActive = false;\n didAutoFocus = true;\n }\n });\n\n // Scroll the focused element into view when the focusedKey changes.\n let lastFocusedKey = manager.focusedKey;\n let raf: number | null = null;\n createTrackedEffect(() => {\n const isFocused = manager.isFocused;\n const focusedKey = manager.focusedKey;\n const root = ref();\n const sr = scrollRef();\n if (\n isFocused &&\n focusedKey != null &&\n (focusedKey !== lastFocusedKey || didAutoFocus) &&\n sr &&\n root\n ) {\n const modality = getInteractionModality();\n const element = getItemElement(ref, focusedKey);\n if (!(element instanceof HTMLElement)) {\n // The element wasn't found yet (e.g. a virtualizer hasn't rendered it).\n // Return without updating bookkeeping so we retry on the next change.\n return;\n }\n\n if (modality === \"keyboard\" || didAutoFocus) {\n if (raf != null) {\n cancelAnimationFrame(raf);\n }\n\n raf = requestAnimationFrame(() => {\n const scrollEl = scrollRef();\n if (scrollEl) {\n scrollIntoView(scrollEl, element);\n // Avoid scroll in iOS VO, since it may cause an overlay to close.\n if (modality !== \"virtual\") {\n scrollIntoViewport(element, { containingElement: ref()! });\n }\n }\n });\n }\n }\n\n // If the focused key became null (e.g. the last item was deleted), focus the\n // whole collection.\n if (\n !shouldUseVirtualFocus &&\n isFocused &&\n focusedKey == null &&\n lastFocusedKey != null &&\n root\n ) {\n focusSafely(root);\n }\n\n lastFocusedKey = focusedKey;\n didAutoFocus = false;\n });\n\n onOwnedCleanup(() => {\n if (raf != null) {\n cancelAnimationFrame(raf);\n }\n });\n\n // Intercept FocusScope restoration since virtualized collections can reuse DOM nodes.\n addRefListener(ref, \"react-aria-focus-scope-restore\", (e: Event) => {\n e.preventDefault();\n manager.setFocused(true);\n });\n addRefListener(ref, \"focusin\", (e) => onFocusIn(e as FocusEvent));\n addRefListener(ref, \"focusout\", (e) => onFocusOut(e as FocusEvent));\n\n const onMouseDown = (e: MouseEvent) => {\n // Ignore events that bubbled through portals.\n if (scrollRef() === getEventTarget(e)) {\n // Prevent focus going to the collection when clicking on the scrollbar.\n e.preventDefault();\n }\n };\n\n const { typeSelectProps } = createTypeSelect<T>({\n collection: () => manager.collection,\n focusedKey: () => manager.focusedKey,\n onFocusedKeyChange: (key) => manager.setFocusedKey(key),\n isKeyDisabled: (key) => manager.isDisabled(key),\n });\n\n // A stable id shared with this collection's items (keyed by the manager) so\n // getItemElement can scope a query by `data-collection`.\n const collectionId = registerCollectionId(manager);\n\n return {\n get collectionProps(): JSX.HTMLAttributes<HTMLElement> {\n let tabIndex: number | undefined;\n if (!shouldUseVirtualFocus) {\n tabIndex = manager.focusedKey == null ? 0 : -1;\n }\n\n let handlers: Record<string, unknown> = mergeProps(\n keyboardProps as Record<string, unknown>,\n repeatKeyboardProps as Record<string, unknown>,\n {\n onFocusIn,\n // jsdom `element.focus()` always fires `focus`; `focusin` is delegated\n // and can miss the collection. Same navigation, guarded by isFocused.\n onFocus: (e: FocusEvent) => {\n if (getEventTarget(e) === e.currentTarget) {\n onFocusIn(e);\n }\n },\n onFocusOut,\n onMouseDown,\n },\n );\n\n if (!disallowTypeAhead) {\n handlers = mergeProps(typeSelectProps as Record<string, unknown>, handlers);\n }\n\n return mergeProps(handlers, {\n tabIndex,\n \"data-collection\": collectionId,\n }) as JSX.HTMLAttributes<HTMLElement>;\n },\n };\n}\n\n/** Attaches `type` to the element from `ref`, re-binding when the element changes. */\nfunction addRefListener(\n ref: () => HTMLElement | null,\n type: string,\n handler: (e: Event) => void,\n): void {\n createTrackedEffect(() => {\n const _s2Cleanups: Array<() => void> = [];\n\n const el = ref();\n if (!el) {\n return;\n }\n el.addEventListener(type, handler);\n _s2Cleanups.push(() => el.removeEventListener(type, handler));\n\n return () => {\n for (const c of _s2Cleanups) c();\n };\n });\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/selection/useSelectableList.ts\n\n/**\n * createSelectableList - keyboard navigation and selection for a list collection.\n * Based on `packages/react-aria/src/selection/useSelectableList.ts`.\n *\n * React → Solid adaptations (faithful to upstream behavior):\n * - `ref` / `scrollRef` are Solid accessors.\n * - The default `ListKeyboardDelegate` is built inside a `createMemo` so it is\n * recreated whenever the collection, disabled keys, disabled behavior, or\n * collator change (the house convention — the delegate stores those as plain\n * values; see {@link ListKeyboardDelegate}). This is the Solid equivalent of\n * upstream's `useMemo` keyed on the same inputs.\n * - Upstream takes `collection` and `disabledKeys` as separate props; our\n * SelectionManager already exposes them as reactive getters\n * (`manager.collection`, `manager.disabledKeys`, `manager.disabledBehavior`),\n * so the delegate is derived from the manager — a single source of truth.\n * A `layoutDelegate` may still be supplied for virtualized collections.\n */\n\nimport { createMemo } from \"solid-js\";\nimport type { KeyboardDelegate } from \"../grid/types\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { createCollator } from \"../i18n\";\nimport { ListKeyboardDelegate } from \"./ListKeyboardDelegate\";\nimport type { LayoutDelegate } from \"./DOMLayoutDelegate\";\nimport {\n createSelectableCollection,\n type CreateSelectableCollectionOptions,\n type SelectableCollectionAria,\n} from \"./createSelectableCollection\";\n\nexport interface CreateSelectableListOptions<T = unknown> extends Omit<\n CreateSelectableCollectionOptions<T>,\n \"keyboardDelegate\"\n> {\n /**\n * A delegate object that implements behavior for keyboard focus movement.\n * Defaults to a {@link ListKeyboardDelegate} derived from the selection manager.\n */\n keyboardDelegate?: MaybeAccessor<KeyboardDelegate>;\n /**\n * A delegate object that provides layout information for items in the\n * collection. Supply this for virtualized collections; by default layout is\n * read from the DOM.\n */\n layoutDelegate?: LayoutDelegate;\n /** The primary orientation of the list items. @default \"vertical\" */\n orientation?: \"horizontal\" | \"vertical\";\n /** The text direction used for horizontal navigation. */\n direction?: \"ltr\" | \"rtl\";\n}\n\nexport interface SelectableListAria {\n /** Props for the list element. */\n listProps: SelectableCollectionAria[\"collectionProps\"];\n}\n\n/**\n * Handles interactions with a selectable list collection.\n */\nexport function createSelectableList<T = unknown>(\n options: CreateSelectableListOptions<T>,\n): SelectableListAria {\n const manager = options.selectionManager;\n\n // By default, a ListKeyboardDelegate is provided which queries layout\n // information from the DOM (e.g. for page up/page down). When virtualized, a\n // layoutDelegate is passed in to override that.\n const collator = createCollator({ usage: \"search\", sensitivity: \"base\" });\n const keyboardDelegate = createMemo<KeyboardDelegate>(() => {\n if (options.keyboardDelegate != null) {\n return access(options.keyboardDelegate);\n }\n return new ListKeyboardDelegate<T>({\n collection: manager.collection,\n disabledKeys: manager.disabledKeys,\n disabledBehavior: manager.disabledBehavior,\n ref: options.ref,\n collator: collator(),\n layoutDelegate: options.layoutDelegate,\n orientation: options.orientation,\n direction: options.direction,\n });\n });\n\n const collection = createSelectableCollection<T>({\n ...options,\n keyboardDelegate,\n });\n\n // Forward `collectionProps` as a getter rather than destructuring it: it is a\n // recomputed-per-access getter (the Solid equivalent of React re-rendering the\n // hook), so the roving `tabIndex` stays reactive to the focused key. Reading it\n // into a local would freeze it at its first value.\n return {\n get listProps() {\n return collection.collectionProps;\n },\n };\n}\n"],"mappings":"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"}
@@ -1,12 +1,330 @@
1
+ /*
2
+ * Copyright 2022 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ // Ported to SolidJS for Proyecto Viviana; based on packages/@internationalized/string-compiler/src/stringCompiler.js
13
+ /*
14
+ * Copyright 2022 Adobe. All rights reserved.
15
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
16
+ * you may not use this file except in compliance with the License. You may obtain a copy
17
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
18
+ *
19
+ * Unless required by applicable law or agreed to in writing, software distributed under
20
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
21
+ * OF ANY KIND, either express or implied. See the License for the specific language
22
+ * governing permissions and limitations under the License.
23
+ */
24
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/i18n/useLocalizedStringFormatter.ts
1
25
  import { i as useLocale } from "./locale.js";
2
26
  import { createMemo } from "solid-js";
3
27
  import { LocalizedStringDictionary, LocalizedStringFormatter } from "@internationalized/string";
28
+ //#region src/i18n/compileIcu.ts
29
+ function asFormatter(formatter) {
30
+ if (!formatter) throw new Error("ICU message requires a LocalizedStringFormatter");
31
+ return formatter;
32
+ }
33
+ function partsHaveArgs(parts) {
34
+ return parts.some((part) => part.type !== "literal");
35
+ }
36
+ function joinLiterals(parts) {
37
+ let out = "";
38
+ for (const part of parts) if (part.type === "literal") out += part.value;
39
+ return out;
40
+ }
41
+ function render(parts, args, formatter, hashValue) {
42
+ let out = "";
43
+ for (const part of parts) switch (part.type) {
44
+ case "literal":
45
+ out += part.value;
46
+ break;
47
+ case "argument":
48
+ out += `${args?.[part.value]}`;
49
+ break;
50
+ case "number":
51
+ out += formatter.number(Number(args?.[part.value]));
52
+ break;
53
+ case "pound":
54
+ out += formatter.number(hashValue);
55
+ break;
56
+ case "plural": {
57
+ const count = Number(args?.[part.value]) - part.offset;
58
+ const options = {};
59
+ for (const [selector, inner] of Object.entries(part.options)) options[selector] = partsHaveArgs(inner) ? () => render(inner, args, formatter, count) : joinLiterals(inner);
60
+ out += formatter.plural(count, options, part.pluralType);
61
+ break;
62
+ }
63
+ case "select": {
64
+ const options = {};
65
+ for (const [selector, inner] of Object.entries(part.options)) options[selector] = partsHaveArgs(inner) ? () => render(inner, args, formatter, hashValue) : joinLiterals(inner);
66
+ out += formatter.select(options, `${args?.[part.value]}`);
67
+ break;
68
+ }
69
+ default: throw new Error(`Unsupported message type: ${part.type}`);
70
+ }
71
+ return out;
72
+ }
73
+ var IcuParser = class {
74
+ source;
75
+ index = 0;
76
+ constructor(source) {
77
+ this.source = source;
78
+ }
79
+ parse() {
80
+ return this.parseMessage(0, "");
81
+ }
82
+ parseMessage(nestingLevel, parentArgType) {
83
+ const parts = [];
84
+ while (!this.isEof()) {
85
+ const ch = this.char();
86
+ if (ch === "{") parts.push(this.parseArgument(nestingLevel));
87
+ else if (ch === "}" && nestingLevel > 0) break;
88
+ else if (ch === "#" && (parentArgType === "plural" || parentArgType === "selectordinal")) {
89
+ this.bump();
90
+ parts.push({ type: "pound" });
91
+ } else parts.push(this.parseLiteral(nestingLevel, parentArgType));
92
+ }
93
+ return parts;
94
+ }
95
+ parseLiteral(nestingLevel, parentArgType) {
96
+ let value = "";
97
+ while (true) {
98
+ const quoted = this.tryParseQuote(parentArgType);
99
+ if (quoted !== null) {
100
+ value += quoted;
101
+ continue;
102
+ }
103
+ const unquoted = this.tryParseUnquoted(nestingLevel, parentArgType);
104
+ if (unquoted !== null) {
105
+ value += unquoted;
106
+ continue;
107
+ }
108
+ break;
109
+ }
110
+ return {
111
+ type: "literal",
112
+ value
113
+ };
114
+ }
115
+ /**
116
+ * ICU 4.8: an ASCII apostrophe starts quoted text only when it immediately
117
+ * precedes a character that requires quoting (`'`, `{`, `}`, `<`, `>`, and
118
+ * `#` inside plural/selectordinal).
119
+ */
120
+ tryParseQuote(parentArgType) {
121
+ if (this.isEof() || this.char() !== "'") return null;
122
+ const next = this.peek();
123
+ if (next === "'") {
124
+ this.bump();
125
+ this.bump();
126
+ return "'";
127
+ }
128
+ if (!(next === "{" || next === "<" || next === ">" || next === "}" || next === "#" && (parentArgType === "plural" || parentArgType === "selectordinal"))) return null;
129
+ this.bump();
130
+ let out = this.char();
131
+ this.bump();
132
+ while (!this.isEof()) {
133
+ const ch = this.char();
134
+ if (ch === "'") {
135
+ if (this.peek() === "'") {
136
+ out += "'";
137
+ this.bump();
138
+ this.bump();
139
+ continue;
140
+ }
141
+ this.bump();
142
+ break;
143
+ }
144
+ out += ch;
145
+ this.bump();
146
+ }
147
+ return out;
148
+ }
149
+ tryParseUnquoted(nestingLevel, parentArgType) {
150
+ if (this.isEof()) return null;
151
+ const ch = this.char();
152
+ if (ch === "{" || ch === "#" && (parentArgType === "plural" || parentArgType === "selectordinal") || ch === "}" && nestingLevel > 0) return null;
153
+ this.bump();
154
+ return ch;
155
+ }
156
+ parseArgument(nestingLevel) {
157
+ const start = this.index;
158
+ this.bump();
159
+ this.skipSpace();
160
+ if (this.isEof() || this.char() === "}") throw new Error(`Empty ICU argument in "${this.source}"`);
161
+ const name = this.readIdentifier();
162
+ if (!name) throw new Error(`Malformed ICU argument in "${this.source.slice(start)}"`);
163
+ this.skipSpace();
164
+ if (this.isEof()) throw new Error(`Unclosed ICU argument "{${name}" in "${this.source}"`);
165
+ if (this.char() === "}") {
166
+ this.bump();
167
+ return {
168
+ type: "argument",
169
+ value: name
170
+ };
171
+ }
172
+ if (this.char() !== ",") throw new Error(`Malformed ICU argument "{${name}" in "${this.source}"`);
173
+ this.bump();
174
+ this.skipSpace();
175
+ return this.parseArgumentOptions(nestingLevel, name);
176
+ }
177
+ parseArgumentOptions(nestingLevel, name) {
178
+ const argType = this.readIdentifier();
179
+ switch (argType) {
180
+ case "number":
181
+ case "date":
182
+ case "time":
183
+ this.skipSpace();
184
+ if (this.char() === ",") {
185
+ this.bump();
186
+ this.skipSimpleStyle();
187
+ }
188
+ this.expectClose(`{${name}, ${argType}}`);
189
+ if (argType !== "number") throw new Error(`Unsupported message type: ${argType}`);
190
+ return {
191
+ type: "number",
192
+ value: name
193
+ };
194
+ case "plural":
195
+ case "selectordinal":
196
+ case "select": {
197
+ this.skipSpace();
198
+ if (this.char() !== ",") throw new Error(`Expected ',' after ${argType} in "${this.source}"`);
199
+ this.bump();
200
+ this.skipSpace();
201
+ let offset = 0;
202
+ let selector = this.readIdentifier();
203
+ if (argType !== "select" && selector === "offset") {
204
+ if (this.char() !== ":") throw new Error(`Expected ':' after plural offset in "${this.source}"`);
205
+ this.bump();
206
+ this.skipSpace();
207
+ offset = this.readInteger();
208
+ this.skipSpace();
209
+ selector = this.readIdentifier();
210
+ }
211
+ const options = this.parsePluralOrSelectOptions(nestingLevel, argType, selector);
212
+ this.expectClose(`{${name}, ${argType}}`);
213
+ if (argType === "select") return {
214
+ type: "select",
215
+ value: name,
216
+ options
217
+ };
218
+ return {
219
+ type: "plural",
220
+ value: name,
221
+ offset,
222
+ pluralType: argType === "plural" ? "cardinal" : "ordinal",
223
+ options
224
+ };
225
+ }
226
+ default: throw new Error(`Unsupported message type: ${argType || "empty"}`);
227
+ }
228
+ }
229
+ parsePluralOrSelectOptions(nestingLevel, parentArgType, firstSelector) {
230
+ const options = {};
231
+ let selector = firstSelector;
232
+ while (true) {
233
+ if (!selector) {
234
+ if (parentArgType !== "select" && this.char() === "=") {
235
+ const start = this.index;
236
+ this.bump();
237
+ this.readInteger();
238
+ selector = this.source.slice(start, this.index);
239
+ } else break;
240
+ }
241
+ this.skipSpace();
242
+ if (this.char() !== "{") throw new Error(`Expected '{' for ${parentArgType} selector "${selector}" in "${this.source}"`);
243
+ this.bump();
244
+ options[selector] = this.parseMessage(nestingLevel + 1, parentArgType);
245
+ if (this.char() !== "}") throw new Error(`Unclosed ${parentArgType} option "${selector}" in "${this.source}"`);
246
+ this.bump();
247
+ this.skipSpace();
248
+ selector = this.readIdentifier();
249
+ }
250
+ if (Object.keys(options).length === 0) throw new Error(`Expected ${parentArgType} selectors in "${this.source}"`);
251
+ return options;
252
+ }
253
+ skipSimpleStyle() {
254
+ let nested = 0;
255
+ while (!this.isEof()) {
256
+ const ch = this.char();
257
+ if (ch === "'") {
258
+ this.bump();
259
+ while (!this.isEof() && this.char() !== "'") this.bump();
260
+ if (!this.isEof()) this.bump();
261
+ continue;
262
+ }
263
+ if (ch === "{") nested += 1;
264
+ else if (ch === "}") {
265
+ if (nested === 0) return;
266
+ nested -= 1;
267
+ }
268
+ this.bump();
269
+ }
270
+ }
271
+ expectClose(label) {
272
+ this.skipSpace();
273
+ if (this.char() !== "}") throw new Error(`Unclosed ${label} in "${this.source}"`);
274
+ this.bump();
275
+ }
276
+ readIdentifier() {
277
+ const start = this.index;
278
+ while (!this.isEof() && !/[\s,{}=:]/.test(this.char())) this.bump();
279
+ return this.source.slice(start, this.index);
280
+ }
281
+ readInteger() {
282
+ const start = this.index;
283
+ if (this.char() === "+" || this.char() === "-") this.bump();
284
+ const digitStart = this.index;
285
+ while (!this.isEof() && this.char() >= "0" && this.char() <= "9") this.bump();
286
+ if (this.index === digitStart) throw new Error(`Expected number in "${this.source}"`);
287
+ return Number(this.source.slice(start, this.index));
288
+ }
289
+ skipSpace() {
290
+ while (!this.isEof() && /\s/.test(this.char())) this.bump();
291
+ }
292
+ char() {
293
+ return this.source[this.index] ?? "";
294
+ }
295
+ peek() {
296
+ return this.source[this.index + 1] ?? "";
297
+ }
298
+ bump() {
299
+ this.index += 1;
300
+ }
301
+ isEof() {
302
+ return this.index >= this.source.length;
303
+ }
304
+ };
305
+ /**
306
+ * Compile an ICU message the way `@internationalized/string-compiler`
307
+ * compileString does: functions for messages with arguments, the original
308
+ * string (or the unescaped literal) otherwise. Already-compiled functions pass
309
+ * through.
310
+ */
311
+ function compileIcu(message) {
312
+ if (typeof message === "function") return message;
313
+ if (!message.includes("{")) return message;
314
+ const parts = new IcuParser(message).parse();
315
+ if (!partsHaveArgs(parts)) return joinLiterals(parts);
316
+ return (args, formatter) => render(parts, args, asFormatter(formatter), 0);
317
+ }
318
+ //#endregion
4
319
  //#region src/i18n/createStringFormatter.ts
5
320
  /**
6
- * String formatter for localized strings with ICU MessageFormat support.
7
- * Port of @react-aria/i18n useLocalizedStringFormatter.
321
+ * String formatter for localized strings.
322
+ * Port of @react-aria/i18n useLocalizedStringFormatter, plus a runtime compile
323
+ * of the `@internationalized/string-compiler` ICU subset (upstream compiles at
324
+ * Parcel transform time; this port imports JSON verbatim).
8
325
  */
9
326
  const cache = /* @__PURE__ */ new WeakMap();
327
+ const compilingDictionaries = /* @__PURE__ */ new WeakMap();
10
328
  function getCachedDictionary(strings) {
11
329
  let dictionary = cache.get(strings);
12
330
  if (!dictionary) {
@@ -15,16 +333,43 @@ function getCachedDictionary(strings) {
15
333
  }
16
334
  return dictionary;
17
335
  }
336
+ function compilingDictionary(inner) {
337
+ const existing = compilingDictionaries.get(inner);
338
+ if (existing) return existing;
339
+ const memo = /* @__PURE__ */ new Map();
340
+ const wrapped = {
341
+ getStringForLocale(key, locale) {
342
+ const cacheKey = `${locale}\0${key}`;
343
+ const cached = memo.get(cacheKey);
344
+ if (cached !== void 0) return cached;
345
+ const compiled = compileIcu(inner.getStringForLocale(key, locale));
346
+ memo.set(cacheKey, compiled);
347
+ return compiled;
348
+ },
349
+ getStringsForLocale: inner.getStringsForLocale.bind(inner)
350
+ };
351
+ compilingDictionaries.set(inner, wrapped);
352
+ compilingDictionaries.set(wrapped, wrapped);
353
+ return wrapped;
354
+ }
18
355
  /**
19
356
  * Returns a cached LocalizedStringDictionary for the given strings.
357
+ * Messages containing `{` are compiled to formatter functions on first
358
+ * getStringForLocale (memoized per locale+key); catalog JSON is not mutated.
20
359
  */
21
360
  function createStringDictionary(strings, packageName) {
22
- return packageName && LocalizedStringDictionary.getGlobalDictionaryForPackage(packageName) || getCachedDictionary(strings);
361
+ return compilingDictionary(packageName && LocalizedStringDictionary.getGlobalDictionaryForPackage(packageName) || getCachedDictionary(strings));
23
362
  }
24
363
  /**
25
364
  * Provides localized string formatting for the current locale.
26
- * Supports interpolating variables, selecting the correct pluralization,
27
- * and formatting numbers. Automatically updates when the locale changes.
365
+ * Catalog JSON stays verbatim. On first format of a key, a string containing
366
+ * `{` is compiled (memoized per locale+key) to the function
367
+ * LocalizedStringFormatter.format already knows how to call — the ICU subset
368
+ * `@internationalized/string-compiler` emits: `{var}`, `{var, number}`,
369
+ * `{var, plural, …}` / `{var, selectordinal, …}` with `#`, `{var, select, …}`,
370
+ * nested arguments, and apostrophe-escaped braces. Strings without `{` and
371
+ * messages that are already functions pass through. Updates when the locale
372
+ * changes.
28
373
  *
29
374
  * @param strings - A mapping of languages to localized strings by key.
30
375
  * @param packageName - Optional package name for global dictionary lookup.
@@ -1 +1 @@
1
- {"version":3,"file":"createStringFormatter.js","names":[],"sources":["../../src/i18n/createStringFormatter.ts"],"sourcesContent":["/**\n * String formatter for localized strings with ICU MessageFormat support.\n * Port of @react-aria/i18n useLocalizedStringFormatter.\n */\n\nimport {\n LocalizedString,\n LocalizedStringDictionary,\n LocalizedStringFormatter,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { createMemo, type Accessor } from \"solid-js\";\nimport { useLocale } from \"./locale\";\n\n// Cache for dictionaries to avoid recreating them\nconst cache = new WeakMap<\n LocalizedStrings<string, LocalizedString>,\n LocalizedStringDictionary<string, LocalizedString>\n>();\n\nfunction getCachedDictionary<K extends string, T extends LocalizedString>(\n strings: LocalizedStrings<K, T>,\n): LocalizedStringDictionary<K, T> {\n let dictionary = cache.get(strings as LocalizedStrings<string, LocalizedString>);\n if (!dictionary) {\n dictionary = new LocalizedStringDictionary(\n strings as LocalizedStrings<string, LocalizedString>,\n );\n cache.set(strings as LocalizedStrings<string, LocalizedString>, dictionary);\n }\n return dictionary as LocalizedStringDictionary<K, T>;\n}\n\n/**\n * Returns a cached LocalizedStringDictionary for the given strings.\n */\nexport function createStringDictionary<\n K extends string = string,\n T extends LocalizedString = string,\n>(strings: LocalizedStrings<K, T>, packageName?: string): LocalizedStringDictionary<K, T> {\n return (\n (packageName && LocalizedStringDictionary.getGlobalDictionaryForPackage(packageName)) ||\n getCachedDictionary(strings)\n );\n}\n\n/**\n * Provides localized string formatting for the current locale.\n * Supports interpolating variables, selecting the correct pluralization,\n * and formatting numbers. Automatically updates when the locale changes.\n *\n * @param strings - A mapping of languages to localized strings by key.\n * @param packageName - Optional package name for global dictionary lookup.\n *\n * @example\n * ```tsx\n * const strings = {\n * 'en-US': {\n * greeting: 'Hello, {name}!',\n * count: '{count, plural, one {# item} other {# items}}'\n * }\n * };\n *\n * function MyComponent() {\n * const stringFormatter = createStringFormatter(strings);\n *\n * return (\n * <div>\n * {stringFormatter().format('greeting', { name: 'World' })}\n * {stringFormatter().format('count', { count: 5 })}\n * </div>\n * );\n * }\n * ```\n */\nexport function createStringFormatter<\n K extends string = string,\n T extends LocalizedString = string,\n>(strings: LocalizedStrings<K, T>, packageName?: string): Accessor<LocalizedStringFormatter<K, T>> {\n const localeAccessor = useLocale();\n const dictionary = createStringDictionary(strings, packageName);\n\n return createMemo(() => new LocalizedStringFormatter(localeAccessor().locale, dictionary));\n}\n\nexport type {\n LocalizedString,\n LocalizedStringDictionary,\n LocalizedStringFormatter,\n LocalizedStrings,\n};\n"],"mappings":";;;;;;;;AAeA,MAAM,wBAAQ,IAAI,QAGhB;AAEF,SAAS,oBACP,SACiC;CACjC,IAAI,aAAa,MAAM,IAAI,OAAoD;CAC/E,IAAI,CAAC,YAAY;EACf,aAAa,IAAI,0BACf,OACF;EACA,MAAM,IAAI,SAAsD,UAAU;CAC5E;CACA,OAAO;AACT;;;;AAKA,SAAgB,uBAGd,SAAiC,aAAuD;CACxF,OACG,eAAe,0BAA0B,8BAA8B,WAAW,KACnF,oBAAoB,OAAO;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,SAAgB,sBAGd,SAAiC,aAAgE;CACjG,MAAM,iBAAiB,UAAU;CACjC,MAAM,aAAa,uBAAuB,SAAS,WAAW;CAE9D,OAAO,iBAAiB,IAAI,yBAAyB,eAAe,CAAC,CAAC,QAAQ,UAAU,CAAC;AAC3F"}
1
+ {"version":3,"file":"createStringFormatter.js","names":["_never"],"sources":["../../src/i18n/compileIcu.ts","../../src/i18n/createStringFormatter.ts"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/@internationalized/string-compiler/src/stringCompiler.js\n\n// Grammar subset of @formatjs/icu-messageformat-parser consumed by compileString (no new dependency).\n\n/**\n * Runtime port of `@internationalized/string-compiler`'s compileParts\n * (`packages/@internationalized/string-compiler/src/stringCompiler.js`).\n *\n * Upstream Parcel compiles each intl JSON string to a function (or leaves a\n * plain string when the message has no arguments). This port has no build-time\n * transform, so createStringFormatter compiles the same ICU subset on first\n * use: `{var}`, `{var, number}`, `{var, plural, …}` / `{var, selectordinal, …}`\n * with `#` and `offset:n`, `{var, select, …}`, nested arguments, and ICU\n * apostrophe escapes (`'{'`, `'}'`, `''`).\n *\n * Compiled functions match the call shape `LocalizedStringFormatter.format`\n * (the `@internationalized/string` dependency, not ported here) expects:\n * `(args, formatter) => string`, using formatter.plural / number / select.\n */\n\nimport type {\n LocalizedString,\n LocalizedStringFormatter,\n Variables,\n} from \"@internationalized/string\";\n\ntype IcuFormatter = {\n plural: (\n count: number,\n options: Record<string, string | (() => string)>,\n type?: Intl.PluralRuleType,\n ) => string;\n number: (value: number) => string;\n select: (options: Record<string, string | (() => string)>, value: string) => string;\n};\n\ntype ArgType = \"\" | \"number\" | \"date\" | \"time\" | \"select\" | \"plural\" | \"selectordinal\";\n\ntype Part =\n | { type: \"literal\"; value: string }\n | { type: \"argument\"; value: string }\n | { type: \"number\"; value: string }\n | { type: \"pound\" }\n | {\n type: \"plural\";\n value: string;\n offset: number;\n pluralType: Intl.PluralRuleType;\n options: Record<string, Part[]>;\n }\n | { type: \"select\"; value: string; options: Record<string, Part[]> };\n\nfunction asFormatter(formatter: LocalizedStringFormatter<any, any> | undefined): IcuFormatter {\n if (!formatter) {\n throw new Error(\"ICU message requires a LocalizedStringFormatter\");\n }\n return formatter as unknown as IcuFormatter;\n}\n\nfunction partsHaveArgs(parts: Part[]): boolean {\n return parts.some((part) => part.type !== \"literal\");\n}\n\nfunction joinLiterals(parts: Part[]): string {\n let out = \"\";\n for (const part of parts) {\n if (part.type === \"literal\") out += part.value;\n }\n return out;\n}\n\nfunction render(\n parts: Part[],\n args: Variables,\n formatter: IcuFormatter,\n hashValue: number,\n): string {\n let out = \"\";\n for (const part of parts) {\n switch (part.type) {\n case \"literal\":\n out += part.value;\n break;\n case \"argument\":\n out += `${args?.[part.value]}`;\n break;\n case \"number\":\n out += formatter.number(Number(args?.[part.value]));\n break;\n case \"pound\":\n out += formatter.number(hashValue);\n break;\n case \"plural\": {\n const count = Number(args?.[part.value]) - part.offset;\n const options: Record<string, string | (() => string)> = {};\n for (const [selector, inner] of Object.entries(part.options)) {\n options[selector] = partsHaveArgs(inner)\n ? () => render(inner, args, formatter, count)\n : joinLiterals(inner);\n }\n out += formatter.plural(count, options, part.pluralType);\n break;\n }\n case \"select\": {\n const options: Record<string, string | (() => string)> = {};\n for (const [selector, inner] of Object.entries(part.options)) {\n options[selector] = partsHaveArgs(inner)\n ? () => render(inner, args, formatter, hashValue)\n : joinLiterals(inner);\n }\n out += formatter.select(options, `${args?.[part.value]}`);\n break;\n }\n default: {\n const _never: never = part;\n throw new Error(`Unsupported message type: ${(_never as Part).type}`);\n }\n }\n }\n return out;\n}\n\nclass IcuParser {\n private readonly source: string;\n private index = 0;\n\n constructor(source: string) {\n this.source = source;\n }\n\n parse(): Part[] {\n return this.parseMessage(0, \"\");\n }\n\n private parseMessage(nestingLevel: number, parentArgType: ArgType): Part[] {\n const parts: Part[] = [];\n while (!this.isEof()) {\n const ch = this.char();\n if (ch === \"{\") {\n parts.push(this.parseArgument(nestingLevel));\n } else if (ch === \"}\" && nestingLevel > 0) {\n break;\n } else if (ch === \"#\" && (parentArgType === \"plural\" || parentArgType === \"selectordinal\")) {\n this.bump();\n parts.push({ type: \"pound\" });\n } else {\n parts.push(this.parseLiteral(nestingLevel, parentArgType));\n }\n }\n return parts;\n }\n\n private parseLiteral(nestingLevel: number, parentArgType: ArgType): Part {\n let value = \"\";\n while (true) {\n const quoted = this.tryParseQuote(parentArgType);\n if (quoted !== null) {\n value += quoted;\n continue;\n }\n const unquoted = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (unquoted !== null) {\n value += unquoted;\n continue;\n }\n break;\n }\n return { type: \"literal\", value };\n }\n\n /**\n * ICU 4.8: an ASCII apostrophe starts quoted text only when it immediately\n * precedes a character that requires quoting (`'`, `{`, `}`, `<`, `>`, and\n * `#` inside plural/selectordinal).\n */\n private tryParseQuote(parentArgType: ArgType): string | null {\n if (this.isEof() || this.char() !== \"'\") return null;\n const next = this.peek();\n if (next === \"'\") {\n this.bump();\n this.bump();\n return \"'\";\n }\n const needsQuote =\n next === \"{\" ||\n next === \"<\" ||\n next === \">\" ||\n next === \"}\" ||\n (next === \"#\" && (parentArgType === \"plural\" || parentArgType === \"selectordinal\"));\n if (!needsQuote) return null;\n\n this.bump();\n let out = this.char();\n this.bump();\n while (!this.isEof()) {\n const ch = this.char();\n if (ch === \"'\") {\n if (this.peek() === \"'\") {\n out += \"'\";\n this.bump();\n this.bump();\n continue;\n }\n this.bump();\n break;\n }\n out += ch;\n this.bump();\n }\n return out;\n }\n\n private tryParseUnquoted(nestingLevel: number, parentArgType: ArgType): string | null {\n if (this.isEof()) return null;\n const ch = this.char();\n if (\n ch === \"{\" ||\n (ch === \"#\" && (parentArgType === \"plural\" || parentArgType === \"selectordinal\")) ||\n (ch === \"}\" && nestingLevel > 0)\n ) {\n return null;\n }\n this.bump();\n return ch;\n }\n\n private parseArgument(nestingLevel: number): Part {\n const start = this.index;\n this.bump();\n this.skipSpace();\n if (this.isEof() || this.char() === \"}\") {\n throw new Error(`Empty ICU argument in \"${this.source}\"`);\n }\n const name = this.readIdentifier();\n if (!name) {\n throw new Error(`Malformed ICU argument in \"${this.source.slice(start)}\"`);\n }\n this.skipSpace();\n if (this.isEof()) {\n throw new Error(`Unclosed ICU argument \"{${name}\" in \"${this.source}\"`);\n }\n if (this.char() === \"}\") {\n this.bump();\n return { type: \"argument\", value: name };\n }\n if (this.char() !== \",\") {\n throw new Error(`Malformed ICU argument \"{${name}\" in \"${this.source}\"`);\n }\n this.bump();\n this.skipSpace();\n return this.parseArgumentOptions(nestingLevel, name);\n }\n\n private parseArgumentOptions(nestingLevel: number, name: string): Part {\n const argType = this.readIdentifier() as ArgType;\n switch (argType) {\n case \"number\":\n case \"date\":\n case \"time\": {\n this.skipSpace();\n if (this.char() === \",\") {\n this.bump();\n this.skipSimpleStyle();\n }\n this.expectClose(`{${name}, ${argType}}`);\n if (argType !== \"number\") {\n throw new Error(`Unsupported message type: ${argType}`);\n }\n return { type: \"number\", value: name };\n }\n case \"plural\":\n case \"selectordinal\":\n case \"select\": {\n this.skipSpace();\n if (this.char() !== \",\") {\n throw new Error(`Expected ',' after ${argType} in \"${this.source}\"`);\n }\n this.bump();\n this.skipSpace();\n let offset = 0;\n let selector = this.readIdentifier();\n if (argType !== \"select\" && selector === \"offset\") {\n if (this.char() !== \":\") {\n throw new Error(`Expected ':' after plural offset in \"${this.source}\"`);\n }\n this.bump();\n this.skipSpace();\n offset = this.readInteger();\n this.skipSpace();\n selector = this.readIdentifier();\n }\n const options = this.parsePluralOrSelectOptions(nestingLevel, argType, selector);\n this.expectClose(`{${name}, ${argType}}`);\n if (argType === \"select\") {\n return { type: \"select\", value: name, options };\n }\n return {\n type: \"plural\",\n value: name,\n offset,\n pluralType: argType === \"plural\" ? \"cardinal\" : \"ordinal\",\n options,\n };\n }\n default:\n throw new Error(`Unsupported message type: ${argType || \"empty\"}`);\n }\n }\n\n private parsePluralOrSelectOptions(\n nestingLevel: number,\n parentArgType: ArgType,\n firstSelector: string,\n ): Record<string, Part[]> {\n const options: Record<string, Part[]> = {};\n let selector = firstSelector;\n while (true) {\n if (!selector) {\n if (parentArgType !== \"select\" && this.char() === \"=\") {\n const start = this.index;\n this.bump();\n this.readInteger();\n selector = this.source.slice(start, this.index);\n } else {\n break;\n }\n }\n this.skipSpace();\n if (this.char() !== \"{\") {\n throw new Error(\n `Expected '{' for ${parentArgType} selector \"${selector}\" in \"${this.source}\"`,\n );\n }\n this.bump();\n options[selector] = this.parseMessage(nestingLevel + 1, parentArgType);\n if (this.char() !== \"}\") {\n throw new Error(`Unclosed ${parentArgType} option \"${selector}\" in \"${this.source}\"`);\n }\n this.bump();\n this.skipSpace();\n selector = this.readIdentifier();\n }\n if (Object.keys(options).length === 0) {\n throw new Error(`Expected ${parentArgType} selectors in \"${this.source}\"`);\n }\n return options;\n }\n\n private skipSimpleStyle(): void {\n let nested = 0;\n while (!this.isEof()) {\n const ch = this.char();\n if (ch === \"'\") {\n this.bump();\n while (!this.isEof() && this.char() !== \"'\") this.bump();\n if (!this.isEof()) this.bump();\n continue;\n }\n if (ch === \"{\") nested += 1;\n else if (ch === \"}\") {\n if (nested === 0) return;\n nested -= 1;\n }\n this.bump();\n }\n }\n\n private expectClose(label: string): void {\n this.skipSpace();\n if (this.char() !== \"}\") {\n throw new Error(`Unclosed ${label} in \"${this.source}\"`);\n }\n this.bump();\n }\n\n private readIdentifier(): string {\n const start = this.index;\n while (!this.isEof() && !/[\\s,{}=:]/.test(this.char())) {\n this.bump();\n }\n return this.source.slice(start, this.index);\n }\n\n private readInteger(): number {\n const start = this.index;\n if (this.char() === \"+\" || this.char() === \"-\") this.bump();\n const digitStart = this.index;\n while (!this.isEof() && this.char() >= \"0\" && this.char() <= \"9\") this.bump();\n if (this.index === digitStart) {\n throw new Error(`Expected number in \"${this.source}\"`);\n }\n return Number(this.source.slice(start, this.index));\n }\n\n private skipSpace(): void {\n while (!this.isEof() && /\\s/.test(this.char())) this.bump();\n }\n\n private char(): string {\n return this.source[this.index] ?? \"\";\n }\n\n private peek(): string {\n return this.source[this.index + 1] ?? \"\";\n }\n\n private bump(): void {\n this.index += 1;\n }\n\n private isEof(): boolean {\n return this.index >= this.source.length;\n }\n}\n\n/**\n * Compile an ICU message the way `@internationalized/string-compiler`\n * compileString does: functions for messages with arguments, the original\n * string (or the unescaped literal) otherwise. Already-compiled functions pass\n * through.\n */\nexport function compileIcu(message: LocalizedString): LocalizedString {\n if (typeof message === \"function\") return message;\n if (!message.includes(\"{\")) return message;\n const parts = new IcuParser(message).parse();\n if (!partsHaveArgs(parts)) return joinLiterals(parts);\n return (args, formatter) => render(parts, args, asFormatter(formatter), 0);\n}\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/i18n/useLocalizedStringFormatter.ts\n\n/**\n * String formatter for localized strings.\n * Port of @react-aria/i18n useLocalizedStringFormatter, plus a runtime compile\n * of the `@internationalized/string-compiler` ICU subset (upstream compiles at\n * Parcel transform time; this port imports JSON verbatim).\n */\n\nimport {\n LocalizedString,\n LocalizedStringDictionary,\n LocalizedStringFormatter,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { createMemo, type Accessor } from \"solid-js\";\nimport { compileIcu } from \"./compileIcu\";\nimport { useLocale } from \"./locale\";\n\n// Cache for dictionaries to avoid recreating them\nconst cache = new WeakMap<\n LocalizedStrings<string, LocalizedString>,\n LocalizedStringDictionary<string, LocalizedString>\n>();\n\nconst compilingDictionaries = new WeakMap<\n LocalizedStringDictionary<string, LocalizedString>,\n LocalizedStringDictionary<string, LocalizedString>\n>();\n\nfunction getCachedDictionary<K extends string, T extends LocalizedString>(\n strings: LocalizedStrings<K, T>,\n): LocalizedStringDictionary<K, T> {\n let dictionary = cache.get(strings as LocalizedStrings<string, LocalizedString>);\n if (!dictionary) {\n dictionary = new LocalizedStringDictionary(\n strings as LocalizedStrings<string, LocalizedString>,\n );\n cache.set(strings as LocalizedStrings<string, LocalizedString>, dictionary);\n }\n return dictionary as LocalizedStringDictionary<K, T>;\n}\n\nfunction compilingDictionary<K extends string, T extends LocalizedString>(\n inner: LocalizedStringDictionary<K, T>,\n): LocalizedStringDictionary<K, T> {\n const existing = compilingDictionaries.get(\n inner as LocalizedStringDictionary<string, LocalizedString>,\n );\n if (existing) {\n return existing as LocalizedStringDictionary<K, T>;\n }\n const memo = new Map<string, T>();\n const wrapped = {\n getStringForLocale(key: K, locale: string): T {\n const cacheKey = `${locale}\\0${key}`;\n const cached = memo.get(cacheKey);\n if (cached !== undefined) return cached;\n const compiled = compileIcu(inner.getStringForLocale(key, locale)) as T;\n memo.set(cacheKey, compiled);\n return compiled;\n },\n getStringsForLocale: inner.getStringsForLocale.bind(inner),\n } as LocalizedStringDictionary<K, T>;\n compilingDictionaries.set(inner as LocalizedStringDictionary<string, LocalizedString>, wrapped);\n compilingDictionaries.set(wrapped as LocalizedStringDictionary<string, LocalizedString>, wrapped);\n return wrapped;\n}\n\n/**\n * Returns a cached LocalizedStringDictionary for the given strings.\n * Messages containing `{` are compiled to formatter functions on first\n * getStringForLocale (memoized per locale+key); catalog JSON is not mutated.\n */\nexport function createStringDictionary<\n K extends string = string,\n T extends LocalizedString = string,\n>(strings: LocalizedStrings<K, T>, packageName?: string): LocalizedStringDictionary<K, T> {\n const dictionary =\n (packageName && LocalizedStringDictionary.getGlobalDictionaryForPackage<K, T>(packageName)) ||\n getCachedDictionary(strings);\n return compilingDictionary(dictionary);\n}\n\n/**\n * Provides localized string formatting for the current locale.\n * Catalog JSON stays verbatim. On first format of a key, a string containing\n * `{` is compiled (memoized per locale+key) to the function\n * LocalizedStringFormatter.format already knows how to call — the ICU subset\n * `@internationalized/string-compiler` emits: `{var}`, `{var, number}`,\n * `{var, plural, …}` / `{var, selectordinal, …}` with `#`, `{var, select, …}`,\n * nested arguments, and apostrophe-escaped braces. Strings without `{` and\n * messages that are already functions pass through. Updates when the locale\n * changes.\n *\n * @param strings - A mapping of languages to localized strings by key.\n * @param packageName - Optional package name for global dictionary lookup.\n *\n * @example\n * ```tsx\n * const strings = {\n * 'en-US': {\n * greeting: 'Hello, {name}!',\n * count: '{count, plural, one {# item} other {# items}}'\n * }\n * };\n *\n * function MyComponent() {\n * const stringFormatter = createStringFormatter(strings);\n *\n * return (\n * <div>\n * {stringFormatter().format('greeting', { name: 'World' })}\n * {stringFormatter().format('count', { count: 5 })}\n * </div>\n * );\n * }\n * ```\n */\nexport function createStringFormatter<\n K extends string = string,\n T extends LocalizedString = string,\n>(strings: LocalizedStrings<K, T>, packageName?: string): Accessor<LocalizedStringFormatter<K, T>> {\n const localeAccessor = useLocale();\n const dictionary = createStringDictionary(strings, packageName);\n\n return createMemo(() => new LocalizedStringFormatter(localeAccessor().locale, dictionary));\n}\n\nexport type {\n LocalizedString,\n LocalizedStringDictionary,\n LocalizedStringFormatter,\n LocalizedStrings,\n};\n"],"mappings":"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"}