@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
package/src/dnd/utils.ts CHANGED
@@ -1,294 +1,281 @@
1
- /**
2
- * Drag and Drop utilities for solidaria.
3
- */
4
-
5
- import type {
6
- DragItem,
7
- DropItem,
8
- TextDropItem,
9
- FileDropItem,
10
- DirectoryDropItem,
11
- DropOperation,
12
- } from '@proyecto-viviana/solid-stately';
13
-
14
- // Native drag types that can be transferred between applications
15
- export const NATIVE_DRAG_TYPES: Set<string> = new Set([
16
- 'text/plain',
17
- 'text/uri-list',
18
- 'text/html',
19
- ]);
20
-
21
- // Custom drag type for serializing multiple items
22
- export const CUSTOM_DRAG_TYPE = 'application/vnd.solidaria.items+json';
23
-
24
- // Generic type for unknown file types
25
- export const GENERIC_TYPE = 'application/octet-stream';
26
-
27
- // Drop operation bit flags
28
- export enum DROP_OPERATION {
29
- none = 0,
30
- cancel = 0,
31
- move = 1 << 0,
32
- copy = 1 << 1,
33
- link = 1 << 2,
34
- all = (1 << 0) | (1 << 1) | (1 << 2),
35
- }
36
-
37
- // Map from effectAllowed to DROP_OPERATION
38
- export const DROP_OPERATION_ALLOWED: Record<string, number> = {
39
- none: DROP_OPERATION.none,
40
- copy: DROP_OPERATION.copy,
41
- copyLink: DROP_OPERATION.copy | DROP_OPERATION.link,
42
- copyMove: DROP_OPERATION.copy | DROP_OPERATION.move,
43
- link: DROP_OPERATION.link,
44
- linkMove: DROP_OPERATION.link | DROP_OPERATION.move,
45
- move: DROP_OPERATION.move,
46
- all: DROP_OPERATION.all,
47
- uninitialized: DROP_OPERATION.all,
48
- };
49
-
50
- // Map from DROP_OPERATION to effectAllowed
51
- export const EFFECT_ALLOWED: Record<number, string> = {
52
- [DROP_OPERATION.none]: 'none',
53
- [DROP_OPERATION.move]: 'move',
54
- [DROP_OPERATION.copy]: 'copy',
55
- [DROP_OPERATION.copy | DROP_OPERATION.move]: 'copyMove',
56
- [DROP_OPERATION.link]: 'link',
57
- [DROP_OPERATION.link | DROP_OPERATION.move]: 'linkMove',
58
- [DROP_OPERATION.copy | DROP_OPERATION.link]: 'copyLink',
59
- [DROP_OPERATION.all]: 'all',
60
- };
61
-
62
- // Map from dropEffect to DropOperation
63
- export const DROP_EFFECT_TO_DROP_OPERATION: Record<string, DropOperation> = {
64
- none: 'cancel',
65
- link: 'link',
66
- copy: 'copy',
67
- move: 'move',
68
- };
69
-
70
- // Map from DropOperation to dropEffect
71
- export const DROP_OPERATION_TO_DROP_EFFECT: Record<DropOperation, string> = {
72
- cancel: 'none',
73
- link: 'link',
74
- copy: 'copy',
75
- move: 'move',
76
- };
77
-
78
- /**
79
- * Get the types present in drag items.
80
- */
81
- export function getTypes(items: DragItem[]): Set<string> {
82
- const types = new Set<string>();
83
- for (const item of items) {
84
- for (const type of Object.keys(item)) {
85
- types.add(type);
86
- }
87
- }
88
- return types;
89
- }
90
-
91
- /**
92
- * Write drag items to a DataTransfer object.
93
- */
94
- export function writeToDataTransfer(
95
- dataTransfer: DataTransfer,
96
- items: DragItem[]
97
- ): void {
98
- const groupedByType = new Map<string, string[]>();
99
- let needsCustomData = false;
100
- const customData: object[] = [];
101
-
102
- for (const item of items) {
103
- const types = Object.keys(item);
104
- if (types.length > 1) {
105
- needsCustomData = true;
106
- }
107
-
108
- const dataByType: Record<string, string> = {};
109
- for (const type of types) {
110
- let typeItems = groupedByType.get(type);
111
- if (!typeItems) {
112
- typeItems = [];
113
- groupedByType.set(type, typeItems);
114
- } else {
115
- needsCustomData = true;
116
- }
117
-
118
- const data = item[type];
119
- dataByType[type] = data;
120
- typeItems.push(data);
121
- }
122
-
123
- customData.push(dataByType);
124
- }
125
-
126
- for (const [type, typeItems] of groupedByType) {
127
- if (NATIVE_DRAG_TYPES.has(type)) {
128
- // Join all items of this type with newlines
129
- const data = typeItems.join('\n');
130
- dataTransfer.items.add(data, type);
131
- } else {
132
- // Set first item for non-native types
133
- dataTransfer.items.add(typeItems[0], type);
134
- }
135
- }
136
-
137
- if (needsCustomData) {
138
- const data = JSON.stringify(customData);
139
- dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);
140
- }
141
- }
142
-
143
- /**
144
- * Read drop items from a DataTransfer object.
145
- */
146
- export function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {
147
- const items: DropItem[] = [];
148
-
149
- if (!dataTransfer) {
150
- return items;
151
- }
152
-
153
- // Check for custom drag type first
154
- let hasCustomType = false;
155
- if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {
156
- try {
157
- const data = dataTransfer.getData(CUSTOM_DRAG_TYPE);
158
- const parsed = JSON.parse(data);
159
- for (const item of parsed) {
160
- items.push({
161
- kind: 'text',
162
- types: new Set(Object.keys(item)),
163
- getText: (type) => Promise.resolve(item[type]),
164
- });
165
- }
166
- hasCustomType = true;
167
- } catch {
168
- // ignore parsing errors
169
- }
170
- }
171
-
172
- // Fall back to native items
173
- if (!hasCustomType) {
174
- const stringItems = new Map<string, string>();
175
-
176
- for (const item of dataTransfer.items) {
177
- if (item.kind === 'string') {
178
- const type = item.type || GENERIC_TYPE;
179
- stringItems.set(type, dataTransfer.getData(item.type));
180
- } else if (item.kind === 'file') {
181
- const file = item.getAsFile();
182
- if (file) {
183
- items.push(createFileItem(file));
184
- }
185
- }
186
- }
187
-
188
- if (stringItems.size > 0) {
189
- items.push({
190
- kind: 'text',
191
- types: new Set(stringItems.keys()),
192
- getText: (type) => Promise.resolve(stringItems.get(type) ?? ''),
193
- });
194
- }
195
- }
196
-
197
- return items;
198
- }
199
-
200
- /**
201
- * Create a FileDropItem from a File object.
202
- */
203
- function createFileItem(file: File): FileDropItem {
204
- return {
205
- kind: 'file',
206
- type: file.type || GENERIC_TYPE,
207
- name: file.name,
208
- getText: () => file.text(),
209
- getFile: () => Promise.resolve(file),
210
- };
211
- }
212
-
213
- /**
214
- * DragTypes implementation for checking drag types.
215
- */
216
- export class DragTypesImpl {
217
- private types: Set<string>;
218
- private includesUnknownTypes: boolean;
219
-
220
- constructor(dataTransfer: DataTransfer) {
221
- this.types = new Set<string>();
222
- let hasFiles = false;
223
-
224
- for (const item of dataTransfer.items) {
225
- if (item.type !== CUSTOM_DRAG_TYPE) {
226
- if (item.kind === 'file') {
227
- hasFiles = true;
228
- }
229
- if (item.type) {
230
- this.types.add(item.type);
231
- } else {
232
- this.types.add(GENERIC_TYPE);
233
- }
234
- }
235
- }
236
-
237
- // Safari doesn't expose file types until drop
238
- this.includesUnknownTypes =
239
- !hasFiles && dataTransfer.types.includes('Files');
240
- }
241
-
242
- has(type: string | symbol): boolean {
243
- if (
244
- this.includesUnknownTypes ||
245
- (typeof type === 'symbol' && this.types.has(GENERIC_TYPE))
246
- ) {
247
- return true;
248
- }
249
- return typeof type === 'string' && this.types.has(type);
250
- }
251
- }
252
-
253
- /**
254
- * Check if a drop item is a text item.
255
- */
256
- export function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {
257
- return dropItem.kind === 'text';
258
- }
259
-
260
- /**
261
- * Check if a drop item is a file item.
262
- */
263
- export function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {
264
- return dropItem.kind === 'file';
265
- }
266
-
267
- /**
268
- * Check if a drop item is a directory item.
269
- */
270
- export function isDirectoryDropItem(
271
- dropItem: DropItem
272
- ): dropItem is DirectoryDropItem {
273
- return dropItem.kind === 'directory';
274
- }
275
-
276
- // Global state for tracking drag operations
277
- let globalDropEffect: string | undefined;
278
- let globalAllowedDropOperations: number = DROP_OPERATION.none;
279
-
280
- export function setGlobalDropEffect(effect: string | undefined): void {
281
- globalDropEffect = effect;
282
- }
283
-
284
- export function getGlobalDropEffect(): string | undefined {
285
- return globalDropEffect;
286
- }
287
-
288
- export function setGlobalAllowedDropOperations(ops: number): void {
289
- globalAllowedDropOperations = ops;
290
- }
291
-
292
- export function getGlobalAllowedDropOperations(): number {
293
- return globalAllowedDropOperations;
294
- }
1
+ /**
2
+ * Drag and Drop utilities for solidaria.
3
+ */
4
+
5
+ import type {
6
+ DragItem,
7
+ DropItem,
8
+ TextDropItem,
9
+ FileDropItem,
10
+ DirectoryDropItem,
11
+ DropOperation,
12
+ } from "@proyecto-viviana/solid-stately";
13
+
14
+ // Native drag types that can be transferred between applications
15
+ export const NATIVE_DRAG_TYPES: Set<string> = new Set(["text/plain", "text/uri-list", "text/html"]);
16
+
17
+ // Custom drag type for serializing multiple items
18
+ export const CUSTOM_DRAG_TYPE = "application/vnd.solidaria.items+json";
19
+
20
+ // Generic type for unknown file types
21
+ export const GENERIC_TYPE = "application/octet-stream";
22
+
23
+ // Drop operation bit flags
24
+ export enum DROP_OPERATION {
25
+ none = 0,
26
+ cancel = 0,
27
+ move = 1 << 0,
28
+ copy = 1 << 1,
29
+ link = 1 << 2,
30
+ all = (1 << 0) | (1 << 1) | (1 << 2),
31
+ }
32
+
33
+ // Map from effectAllowed to DROP_OPERATION
34
+ export const DROP_OPERATION_ALLOWED: Record<string, number> = {
35
+ none: DROP_OPERATION.none,
36
+ copy: DROP_OPERATION.copy,
37
+ copyLink: DROP_OPERATION.copy | DROP_OPERATION.link,
38
+ copyMove: DROP_OPERATION.copy | DROP_OPERATION.move,
39
+ link: DROP_OPERATION.link,
40
+ linkMove: DROP_OPERATION.link | DROP_OPERATION.move,
41
+ move: DROP_OPERATION.move,
42
+ all: DROP_OPERATION.all,
43
+ uninitialized: DROP_OPERATION.all,
44
+ };
45
+
46
+ // Map from DROP_OPERATION to effectAllowed
47
+ export const EFFECT_ALLOWED: Record<number, string> = {
48
+ [DROP_OPERATION.none]: "none",
49
+ [DROP_OPERATION.move]: "move",
50
+ [DROP_OPERATION.copy]: "copy",
51
+ [DROP_OPERATION.copy | DROP_OPERATION.move]: "copyMove",
52
+ [DROP_OPERATION.link]: "link",
53
+ [DROP_OPERATION.link | DROP_OPERATION.move]: "linkMove",
54
+ [DROP_OPERATION.copy | DROP_OPERATION.link]: "copyLink",
55
+ [DROP_OPERATION.all]: "all",
56
+ };
57
+
58
+ // Map from dropEffect to DropOperation
59
+ export const DROP_EFFECT_TO_DROP_OPERATION: Record<string, DropOperation> = {
60
+ none: "cancel",
61
+ link: "link",
62
+ copy: "copy",
63
+ move: "move",
64
+ };
65
+
66
+ // Map from DropOperation to dropEffect
67
+ export const DROP_OPERATION_TO_DROP_EFFECT: Record<DropOperation, string> = {
68
+ cancel: "none",
69
+ link: "link",
70
+ copy: "copy",
71
+ move: "move",
72
+ };
73
+
74
+ /**
75
+ * Get the types present in drag items.
76
+ */
77
+ export function getTypes(items: DragItem[]): Set<string> {
78
+ const types = new Set<string>();
79
+ for (const item of items) {
80
+ for (const type of Object.keys(item)) {
81
+ types.add(type);
82
+ }
83
+ }
84
+ return types;
85
+ }
86
+
87
+ /**
88
+ * Write drag items to a DataTransfer object.
89
+ */
90
+ export function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {
91
+ const groupedByType = new Map<string, string[]>();
92
+ let needsCustomData = false;
93
+ const customData: object[] = [];
94
+
95
+ for (const item of items) {
96
+ const types = Object.keys(item);
97
+ if (types.length > 1) {
98
+ needsCustomData = true;
99
+ }
100
+
101
+ const dataByType: Record<string, string> = {};
102
+ for (const type of types) {
103
+ let typeItems = groupedByType.get(type);
104
+ if (!typeItems) {
105
+ typeItems = [];
106
+ groupedByType.set(type, typeItems);
107
+ } else {
108
+ needsCustomData = true;
109
+ }
110
+
111
+ const data = item[type];
112
+ dataByType[type] = data;
113
+ typeItems.push(data);
114
+ }
115
+
116
+ customData.push(dataByType);
117
+ }
118
+
119
+ for (const [type, typeItems] of groupedByType) {
120
+ if (NATIVE_DRAG_TYPES.has(type)) {
121
+ // Join all items of this type with newlines
122
+ const data = typeItems.join("\n");
123
+ dataTransfer.items.add(data, type);
124
+ } else {
125
+ // Set first item for non-native types
126
+ dataTransfer.items.add(typeItems[0], type);
127
+ }
128
+ }
129
+
130
+ if (needsCustomData) {
131
+ const data = JSON.stringify(customData);
132
+ dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Read drop items from a DataTransfer object.
138
+ */
139
+ export function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {
140
+ const items: DropItem[] = [];
141
+
142
+ if (!dataTransfer) {
143
+ return items;
144
+ }
145
+
146
+ // Check for custom drag type first
147
+ let hasCustomType = false;
148
+ if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {
149
+ try {
150
+ const data = dataTransfer.getData(CUSTOM_DRAG_TYPE);
151
+ const parsed = JSON.parse(data);
152
+ for (const item of parsed) {
153
+ items.push({
154
+ kind: "text",
155
+ types: new Set(Object.keys(item)),
156
+ getText: (type) => Promise.resolve(item[type]),
157
+ });
158
+ }
159
+ hasCustomType = true;
160
+ } catch {
161
+ // ignore parsing errors
162
+ }
163
+ }
164
+
165
+ // Fall back to native items
166
+ if (!hasCustomType) {
167
+ const stringItems = new Map<string, string>();
168
+
169
+ for (const item of dataTransfer.items) {
170
+ if (item.kind === "string") {
171
+ const type = item.type || GENERIC_TYPE;
172
+ stringItems.set(type, dataTransfer.getData(item.type));
173
+ } else if (item.kind === "file") {
174
+ const file = item.getAsFile();
175
+ if (file) {
176
+ items.push(createFileItem(file));
177
+ }
178
+ }
179
+ }
180
+
181
+ if (stringItems.size > 0) {
182
+ items.push({
183
+ kind: "text",
184
+ types: new Set(stringItems.keys()),
185
+ getText: (type) => Promise.resolve(stringItems.get(type) ?? ""),
186
+ });
187
+ }
188
+ }
189
+
190
+ return items;
191
+ }
192
+
193
+ /**
194
+ * Create a FileDropItem from a File object.
195
+ */
196
+ function createFileItem(file: File): FileDropItem {
197
+ return {
198
+ kind: "file",
199
+ type: file.type || GENERIC_TYPE,
200
+ name: file.name,
201
+ getText: () => file.text(),
202
+ getFile: () => Promise.resolve(file),
203
+ };
204
+ }
205
+
206
+ /**
207
+ * DragTypes implementation for checking drag types.
208
+ */
209
+ export class DragTypesImpl {
210
+ private types: Set<string>;
211
+ private includesUnknownTypes: boolean;
212
+
213
+ constructor(dataTransfer: DataTransfer) {
214
+ this.types = new Set<string>();
215
+ let hasFiles = false;
216
+
217
+ for (const item of dataTransfer.items) {
218
+ if (item.type !== CUSTOM_DRAG_TYPE) {
219
+ if (item.kind === "file") {
220
+ hasFiles = true;
221
+ }
222
+ if (item.type) {
223
+ this.types.add(item.type);
224
+ } else {
225
+ this.types.add(GENERIC_TYPE);
226
+ }
227
+ }
228
+ }
229
+
230
+ // Safari doesn't expose file types until drop
231
+ this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes("Files");
232
+ }
233
+
234
+ has(type: string | symbol): boolean {
235
+ if (this.includesUnknownTypes || (typeof type === "symbol" && this.types.has(GENERIC_TYPE))) {
236
+ return true;
237
+ }
238
+ return typeof type === "string" && this.types.has(type);
239
+ }
240
+ }
241
+
242
+ /**
243
+ * Check if a drop item is a text item.
244
+ */
245
+ export function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {
246
+ return dropItem.kind === "text";
247
+ }
248
+
249
+ /**
250
+ * Check if a drop item is a file item.
251
+ */
252
+ export function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {
253
+ return dropItem.kind === "file";
254
+ }
255
+
256
+ /**
257
+ * Check if a drop item is a directory item.
258
+ */
259
+ export function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {
260
+ return dropItem.kind === "directory";
261
+ }
262
+
263
+ // Global state for tracking drag operations
264
+ let globalDropEffect: string | undefined;
265
+ let globalAllowedDropOperations: number = DROP_OPERATION.none;
266
+
267
+ export function setGlobalDropEffect(effect: string | undefined): void {
268
+ globalDropEffect = effect;
269
+ }
270
+
271
+ export function getGlobalDropEffect(): string | undefined {
272
+ return globalDropEffect;
273
+ }
274
+
275
+ export function setGlobalAllowedDropOperations(ops: number): void {
276
+ globalAllowedDropOperations = ops;
277
+ }
278
+
279
+ export function getGlobalAllowedDropOperations(): number {
280
+ return globalAllowedDropOperations;
281
+ }