@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
@@ -1 +1 @@
1
- {"version":3,"file":"menu.jsx","names":["mergeProps","mergeProps"],"sources":["../../src/menu/createMenu.ts","../../src/menu/createMenuItem.ts","../../src/menu/createMenuTrigger.ts"],"sourcesContent":["/**\n * Provides the behavior and accessibility implementation for a menu component.\n * A menu displays a list of actions or options that a user can choose.\n * Based on @react-aria/menu useMenu.\n */\n\nimport { createEffect, onCleanup, type JSX, type Accessor } from \"solid-js\";\nimport { createFocusWithin } from \"../interactions/createFocusWithin\";\nimport { createLabel } from \"../label/createLabel\";\nimport { createTypeSelect } from \"../selection/createTypeSelect\";\nimport { selectItem } from \"../selection/selectItem\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { isDevEnv } from \"../utils/env\";\nimport type { MenuState, Key, Collection } from \"@proyecto-viviana/solid-stately\";\n\n/**\n * Default number of items to skip for page up/down when DOM measurement is not available.\n */\nconst DEFAULT_PAGE_SIZE = 10;\n\n/**\n * Find the next non-disabled key in a collection.\n */\nfunction findNextNonDisabledKey<T>(\n collection: Collection<T>,\n currentKey: Key | null,\n direction: \"next\" | \"prev\",\n isDisabled: (key: Key) => boolean,\n wrap: boolean,\n): Key | null {\n const getNextKey =\n direction === \"next\"\n ? (key: Key) => collection.getKeyAfter(key)\n : (key: Key) => collection.getKeyBefore(key);\n\n const getFirstKey =\n direction === \"next\" ? () => collection.getFirstKey() : () => collection.getLastKey();\n\n let nextKey = currentKey != null ? getNextKey(currentKey) : getFirstKey();\n\n // Skip disabled keys\n while (nextKey != null && isDisabled(nextKey)) {\n nextKey = getNextKey(nextKey);\n }\n\n // If we've reached the end and wrapping is enabled\n if (nextKey == null && wrap) {\n nextKey = getFirstKey();\n // Skip disabled keys from the start\n while (nextKey != null && isDisabled(nextKey)) {\n nextKey = getNextKey(nextKey);\n }\n }\n\n return nextKey;\n}\n\nexport interface AriaMenuProps<T = unknown> {\n /** An ID for the menu. */\n id?: string;\n /** Whether the menu is disabled. */\n isDisabled?: boolean;\n /** The label for the menu. */\n label?: JSX.Element;\n /** An accessible label for the menu when no visible label is provided. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the menu. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the menu. */\n \"aria-describedby\"?: string;\n /** Handler called when focus moves into the menu. */\n onFocus?: (e: FocusEvent) => void;\n /** Handler called when focus moves out of the menu. */\n onBlur?: (e: FocusEvent) => void;\n /** Handler called when the focus state changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Handler called when an item is activated (pressed). */\n onAction?: (key: Key, value: T) => void;\n /** Handler called when the menu should close. */\n onClose?: () => void;\n /** Whether the menu should close when an item is selected. */\n shouldCloseOnSelect?: boolean;\n /** Whether focus should automatically wrap around. */\n shouldFocusWrap?: boolean;\n /** Whether to auto-focus the first item when the menu opens. */\n autoFocus?: boolean | \"first\" | \"last\";\n /** Whether type-to-select is disabled. @default false */\n disallowTypeAhead?: boolean;\n}\n\nexport interface MenuAria {\n /** Props for the menu element. */\n menuProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the menu's label element (if any). */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n// Shared data between menu and menu items\nconst menuData = new WeakMap<object, MenuData>();\n\ninterface MenuData {\n id: string;\n // Type-erased like upstream menu/utils.ts MenuData (value: any): the WeakMap\n // is keyed by an untyped state, so the item value flows through as unknown.\n onAction?: (key: Key, value: unknown) => void;\n onClose?: () => void;\n isDisabled?: boolean;\n shouldCloseOnSelect?: boolean;\n}\n\nexport function getMenuData(state: MenuState): MenuData | undefined {\n return menuData.get(state);\n}\n\n/**\n * Provides the behavior and accessibility implementation for a menu component.\n * A menu displays a list of actions or options that a user can choose.\n */\nexport function createMenu<T>(\n props: MaybeAccessor<AriaMenuProps<T>>,\n state: MenuState<T>,\n ref?: Accessor<HTMLElement | null>,\n): MenuAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n\n // Development-time warning for missing accessibility labels\n if (isDevEnv()) {\n const p = getProps();\n if (!p.label && !p[\"aria-label\"] && !p[\"aria-labelledby\"]) {\n console.warn(\n \"[solidaria] A Menu requires an aria-label or aria-labelledby attribute for accessibility.\",\n );\n }\n }\n\n // Filter DOM props\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n const updateSharedData = () => {\n const p = getProps();\n menuData.set(state, {\n id,\n onAction: p.onAction as MenuData[\"onAction\"],\n onClose: p.onClose,\n isDisabled: p.isDisabled,\n shouldCloseOnSelect: p.shouldCloseOnSelect,\n });\n };\n\n // Ensure menu items created in the same render pass can read parent metadata.\n updateSharedData();\n\n // Share data with child menu items\n createEffect(() => {\n updateSharedData();\n\n onCleanup(() => {\n menuData.delete(state);\n });\n });\n\n // Handle focus within\n const { focusWithinProps } = createFocusWithin({\n onFocusWithin: (e) => getProps().onFocus?.(e),\n onBlurWithin: (e) => getProps().onBlur?.(e),\n onFocusWithinChange: (isFocused) => {\n getProps().onFocusChange?.(isFocused);\n state.setFocused(isFocused);\n },\n });\n\n // Label handling\n const { labelProps, fieldProps } = createLabel({\n get id() {\n return id;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n labelElementType: \"span\",\n });\n\n // Type-to-select\n const { typeSelectProps } = createTypeSelect({\n collection: () => state.collection(),\n focusedKey: () => state.focusedKey(),\n onFocusedKeyChange: (key) => state.setFocusedKey(key),\n isKeyDisabled: (key) => state.isDisabled(key),\n get isDisabled() {\n return getProps().disallowTypeAhead ?? false;\n },\n });\n\n // Keyboard navigation\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (e) => {\n if (getProps().isDisabled) return;\n\n const collection = state.collection();\n const p = getProps();\n const wrap = p.shouldFocusWrap ?? false;\n\n // Disabled keys only block keyboard navigation under disabledBehavior \"all\"\n // (the default); under \"selection\" they stay focusable while their selection\n // remains blocked. Mirrors ListKeyboardDelegate.isDisabled in React Aria,\n // which gates the navigation skip on the resolved disabledBehavior.\n const isDisabled = (key: Key) => state.isDisabled(key) && state.disabledBehavior() === \"all\";\n\n switch (e.key) {\n case \"ArrowDown\": {\n // Only consume the key once a target exists, mirroring\n // useSelectableCollection (ArrowDown, 211-225): preventDefault is called\n // inside `if (nextKey != null)`, so at the last item without wrap the\n // arrow bubbles instead of being swallowed.\n const currentKey = state.focusedKey();\n const nextKey = findNextNonDisabledKey(collection, currentKey, \"next\", isDisabled, wrap);\n if (nextKey != null) {\n e.preventDefault();\n state.setFocusedKey(nextKey);\n }\n break;\n }\n case \"ArrowUp\": {\n const currentKey = state.focusedKey();\n const prevKey = findNextNonDisabledKey(collection, currentKey, \"prev\", isDisabled, wrap);\n if (prevKey != null) {\n e.preventDefault();\n state.setFocusedKey(prevKey);\n }\n break;\n }\n case \"Home\": {\n // Mirror useSelectableCollection (Home, 283-285): with nothing focused,\n // Shift+Home has no anchor to extend from, so leave the event alone.\n if (state.focusedKey() == null && e.shiftKey) break;\n e.preventDefault();\n // Find first non-disabled key\n let firstKey = collection.getFirstKey();\n while (firstKey != null && isDisabled(firstKey)) {\n firstKey = collection.getKeyAfter(firstKey);\n }\n if (firstKey != null) {\n state.setFocusedKey(firstKey);\n }\n break;\n }\n case \"End\": {\n // Mirror useSelectableCollection (End, 300-302): same anchor guard as Home.\n if (state.focusedKey() == null && e.shiftKey) break;\n e.preventDefault();\n // Find last non-disabled key\n let lastKey = collection.getLastKey();\n while (lastKey != null && isDisabled(lastKey)) {\n lastKey = collection.getKeyBefore(lastKey);\n }\n if (lastKey != null) {\n state.setFocusedKey(lastKey);\n }\n break;\n }\n case \" \":\n case \"Enter\": {\n if (e.target !== e.currentTarget) break;\n e.preventDefault();\n const focusedKey = state.focusedKey();\n // Activation is gated on the navigation-disabled check, not the raw\n // one: under disabledBehavior \"selection\" a focusable disabled item\n // still fires onAction (and closes), mirroring useSelectableItem's\n // allowsActions (manager.isDisabled is gated on \"all\"). Selection stays\n // blocked independently — state.select self-guards on the raw disabled\n // check (SelectionManager.canSelectItem).\n if (focusedKey != null && !isDisabled(focusedKey)) {\n // Route through the aria-layer onSelect so the platform-aware modifier\n // resolution (isCtrlKeyPressed / non-contiguous modifier) and the\n // shift-extend path are applied. Keyboard activation carries\n // pointerType \"keyboard\".\n selectItem(\n state,\n focusedKey,\n {\n pointerType: \"keyboard\",\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n },\n collection,\n );\n // Pass the activated item's value as the second arg, mirroring\n // useMenuItem performAction: onAction(key, item?.value).\n p.onAction?.(focusedKey, collection.getItem(focusedKey)?.value as T);\n const item = collection.getItem(focusedKey);\n const isLink = !!item?.props?.href;\n const shouldClose =\n p.shouldCloseOnSelect ??\n (e.key === \"Enter\" || state.selectionMode() === \"none\" || isLink);\n if (shouldClose) {\n p.onClose?.();\n }\n }\n break;\n }\n case \"Escape\": {\n e.preventDefault();\n p.onClose?.();\n break;\n }\n case \"PageDown\": {\n // Mirror useSelectableCollection (PageDown, 324-332): only consume the\n // key when an item is focused. A non-empty collection always yields a\n // page target via getKeyPageBelow, so a focused key means focus moves\n // and the event is swallowed; with nothing focused, leave it alone to\n // bubble (e.g. to scroll an enclosing region).\n const currentKey = state.focusedKey();\n if (currentKey == null) break;\n e.preventDefault();\n const el = ref?.();\n\n if (el) {\n // Use DOM measurements to calculate how many items fit in a page\n const visibleHeight = el.clientHeight;\n let traveled = 0;\n let targetKey = currentKey;\n\n while (targetKey != null && traveled < visibleHeight) {\n const nextKey = collection.getKeyAfter(targetKey);\n if (nextKey == null) break;\n\n // Try to measure the item height\n const itemElement = el.querySelector(`[data-key=\"${targetKey}\"]`);\n traveled += itemElement?.clientHeight ?? 32;\n\n // Skip disabled items\n if (!isDisabled(nextKey)) {\n targetKey = nextKey;\n } else {\n // Skip over disabled items without counting them\n const afterDisabled = findNextNonDisabledKey(\n collection,\n nextKey,\n \"next\",\n isDisabled,\n false,\n );\n if (afterDisabled != null) {\n targetKey = afterDisabled;\n } else {\n break;\n }\n }\n }\n\n if (targetKey != null && targetKey !== currentKey) {\n state.setFocusedKey(targetKey);\n }\n } else {\n // Fallback: move by DEFAULT_PAGE_SIZE items\n let count = DEFAULT_PAGE_SIZE;\n let targetKey = currentKey;\n\n while (count > 0 && targetKey != null) {\n const nextKey = findNextNonDisabledKey(\n collection,\n targetKey,\n \"next\",\n isDisabled,\n false,\n );\n if (nextKey == null) break;\n targetKey = nextKey;\n count--;\n }\n\n if (targetKey != null) {\n state.setFocusedKey(targetKey);\n }\n }\n break;\n }\n case \"PageUp\": {\n // Mirror useSelectableCollection (PageUp, 333-341): only consume the key\n // when an item is focused. A non-empty collection always yields a page\n // target via getKeyPageAbove, so a focused key means focus moves and the\n // event is swallowed; with nothing focused, leave it alone to bubble\n // (e.g. to scroll an enclosing region).\n const currentKey = state.focusedKey();\n if (currentKey == null) break;\n e.preventDefault();\n const el = ref?.();\n\n if (el) {\n // Use DOM measurements to calculate how many items fit in a page\n const visibleHeight = el.clientHeight;\n let traveled = 0;\n let targetKey = currentKey;\n\n while (targetKey != null && traveled < visibleHeight) {\n const prevKey = collection.getKeyBefore(targetKey);\n if (prevKey == null) break;\n\n // Try to measure the item height\n const itemElement = el.querySelector(`[data-key=\"${targetKey}\"]`);\n traveled += itemElement?.clientHeight ?? 32;\n\n // Skip disabled items\n if (!isDisabled(prevKey)) {\n targetKey = prevKey;\n } else {\n // Skip over disabled items without counting them\n const beforeDisabled = findNextNonDisabledKey(\n collection,\n prevKey,\n \"prev\",\n isDisabled,\n false,\n );\n if (beforeDisabled != null) {\n targetKey = beforeDisabled;\n } else {\n break;\n }\n }\n }\n\n if (targetKey != null && targetKey !== currentKey) {\n state.setFocusedKey(targetKey);\n }\n } else {\n // Fallback: move by DEFAULT_PAGE_SIZE items\n let count = DEFAULT_PAGE_SIZE;\n let targetKey = currentKey;\n\n while (count > 0 && targetKey != null) {\n const prevKey = findNextNonDisabledKey(\n collection,\n targetKey,\n \"prev\",\n isDisabled,\n false,\n );\n if (prevKey == null) break;\n targetKey = prevKey;\n count--;\n }\n\n if (targetKey != null) {\n state.setFocusedKey(targetKey);\n }\n }\n break;\n }\n }\n };\n\n return {\n get labelProps() {\n return labelProps as JSX.HTMLAttributes<HTMLElement>;\n },\n get menuProps() {\n const p = getProps();\n\n const baseProps = mergeProps(\n domProps(),\n focusWithinProps as Record<string, unknown>,\n fieldProps as Record<string, unknown>,\n {\n role: \"menu\",\n // Roving tabindex: the menu container is tab-reachable (0) only while no\n // item holds focus; once `focusedKey` is set the container drops to -1 so\n // Tab/Shift+Tab traverse past it and real focus stays on the item. This\n // mirrors upstream `useMenu`, which spreads `useSelectableList`'s\n // `listProps.tabIndex` (`manager.focusedKey == null ? 0 : -1`, non-virtual\n // focus) onto the menu.\n //\n // This MUST be a getter, not an eagerly-evaluated value. Consumers\n // (solidaria-components `Menu.tsx`) destructure `menuProps` once and\n // spread it through `mergeProps`; a plain `tabIndex: <value>` would be\n // computed at that first read (while `focusedKey` is still null → 0) and\n // frozen. As a getter it survives `mergeProps` (which preserves getters),\n // so the consumer's reactive element-spread re-reads `state.focusedKey()`\n // and the container tabindex tracks focus.\n get tabIndex() {\n return getProps().isDisabled ? undefined : state.focusedKey() == null ? 0 : -1;\n },\n \"aria-disabled\": p.isDisabled || undefined,\n onKeyDown,\n } as Record<string, unknown>,\n );\n\n // Add type-select props if enabled\n if (!p.disallowTypeAhead) {\n return mergeProps(\n baseProps,\n typeSelectProps as Record<string, unknown>,\n ) as JSX.HTMLAttributes<HTMLElement>;\n }\n\n return baseProps as JSX.HTMLAttributes<HTMLElement>;\n },\n };\n}\n","/**\n * Provides the behavior and accessibility implementation for a menu item.\n * Based on @react-aria/menu useMenuItem.\n */\n\nimport { type JSX, type Accessor } from \"solid-js\";\nimport { createPress, type PressEvent } from \"../interactions/createPress\";\nimport { createHover } from \"../interactions/createHover\";\nimport { createFocusRing } from \"../interactions/createFocusRing\";\nimport { createSelectableItem } from \"../selection/createSelectableItem\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { getEventTarget } from \"../utils/dom\";\nimport { isVirtualClick } from \"../utils/events\";\nimport { createSlotId } from \"../ssr\";\nimport { getMenuData } from \"./createMenu\";\nimport type { MenuState, Key, Selection, SelectionMode } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaMenuItemProps {\n /** The unique key for the menu item. */\n key: Key;\n /** Optional DOM id for the menu item. Defaults to the key. */\n id?: string;\n /** Whether the menu item is disabled. */\n isDisabled?: boolean;\n /** An accessible label for the menu item. */\n \"aria-label\"?: string;\n /** Element controlled by this menu item, for submenu triggers. */\n \"aria-controls\"?: string;\n /** Whether this menu item opens a submenu or subdialog. */\n \"aria-haspopup\"?: string | boolean;\n /** Whether the submenu or subdialog is expanded. */\n \"aria-expanded\"?: boolean | \"true\" | \"false\";\n /** Handler called when the menu item is selected. */\n onAction?: () => void;\n /** Whether to close the menu when this item is selected. */\n closeOnSelect?: boolean;\n /** A URL to link to. Turns the menu item into a link. */\n href?: string;\n /** The target window for the link. */\n target?: string;\n /** The relationship between the linked resource and the current page. */\n rel?: string;\n /** Causes the browser to download the linked URL. A string may be provided to suggest a file name. */\n download?: boolean | string;\n}\n\nexport interface MenuItemAria {\n /** Props for the menu item element. */\n menuItemProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the label text inside the menu item. */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the description text inside the menu item. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the keyboard shortcut inside the menu item. */\n keyboardShortcutProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the menu item is currently focused. */\n isFocused: Accessor<boolean>;\n /** Whether the menu item is keyboard focused. */\n isFocusVisible: Accessor<boolean>;\n /** Whether the menu item is currently pressed. */\n isPressed: Accessor<boolean>;\n /** Whether the menu item is disabled. */\n isDisabled: Accessor<boolean>;\n /** Whether the menu item is selected. */\n isSelected: Accessor<boolean>;\n /** The parent menu selection mode. */\n selectionMode: Accessor<SelectionMode>;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a menu item.\n */\nexport function createMenuItem<T>(\n props: MaybeAccessor<AriaMenuItemProps>,\n state: MenuState<T>,\n ref?: () => HTMLElement | null,\n): MenuItemAria {\n const getProps = () => access(props);\n\n // Get shared data from menu\n const getData = () => getMenuData(state);\n\n // Computed states. `state.isDisabled` is SelectionManager.isDisabled, which\n // already respects disabledBehavior=\"selection\"; these items stay actionable\n // while SelectionManager.canSelectItem keeps selection blocked.\n const isDisabled: Accessor<boolean> = () => {\n return Boolean(\n getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key),\n );\n };\n\n const selectionMode: Accessor<SelectionMode> = () => {\n return state.selectionMode();\n };\n\n // Whether this is a link item\n const isLink = () => !!getProps().href;\n const isTrigger = () => !!getProps()[\"aria-haspopup\"];\n\n const selectableItem = createSelectableItem(\n () => {\n const p = getProps();\n return {\n key: p.key,\n id: p.id ?? String(p.key),\n isDisabled: isDisabled(),\n isLink: isLink(),\n href: p.href,\n shouldSelectOnPressUp: true,\n allowsDifferentPressOrigin: true,\n linkBehavior: \"none\",\n };\n },\n state,\n () => ref?.() ?? null,\n );\n\n const isFocused: Accessor<boolean> = () => selectableItem.isFocused();\n\n const isSelected: Accessor<boolean> = () => {\n return !isTrigger() && selectableItem.isSelected();\n };\n\n type MenuInteraction = {\n pointerType: PressEvent[\"pointerType\"];\n key?: string;\n };\n\n let interaction: MenuInteraction | null = null;\n let isMenuPressActive = false;\n let isDispatchingKeyboardClick = false;\n let isDispatchingMenuSyntheticClick = false;\n let selectionEventBeforeMenuPressUp: Selection | null = null;\n let hasSelectionEventBeforeMenuPressUp = false;\n let pendingSyntheticClickSelectionEvent: Selection | null = null;\n let suppressNextKeyboardClick = false;\n\n const getShouldClose = (): boolean => {\n const p = getProps();\n const explicitClose = p.closeOnSelect ?? getData()?.shouldCloseOnSelect;\n if (explicitClose !== undefined) {\n return explicitClose;\n }\n\n if (interaction?.pointerType === \"keyboard\") {\n return interaction.key === \"Enter\" || selectionMode() === \"none\" || isLink();\n }\n\n return selectionMode() !== \"multiple\" || isLink();\n };\n\n const performMenuAction = (event: MouseEvent) => {\n if (isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (suppressNextKeyboardClick && interaction == null) {\n suppressNextKeyboardClick = false;\n return;\n }\n\n const p = getProps();\n const key = p.key;\n const data = getData();\n\n // Submenu triggers open their submenu via the local item action, but do not\n // fire the parent menu onAction or close the menu.\n if (isTrigger()) {\n p.onAction?.();\n interaction = null;\n return;\n }\n\n // Call item-specific onAction.\n p.onAction?.();\n\n // Call menu-level onAction with the activated item's value, mirroring\n // useMenuItem performAction: onAction(key, item?.value).\n const item = state.collection().getItem(key);\n data?.onAction?.(key, item?.value);\n\n if (getShouldClose()) {\n data?.onClose?.();\n }\n\n interaction = null;\n };\n\n // Menu-specific press handling is separate from selectable-item selection,\n // matching upstream useMenuItem: useSelectableItem owns selection/focus\n // timing; the menu layer owns pressed state, different-origin release, action,\n // links, and close behavior.\n const { pressProps, isPressed } = createPress({\n get isDisabled() {\n return isDisabled();\n },\n onPressChange(isPressed) {\n isMenuPressActive = isPressed;\n },\n onPressUp(e) {\n if (e.pointerType !== \"keyboard\" && !isDispatchingKeyboardClick) {\n interaction = { pointerType: e.pointerType };\n }\n\n // Native menus allow pressing the trigger, dragging to an item, and\n // releasing to activate it. Upstream useMenuItem synthesizes a click in\n // this different-origin mouse case.\n if (e.pointerType === \"mouse\" && !isMenuPressActive && e.target instanceof HTMLElement) {\n const selectionEventAfterPressUp = state.selectionManager.lastSelectionEvent;\n pendingSyntheticClickSelectionEvent =\n hasSelectionEventBeforeMenuPressUp &&\n selectionEventAfterPressUp != null &&\n selectionEventAfterPressUp !== selectionEventBeforeMenuPressUp\n ? selectionEventAfterPressUp\n : null;\n\n isDispatchingMenuSyntheticClick = true;\n try {\n e.target.click();\n } finally {\n isDispatchingMenuSyntheticClick = false;\n hasSelectionEventBeforeMenuPressUp = false;\n selectionEventBeforeMenuPressUp = null;\n pendingSyntheticClickSelectionEvent = null;\n }\n }\n },\n });\n\n const captureSelectionEventBeforeMenuPressUp = () => {\n selectionEventBeforeMenuPressUp = state.selectionManager.lastSelectionEvent;\n hasSelectionEventBeforeMenuPressUp = true;\n };\n\n const withMenuPressUpSelectionSnapshot = <EventType extends Event>(handler: unknown) => {\n if (typeof handler !== \"function\") {\n return handler;\n }\n\n return (event: EventType) => {\n captureSelectionEventBeforeMenuPressUp();\n (handler as (event: EventType) => void)(event);\n };\n };\n\n const selectableItemProps = () => {\n const props = selectableItem.itemProps as Record<string, unknown>;\n const onClick = props.onClick;\n\n return {\n ...props,\n onPointerUp: withMenuPressUpSelectionSnapshot<PointerEvent>(props.onPointerUp),\n onMouseUp: withMenuPressUpSelectionSnapshot<MouseEvent>(props.onMouseUp),\n onClick:\n typeof onClick === \"function\"\n ? (event: MouseEvent) => {\n // The menu layer's upstream-compatible target.click() should activate\n // the menu item, not feed back into selectable-item virtual selection.\n if (isDispatchingMenuSyntheticClick && isVirtualClick(event)) {\n if (pendingSyntheticClickSelectionEvent != null) {\n state.selectionManager.emitDuplicateSelectionEvent(\n pendingSyntheticClickSelectionEvent,\n );\n pendingSyntheticClickSelectionEvent = null;\n }\n return;\n }\n\n (onClick as (event: MouseEvent) => void)(event);\n }\n : onClick,\n };\n };\n\n const menuPressProps = () => {\n const {\n onKeyDown: _onKeyDown,\n onKeyUp: _onKeyUp,\n ...props\n } = pressProps as Record<string, unknown>;\n return props;\n };\n\n const keyboardProps = {\n onKeyDown: (event: KeyboardEvent) => {\n if (isDisabled() || event.repeat) {\n return;\n }\n\n if (event.key !== \" \" && event.key !== \"Enter\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n interaction = { pointerType: \"keyboard\", key: event.key };\n\n const target = getEventTarget<HTMLElement>(event) ?? ref?.();\n if (target instanceof HTMLElement) {\n suppressNextKeyboardClick = true;\n isDispatchingKeyboardClick = true;\n try {\n target.click();\n } finally {\n isDispatchingKeyboardClick = false;\n }\n }\n },\n onKeyUp: (event: KeyboardEvent) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n suppressNextKeyboardClick = false;\n }\n },\n };\n\n // Handle hover\n const { hoverProps } = createHover({\n get isDisabled() {\n return isDisabled();\n },\n onHoverStart() {\n state.setFocusedKey(getProps().key);\n },\n });\n\n // Handle focus ring\n const { isFocusVisible, focusProps } = createFocusRing();\n\n // Generate unique IDs for label and description. The description + keyboard\n // ids use `createSlotId` (a 1:1 port of upstream `useSlotId`): each resolves\n // to `undefined` unless an element carrying that id is actually rendered, so\n // an item with no description/shortcut leaves `aria-describedby` unset instead\n // of pointing at a non-existent element. Mirrors useMenuItem's\n // `[props['aria-describedby'], descriptionId, keyboardId].filter(Boolean)`.\n const labelId = `${getProps().key}-label`;\n const descriptionId = createSlotId();\n const keyboardId = createSlotId();\n\n return {\n get menuItemProps() {\n const p = getProps();\n const key = p.key;\n const ariaLabel = p[\"aria-label\"];\n const mode = selectionMode();\n const selected = isSelected();\n const trigger = isTrigger();\n\n const baseProps: Record<string, unknown> = {\n role: trigger\n ? \"menuitem\"\n : mode === \"single\"\n ? \"menuitemradio\"\n : mode === \"multiple\"\n ? \"menuitemcheckbox\"\n : \"menuitem\",\n id: p.id ?? String(key),\n \"aria-disabled\": isDisabled() || undefined,\n \"aria-checked\": mode !== \"none\" && !trigger ? selected : undefined,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": !ariaLabel ? labelId : undefined,\n \"aria-describedby\": [descriptionId(), keyboardId()].filter(Boolean).join(\" \") || undefined,\n \"aria-controls\": p[\"aria-controls\"],\n \"aria-haspopup\": p[\"aria-haspopup\"],\n \"aria-expanded\": p[\"aria-expanded\"],\n \"data-selected\": selected || undefined,\n \"data-focused\": isFocused() || undefined,\n \"data-focus-visible\": isFocusVisible() || undefined,\n \"data-pressed\": isPressed() || undefined,\n \"data-disabled\": isDisabled() || undefined,\n };\n\n // Add link props when href is present\n if (isLink()) {\n baseProps.href = isDisabled() ? undefined : p.href;\n if (p.target) baseProps.target = p.target;\n if (p.rel) baseProps.rel = p.rel;\n if (p.download != null && p.download !== false) {\n baseProps.download = p.download === true ? \"\" : p.download;\n }\n }\n\n return mergeProps(\n selectableItemProps(),\n menuPressProps(),\n hoverProps as Record<string, unknown>,\n focusProps as Record<string, unknown>,\n keyboardProps,\n { onClick: performMenuAction },\n baseProps,\n ) as JSX.HTMLAttributes<HTMLElement>;\n },\n labelProps: {\n id: labelId,\n },\n // Getters so the slot id stays reactive: `createSlotId` may clear the id\n // (to `undefined`) after mount if no element registered it, and consumers\n // reading these props re-track that change.\n get descriptionProps() {\n return { id: descriptionId() };\n },\n get keyboardShortcutProps() {\n return { id: keyboardId(), \"aria-hidden\": true };\n },\n isFocused,\n isFocusVisible: () => isFocused() && isFocusVisible(),\n isPressed,\n isDisabled,\n isSelected,\n selectionMode,\n };\n}\n","/**\n * Provides the behavior and accessibility implementation for a menu trigger.\n * Based on @react-aria/menu useMenuTrigger.\n */\n\nimport { type JSX } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport type { OverlayTriggerState } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaMenuTriggerProps {\n /** The type of menu that the menu trigger opens. */\n type?: \"menu\" | \"listbox\";\n /** Whether the menu trigger is disabled. */\n isDisabled?: boolean;\n /** An ID for the menu. */\n id?: string;\n}\n\nexport interface MenuTriggerAria {\n /** Props for the menu trigger button. */\n menuTriggerProps: JSX.HTMLAttributes<HTMLElement> & {\n onPress: () => void;\n onKeyDown: (e: KeyboardEvent) => void;\n };\n /** Props for the menu element. */\n menuProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a menu trigger.\n */\nexport function createMenuTrigger(\n props: MaybeAccessor<AriaMenuTriggerProps>,\n state: OverlayTriggerState,\n): MenuTriggerAria {\n const getProps = () => access(props);\n const menuId = createId(getProps().id);\n\n const onPress = () => {\n if (!getProps().isDisabled) {\n state.toggle();\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (getProps().isDisabled) return;\n\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"ArrowDown\": {\n e.preventDefault();\n if (!state.isOpen()) {\n state.open();\n }\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n if (!state.isOpen()) {\n state.open();\n }\n break;\n }\n }\n };\n\n return {\n get menuTriggerProps() {\n const p = getProps();\n const type = p.type ?? \"menu\";\n const isOpen = state.isOpen();\n\n return {\n \"aria-haspopup\": type,\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? menuId : undefined,\n \"aria-disabled\": p.isDisabled || undefined,\n onPress,\n onKeyDown,\n };\n },\n menuProps: {\n id: menuId,\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"menu.jsx","names":[],"sources":["../../src/menu/createMenu.ts","../../src/menu/createMenuItem.ts","../../src/interactions/createContextMenu.ts","../../src/menu/intl/index.ts","../../src/menu/createMenuTrigger.ts"],"sourcesContent":["/*\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/menu/useMenu.ts\n\n/**\n * Provides the behavior and accessibility implementation for a menu component.\n * A menu displays a list of actions or options that a user can choose.\n * Based on @react-aria/menu useMenu.\n */\n\nimport { onOwnedCleanup } from \"../utils/owner\";\nimport { createTrackedEffect } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createFocusWithin } from \"../interactions/createFocusWithin\";\nimport { createLabel } from \"../label/createLabel\";\nimport { createTypeSelect } from \"../selection/createTypeSelect\";\nimport { selectItem } from \"../selection/selectItem\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { focusSafely, runAfterPaint } from \"../utils/focus\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { isDevEnv } from \"../utils/env\";\nimport type { MenuState, Key, Collection } from \"@proyecto-viviana/solid-stately\";\n\n/**\n * Default number of items to skip for page up/down when DOM measurement is not available.\n */\nconst DEFAULT_PAGE_SIZE = 10;\n\n/**\n * Find the next non-disabled key in a collection.\n */\nfunction findNextNonDisabledKey<T>(\n collection: Collection<T>,\n currentKey: Key | null,\n direction: \"next\" | \"prev\",\n isDisabled: (key: Key) => boolean,\n wrap: boolean,\n): Key | null {\n const getNextKey =\n direction === \"next\"\n ? (key: Key) => collection.getKeyAfter(key)\n : (key: Key) => collection.getKeyBefore(key);\n\n const getFirstKey =\n direction === \"next\" ? () => collection.getFirstKey() : () => collection.getLastKey();\n\n let nextKey = currentKey != null ? getNextKey(currentKey) : getFirstKey();\n\n // Skip disabled keys\n while (nextKey != null && isDisabled(nextKey)) {\n nextKey = getNextKey(nextKey);\n }\n\n // If we've reached the end and wrapping is enabled\n if (nextKey == null && wrap) {\n nextKey = getFirstKey();\n // Skip disabled keys from the start\n while (nextKey != null && isDisabled(nextKey)) {\n nextKey = getNextKey(nextKey);\n }\n }\n\n return nextKey;\n}\n\nexport interface AriaMenuProps<T = unknown> {\n /** An ID for the menu. */\n id?: string;\n /** Whether the menu is disabled. */\n isDisabled?: boolean;\n /** The label for the menu. */\n label?: JSX.Element;\n /** An accessible label for the menu when no visible label is provided. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the menu. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the menu. */\n \"aria-describedby\"?: string;\n /** Handler called when focus moves into the menu. */\n onFocus?: (e: FocusEvent) => void;\n /** Handler called when focus moves out of the menu. */\n onBlur?: (e: FocusEvent) => void;\n /** Handler called when the focus state changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Handler called when an item is activated (pressed). */\n onAction?: (key: Key, value: T) => void;\n /** Handler called when the menu should close. */\n onClose?: () => void;\n /** Whether the menu should close when an item is selected. */\n shouldCloseOnSelect?: boolean;\n /** Whether focus should automatically wrap around. */\n shouldFocusWrap?: boolean;\n /** Whether to auto-focus the menu root (`true`) or the first/last item. */\n autoFocus?: boolean | \"first\" | \"last\";\n /** Whether type-to-select is disabled. @default false */\n disallowTypeAhead?: boolean;\n}\n\nexport interface MenuAria {\n /** Props for the menu element. */\n menuProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the menu's label element (if any). */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n// Shared data between menu and menu items\nconst menuData = new WeakMap<object, MenuData>();\n\ninterface MenuData {\n id: string;\n // Type-erased like upstream menu/utils.ts MenuData (value: any): the WeakMap\n // is keyed by an untyped state, so the item value flows through as unknown.\n onAction?: (key: Key, value: unknown) => void;\n onClose?: () => void;\n isDisabled?: boolean;\n shouldCloseOnSelect?: boolean;\n}\n\nexport function getMenuData(state: MenuState): MenuData | undefined {\n return menuData.get(state);\n}\n\n/**\n * Provides the behavior and accessibility implementation for a menu component.\n * A menu displays a list of actions or options that a user can choose.\n */\nexport function createMenu<T>(\n props: MaybeAccessor<AriaMenuProps<T>>,\n state: MenuState<T>,\n ref?: Accessor<HTMLElement | null>,\n): MenuAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n\n // Development-time warning for missing accessibility labels\n if (isDevEnv()) {\n const p = getProps();\n if (!p.label && !p[\"aria-label\"] && !p[\"aria-labelledby\"]) {\n console.warn(\n \"[solidaria] A Menu requires an aria-label or aria-labelledby attribute for accessibility.\",\n );\n }\n }\n\n // Filter DOM props\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n const updateSharedData = () => {\n const p = getProps();\n menuData.set(state, {\n id,\n onAction: p.onAction as MenuData[\"onAction\"],\n onClose: p.onClose,\n isDisabled: p.isDisabled,\n shouldCloseOnSelect: p.shouldCloseOnSelect,\n });\n };\n\n // Ensure menu items created in the same render pass can read parent metadata.\n updateSharedData();\n\n // Share data with child menu items\n createTrackedEffect(() => {\n const _s2Cleanups: Array<() => void> = [];\n\n updateSharedData();\n\n _s2Cleanups.push(() => {\n menuData.delete(state);\n });\n\n return () => {\n for (const c of _s2Cleanups) c();\n };\n });\n\n // Handle focus within\n const { focusWithinProps } = createFocusWithin({\n onFocusWithin: (e) => getProps().onFocus?.(e),\n onBlurWithin: (e) => getProps().onBlur?.(e),\n onFocusWithinChange: (isFocused) => {\n getProps().onFocusChange?.(isFocused);\n state.setFocused(isFocused);\n },\n });\n\n // Label handling\n const { labelProps, fieldProps } = createLabel({\n get id() {\n return id;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n labelElementType: \"span\",\n });\n\n // Type-to-select\n const { typeSelectProps } = createTypeSelect({\n collection: () => state.collection(),\n focusedKey: () => state.focusedKey(),\n onFocusedKeyChange: (key) => state.setFocusedKey(key),\n isKeyDisabled: (key) => state.isDisabled(key),\n get isDisabled() {\n return getProps().disallowTypeAhead ?? false;\n },\n });\n\n // Auto-focus the menu (or its first/last/selected item) when `autoFocus` is\n // set. Mirrors useMenu → useSelectableCollection: mouse open passes `true`\n // (focus the menu root); ArrowDown/ArrowUp pass `\"first\"`/`\"last\"`.\n const isNavDisabled = (key: Key) => state.isDisabled(key) && state.disabledBehavior() === \"all\";\n\n let autoFocusDone = false;\n let cancelAutoFocus: (() => void) | undefined;\n createTrackedEffect(() => {\n const autoFocus = getProps().autoFocus ?? false;\n if (autoFocusDone || autoFocus === false) {\n return;\n }\n\n const collection = state.collection();\n if (collection.size === 0) {\n return;\n }\n\n let focusedKey: Key | null = null;\n if (autoFocus === \"first\") {\n focusedKey = findNextNonDisabledKey(collection, null, \"next\", isNavDisabled, false);\n } else if (autoFocus === \"last\") {\n focusedKey = findNextNonDisabledKey(collection, null, \"prev\", isNavDisabled, false);\n }\n\n const selectedKeys = state.selectionManager.rawSelection;\n if (selectedKeys !== \"all\" && selectedKeys.size) {\n for (const key of selectedKeys) {\n if (state.selectionManager.canSelectItem(key)) {\n focusedKey = key;\n break;\n }\n }\n }\n\n const root = ref?.();\n if (focusedKey == null && !root) {\n return;\n }\n\n autoFocusDone = true;\n cancelAutoFocus = runAfterPaint(() => {\n cancelAutoFocus = undefined;\n state.setFocused(true);\n state.setFocusedKey(focusedKey);\n if (focusedKey == null) {\n const el = ref?.();\n if (el) {\n // Mouse-open (`autoFocus: true`) focuses the menu root. React's\n // useEffect-timed `focusSafely` lands CSS `:focus-visible` on that\n // tabindex=0 collection, so D1 `outline-width` is the UA 1px even\n // though author CSS sets `outline-style: none`. Solid's after-paint\n // focus otherwise stays outside `:focus-visible` (UA medium 3px).\n // Request `focusVisible` so the collection root matches.\n focusSafely(el, { focusVisible: true });\n }\n }\n });\n });\n onOwnedCleanup(() => {\n cancelAutoFocus?.();\n });\n\n // Keyboard navigation\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (e) => {\n if (getProps().isDisabled) return;\n\n const collection = state.collection();\n const p = getProps();\n const wrap = p.shouldFocusWrap ?? true;\n\n // Disabled keys only block keyboard navigation under disabledBehavior \"all\"\n // (the default); under \"selection\" they stay focusable while their selection\n // remains blocked. Mirrors ListKeyboardDelegate.isDisabled in React Aria,\n // which gates the navigation skip on the resolved disabledBehavior.\n const isDisabled = (key: Key) => state.isDisabled(key) && state.disabledBehavior() === \"all\";\n\n switch (e.key) {\n case \"ArrowDown\": {\n // Only consume the key once a target exists, mirroring\n // useSelectableCollection (ArrowDown, 211-225): preventDefault is called\n // inside `if (nextKey != null)`, so at the last item without wrap the\n // arrow bubbles instead of being swallowed.\n const currentKey = state.focusedKey();\n const nextKey = findNextNonDisabledKey(collection, currentKey, \"next\", isDisabled, wrap);\n if (nextKey != null) {\n e.preventDefault();\n state.setFocusedKey(nextKey);\n }\n break;\n }\n case \"ArrowUp\": {\n const currentKey = state.focusedKey();\n const prevKey = findNextNonDisabledKey(collection, currentKey, \"prev\", isDisabled, wrap);\n if (prevKey != null) {\n e.preventDefault();\n state.setFocusedKey(prevKey);\n }\n break;\n }\n case \"Home\": {\n // Mirror useSelectableCollection (Home, 283-285): with nothing focused,\n // Shift+Home has no anchor to extend from, so leave the event alone.\n if (state.focusedKey() == null && e.shiftKey) break;\n e.preventDefault();\n // Find first non-disabled key\n let firstKey = collection.getFirstKey();\n while (firstKey != null && isDisabled(firstKey)) {\n firstKey = collection.getKeyAfter(firstKey);\n }\n if (firstKey != null) {\n state.setFocusedKey(firstKey);\n }\n break;\n }\n case \"End\": {\n // Mirror useSelectableCollection (End, 300-302): same anchor guard as Home.\n if (state.focusedKey() == null && e.shiftKey) break;\n e.preventDefault();\n // Find last non-disabled key\n let lastKey = collection.getLastKey();\n while (lastKey != null && isDisabled(lastKey)) {\n lastKey = collection.getKeyBefore(lastKey);\n }\n if (lastKey != null) {\n state.setFocusedKey(lastKey);\n }\n break;\n }\n case \" \":\n case \"Enter\": {\n if (e.target !== e.currentTarget) break;\n e.preventDefault();\n const focusedKey = state.focusedKey();\n // Activation is gated on the navigation-disabled check, not the raw\n // one: under disabledBehavior \"selection\" a focusable disabled item\n // still fires onAction (and closes), mirroring useSelectableItem's\n // allowsActions (manager.isDisabled is gated on \"all\"). Selection stays\n // blocked independently — state.select self-guards on the raw disabled\n // check (SelectionManager.canSelectItem).\n if (focusedKey != null && !isDisabled(focusedKey)) {\n // Route through the aria-layer onSelect so the platform-aware modifier\n // resolution (isCtrlKeyPressed / non-contiguous modifier) and the\n // shift-extend path are applied. Keyboard activation carries\n // pointerType \"keyboard\".\n selectItem(\n state,\n focusedKey,\n {\n pointerType: \"keyboard\",\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n },\n collection,\n );\n // Pass the activated item's value as the second arg, mirroring\n // useMenuItem performAction: onAction(key, item?.value).\n p.onAction?.(focusedKey, collection.getItem(focusedKey)?.value as T);\n const item = collection.getItem(focusedKey);\n const isLink = !!item?.props?.href;\n const shouldClose =\n p.shouldCloseOnSelect ??\n (e.key === \"Enter\" || state.selectionMode() === \"none\" || isLink);\n if (shouldClose) {\n p.onClose?.();\n }\n }\n break;\n }\n case \"Escape\": {\n e.preventDefault();\n p.onClose?.();\n break;\n }\n case \"PageDown\": {\n // Mirror useSelectableCollection (PageDown, 324-332): only consume the\n // key when an item is focused. A non-empty collection always yields a\n // page target via getKeyPageBelow, so a focused key means focus moves\n // and the event is swallowed; with nothing focused, leave it alone to\n // bubble (e.g. to scroll an enclosing region).\n const currentKey = state.focusedKey();\n if (currentKey == null) break;\n e.preventDefault();\n const el = ref?.();\n\n if (el) {\n // Use DOM measurements to calculate how many items fit in a page\n const visibleHeight = el.clientHeight;\n let traveled = 0;\n let targetKey = currentKey;\n\n while (targetKey != null && traveled < visibleHeight) {\n const nextKey = collection.getKeyAfter(targetKey);\n if (nextKey == null) break;\n\n // Try to measure the item height\n const itemElement = el.querySelector(`[data-key=\"${targetKey}\"]`);\n traveled += itemElement?.clientHeight ?? 32;\n\n // Skip disabled items\n if (!isDisabled(nextKey)) {\n targetKey = nextKey;\n } else {\n // Skip over disabled items without counting them\n const afterDisabled = findNextNonDisabledKey(\n collection,\n nextKey,\n \"next\",\n isDisabled,\n false,\n );\n if (afterDisabled != null) {\n targetKey = afterDisabled;\n } else {\n break;\n }\n }\n }\n\n if (targetKey != null && targetKey !== currentKey) {\n state.setFocusedKey(targetKey);\n }\n } else {\n // Fallback: move by DEFAULT_PAGE_SIZE items\n let count = DEFAULT_PAGE_SIZE;\n let targetKey = currentKey;\n\n while (count > 0 && targetKey != null) {\n const nextKey = findNextNonDisabledKey(\n collection,\n targetKey,\n \"next\",\n isDisabled,\n false,\n );\n if (nextKey == null) break;\n targetKey = nextKey;\n count--;\n }\n\n if (targetKey != null) {\n state.setFocusedKey(targetKey);\n }\n }\n break;\n }\n case \"PageUp\": {\n // Mirror useSelectableCollection (PageUp, 333-341): only consume the key\n // when an item is focused. A non-empty collection always yields a page\n // target via getKeyPageAbove, so a focused key means focus moves and the\n // event is swallowed; with nothing focused, leave it alone to bubble\n // (e.g. to scroll an enclosing region).\n const currentKey = state.focusedKey();\n if (currentKey == null) break;\n e.preventDefault();\n const el = ref?.();\n\n if (el) {\n // Use DOM measurements to calculate how many items fit in a page\n const visibleHeight = el.clientHeight;\n let traveled = 0;\n let targetKey = currentKey;\n\n while (targetKey != null && traveled < visibleHeight) {\n const prevKey = collection.getKeyBefore(targetKey);\n if (prevKey == null) break;\n\n // Try to measure the item height\n const itemElement = el.querySelector(`[data-key=\"${targetKey}\"]`);\n traveled += itemElement?.clientHeight ?? 32;\n\n // Skip disabled items\n if (!isDisabled(prevKey)) {\n targetKey = prevKey;\n } else {\n // Skip over disabled items without counting them\n const beforeDisabled = findNextNonDisabledKey(\n collection,\n prevKey,\n \"prev\",\n isDisabled,\n false,\n );\n if (beforeDisabled != null) {\n targetKey = beforeDisabled;\n } else {\n break;\n }\n }\n }\n\n if (targetKey != null && targetKey !== currentKey) {\n state.setFocusedKey(targetKey);\n }\n } else {\n // Fallback: move by DEFAULT_PAGE_SIZE items\n let count = DEFAULT_PAGE_SIZE;\n let targetKey = currentKey;\n\n while (count > 0 && targetKey != null) {\n const prevKey = findNextNonDisabledKey(\n collection,\n targetKey,\n \"prev\",\n isDisabled,\n false,\n );\n if (prevKey == null) break;\n targetKey = prevKey;\n count--;\n }\n\n if (targetKey != null) {\n state.setFocusedKey(targetKey);\n }\n }\n break;\n }\n }\n };\n\n return {\n get labelProps() {\n return labelProps as JSX.HTMLAttributes<HTMLElement>;\n },\n get menuProps() {\n const p = getProps();\n\n const baseProps = mergeProps(\n domProps(),\n focusWithinProps as Record<string, unknown>,\n fieldProps as Record<string, unknown>,\n {\n role: \"menu\",\n // Roving tabindex: the menu container is tab-reachable (0) only while no\n // item holds focus; once `focusedKey` is set the container drops to -1 so\n // Tab/Shift+Tab traverse past it and real focus stays on the item. This\n // mirrors upstream `useMenu`, which spreads `useSelectableList`'s\n // `listProps.tabIndex` (`manager.focusedKey == null ? 0 : -1`, non-virtual\n // focus) onto the menu.\n //\n // This MUST be a getter, not an eagerly-evaluated value. Consumers\n // (solidaria-components `Menu.tsx`) destructure `menuProps` once and\n // spread it through `mergeProps`; a plain `tabIndex: <value>` would be\n // computed at that first read (while `focusedKey` is still null → 0) and\n // frozen. As a getter it survives `mergeProps` (which preserves getters),\n // so the consumer's reactive element-spread re-reads `state.focusedKey()`\n // and the container tabindex tracks focus.\n get tabIndex() {\n return getProps().isDisabled ? undefined : state.focusedKey() == null ? 0 : -1;\n },\n \"aria-disabled\": p.isDisabled || undefined,\n onKeyDown,\n } as Record<string, unknown>,\n );\n\n // Add type-select props if enabled\n if (!p.disallowTypeAhead) {\n return mergeProps(\n baseProps,\n typeSelectProps as Record<string, unknown>,\n ) as JSX.HTMLAttributes<HTMLElement>;\n }\n\n return baseProps as JSX.HTMLAttributes<HTMLElement>;\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/menu/useMenuItem.ts\n\n/**\n * Provides the behavior and accessibility implementation for a menu item.\n * Based on @react-aria/menu useMenuItem.\n */\n\nimport type { Accessor } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createPress, type PressEvent } from \"../interactions/createPress\";\nimport { createHover } from \"../interactions/createHover\";\nimport { createFocusRing } from \"../interactions/createFocusRing\";\nimport { createSelectableItem } from \"../selection/createSelectableItem\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { getEventTarget } from \"../utils/dom\";\nimport { isVirtualClick } from \"../utils/events\";\nimport { createSlotId } from \"../ssr\";\nimport { getMenuData } from \"./createMenu\";\nimport type { MenuState, Key, Selection, SelectionMode } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaMenuItemProps {\n /** The unique key for the menu item. */\n key: Key;\n /** Optional DOM id for the menu item. Defaults to the key. */\n id?: string;\n /** Whether the menu item is disabled. */\n isDisabled?: boolean;\n /** An accessible label for the menu item. */\n \"aria-label\"?: string;\n /** Element controlled by this menu item, for submenu triggers. */\n \"aria-controls\"?: string;\n /** Whether this menu item opens a submenu or subdialog. */\n \"aria-haspopup\"?: string | boolean;\n /** Whether the submenu or subdialog is expanded. */\n \"aria-expanded\"?: boolean | \"true\" | \"false\";\n /** Handler called when the menu item is selected. */\n onAction?: () => void;\n /** Whether to close the menu when this item is selected. */\n closeOnSelect?: boolean;\n /** A URL to link to. Turns the menu item into a link. */\n href?: string;\n /** The target window for the link. */\n target?: string;\n /** The relationship between the linked resource and the current page. */\n rel?: string;\n /** Causes the browser to download the linked URL. A string may be provided to suggest a file name. */\n download?: boolean | string;\n}\n\nexport interface MenuItemAria {\n /** Props for the menu item element. */\n menuItemProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the label text inside the menu item. */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the description text inside the menu item. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the keyboard shortcut inside the menu item. */\n keyboardShortcutProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the menu item is currently focused. */\n isFocused: Accessor<boolean>;\n /** Whether the menu item is keyboard focused. */\n isFocusVisible: Accessor<boolean>;\n /** Whether the menu item is currently pressed. */\n isPressed: Accessor<boolean>;\n /** Whether the menu item is disabled. */\n isDisabled: Accessor<boolean>;\n /** Whether the menu item is selected. */\n isSelected: Accessor<boolean>;\n /** The parent menu selection mode. */\n selectionMode: Accessor<SelectionMode>;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a menu item.\n */\nexport function createMenuItem<T>(\n props: MaybeAccessor<AriaMenuItemProps>,\n state: MenuState<T>,\n ref?: () => HTMLElement | null,\n): MenuItemAria {\n const getProps = () => access(props);\n\n // Get shared data from menu\n const getData = () => getMenuData(state);\n\n // Computed states. `state.isDisabled` is SelectionManager.isDisabled, which\n // already respects disabledBehavior=\"selection\"; these items stay actionable\n // while SelectionManager.canSelectItem keeps selection blocked.\n const isDisabled: Accessor<boolean> = () => {\n return Boolean(\n getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key),\n );\n };\n\n const selectionMode: Accessor<SelectionMode> = () => {\n return state.selectionMode();\n };\n\n // Whether this is a link item\n const isLink = () => !!getProps().href;\n const isTrigger = () => !!getProps()[\"aria-haspopup\"];\n\n const selectableItem = createSelectableItem(\n () => {\n const p = getProps();\n return {\n key: p.key,\n id: p.id ?? String(p.key),\n isDisabled: isDisabled(),\n isLink: isLink(),\n href: p.href,\n shouldSelectOnPressUp: true,\n allowsDifferentPressOrigin: true,\n linkBehavior: \"none\",\n };\n },\n state,\n () => ref?.() ?? null,\n );\n\n const isFocused: Accessor<boolean> = () => selectableItem.isFocused();\n\n const isSelected: Accessor<boolean> = () => {\n return !isTrigger() && selectableItem.isSelected();\n };\n\n type MenuInteraction = {\n pointerType: PressEvent[\"pointerType\"];\n key?: string;\n };\n\n let interaction: MenuInteraction | null = null;\n let isMenuPressActive = false;\n let isDispatchingKeyboardClick = false;\n let isDispatchingMenuSyntheticClick = false;\n let selectionEventBeforeMenuPressUp: Selection | null = null;\n let hasSelectionEventBeforeMenuPressUp = false;\n let pendingSyntheticClickSelectionEvent: Selection | null = null;\n let suppressNextKeyboardClick = false;\n\n const getShouldClose = (): boolean => {\n const p = getProps();\n const explicitClose = p.closeOnSelect ?? getData()?.shouldCloseOnSelect;\n if (explicitClose !== undefined) {\n return explicitClose;\n }\n\n if (interaction?.pointerType === \"keyboard\") {\n return interaction.key === \"Enter\" || selectionMode() === \"none\" || isLink();\n }\n\n return selectionMode() !== \"multiple\" || isLink();\n };\n\n const performMenuAction = (event: MouseEvent) => {\n if (isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (suppressNextKeyboardClick && interaction == null) {\n suppressNextKeyboardClick = false;\n return;\n }\n\n const p = getProps();\n const key = p.key;\n const data = getData();\n\n // Submenu triggers open their submenu via the local item action, but do not\n // fire the parent menu onAction or close the menu.\n if (isTrigger()) {\n p.onAction?.();\n interaction = null;\n return;\n }\n\n // Call item-specific onAction.\n p.onAction?.();\n\n // Call menu-level onAction with the activated item's value, mirroring\n // useMenuItem performAction: onAction(key, item?.value).\n const item = state.collection().getItem(key);\n data?.onAction?.(key, item?.value);\n\n if (getShouldClose()) {\n data?.onClose?.();\n }\n\n interaction = null;\n };\n\n // Menu-specific press handling is separate from selectable-item selection,\n // matching upstream useMenuItem: useSelectableItem owns selection/focus\n // timing; the menu layer owns pressed state, different-origin release, action,\n // links, and close behavior.\n const { pressProps, isPressed } = createPress({\n get isDisabled() {\n return isDisabled();\n },\n onPressChange(isPressed) {\n isMenuPressActive = isPressed;\n },\n onPressUp(e) {\n if (e.pointerType !== \"keyboard\" && !isDispatchingKeyboardClick) {\n interaction = { pointerType: e.pointerType };\n }\n\n // Native menus allow pressing the trigger, dragging to an item, and\n // releasing to activate it. Upstream useMenuItem synthesizes a click in\n // this different-origin mouse case.\n if (e.pointerType === \"mouse\" && !isMenuPressActive && e.target instanceof HTMLElement) {\n const selectionEventAfterPressUp = state.selectionManager.lastSelectionEvent;\n pendingSyntheticClickSelectionEvent =\n hasSelectionEventBeforeMenuPressUp &&\n selectionEventAfterPressUp != null &&\n selectionEventAfterPressUp !== selectionEventBeforeMenuPressUp\n ? selectionEventAfterPressUp\n : null;\n\n isDispatchingMenuSyntheticClick = true;\n try {\n e.target.click();\n } finally {\n isDispatchingMenuSyntheticClick = false;\n hasSelectionEventBeforeMenuPressUp = false;\n selectionEventBeforeMenuPressUp = null;\n pendingSyntheticClickSelectionEvent = null;\n }\n }\n },\n });\n\n const captureSelectionEventBeforeMenuPressUp = () => {\n selectionEventBeforeMenuPressUp = state.selectionManager.lastSelectionEvent;\n hasSelectionEventBeforeMenuPressUp = true;\n };\n\n const withMenuPressUpSelectionSnapshot = <EventType extends Event>(handler: unknown) => {\n if (typeof handler !== \"function\") {\n return handler;\n }\n\n return (event: EventType) => {\n captureSelectionEventBeforeMenuPressUp();\n (handler as (event: EventType) => void)(event);\n };\n };\n\n const selectableItemProps = () => {\n const props = selectableItem.itemProps as Record<string, unknown>;\n const onClick = props.onClick;\n\n const interceptSyntheticClick = (event: MouseEvent, fallbackHandler?: unknown) => {\n // The menu layer's upstream-compatible target.click() should activate\n // the menu item, not feed back into selectable-item virtual selection.\n if (isDispatchingMenuSyntheticClick && isVirtualClick(event)) {\n if (pendingSyntheticClickSelectionEvent != null) {\n state.selectionManager.emitDuplicateSelectionEvent(pendingSyntheticClickSelectionEvent);\n pendingSyntheticClickSelectionEvent = null;\n }\n return;\n }\n\n if (typeof fallbackHandler === \"function\") {\n (fallbackHandler as (event: MouseEvent) => void)(event);\n }\n };\n\n return {\n ...props,\n onPointerUp: withMenuPressUpSelectionSnapshot<PointerEvent>(props.onPointerUp),\n onMouseUp: withMenuPressUpSelectionSnapshot<MouseEvent>(props.onMouseUp),\n onClick:\n typeof onClick === \"function\"\n ? (event: MouseEvent) => interceptSyntheticClick(event, onClick)\n : onClick,\n };\n };\n\n const menuPressProps = () => {\n const {\n onKeyDown: _onKeyDown,\n onKeyUp: _onKeyUp,\n ...props\n } = pressProps as Record<string, unknown>;\n return props;\n };\n\n const keyboardProps = {\n onKeyDown: (event: KeyboardEvent) => {\n if (isDisabled() || event.repeat) {\n return;\n }\n\n if (event.key !== \" \" && event.key !== \"Enter\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n interaction = { pointerType: \"keyboard\", key: event.key };\n\n const target = getEventTarget<HTMLElement>(event) ?? ref?.();\n if (target instanceof HTMLElement) {\n suppressNextKeyboardClick = true;\n isDispatchingKeyboardClick = true;\n try {\n target.click();\n } finally {\n isDispatchingKeyboardClick = false;\n }\n }\n },\n onKeyUp: (event: KeyboardEvent) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n suppressNextKeyboardClick = false;\n }\n },\n };\n\n // Handle hover\n const { hoverProps } = createHover({\n get isDisabled() {\n return isDisabled();\n },\n onHoverStart() {\n state.setFocusedKey(getProps().key);\n },\n });\n\n // Handle focus ring\n const { isFocusVisible, focusProps } = createFocusRing();\n\n // Generate unique IDs for label and description. The description + keyboard\n // ids use `createSlotId` (a 1:1 port of upstream `useSlotId`): each resolves\n // to `undefined` unless an element carrying that id is actually rendered, so\n // an item with no description/shortcut leaves `aria-describedby` unset instead\n // of pointing at a non-existent element. Mirrors useMenuItem's\n // `[props['aria-describedby'], descriptionId, keyboardId].filter(Boolean)`.\n const labelId = `${getProps().key}-label`;\n const descriptionId = createSlotId();\n const keyboardId = createSlotId();\n\n return {\n get menuItemProps() {\n const p = getProps();\n const key = p.key;\n const ariaLabel = p[\"aria-label\"];\n const mode = selectionMode();\n const selected = isSelected();\n const trigger = isTrigger();\n\n const baseProps: Record<string, unknown> = {\n role: trigger\n ? \"menuitem\"\n : mode === \"single\"\n ? \"menuitemradio\"\n : mode === \"multiple\"\n ? \"menuitemcheckbox\"\n : \"menuitem\",\n id: p.id ?? String(key),\n \"aria-disabled\": isDisabled() || undefined,\n \"aria-checked\": mode !== \"none\" && !trigger ? (selected ? \"true\" : \"false\") : undefined,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": !ariaLabel ? labelId : undefined,\n \"aria-describedby\": [descriptionId(), keyboardId()].filter(Boolean).join(\" \") || undefined,\n \"aria-controls\": p[\"aria-controls\"],\n \"aria-haspopup\": p[\"aria-haspopup\"],\n \"aria-expanded\": p[\"aria-expanded\"],\n \"data-selected\": selected ? \"true\" : undefined,\n \"data-focused\": isFocused() ? \"true\" : undefined,\n \"data-focus-visible\": isFocusVisible() ? \"true\" : undefined,\n \"data-pressed\": isPressed() ? \"true\" : undefined,\n \"data-disabled\": isDisabled() ? \"true\" : undefined,\n };\n\n // Add link props when href is present\n if (isLink()) {\n baseProps.href = isDisabled() ? undefined : p.href;\n if (p.target) baseProps.target = p.target;\n if (p.rel) baseProps.rel = p.rel;\n if (p.download != null && p.download !== false) {\n baseProps.download = p.download === true ? \"\" : p.download;\n }\n }\n\n return mergeProps(\n selectableItemProps(),\n menuPressProps(),\n hoverProps as Record<string, unknown>,\n focusProps as Record<string, unknown>,\n keyboardProps,\n { onClick: performMenuAction },\n baseProps,\n ) as JSX.HTMLAttributes<HTMLElement>;\n },\n labelProps: {\n id: labelId,\n },\n // Getters so the slot id stays reactive: `createSlotId` may clear the id\n // (to `undefined`) after mount if no element registered it, and consumers\n // reading these props re-track that change.\n get descriptionProps() {\n return { id: descriptionId() };\n },\n get keyboardShortcutProps() {\n return { id: keyboardId(), \"aria-hidden\": \"true\" as const };\n },\n isFocused,\n isFocusVisible: () => isFocused() && isFocusVisible(),\n isPressed,\n isDisabled,\n isSelected,\n selectionMode,\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/interactions/useContextMenu.ts\n\n/**\n * Handles context-menu events across mouse, touch, keyboard, and screen readers.\n * Based on @react-aria/interactions useContextMenu.\n */\n\nimport type { JSX } from \"@solidjs/web\";\nimport { createLongPress } from \"./createLongPress\";\nimport { isIOS, isMac, mergeProps } from \"../utils\";\n\nexport interface ContextMenuEvent {\n /** Element that received the context-menu request. */\n target: Element;\n /** Horizontal position relative to the target. */\n x: number;\n /** Vertical position relative to the target. */\n y: number;\n}\n\nexport interface ContextMenuProps {\n /** Called when the user requests a context menu. */\n onContextMenu?: (event: ContextMenuEvent) => void;\n}\n\nexport interface ContextMenuAria {\n /** Props for the target element. */\n contextMenuProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/** Handles native and emulated context-menu requests. */\nexport function createContextMenu(props: ContextMenuProps): ContextMenuAria {\n let firedContextMenuEvent = false;\n\n const { longPressProps } = createLongPress({\n onLongPressStart() {\n firedContextMenuEvent = false;\n },\n onLongPress(event) {\n if (!firedContextMenuEvent) {\n props.onContextMenu?.({\n target: event.target,\n x: event.x,\n y: event.y,\n });\n } else {\n firedContextMenuEvent = false;\n }\n },\n });\n\n if (!props.onContextMenu) {\n return { contextMenuProps: {} };\n }\n\n const contextMenuProps: JSX.HTMLAttributes<HTMLElement> = {\n onContextMenu(event) {\n event.stopPropagation();\n event.preventDefault();\n firedContextMenuEvent = true;\n\n const rect = event.currentTarget.getBoundingClientRect();\n props.onContextMenu?.({\n target: event.currentTarget,\n x: event.clientX - rect.x,\n y: event.clientY - rect.y,\n });\n },\n onKeyDown(event) {\n if (!isMac() || !event.ctrlKey || event.key !== \"Enter\") {\n return;\n }\n\n firedContextMenuEvent = false;\n const target = event.currentTarget;\n event.stopPropagation();\n\n setTimeout(() => {\n if (!firedContextMenuEvent) {\n const rect = target.getBoundingClientRect();\n props.onContextMenu?.({\n target,\n x: rect.width / 2,\n y: rect.height / 2,\n });\n } else {\n firedContextMenuEvent = false;\n }\n }, 10);\n },\n };\n\n return {\n contextMenuProps: mergeProps(isIOS() ? longPressProps : {}, contextMenuProps),\n };\n}\n","// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/ar-AE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/bg-BG.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/cs-CZ.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/da-DK.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/de-DE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/el-GR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/en-US.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/es-ES.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/et-EE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/fi-FI.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/fr-FR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/he-IL.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/hr-HR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/hu-HU.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/it-IT.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/ja-JP.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/ko-KR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/lt-LT.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/lv-LV.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/nb-NO.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/nl-NL.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/pl-PL.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/pt-BR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/pt-PT.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/ro-RO.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/ru-RU.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/sk-SK.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/sl-SI.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/sr-SP.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/sv-SE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/tr-TR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/uk-UA.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/zh-CN.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/menu/zh-TW.json\n\n// Ported from @react-aria/menu intl catalog.\n/** Menu internationalization strings from the pinned React Aria source. */\n\nimport type { LocalizedStrings } from \"@internationalized/string\";\n\nexport const menuIntlStrings: LocalizedStrings<\"longPressMessage\", string> = {\n \"ar-AE\": { longPressMessage: \"اضغط مطولاً أو اضغط على Alt + السهم لأسفل لفتح القائمة\" },\n \"bg-BG\": {\n longPressMessage:\n \"Натиснете продължително или натиснете Alt+ стрелка надолу, за да отворите менюто\",\n },\n \"cs-CZ\": {\n longPressMessage: \"Dlouhým stiskem nebo stisknutím kláves Alt + šipka dolů otevřete nabídku\",\n },\n \"da-DK\": { longPressMessage: \"Langt tryk eller tryk på Alt + pil ned for at åbne menuen\" },\n \"de-DE\": {\n longPressMessage: \"Drücken Sie lange oder drücken Sie Alt + Nach-unten, um das Menü zu öffnen\",\n },\n \"el-GR\": {\n longPressMessage: \"Πιέστε παρατεταμένα ή πατήστε Alt + κάτω βέλος για να ανοίξετε το μενού\",\n },\n \"en-US\": { longPressMessage: \"Long press or press Alt + ArrowDown to open menu\" },\n \"es-ES\": { longPressMessage: \"Mantenga pulsado o pulse Alt + flecha abajo para abrir el menú\" },\n \"et-EE\": {\n longPressMessage: \"Menüü avamiseks vajutage pikalt või vajutage klahve Alt + allanool\",\n },\n \"fi-FI\": {\n longPressMessage: \"Avaa valikko painamalla pohjassa tai näppäinyhdistelmällä Alt + Alanuoli\",\n },\n \"fr-FR\": {\n longPressMessage:\n \"Appuyez de manière prolongée ou appuyez sur Alt + Flèche vers le bas pour ouvrir le menu.\",\n },\n \"he-IL\": { longPressMessage: \"לחץ לחיצה ארוכה או הקש Alt + ArrowDown כדי לפתוח את התפריט\" },\n \"hr-HR\": {\n longPressMessage:\n \"Dugo pritisnite ili pritisnite Alt + strelicu prema dolje za otvaranje izbornika\",\n },\n \"hu-HU\": {\n longPressMessage:\n \"Nyomja meg hosszan, vagy nyomja meg az Alt + lefele nyíl gombot a menü megnyitásához\",\n },\n \"it-IT\": { longPressMessage: \"Premi a lungo o premi Alt + Freccia giù per aprire il menu\" },\n \"ja-JP\": { longPressMessage: \"長押しまたは Alt+下矢印キーでメニューを開く\" },\n \"ko-KR\": { longPressMessage: \"길게 누르거나 Alt + 아래쪽 화살표를 눌러 메뉴 열기\" },\n \"lt-LT\": {\n longPressMessage:\n \"Norėdami atidaryti meniu, nuspaudę palaikykite arba paspauskite „Alt + ArrowDown“.\",\n },\n \"lv-LV\": {\n longPressMessage:\n \"Lai atvērtu izvēlni, turiet nospiestu vai nospiediet taustiņu kombināciju Alt + lejupvērstā bultiņa\",\n },\n \"nb-NO\": { longPressMessage: \"Langt trykk eller trykk Alt + PilNed for å åpne menyen\" },\n \"nl-NL\": {\n longPressMessage: \"Druk lang op Alt + pijl-omlaag of druk op Alt om het menu te openen\",\n },\n \"pl-PL\": {\n longPressMessage:\n \"Naciśnij i przytrzymaj lub naciśnij klawisze Alt + Strzałka w dół, aby otworzyć menu\",\n },\n \"pt-BR\": {\n longPressMessage: \"Pressione e segure ou pressione Alt + Seta para baixo para abrir o menu\",\n },\n \"pt-PT\": {\n longPressMessage: \"Prima continuamente ou prima Alt + Seta Para Baixo para abrir o menu\",\n },\n \"ro-RO\": {\n longPressMessage: \"Apăsați lung sau apăsați pe Alt + săgeată în jos pentru a deschide meniul\",\n },\n \"ru-RU\": {\n longPressMessage: \"Нажмите и удерживайте или нажмите Alt + Стрелка вниз, чтобы открыть меню\",\n },\n \"sk-SK\": {\n longPressMessage:\n \"Ponuku otvoríte dlhým stlačením alebo stlačením klávesu Alt + klávesu so šípkou nadol\",\n },\n \"sl-SI\": {\n longPressMessage:\n \"Za odprtje menija pritisnite in držite gumb ali pritisnite Alt+puščica navzdol\",\n },\n \"sr-SP\": {\n longPressMessage: \"Dugo pritisnite ili pritisnite Alt + strelicu prema dole da otvorite meni\",\n },\n \"sv-SE\": {\n longPressMessage: \"Håll nedtryckt eller tryck på Alt + pil nedåt för att öppna menyn\",\n },\n \"tr-TR\": { longPressMessage: \"Menüyü açmak için uzun basın veya Alt + Aşağı Ok tuşuna basın\" },\n \"uk-UA\": {\n longPressMessage:\n \"Довго або звичайно натисніть комбінацію клавіш Alt і стрілка вниз, щоб відкрити меню\",\n },\n \"zh-CN\": { longPressMessage: \"长按或按 Alt + 向下方向键以打开菜单\" },\n \"zh-TW\": { longPressMessage: \"長按或按 Alt+向下鍵以開啟功能表\" },\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/menu/useMenuTrigger.ts\n\n/**\n * Provides behavior and accessibility for a menu trigger.\n * Based on @react-aria/menu useMenuTrigger.\n */\n\nimport { createTrackedEffect } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport type { MenuTriggerState, MenuTriggerType } from \"@proyecto-viviana/solid-stately\";\nimport { createId } from \"../ssr\";\nimport { createKeyboard } from \"../interactions/createKeyboard\";\nimport { createLongPress } from \"../interactions/createLongPress\";\nimport { createContextMenu } from \"../interactions/createContextMenu\";\nimport type { CreatePressProps, PressEvent } from \"../interactions/createPress\";\nimport { createStringFormatter } from \"../i18n\";\nimport { onCloseMap } from \"../overlays/createOverlayTrigger\";\nimport { access, attrTrue, focusWithoutScrolling, getEventTarget, mergeProps } from \"../utils\";\nimport type { MaybeAccessor } from \"../utils/reactivity\";\nimport { menuIntlStrings } from \"./intl\";\n\nexport interface AriaMenuTriggerProps {\n /** The type of menu that the trigger opens. */\n type?: \"menu\" | \"listbox\";\n /** Whether the menu trigger is disabled. */\n isDisabled?: boolean;\n /** How the menu is triggered. */\n trigger?: MenuTriggerType;\n /** An ID for the menu. This is a local Solid addition. */\n id?: string;\n}\n\nexport type MenuTriggerAutoFocus = boolean | \"first\" | \"last\";\n\nexport interface MenuTriggerMenuProps extends JSX.HTMLAttributes<HTMLElement> {\n /** Auto-focus strategy forwarded to `createMenu`. */\n autoFocus?: MenuTriggerAutoFocus;\n /** Close handler forwarded to `createMenu`. */\n onClose?: () => void;\n}\n\ninterface MenuTriggerInteractionProps\n extends\n JSX.HTMLAttributes<HTMLElement>,\n Pick<CreatePressProps, \"preventFocusOnPress\" | \"onPressStart\" | \"onPress\"> {}\n\nexport interface MenuTriggerAria {\n /** Props for the menu trigger. */\n menuTriggerProps: MenuTriggerInteractionProps;\n /** Props for the menu. */\n menuProps: MenuTriggerMenuProps;\n}\n\n/** Provides behavior and accessibility for a menu trigger. */\nexport function createMenuTrigger(\n props: MaybeAccessor<AriaMenuTriggerProps>,\n state: MenuTriggerState,\n ref?: () => Element | null,\n): MenuTriggerAria {\n const getProps = () => access(props);\n const menuId = createId(getProps().id);\n const triggerId = createId();\n const stringFormatter = createStringFormatter(menuIntlStrings, \"@react-aria/menu\");\n\n const open = (\n shouldOpen: boolean,\n event: globalThis.KeyboardEvent,\n focusStrategy: \"first\" | \"last\" = \"first\",\n ): boolean => {\n if (!shouldOpen || event.defaultPrevented || getProps().isDisabled) {\n return false;\n }\n\n state.toggle(focusStrategy);\n return true;\n };\n\n const { keyboardProps } = createKeyboard({\n shortcuts: {\n Enter: (event) => open(getProps().trigger !== \"longPress\", event, \"first\"),\n \" \": (event) => open(getProps().trigger !== \"longPress\", event, \"first\"),\n ArrowDown: (event) => open(getProps().trigger !== \"longPress\", event, \"first\"),\n ArrowUp: (event) => open(getProps().trigger !== \"longPress\", event, \"last\"),\n \"Alt+Enter\": (event) => open(getProps().trigger === \"longPress\", event, \"first\"),\n \"Alt+ \": (event) => open(getProps().trigger === \"longPress\", event, \"first\"),\n \"Alt+ArrowDown\": (event) => open(true, event, \"first\"),\n \"Alt+ArrowUp\": (event) => open(true, event, \"last\"),\n },\n });\n\n const { longPressProps } = createLongPress({\n isDisabled: () => Boolean(getProps().isDisabled || getProps().trigger !== \"longPress\"),\n accessibilityDescription: () => stringFormatter().format(\"longPressMessage\"),\n onLongPressStart() {\n state.close();\n },\n onLongPress() {\n state.open(\"first\");\n },\n });\n\n const pressProps: Pick<CreatePressProps, \"preventFocusOnPress\" | \"onPressStart\" | \"onPress\"> = {\n preventFocusOnPress: true,\n onPressStart(event: PressEvent) {\n if (\n event.pointerType !== \"touch\" &&\n event.pointerType !== \"keyboard\" &&\n !getProps().isDisabled\n ) {\n focusWithoutScrolling(event.target as HTMLElement);\n state.open(event.pointerType === \"virtual\" ? \"first\" : null);\n }\n },\n onPress(event: PressEvent) {\n if (event.pointerType === \"touch\" && !getProps().isDisabled) {\n focusWithoutScrolling(event.target as HTMLElement);\n state.toggle();\n }\n },\n };\n\n const { contextMenuProps } = createContextMenu({\n onContextMenu(event) {\n const rect = event.target.getBoundingClientRect();\n state.setPoint({ x: rect.x + event.x, y: rect.y + event.y });\n state.open();\n },\n });\n\n createTrackedEffect(() => {\n const _s2Cleanups: Array<() => void> = [];\n\n if (\n !state.isOpen() ||\n getProps().trigger !== \"contextMenu\" ||\n typeof document === \"undefined\"\n ) {\n return;\n }\n\n const onMouseDown = (event: MouseEvent) => {\n if (\n (event.button === 2 || (event.button === 0 && event.ctrlKey)) &&\n getEventTarget(event) === document.body\n ) {\n state.close();\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDown);\n _s2Cleanups.push(() => document.removeEventListener(\"mousedown\", onMouseDown));\n\n return () => {\n for (const c of _s2Cleanups) c();\n };\n });\n\n createTrackedEffect(() => {\n const element = ref?.();\n if (element) {\n onCloseMap.set(element, state.close);\n }\n });\n\n return {\n get menuTriggerProps() {\n const type = getProps().type ?? \"menu\";\n const trigger = getProps().trigger ?? \"press\";\n const baseProps: MenuTriggerInteractionProps = {\n \"aria-haspopup\": type === \"menu\" ? \"menu\" : \"listbox\",\n \"aria-expanded\": state.isOpen() ? \"true\" : \"false\",\n \"aria-controls\": state.isOpen() ? menuId : undefined,\n \"aria-disabled\": attrTrue(getProps().isDisabled),\n id: triggerId,\n };\n\n if (trigger === \"contextMenu\") {\n return mergeProps(\n {\n ...baseProps,\n \"aria-haspopup\": undefined,\n \"aria-expanded\": undefined,\n \"aria-controls\": undefined,\n },\n contextMenuProps,\n ) as MenuTriggerInteractionProps;\n }\n\n return mergeProps(\n baseProps,\n trigger === \"longPress\" ? longPressProps : pressProps,\n keyboardProps,\n ) as MenuTriggerInteractionProps;\n },\n get menuProps() {\n return {\n id: menuId,\n \"aria-labelledby\": triggerId,\n autoFocus: state.focusStrategy() || true,\n onClose: state.close,\n };\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ /*
2
+ * Copyright 2020 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/react-aria/src/utils/mergeProps.ts
13
+ import { t as assignRef } from "./refs.js";
14
+ //#region src/utils/domAttrs.ts
15
+ /**
16
+ * Solid 2 maps boolean `true` to an empty attribute (`disabled=""`) and omits
17
+ * `false`. ARIA state attributes need the literals `"true"` / `"false"`.
18
+ */
19
+ const ARIA_TRUE_FALSE = /* @__PURE__ */ new Set([
20
+ "aria-expanded",
21
+ "aria-selected",
22
+ "aria-checked",
23
+ "aria-pressed",
24
+ "aria-current",
25
+ "aria-haspopup",
26
+ "aria-hidden",
27
+ "aria-disabled",
28
+ "aria-invalid",
29
+ "aria-required",
30
+ "aria-readonly",
31
+ "aria-multiline",
32
+ "aria-multiselectable",
33
+ "aria-busy",
34
+ "aria-modal"
35
+ ]);
36
+ /** Native enumerated true/false attributes (not HTML boolean attributes). */
37
+ const ENUMERATED_TRUE_FALSE = /* @__PURE__ */ new Set([
38
+ "draggable",
39
+ "spellcheck",
40
+ "spellCheck",
41
+ "contenteditable",
42
+ "contentEditable"
43
+ ]);
44
+ const ATTR_KEY_ALIASES = {
45
+ contentEditable: "contenteditable",
46
+ spellCheck: "spellcheck",
47
+ htmlFor: "for"
48
+ };
49
+ /** Map React/Solid JSX names onto the DOM attribute Solid 2 will emit. */
50
+ function canonicalAttrKey(key) {
51
+ return ATTR_KEY_ALIASES[key] ?? key;
52
+ }
53
+ function ariaTrueFalse(value) {
54
+ return value ? "true" : "false";
55
+ }
56
+ function attrTrue(value) {
57
+ return value ? "true" : void 0;
58
+ }
59
+ /** Keep string DOM ids; drop Solid 2 `RemoveAttribute` (`false`). */
60
+ function attrString(value) {
61
+ return typeof value === "string" ? value : void 0;
62
+ }
63
+ function isAriaTrue(value) {
64
+ return value === true || value === "true";
65
+ }
66
+ /** Map boolean aria/data values so Solid 2 does not emit empty attributes. */
67
+ function coerceDomBoolean(key, value) {
68
+ if (typeof value !== "boolean") return value;
69
+ const attr = ATTR_KEY_ALIASES[key] ?? key;
70
+ if (ENUMERATED_TRUE_FALSE.has(key) || ENUMERATED_TRUE_FALSE.has(attr)) return value ? "true" : "false";
71
+ if (attr.startsWith("data-")) return value ? "true" : void 0;
72
+ if (attr.startsWith("aria-")) {
73
+ if (ARIA_TRUE_FALSE.has(attr)) return value ? "true" : "false";
74
+ return value ? "true" : void 0;
75
+ }
76
+ return value;
77
+ }
78
+ /** Coerce boolean aria/data/enumerated values on a plain props object. */
79
+ function coerceDomRecord(record) {
80
+ const next = {};
81
+ for (const [key, value] of Object.entries(record)) {
82
+ const attr = canonicalAttrKey(key);
83
+ next[attr] = coerceDomBoolean(key, value);
84
+ }
85
+ return next;
86
+ }
87
+ //#endregion
88
+ //#region src/utils/mergeProps.ts
89
+ function isEventHandlerKey(key) {
90
+ return key.startsWith("on") && key[2] === key[2]?.toUpperCase();
91
+ }
92
+ function isRefKey(key) {
93
+ return key === "ref";
94
+ }
95
+ function concatRefs(existing, next) {
96
+ if (existing == null) return next;
97
+ if (next == null) return existing;
98
+ return [existing, next].flat();
99
+ }
100
+ function isClassKey(key) {
101
+ return key === "class" || key === "className";
102
+ }
103
+ /**
104
+ * Keys whose merge semantics require reading the current value (chaining
105
+ * handlers, joining class strings, merging style objects). Every other getter
106
+ * is copied as a getter and left uninvoked.
107
+ *
108
+ * Solid compiles JSX `children` (and other element props) as getters that
109
+ * *create* the child tree on each read. React Aria's mergeProps can probe
110
+ * values because React elements are already-built descriptors; doing that
111
+ * here double-instantiates the tree on the server (each getter read is a new
112
+ * `createComponent`) while the client memoizes after the first read — a
113
+ * hydration-key mismatch. Form+TextField with `isRequired` + `description`
114
+ * was the route-blanking case: `useContextProps` → `mergeProps` probed the
115
+ * Label's children getter, minted a necessity-marker `<span>` that never
116
+ * entered the SSR DOM, then the real render minted a second span at a
117
+ * different key.
118
+ */
119
+ function needsEagerRead(key) {
120
+ return isEventHandlerKey(key) || isClassKey(key) || key === "style";
121
+ }
122
+ /** A later getter that reads the merged object for the same key must not recurse. */
123
+ const MERGE_GETTER_STACK = /* @__PURE__ */ new WeakMap();
124
+ function readWithReentryGuard(target, key, read) {
125
+ let keys = MERGE_GETTER_STACK.get(target);
126
+ if (!keys) {
127
+ keys = /* @__PURE__ */ new Set();
128
+ MERGE_GETTER_STACK.set(target, keys);
129
+ }
130
+ if (keys.has(key)) return;
131
+ keys.add(key);
132
+ try {
133
+ return read();
134
+ } finally {
135
+ keys.delete(key);
136
+ }
137
+ }
138
+ function mergeProps(...args) {
139
+ const result = {};
140
+ const setResultValue = (key, value) => {
141
+ const attr = canonicalAttrKey(key);
142
+ const coerced = coerceDomBoolean(key, value);
143
+ const resultDescriptor = Object.getOwnPropertyDescriptor(result, attr);
144
+ if (resultDescriptor?.get || resultDescriptor?.set) {
145
+ Object.defineProperty(result, attr, {
146
+ enumerable: true,
147
+ configurable: true,
148
+ writable: true,
149
+ value: coerced
150
+ });
151
+ return;
152
+ }
153
+ result[attr] = coerced;
154
+ };
155
+ for (const props of args) for (const rawKey in props) {
156
+ const key = canonicalAttrKey(rawKey);
157
+ const descriptor = Object.getOwnPropertyDescriptor(props, rawKey);
158
+ const hasGetter = typeof descriptor?.get === "function";
159
+ const getValue = () => hasGetter ? descriptor.get.call(props) : props[rawKey];
160
+ if (isRefKey(key)) {
161
+ const previousDescriptor = Object.getOwnPropertyDescriptor(result, key);
162
+ const previous = previousDescriptor ? typeof previousDescriptor.get === "function" ? () => previousDescriptor.get() : () => previousDescriptor.value : void 0;
163
+ const getCombined = () => concatRefs(previous?.(), getValue());
164
+ Object.defineProperty(result, key, {
165
+ enumerable: true,
166
+ configurable: true,
167
+ get: getCombined,
168
+ set: (el) => {
169
+ assignRef(getCombined(), el);
170
+ }
171
+ });
172
+ continue;
173
+ }
174
+ if (hasGetter && !needsEagerRead(key)) {
175
+ const previousDescriptor = Object.getOwnPropertyDescriptor(result, key);
176
+ const previous = previousDescriptor ? typeof previousDescriptor.get === "function" ? () => previousDescriptor.get() : () => previousDescriptor.value : void 0;
177
+ Object.defineProperty(result, key, {
178
+ enumerable: true,
179
+ configurable: true,
180
+ get: previous ? () => {
181
+ const next = readWithReentryGuard(result, key, getValue);
182
+ return coerceDomBoolean(key, next !== void 0 ? next : previous());
183
+ } : () => readWithReentryGuard(result, key, () => coerceDomBoolean(key, getValue()))
184
+ });
185
+ continue;
186
+ }
187
+ const value = getValue();
188
+ const existingValue = result[key];
189
+ if (typeof existingValue === "function" && typeof value === "function" && isEventHandlerKey(key)) setResultValue(key, chainHandlers(existingValue, value));
190
+ else if (isClassKey(key) && typeof existingValue === "string" && typeof value === "string") setResultValue(key, mergeClassNames(existingValue, value));
191
+ else if (key === "style" && typeof existingValue === "object" && typeof value === "object") setResultValue(key, {
192
+ ...existingValue,
193
+ ...value
194
+ });
195
+ else if (hasGetter && (value !== void 0 || !(key in result))) Object.defineProperty(result, key, {
196
+ enumerable: true,
197
+ configurable: true,
198
+ get: () => coerceDomBoolean(key, getValue())
199
+ });
200
+ else if (value !== void 0) setResultValue(key, value);
201
+ }
202
+ return result;
203
+ }
204
+ function chainHandlers(existingHandler, newHandler) {
205
+ return (...args) => {
206
+ existingHandler(...args);
207
+ newHandler(...args);
208
+ };
209
+ }
210
+ function mergeClassNames(...classes) {
211
+ return classes.filter(Boolean).join(" ");
212
+ }
213
+ //#endregion
214
+ export { canonicalAttrKey as a, isAriaTrue as c, attrTrue as i, ariaTrueFalse as n, coerceDomBoolean as o, attrString as r, coerceDomRecord as s, mergeProps as t };
215
+
216
+ //# sourceMappingURL=mergeProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeProps.js","names":[],"sources":["../../src/utils/domAttrs.ts","../../src/utils/mergeProps.ts"],"sourcesContent":["/**\n * Solid 2 maps boolean `true` to an empty attribute (`disabled=\"\"`) and omits\n * `false`. ARIA state attributes need the literals `\"true\"` / `\"false\"`.\n */\n\nconst ARIA_TRUE_FALSE = new Set([\n \"aria-expanded\",\n \"aria-selected\",\n \"aria-checked\",\n \"aria-pressed\",\n \"aria-current\",\n \"aria-haspopup\",\n \"aria-hidden\",\n \"aria-disabled\",\n \"aria-invalid\",\n \"aria-required\",\n \"aria-readonly\",\n \"aria-multiline\",\n \"aria-multiselectable\",\n \"aria-busy\",\n \"aria-modal\",\n]);\n\n/** Native enumerated true/false attributes (not HTML boolean attributes). */\nconst ENUMERATED_TRUE_FALSE = new Set([\n \"draggable\",\n \"spellcheck\",\n \"spellCheck\",\n \"contenteditable\",\n \"contentEditable\",\n]);\n\nconst ATTR_KEY_ALIASES: Record<string, string> = {\n contentEditable: \"contenteditable\",\n spellCheck: \"spellcheck\",\n htmlFor: \"for\",\n};\n\n/** Map React/Solid JSX names onto the DOM attribute Solid 2 will emit. */\nexport function canonicalAttrKey(key: string): string {\n return ATTR_KEY_ALIASES[key] ?? key;\n}\n\nexport function ariaTrueFalse(value: boolean): \"true\" | \"false\" {\n return value ? \"true\" : \"false\";\n}\n\nexport function attrTrue(value: boolean | undefined | null): \"true\" | undefined {\n return value ? \"true\" : undefined;\n}\n\n/** Keep string DOM ids; drop Solid 2 `RemoveAttribute` (`false`). */\nexport function attrString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function isAriaTrue(value: unknown): boolean {\n return value === true || value === \"true\";\n}\n\n/** Map boolean aria/data values so Solid 2 does not emit empty attributes. */\nexport function coerceDomBoolean(key: string, value: unknown): unknown {\n if (typeof value !== \"boolean\") return value;\n const attr = ATTR_KEY_ALIASES[key] ?? key;\n if (ENUMERATED_TRUE_FALSE.has(key) || ENUMERATED_TRUE_FALSE.has(attr)) {\n return value ? \"true\" : \"false\";\n }\n if (attr.startsWith(\"data-\")) return value ? \"true\" : undefined;\n if (attr.startsWith(\"aria-\")) {\n if (ARIA_TRUE_FALSE.has(attr)) return value ? \"true\" : \"false\";\n return value ? \"true\" : undefined;\n }\n return value;\n}\n\n/** Coerce boolean aria/data/enumerated values on a plain props object. */\nexport function coerceDomRecord<T extends Record<string, unknown>>(record: T): T {\n const next: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(record)) {\n const attr = canonicalAttrKey(key);\n next[attr] = coerceDomBoolean(key, value);\n }\n return next as T;\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/utils/mergeProps.ts\n\nimport { assignRef } from \"./refs\";\nimport { canonicalAttrKey, coerceDomBoolean } from \"./domAttrs\";\n\ntype Props = { [key: string]: unknown };\n\ntype UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never;\n\nfunction isEventHandlerKey(key: string): boolean {\n return key.startsWith(\"on\") && key[2] === key[2]?.toUpperCase();\n}\n\nfunction isRefKey(key: string): boolean {\n return key === \"ref\";\n}\n\nfunction concatRefs(existing: unknown, next: unknown): unknown {\n if (existing == null) return next;\n if (next == null) return existing;\n return [existing, next].flat();\n}\n\nfunction isClassKey(key: string): boolean {\n return key === \"class\" || key === \"className\";\n}\n\n/**\n * Keys whose merge semantics require reading the current value (chaining\n * handlers, joining class strings, merging style objects). Every other getter\n * is copied as a getter and left uninvoked.\n *\n * Solid compiles JSX `children` (and other element props) as getters that\n * *create* the child tree on each read. React Aria's mergeProps can probe\n * values because React elements are already-built descriptors; doing that\n * here double-instantiates the tree on the server (each getter read is a new\n * `createComponent`) while the client memoizes after the first read — a\n * hydration-key mismatch. Form+TextField with `isRequired` + `description`\n * was the route-blanking case: `useContextProps` → `mergeProps` probed the\n * Label's children getter, minted a necessity-marker `<span>` that never\n * entered the SSR DOM, then the real render minted a second span at a\n * different key.\n */\nfunction needsEagerRead(key: string): boolean {\n return isEventHandlerKey(key) || isClassKey(key) || key === \"style\";\n}\n\n/** A later getter that reads the merged object for the same key must not recurse. */\nconst MERGE_GETTER_STACK = new WeakMap<object, Set<string>>();\n\nfunction readWithReentryGuard(target: object, key: string, read: () => unknown): unknown {\n let keys = MERGE_GETTER_STACK.get(target);\n if (!keys) {\n keys = new Set();\n MERGE_GETTER_STACK.set(target, keys);\n }\n if (keys.has(key)) {\n return undefined;\n }\n keys.add(key);\n try {\n return read();\n } finally {\n keys.delete(key);\n }\n}\n\n/**\n * Merges multiple props objects together, handling event handlers specially\n * by chaining them rather than replacing.\n *\n * Ported from packages/react-aria/src/utils/mergeProps.ts and adapted for SolidJS.\n *\n * @param args - Props objects to merge\n * @returns Merged props object. Use type parameter R to specify the result type.\n */\nexport function mergeProps<const T extends object[]>(\n ...args: [...T]\n): UnionToIntersection<T[number]>;\nexport function mergeProps<R extends object>(...args: object[]): R;\nexport function mergeProps(...args: object[]): object {\n const result: Props = {};\n const setResultValue = (key: string, value: unknown) => {\n const attr = canonicalAttrKey(key);\n const coerced = coerceDomBoolean(key, value);\n const resultDescriptor = Object.getOwnPropertyDescriptor(result, attr);\n\n if (resultDescriptor?.get || resultDescriptor?.set) {\n Object.defineProperty(result, attr, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: coerced,\n });\n return;\n }\n\n result[attr] = coerced;\n };\n\n for (const props of args) {\n for (const rawKey in props) {\n const key = canonicalAttrKey(rawKey);\n const descriptor = Object.getOwnPropertyDescriptor(props, rawKey);\n const hasGetter = typeof descriptor?.get === \"function\";\n const getValue = () => (hasGetter ? descriptor.get!.call(props) : (props as Props)[rawKey]);\n\n if (isRefKey(key)) {\n const previousDescriptor = Object.getOwnPropertyDescriptor(result, key);\n const previous = previousDescriptor\n ? typeof previousDescriptor.get === \"function\"\n ? () => previousDescriptor.get!()\n : () => previousDescriptor.value\n : undefined;\n const getCombined = () => concatRefs(previous?.(), getValue());\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: getCombined,\n set: (el: unknown) => {\n assignRef(getCombined(), el as never);\n },\n });\n continue;\n }\n\n if (hasGetter && !needsEagerRead(key)) {\n // React Aria ends every non-special key with `b !== undefined ? b : a`.\n // Do that at read time so a later getter that yields `undefined` cannot\n // shadow an earlier context value, and so we never probe the getter\n // during merge (Solid `children` getters instantiate JSX).\n const previousDescriptor = Object.getOwnPropertyDescriptor(result, key);\n const previous = previousDescriptor\n ? typeof previousDescriptor.get === \"function\"\n ? () => previousDescriptor.get!()\n : () => previousDescriptor.value\n : undefined;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: previous\n ? () => {\n // Guard only the later getter. Walking `previous()` is the\n // defined-value fallback, not reentry — holding the guard\n // across that call made a later `undefined` getter wipe an\n // earlier getter (createButton `aria-disabled`).\n const next = readWithReentryGuard(result, key, getValue);\n return coerceDomBoolean(key, next !== undefined ? next : previous());\n }\n : () => readWithReentryGuard(result, key, () => coerceDomBoolean(key, getValue())),\n });\n continue;\n }\n\n const value = getValue();\n const existingValue = result[key];\n\n if (\n typeof existingValue === \"function\" &&\n typeof value === \"function\" &&\n isEventHandlerKey(key)\n ) {\n setResultValue(key, chainHandlers(existingValue as Function, value as Function));\n } else if (\n isClassKey(key) &&\n typeof existingValue === \"string\" &&\n typeof value === \"string\"\n ) {\n // Join only when both sides are plain strings (react-aria mergeProps\n // semantics); a render-prop class function must pass through intact,\n // not be coerced to its source text.\n setResultValue(key, mergeClassNames(existingValue, value));\n } else if (\n key === \"style\" &&\n typeof existingValue === \"object\" &&\n typeof value === \"object\"\n ) {\n setResultValue(key, { ...(existingValue as object), ...(value as object) });\n } else if (hasGetter && (value !== undefined || !(key in result))) {\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => coerceDomBoolean(key, getValue()),\n });\n } else if (value !== undefined) {\n setResultValue(key, value);\n }\n }\n }\n\n return result;\n}\n\nfunction chainHandlers(existingHandler: Function, newHandler: Function) {\n return (...args: unknown[]) => {\n existingHandler(...args);\n newHandler(...args);\n };\n}\n\nfunction mergeClassNames(...classes: unknown[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n"],"mappings":"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"}