react-aria 3.48.0 → 3.50.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 (1248) hide show
  1. package/dist/exports/CollectionBuilder.cjs.map +1 -1
  2. package/dist/exports/CollectionBuilder.js.map +1 -1
  3. package/dist/exports/CollectionBuilder.mjs.map +1 -1
  4. package/dist/exports/index.cjs +12 -0
  5. package/dist/exports/index.cjs.map +1 -1
  6. package/dist/exports/index.js +9 -1
  7. package/dist/exports/index.js.map +1 -1
  8. package/dist/exports/index.mjs +9 -1
  9. package/dist/exports/index.mjs.map +1 -1
  10. package/dist/exports/private/actiongroup/useActionGroup.cjs.map +1 -1
  11. package/dist/exports/private/actiongroup/useActionGroup.js.map +1 -1
  12. package/dist/exports/private/actiongroup/useActionGroup.mjs.map +1 -1
  13. package/dist/exports/private/actiongroup/useActionGroupItem.cjs.map +1 -1
  14. package/dist/exports/private/actiongroup/useActionGroupItem.js.map +1 -1
  15. package/dist/exports/private/actiongroup/useActionGroupItem.mjs.map +1 -1
  16. package/dist/exports/private/autocomplete/useSearchAutocomplete.cjs.map +1 -1
  17. package/dist/exports/private/autocomplete/useSearchAutocomplete.js.map +1 -1
  18. package/dist/exports/private/autocomplete/useSearchAutocomplete.mjs.map +1 -1
  19. package/dist/exports/private/collections/BaseCollection.cjs.map +1 -1
  20. package/dist/exports/private/collections/BaseCollection.js.map +1 -1
  21. package/dist/exports/private/collections/BaseCollection.mjs.map +1 -1
  22. package/dist/exports/private/collections/useCachedChildren.cjs.map +1 -1
  23. package/dist/exports/private/collections/useCachedChildren.js.map +1 -1
  24. package/dist/exports/private/collections/useCachedChildren.mjs.map +1 -1
  25. package/dist/exports/private/focus/FocusScope.cjs.map +1 -1
  26. package/dist/exports/private/focus/FocusScope.js.map +1 -1
  27. package/dist/exports/private/focus/FocusScope.mjs.map +1 -1
  28. package/dist/exports/private/focus/virtualFocus.cjs.map +1 -1
  29. package/dist/exports/private/focus/virtualFocus.js.map +1 -1
  30. package/dist/exports/private/focus/virtualFocus.mjs.map +1 -1
  31. package/dist/exports/private/grid/GridKeyboardDelegate.cjs.map +1 -1
  32. package/dist/exports/private/grid/GridKeyboardDelegate.js.map +1 -1
  33. package/dist/exports/private/grid/GridKeyboardDelegate.mjs.map +1 -1
  34. package/dist/exports/private/grid/useGridSelectionAnnouncement.cjs.map +1 -1
  35. package/dist/exports/private/grid/useGridSelectionAnnouncement.js.map +1 -1
  36. package/dist/exports/private/grid/useGridSelectionAnnouncement.mjs.map +1 -1
  37. package/dist/exports/private/grid/useGridSelectionCheckbox.cjs.map +1 -1
  38. package/dist/exports/private/grid/useGridSelectionCheckbox.js.map +1 -1
  39. package/dist/exports/private/grid/useGridSelectionCheckbox.mjs.map +1 -1
  40. package/dist/exports/private/grid/useHighlightSelectionDescription.cjs.map +1 -1
  41. package/dist/exports/private/grid/useHighlightSelectionDescription.js.map +1 -1
  42. package/dist/exports/private/grid/useHighlightSelectionDescription.mjs.map +1 -1
  43. package/dist/exports/private/interactions/useFocusVisible.cjs.map +1 -1
  44. package/dist/exports/private/interactions/useFocusVisible.js.map +1 -1
  45. package/dist/exports/private/interactions/useFocusVisible.mjs.map +1 -1
  46. package/dist/exports/private/interactions/useFocusable.cjs.map +1 -1
  47. package/dist/exports/private/interactions/useFocusable.js.map +1 -1
  48. package/dist/exports/private/interactions/useFocusable.mjs.map +1 -1
  49. package/dist/exports/private/landmark/useLandmark.cjs.map +1 -1
  50. package/dist/exports/private/landmark/useLandmark.js.map +1 -1
  51. package/dist/exports/private/landmark/useLandmark.mjs.map +1 -1
  52. package/dist/exports/private/live-announcer/LiveAnnouncer.cjs.map +1 -1
  53. package/dist/exports/private/live-announcer/LiveAnnouncer.js.map +1 -1
  54. package/dist/exports/private/live-announcer/LiveAnnouncer.mjs.map +1 -1
  55. package/dist/exports/private/overlays/useModal.cjs.map +1 -1
  56. package/dist/exports/private/overlays/useModal.js.map +1 -1
  57. package/dist/exports/private/overlays/useModal.mjs.map +1 -1
  58. package/dist/exports/private/selection/useSelectableCollection.cjs.map +1 -1
  59. package/dist/exports/private/selection/useSelectableCollection.js.map +1 -1
  60. package/dist/exports/private/selection/useSelectableCollection.mjs.map +1 -1
  61. package/dist/exports/private/selection/useSelectableItem.cjs.map +1 -1
  62. package/dist/exports/private/selection/useSelectableItem.js.map +1 -1
  63. package/dist/exports/private/selection/useSelectableItem.mjs.map +1 -1
  64. package/dist/exports/private/selection/useSelectableList.cjs.map +1 -1
  65. package/dist/exports/private/selection/useSelectableList.js.map +1 -1
  66. package/dist/exports/private/selection/useSelectableList.mjs.map +1 -1
  67. package/dist/exports/private/selection/useTypeSelect.cjs.map +1 -1
  68. package/dist/exports/private/selection/useTypeSelect.js.map +1 -1
  69. package/dist/exports/private/selection/useTypeSelect.mjs.map +1 -1
  70. package/dist/exports/private/spinbutton/useSpinButton.cjs.map +1 -1
  71. package/dist/exports/private/spinbutton/useSpinButton.js.map +1 -1
  72. package/dist/exports/private/spinbutton/useSpinButton.mjs.map +1 -1
  73. package/dist/exports/private/steplist/useStepList.cjs.map +1 -1
  74. package/dist/exports/private/steplist/useStepList.js.map +1 -1
  75. package/dist/exports/private/steplist/useStepList.mjs.map +1 -1
  76. package/dist/exports/private/steplist/useStepListItem.cjs.map +1 -1
  77. package/dist/exports/private/steplist/useStepListItem.js.map +1 -1
  78. package/dist/exports/private/steplist/useStepListItem.mjs.map +1 -1
  79. package/dist/exports/private/utils/openLink.cjs.map +1 -1
  80. package/dist/exports/private/utils/openLink.js.map +1 -1
  81. package/dist/exports/private/utils/openLink.mjs.map +1 -1
  82. package/dist/exports/private/utils/platform.cjs.map +1 -1
  83. package/dist/exports/private/utils/platform.js.map +1 -1
  84. package/dist/exports/private/utils/platform.mjs.map +1 -1
  85. package/dist/exports/private/utils/shadowdom/DOMFunctions.cjs.map +1 -1
  86. package/dist/exports/private/utils/shadowdom/DOMFunctions.js.map +1 -1
  87. package/dist/exports/private/utils/shadowdom/DOMFunctions.mjs.map +1 -1
  88. package/dist/exports/private/utils/shadowdom/ShadowTreeWalker.cjs.map +1 -1
  89. package/dist/exports/private/utils/shadowdom/ShadowTreeWalker.js.map +1 -1
  90. package/dist/exports/private/utils/shadowdom/ShadowTreeWalker.mjs.map +1 -1
  91. package/dist/exports/private/utils/useLoadMoreSentinel.cjs.map +1 -1
  92. package/dist/exports/private/utils/useLoadMoreSentinel.js.map +1 -1
  93. package/dist/exports/private/utils/useLoadMoreSentinel.mjs.map +1 -1
  94. package/dist/exports/private/virtualizer/useVirtualizerItem.cjs.map +1 -1
  95. package/dist/exports/private/virtualizer/useVirtualizerItem.js.map +1 -1
  96. package/dist/exports/private/virtualizer/useVirtualizerItem.mjs.map +1 -1
  97. package/dist/exports/private/virtualizer/utils.cjs.map +1 -1
  98. package/dist/exports/private/virtualizer/utils.js.map +1 -1
  99. package/dist/exports/private/virtualizer/utils.mjs.map +1 -1
  100. package/dist/exports/useAutocomplete.cjs.map +1 -1
  101. package/dist/exports/useAutocomplete.js.map +1 -1
  102. package/dist/exports/useAutocomplete.mjs.map +1 -1
  103. package/dist/exports/useBreadcrumbs.cjs.map +1 -1
  104. package/dist/exports/useBreadcrumbs.js.map +1 -1
  105. package/dist/exports/useBreadcrumbs.mjs.map +1 -1
  106. package/dist/exports/useButton.cjs.map +1 -1
  107. package/dist/exports/useButton.js.map +1 -1
  108. package/dist/exports/useButton.mjs.map +1 -1
  109. package/dist/exports/useCalendar.cjs +9 -0
  110. package/dist/exports/useCalendar.cjs.map +1 -1
  111. package/dist/exports/useCalendar.js +7 -1
  112. package/dist/exports/useCalendar.js.map +1 -1
  113. package/dist/exports/useCalendar.mjs +7 -1
  114. package/dist/exports/useCalendar.mjs.map +1 -1
  115. package/dist/exports/useClipboard.cjs.map +1 -1
  116. package/dist/exports/useClipboard.js.map +1 -1
  117. package/dist/exports/useClipboard.mjs.map +1 -1
  118. package/dist/exports/useColorArea.cjs.map +1 -1
  119. package/dist/exports/useColorArea.js.map +1 -1
  120. package/dist/exports/useColorArea.mjs.map +1 -1
  121. package/dist/exports/useColorField.cjs.map +1 -1
  122. package/dist/exports/useColorField.js.map +1 -1
  123. package/dist/exports/useColorField.mjs.map +1 -1
  124. package/dist/exports/useColorSlider.cjs.map +1 -1
  125. package/dist/exports/useColorSlider.js.map +1 -1
  126. package/dist/exports/useColorSlider.mjs.map +1 -1
  127. package/dist/exports/useColorWheel.cjs.map +1 -1
  128. package/dist/exports/useColorWheel.js.map +1 -1
  129. package/dist/exports/useColorWheel.mjs.map +1 -1
  130. package/dist/exports/useComboBox.cjs.map +1 -1
  131. package/dist/exports/useComboBox.js.map +1 -1
  132. package/dist/exports/useComboBox.mjs.map +1 -1
  133. package/dist/exports/useDateField.cjs.map +1 -1
  134. package/dist/exports/useDateField.js.map +1 -1
  135. package/dist/exports/useDateField.mjs.map +1 -1
  136. package/dist/exports/useDateRangePicker.cjs.map +1 -1
  137. package/dist/exports/useDateRangePicker.js.map +1 -1
  138. package/dist/exports/useDateRangePicker.mjs.map +1 -1
  139. package/dist/exports/useDisclosure.cjs +1 -1
  140. package/dist/exports/useDisclosure.cjs.map +1 -1
  141. package/dist/exports/useDisclosure.js +1 -1
  142. package/dist/exports/useDisclosure.js.map +1 -1
  143. package/dist/exports/useDisclosure.mjs +1 -1
  144. package/dist/exports/useDisclosure.mjs.map +1 -1
  145. package/dist/exports/useDrag.cjs.map +1 -1
  146. package/dist/exports/useDrag.js.map +1 -1
  147. package/dist/exports/useDrag.mjs.map +1 -1
  148. package/dist/exports/useDraggableCollection.cjs.map +1 -1
  149. package/dist/exports/useDraggableCollection.js.map +1 -1
  150. package/dist/exports/useDraggableCollection.mjs.map +1 -1
  151. package/dist/exports/useDrop.cjs.map +1 -1
  152. package/dist/exports/useDrop.js.map +1 -1
  153. package/dist/exports/useDrop.mjs.map +1 -1
  154. package/dist/exports/useDroppableCollection.cjs.map +1 -1
  155. package/dist/exports/useDroppableCollection.js.map +1 -1
  156. package/dist/exports/useDroppableCollection.mjs.map +1 -1
  157. package/dist/exports/useFocusable.cjs.map +1 -1
  158. package/dist/exports/useFocusable.js.map +1 -1
  159. package/dist/exports/useFocusable.mjs.map +1 -1
  160. package/dist/exports/useGridList.cjs.map +1 -1
  161. package/dist/exports/useGridList.js.map +1 -1
  162. package/dist/exports/useGridList.mjs.map +1 -1
  163. package/dist/exports/useInteractOutside.cjs.map +1 -1
  164. package/dist/exports/useInteractOutside.js.map +1 -1
  165. package/dist/exports/useInteractOutside.mjs.map +1 -1
  166. package/dist/exports/useLandmark.cjs.map +1 -1
  167. package/dist/exports/useLandmark.js.map +1 -1
  168. package/dist/exports/useLandmark.mjs.map +1 -1
  169. package/dist/exports/useListBox.cjs.map +1 -1
  170. package/dist/exports/useListBox.js.map +1 -1
  171. package/dist/exports/useListBox.mjs.map +1 -1
  172. package/dist/exports/useLocalizedStringFormatter.cjs.map +1 -1
  173. package/dist/exports/useLocalizedStringFormatter.js.map +1 -1
  174. package/dist/exports/useLocalizedStringFormatter.mjs.map +1 -1
  175. package/dist/exports/useMove.cjs.map +1 -1
  176. package/dist/exports/useMove.js.map +1 -1
  177. package/dist/exports/useMove.mjs.map +1 -1
  178. package/dist/exports/useOverlayPosition.cjs.map +1 -1
  179. package/dist/exports/useOverlayPosition.js.map +1 -1
  180. package/dist/exports/useOverlayPosition.mjs.map +1 -1
  181. package/dist/exports/useProgressBar.cjs.map +1 -1
  182. package/dist/exports/useProgressBar.js.map +1 -1
  183. package/dist/exports/useProgressBar.mjs.map +1 -1
  184. package/dist/exports/useRangeCalendar.cjs +15 -0
  185. package/dist/exports/useRangeCalendar.cjs.map +1 -1
  186. package/dist/exports/useRangeCalendar.js +11 -1
  187. package/dist/exports/useRangeCalendar.js.map +1 -1
  188. package/dist/exports/useRangeCalendar.mjs +11 -1
  189. package/dist/exports/useRangeCalendar.mjs.map +1 -1
  190. package/dist/exports/useSelect.cjs.map +1 -1
  191. package/dist/exports/useSelect.js.map +1 -1
  192. package/dist/exports/useSelect.mjs.map +1 -1
  193. package/dist/exports/useSlider.cjs.map +1 -1
  194. package/dist/exports/useSlider.js.map +1 -1
  195. package/dist/exports/useSlider.mjs.map +1 -1
  196. package/dist/exports/useTable.cjs.map +1 -1
  197. package/dist/exports/useTable.js.map +1 -1
  198. package/dist/exports/useTable.mjs.map +1 -1
  199. package/dist/exports/useTimeField.cjs.map +1 -1
  200. package/dist/exports/useTimeField.js.map +1 -1
  201. package/dist/exports/useTimeField.mjs.map +1 -1
  202. package/dist/exports/useToggleButton.cjs.map +1 -1
  203. package/dist/exports/useToggleButton.js.map +1 -1
  204. package/dist/exports/useToggleButton.mjs.map +1 -1
  205. package/dist/exports/useToggleButtonGroup.cjs.map +1 -1
  206. package/dist/exports/useToggleButtonGroup.js.map +1 -1
  207. package/dist/exports/useToggleButtonGroup.mjs.map +1 -1
  208. package/dist/exports/useTree.cjs.map +1 -1
  209. package/dist/exports/useTree.js.map +1 -1
  210. package/dist/exports/useTree.mjs.map +1 -1
  211. package/dist/private/actiongroup/useActionGroup.cjs +3 -3
  212. package/dist/private/actiongroup/useActionGroup.cjs.map +1 -1
  213. package/dist/private/actiongroup/useActionGroup.js +3 -3
  214. package/dist/private/actiongroup/useActionGroup.js.map +1 -1
  215. package/dist/private/actiongroup/useActionGroup.mjs +3 -3
  216. package/dist/private/actiongroup/useActionGroup.mjs.map +1 -1
  217. package/dist/private/actiongroup/useActionGroupItem.cjs +5 -4
  218. package/dist/private/actiongroup/useActionGroupItem.cjs.map +1 -1
  219. package/dist/private/actiongroup/useActionGroupItem.js +5 -4
  220. package/dist/private/actiongroup/useActionGroupItem.js.map +1 -1
  221. package/dist/private/actiongroup/useActionGroupItem.mjs +5 -4
  222. package/dist/private/actiongroup/useActionGroupItem.mjs.map +1 -1
  223. package/dist/private/aria-modal-polyfill/ariaModalPolyfill.cjs +7 -5
  224. package/dist/private/aria-modal-polyfill/ariaModalPolyfill.cjs.map +1 -1
  225. package/dist/private/aria-modal-polyfill/ariaModalPolyfill.js +7 -5
  226. package/dist/private/aria-modal-polyfill/ariaModalPolyfill.js.map +1 -1
  227. package/dist/private/aria-modal-polyfill/ariaModalPolyfill.mjs +7 -5
  228. package/dist/private/aria-modal-polyfill/ariaModalPolyfill.mjs.map +1 -1
  229. package/dist/private/autocomplete/useAutocomplete.cjs +16 -7
  230. package/dist/private/autocomplete/useAutocomplete.cjs.map +1 -1
  231. package/dist/private/autocomplete/useAutocomplete.js +16 -7
  232. package/dist/private/autocomplete/useAutocomplete.js.map +1 -1
  233. package/dist/private/autocomplete/useAutocomplete.mjs +16 -7
  234. package/dist/private/autocomplete/useAutocomplete.mjs.map +1 -1
  235. package/dist/private/autocomplete/useSearchAutocomplete.cjs.map +1 -1
  236. package/dist/private/autocomplete/useSearchAutocomplete.js.map +1 -1
  237. package/dist/private/autocomplete/useSearchAutocomplete.mjs.map +1 -1
  238. package/dist/private/breadcrumbs/useBreadcrumbItem.cjs.map +1 -1
  239. package/dist/private/breadcrumbs/useBreadcrumbItem.js.map +1 -1
  240. package/dist/private/breadcrumbs/useBreadcrumbItem.mjs.map +1 -1
  241. package/dist/private/breadcrumbs/useBreadcrumbs.cjs.map +1 -1
  242. package/dist/private/breadcrumbs/useBreadcrumbs.js.map +1 -1
  243. package/dist/private/breadcrumbs/useBreadcrumbs.mjs.map +1 -1
  244. package/dist/private/button/useButton.cjs.map +1 -1
  245. package/dist/private/button/useButton.js.map +1 -1
  246. package/dist/private/button/useButton.mjs.map +1 -1
  247. package/dist/private/button/useToggleButton.cjs.map +1 -1
  248. package/dist/private/button/useToggleButton.js.map +1 -1
  249. package/dist/private/button/useToggleButton.mjs.map +1 -1
  250. package/dist/private/button/useToggleButtonGroup.cjs.map +1 -1
  251. package/dist/private/button/useToggleButtonGroup.js.map +1 -1
  252. package/dist/private/button/useToggleButtonGroup.mjs.map +1 -1
  253. package/dist/private/calendar/useCalendar.cjs.map +1 -1
  254. package/dist/private/calendar/useCalendar.js.map +1 -1
  255. package/dist/private/calendar/useCalendar.mjs.map +1 -1
  256. package/dist/private/calendar/useCalendarBase.cjs.map +1 -1
  257. package/dist/private/calendar/useCalendarBase.js.map +1 -1
  258. package/dist/private/calendar/useCalendarBase.mjs.map +1 -1
  259. package/dist/private/calendar/useCalendarCell.cjs +10 -14
  260. package/dist/private/calendar/useCalendarCell.cjs.map +1 -1
  261. package/dist/private/calendar/useCalendarCell.js +10 -14
  262. package/dist/private/calendar/useCalendarCell.js.map +1 -1
  263. package/dist/private/calendar/useCalendarCell.mjs +10 -14
  264. package/dist/private/calendar/useCalendarCell.mjs.map +1 -1
  265. package/dist/private/calendar/useCalendarGrid.cjs +9 -5
  266. package/dist/private/calendar/useCalendarGrid.cjs.map +1 -1
  267. package/dist/private/calendar/useCalendarGrid.js +10 -6
  268. package/dist/private/calendar/useCalendarGrid.js.map +1 -1
  269. package/dist/private/calendar/useCalendarGrid.mjs +10 -6
  270. package/dist/private/calendar/useCalendarGrid.mjs.map +1 -1
  271. package/dist/private/calendar/useCalendarHeading.cjs +56 -0
  272. package/dist/private/calendar/useCalendarHeading.cjs.map +1 -0
  273. package/dist/private/calendar/useCalendarHeading.js +52 -0
  274. package/dist/private/calendar/useCalendarHeading.js.map +1 -0
  275. package/dist/private/calendar/useCalendarHeading.mjs +51 -0
  276. package/dist/private/calendar/useCalendarHeading.mjs.map +1 -0
  277. package/dist/private/calendar/useCalendarMonthPicker.cjs +66 -0
  278. package/dist/private/calendar/useCalendarMonthPicker.cjs.map +1 -0
  279. package/dist/private/calendar/useCalendarMonthPicker.js +61 -0
  280. package/dist/private/calendar/useCalendarMonthPicker.js.map +1 -0
  281. package/dist/private/calendar/useCalendarMonthPicker.mjs +61 -0
  282. package/dist/private/calendar/useCalendarMonthPicker.mjs.map +1 -0
  283. package/dist/private/calendar/useCalendarYearPicker.cjs +90 -0
  284. package/dist/private/calendar/useCalendarYearPicker.cjs.map +1 -0
  285. package/dist/private/calendar/useCalendarYearPicker.js +86 -0
  286. package/dist/private/calendar/useCalendarYearPicker.js.map +1 -0
  287. package/dist/private/calendar/useCalendarYearPicker.mjs +85 -0
  288. package/dist/private/calendar/useCalendarYearPicker.mjs.map +1 -0
  289. package/dist/private/calendar/useRangeCalendar.cjs +1 -1
  290. package/dist/private/calendar/useRangeCalendar.cjs.map +1 -1
  291. package/dist/private/calendar/useRangeCalendar.js +1 -1
  292. package/dist/private/calendar/useRangeCalendar.js.map +1 -1
  293. package/dist/private/calendar/useRangeCalendar.mjs +1 -1
  294. package/dist/private/calendar/useRangeCalendar.mjs.map +1 -1
  295. package/dist/private/calendar/utils.cjs +20 -4
  296. package/dist/private/calendar/utils.cjs.map +1 -1
  297. package/dist/private/calendar/utils.js +22 -5
  298. package/dist/private/calendar/utils.js.map +1 -1
  299. package/dist/private/calendar/utils.mjs +20 -4
  300. package/dist/private/calendar/utils.mjs.map +1 -1
  301. package/dist/private/checkbox/useCheckbox.cjs +6 -35
  302. package/dist/private/checkbox/useCheckbox.cjs.map +1 -1
  303. package/dist/private/checkbox/useCheckbox.js +6 -35
  304. package/dist/private/checkbox/useCheckbox.js.map +1 -1
  305. package/dist/private/checkbox/useCheckbox.mjs +6 -35
  306. package/dist/private/checkbox/useCheckbox.mjs.map +1 -1
  307. package/dist/private/checkbox/useCheckboxGroup.cjs.map +1 -1
  308. package/dist/private/checkbox/useCheckboxGroup.js.map +1 -1
  309. package/dist/private/checkbox/useCheckboxGroup.mjs.map +1 -1
  310. package/dist/private/checkbox/useCheckboxGroupItem.cjs +1 -1
  311. package/dist/private/checkbox/useCheckboxGroupItem.cjs.map +1 -1
  312. package/dist/private/checkbox/useCheckboxGroupItem.js +1 -1
  313. package/dist/private/checkbox/useCheckboxGroupItem.js.map +1 -1
  314. package/dist/private/checkbox/useCheckboxGroupItem.mjs +1 -1
  315. package/dist/private/checkbox/useCheckboxGroupItem.mjs.map +1 -1
  316. package/dist/private/checkbox/utils.cjs.map +1 -1
  317. package/dist/private/checkbox/utils.js.map +1 -1
  318. package/dist/private/checkbox/utils.mjs.map +1 -1
  319. package/dist/private/collections/BaseCollection.cjs +4 -4
  320. package/dist/private/collections/BaseCollection.cjs.map +1 -1
  321. package/dist/private/collections/BaseCollection.js +4 -4
  322. package/dist/private/collections/BaseCollection.js.map +1 -1
  323. package/dist/private/collections/BaseCollection.mjs +4 -4
  324. package/dist/private/collections/BaseCollection.mjs.map +1 -1
  325. package/dist/private/collections/CollectionBuilder.cjs +5 -3
  326. package/dist/private/collections/CollectionBuilder.cjs.map +1 -1
  327. package/dist/private/collections/CollectionBuilder.js +5 -3
  328. package/dist/private/collections/CollectionBuilder.js.map +1 -1
  329. package/dist/private/collections/CollectionBuilder.mjs +5 -3
  330. package/dist/private/collections/CollectionBuilder.mjs.map +1 -1
  331. package/dist/private/collections/Document.cjs.map +1 -1
  332. package/dist/private/collections/Document.js.map +1 -1
  333. package/dist/private/collections/Document.mjs.map +1 -1
  334. package/dist/private/collections/Hidden.cjs.map +1 -1
  335. package/dist/private/collections/Hidden.js.map +1 -1
  336. package/dist/private/collections/Hidden.mjs.map +1 -1
  337. package/dist/private/collections/useCachedChildren.cjs +29 -8
  338. package/dist/private/collections/useCachedChildren.cjs.map +1 -1
  339. package/dist/private/collections/useCachedChildren.js +29 -8
  340. package/dist/private/collections/useCachedChildren.js.map +1 -1
  341. package/dist/private/collections/useCachedChildren.mjs +29 -8
  342. package/dist/private/collections/useCachedChildren.mjs.map +1 -1
  343. package/dist/private/color/useColorArea.cjs.map +1 -1
  344. package/dist/private/color/useColorArea.js.map +1 -1
  345. package/dist/private/color/useColorArea.mjs.map +1 -1
  346. package/dist/private/color/useColorAreaGradient.cjs +1 -1
  347. package/dist/private/color/useColorAreaGradient.cjs.map +1 -1
  348. package/dist/private/color/useColorAreaGradient.js +1 -1
  349. package/dist/private/color/useColorAreaGradient.js.map +1 -1
  350. package/dist/private/color/useColorAreaGradient.mjs +1 -1
  351. package/dist/private/color/useColorAreaGradient.mjs.map +1 -1
  352. package/dist/private/color/useColorChannelField.cjs.map +1 -1
  353. package/dist/private/color/useColorChannelField.js.map +1 -1
  354. package/dist/private/color/useColorChannelField.mjs.map +1 -1
  355. package/dist/private/color/useColorField.cjs +1 -1
  356. package/dist/private/color/useColorField.cjs.map +1 -1
  357. package/dist/private/color/useColorField.js +1 -1
  358. package/dist/private/color/useColorField.js.map +1 -1
  359. package/dist/private/color/useColorField.mjs +1 -1
  360. package/dist/private/color/useColorField.mjs.map +1 -1
  361. package/dist/private/color/useColorSlider.cjs +2 -2
  362. package/dist/private/color/useColorSlider.cjs.map +1 -1
  363. package/dist/private/color/useColorSlider.js +2 -2
  364. package/dist/private/color/useColorSlider.js.map +1 -1
  365. package/dist/private/color/useColorSlider.mjs +2 -2
  366. package/dist/private/color/useColorSlider.mjs.map +1 -1
  367. package/dist/private/color/useColorSwatch.cjs.map +1 -1
  368. package/dist/private/color/useColorSwatch.js.map +1 -1
  369. package/dist/private/color/useColorSwatch.mjs.map +1 -1
  370. package/dist/private/color/useColorWheel.cjs.map +1 -1
  371. package/dist/private/color/useColorWheel.js.map +1 -1
  372. package/dist/private/color/useColorWheel.mjs.map +1 -1
  373. package/dist/private/combobox/useComboBox.cjs +5 -3
  374. package/dist/private/combobox/useComboBox.cjs.map +1 -1
  375. package/dist/private/combobox/useComboBox.js +5 -3
  376. package/dist/private/combobox/useComboBox.js.map +1 -1
  377. package/dist/private/combobox/useComboBox.mjs +5 -3
  378. package/dist/private/combobox/useComboBox.mjs.map +1 -1
  379. package/dist/private/datepicker/useDateField.cjs.map +1 -1
  380. package/dist/private/datepicker/useDateField.js.map +1 -1
  381. package/dist/private/datepicker/useDateField.mjs.map +1 -1
  382. package/dist/private/datepicker/useDatePicker.cjs.map +1 -1
  383. package/dist/private/datepicker/useDatePicker.js.map +1 -1
  384. package/dist/private/datepicker/useDatePicker.mjs.map +1 -1
  385. package/dist/private/datepicker/useDatePickerGroup.cjs.map +1 -1
  386. package/dist/private/datepicker/useDatePickerGroup.js.map +1 -1
  387. package/dist/private/datepicker/useDatePickerGroup.mjs.map +1 -1
  388. package/dist/private/datepicker/useDateRangePicker.cjs.map +1 -1
  389. package/dist/private/datepicker/useDateRangePicker.js.map +1 -1
  390. package/dist/private/datepicker/useDateRangePicker.mjs.map +1 -1
  391. package/dist/private/datepicker/useDateSegment.cjs +2 -2
  392. package/dist/private/datepicker/useDateSegment.cjs.map +1 -1
  393. package/dist/private/datepicker/useDateSegment.js +2 -2
  394. package/dist/private/datepicker/useDateSegment.js.map +1 -1
  395. package/dist/private/datepicker/useDateSegment.mjs +2 -2
  396. package/dist/private/datepicker/useDateSegment.mjs.map +1 -1
  397. package/dist/private/datepicker/useDisplayNames.cjs +1 -2
  398. package/dist/private/datepicker/useDisplayNames.cjs.map +1 -1
  399. package/dist/private/datepicker/useDisplayNames.js +1 -2
  400. package/dist/private/datepicker/useDisplayNames.js.map +1 -1
  401. package/dist/private/datepicker/useDisplayNames.mjs +1 -2
  402. package/dist/private/datepicker/useDisplayNames.mjs.map +1 -1
  403. package/dist/private/dialog/useDialog.cjs.map +1 -1
  404. package/dist/private/dialog/useDialog.js.map +1 -1
  405. package/dist/private/dialog/useDialog.mjs.map +1 -1
  406. package/dist/private/disclosure/useDisclosure.cjs.map +1 -1
  407. package/dist/private/disclosure/useDisclosure.js.map +1 -1
  408. package/dist/private/disclosure/useDisclosure.mjs.map +1 -1
  409. package/dist/private/dnd/DragManager.cjs +4 -1
  410. package/dist/private/dnd/DragManager.cjs.map +1 -1
  411. package/dist/private/dnd/DragManager.js +4 -1
  412. package/dist/private/dnd/DragManager.js.map +1 -1
  413. package/dist/private/dnd/DragManager.mjs +4 -1
  414. package/dist/private/dnd/DragManager.mjs.map +1 -1
  415. package/dist/private/dnd/DragPreview.cjs.map +1 -1
  416. package/dist/private/dnd/DragPreview.js.map +1 -1
  417. package/dist/private/dnd/DragPreview.mjs.map +1 -1
  418. package/dist/private/dnd/DropTargetKeyboardNavigation.cjs +16 -4
  419. package/dist/private/dnd/DropTargetKeyboardNavigation.cjs.map +1 -1
  420. package/dist/private/dnd/DropTargetKeyboardNavigation.js +16 -4
  421. package/dist/private/dnd/DropTargetKeyboardNavigation.js.map +1 -1
  422. package/dist/private/dnd/DropTargetKeyboardNavigation.mjs +16 -4
  423. package/dist/private/dnd/DropTargetKeyboardNavigation.mjs.map +1 -1
  424. package/dist/private/dnd/ListDropTargetDelegate.cjs.map +1 -1
  425. package/dist/private/dnd/ListDropTargetDelegate.js.map +1 -1
  426. package/dist/private/dnd/ListDropTargetDelegate.mjs.map +1 -1
  427. package/dist/private/dnd/constants.cjs.map +1 -1
  428. package/dist/private/dnd/constants.js.map +1 -1
  429. package/dist/private/dnd/constants.mjs.map +1 -1
  430. package/dist/private/dnd/useAutoScroll.cjs.map +1 -1
  431. package/dist/private/dnd/useAutoScroll.js.map +1 -1
  432. package/dist/private/dnd/useAutoScroll.mjs.map +1 -1
  433. package/dist/private/dnd/useClipboard.cjs.map +1 -1
  434. package/dist/private/dnd/useClipboard.js.map +1 -1
  435. package/dist/private/dnd/useClipboard.mjs.map +1 -1
  436. package/dist/private/dnd/useDrag.cjs.map +1 -1
  437. package/dist/private/dnd/useDrag.js.map +1 -1
  438. package/dist/private/dnd/useDrag.mjs.map +1 -1
  439. package/dist/private/dnd/useDraggableCollection.cjs.map +1 -1
  440. package/dist/private/dnd/useDraggableCollection.js.map +1 -1
  441. package/dist/private/dnd/useDraggableCollection.mjs.map +1 -1
  442. package/dist/private/dnd/useDraggableItem.cjs.map +1 -1
  443. package/dist/private/dnd/useDraggableItem.js.map +1 -1
  444. package/dist/private/dnd/useDraggableItem.mjs.map +1 -1
  445. package/dist/private/dnd/useDrop.cjs.map +1 -1
  446. package/dist/private/dnd/useDrop.js.map +1 -1
  447. package/dist/private/dnd/useDrop.mjs.map +1 -1
  448. package/dist/private/dnd/useDropIndicator.cjs.map +1 -1
  449. package/dist/private/dnd/useDropIndicator.js.map +1 -1
  450. package/dist/private/dnd/useDropIndicator.mjs.map +1 -1
  451. package/dist/private/dnd/useDroppableCollection.cjs.map +1 -1
  452. package/dist/private/dnd/useDroppableCollection.js.map +1 -1
  453. package/dist/private/dnd/useDroppableCollection.mjs.map +1 -1
  454. package/dist/private/dnd/useDroppableItem.cjs.map +1 -1
  455. package/dist/private/dnd/useDroppableItem.js.map +1 -1
  456. package/dist/private/dnd/useDroppableItem.mjs.map +1 -1
  457. package/dist/private/dnd/useVirtualDrop.cjs.map +1 -1
  458. package/dist/private/dnd/useVirtualDrop.js.map +1 -1
  459. package/dist/private/dnd/useVirtualDrop.mjs.map +1 -1
  460. package/dist/private/dnd/utils.cjs +14 -4
  461. package/dist/private/dnd/utils.cjs.map +1 -1
  462. package/dist/private/dnd/utils.js +14 -4
  463. package/dist/private/dnd/utils.js.map +1 -1
  464. package/dist/private/dnd/utils.mjs +14 -4
  465. package/dist/private/dnd/utils.mjs.map +1 -1
  466. package/dist/private/focus/FocusRing.cjs.map +1 -1
  467. package/dist/private/focus/FocusRing.js.map +1 -1
  468. package/dist/private/focus/FocusRing.mjs.map +1 -1
  469. package/dist/private/focus/FocusScope.cjs +4 -1
  470. package/dist/private/focus/FocusScope.cjs.map +1 -1
  471. package/dist/private/focus/FocusScope.js +4 -1
  472. package/dist/private/focus/FocusScope.js.map +1 -1
  473. package/dist/private/focus/FocusScope.mjs +4 -1
  474. package/dist/private/focus/FocusScope.mjs.map +1 -1
  475. package/dist/private/focus/useFocusRing.cjs.map +1 -1
  476. package/dist/private/focus/useFocusRing.js.map +1 -1
  477. package/dist/private/focus/useFocusRing.mjs.map +1 -1
  478. package/dist/private/focus/useHasTabbableChild.cjs.map +1 -1
  479. package/dist/private/focus/useHasTabbableChild.js.map +1 -1
  480. package/dist/private/focus/useHasTabbableChild.mjs.map +1 -1
  481. package/dist/private/form/useFormValidation.cjs +1 -1
  482. package/dist/private/form/useFormValidation.cjs.map +1 -1
  483. package/dist/private/form/useFormValidation.js +1 -1
  484. package/dist/private/form/useFormValidation.js.map +1 -1
  485. package/dist/private/form/useFormValidation.mjs +1 -1
  486. package/dist/private/form/useFormValidation.mjs.map +1 -1
  487. package/dist/private/grid/GridKeyboardDelegate.cjs +9 -9
  488. package/dist/private/grid/GridKeyboardDelegate.cjs.map +1 -1
  489. package/dist/private/grid/GridKeyboardDelegate.js +10 -10
  490. package/dist/private/grid/GridKeyboardDelegate.js.map +1 -1
  491. package/dist/private/grid/GridKeyboardDelegate.mjs +9 -9
  492. package/dist/private/grid/GridKeyboardDelegate.mjs.map +1 -1
  493. package/dist/private/grid/useGrid.cjs.map +1 -1
  494. package/dist/private/grid/useGrid.js.map +1 -1
  495. package/dist/private/grid/useGrid.mjs.map +1 -1
  496. package/dist/private/grid/useGridCell.cjs.map +1 -1
  497. package/dist/private/grid/useGridCell.js.map +1 -1
  498. package/dist/private/grid/useGridCell.mjs.map +1 -1
  499. package/dist/private/grid/useGridRow.cjs.map +1 -1
  500. package/dist/private/grid/useGridRow.js.map +1 -1
  501. package/dist/private/grid/useGridRow.mjs.map +1 -1
  502. package/dist/private/grid/useGridRowGroup.cjs.map +1 -1
  503. package/dist/private/grid/useGridRowGroup.js.map +1 -1
  504. package/dist/private/grid/useGridRowGroup.mjs.map +1 -1
  505. package/dist/private/grid/useGridSelectionAnnouncement.cjs.map +1 -1
  506. package/dist/private/grid/useGridSelectionAnnouncement.js.map +1 -1
  507. package/dist/private/grid/useGridSelectionAnnouncement.mjs.map +1 -1
  508. package/dist/private/grid/useGridSelectionCheckbox.cjs.map +1 -1
  509. package/dist/private/grid/useGridSelectionCheckbox.js.map +1 -1
  510. package/dist/private/grid/useGridSelectionCheckbox.mjs.map +1 -1
  511. package/dist/private/grid/useHighlightSelectionDescription.cjs.map +1 -1
  512. package/dist/private/grid/useHighlightSelectionDescription.js.map +1 -1
  513. package/dist/private/grid/useHighlightSelectionDescription.mjs.map +1 -1
  514. package/dist/private/grid/utils.cjs.map +1 -1
  515. package/dist/private/grid/utils.js.map +1 -1
  516. package/dist/private/grid/utils.mjs.map +1 -1
  517. package/dist/private/gridlist/useGridList.cjs +2 -1
  518. package/dist/private/gridlist/useGridList.cjs.map +1 -1
  519. package/dist/private/gridlist/useGridList.js +2 -1
  520. package/dist/private/gridlist/useGridList.js.map +1 -1
  521. package/dist/private/gridlist/useGridList.mjs +2 -1
  522. package/dist/private/gridlist/useGridList.mjs.map +1 -1
  523. package/dist/private/gridlist/useGridListItem.cjs +66 -23
  524. package/dist/private/gridlist/useGridListItem.cjs.map +1 -1
  525. package/dist/private/gridlist/useGridListItem.js +67 -23
  526. package/dist/private/gridlist/useGridListItem.js.map +1 -1
  527. package/dist/private/gridlist/useGridListItem.mjs +66 -23
  528. package/dist/private/gridlist/useGridListItem.mjs.map +1 -1
  529. package/dist/private/gridlist/useGridListSection.cjs +3 -1
  530. package/dist/private/gridlist/useGridListSection.cjs.map +1 -1
  531. package/dist/private/gridlist/useGridListSection.js +3 -1
  532. package/dist/private/gridlist/useGridListSection.js.map +1 -1
  533. package/dist/private/gridlist/useGridListSection.mjs +3 -1
  534. package/dist/private/gridlist/useGridListSection.mjs.map +1 -1
  535. package/dist/private/gridlist/useGridListSelectionCheckbox.cjs.map +1 -1
  536. package/dist/private/gridlist/useGridListSelectionCheckbox.js.map +1 -1
  537. package/dist/private/gridlist/useGridListSelectionCheckbox.mjs.map +1 -1
  538. package/dist/private/gridlist/utils.cjs.map +1 -1
  539. package/dist/private/gridlist/utils.js.map +1 -1
  540. package/dist/private/gridlist/utils.mjs.map +1 -1
  541. package/dist/private/i18n/I18nProvider.cjs.map +1 -1
  542. package/dist/private/i18n/I18nProvider.js.map +1 -1
  543. package/dist/private/i18n/I18nProvider.mjs.map +1 -1
  544. package/dist/private/i18n/server.cjs.map +1 -1
  545. package/dist/private/i18n/server.js.map +1 -1
  546. package/dist/private/i18n/server.mjs.map +1 -1
  547. package/dist/private/i18n/useCollator.cjs.map +1 -1
  548. package/dist/private/i18n/useCollator.js.map +1 -1
  549. package/dist/private/i18n/useCollator.mjs.map +1 -1
  550. package/dist/private/i18n/useDateFormatter.cjs.map +1 -1
  551. package/dist/private/i18n/useDateFormatter.js.map +1 -1
  552. package/dist/private/i18n/useDateFormatter.mjs.map +1 -1
  553. package/dist/private/i18n/useDefaultLocale.cjs +2 -1
  554. package/dist/private/i18n/useDefaultLocale.cjs.map +1 -1
  555. package/dist/private/i18n/useDefaultLocale.js +2 -1
  556. package/dist/private/i18n/useDefaultLocale.js.map +1 -1
  557. package/dist/private/i18n/useDefaultLocale.mjs +2 -1
  558. package/dist/private/i18n/useDefaultLocale.mjs.map +1 -1
  559. package/dist/private/i18n/useFilter.cjs.map +1 -1
  560. package/dist/private/i18n/useFilter.js.map +1 -1
  561. package/dist/private/i18n/useFilter.mjs.map +1 -1
  562. package/dist/private/i18n/useListFormatter.cjs.map +1 -1
  563. package/dist/private/i18n/useListFormatter.js.map +1 -1
  564. package/dist/private/i18n/useListFormatter.mjs.map +1 -1
  565. package/dist/private/i18n/useLocalizedStringFormatter.cjs.map +1 -1
  566. package/dist/private/i18n/useLocalizedStringFormatter.js.map +1 -1
  567. package/dist/private/i18n/useLocalizedStringFormatter.mjs.map +1 -1
  568. package/dist/private/i18n/useNumberFormatter.cjs.map +1 -1
  569. package/dist/private/i18n/useNumberFormatter.js.map +1 -1
  570. package/dist/private/i18n/useNumberFormatter.mjs.map +1 -1
  571. package/dist/private/i18n/utils.cjs +2 -2
  572. package/dist/private/i18n/utils.cjs.map +1 -1
  573. package/dist/private/i18n/utils.js +2 -2
  574. package/dist/private/i18n/utils.js.map +1 -1
  575. package/dist/private/i18n/utils.mjs +2 -2
  576. package/dist/private/i18n/utils.mjs.map +1 -1
  577. package/dist/private/interactions/PressResponder.cjs.map +1 -1
  578. package/dist/private/interactions/PressResponder.js.map +1 -1
  579. package/dist/private/interactions/PressResponder.mjs.map +1 -1
  580. package/dist/private/interactions/Pressable.cjs.map +1 -1
  581. package/dist/private/interactions/Pressable.js.map +1 -1
  582. package/dist/private/interactions/Pressable.mjs.map +1 -1
  583. package/dist/private/interactions/context.cjs.map +1 -1
  584. package/dist/private/interactions/context.js.map +1 -1
  585. package/dist/private/interactions/context.mjs.map +1 -1
  586. package/dist/private/interactions/createEventHandler.cjs +3 -0
  587. package/dist/private/interactions/createEventHandler.cjs.map +1 -1
  588. package/dist/private/interactions/createEventHandler.js +3 -0
  589. package/dist/private/interactions/createEventHandler.js.map +1 -1
  590. package/dist/private/interactions/createEventHandler.mjs +3 -0
  591. package/dist/private/interactions/createEventHandler.mjs.map +1 -1
  592. package/dist/private/interactions/focusSafely.cjs.map +1 -1
  593. package/dist/private/interactions/focusSafely.js.map +1 -1
  594. package/dist/private/interactions/focusSafely.mjs.map +1 -1
  595. package/dist/private/interactions/textSelection.cjs.map +1 -1
  596. package/dist/private/interactions/textSelection.js.map +1 -1
  597. package/dist/private/interactions/textSelection.mjs.map +1 -1
  598. package/dist/private/interactions/useFocus.cjs.map +1 -1
  599. package/dist/private/interactions/useFocus.js.map +1 -1
  600. package/dist/private/interactions/useFocus.mjs.map +1 -1
  601. package/dist/private/interactions/useFocusVisible.cjs +20 -8
  602. package/dist/private/interactions/useFocusVisible.cjs.map +1 -1
  603. package/dist/private/interactions/useFocusVisible.js +20 -8
  604. package/dist/private/interactions/useFocusVisible.js.map +1 -1
  605. package/dist/private/interactions/useFocusVisible.mjs +20 -8
  606. package/dist/private/interactions/useFocusVisible.mjs.map +1 -1
  607. package/dist/private/interactions/useFocusWithin.cjs.map +1 -1
  608. package/dist/private/interactions/useFocusWithin.js.map +1 -1
  609. package/dist/private/interactions/useFocusWithin.mjs.map +1 -1
  610. package/dist/private/interactions/useFocusable.cjs.map +1 -1
  611. package/dist/private/interactions/useFocusable.js.map +1 -1
  612. package/dist/private/interactions/useFocusable.mjs.map +1 -1
  613. package/dist/private/interactions/useHover.cjs.map +1 -1
  614. package/dist/private/interactions/useHover.js.map +1 -1
  615. package/dist/private/interactions/useHover.mjs.map +1 -1
  616. package/dist/private/interactions/useInteractOutside.cjs.map +1 -1
  617. package/dist/private/interactions/useInteractOutside.js.map +1 -1
  618. package/dist/private/interactions/useInteractOutside.mjs.map +1 -1
  619. package/dist/private/interactions/useKeyboard.cjs.map +1 -1
  620. package/dist/private/interactions/useKeyboard.js.map +1 -1
  621. package/dist/private/interactions/useKeyboard.mjs.map +1 -1
  622. package/dist/private/interactions/useLongPress.cjs.map +1 -1
  623. package/dist/private/interactions/useLongPress.js.map +1 -1
  624. package/dist/private/interactions/useLongPress.mjs.map +1 -1
  625. package/dist/private/interactions/useMove.cjs.map +1 -1
  626. package/dist/private/interactions/useMove.js.map +1 -1
  627. package/dist/private/interactions/useMove.mjs.map +1 -1
  628. package/dist/private/interactions/usePress.cjs +11 -0
  629. package/dist/private/interactions/usePress.cjs.map +1 -1
  630. package/dist/private/interactions/usePress.js +12 -1
  631. package/dist/private/interactions/usePress.js.map +1 -1
  632. package/dist/private/interactions/usePress.mjs +12 -1
  633. package/dist/private/interactions/usePress.mjs.map +1 -1
  634. package/dist/private/interactions/useScrollWheel.cjs.map +1 -1
  635. package/dist/private/interactions/useScrollWheel.js.map +1 -1
  636. package/dist/private/interactions/useScrollWheel.mjs.map +1 -1
  637. package/dist/private/interactions/utils.cjs.map +1 -1
  638. package/dist/private/interactions/utils.js.map +1 -1
  639. package/dist/private/interactions/utils.mjs.map +1 -1
  640. package/dist/private/intl/tag/en-US.cjs.map +1 -1
  641. package/dist/private/intl/tag/en-US.js.map +1 -1
  642. package/dist/private/intl/tag/en-US.mjs.map +1 -1
  643. package/dist/private/label/useField.cjs.map +1 -1
  644. package/dist/private/label/useField.js.map +1 -1
  645. package/dist/private/label/useField.mjs.map +1 -1
  646. package/dist/private/label/useLabel.cjs.map +1 -1
  647. package/dist/private/label/useLabel.js.map +1 -1
  648. package/dist/private/label/useLabel.mjs.map +1 -1
  649. package/dist/private/landmark/useLandmark.cjs +2 -1
  650. package/dist/private/landmark/useLandmark.cjs.map +1 -1
  651. package/dist/private/landmark/useLandmark.js +2 -1
  652. package/dist/private/landmark/useLandmark.js.map +1 -1
  653. package/dist/private/landmark/useLandmark.mjs +2 -1
  654. package/dist/private/landmark/useLandmark.mjs.map +1 -1
  655. package/dist/private/link/useLink.cjs.map +1 -1
  656. package/dist/private/link/useLink.js.map +1 -1
  657. package/dist/private/link/useLink.mjs.map +1 -1
  658. package/dist/private/listbox/useListBox.cjs.map +1 -1
  659. package/dist/private/listbox/useListBox.js.map +1 -1
  660. package/dist/private/listbox/useListBox.mjs.map +1 -1
  661. package/dist/private/listbox/useListBoxSection.cjs.map +1 -1
  662. package/dist/private/listbox/useListBoxSection.js.map +1 -1
  663. package/dist/private/listbox/useListBoxSection.mjs.map +1 -1
  664. package/dist/private/listbox/useOption.cjs.map +1 -1
  665. package/dist/private/listbox/useOption.js.map +1 -1
  666. package/dist/private/listbox/useOption.mjs.map +1 -1
  667. package/dist/private/listbox/utils.cjs.map +1 -1
  668. package/dist/private/listbox/utils.js.map +1 -1
  669. package/dist/private/listbox/utils.mjs.map +1 -1
  670. package/dist/private/live-announcer/LiveAnnouncer.cjs +2 -2
  671. package/dist/private/live-announcer/LiveAnnouncer.cjs.map +1 -1
  672. package/dist/private/live-announcer/LiveAnnouncer.js +2 -2
  673. package/dist/private/live-announcer/LiveAnnouncer.js.map +1 -1
  674. package/dist/private/live-announcer/LiveAnnouncer.mjs +2 -2
  675. package/dist/private/live-announcer/LiveAnnouncer.mjs.map +1 -1
  676. package/dist/private/menu/useMenu.cjs.map +1 -1
  677. package/dist/private/menu/useMenu.js.map +1 -1
  678. package/dist/private/menu/useMenu.mjs.map +1 -1
  679. package/dist/private/menu/useMenuItem.cjs +1 -1
  680. package/dist/private/menu/useMenuItem.cjs.map +1 -1
  681. package/dist/private/menu/useMenuItem.js +1 -1
  682. package/dist/private/menu/useMenuItem.js.map +1 -1
  683. package/dist/private/menu/useMenuItem.mjs +1 -1
  684. package/dist/private/menu/useMenuItem.mjs.map +1 -1
  685. package/dist/private/menu/useMenuSection.cjs.map +1 -1
  686. package/dist/private/menu/useMenuSection.js.map +1 -1
  687. package/dist/private/menu/useMenuSection.mjs.map +1 -1
  688. package/dist/private/menu/useMenuTrigger.cjs.map +1 -1
  689. package/dist/private/menu/useMenuTrigger.js.map +1 -1
  690. package/dist/private/menu/useMenuTrigger.mjs.map +1 -1
  691. package/dist/private/menu/useSafelyMouseToSubmenu.cjs.map +1 -1
  692. package/dist/private/menu/useSafelyMouseToSubmenu.js.map +1 -1
  693. package/dist/private/menu/useSafelyMouseToSubmenu.mjs.map +1 -1
  694. package/dist/private/menu/useSubmenuTrigger.cjs.map +1 -1
  695. package/dist/private/menu/useSubmenuTrigger.js.map +1 -1
  696. package/dist/private/menu/useSubmenuTrigger.mjs.map +1 -1
  697. package/dist/private/menu/utils.cjs.map +1 -1
  698. package/dist/private/menu/utils.js.map +1 -1
  699. package/dist/private/menu/utils.mjs.map +1 -1
  700. package/dist/private/meter/useMeter.cjs.map +1 -1
  701. package/dist/private/meter/useMeter.js.map +1 -1
  702. package/dist/private/meter/useMeter.mjs.map +1 -1
  703. package/dist/private/numberfield/useNumberField.cjs.map +1 -1
  704. package/dist/private/numberfield/useNumberField.js.map +1 -1
  705. package/dist/private/numberfield/useNumberField.mjs.map +1 -1
  706. package/dist/private/overlays/DismissButton.cjs.map +1 -1
  707. package/dist/private/overlays/DismissButton.js.map +1 -1
  708. package/dist/private/overlays/DismissButton.mjs.map +1 -1
  709. package/dist/private/overlays/Overlay.cjs.map +1 -1
  710. package/dist/private/overlays/Overlay.js.map +1 -1
  711. package/dist/private/overlays/Overlay.mjs.map +1 -1
  712. package/dist/private/overlays/PortalProvider.cjs.map +1 -1
  713. package/dist/private/overlays/PortalProvider.js.map +1 -1
  714. package/dist/private/overlays/PortalProvider.mjs.map +1 -1
  715. package/dist/private/overlays/ariaHideOutside.cjs.map +1 -1
  716. package/dist/private/overlays/ariaHideOutside.js.map +1 -1
  717. package/dist/private/overlays/ariaHideOutside.mjs.map +1 -1
  718. package/dist/private/overlays/calculatePosition.cjs +19 -20
  719. package/dist/private/overlays/calculatePosition.cjs.map +1 -1
  720. package/dist/private/overlays/calculatePosition.js +20 -21
  721. package/dist/private/overlays/calculatePosition.js.map +1 -1
  722. package/dist/private/overlays/calculatePosition.mjs +19 -20
  723. package/dist/private/overlays/calculatePosition.mjs.map +1 -1
  724. package/dist/private/overlays/useCloseOnScroll.cjs.map +1 -1
  725. package/dist/private/overlays/useCloseOnScroll.js.map +1 -1
  726. package/dist/private/overlays/useCloseOnScroll.mjs.map +1 -1
  727. package/dist/private/overlays/useModal.cjs.map +1 -1
  728. package/dist/private/overlays/useModal.js.map +1 -1
  729. package/dist/private/overlays/useModal.mjs.map +1 -1
  730. package/dist/private/overlays/useModalOverlay.cjs.map +1 -1
  731. package/dist/private/overlays/useModalOverlay.js.map +1 -1
  732. package/dist/private/overlays/useModalOverlay.mjs.map +1 -1
  733. package/dist/private/overlays/useOverlay.cjs.map +1 -1
  734. package/dist/private/overlays/useOverlay.js.map +1 -1
  735. package/dist/private/overlays/useOverlay.mjs.map +1 -1
  736. package/dist/private/overlays/useOverlayPosition.cjs +3 -2
  737. package/dist/private/overlays/useOverlayPosition.cjs.map +1 -1
  738. package/dist/private/overlays/useOverlayPosition.js +3 -2
  739. package/dist/private/overlays/useOverlayPosition.js.map +1 -1
  740. package/dist/private/overlays/useOverlayPosition.mjs +3 -2
  741. package/dist/private/overlays/useOverlayPosition.mjs.map +1 -1
  742. package/dist/private/overlays/useOverlayTrigger.cjs.map +1 -1
  743. package/dist/private/overlays/useOverlayTrigger.js.map +1 -1
  744. package/dist/private/overlays/useOverlayTrigger.mjs.map +1 -1
  745. package/dist/private/overlays/usePopover.cjs.map +1 -1
  746. package/dist/private/overlays/usePopover.js.map +1 -1
  747. package/dist/private/overlays/usePopover.mjs.map +1 -1
  748. package/dist/private/overlays/usePreventScroll.cjs.map +1 -1
  749. package/dist/private/overlays/usePreventScroll.js.map +1 -1
  750. package/dist/private/overlays/usePreventScroll.mjs.map +1 -1
  751. package/dist/private/progress/useProgressBar.cjs.map +1 -1
  752. package/dist/private/progress/useProgressBar.js.map +1 -1
  753. package/dist/private/progress/useProgressBar.mjs.map +1 -1
  754. package/dist/private/radio/useRadio.cjs +5 -0
  755. package/dist/private/radio/useRadio.cjs.map +1 -1
  756. package/dist/private/radio/useRadio.js +5 -0
  757. package/dist/private/radio/useRadio.js.map +1 -1
  758. package/dist/private/radio/useRadio.mjs +5 -0
  759. package/dist/private/radio/useRadio.mjs.map +1 -1
  760. package/dist/private/radio/useRadioGroup.cjs.map +1 -1
  761. package/dist/private/radio/useRadioGroup.js.map +1 -1
  762. package/dist/private/radio/useRadioGroup.mjs.map +1 -1
  763. package/dist/private/radio/utils.cjs.map +1 -1
  764. package/dist/private/radio/utils.js.map +1 -1
  765. package/dist/private/radio/utils.mjs.map +1 -1
  766. package/dist/private/searchfield/useSearchField.cjs.map +1 -1
  767. package/dist/private/searchfield/useSearchField.js.map +1 -1
  768. package/dist/private/searchfield/useSearchField.mjs.map +1 -1
  769. package/dist/private/select/HiddenSelect.cjs +2 -1
  770. package/dist/private/select/HiddenSelect.cjs.map +1 -1
  771. package/dist/private/select/HiddenSelect.js +2 -1
  772. package/dist/private/select/HiddenSelect.js.map +1 -1
  773. package/dist/private/select/HiddenSelect.mjs +2 -1
  774. package/dist/private/select/HiddenSelect.mjs.map +1 -1
  775. package/dist/private/select/useSelect.cjs +3 -4
  776. package/dist/private/select/useSelect.cjs.map +1 -1
  777. package/dist/private/select/useSelect.js +3 -4
  778. package/dist/private/select/useSelect.js.map +1 -1
  779. package/dist/private/select/useSelect.mjs +3 -4
  780. package/dist/private/select/useSelect.mjs.map +1 -1
  781. package/dist/private/selection/ListKeyboardDelegate.cjs +56 -28
  782. package/dist/private/selection/ListKeyboardDelegate.cjs.map +1 -1
  783. package/dist/private/selection/ListKeyboardDelegate.js +57 -29
  784. package/dist/private/selection/ListKeyboardDelegate.js.map +1 -1
  785. package/dist/private/selection/ListKeyboardDelegate.mjs +56 -28
  786. package/dist/private/selection/ListKeyboardDelegate.mjs.map +1 -1
  787. package/dist/private/selection/useSelectableCollection.cjs +21 -14
  788. package/dist/private/selection/useSelectableCollection.cjs.map +1 -1
  789. package/dist/private/selection/useSelectableCollection.js +27 -19
  790. package/dist/private/selection/useSelectableCollection.js.map +1 -1
  791. package/dist/private/selection/useSelectableCollection.mjs +21 -14
  792. package/dist/private/selection/useSelectableCollection.mjs.map +1 -1
  793. package/dist/private/selection/useSelectableItem.cjs.map +1 -1
  794. package/dist/private/selection/useSelectableItem.js.map +1 -1
  795. package/dist/private/selection/useSelectableItem.mjs.map +1 -1
  796. package/dist/private/selection/useSelectableList.cjs.map +1 -1
  797. package/dist/private/selection/useSelectableList.js.map +1 -1
  798. package/dist/private/selection/useSelectableList.mjs.map +1 -1
  799. package/dist/private/selection/useTypeSelect.cjs +50 -18
  800. package/dist/private/selection/useTypeSelect.cjs.map +1 -1
  801. package/dist/private/selection/useTypeSelect.js +51 -19
  802. package/dist/private/selection/useTypeSelect.js.map +1 -1
  803. package/dist/private/selection/useTypeSelect.mjs +51 -19
  804. package/dist/private/selection/useTypeSelect.mjs.map +1 -1
  805. package/dist/private/selection/utils.cjs.map +1 -1
  806. package/dist/private/selection/utils.js.map +1 -1
  807. package/dist/private/selection/utils.mjs.map +1 -1
  808. package/dist/private/separator/useSeparator.cjs.map +1 -1
  809. package/dist/private/separator/useSeparator.js.map +1 -1
  810. package/dist/private/separator/useSeparator.mjs.map +1 -1
  811. package/dist/private/slider/useSlider.cjs +4 -2
  812. package/dist/private/slider/useSlider.cjs.map +1 -1
  813. package/dist/private/slider/useSlider.js +4 -2
  814. package/dist/private/slider/useSlider.js.map +1 -1
  815. package/dist/private/slider/useSlider.mjs +4 -2
  816. package/dist/private/slider/useSlider.mjs.map +1 -1
  817. package/dist/private/slider/useSliderThumb.cjs.map +1 -1
  818. package/dist/private/slider/useSliderThumb.js.map +1 -1
  819. package/dist/private/slider/useSliderThumb.mjs.map +1 -1
  820. package/dist/private/slider/utils.cjs.map +1 -1
  821. package/dist/private/slider/utils.js.map +1 -1
  822. package/dist/private/slider/utils.mjs.map +1 -1
  823. package/dist/private/spinbutton/useSpinButton.cjs +2 -0
  824. package/dist/private/spinbutton/useSpinButton.cjs.map +1 -1
  825. package/dist/private/spinbutton/useSpinButton.js +2 -0
  826. package/dist/private/spinbutton/useSpinButton.js.map +1 -1
  827. package/dist/private/spinbutton/useSpinButton.mjs +2 -0
  828. package/dist/private/spinbutton/useSpinButton.mjs.map +1 -1
  829. package/dist/private/ssr/SSRProvider.cjs +6 -6
  830. package/dist/private/ssr/SSRProvider.cjs.map +1 -1
  831. package/dist/private/ssr/SSRProvider.js +6 -6
  832. package/dist/private/ssr/SSRProvider.js.map +1 -1
  833. package/dist/private/ssr/SSRProvider.mjs +6 -6
  834. package/dist/private/ssr/SSRProvider.mjs.map +1 -1
  835. package/dist/private/steplist/useStepList.cjs.map +1 -1
  836. package/dist/private/steplist/useStepList.js.map +1 -1
  837. package/dist/private/steplist/useStepList.mjs.map +1 -1
  838. package/dist/private/steplist/useStepListItem.cjs.map +1 -1
  839. package/dist/private/steplist/useStepListItem.js.map +1 -1
  840. package/dist/private/steplist/useStepListItem.mjs.map +1 -1
  841. package/dist/private/switch/useSwitch.cjs +2 -4
  842. package/dist/private/switch/useSwitch.cjs.map +1 -1
  843. package/dist/private/switch/useSwitch.js +2 -4
  844. package/dist/private/switch/useSwitch.js.map +1 -1
  845. package/dist/private/switch/useSwitch.mjs +2 -4
  846. package/dist/private/switch/useSwitch.mjs.map +1 -1
  847. package/dist/private/table/TableKeyboardDelegate.cjs +4 -4
  848. package/dist/private/table/TableKeyboardDelegate.cjs.map +1 -1
  849. package/dist/private/table/TableKeyboardDelegate.js +4 -4
  850. package/dist/private/table/TableKeyboardDelegate.js.map +1 -1
  851. package/dist/private/table/TableKeyboardDelegate.mjs +4 -4
  852. package/dist/private/table/TableKeyboardDelegate.mjs.map +1 -1
  853. package/dist/private/table/useTable.cjs.map +1 -1
  854. package/dist/private/table/useTable.js.map +1 -1
  855. package/dist/private/table/useTable.mjs.map +1 -1
  856. package/dist/private/table/useTableCell.cjs.map +1 -1
  857. package/dist/private/table/useTableCell.js.map +1 -1
  858. package/dist/private/table/useTableCell.mjs.map +1 -1
  859. package/dist/private/table/useTableColumnHeader.cjs.map +1 -1
  860. package/dist/private/table/useTableColumnHeader.js.map +1 -1
  861. package/dist/private/table/useTableColumnHeader.mjs.map +1 -1
  862. package/dist/private/table/useTableColumnResize.cjs +1 -1
  863. package/dist/private/table/useTableColumnResize.cjs.map +1 -1
  864. package/dist/private/table/useTableColumnResize.js +1 -1
  865. package/dist/private/table/useTableColumnResize.js.map +1 -1
  866. package/dist/private/table/useTableColumnResize.mjs +1 -1
  867. package/dist/private/table/useTableColumnResize.mjs.map +1 -1
  868. package/dist/private/table/useTableHeaderRow.cjs +2 -1
  869. package/dist/private/table/useTableHeaderRow.cjs.map +1 -1
  870. package/dist/private/table/useTableHeaderRow.js +2 -1
  871. package/dist/private/table/useTableHeaderRow.js.map +1 -1
  872. package/dist/private/table/useTableHeaderRow.mjs +2 -1
  873. package/dist/private/table/useTableHeaderRow.mjs.map +1 -1
  874. package/dist/private/table/useTableRow.cjs +2 -2
  875. package/dist/private/table/useTableRow.cjs.map +1 -1
  876. package/dist/private/table/useTableRow.js +2 -2
  877. package/dist/private/table/useTableRow.js.map +1 -1
  878. package/dist/private/table/useTableRow.mjs +2 -2
  879. package/dist/private/table/useTableRow.mjs.map +1 -1
  880. package/dist/private/table/useTableSelectionCheckbox.cjs.map +1 -1
  881. package/dist/private/table/useTableSelectionCheckbox.js.map +1 -1
  882. package/dist/private/table/useTableSelectionCheckbox.mjs.map +1 -1
  883. package/dist/private/table/utils.cjs.map +1 -1
  884. package/dist/private/table/utils.js.map +1 -1
  885. package/dist/private/table/utils.mjs.map +1 -1
  886. package/dist/private/tabs/TabsKeyboardDelegate.cjs +2 -2
  887. package/dist/private/tabs/TabsKeyboardDelegate.cjs.map +1 -1
  888. package/dist/private/tabs/TabsKeyboardDelegate.js +2 -2
  889. package/dist/private/tabs/TabsKeyboardDelegate.js.map +1 -1
  890. package/dist/private/tabs/TabsKeyboardDelegate.mjs +2 -2
  891. package/dist/private/tabs/TabsKeyboardDelegate.mjs.map +1 -1
  892. package/dist/private/tabs/useTab.cjs.map +1 -1
  893. package/dist/private/tabs/useTab.js.map +1 -1
  894. package/dist/private/tabs/useTab.mjs.map +1 -1
  895. package/dist/private/tabs/useTabList.cjs +10 -10
  896. package/dist/private/tabs/useTabList.cjs.map +1 -1
  897. package/dist/private/tabs/useTabList.js +10 -10
  898. package/dist/private/tabs/useTabList.js.map +1 -1
  899. package/dist/private/tabs/useTabList.mjs +10 -10
  900. package/dist/private/tabs/useTabList.mjs.map +1 -1
  901. package/dist/private/tabs/useTabPanel.cjs.map +1 -1
  902. package/dist/private/tabs/useTabPanel.js.map +1 -1
  903. package/dist/private/tabs/useTabPanel.mjs.map +1 -1
  904. package/dist/private/tabs/utils.cjs.map +1 -1
  905. package/dist/private/tabs/utils.js.map +1 -1
  906. package/dist/private/tabs/utils.mjs.map +1 -1
  907. package/dist/private/tag/useTag.cjs.map +1 -1
  908. package/dist/private/tag/useTag.js.map +1 -1
  909. package/dist/private/tag/useTag.mjs.map +1 -1
  910. package/dist/private/tag/useTagGroup.cjs.map +1 -1
  911. package/dist/private/tag/useTagGroup.js.map +1 -1
  912. package/dist/private/tag/useTagGroup.mjs.map +1 -1
  913. package/dist/private/textfield/useFormattedTextField.cjs.map +1 -1
  914. package/dist/private/textfield/useFormattedTextField.js.map +1 -1
  915. package/dist/private/textfield/useFormattedTextField.mjs.map +1 -1
  916. package/dist/private/textfield/useTextField.cjs.map +1 -1
  917. package/dist/private/textfield/useTextField.js.map +1 -1
  918. package/dist/private/textfield/useTextField.mjs.map +1 -1
  919. package/dist/private/toast/useToast.cjs +2 -1
  920. package/dist/private/toast/useToast.cjs.map +1 -1
  921. package/dist/private/toast/useToast.js +2 -1
  922. package/dist/private/toast/useToast.js.map +1 -1
  923. package/dist/private/toast/useToast.mjs +2 -1
  924. package/dist/private/toast/useToast.mjs.map +1 -1
  925. package/dist/private/toast/useToastRegion.cjs.map +1 -1
  926. package/dist/private/toast/useToastRegion.js.map +1 -1
  927. package/dist/private/toast/useToastRegion.mjs.map +1 -1
  928. package/dist/private/toggle/useToggle.cjs +70 -8
  929. package/dist/private/toggle/useToggle.cjs.map +1 -1
  930. package/dist/private/toggle/useToggle.js +70 -8
  931. package/dist/private/toggle/useToggle.js.map +1 -1
  932. package/dist/private/toggle/useToggle.mjs +70 -8
  933. package/dist/private/toggle/useToggle.mjs.map +1 -1
  934. package/dist/private/toolbar/useToolbar.cjs +0 -1
  935. package/dist/private/toolbar/useToolbar.cjs.map +1 -1
  936. package/dist/private/toolbar/useToolbar.js +0 -1
  937. package/dist/private/toolbar/useToolbar.js.map +1 -1
  938. package/dist/private/toolbar/useToolbar.mjs +0 -1
  939. package/dist/private/toolbar/useToolbar.mjs.map +1 -1
  940. package/dist/private/tooltip/useTooltip.cjs.map +1 -1
  941. package/dist/private/tooltip/useTooltip.js.map +1 -1
  942. package/dist/private/tooltip/useTooltip.mjs.map +1 -1
  943. package/dist/private/tooltip/useTooltipTrigger.cjs.map +1 -1
  944. package/dist/private/tooltip/useTooltipTrigger.js.map +1 -1
  945. package/dist/private/tooltip/useTooltipTrigger.mjs.map +1 -1
  946. package/dist/private/tree/useTree.cjs.map +1 -1
  947. package/dist/private/tree/useTree.js.map +1 -1
  948. package/dist/private/tree/useTree.mjs.map +1 -1
  949. package/dist/private/tree/useTreeItem.cjs.map +1 -1
  950. package/dist/private/tree/useTreeItem.js.map +1 -1
  951. package/dist/private/tree/useTreeItem.mjs.map +1 -1
  952. package/dist/private/utils/animation.cjs.map +1 -1
  953. package/dist/private/utils/animation.js.map +1 -1
  954. package/dist/private/utils/animation.mjs.map +1 -1
  955. package/dist/private/utils/domHelpers.cjs +2 -1
  956. package/dist/private/utils/domHelpers.cjs.map +1 -1
  957. package/dist/private/utils/domHelpers.js +2 -1
  958. package/dist/private/utils/domHelpers.js.map +1 -1
  959. package/dist/private/utils/domHelpers.mjs +2 -1
  960. package/dist/private/utils/domHelpers.mjs.map +1 -1
  961. package/dist/private/utils/filterDOMProps.cjs.map +1 -1
  962. package/dist/private/utils/filterDOMProps.js.map +1 -1
  963. package/dist/private/utils/filterDOMProps.mjs.map +1 -1
  964. package/dist/private/utils/focusWithoutScrolling.cjs.map +1 -1
  965. package/dist/private/utils/focusWithoutScrolling.js.map +1 -1
  966. package/dist/private/utils/focusWithoutScrolling.mjs.map +1 -1
  967. package/dist/private/utils/getNonce.cjs.map +1 -1
  968. package/dist/private/utils/getNonce.js.map +1 -1
  969. package/dist/private/utils/getNonce.mjs.map +1 -1
  970. package/dist/private/utils/getOffset.cjs.map +1 -1
  971. package/dist/private/utils/getOffset.js.map +1 -1
  972. package/dist/private/utils/getOffset.mjs.map +1 -1
  973. package/dist/private/utils/getScrollParent.cjs.map +1 -1
  974. package/dist/private/utils/getScrollParent.js.map +1 -1
  975. package/dist/private/utils/getScrollParent.mjs.map +1 -1
  976. package/dist/private/utils/getScrollParents.cjs +3 -2
  977. package/dist/private/utils/getScrollParents.cjs.map +1 -1
  978. package/dist/private/utils/getScrollParents.js +3 -2
  979. package/dist/private/utils/getScrollParents.js.map +1 -1
  980. package/dist/private/utils/getScrollParents.mjs +3 -2
  981. package/dist/private/utils/getScrollParents.mjs.map +1 -1
  982. package/dist/private/utils/isElementVisible.cjs +1 -1
  983. package/dist/private/utils/isElementVisible.cjs.map +1 -1
  984. package/dist/private/utils/isElementVisible.js +1 -1
  985. package/dist/private/utils/isElementVisible.js.map +1 -1
  986. package/dist/private/utils/isElementVisible.mjs +1 -1
  987. package/dist/private/utils/isElementVisible.mjs.map +1 -1
  988. package/dist/private/utils/isFocusable.cjs +3 -1
  989. package/dist/private/utils/isFocusable.cjs.map +1 -1
  990. package/dist/private/utils/isFocusable.js +3 -1
  991. package/dist/private/utils/isFocusable.js.map +1 -1
  992. package/dist/private/utils/isFocusable.mjs +3 -1
  993. package/dist/private/utils/isFocusable.mjs.map +1 -1
  994. package/dist/private/utils/isVirtualEvent.cjs.map +1 -1
  995. package/dist/private/utils/isVirtualEvent.js.map +1 -1
  996. package/dist/private/utils/isVirtualEvent.mjs.map +1 -1
  997. package/dist/private/utils/keyboard.cjs.map +1 -1
  998. package/dist/private/utils/keyboard.js.map +1 -1
  999. package/dist/private/utils/keyboard.mjs.map +1 -1
  1000. package/dist/private/utils/mergeProps.cjs.map +1 -1
  1001. package/dist/private/utils/mergeProps.js.map +1 -1
  1002. package/dist/private/utils/mergeProps.mjs.map +1 -1
  1003. package/dist/private/utils/mergeRefs.cjs.map +1 -1
  1004. package/dist/private/utils/mergeRefs.js.map +1 -1
  1005. package/dist/private/utils/mergeRefs.mjs.map +1 -1
  1006. package/dist/private/utils/openLink.cjs +12 -8
  1007. package/dist/private/utils/openLink.cjs.map +1 -1
  1008. package/dist/private/utils/openLink.js +12 -8
  1009. package/dist/private/utils/openLink.js.map +1 -1
  1010. package/dist/private/utils/openLink.mjs +12 -8
  1011. package/dist/private/utils/openLink.mjs.map +1 -1
  1012. package/dist/private/utils/platform.cjs.map +1 -1
  1013. package/dist/private/utils/platform.js.map +1 -1
  1014. package/dist/private/utils/platform.mjs.map +1 -1
  1015. package/dist/private/utils/scrollIntoView.cjs +21 -18
  1016. package/dist/private/utils/scrollIntoView.cjs.map +1 -1
  1017. package/dist/private/utils/scrollIntoView.js +21 -18
  1018. package/dist/private/utils/scrollIntoView.js.map +1 -1
  1019. package/dist/private/utils/scrollIntoView.mjs +21 -18
  1020. package/dist/private/utils/scrollIntoView.mjs.map +1 -1
  1021. package/dist/private/utils/shadowdom/DOMFunctions.cjs.map +1 -1
  1022. package/dist/private/utils/shadowdom/DOMFunctions.js.map +1 -1
  1023. package/dist/private/utils/shadowdom/DOMFunctions.mjs.map +1 -1
  1024. package/dist/private/utils/shadowdom/ShadowTreeWalker.cjs +6 -6
  1025. package/dist/private/utils/shadowdom/ShadowTreeWalker.cjs.map +1 -1
  1026. package/dist/private/utils/shadowdom/ShadowTreeWalker.js +6 -6
  1027. package/dist/private/utils/shadowdom/ShadowTreeWalker.js.map +1 -1
  1028. package/dist/private/utils/shadowdom/ShadowTreeWalker.mjs +6 -6
  1029. package/dist/private/utils/shadowdom/ShadowTreeWalker.mjs.map +1 -1
  1030. package/dist/private/utils/useDeepMemo.cjs +1 -1
  1031. package/dist/private/utils/useDeepMemo.cjs.map +1 -1
  1032. package/dist/private/utils/useDeepMemo.js +1 -1
  1033. package/dist/private/utils/useDeepMemo.js.map +1 -1
  1034. package/dist/private/utils/useDeepMemo.mjs +1 -1
  1035. package/dist/private/utils/useDeepMemo.mjs.map +1 -1
  1036. package/dist/private/utils/useDescription.cjs.map +1 -1
  1037. package/dist/private/utils/useDescription.js.map +1 -1
  1038. package/dist/private/utils/useDescription.mjs.map +1 -1
  1039. package/dist/private/utils/useDrag1D.cjs +1 -1
  1040. package/dist/private/utils/useDrag1D.cjs.map +1 -1
  1041. package/dist/private/utils/useDrag1D.js +1 -1
  1042. package/dist/private/utils/useDrag1D.js.map +1 -1
  1043. package/dist/private/utils/useDrag1D.mjs +1 -1
  1044. package/dist/private/utils/useDrag1D.mjs.map +1 -1
  1045. package/dist/private/utils/useFormReset.cjs.map +1 -1
  1046. package/dist/private/utils/useFormReset.js.map +1 -1
  1047. package/dist/private/utils/useFormReset.mjs.map +1 -1
  1048. package/dist/private/utils/useGlobalListeners.cjs.map +1 -1
  1049. package/dist/private/utils/useGlobalListeners.js.map +1 -1
  1050. package/dist/private/utils/useGlobalListeners.mjs.map +1 -1
  1051. package/dist/private/utils/useId.cjs.map +1 -1
  1052. package/dist/private/utils/useId.js.map +1 -1
  1053. package/dist/private/utils/useId.mjs.map +1 -1
  1054. package/dist/private/utils/useLabels.cjs.map +1 -1
  1055. package/dist/private/utils/useLabels.js.map +1 -1
  1056. package/dist/private/utils/useLabels.mjs.map +1 -1
  1057. package/dist/private/utils/useLayoutEffect.cjs.map +1 -1
  1058. package/dist/private/utils/useLayoutEffect.js.map +1 -1
  1059. package/dist/private/utils/useLayoutEffect.mjs.map +1 -1
  1060. package/dist/private/utils/useLoadMore.cjs.map +1 -1
  1061. package/dist/private/utils/useLoadMore.js.map +1 -1
  1062. package/dist/private/utils/useLoadMore.mjs.map +1 -1
  1063. package/dist/private/utils/useLoadMoreSentinel.cjs.map +1 -1
  1064. package/dist/private/utils/useLoadMoreSentinel.js.map +1 -1
  1065. package/dist/private/utils/useLoadMoreSentinel.mjs.map +1 -1
  1066. package/dist/private/utils/useObjectRef.cjs.map +1 -1
  1067. package/dist/private/utils/useObjectRef.js.map +1 -1
  1068. package/dist/private/utils/useObjectRef.mjs.map +1 -1
  1069. package/dist/private/utils/useResizeObserver.cjs.map +1 -1
  1070. package/dist/private/utils/useResizeObserver.js.map +1 -1
  1071. package/dist/private/utils/useResizeObserver.mjs.map +1 -1
  1072. package/dist/private/utils/useSlot.cjs +54 -0
  1073. package/dist/private/utils/useSlot.cjs.map +1 -0
  1074. package/dist/private/utils/useSlot.js +49 -0
  1075. package/dist/private/utils/useSlot.js.map +1 -0
  1076. package/dist/private/utils/useSlot.mjs +49 -0
  1077. package/dist/private/utils/useSlot.mjs.map +1 -0
  1078. package/dist/private/utils/useSyncRef.cjs +2 -1
  1079. package/dist/private/utils/useSyncRef.cjs.map +1 -1
  1080. package/dist/private/utils/useSyncRef.js +2 -1
  1081. package/dist/private/utils/useSyncRef.js.map +1 -1
  1082. package/dist/private/utils/useSyncRef.mjs +2 -1
  1083. package/dist/private/utils/useSyncRef.mjs.map +1 -1
  1084. package/dist/private/utils/useUpdateEffect.cjs.map +1 -1
  1085. package/dist/private/utils/useUpdateEffect.js.map +1 -1
  1086. package/dist/private/utils/useUpdateEffect.mjs.map +1 -1
  1087. package/dist/private/utils/useValueEffect.cjs.map +1 -1
  1088. package/dist/private/utils/useValueEffect.js.map +1 -1
  1089. package/dist/private/utils/useValueEffect.mjs.map +1 -1
  1090. package/dist/private/utils/useViewportSize.cjs +3 -1
  1091. package/dist/private/utils/useViewportSize.cjs.map +1 -1
  1092. package/dist/private/utils/useViewportSize.js +3 -1
  1093. package/dist/private/utils/useViewportSize.js.map +1 -1
  1094. package/dist/private/utils/useViewportSize.mjs +3 -1
  1095. package/dist/private/utils/useViewportSize.mjs.map +1 -1
  1096. package/dist/private/virtualizer/ScrollView.cjs +2 -2
  1097. package/dist/private/virtualizer/ScrollView.cjs.map +1 -1
  1098. package/dist/private/virtualizer/ScrollView.js +2 -2
  1099. package/dist/private/virtualizer/ScrollView.js.map +1 -1
  1100. package/dist/private/virtualizer/ScrollView.mjs +2 -2
  1101. package/dist/private/virtualizer/ScrollView.mjs.map +1 -1
  1102. package/dist/private/virtualizer/Virtualizer.cjs.map +1 -1
  1103. package/dist/private/virtualizer/Virtualizer.js.map +1 -1
  1104. package/dist/private/virtualizer/Virtualizer.mjs.map +1 -1
  1105. package/dist/private/virtualizer/VirtualizerItem.cjs.map +1 -1
  1106. package/dist/private/virtualizer/VirtualizerItem.js.map +1 -1
  1107. package/dist/private/virtualizer/VirtualizerItem.mjs.map +1 -1
  1108. package/dist/private/virtualizer/useVirtualizerItem.cjs.map +1 -1
  1109. package/dist/private/virtualizer/useVirtualizerItem.js.map +1 -1
  1110. package/dist/private/virtualizer/useVirtualizerItem.mjs.map +1 -1
  1111. package/dist/private/virtualizer/utils.cjs.map +1 -1
  1112. package/dist/private/virtualizer/utils.js.map +1 -1
  1113. package/dist/private/virtualizer/utils.mjs.map +1 -1
  1114. package/dist/private/visually-hidden/VisuallyHidden.cjs.map +1 -1
  1115. package/dist/private/visually-hidden/VisuallyHidden.js.map +1 -1
  1116. package/dist/private/visually-hidden/VisuallyHidden.mjs.map +1 -1
  1117. package/dist/types/exports/index.d.ts +7 -0
  1118. package/dist/types/exports/useCalendar.d.ts +6 -0
  1119. package/dist/types/exports/useRangeCalendar.d.ts +11 -0
  1120. package/dist/types/src/actiongroup/useActionGroup.d.ts +5 -1
  1121. package/dist/types/src/aria-modal-polyfill/ariaModalPolyfill.d.ts +2 -1
  1122. package/dist/types/src/autocomplete/useAutocomplete.d.ts +21 -9
  1123. package/dist/types/src/autocomplete/useSearchAutocomplete.d.ts +15 -8
  1124. package/dist/types/src/breadcrumbs/useBreadcrumbItem.d.ts +2 -0
  1125. package/dist/types/src/button/useButton.d.ts +25 -7
  1126. package/dist/types/src/button/useToggleButtonGroup.d.ts +1 -0
  1127. package/dist/types/src/calendar/useCalendar.d.ts +3 -3
  1128. package/dist/types/src/calendar/useCalendarBase.d.ts +2 -2
  1129. package/dist/types/src/calendar/useCalendarCell.d.ts +9 -8
  1130. package/dist/types/src/calendar/useCalendarGrid.d.ts +8 -4
  1131. package/dist/types/src/calendar/useCalendarHeading.d.ts +22 -0
  1132. package/dist/types/src/calendar/useCalendarMonthPicker.d.ts +22 -0
  1133. package/dist/types/src/calendar/useCalendarYearPicker.d.ts +32 -0
  1134. package/dist/types/src/calendar/useRangeCalendar.d.ts +5 -5
  1135. package/dist/types/src/calendar/utils.d.ts +3 -3
  1136. package/dist/types/src/checkbox/useCheckbox.d.ts +6 -1
  1137. package/dist/types/src/checkbox/useCheckboxGroup.d.ts +1 -0
  1138. package/dist/types/src/checkbox/useCheckboxGroupItem.d.ts +3 -2
  1139. package/dist/types/src/collections/CollectionBuilder.d.ts +8 -7
  1140. package/dist/types/src/collections/useCachedChildren.d.ts +1 -1
  1141. package/dist/types/src/color/useColorArea.d.ts +7 -4
  1142. package/dist/types/src/color/useColorChannelField.d.ts +2 -2
  1143. package/dist/types/src/combobox/useComboBox.d.ts +5 -3
  1144. package/dist/types/src/datepicker/useDateField.d.ts +2 -1
  1145. package/dist/types/src/datepicker/useDatePicker.d.ts +5 -3
  1146. package/dist/types/src/dialog/useDialog.d.ts +1 -0
  1147. package/dist/types/src/disclosure/useDisclosure.d.ts +1 -0
  1148. package/dist/types/src/dnd/ListDropTargetDelegate.d.ts +3 -0
  1149. package/dist/types/src/dnd/useDrag.d.ts +11 -4
  1150. package/dist/types/src/dnd/useDraggableCollection.d.ts +2 -2
  1151. package/dist/types/src/dnd/useDraggableItem.d.ts +7 -6
  1152. package/dist/types/src/dnd/useDrop.d.ts +5 -4
  1153. package/dist/types/src/dnd/useDroppableCollection.d.ts +2 -2
  1154. package/dist/types/src/dnd/utils.d.ts +3 -3
  1155. package/dist/types/src/focus/FocusRing.d.ts +1 -0
  1156. package/dist/types/src/focus/useFocusRing.d.ts +1 -0
  1157. package/dist/types/src/focus/useHasTabbableChild.d.ts +1 -0
  1158. package/dist/types/src/grid/GridKeyboardDelegate.d.ts +8 -4
  1159. package/dist/types/src/grid/useGrid.d.ts +12 -4
  1160. package/dist/types/src/grid/useGridCell.d.ts +11 -3
  1161. package/dist/types/src/grid/useGridRow.d.ts +7 -2
  1162. package/dist/types/src/grid/useGridSelectionAnnouncement.d.ts +3 -1
  1163. package/dist/types/src/grid/useGridSelectionCheckbox.d.ts +1 -0
  1164. package/dist/types/src/grid/useHighlightSelectionDescription.d.ts +1 -0
  1165. package/dist/types/src/gridlist/useGridList.d.ts +20 -5
  1166. package/dist/types/src/gridlist/useGridListItem.d.ts +5 -1
  1167. package/dist/types/src/gridlist/useGridListSection.d.ts +1 -0
  1168. package/dist/types/src/gridlist/useGridListSelectionCheckbox.d.ts +1 -0
  1169. package/dist/types/src/i18n/useCollator.d.ts +3 -2
  1170. package/dist/types/src/i18n/useDateFormatter.d.ts +3 -2
  1171. package/dist/types/src/i18n/useFilter.d.ts +3 -2
  1172. package/dist/types/src/i18n/useListFormatter.d.ts +3 -2
  1173. package/dist/types/src/i18n/useLocalizedStringFormatter.d.ts +3 -1
  1174. package/dist/types/src/i18n/useNumberFormatter.d.ts +3 -2
  1175. package/dist/types/src/i18n/utils.d.ts +2 -1
  1176. package/dist/types/src/interactions/createEventHandler.d.ts +2 -1
  1177. package/dist/types/src/interactions/useFocusVisible.d.ts +11 -9
  1178. package/dist/types/src/interactions/useLongPress.d.ts +3 -2
  1179. package/dist/types/src/interactions/utils.d.ts +4 -3
  1180. package/dist/types/src/label/useField.d.ts +3 -2
  1181. package/dist/types/src/label/useLabel.d.ts +2 -0
  1182. package/dist/types/src/landmark/useLandmark.d.ts +4 -1
  1183. package/dist/types/src/link/useLink.d.ts +1 -0
  1184. package/dist/types/src/listbox/useListBox.d.ts +8 -3
  1185. package/dist/types/src/listbox/useListBoxSection.d.ts +1 -0
  1186. package/dist/types/src/listbox/useOption.d.ts +7 -0
  1187. package/dist/types/src/menu/useMenu.d.ts +3 -1
  1188. package/dist/types/src/menu/useMenuItem.d.ts +10 -1
  1189. package/dist/types/src/menu/useMenuSection.d.ts +1 -0
  1190. package/dist/types/src/menu/useMenuTrigger.d.ts +1 -0
  1191. package/dist/types/src/menu/useSafelyMouseToSubmenu.d.ts +3 -2
  1192. package/dist/types/src/menu/useSubmenuTrigger.d.ts +7 -2
  1193. package/dist/types/src/menu/utils.d.ts +1 -1
  1194. package/dist/types/src/numberfield/useNumberField.d.ts +11 -4
  1195. package/dist/types/src/overlays/Overlay.d.ts +1 -0
  1196. package/dist/types/src/overlays/PortalProvider.d.ts +4 -1
  1197. package/dist/types/src/overlays/ariaHideOutside.d.ts +1 -0
  1198. package/dist/types/src/overlays/calculatePosition.d.ts +3 -1
  1199. package/dist/types/src/overlays/useModal.d.ts +8 -7
  1200. package/dist/types/src/overlays/useModalOverlay.d.ts +2 -0
  1201. package/dist/types/src/overlays/useOverlay.d.ts +2 -0
  1202. package/dist/types/src/overlays/useOverlayPosition.d.ts +18 -0
  1203. package/dist/types/src/progress/useProgressBar.d.ts +5 -1
  1204. package/dist/types/src/radio/useRadio.d.ts +4 -1
  1205. package/dist/types/src/radio/useRadioGroup.d.ts +1 -0
  1206. package/dist/types/src/searchfield/useSearchField.d.ts +7 -2
  1207. package/dist/types/src/select/HiddenSelect.d.ts +2 -1
  1208. package/dist/types/src/select/useSelect.d.ts +3 -1
  1209. package/dist/types/src/selection/ListKeyboardDelegate.d.ts +19 -6
  1210. package/dist/types/src/selection/useSelectableCollection.d.ts +17 -2
  1211. package/dist/types/src/selection/useSelectableItem.d.ts +9 -7
  1212. package/dist/types/src/selection/useSelectableList.d.ts +5 -2
  1213. package/dist/types/src/separator/useSeparator.d.ts +1 -0
  1214. package/dist/types/src/slider/useSlider.d.ts +5 -4
  1215. package/dist/types/src/slider/useSliderThumb.d.ts +3 -1
  1216. package/dist/types/src/switch/useSwitch.d.ts +14 -27
  1217. package/dist/types/src/table/TableKeyboardDelegate.d.ts +6 -2
  1218. package/dist/types/src/table/useTable.d.ts +8 -4
  1219. package/dist/types/src/table/useTableCell.d.ts +7 -2
  1220. package/dist/types/src/table/useTableColumnHeader.d.ts +9 -2
  1221. package/dist/types/src/table/useTableColumnResize.d.ts +12 -6
  1222. package/dist/types/src/table/useTableHeaderRow.d.ts +1 -0
  1223. package/dist/types/src/table/useTableRow.d.ts +1 -0
  1224. package/dist/types/src/table/useTableSelectionCheckbox.d.ts +2 -0
  1225. package/dist/types/src/tabs/useTabList.d.ts +2 -0
  1226. package/dist/types/src/tabs/useTabPanel.d.ts +2 -2
  1227. package/dist/types/src/tag/useTag.d.ts +1 -0
  1228. package/dist/types/src/tag/useTagGroup.d.ts +7 -3
  1229. package/dist/types/src/textfield/useTextField.d.ts +26 -11
  1230. package/dist/types/src/toast/useToast.d.ts +2 -2
  1231. package/dist/types/src/toast/useToastRegion.d.ts +5 -3
  1232. package/dist/types/src/toggle/useToggle.d.ts +8 -3
  1233. package/dist/types/src/toolbar/useToolbar.d.ts +2 -0
  1234. package/dist/types/src/tree/useTree.d.ts +5 -3
  1235. package/dist/types/src/tree/useTreeItem.d.ts +5 -1
  1236. package/dist/types/src/utils/filterDOMProps.d.ts +1 -0
  1237. package/dist/types/src/utils/getNonce.d.ts +3 -2
  1238. package/dist/types/src/utils/isElementVisible.d.ts +1 -0
  1239. package/dist/types/src/utils/mergeProps.d.ts +3 -2
  1240. package/dist/types/src/utils/scrollIntoView.d.ts +5 -3
  1241. package/dist/types/src/utils/shadowdom/DOMFunctions.d.ts +1 -0
  1242. package/dist/types/src/utils/useId.d.ts +2 -0
  1243. package/dist/types/src/utils/useLabels.d.ts +1 -0
  1244. package/dist/types/src/utils/useLoadMore.d.ts +6 -4
  1245. package/dist/types/src/utils/useLoadMoreSentinel.d.ts +5 -3
  1246. package/dist/types/src/utils/useSlot.d.ts +8 -0
  1247. package/dist/types/src/visually-hidden/VisuallyHidden.d.ts +1 -0
  1248. package/package.json +10 -8
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;AA0BM,SAAS,0CAAiB,OAA6B,EAAE,KAA+B,EAAE,GAAkC;IACjI,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,wCAAa;IAC/B,IAAI,yBAAyB,CAAA,GAAA,mDAAwB,EAAE;IACvD,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,IAAI,OAAO,EACb,OAAO,2CAA6B;YAClC,SAAS,IAAI,OAAO;YACpB,QAAQ,QAAQ,MAAM;YACtB,kBAAiB,KAAK,EAAE,iBAAiB;gBACvC,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,wCAAa;gBAClC,IAAI,aAAa,CAAA,GAAA,iDAAsB,EAAE;gBACzC,OAAO,MAAM,gBAAgB,CAAC;oBAC5B,QAAQ,QAAQ,MAAM;2BACtB;uCACA;gCACA;kCACA;gBACF;YACF;YACA,mBAAmB,QAAQ,iBAAiB;QAC9C;IAEJ,GAAG;QAAC;QAAK,QAAQ,MAAM;QAAE;QAAO;QAAwB,QAAQ,iBAAiB;KAAC;IAElF,IAAI,cAAc;IAClB,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,wCAAa;IAClC,IAAI,aAAa,CAAA,GAAA,iDAAsB,EAAE;IACzC,IAAI,oBAAoB,eAAe,MAAM,gBAAgB,CAAC;QAC5D,QAAQ,QAAQ,MAAM;QACtB,OAAO,CAAA,GAAA,kCAAO,EAAE,YAAY,UAAU,CAAC,KAAK;QAC5C,mBAAmB,YAAY,UAAU,CAAC,qBAAqB;oBAC/D;sBACA;IACF,OAAO;IAEP,IAAI,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM;IACpD,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,eAAe,gBAAgB,IAAI,OAAO,EAC5C,IAAI,OAAO,CAAC,KAAK;IAErB,GAAG;QAAC;QAAc;QAAa;KAAI;IAEnC,OAAO;QACL,WAAW;YACT,GAAG,SAAS;YACZ,eAAe,CAAC,eAAe,oBAAoB,YAAY;QACjE;sBACA;IACF;AACF","sources":["packages/react-aria/src/dnd/useDroppableItem.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as DragManager from './DragManager';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {DropTarget, FocusableElement, RefObject} from '@react-types/shared';\nimport {getDroppableCollectionRef, getTypes, globalDndState, isInternalDropOperation} from './utils';\nimport {HTMLAttributes, useEffect} from 'react';\nimport {useVirtualDrop} from './useVirtualDrop';\n\nexport interface DroppableItemOptions {\n /** The drop target represented by the item. */\n target: DropTarget,\n /** The ref to the activate button. */\n activateButtonRef?: RefObject<FocusableElement | null>\n}\n\nexport interface DroppableItemResult {\n /** Props for the droppable element. */\n dropProps: HTMLAttributes<HTMLElement>,\n /** Whether the item is currently the active drop target. */\n isDropTarget: boolean\n}\n\n/**\n * Handles drop interactions for an item within a collection component.\n */\nexport function useDroppableItem(options: DroppableItemOptions, state: DroppableCollectionState, ref: RefObject<HTMLElement | null>): DroppableItemResult {\n let {dropProps} = useVirtualDrop();\n let droppableCollectionRef = getDroppableCollectionRef(state);\n useEffect(() => {\n if (ref.current) {\n return DragManager.registerDropItem({\n element: ref.current,\n target: options.target,\n getDropOperation(types, allowedOperations) {\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n return state.getDropOperation({\n target: options.target,\n types,\n allowedOperations,\n isInternal,\n draggingKeys\n });\n },\n activateButtonRef: options.activateButtonRef\n });\n }\n }, [ref, options.target, state, droppableCollectionRef, options.activateButtonRef]);\n\n let dragSession = DragManager.useDragSession();\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n let isValidDropTarget = dragSession && state.getDropOperation({\n target: options.target,\n types: getTypes(dragSession.dragTarget.items),\n allowedOperations: dragSession.dragTarget.allowedDropOperations,\n isInternal,\n draggingKeys\n }) !== 'cancel';\n\n let isDropTarget = state.isDropTarget(options.target);\n useEffect(() => {\n if (dragSession && isDropTarget && ref.current) {\n ref.current.focus();\n }\n }, [isDropTarget, dragSession, ref]);\n\n return {\n dropProps: {\n ...dropProps,\n 'aria-hidden': !dragSession || isValidDropTarget ? undefined : 'true'\n },\n isDropTarget\n };\n}\n"],"names":[],"version":3,"file":"useDroppableItem.cjs.map"}
1
+ {"mappings":";;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;AA+BM,SAAS,0CACd,OAA6B,EAC7B,KAA+B,EAC/B,GAAkC;IAElC,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,wCAAa;IAC/B,IAAI,yBAAyB,CAAA,GAAA,mDAAwB,EAAE;IACvD,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,IAAI,OAAO,EACb,OAAO,2CAA6B;YAClC,SAAS,IAAI,OAAO;YACpB,QAAQ,QAAQ,MAAM;YACtB,kBAAiB,KAAK,EAAE,iBAAiB;gBACvC,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,wCAAa;gBAClC,IAAI,aAAa,CAAA,GAAA,iDAAsB,EAAE;gBACzC,OAAO,MAAM,gBAAgB,CAAC;oBAC5B,QAAQ,QAAQ,MAAM;2BACtB;uCACA;gCACA;kCACA;gBACF;YACF;YACA,mBAAmB,QAAQ,iBAAiB;QAC9C;IAEJ,GAAG;QAAC;QAAK,QAAQ,MAAM;QAAE;QAAO;QAAwB,QAAQ,iBAAiB;KAAC;IAElF,IAAI,cAAc;IAClB,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,wCAAa;IAClC,IAAI,aAAa,CAAA,GAAA,iDAAsB,EAAE;IACzC,IAAI,oBACF,eACA,MAAM,gBAAgB,CAAC;QACrB,QAAQ,QAAQ,MAAM;QACtB,OAAO,CAAA,GAAA,kCAAO,EAAE,YAAY,UAAU,CAAC,KAAK;QAC5C,mBAAmB,YAAY,UAAU,CAAC,qBAAqB;oBAC/D;sBACA;IACF,OAAO;IAET,IAAI,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM;IACpD,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,eAAe,gBAAgB,IAAI,OAAO,EAC5C,IAAI,OAAO,CAAC,KAAK;IAErB,GAAG;QAAC;QAAc;QAAa;KAAI;IAEnC,OAAO;QACL,WAAW;YACT,GAAG,SAAS;YACZ,eAAe,CAAC,eAAe,oBAAoB,YAAY;QACjE;sBACA;IACF;AACF","sources":["packages/react-aria/src/dnd/useDroppableItem.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as DragManager from './DragManager';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {DropTarget, FocusableElement, RefObject} from '@react-types/shared';\nimport {\n getDroppableCollectionRef,\n getTypes,\n globalDndState,\n isInternalDropOperation\n} from './utils';\nimport {HTMLAttributes, useEffect} from 'react';\nimport {useVirtualDrop} from './useVirtualDrop';\n\nexport interface DroppableItemOptions {\n /** The drop target represented by the item. */\n target: DropTarget;\n /** The ref to the activate button. */\n activateButtonRef?: RefObject<FocusableElement | null>;\n}\n\nexport interface DroppableItemResult {\n /** Props for the droppable element. */\n dropProps: HTMLAttributes<HTMLElement>;\n /** Whether the item is currently the active drop target. */\n isDropTarget: boolean;\n}\n\n/**\n * Handles drop interactions for an item within a collection component.\n */\nexport function useDroppableItem(\n options: DroppableItemOptions,\n state: DroppableCollectionState,\n ref: RefObject<HTMLElement | null>\n): DroppableItemResult {\n let {dropProps} = useVirtualDrop();\n let droppableCollectionRef = getDroppableCollectionRef(state);\n useEffect(() => {\n if (ref.current) {\n return DragManager.registerDropItem({\n element: ref.current,\n target: options.target,\n getDropOperation(types, allowedOperations) {\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n return state.getDropOperation({\n target: options.target,\n types,\n allowedOperations,\n isInternal,\n draggingKeys\n });\n },\n activateButtonRef: options.activateButtonRef\n });\n }\n }, [ref, options.target, state, droppableCollectionRef, options.activateButtonRef]);\n\n let dragSession = DragManager.useDragSession();\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n let isValidDropTarget =\n dragSession &&\n state.getDropOperation({\n target: options.target,\n types: getTypes(dragSession.dragTarget.items),\n allowedOperations: dragSession.dragTarget.allowedDropOperations,\n isInternal,\n draggingKeys\n }) !== 'cancel';\n\n let isDropTarget = state.isDropTarget(options.target);\n useEffect(() => {\n if (dragSession && isDropTarget && ref.current) {\n ref.current.focus();\n }\n }, [isDropTarget, dragSession, ref]);\n\n return {\n dropProps: {\n ...dropProps,\n 'aria-hidden': !dragSession || isValidDropTarget ? undefined : 'true'\n },\n isDropTarget\n };\n}\n"],"names":[],"version":3,"file":"useDroppableItem.cjs.map"}
@@ -1 +1 @@
1
- {"mappings":";;;;;AAAA;;;;;;;;;;CAUC;;;;AA0BM,SAAS,0CAAiB,OAA6B,EAAE,KAA+B,EAAE,GAAkC;IACjI,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,yCAAa;IAC/B,IAAI,yBAAyB,CAAA,GAAA,yCAAwB,EAAE;IACvD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,IAAI,OAAO,EACb,OAAO,0CAA6B;YAClC,SAAS,IAAI,OAAO;YACpB,QAAQ,QAAQ,MAAM;YACtB,kBAAiB,KAAK,EAAE,iBAAiB;gBACvC,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;gBAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;gBACzC,OAAO,MAAM,gBAAgB,CAAC;oBAC5B,QAAQ,QAAQ,MAAM;2BACtB;uCACA;gCACA;kCACA;gBACF;YACF;YACA,mBAAmB,QAAQ,iBAAiB;QAC9C;IAEJ,GAAG;QAAC;QAAK,QAAQ,MAAM;QAAE;QAAO;QAAwB,QAAQ,iBAAiB;KAAC;IAElF,IAAI,cAAc;IAClB,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;IAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;IACzC,IAAI,oBAAoB,eAAe,MAAM,gBAAgB,CAAC;QAC5D,QAAQ,QAAQ,MAAM;QACtB,OAAO,CAAA,GAAA,yCAAO,EAAE,YAAY,UAAU,CAAC,KAAK;QAC5C,mBAAmB,YAAY,UAAU,CAAC,qBAAqB;oBAC/D;sBACA;IACF,OAAO;IAEP,IAAI,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM;IACpD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,eAAe,gBAAgB,IAAI,OAAO,EAC5C,IAAI,OAAO,CAAC,KAAK;IAErB,GAAG;QAAC;QAAc;QAAa;KAAI;IAEnC,OAAO;QACL,WAAW;YACT,GAAG,SAAS;YACZ,eAAe,CAAC,eAAe,oBAAoB,YAAY;QACjE;sBACA;IACF;AACF","sources":["packages/react-aria/src/dnd/useDroppableItem.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as DragManager from './DragManager';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {DropTarget, FocusableElement, RefObject} from '@react-types/shared';\nimport {getDroppableCollectionRef, getTypes, globalDndState, isInternalDropOperation} from './utils';\nimport {HTMLAttributes, useEffect} from 'react';\nimport {useVirtualDrop} from './useVirtualDrop';\n\nexport interface DroppableItemOptions {\n /** The drop target represented by the item. */\n target: DropTarget,\n /** The ref to the activate button. */\n activateButtonRef?: RefObject<FocusableElement | null>\n}\n\nexport interface DroppableItemResult {\n /** Props for the droppable element. */\n dropProps: HTMLAttributes<HTMLElement>,\n /** Whether the item is currently the active drop target. */\n isDropTarget: boolean\n}\n\n/**\n * Handles drop interactions for an item within a collection component.\n */\nexport function useDroppableItem(options: DroppableItemOptions, state: DroppableCollectionState, ref: RefObject<HTMLElement | null>): DroppableItemResult {\n let {dropProps} = useVirtualDrop();\n let droppableCollectionRef = getDroppableCollectionRef(state);\n useEffect(() => {\n if (ref.current) {\n return DragManager.registerDropItem({\n element: ref.current,\n target: options.target,\n getDropOperation(types, allowedOperations) {\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n return state.getDropOperation({\n target: options.target,\n types,\n allowedOperations,\n isInternal,\n draggingKeys\n });\n },\n activateButtonRef: options.activateButtonRef\n });\n }\n }, [ref, options.target, state, droppableCollectionRef, options.activateButtonRef]);\n\n let dragSession = DragManager.useDragSession();\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n let isValidDropTarget = dragSession && state.getDropOperation({\n target: options.target,\n types: getTypes(dragSession.dragTarget.items),\n allowedOperations: dragSession.dragTarget.allowedDropOperations,\n isInternal,\n draggingKeys\n }) !== 'cancel';\n\n let isDropTarget = state.isDropTarget(options.target);\n useEffect(() => {\n if (dragSession && isDropTarget && ref.current) {\n ref.current.focus();\n }\n }, [isDropTarget, dragSession, ref]);\n\n return {\n dropProps: {\n ...dropProps,\n 'aria-hidden': !dragSession || isValidDropTarget ? undefined : 'true'\n },\n isDropTarget\n };\n}\n"],"names":[],"version":3,"file":"useDroppableItem.js.map"}
1
+ {"mappings":";;;;;AAAA;;;;;;;;;;CAUC;;;;AA+BM,SAAS,0CACd,OAA6B,EAC7B,KAA+B,EAC/B,GAAkC;IAElC,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,yCAAa;IAC/B,IAAI,yBAAyB,CAAA,GAAA,yCAAwB,EAAE;IACvD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,IAAI,OAAO,EACb,OAAO,0CAA6B;YAClC,SAAS,IAAI,OAAO;YACpB,QAAQ,QAAQ,MAAM;YACtB,kBAAiB,KAAK,EAAE,iBAAiB;gBACvC,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;gBAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;gBACzC,OAAO,MAAM,gBAAgB,CAAC;oBAC5B,QAAQ,QAAQ,MAAM;2BACtB;uCACA;gCACA;kCACA;gBACF;YACF;YACA,mBAAmB,QAAQ,iBAAiB;QAC9C;IAEJ,GAAG;QAAC;QAAK,QAAQ,MAAM;QAAE;QAAO;QAAwB,QAAQ,iBAAiB;KAAC;IAElF,IAAI,cAAc;IAClB,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;IAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;IACzC,IAAI,oBACF,eACA,MAAM,gBAAgB,CAAC;QACrB,QAAQ,QAAQ,MAAM;QACtB,OAAO,CAAA,GAAA,yCAAO,EAAE,YAAY,UAAU,CAAC,KAAK;QAC5C,mBAAmB,YAAY,UAAU,CAAC,qBAAqB;oBAC/D;sBACA;IACF,OAAO;IAET,IAAI,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM;IACpD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,eAAe,gBAAgB,IAAI,OAAO,EAC5C,IAAI,OAAO,CAAC,KAAK;IAErB,GAAG;QAAC;QAAc;QAAa;KAAI;IAEnC,OAAO;QACL,WAAW;YACT,GAAG,SAAS;YACZ,eAAe,CAAC,eAAe,oBAAoB,YAAY;QACjE;sBACA;IACF;AACF","sources":["packages/react-aria/src/dnd/useDroppableItem.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as DragManager from './DragManager';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {DropTarget, FocusableElement, RefObject} from '@react-types/shared';\nimport {\n getDroppableCollectionRef,\n getTypes,\n globalDndState,\n isInternalDropOperation\n} from './utils';\nimport {HTMLAttributes, useEffect} from 'react';\nimport {useVirtualDrop} from './useVirtualDrop';\n\nexport interface DroppableItemOptions {\n /** The drop target represented by the item. */\n target: DropTarget;\n /** The ref to the activate button. */\n activateButtonRef?: RefObject<FocusableElement | null>;\n}\n\nexport interface DroppableItemResult {\n /** Props for the droppable element. */\n dropProps: HTMLAttributes<HTMLElement>;\n /** Whether the item is currently the active drop target. */\n isDropTarget: boolean;\n}\n\n/**\n * Handles drop interactions for an item within a collection component.\n */\nexport function useDroppableItem(\n options: DroppableItemOptions,\n state: DroppableCollectionState,\n ref: RefObject<HTMLElement | null>\n): DroppableItemResult {\n let {dropProps} = useVirtualDrop();\n let droppableCollectionRef = getDroppableCollectionRef(state);\n useEffect(() => {\n if (ref.current) {\n return DragManager.registerDropItem({\n element: ref.current,\n target: options.target,\n getDropOperation(types, allowedOperations) {\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n return state.getDropOperation({\n target: options.target,\n types,\n allowedOperations,\n isInternal,\n draggingKeys\n });\n },\n activateButtonRef: options.activateButtonRef\n });\n }\n }, [ref, options.target, state, droppableCollectionRef, options.activateButtonRef]);\n\n let dragSession = DragManager.useDragSession();\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n let isValidDropTarget =\n dragSession &&\n state.getDropOperation({\n target: options.target,\n types: getTypes(dragSession.dragTarget.items),\n allowedOperations: dragSession.dragTarget.allowedDropOperations,\n isInternal,\n draggingKeys\n }) !== 'cancel';\n\n let isDropTarget = state.isDropTarget(options.target);\n useEffect(() => {\n if (dragSession && isDropTarget && ref.current) {\n ref.current.focus();\n }\n }, [isDropTarget, dragSession, ref]);\n\n return {\n dropProps: {\n ...dropProps,\n 'aria-hidden': !dragSession || isValidDropTarget ? undefined : 'true'\n },\n isDropTarget\n };\n}\n"],"names":[],"version":3,"file":"useDroppableItem.js.map"}
@@ -1 +1 @@
1
- {"mappings":";;;;;AAAA;;;;;;;;;;CAUC;;;;AA0BM,SAAS,0CAAiB,OAA6B,EAAE,KAA+B,EAAE,GAAkC;IACjI,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,yCAAa;IAC/B,IAAI,yBAAyB,CAAA,GAAA,yCAAwB,EAAE;IACvD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,IAAI,OAAO,EACb,OAAO,0CAA6B;YAClC,SAAS,IAAI,OAAO;YACpB,QAAQ,QAAQ,MAAM;YACtB,kBAAiB,KAAK,EAAE,iBAAiB;gBACvC,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;gBAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;gBACzC,OAAO,MAAM,gBAAgB,CAAC;oBAC5B,QAAQ,QAAQ,MAAM;2BACtB;uCACA;gCACA;kCACA;gBACF;YACF;YACA,mBAAmB,QAAQ,iBAAiB;QAC9C;IAEJ,GAAG;QAAC;QAAK,QAAQ,MAAM;QAAE;QAAO;QAAwB,QAAQ,iBAAiB;KAAC;IAElF,IAAI,cAAc;IAClB,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;IAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;IACzC,IAAI,oBAAoB,eAAe,MAAM,gBAAgB,CAAC;QAC5D,QAAQ,QAAQ,MAAM;QACtB,OAAO,CAAA,GAAA,yCAAO,EAAE,YAAY,UAAU,CAAC,KAAK;QAC5C,mBAAmB,YAAY,UAAU,CAAC,qBAAqB;oBAC/D;sBACA;IACF,OAAO;IAEP,IAAI,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM;IACpD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,eAAe,gBAAgB,IAAI,OAAO,EAC5C,IAAI,OAAO,CAAC,KAAK;IAErB,GAAG;QAAC;QAAc;QAAa;KAAI;IAEnC,OAAO;QACL,WAAW;YACT,GAAG,SAAS;YACZ,eAAe,CAAC,eAAe,oBAAoB,YAAY;QACjE;sBACA;IACF;AACF","sources":["packages/react-aria/src/dnd/useDroppableItem.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as DragManager from './DragManager';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {DropTarget, FocusableElement, RefObject} from '@react-types/shared';\nimport {getDroppableCollectionRef, getTypes, globalDndState, isInternalDropOperation} from './utils';\nimport {HTMLAttributes, useEffect} from 'react';\nimport {useVirtualDrop} from './useVirtualDrop';\n\nexport interface DroppableItemOptions {\n /** The drop target represented by the item. */\n target: DropTarget,\n /** The ref to the activate button. */\n activateButtonRef?: RefObject<FocusableElement | null>\n}\n\nexport interface DroppableItemResult {\n /** Props for the droppable element. */\n dropProps: HTMLAttributes<HTMLElement>,\n /** Whether the item is currently the active drop target. */\n isDropTarget: boolean\n}\n\n/**\n * Handles drop interactions for an item within a collection component.\n */\nexport function useDroppableItem(options: DroppableItemOptions, state: DroppableCollectionState, ref: RefObject<HTMLElement | null>): DroppableItemResult {\n let {dropProps} = useVirtualDrop();\n let droppableCollectionRef = getDroppableCollectionRef(state);\n useEffect(() => {\n if (ref.current) {\n return DragManager.registerDropItem({\n element: ref.current,\n target: options.target,\n getDropOperation(types, allowedOperations) {\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n return state.getDropOperation({\n target: options.target,\n types,\n allowedOperations,\n isInternal,\n draggingKeys\n });\n },\n activateButtonRef: options.activateButtonRef\n });\n }\n }, [ref, options.target, state, droppableCollectionRef, options.activateButtonRef]);\n\n let dragSession = DragManager.useDragSession();\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n let isValidDropTarget = dragSession && state.getDropOperation({\n target: options.target,\n types: getTypes(dragSession.dragTarget.items),\n allowedOperations: dragSession.dragTarget.allowedDropOperations,\n isInternal,\n draggingKeys\n }) !== 'cancel';\n\n let isDropTarget = state.isDropTarget(options.target);\n useEffect(() => {\n if (dragSession && isDropTarget && ref.current) {\n ref.current.focus();\n }\n }, [isDropTarget, dragSession, ref]);\n\n return {\n dropProps: {\n ...dropProps,\n 'aria-hidden': !dragSession || isValidDropTarget ? undefined : 'true'\n },\n isDropTarget\n };\n}\n"],"names":[],"version":3,"file":"useDroppableItem.mjs.map"}
1
+ {"mappings":";;;;;AAAA;;;;;;;;;;CAUC;;;;AA+BM,SAAS,0CACd,OAA6B,EAC7B,KAA+B,EAC/B,GAAkC;IAElC,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,yCAAa;IAC/B,IAAI,yBAAyB,CAAA,GAAA,yCAAwB,EAAE;IACvD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,IAAI,OAAO,EACb,OAAO,0CAA6B;YAClC,SAAS,IAAI,OAAO;YACpB,QAAQ,QAAQ,MAAM;YACtB,kBAAiB,KAAK,EAAE,iBAAiB;gBACvC,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;gBAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;gBACzC,OAAO,MAAM,gBAAgB,CAAC;oBAC5B,QAAQ,QAAQ,MAAM;2BACtB;uCACA;gCACA;kCACA;gBACF;YACF;YACA,mBAAmB,QAAQ,iBAAiB;QAC9C;IAEJ,GAAG;QAAC;QAAK,QAAQ,MAAM;QAAE;QAAO;QAAwB,QAAQ,iBAAiB;KAAC;IAElF,IAAI,cAAc;IAClB,IAAI,gBAAC,YAAY,EAAC,GAAG,CAAA,GAAA,yCAAa;IAClC,IAAI,aAAa,CAAA,GAAA,yCAAsB,EAAE;IACzC,IAAI,oBACF,eACA,MAAM,gBAAgB,CAAC;QACrB,QAAQ,QAAQ,MAAM;QACtB,OAAO,CAAA,GAAA,yCAAO,EAAE,YAAY,UAAU,CAAC,KAAK;QAC5C,mBAAmB,YAAY,UAAU,CAAC,qBAAqB;oBAC/D;sBACA;IACF,OAAO;IAET,IAAI,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM;IACpD,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,eAAe,gBAAgB,IAAI,OAAO,EAC5C,IAAI,OAAO,CAAC,KAAK;IAErB,GAAG;QAAC;QAAc;QAAa;KAAI;IAEnC,OAAO;QACL,WAAW;YACT,GAAG,SAAS;YACZ,eAAe,CAAC,eAAe,oBAAoB,YAAY;QACjE;sBACA;IACF;AACF","sources":["packages/react-aria/src/dnd/useDroppableItem.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as DragManager from './DragManager';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {DropTarget, FocusableElement, RefObject} from '@react-types/shared';\nimport {\n getDroppableCollectionRef,\n getTypes,\n globalDndState,\n isInternalDropOperation\n} from './utils';\nimport {HTMLAttributes, useEffect} from 'react';\nimport {useVirtualDrop} from './useVirtualDrop';\n\nexport interface DroppableItemOptions {\n /** The drop target represented by the item. */\n target: DropTarget;\n /** The ref to the activate button. */\n activateButtonRef?: RefObject<FocusableElement | null>;\n}\n\nexport interface DroppableItemResult {\n /** Props for the droppable element. */\n dropProps: HTMLAttributes<HTMLElement>;\n /** Whether the item is currently the active drop target. */\n isDropTarget: boolean;\n}\n\n/**\n * Handles drop interactions for an item within a collection component.\n */\nexport function useDroppableItem(\n options: DroppableItemOptions,\n state: DroppableCollectionState,\n ref: RefObject<HTMLElement | null>\n): DroppableItemResult {\n let {dropProps} = useVirtualDrop();\n let droppableCollectionRef = getDroppableCollectionRef(state);\n useEffect(() => {\n if (ref.current) {\n return DragManager.registerDropItem({\n element: ref.current,\n target: options.target,\n getDropOperation(types, allowedOperations) {\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n return state.getDropOperation({\n target: options.target,\n types,\n allowedOperations,\n isInternal,\n draggingKeys\n });\n },\n activateButtonRef: options.activateButtonRef\n });\n }\n }, [ref, options.target, state, droppableCollectionRef, options.activateButtonRef]);\n\n let dragSession = DragManager.useDragSession();\n let {draggingKeys} = globalDndState;\n let isInternal = isInternalDropOperation(droppableCollectionRef);\n let isValidDropTarget =\n dragSession &&\n state.getDropOperation({\n target: options.target,\n types: getTypes(dragSession.dragTarget.items),\n allowedOperations: dragSession.dragTarget.allowedDropOperations,\n isInternal,\n draggingKeys\n }) !== 'cancel';\n\n let isDropTarget = state.isDropTarget(options.target);\n useEffect(() => {\n if (dragSession && isDropTarget && ref.current) {\n ref.current.focus();\n }\n }, [isDropTarget, dragSession, ref]);\n\n return {\n dropProps: {\n ...dropProps,\n 'aria-hidden': !dragSession || isValidDropTarget ? undefined : 'true'\n },\n isDropTarget\n };\n}\n"],"names":[],"version":3,"file":"useDroppableItem.mjs.map"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAeD,MAAM,iCAAW;IACf,UAAU;IACV,OAAO;IACP,SAAS;AACX;AAEO,SAAS;IACd,IAAI,kBAAkB,CAAA,GAAA,qDAA0B,EAAE,CAAA,GAAA,mDAAW,GAAG;IAChE,IAAI,WAAW,CAAA,GAAA,yCAAc;IAC7B,IAAI,cAAc;IAClB,IAAI,mBAAmB,CAAA,GAAA,wCAAa,EAAE,cAAc,gBAAgB,MAAM,CAAC,8BAAQ,CAAC,SAAS,IAAI;IAEjG,OAAO;QACL,WAAW;YACT,GAAG,gBAAgB;YACnB,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,yCAAyC;YACzC,4EAA4E;YAC5E,SAAS,KAAO;QAClB;IACF;AACF","sources":["packages/react-aria/src/dnd/useVirtualDrop.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaButtonProps} from '../button/useButton';\nimport {DOMAttributes} from 'react';\nimport * as DragManager from './DragManager';\n// @ts-ignore\nimport intlMessages from '../../intl/dnd/*.json';\nimport {useDescription} from '../utils/useDescription';\nimport {useDragModality} from './utils';\nimport {useLocalizedStringFormatter} from '../i18n/useLocalizedStringFormatter';\n\ninterface VirtualDropResult {\n dropProps: AriaButtonProps & DOMAttributes<HTMLDivElement>\n}\n\nconst MESSAGES = {\n keyboard: 'dropDescriptionKeyboard',\n touch: 'dropDescriptionTouch',\n virtual: 'dropDescriptionVirtual'\n};\n\nexport function useVirtualDrop(): VirtualDropResult {\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');\n let modality = useDragModality();\n let dragSession = DragManager.useDragSession();\n let descriptionProps = useDescription(dragSession ? stringFormatter.format(MESSAGES[modality]) : '');\n\n return {\n dropProps: {\n ...descriptionProps,\n // Mobile Safari does not properly bubble click events on elements except links or inputs\n // unless there is an onclick handler bound directly to the element itself. By adding this\n // handler, React will take care of adding that for us, and we are able to handle document\n // level click events in the DragManager.\n // See https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n onClick: () => {}\n }\n };\n}\n"],"names":[],"version":3,"file":"useVirtualDrop.cjs.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAcD,MAAM,iCAAW;IACf,UAAU;IACV,OAAO;IACP,SAAS;AACX;AAEO,SAAS;IACd,IAAI,kBAAkB,CAAA,GAAA,qDAA0B,EAAE,CAAA,GAAA,mDAAW,GAAG;IAChE,IAAI,WAAW,CAAA,GAAA,yCAAc;IAC7B,IAAI,cAAc;IAClB,IAAI,mBAAmB,CAAA,GAAA,wCAAa,EAClC,cAAc,gBAAgB,MAAM,CAAC,8BAAQ,CAAC,SAAS,IAAI;IAG7D,OAAO;QACL,WAAW;YACT,GAAG,gBAAgB;YACnB,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,yCAAyC;YACzC,4EAA4E;YAC5E,SAAS,KAAO;QAClB;IACF;AACF","sources":["packages/react-aria/src/dnd/useVirtualDrop.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaButtonProps} from '../button/useButton';\nimport {DOMAttributes} from 'react';\nimport * as DragManager from './DragManager';\nimport intlMessages from '../../intl/dnd/*.json';\nimport {useDescription} from '../utils/useDescription';\nimport {useDragModality} from './utils';\nimport {useLocalizedStringFormatter} from '../i18n/useLocalizedStringFormatter';\n\ninterface VirtualDropResult {\n dropProps: AriaButtonProps & DOMAttributes<HTMLDivElement>;\n}\n\nconst MESSAGES = {\n keyboard: 'dropDescriptionKeyboard',\n touch: 'dropDescriptionTouch',\n virtual: 'dropDescriptionVirtual'\n};\n\nexport function useVirtualDrop(): VirtualDropResult {\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');\n let modality = useDragModality();\n let dragSession = DragManager.useDragSession();\n let descriptionProps = useDescription(\n dragSession ? stringFormatter.format(MESSAGES[modality]) : ''\n );\n\n return {\n dropProps: {\n ...descriptionProps,\n // Mobile Safari does not properly bubble click events on elements except links or inputs\n // unless there is an onclick handler bound directly to the element itself. By adding this\n // handler, React will take care of adding that for us, and we are able to handle document\n // level click events in the DragManager.\n // See https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n onClick: () => {}\n }\n };\n}\n"],"names":[],"version":3,"file":"useVirtualDrop.cjs.map"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAeD,MAAM,iCAAW;IACf,UAAU;IACV,OAAO;IACP,SAAS;AACX;AAEO,SAAS;IACd,IAAI,kBAAkB,CAAA,GAAA,yCAA0B,EAAE,CAAA,GAAA,8CAAW,GAAG;IAChE,IAAI,WAAW,CAAA,GAAA,yCAAc;IAC7B,IAAI,cAAc;IAClB,IAAI,mBAAmB,CAAA,GAAA,yCAAa,EAAE,cAAc,gBAAgB,MAAM,CAAC,8BAAQ,CAAC,SAAS,IAAI;IAEjG,OAAO;QACL,WAAW;YACT,GAAG,gBAAgB;YACnB,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,yCAAyC;YACzC,4EAA4E;YAC5E,SAAS,KAAO;QAClB;IACF;AACF","sources":["packages/react-aria/src/dnd/useVirtualDrop.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaButtonProps} from '../button/useButton';\nimport {DOMAttributes} from 'react';\nimport * as DragManager from './DragManager';\n// @ts-ignore\nimport intlMessages from '../../intl/dnd/*.json';\nimport {useDescription} from '../utils/useDescription';\nimport {useDragModality} from './utils';\nimport {useLocalizedStringFormatter} from '../i18n/useLocalizedStringFormatter';\n\ninterface VirtualDropResult {\n dropProps: AriaButtonProps & DOMAttributes<HTMLDivElement>\n}\n\nconst MESSAGES = {\n keyboard: 'dropDescriptionKeyboard',\n touch: 'dropDescriptionTouch',\n virtual: 'dropDescriptionVirtual'\n};\n\nexport function useVirtualDrop(): VirtualDropResult {\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');\n let modality = useDragModality();\n let dragSession = DragManager.useDragSession();\n let descriptionProps = useDescription(dragSession ? stringFormatter.format(MESSAGES[modality]) : '');\n\n return {\n dropProps: {\n ...descriptionProps,\n // Mobile Safari does not properly bubble click events on elements except links or inputs\n // unless there is an onclick handler bound directly to the element itself. By adding this\n // handler, React will take care of adding that for us, and we are able to handle document\n // level click events in the DragManager.\n // See https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n onClick: () => {}\n }\n };\n}\n"],"names":[],"version":3,"file":"useVirtualDrop.js.map"}
1
+ {"mappings":";;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAcD,MAAM,iCAAW;IACf,UAAU;IACV,OAAO;IACP,SAAS;AACX;AAEO,SAAS;IACd,IAAI,kBAAkB,CAAA,GAAA,yCAA0B,EAAE,CAAA,GAAA,8CAAW,GAAG;IAChE,IAAI,WAAW,CAAA,GAAA,yCAAc;IAC7B,IAAI,cAAc;IAClB,IAAI,mBAAmB,CAAA,GAAA,yCAAa,EAClC,cAAc,gBAAgB,MAAM,CAAC,8BAAQ,CAAC,SAAS,IAAI;IAG7D,OAAO;QACL,WAAW;YACT,GAAG,gBAAgB;YACnB,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,yCAAyC;YACzC,4EAA4E;YAC5E,SAAS,KAAO;QAClB;IACF;AACF","sources":["packages/react-aria/src/dnd/useVirtualDrop.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaButtonProps} from '../button/useButton';\nimport {DOMAttributes} from 'react';\nimport * as DragManager from './DragManager';\nimport intlMessages from '../../intl/dnd/*.json';\nimport {useDescription} from '../utils/useDescription';\nimport {useDragModality} from './utils';\nimport {useLocalizedStringFormatter} from '../i18n/useLocalizedStringFormatter';\n\ninterface VirtualDropResult {\n dropProps: AriaButtonProps & DOMAttributes<HTMLDivElement>;\n}\n\nconst MESSAGES = {\n keyboard: 'dropDescriptionKeyboard',\n touch: 'dropDescriptionTouch',\n virtual: 'dropDescriptionVirtual'\n};\n\nexport function useVirtualDrop(): VirtualDropResult {\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');\n let modality = useDragModality();\n let dragSession = DragManager.useDragSession();\n let descriptionProps = useDescription(\n dragSession ? stringFormatter.format(MESSAGES[modality]) : ''\n );\n\n return {\n dropProps: {\n ...descriptionProps,\n // Mobile Safari does not properly bubble click events on elements except links or inputs\n // unless there is an onclick handler bound directly to the element itself. By adding this\n // handler, React will take care of adding that for us, and we are able to handle document\n // level click events in the DragManager.\n // See https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n onClick: () => {}\n }\n };\n}\n"],"names":[],"version":3,"file":"useVirtualDrop.js.map"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAeD,MAAM,iCAAW;IACf,UAAU;IACV,OAAO;IACP,SAAS;AACX;AAEO,SAAS;IACd,IAAI,kBAAkB,CAAA,GAAA,yCAA0B,EAAE,CAAA,GAAA,+CAAW,GAAG;IAChE,IAAI,WAAW,CAAA,GAAA,yCAAc;IAC7B,IAAI,cAAc;IAClB,IAAI,mBAAmB,CAAA,GAAA,yCAAa,EAAE,cAAc,gBAAgB,MAAM,CAAC,8BAAQ,CAAC,SAAS,IAAI;IAEjG,OAAO;QACL,WAAW;YACT,GAAG,gBAAgB;YACnB,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,yCAAyC;YACzC,4EAA4E;YAC5E,SAAS,KAAO;QAClB;IACF;AACF","sources":["packages/react-aria/src/dnd/useVirtualDrop.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaButtonProps} from '../button/useButton';\nimport {DOMAttributes} from 'react';\nimport * as DragManager from './DragManager';\n// @ts-ignore\nimport intlMessages from '../../intl/dnd/*.json';\nimport {useDescription} from '../utils/useDescription';\nimport {useDragModality} from './utils';\nimport {useLocalizedStringFormatter} from '../i18n/useLocalizedStringFormatter';\n\ninterface VirtualDropResult {\n dropProps: AriaButtonProps & DOMAttributes<HTMLDivElement>\n}\n\nconst MESSAGES = {\n keyboard: 'dropDescriptionKeyboard',\n touch: 'dropDescriptionTouch',\n virtual: 'dropDescriptionVirtual'\n};\n\nexport function useVirtualDrop(): VirtualDropResult {\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');\n let modality = useDragModality();\n let dragSession = DragManager.useDragSession();\n let descriptionProps = useDescription(dragSession ? stringFormatter.format(MESSAGES[modality]) : '');\n\n return {\n dropProps: {\n ...descriptionProps,\n // Mobile Safari does not properly bubble click events on elements except links or inputs\n // unless there is an onclick handler bound directly to the element itself. By adding this\n // handler, React will take care of adding that for us, and we are able to handle document\n // level click events in the DragManager.\n // See https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n onClick: () => {}\n }\n };\n}\n"],"names":[],"version":3,"file":"useVirtualDrop.mjs.map"}
1
+ {"mappings":";;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAcD,MAAM,iCAAW;IACf,UAAU;IACV,OAAO;IACP,SAAS;AACX;AAEO,SAAS;IACd,IAAI,kBAAkB,CAAA,GAAA,yCAA0B,EAAE,CAAA,GAAA,+CAAW,GAAG;IAChE,IAAI,WAAW,CAAA,GAAA,yCAAc;IAC7B,IAAI,cAAc;IAClB,IAAI,mBAAmB,CAAA,GAAA,yCAAa,EAClC,cAAc,gBAAgB,MAAM,CAAC,8BAAQ,CAAC,SAAS,IAAI;IAG7D,OAAO;QACL,WAAW;YACT,GAAG,gBAAgB;YACnB,yFAAyF;YACzF,0FAA0F;YAC1F,0FAA0F;YAC1F,yCAAyC;YACzC,4EAA4E;YAC5E,SAAS,KAAO;QAClB;IACF;AACF","sources":["packages/react-aria/src/dnd/useVirtualDrop.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaButtonProps} from '../button/useButton';\nimport {DOMAttributes} from 'react';\nimport * as DragManager from './DragManager';\nimport intlMessages from '../../intl/dnd/*.json';\nimport {useDescription} from '../utils/useDescription';\nimport {useDragModality} from './utils';\nimport {useLocalizedStringFormatter} from '../i18n/useLocalizedStringFormatter';\n\ninterface VirtualDropResult {\n dropProps: AriaButtonProps & DOMAttributes<HTMLDivElement>;\n}\n\nconst MESSAGES = {\n keyboard: 'dropDescriptionKeyboard',\n touch: 'dropDescriptionTouch',\n virtual: 'dropDescriptionVirtual'\n};\n\nexport function useVirtualDrop(): VirtualDropResult {\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/dnd');\n let modality = useDragModality();\n let dragSession = DragManager.useDragSession();\n let descriptionProps = useDescription(\n dragSession ? stringFormatter.format(MESSAGES[modality]) : ''\n );\n\n return {\n dropProps: {\n ...descriptionProps,\n // Mobile Safari does not properly bubble click events on elements except links or inputs\n // unless there is an onclick handler bound directly to the element itself. By adding this\n // handler, React will take care of adding that for us, and we are able to handle document\n // level click events in the DragManager.\n // See https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n onClick: () => {}\n }\n };\n}\n"],"names":[],"version":3,"file":"useVirtualDrop.mjs.map"}
@@ -62,7 +62,7 @@ function $c67ff3d36836a1c1$export$e1d41611756c6326(items) {
62
62
  function $c67ff3d36836a1c1$var$mapModality(modality) {
63
63
  if (!modality) modality = 'virtual';
64
64
  if (modality === 'pointer') modality = 'virtual';
65
- if (modality === 'virtual' && typeof window !== 'undefined' && 'ontouchstart' in window) modality = 'touch';
65
+ if (modality === 'virtual' && typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches) modality = 'touch';
66
66
  return modality;
67
67
  }
68
68
  function $c67ff3d36836a1c1$export$49bac5d6d4b352ea() {
@@ -134,8 +134,18 @@ class $c67ff3d36836a1c1$export$7f04ce188c91447c {
134
134
  this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');
135
135
  }
136
136
  has(type) {
137
- if (this.includesUnknownTypes || type === $c67ff3d36836a1c1$export$990fced5dfac2637 && this.types.has((0, $47f95f5edd0c867d$exports.GENERIC_TYPE))) return true;
138
- return typeof type === 'string' && this.types.has(type);
137
+ if (Array.isArray(type)) return type.some((t)=>this.has(t));
138
+ if (this.includesUnknownTypes || type === $c67ff3d36836a1c1$export$990fced5dfac2637 && this.types.has((0, $47f95f5edd0c867d$exports.GENERIC_TYPE)) || type === '*/*') return true;
139
+ if (typeof type === 'string') {
140
+ if (type.endsWith('/*')) {
141
+ for (let key of this.types){
142
+ if (key.startsWith(type.slice(0, -2))) return true;
143
+ }
144
+ return false;
145
+ }
146
+ return this.types.has(type);
147
+ }
148
+ return false;
139
149
  }
140
150
  }
141
151
  function $c67ff3d36836a1c1$export$d9e760437831f8b3(dataTransfer) {
@@ -194,7 +204,7 @@ function $c67ff3d36836a1c1$var$blobToString(blob) {
194
204
  if (typeof blob.text === 'function') return blob.text();
195
205
  // Safari doesn't have the Blob#text() method yet...
196
206
  return new Promise((resolve, reject)=>{
197
- let reader = new FileReader;
207
+ let reader = new FileReader();
198
208
  reader.onload = ()=>{
199
209
  resolve(reader.result);
200
210
  };
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-aria/src/dnd/utils.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CUSTOM_DRAG_TYPE, DROP_OPERATION, GENERIC_TYPE, NATIVE_DRAG_TYPES} from './constants';\nimport {DirectoryDropItem, DragItem, DropItem, FileDropItem, DragTypes as IDragTypes, Key, RefObject, TextDropItem} from '@react-types/shared';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {getInteractionModality, useInteractionModality} from '../interactions/useFocusVisible';\n\ninterface DroppableCollectionMap {\n id: string,\n ref: RefObject<HTMLElement | null>\n}\n\nexport const droppableCollectionMap: WeakMap<DroppableCollectionState, DroppableCollectionMap> = new WeakMap<DroppableCollectionState, DroppableCollectionMap>();\nexport const DIRECTORY_DRAG_TYPE: symbol = Symbol();\n\nexport function getDroppableCollectionId(state: DroppableCollectionState): string {\n let {id} = droppableCollectionMap.get(state) || {};\n if (!id) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return id;\n}\n\nexport function getDroppableCollectionRef(state: DroppableCollectionState): RefObject<HTMLElement | null> {\n let {ref} = droppableCollectionMap.get(state) || {};\n if (!ref) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return ref;\n}\n\nexport function getTypes(items: DragItem[]): Set<string> {\n let types = new Set<string>();\n for (let item of items) {\n for (let type of Object.keys(item)) {\n types.add(type);\n }\n }\n\n return types;\n}\n\nfunction mapModality(modality: string | null) {\n if (!modality) {\n modality = 'virtual';\n }\n\n if (modality === 'pointer') {\n modality = 'virtual';\n }\n\n if (modality === 'virtual' && (typeof window !== 'undefined' && 'ontouchstart' in window)) {\n modality = 'touch';\n }\n\n return modality;\n}\n\nexport function useDragModality(): string {\n return mapModality(useInteractionModality());\n}\n\nexport function getDragModality(): string {\n return mapModality(getInteractionModality());\n}\n\nexport function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {\n // The data transfer API doesn't support more than one item of a given type at once.\n // In addition, only a small set of types are supported natively for transfer between applications.\n // We allow for both multiple items, as well as multiple representations of a single item.\n // In order to make our API work with the native API, we serialize all items to JSON and\n // store as a single native item. We only need to do this if there is more than one item\n // of the same type, or if an item has more than one representation. Otherwise the native\n // API is sufficient.\n //\n // The DataTransferItemList API also theoretically supports adding files, which would enable\n // dragging binary data out of the browser onto the user's desktop for example. Unfortunately,\n // this does not currently work in any browser, so it is not currently supported by our API.\n // See e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=438479.\n let groupedByType = new Map<string, string[]>();\n let needsCustomData = false;\n let customData: Array<{}> = [];\n for (let item of items) {\n let types = Object.keys(item);\n if (types.length > 1) {\n needsCustomData = true;\n }\n\n let dataByType = {};\n for (let type of types) {\n let typeItems = groupedByType.get(type);\n if (!typeItems) {\n typeItems = [];\n groupedByType.set(type, typeItems);\n } else {\n needsCustomData = true;\n }\n\n let data = item[type];\n dataByType[type] = data;\n typeItems.push(data);\n }\n\n customData.push(dataByType);\n }\n\n for (let [type, items] of groupedByType) {\n if (NATIVE_DRAG_TYPES.has(type)) {\n // Only one item of a given type can be set on a data transfer.\n // Join all of the items together separated by newlines.\n let data = items.join('\\n');\n dataTransfer.items.add(data, type);\n } else {\n // Set data to the first item so we have access to the list of types.\n dataTransfer.items.add(items[0], type);\n }\n }\n\n if (needsCustomData) {\n let data = JSON.stringify(customData);\n dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);\n }\n}\n\nexport class DragTypes implements IDragTypes {\n private types: Set<string>;\n private includesUnknownTypes: boolean;\n\n constructor(dataTransfer: DataTransfer) {\n this.types = new Set<string>();\n\n let hasFiles = false;\n for (let item of dataTransfer.items) {\n if (item.type !== CUSTOM_DRAG_TYPE) {\n if (item.kind === 'file') {\n hasFiles = true;\n }\n\n if (item.type) {\n this.types.add(item.type);\n } else {\n // Files with unknown types or extensions that don't map to a known mime type\n // are sometimes exposed as an empty string by the browser. Map to a generic\n // mime type instead. Note that this could also be a directory as there's no\n // way to determine if something is a file or directory until drop.\n this.types.add(GENERIC_TYPE);\n }\n }\n }\n\n // In Safari, when dragging files, the dataTransfer.items list is empty, but dataTransfer.types contains \"Files\".\n // Unfortunately, this doesn't tell us what types of files the user is dragging, so we need to assume that any\n // type the user checks for is included. See https://bugs.webkit.org/show_bug.cgi?id=223517.\n this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');\n }\n\n has(type: string | symbol): boolean {\n if (this.includesUnknownTypes || (type === DIRECTORY_DRAG_TYPE && this.types.has(GENERIC_TYPE))) {\n return true;\n }\n\n return typeof type === 'string' && this.types.has(type);\n }\n}\n\nexport function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {\n let items: DropItem[] = [];\n if (!dataTransfer) {\n return items;\n }\n\n // If our custom drag type is available, use that. This is a JSON serialized\n // representation of all items in the drag, set when there are multiple items\n // of the same type, or an individual item has multiple representations.\n let hasCustomType = false;\n if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {\n try {\n let data = dataTransfer.getData(CUSTOM_DRAG_TYPE);\n let parsed = JSON.parse(data);\n for (let item of parsed) {\n items.push({\n kind: 'text',\n types: new Set(Object.keys(item)),\n getText: (type) => Promise.resolve(item[type])\n });\n }\n\n hasCustomType = true;\n } catch {\n // ignore\n }\n }\n\n // Otherwise, map native drag items to items of a single representation.\n if (!hasCustomType) {\n let stringItems = new Map();\n for (let item of dataTransfer.items) {\n if (item.kind === 'string') {\n // The data for all formats must be read here because the data transfer gets\n // cleared out after the event handler finishes. If the item has an empty string\n // as a type, the mime type is unknown. Map to a generic mime type instead.\n stringItems.set(item.type || GENERIC_TYPE, dataTransfer.getData(item.type));\n } else if (item.kind === 'file') {\n // Despite the name, webkitGetAsEntry is also implemented in Firefox and Edge.\n // In the future, we may use getAsFileSystemHandle instead, but that's currently\n // only implemented in Chrome.\n if (typeof item.webkitGetAsEntry === 'function') {\n let entry: FileSystemEntry | null = item.webkitGetAsEntry();\n // eslint-disable-next-line max-depth\n if (!entry) {\n // For some reason, Firefox includes an item with type image/png when copy\n // and pasting any file or directory (no matter the type), but returns `null` for both\n // item.getAsFile() and item.webkitGetAsEntry(). Safari works as expected. Ignore this\n // item if this happens. See https://bugzilla.mozilla.org/show_bug.cgi?id=1699743.\n // This was recently fixed in Chrome Canary: https://bugs.chromium.org/p/chromium/issues/detail?id=1175483.\n continue;\n }\n\n // eslint-disable-next-line max-depth\n if (entry.isFile) {\n items.push(createFileItem(item.getAsFile()));\n } else if (entry.isDirectory) {\n items.push(createDirectoryItem(entry));\n }\n } else {\n // Assume it's a file.\n items.push(createFileItem(item.getAsFile()));\n }\n }\n }\n\n // All string items are different representations of the same item. There's no way to have\n // multiple string items at once in the current DataTransfer API.\n if (stringItems.size > 0) {\n items.push({\n kind: 'text',\n types: new Set(stringItems.keys()),\n getText: (type) => Promise.resolve(stringItems.get(type))\n });\n }\n }\n\n return items;\n}\n\nfunction blobToString(blob: Blob): Promise<string> {\n if (typeof blob.text === 'function') {\n return blob.text();\n }\n\n // Safari doesn't have the Blob#text() method yet...\n return new Promise((resolve, reject) => {\n let reader = new FileReader;\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n}\n\nfunction createFileItem(file: File | null): FileDropItem {\n if (!file) {\n throw new Error('No file provided');\n }\n return {\n kind: 'file',\n type: file.type || GENERIC_TYPE,\n name: file.name,\n getText: () => blobToString(file),\n getFile: () => Promise.resolve(file)\n };\n}\n\nfunction createDirectoryItem(entry: any): DirectoryDropItem {\n return {\n kind: 'directory',\n name: entry.name,\n getEntries: () => getEntries(entry)\n };\n}\n\nasync function *getEntries(item: FileSystemDirectoryEntry): AsyncIterable<FileDropItem | DirectoryDropItem> {\n let reader = item.createReader();\n\n // We must call readEntries repeatedly because there may be a limit to the\n // number of entries that are returned at once.\n let entries: FileSystemEntry[];\n do {\n entries = await new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n\n for (let entry of entries) {\n if (entry.isFile) {\n let file = await getEntryFile(entry as FileSystemFileEntry);\n yield createFileItem(file);\n } else if (entry.isDirectory) {\n yield createDirectoryItem(entry);\n }\n }\n } while (entries.length > 0);\n}\n\nfunction getEntryFile(entry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n}\n\n/** Returns whether a drop item contains text data. */\nexport function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {\n return dropItem.kind === 'text';\n}\n\n/** Returns whether a drop item is a file. */\nexport function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {\n return dropItem.kind === 'file';\n}\n\n/** Returns whether a drop item is a directory. */\nexport function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {\n return dropItem.kind === 'directory';\n}\n\n// Global DnD collection state tracker.\nexport interface DnDState {\n /** A ref for the of the drag items in the current drag session if any. */\n draggingCollectionRef?: RefObject<HTMLElement | null>,\n /** The set of currently dragged keys. */\n draggingKeys: Set<Key>,\n /** A ref for the collection that is targeted for a drop operation, if any. */\n dropCollectionRef?: RefObject<HTMLElement | null>\n}\n\nexport let globalDndState: DnDState = {draggingKeys: new Set()};\n\nexport function setDraggingCollectionRef(ref: RefObject<HTMLElement | null>): void {\n globalDndState.draggingCollectionRef = ref;\n}\n\nexport function setDraggingKeys(keys: Set<Key>): void {\n globalDndState.draggingKeys = keys;\n}\n\nexport function setDropCollectionRef(ref?: RefObject<HTMLElement | null>): void {\n globalDndState.dropCollectionRef = ref;\n}\n\nexport function clearGlobalDnDState(): void {\n globalDndState = {draggingKeys: new Set()};\n}\n\nexport function setGlobalDnDState(state: DnDState): void {\n globalDndState = state;\n}\n\n// Util function to check if the current dragging collection ref is the same as the current targeted droppable collection ref.\n// Allows a droppable ref arg in case the global drop collection ref hasn't been set\nexport function isInternalDropOperation(ref?: RefObject<HTMLElement | null>): boolean {\n let {draggingCollectionRef, dropCollectionRef} = globalDndState;\n return draggingCollectionRef?.current != null && draggingCollectionRef.current === (ref?.current || dropCollectionRef?.current);\n}\n\ntype DropEffect = 'none' | 'copy' | 'link' | 'move';\nexport let globalDropEffect: DropEffect | undefined;\nexport function setGlobalDropEffect(dropEffect: DropEffect | undefined): void {\n globalDropEffect = dropEffect;\n}\n\nexport let globalAllowedDropOperations: DROP_OPERATION = DROP_OPERATION.none;\nexport function setGlobalAllowedDropOperations(o: DROP_OPERATION): void {\n globalAllowedDropOperations = o;\n}\n"],"names":[],"version":3,"file":"utils.cjs.map"}
1
+ {"mappings":"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","sources":["packages/react-aria/src/dnd/utils.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CUSTOM_DRAG_TYPE, DROP_OPERATION, GENERIC_TYPE, NATIVE_DRAG_TYPES} from './constants';\nimport {\n DirectoryDropItem,\n DragItem,\n DragType,\n DropItem,\n FileDropItem,\n DragTypes as IDragTypes,\n Key,\n RefObject,\n TextDropItem\n} from '@react-types/shared';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {getInteractionModality, useInteractionModality} from '../interactions/useFocusVisible';\n\ninterface DroppableCollectionMap {\n id: string;\n ref: RefObject<HTMLElement | null>;\n}\n\nexport const droppableCollectionMap: WeakMap<DroppableCollectionState, DroppableCollectionMap> =\n new WeakMap<DroppableCollectionState, DroppableCollectionMap>();\nexport const DIRECTORY_DRAG_TYPE: symbol = Symbol();\n\nexport function getDroppableCollectionId(state: DroppableCollectionState): string {\n let {id} = droppableCollectionMap.get(state) || {};\n if (!id) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return id;\n}\n\nexport function getDroppableCollectionRef(\n state: DroppableCollectionState\n): RefObject<HTMLElement | null> {\n let {ref} = droppableCollectionMap.get(state) || {};\n if (!ref) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return ref;\n}\n\nexport function getTypes(items: DragItem[]): Set<string> {\n let types = new Set<string>();\n for (let item of items) {\n for (let type of Object.keys(item)) {\n types.add(type);\n }\n }\n\n return types;\n}\n\nfunction mapModality(modality: string | null) {\n if (!modality) {\n modality = 'virtual';\n }\n\n if (modality === 'pointer') {\n modality = 'virtual';\n }\n\n if (\n modality === 'virtual' &&\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(pointer: coarse)').matches\n ) {\n modality = 'touch';\n }\n\n return modality;\n}\n\nexport function useDragModality(): string {\n return mapModality(useInteractionModality());\n}\n\nexport function getDragModality(): string {\n return mapModality(getInteractionModality());\n}\n\nexport function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {\n // The data transfer API doesn't support more than one item of a given type at once.\n // In addition, only a small set of types are supported natively for transfer between applications.\n // We allow for both multiple items, as well as multiple representations of a single item.\n // In order to make our API work with the native API, we serialize all items to JSON and\n // store as a single native item. We only need to do this if there is more than one item\n // of the same type, or if an item has more than one representation. Otherwise the native\n // API is sufficient.\n //\n // The DataTransferItemList API also theoretically supports adding files, which would enable\n // dragging binary data out of the browser onto the user's desktop for example. Unfortunately,\n // this does not currently work in any browser, so it is not currently supported by our API.\n // See e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=438479.\n let groupedByType = new Map<string, string[]>();\n let needsCustomData = false;\n let customData: Array<{}> = [];\n for (let item of items) {\n let types = Object.keys(item);\n if (types.length > 1) {\n needsCustomData = true;\n }\n\n let dataByType = {};\n for (let type of types) {\n let typeItems = groupedByType.get(type);\n if (!typeItems) {\n typeItems = [];\n groupedByType.set(type, typeItems);\n } else {\n needsCustomData = true;\n }\n\n let data = item[type];\n dataByType[type] = data;\n typeItems.push(data);\n }\n\n customData.push(dataByType);\n }\n\n for (let [type, items] of groupedByType) {\n if (NATIVE_DRAG_TYPES.has(type)) {\n // Only one item of a given type can be set on a data transfer.\n // Join all of the items together separated by newlines.\n let data = items.join('\\n');\n dataTransfer.items.add(data, type);\n } else {\n // Set data to the first item so we have access to the list of types.\n dataTransfer.items.add(items[0], type);\n }\n }\n\n if (needsCustomData) {\n let data = JSON.stringify(customData);\n dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);\n }\n}\n\nexport class DragTypes implements IDragTypes {\n private types: Set<string>;\n private includesUnknownTypes: boolean;\n\n constructor(dataTransfer: DataTransfer) {\n this.types = new Set<string>();\n\n let hasFiles = false;\n for (let item of dataTransfer.items) {\n if (item.type !== CUSTOM_DRAG_TYPE) {\n if (item.kind === 'file') {\n hasFiles = true;\n }\n\n if (item.type) {\n this.types.add(item.type);\n } else {\n // Files with unknown types or extensions that don't map to a known mime type\n // are sometimes exposed as an empty string by the browser. Map to a generic\n // mime type instead. Note that this could also be a directory as there's no\n // way to determine if something is a file or directory until drop.\n this.types.add(GENERIC_TYPE);\n }\n }\n }\n\n // In Safari, when dragging files, the dataTransfer.items list is empty, but dataTransfer.types contains \"Files\".\n // Unfortunately, this doesn't tell us what types of files the user is dragging, so we need to assume that any\n // type the user checks for is included. See https://bugs.webkit.org/show_bug.cgi?id=223517.\n this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');\n }\n\n has(type: DragType | DragType[]): boolean {\n if (Array.isArray(type)) {\n return type.some(t => this.has(t));\n }\n\n if (\n this.includesUnknownTypes ||\n (type === DIRECTORY_DRAG_TYPE && this.types.has(GENERIC_TYPE)) ||\n type === '*/*'\n ) {\n return true;\n }\n\n if (typeof type === 'string') {\n if (type.endsWith('/*')) {\n for (let key of this.types) {\n if (key.startsWith(type.slice(0, -2))) {\n return true;\n }\n }\n return false;\n }\n return this.types.has(type);\n }\n\n return false;\n }\n}\n\nexport function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {\n let items: DropItem[] = [];\n if (!dataTransfer) {\n return items;\n }\n\n // If our custom drag type is available, use that. This is a JSON serialized\n // representation of all items in the drag, set when there are multiple items\n // of the same type, or an individual item has multiple representations.\n let hasCustomType = false;\n if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {\n try {\n let data = dataTransfer.getData(CUSTOM_DRAG_TYPE);\n let parsed = JSON.parse(data);\n for (let item of parsed) {\n items.push({\n kind: 'text',\n types: new Set(Object.keys(item)),\n getText: type => Promise.resolve(item[type])\n });\n }\n\n hasCustomType = true;\n } catch {\n // ignore\n }\n }\n\n // Otherwise, map native drag items to items of a single representation.\n if (!hasCustomType) {\n let stringItems = new Map();\n for (let item of dataTransfer.items) {\n if (item.kind === 'string') {\n // The data for all formats must be read here because the data transfer gets\n // cleared out after the event handler finishes. If the item has an empty string\n // as a type, the mime type is unknown. Map to a generic mime type instead.\n stringItems.set(item.type || GENERIC_TYPE, dataTransfer.getData(item.type));\n } else if (item.kind === 'file') {\n // Despite the name, webkitGetAsEntry is also implemented in Firefox and Edge.\n // In the future, we may use getAsFileSystemHandle instead, but that's currently\n // only implemented in Chrome.\n if (typeof item.webkitGetAsEntry === 'function') {\n let entry: FileSystemEntry | null = item.webkitGetAsEntry();\n // eslint-disable-next-line max-depth\n if (!entry) {\n // For some reason, Firefox includes an item with type image/png when copy\n // and pasting any file or directory (no matter the type), but returns `null` for both\n // item.getAsFile() and item.webkitGetAsEntry(). Safari works as expected. Ignore this\n // item if this happens. See https://bugzilla.mozilla.org/show_bug.cgi?id=1699743.\n // This was recently fixed in Chrome Canary: https://bugs.chromium.org/p/chromium/issues/detail?id=1175483.\n continue;\n }\n\n // eslint-disable-next-line max-depth\n if (entry.isFile) {\n items.push(createFileItem(item.getAsFile()));\n } else if (entry.isDirectory) {\n items.push(createDirectoryItem(entry));\n }\n } else {\n // Assume it's a file.\n items.push(createFileItem(item.getAsFile()));\n }\n }\n }\n\n // All string items are different representations of the same item. There's no way to have\n // multiple string items at once in the current DataTransfer API.\n if (stringItems.size > 0) {\n items.push({\n kind: 'text',\n types: new Set(stringItems.keys()),\n getText: type => Promise.resolve(stringItems.get(type))\n });\n }\n }\n\n return items;\n}\n\nfunction blobToString(blob: Blob): Promise<string> {\n if (typeof blob.text === 'function') {\n return blob.text();\n }\n\n // Safari doesn't have the Blob#text() method yet...\n return new Promise((resolve, reject) => {\n let reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n}\n\nfunction createFileItem(file: File | null): FileDropItem {\n if (!file) {\n throw new Error('No file provided');\n }\n return {\n kind: 'file',\n type: file.type || GENERIC_TYPE,\n name: file.name,\n getText: () => blobToString(file),\n getFile: () => Promise.resolve(file)\n };\n}\n\nfunction createDirectoryItem(entry: any): DirectoryDropItem {\n return {\n kind: 'directory',\n name: entry.name,\n getEntries: () => getEntries(entry)\n };\n}\n\nasync function* getEntries(\n item: FileSystemDirectoryEntry\n): AsyncIterable<FileDropItem | DirectoryDropItem> {\n let reader = item.createReader();\n\n // We must call readEntries repeatedly because there may be a limit to the\n // number of entries that are returned at once.\n let entries: FileSystemEntry[];\n do {\n entries = await new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n\n for (let entry of entries) {\n if (entry.isFile) {\n let file = await getEntryFile(entry as FileSystemFileEntry);\n yield createFileItem(file);\n } else if (entry.isDirectory) {\n yield createDirectoryItem(entry);\n }\n }\n } while (entries.length > 0);\n}\n\nfunction getEntryFile(entry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n}\n\n/** Returns whether a drop item contains text data. */\nexport function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {\n return dropItem.kind === 'text';\n}\n\n/** Returns whether a drop item is a file. */\nexport function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {\n return dropItem.kind === 'file';\n}\n\n/** Returns whether a drop item is a directory. */\nexport function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {\n return dropItem.kind === 'directory';\n}\n\n// Global DnD collection state tracker.\nexport interface DnDState {\n /** A ref for the of the drag items in the current drag session if any. */\n draggingCollectionRef?: RefObject<HTMLElement | null>;\n /** The set of currently dragged keys. */\n draggingKeys: Set<Key>;\n /** A ref for the collection that is targeted for a drop operation, if any. */\n dropCollectionRef?: RefObject<HTMLElement | null>;\n}\n\nexport let globalDndState: DnDState = {draggingKeys: new Set()};\n\nexport function setDraggingCollectionRef(ref: RefObject<HTMLElement | null>): void {\n globalDndState.draggingCollectionRef = ref;\n}\n\nexport function setDraggingKeys(keys: Set<Key>): void {\n globalDndState.draggingKeys = keys;\n}\n\nexport function setDropCollectionRef(ref?: RefObject<HTMLElement | null>): void {\n globalDndState.dropCollectionRef = ref;\n}\n\nexport function clearGlobalDnDState(): void {\n globalDndState = {draggingKeys: new Set()};\n}\n\nexport function setGlobalDnDState(state: DnDState): void {\n globalDndState = state;\n}\n\n// Util function to check if the current dragging collection ref is the same as the current targeted droppable collection ref.\n// Allows a droppable ref arg in case the global drop collection ref hasn't been set\nexport function isInternalDropOperation(ref?: RefObject<HTMLElement | null>): boolean {\n let {draggingCollectionRef, dropCollectionRef} = globalDndState;\n return (\n draggingCollectionRef?.current != null &&\n draggingCollectionRef.current === (ref?.current || dropCollectionRef?.current)\n );\n}\n\ntype DropEffect = 'none' | 'copy' | 'link' | 'move';\nexport let globalDropEffect: DropEffect | undefined;\nexport function setGlobalDropEffect(dropEffect: DropEffect | undefined): void {\n globalDropEffect = dropEffect;\n}\n\nexport let globalAllowedDropOperations: DROP_OPERATION = DROP_OPERATION.none;\nexport function setGlobalAllowedDropOperations(o: DROP_OPERATION): void {\n globalAllowedDropOperations = o;\n}\n"],"names":[],"version":3,"file":"utils.cjs.map"}
@@ -33,7 +33,7 @@ function $a279fa400589a731$export$e1d41611756c6326(items) {
33
33
  function $a279fa400589a731$var$mapModality(modality) {
34
34
  if (!modality) modality = 'virtual';
35
35
  if (modality === 'pointer') modality = 'virtual';
36
- if (modality === 'virtual' && typeof window !== 'undefined' && 'ontouchstart' in window) modality = 'touch';
36
+ if (modality === 'virtual' && typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches) modality = 'touch';
37
37
  return modality;
38
38
  }
39
39
  function $a279fa400589a731$export$49bac5d6d4b352ea() {
@@ -88,8 +88,18 @@ function $a279fa400589a731$export$f9c1490890ddd063(dataTransfer, items) {
88
88
  }
89
89
  class $a279fa400589a731$export$7f04ce188c91447c {
90
90
  has(type) {
91
- if (this.includesUnknownTypes || type === $a279fa400589a731$export$990fced5dfac2637 && this.types.has((0, $a5876944c9299b39$export$f8fc6581787339b3))) return true;
92
- return typeof type === 'string' && this.types.has(type);
91
+ if (Array.isArray(type)) return type.some((t)=>this.has(t));
92
+ if (this.includesUnknownTypes || type === $a279fa400589a731$export$990fced5dfac2637 && this.types.has((0, $a5876944c9299b39$export$f8fc6581787339b3)) || type === '*/*') return true;
93
+ if (typeof type === 'string') {
94
+ if (type.endsWith('/*')) {
95
+ for (let key of this.types){
96
+ if (key.startsWith(type.slice(0, -2))) return true;
97
+ }
98
+ return false;
99
+ }
100
+ return this.types.has(type);
101
+ }
102
+ return false;
93
103
  }
94
104
  constructor(dataTransfer){
95
105
  this.types = new Set();
@@ -165,7 +175,7 @@ function $a279fa400589a731$var$blobToString(blob) {
165
175
  if (typeof blob.text === 'function') return blob.text();
166
176
  // Safari doesn't have the Blob#text() method yet...
167
177
  return new Promise((resolve, reject)=>{
168
- let reader = new FileReader;
178
+ let reader = new FileReader();
169
179
  reader.onload = ()=>{
170
180
  resolve(reader.result);
171
181
  };
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-aria/src/dnd/utils.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CUSTOM_DRAG_TYPE, DROP_OPERATION, GENERIC_TYPE, NATIVE_DRAG_TYPES} from './constants';\nimport {DirectoryDropItem, DragItem, DropItem, FileDropItem, DragTypes as IDragTypes, Key, RefObject, TextDropItem} from '@react-types/shared';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {getInteractionModality, useInteractionModality} from '../interactions/useFocusVisible';\n\ninterface DroppableCollectionMap {\n id: string,\n ref: RefObject<HTMLElement | null>\n}\n\nexport const droppableCollectionMap: WeakMap<DroppableCollectionState, DroppableCollectionMap> = new WeakMap<DroppableCollectionState, DroppableCollectionMap>();\nexport const DIRECTORY_DRAG_TYPE: symbol = Symbol();\n\nexport function getDroppableCollectionId(state: DroppableCollectionState): string {\n let {id} = droppableCollectionMap.get(state) || {};\n if (!id) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return id;\n}\n\nexport function getDroppableCollectionRef(state: DroppableCollectionState): RefObject<HTMLElement | null> {\n let {ref} = droppableCollectionMap.get(state) || {};\n if (!ref) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return ref;\n}\n\nexport function getTypes(items: DragItem[]): Set<string> {\n let types = new Set<string>();\n for (let item of items) {\n for (let type of Object.keys(item)) {\n types.add(type);\n }\n }\n\n return types;\n}\n\nfunction mapModality(modality: string | null) {\n if (!modality) {\n modality = 'virtual';\n }\n\n if (modality === 'pointer') {\n modality = 'virtual';\n }\n\n if (modality === 'virtual' && (typeof window !== 'undefined' && 'ontouchstart' in window)) {\n modality = 'touch';\n }\n\n return modality;\n}\n\nexport function useDragModality(): string {\n return mapModality(useInteractionModality());\n}\n\nexport function getDragModality(): string {\n return mapModality(getInteractionModality());\n}\n\nexport function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {\n // The data transfer API doesn't support more than one item of a given type at once.\n // In addition, only a small set of types are supported natively for transfer between applications.\n // We allow for both multiple items, as well as multiple representations of a single item.\n // In order to make our API work with the native API, we serialize all items to JSON and\n // store as a single native item. We only need to do this if there is more than one item\n // of the same type, or if an item has more than one representation. Otherwise the native\n // API is sufficient.\n //\n // The DataTransferItemList API also theoretically supports adding files, which would enable\n // dragging binary data out of the browser onto the user's desktop for example. Unfortunately,\n // this does not currently work in any browser, so it is not currently supported by our API.\n // See e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=438479.\n let groupedByType = new Map<string, string[]>();\n let needsCustomData = false;\n let customData: Array<{}> = [];\n for (let item of items) {\n let types = Object.keys(item);\n if (types.length > 1) {\n needsCustomData = true;\n }\n\n let dataByType = {};\n for (let type of types) {\n let typeItems = groupedByType.get(type);\n if (!typeItems) {\n typeItems = [];\n groupedByType.set(type, typeItems);\n } else {\n needsCustomData = true;\n }\n\n let data = item[type];\n dataByType[type] = data;\n typeItems.push(data);\n }\n\n customData.push(dataByType);\n }\n\n for (let [type, items] of groupedByType) {\n if (NATIVE_DRAG_TYPES.has(type)) {\n // Only one item of a given type can be set on a data transfer.\n // Join all of the items together separated by newlines.\n let data = items.join('\\n');\n dataTransfer.items.add(data, type);\n } else {\n // Set data to the first item so we have access to the list of types.\n dataTransfer.items.add(items[0], type);\n }\n }\n\n if (needsCustomData) {\n let data = JSON.stringify(customData);\n dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);\n }\n}\n\nexport class DragTypes implements IDragTypes {\n private types: Set<string>;\n private includesUnknownTypes: boolean;\n\n constructor(dataTransfer: DataTransfer) {\n this.types = new Set<string>();\n\n let hasFiles = false;\n for (let item of dataTransfer.items) {\n if (item.type !== CUSTOM_DRAG_TYPE) {\n if (item.kind === 'file') {\n hasFiles = true;\n }\n\n if (item.type) {\n this.types.add(item.type);\n } else {\n // Files with unknown types or extensions that don't map to a known mime type\n // are sometimes exposed as an empty string by the browser. Map to a generic\n // mime type instead. Note that this could also be a directory as there's no\n // way to determine if something is a file or directory until drop.\n this.types.add(GENERIC_TYPE);\n }\n }\n }\n\n // In Safari, when dragging files, the dataTransfer.items list is empty, but dataTransfer.types contains \"Files\".\n // Unfortunately, this doesn't tell us what types of files the user is dragging, so we need to assume that any\n // type the user checks for is included. See https://bugs.webkit.org/show_bug.cgi?id=223517.\n this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');\n }\n\n has(type: string | symbol): boolean {\n if (this.includesUnknownTypes || (type === DIRECTORY_DRAG_TYPE && this.types.has(GENERIC_TYPE))) {\n return true;\n }\n\n return typeof type === 'string' && this.types.has(type);\n }\n}\n\nexport function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {\n let items: DropItem[] = [];\n if (!dataTransfer) {\n return items;\n }\n\n // If our custom drag type is available, use that. This is a JSON serialized\n // representation of all items in the drag, set when there are multiple items\n // of the same type, or an individual item has multiple representations.\n let hasCustomType = false;\n if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {\n try {\n let data = dataTransfer.getData(CUSTOM_DRAG_TYPE);\n let parsed = JSON.parse(data);\n for (let item of parsed) {\n items.push({\n kind: 'text',\n types: new Set(Object.keys(item)),\n getText: (type) => Promise.resolve(item[type])\n });\n }\n\n hasCustomType = true;\n } catch {\n // ignore\n }\n }\n\n // Otherwise, map native drag items to items of a single representation.\n if (!hasCustomType) {\n let stringItems = new Map();\n for (let item of dataTransfer.items) {\n if (item.kind === 'string') {\n // The data for all formats must be read here because the data transfer gets\n // cleared out after the event handler finishes. If the item has an empty string\n // as a type, the mime type is unknown. Map to a generic mime type instead.\n stringItems.set(item.type || GENERIC_TYPE, dataTransfer.getData(item.type));\n } else if (item.kind === 'file') {\n // Despite the name, webkitGetAsEntry is also implemented in Firefox and Edge.\n // In the future, we may use getAsFileSystemHandle instead, but that's currently\n // only implemented in Chrome.\n if (typeof item.webkitGetAsEntry === 'function') {\n let entry: FileSystemEntry | null = item.webkitGetAsEntry();\n // eslint-disable-next-line max-depth\n if (!entry) {\n // For some reason, Firefox includes an item with type image/png when copy\n // and pasting any file or directory (no matter the type), but returns `null` for both\n // item.getAsFile() and item.webkitGetAsEntry(). Safari works as expected. Ignore this\n // item if this happens. See https://bugzilla.mozilla.org/show_bug.cgi?id=1699743.\n // This was recently fixed in Chrome Canary: https://bugs.chromium.org/p/chromium/issues/detail?id=1175483.\n continue;\n }\n\n // eslint-disable-next-line max-depth\n if (entry.isFile) {\n items.push(createFileItem(item.getAsFile()));\n } else if (entry.isDirectory) {\n items.push(createDirectoryItem(entry));\n }\n } else {\n // Assume it's a file.\n items.push(createFileItem(item.getAsFile()));\n }\n }\n }\n\n // All string items are different representations of the same item. There's no way to have\n // multiple string items at once in the current DataTransfer API.\n if (stringItems.size > 0) {\n items.push({\n kind: 'text',\n types: new Set(stringItems.keys()),\n getText: (type) => Promise.resolve(stringItems.get(type))\n });\n }\n }\n\n return items;\n}\n\nfunction blobToString(blob: Blob): Promise<string> {\n if (typeof blob.text === 'function') {\n return blob.text();\n }\n\n // Safari doesn't have the Blob#text() method yet...\n return new Promise((resolve, reject) => {\n let reader = new FileReader;\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n}\n\nfunction createFileItem(file: File | null): FileDropItem {\n if (!file) {\n throw new Error('No file provided');\n }\n return {\n kind: 'file',\n type: file.type || GENERIC_TYPE,\n name: file.name,\n getText: () => blobToString(file),\n getFile: () => Promise.resolve(file)\n };\n}\n\nfunction createDirectoryItem(entry: any): DirectoryDropItem {\n return {\n kind: 'directory',\n name: entry.name,\n getEntries: () => getEntries(entry)\n };\n}\n\nasync function *getEntries(item: FileSystemDirectoryEntry): AsyncIterable<FileDropItem | DirectoryDropItem> {\n let reader = item.createReader();\n\n // We must call readEntries repeatedly because there may be a limit to the\n // number of entries that are returned at once.\n let entries: FileSystemEntry[];\n do {\n entries = await new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n\n for (let entry of entries) {\n if (entry.isFile) {\n let file = await getEntryFile(entry as FileSystemFileEntry);\n yield createFileItem(file);\n } else if (entry.isDirectory) {\n yield createDirectoryItem(entry);\n }\n }\n } while (entries.length > 0);\n}\n\nfunction getEntryFile(entry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n}\n\n/** Returns whether a drop item contains text data. */\nexport function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {\n return dropItem.kind === 'text';\n}\n\n/** Returns whether a drop item is a file. */\nexport function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {\n return dropItem.kind === 'file';\n}\n\n/** Returns whether a drop item is a directory. */\nexport function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {\n return dropItem.kind === 'directory';\n}\n\n// Global DnD collection state tracker.\nexport interface DnDState {\n /** A ref for the of the drag items in the current drag session if any. */\n draggingCollectionRef?: RefObject<HTMLElement | null>,\n /** The set of currently dragged keys. */\n draggingKeys: Set<Key>,\n /** A ref for the collection that is targeted for a drop operation, if any. */\n dropCollectionRef?: RefObject<HTMLElement | null>\n}\n\nexport let globalDndState: DnDState = {draggingKeys: new Set()};\n\nexport function setDraggingCollectionRef(ref: RefObject<HTMLElement | null>): void {\n globalDndState.draggingCollectionRef = ref;\n}\n\nexport function setDraggingKeys(keys: Set<Key>): void {\n globalDndState.draggingKeys = keys;\n}\n\nexport function setDropCollectionRef(ref?: RefObject<HTMLElement | null>): void {\n globalDndState.dropCollectionRef = ref;\n}\n\nexport function clearGlobalDnDState(): void {\n globalDndState = {draggingKeys: new Set()};\n}\n\nexport function setGlobalDnDState(state: DnDState): void {\n globalDndState = state;\n}\n\n// Util function to check if the current dragging collection ref is the same as the current targeted droppable collection ref.\n// Allows a droppable ref arg in case the global drop collection ref hasn't been set\nexport function isInternalDropOperation(ref?: RefObject<HTMLElement | null>): boolean {\n let {draggingCollectionRef, dropCollectionRef} = globalDndState;\n return draggingCollectionRef?.current != null && draggingCollectionRef.current === (ref?.current || dropCollectionRef?.current);\n}\n\ntype DropEffect = 'none' | 'copy' | 'link' | 'move';\nexport let globalDropEffect: DropEffect | undefined;\nexport function setGlobalDropEffect(dropEffect: DropEffect | undefined): void {\n globalDropEffect = dropEffect;\n}\n\nexport let globalAllowedDropOperations: DROP_OPERATION = DROP_OPERATION.none;\nexport function setGlobalAllowedDropOperations(o: DROP_OPERATION): void {\n globalAllowedDropOperations = o;\n}\n"],"names":[],"version":3,"file":"utils.js.map"}
1
+ {"mappings":";;;AAAA;;;;;;;;;;CAUC;;AAsBM,MAAM,4CACX,IAAI;AACC,MAAM,4CAA8B;AAEpC,SAAS,0CAAyB,KAA+B;IACtE,IAAI,MAAC,EAAE,EAAC,GAAG,0CAAuB,GAAG,CAAC,UAAU,CAAC;IACjD,IAAI,CAAC,IACH,MAAM,IAAI,MAAM;IAGlB,OAAO;AACT;AAEO,SAAS,0CACd,KAA+B;IAE/B,IAAI,OAAC,GAAG,EAAC,GAAG,0CAAuB,GAAG,CAAC,UAAU,CAAC;IAClD,IAAI,CAAC,KACH,MAAM,IAAI,MAAM;IAGlB,OAAO;AACT;AAEO,SAAS,0CAAS,KAAiB;IACxC,IAAI,QAAQ,IAAI;IAChB,KAAK,IAAI,QAAQ,MACf,KAAK,IAAI,QAAQ,OAAO,IAAI,CAAC,MAC3B,MAAM,GAAG,CAAC;IAId,OAAO;AACT;AAEA,SAAS,kCAAY,QAAuB;IAC1C,IAAI,CAAC,UACH,WAAW;IAGb,IAAI,aAAa,WACf,WAAW;IAGb,IACE,aAAa,aACb,OAAO,WAAW,eAClB,OAAO,OAAO,UAAU,KAAK,cAC7B,OAAO,UAAU,CAAC,qBAAqB,OAAO,EAE9C,WAAW;IAGb,OAAO;AACT;AAEO,SAAS;IACd,OAAO,kCAAY,CAAA,GAAA,yCAAqB;AAC1C;AAEO,SAAS;IACd,OAAO,kCAAY,CAAA,GAAA,yCAAqB;AAC1C;AAEO,SAAS,0CAAoB,YAA0B,EAAE,KAAiB;IAC/E,oFAAoF;IACpF,mGAAmG;IACnG,0FAA0F;IAC1F,wFAAwF;IACxF,wFAAwF;IACxF,yFAAyF;IACzF,qBAAqB;IACrB,EAAE;IACF,4FAA4F;IAC5F,8FAA8F;IAC9F,4FAA4F;IAC5F,yEAAyE;IACzE,IAAI,gBAAgB,IAAI;IACxB,IAAI,kBAAkB;IACtB,IAAI,aAAwB,EAAE;IAC9B,KAAK,IAAI,QAAQ,MAAO;QACtB,IAAI,QAAQ,OAAO,IAAI,CAAC;QACxB,IAAI,MAAM,MAAM,GAAG,GACjB,kBAAkB;QAGpB,IAAI,aAAa,CAAC;QAClB,KAAK,IAAI,QAAQ,MAAO;YACtB,IAAI,YAAY,cAAc,GAAG,CAAC;YAClC,IAAI,CAAC,WAAW;gBACd,YAAY,EAAE;gBACd,cAAc,GAAG,CAAC,MAAM;YAC1B,OACE,kBAAkB;YAGpB,IAAI,OAAO,IAAI,CAAC,KAAK;YACrB,UAAU,CAAC,KAAK,GAAG;YACnB,UAAU,IAAI,CAAC;QACjB;QAEA,WAAW,IAAI,CAAC;IAClB;IAEA,KAAK,IAAI,CAAC,MAAM,MAAM,IAAI,cACxB,IAAI,CAAA,GAAA,yCAAgB,EAAE,GAAG,CAAC,OAAO;QAC/B,+DAA+D;QAC/D,wDAAwD;QACxD,IAAI,OAAO,MAAM,IAAI,CAAC;QACtB,aAAa,KAAK,CAAC,GAAG,CAAC,MAAM;IAC/B,OACE,qEAAqE;IACrE,aAAa,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;IAIrC,IAAI,iBAAiB;QACnB,IAAI,OAAO,KAAK,SAAS,CAAC;QAC1B,aAAa,KAAK,CAAC,GAAG,CAAC,MAAM,CAAA,GAAA,yCAAe;IAC9C;AACF;AAEO,MAAM;IAgCX,IAAI,IAA2B,EAAW;QACxC,IAAI,MAAM,OAAO,CAAC,OAChB,OAAO,KAAK,IAAI,CAAC,CAAA,IAAK,IAAI,CAAC,GAAG,CAAC;QAGjC,IACE,IAAI,CAAC,oBAAoB,IACxB,SAAS,6CAAuB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,GAAA,yCAAW,MAC3D,SAAS,OAET,OAAO;QAGT,IAAI,OAAO,SAAS,UAAU;YAC5B,IAAI,KAAK,QAAQ,CAAC,OAAO;gBACvB,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAE;oBAC1B,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,GAAG,MAC/B,OAAO;gBAEX;gBACA,OAAO;YACT;YACA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACxB;QAEA,OAAO;IACT;IAtDA,YAAY,YAA0B,CAAE;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI;QAEjB,IAAI,WAAW;QACf,KAAK,IAAI,QAAQ,aAAa,KAAK,CACjC,IAAI,KAAK,IAAI,KAAK,CAAA,GAAA,yCAAe,GAAG;YAClC,IAAI,KAAK,IAAI,KAAK,QAChB,WAAW;YAGb,IAAI,KAAK,IAAI,EACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI;iBAExB,6EAA6E;YAC7E,4EAA4E;YAC5E,4EAA4E;YAC5E,mEAAmE;YACnE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,GAAA,yCAAW;QAE9B;QAGF,iHAAiH;QACjH,8GAA8G;QAC9G,4FAA4F;QAC5F,IAAI,CAAC,oBAAoB,GAAG,CAAC,YAAY,aAAa,KAAK,CAAC,QAAQ,CAAC;IACvE;AA6BF;AAEO,SAAS,0CAAqB,YAA0B;IAC7D,IAAI,QAAoB,EAAE;IAC1B,IAAI,CAAC,cACH,OAAO;IAGT,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,IAAI,gBAAgB;IACpB,IAAI,aAAa,KAAK,CAAC,QAAQ,CAAC,CAAA,GAAA,yCAAe,IAC7C,IAAI;QACF,IAAI,OAAO,aAAa,OAAO,CAAC,CAAA,GAAA,yCAAe;QAC/C,IAAI,SAAS,KAAK,KAAK,CAAC;QACxB,KAAK,IAAI,QAAQ,OACf,MAAM,IAAI,CAAC;YACT,MAAM;YACN,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC;YAC3B,SAAS,CAAA,OAAQ,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK;QAC7C;QAGF,gBAAgB;IAClB,EAAE,OAAM;IACN,SAAS;IACX;IAGF,wEAAwE;IACxE,IAAI,CAAC,eAAe;QAClB,IAAI,cAAc,IAAI;QACtB,KAAK,IAAI,QAAQ,aAAa,KAAK,CAAE;YACnC,IAAI,KAAK,IAAI,KAAK,UAChB,4EAA4E;YAC5E,gFAAgF;YAChF,2EAA2E;YAC3E,YAAY,GAAG,CAAC,KAAK,IAAI,IAAI,CAAA,GAAA,yCAAW,GAAG,aAAa,OAAO,CAAC,KAAK,IAAI;iBACpE,IAAI,KAAK,IAAI,KAAK;gBACvB,8EAA8E;gBAC9E,gFAAgF;gBAChF,8BAA8B;gBAC9B,IAAI,OAAO,KAAK,gBAAgB,KAAK,YAAY;oBAC/C,IAAI,QAAgC,KAAK,gBAAgB;oBACzD,qCAAqC;oBACrC,IAAI,CAAC,OAMH;oBAGF,qCAAqC;oBACrC,IAAI,MAAM,MAAM,EACd,MAAM,IAAI,CAAC,qCAAe,KAAK,SAAS;yBACnC,IAAI,MAAM,WAAW,EAC1B,MAAM,IAAI,CAAC,0CAAoB;gBAEnC,OACE,sBAAsB;gBACtB,MAAM,IAAI,CAAC,qCAAe,KAAK,SAAS;;QAG9C;QAEA,0FAA0F;QAC1F,iEAAiE;QACjE,IAAI,YAAY,IAAI,GAAG,GACrB,MAAM,IAAI,CAAC;YACT,MAAM;YACN,OAAO,IAAI,IAAI,YAAY,IAAI;YAC/B,SAAS,CAAA,OAAQ,QAAQ,OAAO,CAAC,YAAY,GAAG,CAAC;QACnD;IAEJ;IAEA,OAAO;AACT;AAEA,SAAS,mCAAa,IAAU;IAC9B,IAAI,OAAO,KAAK,IAAI,KAAK,YACvB,OAAO,KAAK,IAAI;IAGlB,oDAAoD;IACpD,OAAO,IAAI,QAAQ,CAAC,SAAS;QAC3B,IAAI,SAAS,IAAI;QACjB,OAAO,MAAM,GAAG;YACd,QAAQ,OAAO,MAAM;QACvB;QAEA,OAAO,OAAO,GAAG;QACjB,OAAO,UAAU,CAAC;IACpB;AACF;AAEA,SAAS,qCAAe,IAAiB;IACvC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM;IAElB,OAAO;QACL,MAAM;QACN,MAAM,KAAK,IAAI,IAAI,CAAA,GAAA,yCAAW;QAC9B,MAAM,KAAK,IAAI;QACf,SAAS,IAAM,mCAAa;QAC5B,SAAS,IAAM,QAAQ,OAAO,CAAC;IACjC;AACF;AAEA,SAAS,0CAAoB,KAAU;IACrC,OAAO;QACL,MAAM;QACN,MAAM,MAAM,IAAI;QAChB,YAAY,IAAM,iCAAW;IAC/B;AACF;AAEA,gBAAgB,iCACd,IAA8B;IAE9B,IAAI,SAAS,KAAK,YAAY;IAE9B,0EAA0E;IAC1E,+CAA+C;IAC/C,IAAI;IACJ,GAAG;QACD,UAAU,MAAM,IAAI,QAAQ,CAAC,SAAS;YACpC,OAAO,WAAW,CAAC,SAAS;QAC9B;QAEA,KAAK,IAAI,SAAS,QAAS;YACzB,IAAI,MAAM,MAAM,EAAE;gBAChB,IAAI,OAAO,MAAM,mCAAa;gBAC9B,MAAM,qCAAe;YACvB,OAAO,IAAI,MAAM,WAAW,EAC1B,MAAM,0CAAoB;QAE9B;IACF,QAAS,QAAQ,MAAM,GAAG,GAAG;AAC/B;AAEA,SAAS,mCAAa,KAA0B;IAC9C,OAAO,IAAI,QAAQ,CAAC,SAAS,SAAW,MAAM,IAAI,CAAC,SAAS;AAC9D;AAGO,SAAS,0CAAe,QAAkB;IAC/C,OAAO,SAAS,IAAI,KAAK;AAC3B;AAGO,SAAS,yCAAe,QAAkB;IAC/C,OAAO,SAAS,IAAI,KAAK;AAC3B;AAGO,SAAS,0CAAoB,QAAkB;IACpD,OAAO,SAAS,IAAI,KAAK;AAC3B;AAYO,IAAI,4CAA2B;IAAC,cAAc,IAAI;AAAK;AAEvD,SAAS,0CAAyB,GAAkC;IACzE,0CAAe,qBAAqB,GAAG;AACzC;AAEO,SAAS,0CAAgB,IAAc;IAC5C,0CAAe,YAAY,GAAG;AAChC;AAEO,SAAS,0CAAqB,GAAmC;IACtE,0CAAe,iBAAiB,GAAG;AACrC;AAEO,SAAS;IACd,4CAAiB;QAAC,cAAc,IAAI;IAAK;AAC3C;AAEO,SAAS,0CAAkB,KAAe;IAC/C,4CAAiB;AACnB;AAIO,SAAS,0CAAwB,GAAmC;IACzE,IAAI,yBAAC,qBAAqB,qBAAE,iBAAiB,EAAC,GAAG;IACjD,OACE,CAAA,kCAAA,4CAAA,sBAAuB,OAAO,KAAI,QAClC,sBAAsB,OAAO,KAAM,CAAA,CAAA,gBAAA,0BAAA,IAAK,OAAO,MAAI,8BAAA,wCAAA,kBAAmB,OAAO,CAAD;AAEhF;AAGO,IAAI;AACJ,SAAS,0CAAoB,UAAkC;IACpE,4CAAmB;AACrB;AAEO,IAAI,4CAA8C,CAAA,GAAA,yCAAa,EAAE,IAAI;AACrE,SAAS,0CAA+B,CAAiB;IAC9D,4CAA8B;AAChC","sources":["packages/react-aria/src/dnd/utils.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CUSTOM_DRAG_TYPE, DROP_OPERATION, GENERIC_TYPE, NATIVE_DRAG_TYPES} from './constants';\nimport {\n DirectoryDropItem,\n DragItem,\n DragType,\n DropItem,\n FileDropItem,\n DragTypes as IDragTypes,\n Key,\n RefObject,\n TextDropItem\n} from '@react-types/shared';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {getInteractionModality, useInteractionModality} from '../interactions/useFocusVisible';\n\ninterface DroppableCollectionMap {\n id: string;\n ref: RefObject<HTMLElement | null>;\n}\n\nexport const droppableCollectionMap: WeakMap<DroppableCollectionState, DroppableCollectionMap> =\n new WeakMap<DroppableCollectionState, DroppableCollectionMap>();\nexport const DIRECTORY_DRAG_TYPE: symbol = Symbol();\n\nexport function getDroppableCollectionId(state: DroppableCollectionState): string {\n let {id} = droppableCollectionMap.get(state) || {};\n if (!id) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return id;\n}\n\nexport function getDroppableCollectionRef(\n state: DroppableCollectionState\n): RefObject<HTMLElement | null> {\n let {ref} = droppableCollectionMap.get(state) || {};\n if (!ref) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return ref;\n}\n\nexport function getTypes(items: DragItem[]): Set<string> {\n let types = new Set<string>();\n for (let item of items) {\n for (let type of Object.keys(item)) {\n types.add(type);\n }\n }\n\n return types;\n}\n\nfunction mapModality(modality: string | null) {\n if (!modality) {\n modality = 'virtual';\n }\n\n if (modality === 'pointer') {\n modality = 'virtual';\n }\n\n if (\n modality === 'virtual' &&\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(pointer: coarse)').matches\n ) {\n modality = 'touch';\n }\n\n return modality;\n}\n\nexport function useDragModality(): string {\n return mapModality(useInteractionModality());\n}\n\nexport function getDragModality(): string {\n return mapModality(getInteractionModality());\n}\n\nexport function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {\n // The data transfer API doesn't support more than one item of a given type at once.\n // In addition, only a small set of types are supported natively for transfer between applications.\n // We allow for both multiple items, as well as multiple representations of a single item.\n // In order to make our API work with the native API, we serialize all items to JSON and\n // store as a single native item. We only need to do this if there is more than one item\n // of the same type, or if an item has more than one representation. Otherwise the native\n // API is sufficient.\n //\n // The DataTransferItemList API also theoretically supports adding files, which would enable\n // dragging binary data out of the browser onto the user's desktop for example. Unfortunately,\n // this does not currently work in any browser, so it is not currently supported by our API.\n // See e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=438479.\n let groupedByType = new Map<string, string[]>();\n let needsCustomData = false;\n let customData: Array<{}> = [];\n for (let item of items) {\n let types = Object.keys(item);\n if (types.length > 1) {\n needsCustomData = true;\n }\n\n let dataByType = {};\n for (let type of types) {\n let typeItems = groupedByType.get(type);\n if (!typeItems) {\n typeItems = [];\n groupedByType.set(type, typeItems);\n } else {\n needsCustomData = true;\n }\n\n let data = item[type];\n dataByType[type] = data;\n typeItems.push(data);\n }\n\n customData.push(dataByType);\n }\n\n for (let [type, items] of groupedByType) {\n if (NATIVE_DRAG_TYPES.has(type)) {\n // Only one item of a given type can be set on a data transfer.\n // Join all of the items together separated by newlines.\n let data = items.join('\\n');\n dataTransfer.items.add(data, type);\n } else {\n // Set data to the first item so we have access to the list of types.\n dataTransfer.items.add(items[0], type);\n }\n }\n\n if (needsCustomData) {\n let data = JSON.stringify(customData);\n dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);\n }\n}\n\nexport class DragTypes implements IDragTypes {\n private types: Set<string>;\n private includesUnknownTypes: boolean;\n\n constructor(dataTransfer: DataTransfer) {\n this.types = new Set<string>();\n\n let hasFiles = false;\n for (let item of dataTransfer.items) {\n if (item.type !== CUSTOM_DRAG_TYPE) {\n if (item.kind === 'file') {\n hasFiles = true;\n }\n\n if (item.type) {\n this.types.add(item.type);\n } else {\n // Files with unknown types or extensions that don't map to a known mime type\n // are sometimes exposed as an empty string by the browser. Map to a generic\n // mime type instead. Note that this could also be a directory as there's no\n // way to determine if something is a file or directory until drop.\n this.types.add(GENERIC_TYPE);\n }\n }\n }\n\n // In Safari, when dragging files, the dataTransfer.items list is empty, but dataTransfer.types contains \"Files\".\n // Unfortunately, this doesn't tell us what types of files the user is dragging, so we need to assume that any\n // type the user checks for is included. See https://bugs.webkit.org/show_bug.cgi?id=223517.\n this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');\n }\n\n has(type: DragType | DragType[]): boolean {\n if (Array.isArray(type)) {\n return type.some(t => this.has(t));\n }\n\n if (\n this.includesUnknownTypes ||\n (type === DIRECTORY_DRAG_TYPE && this.types.has(GENERIC_TYPE)) ||\n type === '*/*'\n ) {\n return true;\n }\n\n if (typeof type === 'string') {\n if (type.endsWith('/*')) {\n for (let key of this.types) {\n if (key.startsWith(type.slice(0, -2))) {\n return true;\n }\n }\n return false;\n }\n return this.types.has(type);\n }\n\n return false;\n }\n}\n\nexport function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {\n let items: DropItem[] = [];\n if (!dataTransfer) {\n return items;\n }\n\n // If our custom drag type is available, use that. This is a JSON serialized\n // representation of all items in the drag, set when there are multiple items\n // of the same type, or an individual item has multiple representations.\n let hasCustomType = false;\n if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {\n try {\n let data = dataTransfer.getData(CUSTOM_DRAG_TYPE);\n let parsed = JSON.parse(data);\n for (let item of parsed) {\n items.push({\n kind: 'text',\n types: new Set(Object.keys(item)),\n getText: type => Promise.resolve(item[type])\n });\n }\n\n hasCustomType = true;\n } catch {\n // ignore\n }\n }\n\n // Otherwise, map native drag items to items of a single representation.\n if (!hasCustomType) {\n let stringItems = new Map();\n for (let item of dataTransfer.items) {\n if (item.kind === 'string') {\n // The data for all formats must be read here because the data transfer gets\n // cleared out after the event handler finishes. If the item has an empty string\n // as a type, the mime type is unknown. Map to a generic mime type instead.\n stringItems.set(item.type || GENERIC_TYPE, dataTransfer.getData(item.type));\n } else if (item.kind === 'file') {\n // Despite the name, webkitGetAsEntry is also implemented in Firefox and Edge.\n // In the future, we may use getAsFileSystemHandle instead, but that's currently\n // only implemented in Chrome.\n if (typeof item.webkitGetAsEntry === 'function') {\n let entry: FileSystemEntry | null = item.webkitGetAsEntry();\n // eslint-disable-next-line max-depth\n if (!entry) {\n // For some reason, Firefox includes an item with type image/png when copy\n // and pasting any file or directory (no matter the type), but returns `null` for both\n // item.getAsFile() and item.webkitGetAsEntry(). Safari works as expected. Ignore this\n // item if this happens. See https://bugzilla.mozilla.org/show_bug.cgi?id=1699743.\n // This was recently fixed in Chrome Canary: https://bugs.chromium.org/p/chromium/issues/detail?id=1175483.\n continue;\n }\n\n // eslint-disable-next-line max-depth\n if (entry.isFile) {\n items.push(createFileItem(item.getAsFile()));\n } else if (entry.isDirectory) {\n items.push(createDirectoryItem(entry));\n }\n } else {\n // Assume it's a file.\n items.push(createFileItem(item.getAsFile()));\n }\n }\n }\n\n // All string items are different representations of the same item. There's no way to have\n // multiple string items at once in the current DataTransfer API.\n if (stringItems.size > 0) {\n items.push({\n kind: 'text',\n types: new Set(stringItems.keys()),\n getText: type => Promise.resolve(stringItems.get(type))\n });\n }\n }\n\n return items;\n}\n\nfunction blobToString(blob: Blob): Promise<string> {\n if (typeof blob.text === 'function') {\n return blob.text();\n }\n\n // Safari doesn't have the Blob#text() method yet...\n return new Promise((resolve, reject) => {\n let reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n}\n\nfunction createFileItem(file: File | null): FileDropItem {\n if (!file) {\n throw new Error('No file provided');\n }\n return {\n kind: 'file',\n type: file.type || GENERIC_TYPE,\n name: file.name,\n getText: () => blobToString(file),\n getFile: () => Promise.resolve(file)\n };\n}\n\nfunction createDirectoryItem(entry: any): DirectoryDropItem {\n return {\n kind: 'directory',\n name: entry.name,\n getEntries: () => getEntries(entry)\n };\n}\n\nasync function* getEntries(\n item: FileSystemDirectoryEntry\n): AsyncIterable<FileDropItem | DirectoryDropItem> {\n let reader = item.createReader();\n\n // We must call readEntries repeatedly because there may be a limit to the\n // number of entries that are returned at once.\n let entries: FileSystemEntry[];\n do {\n entries = await new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n\n for (let entry of entries) {\n if (entry.isFile) {\n let file = await getEntryFile(entry as FileSystemFileEntry);\n yield createFileItem(file);\n } else if (entry.isDirectory) {\n yield createDirectoryItem(entry);\n }\n }\n } while (entries.length > 0);\n}\n\nfunction getEntryFile(entry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n}\n\n/** Returns whether a drop item contains text data. */\nexport function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {\n return dropItem.kind === 'text';\n}\n\n/** Returns whether a drop item is a file. */\nexport function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {\n return dropItem.kind === 'file';\n}\n\n/** Returns whether a drop item is a directory. */\nexport function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {\n return dropItem.kind === 'directory';\n}\n\n// Global DnD collection state tracker.\nexport interface DnDState {\n /** A ref for the of the drag items in the current drag session if any. */\n draggingCollectionRef?: RefObject<HTMLElement | null>;\n /** The set of currently dragged keys. */\n draggingKeys: Set<Key>;\n /** A ref for the collection that is targeted for a drop operation, if any. */\n dropCollectionRef?: RefObject<HTMLElement | null>;\n}\n\nexport let globalDndState: DnDState = {draggingKeys: new Set()};\n\nexport function setDraggingCollectionRef(ref: RefObject<HTMLElement | null>): void {\n globalDndState.draggingCollectionRef = ref;\n}\n\nexport function setDraggingKeys(keys: Set<Key>): void {\n globalDndState.draggingKeys = keys;\n}\n\nexport function setDropCollectionRef(ref?: RefObject<HTMLElement | null>): void {\n globalDndState.dropCollectionRef = ref;\n}\n\nexport function clearGlobalDnDState(): void {\n globalDndState = {draggingKeys: new Set()};\n}\n\nexport function setGlobalDnDState(state: DnDState): void {\n globalDndState = state;\n}\n\n// Util function to check if the current dragging collection ref is the same as the current targeted droppable collection ref.\n// Allows a droppable ref arg in case the global drop collection ref hasn't been set\nexport function isInternalDropOperation(ref?: RefObject<HTMLElement | null>): boolean {\n let {draggingCollectionRef, dropCollectionRef} = globalDndState;\n return (\n draggingCollectionRef?.current != null &&\n draggingCollectionRef.current === (ref?.current || dropCollectionRef?.current)\n );\n}\n\ntype DropEffect = 'none' | 'copy' | 'link' | 'move';\nexport let globalDropEffect: DropEffect | undefined;\nexport function setGlobalDropEffect(dropEffect: DropEffect | undefined): void {\n globalDropEffect = dropEffect;\n}\n\nexport let globalAllowedDropOperations: DROP_OPERATION = DROP_OPERATION.none;\nexport function setGlobalAllowedDropOperations(o: DROP_OPERATION): void {\n globalAllowedDropOperations = o;\n}\n"],"names":[],"version":3,"file":"utils.js.map"}
@@ -33,7 +33,7 @@ function $d40e85a29b831dd6$export$e1d41611756c6326(items) {
33
33
  function $d40e85a29b831dd6$var$mapModality(modality) {
34
34
  if (!modality) modality = 'virtual';
35
35
  if (modality === 'pointer') modality = 'virtual';
36
- if (modality === 'virtual' && typeof window !== 'undefined' && 'ontouchstart' in window) modality = 'touch';
36
+ if (modality === 'virtual' && typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches) modality = 'touch';
37
37
  return modality;
38
38
  }
39
39
  function $d40e85a29b831dd6$export$49bac5d6d4b352ea() {
@@ -105,8 +105,18 @@ class $d40e85a29b831dd6$export$7f04ce188c91447c {
105
105
  this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');
106
106
  }
107
107
  has(type) {
108
- if (this.includesUnknownTypes || type === $d40e85a29b831dd6$export$990fced5dfac2637 && this.types.has((0, $2991e2e71ca29774$export$f8fc6581787339b3))) return true;
109
- return typeof type === 'string' && this.types.has(type);
108
+ if (Array.isArray(type)) return type.some((t)=>this.has(t));
109
+ if (this.includesUnknownTypes || type === $d40e85a29b831dd6$export$990fced5dfac2637 && this.types.has((0, $2991e2e71ca29774$export$f8fc6581787339b3)) || type === '*/*') return true;
110
+ if (typeof type === 'string') {
111
+ if (type.endsWith('/*')) {
112
+ for (let key of this.types){
113
+ if (key.startsWith(type.slice(0, -2))) return true;
114
+ }
115
+ return false;
116
+ }
117
+ return this.types.has(type);
118
+ }
119
+ return false;
110
120
  }
111
121
  }
112
122
  function $d40e85a29b831dd6$export$d9e760437831f8b3(dataTransfer) {
@@ -165,7 +175,7 @@ function $d40e85a29b831dd6$var$blobToString(blob) {
165
175
  if (typeof blob.text === 'function') return blob.text();
166
176
  // Safari doesn't have the Blob#text() method yet...
167
177
  return new Promise((resolve, reject)=>{
168
- let reader = new FileReader;
178
+ let reader = new FileReader();
169
179
  reader.onload = ()=>{
170
180
  resolve(reader.result);
171
181
  };
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-aria/src/dnd/utils.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CUSTOM_DRAG_TYPE, DROP_OPERATION, GENERIC_TYPE, NATIVE_DRAG_TYPES} from './constants';\nimport {DirectoryDropItem, DragItem, DropItem, FileDropItem, DragTypes as IDragTypes, Key, RefObject, TextDropItem} from '@react-types/shared';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {getInteractionModality, useInteractionModality} from '../interactions/useFocusVisible';\n\ninterface DroppableCollectionMap {\n id: string,\n ref: RefObject<HTMLElement | null>\n}\n\nexport const droppableCollectionMap: WeakMap<DroppableCollectionState, DroppableCollectionMap> = new WeakMap<DroppableCollectionState, DroppableCollectionMap>();\nexport const DIRECTORY_DRAG_TYPE: symbol = Symbol();\n\nexport function getDroppableCollectionId(state: DroppableCollectionState): string {\n let {id} = droppableCollectionMap.get(state) || {};\n if (!id) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return id;\n}\n\nexport function getDroppableCollectionRef(state: DroppableCollectionState): RefObject<HTMLElement | null> {\n let {ref} = droppableCollectionMap.get(state) || {};\n if (!ref) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return ref;\n}\n\nexport function getTypes(items: DragItem[]): Set<string> {\n let types = new Set<string>();\n for (let item of items) {\n for (let type of Object.keys(item)) {\n types.add(type);\n }\n }\n\n return types;\n}\n\nfunction mapModality(modality: string | null) {\n if (!modality) {\n modality = 'virtual';\n }\n\n if (modality === 'pointer') {\n modality = 'virtual';\n }\n\n if (modality === 'virtual' && (typeof window !== 'undefined' && 'ontouchstart' in window)) {\n modality = 'touch';\n }\n\n return modality;\n}\n\nexport function useDragModality(): string {\n return mapModality(useInteractionModality());\n}\n\nexport function getDragModality(): string {\n return mapModality(getInteractionModality());\n}\n\nexport function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {\n // The data transfer API doesn't support more than one item of a given type at once.\n // In addition, only a small set of types are supported natively for transfer between applications.\n // We allow for both multiple items, as well as multiple representations of a single item.\n // In order to make our API work with the native API, we serialize all items to JSON and\n // store as a single native item. We only need to do this if there is more than one item\n // of the same type, or if an item has more than one representation. Otherwise the native\n // API is sufficient.\n //\n // The DataTransferItemList API also theoretically supports adding files, which would enable\n // dragging binary data out of the browser onto the user's desktop for example. Unfortunately,\n // this does not currently work in any browser, so it is not currently supported by our API.\n // See e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=438479.\n let groupedByType = new Map<string, string[]>();\n let needsCustomData = false;\n let customData: Array<{}> = [];\n for (let item of items) {\n let types = Object.keys(item);\n if (types.length > 1) {\n needsCustomData = true;\n }\n\n let dataByType = {};\n for (let type of types) {\n let typeItems = groupedByType.get(type);\n if (!typeItems) {\n typeItems = [];\n groupedByType.set(type, typeItems);\n } else {\n needsCustomData = true;\n }\n\n let data = item[type];\n dataByType[type] = data;\n typeItems.push(data);\n }\n\n customData.push(dataByType);\n }\n\n for (let [type, items] of groupedByType) {\n if (NATIVE_DRAG_TYPES.has(type)) {\n // Only one item of a given type can be set on a data transfer.\n // Join all of the items together separated by newlines.\n let data = items.join('\\n');\n dataTransfer.items.add(data, type);\n } else {\n // Set data to the first item so we have access to the list of types.\n dataTransfer.items.add(items[0], type);\n }\n }\n\n if (needsCustomData) {\n let data = JSON.stringify(customData);\n dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);\n }\n}\n\nexport class DragTypes implements IDragTypes {\n private types: Set<string>;\n private includesUnknownTypes: boolean;\n\n constructor(dataTransfer: DataTransfer) {\n this.types = new Set<string>();\n\n let hasFiles = false;\n for (let item of dataTransfer.items) {\n if (item.type !== CUSTOM_DRAG_TYPE) {\n if (item.kind === 'file') {\n hasFiles = true;\n }\n\n if (item.type) {\n this.types.add(item.type);\n } else {\n // Files with unknown types or extensions that don't map to a known mime type\n // are sometimes exposed as an empty string by the browser. Map to a generic\n // mime type instead. Note that this could also be a directory as there's no\n // way to determine if something is a file or directory until drop.\n this.types.add(GENERIC_TYPE);\n }\n }\n }\n\n // In Safari, when dragging files, the dataTransfer.items list is empty, but dataTransfer.types contains \"Files\".\n // Unfortunately, this doesn't tell us what types of files the user is dragging, so we need to assume that any\n // type the user checks for is included. See https://bugs.webkit.org/show_bug.cgi?id=223517.\n this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');\n }\n\n has(type: string | symbol): boolean {\n if (this.includesUnknownTypes || (type === DIRECTORY_DRAG_TYPE && this.types.has(GENERIC_TYPE))) {\n return true;\n }\n\n return typeof type === 'string' && this.types.has(type);\n }\n}\n\nexport function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {\n let items: DropItem[] = [];\n if (!dataTransfer) {\n return items;\n }\n\n // If our custom drag type is available, use that. This is a JSON serialized\n // representation of all items in the drag, set when there are multiple items\n // of the same type, or an individual item has multiple representations.\n let hasCustomType = false;\n if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {\n try {\n let data = dataTransfer.getData(CUSTOM_DRAG_TYPE);\n let parsed = JSON.parse(data);\n for (let item of parsed) {\n items.push({\n kind: 'text',\n types: new Set(Object.keys(item)),\n getText: (type) => Promise.resolve(item[type])\n });\n }\n\n hasCustomType = true;\n } catch {\n // ignore\n }\n }\n\n // Otherwise, map native drag items to items of a single representation.\n if (!hasCustomType) {\n let stringItems = new Map();\n for (let item of dataTransfer.items) {\n if (item.kind === 'string') {\n // The data for all formats must be read here because the data transfer gets\n // cleared out after the event handler finishes. If the item has an empty string\n // as a type, the mime type is unknown. Map to a generic mime type instead.\n stringItems.set(item.type || GENERIC_TYPE, dataTransfer.getData(item.type));\n } else if (item.kind === 'file') {\n // Despite the name, webkitGetAsEntry is also implemented in Firefox and Edge.\n // In the future, we may use getAsFileSystemHandle instead, but that's currently\n // only implemented in Chrome.\n if (typeof item.webkitGetAsEntry === 'function') {\n let entry: FileSystemEntry | null = item.webkitGetAsEntry();\n // eslint-disable-next-line max-depth\n if (!entry) {\n // For some reason, Firefox includes an item with type image/png when copy\n // and pasting any file or directory (no matter the type), but returns `null` for both\n // item.getAsFile() and item.webkitGetAsEntry(). Safari works as expected. Ignore this\n // item if this happens. See https://bugzilla.mozilla.org/show_bug.cgi?id=1699743.\n // This was recently fixed in Chrome Canary: https://bugs.chromium.org/p/chromium/issues/detail?id=1175483.\n continue;\n }\n\n // eslint-disable-next-line max-depth\n if (entry.isFile) {\n items.push(createFileItem(item.getAsFile()));\n } else if (entry.isDirectory) {\n items.push(createDirectoryItem(entry));\n }\n } else {\n // Assume it's a file.\n items.push(createFileItem(item.getAsFile()));\n }\n }\n }\n\n // All string items are different representations of the same item. There's no way to have\n // multiple string items at once in the current DataTransfer API.\n if (stringItems.size > 0) {\n items.push({\n kind: 'text',\n types: new Set(stringItems.keys()),\n getText: (type) => Promise.resolve(stringItems.get(type))\n });\n }\n }\n\n return items;\n}\n\nfunction blobToString(blob: Blob): Promise<string> {\n if (typeof blob.text === 'function') {\n return blob.text();\n }\n\n // Safari doesn't have the Blob#text() method yet...\n return new Promise((resolve, reject) => {\n let reader = new FileReader;\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n}\n\nfunction createFileItem(file: File | null): FileDropItem {\n if (!file) {\n throw new Error('No file provided');\n }\n return {\n kind: 'file',\n type: file.type || GENERIC_TYPE,\n name: file.name,\n getText: () => blobToString(file),\n getFile: () => Promise.resolve(file)\n };\n}\n\nfunction createDirectoryItem(entry: any): DirectoryDropItem {\n return {\n kind: 'directory',\n name: entry.name,\n getEntries: () => getEntries(entry)\n };\n}\n\nasync function *getEntries(item: FileSystemDirectoryEntry): AsyncIterable<FileDropItem | DirectoryDropItem> {\n let reader = item.createReader();\n\n // We must call readEntries repeatedly because there may be a limit to the\n // number of entries that are returned at once.\n let entries: FileSystemEntry[];\n do {\n entries = await new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n\n for (let entry of entries) {\n if (entry.isFile) {\n let file = await getEntryFile(entry as FileSystemFileEntry);\n yield createFileItem(file);\n } else if (entry.isDirectory) {\n yield createDirectoryItem(entry);\n }\n }\n } while (entries.length > 0);\n}\n\nfunction getEntryFile(entry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n}\n\n/** Returns whether a drop item contains text data. */\nexport function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {\n return dropItem.kind === 'text';\n}\n\n/** Returns whether a drop item is a file. */\nexport function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {\n return dropItem.kind === 'file';\n}\n\n/** Returns whether a drop item is a directory. */\nexport function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {\n return dropItem.kind === 'directory';\n}\n\n// Global DnD collection state tracker.\nexport interface DnDState {\n /** A ref for the of the drag items in the current drag session if any. */\n draggingCollectionRef?: RefObject<HTMLElement | null>,\n /** The set of currently dragged keys. */\n draggingKeys: Set<Key>,\n /** A ref for the collection that is targeted for a drop operation, if any. */\n dropCollectionRef?: RefObject<HTMLElement | null>\n}\n\nexport let globalDndState: DnDState = {draggingKeys: new Set()};\n\nexport function setDraggingCollectionRef(ref: RefObject<HTMLElement | null>): void {\n globalDndState.draggingCollectionRef = ref;\n}\n\nexport function setDraggingKeys(keys: Set<Key>): void {\n globalDndState.draggingKeys = keys;\n}\n\nexport function setDropCollectionRef(ref?: RefObject<HTMLElement | null>): void {\n globalDndState.dropCollectionRef = ref;\n}\n\nexport function clearGlobalDnDState(): void {\n globalDndState = {draggingKeys: new Set()};\n}\n\nexport function setGlobalDnDState(state: DnDState): void {\n globalDndState = state;\n}\n\n// Util function to check if the current dragging collection ref is the same as the current targeted droppable collection ref.\n// Allows a droppable ref arg in case the global drop collection ref hasn't been set\nexport function isInternalDropOperation(ref?: RefObject<HTMLElement | null>): boolean {\n let {draggingCollectionRef, dropCollectionRef} = globalDndState;\n return draggingCollectionRef?.current != null && draggingCollectionRef.current === (ref?.current || dropCollectionRef?.current);\n}\n\ntype DropEffect = 'none' | 'copy' | 'link' | 'move';\nexport let globalDropEffect: DropEffect | undefined;\nexport function setGlobalDropEffect(dropEffect: DropEffect | undefined): void {\n globalDropEffect = dropEffect;\n}\n\nexport let globalAllowedDropOperations: DROP_OPERATION = DROP_OPERATION.none;\nexport function setGlobalAllowedDropOperations(o: DROP_OPERATION): void {\n globalAllowedDropOperations = o;\n}\n"],"names":[],"version":3,"file":"utils.mjs.map"}
1
+ {"mappings":"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","sources":["packages/react-aria/src/dnd/utils.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CUSTOM_DRAG_TYPE, DROP_OPERATION, GENERIC_TYPE, NATIVE_DRAG_TYPES} from './constants';\nimport {\n DirectoryDropItem,\n DragItem,\n DragType,\n DropItem,\n FileDropItem,\n DragTypes as IDragTypes,\n Key,\n RefObject,\n TextDropItem\n} from '@react-types/shared';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {getInteractionModality, useInteractionModality} from '../interactions/useFocusVisible';\n\ninterface DroppableCollectionMap {\n id: string;\n ref: RefObject<HTMLElement | null>;\n}\n\nexport const droppableCollectionMap: WeakMap<DroppableCollectionState, DroppableCollectionMap> =\n new WeakMap<DroppableCollectionState, DroppableCollectionMap>();\nexport const DIRECTORY_DRAG_TYPE: symbol = Symbol();\n\nexport function getDroppableCollectionId(state: DroppableCollectionState): string {\n let {id} = droppableCollectionMap.get(state) || {};\n if (!id) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return id;\n}\n\nexport function getDroppableCollectionRef(\n state: DroppableCollectionState\n): RefObject<HTMLElement | null> {\n let {ref} = droppableCollectionMap.get(state) || {};\n if (!ref) {\n throw new Error('Droppable item outside a droppable collection');\n }\n\n return ref;\n}\n\nexport function getTypes(items: DragItem[]): Set<string> {\n let types = new Set<string>();\n for (let item of items) {\n for (let type of Object.keys(item)) {\n types.add(type);\n }\n }\n\n return types;\n}\n\nfunction mapModality(modality: string | null) {\n if (!modality) {\n modality = 'virtual';\n }\n\n if (modality === 'pointer') {\n modality = 'virtual';\n }\n\n if (\n modality === 'virtual' &&\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(pointer: coarse)').matches\n ) {\n modality = 'touch';\n }\n\n return modality;\n}\n\nexport function useDragModality(): string {\n return mapModality(useInteractionModality());\n}\n\nexport function getDragModality(): string {\n return mapModality(getInteractionModality());\n}\n\nexport function writeToDataTransfer(dataTransfer: DataTransfer, items: DragItem[]): void {\n // The data transfer API doesn't support more than one item of a given type at once.\n // In addition, only a small set of types are supported natively for transfer between applications.\n // We allow for both multiple items, as well as multiple representations of a single item.\n // In order to make our API work with the native API, we serialize all items to JSON and\n // store as a single native item. We only need to do this if there is more than one item\n // of the same type, or if an item has more than one representation. Otherwise the native\n // API is sufficient.\n //\n // The DataTransferItemList API also theoretically supports adding files, which would enable\n // dragging binary data out of the browser onto the user's desktop for example. Unfortunately,\n // this does not currently work in any browser, so it is not currently supported by our API.\n // See e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=438479.\n let groupedByType = new Map<string, string[]>();\n let needsCustomData = false;\n let customData: Array<{}> = [];\n for (let item of items) {\n let types = Object.keys(item);\n if (types.length > 1) {\n needsCustomData = true;\n }\n\n let dataByType = {};\n for (let type of types) {\n let typeItems = groupedByType.get(type);\n if (!typeItems) {\n typeItems = [];\n groupedByType.set(type, typeItems);\n } else {\n needsCustomData = true;\n }\n\n let data = item[type];\n dataByType[type] = data;\n typeItems.push(data);\n }\n\n customData.push(dataByType);\n }\n\n for (let [type, items] of groupedByType) {\n if (NATIVE_DRAG_TYPES.has(type)) {\n // Only one item of a given type can be set on a data transfer.\n // Join all of the items together separated by newlines.\n let data = items.join('\\n');\n dataTransfer.items.add(data, type);\n } else {\n // Set data to the first item so we have access to the list of types.\n dataTransfer.items.add(items[0], type);\n }\n }\n\n if (needsCustomData) {\n let data = JSON.stringify(customData);\n dataTransfer.items.add(data, CUSTOM_DRAG_TYPE);\n }\n}\n\nexport class DragTypes implements IDragTypes {\n private types: Set<string>;\n private includesUnknownTypes: boolean;\n\n constructor(dataTransfer: DataTransfer) {\n this.types = new Set<string>();\n\n let hasFiles = false;\n for (let item of dataTransfer.items) {\n if (item.type !== CUSTOM_DRAG_TYPE) {\n if (item.kind === 'file') {\n hasFiles = true;\n }\n\n if (item.type) {\n this.types.add(item.type);\n } else {\n // Files with unknown types or extensions that don't map to a known mime type\n // are sometimes exposed as an empty string by the browser. Map to a generic\n // mime type instead. Note that this could also be a directory as there's no\n // way to determine if something is a file or directory until drop.\n this.types.add(GENERIC_TYPE);\n }\n }\n }\n\n // In Safari, when dragging files, the dataTransfer.items list is empty, but dataTransfer.types contains \"Files\".\n // Unfortunately, this doesn't tell us what types of files the user is dragging, so we need to assume that any\n // type the user checks for is included. See https://bugs.webkit.org/show_bug.cgi?id=223517.\n this.includesUnknownTypes = !hasFiles && dataTransfer.types.includes('Files');\n }\n\n has(type: DragType | DragType[]): boolean {\n if (Array.isArray(type)) {\n return type.some(t => this.has(t));\n }\n\n if (\n this.includesUnknownTypes ||\n (type === DIRECTORY_DRAG_TYPE && this.types.has(GENERIC_TYPE)) ||\n type === '*/*'\n ) {\n return true;\n }\n\n if (typeof type === 'string') {\n if (type.endsWith('/*')) {\n for (let key of this.types) {\n if (key.startsWith(type.slice(0, -2))) {\n return true;\n }\n }\n return false;\n }\n return this.types.has(type);\n }\n\n return false;\n }\n}\n\nexport function readFromDataTransfer(dataTransfer: DataTransfer): DropItem[] {\n let items: DropItem[] = [];\n if (!dataTransfer) {\n return items;\n }\n\n // If our custom drag type is available, use that. This is a JSON serialized\n // representation of all items in the drag, set when there are multiple items\n // of the same type, or an individual item has multiple representations.\n let hasCustomType = false;\n if (dataTransfer.types.includes(CUSTOM_DRAG_TYPE)) {\n try {\n let data = dataTransfer.getData(CUSTOM_DRAG_TYPE);\n let parsed = JSON.parse(data);\n for (let item of parsed) {\n items.push({\n kind: 'text',\n types: new Set(Object.keys(item)),\n getText: type => Promise.resolve(item[type])\n });\n }\n\n hasCustomType = true;\n } catch {\n // ignore\n }\n }\n\n // Otherwise, map native drag items to items of a single representation.\n if (!hasCustomType) {\n let stringItems = new Map();\n for (let item of dataTransfer.items) {\n if (item.kind === 'string') {\n // The data for all formats must be read here because the data transfer gets\n // cleared out after the event handler finishes. If the item has an empty string\n // as a type, the mime type is unknown. Map to a generic mime type instead.\n stringItems.set(item.type || GENERIC_TYPE, dataTransfer.getData(item.type));\n } else if (item.kind === 'file') {\n // Despite the name, webkitGetAsEntry is also implemented in Firefox and Edge.\n // In the future, we may use getAsFileSystemHandle instead, but that's currently\n // only implemented in Chrome.\n if (typeof item.webkitGetAsEntry === 'function') {\n let entry: FileSystemEntry | null = item.webkitGetAsEntry();\n // eslint-disable-next-line max-depth\n if (!entry) {\n // For some reason, Firefox includes an item with type image/png when copy\n // and pasting any file or directory (no matter the type), but returns `null` for both\n // item.getAsFile() and item.webkitGetAsEntry(). Safari works as expected. Ignore this\n // item if this happens. See https://bugzilla.mozilla.org/show_bug.cgi?id=1699743.\n // This was recently fixed in Chrome Canary: https://bugs.chromium.org/p/chromium/issues/detail?id=1175483.\n continue;\n }\n\n // eslint-disable-next-line max-depth\n if (entry.isFile) {\n items.push(createFileItem(item.getAsFile()));\n } else if (entry.isDirectory) {\n items.push(createDirectoryItem(entry));\n }\n } else {\n // Assume it's a file.\n items.push(createFileItem(item.getAsFile()));\n }\n }\n }\n\n // All string items are different representations of the same item. There's no way to have\n // multiple string items at once in the current DataTransfer API.\n if (stringItems.size > 0) {\n items.push({\n kind: 'text',\n types: new Set(stringItems.keys()),\n getText: type => Promise.resolve(stringItems.get(type))\n });\n }\n }\n\n return items;\n}\n\nfunction blobToString(blob: Blob): Promise<string> {\n if (typeof blob.text === 'function') {\n return blob.text();\n }\n\n // Safari doesn't have the Blob#text() method yet...\n return new Promise((resolve, reject) => {\n let reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n}\n\nfunction createFileItem(file: File | null): FileDropItem {\n if (!file) {\n throw new Error('No file provided');\n }\n return {\n kind: 'file',\n type: file.type || GENERIC_TYPE,\n name: file.name,\n getText: () => blobToString(file),\n getFile: () => Promise.resolve(file)\n };\n}\n\nfunction createDirectoryItem(entry: any): DirectoryDropItem {\n return {\n kind: 'directory',\n name: entry.name,\n getEntries: () => getEntries(entry)\n };\n}\n\nasync function* getEntries(\n item: FileSystemDirectoryEntry\n): AsyncIterable<FileDropItem | DirectoryDropItem> {\n let reader = item.createReader();\n\n // We must call readEntries repeatedly because there may be a limit to the\n // number of entries that are returned at once.\n let entries: FileSystemEntry[];\n do {\n entries = await new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n\n for (let entry of entries) {\n if (entry.isFile) {\n let file = await getEntryFile(entry as FileSystemFileEntry);\n yield createFileItem(file);\n } else if (entry.isDirectory) {\n yield createDirectoryItem(entry);\n }\n }\n } while (entries.length > 0);\n}\n\nfunction getEntryFile(entry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n}\n\n/** Returns whether a drop item contains text data. */\nexport function isTextDropItem(dropItem: DropItem): dropItem is TextDropItem {\n return dropItem.kind === 'text';\n}\n\n/** Returns whether a drop item is a file. */\nexport function isFileDropItem(dropItem: DropItem): dropItem is FileDropItem {\n return dropItem.kind === 'file';\n}\n\n/** Returns whether a drop item is a directory. */\nexport function isDirectoryDropItem(dropItem: DropItem): dropItem is DirectoryDropItem {\n return dropItem.kind === 'directory';\n}\n\n// Global DnD collection state tracker.\nexport interface DnDState {\n /** A ref for the of the drag items in the current drag session if any. */\n draggingCollectionRef?: RefObject<HTMLElement | null>;\n /** The set of currently dragged keys. */\n draggingKeys: Set<Key>;\n /** A ref for the collection that is targeted for a drop operation, if any. */\n dropCollectionRef?: RefObject<HTMLElement | null>;\n}\n\nexport let globalDndState: DnDState = {draggingKeys: new Set()};\n\nexport function setDraggingCollectionRef(ref: RefObject<HTMLElement | null>): void {\n globalDndState.draggingCollectionRef = ref;\n}\n\nexport function setDraggingKeys(keys: Set<Key>): void {\n globalDndState.draggingKeys = keys;\n}\n\nexport function setDropCollectionRef(ref?: RefObject<HTMLElement | null>): void {\n globalDndState.dropCollectionRef = ref;\n}\n\nexport function clearGlobalDnDState(): void {\n globalDndState = {draggingKeys: new Set()};\n}\n\nexport function setGlobalDnDState(state: DnDState): void {\n globalDndState = state;\n}\n\n// Util function to check if the current dragging collection ref is the same as the current targeted droppable collection ref.\n// Allows a droppable ref arg in case the global drop collection ref hasn't been set\nexport function isInternalDropOperation(ref?: RefObject<HTMLElement | null>): boolean {\n let {draggingCollectionRef, dropCollectionRef} = globalDndState;\n return (\n draggingCollectionRef?.current != null &&\n draggingCollectionRef.current === (ref?.current || dropCollectionRef?.current)\n );\n}\n\ntype DropEffect = 'none' | 'copy' | 'link' | 'move';\nexport let globalDropEffect: DropEffect | undefined;\nexport function setGlobalDropEffect(dropEffect: DropEffect | undefined): void {\n globalDropEffect = dropEffect;\n}\n\nexport let globalAllowedDropOperations: DROP_OPERATION = DROP_OPERATION.none;\nexport function setGlobalAllowedDropOperations(o: DROP_OPERATION): void {\n globalAllowedDropOperations = o;\n}\n"],"names":[],"version":3,"file":"utils.mjs.map"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;AAgCM,SAAS,0CAAU,KAAqB;IAC7C,IAAI,YAAC,QAAQ,cAAE,UAAU,kBAAE,cAAc,EAAC,GAAG;IAC7C,IAAI,aAAC,SAAS,kBAAE,cAAc,cAAE,UAAU,EAAC,GAAG,CAAA,GAAA,sCAAW,EAAE;IAC3D,IAAI,QAAQ,CAAA,GAAA,sCAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEhC,qBAAO,CAAA,GAAA,sCAAI,EAAE,YAAY,CAAC,OAAO,CAAA,GAAA,oCAAS,EAAE,MAAM,KAAK,EAAS;QAC9D,GAAG,UAAU;QACb,WAAW,CAAA,GAAA,qCAAG,EAAE;YACd,CAAC,cAAc,GAAG,EAAE;YACpB,CAAC,kBAAkB,GAAG,EAAE;QAC1B;IACF;AACF","sources":["packages/react-aria/src/focus/FocusRing.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport clsx from 'clsx';\nimport {mergeProps} from '../utils/mergeProps';\nimport React, {ReactElement} from 'react';\nimport {useFocusRing} from './useFocusRing';\n\nexport interface FocusRingProps {\n /** Child element to apply CSS classes to. */\n children: ReactElement,\n /** CSS class to apply when the element is focused. */\n focusClass?: string,\n /** CSS class to apply when the element has keyboard focus. */\n focusRingClass?: string,\n /**\n * Whether to show the focus ring when something\n * inside the container element has focus (true), or\n * only if the container itself has focus (false).\n * @default false\n */\n within?: boolean,\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\n/**\n * A utility component that applies a CSS class when an element has keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard,\n * not with a mouse, touch, or other input methods.\n */\nexport function FocusRing(props: FocusRingProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>> {\n let {children, focusClass, focusRingClass} = props;\n let {isFocused, isFocusVisible, focusProps} = useFocusRing(props);\n let child = React.Children.only(children);\n\n return React.cloneElement(child, mergeProps(child.props as any, {\n ...focusProps,\n className: clsx({\n [focusClass || '']: isFocused,\n [focusRingClass || '']: isFocusVisible\n })\n }));\n}\n"],"names":[],"version":3,"file":"FocusRing.cjs.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;AAiCM,SAAS,0CACd,KAAqB;IAErB,IAAI,YAAC,QAAQ,cAAE,UAAU,kBAAE,cAAc,EAAC,GAAG;IAC7C,IAAI,aAAC,SAAS,kBAAE,cAAc,cAAE,UAAU,EAAC,GAAG,CAAA,GAAA,sCAAW,EAAE;IAC3D,IAAI,QAAQ,CAAA,GAAA,sCAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEhC,qBAAO,CAAA,GAAA,sCAAI,EAAE,YAAY,CACvB,OACA,CAAA,GAAA,oCAAS,EAAE,MAAM,KAAK,EAAS;QAC7B,GAAG,UAAU;QACb,WAAW,CAAA,GAAA,qCAAG,EAAE;YACd,CAAC,cAAc,GAAG,EAAE;YACpB,CAAC,kBAAkB,GAAG,EAAE;QAC1B;IACF;AAEJ","sources":["packages/react-aria/src/focus/FocusRing.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport clsx from 'clsx';\nimport {mergeProps} from '../utils/mergeProps';\nimport React, {ReactElement} from 'react';\nimport {useFocusRing} from './useFocusRing';\n\nexport interface FocusRingProps {\n /** Child element to apply CSS classes to. */\n children: ReactElement;\n /** CSS class to apply when the element is focused. */\n focusClass?: string;\n /** CSS class to apply when the element has keyboard focus. */\n focusRingClass?: string;\n /**\n * Whether to show the focus ring when something\n * inside the container element has focus (true), or\n * only if the container itself has focus (false).\n *\n * @default false\n */\n within?: boolean;\n /** Whether the element is a text input. */\n isTextInput?: boolean;\n /** Whether the element will be auto focused. */\n autoFocus?: boolean;\n}\n\n/**\n * A utility component that applies a CSS class when an element has keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard,\n * not with a mouse, touch, or other input methods.\n */\nexport function FocusRing(\n props: FocusRingProps\n): React.ReactElement<unknown, string | React.JSXElementConstructor<any>> {\n let {children, focusClass, focusRingClass} = props;\n let {isFocused, isFocusVisible, focusProps} = useFocusRing(props);\n let child = React.Children.only(children);\n\n return React.cloneElement(\n child,\n mergeProps(child.props as any, {\n ...focusProps,\n className: clsx({\n [focusClass || '']: isFocused,\n [focusRingClass || '']: isFocusVisible\n })\n })\n );\n}\n"],"names":[],"version":3,"file":"FocusRing.cjs.map"}