@proyecto-viviana/solidaria 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. package/dist/_chunk/DragManager.js +627 -0
  2. package/dist/_chunk/DragManager.js.map +1 -0
  3. package/dist/_chunk/DragManager.jsx +627 -0
  4. package/dist/_chunk/DragManager.jsx.map +1 -0
  5. package/dist/_chunk/FocusScope.js +400 -0
  6. package/dist/_chunk/FocusScope.js.map +1 -0
  7. package/dist/_chunk/FocusScope.jsx +375 -0
  8. package/dist/_chunk/FocusScope.jsx.map +1 -0
  9. package/dist/_chunk/actiongroup.js +141 -0
  10. package/dist/_chunk/actiongroup.js.map +1 -0
  11. package/dist/_chunk/actiongroup.jsx +141 -0
  12. package/dist/_chunk/actiongroup.jsx.map +1 -0
  13. package/dist/_chunk/announce.js +207 -0
  14. package/dist/_chunk/announce.js.map +1 -0
  15. package/dist/_chunk/announce.jsx +207 -0
  16. package/dist/_chunk/announce.jsx.map +1 -0
  17. package/dist/_chunk/ariaHideOutside.js +122 -0
  18. package/dist/_chunk/ariaHideOutside.js.map +1 -0
  19. package/dist/_chunk/ariaHideOutside.jsx +122 -0
  20. package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
  21. package/dist/_chunk/autocomplete.js +244 -0
  22. package/dist/_chunk/autocomplete.js.map +1 -0
  23. package/dist/_chunk/autocomplete.jsx +244 -0
  24. package/dist/_chunk/autocomplete.jsx.map +1 -0
  25. package/dist/_chunk/breadcrumbs.js +121 -0
  26. package/dist/_chunk/breadcrumbs.js.map +1 -0
  27. package/dist/_chunk/breadcrumbs.jsx +121 -0
  28. package/dist/_chunk/breadcrumbs.jsx.map +1 -0
  29. package/dist/_chunk/button.js +275 -0
  30. package/dist/_chunk/button.js.map +1 -0
  31. package/dist/_chunk/button.jsx +275 -0
  32. package/dist/_chunk/button.jsx.map +1 -0
  33. package/dist/_chunk/calendar.js +1037 -0
  34. package/dist/_chunk/calendar.js.map +1 -0
  35. package/dist/_chunk/calendar.jsx +1037 -0
  36. package/dist/_chunk/calendar.jsx.map +1 -0
  37. package/dist/_chunk/checkbox.js +235 -0
  38. package/dist/_chunk/checkbox.js.map +1 -0
  39. package/dist/_chunk/checkbox.jsx +235 -0
  40. package/dist/_chunk/checkbox.jsx.map +1 -0
  41. package/dist/_chunk/color.js +1458 -0
  42. package/dist/_chunk/color.js.map +1 -0
  43. package/dist/_chunk/color.jsx +1458 -0
  44. package/dist/_chunk/color.jsx.map +1 -0
  45. package/dist/_chunk/combobox.js +1062 -0
  46. package/dist/_chunk/combobox.js.map +1 -0
  47. package/dist/_chunk/combobox.jsx +1062 -0
  48. package/dist/_chunk/combobox.jsx.map +1 -0
  49. package/dist/_chunk/constants.js +19 -0
  50. package/dist/_chunk/constants.js.map +1 -0
  51. package/dist/_chunk/constants.jsx +19 -0
  52. package/dist/_chunk/constants.jsx.map +1 -0
  53. package/dist/_chunk/createCollator.js +61 -0
  54. package/dist/_chunk/createCollator.js.map +1 -0
  55. package/dist/_chunk/createCollator.jsx +61 -0
  56. package/dist/_chunk/createCollator.jsx.map +1 -0
  57. package/dist/_chunk/createCollectionRowInteraction.js +133 -0
  58. package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
  59. package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
  60. package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
  61. package/dist/_chunk/createField.js +55 -0
  62. package/dist/_chunk/createField.js.map +1 -0
  63. package/dist/_chunk/createField.jsx +55 -0
  64. package/dist/_chunk/createField.jsx.map +1 -0
  65. package/dist/_chunk/createFocus.js +105 -0
  66. package/dist/_chunk/createFocus.js.map +1 -0
  67. package/dist/_chunk/createFocus.jsx +105 -0
  68. package/dist/_chunk/createFocus.jsx.map +1 -0
  69. package/dist/_chunk/createFocusRing.js +54 -0
  70. package/dist/_chunk/createFocusRing.js.map +1 -0
  71. package/dist/_chunk/createFocusRing.jsx +54 -0
  72. package/dist/_chunk/createFocusRing.jsx.map +1 -0
  73. package/dist/_chunk/createFocusWithin.js +120 -0
  74. package/dist/_chunk/createFocusWithin.js.map +1 -0
  75. package/dist/_chunk/createFocusWithin.jsx +120 -0
  76. package/dist/_chunk/createFocusWithin.jsx.map +1 -0
  77. package/dist/_chunk/createFocusable.js +131 -0
  78. package/dist/_chunk/createFocusable.js.map +1 -0
  79. package/dist/_chunk/createFocusable.jsx +131 -0
  80. package/dist/_chunk/createFocusable.jsx.map +1 -0
  81. package/dist/_chunk/createFormReset.js +39 -0
  82. package/dist/_chunk/createFormReset.js.map +1 -0
  83. package/dist/_chunk/createFormReset.jsx +39 -0
  84. package/dist/_chunk/createFormReset.jsx.map +1 -0
  85. package/dist/_chunk/createFormValidation.js +135 -0
  86. package/dist/_chunk/createFormValidation.js.map +1 -0
  87. package/dist/_chunk/createFormValidation.jsx +135 -0
  88. package/dist/_chunk/createFormValidation.jsx.map +1 -0
  89. package/dist/_chunk/createHover.js +131 -0
  90. package/dist/_chunk/createHover.js.map +1 -0
  91. package/dist/_chunk/createHover.jsx +131 -0
  92. package/dist/_chunk/createHover.jsx.map +1 -0
  93. package/dist/_chunk/createInteractionModality.js +268 -0
  94. package/dist/_chunk/createInteractionModality.js.map +1 -0
  95. package/dist/_chunk/createInteractionModality.jsx +268 -0
  96. package/dist/_chunk/createInteractionModality.jsx.map +1 -0
  97. package/dist/_chunk/createLabel.js +47 -0
  98. package/dist/_chunk/createLabel.js.map +1 -0
  99. package/dist/_chunk/createLabel.jsx +47 -0
  100. package/dist/_chunk/createLabel.jsx.map +1 -0
  101. package/dist/_chunk/createLabels.js +32 -0
  102. package/dist/_chunk/createLabels.js.map +1 -0
  103. package/dist/_chunk/createLabels.jsx +32 -0
  104. package/dist/_chunk/createLabels.jsx.map +1 -0
  105. package/dist/_chunk/createLandmark.js +198 -0
  106. package/dist/_chunk/createLandmark.js.map +1 -0
  107. package/dist/_chunk/createLandmark.jsx +198 -0
  108. package/dist/_chunk/createLandmark.jsx.map +1 -0
  109. package/dist/_chunk/createOverlay.js +327 -0
  110. package/dist/_chunk/createOverlay.js.map +1 -0
  111. package/dist/_chunk/createOverlay.jsx +327 -0
  112. package/dist/_chunk/createOverlay.jsx.map +1 -0
  113. package/dist/_chunk/createPress.js +526 -0
  114. package/dist/_chunk/createPress.js.map +1 -0
  115. package/dist/_chunk/createPress.jsx +526 -0
  116. package/dist/_chunk/createPress.jsx.map +1 -0
  117. package/dist/_chunk/createProgressBar.js +82 -0
  118. package/dist/_chunk/createProgressBar.js.map +1 -0
  119. package/dist/_chunk/createProgressBar.jsx +82 -0
  120. package/dist/_chunk/createProgressBar.jsx.map +1 -0
  121. package/dist/_chunk/createSelectableItem.js +302 -0
  122. package/dist/_chunk/createSelectableItem.js.map +1 -0
  123. package/dist/_chunk/createSelectableItem.jsx +302 -0
  124. package/dist/_chunk/createSelectableItem.jsx.map +1 -0
  125. package/dist/_chunk/createStringFormatter.js +61 -0
  126. package/dist/_chunk/createStringFormatter.js.map +1 -0
  127. package/dist/_chunk/createStringFormatter.jsx +61 -0
  128. package/dist/_chunk/createStringFormatter.jsx.map +1 -0
  129. package/dist/_chunk/createToggle.js +159 -0
  130. package/dist/_chunk/createToggle.js.map +1 -0
  131. package/dist/_chunk/createToggle.jsx +159 -0
  132. package/dist/_chunk/createToggle.jsx.map +1 -0
  133. package/dist/_chunk/createTypeSelect.js +125 -0
  134. package/dist/_chunk/createTypeSelect.js.map +1 -0
  135. package/dist/_chunk/createTypeSelect.jsx +125 -0
  136. package/dist/_chunk/createTypeSelect.jsx.map +1 -0
  137. package/dist/_chunk/datepicker.js +1706 -0
  138. package/dist/_chunk/datepicker.js.map +1 -0
  139. package/dist/_chunk/datepicker.jsx +1706 -0
  140. package/dist/_chunk/datepicker.jsx.map +1 -0
  141. package/dist/_chunk/dialog.js +62 -0
  142. package/dist/_chunk/dialog.js.map +1 -0
  143. package/dist/_chunk/dialog.jsx +62 -0
  144. package/dist/_chunk/dialog.jsx.map +1 -0
  145. package/dist/_chunk/disclosure.js +185 -0
  146. package/dist/_chunk/disclosure.js.map +1 -0
  147. package/dist/_chunk/disclosure.jsx +185 -0
  148. package/dist/_chunk/disclosure.jsx.map +1 -0
  149. package/dist/_chunk/dnd.js +2395 -0
  150. package/dist/_chunk/dnd.js.map +1 -0
  151. package/dist/_chunk/dnd.jsx +2395 -0
  152. package/dist/_chunk/dnd.jsx.map +1 -0
  153. package/dist/_chunk/env.js +87 -0
  154. package/dist/_chunk/env.js.map +1 -0
  155. package/dist/_chunk/env.jsx +87 -0
  156. package/dist/_chunk/env.jsx.map +1 -0
  157. package/dist/_chunk/filterDOMProps.js +82 -0
  158. package/dist/_chunk/filterDOMProps.js.map +1 -0
  159. package/dist/_chunk/filterDOMProps.jsx +82 -0
  160. package/dist/_chunk/filterDOMProps.jsx.map +1 -0
  161. package/dist/_chunk/focus.js +399 -0
  162. package/dist/_chunk/focus.js.map +1 -0
  163. package/dist/_chunk/focus.jsx +399 -0
  164. package/dist/_chunk/focus.jsx.map +1 -0
  165. package/dist/_chunk/focus2.js +631 -0
  166. package/dist/_chunk/focus2.js.map +1 -0
  167. package/dist/_chunk/focus2.jsx +631 -0
  168. package/dist/_chunk/focus2.jsx.map +1 -0
  169. package/dist/_chunk/grid.js +623 -0
  170. package/dist/_chunk/grid.js.map +1 -0
  171. package/dist/_chunk/grid.jsx +623 -0
  172. package/dist/_chunk/grid.jsx.map +1 -0
  173. package/dist/_chunk/gridlist.js +369 -0
  174. package/dist/_chunk/gridlist.js.map +1 -0
  175. package/dist/_chunk/gridlist.jsx +369 -0
  176. package/dist/_chunk/gridlist.jsx.map +1 -0
  177. package/dist/_chunk/i18n.js +199 -0
  178. package/dist/_chunk/i18n.js.map +1 -0
  179. package/dist/_chunk/i18n.jsx +199 -0
  180. package/dist/_chunk/i18n.jsx.map +1 -0
  181. package/dist/_chunk/interactions.js +331 -0
  182. package/dist/_chunk/interactions.js.map +1 -0
  183. package/dist/_chunk/interactions.jsx +325 -0
  184. package/dist/_chunk/interactions.jsx.map +1 -0
  185. package/dist/_chunk/link.js +97 -0
  186. package/dist/_chunk/link.js.map +1 -0
  187. package/dist/_chunk/link.jsx +97 -0
  188. package/dist/_chunk/link.jsx.map +1 -0
  189. package/dist/_chunk/listbox.js +356 -0
  190. package/dist/_chunk/listbox.js.map +1 -0
  191. package/dist/_chunk/listbox.jsx +356 -0
  192. package/dist/_chunk/listbox.jsx.map +1 -0
  193. package/dist/_chunk/locale.js +173 -0
  194. package/dist/_chunk/locale.js.map +1 -0
  195. package/dist/_chunk/locale.jsx +167 -0
  196. package/dist/_chunk/locale.jsx.map +1 -0
  197. package/dist/_chunk/menu.js +519 -0
  198. package/dist/_chunk/menu.js.map +1 -0
  199. package/dist/_chunk/menu.jsx +519 -0
  200. package/dist/_chunk/menu.jsx.map +1 -0
  201. package/dist/_chunk/meter.js +33 -0
  202. package/dist/_chunk/meter.js.map +1 -0
  203. package/dist/_chunk/meter.jsx +33 -0
  204. package/dist/_chunk/meter.jsx.map +1 -0
  205. package/dist/_chunk/numberfield.js +259 -0
  206. package/dist/_chunk/numberfield.js.map +1 -0
  207. package/dist/_chunk/numberfield.jsx +259 -0
  208. package/dist/_chunk/numberfield.jsx.map +1 -0
  209. package/dist/_chunk/overlays.js +186 -0
  210. package/dist/_chunk/overlays.js.map +1 -0
  211. package/dist/_chunk/overlays.jsx +162 -0
  212. package/dist/_chunk/overlays.jsx.map +1 -0
  213. package/dist/_chunk/popover.js +574 -0
  214. package/dist/_chunk/popover.js.map +1 -0
  215. package/dist/_chunk/popover.jsx +574 -0
  216. package/dist/_chunk/popover.jsx.map +1 -0
  217. package/dist/_chunk/radio.js +320 -0
  218. package/dist/_chunk/radio.js.map +1 -0
  219. package/dist/_chunk/radio.jsx +320 -0
  220. package/dist/_chunk/radio.jsx.map +1 -0
  221. package/dist/_chunk/reactivity.js +21 -0
  222. package/dist/_chunk/reactivity.js.map +1 -0
  223. package/dist/_chunk/reactivity.jsx +21 -0
  224. package/dist/_chunk/reactivity.jsx.map +1 -0
  225. package/dist/_chunk/searchfield.js +210 -0
  226. package/dist/_chunk/searchfield.js.map +1 -0
  227. package/dist/_chunk/searchfield.jsx +210 -0
  228. package/dist/_chunk/searchfield.jsx.map +1 -0
  229. package/dist/_chunk/select.js +406 -0
  230. package/dist/_chunk/select.js.map +1 -0
  231. package/dist/_chunk/select.jsx +397 -0
  232. package/dist/_chunk/select.jsx.map +1 -0
  233. package/dist/_chunk/selection.js +666 -0
  234. package/dist/_chunk/selection.js.map +1 -0
  235. package/dist/_chunk/selection.jsx +666 -0
  236. package/dist/_chunk/selection.jsx.map +1 -0
  237. package/dist/_chunk/separator.js +29 -0
  238. package/dist/_chunk/separator.js.map +1 -0
  239. package/dist/_chunk/separator.jsx +29 -0
  240. package/dist/_chunk/separator.jsx.map +1 -0
  241. package/dist/_chunk/slider.js +256 -0
  242. package/dist/_chunk/slider.js.map +1 -0
  243. package/dist/_chunk/slider.jsx +256 -0
  244. package/dist/_chunk/slider.jsx.map +1 -0
  245. package/dist/_chunk/spinbutton.js +153 -0
  246. package/dist/_chunk/spinbutton.js.map +1 -0
  247. package/dist/_chunk/spinbutton.jsx +153 -0
  248. package/dist/_chunk/spinbutton.jsx.map +1 -0
  249. package/dist/_chunk/steplist.js +66 -0
  250. package/dist/_chunk/steplist.js.map +1 -0
  251. package/dist/_chunk/steplist.jsx +66 -0
  252. package/dist/_chunk/steplist.jsx.map +1 -0
  253. package/dist/_chunk/switch.js +34 -0
  254. package/dist/_chunk/switch.js.map +1 -0
  255. package/dist/_chunk/switch.jsx +34 -0
  256. package/dist/_chunk/switch.jsx.map +1 -0
  257. package/dist/_chunk/table.js +1088 -0
  258. package/dist/_chunk/table.js.map +1 -0
  259. package/dist/_chunk/table.jsx +1088 -0
  260. package/dist/_chunk/table.jsx.map +1 -0
  261. package/dist/_chunk/tabs.js +263 -0
  262. package/dist/_chunk/tabs.js.map +1 -0
  263. package/dist/_chunk/tabs.jsx +263 -0
  264. package/dist/_chunk/tabs.jsx.map +1 -0
  265. package/dist/_chunk/tag.js +322 -0
  266. package/dist/_chunk/tag.js.map +1 -0
  267. package/dist/_chunk/tag.jsx +322 -0
  268. package/dist/_chunk/tag.jsx.map +1 -0
  269. package/dist/_chunk/textfield.js +110 -0
  270. package/dist/_chunk/textfield.js.map +1 -0
  271. package/dist/_chunk/textfield.jsx +110 -0
  272. package/dist/_chunk/textfield.jsx.map +1 -0
  273. package/dist/_chunk/toast.js +250 -0
  274. package/dist/_chunk/toast.js.map +1 -0
  275. package/dist/_chunk/toast.jsx +250 -0
  276. package/dist/_chunk/toast.jsx.map +1 -0
  277. package/dist/_chunk/toolbar.js +226 -0
  278. package/dist/_chunk/toolbar.js.map +1 -0
  279. package/dist/_chunk/toolbar.jsx +226 -0
  280. package/dist/_chunk/toolbar.jsx.map +1 -0
  281. package/dist/_chunk/tooltip.js +185 -0
  282. package/dist/_chunk/tooltip.js.map +1 -0
  283. package/dist/_chunk/tooltip.jsx +185 -0
  284. package/dist/_chunk/tooltip.jsx.map +1 -0
  285. package/dist/_chunk/tree.js +452 -0
  286. package/dist/_chunk/tree.js.map +1 -0
  287. package/dist/_chunk/tree.jsx +452 -0
  288. package/dist/_chunk/tree.jsx.map +1 -0
  289. package/dist/_chunk/utils.js +705 -0
  290. package/dist/_chunk/utils.js.map +1 -0
  291. package/dist/_chunk/utils.jsx +705 -0
  292. package/dist/_chunk/utils.jsx.map +1 -0
  293. package/dist/_chunk/visually-hidden.js +93 -0
  294. package/dist/_chunk/visually-hidden.js.map +1 -0
  295. package/dist/_chunk/visually-hidden.jsx +93 -0
  296. package/dist/_chunk/visually-hidden.jsx.map +1 -0
  297. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  298. package/dist/actiongroup/index.js +2 -0
  299. package/dist/actiongroup/index.jsx +2 -0
  300. package/dist/autocomplete/createAutocomplete.d.ts +12 -7
  301. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  302. package/dist/autocomplete/index.js +2 -0
  303. package/dist/autocomplete/index.jsx +2 -0
  304. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  305. package/dist/breadcrumbs/index.js +2 -0
  306. package/dist/breadcrumbs/index.jsx +2 -0
  307. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  308. package/dist/button/index.js +2 -0
  309. package/dist/button/index.jsx +2 -0
  310. package/dist/calendar/createCalendar.d.ts.map +1 -1
  311. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  312. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  313. package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
  314. package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
  315. package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
  316. package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
  317. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  318. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  319. package/dist/calendar/index.d.ts +2 -0
  320. package/dist/calendar/index.d.ts.map +1 -1
  321. package/dist/calendar/index.js +2 -0
  322. package/dist/calendar/index.jsx +2 -0
  323. package/dist/calendar/intl/index.d.ts +1 -1
  324. package/dist/calendar/intl/index.d.ts.map +1 -1
  325. package/dist/calendar/utils.d.ts +4 -0
  326. package/dist/calendar/utils.d.ts.map +1 -1
  327. package/dist/checkbox/createCheckbox.d.ts +4 -0
  328. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  329. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  330. package/dist/checkbox/index.js +2 -0
  331. package/dist/checkbox/index.jsx +2 -0
  332. package/dist/collections/index.js +160 -0
  333. package/dist/collections/index.js.map +1 -0
  334. package/dist/collections/index.jsx +160 -0
  335. package/dist/collections/index.jsx.map +1 -0
  336. package/dist/color/createColorArea.d.ts.map +1 -1
  337. package/dist/color/createColorField.d.ts.map +1 -1
  338. package/dist/color/createColorSlider.d.ts.map +1 -1
  339. package/dist/color/createColorSwatch.d.ts.map +1 -1
  340. package/dist/color/createColorWheel.d.ts.map +1 -1
  341. package/dist/color/index.js +2 -0
  342. package/dist/color/index.jsx +2 -0
  343. package/dist/color/intl/index.d.ts +30 -0
  344. package/dist/color/intl/index.d.ts.map +1 -0
  345. package/dist/combobox/createComboBox.d.ts.map +1 -1
  346. package/dist/combobox/index.js +2 -0
  347. package/dist/combobox/index.jsx +2 -0
  348. package/dist/combobox/intl/generated-locales.d.ts +16 -0
  349. package/dist/combobox/intl/generated-locales.d.ts.map +1 -0
  350. package/dist/combobox/intl/index.d.ts +2 -2
  351. package/dist/combobox/intl/index.d.ts.map +1 -1
  352. package/dist/datepicker/createDateField.d.ts +45 -23
  353. package/dist/datepicker/createDateField.d.ts.map +1 -1
  354. package/dist/datepicker/createDatePicker.d.ts +34 -6
  355. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  356. package/dist/datepicker/createDatePickerGroup.d.ts +13 -13
  357. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
  358. package/dist/datepicker/createDateRangePicker.d.ts +55 -7
  359. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  360. package/dist/datepicker/createDateSegment.d.ts +6 -15
  361. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  362. package/dist/datepicker/createDisplayNames.d.ts +17 -0
  363. package/dist/datepicker/createDisplayNames.d.ts.map +1 -0
  364. package/dist/datepicker/createTimeField.d.ts +12 -49
  365. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  366. package/dist/datepicker/index.d.ts +3 -3
  367. package/dist/datepicker/index.d.ts.map +1 -1
  368. package/dist/datepicker/index.js +2 -0
  369. package/dist/datepicker/index.jsx +2 -0
  370. package/dist/datepicker/intl.d.ts +12 -0
  371. package/dist/datepicker/intl.d.ts.map +1 -0
  372. package/dist/dialog/index.js +2 -0
  373. package/dist/dialog/index.jsx +2 -0
  374. package/dist/disclosure/index.js +2 -0
  375. package/dist/disclosure/index.jsx +2 -0
  376. package/dist/dnd/DragManager.d.ts +86 -0
  377. package/dist/dnd/DragManager.d.ts.map +1 -0
  378. package/dist/dnd/DropTargetKeyboardNavigation.d.ts +42 -0
  379. package/dist/dnd/DropTargetKeyboardNavigation.d.ts.map +1 -0
  380. package/dist/dnd/createDrag.d.ts.map +1 -1
  381. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  382. package/dist/dnd/createDraggableItem.d.ts +12 -7
  383. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  384. package/dist/dnd/createDroppableCollection.d.ts +7 -15
  385. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  386. package/dist/dnd/index.d.ts +5 -1
  387. package/dist/dnd/index.d.ts.map +1 -1
  388. package/dist/dnd/index.js +3 -0
  389. package/dist/dnd/index.jsx +3 -0
  390. package/dist/dnd/intl/index.d.ts +39 -0
  391. package/dist/dnd/intl/index.d.ts.map +1 -0
  392. package/dist/dnd/utils.d.ts +7 -2
  393. package/dist/dnd/utils.d.ts.map +1 -1
  394. package/dist/focus/FocusScope.d.ts +7 -0
  395. package/dist/focus/FocusScope.d.ts.map +1 -1
  396. package/dist/focus/index.d.ts +2 -1
  397. package/dist/focus/index.d.ts.map +1 -1
  398. package/dist/focus/index.js +3 -0
  399. package/dist/focus/index.jsx +3 -0
  400. package/dist/focus/virtualFocus.d.ts +26 -0
  401. package/dist/focus/virtualFocus.d.ts.map +1 -0
  402. package/dist/form/createFormValidation.d.ts.map +1 -1
  403. package/dist/form/index.js +3 -0
  404. package/dist/form/index.jsx +3 -0
  405. package/dist/grid/index.js +2 -0
  406. package/dist/grid/index.jsx +2 -0
  407. package/dist/gridlist/createGridList.d.ts +7 -1
  408. package/dist/gridlist/createGridList.d.ts.map +1 -1
  409. package/dist/gridlist/createGridListItem.d.ts +1 -1
  410. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  411. package/dist/gridlist/createGridListSection.d.ts +15 -0
  412. package/dist/gridlist/createGridListSection.d.ts.map +1 -0
  413. package/dist/gridlist/index.d.ts +2 -1
  414. package/dist/gridlist/index.d.ts.map +1 -1
  415. package/dist/gridlist/index.js +2 -0
  416. package/dist/gridlist/index.jsx +2 -0
  417. package/dist/gridlist/types.d.ts +50 -0
  418. package/dist/gridlist/types.d.ts.map +1 -1
  419. package/dist/i18n/index.js +5 -0
  420. package/dist/i18n/index.jsx +5 -0
  421. package/dist/index.d.ts +10 -6
  422. package/dist/index.d.ts.map +1 -1
  423. package/dist/index.js +77 -18311
  424. package/dist/index.jsx +77 -18242
  425. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  426. package/dist/interactions/PressEvent.d.ts +11 -0
  427. package/dist/interactions/PressEvent.d.ts.map +1 -1
  428. package/dist/interactions/createFocus.d.ts.map +1 -1
  429. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  430. package/dist/interactions/createInteractionModality.d.ts +0 -1
  431. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  432. package/dist/interactions/createKeyboard.d.ts.map +1 -1
  433. package/dist/interactions/createPress.d.ts.map +1 -1
  434. package/dist/interactions/index.js +9 -0
  435. package/dist/interactions/index.jsx +9 -0
  436. package/dist/label/createLabels.d.ts.map +1 -1
  437. package/dist/label/index.js +4 -0
  438. package/dist/label/index.jsx +4 -0
  439. package/dist/landmark/index.js +2 -0
  440. package/dist/landmark/index.jsx +2 -0
  441. package/dist/link/index.js +2 -0
  442. package/dist/link/index.jsx +2 -0
  443. package/dist/listbox/createListBox.d.ts +37 -0
  444. package/dist/listbox/createListBox.d.ts.map +1 -1
  445. package/dist/listbox/createOption.d.ts +7 -1
  446. package/dist/listbox/createOption.d.ts.map +1 -1
  447. package/dist/listbox/index.js +2 -0
  448. package/dist/listbox/index.jsx +2 -0
  449. package/dist/live-announcer/index.js +2 -0
  450. package/dist/live-announcer/index.jsx +2 -0
  451. package/dist/menu/createMenu.d.ts +7 -4
  452. package/dist/menu/createMenu.d.ts.map +1 -1
  453. package/dist/menu/createMenuItem.d.ts +9 -1
  454. package/dist/menu/createMenuItem.d.ts.map +1 -1
  455. package/dist/menu/index.js +2 -0
  456. package/dist/menu/index.jsx +2 -0
  457. package/dist/meter/index.js +2 -0
  458. package/dist/meter/index.jsx +2 -0
  459. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  460. package/dist/numberfield/index.js +2 -0
  461. package/dist/numberfield/index.jsx +2 -0
  462. package/dist/overlays/index.js +4 -0
  463. package/dist/overlays/index.jsx +4 -0
  464. package/dist/popover/calculatePosition.d.ts +2 -0
  465. package/dist/popover/calculatePosition.d.ts.map +1 -1
  466. package/dist/popover/createOverlayPosition.d.ts +8 -0
  467. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  468. package/dist/popover/index.js +2 -0
  469. package/dist/popover/index.jsx +2 -0
  470. package/dist/progress/index.js +2 -0
  471. package/dist/progress/index.jsx +2 -0
  472. package/dist/radio/createRadio.d.ts +2 -0
  473. package/dist/radio/createRadio.d.ts.map +1 -1
  474. package/dist/radio/index.js +2 -0
  475. package/dist/radio/index.jsx +2 -0
  476. package/dist/searchfield/index.js +2 -0
  477. package/dist/searchfield/index.jsx +2 -0
  478. package/dist/select/createSelect.d.ts +2 -0
  479. package/dist/select/createSelect.d.ts.map +1 -1
  480. package/dist/select/index.js +2 -0
  481. package/dist/select/index.jsx +2 -0
  482. package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
  483. package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
  484. package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
  485. package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
  486. package/dist/selection/constants.d.ts +15 -0
  487. package/dist/selection/constants.d.ts.map +1 -0
  488. package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
  489. package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
  490. package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
  491. package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
  492. package/dist/selection/createSelectableCollection.d.ts +69 -0
  493. package/dist/selection/createSelectableCollection.d.ts.map +1 -0
  494. package/dist/selection/createSelectableItem.d.ts +154 -0
  495. package/dist/selection/createSelectableItem.d.ts.map +1 -0
  496. package/dist/selection/createSelectableList.d.ts +43 -0
  497. package/dist/selection/createSelectableList.d.ts.map +1 -0
  498. package/dist/selection/createTypeSelect.d.ts.map +1 -1
  499. package/dist/selection/index.d.ts +9 -0
  500. package/dist/selection/index.d.ts.map +1 -1
  501. package/dist/selection/index.js +5 -0
  502. package/dist/selection/index.jsx +5 -0
  503. package/dist/selection/selectItem.d.ts +29 -0
  504. package/dist/selection/selectItem.d.ts.map +1 -0
  505. package/dist/selection/utils.d.ts +40 -0
  506. package/dist/selection/utils.d.ts.map +1 -0
  507. package/dist/separator/index.js +2 -0
  508. package/dist/separator/index.jsx +2 -0
  509. package/dist/slider/createSlider.d.ts.map +1 -1
  510. package/dist/slider/index.js +2 -0
  511. package/dist/slider/index.jsx +2 -0
  512. package/dist/spinbutton/createSpinButton.d.ts +41 -0
  513. package/dist/spinbutton/createSpinButton.d.ts.map +1 -0
  514. package/dist/spinbutton/index.d.ts +3 -0
  515. package/dist/spinbutton/index.d.ts.map +1 -0
  516. package/dist/spinbutton/index.js +2 -0
  517. package/dist/spinbutton/index.jsx +2 -0
  518. package/dist/spinbutton/intl.d.ts +5 -0
  519. package/dist/spinbutton/intl.d.ts.map +1 -0
  520. package/dist/ssr/index.d.ts +17 -0
  521. package/dist/ssr/index.d.ts.map +1 -1
  522. package/dist/ssr/index.js +299 -0
  523. package/dist/ssr/index.js.map +1 -0
  524. package/dist/ssr/index.jsx +292 -0
  525. package/dist/ssr/index.jsx.map +1 -0
  526. package/dist/steplist/index.js +2 -0
  527. package/dist/steplist/index.jsx +2 -0
  528. package/dist/switch/createSwitch.d.ts +4 -0
  529. package/dist/switch/createSwitch.d.ts.map +1 -1
  530. package/dist/switch/index.js +2 -0
  531. package/dist/switch/index.jsx +2 -0
  532. package/dist/table/createTable.d.ts.map +1 -1
  533. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  534. package/dist/table/createTableRow.d.ts +1 -1
  535. package/dist/table/createTableRow.d.ts.map +1 -1
  536. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  537. package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
  538. package/dist/table/index.js +2 -0
  539. package/dist/table/index.jsx +2 -0
  540. package/dist/table/types.d.ts +35 -1
  541. package/dist/table/types.d.ts.map +1 -1
  542. package/dist/table/utils.d.ts +15 -0
  543. package/dist/table/utils.d.ts.map +1 -0
  544. package/dist/tabs/createTabs.d.ts +5 -3
  545. package/dist/tabs/createTabs.d.ts.map +1 -1
  546. package/dist/tabs/index.js +2 -0
  547. package/dist/tabs/index.jsx +2 -0
  548. package/dist/tag/createTag.d.ts +2 -0
  549. package/dist/tag/createTag.d.ts.map +1 -1
  550. package/dist/tag/createTagGroup.d.ts +7 -0
  551. package/dist/tag/createTagGroup.d.ts.map +1 -1
  552. package/dist/tag/index.js +2 -0
  553. package/dist/tag/index.jsx +2 -0
  554. package/dist/textfield/index.js +2 -0
  555. package/dist/textfield/index.jsx +2 -0
  556. package/dist/toast/createToast.d.ts.map +1 -1
  557. package/dist/toast/index.js +2 -0
  558. package/dist/toast/index.jsx +2 -0
  559. package/dist/toggle/createToggle.d.ts +4 -0
  560. package/dist/toggle/createToggle.d.ts.map +1 -1
  561. package/dist/toggle/index.js +3 -0
  562. package/dist/toggle/index.jsx +3 -0
  563. package/dist/toolbar/createToolbar.d.ts +1 -1
  564. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  565. package/dist/toolbar/index.js +2 -0
  566. package/dist/toolbar/index.jsx +2 -0
  567. package/dist/tooltip/index.js +2 -0
  568. package/dist/tooltip/index.jsx +2 -0
  569. package/dist/tree/createTree.d.ts +5 -1
  570. package/dist/tree/createTree.d.ts.map +1 -1
  571. package/dist/tree/createTreeItem.d.ts +1 -1
  572. package/dist/tree/createTreeItem.d.ts.map +1 -1
  573. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  574. package/dist/tree/index.js +2 -0
  575. package/dist/tree/index.jsx +2 -0
  576. package/dist/tree/types.d.ts +10 -0
  577. package/dist/tree/types.d.ts.map +1 -1
  578. package/dist/utils/animation.d.ts +60 -0
  579. package/dist/utils/animation.d.ts.map +1 -0
  580. package/dist/utils/dom.d.ts +49 -2
  581. package/dist/utils/dom.d.ts.map +1 -1
  582. package/dist/utils/index.d.ts +4 -1
  583. package/dist/utils/index.d.ts.map +1 -1
  584. package/dist/utils/index.js +6 -0
  585. package/dist/utils/index.jsx +6 -0
  586. package/dist/utils/keyboard.d.ts +17 -0
  587. package/dist/utils/keyboard.d.ts.map +1 -0
  588. package/dist/utils/mergeProps.d.ts.map +1 -1
  589. package/dist/utils/scrollIntoView.d.ts +30 -0
  590. package/dist/utils/scrollIntoView.d.ts.map +1 -0
  591. package/dist/visually-hidden/index.js +2 -0
  592. package/dist/visually-hidden/index.jsx +2 -0
  593. package/package.json +304 -3
  594. package/src/actiongroup/createActionGroup.ts +26 -109
  595. package/src/autocomplete/createAutocomplete.ts +202 -35
  596. package/src/breadcrumbs/createBreadcrumbs.ts +12 -4
  597. package/src/button/createToggleButtonGroup.ts +19 -14
  598. package/src/calendar/createCalendar.ts +5 -4
  599. package/src/calendar/createCalendarCell.ts +36 -5
  600. package/src/calendar/createCalendarGrid.ts +47 -12
  601. package/src/calendar/createCalendarMonthPicker.ts +105 -0
  602. package/src/calendar/createCalendarYearPicker.ts +144 -0
  603. package/src/calendar/createRangeCalendar.ts +27 -15
  604. package/src/calendar/createRangeCalendarCell.ts +17 -3
  605. package/src/calendar/index.ts +17 -0
  606. package/src/calendar/intl/index.ts +8 -0
  607. package/src/calendar/utils.ts +4 -0
  608. package/src/checkbox/createCheckbox.ts +10 -0
  609. package/src/checkbox/createCheckboxGroupItem.ts +12 -16
  610. package/src/color/createColorArea.ts +17 -10
  611. package/src/color/createColorField.ts +8 -1
  612. package/src/color/createColorSlider.ts +1 -2
  613. package/src/color/createColorSwatch.ts +4 -2
  614. package/src/color/createColorWheel.ts +0 -6
  615. package/src/color/intl/index.ts +316 -0
  616. package/src/combobox/createComboBox.ts +35 -4
  617. package/src/combobox/intl/generated-locales.ts +635 -0
  618. package/src/combobox/intl/index.ts +8 -2
  619. package/src/datepicker/createDateField.ts +228 -213
  620. package/src/datepicker/createDatePicker.ts +157 -146
  621. package/src/datepicker/createDatePickerGroup.ts +88 -82
  622. package/src/datepicker/createDateRangePicker.ts +230 -179
  623. package/src/datepicker/createDateSegment.ts +386 -384
  624. package/src/datepicker/createDisplayNames.ts +45 -0
  625. package/src/datepicker/createTimeField.ts +36 -129
  626. package/src/datepicker/index.ts +13 -14
  627. package/src/datepicker/intl.ts +633 -0
  628. package/src/dnd/DragManager.ts +693 -0
  629. package/src/dnd/DropTargetKeyboardNavigation.ts +337 -0
  630. package/src/dnd/createDrag.ts +31 -5
  631. package/src/dnd/createDraggableCollection.ts +33 -15
  632. package/src/dnd/createDraggableItem.ts +92 -5
  633. package/src/dnd/createDroppableCollection.ts +488 -371
  634. package/src/dnd/index.ts +11 -0
  635. package/src/dnd/intl/ar-AE.json +29 -0
  636. package/src/dnd/intl/bg-BG.json +29 -0
  637. package/src/dnd/intl/cs-CZ.json +29 -0
  638. package/src/dnd/intl/da-DK.json +29 -0
  639. package/src/dnd/intl/de-DE.json +29 -0
  640. package/src/dnd/intl/el-GR.json +29 -0
  641. package/src/dnd/intl/en-US.json +29 -0
  642. package/src/dnd/intl/es-ES.json +29 -0
  643. package/src/dnd/intl/et-EE.json +29 -0
  644. package/src/dnd/intl/fi-FI.json +29 -0
  645. package/src/dnd/intl/fr-FR.json +29 -0
  646. package/src/dnd/intl/he-IL.json +29 -0
  647. package/src/dnd/intl/hr-HR.json +29 -0
  648. package/src/dnd/intl/hu-HU.json +29 -0
  649. package/src/dnd/intl/index.ts +139 -0
  650. package/src/dnd/intl/it-IT.json +29 -0
  651. package/src/dnd/intl/ja-JP.json +29 -0
  652. package/src/dnd/intl/ko-KR.json +29 -0
  653. package/src/dnd/intl/lt-LT.json +29 -0
  654. package/src/dnd/intl/lv-LV.json +29 -0
  655. package/src/dnd/intl/nb-NO.json +29 -0
  656. package/src/dnd/intl/nl-NL.json +29 -0
  657. package/src/dnd/intl/pl-PL.json +29 -0
  658. package/src/dnd/intl/pt-BR.json +29 -0
  659. package/src/dnd/intl/pt-PT.json +29 -0
  660. package/src/dnd/intl/ro-RO.json +29 -0
  661. package/src/dnd/intl/ru-RU.json +29 -0
  662. package/src/dnd/intl/sk-SK.json +29 -0
  663. package/src/dnd/intl/sl-SI.json +29 -0
  664. package/src/dnd/intl/sr-SP.json +29 -0
  665. package/src/dnd/intl/sv-SE.json +29 -0
  666. package/src/dnd/intl/tr-TR.json +29 -0
  667. package/src/dnd/intl/uk-UA.json +29 -0
  668. package/src/dnd/intl/zh-CN.json +29 -0
  669. package/src/dnd/intl/zh-TW.json +29 -0
  670. package/src/dnd/utils.ts +63 -3
  671. package/src/focus/FocusScope.tsx +266 -24
  672. package/src/focus/index.ts +8 -0
  673. package/src/focus/virtualFocus.ts +55 -0
  674. package/src/form/createFormValidation.ts +8 -1
  675. package/src/gridlist/createGridList.ts +187 -48
  676. package/src/gridlist/createGridListItem.ts +87 -155
  677. package/src/gridlist/createGridListSection.ts +54 -0
  678. package/src/gridlist/index.ts +3 -0
  679. package/src/gridlist/types.ts +47 -0
  680. package/src/index.ts +51 -3
  681. package/src/interactions/FocusableProvider.tsx +11 -6
  682. package/src/interactions/PressEvent.ts +14 -0
  683. package/src/interactions/createFocus.ts +26 -21
  684. package/src/interactions/createFocusWithin.ts +23 -24
  685. package/src/interactions/createInteractionModality.ts +26 -15
  686. package/src/interactions/createKeyboard.ts +10 -0
  687. package/src/interactions/createPress.ts +29 -6
  688. package/src/label/createLabels.ts +7 -4
  689. package/src/listbox/createListBox.ts +203 -10
  690. package/src/listbox/createOption.ts +84 -74
  691. package/src/menu/createMenu.ts +93 -16
  692. package/src/menu/createMenuItem.ts +253 -41
  693. package/src/numberfield/createNumberField.ts +82 -14
  694. package/src/popover/calculatePosition.ts +19 -7
  695. package/src/popover/createOverlayPosition.ts +9 -0
  696. package/src/radio/createRadio.ts +19 -2
  697. package/src/select/createSelect.ts +41 -4
  698. package/src/selection/DOMLayoutDelegate.ts +102 -0
  699. package/src/selection/ListKeyboardDelegate.ts +398 -0
  700. package/src/selection/constants.ts +16 -0
  701. package/src/selection/createCollectionRowInteraction.ts +209 -0
  702. package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
  703. package/src/selection/createSelectableCollection.ts +645 -0
  704. package/src/selection/createSelectableItem.ts +512 -0
  705. package/src/selection/createSelectableList.ts +93 -0
  706. package/src/selection/createTypeSelect.ts +112 -51
  707. package/src/selection/index.ts +31 -0
  708. package/src/selection/selectItem.ts +80 -0
  709. package/src/selection/utils.ts +82 -0
  710. package/src/slider/createSlider.ts +48 -1
  711. package/src/spinbutton/createSpinButton.ts +163 -0
  712. package/src/spinbutton/index.ts +10 -0
  713. package/src/spinbutton/intl.ts +115 -0
  714. package/src/ssr/index.tsx +31 -0
  715. package/src/switch/createSwitch.ts +10 -0
  716. package/src/table/createTable.ts +82 -27
  717. package/src/table/createTableColumnHeader.ts +10 -0
  718. package/src/table/createTableRow.ts +208 -203
  719. package/src/table/createTableSelectAllCheckbox.ts +3 -4
  720. package/src/table/createTableSelectionCheckbox.ts +24 -1
  721. package/src/table/types.ts +37 -1
  722. package/src/table/utils.ts +41 -0
  723. package/src/tabs/createTabs.ts +95 -24
  724. package/src/tag/createTag.ts +30 -36
  725. package/src/tag/createTagGroup.ts +92 -0
  726. package/src/toast/createToast.ts +1 -0
  727. package/src/toggle/createToggle.ts +20 -0
  728. package/src/toolbar/createToolbar.ts +43 -94
  729. package/src/tree/createTree.ts +165 -52
  730. package/src/tree/createTreeItem.ts +105 -120
  731. package/src/tree/createTreeSelectionCheckbox.ts +14 -1
  732. package/src/tree/types.ts +10 -0
  733. package/src/utils/animation.ts +243 -0
  734. package/src/utils/dom.ts +216 -25
  735. package/src/utils/index.ts +10 -0
  736. package/src/utils/keyboard.ts +25 -0
  737. package/src/utils/mergeProps.ts +8 -1
  738. package/src/utils/scrollIntoView.ts +181 -0
  739. package/dist/datepicker/createTimeSegment.d.ts +0 -29
  740. package/dist/datepicker/createTimeSegment.d.ts.map +0 -1
  741. package/dist/index.js.map +0 -1
  742. package/dist/index.jsx.map +0 -1
  743. package/src/datepicker/createTimeSegment.ts +0 -352
