@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,131 @@
1
+ import { r as isTestEnv } from "./env.jsx";
2
+ import { t as access } from "./reactivity.jsx";
3
+ import { s as createGlobalListeners } from "./utils.jsx";
4
+ import { y as nodeContains } from "./focus.jsx";
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.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHover.jsx","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":"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"}
@@ -0,0 +1,268 @@
1
+ import { A as isMac, p as isVirtualClick } from "./utils.js";
2
+ import { b as openLink, c as getOwnerWindow, s as getOwnerDocument } from "./focus.js";
3
+ import { createEffect, createSignal, onCleanup } from "solid-js";
4
+ import { isServer } from "solid-js/web";
5
+ //#region src/interactions/createInteractionModality.ts
6
+ /**
7
+ * createInteractionModality + focus-visible tracking for solidaria
8
+ *
9
+ * Port of @react-aria/interactions useFocusVisible/useInteractionModality.
10
+ * Tracks the current interaction modality (keyboard, pointer, or virtual) and
11
+ * provides focus-visible state and listeners.
12
+ */
13
+ let currentModality = null;
14
+ let currentPointerType = "keyboard";
15
+ const changeHandlers = /* @__PURE__ */ new Set();
16
+ let hasSetupGlobalListeners = /* @__PURE__ */ new Map();
17
+ let hasEventBeforeFocus = false;
18
+ let hasBlurredWindowRecently = false;
19
+ let ignoreFocusEvent = false;
20
+ const FOCUS_VISIBLE_INPUT_KEYS = {
21
+ Tab: true,
22
+ Escape: true
23
+ };
24
+ function triggerChangeHandlers(modality, e) {
25
+ for (const handler of changeHandlers) handler(modality, e);
26
+ }
27
+ function isValidKey(e) {
28
+ return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === "Control" || e.key === "Shift" || e.key === "Meta");
29
+ }
30
+ function handleKeyboardEvent(e) {
31
+ hasEventBeforeFocus = true;
32
+ if (!openLink.isOpening && isValidKey(e)) {
33
+ currentModality = "keyboard";
34
+ currentPointerType = "keyboard";
35
+ triggerChangeHandlers("keyboard", e);
36
+ }
37
+ }
38
+ function handlePointerEvent(e) {
39
+ currentModality = "pointer";
40
+ currentPointerType = "pointerType" in e ? e.pointerType : "mouse";
41
+ if (e.type === "mousedown" || e.type === "pointerdown") {
42
+ hasEventBeforeFocus = true;
43
+ triggerChangeHandlers("pointer", e);
44
+ }
45
+ }
46
+ function handleClickEvent(e) {
47
+ if (!e.isTrusted) return;
48
+ if (!openLink.isOpening && isVirtualClick(e)) {
49
+ hasEventBeforeFocus = true;
50
+ currentModality = "virtual";
51
+ currentPointerType = "virtual";
52
+ }
53
+ }
54
+ function handleFocusEvent(e) {
55
+ if (!e.isTrusted || ignoreFocusEvent) return;
56
+ const target = e.target;
57
+ const targetElement = target && target.nodeType ? target : null;
58
+ const ownerWindow = targetElement ? getOwnerWindow(targetElement) : window;
59
+ const ownerDocument = targetElement ? getOwnerDocument(targetElement) : document;
60
+ if (target === ownerWindow || target === ownerDocument) return;
61
+ if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {
62
+ currentModality = "virtual";
63
+ currentPointerType = "virtual";
64
+ triggerChangeHandlers("virtual", e);
65
+ }
66
+ hasEventBeforeFocus = false;
67
+ hasBlurredWindowRecently = false;
68
+ }
69
+ function handleWindowBlur() {
70
+ hasEventBeforeFocus = false;
71
+ hasBlurredWindowRecently = true;
72
+ }
73
+ function setupGlobalFocusEvents(element) {
74
+ if (typeof window === "undefined" || typeof document === "undefined") return;
75
+ const windowObject = getOwnerWindow(element);
76
+ if (hasSetupGlobalListeners.get(windowObject)) return;
77
+ const documentObject = getOwnerDocument(element);
78
+ const originalFocus = windowObject.HTMLElement.prototype.focus;
79
+ Reflect.defineProperty(windowObject.HTMLElement.prototype, "focus", {
80
+ configurable: true,
81
+ writable: true,
82
+ value: function() {
83
+ hasEventBeforeFocus = true;
84
+ originalFocus.apply(this, arguments);
85
+ }
86
+ });
87
+ documentObject.addEventListener("keydown", handleKeyboardEvent, true);
88
+ documentObject.addEventListener("keyup", handleKeyboardEvent, true);
89
+ documentObject.addEventListener("click", handleClickEvent, true);
90
+ windowObject.addEventListener("focus", handleFocusEvent, true);
91
+ windowObject.addEventListener("blur", handleWindowBlur, false);
92
+ if (typeof windowObject.PointerEvent !== "undefined") {
93
+ documentObject.addEventListener("pointerdown", handlePointerEvent, true);
94
+ documentObject.addEventListener("pointermove", handlePointerEvent, true);
95
+ documentObject.addEventListener("pointerup", handlePointerEvent, true);
96
+ } else {
97
+ documentObject.addEventListener("mousedown", handlePointerEvent, true);
98
+ documentObject.addEventListener("mousemove", handlePointerEvent, true);
99
+ documentObject.addEventListener("mouseup", handlePointerEvent, true);
100
+ }
101
+ windowObject.addEventListener("beforeunload", () => {
102
+ tearDownWindowFocusTracking(element);
103
+ }, { once: true });
104
+ hasSetupGlobalListeners.set(windowObject, { focus: originalFocus });
105
+ }
106
+ function tearDownWindowFocusTracking(element, loadListener) {
107
+ if (typeof window === "undefined" || typeof document === "undefined") return;
108
+ const windowObject = getOwnerWindow(element);
109
+ const documentObject = getOwnerDocument(element);
110
+ if (loadListener) documentObject.removeEventListener("DOMContentLoaded", loadListener);
111
+ if (!hasSetupGlobalListeners.has(windowObject)) return;
112
+ const entry = hasSetupGlobalListeners.get(windowObject);
113
+ Reflect.defineProperty(windowObject.HTMLElement.prototype, "focus", {
114
+ configurable: true,
115
+ writable: true,
116
+ value: entry.focus
117
+ });
118
+ documentObject.removeEventListener("keydown", handleKeyboardEvent, true);
119
+ documentObject.removeEventListener("keyup", handleKeyboardEvent, true);
120
+ documentObject.removeEventListener("click", handleClickEvent, true);
121
+ windowObject.removeEventListener("focus", handleFocusEvent, true);
122
+ windowObject.removeEventListener("blur", handleWindowBlur, false);
123
+ if (typeof windowObject.PointerEvent !== "undefined") {
124
+ documentObject.removeEventListener("pointerdown", handlePointerEvent, true);
125
+ documentObject.removeEventListener("pointermove", handlePointerEvent, true);
126
+ documentObject.removeEventListener("pointerup", handlePointerEvent, true);
127
+ } else {
128
+ documentObject.removeEventListener("mousedown", handlePointerEvent, true);
129
+ documentObject.removeEventListener("mousemove", handlePointerEvent, true);
130
+ documentObject.removeEventListener("mouseup", handlePointerEvent, true);
131
+ }
132
+ hasSetupGlobalListeners.delete(windowObject);
133
+ }
134
+ /**
135
+ * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.
136
+ */
137
+ function addWindowFocusTracking(element) {
138
+ const documentObject = getOwnerDocument(element);
139
+ let loadListener;
140
+ if (documentObject.readyState !== "loading") setupGlobalFocusEvents(element);
141
+ else {
142
+ loadListener = () => {
143
+ setupGlobalFocusEvents(element);
144
+ };
145
+ documentObject.addEventListener("DOMContentLoaded", loadListener);
146
+ }
147
+ return () => tearDownWindowFocusTracking(element, loadListener);
148
+ }
149
+ function setupGlobalFocusListeners() {
150
+ addWindowFocusTracking();
151
+ }
152
+ if (typeof document !== "undefined") addWindowFocusTracking();
153
+ /**
154
+ * If true, keyboard focus is visible.
155
+ */
156
+ function isFocusVisible() {
157
+ return currentModality !== "pointer";
158
+ }
159
+ /**
160
+ * Gets the current interaction modality.
161
+ */
162
+ function getInteractionModality() {
163
+ return currentModality;
164
+ }
165
+ /**
166
+ * Sets the current interaction modality.
167
+ */
168
+ function setInteractionModality(modality) {
169
+ currentModality = modality;
170
+ currentPointerType = modality === "pointer" ? "mouse" : modality;
171
+ triggerChangeHandlers(modality, null);
172
+ }
173
+ /**
174
+ * Gets the current pointer type.
175
+ */
176
+ function getPointerType() {
177
+ return currentPointerType;
178
+ }
179
+ function isKeyboardFocusEvent(isTextInput, modality, e) {
180
+ if (!e) return true;
181
+ const target = "target" in e ? e.target : null;
182
+ const ownerDocument = target ? getOwnerDocument(target) : document;
183
+ const ownerWindow = target ? getOwnerWindow(target) : window;
184
+ const IHTMLInputElement = ownerWindow.HTMLInputElement;
185
+ const IHTMLTextAreaElement = ownerWindow.HTMLTextAreaElement;
186
+ const IHTMLElement = ownerWindow.HTMLElement;
187
+ const IKeyboardEvent = ownerWindow.KeyboardEvent;
188
+ const nonTextInputTypes = new Set([
189
+ "checkbox",
190
+ "radio",
191
+ "range",
192
+ "color",
193
+ "file",
194
+ "image",
195
+ "button",
196
+ "submit",
197
+ "reset"
198
+ ]);
199
+ isTextInput = isTextInput || ownerDocument.activeElement instanceof IHTMLInputElement && !nonTextInputTypes.has(ownerDocument.activeElement.type) || ownerDocument.activeElement instanceof IHTMLTextAreaElement || ownerDocument.activeElement instanceof IHTMLElement && ownerDocument.activeElement.isContentEditable;
200
+ return !(isTextInput && modality === "keyboard" && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);
201
+ }
202
+ /**
203
+ * Listens for trigger change and reports if focus is visible.
204
+ */
205
+ function createFocusVisibleListener(handler, opts) {
206
+ setupGlobalFocusEvents();
207
+ const listener = (modality, e) => {
208
+ if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) return;
209
+ handler(isFocusVisible());
210
+ };
211
+ changeHandlers.add(listener);
212
+ return () => {
213
+ changeHandlers.delete(listener);
214
+ };
215
+ }
216
+ /**
217
+ * Manages focus visible state for the page.
218
+ */
219
+ function createFocusVisible(props = {}) {
220
+ if (isServer) return { isFocusVisible: () => false };
221
+ const [isVisible, setIsVisible] = createSignal(props.autoFocus || isFocusVisible());
222
+ createEffect(() => {
223
+ onCleanup(createFocusVisibleListener(setIsVisible, { isTextInput: props.isTextInput }));
224
+ });
225
+ return { isFocusVisible: isVisible };
226
+ }
227
+ /**
228
+ * Tracks the current interaction modality.
229
+ */
230
+ function createInteractionModality() {
231
+ if (isServer) return { modality: () => null };
232
+ const [modality, setModality] = createSignal(currentModality);
233
+ createEffect(() => {
234
+ setupGlobalFocusEvents();
235
+ const handler = (newModality) => {
236
+ setModality(newModality);
237
+ };
238
+ changeHandlers.add(handler);
239
+ onCleanup(() => {
240
+ changeHandlers.delete(handler);
241
+ });
242
+ });
243
+ return { modality };
244
+ }
245
+ /**
246
+ * Adds a listener for modality changes.
247
+ */
248
+ function addModalityListener(handler) {
249
+ const wrapped = (modality) => {
250
+ handler(modality);
251
+ };
252
+ changeHandlers.add(wrapped);
253
+ return () => {
254
+ changeHandlers.delete(wrapped);
255
+ };
256
+ }
257
+ /**
258
+ * Hook to track whether the user is currently interacting with the keyboard.
259
+ */
260
+ function useIsKeyboardFocused() {
261
+ if (isServer) return () => false;
262
+ const { modality } = createInteractionModality();
263
+ return () => modality() === "keyboard";
264
+ }
265
+ //#endregion
266
+ export { createInteractionModality as a, isFocusVisible as c, useIsKeyboardFocused as d, createFocusVisibleListener as i, setInteractionModality as l, addWindowFocusTracking as n, getInteractionModality as o, createFocusVisible as r, getPointerType as s, addModalityListener as t, setupGlobalFocusListeners as u };
267
+
268
+ //# sourceMappingURL=createInteractionModality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInteractionModality.js","names":[],"sources":["../../src/interactions/createInteractionModality.ts"],"sourcesContent":["/**\n * createInteractionModality + focus-visible tracking for solidaria\n *\n * Port of @react-aria/interactions useFocusVisible/useInteractionModality.\n * Tracks the current interaction modality (keyboard, pointer, or virtual) and\n * provides focus-visible state and listeners.\n */\n\nimport { type Accessor, createSignal, createEffect, onCleanup } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { getOwnerDocument, getOwnerWindow, isMac, isVirtualClick, openLink } from \"../utils\";\n\nexport type Modality = \"keyboard\" | \"pointer\" | \"virtual\";\nexport type PointerType = \"mouse\" | \"pen\" | \"touch\" | \"keyboard\" | \"virtual\";\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\n\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\n\nexport interface FocusVisibleProps {\n /** Whether the element is a text input. */\n isTextInput?: boolean;\n /** Whether the element will be auto focused. */\n autoFocus?: boolean;\n}\n\nexport interface FocusVisibleResult {\n /** Whether keyboard focus is visible globally. */\n isFocusVisible: Accessor<boolean>;\n}\n\nexport interface InteractionModalityResult {\n /** The current interaction modality. */\n modality: Accessor<Modality | null>;\n}\n\nlet currentModality: Modality | null = null;\nlet currentPointerType: PointerType = \"keyboard\";\nconst changeHandlers = new Set<Handler>();\n\nexport let hasSetupGlobalListeners: Map<\n Window,\n { focus: typeof window.HTMLElement.prototype.focus }\n> = new Map();\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\nlet ignoreFocusEvent = false;\n\nconst FOCUS_VISIBLE_INPUT_KEYS: Record<string, boolean> = {\n Tab: true,\n Escape: true,\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n for (const handler of changeHandlers) {\n handler(modality, e);\n }\n}\n\nfunction isValidKey(e: KeyboardEvent) {\n return !(\n e.metaKey ||\n (!isMac() && e.altKey) ||\n e.ctrlKey ||\n e.key === \"Control\" ||\n e.key === \"Shift\" ||\n e.key === \"Meta\"\n );\n}\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n const isOpening = (openLink as { isOpening?: boolean }).isOpening;\n if (!isOpening && isValidKey(e)) {\n currentModality = \"keyboard\";\n currentPointerType = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = \"pointer\";\n currentPointerType = \"pointerType\" in e ? (e.pointerType as PointerType) : \"mouse\";\n if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n hasEventBeforeFocus = true;\n triggerChangeHandlers(\"pointer\", e);\n }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n if (!e.isTrusted) {\n return;\n }\n\n const isOpening = (openLink as { isOpening?: boolean }).isOpening;\n if (!isOpening && isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n currentModality = \"virtual\";\n currentPointerType = \"virtual\";\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n if (!e.isTrusted || ignoreFocusEvent) {\n return;\n }\n\n const target = e.target as EventTarget | null;\n const targetElement = target && (target as Element).nodeType ? (target as Element) : null;\n const ownerWindow = targetElement ? getOwnerWindow(targetElement) : window;\n const ownerDocument = targetElement ? getOwnerDocument(targetElement) : document;\n\n if (target === ownerWindow || target === ownerDocument) {\n return;\n }\n\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n currentModality = \"virtual\";\n currentPointerType = \"virtual\";\n triggerChangeHandlers(\"virtual\", e);\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n if (ignoreFocusEvent) {\n return;\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\n\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n if (hasSetupGlobalListeners.get(windowObject)) {\n return;\n }\n\n const documentObject = getOwnerDocument(element);\n\n // Programmatic focus() calls shouldn't affect the current input modality, so we\n // patch HTMLElement.prototype.focus to record that an event preceded the focus.\n // Use Reflect.defineProperty (not assignment) so this works even when `focus` is\n // currently a getter-only accessor — e.g. when a test library's setup() has\n // instrumented it. Plain assignment throws in that case; Reflect.defineProperty\n // returns false rather than throwing (and succeeds on the configurable prototype).\n const originalFocus = windowObject.HTMLElement.prototype.focus;\n Reflect.defineProperty(windowObject.HTMLElement.prototype, \"focus\", {\n configurable: true,\n writable: true,\n value: function () {\n hasEventBeforeFocus = true;\n originalFocus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n },\n });\n\n documentObject.addEventListener(\"keydown\", handleKeyboardEvent, true);\n documentObject.addEventListener(\"keyup\", handleKeyboardEvent, true);\n documentObject.addEventListener(\"click\", handleClickEvent, true);\n\n windowObject.addEventListener(\"focus\", handleFocusEvent, true);\n windowObject.addEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof windowObject.PointerEvent !== \"undefined\") {\n documentObject.addEventListener(\"pointerdown\", handlePointerEvent, true);\n documentObject.addEventListener(\"pointermove\", handlePointerEvent, true);\n documentObject.addEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n documentObject.addEventListener(\"mousedown\", handlePointerEvent, true);\n documentObject.addEventListener(\"mousemove\", handlePointerEvent, true);\n documentObject.addEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n windowObject.addEventListener(\n \"beforeunload\",\n () => {\n tearDownWindowFocusTracking(element);\n },\n { once: true },\n );\n\n hasSetupGlobalListeners.set(windowObject, { focus: originalFocus });\n}\n\nfunction tearDownWindowFocusTracking(element?: HTMLElement | null, loadListener?: () => void) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n\n if (loadListener) {\n documentObject.removeEventListener(\"DOMContentLoaded\", loadListener);\n }\n\n if (!hasSetupGlobalListeners.has(windowObject)) {\n return;\n }\n\n const entry = hasSetupGlobalListeners.get(windowObject)!;\n // Mirror the setup path: defineProperty (not assignment) restores the original\n // focus even if it had been replaced with a getter-only accessor.\n Reflect.defineProperty(windowObject.HTMLElement.prototype, \"focus\", {\n configurable: true,\n writable: true,\n value: entry.focus,\n });\n\n documentObject.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n documentObject.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n documentObject.removeEventListener(\"click\", handleClickEvent, true);\n\n windowObject.removeEventListener(\"focus\", handleFocusEvent, true);\n windowObject.removeEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof windowObject.PointerEvent !== \"undefined\") {\n documentObject.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n documentObject.removeEventListener(\"pointermove\", handlePointerEvent, true);\n documentObject.removeEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n documentObject.removeEventListener(\"mousedown\", handlePointerEvent, true);\n documentObject.removeEventListener(\"mousemove\", handlePointerEvent, true);\n documentObject.removeEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners.delete(windowObject);\n}\n\n/**\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n const documentObject = getOwnerDocument(element);\n let loadListener: (() => void) | undefined;\n\n if (documentObject.readyState !== \"loading\") {\n setupGlobalFocusEvents(element);\n } else {\n loadListener = () => {\n setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener(\"DOMContentLoaded\", loadListener);\n }\n\n return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\nexport function setupGlobalFocusListeners(): void {\n addWindowFocusTracking();\n}\n\nif (typeof document !== \"undefined\") {\n addWindowFocusTracking();\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n return currentModality !== \"pointer\";\n}\n\n/**\n * Gets the current interaction modality.\n */\nexport function getInteractionModality(): Modality | null {\n return currentModality;\n}\n\n/**\n * Sets the current interaction modality.\n */\nexport function setInteractionModality(modality: Modality): void {\n currentModality = modality;\n currentPointerType = modality === \"pointer\" ? \"mouse\" : modality;\n triggerChangeHandlers(modality, null);\n}\n\n/**\n * Gets the current pointer type.\n */\nexport function getPointerType(): PointerType {\n return currentPointerType;\n}\n\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent): boolean {\n if (!e) {\n return true;\n }\n\n const target = \"target\" in e ? (e.target as Element | null) : null;\n const ownerDocument = target ? getOwnerDocument(target) : document;\n const ownerWindow = target ? getOwnerWindow(target) : window;\n\n const IHTMLInputElement = ownerWindow.HTMLInputElement;\n const IHTMLTextAreaElement = ownerWindow.HTMLTextAreaElement;\n const IHTMLElement = ownerWindow.HTMLElement;\n const IKeyboardEvent = ownerWindow.KeyboardEvent;\n\n const nonTextInputTypes = new Set([\n \"checkbox\",\n \"radio\",\n \"range\",\n \"color\",\n \"file\",\n \"image\",\n \"button\",\n \"submit\",\n \"reset\",\n ]);\n\n isTextInput =\n isTextInput ||\n (ownerDocument.activeElement instanceof IHTMLInputElement &&\n !nonTextInputTypes.has(ownerDocument.activeElement.type)) ||\n ownerDocument.activeElement instanceof IHTMLTextAreaElement ||\n (ownerDocument.activeElement instanceof IHTMLElement &&\n ownerDocument.activeElement.isContentEditable);\n\n return !(\n isTextInput &&\n modality === \"keyboard\" &&\n e instanceof IKeyboardEvent &&\n !FOCUS_VISIBLE_INPUT_KEYS[e.key]\n );\n}\n\n/**\n * Listens for trigger change and reports if focus is visible.\n */\nexport function createFocusVisibleListener(\n handler: FocusVisibleHandler,\n opts?: { isTextInput?: boolean },\n): () => void {\n setupGlobalFocusEvents();\n const listener: Handler = (modality: Modality, e: HandlerEvent) => {\n if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) {\n return;\n }\n handler(isFocusVisible());\n };\n changeHandlers.add(listener);\n return () => {\n changeHandlers.delete(listener);\n };\n}\n\n/**\n * Manages focus visible state for the page.\n */\nexport function createFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n if (isServer) {\n return { isFocusVisible: () => false };\n }\n\n // autoFocus seeds the initial value once; isTextInput is read inside the effect\n // so it re-subscribes reactively (a top-level destructure would freeze it — the\n // body runs once). Mirrors upstream useFocusVisible's [isTextInput] dep.\n const [isVisible, setIsVisible] = createSignal<boolean>(props.autoFocus || isFocusVisible());\n\n createEffect(() => {\n const cleanup = createFocusVisibleListener(setIsVisible, { isTextInput: props.isTextInput });\n onCleanup(cleanup);\n });\n\n return { isFocusVisible: isVisible };\n}\n\n/**\n * Tracks the current interaction modality.\n */\nexport function createInteractionModality(): InteractionModalityResult {\n if (isServer) {\n return {\n modality: () => null,\n };\n }\n\n const [modality, setModality] = createSignal<Modality | null>(currentModality);\n\n createEffect(() => {\n setupGlobalFocusEvents();\n const handler: Handler = (newModality: Modality) => {\n setModality(newModality);\n };\n changeHandlers.add(handler);\n onCleanup(() => {\n changeHandlers.delete(handler);\n });\n });\n\n return {\n modality,\n };\n}\n\n/**\n * Adds a listener for modality changes.\n */\nexport function addModalityListener(handler: (modality: Modality) => void): () => void {\n const wrapped: Handler = (modality) => {\n handler(modality);\n };\n changeHandlers.add(wrapped);\n return () => {\n changeHandlers.delete(wrapped);\n };\n}\n\n/**\n * Hook to track whether the user is currently interacting with the keyboard.\n */\nexport function useIsKeyboardFocused(): Accessor<boolean> {\n if (isServer) {\n return () => false;\n }\n\n const { modality } = createInteractionModality();\n return () => modality() === \"keyboard\";\n}\n"],"mappings":"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"}