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,14 +1,14 @@
1
1
  import { defineComponent, toRefs, ref, computed, watch, onMounted, createBlock, openBlock, unref, withCtx, createElementVNode, renderSlot, toDisplayString } from 'vue';
2
2
  import { useVModel, useEventListener } from '@vueuse/core';
3
- import { isEqualDay } from '@internationalized/date';
3
+ import { u as useCalendar } from '../Calendar/useCalendar.js';
4
4
  import { n as getDefaultDate, b as isBefore } from '../date/comparators.js';
5
+ import { isEqualDay } from '@internationalized/date';
5
6
  import { u as useRangeCalendarState } from './useRangeCalendar.js';
6
- import { u as useCalendar } from '../Calendar/useCalendar.js';
7
- import { c as createContext } from '../shared/createContext.js';
8
7
  import { u as usePrimitiveElement } from '../Primitive/usePrimitiveElement.js';
9
8
  import { u as useDirection } from '../shared/useDirection.js';
10
9
  import { u as useLocale } from '../shared/useLocale.js';
11
10
  import { u as useKbd } from '../shared/useKbd.js';
11
+ import { c as createContext } from '../shared/createContext.js';
12
12
  import { P as Primitive } from '../Primitive/Primitive.js';
13
13
  import { i as isNullish } from '../shared/nullish.js';
14
14
  import { h as handleCalendarInitialFocus } from '../date/utils.js';
@@ -42,6 +42,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
42
42
  initialFocus: { type: Boolean, default: false },
43
43
  isDateDisabled: { type: Function, default: void 0 },
44
44
  isDateUnavailable: { type: Function, default: void 0 },
45
+ isDateHighlightable: { type: Function, default: void 0 },
45
46
  dir: {},
46
47
  nextPage: {},
47
48
  prevPage: {},
@@ -63,6 +64,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
63
64
  numberOfMonths,
64
65
  preventDeselect,
65
66
  isDateUnavailable: propsIsDateUnavailable,
67
+ isDateHighlightable: propsIsDateHighlightable,
66
68
  isDateDisabled: propsIsDateDisabled,
67
69
  calendarLabel,
68
70
  maxValue,
@@ -131,6 +133,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
131
133
  const {
132
134
  isInvalid,
133
135
  isSelected,
136
+ isDateHighlightable,
134
137
  highlightedRange,
135
138
  isSelectionStart,
136
139
  isSelectionEnd,
@@ -141,6 +144,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
141
144
  end: endValue,
142
145
  isDateDisabled,
143
146
  isDateUnavailable,
147
+ isDateHighlightable: propsIsDateHighlightable.value,
144
148
  focusedValue,
145
149
  allowNonContiguousRanges
146
150
  });
@@ -188,6 +192,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
188
192
  });