@@ -0,0 +1,369 @@
1
+ import { i as mergeProps$1 } from "./env.jsx";
2
+ import { S as scrollIntoViewport } from "./utils.jsx";
3
+ import { o as getInteractionModality } from "./createInteractionModality.jsx";
4
+ import { createId as createId$1, createSlotId } from "../ssr/index.jsx";
5
+ import { t as createLabels } from "./createLabels.jsx";
6
+ import { n as createSelectableItem } from "./createSelectableItem.jsx";
7
+ import { t as mergeCollectionRowInteractionProps } from "./createCollectionRowInteraction.jsx";
8
+ import { createEffect, createMemo } from "solid-js";
9
+ import { createId } from "@proyecto-viviana/solid-stately";
10
+ //#region src/gridlist/createGridList.ts
11
+ /**
12
+ * createGridList - Provides accessibility for a grid list.
13
+ * Based on @react-aria/gridlist/useGridList.
14
+ */
15
+ /**
16
+ * WeakMap to store grid list data for child components to access.
17
+ */
18
+ const gridListDataMap = /* @__PURE__ */ new WeakMap();
19
+ /**
20
+ * Gets the grid list data for a given state.
21
+ */
22
+ function getGridListData(state) {
23
+ return gridListDataMap.get(state);
24
+ }
25
+ /**
26
+ * Whether a key should be skipped during keyboard navigation. Disabled keys only
27
+ * block navigation under `disabledBehavior: "all"` (the default); under
28
+ * `"selection"` they remain focusable (selection is still blocked elsewhere).
29
+ * Mirrors `ListKeyboardDelegate.isDisabled` in React Aria.
30
+ */
31
+ function isNavigationDisabled(state, key) {
32
+ return state.isDisabled(key) && state.disabledBehavior === "all";
33
+ }
34
+ /**
35
+ * Walks from `startKey` via `step` until reaching a navigable (not
36
+ * navigation-disabled) key, mirroring React Aria's
37
+ * `ListKeyboardDelegate.findNextNonDisabled`. The next/previous lookups and the
38
+ * `getFirstKey`/`getLastKey` boundaries all funnel through this so arrow keys,
39
+ * Home and End land on enabled rows only.
40
+ */
41
+ function findNextNavigableKey(state, startKey, step) {
42
+ let key = startKey;
43
+ while (key != null && isNavigationDisabled(state, key)) key = step(key);
44
+ return key;
45
+ }
46
+ /**
47
+ * Creates accessibility props for a grid list.
48
+ */
49
+ function createGridList(props, state, ref) {
50
+ const gridListId = props().id ?? createId();
51
+ const gridListData = {
52
+ gridListId,
53
+ get selectionBehavior() {
54
+ return props().selectionBehavior ?? "replace";
55
+ },
56
+ get shouldSelectOnPressUp() {
57
+ return props().shouldSelectOnPressUp ?? false;
58
+ },
59
+ get keyboardNavigationBehavior() {
60
+ return props().keyboardNavigationBehavior ?? "arrow";
61
+ },
62
+ get direction() {
63
+ return props().direction ?? "ltr";
64
+ },
65
+ actions: { get onAction() {
66
+ return props().onAction;
67
+ } }
68
+ };
69
+ gridListDataMap.set(state(), gridListData);
70
+ const onKeyDown = (e) => {
71
+ const s = state();
72
+ const p = props();
73
+ const collection = s.collection;
74
+ const focusedKey = s.focusedKey;
75
+ if (p.isDisabled) return;
76
+ switch (e.key) {
77
+ case "ArrowDown": {
78
+ e.preventDefault();
79
+ const nextKey = focusedKey != null ? findNextNavigableKey(s, collection.getKeyAfter(focusedKey), (k) => collection.getKeyAfter(k)) : findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));
80
+ if (nextKey != null) s.setFocusedKey(nextKey);
81
+ break;
82
+ }
83
+ case "ArrowUp": {
84
+ e.preventDefault();
85
+ const prevKey = focusedKey != null ? findNextNavigableKey(s, collection.getKeyBefore(focusedKey), (k) => collection.getKeyBefore(k)) : findNextNavigableKey(s, collection.getLastKey(), (k) => collection.getKeyBefore(k));
86
+ if (prevKey != null) s.setFocusedKey(prevKey);
87
+ break;
88
+ }
89
+ case "ArrowRight":
90
+ case "ArrowLeft": {
91
+ const behavior = p.keyboardNavigationBehavior ?? "arrow";
92
+ if (p.orientation !== "horizontal" || behavior !== "tab") break;
93
+ e.preventDefault();
94
+ const isRtl = p.direction === "rtl";
95
+ const step = (e.key === "ArrowRight" ? !isRtl : isRtl) ? (k) => collection.getKeyAfter(k) : (k) => collection.getKeyBefore(k);
96
+ const nextKey = focusedKey != null ? findNextNavigableKey(s, step(focusedKey), step) : findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));
97
+ if (nextKey != null) s.setFocusedKey(nextKey);
98
+ break;
99
+ }
100
+ case "Home": {
101
+ e.preventDefault();
102
+ const firstKey = findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));
103
+ if (firstKey != null) s.setFocusedKey(firstKey);
104
+ break;
105
+ }
106
+ case "End": {
107
+ e.preventDefault();
108
+ const lastKey = findNextNavigableKey(s, collection.getLastKey(), (k) => collection.getKeyBefore(k));
109
+ if (lastKey != null) s.setFocusedKey(lastKey);
110
+ break;
111
+ }
112
+ case "a":
113
+ case "A":
114
+ if ((e.ctrlKey || e.metaKey) && s.selectionMode === "multiple") {
115
+ e.preventDefault();
116
+ s.selectAll();
117
+ }
118
+ break;
119
+ case "Escape":
120
+ if (s.selectionMode !== "none") {
121
+ e.preventDefault();
122
+ s.clearSelection();
123
+ }
124
+ break;
125
+ }
126
+ };
127
+ const onFocus = (e) => {
128
+ const s = state();
129
+ const p = props();
130
+ s.setFocused(true);
131
+ const container = e.currentTarget;
132
+ if (container && !container.contains(e.target)) return;
133
+ if (s.focusedKey != null || p.isDisabled) return;
134
+ const collection = s.collection;
135
+ const relatedTarget = e.relatedTarget;
136
+ const enterKey = relatedTarget && container && container.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING ? findNextNavigableKey(s, collection.getLastKey(), (k) => collection.getKeyBefore(k)) : findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));
137
+ if (enterKey != null) s.setFocusedKey(enterKey);
138
+ };
139
+ const onBlur = () => {
140
+ state().setFocused(false);
141
+ };
142
+ createEffect(() => {
143
+ const key = state().focusedKey;
144
+ const el = ref();
145
+ if (!el || key == null) return;
146
+ const active = document.activeElement;
147
+ if (!active || active !== el && !el.contains(active)) return;
148
+ const target = el.querySelector(`[data-key="${key}"]`);
149
+ if (target && target !== active) {
150
+ target.focus();
151
+ if (getInteractionModality() !== "pointer") scrollIntoViewport(target, { containingElement: el });
152
+ }
153
+ });
154
+ const gridProps = createMemo(() => {
155
+ const p = props();
156
+ const s = state();
157
+ const baseProps = {
158
+ role: "grid",
159
+ id: gridListId,
160
+ "aria-label": p["aria-label"],
161
+ "aria-labelledby": p["aria-labelledby"],
162
+ "aria-describedby": p["aria-describedby"],
163
+ "aria-multiselectable": s.selectionMode === "multiple" ? true : void 0,
164
+ "aria-disabled": p.isDisabled || void 0,
165
+ tabIndex: p.isDisabled ? void 0 : s.focusedKey != null ? -1 : 0,
166
+ onKeyDown,
167
+ onFocus,
168
+ onBlur
169
+ };
170
+ if (p.isVirtualized) baseProps["aria-rowcount"] = s.collection.rowCount;
171
+ return baseProps;
172
+ });
173
+ return { get gridProps() {
174
+ return gridProps();
175
+ } };
176
+ }
177
+ //#endregion
178
+ //#region src/gridlist/createGridListItem.ts
179
+ /**
180
+ * createGridListItem - Provides accessibility for a grid list item.
181
+ * Based on @react-aria/gridlist/useGridListItem.
182
+ */
183
+ /**
184
+ * Creates accessibility props for a grid list item.
185
+ */
186
+ function createGridListItem(props, state, ref) {
187
+ const isSelected = createMemo(() => {
188
+ const s = state();
189
+ const p = props();
190
+ return s.isSelected(p.node.key);
191
+ });
192
+ const selectableItem = createSelectableItem(() => {
193
+ const s = state();
194
+ const p = props();
195
+ const gridListData = getGridListData(s);
196
+ const onAction = gridListData?.actions.onAction;
197
+ return {
198
+ key: p.node.key,
199
+ id: `${gridListData?.gridListId ?? "gridlist"}-row-${String(p.node.key)}`,
200
+ isVirtualized: p.isVirtualized,
201
+ shouldSelectOnPressUp: gridListData?.shouldSelectOnPressUp ?? false,
202
+ onAction: onAction || p.onAction ? () => {
203
+ p.onAction?.();
204
+ onAction?.(p.node.key);
205
+ } : void 0
206
+ };
207
+ }, {
208
+ collection: () => state().collection,
209
+ isFocused: () => state().isFocused,
210
+ setFocused: (focused) => state().setFocused(focused),
211
+ focusedKey: () => state().focusedKey,
212
+ childFocusStrategy: () => state().childFocusStrategy,
213
+ setFocusedKey: (key, strategy) => state().setFocusedKey(key, strategy),
214
+ selectionMode: () => state().selectionMode,
215
+ selectionBehavior: () => props().selectionBehavior ?? state().selectionBehavior,
216
+ disallowEmptySelection: () => state().disallowEmptySelection,
217
+ selectedKeys: () => state().selectedKeys,
218
+ disabledKeys: () => state().disabledKeys,
219
+ disabledBehavior: () => state().disabledBehavior,
220
+ isEmpty: () => {
221
+ const keys = state().selectedKeys;
222
+ return keys !== "all" && keys.size === 0;
223
+ },
224
+ isSelectAll: () => state().selectedKeys === "all",
225
+ isSelected: (key) => state().isSelected(key),
226
+ isDisabled: (key) => {
227
+ const s = state();
228
+ const item = s.collection.getItem(key);
229
+ return s.disabledBehavior === "all" && s.isDisabled(key) && item?.props?.disabledBehavior !== "selection";
230
+ },
231
+ canSelectItem: (key) => {
232
+ const s = state();
233
+ return s.selectionMode !== "none" && !s.isDisabled(key);
234
+ },
235
+ setSelectionBehavior: (behavior) => state().setSelectionBehavior(behavior),
236
+ toggleSelection: (key) => state().toggleSelection(key),
237
+ replaceSelection: (key) => state().replaceSelection(key),
238
+ setSelectedKeys: (keys) => state().setSelectedKeys(keys),
239
+ selectAll: () => state().selectAll(),
240
+ clearSelection: () => state().clearSelection(),
241
+ toggleSelectAll: () => state().toggleSelectAll(),
242
+ extendSelection: (toKey, _collection) => state().extendSelection(toKey)
243
+ }, ref);
244
+ const rowProps = createMemo(() => {
245
+ const s = state();
246
+ const p = props();
247
+ const node = p.node;
248
+ const baseProps = {
249
+ role: "row",
250
+ "aria-selected": s.selectionMode !== "none" ? isSelected() : void 0,
251
+ "aria-disabled": selectableItem.isDisabled() || void 0
252
+ };
253
+ if (p.isVirtualized && node.rowIndex != null) baseProps["aria-rowindex"] = node.rowIndex + 1;
254
+ const gridListData = getGridListData(s);
255
+ return mergeCollectionRowInteractionProps(mergeProps$1(selectableItem.itemProps, baseProps), {
256
+ ref,
257
+ keyboardNavigationBehavior: () => gridListData?.keyboardNavigationBehavior ?? "arrow",
258
+ direction: () => gridListData?.direction ?? "ltr"
259
+ });
260
+ });
261
+ const gridCellProps = createMemo(() => {
262
+ return { role: "gridcell" };
263
+ });
264
+ return {
265
+ get rowProps() {
266
+ return rowProps();
267
+ },
268
+ get gridCellProps() {
269
+ return gridCellProps();
270
+ },
271
+ get isSelected() {
272
+ return isSelected();
273
+ },
274
+ get isDisabled() {
275
+ return selectableItem.isDisabled();
276
+ },
277
+ get isPressed() {
278
+ return selectableItem.isPressed();
279
+ }
280
+ };
281
+ }
282
+ //#endregion
283
+ //#region src/gridlist/createGridListSelectionCheckbox.ts
284
+ /**
285
+ * createGridListSelectionCheckbox - Provides accessibility for a grid list item selection checkbox.
286
+ * Based on @react-aria/gridlist.
287
+ */
288
+ /**
289
+ * Creates accessibility props for a grid list item selection checkbox.
290
+ */
291
+ function createGridListSelectionCheckbox(props, state) {
292
+ const checkboxId = createId();
293
+ const isSelected = createMemo(() => {
294
+ const s = state();
295
+ const p = props();
296
+ return s.isSelected(p.key);
297
+ });
298
+ const isDisabled = createMemo(() => {
299
+ const s = state();
300
+ const p = props();
301
+ return s.isDisabled(p.key);
302
+ });
303
+ const onChange = () => {
304
+ const s = state();
305
+ const p = props();
306
+ if (!isDisabled()) s.toggleSelection(p.key);
307
+ };
308
+ const checkboxProps = createMemo(() => {
309
+ return {
310
+ id: checkboxId,
311
+ type: "checkbox",
312
+ checked: isSelected(),
313
+ disabled: isDisabled(),
314
+ onChange,
315
+ "aria-label": "Select"
316
+ };
317
+ });
318
+ return { get checkboxProps() {
319
+ return checkboxProps();
320
+ } };
321
+ }
322
+ //#endregion
323
+ //#region src/gridlist/createGridListSection.ts
324
+ /**
325
+ * createGridListSection - Provides accessibility for a grid list section.
326
+ * Based on @react-aria/gridlist/useGridListSection.
327
+ */
328
+ /**
329
+ * Creates accessibility props for a grid list section.
330
+ *
331
+ * Mirrors upstream `useGridListSection`: a section is a `role="rowgroup"`
332
+ * wrapper whose optional header renders as `role="row"` › `role="rowheader"`.
333
+ * The `aria-labelledby` of the wrapper points at the header's id via a slot id
334
+ * that resolves to `undefined` when no header is rendered.
335
+ */
336
+ function createGridListSection(props) {
337
+ const headingId = createSlotId();
338
+ const rowGroupId = createId$1();
339
+ const labelProps = createMemo(() => createLabels({
340
+ id: rowGroupId,
341
+ "aria-label": props["aria-label"],
342
+ "aria-labelledby": headingId()
343
+ }));
344
+ return {
345
+ rowProps: { role: "row" },
346
+ rowHeaderProps: {
347
+ get id() {
348
+ return headingId();
349
+ },
350
+ role: "rowheader"
351
+ },
352
+ rowGroupProps: {
353
+ role: "rowgroup",
354
+ get id() {
355
+ return labelProps().id;
356
+ },
357
+ get "aria-label"() {
358
+ return labelProps()["aria-label"];
359
+ },
360
+ get "aria-labelledby"() {
361
+ return labelProps()["aria-labelledby"];
362
+ }
363
+ }
364
+ };
365
+ }
366
+ //#endregion
367
+ export { getGridListData as a, createGridList as i, createGridListSelectionCheckbox as n, createGridListItem as r, createGridListSection as t };
368
+
369
+ //# sourceMappingURL=gridlist.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridlist.jsx","names":["mergeProps","createId"],"sources":["../../src/gridlist/createGridList.ts","../../src/gridlist/createGridListItem.ts","../../src/gridlist/createGridListSelectionCheckbox.ts","../../src/gridlist/createGridListSection.ts"],"sourcesContent":["/**\n * createGridList - Provides accessibility for a grid list.\n * Based on @react-aria/gridlist/useGridList.\n */\n\nimport { createMemo, createEffect, type Accessor } from \"solid-js\";\nimport type { JSX } from \"solid-js\";\nimport { createId } from \"@proyecto-viviana/solid-stately\";\nimport type { GridState, GridCollection, Key } from \"@proyecto-viviana/solid-stately\";\nimport type { AriaGridListProps, GridListAria } from \"./types\";\nimport { scrollIntoViewport } from \"../utils\";\nimport { getInteractionModality } from \"../interactions/createInteractionModality\";\n\n/**\n * Metadata stored for a grid list instance.\n */\ninterface GridListData {\n /** The generated ID for the grid list. */\n gridListId: string;\n /** How selection should behave when pressing an item. */\n selectionBehavior: \"replace\" | \"toggle\";\n /** Whether row selection should occur on press up. */\n shouldSelectOnPressUp: boolean;\n /** How keyboard navigation behaves within row children. */\n keyboardNavigationBehavior: \"arrow\" | \"tab\";\n /** Text direction for row-child arrow navigation. */\n direction: \"ltr\" | \"rtl\";\n /** Actions registered for the grid list. */\n actions: {\n onAction?: (key: Key) => void;\n };\n}\n\n/**\n * WeakMap to store grid list data for child components to access.\n */\nconst gridListDataMap = new WeakMap<object, GridListData>();\n\n/**\n * Gets the grid list data for a given state.\n */\nexport function getGridListData<T extends object, C extends GridCollection<T>>(\n state: GridState<T, C>,\n): GridListData | undefined {\n return gridListDataMap.get(state);\n}\n\n/**\n * Whether a key should be skipped during keyboard navigation. Disabled keys only\n * block navigation under `disabledBehavior: \"all\"` (the default); under\n * `\"selection\"` they remain focusable (selection is still blocked elsewhere).\n * Mirrors `ListKeyboardDelegate.isDisabled` in React Aria.\n */\nfunction isNavigationDisabled<T extends object, C extends GridCollection<T>>(\n state: GridState<T, C>,\n key: Key,\n): boolean {\n return state.isDisabled(key) && state.disabledBehavior === \"all\";\n}\n\n/**\n * Walks from `startKey` via `step` until reaching a navigable (not\n * navigation-disabled) key, mirroring React Aria's\n * `ListKeyboardDelegate.findNextNonDisabled`. The next/previous lookups and the\n * `getFirstKey`/`getLastKey` boundaries all funnel through this so arrow keys,\n * Home and End land on enabled rows only.\n */\nfunction findNextNavigableKey<T extends object, C extends GridCollection<T>>(\n state: GridState<T, C>,\n startKey: Key | null,\n step: (key: Key) => Key | null,\n): Key | null {\n let key = startKey;\n while (key != null && isNavigationDisabled(state, key)) {\n key = step(key);\n }\n return key;\n}\n\n/**\n * Creates accessibility props for a grid list.\n */\nexport function createGridList<T extends object, C extends GridCollection<T> = GridCollection<T>>(\n props: Accessor<AriaGridListProps>,\n state: Accessor<GridState<T, C>>,\n ref: Accessor<HTMLElement | null>,\n): GridListAria {\n // Generate a unique ID for the grid list\n const gridListId = props().id ?? createId();\n\n // Store grid list data for child components\n const gridListData: GridListData = {\n gridListId,\n get selectionBehavior() {\n return props().selectionBehavior ?? \"replace\";\n },\n get shouldSelectOnPressUp() {\n return props().shouldSelectOnPressUp ?? false;\n },\n get keyboardNavigationBehavior() {\n return props().keyboardNavigationBehavior ?? \"arrow\";\n },\n get direction() {\n return props().direction ?? \"ltr\";\n },\n actions: {\n get onAction() {\n return props().onAction;\n },\n },\n };\n\n // Store in WeakMap using the state as key\n gridListDataMap.set(state(), gridListData);\n\n // Handle keyboard navigation\n const onKeyDown = (e: KeyboardEvent) => {\n const s = state();\n const p = props();\n const collection = s.collection;\n const focusedKey = s.focusedKey;\n\n if (p.isDisabled) return;\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const nextKey =\n focusedKey != null\n ? findNextNavigableKey(s, collection.getKeyAfter(focusedKey), (k) =>\n collection.getKeyAfter(k),\n )\n : findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));\n if (nextKey != null) {\n s.setFocusedKey(nextKey);\n }\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prevKey =\n focusedKey != null\n ? findNextNavigableKey(s, collection.getKeyBefore(focusedKey), (k) =>\n collection.getKeyBefore(k),\n )\n : findNextNavigableKey(s, collection.getLastKey(), (k) => collection.getKeyBefore(k));\n if (prevKey != null) {\n s.setFocusedKey(prevKey);\n }\n break;\n }\n case \"ArrowRight\":\n case \"ArrowLeft\": {\n // The inline axis (Left/Right) belongs to the ROW under the default\n // \"arrow\" navigation behavior: createGridListItem's onKeyDownCapture\n // intercepts Left/Right for intra-row focus movement (a no-op for\n // text-only rows), exactly as useGridListItem does upstream, so the\n // container must NOT step between rows here. Only under \"tab\" navigation\n // does the row stop intercepting and the event reach the collection —\n // mirroring how useSelectableCollection handles Left/Right via\n // ListKeyboardDelegate. Even then it strips getKeyLeftOf/getKeyRightOf\n // for a vertical stack, so this stays a no-op unless the stack is\n // horizontal, where Right=next / Left=prev in LTR, flipped under RTL.\n // (In Solid the row's capture-phase stopPropagation does not reliably\n // prevent the container's delegated onKeyDown, so this gate — not the\n // row's stopPropagation — is what keeps the axes from double-firing.)\n const behavior = p.keyboardNavigationBehavior ?? \"arrow\";\n if (p.orientation !== \"horizontal\" || behavior !== \"tab\") break;\n e.preventDefault();\n const isRtl = p.direction === \"rtl\";\n const forward = e.key === \"ArrowRight\" ? !isRtl : isRtl;\n const step = forward\n ? (k: Key) => collection.getKeyAfter(k)\n : (k: Key) => collection.getKeyBefore(k);\n const nextKey =\n focusedKey != null\n ? findNextNavigableKey(s, step(focusedKey), step)\n : findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));\n if (nextKey != null) {\n s.setFocusedKey(nextKey);\n }\n break;\n }\n case \"Home\": {\n e.preventDefault();\n const firstKey = findNextNavigableKey(s, collection.getFirstKey(), (k) =>\n collection.getKeyAfter(k),\n );\n if (firstKey != null) {\n s.setFocusedKey(firstKey);\n }\n break;\n }\n case \"End\": {\n e.preventDefault();\n const lastKey = findNextNavigableKey(s, collection.getLastKey(), (k) =>\n collection.getKeyBefore(k),\n );\n if (lastKey != null) {\n s.setFocusedKey(lastKey);\n }\n break;\n }\n case \"a\":\n case \"A\": {\n if ((e.ctrlKey || e.metaKey) && s.selectionMode === \"multiple\") {\n e.preventDefault();\n s.selectAll();\n }\n break;\n }\n // Space (toggle selection) and Enter (onAction) are intentionally absent\n // here. Upstream's useSelectableCollection has no Space/Enter case — the\n // focused item owns both, via useSelectableItem. We follow browser focus\n // onto the focused row (the effect below), so the row's own handlers in\n // createGridListItem fire. Handling them here too would double-toggle a\n // focused row, because Solid delegates keydown and bubbles the row event\n // up to this grid handler.\n case \"Escape\": {\n if (s.selectionMode !== \"none\") {\n e.preventDefault();\n s.clearSelection();\n }\n break;\n }\n }\n };\n\n // Focus marshalling — the grid container is a trampoline. Its roving tabIndex\n // is 0 only while `focusedKey == null` (see gridProps below), so a Tab that\n // reaches a standalone grid lands on the container itself; move the focused key\n // onto the first/last row and the post-commit effect below pulls REAL DOM focus\n // there while the container rolls to tabIndex -1. This mirrors\n // useSelectableCollection's `onFocus` — the same direction-aware trampoline the\n // standalone ListBox uses (createListBox.ts) — and is why a standalone grid\n // announces the active row through real focus, never `aria-activedescendant`.\n const onFocus: JSX.EventHandler<HTMLElement, FocusEvent> = (e) => {\n const s = state();\n const p = props();\n s.setFocused(true);\n\n // onFocus is non-bubbling in Solid, so this fires only when the container\n // itself receives focus; ignore anything that bubbled from a descendant.\n // (`currentTarget` is null only in synthetic unit-test FocusEvents — treat\n // those as a direct container focus.)\n const container = e.currentTarget as HTMLElement | null;\n if (container && !container.contains(e.target as Node)) return;\n // Only marshal when no row is focused yet.\n if (s.focusedKey != null || p.isDisabled) return;\n\n const collection = s.collection;\n const relatedTarget = e.relatedTarget as Element | null;\n // Detect tab direction: focus arriving from an element that FOLLOWS the grid\n // in document order means the user shift-tabbed backward into it, so enter at\n // the LAST row; otherwise (forward Tab, or programmatic) enter at the FIRST.\n const enterKey =\n relatedTarget &&\n container &&\n container.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING\n ? findNextNavigableKey(s, collection.getLastKey(), (k) => collection.getKeyBefore(k))\n : findNextNavigableKey(s, collection.getFirstKey(), (k) => collection.getKeyAfter(k));\n if (enterKey != null) {\n s.setFocusedKey(enterKey);\n }\n };\n\n const onBlur = () => {\n const s = state();\n s.setFocused(false);\n };\n\n // Mirror React Aria's useSelectableCollection: once the roving tabindex for the\n // focused key has been committed to the DOM, move browser focus onto that row\n // from a post-commit effect, looking it up by its stable data-key rather than by\n // transient tabindex. Selection and activation live on the row\n // (createGridListItem) to match upstream, so keyboard nav has to carry focus\n // there for the row's Space/Enter handlers to act on.\n createEffect(() => {\n const s = state();\n const key = s.focusedKey;\n const el = ref();\n if (!el || key == null) {\n return;\n }\n\n // Only manage focus while it already lives inside the grid — i.e. the user is\n // navigating with the keyboard. Gate on the physical position of browser focus\n // rather than the grid's logical isFocused signal: focus can land directly on a\n // row (a pointer click) without ever firing the grid's own focus handler, and\n // the contains() check keeps us from yanking focus back from elsewhere on the\n // page when the focused key changes from a background interaction.\n const active = document.activeElement;\n if (!active || (active !== el && !el.contains(active))) {\n return;\n }\n\n const target = el.querySelector<HTMLElement>(`[data-key=\"${key}\"]`);\n if (target && target !== active) {\n target.focus();\n\n // Reveal the newly focused row when navigating with the keyboard, mirroring\n // useSelectableCollection. Pointer-driven focus changes should not shift the\n // scroll position under the user's finger.\n if (getInteractionModality() !== \"pointer\") {\n scrollIntoViewport(target, { containingElement: el });\n }\n }\n });\n\n const gridProps = createMemo(() => {\n const p = props();\n const s = state();\n\n const baseProps: Record<string, unknown> = {\n role: \"grid\",\n id: gridListId,\n \"aria-label\": p[\"aria-label\"],\n \"aria-labelledby\": p[\"aria-labelledby\"],\n \"aria-describedby\": p[\"aria-describedby\"],\n \"aria-multiselectable\": s.selectionMode === \"multiple\" ? true : undefined,\n \"aria-disabled\": p.isDisabled || undefined,\n // Roving container tabIndex mirrors useSelectableCollection: the container\n // is tabbable (0) only while nothing is focused, then rolls to -1 once a row\n // takes focus so Tab exits the grid. A standalone grid drives AT through\n // real row focus, so it never needs (nor emits) aria-activedescendant.\n tabIndex: p.isDisabled ? undefined : s.focusedKey != null ? -1 : 0,\n onKeyDown,\n onFocus,\n onBlur,\n };\n\n // Add row count for virtualized lists\n if (p.isVirtualized) {\n baseProps[\"aria-rowcount\"] = s.collection.rowCount;\n }\n\n return baseProps as JSX.HTMLAttributes<HTMLElement>;\n });\n\n return {\n get gridProps() {\n return gridProps();\n },\n };\n}\n","/**\n * createGridListItem - Provides accessibility for a grid list item.\n * Based on @react-aria/gridlist/useGridListItem.\n */\n\nimport { createMemo, type Accessor } from \"solid-js\";\nimport type { JSX } from \"solid-js\";\nimport type {\n Collection,\n GridState,\n GridCollection,\n Key,\n Selection,\n} from \"@proyecto-viviana/solid-stately\";\nimport type { AriaGridListItemProps, GridListItemAria } from \"./types\";\nimport { getGridListData } from \"./createGridList\";\nimport { createSelectableItem, type SelectableItemState } from \"../selection/createSelectableItem\";\nimport { mergeCollectionRowInteractionProps } from \"../selection/createCollectionRowInteraction\";\nimport { mergeProps } from \"../utils/mergeProps\";\n\n/**\n * Creates accessibility props for a grid list item.\n */\nexport function createGridListItem<\n T extends object,\n C extends GridCollection<T> = GridCollection<T>,\n>(\n props: Accessor<AriaGridListItemProps>,\n state: Accessor<GridState<T, C>>,\n ref: Accessor<HTMLElement | null>,\n): GridListItemAria {\n const isSelected = createMemo(() => {\n const s = state();\n const p = props();\n return s.isSelected(p.node.key);\n });\n\n const selectableState: SelectableItemState<T> = {\n collection: () => state().collection as unknown as Collection<T>,\n isFocused: () => state().isFocused,\n setFocused: (focused: boolean) => state().setFocused(focused),\n focusedKey: () => state().focusedKey,\n childFocusStrategy: () => state().childFocusStrategy,\n setFocusedKey: (key: Key | null, strategy) => state().setFocusedKey(key, strategy),\n selectionMode: () => state().selectionMode,\n selectionBehavior: () => props().selectionBehavior ?? state().selectionBehavior,\n disallowEmptySelection: () => state().disallowEmptySelection,\n selectedKeys: () => state().selectedKeys as Selection,\n disabledKeys: () => state().disabledKeys,\n disabledBehavior: () => state().disabledBehavior,\n isEmpty: () => {\n const keys = state().selectedKeys;\n return keys !== \"all\" && keys.size === 0;\n },\n isSelectAll: () => state().selectedKeys === \"all\",\n isSelected: (key: Key) => state().isSelected(key),\n isDisabled: (key: Key) => {\n const s = state();\n const item = s.collection.getItem(key);\n return (\n s.disabledBehavior === \"all\" &&\n s.isDisabled(key) &&\n item?.props?.disabledBehavior !== \"selection\"\n );\n },\n canSelectItem: (key: Key) => {\n const s = state();\n return s.selectionMode !== \"none\" && !s.isDisabled(key);\n },\n setSelectionBehavior: (behavior) => state().setSelectionBehavior(behavior),\n toggleSelection: (key: Key) => state().toggleSelection(key),\n replaceSelection: (key: Key) => state().replaceSelection(key),\n setSelectedKeys: (keys: Iterable<Key>) => state().setSelectedKeys(keys),\n selectAll: () => state().selectAll(),\n clearSelection: () => state().clearSelection(),\n toggleSelectAll: () => state().toggleSelectAll(),\n extendSelection: (toKey: Key, _collection: Collection<T>) => state().extendSelection(toKey),\n };\n\n const selectableItem = createSelectableItem<T>(\n () => {\n const s = state();\n const p = props();\n const gridListData = getGridListData(s);\n const onAction = gridListData?.actions.onAction;\n\n return {\n key: p.node.key,\n id: `${gridListData?.gridListId ?? \"gridlist\"}-row-${String(p.node.key)}`,\n isVirtualized: p.isVirtualized,\n shouldSelectOnPressUp: gridListData?.shouldSelectOnPressUp ?? false,\n onAction:\n onAction || p.onAction\n ? () => {\n p.onAction?.();\n onAction?.(p.node.key);\n }\n : undefined,\n };\n },\n selectableState,\n ref,\n );\n\n const rowProps = createMemo(() => {\n const s = state();\n const p = props();\n const node = p.node;\n\n const baseProps: Record<string, unknown> = {\n role: \"row\",\n \"aria-selected\": s.selectionMode !== \"none\" ? isSelected() : undefined,\n \"aria-disabled\": selectableItem.isDisabled() || undefined,\n };\n\n // Add aria-rowindex for virtualized lists\n if (p.isVirtualized && node.rowIndex != null) {\n baseProps[\"aria-rowindex\"] = node.rowIndex + 1; // 1-based\n }\n\n const gridListData = getGridListData(s);\n const mergedProps = mergeProps<JSX.HTMLAttributes<HTMLElement>>(\n selectableItem.itemProps,\n baseProps,\n );\n\n return mergeCollectionRowInteractionProps(mergedProps, {\n ref,\n keyboardNavigationBehavior: () => gridListData?.keyboardNavigationBehavior ?? \"arrow\",\n direction: () => gridListData?.direction ?? \"ltr\",\n });\n });\n\n const gridCellProps = createMemo(() => {\n return {\n role: \"gridcell\",\n } as JSX.HTMLAttributes<HTMLDivElement>;\n });\n\n return {\n get rowProps() {\n return rowProps();\n },\n get gridCellProps() {\n return gridCellProps();\n },\n get isSelected() {\n return isSelected();\n },\n get isDisabled() {\n return selectableItem.isDisabled();\n },\n get isPressed() {\n return selectableItem.isPressed();\n },\n };\n}\n","/**\n * createGridListSelectionCheckbox - Provides accessibility for a grid list item selection checkbox.\n * Based on @react-aria/gridlist.\n */\n\nimport { createMemo, type Accessor } from \"solid-js\";\nimport type { JSX } from \"solid-js\";\nimport { createId } from \"@proyecto-viviana/solid-stately\";\nimport type { GridState, GridCollection } from \"@proyecto-viviana/solid-stately\";\nimport type { AriaGridListSelectionCheckboxProps, GridListSelectionCheckboxAria } from \"./types\";\n\n/**\n * Creates accessibility props for a grid list item selection checkbox.\n */\nexport function createGridListSelectionCheckbox<\n T extends object,\n C extends GridCollection<T> = GridCollection<T>,\n>(\n props: Accessor<AriaGridListSelectionCheckboxProps>,\n state: Accessor<GridState<T, C>>,\n): GridListSelectionCheckboxAria {\n const checkboxId = createId();\n\n const isSelected = createMemo(() => {\n const s = state();\n const p = props();\n return s.isSelected(p.key);\n });\n\n const isDisabled = createMemo(() => {\n const s = state();\n const p = props();\n return s.isDisabled(p.key);\n });\n\n const onChange = () => {\n const s = state();\n const p = props();\n if (!isDisabled()) {\n s.toggleSelection(p.key);\n }\n };\n\n const checkboxProps = createMemo(() => {\n const baseProps: Record<string, unknown> = {\n id: checkboxId,\n type: \"checkbox\",\n checked: isSelected(),\n disabled: isDisabled(),\n onChange,\n \"aria-label\": \"Select\",\n };\n\n return baseProps as JSX.InputHTMLAttributes<HTMLInputElement>;\n });\n\n return {\n get checkboxProps() {\n return checkboxProps();\n },\n };\n}\n","/**\n * createGridListSection - Provides accessibility for a grid list section.\n * Based on @react-aria/gridlist/useGridListSection.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId, createSlotId } from \"../ssr\";\nimport { createLabels } from \"../label/createLabels\";\nimport type { AriaGridListSectionProps, GridListSectionAria } from \"./types\";\n\n/**\n * Creates accessibility props for a grid list section.\n *\n * Mirrors upstream `useGridListSection`: a section is a `role=\"rowgroup\"`\n * wrapper whose optional header renders as `role=\"row\"` › `role=\"rowheader\"`.\n * The `aria-labelledby` of the wrapper points at the header's id via a slot id\n * that resolves to `undefined` when no header is rendered.\n */\nexport function createGridListSection(props: AriaGridListSectionProps): GridListSectionAria {\n const headingId = createSlotId();\n // Stable id for the rowgroup so `createLabels` does not regenerate one each\n // time the slot id resolves (it short-circuits on a provided id).\n const rowGroupId = createId();\n\n const labelProps = createMemo(() =>\n createLabels({\n id: rowGroupId,\n \"aria-label\": props[\"aria-label\"],\n \"aria-labelledby\": headingId(),\n }),\n );\n\n return {\n rowProps: { role: \"row\" },\n rowHeaderProps: {\n get id() {\n return headingId();\n },\n role: \"rowheader\",\n },\n rowGroupProps: {\n role: \"rowgroup\",\n get id() {\n return labelProps().id;\n },\n get \"aria-label\"() {\n return labelProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return labelProps()[\"aria-labelledby\"];\n },\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ import { a as createCacheKey, i as useLocale } from "./locale.js";
2
+ import { t as createCollator } from "./createCollator.js";
3
+ import { createMemo } from "solid-js";
4
+ import { NumberFormatter, NumberFormatter as NumberFormatter$1 } from "@internationalized/number";
5
+ //#region src/i18n/createNumberFormatter.ts
6
+ /**
7
+ * createNumberFormatter hook for solidaria
8
+ *
9
+ * Provides localized number formatting with automatic locale updates.
10
+ *
11
+ * Port of @react-aria/i18n useNumberFormatter.
12
+ */
13
+ /**
14
+ * Provides localized number formatting for the current locale.
15
+ * Automatically updates when the locale changes.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * function PriceDisplay(props: { value: number }) {
20
+ * const formatter = createNumberFormatter({
21
+ * style: 'currency',
22
+ * currency: 'USD',
23
+ * });
24
+ *
25
+ * return <span>{formatter().format(props.value)}</span>;
26
+ * }
27
+ * ```
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * // Percent formatting
32
+ * const percentFormatter = createNumberFormatter({
33
+ * style: 'percent',
34
+ * minimumFractionDigits: 1,
35
+ * });
36
+ * percentFormatter().format(0.125); // '12.5%'
37
+ *
38
+ * // Unit formatting
39
+ * const tempFormatter = createNumberFormatter({
40
+ * style: 'unit',
41
+ * unit: 'celsius',
42
+ * });
43
+ * tempFormatter().format(25); // '25°C'
44
+ * ```
45
+ */
46
+ function createNumberFormatter(options = {}) {
47
+ const locale = useLocale();
48
+ return createMemo(() => new NumberFormatter(locale().locale, options));
49
+ }
50
+ //#endregion
51
+ //#region src/i18n/createDateFormatter.ts
52
+ /**
53
+ * createDateFormatter hook for solidaria
54
+ *
55
+ * Provides localized date formatting with caching.
56
+ *
57
+ * Port of @react-aria/i18n useDateFormatter.
58
+ */
59
+ const dateFormatterCache = /* @__PURE__ */ new Map();
60
+ /**
61
+ * Gets or creates a cached date formatter.
62
+ */
63
+ function getCachedDateFormatter(locale, options) {
64
+ const cacheKey = createCacheKey(locale, options);
65
+ if (dateFormatterCache.has(cacheKey)) return dateFormatterCache.get(cacheKey);
66
+ const formatter = new Intl.DateTimeFormat(locale, options);
67
+ dateFormatterCache.set(cacheKey, formatter);
68
+ return formatter;
69
+ }
70
+ /**
71
+ * Provides localized date and time formatting for the current locale.
72
+ * Automatically updates when the locale changes.
73
+ *
74
+ * @example
75
+ * ```tsx
76
+ * function DateDisplay(props: { date: Date }) {
77
+ * const formatter = createDateFormatter({
78
+ * year: 'numeric',
79
+ * month: 'long',
80
+ * day: 'numeric',
81
+ * });
82
+ *
83
+ * return <span>{formatter().format(props.date)}</span>;
84
+ * }
85
+ * ```
86
+ *
87
+ * @example
88
+ * ```tsx
89
+ * // Short date
90
+ * const shortDate = createDateFormatter({ dateStyle: 'short' });
91
+ * shortDate().format(new Date()); // '1/19/26' (US) or '19/01/26' (UK)
92
+ *
93
+ * // Full date with time
94
+ * const fullDateTime = createDateFormatter({
95
+ * dateStyle: 'full',
96
+ * timeStyle: 'short',
97
+ * });
98
+ *
99
+ * // Time only
100
+ * const timeFormatter = createDateFormatter({
101
+ * hour: 'numeric',
102
+ * minute: '2-digit',
103
+ * });
104
+ * ```
105
+ */
106
+ function createDateFormatter(options) {
107
+ const locale = useLocale();
108
+ return createMemo(() => getCachedDateFormatter(locale().locale, options));
109
+ }
110
+ //#endregion
111
+ //#region src/i18n/createFilter.ts
112
+ /**
113
+ * createFilter hook for solidaria
114
+ *
115
+ * Provides localized string filtering with collation support.
116
+ *
117
+ * Port of @react-aria/i18n useFilter.
118
+ */
119
+ /**
120
+ * Provides localized string search functionality for filtering or matching items.
121
+ * Respects locale-specific collation rules for case and diacritic sensitivity.
122
+ *
123
+ * @example
124
+ * ```tsx
125
+ * function SearchableList(props: { items: { name: string }[] }) {
126
+ * const [query, setQuery] = createSignal('');
127
+ * const filter = createFilter({ sensitivity: 'base' });
128
+ *
129
+ * const filteredItems = () =>
130
+ * props.items.filter((item) =>
131
+ * filter().contains(item.name, query())
132
+ * );
133
+ *
134
+ * return (
135
+ * <>
136
+ * <input
137
+ * value={query()}
138
+ * onInput={(e) => setQuery(e.target.value)}
139
+ * placeholder="Search..."
140
+ * />
141
+ * <ul>
142
+ * <For each={filteredItems()}>
143
+ * {(item) => <li>{item.name}</li>}
144
+ * </For>
145
+ * </ul>
146
+ * </>
147
+ * );
148
+ * }
149
+ * ```
150
+ *
151
+ * @example
152
+ * ```tsx
153
+ * // Case-insensitive, diacritic-insensitive filtering
154
+ * const filter = createFilter({ sensitivity: 'base' });
155
+ * filter().contains('Café', 'cafe'); // true
156
+ * filter().startsWith('Hello', 'hello'); // true
157
+ * ```
158
+ */
159
+ function createFilter(options) {
160
+ const collator = createCollator({
161
+ usage: "search",
162
+ ...options
163
+ });
164
+ return createMemo(() => {
165
+ const coll = collator();
166
+ const startsWith = (str, substring) => {
167
+ if (substring.length === 0) return true;
168
+ const normalizedStr = str.normalize("NFC");
169
+ const normalizedSub = substring.normalize("NFC");
170
+ return coll.compare(normalizedStr.slice(0, normalizedSub.length), normalizedSub) === 0;
171
+ };
172
+ const endsWith = (str, substring) => {
173
+ if (substring.length === 0) return true;
174
+ const normalizedStr = str.normalize("NFC");
175
+ const normalizedSub = substring.normalize("NFC");
176
+ return coll.compare(normalizedStr.slice(-normalizedSub.length), normalizedSub) === 0;
177
+ };
178
+ const contains = (str, substring) => {
179
+ if (substring.length === 0) return true;
180
+ const normalizedStr = str.normalize("NFC");
181
+ const normalizedSub = substring.normalize("NFC");
182
+ const sliceLen = normalizedSub.length;
183
+ for (let scan = 0; scan + sliceLen <= normalizedStr.length; scan++) {
184
+ const slice = normalizedStr.slice(scan, scan + sliceLen);
185
+ if (coll.compare(normalizedSub, slice) === 0) return true;
186
+ }
187
+ return false;
188
+ };
189
+ return {
190
+ startsWith,
191
+ endsWith,
192
+ contains
193
+ };
194
+ });
195
+ }
196
+ //#endregion
197
+ export { createNumberFormatter as i, createFilter as n, createDateFormatter as r, NumberFormatter$1 as t };
198
+
199
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","names":[],"sources":["../../src/i18n/createNumberFormatter.ts","../../src/i18n/createDateFormatter.ts","../../src/i18n/createFilter.ts"],"sourcesContent":["/**\n * createNumberFormatter hook for solidaria\n *\n * Provides localized number formatting with automatic locale updates.\n *\n * Port of @react-aria/i18n useNumberFormatter.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { useLocale } from \"./locale\";\nimport { NumberFormatter, type NumberFormatOptions } from \"@internationalized/number\";\n\n/**\n * Provides localized number formatting for the current locale.\n * Automatically updates when the locale changes.\n *\n * @example\n * ```tsx\n * function PriceDisplay(props: { value: number }) {\n * const formatter = createNumberFormatter({\n * style: 'currency',\n * currency: 'USD',\n * });\n *\n * return <span>{formatter().format(props.value)}</span>;\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Percent formatting\n * const percentFormatter = createNumberFormatter({\n * style: 'percent',\n * minimumFractionDigits: 1,\n * });\n * percentFormatter().format(0.125); // '12.5%'\n *\n * // Unit formatting\n * const tempFormatter = createNumberFormatter({\n * style: 'unit',\n * unit: 'celsius',\n * });\n * tempFormatter().format(25); // '25°C'\n * ```\n */\nexport function createNumberFormatter(options: NumberFormatOptions = {}): () => NumberFormatter {\n const locale = useLocale();\n\n return createMemo(() => new NumberFormatter(locale().locale, options));\n}\n","/**\n * createDateFormatter hook for solidaria\n *\n * Provides localized date formatting with caching.\n *\n * Port of @react-aria/i18n useDateFormatter.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { useLocale } from \"./locale\";\nimport { createCacheKey } from \"./utils\";\n\nconst dateFormatterCache = new Map<string, Intl.DateTimeFormat>();\n\n/**\n * Gets or creates a cached date formatter.\n */\nfunction getCachedDateFormatter(\n locale: string,\n options?: Intl.DateTimeFormatOptions,\n): Intl.DateTimeFormat {\n const cacheKey = createCacheKey(locale, options as Record<string, unknown>);\n\n if (dateFormatterCache.has(cacheKey)) {\n return dateFormatterCache.get(cacheKey)!;\n }\n\n const formatter = new Intl.DateTimeFormat(locale, options);\n dateFormatterCache.set(cacheKey, formatter);\n return formatter;\n}\n\n/**\n * Provides localized date and time formatting for the current locale.\n * Automatically updates when the locale changes.\n *\n * @example\n * ```tsx\n * function DateDisplay(props: { date: Date }) {\n * const formatter = createDateFormatter({\n * year: 'numeric',\n * month: 'long',\n * day: 'numeric',\n * });\n *\n * return <span>{formatter().format(props.date)}</span>;\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Short date\n * const shortDate = createDateFormatter({ dateStyle: 'short' });\n * shortDate().format(new Date()); // '1/19/26' (US) or '19/01/26' (UK)\n *\n * // Full date with time\n * const fullDateTime = createDateFormatter({\n * dateStyle: 'full',\n * timeStyle: 'short',\n * });\n *\n * // Time only\n * const timeFormatter = createDateFormatter({\n * hour: 'numeric',\n * minute: '2-digit',\n * });\n * ```\n */\nexport function createDateFormatter(\n options?: Intl.DateTimeFormatOptions,\n): () => Intl.DateTimeFormat {\n const locale = useLocale();\n\n return createMemo(() => getCachedDateFormatter(locale().locale, options));\n}\n","/**\n * createFilter hook for solidaria\n *\n * Provides localized string filtering with collation support.\n *\n * Port of @react-aria/i18n useFilter.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createCollator } from \"./createCollator\";\n\nexport interface Filter {\n /** Returns whether a string starts with a given substring. */\n startsWith(string: string, substring: string): boolean;\n /** Returns whether a string ends with a given substring. */\n endsWith(string: string, substring: string): boolean;\n /** Returns whether a string contains a given substring. */\n contains(string: string, substring: string): boolean;\n}\n\n/**\n * Provides localized string search functionality for filtering or matching items.\n * Respects locale-specific collation rules for case and diacritic sensitivity.\n *\n * @example\n * ```tsx\n * function SearchableList(props: { items: { name: string }[] }) {\n * const [query, setQuery] = createSignal('');\n * const filter = createFilter({ sensitivity: 'base' });\n *\n * const filteredItems = () =>\n * props.items.filter((item) =>\n * filter().contains(item.name, query())\n * );\n *\n * return (\n * <>\n * <input\n * value={query()}\n * onInput={(e) => setQuery(e.target.value)}\n * placeholder=\"Search...\"\n * />\n * <ul>\n * <For each={filteredItems()}>\n * {(item) => <li>{item.name}</li>}\n * </For>\n * </ul>\n * </>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Case-insensitive, diacritic-insensitive filtering\n * const filter = createFilter({ sensitivity: 'base' });\n * filter().contains('Café', 'cafe'); // true\n * filter().startsWith('Hello', 'hello'); // true\n * ```\n */\nexport function createFilter(options?: Intl.CollatorOptions): () => Filter {\n const collator = createCollator({\n usage: \"search\",\n ...options,\n });\n\n return createMemo(() => {\n const coll = collator();\n\n const startsWith = (str: string, substring: string): boolean => {\n if (substring.length === 0) {\n return true;\n }\n\n // Normalize both strings for safe slicing\n const normalizedStr = str.normalize(\"NFC\");\n const normalizedSub = substring.normalize(\"NFC\");\n\n return coll.compare(normalizedStr.slice(0, normalizedSub.length), normalizedSub) === 0;\n };\n\n const endsWith = (str: string, substring: string): boolean => {\n if (substring.length === 0) {\n return true;\n }\n\n const normalizedStr = str.normalize(\"NFC\");\n const normalizedSub = substring.normalize(\"NFC\");\n\n return coll.compare(normalizedStr.slice(-normalizedSub.length), normalizedSub) === 0;\n };\n\n const contains = (str: string, substring: string): boolean => {\n if (substring.length === 0) {\n return true;\n }\n\n const normalizedStr = str.normalize(\"NFC\");\n const normalizedSub = substring.normalize(\"NFC\");\n const sliceLen = normalizedSub.length;\n\n for (let scan = 0; scan + sliceLen <= normalizedStr.length; scan++) {\n const slice = normalizedStr.slice(scan, scan + sliceLen);\n if (coll.compare(normalizedSub, slice) === 0) {\n return true;\n }\n }\n\n return false;\n };\n\n return {\n startsWith,\n endsWith,\n contains,\n };\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,SAAgB,sBAAsB,UAA+B,CAAC,GAA0B;CAC9F,MAAM,SAAS,UAAU;CAEzB,OAAO,iBAAiB,IAAI,gBAAgB,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC;AACvE;;;;;;;;;;ACrCA,MAAM,qCAAqB,IAAI,IAAiC;;;;AAKhE,SAAS,uBACP,QACA,SACqB;CACrB,MAAM,WAAW,eAAe,QAAQ,OAAkC;CAE1E,IAAI,mBAAmB,IAAI,QAAQ,GACjC,OAAO,mBAAmB,IAAI,QAAQ;CAGxC,MAAM,YAAY,IAAI,KAAK,eAAe,QAAQ,OAAO;CACzD,mBAAmB,IAAI,UAAU,SAAS;CAC1C,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,oBACd,SAC2B;CAC3B,MAAM,SAAS,UAAU;CAEzB,OAAO,iBAAiB,uBAAuB,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC;AAC1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA,SAAgB,aAAa,SAA8C;CACzE,MAAM,WAAW,eAAe;EAC9B,OAAO;EACP,GAAG;CACL,CAAC;CAED,OAAO,iBAAiB;EACtB,MAAM,OAAO,SAAS;EAEtB,MAAM,cAAc,KAAa,cAA+B;GAC9D,IAAI,UAAU,WAAW,GACvB,OAAO;GAIT,MAAM,gBAAgB,IAAI,UAAU,KAAK;GACzC,MAAM,gBAAgB,UAAU,UAAU,KAAK;GAE/C,OAAO,KAAK,QAAQ,cAAc,MAAM,GAAG,cAAc,MAAM,GAAG,aAAa,MAAM;EACvF;EAEA,MAAM,YAAY,KAAa,cAA+B;GAC5D,IAAI,UAAU,WAAW,GACvB,OAAO;GAGT,MAAM,gBAAgB,IAAI,UAAU,KAAK;GACzC,MAAM,gBAAgB,UAAU,UAAU,KAAK;GAE/C,OAAO,KAAK,QAAQ,cAAc,MAAM,CAAC,cAAc,MAAM,GAAG,aAAa,MAAM;EACrF;EAEA,MAAM,YAAY,KAAa,cAA+B;GAC5D,IAAI,UAAU,WAAW,GACvB,OAAO;GAGT,MAAM,gBAAgB,IAAI,UAAU,KAAK;GACzC,MAAM,gBAAgB,UAAU,UAAU,KAAK;GAC/C,MAAM,WAAW,cAAc;GAE/B,KAAK,IAAI,OAAO,GAAG,OAAO,YAAY,cAAc,QAAQ,QAAQ;IAClE,MAAM,QAAQ,cAAc,MAAM,MAAM,OAAO,QAAQ;IACvD,IAAI,KAAK,QAAQ,eAAe,KAAK,MAAM,GACzC,OAAO;GAEX;GAEA,OAAO;EACT;EAEA,OAAO;GACL;GACA;GACA;EACF;CACF,CAAC;AACH"}