@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,39 @@
1
+ import { createEffect, onCleanup } from "solid-js";
2
+ //#region src/form/createFormReset.ts
3
+ /**
4
+ * createFormReset - Handles form reset events for form fields.
5
+ *
6
+ * Resets the field value to its default when the containing form is reset.
7
+ * Port of @react-aria/utils useFormReset.
8
+ */
9
+ /**
10
+ * Listens for form reset events and resets the field value to its default.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * createFormReset(
15
+ * () => inputRef,
16
+ * { label: 'Default' },
17
+ * (value) => state.setSelectedKey(value.key)
18
+ * );
19
+ * ```
20
+ */
21
+ function createFormReset(ref, defaultValue, onReset) {
22
+ createEffect(() => {
23
+ const element = ref();
24
+ if (!element) return;
25
+ const form = element.form;
26
+ if (!form) return;
27
+ const handleReset = () => {
28
+ onReset(defaultValue);
29
+ };
30
+ form.addEventListener("reset", handleReset);
31
+ onCleanup(() => {
32
+ form.removeEventListener("reset", handleReset);
33
+ });
34
+ });
35
+ }
36
+ //#endregion
37
+ export { createFormReset as t };
38
+
39
+ //# sourceMappingURL=createFormReset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFormReset.js","names":[],"sources":["../../src/form/createFormReset.ts"],"sourcesContent":["/**\n * createFormReset - Handles form reset events for form fields.\n *\n * Resets the field value to its default when the containing form is reset.\n * Port of @react-aria/utils useFormReset.\n */\n\nimport { type Accessor, createEffect, onCleanup } from \"solid-js\";\n\nexport interface FormResetOptions<T> {\n /** The default value to reset to. */\n defaultValue: T;\n /** Function to set the current value. */\n onReset: (value: T) => void;\n}\n\n/**\n * Listens for form reset events and resets the field value to its default.\n *\n * @example\n * ```tsx\n * createFormReset(\n * () => inputRef,\n * { label: 'Default' },\n * (value) => state.setSelectedKey(value.key)\n * );\n * ```\n */\nexport function createFormReset<T>(\n ref: Accessor<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | undefined>,\n defaultValue: T,\n onReset: (value: T) => void,\n): void {\n createEffect(() => {\n const element = ref();\n if (!element) return;\n\n const form = element.form;\n if (!form) return;\n\n const handleReset = () => {\n onReset(defaultValue);\n };\n\n form.addEventListener(\"reset\", handleReset);\n\n onCleanup(() => {\n form.removeEventListener(\"reset\", handleReset);\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,gBACd,KACA,cACA,SACM;CACN,mBAAmB;EACjB,MAAM,UAAU,IAAI;EACpB,IAAI,CAAC,SAAS;EAEd,MAAM,OAAO,QAAQ;EACrB,IAAI,CAAC,MAAM;EAEX,MAAM,oBAAoB;GACxB,QAAQ,YAAY;EACtB;EAEA,KAAK,iBAAiB,SAAS,WAAW;EAE1C,gBAAgB;GACd,KAAK,oBAAoB,SAAS,WAAW;EAC/C,CAAC;CACH,CAAC;AACH"}
@@ -0,0 +1,39 @@
1
+ import { createEffect, onCleanup } from "solid-js";
2
+ //#region src/form/createFormReset.ts
3
+ /**
4
+ * createFormReset - Handles form reset events for form fields.
5
+ *
6
+ * Resets the field value to its default when the containing form is reset.
7
+ * Port of @react-aria/utils useFormReset.
8
+ */
9
+ /**
10
+ * Listens for form reset events and resets the field value to its default.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * createFormReset(
15
+ * () => inputRef,
16
+ * { label: 'Default' },
17
+ * (value) => state.setSelectedKey(value.key)
18
+ * );
19
+ * ```
20
+ */
21
+ function createFormReset(ref, defaultValue, onReset) {
22
+ createEffect(() => {
23
+ const element = ref();
24
+ if (!element) return;
25
+ const form = element.form;
26
+ if (!form) return;
27
+ const handleReset = () => {
28
+ onReset(defaultValue);
29
+ };
30
+ form.addEventListener("reset", handleReset);
31
+ onCleanup(() => {
32
+ form.removeEventListener("reset", handleReset);
33
+ });
34
+ });
35
+ }
36
+ //#endregion
37
+ export { createFormReset as t };
38
+
39
+ //# sourceMappingURL=createFormReset.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFormReset.jsx","names":[],"sources":["../../src/form/createFormReset.ts"],"sourcesContent":["/**\n * createFormReset - Handles form reset events for form fields.\n *\n * Resets the field value to its default when the containing form is reset.\n * Port of @react-aria/utils useFormReset.\n */\n\nimport { type Accessor, createEffect, onCleanup } from \"solid-js\";\n\nexport interface FormResetOptions<T> {\n /** The default value to reset to. */\n defaultValue: T;\n /** Function to set the current value. */\n onReset: (value: T) => void;\n}\n\n/**\n * Listens for form reset events and resets the field value to its default.\n *\n * @example\n * ```tsx\n * createFormReset(\n * () => inputRef,\n * { label: 'Default' },\n * (value) => state.setSelectedKey(value.key)\n * );\n * ```\n */\nexport function createFormReset<T>(\n ref: Accessor<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | undefined>,\n defaultValue: T,\n onReset: (value: T) => void,\n): void {\n createEffect(() => {\n const element = ref();\n if (!element) return;\n\n const form = element.form;\n if (!form) return;\n\n const handleReset = () => {\n onReset(defaultValue);\n };\n\n form.addEventListener(\"reset\", handleReset);\n\n onCleanup(() => {\n form.removeEventListener(\"reset\", handleReset);\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,gBACd,KACA,cACA,SACM;CACN,mBAAmB;EACjB,MAAM,UAAU,IAAI;EACpB,IAAI,CAAC,SAAS;EAEd,MAAM,OAAO,QAAQ;EACrB,IAAI,CAAC,MAAM;EAEX,MAAM,oBAAoB;GACxB,QAAQ,YAAY;EACtB;EAEA,KAAK,iBAAiB,SAAS,WAAW;EAE1C,gBAAgB;GACd,KAAK,oBAAoB,SAAS,WAAW;EAC/C,CAAC;CACH,CAAC;AACH"}
@@ -0,0 +1,135 @@
1
+ import { l as setInteractionModality } from "./createInteractionModality.js";
2
+ import { createEffect, onCleanup } from "solid-js";
3
+ //#region src/form/createFormValidation.ts
4
+ /**
5
+ * createFormValidation hook for solidaria
6
+ *
7
+ * Connects form validation state to native HTML form validation.
8
+ * Handles the invalid event, form reset, and focus management.
9
+ *
10
+ * Port of react-aria's useFormValidation.
11
+ */
12
+ function getValidity(input) {
13
+ const validity = input.validity;
14
+ return {
15
+ badInput: validity.badInput,
16
+ customError: validity.customError,
17
+ patternMismatch: validity.patternMismatch,
18
+ rangeOverflow: validity.rangeOverflow,
19
+ rangeUnderflow: validity.rangeUnderflow,
20
+ stepMismatch: validity.stepMismatch,
21
+ tooLong: validity.tooLong,
22
+ tooShort: validity.tooShort,
23
+ typeMismatch: validity.typeMismatch,
24
+ valueMissing: validity.valueMissing,
25
+ valid: validity.valid
26
+ };
27
+ }
28
+ function getNativeValidity(input) {
29
+ return {
30
+ isInvalid: !input.validity.valid,
31
+ validationDetails: getValidity(input),
32
+ validationErrors: input.validationMessage ? [input.validationMessage] : []
33
+ };
34
+ }
35
+ function getFirstInvalidInput(form) {
36
+ for (let i = 0; i < form.elements.length; i++) {
37
+ const element = form.elements[i];
38
+ if (!element.validity.valid) return element;
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Connects form validation state to a native HTML form input.
44
+ *
45
+ * This hook:
46
+ * - Sets custom validity on the native input based on validation state
47
+ * - Handles the 'invalid' event to commit validation and focus the first invalid input
48
+ * - Handles form reset to clear validation state
49
+ * - Handles input change to commit validation
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * function MyTextField(props) {
54
+ * let inputRef: HTMLInputElement | undefined;
55
+ *
56
+ * const validationState = createFormValidationState({
57
+ * value: props.value,
58
+ * validate: props.validate,
59
+ * validationBehavior: 'native',
60
+ * });
61
+ *
62
+ * createFormValidation(
63
+ * { validationBehavior: 'native' },
64
+ * validationState,
65
+ * () => inputRef
66
+ * );
67
+ *
68
+ * return (
69
+ * <input
70
+ * ref={inputRef}
71
+ * value={props.value}
72
+ * aria-invalid={validationState.displayValidation().isInvalid || undefined}
73
+ * />
74
+ * );
75
+ * }
76
+ * ```
77
+ */
78
+ function createFormValidation(props, state, ref) {
79
+ const validationBehavior = () => props.validationBehavior ?? "aria";
80
+ const focus = () => props.focus;
81
+ let isIgnoredReset = false;
82
+ createEffect(() => {
83
+ const input = ref();
84
+ if (validationBehavior() === "native" && input && "setCustomValidity" in input && !input.disabled) {
85
+ const realtimeValidation = state.realtimeValidation();
86
+ const errorMessage = realtimeValidation.isInvalid ? realtimeValidation.validationErrors.join(" ") || "Invalid value." : "";
87
+ input.setCustomValidity(errorMessage);
88
+ if (!input.hasAttribute("title")) input.title = "";
89
+ if (!realtimeValidation.isInvalid) state.updateValidation(getNativeValidity(input));
90
+ }
91
+ });
92
+ createEffect(() => {
93
+ const input = ref();
94
+ if (!input) return;
95
+ const form = input.form;
96
+ const onInvalid = (e) => {
97
+ if (!state.displayValidation().isInvalid) state.commitValidation();
98
+ if (!e.defaultPrevented && form && getFirstInvalidInput(form) === input) {
99
+ const focusFn = focus();
100
+ if (focusFn) focusFn();
101
+ else input.focus();
102
+ setInteractionModality("keyboard");
103
+ }
104
+ e.preventDefault();
105
+ };
106
+ const onChange = () => {
107
+ state.commitValidation();
108
+ };
109
+ const onReset = () => {
110
+ if (!isIgnoredReset) state.resetValidation();
111
+ };
112
+ let originalReset;
113
+ if (form) {
114
+ originalReset = form.reset.bind(form);
115
+ form.reset = () => {
116
+ isIgnoredReset = !window.event || window.event.type === "message" && window.event.target instanceof MessagePort;
117
+ originalReset?.();
118
+ isIgnoredReset = false;
119
+ };
120
+ }
121
+ input.addEventListener("invalid", onInvalid);
122
+ input.addEventListener("change", onChange);
123
+ form?.addEventListener("reset", onReset);
124
+ onCleanup(() => {
125
+ input.removeEventListener("invalid", onInvalid);
126
+ input.removeEventListener("change", onChange);
127
+ form?.removeEventListener("reset", onReset);
128
+ if (form && originalReset) form.reset = originalReset;
129
+ });
130
+ });
131
+ }
132
+ //#endregion
133
+ export { createFormValidation as t };
134
+
135
+ //# sourceMappingURL=createFormValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFormValidation.js","names":[],"sources":["../../src/form/createFormValidation.ts"],"sourcesContent":["/**\n * createFormValidation hook for solidaria\n *\n * Connects form validation state to native HTML form validation.\n * Handles the invalid event, form reset, and focus management.\n *\n * Port of react-aria's useFormValidation.\n */\n\nimport { type Accessor, createEffect, onCleanup } from \"solid-js\";\nimport { type FormValidationState, type ValidationResult } from \"@proyecto-viviana/solid-stately\";\nimport { setInteractionModality } from \"../interactions/createInteractionModality\";\n\nexport type ValidatableElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\nexport type ValidationBehavior = \"aria\" | \"native\";\n\nexport interface FormValidationProps {\n /** Validation behavior: 'aria' for realtime, 'native' for on submit. */\n validationBehavior?: ValidationBehavior;\n /** Custom focus function to call on validation error. */\n focus?: () => void;\n}\n\nfunction getValidity(input: ValidatableElement): ValidityState {\n // Create a snapshot of the validity state (the native object is live)\n const validity = input.validity;\n return {\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n valid: validity.valid,\n };\n}\n\nfunction getNativeValidity(input: ValidatableElement): ValidationResult {\n return {\n isInvalid: !input.validity.valid,\n validationDetails: getValidity(input),\n validationErrors: input.validationMessage ? [input.validationMessage] : [],\n };\n}\n\nfunction getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null {\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i] as ValidatableElement;\n if (!element.validity.valid) {\n return element;\n }\n }\n return null;\n}\n\n/**\n * Connects form validation state to a native HTML form input.\n *\n * This hook:\n * - Sets custom validity on the native input based on validation state\n * - Handles the 'invalid' event to commit validation and focus the first invalid input\n * - Handles form reset to clear validation state\n * - Handles input change to commit validation\n *\n * @example\n * ```tsx\n * function MyTextField(props) {\n * let inputRef: HTMLInputElement | undefined;\n *\n * const validationState = createFormValidationState({\n * value: props.value,\n * validate: props.validate,\n * validationBehavior: 'native',\n * });\n *\n * createFormValidation(\n * { validationBehavior: 'native' },\n * validationState,\n * () => inputRef\n * );\n *\n * return (\n * <input\n * ref={inputRef}\n * value={props.value}\n * aria-invalid={validationState.displayValidation().isInvalid || undefined}\n * />\n * );\n * }\n * ```\n */\nexport function createFormValidation(\n props: FormValidationProps,\n state: FormValidationState,\n ref: Accessor<ValidatableElement | undefined>,\n): void {\n const validationBehavior = () => props.validationBehavior ?? \"aria\";\n const focus = () => props.focus;\n\n // Track whether we should ignore form reset (for React-like programmatic resets)\n let isIgnoredReset = false;\n\n // Set custom validity on the native input\n createEffect(() => {\n const input = ref();\n // `'setCustomValidity' in input` guards refs that aren't true form elements\n // (e.g. a custom element), matching upstream useFormValidation.\n if (\n validationBehavior() === \"native\" &&\n input &&\n \"setCustomValidity\" in input &&\n !input.disabled\n ) {\n const realtimeValidation = state.realtimeValidation();\n const errorMessage = realtimeValidation.isInvalid\n ? realtimeValidation.validationErrors.join(\" \") || \"Invalid value.\"\n : \"\";\n input.setCustomValidity(errorMessage);\n\n // Prevent default tooltip for validation message\n if (!input.hasAttribute(\"title\")) {\n input.title = \"\";\n }\n\n // Update validation with native validity if not already invalid\n if (!realtimeValidation.isInvalid) {\n state.updateValidation(getNativeValidity(input));\n }\n }\n });\n\n // Set up event listeners\n createEffect(() => {\n const input = ref();\n if (!input) {\n return;\n }\n\n const form = input.form;\n\n // Handle invalid event\n const onInvalid = (e: Event) => {\n // Only commit validation if we are not already displaying one\n if (!state.displayValidation().isInvalid) {\n state.commitValidation();\n }\n\n // Auto focus the first invalid input in a form\n if (!e.defaultPrevented && form && getFirstInvalidInput(form) === input) {\n const focusFn = focus();\n if (focusFn) {\n focusFn();\n } else {\n input.focus();\n }\n // Always show focus ring\n setInteractionModality(\"keyboard\");\n }\n\n // Prevent default browser error UI\n e.preventDefault();\n };\n\n // Handle change event\n const onChange = () => {\n state.commitValidation();\n };\n\n // Handle form reset\n const onReset = () => {\n if (!isIgnoredReset) {\n state.resetValidation();\n }\n };\n\n // Patch form.reset to detect programmatic resets\n let originalReset: (() => void) | undefined;\n if (form) {\n originalReset = form.reset.bind(form);\n form.reset = () => {\n // Ignore programmatic resets outside user events\n isIgnoredReset =\n !window.event ||\n (window.event.type === \"message\" && window.event.target instanceof MessagePort);\n originalReset?.();\n isIgnoredReset = false;\n };\n }\n\n input.addEventListener(\"invalid\", onInvalid);\n input.addEventListener(\"change\", onChange);\n form?.addEventListener(\"reset\", onReset);\n\n onCleanup(() => {\n input.removeEventListener(\"invalid\", onInvalid);\n input.removeEventListener(\"change\", onChange);\n form?.removeEventListener(\"reset\", onReset);\n if (form && originalReset) {\n form.reset = originalReset;\n }\n });\n });\n}\n"],"mappings":";;;;;;;;;;;AAwBA,SAAS,YAAY,OAA0C;CAE7D,MAAM,WAAW,MAAM;CACvB,OAAO;EACL,UAAU,SAAS;EACnB,aAAa,SAAS;EACtB,iBAAiB,SAAS;EAC1B,eAAe,SAAS;EACxB,gBAAgB,SAAS;EACzB,cAAc,SAAS;EACvB,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,cAAc,SAAS;EACvB,cAAc,SAAS;EACvB,OAAO,SAAS;CAClB;AACF;AAEA,SAAS,kBAAkB,OAA6C;CACtE,OAAO;EACL,WAAW,CAAC,MAAM,SAAS;EAC3B,mBAAmB,YAAY,KAAK;EACpC,kBAAkB,MAAM,oBAAoB,CAAC,MAAM,iBAAiB,IAAI,CAAC;CAC3E;AACF;AAEA,SAAS,qBAAqB,MAAkD;CAC9E,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAK;EAC7C,MAAM,UAAU,KAAK,SAAS;EAC9B,IAAI,CAAC,QAAQ,SAAS,OACpB,OAAO;CAEX;CACA,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,qBACd,OACA,OACA,KACM;CACN,MAAM,2BAA2B,MAAM,sBAAsB;CAC7D,MAAM,cAAc,MAAM;CAG1B,IAAI,iBAAiB;CAGrB,mBAAmB;EACjB,MAAM,QAAQ,IAAI;EAGlB,IACE,mBAAmB,MAAM,YACzB,SACA,uBAAuB,SACvB,CAAC,MAAM,UACP;GACA,MAAM,qBAAqB,MAAM,mBAAmB;GACpD,MAAM,eAAe,mBAAmB,YACpC,mBAAmB,iBAAiB,KAAK,GAAG,KAAK,mBACjD;GACJ,MAAM,kBAAkB,YAAY;GAGpC,IAAI,CAAC,MAAM,aAAa,OAAO,GAC7B,MAAM,QAAQ;GAIhB,IAAI,CAAC,mBAAmB,WACtB,MAAM,iBAAiB,kBAAkB,KAAK,CAAC;EAEnD;CACF,CAAC;CAGD,mBAAmB;EACjB,MAAM,QAAQ,IAAI;EAClB,IAAI,CAAC,OACH;EAGF,MAAM,OAAO,MAAM;EAGnB,MAAM,aAAa,MAAa;GAE9B,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC,WAC7B,MAAM,iBAAiB;GAIzB,IAAI,CAAC,EAAE,oBAAoB,QAAQ,qBAAqB,IAAI,MAAM,OAAO;IACvE,MAAM,UAAU,MAAM;IACtB,IAAI,SACF,QAAQ;SAER,MAAM,MAAM;IAGd,uBAAuB,UAAU;GACnC;GAGA,EAAE,eAAe;EACnB;EAGA,MAAM,iBAAiB;GACrB,MAAM,iBAAiB;EACzB;EAGA,MAAM,gBAAgB;GACpB,IAAI,CAAC,gBACH,MAAM,gBAAgB;EAE1B;EAGA,IAAI;EACJ,IAAI,MAAM;GACR,gBAAgB,KAAK,MAAM,KAAK,IAAI;GACpC,KAAK,cAAc;IAEjB,iBACE,CAAC,OAAO,SACP,OAAO,MAAM,SAAS,aAAa,OAAO,MAAM,kBAAkB;IACrE,gBAAgB;IAChB,iBAAiB;GACnB;EACF;EAEA,MAAM,iBAAiB,WAAW,SAAS;EAC3C,MAAM,iBAAiB,UAAU,QAAQ;EACzC,MAAM,iBAAiB,SAAS,OAAO;EAEvC,gBAAgB;GACd,MAAM,oBAAoB,WAAW,SAAS;GAC9C,MAAM,oBAAoB,UAAU,QAAQ;GAC5C,MAAM,oBAAoB,SAAS,OAAO;GAC1C,IAAI,QAAQ,eACV,KAAK,QAAQ;EAEjB,CAAC;CACH,CAAC;AACH"}
@@ -0,0 +1,135 @@
1
+ import { l as setInteractionModality } from "./createInteractionModality.jsx";
2
+ import { createEffect, onCleanup } from "solid-js";
3
+ //#region src/form/createFormValidation.ts
4
+ /**
5
+ * createFormValidation hook for solidaria
6
+ *
7
+ * Connects form validation state to native HTML form validation.
8
+ * Handles the invalid event, form reset, and focus management.
9
+ *
10
+ * Port of react-aria's useFormValidation.
11
+ */
12
+ function getValidity(input) {
13
+ const validity = input.validity;
14
+ return {
15
+ badInput: validity.badInput,
16
+ customError: validity.customError,
17
+ patternMismatch: validity.patternMismatch,
18
+ rangeOverflow: validity.rangeOverflow,
19
+ rangeUnderflow: validity.rangeUnderflow,
20
+ stepMismatch: validity.stepMismatch,
21
+ tooLong: validity.tooLong,
22
+ tooShort: validity.tooShort,
23
+ typeMismatch: validity.typeMismatch,
24
+ valueMissing: validity.valueMissing,
25
+ valid: validity.valid
26
+ };
27
+ }
28
+ function getNativeValidity(input) {
29
+ return {
30
+ isInvalid: !input.validity.valid,
31
+ validationDetails: getValidity(input),
32
+ validationErrors: input.validationMessage ? [input.validationMessage] : []
33
+ };
34
+ }
35
+ function getFirstInvalidInput(form) {
36
+ for (let i = 0; i < form.elements.length; i++) {
37
+ const element = form.elements[i];
38
+ if (!element.validity.valid) return element;
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Connects form validation state to a native HTML form input.
44
+ *
45
+ * This hook:
46
+ * - Sets custom validity on the native input based on validation state
47
+ * - Handles the 'invalid' event to commit validation and focus the first invalid input
48
+ * - Handles form reset to clear validation state
49
+ * - Handles input change to commit validation
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * function MyTextField(props) {
54
+ * let inputRef: HTMLInputElement | undefined;
55
+ *
56
+ * const validationState = createFormValidationState({
57
+ * value: props.value,
58
+ * validate: props.validate,
59
+ * validationBehavior: 'native',
60
+ * });
61
+ *
62
+ * createFormValidation(
63
+ * { validationBehavior: 'native' },
64
+ * validationState,
65
+ * () => inputRef
66
+ * );
67
+ *
68
+ * return (
69
+ * <input
70
+ * ref={inputRef}
71
+ * value={props.value}
72
+ * aria-invalid={validationState.displayValidation().isInvalid || undefined}
73
+ * />
74
+ * );
75
+ * }
76
+ * ```
77
+ */
78
+ function createFormValidation(props, state, ref) {
79
+ const validationBehavior = () => props.validationBehavior ?? "aria";
80
+ const focus = () => props.focus;
81
+ let isIgnoredReset = false;
82
+ createEffect(() => {
83
+ const input = ref();
84
+ if (validationBehavior() === "native" && input && "setCustomValidity" in input && !input.disabled) {
85
+ const realtimeValidation = state.realtimeValidation();
86
+ const errorMessage = realtimeValidation.isInvalid ? realtimeValidation.validationErrors.join(" ") || "Invalid value." : "";
87
+ input.setCustomValidity(errorMessage);
88
+ if (!input.hasAttribute("title")) input.title = "";
89
+ if (!realtimeValidation.isInvalid) state.updateValidation(getNativeValidity(input));
90
+ }
91
+ });
92
+ createEffect(() => {
93
+ const input = ref();
94
+ if (!input) return;
95
+ const form = input.form;
96
+ const onInvalid = (e) => {
97
+ if (!state.displayValidation().isInvalid) state.commitValidation();
98
+ if (!e.defaultPrevented && form && getFirstInvalidInput(form) === input) {
99
+ const focusFn = focus();
100
+ if (focusFn) focusFn();
101
+ else input.focus();
102
+ setInteractionModality("keyboard");
103
+ }
104
+ e.preventDefault();
105
+ };
106
+ const onChange = () => {
107
+ state.commitValidation();
108
+ };
109
+ const onReset = () => {
110
+ if (!isIgnoredReset) state.resetValidation();
111
+ };
112
+ let originalReset;
113
+ if (form) {
114
+ originalReset = form.reset.bind(form);
115
+ form.reset = () => {
116
+ isIgnoredReset = !window.event || window.event.type === "message" && window.event.target instanceof MessagePort;
117
+ originalReset?.();
118
+ isIgnoredReset = false;
119
+ };
120
+ }
121
+ input.addEventListener("invalid", onInvalid);
122
+ input.addEventListener("change", onChange);
123
+ form?.addEventListener("reset", onReset);
124
+ onCleanup(() => {
125
+ input.removeEventListener("invalid", onInvalid);
126
+ input.removeEventListener("change", onChange);
127
+ form?.removeEventListener("reset", onReset);
128
+ if (form && originalReset) form.reset = originalReset;
129
+ });
130
+ });
131
+ }
132
+ //#endregion
133
+ export { createFormValidation as t };
134
+
135
+ //# sourceMappingURL=createFormValidation.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFormValidation.jsx","names":[],"sources":["../../src/form/createFormValidation.ts"],"sourcesContent":["/**\n * createFormValidation hook for solidaria\n *\n * Connects form validation state to native HTML form validation.\n * Handles the invalid event, form reset, and focus management.\n *\n * Port of react-aria's useFormValidation.\n */\n\nimport { type Accessor, createEffect, onCleanup } from \"solid-js\";\nimport { type FormValidationState, type ValidationResult } from \"@proyecto-viviana/solid-stately\";\nimport { setInteractionModality } from \"../interactions/createInteractionModality\";\n\nexport type ValidatableElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\nexport type ValidationBehavior = \"aria\" | \"native\";\n\nexport interface FormValidationProps {\n /** Validation behavior: 'aria' for realtime, 'native' for on submit. */\n validationBehavior?: ValidationBehavior;\n /** Custom focus function to call on validation error. */\n focus?: () => void;\n}\n\nfunction getValidity(input: ValidatableElement): ValidityState {\n // Create a snapshot of the validity state (the native object is live)\n const validity = input.validity;\n return {\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n valid: validity.valid,\n };\n}\n\nfunction getNativeValidity(input: ValidatableElement): ValidationResult {\n return {\n isInvalid: !input.validity.valid,\n validationDetails: getValidity(input),\n validationErrors: input.validationMessage ? [input.validationMessage] : [],\n };\n}\n\nfunction getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null {\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i] as ValidatableElement;\n if (!element.validity.valid) {\n return element;\n }\n }\n return null;\n}\n\n/**\n * Connects form validation state to a native HTML form input.\n *\n * This hook:\n * - Sets custom validity on the native input based on validation state\n * - Handles the 'invalid' event to commit validation and focus the first invalid input\n * - Handles form reset to clear validation state\n * - Handles input change to commit validation\n *\n * @example\n * ```tsx\n * function MyTextField(props) {\n * let inputRef: HTMLInputElement | undefined;\n *\n * const validationState = createFormValidationState({\n * value: props.value,\n * validate: props.validate,\n * validationBehavior: 'native',\n * });\n *\n * createFormValidation(\n * { validationBehavior: 'native' },\n * validationState,\n * () => inputRef\n * );\n *\n * return (\n * <input\n * ref={inputRef}\n * value={props.value}\n * aria-invalid={validationState.displayValidation().isInvalid || undefined}\n * />\n * );\n * }\n * ```\n */\nexport function createFormValidation(\n props: FormValidationProps,\n state: FormValidationState,\n ref: Accessor<ValidatableElement | undefined>,\n): void {\n const validationBehavior = () => props.validationBehavior ?? \"aria\";\n const focus = () => props.focus;\n\n // Track whether we should ignore form reset (for React-like programmatic resets)\n let isIgnoredReset = false;\n\n // Set custom validity on the native input\n createEffect(() => {\n const input = ref();\n // `'setCustomValidity' in input` guards refs that aren't true form elements\n // (e.g. a custom element), matching upstream useFormValidation.\n if (\n validationBehavior() === \"native\" &&\n input &&\n \"setCustomValidity\" in input &&\n !input.disabled\n ) {\n const realtimeValidation = state.realtimeValidation();\n const errorMessage = realtimeValidation.isInvalid\n ? realtimeValidation.validationErrors.join(\" \") || \"Invalid value.\"\n : \"\";\n input.setCustomValidity(errorMessage);\n\n // Prevent default tooltip for validation message\n if (!input.hasAttribute(\"title\")) {\n input.title = \"\";\n }\n\n // Update validation with native validity if not already invalid\n if (!realtimeValidation.isInvalid) {\n state.updateValidation(getNativeValidity(input));\n }\n }\n });\n\n // Set up event listeners\n createEffect(() => {\n const input = ref();\n if (!input) {\n return;\n }\n\n const form = input.form;\n\n // Handle invalid event\n const onInvalid = (e: Event) => {\n // Only commit validation if we are not already displaying one\n if (!state.displayValidation().isInvalid) {\n state.commitValidation();\n }\n\n // Auto focus the first invalid input in a form\n if (!e.defaultPrevented && form && getFirstInvalidInput(form) === input) {\n const focusFn = focus();\n if (focusFn) {\n focusFn();\n } else {\n input.focus();\n }\n // Always show focus ring\n setInteractionModality(\"keyboard\");\n }\n\n // Prevent default browser error UI\n e.preventDefault();\n };\n\n // Handle change event\n const onChange = () => {\n state.commitValidation();\n };\n\n // Handle form reset\n const onReset = () => {\n if (!isIgnoredReset) {\n state.resetValidation();\n }\n };\n\n // Patch form.reset to detect programmatic resets\n let originalReset: (() => void) | undefined;\n if (form) {\n originalReset = form.reset.bind(form);\n form.reset = () => {\n // Ignore programmatic resets outside user events\n isIgnoredReset =\n !window.event ||\n (window.event.type === \"message\" && window.event.target instanceof MessagePort);\n originalReset?.();\n isIgnoredReset = false;\n };\n }\n\n input.addEventListener(\"invalid\", onInvalid);\n input.addEventListener(\"change\", onChange);\n form?.addEventListener(\"reset\", onReset);\n\n onCleanup(() => {\n input.removeEventListener(\"invalid\", onInvalid);\n input.removeEventListener(\"change\", onChange);\n form?.removeEventListener(\"reset\", onReset);\n if (form && originalReset) {\n form.reset = originalReset;\n }\n });\n });\n}\n"],"mappings":";;;;;;;;;;;AAwBA,SAAS,YAAY,OAA0C;CAE7D,MAAM,WAAW,MAAM;CACvB,OAAO;EACL,UAAU,SAAS;EACnB,aAAa,SAAS;EACtB,iBAAiB,SAAS;EAC1B,eAAe,SAAS;EACxB,gBAAgB,SAAS;EACzB,cAAc,SAAS;EACvB,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,cAAc,SAAS;EACvB,cAAc,SAAS;EACvB,OAAO,SAAS;CAClB;AACF;AAEA,SAAS,kBAAkB,OAA6C;CACtE,OAAO;EACL,WAAW,CAAC,MAAM,SAAS;EAC3B,mBAAmB,YAAY,KAAK;EACpC,kBAAkB,MAAM,oBAAoB,CAAC,MAAM,iBAAiB,IAAI,CAAC;CAC3E;AACF;AAEA,SAAS,qBAAqB,MAAkD;CAC9E,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAK;EAC7C,MAAM,UAAU,KAAK,SAAS;EAC9B,IAAI,CAAC,QAAQ,SAAS,OACpB,OAAO;CAEX;CACA,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,qBACd,OACA,OACA,KACM;CACN,MAAM,2BAA2B,MAAM,sBAAsB;CAC7D,MAAM,cAAc,MAAM;CAG1B,IAAI,iBAAiB;CAGrB,mBAAmB;EACjB,MAAM,QAAQ,IAAI;EAGlB,IACE,mBAAmB,MAAM,YACzB,SACA,uBAAuB,SACvB,CAAC,MAAM,UACP;GACA,MAAM,qBAAqB,MAAM,mBAAmB;GACpD,MAAM,eAAe,mBAAmB,YACpC,mBAAmB,iBAAiB,KAAK,GAAG,KAAK,mBACjD;GACJ,MAAM,kBAAkB,YAAY;GAGpC,IAAI,CAAC,MAAM,aAAa,OAAO,GAC7B,MAAM,QAAQ;GAIhB,IAAI,CAAC,mBAAmB,WACtB,MAAM,iBAAiB,kBAAkB,KAAK,CAAC;EAEnD;CACF,CAAC;CAGD,mBAAmB;EACjB,MAAM,QAAQ,IAAI;EAClB,IAAI,CAAC,OACH;EAGF,MAAM,OAAO,MAAM;EAGnB,MAAM,aAAa,MAAa;GAE9B,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC,WAC7B,MAAM,iBAAiB;GAIzB,IAAI,CAAC,EAAE,oBAAoB,QAAQ,qBAAqB,IAAI,MAAM,OAAO;IACvE,MAAM,UAAU,MAAM;IACtB,IAAI,SACF,QAAQ;SAER,MAAM,MAAM;IAGd,uBAAuB,UAAU;GACnC;GAGA,EAAE,eAAe;EACnB;EAGA,MAAM,iBAAiB;GACrB,MAAM,iBAAiB;EACzB;EAGA,MAAM,gBAAgB;GACpB,IAAI,CAAC,gBACH,MAAM,gBAAgB;EAE1B;EAGA,IAAI;EACJ,IAAI,MAAM;GACR,gBAAgB,KAAK,MAAM,KAAK,IAAI;GACpC,KAAK,cAAc;IAEjB,iBACE,CAAC,OAAO,SACP,OAAO,MAAM,SAAS,aAAa,OAAO,MAAM,kBAAkB;IACrE,gBAAgB;IAChB,iBAAiB;GACnB;EACF;EAEA,MAAM,iBAAiB,WAAW,SAAS;EAC3C,MAAM,iBAAiB,UAAU,QAAQ;EACzC,MAAM,iBAAiB,SAAS,OAAO;EAEvC,gBAAgB;GACd,MAAM,oBAAoB,WAAW,SAAS;GAC9C,MAAM,oBAAoB,UAAU,QAAQ;GAC5C,MAAM,oBAAoB,SAAS,OAAO;GAC1C,IAAI,QAAQ,eACV,KAAK,QAAQ;EAEjB,CAAC;CACH,CAAC;AACH"}
@@ -0,0 +1,131 @@
1
+ import { r as isTestEnv } from "./env.js";
2
+ import { t as access } from "./reactivity.js";
3
+ import { s as createGlobalListeners } from "./utils.js";
4
+ import { y as nodeContains } from "./focus.js";
5
+ import { createEffect, createMemo, createSignal, onCleanup } from "solid-js";
6
+ //#region src/interactions/createHover.ts
7
+ /**
8
+ * createHover hook for Solidaria
9
+ *
10
+ * Handles pointer hover interactions for an element. Normalizes behavior
11
+ * across browsers and platforms, and ignores emulated mouse events on touch devices.
12
+ *
13
+ * Port of @react-aria/interactions useHover.
14
+ */
15
+ let globalIgnoreEmulatedMouseEvents = false;
16
+ let hoverCount = 0;
17
+ function setGlobalIgnoreEmulatedMouseEvents() {
18
+ globalIgnoreEmulatedMouseEvents = true;
19
+ setTimeout(() => {
20
+ globalIgnoreEmulatedMouseEvents = false;
21
+ }, 50);
22
+ }
23
+ function handleGlobalPointerEvent(e) {
24
+ if (e.pointerType === "touch") setGlobalIgnoreEmulatedMouseEvents();
25
+ }
26
+ function setupGlobalTouchEvents() {
27
+ if (typeof document === "undefined") return () => {};
28
+ if (hoverCount === 0) {
29
+ if (typeof PointerEvent !== "undefined") document.addEventListener("pointerup", handleGlobalPointerEvent);
30
+ else if (isTestEnv()) document.addEventListener("touchend", setGlobalIgnoreEmulatedMouseEvents);
31
+ }
32
+ hoverCount++;
33
+ return () => {
34
+ hoverCount--;
35
+ if (hoverCount > 0) return;
36
+ if (typeof PointerEvent !== "undefined") document.removeEventListener("pointerup", handleGlobalPointerEvent);
37
+ else if (isTestEnv()) document.removeEventListener("touchend", setGlobalIgnoreEmulatedMouseEvents);
38
+ };
39
+ }
40
+ /**
41
+ * Handles pointer hover interactions for an element.
42
+ */
43
+ function createHover(props = {}) {
44
+ const getProps = () => access(props);
45
+ const [isHovered, setIsHovered] = createSignal(false);
46
+ const { addGlobalListener, removeAllGlobalListeners } = createGlobalListeners();
47
+ let state = {
48
+ isHovered: false,
49
+ ignoreEmulatedMouseEvents: false,
50
+ pointerType: "",
51
+ target: null
52
+ };
53
+ createEffect(() => {
54
+ onCleanup(setupGlobalTouchEvents());
55
+ });
56
+ createEffect(() => {
57
+ if (getProps().isDisabled && state.isHovered) triggerHoverEnd(state.target, state.pointerType);
58
+ });
59
+ function triggerHoverStart(target, pointerType, eventTarget) {
60
+ const p = getProps();
61
+ state.pointerType = pointerType;
62
+ const isOverTarget = eventTarget instanceof Element ? target.contains(eventTarget) : true;
63
+ if (p.isDisabled || state.isHovered || !isOverTarget) return;
64
+ state.isHovered = true;
65
+ state.target = target;
66
+ addGlobalListener("pointerover", (event) => {
67
+ if (state.isHovered && state.target && !nodeContains(state.target, event.target)) triggerHoverEnd(event.target, event.pointerType);
68
+ }, { capture: true });
69
+ p.onHoverStart?.({
70
+ type: "hoverstart",
71
+ target,
72
+ pointerType
73
+ });
74
+ p.onHoverChange?.(true);
75
+ setIsHovered(true);
76
+ }
77
+ function triggerHoverEnd(target, pointerType) {
78
+ const p = getProps();
79
+ state.pointerType = "";
80
+ state.target = null;
81
+ if (!state.isHovered || !target) return;
82
+ state.isHovered = false;
83
+ removeAllGlobalListeners();
84
+ p.onHoverEnd?.({
85
+ type: "hoverend",
86
+ target,
87
+ pointerType
88
+ });
89
+ p.onHoverChange?.(false);
90
+ setIsHovered(false);
91
+ }
92
+ return {
93
+ hoverProps: createMemo(() => {
94
+ if (typeof PointerEvent !== "undefined") return {
95
+ onPointerEnter: (e) => {
96
+ if (globalIgnoreEmulatedMouseEvents && e.pointerType === "mouse") return;
97
+ if (e.pointerType === "touch") return;
98
+ triggerHoverStart(e.currentTarget, e.pointerType, e.target);
99
+ },
100
+ onPointerLeave: (e) => {
101
+ if (!getProps().isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e.currentTarget, e.pointerType);
102
+ },
103
+ onPointerOver: (e) => {
104
+ if (globalIgnoreEmulatedMouseEvents && e.pointerType === "mouse") return;
105
+ if (e.pointerType === "touch") return;
106
+ triggerHoverStart(e.currentTarget, e.pointerType, e.target);
107
+ },
108
+ onPointerOut: (e) => {
109
+ if (!getProps().isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e.currentTarget, e.pointerType);
110
+ }
111
+ };
112
+ return {
113
+ onTouchStart: () => {
114
+ state.ignoreEmulatedMouseEvents = true;
115
+ },
116
+ onMouseEnter: (e) => {
117
+ if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) triggerHoverStart(e.currentTarget, "mouse", e.target);
118
+ state.ignoreEmulatedMouseEvents = false;
119
+ },
120
+ onMouseLeave: (e) => {
121
+ if (!getProps().isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e.currentTarget, "mouse");
122
+ }
123
+ };
124
+ })(),
125
+ isHovered
126
+ };
127
+ }
128
+ //#endregion
129
+ export { createHover as t };
130
+
131
+ //# sourceMappingURL=createHover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHover.js","names":[],"sources":["../../src/interactions/createHover.ts"],"sourcesContent":["/**\n * createHover hook for Solidaria\n *\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n *\n * Port of @react-aria/interactions useHover.\n */\n\nimport {\n type JSX,\n type Accessor,\n createSignal,\n createEffect,\n onCleanup,\n createMemo,\n} from \"solid-js\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\nimport { isTestEnv } from \"../utils/env\";\nimport { createGlobalListeners, nodeContains } from \"../utils\";\n\nexport interface HoverEvent {\n /** The type of hover event being fired. */\n type: \"hoverstart\" | \"hoverend\";\n /** The pointer type that triggered the hover event. */\n pointerType: \"mouse\" | \"pen\";\n /** The target element of the hover event. */\n target: Element;\n}\n\nexport interface HoverEvents {\n /** Handler called when the hover starts. */\n onHoverStart?: (e: HoverEvent) => void;\n /** Handler called when the hover ends. */\n onHoverEnd?: (e: HoverEvent) => void;\n /** Handler called when the hover state changes. */\n onHoverChange?: (isHovering: boolean) => void;\n}\n\nexport interface CreateHoverProps extends HoverEvents {\n /** Whether the hover events should be disabled. */\n isDisabled?: boolean;\n}\n\n/** Event handler props returned by createHover - safe to spread on any element */\nexport type HoverProps = Pick<\n JSX.HTMLAttributes<HTMLElement>,\n | \"onPointerEnter\"\n | \"onPointerLeave\"\n | \"onPointerOver\"\n | \"onPointerOut\"\n | \"onMouseEnter\"\n | \"onMouseLeave\"\n>;\n\nexport interface HoverResult {\n /** Props to spread on the target element. */\n hoverProps: HoverProps;\n /** Whether the element is currently hovered. */\n isHovered: Accessor<boolean>;\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = true;\n setTimeout(() => {\n globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\n\nfunction handleGlobalPointerEvent(e: PointerEvent) {\n if (e.pointerType === \"touch\") {\n setGlobalIgnoreEmulatedMouseEvents();\n }\n}\n\nfunction setupGlobalTouchEvents() {\n if (typeof document === \"undefined\") {\n return () => {};\n }\n\n if (hoverCount === 0) {\n if (typeof PointerEvent !== \"undefined\") {\n document.addEventListener(\"pointerup\", handleGlobalPointerEvent);\n } else if (isTestEnv()) {\n document.addEventListener(\"touchend\", setGlobalIgnoreEmulatedMouseEvents);\n }\n }\n\n hoverCount++;\n return () => {\n hoverCount--;\n if (hoverCount > 0) {\n return;\n }\n\n if (typeof PointerEvent !== \"undefined\") {\n document.removeEventListener(\"pointerup\", handleGlobalPointerEvent);\n } else if (isTestEnv()) {\n document.removeEventListener(\"touchend\", setGlobalIgnoreEmulatedMouseEvents);\n }\n };\n}\n\n/**\n * Handles pointer hover interactions for an element.\n */\nexport function createHover(props: MaybeAccessor<CreateHoverProps> = {}): HoverResult {\n const getProps = () => access(props);\n const [isHovered, setIsHovered] = createSignal(false);\n const { addGlobalListener, removeAllGlobalListeners } = createGlobalListeners();\n\n // Track internal hover state\n let state = {\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: \"\" as \"mouse\" | \"pen\" | \"\",\n target: null as Element | null,\n };\n\n // Setup global touch events\n createEffect(() => {\n const cleanup = setupGlobalTouchEvents();\n onCleanup(cleanup);\n });\n\n // Reset hover when disabled\n createEffect(() => {\n const p = getProps();\n if (p.isDisabled && state.isHovered) {\n triggerHoverEnd(state.target as Element, state.pointerType as \"mouse\" | \"pen\");\n }\n });\n\n function triggerHoverStart(\n target: Element,\n pointerType: \"mouse\" | \"pen\",\n eventTarget: Element | null,\n ) {\n const p = getProps();\n state.pointerType = pointerType;\n\n const isOverTarget = eventTarget instanceof Element ? target.contains(eventTarget) : true;\n if (p.isDisabled || state.isHovered || !isOverTarget) {\n return;\n }\n\n state.isHovered = true;\n state.target = target;\n\n addGlobalListener(\n \"pointerover\",\n (event: PointerEvent) => {\n if (\n state.isHovered &&\n state.target &&\n !nodeContains(state.target, event.target as Element)\n ) {\n triggerHoverEnd(event.target as Element, event.pointerType as \"mouse\" | \"pen\");\n }\n },\n { capture: true },\n );\n\n p.onHoverStart?.({\n type: \"hoverstart\",\n target,\n pointerType,\n });\n\n p.onHoverChange?.(true);\n setIsHovered(true);\n }\n\n function triggerHoverEnd(target: Element | null, pointerType: \"mouse\" | \"pen\") {\n const p = getProps();\n state.pointerType = \"\";\n state.target = null;\n\n if (!state.isHovered || !target) {\n return;\n }\n\n state.isHovered = false;\n removeAllGlobalListeners();\n\n p.onHoverEnd?.({\n type: \"hoverend\",\n target,\n pointerType,\n });\n\n p.onHoverChange?.(false);\n setIsHovered(false);\n }\n\n const hoverProps = createMemo<JSX.HTMLAttributes<HTMLElement>>(() => {\n if (typeof PointerEvent !== \"undefined\") {\n return {\n onPointerEnter: (e: PointerEvent) => {\n if (globalIgnoreEmulatedMouseEvents && e.pointerType === \"mouse\") {\n return;\n }\n if (e.pointerType === \"touch\") {\n return;\n }\n triggerHoverStart(\n e.currentTarget as Element,\n e.pointerType as \"mouse\" | \"pen\",\n e.target as Element,\n );\n },\n onPointerLeave: (e: PointerEvent) => {\n const p = getProps();\n if (!p.isDisabled && (e.currentTarget as Element).contains(e.target as Element)) {\n triggerHoverEnd(e.currentTarget as Element, e.pointerType as \"mouse\" | \"pen\");\n }\n },\n onPointerOver: (e: PointerEvent) => {\n if (globalIgnoreEmulatedMouseEvents && e.pointerType === \"mouse\") {\n return;\n }\n if (e.pointerType === \"touch\") {\n return;\n }\n triggerHoverStart(\n e.currentTarget as Element,\n e.pointerType as \"mouse\" | \"pen\",\n e.target as Element,\n );\n },\n onPointerOut: (e: PointerEvent) => {\n const p = getProps();\n if (!p.isDisabled && (e.currentTarget as Element).contains(e.target as Element)) {\n triggerHoverEnd(e.currentTarget as Element, e.pointerType as \"mouse\" | \"pen\");\n }\n },\n };\n }\n\n // Fallback for environments without PointerEvent (mainly tests)\n return {\n onTouchStart: () => {\n state.ignoreEmulatedMouseEvents = true;\n },\n onMouseEnter: (e: MouseEvent) => {\n if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) {\n triggerHoverStart(e.currentTarget as Element, \"mouse\", e.target as Element);\n }\n state.ignoreEmulatedMouseEvents = false;\n },\n onMouseLeave: (e: MouseEvent) => {\n const p = getProps();\n if (!p.isDisabled && (e.currentTarget as Element).contains(e.target as Element)) {\n triggerHoverEnd(e.currentTarget as Element, \"mouse\");\n }\n },\n };\n });\n\n return {\n hoverProps: hoverProps() as HoverProps,\n isHovered,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAgEA,IAAI,kCAAkC;AACtC,IAAI,aAAa;AAEjB,SAAS,qCAAqC;CAC5C,kCAAkC;CAClC,iBAAiB;EACf,kCAAkC;CACpC,GAAG,EAAE;AACP;AAEA,SAAS,yBAAyB,GAAiB;CACjD,IAAI,EAAE,gBAAgB,SACpB,mCAAmC;AAEvC;AAEA,SAAS,yBAAyB;CAChC,IAAI,OAAO,aAAa,aACtB,aAAa,CAAC;CAGhB,IAAI,eAAe;MACb,OAAO,iBAAiB,aAC1B,SAAS,iBAAiB,aAAa,wBAAwB;OAC1D,IAAI,UAAU,GACnB,SAAS,iBAAiB,YAAY,kCAAkC;CAAA;CAI5E;CACA,aAAa;EACX;EACA,IAAI,aAAa,GACf;EAGF,IAAI,OAAO,iBAAiB,aAC1B,SAAS,oBAAoB,aAAa,wBAAwB;OAC7D,IAAI,UAAU,GACnB,SAAS,oBAAoB,YAAY,kCAAkC;CAE/E;AACF;;;;AAKA,SAAgB,YAAY,QAAyC,CAAC,GAAgB;CACpF,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,CAAC,WAAW,gBAAgB,aAAa,KAAK;CACpD,MAAM,EAAE,mBAAmB,6BAA6B,sBAAsB;CAG9E,IAAI,QAAQ;EACV,WAAW;EACX,2BAA2B;EAC3B,aAAa;EACb,QAAQ;CACV;CAGA,mBAAmB;EAEjB,UADgB,uBACA,CAAC;CACnB,CAAC;CAGD,mBAAmB;EAEjB,IADU,SACN,CAAC,CAAC,cAAc,MAAM,WACxB,gBAAgB,MAAM,QAAmB,MAAM,WAA8B;CAEjF,CAAC;CAED,SAAS,kBACP,QACA,aACA,aACA;EACA,MAAM,IAAI,SAAS;EACnB,MAAM,cAAc;EAEpB,MAAM,eAAe,uBAAuB,UAAU,OAAO,SAAS,WAAW,IAAI;EACrF,IAAI,EAAE,cAAc,MAAM,aAAa,CAAC,cACtC;EAGF,MAAM,YAAY;EAClB,MAAM,SAAS;EAEf,kBACE,gBACC,UAAwB;GACvB,IACE,MAAM,aACN,MAAM,UACN,CAAC,aAAa,MAAM,QAAQ,MAAM,MAAiB,GAEnD,gBAAgB,MAAM,QAAmB,MAAM,WAA8B;EAEjF,GACA,EAAE,SAAS,KAAK,CAClB;EAEA,EAAE,eAAe;GACf,MAAM;GACN;GACA;EACF,CAAC;EAED,EAAE,gBAAgB,IAAI;EACtB,aAAa,IAAI;CACnB;CAEA,SAAS,gBAAgB,QAAwB,aAA8B;EAC7E,MAAM,IAAI,SAAS;EACnB,MAAM,cAAc;EACpB,MAAM,SAAS;EAEf,IAAI,CAAC,MAAM,aAAa,CAAC,QACvB;EAGF,MAAM,YAAY;EAClB,yBAAyB;EAEzB,EAAE,aAAa;GACb,MAAM;GACN;GACA;EACF,CAAC;EAED,EAAE,gBAAgB,KAAK;EACvB,aAAa,KAAK;CACpB;CAkEA,OAAO;EACL,YAjEiB,iBAAkD;GACnE,IAAI,OAAO,iBAAiB,aAC1B,OAAO;IACL,iBAAiB,MAAoB;KACnC,IAAI,mCAAmC,EAAE,gBAAgB,SACvD;KAEF,IAAI,EAAE,gBAAgB,SACpB;KAEF,kBACE,EAAE,eACF,EAAE,aACF,EAAE,MACJ;IACF;IACA,iBAAiB,MAAoB;KAEnC,IAAI,CADM,SACL,CAAC,CAAC,cAAe,EAAE,cAA0B,SAAS,EAAE,MAAiB,GAC5E,gBAAgB,EAAE,eAA0B,EAAE,WAA8B;IAEhF;IACA,gBAAgB,MAAoB;KAClC,IAAI,mCAAmC,EAAE,gBAAgB,SACvD;KAEF,IAAI,EAAE,gBAAgB,SACpB;KAEF,kBACE,EAAE,eACF,EAAE,aACF,EAAE,MACJ;IACF;IACA,eAAe,MAAoB;KAEjC,IAAI,CADM,SACL,CAAC,CAAC,cAAe,EAAE,cAA0B,SAAS,EAAE,MAAiB,GAC5E,gBAAgB,EAAE,eAA0B,EAAE,WAA8B;IAEhF;GACF;GAIF,OAAO;IACL,oBAAoB;KAClB,MAAM,4BAA4B;IACpC;IACA,eAAe,MAAkB;KAC/B,IAAI,CAAC,MAAM,6BAA6B,CAAC,iCACvC,kBAAkB,EAAE,eAA0B,SAAS,EAAE,MAAiB;KAE5E,MAAM,4BAA4B;IACpC;IACA,eAAe,MAAkB;KAE/B,IAAI,CADM,SACL,CAAC,CAAC,cAAe,EAAE,cAA0B,SAAS,EAAE,MAAiB,GAC5E,gBAAgB,EAAE,eAA0B,OAAO;IAEvD;GACF;EACF,CAGuB,CAAC,CAAC;EACvB;CACF;AACF"}