189
193
  provideRangeCalendarRootContext({
190
194
  isDateUnavailable,
195
+ isDateHighlightable,
191
196
  startValue,
192
197
  endValue,
193
198
  formatter,
@@ -1 +1 @@
1
- {"version":3,"file":"RangeCalendarRoot.js","sources":["../../src/RangeCalendar/RangeCalendarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { type DateValue, isEqualDay } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Formatter, createContext, isNullish, useDirection, useKbd, useLocale } from '@/shared'\nimport { getDefaultDate, handleCalendarInitialFocus } from '@/shared/date'\nimport { type Grid, type Matcher, type WeekDayFormat, isBefore } from '@/date'\nimport type { DateRange } from '@/shared/date'\nimport { useRangeCalendarState } from './useRangeCalendar'\nimport { useCalendar } from '@/Calendar/useCalendar'\nimport type { Direction } from '@/shared/types'\n\ntype RangeCalendarRootContext = {\n modelValue: Ref<DateRange>\n startValue: Ref<DateValue | undefined>\n endValue: Ref<DateValue | undefined>\n locale: Ref<string>\n placeholder: Ref<DateValue>\n pagedNavigation: Ref<boolean>\n preventDeselect: Ref<boolean>\n grid: Ref< Grid<DateValue>[]>\n weekDays: Ref<string[]>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n weekdayFormat: Ref<WeekDayFormat>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n initialFocus: Ref<boolean>\n onPlaceholderChange: (date: DateValue) => void\n fullCalendarLabel: Ref<string>\n parentElement: Ref<HTMLElement | undefined>\n headingValue: Ref<string>\n isInvalid: Ref<boolean>\n isDateDisabled: Matcher\n isDateUnavailable?: Matcher\n isOutsideVisibleView: (date: DateValue) => boolean\n highlightedRange: Ref<{ start: DateValue, end: DateValue } | null>\n focusedValue: Ref<DateValue | undefined>\n lastPressedDateValue: Ref<DateValue | undefined>\n isSelected: (date: DateValue) => boolean\n isSelectionEnd: (date: DateValue) => boolean\n isSelectionStart: (date: DateValue) => boolean\n isHighlightedStart: (date: DateValue) => boolean\n isHighlightedEnd: (date: DateValue) => boolean\n prevPage: (prevPageFunc?: (date: DateValue) => DateValue) => void\n nextPage: (nextPageFunc?: (date: DateValue) => DateValue) => void\n isNextButtonDisabled: (nextPageFunc?: (date: DateValue) => DateValue) => boolean\n isPrevButtonDisabled: (prevPageFunc?: (date: DateValue) => DateValue) => boolean\n formatter: Formatter\n dir: Ref<Direction>\n}\n\nexport interface RangeCalendarRootProps extends PrimitiveProps {\n /** The default placeholder date */\n defaultPlaceholder?: DateValue\n /** The default value for the calendar */\n defaultValue?: DateRange\n /** The controlled checked state of the calendar. Can be bound as `v-model`. */\n modelValue?: DateRange | null\n /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */\n placeholder?: DateValue\n /** When combined with `isDateUnavailable`, determines whether non-contiguous ranges, i.e. ranges containing unavailable dates, may be selected. */\n allowNonContiguousRanges?: boolean\n /** This property causes the previous and next buttons to navigate by the number of months displayed at once, rather than one month */\n pagedNavigation?: boolean\n /** Whether or not to prevent the user from deselecting a date without selecting another date first */\n preventDeselect?: boolean\n /** The day of the week to start the calendar on */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The format to use for the weekday strings provided via the weekdays slot prop */\n weekdayFormat?: WeekDayFormat\n /** The accessible label for the calendar */\n calendarLabel?: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks?: boolean\n /** The maximum date that can be selected */\n maxValue?: DateValue\n /** The minimum date that can be selected */\n minValue?: DateValue\n /** The locale to use for formatting dates */\n locale?: string\n /** The number of months to display at once */\n numberOfMonths?: number\n /** Whether or not the calendar is disabled */\n disabled?: boolean\n /** Whether or not the calendar is readonly */\n readonly?: boolean\n /** If true, the calendar will focus the selected day, today, or the first day of the month depending on what is visible when the calendar is mounted */\n initialFocus?: boolean\n /** A function that returns whether or not a date is disabled */\n isDateDisabled?: Matcher\n /** A function that returns whether or not a date is unavailable */\n isDateUnavailable?: Matcher\n /** The reading direction of the calendar when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** A function that returns the next page of the calendar. It receives the current placeholder as an argument inside the component. */\n nextPage?: (placeholder: DateValue) => DateValue\n /** A function that returns the previous page of the calendar. It receives the current placeholder as an argument inside the component. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n\nexport type RangeCalendarRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateRange]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n /** Event handler called whenever the start value changes */\n 'update:startValue': [date: DateValue | undefined]\n}\n\nexport const [injectRangeCalendarRootContext, provideRangeCalendarRootContext]\n = createContext<RangeCalendarRootContext>('RangeCalendarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useEventListener, useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<RangeCalendarRootProps>(), {\n defaultValue: () => ({ start: undefined, end: undefined }),\n as: 'div',\n pagedNavigation: false,\n preventDeselect: false,\n weekStartsOn: 0,\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n numberOfMonths: 1,\n disabled: false,\n readonly: false,\n initialFocus: false,\n placeholder: undefined,\n isDateDisabled: undefined,\n isDateUnavailable: undefined,\n allowNonContiguousRanges: false,\n})\nconst emits = defineEmits<RangeCalendarRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** The current date of the placeholder */\n date: DateValue\n /** The grid of dates */\n grid: Grid<DateValue>[]\n /** The days of the week */\n weekDays: string[]\n /** The start of the week */\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The calendar locale */\n locale: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks: boolean\n /** The current date range */\n modelValue: DateRange\n }) => any\n}>()\n\nconst {\n disabled,\n readonly,\n initialFocus,\n pagedNavigation,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n numberOfMonths,\n preventDeselect,\n isDateUnavailable: propsIsDateUnavailable,\n isDateDisabled: propsIsDateDisabled,\n calendarLabel,\n maxValue,\n minValue,\n dir: propDir,\n locale: propLocale,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n allowNonContiguousRanges,\n} = toRefs(props)\n\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst dir = useDirection(propDir)\nconst locale = useLocale(propLocale)\n\nconst lastPressedDateValue = ref() as Ref<DateValue | undefined>\nconst focusedValue = ref() as Ref<DateValue | undefined>\nconst isEditing = ref(false)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? { start: undefined, end: undefined },\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateRange>\n\nconst currentModelValue = computed(() => isNullish(modelValue.value) ? { start: undefined, end: undefined } : modelValue.value)\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n defaultValue: currentModelValue.value.start,\n locale: props.locale,\n})\n\nconst startValue = ref(currentModelValue.value.start) as Ref<DateValue | undefined>\nconst endValue = ref(currentModelValue.value.end) as Ref<DateValue | undefined>\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nfunction onPlaceholderChange(value: DateValue) {\n placeholder.value = value.copy()\n}\n\nconst {\n fullCalendarLabel,\n headingValue,\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n grid,\n weekdays,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n formatter,\n} = useCalendar({\n locale,\n placeholder,\n weekStartsOn,\n fixedWeeks,\n numberOfMonths,\n minValue,\n maxValue,\n disabled,\n weekdayFormat,\n pagedNavigation,\n isDateDisabled: propsIsDateDisabled.value,\n isDateUnavailable: propsIsDateUnavailable.value,\n calendarLabel,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n})\n\nconst {\n isInvalid,\n isSelected,\n highlightedRange,\n isSelectionStart,\n isSelectionEnd,\n isHighlightedStart,\n isHighlightedEnd,\n} = useRangeCalendarState({\n start: startValue,\n end: endValue,\n isDateDisabled,\n isDateUnavailable,\n focusedValue,\n allowNonContiguousRanges,\n})\n\nwatch(modelValue, (_modelValue, _prevValue) => {\n if ((!_prevValue?.start && _modelValue?.start)\n || !_modelValue\n || !_modelValue.start\n || (startValue.value && !isEqualDay(_modelValue.start, startValue.value))\n ) {\n startValue.value = _modelValue?.start?.copy?.()\n }\n\n if ((!_prevValue?.end && _modelValue.end)\n || !_modelValue\n || !_modelValue.end\n || (endValue.value && !isEqualDay(_modelValue.end, endValue.value))\n ) {\n endValue.value = _modelValue?.end?.copy?.()\n }\n})\n\nwatch(startValue, (_startValue) => {\n if (_startValue && !isEqualDay(_startValue, placeholder.value))\n onPlaceholderChange(_startValue)\n\n emits('update:startValue', _startValue)\n})\n\nwatch([startValue, endValue], ([_startValue, _endValue]) => {\n const value = currentModelValue.value\n\n if (value && value.start && value.end && _startValue && _endValue && isEqualDay(value.start, _startValue) && isEqualDay(value.end, _endValue))\n return\n\n isEditing.value = true\n if (_startValue && _endValue) {\n isEditing.value = false\n if (value.start && value.end && isEqualDay(value.start, _startValue) && isEqualDay(value.end, _endValue))\n return\n if (isBefore(_endValue, _startValue)) {\n modelValue.value = {\n start: _endValue.copy(),\n end: _startValue.copy(),\n }\n }\n else {\n modelValue.value = {\n start: _startValue.copy(),\n end: _endValue.copy(),\n }\n }\n }\n})\n\nconst kbd = useKbd()\nuseEventListener('keydown', (ev) => {\n if (ev.key === kbd.ESCAPE && isEditing.value) {\n // Abort start and end selection\n startValue.value = modelValue.value.start?.copy()\n endValue.value = modelValue.value.end?.copy()\n }\n})\n\nprovideRangeCalendarRootContext({\n isDateUnavailable,\n startValue,\n endValue,\n formatter,\n modelValue,\n placeholder,\n disabled,\n initialFocus,\n pagedNavigation,\n grid,\n weekDays: weekdays,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n numberOfMonths,\n readonly,\n preventDeselect,\n fullCalendarLabel,\n headingValue,\n isInvalid,\n isDateDisabled,\n highlightedRange,\n focusedValue,\n lastPressedDateValue,\n isSelected,\n isSelectionEnd,\n isSelectionStart,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n parentElement,\n onPlaceholderChange,\n locale,\n dir,\n isHighlightedStart,\n isHighlightedEnd,\n})\n\nonMounted(() => {\n if (initialFocus.value)\n handleCalendarInitialFocus(parentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n role=\"application\"\n :aria-label=\"fullCalendarLabel\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n >\n <div style=\"border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; white-space: nowrap; width: 1px;\">\n <div\n role=\"heading\"\n aria-level=\"2\"\n >\n {{ fullCalendarLabel }}\n </div>\n </div>\n\n <slot\n :date=\"placeholder\"\n :grid=\"grid\"\n :week-days=\"weekdays\"\n :week-starts-on=\"weekStartsOn\"\n :locale=\"locale\"\n :fixed-weeks=\"fixedWeeks\"\n :model-value=\"modelValue\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RangeCalendarRoot.js","sources":["../../src/RangeCalendar/RangeCalendarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Formatter } from '@/shared'\nimport type { DateRange } from '@/shared/date'\nimport type { Direction } from '@/shared/types'\nimport type { DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { useCalendar } from '@/Calendar/useCalendar'\nimport { isBefore } from '@/date'\nimport { createContext, isNullish, useDirection, useKbd, useLocale } from '@/shared'\nimport { getDefaultDate, handleCalendarInitialFocus } from '@/shared/date'\nimport { isEqualDay } from '@internationalized/date'\nimport { useRangeCalendarState } from './useRangeCalendar'\n\ntype RangeCalendarRootContext = {\n modelValue: Ref<DateRange>\n startValue: Ref<DateValue | undefined>\n endValue: Ref<DateValue | undefined>\n locale: Ref<string>\n placeholder: Ref<DateValue>\n pagedNavigation: Ref<boolean>\n preventDeselect: Ref<boolean>\n grid: Ref<Grid<DateValue>[]>\n weekDays: Ref<string[]>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n weekdayFormat: Ref<WeekDayFormat>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n initialFocus: Ref<boolean>\n onPlaceholderChange: (date: DateValue) => void\n fullCalendarLabel: Ref<string>\n parentElement: Ref<HTMLElement | undefined>\n headingValue: Ref<string>\n isInvalid: Ref<boolean>\n isDateDisabled: Matcher\n isDateUnavailable?: Matcher\n isDateHighlightable?: Matcher\n isOutsideVisibleView: (date: DateValue) => boolean\n highlightedRange: Ref<{ start: DateValue, end: DateValue } | null>\n focusedValue: Ref<DateValue | undefined>\n lastPressedDateValue: Ref<DateValue | undefined>\n isSelected: (date: DateValue) => boolean\n isSelectionEnd: (date: DateValue) => boolean\n isSelectionStart: (date: DateValue) => boolean\n isHighlightedStart: (date: DateValue) => boolean\n isHighlightedEnd: (date: DateValue) => boolean\n prevPage: (prevPageFunc?: (date: DateValue) => DateValue) => void\n nextPage: (nextPageFunc?: (date: DateValue) => DateValue) => void\n isNextButtonDisabled: (nextPageFunc?: (date: DateValue) => DateValue) => boolean\n isPrevButtonDisabled: (prevPageFunc?: (date: DateValue) => DateValue) => boolean\n formatter: Formatter\n dir: Ref<Direction>\n}\n\nexport interface RangeCalendarRootProps extends PrimitiveProps {\n /** The default placeholder date */\n defaultPlaceholder?: DateValue\n /** The default value for the calendar */\n defaultValue?: DateRange\n /** The controlled checked state of the calendar. Can be bound as `v-model`. */\n modelValue?: DateRange | null\n /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */\n placeholder?: DateValue\n /** When combined with `isDateUnavailable`, determines whether non-contiguous ranges, i.e. ranges containing unavailable dates, may be selected. */\n allowNonContiguousRanges?: boolean\n /** This property causes the previous and next buttons to navigate by the number of months displayed at once, rather than one month */\n pagedNavigation?: boolean\n /** Whether or not to prevent the user from deselecting a date without selecting another date first */\n preventDeselect?: boolean\n /** The day of the week to start the calendar on */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The format to use for the weekday strings provided via the weekdays slot prop */\n weekdayFormat?: WeekDayFormat\n /** The accessible label for the calendar */\n calendarLabel?: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks?: boolean\n /** The maximum date that can be selected */\n maxValue?: DateValue\n /** The minimum date that can be selected */\n minValue?: DateValue\n /** The locale to use for formatting dates */\n locale?: string\n /** The number of months to display at once */\n numberOfMonths?: number\n /** Whether or not the calendar is disabled */\n disabled?: boolean\n /** Whether or not the calendar is readonly */\n readonly?: boolean\n /** If true, the calendar will focus the selected day, today, or the first day of the month depending on what is visible when the calendar is mounted */\n initialFocus?: boolean\n /** A function that returns whether or not a date is disabled */\n isDateDisabled?: Matcher\n /** A function that returns whether or not a date is unavailable */\n isDateUnavailable?: Matcher\n /** A function that returns whether or not a date is hightable */\n isDateHighlightable?: Matcher\n /** The reading direction of the calendar when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** A function that returns the next page of the calendar. It receives the current placeholder as an argument inside the component. */\n nextPage?: (placeholder: DateValue) => DateValue\n /** A function that returns the previous page of the calendar. It receives the current placeholder as an argument inside the component. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n\nexport type RangeCalendarRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateRange]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n /** Event handler called whenever the start value changes */\n 'update:startValue': [date: DateValue | undefined]\n}\n\nexport const [injectRangeCalendarRootContext, provideRangeCalendarRootContext]\n = createContext<RangeCalendarRootContext>('RangeCalendarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useEventListener, useVModel } from '@vueuse/core'\nimport { computed, onMounted, ref, toRefs, watch } from 'vue'\n\nconst props = withDefaults(defineProps<RangeCalendarRootProps>(), {\n defaultValue: () => ({ start: undefined, end: undefined }),\n as: 'div',\n pagedNavigation: false,\n preventDeselect: false,\n weekStartsOn: 0,\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n numberOfMonths: 1,\n disabled: false,\n readonly: false,\n initialFocus: false,\n placeholder: undefined,\n isDateDisabled: undefined,\n isDateUnavailable: undefined,\n isDateHighlightable: undefined,\n allowNonContiguousRanges: false,\n})\nconst emits = defineEmits<RangeCalendarRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** The current date of the placeholder */\n date: DateValue\n /** The grid of dates */\n grid: Grid<DateValue>[]\n /** The days of the week */\n weekDays: string[]\n /** The start of the week */\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The calendar locale */\n locale: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks: boolean\n /** The current date range */\n modelValue: DateRange\n }) => any\n}>()\n\nconst {\n disabled,\n readonly,\n initialFocus,\n pagedNavigation,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n numberOfMonths,\n preventDeselect,\n isDateUnavailable: propsIsDateUnavailable,\n isDateHighlightable: propsIsDateHighlightable,\n isDateDisabled: propsIsDateDisabled,\n calendarLabel,\n maxValue,\n minValue,\n dir: propDir,\n locale: propLocale,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n allowNonContiguousRanges,\n} = toRefs(props)\n\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst dir = useDirection(propDir)\nconst locale = useLocale(propLocale)\n\nconst lastPressedDateValue = ref() as Ref<DateValue | undefined>\nconst focusedValue = ref() as Ref<DateValue | undefined>\nconst isEditing = ref(false)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? { start: undefined, end: undefined },\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateRange>\n\nconst currentModelValue = computed(() => isNullish(modelValue.value) ? { start: undefined, end: undefined } : modelValue.value)\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n defaultValue: currentModelValue.value.start,\n locale: props.locale,\n})\n\nconst startValue = ref(currentModelValue.value.start) as Ref<DateValue | undefined>\nconst endValue = ref(currentModelValue.value.end) as Ref<DateValue | undefined>\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nfunction onPlaceholderChange(value: DateValue) {\n placeholder.value = value.copy()\n}\n\nconst {\n fullCalendarLabel,\n headingValue,\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n grid,\n weekdays,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n formatter,\n} = useCalendar({\n locale,\n placeholder,\n weekStartsOn,\n fixedWeeks,\n numberOfMonths,\n minValue,\n maxValue,\n disabled,\n weekdayFormat,\n pagedNavigation,\n isDateDisabled: propsIsDateDisabled.value,\n isDateUnavailable: propsIsDateUnavailable.value,\n calendarLabel,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n})\n\nconst {\n isInvalid,\n isSelected,\n isDateHighlightable,\n highlightedRange,\n isSelectionStart,\n isSelectionEnd,\n isHighlightedStart,\n isHighlightedEnd,\n} = useRangeCalendarState({\n start: startValue,\n end: endValue,\n isDateDisabled,\n isDateUnavailable,\n isDateHighlightable: propsIsDateHighlightable.value,\n focusedValue,\n allowNonContiguousRanges,\n})\n\nwatch(modelValue, (_modelValue, _prevValue) => {\n if ((!_prevValue?.start && _modelValue?.start)\n || !_modelValue\n || !_modelValue.start\n || (startValue.value && !isEqualDay(_modelValue.start, startValue.value))\n ) {\n startValue.value = _modelValue?.start?.copy?.()\n }\n\n if ((!_prevValue?.end && _modelValue.end)\n || !_modelValue\n || !_modelValue.end\n || (endValue.value && !isEqualDay(_modelValue.end, endValue.value))\n ) {\n endValue.value = _modelValue?.end?.copy?.()\n }\n})\n\nwatch(startValue, (_startValue) => {\n if (_startValue && !isEqualDay(_startValue, placeholder.value))\n onPlaceholderChange(_startValue)\n\n emits('update:startValue', _startValue)\n})\n\nwatch([startValue, endValue], ([_startValue, _endValue]) => {\n const value = currentModelValue.value\n\n if (value && value.start && value.end && _startValue && _endValue && isEqualDay(value.start, _startValue) && isEqualDay(value.end, _endValue))\n return\n\n isEditing.value = true\n if (_startValue && _endValue) {\n isEditing.value = false\n if (value.start && value.end && isEqualDay(value.start, _startValue) && isEqualDay(value.end, _endValue))\n return\n if (isBefore(_endValue, _startValue)) {\n modelValue.value = {\n start: _endValue.copy(),\n end: _startValue.copy(),\n }\n }\n else {\n modelValue.value = {\n start: _startValue.copy(),\n end: _endValue.copy(),\n }\n }\n }\n})\n\nconst kbd = useKbd()\nuseEventListener('keydown', (ev) => {\n if (ev.key === kbd.ESCAPE && isEditing.value) {\n // Abort start and end selection\n startValue.value = modelValue.value.start?.copy()\n endValue.value = modelValue.value.end?.copy()\n }\n})\n\nprovideRangeCalendarRootContext({\n isDateUnavailable,\n isDateHighlightable,\n startValue,\n endValue,\n formatter,\n modelValue,\n placeholder,\n disabled,\n initialFocus,\n pagedNavigation,\n grid,\n weekDays: weekdays,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n numberOfMonths,\n readonly,\n preventDeselect,\n fullCalendarLabel,\n headingValue,\n isInvalid,\n isDateDisabled,\n highlightedRange,\n focusedValue,\n lastPressedDateValue,\n isSelected,\n isSelectionEnd,\n isSelectionStart,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n parentElement,\n onPlaceholderChange,\n locale,\n dir,\n isHighlightedStart,\n isHighlightedEnd,\n})\n\nonMounted(() => {\n if (initialFocus.value)\n handleCalendarInitialFocus(parentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n role=\"application\"\n :aria-label=\"fullCalendarLabel\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n >\n <div style=\"border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; white-space: nowrap; width: 1px;\">\n <div\n role=\"heading\"\n aria-level=\"2\"\n >\n {{ fullCalendarLabel }}\n </div>\n </div>\n\n <slot\n :date=\"placeholder\"\n :grid=\"grid\"\n :week-days=\"weekdays\"\n :week-starts-on=\"weekStartsOn\"\n :locale=\"locale\"\n :fixed-weeks=\"fixedWeeks\"\n :model-value=\"modelValue\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ const date_comparators = require('../date/comparators.cjs');
3
4
  const date = require('@internationalized/date');
4
5
  const vue = require('vue');
5
- const date_comparators = require('../date/comparators.cjs');
6
6
 
7
7
  function useRangeCalendarState(props) {
8
8
  const isStartInvalid = vue.computed(() => {
@@ -47,6 +47,11 @@ function useRangeCalendarState(props) {
47
47
  return date_comparators.isBetween(date$1, props.start.value, props.end.value);
48
48
  return false;
49
49
  };
50
+ const isDateHighlightable = (date) => {
51
+ if (props.isDateHighlightable?.(date))
52
+ return true;
53
+ return false;
54
+ };
50
55
  const highlightedRange = vue.computed(() => {
51
56
  if (props.start.value && props.end.value)
52
57
  return null;
@@ -61,7 +66,7 @@ function useRangeCalendarState(props) {
61
66
  end
62
67
  };
63
68
  }
64
- const isValid = props.allowNonContiguousRanges.value || date_comparators.areAllDaysBetweenValid(start, end, props.isDateUnavailable, props.isDateDisabled);
69
+ const isValid = date_comparators.areAllDaysBetweenValid(start, end, props.allowNonContiguousRanges.value ? () => false : props.isDateUnavailable, props.isDateDisabled, props.isDateHighlightable);
65
70
  if (isValid) {
66
71
  return {
67
72
  start,
@@ -83,6 +88,7 @@ function useRangeCalendarState(props) {
83
88
  return {
84
89
  isInvalid,
85
90
  isSelected,
91
+ isDateHighlightable,
86
92
  highlightedRange,
87
93
  isSelectionStart,
88
94
  isSelectionEnd,
@@ -1 +1 @@
1
- {"version":3,"file":"useRangeCalendar.cjs","sources":["../../src/RangeCalendar/useRangeCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/range-calendar/create.ts\n*/\n\nimport { type DateValue, isSameDay } from '@internationalized/date'\nimport { type Ref, computed } from 'vue'\nimport { type Matcher, areAllDaysBetweenValid, isBefore, isBetween } from '@/date'\n\nexport type UseRangeCalendarProps = {\n start: Ref<DateValue | undefined>\n end: Ref<DateValue | undefined>\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n focusedValue: Ref<DateValue | undefined>\n allowNonContiguousRanges: Ref<boolean>\n}\n\nexport function useRangeCalendarState(props: UseRangeCalendarProps) {\n const isStartInvalid = computed(() => {\n if (!props.start.value)\n return false\n if (props.isDateDisabled(props.start.value))\n return true\n return false\n })\n\n const isEndInvalid = computed(() => {\n if (!props.end.value)\n return false\n if (props.isDateDisabled(props.end.value))\n return true\n return false\n })\n\n const isInvalid = computed(\n () => {\n if (isStartInvalid.value || isEndInvalid.value)\n return false\n if (props.start.value && props.end.value && isBefore(props.end.value, props.start.value))\n return true\n return false\n },\n )\n\n const isSelectionStart = (date: DateValue) => {\n if (!props.start.value)\n return false\n return isSameDay(props.start.value, date)\n }\n\n const isSelectionEnd = (date: DateValue) => {\n if (!props.end.value)\n return false\n return isSameDay(props.end.value, date)\n }\n\n const isSelected = (date: DateValue) => {\n if (props.start.value && isSameDay(props.start.value, date))\n return true\n if (props.end.value && isSameDay(props.end.value, date))\n return true\n if (props.end.value && props.start.value)\n return isBetween(date, props.start.value, props.end.value)\n\n return false\n }\n\n const highlightedRange = computed(() => {\n if (props.start.value && props.end.value)\n return null\n if (!props.start.value || !props.focusedValue.value)\n return null\n\n const isStartBeforeFocused = isBefore(props.start.value, props.focusedValue.value)\n const start = isStartBeforeFocused ? props.start.value : props.focusedValue.value\n const end = isStartBeforeFocused ? props.focusedValue.value : props.start.value\n\n if (isSameDay(start, end)) {\n return {\n start,\n end,\n }\n }\n\n const isValid = props.allowNonContiguousRanges.value || areAllDaysBetweenValid(start, end, props.isDateUnavailable, props.isDateDisabled)\n if (isValid) {\n return {\n start,\n end,\n }\n }\n return null\n })\n\n const isHighlightedStart = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.start)\n return false\n return isSameDay(highlightedRange.value.start, date)\n }\n\n const isHighlightedEnd = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.end)\n return false\n return isSameDay(highlightedRange.value.end, date)\n }\n\n return {\n isInvalid,\n isSelected,\n highlightedRange,\n isSelectionStart,\n isSelectionEnd,\n isHighlightedStart,\n isHighlightedEnd,\n }\n}\n"],"names":["computed","isBefore","date","isSameDay","isBetween","areAllDaysBetweenValid"],"mappings":"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"}
1
+ {"version":3,"file":"useRangeCalendar.cjs","sources":["../../src/RangeCalendar/useRangeCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/range-calendar/create.ts\n*/\n\nimport type { Matcher } from '@/date'\nimport type { DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { areAllDaysBetweenValid, isBefore, isBetween } from '@/date'\nimport { isSameDay } from '@internationalized/date'\nimport { computed } from 'vue'\n\nexport type UseRangeCalendarProps = {\n start: Ref<DateValue | undefined>\n end: Ref<DateValue | undefined>\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n isDateHighlightable?: Matcher\n focusedValue: Ref<DateValue | undefined>\n allowNonContiguousRanges: Ref<boolean>\n}\n\nexport function useRangeCalendarState(props: UseRangeCalendarProps) {\n const isStartInvalid = computed(() => {\n if (!props.start.value)\n return false\n if (props.isDateDisabled(props.start.value))\n return true\n return false\n })\n\n const isEndInvalid = computed(() => {\n if (!props.end.value)\n return false\n if (props.isDateDisabled(props.end.value))\n return true\n return false\n })\n\n const isInvalid = computed(\n () => {\n if (isStartInvalid.value || isEndInvalid.value)\n return false\n if (props.start.value && props.end.value && isBefore(props.end.value, props.start.value))\n return true\n return false\n },\n )\n\n const isSelectionStart = (date: DateValue) => {\n if (!props.start.value)\n return false\n return isSameDay(props.start.value, date)\n }\n\n const isSelectionEnd = (date: DateValue) => {\n if (!props.end.value)\n return false\n return isSameDay(props.end.value, date)\n }\n\n const isSelected = (date: DateValue) => {\n if (props.start.value && isSameDay(props.start.value, date))\n return true\n if (props.end.value && isSameDay(props.end.value, date))\n return true\n if (props.end.value && props.start.value)\n return isBetween(date, props.start.value, props.end.value)\n\n return false\n }\n\n const isDateHighlightable = (date: DateValue) => {\n if (props.isDateHighlightable?.(date))\n return true\n return false\n }\n\n const highlightedRange = computed(() => {\n if (props.start.value && props.end.value)\n return null\n if (!props.start.value || !props.focusedValue.value)\n return null\n\n const isStartBeforeFocused = isBefore(props.start.value, props.focusedValue.value)\n const start = isStartBeforeFocused ? props.start.value : props.focusedValue.value\n const end = isStartBeforeFocused ? props.focusedValue.value : props.start.value\n\n if (isSameDay(start, end)) {\n return {\n start,\n end,\n }\n }\n\n const isValid = areAllDaysBetweenValid(start, end, props.allowNonContiguousRanges.value ? () => false : props.isDateUnavailable, props.isDateDisabled, props.isDateHighlightable)\n if (isValid) {\n return {\n start,\n end,\n }\n }\n return null\n })\n\n const isHighlightedStart = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.start)\n return false\n return isSameDay(highlightedRange.value.start, date)\n }\n\n const isHighlightedEnd = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.end)\n return false\n return isSameDay(highlightedRange.value.end, date)\n }\n\n return {\n isInvalid,\n isSelected,\n isDateHighlightable,\n highlightedRange,\n isSelectionStart,\n isSelectionEnd,\n isHighlightedStart,\n isHighlightedEnd,\n }\n}\n"],"names":["computed","isBefore","date","isSameDay","isBetween","areAllDaysBetweenValid"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import { b as isBefore, m as areAllDaysBetweenValid, j as isBetween } from '../date/comparators.js';
1
2
  import { isSameDay } from '@internationalized/date';
2
3
  import { computed } from 'vue';
3
- import { b as isBefore, m as areAllDaysBetweenValid, j as isBetween } from '../date/comparators.js';
4
4
 
5
5
  function useRangeCalendarState(props) {
6
6
  const isStartInvalid = computed(() => {
@@ -45,6 +45,11 @@ function useRangeCalendarState(props) {
45
45
  return isBetween(date, props.start.value, props.end.value);
46
46
  return false;
47
47
  };
48
+ const isDateHighlightable = (date) => {
49
+ if (props.isDateHighlightable?.(date))
50
+ return true;
51
+ return false;
52
+ };
48
53
  const highlightedRange = computed(() => {
49
54
  if (props.start.value && props.end.value)
50
55
  return null;
@@ -59,7 +64,7 @@ function useRangeCalendarState(props) {
59
64
  end
60
65
  };
61
66
  }
62
- const isValid = props.allowNonContiguousRanges.value || areAllDaysBetweenValid(start, end, props.isDateUnavailable, props.isDateDisabled);
67
+ const isValid = areAllDaysBetweenValid(start, end, props.allowNonContiguousRanges.value ? () => false : props.isDateUnavailable, props.isDateDisabled, props.isDateHighlightable);
63
68
  if (isValid) {
64
69
  return {
65
70
  start,
@@ -81,6 +86,7 @@ function useRangeCalendarState(props) {
81
86
  return {
82
87
  isInvalid,
83
88
  isSelected,
89
+ isDateHighlightable,
84
90
  highlightedRange,
85
91
  isSelectionStart,
86
92
  isSelectionEnd,
@@ -1 +1 @@
1
- {"version":3,"file":"useRangeCalendar.js","sources":["../../src/RangeCalendar/useRangeCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/range-calendar/create.ts\n*/\n\nimport { type DateValue, isSameDay } from '@internationalized/date'\nimport { type Ref, computed } from 'vue'\nimport { type Matcher, areAllDaysBetweenValid, isBefore, isBetween } from '@/date'\n\nexport type UseRangeCalendarProps = {\n start: Ref<DateValue | undefined>\n end: Ref<DateValue | undefined>\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n focusedValue: Ref<DateValue | undefined>\n allowNonContiguousRanges: Ref<boolean>\n}\n\nexport function useRangeCalendarState(props: UseRangeCalendarProps) {\n const isStartInvalid = computed(() => {\n if (!props.start.value)\n return false\n if (props.isDateDisabled(props.start.value))\n return true\n return false\n })\n\n const isEndInvalid = computed(() => {\n if (!props.end.value)\n return false\n if (props.isDateDisabled(props.end.value))\n return true\n return false\n })\n\n const isInvalid = computed(\n () => {\n if (isStartInvalid.value || isEndInvalid.value)\n return false\n if (props.start.value && props.end.value && isBefore(props.end.value, props.start.value))\n return true\n return false\n },\n )\n\n const isSelectionStart = (date: DateValue) => {\n if (!props.start.value)\n return false\n return isSameDay(props.start.value, date)\n }\n\n const isSelectionEnd = (date: DateValue) => {\n if (!props.end.value)\n return false\n return isSameDay(props.end.value, date)\n }\n\n const isSelected = (date: DateValue) => {\n if (props.start.value && isSameDay(props.start.value, date))\n return true\n if (props.end.value && isSameDay(props.end.value, date))\n return true\n if (props.end.value && props.start.value)\n return isBetween(date, props.start.value, props.end.value)\n\n return false\n }\n\n const highlightedRange = computed(() => {\n if (props.start.value && props.end.value)\n return null\n if (!props.start.value || !props.focusedValue.value)\n return null\n\n const isStartBeforeFocused = isBefore(props.start.value, props.focusedValue.value)\n const start = isStartBeforeFocused ? props.start.value : props.focusedValue.value\n const end = isStartBeforeFocused ? props.focusedValue.value : props.start.value\n\n if (isSameDay(start, end)) {\n return {\n start,\n end,\n }\n }\n\n const isValid = props.allowNonContiguousRanges.value || areAllDaysBetweenValid(start, end, props.isDateUnavailable, props.isDateDisabled)\n if (isValid) {\n return {\n start,\n end,\n }\n }\n return null\n })\n\n const isHighlightedStart = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.start)\n return false\n return isSameDay(highlightedRange.value.start, date)\n }\n\n const isHighlightedEnd = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.end)\n return false\n return isSameDay(highlightedRange.value.end, date)\n }\n\n return {\n isInvalid,\n isSelected,\n highlightedRange,\n isSelectionStart,\n isSelectionEnd,\n isHighlightedStart,\n isHighlightedEnd,\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useRangeCalendar.js","sources":["../../src/RangeCalendar/useRangeCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/range-calendar/create.ts\n*/\n\nimport type { Matcher } from '@/date'\nimport type { DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { areAllDaysBetweenValid, isBefore, isBetween } from '@/date'\nimport { isSameDay } from '@internationalized/date'\nimport { computed } from 'vue'\n\nexport type UseRangeCalendarProps = {\n start: Ref<DateValue | undefined>\n end: Ref<DateValue | undefined>\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n isDateHighlightable?: Matcher\n focusedValue: Ref<DateValue | undefined>\n allowNonContiguousRanges: Ref<boolean>\n}\n\nexport function useRangeCalendarState(props: UseRangeCalendarProps) {\n const isStartInvalid = computed(() => {\n if (!props.start.value)\n return false\n if (props.isDateDisabled(props.start.value))\n return true\n return false\n })\n\n const isEndInvalid = computed(() => {\n if (!props.end.value)\n return false\n if (props.isDateDisabled(props.end.value))\n return true\n return false\n })\n\n const isInvalid = computed(\n () => {\n if (isStartInvalid.value || isEndInvalid.value)\n return false\n if (props.start.value && props.end.value && isBefore(props.end.value, props.start.value))\n return true\n return false\n },\n )\n\n const isSelectionStart = (date: DateValue) => {\n if (!props.start.value)\n return false\n return isSameDay(props.start.value, date)\n }\n\n const isSelectionEnd = (date: DateValue) => {\n if (!props.end.value)\n return false\n return isSameDay(props.end.value, date)\n }\n\n const isSelected = (date: DateValue) => {\n if (props.start.value && isSameDay(props.start.value, date))\n return true\n if (props.end.value && isSameDay(props.end.value, date))\n return true\n if (props.end.value && props.start.value)\n return isBetween(date, props.start.value, props.end.value)\n\n return false\n }\n\n const isDateHighlightable = (date: DateValue) => {\n if (props.isDateHighlightable?.(date))\n return true\n return false\n }\n\n const highlightedRange = computed(() => {\n if (props.start.value && props.end.value)\n return null\n if (!props.start.value || !props.focusedValue.value)\n return null\n\n const isStartBeforeFocused = isBefore(props.start.value, props.focusedValue.value)\n const start = isStartBeforeFocused ? props.start.value : props.focusedValue.value\n const end = isStartBeforeFocused ? props.focusedValue.value : props.start.value\n\n if (isSameDay(start, end)) {\n return {\n start,\n end,\n }\n }\n\n const isValid = areAllDaysBetweenValid(start, end, props.allowNonContiguousRanges.value ? () => false : props.isDateUnavailable, props.isDateDisabled, props.isDateHighlightable)\n if (isValid) {\n return {\n start,\n end,\n }\n }\n return null\n })\n\n const isHighlightedStart = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.start)\n return false\n return isSameDay(highlightedRange.value.start, date)\n }\n\n const isHighlightedEnd = (date: DateValue) => {\n if (!highlightedRange.value || !highlightedRange.value.end)\n return false\n return isSameDay(highlightedRange.value.end, date)\n }\n\n return {\n isInvalid,\n isSelected,\n isDateHighlightable,\n highlightedRange,\n isSelectionStart,\n isSelectionEnd,\n isHighlightedStart,\n isHighlightedEnd,\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
+ const Collection_Collection = require('../Collection/Collection.cjs');
4
5
  const core = require('@vueuse/core');
5
6
  const RovingFocus_utils = require('./utils.cjs');
6
- const Collection_Collection = require('../Collection/Collection.cjs');
7
7
  const shared_useDirection = require('../shared/useDirection.cjs');
8
8
  const shared_createContext = require('../shared/createContext.cjs');
9
9
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"RovingFocusGroup.cjs","sources":["../../src/RovingFocus/RovingFocusGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useDirection } from '@/shared'\nimport type {\n Direction,\n Orientation,\n} from './utils'\n\nexport interface RovingFocusGroupProps extends PrimitiveProps {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation\n /**\n * The direction of navigation between items.\n */\n dir?: Direction\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean\n /** The controlled value of the current stop item. Can be binded as `v-model`. */\n currentTabStopId?: string | null\n /**\n * The value of the current stop item.\n *\n * Use when you do not need to control the state of the stop item.\n */\n defaultCurrentTabStopId?: string\n /**\n * When `true`, will prevent scrolling to the focus item when focused.\n */\n preventScrollOnEntryFocus?: boolean\n}\n\nexport type RovingFocusGroupEmits = {\n 'entryFocus': [event: Event]\n 'update:currentTabStopId': [value: string | null | undefined]\n}\n\ninterface RovingContext {\n orientation: Ref<Orientation | undefined>\n dir: Ref<Direction>\n loop: Ref<boolean>\n currentTabStopId: Ref<string | null | undefined>\n onItemFocus: (tabStopId: string) => void\n onItemShiftTab: () => void\n onFocusableItemAdd: () => void\n onFocusableItemRemove: () => void\n}\n\nexport const [injectRovingFocusGroupContext, provideRovingFocusGroupContext]\n = createContext<RovingContext>('RovingFocusGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { Primitive } from '@/Primitive'\nimport { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils'\nimport { useCollection } from '@/Collection'\n\nconst props = withDefaults(defineProps<RovingFocusGroupProps>(), {\n loop: false,\n orientation: undefined,\n preventScrollOnEntryFocus: false,\n})\nconst emits = defineEmits<RovingFocusGroupEmits>()\n\nconst { loop, orientation, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nconst currentTabStopId = useVModel(props, 'currentTabStopId', emits, {\n defaultValue: props.defaultCurrentTabStopId,\n passive: (props.currentTabStopId === undefined) as false,\n})\nconst isTabbingBackOut = ref(false)\nconst isClickFocus = ref(false)\nconst focusableItemsCount = ref(0)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nfunction handleFocus(event: FocusEvent) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocus.value\n\n if (\n event.currentTarget\n && event.target === event.currentTarget\n && isKeyboardFocus\n && !isTabbingBackOut.value\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS)\n event.currentTarget.dispatchEvent(entryFocusEvent)\n emits('entryFocus', entryFocusEvent)\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n const activeItem = items.find(item => item.getAttribute('data-active') === '')\n const currentItem = items.find(\n item => item.id === currentTabStopId.value,\n )\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean,\n ) as typeof items\n focusFirst(candidateItems, props.preventScrollOnEntryFocus)\n }\n }\n isClickFocus.value = false\n}\n\nfunction handleMouseUp() {\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n setTimeout(() => {\n isClickFocus.value = false\n }, 1)\n}\n\ndefineExpose({\n getItems,\n})\n\nprovideRovingFocusGroupContext({\n loop,\n dir,\n orientation,\n currentTabStopId,\n onItemFocus: (tabStopId) => {\n currentTabStopId.value = tabStopId\n },\n onItemShiftTab: () => {\n isTabbingBackOut.value = true\n },\n onFocusableItemAdd: () => {\n focusableItemsCount.value++\n },\n onFocusableItemRemove: () => {\n focusableItemsCount.value--\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :tabindex=\"isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0\"\n :data-orientation=\"orientation\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n style=\"outline: none\"\n @mousedown=\"isClickFocus = true\"\n @mouseup=\"handleMouseUp\"\n @focus=\"handleFocus\"\n @blur=\"isTabbingBackOut = false\"\n >\n <slot />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["createContext","toRefs","useDirection","useVModel","ref","useCollection","ENTRY_FOCUS","EVENT_OPTIONS","focusFirst"],"mappings":"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"}
1
+ {"version":3,"file":"RovingFocusGroup.cjs","sources":["../../src/RovingFocus/RovingFocusGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport type {\n Direction,\n Orientation,\n} from './utils'\nimport { createContext, useDirection } from '@/shared'\n\nexport interface RovingFocusGroupProps extends PrimitiveProps {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation\n /**\n * The direction of navigation between items.\n */\n dir?: Direction\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean\n /** The controlled value of the current stop item. Can be binded as `v-model`. */\n currentTabStopId?: string | null\n /**\n * The value of the current stop item.\n *\n * Use when you do not need to control the state of the stop item.\n */\n defaultCurrentTabStopId?: string\n /**\n * When `true`, will prevent scrolling to the focus item when focused.\n */\n preventScrollOnEntryFocus?: boolean\n}\n\nexport type RovingFocusGroupEmits = {\n 'entryFocus': [event: Event]\n 'update:currentTabStopId': [value: string | null | undefined]\n}\n\ninterface RovingContext {\n orientation: Ref<Orientation | undefined>\n dir: Ref<Direction>\n loop: Ref<boolean>\n currentTabStopId: Ref<string | null | undefined>\n onItemFocus: (tabStopId: string) => void\n onItemShiftTab: () => void\n onFocusableItemAdd: () => void\n onFocusableItemRemove: () => void\n}\n\nexport const [injectRovingFocusGroupContext, provideRovingFocusGroupContext]\n = createContext<RovingContext>('RovingFocusGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { useCollection } from '@/Collection'\nimport { Primitive } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils'\n\nconst props = withDefaults(defineProps<RovingFocusGroupProps>(), {\n loop: false,\n orientation: undefined,\n preventScrollOnEntryFocus: false,\n})\nconst emits = defineEmits<RovingFocusGroupEmits>()\n\nconst { loop, orientation, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nconst currentTabStopId = useVModel(props, 'currentTabStopId', emits, {\n defaultValue: props.defaultCurrentTabStopId,\n passive: (props.currentTabStopId === undefined) as false,\n})\nconst isTabbingBackOut = ref(false)\nconst isClickFocus = ref(false)\nconst focusableItemsCount = ref(0)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nfunction handleFocus(event: FocusEvent) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocus.value\n\n if (\n event.currentTarget\n && event.target === event.currentTarget\n && isKeyboardFocus\n && !isTabbingBackOut.value\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS)\n event.currentTarget.dispatchEvent(entryFocusEvent)\n emits('entryFocus', entryFocusEvent)\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n const activeItem = items.find(item => item.getAttribute('data-active') === '')\n const currentItem = items.find(\n item => item.id === currentTabStopId.value,\n )\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean,\n ) as typeof items\n focusFirst(candidateItems, props.preventScrollOnEntryFocus)\n }\n }\n isClickFocus.value = false\n}\n\nfunction handleMouseUp() {\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n setTimeout(() => {\n isClickFocus.value = false\n }, 1)\n}\n\ndefineExpose({\n getItems,\n})\n\nprovideRovingFocusGroupContext({\n loop,\n dir,\n orientation,\n currentTabStopId,\n onItemFocus: (tabStopId) => {\n currentTabStopId.value = tabStopId\n },\n onItemShiftTab: () => {\n isTabbingBackOut.value = true\n },\n onFocusableItemAdd: () => {\n focusableItemsCount.value++\n },\n onFocusableItemRemove: () => {\n focusableItemsCount.value--\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :tabindex=\"isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0\"\n :data-orientation=\"orientation\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n style=\"outline: none\"\n @mousedown=\"isClickFocus = true\"\n @mouseup=\"handleMouseUp\"\n @focus=\"handleFocus\"\n @blur=\"isTabbingBackOut = false\"\n >\n <slot />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["createContext","toRefs","useDirection","useVModel","ref","useCollection","ENTRY_FOCUS","EVENT_OPTIONS","focusFirst"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, toRefs, ref, createBlock, openBlock, unref, withCtx, createVNode, renderSlot } from 'vue';
2
+ import { u as useCollection } from '../Collection/Collection.js';
2
3
  import { useVModel } from '@vueuse/core';
3
4
  import { f as focusFirst, E as ENTRY_FOCUS, a as EVENT_OPTIONS } from './utils.js';
4
- import { u as useCollection } from '../Collection/Collection.js';
5
5
  import { u as useDirection } from '../shared/useDirection.js';
6
6
  import { c as createContext } from '../shared/createContext.js';
7
7
  import { P as Primitive } from '../Primitive/Primitive.js';
@@ -1 +1 @@
1
- {"version":3,"file":"RovingFocusGroup.js","sources":["../../src/RovingFocus/RovingFocusGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useDirection } from '@/shared'\nimport type {\n Direction,\n Orientation,\n} from './utils'\n\nexport interface RovingFocusGroupProps extends PrimitiveProps {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation\n /**\n * The direction of navigation between items.\n */\n dir?: Direction\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean\n /** The controlled value of the current stop item. Can be binded as `v-model`. */\n currentTabStopId?: string | null\n /**\n * The value of the current stop item.\n *\n * Use when you do not need to control the state of the stop item.\n */\n defaultCurrentTabStopId?: string\n /**\n * When `true`, will prevent scrolling to the focus item when focused.\n */\n preventScrollOnEntryFocus?: boolean\n}\n\nexport type RovingFocusGroupEmits = {\n 'entryFocus': [event: Event]\n 'update:currentTabStopId': [value: string | null | undefined]\n}\n\ninterface RovingContext {\n orientation: Ref<Orientation | undefined>\n dir: Ref<Direction>\n loop: Ref<boolean>\n currentTabStopId: Ref<string | null | undefined>\n onItemFocus: (tabStopId: string) => void\n onItemShiftTab: () => void\n onFocusableItemAdd: () => void\n onFocusableItemRemove: () => void\n}\n\nexport const [injectRovingFocusGroupContext, provideRovingFocusGroupContext]\n = createContext<RovingContext>('RovingFocusGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { Primitive } from '@/Primitive'\nimport { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils'\nimport { useCollection } from '@/Collection'\n\nconst props = withDefaults(defineProps<RovingFocusGroupProps>(), {\n loop: false,\n orientation: undefined,\n preventScrollOnEntryFocus: false,\n})\nconst emits = defineEmits<RovingFocusGroupEmits>()\n\nconst { loop, orientation, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nconst currentTabStopId = useVModel(props, 'currentTabStopId', emits, {\n defaultValue: props.defaultCurrentTabStopId,\n passive: (props.currentTabStopId === undefined) as false,\n})\nconst isTabbingBackOut = ref(false)\nconst isClickFocus = ref(false)\nconst focusableItemsCount = ref(0)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nfunction handleFocus(event: FocusEvent) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocus.value\n\n if (\n event.currentTarget\n && event.target === event.currentTarget\n && isKeyboardFocus\n && !isTabbingBackOut.value\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS)\n event.currentTarget.dispatchEvent(entryFocusEvent)\n emits('entryFocus', entryFocusEvent)\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n const activeItem = items.find(item => item.getAttribute('data-active') === '')\n const currentItem = items.find(\n item => item.id === currentTabStopId.value,\n )\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean,\n ) as typeof items\n focusFirst(candidateItems, props.preventScrollOnEntryFocus)\n }\n }\n isClickFocus.value = false\n}\n\nfunction handleMouseUp() {\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n setTimeout(() => {\n isClickFocus.value = false\n }, 1)\n}\n\ndefineExpose({\n getItems,\n})\n\nprovideRovingFocusGroupContext({\n loop,\n dir,\n orientation,\n currentTabStopId,\n onItemFocus: (tabStopId) => {\n currentTabStopId.value = tabStopId\n },\n onItemShiftTab: () => {\n isTabbingBackOut.value = true\n },\n onFocusableItemAdd: () => {\n focusableItemsCount.value++\n },\n onFocusableItemRemove: () => {\n focusableItemsCount.value--\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :tabindex=\"isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0\"\n :data-orientation=\"orientation\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n style=\"outline: none\"\n @mousedown=\"isClickFocus = true\"\n @mouseup=\"handleMouseUp\"\n @focus=\"handleFocus\"\n @blur=\"isTabbingBackOut = false\"\n >\n <slot />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RovingFocusGroup.js","sources":["../../src/RovingFocus/RovingFocusGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport type {\n Direction,\n Orientation,\n} from './utils'\nimport { createContext, useDirection } from '@/shared'\n\nexport interface RovingFocusGroupProps extends PrimitiveProps {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation\n /**\n * The direction of navigation between items.\n */\n dir?: Direction\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean\n /** The controlled value of the current stop item. Can be binded as `v-model`. */\n currentTabStopId?: string | null\n /**\n * The value of the current stop item.\n *\n * Use when you do not need to control the state of the stop item.\n */\n defaultCurrentTabStopId?: string\n /**\n * When `true`, will prevent scrolling to the focus item when focused.\n */\n preventScrollOnEntryFocus?: boolean\n}\n\nexport type RovingFocusGroupEmits = {\n 'entryFocus': [event: Event]\n 'update:currentTabStopId': [value: string | null | undefined]\n}\n\ninterface RovingContext {\n orientation: Ref<Orientation | undefined>\n dir: Ref<Direction>\n loop: Ref<boolean>\n currentTabStopId: Ref<string | null | undefined>\n onItemFocus: (tabStopId: string) => void\n onItemShiftTab: () => void\n onFocusableItemAdd: () => void\n onFocusableItemRemove: () => void\n}\n\nexport const [injectRovingFocusGroupContext, provideRovingFocusGroupContext]\n = createContext<RovingContext>('RovingFocusGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { useCollection } from '@/Collection'\nimport { Primitive } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils'\n\nconst props = withDefaults(defineProps<RovingFocusGroupProps>(), {\n loop: false,\n orientation: undefined,\n preventScrollOnEntryFocus: false,\n})\nconst emits = defineEmits<RovingFocusGroupEmits>()\n\nconst { loop, orientation, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nconst currentTabStopId = useVModel(props, 'currentTabStopId', emits, {\n defaultValue: props.defaultCurrentTabStopId,\n passive: (props.currentTabStopId === undefined) as false,\n})\nconst isTabbingBackOut = ref(false)\nconst isClickFocus = ref(false)\nconst focusableItemsCount = ref(0)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nfunction handleFocus(event: FocusEvent) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocus.value\n\n if (\n event.currentTarget\n && event.target === event.currentTarget\n && isKeyboardFocus\n && !isTabbingBackOut.value\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS)\n event.currentTarget.dispatchEvent(entryFocusEvent)\n emits('entryFocus', entryFocusEvent)\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n const activeItem = items.find(item => item.getAttribute('data-active') === '')\n const currentItem = items.find(\n item => item.id === currentTabStopId.value,\n )\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean,\n ) as typeof items\n focusFirst(candidateItems, props.preventScrollOnEntryFocus)\n }\n }\n isClickFocus.value = false\n}\n\nfunction handleMouseUp() {\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n setTimeout(() => {\n isClickFocus.value = false\n }, 1)\n}\n\ndefineExpose({\n getItems,\n})\n\nprovideRovingFocusGroupContext({\n loop,\n dir,\n orientation,\n currentTabStopId,\n onItemFocus: (tabStopId) => {\n currentTabStopId.value = tabStopId\n },\n onItemShiftTab: () => {\n isTabbingBackOut.value = true\n },\n onFocusableItemAdd: () => {\n focusableItemsCount.value++\n },\n onFocusableItemRemove: () => {\n focusableItemsCount.value--\n },\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :tabindex=\"isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0\"\n :data-orientation=\"orientation\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n style=\"outline: none\"\n @mousedown=\"isClickFocus = true\"\n @mouseup=\"handleMouseUp\"\n @focus=\"handleFocus\"\n @blur=\"isTabbingBackOut = false\"\n >\n <slot />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const RovingFocus_utils = require('./utils.cjs');
5
4
  const Collection_Collection = require('../Collection/Collection.cjs');
5
+ const RovingFocus_utils = require('./utils.cjs');
6
6
  const RovingFocus_RovingFocusGroup = require('./RovingFocusGroup.cjs');
7
7
  const shared_useId = require('../shared/useId.cjs');
8
8
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"RovingFocusItem.cjs","sources":["../../src/RovingFocus/RovingFocusItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface RovingFocusItemProps extends PrimitiveProps {\n tabStopId?: string\n /**\n * When `false`, item wil be not be focusable.\n * @defaultValue `true`\n */\n focusable?: boolean\n /** When `true`, item wil be initially focused. */\n active?: boolean\n /** When `true`, shift + arrow key will allow focusing on next/previous item. */\n allowShiftKey?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted } from 'vue'\nimport { injectRovingFocusGroupContext } from './RovingFocusGroup.vue'\nimport { Primitive } from '@/Primitive'\nimport { focusFirst, getFocusIntent, wrapArray } from './utils'\nimport { useId } from '@/shared'\nimport { useCollection } from '@/Collection'\n\nconst props = withDefaults(defineProps<RovingFocusItemProps>(), {\n focusable: true,\n as: 'span',\n})\n\nconst context = injectRovingFocusGroupContext()\nconst randomId = useId()\nconst id = computed(() => props.tabStopId || randomId)\nconst isCurrentTabStop = computed(\n () => context.currentTabStopId.value === id.value,\n)\n\nconst { getItems, CollectionItem } = useCollection()\n\nonMounted(() => {\n if (props.focusable)\n context.onFocusableItemAdd()\n})\nonUnmounted(() => {\n if (props.focusable)\n context.onFocusableItemRemove()\n})\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab()\n return\n }\n\n if (event.target !== event.currentTarget)\n return\n\n const focusIntent = getFocusIntent(\n event,\n context.orientation.value,\n context.dir.value,\n )\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (props.allowShiftKey ? false : event.shiftKey))\n return\n event.preventDefault()\n let candidateNodes = [...getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')]\n\n if (focusIntent === 'last') {\n candidateNodes.reverse()\n }\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev')\n candidateNodes.reverse()\n const currentIndex = candidateNodes.indexOf(\n event.currentTarget as HTMLElement,\n )\n\n candidateNodes = context.loop.value\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1)\n }\n\n nextTick(() => focusFirst(candidateNodes))\n }\n}\n</script>\n\n<template>\n <CollectionItem>\n <Primitive\n :tabindex=\"isCurrentTabStop ? 0 : -1\"\n :data-orientation=\"context.orientation.value\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"!focusable ? '' : undefined\"\n :as=\"as\"\n :as-child=\"asChild\"\n @mousedown=\"\n (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n }\n \"\n @focus=\"context.onItemFocus(id)\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":["injectRovingFocusGroupContext","useId","computed","useCollection","onMounted","onUnmounted","getFocusIntent","wrapArray","nextTick","focusFirst"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,UAAUA,0DAA8B,EAAA;AAC9C,IAAA,MAAM,WAAWC,kBAAM,EAAA;AACvB,IAAA,MAAM,EAAK,GAAAC,YAAA,CAAS,MAAM,KAAA,CAAM,aAAa,QAAQ,CAAA;AACrD,IAAA,MAAM,gBAAmB,GAAAA,YAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,gBAAiB,CAAA,KAAA,KAAU,EAAG,CAAA;AAAA,KAC9C;AAEA,IAAA,MAAM,EAAE,QAAA,EAAU,cAAe,EAAA,GAAIC,mCAAc,EAAA;AAEnD,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,kBAAmB,EAAA;AAAA,KAC9B,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,qBAAsB,EAAA;AAAA,KACjC,CAAA;AAED,IAAA,SAAS,cAAc,KAAsB,EAAA;AAC3C,MAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAU,EAAA;AACzC,QAAA,OAAA,CAAQ,cAAe,EAAA;AACvB,QAAA;AAAA;AAGF,MAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,aAAA;AACzB,QAAA;AAEF,MAAA,MAAM,WAAc,GAAAC,gCAAA;AAAA,QAClB,KAAA;AAAA,QACA,QAAQ,WAAY,CAAA,KAAA;AAAA,QACpB,QAAQ,GAAI,CAAA;AAAA,OACd;AAEA,MAAA,IAAI,gBAAgB,MAAW,EAAA;AAC7B,QAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,OAAA,IAAW,MAAM,MAAW,KAAA,KAAA,CAAM,aAAgB,GAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAA;AACzF,UAAA;AACF,QAAA,KAAA,CAAM,cAAe,EAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,GAAG,QAAS,EAAA,CAAE,IAAI,CAAK,CAAA,KAAA,CAAA,CAAE,GAAG,CAAA,CAAE,OAAO,CAAK,CAAA,KAAA,CAAA,CAAE,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAC,CAAA;AAE1F,QAAA,IAAI,gBAAgB,MAAQ,EAAA;AAC1B,UAAA,cAAA,CAAe,OAAQ,EAAA;AAAA,SAEhB,MAAA,IAAA,WAAA,KAAgB,MAAU,IAAA,WAAA,KAAgB,MAAQ,EAAA;AACzD,UAAA,IAAI,WAAgB,KAAA,MAAA;AAClB,YAAA,cAAA,CAAe,OAAQ,EAAA;AACzB,UAAA,MAAM,eAAe,cAAe,CAAA,OAAA;AAAA,YAClC,KAAM,CAAA;AAAA,WACR;AAEA,UAAiB,cAAA,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,GAC1BC,2BAAU,CAAA,cAAA,EAAgB,YAAe,GAAA,CAAC,CAC1C,GAAA,cAAA,CAAe,KAAM,CAAA,YAAA,GAAe,CAAC,CAAA;AAAA;AAG3C,QAASC,YAAA,CAAA,MAAMC,4BAAW,CAAA,cAAc,CAAC,CAAA;AAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"RovingFocusItem.cjs","sources":["../../src/RovingFocus/RovingFocusItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface RovingFocusItemProps extends PrimitiveProps {\n tabStopId?: string\n /**\n * When `false`, item will not be focusable.\n * @defaultValue `true`\n */\n focusable?: boolean\n /** When `true`, item will be initially focused. */\n active?: boolean\n /** When `true`, shift + arrow key will allow focusing on next/previous item. */\n allowShiftKey?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useCollection } from '@/Collection'\nimport { Primitive } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { computed, nextTick, onMounted, onUnmounted } from 'vue'\nimport { injectRovingFocusGroupContext } from './RovingFocusGroup.vue'\nimport { focusFirst, getFocusIntent, wrapArray } from './utils'\n\nconst props = withDefaults(defineProps<RovingFocusItemProps>(), {\n focusable: true,\n as: 'span',\n})\n\nconst context = injectRovingFocusGroupContext()\nconst randomId = useId()\nconst id = computed(() => props.tabStopId || randomId)\nconst isCurrentTabStop = computed(\n () => context.currentTabStopId.value === id.value,\n)\n\nconst { getItems, CollectionItem } = useCollection()\n\nonMounted(() => {\n if (props.focusable)\n context.onFocusableItemAdd()\n})\nonUnmounted(() => {\n if (props.focusable)\n context.onFocusableItemRemove()\n})\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab()\n return\n }\n\n if (event.target !== event.currentTarget)\n return\n\n const focusIntent = getFocusIntent(\n event,\n context.orientation.value,\n context.dir.value,\n )\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (props.allowShiftKey ? false : event.shiftKey))\n return\n event.preventDefault()\n let candidateNodes = [...getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')]\n\n if (focusIntent === 'last') {\n candidateNodes.reverse()\n }\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev')\n candidateNodes.reverse()\n const currentIndex = candidateNodes.indexOf(\n event.currentTarget as HTMLElement,\n )\n\n candidateNodes = context.loop.value\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1)\n }\n\n nextTick(() => focusFirst(candidateNodes))\n }\n}\n</script>\n\n<template>\n <CollectionItem>\n <Primitive\n :tabindex=\"isCurrentTabStop ? 0 : -1\"\n :data-orientation=\"context.orientation.value\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"!focusable ? '' : undefined\"\n :as=\"as\"\n :as-child=\"asChild\"\n @mousedown=\"\n (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n }\n \"\n @focus=\"context.onItemFocus(id)\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":["injectRovingFocusGroupContext","useId","computed","useCollection","onMounted","onUnmounted","getFocusIntent","wrapArray","nextTick","focusFirst"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,UAAUA,0DAA8B,EAAA;AAC9C,IAAA,MAAM,WAAWC,kBAAM,EAAA;AACvB,IAAA,MAAM,EAAK,GAAAC,YAAA,CAAS,MAAM,KAAA,CAAM,aAAa,QAAQ,CAAA;AACrD,IAAA,MAAM,gBAAmB,GAAAA,YAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,gBAAiB,CAAA,KAAA,KAAU,EAAG,CAAA;AAAA,KAC9C;AAEA,IAAA,MAAM,EAAE,QAAA,EAAU,cAAe,EAAA,GAAIC,mCAAc,EAAA;AAEnD,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,kBAAmB,EAAA;AAAA,KAC9B,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,qBAAsB,EAAA;AAAA,KACjC,CAAA;AAED,IAAA,SAAS,cAAc,KAAsB,EAAA;AAC3C,MAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAU,EAAA;AACzC,QAAA,OAAA,CAAQ,cAAe,EAAA;AACvB,QAAA;AAAA;AAGF,MAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,aAAA;AACzB,QAAA;AAEF,MAAA,MAAM,WAAc,GAAAC,gCAAA;AAAA,QAClB,KAAA;AAAA,QACA,QAAQ,WAAY,CAAA,KAAA;AAAA,QACpB,QAAQ,GAAI,CAAA;AAAA,OACd;AAEA,MAAA,IAAI,gBAAgB,MAAW,EAAA;AAC7B,QAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,OAAA,IAAW,MAAM,MAAW,KAAA,KAAA,CAAM,aAAgB,GAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAA;AACzF,UAAA;AACF,QAAA,KAAA,CAAM,cAAe,EAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,GAAG,QAAS,EAAA,CAAE,IAAI,CAAK,CAAA,KAAA,CAAA,CAAE,GAAG,CAAA,CAAE,OAAO,CAAK,CAAA,KAAA,CAAA,CAAE,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAC,CAAA;AAE1F,QAAA,IAAI,gBAAgB,MAAQ,EAAA;AAC1B,UAAA,cAAA,CAAe,OAAQ,EAAA;AAAA,SAEhB,MAAA,IAAA,WAAA,KAAgB,MAAU,IAAA,WAAA,KAAgB,MAAQ,EAAA;AACzD,UAAA,IAAI,WAAgB,KAAA,MAAA;AAClB,YAAA,cAAA,CAAe,OAAQ,EAAA;AACzB,UAAA,MAAM,eAAe,cAAe,CAAA,OAAA;AAAA,YAClC,KAAM,CAAA;AAAA,WACR;AAEA,UAAiB,cAAA,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,GAC1BC,2BAAU,CAAA,cAAA,EAAgB,YAAe,GAAA,CAAC,CAC1C,GAAA,cAAA,CAAe,KAAM,CAAA,YAAA,GAAe,CAAC,CAAA;AAAA;AAG3C,QAASC,YAAA,CAAA,MAAMC,4BAAW,CAAA,cAAc,CAAC,CAAA;AAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, onMounted, onUnmounted, createBlock, openBlock, unref, withCtx, createVNode, renderSlot, nextTick } from 'vue';
2
- import { g as getFocusIntent, w as wrapArray, f as focusFirst } from './utils.js';
3
2
  import { u as useCollection } from '../Collection/Collection.js';
3
+ import { g as getFocusIntent, w as wrapArray, f as focusFirst } from './utils.js';
4
4
  import { i as injectRovingFocusGroupContext } from './RovingFocusGroup.js';
5
5
  import { u as useId } from '../shared/useId.js';
6
6
  import { P as Primitive } from '../Primitive/Primitive.js';
@@ -1 +1 @@
1
- {"version":3,"file":"RovingFocusItem.js","sources":["../../src/RovingFocus/RovingFocusItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface RovingFocusItemProps extends PrimitiveProps {\n tabStopId?: string\n /**\n * When `false`, item wil be not be focusable.\n * @defaultValue `true`\n */\n focusable?: boolean\n /** When `true`, item wil be initially focused. */\n active?: boolean\n /** When `true`, shift + arrow key will allow focusing on next/previous item. */\n allowShiftKey?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted } from 'vue'\nimport { injectRovingFocusGroupContext } from './RovingFocusGroup.vue'\nimport { Primitive } from '@/Primitive'\nimport { focusFirst, getFocusIntent, wrapArray } from './utils'\nimport { useId } from '@/shared'\nimport { useCollection } from '@/Collection'\n\nconst props = withDefaults(defineProps<RovingFocusItemProps>(), {\n focusable: true,\n as: 'span',\n})\n\nconst context = injectRovingFocusGroupContext()\nconst randomId = useId()\nconst id = computed(() => props.tabStopId || randomId)\nconst isCurrentTabStop = computed(\n () => context.currentTabStopId.value === id.value,\n)\n\nconst { getItems, CollectionItem } = useCollection()\n\nonMounted(() => {\n if (props.focusable)\n context.onFocusableItemAdd()\n})\nonUnmounted(() => {\n if (props.focusable)\n context.onFocusableItemRemove()\n})\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab()\n return\n }\n\n if (event.target !== event.currentTarget)\n return\n\n const focusIntent = getFocusIntent(\n event,\n context.orientation.value,\n context.dir.value,\n )\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (props.allowShiftKey ? false : event.shiftKey))\n return\n event.preventDefault()\n let candidateNodes = [...getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')]\n\n if (focusIntent === 'last') {\n candidateNodes.reverse()\n }\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev')\n candidateNodes.reverse()\n const currentIndex = candidateNodes.indexOf(\n event.currentTarget as HTMLElement,\n )\n\n candidateNodes = context.loop.value\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1)\n }\n\n nextTick(() => focusFirst(candidateNodes))\n }\n}\n</script>\n\n<template>\n <CollectionItem>\n <Primitive\n :tabindex=\"isCurrentTabStop ? 0 : -1\"\n :data-orientation=\"context.orientation.value\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"!focusable ? '' : undefined\"\n :as=\"as\"\n :as-child=\"asChild\"\n @mousedown=\"\n (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n }\n \"\n @focus=\"context.onItemFocus(id)\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,UAAU,6BAA8B,EAAA;AAC9C,IAAA,MAAM,WAAW,KAAM,EAAA;AACvB,IAAA,MAAM,EAAK,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,aAAa,QAAQ,CAAA;AACrD,IAAA,MAAM,gBAAmB,GAAA,QAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,gBAAiB,CAAA,KAAA,KAAU,EAAG,CAAA;AAAA,KAC9C;AAEA,IAAA,MAAM,EAAE,QAAA,EAAU,cAAe,EAAA,GAAI,aAAc,EAAA;AAEnD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,kBAAmB,EAAA;AAAA,KAC9B,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,qBAAsB,EAAA;AAAA,KACjC,CAAA;AAED,IAAA,SAAS,cAAc,KAAsB,EAAA;AAC3C,MAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAU,EAAA;AACzC,QAAA,OAAA,CAAQ,cAAe,EAAA;AACvB,QAAA;AAAA;AAGF,MAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,aAAA;AACzB,QAAA;AAEF,MAAA,MAAM,WAAc,GAAA,cAAA;AAAA,QAClB,KAAA;AAAA,QACA,QAAQ,WAAY,CAAA,KAAA;AAAA,QACpB,QAAQ,GAAI,CAAA;AAAA,OACd;AAEA,MAAA,IAAI,gBAAgB,MAAW,EAAA;AAC7B,QAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,OAAA,IAAW,MAAM,MAAW,KAAA,KAAA,CAAM,aAAgB,GAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAA;AACzF,UAAA;AACF,QAAA,KAAA,CAAM,cAAe,EAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,GAAG,QAAS,EAAA,CAAE,IAAI,CAAK,CAAA,KAAA,CAAA,CAAE,GAAG,CAAA,CAAE,OAAO,CAAK,CAAA,KAAA,CAAA,CAAE,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAC,CAAA;AAE1F,QAAA,IAAI,gBAAgB,MAAQ,EAAA;AAC1B,UAAA,cAAA,CAAe,OAAQ,EAAA;AAAA,SAEhB,MAAA,IAAA,WAAA,KAAgB,MAAU,IAAA,WAAA,KAAgB,MAAQ,EAAA;AACzD,UAAA,IAAI,WAAgB,KAAA,MAAA;AAClB,YAAA,cAAA,CAAe,OAAQ,EAAA;AACzB,UAAA,MAAM,eAAe,cAAe,CAAA,OAAA;AAAA,YAClC,KAAM,CAAA;AAAA,WACR;AAEA,UAAiB,cAAA,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,GAC1B,SAAU,CAAA,cAAA,EAAgB,YAAe,GAAA,CAAC,CAC1C,GAAA,cAAA,CAAe,KAAM,CAAA,YAAA,GAAe,CAAC,CAAA;AAAA;AAG3C,QAAS,QAAA,CAAA,MAAM,UAAW,CAAA,cAAc,CAAC,CAAA;AAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"RovingFocusItem.js","sources":["../../src/RovingFocus/RovingFocusItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface RovingFocusItemProps extends PrimitiveProps {\n tabStopId?: string\n /**\n * When `false`, item will not be focusable.\n * @defaultValue `true`\n */\n focusable?: boolean\n /** When `true`, item will be initially focused. */\n active?: boolean\n /** When `true`, shift + arrow key will allow focusing on next/previous item. */\n allowShiftKey?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useCollection } from '@/Collection'\nimport { Primitive } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { computed, nextTick, onMounted, onUnmounted } from 'vue'\nimport { injectRovingFocusGroupContext } from './RovingFocusGroup.vue'\nimport { focusFirst, getFocusIntent, wrapArray } from './utils'\n\nconst props = withDefaults(defineProps<RovingFocusItemProps>(), {\n focusable: true,\n as: 'span',\n})\n\nconst context = injectRovingFocusGroupContext()\nconst randomId = useId()\nconst id = computed(() => props.tabStopId || randomId)\nconst isCurrentTabStop = computed(\n () => context.currentTabStopId.value === id.value,\n)\n\nconst { getItems, CollectionItem } = useCollection()\n\nonMounted(() => {\n if (props.focusable)\n context.onFocusableItemAdd()\n})\nonUnmounted(() => {\n if (props.focusable)\n context.onFocusableItemRemove()\n})\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab()\n return\n }\n\n if (event.target !== event.currentTarget)\n return\n\n const focusIntent = getFocusIntent(\n event,\n context.orientation.value,\n context.dir.value,\n )\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (props.allowShiftKey ? false : event.shiftKey))\n return\n event.preventDefault()\n let candidateNodes = [...getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')]\n\n if (focusIntent === 'last') {\n candidateNodes.reverse()\n }\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev')\n candidateNodes.reverse()\n const currentIndex = candidateNodes.indexOf(\n event.currentTarget as HTMLElement,\n )\n\n candidateNodes = context.loop.value\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1)\n }\n\n nextTick(() => focusFirst(candidateNodes))\n }\n}\n</script>\n\n<template>\n <CollectionItem>\n <Primitive\n :tabindex=\"isCurrentTabStop ? 0 : -1\"\n :data-orientation=\"context.orientation.value\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"!focusable ? '' : undefined\"\n :as=\"as\"\n :as-child=\"asChild\"\n @mousedown=\"\n (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n }\n \"\n @focus=\"context.onItemFocus(id)\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,UAAU,6BAA8B,EAAA;AAC9C,IAAA,MAAM,WAAW,KAAM,EAAA;AACvB,IAAA,MAAM,EAAK,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,aAAa,QAAQ,CAAA;AACrD,IAAA,MAAM,gBAAmB,GAAA,QAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,gBAAiB,CAAA,KAAA,KAAU,EAAG,CAAA;AAAA,KAC9C;AAEA,IAAA,MAAM,EAAE,QAAA,EAAU,cAAe,EAAA,GAAI,aAAc,EAAA;AAEnD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,kBAAmB,EAAA;AAAA,KAC9B,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,KAAM,CAAA,SAAA;AACR,QAAA,OAAA,CAAQ,qBAAsB,EAAA;AAAA,KACjC,CAAA;AAED,IAAA,SAAS,cAAc,KAAsB,EAAA;AAC3C,MAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAU,EAAA;AACzC,QAAA,OAAA,CAAQ,cAAe,EAAA;AACvB,QAAA;AAAA;AAGF,MAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,aAAA;AACzB,QAAA;AAEF,MAAA,MAAM,WAAc,GAAA,cAAA;AAAA,QAClB,KAAA;AAAA,QACA,QAAQ,WAAY,CAAA,KAAA;AAAA,QACpB,QAAQ,GAAI,CAAA;AAAA,OACd;AAEA,MAAA,IAAI,gBAAgB,MAAW,EAAA;AAC7B,QAAI,IAAA,KAAA,CAAM,WAAW,KAAM,CAAA,OAAA,IAAW,MAAM,MAAW,KAAA,KAAA,CAAM,aAAgB,GAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAA;AACzF,UAAA;AACF,QAAA,KAAA,CAAM,cAAe,EAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,GAAG,QAAS,EAAA,CAAE,IAAI,CAAK,CAAA,KAAA,CAAA,CAAE,GAAG,CAAA,CAAE,OAAO,CAAK,CAAA,KAAA,CAAA,CAAE,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAC,CAAA;AAE1F,QAAA,IAAI,gBAAgB,MAAQ,EAAA;AAC1B,UAAA,cAAA,CAAe,OAAQ,EAAA;AAAA,SAEhB,MAAA,IAAA,WAAA,KAAgB,MAAU,IAAA,WAAA,KAAgB,MAAQ,EAAA;AACzD,UAAA,IAAI,WAAgB,KAAA,MAAA;AAClB,YAAA,cAAA,CAAe,OAAQ,EAAA;AACzB,UAAA,MAAM,eAAe,cAAe,CAAA,OAAA;AAAA,YAClC,KAAM,CAAA;AAAA,WACR;AAEA,UAAiB,cAAA,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,GAC1B,SAAU,CAAA,cAAA,EAAgB,YAAe,GAAA,CAAC,CAC1C,GAAA,cAAA,CAAe,KAAM,CAAA,YAAA,GAAe,CAAC,CAAA;AAAA;AAG3C,QAAS,QAAA,CAAA,MAAM,UAAW,CAAA,cAAc,CAAC,CAAA;AAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAreaCorner.cjs","sources":["../../src/ScrollArea/ScrollAreaCorner.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface ScrollAreaCornerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\nimport ScrollAreaCornerImpl from './ScrollAreaCornerImpl.vue'\n\nconst props = defineProps<ScrollAreaCornerProps>()\n\nconst { forwardRef } = useForwardExpose()\nconst rootContext = injectScrollAreaRootContext()\n\nconst hasBothScrollbarsVisible = computed(\n () => !!rootContext.scrollbarX.value && !!rootContext.scrollbarY.value,\n)\nconst hasCorner = computed(\n () => rootContext.type.value !== 'scroll' && hasBothScrollbarsVisible.value,\n)\n</script>\n\n<template>\n <ScrollAreaCornerImpl\n v-if=\"hasCorner\"\n v-bind=\"props\"\n :ref=\"forwardRef\"\n >\n <slot />\n </ScrollAreaCornerImpl>\n</template>\n"],"names":["useForwardExpose","injectScrollAreaRootContext","computed"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIA,wCAAiB,EAAA;AACxC,IAAA,MAAM,cAAcC,qDAA4B,EAAA;AAEhD,IAAA,MAAM,wBAA2B,GAAAC,YAAA;AAAA,MAC/B,MAAM,CAAC,CAAC,WAAA,CAAY,WAAW,KAAS,IAAA,CAAC,CAAC,WAAA,CAAY,UAAW,CAAA;AAAA,KACnE;AACA,IAAA,MAAM,SAAY,GAAAA,YAAA;AAAA,MAChB,MAAM,WAAA,CAAY,IAAK,CAAA,KAAA,KAAU,YAAY,wBAAyB,CAAA;AAAA,KACxE;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ScrollAreaCorner.cjs","sources":["../../src/ScrollArea/ScrollAreaCorner.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface ScrollAreaCornerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport ScrollAreaCornerImpl from './ScrollAreaCornerImpl.vue'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\n\nconst props = defineProps<ScrollAreaCornerProps>()\n\nconst { forwardRef } = useForwardExpose()\nconst rootContext = injectScrollAreaRootContext()\n\nconst hasBothScrollbarsVisible = computed(\n () => !!rootContext.scrollbarX.value && !!rootContext.scrollbarY.value,\n)\nconst hasCorner = computed(\n () => rootContext.type.value !== 'scroll' && hasBothScrollbarsVisible.value,\n)\n</script>\n\n<template>\n <ScrollAreaCornerImpl\n v-if=\"hasCorner\"\n v-bind=\"props\"\n :ref=\"forwardRef\"\n >\n <slot />\n </ScrollAreaCornerImpl>\n</template>\n"],"names":["useForwardExpose","injectScrollAreaRootContext","computed"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIA,wCAAiB,EAAA;AACxC,IAAA,MAAM,cAAcC,qDAA4B,EAAA;AAEhD,IAAA,MAAM,wBAA2B,GAAAC,YAAA;AAAA,MAC/B,MAAM,CAAC,CAAC,WAAA,CAAY,WAAW,KAAS,IAAA,CAAC,CAAC,WAAA,CAAY,UAAW,CAAA;AAAA,KACnE;AACA,IAAA,MAAM,SAAY,GAAAA,YAAA;AAAA,MAChB,MAAM,WAAA,CAAY,IAAK,CAAA,KAAA,KAAU,YAAY,wBAAyB,CAAA;AAAA,KACxE;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAreaCorner.js","sources":["../../src/ScrollArea/ScrollAreaCorner.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface ScrollAreaCornerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\nimport ScrollAreaCornerImpl from './ScrollAreaCornerImpl.vue'\n\nconst props = defineProps<ScrollAreaCornerProps>()\n\nconst { forwardRef } = useForwardExpose()\nconst rootContext = injectScrollAreaRootContext()\n\nconst hasBothScrollbarsVisible = computed(\n () => !!rootContext.scrollbarX.value && !!rootContext.scrollbarY.value,\n)\nconst hasCorner = computed(\n () => rootContext.type.value !== 'scroll' && hasBothScrollbarsVisible.value,\n)\n</script>\n\n<template>\n <ScrollAreaCornerImpl\n v-if=\"hasCorner\"\n v-bind=\"props\"\n :ref=\"forwardRef\"\n >\n <slot />\n </ScrollAreaCornerImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAA,MAAM,wBAA2B,GAAA,QAAA;AAAA,MAC/B,MAAM,CAAC,CAAC,WAAA,CAAY,WAAW,KAAS,IAAA,CAAC,CAAC,WAAA,CAAY,UAAW,CAAA;AAAA,KACnE;AACA,IAAA,MAAM,SAAY,GAAA,QAAA;AAAA,MAChB,MAAM,WAAA,CAAY,IAAK,CAAA,KAAA,KAAU,YAAY,wBAAyB,CAAA;AAAA,KACxE;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ScrollAreaCorner.js","sources":["../../src/ScrollArea/ScrollAreaCorner.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface ScrollAreaCornerProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport ScrollAreaCornerImpl from './ScrollAreaCornerImpl.vue'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\n\nconst props = defineProps<ScrollAreaCornerProps>()\n\nconst { forwardRef } = useForwardExpose()\nconst rootContext = injectScrollAreaRootContext()\n\nconst hasBothScrollbarsVisible = computed(\n () => !!rootContext.scrollbarX.value && !!rootContext.scrollbarY.value,\n)\nconst hasCorner = computed(\n () => rootContext.type.value !== 'scroll' && hasBothScrollbarsVisible.value,\n)\n</script>\n\n<template>\n <ScrollAreaCornerImpl\n v-if=\"hasCorner\"\n v-bind=\"props\"\n :ref=\"forwardRef\"\n >\n <slot />\n </ScrollAreaCornerImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AACxC,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAA,MAAM,wBAA2B,GAAA,QAAA;AAAA,MAC/B,MAAM,CAAC,CAAC,WAAA,CAAY,WAAW,KAAS,IAAA,CAAC,CAAC,WAAA,CAAY,UAAW,CAAA;AAAA,KACnE;AACA,IAAA,MAAM,SAAY,GAAA,QAAA;AAAA,MAChB,MAAM,WAAA,CAAY,IAAK,CAAA,KAAA,KAAU,YAAY,wBAAyB,CAAA;AAAA,KACxE;;;;;;;;;;;;;;"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  const vue = require('vue');
4
4
  const core = require('@vueuse/core');
5
- const Primitive_Primitive = require('../Primitive/Primitive.cjs');
6
5
  const ScrollArea_ScrollAreaRoot = require('./ScrollAreaRoot.cjs');
6
+ const Primitive_Primitive = require('../Primitive/Primitive.cjs');
7
7
 
8
8
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
9
9
  __name: "ScrollAreaCornerImpl",
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAreaCornerImpl.cjs","sources":["../../src/ScrollArea/ScrollAreaCornerImpl.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\nimport { Primitive } from '@/Primitive'\n\nconst rootContext = injectScrollAreaRootContext()\n\nconst width = ref(0)\nconst height = ref(0)\n\nconst hasSize = computed(() => !!width.value && !!height.value)\n\nfunction setCornerHeight() {\n const offsetHeight = rootContext.scrollbarX.value?.offsetHeight || 0\n rootContext.onCornerHeightChange(offsetHeight)\n height.value = offsetHeight\n}\nfunction setCornerWidth() {\n const offsetWidth = rootContext.scrollbarY.value?.offsetWidth || 0\n rootContext.onCornerWidthChange(offsetWidth)\n width.value = offsetWidth\n}\n\nuseResizeObserver(rootContext.scrollbarX.value, setCornerHeight)\nuseResizeObserver(rootContext.scrollbarY.value, setCornerWidth)\n\n// because we are not remounting the component, useResizeObserver doesn't trigger, thus using watcher here\nwatch(() => rootContext.scrollbarX.value, setCornerHeight)\nwatch(() => rootContext.scrollbarY.value, setCornerWidth)\n</script>\n\n<template>\n <Primitive\n v-if=\"hasSize\"\n :style=\"{\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute',\n right: rootContext.dir.value === 'ltr' ? 0 : undefined,\n left: rootContext.dir.value === 'rtl' ? 0 : undefined,\n bottom: 0,\n }\"\n v-bind=\"$parent?.$props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["injectScrollAreaRootContext","ref","computed","useResizeObserver","watch"],"mappings":";;;;;;;;;;AAMA,IAAA,MAAM,cAAcA,qDAA4B,EAAA;AAEhD,IAAM,MAAA,KAAA,GAAQC,QAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAASA,QAAI,CAAC,CAAA;AAEpB,IAAM,MAAA,OAAA,GAAUC,YAAS,CAAA,MAAM,CAAC,CAAC,MAAM,KAAS,IAAA,CAAC,CAAC,MAAA,CAAO,KAAK,CAAA;AAE9D,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,MAAM,YAAe,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,YAAgB,IAAA,CAAA;AACnE,MAAA,WAAA,CAAY,qBAAqB,YAAY,CAAA;AAC7C,MAAA,MAAA,CAAO,KAAQ,GAAA,YAAA;AAAA;AAEjB,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA;AACjE,MAAA,WAAA,CAAY,oBAAoB,WAAW,CAAA;AAC3C,MAAA,KAAA,CAAM,KAAQ,GAAA,WAAA;AAAA;AAGhB,IAAkBC,sBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,IAAkBA,sBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;AAG9D,IAAAC,SAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AACzD,IAAAA,SAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ScrollAreaCornerImpl.cjs","sources":["../../src/ScrollArea/ScrollAreaCornerImpl.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { useResizeObserver } from '@vueuse/core'\nimport { computed, ref, watch } from 'vue'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\n\nconst rootContext = injectScrollAreaRootContext()\n\nconst width = ref(0)\nconst height = ref(0)\n\nconst hasSize = computed(() => !!width.value && !!height.value)\n\nfunction setCornerHeight() {\n const offsetHeight = rootContext.scrollbarX.value?.offsetHeight || 0\n rootContext.onCornerHeightChange(offsetHeight)\n height.value = offsetHeight\n}\nfunction setCornerWidth() {\n const offsetWidth = rootContext.scrollbarY.value?.offsetWidth || 0\n rootContext.onCornerWidthChange(offsetWidth)\n width.value = offsetWidth\n}\n\nuseResizeObserver(rootContext.scrollbarX.value, setCornerHeight)\nuseResizeObserver(rootContext.scrollbarY.value, setCornerWidth)\n\n// because we are not remounting the component, useResizeObserver doesn't trigger, thus using watcher here\nwatch(() => rootContext.scrollbarX.value, setCornerHeight)\nwatch(() => rootContext.scrollbarY.value, setCornerWidth)\n</script>\n\n<template>\n <Primitive\n v-if=\"hasSize\"\n :style=\"{\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute',\n right: rootContext.dir.value === 'ltr' ? 0 : undefined,\n left: rootContext.dir.value === 'rtl' ? 0 : undefined,\n bottom: 0,\n }\"\n v-bind=\"$parent?.$props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["injectScrollAreaRootContext","ref","computed","useResizeObserver","watch"],"mappings":";;;;;;;;;;AAMA,IAAA,MAAM,cAAcA,qDAA4B,EAAA;AAEhD,IAAM,MAAA,KAAA,GAAQC,QAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAASA,QAAI,CAAC,CAAA;AAEpB,IAAM,MAAA,OAAA,GAAUC,YAAS,CAAA,MAAM,CAAC,CAAC,MAAM,KAAS,IAAA,CAAC,CAAC,MAAA,CAAO,KAAK,CAAA;AAE9D,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,MAAM,YAAe,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,YAAgB,IAAA,CAAA;AACnE,MAAA,WAAA,CAAY,qBAAqB,YAAY,CAAA;AAC7C,MAAA,MAAA,CAAO,KAAQ,GAAA,YAAA;AAAA;AAEjB,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA;AACjE,MAAA,WAAA,CAAY,oBAAoB,WAAW,CAAA;AAC3C,MAAA,KAAA,CAAM,KAAQ,GAAA,WAAA;AAAA;AAGhB,IAAkBC,sBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,IAAkBA,sBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;AAG9D,IAAAC,SAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AACzD,IAAAA,SAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, computed, watch, createBlock, createCommentVNode, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import { useResizeObserver } from '@vueuse/core';
3
- import { P as Primitive } from '../Primitive/Primitive.js';
4
3
  import { i as injectScrollAreaRootContext } from './ScrollAreaRoot.js';
4
+ import { P as Primitive } from '../Primitive/Primitive.js';
5
5
 
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  __name: "ScrollAreaCornerImpl",
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollAreaCornerImpl.js","sources":["../../src/ScrollArea/ScrollAreaCornerImpl.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\nimport { Primitive } from '@/Primitive'\n\nconst rootContext = injectScrollAreaRootContext()\n\nconst width = ref(0)\nconst height = ref(0)\n\nconst hasSize = computed(() => !!width.value && !!height.value)\n\nfunction setCornerHeight() {\n const offsetHeight = rootContext.scrollbarX.value?.offsetHeight || 0\n rootContext.onCornerHeightChange(offsetHeight)\n height.value = offsetHeight\n}\nfunction setCornerWidth() {\n const offsetWidth = rootContext.scrollbarY.value?.offsetWidth || 0\n rootContext.onCornerWidthChange(offsetWidth)\n width.value = offsetWidth\n}\n\nuseResizeObserver(rootContext.scrollbarX.value, setCornerHeight)\nuseResizeObserver(rootContext.scrollbarY.value, setCornerWidth)\n\n// because we are not remounting the component, useResizeObserver doesn't trigger, thus using watcher here\nwatch(() => rootContext.scrollbarX.value, setCornerHeight)\nwatch(() => rootContext.scrollbarY.value, setCornerWidth)\n</script>\n\n<template>\n <Primitive\n v-if=\"hasSize\"\n :style=\"{\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute',\n right: rootContext.dir.value === 'ltr' ? 0 : undefined,\n left: rootContext.dir.value === 'rtl' ? 0 : undefined,\n bottom: 0,\n }\"\n v-bind=\"$parent?.$props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;AAMA,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAM,MAAA,KAAA,GAAQ,IAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA;AAEpB,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,MAAM,CAAC,CAAC,MAAM,KAAS,IAAA,CAAC,CAAC,MAAA,CAAO,KAAK,CAAA;AAE9D,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,MAAM,YAAe,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,YAAgB,IAAA,CAAA;AACnE,MAAA,WAAA,CAAY,qBAAqB,YAAY,CAAA;AAC7C,MAAA,MAAA,CAAO,KAAQ,GAAA,YAAA;AAAA;AAEjB,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA;AACjE,MAAA,WAAA,CAAY,oBAAoB,WAAW,CAAA;AAC3C,MAAA,KAAA,CAAM,KAAQ,GAAA,WAAA;AAAA;AAGhB,IAAkB,iBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,IAAkB,iBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;AAG9D,IAAA,KAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AACzD,IAAA,KAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ScrollAreaCornerImpl.js","sources":["../../src/ScrollArea/ScrollAreaCornerImpl.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { useResizeObserver } from '@vueuse/core'\nimport { computed, ref, watch } from 'vue'\nimport { injectScrollAreaRootContext } from './ScrollAreaRoot.vue'\n\nconst rootContext = injectScrollAreaRootContext()\n\nconst width = ref(0)\nconst height = ref(0)\n\nconst hasSize = computed(() => !!width.value && !!height.value)\n\nfunction setCornerHeight() {\n const offsetHeight = rootContext.scrollbarX.value?.offsetHeight || 0\n rootContext.onCornerHeightChange(offsetHeight)\n height.value = offsetHeight\n}\nfunction setCornerWidth() {\n const offsetWidth = rootContext.scrollbarY.value?.offsetWidth || 0\n rootContext.onCornerWidthChange(offsetWidth)\n width.value = offsetWidth\n}\n\nuseResizeObserver(rootContext.scrollbarX.value, setCornerHeight)\nuseResizeObserver(rootContext.scrollbarY.value, setCornerWidth)\n\n// because we are not remounting the component, useResizeObserver doesn't trigger, thus using watcher here\nwatch(() => rootContext.scrollbarX.value, setCornerHeight)\nwatch(() => rootContext.scrollbarY.value, setCornerWidth)\n</script>\n\n<template>\n <Primitive\n v-if=\"hasSize\"\n :style=\"{\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute',\n right: rootContext.dir.value === 'ltr' ? 0 : undefined,\n left: rootContext.dir.value === 'rtl' ? 0 : undefined,\n bottom: 0,\n }\"\n v-bind=\"$parent?.$props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;AAMA,IAAA,MAAM,cAAc,2BAA4B,EAAA;AAEhD,IAAM,MAAA,KAAA,GAAQ,IAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA;AAEpB,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,MAAM,CAAC,CAAC,MAAM,KAAS,IAAA,CAAC,CAAC,MAAA,CAAO,KAAK,CAAA;AAE9D,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,MAAM,YAAe,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,YAAgB,IAAA,CAAA;AACnE,MAAA,WAAA,CAAY,qBAAqB,YAAY,CAAA;AAC7C,MAAA,MAAA,CAAO,KAAQ,GAAA,YAAA;AAAA;AAEjB,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,MAAM,WAAc,GAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA;AACjE,MAAA,WAAA,CAAY,oBAAoB,WAAW,CAAA;AAC3C,MAAA,KAAA,CAAM,KAAQ,GAAA,WAAA;AAAA;AAGhB,IAAkB,iBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,IAAkB,iBAAA,CAAA,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;AAG9D,IAAA,KAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,eAAe,CAAA;AACzD,IAAA,KAAA,CAAM,MAAM,WAAA,CAAY,UAAW,CAAA,KAAA,EAAO,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}