reka-ui 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (842) hide show
  1. package/dist/Accordion/AccordionHeader.cjs.map +1 -1
  2. package/dist/Accordion/AccordionHeader.js.map +1 -1
  3. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  4. package/dist/Accordion/AccordionItem.js.map +1 -1
  5. package/dist/Accordion/AccordionRoot.cjs.map +1 -1
  6. package/dist/Accordion/AccordionRoot.js.map +1 -1
  7. package/dist/Accordion/AccordionTrigger.cjs.map +1 -1
  8. package/dist/Accordion/AccordionTrigger.js.map +1 -1
  9. package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
  10. package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
  11. package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
  12. package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
  13. package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
  14. package/dist/AspectRatio/AspectRatio.js.map +1 -1
  15. package/dist/Avatar/AvatarFallback.cjs.map +1 -1
  16. package/dist/Avatar/AvatarFallback.js.map +1 -1
  17. package/dist/Avatar/AvatarImage.cjs.map +1 -1
  18. package/dist/Avatar/AvatarImage.js.map +1 -1
  19. package/dist/Avatar/AvatarRoot.cjs.map +1 -1
  20. package/dist/Avatar/AvatarRoot.js.map +1 -1
  21. package/dist/Avatar/utils.cjs.map +1 -1
  22. package/dist/Avatar/utils.js.map +1 -1
  23. package/dist/Calendar/CalendarCell.cjs +1 -1
  24. package/dist/Calendar/CalendarCell.js +1 -1
  25. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  26. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  27. package/dist/Calendar/CalendarHeading.cjs +1 -1
  28. package/dist/Calendar/CalendarHeading.js +1 -1
  29. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  30. package/dist/Calendar/CalendarNext.js.map +1 -1
  31. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  32. package/dist/Calendar/CalendarPrev.js.map +1 -1
  33. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  34. package/dist/Calendar/CalendarRoot.js.map +1 -1
  35. package/dist/Calendar/useCalendar.cjs +2 -2
  36. package/dist/Calendar/useCalendar.cjs.map +1 -1
  37. package/dist/Calendar/useCalendar.js +2 -2
  38. package/dist/Calendar/useCalendar.js.map +1 -1
  39. package/dist/Checkbox/CheckboxGroupRoot.cjs +1 -1
  40. package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
  41. package/dist/Checkbox/CheckboxGroupRoot.js +1 -1
  42. package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
  43. package/dist/Checkbox/CheckboxIndicator.cjs.map +1 -1
  44. package/dist/Checkbox/CheckboxIndicator.js.map +1 -1
  45. package/dist/Checkbox/CheckboxRoot.cjs +1 -1
  46. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  47. package/dist/Checkbox/CheckboxRoot.js +1 -1
  48. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  49. package/dist/Collapsible/CollapsibleContent.cjs +1 -1
  50. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  51. package/dist/Collapsible/CollapsibleContent.js +1 -1
  52. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  53. package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
  54. package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
  55. package/dist/Collapsible/CollapsibleTrigger.cjs +1 -1
  56. package/dist/Collapsible/CollapsibleTrigger.js +1 -1
  57. package/dist/Collection/Collection.cjs.map +1 -1
  58. package/dist/Collection/Collection.js.map +1 -1
  59. package/dist/Combobox/ComboboxAnchor.cjs.map +1 -1
  60. package/dist/Combobox/ComboboxAnchor.js.map +1 -1
  61. package/dist/Combobox/ComboboxArrow.cjs.map +1 -1
  62. package/dist/Combobox/ComboboxArrow.js.map +1 -1
  63. package/dist/Combobox/ComboboxCancel.cjs +1 -0
  64. package/dist/Combobox/ComboboxCancel.cjs.map +1 -1
  65. package/dist/Combobox/ComboboxCancel.js +1 -0
  66. package/dist/Combobox/ComboboxCancel.js.map +1 -1
  67. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  68. package/dist/Combobox/ComboboxContent.js.map +1 -1
  69. package/dist/Combobox/ComboboxContentImpl.cjs +2 -2
  70. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  71. package/dist/Combobox/ComboboxContentImpl.js +2 -2
  72. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  73. package/dist/Combobox/ComboboxEmpty.cjs.map +1 -1
  74. package/dist/Combobox/ComboboxEmpty.js.map +1 -1
  75. package/dist/Combobox/ComboboxGroup.cjs +1 -1
  76. package/dist/Combobox/ComboboxGroup.js +1 -1
  77. package/dist/Combobox/ComboboxInput.cjs +9 -1
  78. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  79. package/dist/Combobox/ComboboxInput.js +9 -1
  80. package/dist/Combobox/ComboboxInput.js.map +1 -1
  81. package/dist/Combobox/ComboboxItem.cjs +4 -3
  82. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  83. package/dist/Combobox/ComboboxItem.js +4 -3
  84. package/dist/Combobox/ComboboxItem.js.map +1 -1
  85. package/dist/Combobox/ComboboxLabel.cjs +1 -1
  86. package/dist/Combobox/ComboboxLabel.js +1 -1
  87. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  88. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  89. package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
  90. package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
  91. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  92. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  93. package/dist/ContextMenu/ContextMenuPortal.cjs.map +1 -1
  94. package/dist/ContextMenu/ContextMenuPortal.js.map +1 -1
  95. package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
  96. package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
  97. package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
  98. package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
  99. package/dist/ContextMenu/ContextMenuSub.js +1 -1
  100. package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
  101. package/dist/ContextMenu/ContextMenuTrigger.cjs +2 -2
  102. package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
  103. package/dist/ContextMenu/ContextMenuTrigger.js +2 -2
  104. package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
  105. package/dist/DateField/DateFieldInput.cjs.map +1 -1
  106. package/dist/DateField/DateFieldInput.js.map +1 -1
  107. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  108. package/dist/DateField/DateFieldRoot.js.map +1 -1
  109. package/dist/DatePicker/DatePickerArrow.cjs.map +1 -1
  110. package/dist/DatePicker/DatePickerArrow.js.map +1 -1
  111. package/dist/DatePicker/DatePickerCalendar.cjs.map +1 -1
  112. package/dist/DatePicker/DatePickerCalendar.js.map +1 -1
  113. package/dist/DatePicker/DatePickerCell.cjs.map +1 -1
  114. package/dist/DatePicker/DatePickerCell.js.map +1 -1
  115. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  116. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  117. package/dist/DatePicker/DatePickerClose.cjs.map +1 -1
  118. package/dist/DatePicker/DatePickerClose.js.map +1 -1
  119. package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
  120. package/dist/DatePicker/DatePickerContent.js.map +1 -1
  121. package/dist/DatePicker/DatePickerGrid.cjs.map +1 -1
  122. package/dist/DatePicker/DatePickerGrid.js.map +1 -1
  123. package/dist/DatePicker/DatePickerGridBody.cjs.map +1 -1
  124. package/dist/DatePicker/DatePickerGridBody.js.map +1 -1
  125. package/dist/DatePicker/DatePickerGridHead.cjs.map +1 -1
  126. package/dist/DatePicker/DatePickerGridHead.js.map +1 -1
  127. package/dist/DatePicker/DatePickerGridRow.cjs.map +1 -1
  128. package/dist/DatePicker/DatePickerGridRow.js.map +1 -1
  129. package/dist/DatePicker/DatePickerHeadCell.cjs.map +1 -1
  130. package/dist/DatePicker/DatePickerHeadCell.js.map +1 -1
  131. package/dist/DatePicker/DatePickerHeader.cjs.map +1 -1
  132. package/dist/DatePicker/DatePickerHeader.js.map +1 -1
  133. package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
  134. package/dist/DatePicker/DatePickerHeading.js.map +1 -1
  135. package/dist/DatePicker/DatePickerInput.cjs.map +1 -1
  136. package/dist/DatePicker/DatePickerInput.js.map +1 -1
  137. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  138. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  139. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  140. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  141. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  142. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  143. package/dist/DatePicker/DatePickerTrigger.cjs.map +1 -1
  144. package/dist/DatePicker/DatePickerTrigger.js.map +1 -1
  145. package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
  146. package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
  147. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  148. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  149. package/dist/DateRangePicker/DateRangePickerAnchor.cjs.map +1 -1
  150. package/dist/DateRangePicker/DateRangePickerAnchor.js.map +1 -1
  151. package/dist/DateRangePicker/DateRangePickerArrow.cjs.map +1 -1
  152. package/dist/DateRangePicker/DateRangePickerArrow.js.map +1 -1
  153. package/dist/DateRangePicker/DateRangePickerCalendar.cjs +1 -0
  154. package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
  155. package/dist/DateRangePicker/DateRangePickerCalendar.js +1 -0
  156. package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
  157. package/dist/DateRangePicker/DateRangePickerCell.cjs.map +1 -1
  158. package/dist/DateRangePicker/DateRangePickerCell.js.map +1 -1
  159. package/dist/DateRangePicker/DateRangePickerClose.cjs.map +1 -1
  160. package/dist/DateRangePicker/DateRangePickerClose.js.map +1 -1
  161. package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
  162. package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
  163. package/dist/DateRangePicker/DateRangePickerGrid.cjs.map +1 -1
  164. package/dist/DateRangePicker/DateRangePickerGrid.js.map +1 -1
  165. package/dist/DateRangePicker/DateRangePickerGridBody.cjs.map +1 -1
  166. package/dist/DateRangePicker/DateRangePickerGridBody.js.map +1 -1
  167. package/dist/DateRangePicker/DateRangePickerGridHead.cjs.map +1 -1
  168. package/dist/DateRangePicker/DateRangePickerGridHead.js.map +1 -1
  169. package/dist/DateRangePicker/DateRangePickerGridRow.cjs.map +1 -1
  170. package/dist/DateRangePicker/DateRangePickerGridRow.js.map +1 -1
  171. package/dist/DateRangePicker/DateRangePickerHeadCell.cjs.map +1 -1
  172. package/dist/DateRangePicker/DateRangePickerHeadCell.js.map +1 -1
  173. package/dist/DateRangePicker/DateRangePickerHeader.cjs.map +1 -1
  174. package/dist/DateRangePicker/DateRangePickerHeader.js.map +1 -1
  175. package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
  176. package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
  177. package/dist/DateRangePicker/DateRangePickerInput.cjs.map +1 -1
  178. package/dist/DateRangePicker/DateRangePickerInput.js.map +1 -1
  179. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  180. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  181. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  182. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  183. package/dist/DateRangePicker/DateRangePickerRoot.cjs +3 -0
  184. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  185. package/dist/DateRangePicker/DateRangePickerRoot.js +3 -0
  186. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  187. package/dist/DateRangePicker/DateRangePickerTrigger.cjs.map +1 -1
  188. package/dist/DateRangePicker/DateRangePickerTrigger.js.map +1 -1
  189. package/dist/Dialog/DialogClose.cjs +1 -1
  190. package/dist/Dialog/DialogClose.cjs.map +1 -1
  191. package/dist/Dialog/DialogClose.js +1 -1
  192. package/dist/Dialog/DialogClose.js.map +1 -1
  193. package/dist/Dialog/DialogContent.cjs.map +1 -1
  194. package/dist/Dialog/DialogContent.js.map +1 -1
  195. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  196. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  197. package/dist/Dialog/DialogContentModal.cjs.map +1 -1
  198. package/dist/Dialog/DialogContentModal.js.map +1 -1
  199. package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
  200. package/dist/Dialog/DialogContentNonModal.js.map +1 -1
  201. package/dist/Dialog/DialogDescription.cjs.map +1 -1
  202. package/dist/Dialog/DialogDescription.js.map +1 -1
  203. package/dist/Dialog/DialogOverlay.cjs.map +1 -1
  204. package/dist/Dialog/DialogOverlay.js.map +1 -1
  205. package/dist/Dialog/DialogOverlayImpl.cjs.map +1 -1
  206. package/dist/Dialog/DialogOverlayImpl.js.map +1 -1
  207. package/dist/Dialog/DialogRoot.cjs.map +1 -1
  208. package/dist/Dialog/DialogRoot.js.map +1 -1
  209. package/dist/Dialog/DialogTitle.cjs.map +1 -1
  210. package/dist/Dialog/DialogTitle.js.map +1 -1
  211. package/dist/Dialog/DialogTrigger.cjs +1 -1
  212. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  213. package/dist/Dialog/DialogTrigger.js +1 -1
  214. package/dist/Dialog/DialogTrigger.js.map +1 -1
  215. package/dist/Dialog/utils.cjs.map +1 -1
  216. package/dist/Dialog/utils.js.map +1 -1
  217. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  218. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  219. package/dist/DismissableLayer/utils.cjs +4 -3
  220. package/dist/DismissableLayer/utils.cjs.map +1 -1
  221. package/dist/DismissableLayer/utils.js +4 -3
  222. package/dist/DismissableLayer/utils.js.map +1 -1
  223. package/dist/DropdownMenu/DropdownMenuContent.cjs +1 -1
  224. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  225. package/dist/DropdownMenu/DropdownMenuContent.js +1 -1
  226. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  227. package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
  228. package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
  229. package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
  230. package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
  231. package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
  232. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  233. package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
  234. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  235. package/dist/DropdownMenu/DropdownMenuTrigger.cjs +1 -1
  236. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  237. package/dist/DropdownMenu/DropdownMenuTrigger.js +1 -1
  238. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  239. package/dist/Editable/EditableInput.cjs.map +1 -1
  240. package/dist/Editable/EditableInput.js.map +1 -1
  241. package/dist/Editable/EditablePreview.cjs.map +1 -1
  242. package/dist/Editable/EditablePreview.js.map +1 -1
  243. package/dist/Editable/EditableRoot.cjs.map +1 -1
  244. package/dist/Editable/EditableRoot.js.map +1 -1
  245. package/dist/FocusScope/FocusScope.cjs +1 -1
  246. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  247. package/dist/FocusScope/FocusScope.js +1 -1
  248. package/dist/FocusScope/FocusScope.js.map +1 -1
  249. package/dist/HoverCard/HoverCardContent.cjs +1 -1
  250. package/dist/HoverCard/HoverCardContent.cjs.map +1 -1
  251. package/dist/HoverCard/HoverCardContent.js +1 -1
  252. package/dist/HoverCard/HoverCardContent.js.map +1 -1
  253. package/dist/HoverCard/HoverCardContentImpl.cjs +3 -3
  254. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  255. package/dist/HoverCard/HoverCardContentImpl.js +3 -3
  256. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  257. package/dist/HoverCard/HoverCardRoot.cjs +1 -1
  258. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  259. package/dist/HoverCard/HoverCardRoot.js +1 -1
  260. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  261. package/dist/HoverCard/HoverCardTrigger.cjs +1 -1
  262. package/dist/HoverCard/HoverCardTrigger.cjs.map +1 -1
  263. package/dist/HoverCard/HoverCardTrigger.js +1 -1
  264. package/dist/HoverCard/HoverCardTrigger.js.map +1 -1
  265. package/dist/Listbox/ListboxContent.cjs +1 -1
  266. package/dist/Listbox/ListboxContent.cjs.map +1 -1
  267. package/dist/Listbox/ListboxContent.js +1 -1
  268. package/dist/Listbox/ListboxContent.js.map +1 -1
  269. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  270. package/dist/Listbox/ListboxFilter.js.map +1 -1
  271. package/dist/Listbox/ListboxItem.cjs +2 -2
  272. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  273. package/dist/Listbox/ListboxItem.js +2 -2
  274. package/dist/Listbox/ListboxItem.js.map +1 -1
  275. package/dist/Listbox/ListboxItemIndicator.cjs.map +1 -1
  276. package/dist/Listbox/ListboxItemIndicator.js.map +1 -1
  277. package/dist/Listbox/ListboxRoot.cjs +3 -3
  278. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  279. package/dist/Listbox/ListboxRoot.js +3 -3
  280. package/dist/Listbox/ListboxRoot.js.map +1 -1
  281. package/dist/Listbox/ListboxVirtualizer.cjs +4 -4
  282. package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
  283. package/dist/Listbox/ListboxVirtualizer.js +4 -4
  284. package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
  285. package/dist/Menu/MenuAnchor.cjs.map +1 -1
  286. package/dist/Menu/MenuAnchor.js.map +1 -1
  287. package/dist/Menu/MenuCheckboxItem.cjs +1 -1
  288. package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
  289. package/dist/Menu/MenuCheckboxItem.js +1 -1
  290. package/dist/Menu/MenuCheckboxItem.js.map +1 -1
  291. package/dist/Menu/MenuContent.cjs.map +1 -1
  292. package/dist/Menu/MenuContent.js.map +1 -1
  293. package/dist/Menu/MenuContentImpl.cjs +2 -2
  294. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  295. package/dist/Menu/MenuContentImpl.js +2 -2
  296. package/dist/Menu/MenuContentImpl.js.map +1 -1
  297. package/dist/Menu/MenuItem.cjs.map +1 -1
  298. package/dist/Menu/MenuItem.js.map +1 -1
  299. package/dist/Menu/MenuItemImpl.cjs +1 -1
  300. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  301. package/dist/Menu/MenuItemImpl.js +1 -1
  302. package/dist/Menu/MenuItemImpl.js.map +1 -1
  303. package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
  304. package/dist/Menu/MenuItemIndicator.js.map +1 -1
  305. package/dist/Menu/MenuRadioItem.cjs +1 -1
  306. package/dist/Menu/MenuRadioItem.cjs.map +1 -1
  307. package/dist/Menu/MenuRadioItem.js +1 -1
  308. package/dist/Menu/MenuRadioItem.js.map +1 -1
  309. package/dist/Menu/MenuRoot.cjs +2 -2
  310. package/dist/Menu/MenuRoot.cjs.map +1 -1
  311. package/dist/Menu/MenuRoot.js +2 -2
  312. package/dist/Menu/MenuRoot.js.map +1 -1
  313. package/dist/Menu/MenuRootContentModal.cjs.map +1 -1
  314. package/dist/Menu/MenuRootContentModal.js.map +1 -1
  315. package/dist/Menu/MenuRootContentNonModal.cjs.map +1 -1
  316. package/dist/Menu/MenuRootContentNonModal.js.map +1 -1
  317. package/dist/Menu/MenuSub.cjs +1 -1
  318. package/dist/Menu/MenuSub.cjs.map +1 -1
  319. package/dist/Menu/MenuSub.js +1 -1
  320. package/dist/Menu/MenuSub.js.map +1 -1
  321. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  322. package/dist/Menu/MenuSubContent.js.map +1 -1
  323. package/dist/Menu/MenuSubTrigger.cjs +1 -1
  324. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  325. package/dist/Menu/MenuSubTrigger.js +1 -1
  326. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  327. package/dist/Menubar/MenubarContent.cjs +1 -1
  328. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  329. package/dist/Menubar/MenubarContent.js +1 -1
  330. package/dist/Menubar/MenubarContent.js.map +1 -1
  331. package/dist/Menubar/MenubarGroup.cjs.map +1 -1
  332. package/dist/Menubar/MenubarGroup.js.map +1 -1
  333. package/dist/Menubar/MenubarMenu.cjs.map +1 -1
  334. package/dist/Menubar/MenubarMenu.js.map +1 -1
  335. package/dist/Menubar/MenubarRoot.cjs.map +1 -1
  336. package/dist/Menubar/MenubarRoot.js.map +1 -1
  337. package/dist/Menubar/MenubarSub.cjs +1 -1
  338. package/dist/Menubar/MenubarSub.cjs.map +1 -1
  339. package/dist/Menubar/MenubarSub.js +1 -1
  340. package/dist/Menubar/MenubarSub.js.map +1 -1
  341. package/dist/Menubar/MenubarSubContent.cjs.map +1 -1
  342. package/dist/Menubar/MenubarSubContent.js.map +1 -1
  343. package/dist/Menubar/MenubarTrigger.cjs +1 -1
  344. package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
  345. package/dist/Menubar/MenubarTrigger.js +1 -1
  346. package/dist/Menubar/MenubarTrigger.js.map +1 -1
  347. package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
  348. package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
  349. package/dist/NavigationMenu/NavigationMenuContent.js +1 -1
  350. package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
  351. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
  352. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  353. package/dist/NavigationMenu/NavigationMenuContentImpl.js +1 -1
  354. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  355. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  356. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  357. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  358. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  359. package/dist/NavigationMenu/NavigationMenuLink.cjs.map +1 -1
  360. package/dist/NavigationMenu/NavigationMenuLink.js.map +1 -1
  361. package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
  362. package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
  363. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  364. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  365. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  366. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  367. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  368. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  369. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  370. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  371. package/dist/NumberField/NumberFieldDecrement.cjs +1 -1
  372. package/dist/NumberField/NumberFieldDecrement.cjs.map +1 -1
  373. package/dist/NumberField/NumberFieldDecrement.js +1 -1
  374. package/dist/NumberField/NumberFieldDecrement.js.map +1 -1
  375. package/dist/NumberField/NumberFieldIncrement.cjs.map +1 -1
  376. package/dist/NumberField/NumberFieldIncrement.js.map +1 -1
  377. package/dist/NumberField/NumberFieldInput.cjs +1 -1
  378. package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
  379. package/dist/NumberField/NumberFieldInput.js +1 -1
  380. package/dist/NumberField/NumberFieldInput.js.map +1 -1
  381. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  382. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  383. package/dist/NumberField/utils.cjs.map +1 -1
  384. package/dist/NumberField/utils.js +1 -1
  385. package/dist/NumberField/utils.js.map +1 -1
  386. package/dist/Pagination/PaginationFirst.cjs.map +1 -1
  387. package/dist/Pagination/PaginationFirst.js.map +1 -1
  388. package/dist/Pagination/PaginationLast.cjs.map +1 -1
  389. package/dist/Pagination/PaginationLast.js.map +1 -1
  390. package/dist/Pagination/PaginationListItem.cjs.map +1 -1
  391. package/dist/Pagination/PaginationListItem.js.map +1 -1
  392. package/dist/Pagination/PaginationNext.cjs.map +1 -1
  393. package/dist/Pagination/PaginationNext.js.map +1 -1
  394. package/dist/Pagination/PaginationPrev.cjs.map +1 -1
  395. package/dist/Pagination/PaginationPrev.js.map +1 -1
  396. package/dist/Pagination/PaginationRoot.cjs.map +1 -1
  397. package/dist/Pagination/PaginationRoot.js.map +1 -1
  398. package/dist/Pagination/utils.cjs.map +1 -1
  399. package/dist/Pagination/utils.js.map +1 -1
  400. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  401. package/dist/PinInput/PinInputInput.js.map +1 -1
  402. package/dist/PinInput/PinInputRoot.cjs.map +1 -1
  403. package/dist/PinInput/PinInputRoot.js.map +1 -1
  404. package/dist/Popover/PopoverAnchor.cjs.map +1 -1
  405. package/dist/Popover/PopoverAnchor.js.map +1 -1
  406. package/dist/Popover/PopoverClose.cjs.map +1 -1
  407. package/dist/Popover/PopoverClose.js.map +1 -1
  408. package/dist/Popover/PopoverContent.cjs.map +1 -1
  409. package/dist/Popover/PopoverContent.js.map +1 -1
  410. package/dist/Popover/PopoverContentImpl.cjs +1 -1
  411. package/dist/Popover/PopoverContentImpl.cjs.map +1 -1
  412. package/dist/Popover/PopoverContentImpl.js +1 -1
  413. package/dist/Popover/PopoverContentImpl.js.map +1 -1
  414. package/dist/Popover/PopoverContentModal.cjs +1 -1
  415. package/dist/Popover/PopoverContentModal.cjs.map +1 -1
  416. package/dist/Popover/PopoverContentModal.js +1 -1
  417. package/dist/Popover/PopoverContentModal.js.map +1 -1
  418. package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
  419. package/dist/Popover/PopoverContentNonModal.js.map +1 -1
  420. package/dist/Popover/PopoverRoot.cjs +1 -1
  421. package/dist/Popover/PopoverRoot.cjs.map +1 -1
  422. package/dist/Popover/PopoverRoot.js +1 -1
  423. package/dist/Popover/PopoverRoot.js.map +1 -1
  424. package/dist/Popover/PopoverTrigger.cjs +1 -1
  425. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  426. package/dist/Popover/PopoverTrigger.js +1 -1
  427. package/dist/Popover/PopoverTrigger.js.map +1 -1
  428. package/dist/Popper/PopperAnchor.cjs.map +1 -1
  429. package/dist/Popper/PopperAnchor.js.map +1 -1
  430. package/dist/Popper/PopperArrow.cjs.map +1 -1
  431. package/dist/Popper/PopperArrow.js.map +1 -1
  432. package/dist/Popper/PopperContent.cjs +2 -2
  433. package/dist/Popper/PopperContent.cjs.map +1 -1
  434. package/dist/Popper/PopperContent.js +2 -2
  435. package/dist/Popper/PopperContent.js.map +1 -1
  436. package/dist/Popper/PopperRoot.cjs.map +1 -1
  437. package/dist/Popper/PopperRoot.js.map +1 -1
  438. package/dist/Presence/Presence.cjs +1 -1
  439. package/dist/Presence/Presence.cjs.map +1 -1
  440. package/dist/Presence/Presence.js +1 -1
  441. package/dist/Presence/Presence.js.map +1 -1
  442. package/dist/Presence/usePresence.cjs +2 -2
  443. package/dist/Presence/usePresence.cjs.map +1 -1
  444. package/dist/Presence/usePresence.js +2 -2
  445. package/dist/Presence/usePresence.js.map +1 -1
  446. package/dist/Primitive/Primitive.cjs.map +1 -1
  447. package/dist/Primitive/Primitive.js.map +1 -1
  448. package/dist/Primitive/Slot.cjs.map +1 -1
  449. package/dist/Primitive/Slot.js.map +1 -1
  450. package/dist/Primitive/usePrimitiveElement.cjs.map +1 -1
  451. package/dist/Primitive/usePrimitiveElement.js.map +1 -1
  452. package/dist/Progress/ProgressIndicator.cjs.map +1 -1
  453. package/dist/Progress/ProgressIndicator.js.map +1 -1
  454. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  455. package/dist/Progress/ProgressRoot.js.map +1 -1
  456. package/dist/RadioGroup/Radio.cjs.map +1 -1
  457. package/dist/RadioGroup/Radio.js.map +1 -1
  458. package/dist/RadioGroup/RadioGroupIndicator.cjs.map +1 -1
  459. package/dist/RadioGroup/RadioGroupIndicator.js.map +1 -1
  460. package/dist/RadioGroup/RadioGroupItem.cjs +1 -1
  461. package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
  462. package/dist/RadioGroup/RadioGroupItem.js +1 -1
  463. package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
  464. package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
  465. package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
  466. package/dist/RadioGroup/utils.cjs.map +1 -1
  467. package/dist/RadioGroup/utils.js.map +1 -1
  468. package/dist/RangeCalendar/RangeCalendarCell.cjs +1 -1
  469. package/dist/RangeCalendar/RangeCalendarCell.js +1 -1
  470. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +2 -2
  471. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  472. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +2 -2
  473. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  474. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  475. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  476. package/dist/RangeCalendar/RangeCalendarHeading.cjs +1 -1
  477. package/dist/RangeCalendar/RangeCalendarHeading.js +1 -1
  478. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  479. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  480. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  481. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  482. package/dist/RangeCalendar/RangeCalendarRoot.cjs +8 -3
  483. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  484. package/dist/RangeCalendar/RangeCalendarRoot.js +8 -3
  485. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  486. package/dist/RangeCalendar/useRangeCalendar.cjs +8 -2
  487. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  488. package/dist/RangeCalendar/useRangeCalendar.js +8 -2
  489. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  490. package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
  491. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  492. package/dist/RovingFocus/RovingFocusGroup.js +1 -1
  493. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  494. package/dist/RovingFocus/RovingFocusItem.cjs +1 -1
  495. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  496. package/dist/RovingFocus/RovingFocusItem.js +1 -1
  497. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  498. package/dist/ScrollArea/ScrollAreaCorner.cjs.map +1 -1
  499. package/dist/ScrollArea/ScrollAreaCorner.js.map +1 -1
  500. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs +1 -1
  501. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
  502. package/dist/ScrollArea/ScrollAreaCornerImpl.js +1 -1
  503. package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
  504. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  505. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  506. package/dist/ScrollArea/ScrollAreaScrollbar.cjs +1 -1
  507. package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
  508. package/dist/ScrollArea/ScrollAreaScrollbar.js +1 -1
  509. package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
  510. package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
  511. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
  512. package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
  513. package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
  514. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  515. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  516. package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
  517. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
  518. package/dist/ScrollArea/ScrollAreaScrollbarVisible.cjs.map +1 -1
  519. package/dist/ScrollArea/ScrollAreaScrollbarVisible.js.map +1 -1
  520. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
  521. package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
  522. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
  523. package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
  524. package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
  525. package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
  526. package/dist/ScrollArea/ScrollAreaViewport.cjs +1 -1
  527. package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
  528. package/dist/ScrollArea/ScrollAreaViewport.js +1 -1
  529. package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
  530. package/dist/ScrollArea/utils.cjs.map +1 -1
  531. package/dist/ScrollArea/utils.js.map +1 -1
  532. package/dist/Select/BubbleSelect.cjs.map +1 -1
  533. package/dist/Select/BubbleSelect.js.map +1 -1
  534. package/dist/Select/SelectArrow.cjs +1 -1
  535. package/dist/Select/SelectArrow.cjs.map +1 -1
  536. package/dist/Select/SelectArrow.js +1 -1
  537. package/dist/Select/SelectArrow.js.map +1 -1
  538. package/dist/Select/SelectContent.cjs.map +1 -1
  539. package/dist/Select/SelectContent.js.map +1 -1
  540. package/dist/Select/SelectContentImpl.cjs +4 -4
  541. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  542. package/dist/Select/SelectContentImpl.js +4 -4
  543. package/dist/Select/SelectContentImpl.js.map +1 -1
  544. package/dist/Select/SelectItem.cjs +1 -1
  545. package/dist/Select/SelectItem.cjs.map +1 -1
  546. package/dist/Select/SelectItem.js +1 -1
  547. package/dist/Select/SelectItem.js.map +1 -1
  548. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  549. package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
  550. package/dist/Select/SelectItemAlignedPosition.js +1 -1
  551. package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
  552. package/dist/Select/SelectItemIndicator.cjs.map +1 -1
  553. package/dist/Select/SelectItemIndicator.js.map +1 -1
  554. package/dist/Select/SelectItemText.cjs.map +1 -1
  555. package/dist/Select/SelectItemText.js.map +1 -1
  556. package/dist/Select/SelectPopperPosition.cjs +1 -1
  557. package/dist/Select/SelectPopperPosition.cjs.map +1 -1
  558. package/dist/Select/SelectPopperPosition.js +1 -1
  559. package/dist/Select/SelectPopperPosition.js.map +1 -1
  560. package/dist/Select/SelectProvider.cjs.map +1 -1
  561. package/dist/Select/SelectProvider.js.map +1 -1
  562. package/dist/Select/SelectRoot.cjs +2 -2
  563. package/dist/Select/SelectRoot.cjs.map +1 -1
  564. package/dist/Select/SelectRoot.js +2 -2
  565. package/dist/Select/SelectRoot.js.map +1 -1
  566. package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
  567. package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
  568. package/dist/Select/SelectScrollDownButton.cjs +1 -1
  569. package/dist/Select/SelectScrollDownButton.cjs.map +1 -1
  570. package/dist/Select/SelectScrollDownButton.js +1 -1
  571. package/dist/Select/SelectScrollDownButton.js.map +1 -1
  572. package/dist/Select/SelectTrigger.cjs +3 -3
  573. package/dist/Select/SelectTrigger.cjs.map +1 -1
  574. package/dist/Select/SelectTrigger.js +3 -3
  575. package/dist/Select/SelectTrigger.js.map +1 -1
  576. package/dist/Select/SelectValue.cjs +2 -1
  577. package/dist/Select/SelectValue.cjs.map +1 -1
  578. package/dist/Select/SelectValue.js +2 -1
  579. package/dist/Select/SelectValue.js.map +1 -1
  580. package/dist/Select/SelectViewport.cjs +1 -1
  581. package/dist/Select/SelectViewport.cjs.map +1 -1
  582. package/dist/Select/SelectViewport.js +1 -1
  583. package/dist/Select/SelectViewport.js.map +1 -1
  584. package/dist/Select/utils.cjs +4 -0
  585. package/dist/Select/utils.cjs.map +1 -1
  586. package/dist/Select/utils.js +4 -1
  587. package/dist/Select/utils.js.map +1 -1
  588. package/dist/Slider/SliderHorizontal.cjs.map +1 -1
  589. package/dist/Slider/SliderHorizontal.js.map +1 -1
  590. package/dist/Slider/SliderRange.cjs.map +1 -1
  591. package/dist/Slider/SliderRange.js.map +1 -1
  592. package/dist/Slider/SliderRoot.cjs +1 -1
  593. package/dist/Slider/SliderRoot.cjs.map +1 -1
  594. package/dist/Slider/SliderRoot.js +1 -1
  595. package/dist/Slider/SliderRoot.js.map +1 -1
  596. package/dist/Slider/SliderThumb.cjs +1 -1
  597. package/dist/Slider/SliderThumb.cjs.map +1 -1
  598. package/dist/Slider/SliderThumb.js +1 -1
  599. package/dist/Slider/SliderThumb.js.map +1 -1
  600. package/dist/Slider/SliderThumbImpl.cjs +1 -1
  601. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  602. package/dist/Slider/SliderThumbImpl.js +1 -1
  603. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  604. package/dist/Slider/SliderVertical.cjs.map +1 -1
  605. package/dist/Slider/SliderVertical.js.map +1 -1
  606. package/dist/Splitter/SplitterGroup.cjs +5 -5
  607. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  608. package/dist/Splitter/SplitterGroup.js +5 -5
  609. package/dist/Splitter/SplitterGroup.js.map +1 -1
  610. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  611. package/dist/Splitter/SplitterPanel.js.map +1 -1
  612. package/dist/Splitter/SplitterResizeHandle.cjs +1 -1
  613. package/dist/Splitter/SplitterResizeHandle.cjs.map +1 -1
  614. package/dist/Splitter/SplitterResizeHandle.js +1 -1
  615. package/dist/Splitter/SplitterResizeHandle.js.map +1 -1
  616. package/dist/Stepper/StepperDescription.cjs +1 -1
  617. package/dist/Stepper/StepperDescription.cjs.map +1 -1
  618. package/dist/Stepper/StepperDescription.js +1 -1
  619. package/dist/Stepper/StepperDescription.js.map +1 -1
  620. package/dist/Stepper/StepperIndicator.cjs.map +1 -1
  621. package/dist/Stepper/StepperIndicator.js.map +1 -1
  622. package/dist/Stepper/StepperItem.cjs.map +1 -1
  623. package/dist/Stepper/StepperItem.js.map +1 -1
  624. package/dist/Stepper/StepperRoot.cjs.map +1 -1
  625. package/dist/Stepper/StepperRoot.js.map +1 -1
  626. package/dist/Stepper/StepperSeparator.cjs.map +1 -1
  627. package/dist/Stepper/StepperSeparator.js.map +1 -1
  628. package/dist/Stepper/StepperTitle.cjs.map +1 -1
  629. package/dist/Stepper/StepperTitle.js.map +1 -1
  630. package/dist/Stepper/StepperTrigger.cjs +1 -1
  631. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  632. package/dist/Stepper/StepperTrigger.js +1 -1
  633. package/dist/Stepper/StepperTrigger.js.map +1 -1
  634. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  635. package/dist/Switch/SwitchRoot.js.map +1 -1
  636. package/dist/Switch/SwitchThumb.cjs.map +1 -1
  637. package/dist/Switch/SwitchThumb.js.map +1 -1
  638. package/dist/Tabs/TabsContent.cjs +1 -1
  639. package/dist/Tabs/TabsContent.cjs.map +1 -1
  640. package/dist/Tabs/TabsContent.js +1 -1
  641. package/dist/Tabs/TabsContent.js.map +1 -1
  642. package/dist/Tabs/TabsIndicator.cjs.map +1 -1
  643. package/dist/Tabs/TabsIndicator.js.map +1 -1
  644. package/dist/Tabs/TabsList.cjs +1 -1
  645. package/dist/Tabs/TabsList.cjs.map +1 -1
  646. package/dist/Tabs/TabsList.js +1 -1
  647. package/dist/Tabs/TabsList.js.map +1 -1
  648. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  649. package/dist/Tabs/TabsRoot.js.map +1 -1
  650. package/dist/Tabs/TabsTrigger.cjs.map +1 -1
  651. package/dist/Tabs/TabsTrigger.js.map +1 -1
  652. package/dist/TagsInput/TagsInputClear.cjs +1 -1
  653. package/dist/TagsInput/TagsInputClear.cjs.map +1 -1
  654. package/dist/TagsInput/TagsInputClear.js +1 -1
  655. package/dist/TagsInput/TagsInputClear.js.map +1 -1
  656. package/dist/TagsInput/TagsInputInput.cjs +1 -1
  657. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  658. package/dist/TagsInput/TagsInputInput.js +1 -1
  659. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  660. package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
  661. package/dist/TagsInput/TagsInputItem.js.map +1 -1
  662. package/dist/TagsInput/TagsInputItemDelete.cjs +1 -1
  663. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  664. package/dist/TagsInput/TagsInputItemDelete.js +1 -1
  665. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  666. package/dist/TagsInput/TagsInputItemText.cjs +1 -1
  667. package/dist/TagsInput/TagsInputItemText.cjs.map +1 -1
  668. package/dist/TagsInput/TagsInputItemText.js +1 -1
  669. package/dist/TagsInput/TagsInputItemText.js.map +1 -1
  670. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  671. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  672. package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
  673. package/dist/TimeField/TimeFieldInput.js.map +1 -1
  674. package/dist/TimeField/TimeFieldRoot.cjs +1 -1
  675. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  676. package/dist/TimeField/TimeFieldRoot.js +1 -1
  677. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  678. package/dist/Toast/ToastAnnounce.cjs +1 -1
  679. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  680. package/dist/Toast/ToastAnnounce.js +1 -1
  681. package/dist/Toast/ToastAnnounce.js.map +1 -1
  682. package/dist/Toast/ToastProvider.cjs.map +1 -1
  683. package/dist/Toast/ToastProvider.js.map +1 -1
  684. package/dist/Toast/ToastRoot.cjs +28 -20
  685. package/dist/Toast/ToastRoot.cjs.map +1 -1
  686. package/dist/Toast/ToastRoot.js +28 -20
  687. package/dist/Toast/ToastRoot.js.map +1 -1
  688. package/dist/Toast/ToastRootImpl.cjs +3 -3
  689. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  690. package/dist/Toast/ToastRootImpl.js +3 -3
  691. package/dist/Toast/ToastRootImpl.js.map +1 -1
  692. package/dist/Toast/ToastViewport.cjs +2 -2
  693. package/dist/Toast/ToastViewport.cjs.map +1 -1
  694. package/dist/Toast/ToastViewport.js +2 -2
  695. package/dist/Toast/ToastViewport.js.map +1 -1
  696. package/dist/Toggle/Toggle.cjs.map +1 -1
  697. package/dist/Toggle/Toggle.js.map +1 -1
  698. package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  699. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  700. package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
  701. package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
  702. package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
  703. package/dist/Toolbar/ToolbarRoot.js.map +1 -1
  704. package/dist/Toolbar/ToolbarSeparator.cjs +1 -1
  705. package/dist/Toolbar/ToolbarSeparator.js +1 -1
  706. package/dist/Toolbar/ToolbarToggleGroup.cjs +1 -1
  707. package/dist/Toolbar/ToolbarToggleGroup.cjs.map +1 -1
  708. package/dist/Toolbar/ToolbarToggleGroup.js +1 -1
  709. package/dist/Toolbar/ToolbarToggleGroup.js.map +1 -1
  710. package/dist/Toolbar/ToolbarToggleItem.cjs.map +1 -1
  711. package/dist/Toolbar/ToolbarToggleItem.js.map +1 -1
  712. package/dist/Tooltip/TooltipContent.cjs +1 -1
  713. package/dist/Tooltip/TooltipContent.cjs.map +1 -1
  714. package/dist/Tooltip/TooltipContent.js +1 -1
  715. package/dist/Tooltip/TooltipContent.js.map +1 -1
  716. package/dist/Tooltip/TooltipContentHoverable.cjs.map +1 -1
  717. package/dist/Tooltip/TooltipContentHoverable.js.map +1 -1
  718. package/dist/Tooltip/TooltipContentImpl.cjs +3 -3
  719. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  720. package/dist/Tooltip/TooltipContentImpl.js +3 -3
  721. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  722. package/dist/Tooltip/TooltipRoot.cjs +1 -1
  723. package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
  724. package/dist/Tooltip/TooltipRoot.js +1 -1
  725. package/dist/Tooltip/TooltipRoot.js.map +1 -1
  726. package/dist/Tooltip/TooltipTrigger.cjs +4 -1
  727. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  728. package/dist/Tooltip/TooltipTrigger.js +4 -1
  729. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  730. package/dist/Tree/TreeItem.cjs.map +1 -1
  731. package/dist/Tree/TreeItem.js.map +1 -1
  732. package/dist/Tree/TreeRoot.cjs +1 -1
  733. package/dist/Tree/TreeRoot.cjs.map +1 -1
  734. package/dist/Tree/TreeRoot.js +1 -1
  735. package/dist/Tree/TreeRoot.js.map +1 -1
  736. package/dist/Tree/TreeVirtualizer.cjs +3 -3
  737. package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
  738. package/dist/Tree/TreeVirtualizer.js +3 -3
  739. package/dist/Tree/TreeVirtualizer.js.map +1 -1
  740. package/dist/Tree/utils.cjs.map +1 -1
  741. package/dist/Tree/utils.js.map +1 -1
  742. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs.map +1 -1
  743. package/dist/VisuallyHidden/VisuallyHiddenInput.js.map +1 -1
  744. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
  745. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
  746. package/dist/component/BaseSeparator.cjs.map +1 -1
  747. package/dist/component/BaseSeparator.js.map +1 -1
  748. package/dist/composables/useWindowSplitterBehavior.cjs.map +1 -1
  749. package/dist/composables/useWindowSplitterBehavior.js.map +1 -1
  750. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs +3 -3
  751. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs.map +1 -1
  752. package/dist/composables/useWindowSplitterPanelGroupBehavior.js +3 -3
  753. package/dist/composables/useWindowSplitterPanelGroupBehavior.js.map +1 -1
  754. package/dist/date/calendar.cjs +1 -1
  755. package/dist/date/calendar.cjs.map +1 -1
  756. package/dist/date/calendar.js +1 -1
  757. package/dist/date/calendar.js.map +1 -1
  758. package/dist/date/comparators.cjs +6 -4
  759. package/dist/date/comparators.cjs.map +1 -1
  760. package/dist/date/comparators.js +6 -4
  761. package/dist/date/comparators.js.map +1 -1
  762. package/dist/date/parser.cjs.map +1 -1
  763. package/dist/date/parser.js.map +1 -1
  764. package/dist/date/useDateField.cjs.map +1 -1
  765. package/dist/date/useDateField.js.map +1 -1
  766. package/dist/date/utils.cjs +7 -7
  767. package/dist/date/utils.cjs.map +1 -1
  768. package/dist/date/utils.js +7 -7
  769. package/dist/date/utils.js.map +1 -1
  770. package/dist/date.d.ts +2 -2
  771. package/dist/index.cjs +347 -347
  772. package/dist/index.cjs.map +1 -1
  773. package/dist/index.d.ts +1188 -1323
  774. package/dist/index.js +161 -161
  775. package/dist/index.js.map +1 -1
  776. package/dist/shared/createContext.cjs.map +1 -1
  777. package/dist/shared/createContext.js.map +1 -1
  778. package/dist/shared/renderSlotFragments.cjs.map +1 -1
  779. package/dist/shared/renderSlotFragments.js.map +1 -1
  780. package/dist/shared/useArrowNavigation.cjs.map +1 -1
  781. package/dist/shared/useArrowNavigation.js.map +1 -1
  782. package/dist/shared/useBodyScrollLock.cjs +1 -1
  783. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  784. package/dist/shared/useBodyScrollLock.js +1 -1
  785. package/dist/shared/useBodyScrollLock.js.map +1 -1
  786. package/dist/shared/useDateFormatter.cjs +1 -1
  787. package/dist/shared/useDateFormatter.cjs.map +1 -1
  788. package/dist/shared/useDateFormatter.js +1 -1
  789. package/dist/shared/useDateFormatter.js.map +1 -1
  790. package/dist/shared/useDirection.cjs.map +1 -1
  791. package/dist/shared/useDirection.js.map +1 -1
  792. package/dist/shared/useFilter.cjs.map +1 -1
  793. package/dist/shared/useFilter.js.map +1 -1
  794. package/dist/shared/useFormControl.cjs.map +1 -1
  795. package/dist/shared/useFormControl.js.map +1 -1
  796. package/dist/shared/useForwardExpose.cjs.map +1 -1
  797. package/dist/shared/useForwardExpose.js.map +1 -1
  798. package/dist/shared/useForwardProps.cjs.map +1 -1
  799. package/dist/shared/useForwardProps.js.map +1 -1
  800. package/dist/shared/useForwardPropsEmits.cjs.map +1 -1
  801. package/dist/shared/useForwardPropsEmits.js.map +1 -1
  802. package/dist/shared/useGraceArea.cjs +1 -1
  803. package/dist/shared/useGraceArea.cjs.map +1 -1
  804. package/dist/shared/useGraceArea.js +1 -1
  805. package/dist/shared/useGraceArea.js.map +1 -1
  806. package/dist/shared/useHideOthers.cjs.map +1 -1
  807. package/dist/shared/useHideOthers.js.map +1 -1
  808. package/dist/shared/useLocale.cjs.map +1 -1
  809. package/dist/shared/useLocale.js.map +1 -1
  810. package/dist/shared/useNonce.cjs.map +1 -1
  811. package/dist/shared/useNonce.js.map +1 -1
  812. package/dist/shared/useSelectionBehavior.cjs +2 -2
  813. package/dist/shared/useSelectionBehavior.cjs.map +1 -1
  814. package/dist/shared/useSelectionBehavior.js +2 -2
  815. package/dist/shared/useSelectionBehavior.js.map +1 -1
  816. package/dist/shared/useSingleOrMultipleValue.cjs +1 -1
  817. package/dist/shared/useSingleOrMultipleValue.cjs.map +1 -1
  818. package/dist/shared/useSingleOrMultipleValue.js +1 -1
  819. package/dist/shared/useSingleOrMultipleValue.js.map +1 -1
  820. package/dist/shared/useSize.cjs.map +1 -1
  821. package/dist/shared/useSize.js.map +1 -1
  822. package/dist/shared/useStateMachine.cjs.map +1 -1
  823. package/dist/shared/useStateMachine.js.map +1 -1
  824. package/dist/shared/withDefault.cjs.map +1 -1
  825. package/dist/shared/withDefault.js.map +1 -1
  826. package/dist/utils/calculate.cjs +1 -1
  827. package/dist/utils/calculate.cjs.map +1 -1
  828. package/dist/utils/calculate.js +1 -1
  829. package/dist/utils/calculate.js.map +1 -1
  830. package/dist/utils/dom.cjs.map +1 -1
  831. package/dist/utils/dom.js.map +1 -1
  832. package/dist/utils/registry.cjs +1 -1
  833. package/dist/utils/registry.cjs.map +1 -1
  834. package/dist/utils/registry.js +1 -1
  835. package/dist/utils/registry.js.map +1 -1
  836. package/dist/utils/resizePanel.cjs +1 -1
  837. package/dist/utils/resizePanel.cjs.map +1 -1
  838. package/dist/utils/resizePanel.js +1 -1
  839. package/dist/utils/resizePanel.js.map +1 -1
  840. package/dist/utils/style.cjs.map +1 -1
  841. package/dist/utils/style.js.map +1 -1
  842. package/package.json +7 -8
@@ -1 +1 @@
1
- {"version":3,"file":"ListboxVirtualizer.js","sources":["../../src/Listbox/ListboxVirtualizer.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface ListboxVirtualizerProps<T extends AcceptableValue = AcceptableValue> {\n /** List of items */\n options: T[]\n /** Number of items rendered outside the visible area */\n overscan?: number\n /** Estimated size (in px) of each item */\n estimateSize?: number\n /** Text content for each item to achieve type-ahead feature */\n textContent?: (option: T) => string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { type VirtualItem, type Virtualizer, useVirtualizer } from '@tanstack/vue-virtual'\nimport { Fragment, type Ref, type VNode, cloneVNode, computed, useSlots } from 'vue'\nimport { injectListboxRootContext } from './ListboxRoot.vue'\nimport { compare, queryCheckedElement } from './utils'\nimport { MAP_KEY_TO_FOCUS_INTENT } from '@/RovingFocus/utils'\nimport { refAutoReset } from '@vueuse/shared'\nimport { findValuesBetween, getActiveElement } from '@/shared'\nimport { getNextMatch } from '@/shared/useTypeahead'\nimport { useParentElement } from '@vueuse/core'\nimport { useCollection } from '@/Collection'\nimport type { AcceptableValue } from '@/shared/types'\n\nconst props = defineProps<ListboxVirtualizerProps<T>>()\n\ndefineSlots<{\n default: (props: {\n option: T\n virtualizer: Virtualizer<HTMLElement, Element>\n virtualItem: VirtualItem\n }) => any\n}>()\n\nconst slots = useSlots()\nconst rootContext = injectListboxRootContext()\nconst parentEl = useParentElement() as Ref<HTMLElement>\nconst { getItems } = useCollection<{ value: T }>()\n\n// set virtual true when this component mounted\nrootContext.isVirtual.value = true\n\nconst padding = computed(() => {\n const el = parentEl.value\n if (!el) {\n return { start: 0, end: 0 }\n }\n else {\n const styles = window.getComputedStyle(el)\n return {\n start: Number.parseFloat(styles.paddingBlockStart || styles.paddingTop),\n end: Number.parseFloat(styles.paddingBlockEnd || styles.paddingBottom),\n }\n }\n})\n\nconst virtualizer = useVirtualizer(\n {\n get scrollPaddingStart() { return padding.value.start },\n get scrollPaddingEnd() { return padding.value.end },\n get count() { return props.options.length },\n get horizontal() { return rootContext.orientation.value === 'horizontal' },\n estimateSize() {\n return props.estimateSize ?? 28\n },\n getScrollElement() { return parentEl.value },\n overscan: props.overscan ?? 12,\n },\n)\n\nconst virtualizedItems = computed(() => virtualizer.value.getVirtualItems().map((item) => {\n const defaultNode = slots.default!({\n option: props.options[item.index],\n virtualizer: virtualizer.value,\n virtualItem: item,\n })[0]\n\n const targetNode = defaultNode.type === Fragment && Array.isArray(defaultNode.children)\n ? defaultNode.children[0] as VNode\n : defaultNode\n\n return {\n item,\n is: cloneVNode(targetNode, {\n 'key': `${item.key}`,\n 'data-index': item.index,\n 'aria-setsize': props.options.length,\n 'aria-posinset': item.index + 1,\n 'style': {\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${item.start}px)`,\n overflowAnchor: 'none',\n },\n }),\n }\n}))\n\nrootContext.virtualFocusHook.on((event) => {\n const index = props.options.findIndex((option) => {\n if (Array.isArray(rootContext.modelValue.value))\n return compare(option, rootContext.modelValue.value[0], rootContext.by)\n else\n return compare(option, rootContext.modelValue.value!, rootContext.by)\n })\n if (index !== -1) {\n event?.preventDefault()\n\n virtualizer.value.scrollToIndex(index, { align: 'start' })\n requestAnimationFrame(() => {\n const item = queryCheckedElement(parentEl.value)\n if (item) {\n rootContext.changeHighlight(item)\n if (event)\n item?.focus()\n }\n })\n }\n else {\n rootContext.highlightFirstItem(event as InputEvent)\n }\n})\n\nrootContext.virtualHighlightHook.on((value) => {\n const index = props.options.findIndex((option) => {\n return compare(option, value, rootContext.by)\n })\n virtualizer.value.scrollToIndex(index, { align: 'start' })\n requestAnimationFrame(() => {\n const item = queryCheckedElement(parentEl.value)\n if (item)\n rootContext.changeHighlight(item)\n })\n})\n\n// Reset `search` 1 second after it was last updated\nconst search = refAutoReset('', 1000)\nconst optionsWithMetadata = computed(() => {\n const parseTextContent = (option: T) => {\n if (props.textContent)\n return props.textContent(option)\n else\n return option?.toString().toLowerCase()\n }\n\n return props.options.map((option, index) => ({\n index,\n textContent: parseTextContent(option),\n }))\n})\n\nfunction handleMultipleReplace(event: Event, intent: 'first' | 'last' | 'prev' | 'next') {\n if (!rootContext.firstValue?.value || !rootContext.multiple.value || !Array.isArray(rootContext.modelValue.value))\n return\n\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n const lastValue = collection.find(i => i.ref === rootContext.highlightedElement.value)?.value\n if (!lastValue)\n return\n\n let value: T[] | null = null\n switch (intent) {\n case 'prev':\n case 'next': {\n value = findValuesBetween(props.options, rootContext.firstValue.value as T, lastValue)\n break\n }\n case 'first': {\n value = findValuesBetween(props.options, rootContext.firstValue.value as T, props.options?.[0])\n break\n }\n case 'last': {\n value = findValuesBetween(props.options, rootContext.firstValue.value as T, props.options?.[props.options.length - 1])\n break\n }\n }\n rootContext.modelValue.value = value\n}\n\nrootContext.virtualKeydownHook.on((event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey\n const isTabKey = event.key === 'Tab' && !isMetaKey\n if (isTabKey)\n return\n\n let intent = MAP_KEY_TO_FOCUS_INTENT[event.key]\n\n // Meta + A, select all feature\n if (isMetaKey && event.key === 'a' && rootContext.multiple.value) {\n event.preventDefault()\n rootContext.modelValue.value = [...props.options]\n // purposely make the focus to last\n intent = 'last'\n }\n else if (event.shiftKey && intent) {\n handleMultipleReplace(event, intent)\n }\n\n if (['first', 'last'].includes(intent)) {\n event.preventDefault()\n\n const index = intent === 'first' ? 0 : props.options.length - 1\n virtualizer.value.scrollToIndex(index)\n requestAnimationFrame(() => {\n const items = getItems()\n const item = intent === 'first' ? items[0] : items[items.length - 1]\n if (item)\n rootContext.changeHighlight(item.ref)\n })\n }\n else if (!intent && !isMetaKey) {\n search.value += event.key\n const currentIndex = Number(getActiveElement()?.getAttribute('data-index'))\n const currentMatch = optionsWithMetadata.value[currentIndex].textContent\n const filteredOptions = optionsWithMetadata.value.map(i => i.textContent ?? '')\n const next = getNextMatch(filteredOptions, search.value, currentMatch)\n\n const nextMatch = optionsWithMetadata.value.find(option => option.textContent === next)\n if (nextMatch) {\n virtualizer.value.scrollToIndex(nextMatch.index, { align: 'start' })\n requestAnimationFrame(() => {\n const item = parentEl.value.querySelector(`[data-index=\"${nextMatch.index}\"]`)\n if (item instanceof HTMLElement)\n rootContext.changeHighlight(item)\n })\n }\n }\n})\n</script>\n\n<template>\n <div\n data-reka-virtualizer\n :style=\"{\n position: 'relative',\n width: '100%',\n height: `${virtualizer.getTotalSize()}px`,\n }\"\n >\n <component\n :is=\"is\"\n v-for=\"{ is, item } in virtualizedItems\"\n :key=\"item.index\"\n />\n </div>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListboxVirtualizer.js","sources":["../../src/Listbox/ListboxVirtualizer.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface ListboxVirtualizerProps<T extends AcceptableValue = AcceptableValue> {\n /** List of items */\n options: T[]\n /** Number of items rendered outside the visible area */\n overscan?: number\n /** Estimated size (in px) of each item */\n estimateSize?: number\n /** Text content for each item to achieve type-ahead feature */\n textContent?: (option: T) => string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport type { AcceptableValue } from '@/shared/types'\nimport type { VirtualItem, Virtualizer } from '@tanstack/vue-virtual'\nimport type { Ref, VNode } from 'vue'\nimport { useCollection } from '@/Collection'\nimport { MAP_KEY_TO_FOCUS_INTENT } from '@/RovingFocus/utils'\nimport { findValuesBetween, getActiveElement } from '@/shared'\nimport { getNextMatch } from '@/shared/useTypeahead'\nimport { useVirtualizer } from '@tanstack/vue-virtual'\nimport { useParentElement } from '@vueuse/core'\nimport { refAutoReset } from '@vueuse/shared'\nimport { cloneVNode, computed, Fragment, useSlots } from 'vue'\nimport { injectListboxRootContext } from './ListboxRoot.vue'\nimport { compare, queryCheckedElement } from './utils'\n\nconst props = defineProps<ListboxVirtualizerProps<T>>()\n\ndefineSlots<{\n default: (props: {\n option: T\n virtualizer: Virtualizer<HTMLElement, Element>\n virtualItem: VirtualItem\n }) => any\n}>()\n\nconst slots = useSlots()\nconst rootContext = injectListboxRootContext()\nconst parentEl = useParentElement() as Ref<HTMLElement>\nconst { getItems } = useCollection<{ value: T }>()\n\n// set virtual true when this component mounted\nrootContext.isVirtual.value = true\n\nconst padding = computed(() => {\n const el = parentEl.value\n if (!el) {\n return { start: 0, end: 0 }\n }\n else {\n const styles = window.getComputedStyle(el)\n return {\n start: Number.parseFloat(styles.paddingBlockStart || styles.paddingTop),\n end: Number.parseFloat(styles.paddingBlockEnd || styles.paddingBottom),\n }\n }\n})\n\nconst virtualizer = useVirtualizer(\n {\n get scrollPaddingStart() { return padding.value.start },\n get scrollPaddingEnd() { return padding.value.end },\n get count() { return props.options.length },\n get horizontal() { return rootContext.orientation.value === 'horizontal' },\n estimateSize() {\n return props.estimateSize ?? 28\n },\n getScrollElement() { return parentEl.value },\n overscan: props.overscan ?? 12,\n },\n)\n\nconst virtualizedItems = computed(() => virtualizer.value.getVirtualItems().map((item) => {\n const defaultNode = slots.default!({\n option: props.options[item.index],\n virtualizer: virtualizer.value,\n virtualItem: item,\n })[0]\n\n const targetNode = defaultNode.type === Fragment && Array.isArray(defaultNode.children)\n ? defaultNode.children[0] as VNode\n : defaultNode\n\n return {\n item,\n is: cloneVNode(targetNode, {\n 'key': `${item.key}`,\n 'data-index': item.index,\n 'aria-setsize': props.options.length,\n 'aria-posinset': item.index + 1,\n 'style': {\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${item.start}px)`,\n overflowAnchor: 'none',\n },\n }),\n }\n}))\n\nrootContext.virtualFocusHook.on((event) => {\n const index = props.options.findIndex((option) => {\n if (Array.isArray(rootContext.modelValue.value))\n return compare(option, rootContext.modelValue.value[0], rootContext.by)\n else\n return compare(option, rootContext.modelValue.value!, rootContext.by)\n })\n if (index !== -1) {\n event?.preventDefault()\n\n virtualizer.value.scrollToIndex(index, { align: 'start' })\n requestAnimationFrame(() => {\n const item = queryCheckedElement(parentEl.value)\n if (item) {\n rootContext.changeHighlight(item)\n if (event)\n item?.focus()\n }\n })\n }\n else {\n rootContext.highlightFirstItem(event as InputEvent)\n }\n})\n\nrootContext.virtualHighlightHook.on((value) => {\n const index = props.options.findIndex((option) => {\n return compare(option, value, rootContext.by)\n })\n virtualizer.value.scrollToIndex(index, { align: 'start' })\n requestAnimationFrame(() => {\n const item = queryCheckedElement(parentEl.value)\n if (item)\n rootContext.changeHighlight(item)\n })\n})\n\n// Reset `search` 1 second after it was last updated\nconst search = refAutoReset('', 1000)\nconst optionsWithMetadata = computed(() => {\n const parseTextContent = (option: T) => {\n if (props.textContent)\n return props.textContent(option)\n else\n return option?.toString().toLowerCase()\n }\n\n return props.options.map((option, index) => ({\n index,\n textContent: parseTextContent(option),\n }))\n})\n\nfunction handleMultipleReplace(event: Event, intent: 'first' | 'last' | 'prev' | 'next') {\n if (!rootContext.firstValue?.value || !rootContext.multiple.value || !Array.isArray(rootContext.modelValue.value))\n return\n\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n const lastValue = collection.find(i => i.ref === rootContext.highlightedElement.value)?.value\n if (!lastValue)\n return\n\n let value: T[] | null = null\n switch (intent) {\n case 'prev':\n case 'next': {\n value = findValuesBetween(props.options, rootContext.firstValue.value as T, lastValue)\n break\n }\n case 'first': {\n value = findValuesBetween(props.options, rootContext.firstValue.value as T, props.options?.[0])\n break\n }\n case 'last': {\n value = findValuesBetween(props.options, rootContext.firstValue.value as T, props.options?.[props.options.length - 1])\n break\n }\n }\n rootContext.modelValue.value = value\n}\n\nrootContext.virtualKeydownHook.on((event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey\n const isTabKey = event.key === 'Tab' && !isMetaKey\n if (isTabKey)\n return\n\n let intent = MAP_KEY_TO_FOCUS_INTENT[event.key]\n\n // Meta + A, select all feature\n if (isMetaKey && event.key === 'a' && rootContext.multiple.value) {\n event.preventDefault()\n rootContext.modelValue.value = [...props.options]\n // purposely make the focus to last\n intent = 'last'\n }\n else if (event.shiftKey && intent) {\n handleMultipleReplace(event, intent)\n }\n\n if (['first', 'last'].includes(intent)) {\n event.preventDefault()\n\n const index = intent === 'first' ? 0 : props.options.length - 1\n virtualizer.value.scrollToIndex(index)\n requestAnimationFrame(() => {\n const items = getItems()\n const item = intent === 'first' ? items[0] : items[items.length - 1]\n if (item)\n rootContext.changeHighlight(item.ref)\n })\n }\n else if (!intent && !isMetaKey) {\n search.value += event.key\n const currentIndex = Number(getActiveElement()?.getAttribute('data-index'))\n const currentMatch = optionsWithMetadata.value[currentIndex].textContent\n const filteredOptions = optionsWithMetadata.value.map(i => i.textContent ?? '')\n const next = getNextMatch(filteredOptions, search.value, currentMatch)\n\n const nextMatch = optionsWithMetadata.value.find(option => option.textContent === next)\n if (nextMatch) {\n virtualizer.value.scrollToIndex(nextMatch.index, { align: 'start' })\n requestAnimationFrame(() => {\n const item = parentEl.value.querySelector(`[data-index=\"${nextMatch.index}\"]`)\n if (item instanceof HTMLElement)\n rootContext.changeHighlight(item)\n })\n }\n }\n})\n</script>\n\n<template>\n <div\n data-reka-virtualizer\n :style=\"{\n position: 'relative',\n width: '100%',\n height: `${virtualizer.getTotalSize()}px`,\n }\"\n >\n <component\n :is=\"is\"\n v-for=\"{ is, item } in virtualizedItems\"\n :key=\"item.index\"\n />\n </div>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuAnchor.cjs","sources":["../../src/Menu/MenuAnchor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PopperAnchor, type PopperAnchorProps } from '@/Popper'\n\ninterface MenuAnchorProps extends PopperAnchorProps {}\n\nconst props = defineProps<MenuAnchorProps>()\n</script>\n\n<template>\n <PopperAnchor v-bind=\"props\">\n <slot />\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAKA,IAAA,MAAM,KAAQ,GAAA,OAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuAnchor.cjs","sources":["../../src/Menu/MenuAnchor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { PopperAnchor } from '@/Popper'\n\ninterface MenuAnchorProps extends PopperAnchorProps {}\n\nconst props = defineProps<MenuAnchorProps>()\n</script>\n\n<template>\n <PopperAnchor v-bind=\"props\">\n <slot />\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMA,IAAA,MAAM,KAAQ,GAAA,OAAA;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuAnchor.js","sources":["../../src/Menu/MenuAnchor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PopperAnchor, type PopperAnchorProps } from '@/Popper'\n\ninterface MenuAnchorProps extends PopperAnchorProps {}\n\nconst props = defineProps<MenuAnchorProps>()\n</script>\n\n<template>\n <PopperAnchor v-bind=\"props\">\n <slot />\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;AAKA,IAAA,MAAM,KAAQ,GAAA,OAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuAnchor.js","sources":["../../src/Menu/MenuAnchor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { PopperAnchor } from '@/Popper'\n\ninterface MenuAnchorProps extends PopperAnchorProps {}\n\nconst props = defineProps<MenuAnchorProps>()\n</script>\n\n<template>\n <PopperAnchor v-bind=\"props\">\n <slot />\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;AAMA,IAAA,MAAM,KAAQ,GAAA,OAAA;;;;;;;;;;;;;;"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  const vue = require('vue');
4
4
  const core = require('@vueuse/core');
5
- const Menu_utils = require('./utils.cjs');
6
5
  const Menu_MenuItem = require('./MenuItem.cjs');
6
+ const Menu_utils = require('./utils.cjs');
7
7
  const Menu_MenuItemIndicator = require('./MenuItemIndicator.cjs');
8
8
 
9
9
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"MenuCheckboxItem.cjs","sources":["../../src/Menu/MenuCheckboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { CheckedState } from './utils'\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\n\nexport type MenuCheckboxItemEmits = MenuItemEmits & {\n /** Event handler called when the checked state changes. */\n 'update:modelValue': [payload: boolean]\n}\n\nexport interface MenuCheckboxItemProps extends MenuItemProps {\n /** The controlled checked state of the item. Can be used as `v-model`. */\n modelValue?: CheckedState\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { getCheckedState, isIndeterminate } from './utils'\nimport MenuItem from './MenuItem.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\n\nconst props = withDefaults(defineProps<MenuCheckboxItemProps>(), {\n modelValue: false,\n})\nconst emits = defineEmits<MenuCheckboxItemEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current modelValue state */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemcheckbox\"\n v-bind=\"props\"\n :aria-checked=\"isIndeterminate(modelValue) ? 'mixed' : modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n if (isIndeterminate(modelValue)) {\n modelValue = true;\n }\n else {\n modelValue = !modelValue;\n }\n }\n \"\n >\n <slot :model-value=\"modelValue\" />\n </MenuItem>\n</template>\n"],"names":["useVModel","provideMenuItemIndicatorContext"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAAA,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAK,CAAA;AAEvD,IAAgCC,sDAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuCheckboxItem.cjs","sources":["../../src/Menu/MenuCheckboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\nimport type { CheckedState } from './utils'\n\nexport type MenuCheckboxItemEmits = MenuItemEmits & {\n /** Event handler called when the checked state changes. */\n 'update:modelValue': [payload: boolean]\n}\n\nexport interface MenuCheckboxItemProps extends MenuItemProps {\n /** The controlled checked state of the item. Can be used as `v-model`. */\n modelValue?: CheckedState\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport MenuItem from './MenuItem.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\nimport { getCheckedState, isIndeterminate } from './utils'\n\nconst props = withDefaults(defineProps<MenuCheckboxItemProps>(), {\n modelValue: false,\n})\nconst emits = defineEmits<MenuCheckboxItemEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current modelValue state */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemcheckbox\"\n v-bind=\"props\"\n :aria-checked=\"isIndeterminate(modelValue) ? 'mixed' : modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n if (isIndeterminate(modelValue)) {\n modelValue = true;\n }\n else {\n modelValue = !modelValue;\n }\n }\n \"\n >\n <slot :model-value=\"modelValue\" />\n </MenuItem>\n</template>\n"],"names":["useVModel","provideMenuItemIndicatorContext"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAAA,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAK,CAAA;AAEvD,IAAgCC,sDAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, createBlock, openBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';
2
2
  import { useVModel } from '@vueuse/core';
3
- import { i as isIndeterminate, a as getCheckedState } from './utils.js';
4
3
  import { _ as _sfc_main$1 } from './MenuItem.js';
4
+ import { i as isIndeterminate, a as getCheckedState } from './utils.js';
5
5
  import { p as provideMenuItemIndicatorContext } from './MenuItemIndicator.js';
6
6
 
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"MenuCheckboxItem.js","sources":["../../src/Menu/MenuCheckboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { CheckedState } from './utils'\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\n\nexport type MenuCheckboxItemEmits = MenuItemEmits & {\n /** Event handler called when the checked state changes. */\n 'update:modelValue': [payload: boolean]\n}\n\nexport interface MenuCheckboxItemProps extends MenuItemProps {\n /** The controlled checked state of the item. Can be used as `v-model`. */\n modelValue?: CheckedState\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { getCheckedState, isIndeterminate } from './utils'\nimport MenuItem from './MenuItem.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\n\nconst props = withDefaults(defineProps<MenuCheckboxItemProps>(), {\n modelValue: false,\n})\nconst emits = defineEmits<MenuCheckboxItemEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current modelValue state */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemcheckbox\"\n v-bind=\"props\"\n :aria-checked=\"isIndeterminate(modelValue) ? 'mixed' : modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n if (isIndeterminate(modelValue)) {\n modelValue = true;\n }\n else {\n modelValue = !modelValue;\n }\n }\n \"\n >\n <slot :model-value=\"modelValue\" />\n </MenuItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAK,CAAA;AAEvD,IAAgC,+BAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuCheckboxItem.js","sources":["../../src/Menu/MenuCheckboxItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\nimport type { CheckedState } from './utils'\n\nexport type MenuCheckboxItemEmits = MenuItemEmits & {\n /** Event handler called when the checked state changes. */\n 'update:modelValue': [payload: boolean]\n}\n\nexport interface MenuCheckboxItemProps extends MenuItemProps {\n /** The controlled checked state of the item. Can be used as `v-model`. */\n modelValue?: CheckedState\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport MenuItem from './MenuItem.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\nimport { getCheckedState, isIndeterminate } from './utils'\n\nconst props = withDefaults(defineProps<MenuCheckboxItemProps>(), {\n modelValue: false,\n})\nconst emits = defineEmits<MenuCheckboxItemEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current modelValue state */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst modelValue = useVModel(props, 'modelValue', emits)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemcheckbox\"\n v-bind=\"props\"\n :aria-checked=\"isIndeterminate(modelValue) ? 'mixed' : modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n if (isIndeterminate(modelValue)) {\n modelValue = true;\n }\n else {\n modelValue = !modelValue;\n }\n }\n \"\n >\n <slot :model-value=\"modelValue\" />\n </MenuItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AASd,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAK,CAAA;AAEvD,IAAgC,+BAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuContent.cjs","sources":["../../src/Menu/MenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentImplEmits,\n MenuRootContentTypeProps,\n} from './MenuContentImpl.vue'\n\nexport type MenuContentEmits = Omit<MenuContentImplEmits, 'entryFocus' | 'openAutoFocus'>\n\nexport interface MenuContentProps extends MenuRootContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport MenuRootContentModal from './MenuRootContentModal.vue'\nimport MenuRootContentNonModal from './MenuRootContentNonModal.vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport { Presence } from '@/Presence'\nimport { useForwardPropsEmits } from '@/shared'\n\nconst props = defineProps<MenuContentProps>()\nconst emits = defineEmits<MenuContentImplEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n</script>\n\n<template>\n <Presence :present=\"forceMount || menuContext.open.value\">\n <MenuRootContentModal\n v-if=\"rootContext.modal.value\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentModal>\n <MenuRootContentNonModal\n v-else\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentNonModal>\n </Presence>\n</template>\n"],"names":["useForwardPropsEmits","injectMenuContext","injectMenuRootContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAA,MAAM,cAAcC,+BAAkB,EAAA;AACtC,IAAA,MAAM,cAAcC,mCAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuContent.cjs","sources":["../../src/Menu/MenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentImplEmits,\n MenuRootContentTypeProps,\n} from './MenuContentImpl.vue'\n\nexport type MenuContentEmits = Omit<MenuContentImplEmits, 'entryFocus' | 'openAutoFocus'>\n\nexport interface MenuContentProps extends MenuRootContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport { useForwardPropsEmits } from '@/shared'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport MenuRootContentModal from './MenuRootContentModal.vue'\nimport MenuRootContentNonModal from './MenuRootContentNonModal.vue'\n\nconst props = defineProps<MenuContentProps>()\nconst emits = defineEmits<MenuContentImplEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n</script>\n\n<template>\n <Presence :present=\"forceMount || menuContext.open.value\">\n <MenuRootContentModal\n v-if=\"rootContext.modal.value\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentModal>\n <MenuRootContentNonModal\n v-else\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentNonModal>\n </Presence>\n</template>\n"],"names":["useForwardPropsEmits","injectMenuContext","injectMenuRootContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAA,MAAM,cAAcC,+BAAkB,EAAA;AACtC,IAAA,MAAM,cAAcC,mCAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuContent.js","sources":["../../src/Menu/MenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentImplEmits,\n MenuRootContentTypeProps,\n} from './MenuContentImpl.vue'\n\nexport type MenuContentEmits = Omit<MenuContentImplEmits, 'entryFocus' | 'openAutoFocus'>\n\nexport interface MenuContentProps extends MenuRootContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport MenuRootContentModal from './MenuRootContentModal.vue'\nimport MenuRootContentNonModal from './MenuRootContentNonModal.vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport { Presence } from '@/Presence'\nimport { useForwardPropsEmits } from '@/shared'\n\nconst props = defineProps<MenuContentProps>()\nconst emits = defineEmits<MenuContentImplEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n</script>\n\n<template>\n <Presence :present=\"forceMount || menuContext.open.value\">\n <MenuRootContentModal\n v-if=\"rootContext.modal.value\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentModal>\n <MenuRootContentNonModal\n v-else\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentNonModal>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAA,MAAM,cAAc,iBAAkB,EAAA;AACtC,IAAA,MAAM,cAAc,qBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuContent.js","sources":["../../src/Menu/MenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentImplEmits,\n MenuRootContentTypeProps,\n} from './MenuContentImpl.vue'\n\nexport type MenuContentEmits = Omit<MenuContentImplEmits, 'entryFocus' | 'openAutoFocus'>\n\nexport interface MenuContentProps extends MenuRootContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport { useForwardPropsEmits } from '@/shared'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport MenuRootContentModal from './MenuRootContentModal.vue'\nimport MenuRootContentNonModal from './MenuRootContentNonModal.vue'\n\nconst props = defineProps<MenuContentProps>()\nconst emits = defineEmits<MenuContentImplEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n</script>\n\n<template>\n <Presence :present=\"forceMount || menuContext.open.value\">\n <MenuRootContentModal\n v-if=\"rootContext.modal.value\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentModal>\n <MenuRootContentNonModal\n v-else\n v-bind=\"{ ...$attrs, ...forwarded }\"\n >\n <slot />\n </MenuRootContentNonModal>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAA,MAAM,cAAc,iBAAkB,EAAA;AACtC,IAAA,MAAM,cAAc,qBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const Menu_utils = require('./utils.cjs');
5
4
  const DismissableLayer_DismissableLayer = require('../DismissableLayer/DismissableLayer.cjs');
6
5
  const Popper_PopperContent = require('../Popper/PopperContent.cjs');
6
+ const Menu_utils = require('./utils.cjs');
7
7
  const shared_useBodyScrollLock = require('../shared/useBodyScrollLock.cjs');
8
+ const shared_createContext = require('../shared/createContext.cjs');
8
9
  const Menu_MenuRoot = require('./MenuRoot.cjs');
9
10
  const shared_useFocusGuards = require('../shared/useFocusGuards.cjs');
10
11
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
11
12
  const shared_useTypeahead = require('../shared/useTypeahead.cjs');
12
- const shared_createContext = require('../shared/createContext.cjs');
13
13
  const FocusScope_FocusScope = require('../FocusScope/FocusScope.cjs');
14
14
  const RovingFocus_RovingFocusGroup = require('../RovingFocus/RovingFocusGroup.cjs');
15
15
  const shared_useArrowNavigation = require('../shared/useArrowNavigation.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"MenuContentImpl.cjs","sources":["../../src/Menu/MenuContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type {\n GraceIntent,\n Side,\n} from './utils'\nimport type { FocusScopeProps } from '@/FocusScope'\nimport type { RovingFocusGroupEmits } from '@/RovingFocus'\nimport type {\n DismissableLayerEmits,\n DismissableLayerProps,\n} from '@/DismissableLayer'\nimport type { PopperContentProps } from '@/Popper'\n\nimport {\n createContext,\n getActiveElement,\n useArrowNavigation,\n useFocusGuards,\n useForwardExpose,\n useTypeahead,\n} from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\n\nexport interface MenuContentContext {\n onItemEnter: (event: PointerEvent) => boolean\n onItemLeave: (event: PointerEvent) => void\n onTriggerLeave: (event: PointerEvent) => boolean\n searchRef: Ref<string>\n pointerGraceTimerRef: Ref<number>\n onPointerGraceIntentChange: (intent: GraceIntent | null) => void\n}\n\nexport const [injectMenuContentContext, provideMenuContentContext]\n = createContext<MenuContentContext>('MenuContent')\n\nexport interface MenuContentImplPrivateProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents']\n /**\n * Whether scrolling outside the `MenuContent` should be prevented\n * @defaultValue false\n */\n disableOutsideScroll?: boolean\n\n /**\n * Whether focus should be trapped within the `MenuContent`\n * @defaultValue also\n */\n trapFocus?: FocusScopeProps['trapped']\n}\n\nexport type MenuContentImplEmits = DismissableLayerEmits & Omit<RovingFocusGroupEmits, 'update:currentTabStopId'> & {\n openAutoFocus: [event: Event]\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n closeAutoFocus: [event: Event]\n}\n\ntype MenuContentImplPrivateEmits = MenuContentImplEmits & {\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n dismiss: []\n}\n\nexport interface MenuContentImplProps\n extends MenuContentImplPrivateProps,\n Omit<PopperContentProps, 'dir'> {\n /**\n * When `true`, keyboard navigation will loop from last item to first, and vice versa.\n * @defaultValue false\n */\n loop?: boolean\n}\n\nexport interface MenuRootContentTypeProps\n extends Omit<MenuContentImplProps, 'disableOutsidePointerEvents' | 'disableOutsideScroll' | 'trapFocus'> {}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n onUnmounted,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport {\n FIRST_LAST_KEYS,\n LAST_KEYS,\n focusFirst,\n getOpenState,\n isMouseEvent,\n isPointerInGraceArea,\n} from './utils'\nimport { FocusScope } from '@/FocusScope'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport {\n PopperContent,\n PopperContentPropsDefaultValue,\n} from '@/Popper'\nimport { RovingFocusGroup } from '@/RovingFocus'\n\nconst props = withDefaults(defineProps<MenuContentImplProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<MenuContentImplPrivateEmits>()\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n\nconst { trapFocus, disableOutsidePointerEvents, loop } = toRefs(props)\n\nuseFocusGuards()\nuseBodyScrollLock(disableOutsidePointerEvents.value)\n\nconst searchRef = ref('')\nconst timerRef = ref(0)\nconst pointerGraceTimerRef = ref(0)\nconst pointerGraceIntentRef = ref<GraceIntent | null>(null)\nconst pointerDirRef = ref<Side>('right')\nconst lastPointerXRef = ref(0)\nconst currentItemId = ref<string | null>(null)\n\nconst rovingFocusGroupRef = ref<InstanceType<typeof RovingFocusGroup>>()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst { handleTypeaheadSearch } = useTypeahead()\n\nwatch(contentElement, (el) => {\n menuContext!.onContentChange(el)\n})\n\nonUnmounted(() => {\n window.clearTimeout(timerRef.value)\n})\n\nfunction isPointerMovingToSubmenu(event: PointerEvent) {\n const isMovingTowards\n = pointerDirRef.value === pointerGraceIntentRef.value?.side\n\n return (\n isMovingTowards\n && isPointerInGraceArea(event, pointerGraceIntentRef.value?.area)\n )\n}\n\nasync function handleMountAutoFocus(event: Event) {\n emits('openAutoFocus', event)\n if (event.defaultPrevented)\n return\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault()\n contentElement.value?.focus({\n preventScroll: true,\n })\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented)\n return\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement\n const isKeyDownInside\n = target.closest('[data-reka-menu-content]') === event.currentTarget\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey\n const isCharacterKey = event.key.length === 1\n\n const el = useArrowNavigation(\n event,\n getActiveElement() as HTMLElement,\n contentElement.value,\n {\n loop: loop.value,\n arrowKeyOptions: 'vertical',\n dir: rootContext?.dir.value,\n focus: true,\n attributeName: '[data-reka-collection-item]:not([data-disabled])',\n },\n )\n if (el)\n return el?.focus()\n\n // prevent \"Space\" taken account into handleTypeahead\n if (event.code === 'Space')\n return\n\n const collectionItems = rovingFocusGroupRef.value?.getItems() ?? []\n\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === 'Tab')\n event.preventDefault()\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key, collectionItems)\n }\n\n // focus first/last item based on key pressed\n if (event.target !== contentElement.value)\n return\n if (!FIRST_LAST_KEYS.includes(event.key))\n return\n event.preventDefault()\n const candidateNodes = [...collectionItems.map(item => item.ref)]\n if (LAST_KEYS.includes(event.key))\n candidateNodes.reverse()\n focusFirst(candidateNodes)\n}\n\nfunction handleBlur(event: FocusEvent) {\n // clear search buffer when leaving the menu\n // @ts-expect-error the provided currentTarget and target should be HTMLElement\n if (!event?.currentTarget?.contains?.(event.target)) {\n window.clearTimeout(timerRef.value)\n searchRef.value = ''\n }\n}\n\nfunction handlePointerMove(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n const target = event.target as HTMLElement\n const pointerXHasChanged = lastPointerXRef.value !== event.clientX\n\n // We don't use `event.movementX` for this check because Safari will\n // always return `0` on a pointer event.\n if (\n (event?.currentTarget as HTMLElement)?.contains(target)\n && pointerXHasChanged\n ) {\n const newDir = event.clientX > lastPointerXRef.value ? 'right' : 'left'\n pointerDirRef.value = newDir\n lastPointerXRef.value = event.clientX\n }\n}\n\nprovideMenuContentContext({\n onItemEnter: (event) => {\n // event.preventDefault() we can't prevent pointerMove event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n onItemLeave: (event) => {\n if (isPointerMovingToSubmenu(event))\n return\n contentElement.value?.focus()\n currentItemId.value = null\n },\n onTriggerLeave: (event) => {\n // event.preventDefault() we can't prevent pointerLeave event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n searchRef,\n pointerGraceTimerRef,\n onPointerGraceIntentChange: (intent) => {\n pointerGraceIntentRef.value = intent\n },\n})\n</script>\n\n<template>\n <FocusScope\n as-child\n :trapped=\"trapFocus\"\n @mount-auto-focus=\"handleMountAutoFocus\"\n @unmount-auto-focus=\"emits('closeAutoFocus', $event)\"\n >\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"disableOutsidePointerEvents\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside=\"emits('focusOutside', $event)\"\n @interact-outside=\"emits('interactOutside', $event)\"\n @dismiss=\"emits('dismiss')\"\n >\n <RovingFocusGroup\n ref=\"rovingFocusGroupRef\"\n v-model:current-tab-stop-id=\"currentItemId\"\n as-child\n orientation=\"vertical\"\n :dir=\"rootContext.dir.value\"\n :loop=\"loop\"\n @entry-focus=\"(event) => {\n emits('entryFocus', event)\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboardRef.value) event.preventDefault();\n }\"\n >\n <PopperContent\n :ref=\"forwardRef\"\n role=\"menu\"\n :as=\"as\"\n :as-child=\"asChild\"\n aria-orientation=\"vertical\"\n data-reka-menu-content\n :data-state=\"getOpenState(menuContext.open.value)\"\n :dir=\"rootContext.dir.value\"\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :align=\"align\"\n :align-offset=\"alignOffset\"\n :avoid-collisions=\"avoidCollisions\"\n :collision-boundary=\"collisionBoundary\"\n :collision-padding=\"collisionPadding\"\n :arrow-padding=\"arrowPadding\"\n :prioritize-position=\"prioritizePosition\"\n :position-strategy=\"positionStrategy\"\n :update-position-strategy=\"updatePositionStrategy\"\n :sticky=\"sticky\"\n :hide-when-detached=\"hideWhenDetached\"\n :reference=\"reference\"\n @keydown=\"handleKeyDown\"\n @blur=\"handleBlur\"\n @pointermove=\"handlePointerMove\"\n >\n <slot />\n </PopperContent>\n </RovingFocusGroup>\n </DismissableLayer>\n </FocusScope>\n</template>\n"],"names":["createContext","injectMenuContext","injectMenuRootContext","toRefs","useFocusGuards","useBodyScrollLock","ref","useForwardExpose","useTypeahead","watch","onUnmounted","isPointerInGraceArea","useArrowNavigation","getActiveElement","FIRST_LAST_KEYS","LAST_KEYS","focusFirst","isMouseEvent"],"mappings":"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"}
1
+ {"version":3,"file":"MenuContentImpl.cjs","sources":["../../src/Menu/MenuContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n DismissableLayerEmits,\n DismissableLayerProps,\n} from '@/DismissableLayer'\nimport type { FocusScopeProps } from '@/FocusScope'\nimport type { PopperContentProps } from '@/Popper'\nimport type { RovingFocusGroupEmits } from '@/RovingFocus'\nimport type { Ref } from 'vue'\nimport type {\n GraceIntent,\n Side,\n} from './utils'\n\nimport {\n createContext,\n getActiveElement,\n useArrowNavigation,\n useFocusGuards,\n useForwardExpose,\n useTypeahead,\n} from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\n\nexport interface MenuContentContext {\n onItemEnter: (event: PointerEvent) => boolean\n onItemLeave: (event: PointerEvent) => void\n onTriggerLeave: (event: PointerEvent) => boolean\n searchRef: Ref<string>\n pointerGraceTimerRef: Ref<number>\n onPointerGraceIntentChange: (intent: GraceIntent | null) => void\n}\n\nexport const [injectMenuContentContext, provideMenuContentContext]\n = createContext<MenuContentContext>('MenuContent')\n\nexport interface MenuContentImplPrivateProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents']\n /**\n * Whether scrolling outside the `MenuContent` should be prevented\n * @defaultValue false\n */\n disableOutsideScroll?: boolean\n\n /**\n * Whether focus should be trapped within the `MenuContent`\n * @defaultValue also\n */\n trapFocus?: FocusScopeProps['trapped']\n}\n\nexport type MenuContentImplEmits = DismissableLayerEmits & Omit<RovingFocusGroupEmits, 'update:currentTabStopId'> & {\n openAutoFocus: [event: Event]\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n closeAutoFocus: [event: Event]\n}\n\ntype MenuContentImplPrivateEmits = MenuContentImplEmits & {\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n dismiss: []\n}\n\nexport interface MenuContentImplProps\n extends MenuContentImplPrivateProps,\n Omit<PopperContentProps, 'dir'> {\n /**\n * When `true`, keyboard navigation will loop from last item to first, and vice versa.\n * @defaultValue false\n */\n loop?: boolean\n}\n\nexport interface MenuRootContentTypeProps\n extends Omit<MenuContentImplProps, 'disableOutsidePointerEvents' | 'disableOutsideScroll' | 'trapFocus'> {}\n</script>\n\n<script setup lang=\"ts\">\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { FocusScope } from '@/FocusScope'\nimport {\n PopperContent,\n PopperContentPropsDefaultValue,\n} from '@/Popper'\nimport { RovingFocusGroup } from '@/RovingFocus'\nimport {\n onUnmounted,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport {\n FIRST_LAST_KEYS,\n focusFirst,\n getOpenState,\n isMouseEvent,\n isPointerInGraceArea,\n LAST_KEYS,\n} from './utils'\n\nconst props = withDefaults(defineProps<MenuContentImplProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<MenuContentImplPrivateEmits>()\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n\nconst { trapFocus, disableOutsidePointerEvents, loop } = toRefs(props)\n\nuseFocusGuards()\nuseBodyScrollLock(disableOutsidePointerEvents.value)\n\nconst searchRef = ref('')\nconst timerRef = ref(0)\nconst pointerGraceTimerRef = ref(0)\nconst pointerGraceIntentRef = ref<GraceIntent | null>(null)\nconst pointerDirRef = ref<Side>('right')\nconst lastPointerXRef = ref(0)\nconst currentItemId = ref<string | null>(null)\n\nconst rovingFocusGroupRef = ref<InstanceType<typeof RovingFocusGroup>>()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst { handleTypeaheadSearch } = useTypeahead()\n\nwatch(contentElement, (el) => {\n menuContext!.onContentChange(el)\n})\n\nonUnmounted(() => {\n window.clearTimeout(timerRef.value)\n})\n\nfunction isPointerMovingToSubmenu(event: PointerEvent) {\n const isMovingTowards\n = pointerDirRef.value === pointerGraceIntentRef.value?.side\n\n return (\n isMovingTowards\n && isPointerInGraceArea(event, pointerGraceIntentRef.value?.area)\n )\n}\n\nasync function handleMountAutoFocus(event: Event) {\n emits('openAutoFocus', event)\n if (event.defaultPrevented)\n return\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault()\n contentElement.value?.focus({\n preventScroll: true,\n })\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented)\n return\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement\n const isKeyDownInside\n = target.closest('[data-reka-menu-content]') === event.currentTarget\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey\n const isCharacterKey = event.key.length === 1\n\n const el = useArrowNavigation(\n event,\n getActiveElement() as HTMLElement,\n contentElement.value,\n {\n loop: loop.value,\n arrowKeyOptions: 'vertical',\n dir: rootContext?.dir.value,\n focus: true,\n attributeName: '[data-reka-collection-item]:not([data-disabled])',\n },\n )\n if (el)\n return el?.focus()\n\n // prevent \"Space\" taken account into handleTypeahead\n if (event.code === 'Space')\n return\n\n const collectionItems = rovingFocusGroupRef.value?.getItems() ?? []\n\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === 'Tab')\n event.preventDefault()\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key, collectionItems)\n }\n\n // focus first/last item based on key pressed\n if (event.target !== contentElement.value)\n return\n if (!FIRST_LAST_KEYS.includes(event.key))\n return\n event.preventDefault()\n const candidateNodes = [...collectionItems.map(item => item.ref)]\n if (LAST_KEYS.includes(event.key))\n candidateNodes.reverse()\n focusFirst(candidateNodes)\n}\n\nfunction handleBlur(event: FocusEvent) {\n // clear search buffer when leaving the menu\n // @ts-expect-error the provided currentTarget and target should be HTMLElement\n if (!event?.currentTarget?.contains?.(event.target)) {\n window.clearTimeout(timerRef.value)\n searchRef.value = ''\n }\n}\n\nfunction handlePointerMove(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n const target = event.target as HTMLElement\n const pointerXHasChanged = lastPointerXRef.value !== event.clientX\n\n // We don't use `event.movementX` for this check because Safari will\n // always return `0` on a pointer event.\n if (\n (event?.currentTarget as HTMLElement)?.contains(target)\n && pointerXHasChanged\n ) {\n const newDir = event.clientX > lastPointerXRef.value ? 'right' : 'left'\n pointerDirRef.value = newDir\n lastPointerXRef.value = event.clientX\n }\n}\n\nprovideMenuContentContext({\n onItemEnter: (event) => {\n // event.preventDefault() we can't prevent pointerMove event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n onItemLeave: (event) => {\n if (isPointerMovingToSubmenu(event))\n return\n contentElement.value?.focus()\n currentItemId.value = null\n },\n onTriggerLeave: (event) => {\n // event.preventDefault() we can't prevent pointerLeave event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n searchRef,\n pointerGraceTimerRef,\n onPointerGraceIntentChange: (intent) => {\n pointerGraceIntentRef.value = intent\n },\n})\n</script>\n\n<template>\n <FocusScope\n as-child\n :trapped=\"trapFocus\"\n @mount-auto-focus=\"handleMountAutoFocus\"\n @unmount-auto-focus=\"emits('closeAutoFocus', $event)\"\n >\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"disableOutsidePointerEvents\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside=\"emits('focusOutside', $event)\"\n @interact-outside=\"emits('interactOutside', $event)\"\n @dismiss=\"emits('dismiss')\"\n >\n <RovingFocusGroup\n ref=\"rovingFocusGroupRef\"\n v-model:current-tab-stop-id=\"currentItemId\"\n as-child\n orientation=\"vertical\"\n :dir=\"rootContext.dir.value\"\n :loop=\"loop\"\n @entry-focus=\"(event) => {\n emits('entryFocus', event)\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboardRef.value) event.preventDefault();\n }\"\n >\n <PopperContent\n :ref=\"forwardRef\"\n role=\"menu\"\n :as=\"as\"\n :as-child=\"asChild\"\n aria-orientation=\"vertical\"\n data-reka-menu-content\n :data-state=\"getOpenState(menuContext.open.value)\"\n :dir=\"rootContext.dir.value\"\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :align=\"align\"\n :align-offset=\"alignOffset\"\n :avoid-collisions=\"avoidCollisions\"\n :collision-boundary=\"collisionBoundary\"\n :collision-padding=\"collisionPadding\"\n :arrow-padding=\"arrowPadding\"\n :prioritize-position=\"prioritizePosition\"\n :position-strategy=\"positionStrategy\"\n :update-position-strategy=\"updatePositionStrategy\"\n :sticky=\"sticky\"\n :hide-when-detached=\"hideWhenDetached\"\n :reference=\"reference\"\n @keydown=\"handleKeyDown\"\n @blur=\"handleBlur\"\n @pointermove=\"handlePointerMove\"\n >\n <slot />\n </PopperContent>\n </RovingFocusGroup>\n </DismissableLayer>\n </FocusScope>\n</template>\n"],"names":["createContext","injectMenuContext","injectMenuRootContext","toRefs","useFocusGuards","useBodyScrollLock","ref","useForwardExpose","useTypeahead","watch","onUnmounted","isPointerInGraceArea","useArrowNavigation","getActiveElement","FIRST_LAST_KEYS","LAST_KEYS","focusFirst","isMouseEvent"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { defineComponent, mergeDefaults, toRefs, ref, watch, onUnmounted, createBlock, openBlock, unref, withCtx, createVNode, renderSlot } from 'vue';
2
- import { g as getOpenState, b as isPointerInGraceArea, F as FIRST_LAST_KEYS, L as LAST_KEYS, f as focusFirst, c as isMouseEvent } from './utils.js';
3
2
  import { _ as _sfc_main$2 } from '../DismissableLayer/DismissableLayer.js';
4
3
  import { _ as _sfc_main$4, P as PopperContentPropsDefaultValue } from '../Popper/PopperContent.js';
4
+ import { g as getOpenState, b as isPointerInGraceArea, F as FIRST_LAST_KEYS, L as LAST_KEYS, f as focusFirst, c as isMouseEvent } from './utils.js';
5
5
  import { u as useBodyScrollLock } from '../shared/useBodyScrollLock.js';
6
+ import { c as createContext } from '../shared/createContext.js';
6
7
  import { i as injectMenuContext, a as injectMenuRootContext } from './MenuRoot.js';
7
8
  import { u as useFocusGuards } from '../shared/useFocusGuards.js';
8
9
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
9
10
  import { u as useTypeahead } from '../shared/useTypeahead.js';
10
- import { c as createContext } from '../shared/createContext.js';
11
11
  import { _ as _sfc_main$1 } from '../FocusScope/FocusScope.js';
12
12
  import { _ as _sfc_main$3 } from '../RovingFocus/RovingFocusGroup.js';
13
13
  import { u as useArrowNavigation } from '../shared/useArrowNavigation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"MenuContentImpl.js","sources":["../../src/Menu/MenuContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type {\n GraceIntent,\n Side,\n} from './utils'\nimport type { FocusScopeProps } from '@/FocusScope'\nimport type { RovingFocusGroupEmits } from '@/RovingFocus'\nimport type {\n DismissableLayerEmits,\n DismissableLayerProps,\n} from '@/DismissableLayer'\nimport type { PopperContentProps } from '@/Popper'\n\nimport {\n createContext,\n getActiveElement,\n useArrowNavigation,\n useFocusGuards,\n useForwardExpose,\n useTypeahead,\n} from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\n\nexport interface MenuContentContext {\n onItemEnter: (event: PointerEvent) => boolean\n onItemLeave: (event: PointerEvent) => void\n onTriggerLeave: (event: PointerEvent) => boolean\n searchRef: Ref<string>\n pointerGraceTimerRef: Ref<number>\n onPointerGraceIntentChange: (intent: GraceIntent | null) => void\n}\n\nexport const [injectMenuContentContext, provideMenuContentContext]\n = createContext<MenuContentContext>('MenuContent')\n\nexport interface MenuContentImplPrivateProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents']\n /**\n * Whether scrolling outside the `MenuContent` should be prevented\n * @defaultValue false\n */\n disableOutsideScroll?: boolean\n\n /**\n * Whether focus should be trapped within the `MenuContent`\n * @defaultValue also\n */\n trapFocus?: FocusScopeProps['trapped']\n}\n\nexport type MenuContentImplEmits = DismissableLayerEmits & Omit<RovingFocusGroupEmits, 'update:currentTabStopId'> & {\n openAutoFocus: [event: Event]\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n closeAutoFocus: [event: Event]\n}\n\ntype MenuContentImplPrivateEmits = MenuContentImplEmits & {\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n dismiss: []\n}\n\nexport interface MenuContentImplProps\n extends MenuContentImplPrivateProps,\n Omit<PopperContentProps, 'dir'> {\n /**\n * When `true`, keyboard navigation will loop from last item to first, and vice versa.\n * @defaultValue false\n */\n loop?: boolean\n}\n\nexport interface MenuRootContentTypeProps\n extends Omit<MenuContentImplProps, 'disableOutsidePointerEvents' | 'disableOutsideScroll' | 'trapFocus'> {}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n onUnmounted,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport {\n FIRST_LAST_KEYS,\n LAST_KEYS,\n focusFirst,\n getOpenState,\n isMouseEvent,\n isPointerInGraceArea,\n} from './utils'\nimport { FocusScope } from '@/FocusScope'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport {\n PopperContent,\n PopperContentPropsDefaultValue,\n} from '@/Popper'\nimport { RovingFocusGroup } from '@/RovingFocus'\n\nconst props = withDefaults(defineProps<MenuContentImplProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<MenuContentImplPrivateEmits>()\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n\nconst { trapFocus, disableOutsidePointerEvents, loop } = toRefs(props)\n\nuseFocusGuards()\nuseBodyScrollLock(disableOutsidePointerEvents.value)\n\nconst searchRef = ref('')\nconst timerRef = ref(0)\nconst pointerGraceTimerRef = ref(0)\nconst pointerGraceIntentRef = ref<GraceIntent | null>(null)\nconst pointerDirRef = ref<Side>('right')\nconst lastPointerXRef = ref(0)\nconst currentItemId = ref<string | null>(null)\n\nconst rovingFocusGroupRef = ref<InstanceType<typeof RovingFocusGroup>>()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst { handleTypeaheadSearch } = useTypeahead()\n\nwatch(contentElement, (el) => {\n menuContext!.onContentChange(el)\n})\n\nonUnmounted(() => {\n window.clearTimeout(timerRef.value)\n})\n\nfunction isPointerMovingToSubmenu(event: PointerEvent) {\n const isMovingTowards\n = pointerDirRef.value === pointerGraceIntentRef.value?.side\n\n return (\n isMovingTowards\n && isPointerInGraceArea(event, pointerGraceIntentRef.value?.area)\n )\n}\n\nasync function handleMountAutoFocus(event: Event) {\n emits('openAutoFocus', event)\n if (event.defaultPrevented)\n return\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault()\n contentElement.value?.focus({\n preventScroll: true,\n })\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented)\n return\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement\n const isKeyDownInside\n = target.closest('[data-reka-menu-content]') === event.currentTarget\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey\n const isCharacterKey = event.key.length === 1\n\n const el = useArrowNavigation(\n event,\n getActiveElement() as HTMLElement,\n contentElement.value,\n {\n loop: loop.value,\n arrowKeyOptions: 'vertical',\n dir: rootContext?.dir.value,\n focus: true,\n attributeName: '[data-reka-collection-item]:not([data-disabled])',\n },\n )\n if (el)\n return el?.focus()\n\n // prevent \"Space\" taken account into handleTypeahead\n if (event.code === 'Space')\n return\n\n const collectionItems = rovingFocusGroupRef.value?.getItems() ?? []\n\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === 'Tab')\n event.preventDefault()\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key, collectionItems)\n }\n\n // focus first/last item based on key pressed\n if (event.target !== contentElement.value)\n return\n if (!FIRST_LAST_KEYS.includes(event.key))\n return\n event.preventDefault()\n const candidateNodes = [...collectionItems.map(item => item.ref)]\n if (LAST_KEYS.includes(event.key))\n candidateNodes.reverse()\n focusFirst(candidateNodes)\n}\n\nfunction handleBlur(event: FocusEvent) {\n // clear search buffer when leaving the menu\n // @ts-expect-error the provided currentTarget and target should be HTMLElement\n if (!event?.currentTarget?.contains?.(event.target)) {\n window.clearTimeout(timerRef.value)\n searchRef.value = ''\n }\n}\n\nfunction handlePointerMove(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n const target = event.target as HTMLElement\n const pointerXHasChanged = lastPointerXRef.value !== event.clientX\n\n // We don't use `event.movementX` for this check because Safari will\n // always return `0` on a pointer event.\n if (\n (event?.currentTarget as HTMLElement)?.contains(target)\n && pointerXHasChanged\n ) {\n const newDir = event.clientX > lastPointerXRef.value ? 'right' : 'left'\n pointerDirRef.value = newDir\n lastPointerXRef.value = event.clientX\n }\n}\n\nprovideMenuContentContext({\n onItemEnter: (event) => {\n // event.preventDefault() we can't prevent pointerMove event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n onItemLeave: (event) => {\n if (isPointerMovingToSubmenu(event))\n return\n contentElement.value?.focus()\n currentItemId.value = null\n },\n onTriggerLeave: (event) => {\n // event.preventDefault() we can't prevent pointerLeave event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n searchRef,\n pointerGraceTimerRef,\n onPointerGraceIntentChange: (intent) => {\n pointerGraceIntentRef.value = intent\n },\n})\n</script>\n\n<template>\n <FocusScope\n as-child\n :trapped=\"trapFocus\"\n @mount-auto-focus=\"handleMountAutoFocus\"\n @unmount-auto-focus=\"emits('closeAutoFocus', $event)\"\n >\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"disableOutsidePointerEvents\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside=\"emits('focusOutside', $event)\"\n @interact-outside=\"emits('interactOutside', $event)\"\n @dismiss=\"emits('dismiss')\"\n >\n <RovingFocusGroup\n ref=\"rovingFocusGroupRef\"\n v-model:current-tab-stop-id=\"currentItemId\"\n as-child\n orientation=\"vertical\"\n :dir=\"rootContext.dir.value\"\n :loop=\"loop\"\n @entry-focus=\"(event) => {\n emits('entryFocus', event)\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboardRef.value) event.preventDefault();\n }\"\n >\n <PopperContent\n :ref=\"forwardRef\"\n role=\"menu\"\n :as=\"as\"\n :as-child=\"asChild\"\n aria-orientation=\"vertical\"\n data-reka-menu-content\n :data-state=\"getOpenState(menuContext.open.value)\"\n :dir=\"rootContext.dir.value\"\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :align=\"align\"\n :align-offset=\"alignOffset\"\n :avoid-collisions=\"avoidCollisions\"\n :collision-boundary=\"collisionBoundary\"\n :collision-padding=\"collisionPadding\"\n :arrow-padding=\"arrowPadding\"\n :prioritize-position=\"prioritizePosition\"\n :position-strategy=\"positionStrategy\"\n :update-position-strategy=\"updatePositionStrategy\"\n :sticky=\"sticky\"\n :hide-when-detached=\"hideWhenDetached\"\n :reference=\"reference\"\n @keydown=\"handleKeyDown\"\n @blur=\"handleBlur\"\n @pointermove=\"handlePointerMove\"\n >\n <slot />\n </PopperContent>\n </RovingFocusGroup>\n </DismissableLayer>\n </FocusScope>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MenuContentImpl.js","sources":["../../src/Menu/MenuContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n DismissableLayerEmits,\n DismissableLayerProps,\n} from '@/DismissableLayer'\nimport type { FocusScopeProps } from '@/FocusScope'\nimport type { PopperContentProps } from '@/Popper'\nimport type { RovingFocusGroupEmits } from '@/RovingFocus'\nimport type { Ref } from 'vue'\nimport type {\n GraceIntent,\n Side,\n} from './utils'\n\nimport {\n createContext,\n getActiveElement,\n useArrowNavigation,\n useFocusGuards,\n useForwardExpose,\n useTypeahead,\n} from '@/shared'\nimport { useBodyScrollLock } from '@/shared/useBodyScrollLock'\n\nexport interface MenuContentContext {\n onItemEnter: (event: PointerEvent) => boolean\n onItemLeave: (event: PointerEvent) => void\n onTriggerLeave: (event: PointerEvent) => boolean\n searchRef: Ref<string>\n pointerGraceTimerRef: Ref<number>\n onPointerGraceIntentChange: (intent: GraceIntent | null) => void\n}\n\nexport const [injectMenuContentContext, provideMenuContentContext]\n = createContext<MenuContentContext>('MenuContent')\n\nexport interface MenuContentImplPrivateProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents']\n /**\n * Whether scrolling outside the `MenuContent` should be prevented\n * @defaultValue false\n */\n disableOutsideScroll?: boolean\n\n /**\n * Whether focus should be trapped within the `MenuContent`\n * @defaultValue also\n */\n trapFocus?: FocusScopeProps['trapped']\n}\n\nexport type MenuContentImplEmits = DismissableLayerEmits & Omit<RovingFocusGroupEmits, 'update:currentTabStopId'> & {\n openAutoFocus: [event: Event]\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n closeAutoFocus: [event: Event]\n}\n\ntype MenuContentImplPrivateEmits = MenuContentImplEmits & {\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n dismiss: []\n}\n\nexport interface MenuContentImplProps\n extends MenuContentImplPrivateProps,\n Omit<PopperContentProps, 'dir'> {\n /**\n * When `true`, keyboard navigation will loop from last item to first, and vice versa.\n * @defaultValue false\n */\n loop?: boolean\n}\n\nexport interface MenuRootContentTypeProps\n extends Omit<MenuContentImplProps, 'disableOutsidePointerEvents' | 'disableOutsideScroll' | 'trapFocus'> {}\n</script>\n\n<script setup lang=\"ts\">\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { FocusScope } from '@/FocusScope'\nimport {\n PopperContent,\n PopperContentPropsDefaultValue,\n} from '@/Popper'\nimport { RovingFocusGroup } from '@/RovingFocus'\nimport {\n onUnmounted,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport { injectMenuContext, injectMenuRootContext } from './MenuRoot.vue'\nimport {\n FIRST_LAST_KEYS,\n focusFirst,\n getOpenState,\n isMouseEvent,\n isPointerInGraceArea,\n LAST_KEYS,\n} from './utils'\n\nconst props = withDefaults(defineProps<MenuContentImplProps>(), {\n ...PopperContentPropsDefaultValue,\n})\nconst emits = defineEmits<MenuContentImplPrivateEmits>()\nconst menuContext = injectMenuContext()\nconst rootContext = injectMenuRootContext()\n\nconst { trapFocus, disableOutsidePointerEvents, loop } = toRefs(props)\n\nuseFocusGuards()\nuseBodyScrollLock(disableOutsidePointerEvents.value)\n\nconst searchRef = ref('')\nconst timerRef = ref(0)\nconst pointerGraceTimerRef = ref(0)\nconst pointerGraceIntentRef = ref<GraceIntent | null>(null)\nconst pointerDirRef = ref<Side>('right')\nconst lastPointerXRef = ref(0)\nconst currentItemId = ref<string | null>(null)\n\nconst rovingFocusGroupRef = ref<InstanceType<typeof RovingFocusGroup>>()\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst { handleTypeaheadSearch } = useTypeahead()\n\nwatch(contentElement, (el) => {\n menuContext!.onContentChange(el)\n})\n\nonUnmounted(() => {\n window.clearTimeout(timerRef.value)\n})\n\nfunction isPointerMovingToSubmenu(event: PointerEvent) {\n const isMovingTowards\n = pointerDirRef.value === pointerGraceIntentRef.value?.side\n\n return (\n isMovingTowards\n && isPointerInGraceArea(event, pointerGraceIntentRef.value?.area)\n )\n}\n\nasync function handleMountAutoFocus(event: Event) {\n emits('openAutoFocus', event)\n if (event.defaultPrevented)\n return\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault()\n contentElement.value?.focus({\n preventScroll: true,\n })\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented)\n return\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement\n const isKeyDownInside\n = target.closest('[data-reka-menu-content]') === event.currentTarget\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey\n const isCharacterKey = event.key.length === 1\n\n const el = useArrowNavigation(\n event,\n getActiveElement() as HTMLElement,\n contentElement.value,\n {\n loop: loop.value,\n arrowKeyOptions: 'vertical',\n dir: rootContext?.dir.value,\n focus: true,\n attributeName: '[data-reka-collection-item]:not([data-disabled])',\n },\n )\n if (el)\n return el?.focus()\n\n // prevent \"Space\" taken account into handleTypeahead\n if (event.code === 'Space')\n return\n\n const collectionItems = rovingFocusGroupRef.value?.getItems() ?? []\n\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === 'Tab')\n event.preventDefault()\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key, collectionItems)\n }\n\n // focus first/last item based on key pressed\n if (event.target !== contentElement.value)\n return\n if (!FIRST_LAST_KEYS.includes(event.key))\n return\n event.preventDefault()\n const candidateNodes = [...collectionItems.map(item => item.ref)]\n if (LAST_KEYS.includes(event.key))\n candidateNodes.reverse()\n focusFirst(candidateNodes)\n}\n\nfunction handleBlur(event: FocusEvent) {\n // clear search buffer when leaving the menu\n // @ts-expect-error the provided currentTarget and target should be HTMLElement\n if (!event?.currentTarget?.contains?.(event.target)) {\n window.clearTimeout(timerRef.value)\n searchRef.value = ''\n }\n}\n\nfunction handlePointerMove(event: PointerEvent) {\n if (!isMouseEvent(event))\n return\n const target = event.target as HTMLElement\n const pointerXHasChanged = lastPointerXRef.value !== event.clientX\n\n // We don't use `event.movementX` for this check because Safari will\n // always return `0` on a pointer event.\n if (\n (event?.currentTarget as HTMLElement)?.contains(target)\n && pointerXHasChanged\n ) {\n const newDir = event.clientX > lastPointerXRef.value ? 'right' : 'left'\n pointerDirRef.value = newDir\n lastPointerXRef.value = event.clientX\n }\n}\n\nprovideMenuContentContext({\n onItemEnter: (event) => {\n // event.preventDefault() we can't prevent pointerMove event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n onItemLeave: (event) => {\n if (isPointerMovingToSubmenu(event))\n return\n contentElement.value?.focus()\n currentItemId.value = null\n },\n onTriggerLeave: (event) => {\n // event.preventDefault() we can't prevent pointerLeave event\n if (isPointerMovingToSubmenu(event))\n return true\n else\n return false\n },\n searchRef,\n pointerGraceTimerRef,\n onPointerGraceIntentChange: (intent) => {\n pointerGraceIntentRef.value = intent\n },\n})\n</script>\n\n<template>\n <FocusScope\n as-child\n :trapped=\"trapFocus\"\n @mount-auto-focus=\"handleMountAutoFocus\"\n @unmount-auto-focus=\"emits('closeAutoFocus', $event)\"\n >\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"disableOutsidePointerEvents\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside=\"emits('focusOutside', $event)\"\n @interact-outside=\"emits('interactOutside', $event)\"\n @dismiss=\"emits('dismiss')\"\n >\n <RovingFocusGroup\n ref=\"rovingFocusGroupRef\"\n v-model:current-tab-stop-id=\"currentItemId\"\n as-child\n orientation=\"vertical\"\n :dir=\"rootContext.dir.value\"\n :loop=\"loop\"\n @entry-focus=\"(event) => {\n emits('entryFocus', event)\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboardRef.value) event.preventDefault();\n }\"\n >\n <PopperContent\n :ref=\"forwardRef\"\n role=\"menu\"\n :as=\"as\"\n :as-child=\"asChild\"\n aria-orientation=\"vertical\"\n data-reka-menu-content\n :data-state=\"getOpenState(menuContext.open.value)\"\n :dir=\"rootContext.dir.value\"\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :align=\"align\"\n :align-offset=\"alignOffset\"\n :avoid-collisions=\"avoidCollisions\"\n :collision-boundary=\"collisionBoundary\"\n :collision-padding=\"collisionPadding\"\n :arrow-padding=\"arrowPadding\"\n :prioritize-position=\"prioritizePosition\"\n :position-strategy=\"positionStrategy\"\n :update-position-strategy=\"updatePositionStrategy\"\n :sticky=\"sticky\"\n :hide-when-detached=\"hideWhenDetached\"\n :reference=\"reference\"\n @keydown=\"handleKeyDown\"\n @blur=\"handleBlur\"\n @pointermove=\"handlePointerMove\"\n >\n <slot />\n </PopperContent>\n </RovingFocusGroup>\n </DismissableLayer>\n </FocusScope>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.cjs","sources":["../../src/Menu/MenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport { useForwardExpose } from '@/shared'\n\nexport type MenuItemEmits = {\n /**\n * Event handler called when the user selects an item (via mouse or keyboard). <br>\n * Calling `event.preventDefault` in this handler will prevent the menu from closing when selecting that item.\n */\n select: [event: Event]\n}\n\nexport interface MenuItemProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, ref } from 'vue'\nimport MenuItemImpl from './MenuItemImpl.vue'\nimport { injectMenuRootContext } from './MenuRoot.vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport { ITEM_SELECT, SELECTION_KEYS } from './utils'\n\nconst props = defineProps<MenuItemProps>()\nconst emits = defineEmits<MenuItemEmits>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectMenuRootContext()\nconst contentContext = injectMenuContentContext()\n\nconst isPointerDownRef = ref(false)\n\nasync function handleSelect() {\n const menuItem = currentElement.value\n if (!props.disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true,\n })\n emits('select', itemSelectEvent)\n // let select event finish\n await nextTick()\n if (itemSelectEvent.defaultPrevented)\n isPointerDownRef.value = false\n else rootContext.onClose()\n }\n}\n</script>\n\n<template>\n <MenuItemImpl\n v-bind=\"props\"\n :ref=\"forwardRef\"\n @click=\"handleSelect\"\n @pointerdown=\"\n () => {\n isPointerDownRef = true;\n }\n \"\n @pointerup=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n // Pointer down can move to a different menu item which should activate it on pointer up.\n // We dispatch a click for selection to allow composition with click based triggers and to\n // prevent Firefox from getting stuck in text selection mode when the menu closes.\n if (!isPointerDownRef) event.currentTarget?.click();\n }\n \"\n @keydown=\"\n async (event) => {\n const isTypingAhead = contentContext.searchRef.value !== '';\n if (disabled || (isTypingAhead && event.key === ' ')) return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n /**\n * We prevent default browser behaviour for selection keys as they should trigger\n * a selection only:\n * - prevents space from scrolling the page.\n * - if keydown causes focus to move, prevents keydown from firing on the new target.\n */\n event.preventDefault();\n }\n }\n \"\n >\n <slot />\n </MenuItemImpl>\n</template>\n"],"names":["useForwardExpose","injectMenuRootContext","injectMenuContentContext","ref","ITEM_SELECT","nextTick"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAA,MAAM,cAAcC,mCAAsB,EAAA;AAC1C,IAAA,MAAM,iBAAiBC,6CAAyB,EAAA;AAEhD,IAAM,MAAA,gBAAA,GAAmBC,QAAI,KAAK,CAAA;AAElC,IAAA,eAAe,YAAe,GAAA;AAC5B,MAAA,MAAM,WAAW,cAAe,CAAA,KAAA;AAChC,MAAI,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,QAAU,EAAA;AAC/B,QAAM,MAAA,eAAA,GAAkB,IAAI,WAAA,CAAYC,sBAAa,EAAA;AAAA,UACnD,OAAS,EAAA,IAAA;AAAA,UACT,UAAY,EAAA;AAAA,SACb,CAAA;AACD,QAAA,KAAA,CAAM,UAAU,eAAe,CAAA;AAE/B,QAAA,MAAMC,YAAS,EAAA;AACf,QAAA,IAAI,eAAgB,CAAA,gBAAA;AAClB,UAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA,yBACV,OAAQ,EAAA;AAAA;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItem.cjs","sources":["../../src/Menu/MenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport { useForwardExpose } from '@/shared'\n\nexport type MenuItemEmits = {\n /**\n * Event handler called when the user selects an item (via mouse or keyboard). <br>\n * Calling `event.preventDefault` in this handler will prevent the menu from closing when selecting that item.\n */\n select: [event: Event]\n}\n\nexport interface MenuItemProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, ref } from 'vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport MenuItemImpl from './MenuItemImpl.vue'\nimport { injectMenuRootContext } from './MenuRoot.vue'\nimport { ITEM_SELECT, SELECTION_KEYS } from './utils'\n\nconst props = defineProps<MenuItemProps>()\nconst emits = defineEmits<MenuItemEmits>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectMenuRootContext()\nconst contentContext = injectMenuContentContext()\n\nconst isPointerDownRef = ref(false)\n\nasync function handleSelect() {\n const menuItem = currentElement.value\n if (!props.disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true,\n })\n emits('select', itemSelectEvent)\n // let select event finish\n await nextTick()\n if (itemSelectEvent.defaultPrevented)\n isPointerDownRef.value = false\n else rootContext.onClose()\n }\n}\n</script>\n\n<template>\n <MenuItemImpl\n v-bind=\"props\"\n :ref=\"forwardRef\"\n @click=\"handleSelect\"\n @pointerdown=\"\n () => {\n isPointerDownRef = true;\n }\n \"\n @pointerup=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n // Pointer down can move to a different menu item which should activate it on pointer up.\n // We dispatch a click for selection to allow composition with click based triggers and to\n // prevent Firefox from getting stuck in text selection mode when the menu closes.\n if (!isPointerDownRef) event.currentTarget?.click();\n }\n \"\n @keydown=\"\n async (event) => {\n const isTypingAhead = contentContext.searchRef.value !== '';\n if (disabled || (isTypingAhead && event.key === ' ')) return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n /**\n * We prevent default browser behaviour for selection keys as they should trigger\n * a selection only:\n * - prevents space from scrolling the page.\n * - if keydown causes focus to move, prevents keydown from firing on the new target.\n */\n event.preventDefault();\n }\n }\n \"\n >\n <slot />\n </MenuItemImpl>\n</template>\n"],"names":["useForwardExpose","injectMenuRootContext","injectMenuContentContext","ref","ITEM_SELECT","nextTick"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAA,MAAM,cAAcC,mCAAsB,EAAA;AAC1C,IAAA,MAAM,iBAAiBC,6CAAyB,EAAA;AAEhD,IAAM,MAAA,gBAAA,GAAmBC,QAAI,KAAK,CAAA;AAElC,IAAA,eAAe,YAAe,GAAA;AAC5B,MAAA,MAAM,WAAW,cAAe,CAAA,KAAA;AAChC,MAAI,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,QAAU,EAAA;AAC/B,QAAM,MAAA,eAAA,GAAkB,IAAI,WAAA,CAAYC,sBAAa,EAAA;AAAA,UACnD,OAAS,EAAA,IAAA;AAAA,UACT,UAAY,EAAA;AAAA,SACb,CAAA;AACD,QAAA,KAAA,CAAM,UAAU,eAAe,CAAA;AAE/B,QAAA,MAAMC,YAAS,EAAA;AACf,QAAA,IAAI,eAAgB,CAAA,gBAAA;AAClB,UAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA,yBACV,OAAQ,EAAA;AAAA;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sources":["../../src/Menu/MenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport { useForwardExpose } from '@/shared'\n\nexport type MenuItemEmits = {\n /**\n * Event handler called when the user selects an item (via mouse or keyboard). <br>\n * Calling `event.preventDefault` in this handler will prevent the menu from closing when selecting that item.\n */\n select: [event: Event]\n}\n\nexport interface MenuItemProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, ref } from 'vue'\nimport MenuItemImpl from './MenuItemImpl.vue'\nimport { injectMenuRootContext } from './MenuRoot.vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport { ITEM_SELECT, SELECTION_KEYS } from './utils'\n\nconst props = defineProps<MenuItemProps>()\nconst emits = defineEmits<MenuItemEmits>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectMenuRootContext()\nconst contentContext = injectMenuContentContext()\n\nconst isPointerDownRef = ref(false)\n\nasync function handleSelect() {\n const menuItem = currentElement.value\n if (!props.disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true,\n })\n emits('select', itemSelectEvent)\n // let select event finish\n await nextTick()\n if (itemSelectEvent.defaultPrevented)\n isPointerDownRef.value = false\n else rootContext.onClose()\n }\n}\n</script>\n\n<template>\n <MenuItemImpl\n v-bind=\"props\"\n :ref=\"forwardRef\"\n @click=\"handleSelect\"\n @pointerdown=\"\n () => {\n isPointerDownRef = true;\n }\n \"\n @pointerup=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n // Pointer down can move to a different menu item which should activate it on pointer up.\n // We dispatch a click for selection to allow composition with click based triggers and to\n // prevent Firefox from getting stuck in text selection mode when the menu closes.\n if (!isPointerDownRef) event.currentTarget?.click();\n }\n \"\n @keydown=\"\n async (event) => {\n const isTypingAhead = contentContext.searchRef.value !== '';\n if (disabled || (isTypingAhead && event.key === ' ')) return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n /**\n * We prevent default browser behaviour for selection keys as they should trigger\n * a selection only:\n * - prevents space from scrolling the page.\n * - if keydown causes focus to move, prevents keydown from firing on the new target.\n */\n event.preventDefault();\n }\n }\n \"\n >\n <slot />\n </MenuItemImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,MAAM,cAAc,qBAAsB,EAAA;AAC1C,IAAA,MAAM,iBAAiB,wBAAyB,EAAA;AAEhD,IAAM,MAAA,gBAAA,GAAmB,IAAI,KAAK,CAAA;AAElC,IAAA,eAAe,YAAe,GAAA;AAC5B,MAAA,MAAM,WAAW,cAAe,CAAA,KAAA;AAChC,MAAI,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,QAAU,EAAA;AAC/B,QAAM,MAAA,eAAA,GAAkB,IAAI,WAAA,CAAY,WAAa,EAAA;AAAA,UACnD,OAAS,EAAA,IAAA;AAAA,UACT,UAAY,EAAA;AAAA,SACb,CAAA;AACD,QAAA,KAAA,CAAM,UAAU,eAAe,CAAA;AAE/B,QAAA,MAAM,QAAS,EAAA;AACf,QAAA,IAAI,eAAgB,CAAA,gBAAA;AAClB,UAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA,yBACV,OAAQ,EAAA;AAAA;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItem.js","sources":["../../src/Menu/MenuItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuItemImplProps } from './MenuItemImpl.vue'\nimport { useForwardExpose } from '@/shared'\n\nexport type MenuItemEmits = {\n /**\n * Event handler called when the user selects an item (via mouse or keyboard). <br>\n * Calling `event.preventDefault` in this handler will prevent the menu from closing when selecting that item.\n */\n select: [event: Event]\n}\n\nexport interface MenuItemProps extends MenuItemImplProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, ref } from 'vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport MenuItemImpl from './MenuItemImpl.vue'\nimport { injectMenuRootContext } from './MenuRoot.vue'\nimport { ITEM_SELECT, SELECTION_KEYS } from './utils'\n\nconst props = defineProps<MenuItemProps>()\nconst emits = defineEmits<MenuItemEmits>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectMenuRootContext()\nconst contentContext = injectMenuContentContext()\n\nconst isPointerDownRef = ref(false)\n\nasync function handleSelect() {\n const menuItem = currentElement.value\n if (!props.disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true,\n })\n emits('select', itemSelectEvent)\n // let select event finish\n await nextTick()\n if (itemSelectEvent.defaultPrevented)\n isPointerDownRef.value = false\n else rootContext.onClose()\n }\n}\n</script>\n\n<template>\n <MenuItemImpl\n v-bind=\"props\"\n :ref=\"forwardRef\"\n @click=\"handleSelect\"\n @pointerdown=\"\n () => {\n isPointerDownRef = true;\n }\n \"\n @pointerup=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n // Pointer down can move to a different menu item which should activate it on pointer up.\n // We dispatch a click for selection to allow composition with click based triggers and to\n // prevent Firefox from getting stuck in text selection mode when the menu closes.\n if (!isPointerDownRef) event.currentTarget?.click();\n }\n \"\n @keydown=\"\n async (event) => {\n const isTypingAhead = contentContext.searchRef.value !== '';\n if (disabled || (isTypingAhead && event.key === ' ')) return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n /**\n * We prevent default browser behaviour for selection keys as they should trigger\n * a selection only:\n * - prevents space from scrolling the page.\n * - if keydown causes focus to move, prevents keydown from firing on the new target.\n */\n event.preventDefault();\n }\n }\n \"\n >\n <slot />\n </MenuItemImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,MAAM,cAAc,qBAAsB,EAAA;AAC1C,IAAA,MAAM,iBAAiB,wBAAyB,EAAA;AAEhD,IAAM,MAAA,gBAAA,GAAmB,IAAI,KAAK,CAAA;AAElC,IAAA,eAAe,YAAe,GAAA;AAC5B,MAAA,MAAM,WAAW,cAAe,CAAA,KAAA;AAChC,MAAI,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,QAAU,EAAA;AAC/B,QAAM,MAAA,eAAA,GAAkB,IAAI,WAAA,CAAY,WAAa,EAAA;AAAA,UACnD,OAAS,EAAA,IAAA;AAAA,UACT,UAAY,EAAA;AAAA,SACb,CAAA;AACD,QAAA,KAAA,CAAM,UAAU,eAAe,CAAA;AAE/B,QAAA,MAAM,QAAS,EAAA;AACf,QAAA,IAAI,eAAgB,CAAA,gBAAA;AAClB,UAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AAAA,yBACV,OAAQ,EAAA;AAAA;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const Menu_utils = require('./utils.cjs');
5
4
  const Collection_Collection = require('../Collection/Collection.cjs');
5
+ const Menu_utils = require('./utils.cjs');
6
6
  const Menu_MenuContentImpl = require('./MenuContentImpl.cjs');
7
7
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
8
8
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemImpl.cjs","sources":["../../src/Menu/MenuItemImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface MenuItemImplProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes. By default the typeahead behavior will use the `.textContent` of the item. <br>\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, ref } from 'vue'\nimport { isMouseEvent } from './utils'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useForwardExpose } from '@/shared'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<MenuItemImplProps>()\n\nconst contentContext = injectMenuContentContext()\nconst { forwardRef } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isFocused = ref(false)\n\nasync function handlePointerMove(event: PointerEvent) {\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n if (props.disabled) {\n contentContext.onItemLeave(event)\n }\n else {\n const defaultPrevented = contentContext.onItemEnter(event)\n if (!defaultPrevented) {\n const item = event.currentTarget;\n (item as HTMLElement)?.focus({ preventScroll: true })\n }\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n contentContext.onItemLeave(event)\n}\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"menuitem\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @focus=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented || disabled) return;\n isFocused = true;\n }\n \"\n @blur=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n isFocused = false;\n }\n \"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":["injectMenuContentContext","useForwardExpose","useCollection","ref","isMouseEvent","nextTick"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,iBAAiBA,6CAAyB,EAAA;AAChD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AACxC,IAAM,MAAA,EAAE,cAAe,EAAA,GAAIC,mCAAc,EAAA;AAEzC,IAAM,MAAA,SAAA,GAAYC,QAAI,KAAK,CAAA;AAE3B,IAAA,eAAe,kBAAkB,KAAqB,EAAA;AACpD,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAACC,wBAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA,OAE7B,MAAA;AACH,QAAM,MAAA,gBAAA,GAAmB,cAAe,CAAA,WAAA,CAAY,KAAK,CAAA;AACzD,QAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,UAAA,MAAM,OAAO,KAAM,CAAA,aAAA;AACnB,UAAC,IAAsB,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA;AACtD;AACF;AAGF,IAAA,eAAe,mBAAmB,KAAqB,EAAA;AACrD,MAAA,MAAMC,YAAS,EAAA;AACf,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAACD,wBAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItemImpl.cjs","sources":["../../src/Menu/MenuItemImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface MenuItemImplProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes. By default the typeahead behavior will use the `.textContent` of the item. <br>\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useCollection } from '@/Collection'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { nextTick, ref } from 'vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport { isMouseEvent } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<MenuItemImplProps>()\n\nconst contentContext = injectMenuContentContext()\nconst { forwardRef } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isFocused = ref(false)\n\nasync function handlePointerMove(event: PointerEvent) {\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n if (props.disabled) {\n contentContext.onItemLeave(event)\n }\n else {\n const defaultPrevented = contentContext.onItemEnter(event)\n if (!defaultPrevented) {\n const item = event.currentTarget;\n (item as HTMLElement)?.focus({ preventScroll: true })\n }\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n contentContext.onItemLeave(event)\n}\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"menuitem\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @focus=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented || disabled) return;\n isFocused = true;\n }\n \"\n @blur=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n isFocused = false;\n }\n \"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":["injectMenuContentContext","useForwardExpose","useCollection","ref","isMouseEvent","nextTick"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,iBAAiBA,6CAAyB,EAAA;AAChD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AACxC,IAAM,MAAA,EAAE,cAAe,EAAA,GAAIC,mCAAc,EAAA;AAEzC,IAAM,MAAA,SAAA,GAAYC,QAAI,KAAK,CAAA;AAE3B,IAAA,eAAe,kBAAkB,KAAqB,EAAA;AACpD,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAACC,wBAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA,OAE7B,MAAA;AACH,QAAM,MAAA,gBAAA,GAAmB,cAAe,CAAA,WAAA,CAAY,KAAK,CAAA;AACzD,QAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,UAAA,MAAM,OAAO,KAAM,CAAA,aAAA;AACnB,UAAC,IAAsB,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA;AACtD;AACF;AAGF,IAAA,eAAe,mBAAmB,KAAqB,EAAA;AACrD,MAAA,MAAMC,YAAS,EAAA;AACf,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAACD,wBAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, createBlock, openBlock, unref, withCtx, createVNode, mergeProps, nextTick, renderSlot } from 'vue';
2
- import { c as isMouseEvent } from './utils.js';
3
2
  import { u as useCollection } from '../Collection/Collection.js';
3
+ import { c as isMouseEvent } from './utils.js';
4
4
  import { i as injectMenuContentContext } from './MenuContentImpl.js';
5
5
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
6
6
  import { P as Primitive } from '../Primitive/Primitive.js';
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemImpl.js","sources":["../../src/Menu/MenuItemImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface MenuItemImplProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes. By default the typeahead behavior will use the `.textContent` of the item. <br>\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, ref } from 'vue'\nimport { isMouseEvent } from './utils'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useForwardExpose } from '@/shared'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<MenuItemImplProps>()\n\nconst contentContext = injectMenuContentContext()\nconst { forwardRef } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isFocused = ref(false)\n\nasync function handlePointerMove(event: PointerEvent) {\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n if (props.disabled) {\n contentContext.onItemLeave(event)\n }\n else {\n const defaultPrevented = contentContext.onItemEnter(event)\n if (!defaultPrevented) {\n const item = event.currentTarget;\n (item as HTMLElement)?.focus({ preventScroll: true })\n }\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n contentContext.onItemLeave(event)\n}\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"menuitem\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @focus=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented || disabled) return;\n isFocused = true;\n }\n \"\n @blur=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n isFocused = false;\n }\n \"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,iBAAiB,wBAAyB,EAAA;AAChD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAM,MAAA,EAAE,cAAe,EAAA,GAAI,aAAc,EAAA;AAEzC,IAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA;AAE3B,IAAA,eAAe,kBAAkB,KAAqB,EAAA;AACpD,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,aAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA,OAE7B,MAAA;AACH,QAAM,MAAA,gBAAA,GAAmB,cAAe,CAAA,WAAA,CAAY,KAAK,CAAA;AACzD,QAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,UAAA,MAAM,OAAO,KAAM,CAAA,aAAA;AACnB,UAAC,IAAsB,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA;AACtD;AACF;AAGF,IAAA,eAAe,mBAAmB,KAAqB,EAAA;AACrD,MAAA,MAAM,QAAS,EAAA;AACf,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,aAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItemImpl.js","sources":["../../src/Menu/MenuItemImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface MenuItemImplProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes. By default the typeahead behavior will use the `.textContent` of the item. <br>\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useCollection } from '@/Collection'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { nextTick, ref } from 'vue'\nimport { injectMenuContentContext } from './MenuContentImpl.vue'\nimport { isMouseEvent } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<MenuItemImplProps>()\n\nconst contentContext = injectMenuContentContext()\nconst { forwardRef } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isFocused = ref(false)\n\nasync function handlePointerMove(event: PointerEvent) {\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n if (props.disabled) {\n contentContext.onItemLeave(event)\n }\n else {\n const defaultPrevented = contentContext.onItemEnter(event)\n if (!defaultPrevented) {\n const item = event.currentTarget;\n (item as HTMLElement)?.focus({ preventScroll: true })\n }\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (!isMouseEvent(event))\n return\n\n contentContext.onItemLeave(event)\n}\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"menuitem\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @focus=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented || disabled) return;\n isFocused = true;\n }\n \"\n @blur=\"\n async (event) => {\n await nextTick();\n if (event.defaultPrevented) return;\n isFocused = false;\n }\n \"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,iBAAiB,wBAAyB,EAAA;AAChD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAM,MAAA,EAAE,cAAe,EAAA,GAAI,aAAc,EAAA;AAEzC,IAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA;AAE3B,IAAA,eAAe,kBAAkB,KAAqB,EAAA;AACpD,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,aAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA,OAE7B,MAAA;AACH,QAAM,MAAA,gBAAA,GAAmB,cAAe,CAAA,WAAA,CAAY,KAAK,CAAA;AACzD,QAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,UAAA,MAAM,OAAO,KAAM,CAAA,aAAA;AACnB,UAAC,IAAsB,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA;AACtD;AACF;AAGF,IAAA,eAAe,mBAAmB,KAAqB,EAAA;AACrD,MAAA,MAAM,QAAS,EAAA;AACf,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,aAAa,KAAK,CAAA;AACrB,QAAA;AAEF,MAAA,cAAA,CAAe,YAAY,KAAK,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemIndicator.cjs","sources":["../../src/Menu/MenuItemIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext } from '@/shared'\nimport type { CheckedState } from './utils'\n\ninterface MenuItemIndicatorContext {\n modelValue: Ref<CheckedState>\n}\n\nexport interface MenuItemIndicatorProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport const [injectMenuItemIndicatorContext, provideMenuItemIndicatorContext]\n = createContext<MenuItemIndicatorContext>(\n ['MenuCheckboxItem', 'MenuRadioItem'],\n 'MenuItemIndicatorContext',\n )\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { getCheckedState, isIndeterminate } from './utils'\nimport { Primitive } from '@/Primitive'\nimport { Presence } from '@/Presence'\n\nwithDefaults(defineProps<MenuItemIndicatorProps>(), {\n as: 'span',\n})\n\nconst indicatorContext = injectMenuItemIndicatorContext({\n modelValue: ref(false),\n})\n</script>\n\n<template>\n <Presence\n :present=\"\n forceMount\n || isIndeterminate(indicatorContext.modelValue.value)\n || indicatorContext.modelValue.value === true\n \"\n >\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n :data-state=\"getCheckedState(indicatorContext.modelValue.value)\"\n >\n <slot />\n </Primitive>\n </Presence>\n</template>\n"],"names":["createContext","ref"],"mappings":";;;;;;;;AAkBa,MAAA,CAAC,8BAAgC,EAAA,+BAA+B,CACzE,GAAAA,kCAAA;AAAA,EACA,CAAC,oBAAoB,eAAe,CAAA;AAAA,EACpC;AACF;;;;;;;;;AAaF,IAAA,MAAM,mBAAmB,8BAA+B,CAAA;AAAA,MACtD,UAAA,EAAYC,QAAI,KAAK;AAAA,KACtB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItemIndicator.cjs","sources":["../../src/Menu/MenuItemIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport type { CheckedState } from './utils'\nimport { createContext } from '@/shared'\n\ninterface MenuItemIndicatorContext {\n modelValue: Ref<CheckedState>\n}\n\nexport interface MenuItemIndicatorProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport const [injectMenuItemIndicatorContext, provideMenuItemIndicatorContext]\n = createContext<MenuItemIndicatorContext>(\n ['MenuCheckboxItem', 'MenuRadioItem'],\n 'MenuItemIndicatorContext',\n )\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport { Primitive } from '@/Primitive'\nimport { ref } from 'vue'\nimport { getCheckedState, isIndeterminate } from './utils'\n\nwithDefaults(defineProps<MenuItemIndicatorProps>(), {\n as: 'span',\n})\n\nconst indicatorContext = injectMenuItemIndicatorContext({\n modelValue: ref(false),\n})\n</script>\n\n<template>\n <Presence\n :present=\"\n forceMount\n || isIndeterminate(indicatorContext.modelValue.value)\n || indicatorContext.modelValue.value === true\n \"\n >\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n :data-state=\"getCheckedState(indicatorContext.modelValue.value)\"\n >\n <slot />\n </Primitive>\n </Presence>\n</template>\n"],"names":["createContext","ref"],"mappings":";;;;;;;;AAkBa,MAAA,CAAC,8BAAgC,EAAA,+BAA+B,CACzE,GAAAA,kCAAA;AAAA,EACA,CAAC,oBAAoB,eAAe,CAAA;AAAA,EACpC;AACF;;;;;;;;;AAaF,IAAA,MAAM,mBAAmB,8BAA+B,CAAA;AAAA,MACtD,UAAA,EAAYC,QAAI,KAAK;AAAA,KACtB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemIndicator.js","sources":["../../src/Menu/MenuItemIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext } from '@/shared'\nimport type { CheckedState } from './utils'\n\ninterface MenuItemIndicatorContext {\n modelValue: Ref<CheckedState>\n}\n\nexport interface MenuItemIndicatorProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport const [injectMenuItemIndicatorContext, provideMenuItemIndicatorContext]\n = createContext<MenuItemIndicatorContext>(\n ['MenuCheckboxItem', 'MenuRadioItem'],\n 'MenuItemIndicatorContext',\n )\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { getCheckedState, isIndeterminate } from './utils'\nimport { Primitive } from '@/Primitive'\nimport { Presence } from '@/Presence'\n\nwithDefaults(defineProps<MenuItemIndicatorProps>(), {\n as: 'span',\n})\n\nconst indicatorContext = injectMenuItemIndicatorContext({\n modelValue: ref(false),\n})\n</script>\n\n<template>\n <Presence\n :present=\"\n forceMount\n || isIndeterminate(indicatorContext.modelValue.value)\n || indicatorContext.modelValue.value === true\n \"\n >\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n :data-state=\"getCheckedState(indicatorContext.modelValue.value)\"\n >\n <slot />\n </Primitive>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;AAkBa,MAAA,CAAC,8BAAgC,EAAA,+BAA+B,CACzE,GAAA,aAAA;AAAA,EACA,CAAC,oBAAoB,eAAe,CAAA;AAAA,EACpC;AACF;;;;;;;;;AAaF,IAAA,MAAM,mBAAmB,8BAA+B,CAAA;AAAA,MACtD,UAAA,EAAY,IAAI,KAAK;AAAA,KACtB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuItemIndicator.js","sources":["../../src/Menu/MenuItemIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport type { CheckedState } from './utils'\nimport { createContext } from '@/shared'\n\ninterface MenuItemIndicatorContext {\n modelValue: Ref<CheckedState>\n}\n\nexport interface MenuItemIndicatorProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport const [injectMenuItemIndicatorContext, provideMenuItemIndicatorContext]\n = createContext<MenuItemIndicatorContext>(\n ['MenuCheckboxItem', 'MenuRadioItem'],\n 'MenuItemIndicatorContext',\n )\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport { Primitive } from '@/Primitive'\nimport { ref } from 'vue'\nimport { getCheckedState, isIndeterminate } from './utils'\n\nwithDefaults(defineProps<MenuItemIndicatorProps>(), {\n as: 'span',\n})\n\nconst indicatorContext = injectMenuItemIndicatorContext({\n modelValue: ref(false),\n})\n</script>\n\n<template>\n <Presence\n :present=\"\n forceMount\n || isIndeterminate(indicatorContext.modelValue.value)\n || indicatorContext.modelValue.value === true\n \"\n >\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n :data-state=\"getCheckedState(indicatorContext.modelValue.value)\"\n >\n <slot />\n </Primitive>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;AAkBa,MAAA,CAAC,8BAAgC,EAAA,+BAA+B,CACzE,GAAA,aAAA;AAAA,EACA,CAAC,oBAAoB,eAAe,CAAA;AAAA,EACpC;AACF;;;;;;;;;AAaF,IAAA,MAAM,mBAAmB,8BAA+B,CAAA;AAAA,MACtD,UAAA,EAAY,IAAI,KAAK;AAAA,KACtB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const Menu_utils = require('./utils.cjs');
5
4
  const Menu_MenuItem = require('./MenuItem.cjs');
5
+ const Menu_utils = require('./utils.cjs');
6
6
  const Menu_MenuRadioGroup = require('./MenuRadioGroup.cjs');
7
7
  const Menu_MenuItemIndicator = require('./MenuItemIndicator.cjs');
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"MenuRadioItem.cjs","sources":["../../src/Menu/MenuRadioItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\n\nexport type MenuRadioItemEmits = MenuItemEmits\n\nexport interface MenuRadioItemProps extends MenuItemProps {\n /** The unique value of the item. */\n value: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs } from 'vue'\nimport { getCheckedState } from './utils'\nimport MenuItem from './MenuItem.vue'\nimport { injectMenuRadioGroupContext } from './MenuRadioGroup.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\n\nconst props = defineProps<MenuRadioItemProps>()\nconst emits = defineEmits<MenuRadioItemEmits>()\n\nconst { value } = toRefs(props)\nconst radioGroupContext = injectMenuRadioGroupContext()\nconst modelValue = computed(\n () => radioGroupContext.modelValue.value === value?.value,\n)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemradio\"\n v-bind=\"props\"\n :aria-checked=\"modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n radioGroupContext.onValueChange(value);\n }\n \"\n >\n <slot />\n </MenuItem>\n</template>\n"],"names":["toRefs","injectMenuRadioGroupContext","computed","provideMenuItemIndicatorContext"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,KAAA,EAAU,GAAAA,UAAA,CAAO,KAAK,CAAA;AAC9B,IAAA,MAAM,oBAAoBC,+CAA4B,EAAA;AACtD,IAAA,MAAM,UAAa,GAAAC,YAAA;AAAA,MACjB,MAAM,iBAAA,CAAkB,UAAW,CAAA,KAAA,KAAU,KAAO,EAAA;AAAA,KACtD;AAEA,IAAgCC,sDAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuRadioItem.cjs","sources":["../../src/Menu/MenuRadioItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\n\nexport type MenuRadioItemEmits = MenuItemEmits\n\nexport interface MenuRadioItemProps extends MenuItemProps {\n /** The unique value of the item. */\n value: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs } from 'vue'\nimport MenuItem from './MenuItem.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\nimport { injectMenuRadioGroupContext } from './MenuRadioGroup.vue'\nimport { getCheckedState } from './utils'\n\nconst props = defineProps<MenuRadioItemProps>()\nconst emits = defineEmits<MenuRadioItemEmits>()\n\nconst { value } = toRefs(props)\nconst radioGroupContext = injectMenuRadioGroupContext()\nconst modelValue = computed(\n () => radioGroupContext.modelValue.value === value?.value,\n)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemradio\"\n v-bind=\"props\"\n :aria-checked=\"modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n radioGroupContext.onValueChange(value);\n }\n \"\n >\n <slot />\n </MenuItem>\n</template>\n"],"names":["toRefs","injectMenuRadioGroupContext","computed","provideMenuItemIndicatorContext"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,KAAA,EAAU,GAAAA,UAAA,CAAO,KAAK,CAAA;AAC9B,IAAA,MAAM,oBAAoBC,+CAA4B,EAAA;AACtD,IAAA,MAAM,UAAa,GAAAC,YAAA;AAAA,MACjB,MAAM,iBAAA,CAAkB,UAAW,CAAA,KAAA,KAAU,KAAO,EAAA;AAAA,KACtD;AAEA,IAAgCC,sDAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, toRefs, computed, createBlock, openBlock, mergeProps, unref, withCtx, renderSlot } from 'vue';
2
- import { a as getCheckedState } from './utils.js';
3
2
  import { _ as _sfc_main$1 } from './MenuItem.js';
3
+ import { a as getCheckedState } from './utils.js';
4
4
  import { i as injectMenuRadioGroupContext } from './MenuRadioGroup.js';
5
5
  import { p as provideMenuItemIndicatorContext } from './MenuItemIndicator.js';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"MenuRadioItem.js","sources":["../../src/Menu/MenuRadioItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\n\nexport type MenuRadioItemEmits = MenuItemEmits\n\nexport interface MenuRadioItemProps extends MenuItemProps {\n /** The unique value of the item. */\n value: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs } from 'vue'\nimport { getCheckedState } from './utils'\nimport MenuItem from './MenuItem.vue'\nimport { injectMenuRadioGroupContext } from './MenuRadioGroup.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\n\nconst props = defineProps<MenuRadioItemProps>()\nconst emits = defineEmits<MenuRadioItemEmits>()\n\nconst { value } = toRefs(props)\nconst radioGroupContext = injectMenuRadioGroupContext()\nconst modelValue = computed(\n () => radioGroupContext.modelValue.value === value?.value,\n)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemradio\"\n v-bind=\"props\"\n :aria-checked=\"modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n radioGroupContext.onValueChange(value);\n }\n \"\n >\n <slot />\n </MenuItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,KAAA,EAAU,GAAA,MAAA,CAAO,KAAK,CAAA;AAC9B,IAAA,MAAM,oBAAoB,2BAA4B,EAAA;AACtD,IAAA,MAAM,UAAa,GAAA,QAAA;AAAA,MACjB,MAAM,iBAAA,CAAkB,UAAW,CAAA,KAAA,KAAU,KAAO,EAAA;AAAA,KACtD;AAEA,IAAgC,+BAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MenuRadioItem.js","sources":["../../src/Menu/MenuRadioItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuItemEmits,\n MenuItemProps,\n} from './MenuItem.vue'\n\nexport type MenuRadioItemEmits = MenuItemEmits\n\nexport interface MenuRadioItemProps extends MenuItemProps {\n /** The unique value of the item. */\n value: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs } from 'vue'\nimport MenuItem from './MenuItem.vue'\nimport { provideMenuItemIndicatorContext } from './MenuItemIndicator.vue'\nimport { injectMenuRadioGroupContext } from './MenuRadioGroup.vue'\nimport { getCheckedState } from './utils'\n\nconst props = defineProps<MenuRadioItemProps>()\nconst emits = defineEmits<MenuRadioItemEmits>()\n\nconst { value } = toRefs(props)\nconst radioGroupContext = injectMenuRadioGroupContext()\nconst modelValue = computed(\n () => radioGroupContext.modelValue.value === value?.value,\n)\n\nprovideMenuItemIndicatorContext({ modelValue })\n</script>\n\n<template>\n <MenuItem\n role=\"menuitemradio\"\n v-bind=\"props\"\n :aria-checked=\"modelValue\"\n :data-state=\"getCheckedState(modelValue)\"\n @select=\"\n async (event) => {\n emits('select', event);\n radioGroupContext.onValueChange(value);\n }\n \"\n >\n <slot />\n </MenuItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,KAAA,EAAU,GAAA,MAAA,CAAO,KAAK,CAAA;AAC9B,IAAA,MAAM,oBAAoB,2BAA4B,EAAA;AACtD,IAAA,MAAM,UAAa,GAAA,QAAA;AAAA,MACjB,MAAM,iBAAA,CAAkB,UAAW,CAAA,KAAA,KAAU,KAAO,EAAA;AAAA,KACtD;AAEA,IAAgC,+BAAA,CAAA,EAAE,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const core = require('@vueuse/core');
5
4
  const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
5
+ const core = require('@vueuse/core');
6
6
  const shared_useIsUsingKeyboard = require('../shared/useIsUsingKeyboard.cjs');
7
- const shared_useDirection = require('../shared/useDirection.cjs');
8
7
  const shared_createContext = require('../shared/createContext.cjs');
8
+ const shared_useDirection = require('../shared/useDirection.cjs');
9
9
 
10
10
  const [injectMenuContext, provideMenuContext] = shared_createContext.createContext(["MenuRoot", "MenuSub"], "MenuContext");
11
11
  const [injectMenuRootContext, provideMenuRootContext] = shared_createContext.createContext("MenuRoot");