reka-ui 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  2. package/dist/Accordion/AccordionItem.js.map +1 -1
  3. package/dist/Accordion/AccordionRoot.cjs.map +1 -1
  4. package/dist/Accordion/AccordionRoot.js.map +1 -1
  5. package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
  6. package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
  7. package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
  8. package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
  9. package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js.map +1 -1
  11. package/dist/Avatar/AvatarFallback.cjs +11 -14
  12. package/dist/Avatar/AvatarFallback.cjs.map +1 -1
  13. package/dist/Avatar/AvatarFallback.js +12 -15
  14. package/dist/Avatar/AvatarFallback.js.map +1 -1
  15. package/dist/Avatar/AvatarImage.cjs +3 -2
  16. package/dist/Avatar/AvatarImage.cjs.map +1 -1
  17. package/dist/Avatar/AvatarImage.js +3 -2
  18. package/dist/Avatar/AvatarImage.js.map +1 -1
  19. package/dist/Avatar/AvatarRoot.cjs +1 -1
  20. package/dist/Avatar/AvatarRoot.cjs.map +1 -1
  21. package/dist/Avatar/AvatarRoot.js +1 -1
  22. package/dist/Avatar/AvatarRoot.js.map +1 -1
  23. package/dist/Avatar/utils.cjs +43 -16
  24. package/dist/Avatar/utils.cjs.map +1 -1
  25. package/dist/Avatar/utils.js +44 -17
  26. package/dist/Avatar/utils.js.map +1 -1
  27. package/dist/Calendar/CalendarCell.cjs +2 -2
  28. package/dist/Calendar/CalendarCell.cjs.map +1 -1
  29. package/dist/Calendar/CalendarCell.js +2 -2
  30. package/dist/Calendar/CalendarCell.js.map +1 -1
  31. package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
  32. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  33. package/dist/Calendar/CalendarCellTrigger.js +5 -1
  34. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  35. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  36. package/dist/Calendar/CalendarGrid.js.map +1 -1
  37. package/dist/Calendar/CalendarHeading.cjs.map +1 -1
  38. package/dist/Calendar/CalendarHeading.js.map +1 -1
  39. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  40. package/dist/Calendar/CalendarNext.js.map +1 -1
  41. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  42. package/dist/Calendar/CalendarPrev.js.map +1 -1
  43. package/dist/Calendar/CalendarRoot.cjs +7 -4
  44. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  45. package/dist/Calendar/CalendarRoot.js +7 -4
  46. package/dist/Calendar/CalendarRoot.js.map +1 -1
  47. package/dist/Calendar/useCalendar.cjs +2 -2
  48. package/dist/Calendar/useCalendar.cjs.map +1 -1
  49. package/dist/Calendar/useCalendar.js +2 -2
  50. package/dist/Calendar/useCalendar.js.map +1 -1
  51. package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
  52. package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
  53. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  54. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  55. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  56. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  57. package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
  58. package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
  59. package/dist/Collapsible/CollapsibleRoot.js +2 -0
  60. package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
  61. package/dist/Collection/Collection.cjs.map +1 -1
  62. package/dist/Collection/Collection.js.map +1 -1
  63. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  64. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  65. package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
  66. package/dist/Combobox/ComboboxGroup.js.map +1 -1
  67. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  68. package/dist/Combobox/ComboboxInput.js.map +1 -1
  69. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  70. package/dist/Combobox/ComboboxItem.js.map +1 -1
  71. package/dist/Combobox/ComboboxRoot.cjs +1 -2
  72. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  73. package/dist/Combobox/ComboboxRoot.js +1 -2
  74. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  75. package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
  76. package/dist/Combobox/ComboboxTrigger.js.map +1 -1
  77. package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
  78. package/dist/Combobox/ComboboxViewport.js.map +1 -1
  79. package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
  80. package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
  81. package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
  82. package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
  83. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  84. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  85. package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
  86. package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
  87. package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
  88. package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
  89. package/dist/ContextMenu/ContextMenuSub.js +1 -1
  90. package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
  91. package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
  92. package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
  93. package/dist/DateField/DateFieldInput.cjs +1 -0
  94. package/dist/DateField/DateFieldInput.cjs.map +1 -1
  95. package/dist/DateField/DateFieldInput.js +1 -0
  96. package/dist/DateField/DateFieldInput.js.map +1 -1
  97. package/dist/DateField/DateFieldRoot.cjs +7 -1
  98. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  99. package/dist/DateField/DateFieldRoot.js +7 -1
  100. package/dist/DateField/DateFieldRoot.js.map +1 -1
  101. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  102. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  103. package/dist/DatePicker/DatePickerContent.cjs +8 -3
  104. package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
  105. package/dist/DatePicker/DatePickerContent.js +9 -4
  106. package/dist/DatePicker/DatePickerContent.js.map +1 -1
  107. package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
  108. package/dist/DatePicker/DatePickerHeading.js.map +1 -1
  109. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  110. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  111. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  112. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  113. package/dist/DatePicker/DatePickerRoot.cjs +1 -0
  114. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  115. package/dist/DatePicker/DatePickerRoot.js +1 -0
  116. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  117. package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
  118. package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
  119. package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
  120. package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
  121. package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
  122. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  123. package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
  124. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  125. package/dist/DateRangePicker/DateRangePickerCalendar.cjs +2 -1
  126. package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
  127. package/dist/DateRangePicker/DateRangePickerCalendar.js +2 -1
  128. package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
  129. package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
  130. package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
  131. package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
  132. package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
  133. package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
  134. package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
  135. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  136. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  137. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  138. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  139. package/dist/DateRangePicker/DateRangePickerRoot.cjs +6 -2
  140. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  141. package/dist/DateRangePicker/DateRangePickerRoot.js +6 -2
  142. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  143. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  144. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  145. package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
  146. package/dist/Dialog/DialogContentNonModal.js.map +1 -1
  147. package/dist/Dialog/DialogRoot.cjs +4 -1
  148. package/dist/Dialog/DialogRoot.cjs.map +1 -1
  149. package/dist/Dialog/DialogRoot.js +4 -1
  150. package/dist/Dialog/DialogRoot.js.map +1 -1
  151. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  152. package/dist/Dialog/DialogTrigger.js.map +1 -1
  153. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  154. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  155. package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
  156. package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
  157. package/dist/DismissableLayer/utils.cjs +7 -3
  158. package/dist/DismissableLayer/utils.cjs.map +1 -1
  159. package/dist/DismissableLayer/utils.js +8 -4
  160. package/dist/DismissableLayer/utils.js.map +1 -1
  161. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  162. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  163. package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
  164. package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
  165. package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
  166. package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
  167. package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
  168. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  169. package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
  170. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  171. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  172. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  173. package/dist/Editable/EditableInput.cjs.map +1 -1
  174. package/dist/Editable/EditableInput.js.map +1 -1
  175. package/dist/Editable/EditableRoot.cjs +1 -1
  176. package/dist/Editable/EditableRoot.cjs.map +1 -1
  177. package/dist/Editable/EditableRoot.js +1 -1
  178. package/dist/Editable/EditableRoot.js.map +1 -1
  179. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  180. package/dist/FocusScope/FocusScope.js.map +1 -1
  181. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  182. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  183. package/dist/HoverCard/HoverCardRoot.cjs +1 -1
  184. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  185. package/dist/HoverCard/HoverCardRoot.js +1 -1
  186. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  187. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  188. package/dist/Listbox/ListboxFilter.js.map +1 -1
  189. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  190. package/dist/Listbox/ListboxItem.js.map +1 -1
  191. package/dist/Listbox/ListboxRoot.cjs +1 -1
  192. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  193. package/dist/Listbox/ListboxRoot.js +1 -1
  194. package/dist/Listbox/ListboxRoot.js.map +1 -1
  195. package/dist/Listbox/ListboxVirtualizer.cjs +3 -3
  196. package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
  197. package/dist/Listbox/ListboxVirtualizer.js +3 -3
  198. package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
  199. package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
  200. package/dist/Menu/MenuCheckboxItem.js.map +1 -1
  201. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  202. package/dist/Menu/MenuContentImpl.js.map +1 -1
  203. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  204. package/dist/Menu/MenuItemImpl.js.map +1 -1
  205. package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
  206. package/dist/Menu/MenuItemIndicator.js.map +1 -1
  207. package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
  208. package/dist/Menu/MenuRadioGroup.js.map +1 -1
  209. package/dist/Menu/MenuRoot.cjs +1 -1
  210. package/dist/Menu/MenuRoot.cjs.map +1 -1
  211. package/dist/Menu/MenuRoot.js +1 -1
  212. package/dist/Menu/MenuRoot.js.map +1 -1
  213. package/dist/Menu/MenuSub.cjs +1 -1
  214. package/dist/Menu/MenuSub.cjs.map +1 -1
  215. package/dist/Menu/MenuSub.js +1 -1
  216. package/dist/Menu/MenuSub.js.map +1 -1
  217. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  218. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  219. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  220. package/dist/Menubar/MenubarContent.js.map +1 -1
  221. package/dist/Menubar/MenubarMenu.cjs.map +1 -1
  222. package/dist/Menubar/MenubarMenu.js.map +1 -1
  223. package/dist/Menubar/MenubarRoot.cjs.map +1 -1
  224. package/dist/Menubar/MenubarRoot.js.map +1 -1
  225. package/dist/Menubar/MenubarSub.cjs +1 -1
  226. package/dist/Menubar/MenubarSub.cjs.map +1 -1
  227. package/dist/Menubar/MenubarSub.js +1 -1
  228. package/dist/Menubar/MenubarSub.js.map +1 -1
  229. package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
  230. package/dist/Menubar/MenubarTrigger.js.map +1 -1
  231. package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
  232. package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
  233. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  234. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  235. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  236. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  237. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  238. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  239. package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
  240. package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
  241. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  242. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  243. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  244. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  245. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  246. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  247. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  248. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  249. package/dist/NumberField/NumberFieldInput.cjs +2 -2
  250. package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
  251. package/dist/NumberField/NumberFieldInput.js +2 -2
  252. package/dist/NumberField/NumberFieldInput.js.map +1 -1
  253. package/dist/NumberField/NumberFieldRoot.cjs +8 -5
  254. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  255. package/dist/NumberField/NumberFieldRoot.js +8 -5
  256. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  257. package/dist/Pagination/PaginationFirst.cjs.map +1 -1
  258. package/dist/Pagination/PaginationFirst.js.map +1 -1
  259. package/dist/Pagination/PaginationLast.cjs.map +1 -1
  260. package/dist/Pagination/PaginationLast.js.map +1 -1
  261. package/dist/Pagination/PaginationList.cjs.map +1 -1
  262. package/dist/Pagination/PaginationList.js.map +1 -1
  263. package/dist/Pagination/PaginationListItem.cjs.map +1 -1
  264. package/dist/Pagination/PaginationListItem.js.map +1 -1
  265. package/dist/Pagination/PaginationNext.cjs.map +1 -1
  266. package/dist/Pagination/PaginationNext.js.map +1 -1
  267. package/dist/Pagination/PaginationPrev.cjs.map +1 -1
  268. package/dist/Pagination/PaginationPrev.js.map +1 -1
  269. package/dist/Pagination/PaginationRoot.cjs.map +1 -1
  270. package/dist/Pagination/PaginationRoot.js.map +1 -1
  271. package/dist/PinInput/PinInputInput.cjs +1 -1
  272. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  273. package/dist/PinInput/PinInputInput.js +1 -1
  274. package/dist/PinInput/PinInputInput.js.map +1 -1
  275. package/dist/PinInput/PinInputRoot.cjs.map +1 -1
  276. package/dist/PinInput/PinInputRoot.js.map +1 -1
  277. package/dist/Popover/PopoverAnchor.cjs.map +1 -1
  278. package/dist/Popover/PopoverAnchor.js.map +1 -1
  279. package/dist/Popover/PopoverContentModal.cjs.map +1 -1
  280. package/dist/Popover/PopoverContentModal.js.map +1 -1
  281. package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
  282. package/dist/Popover/PopoverContentNonModal.js.map +1 -1
  283. package/dist/Popover/PopoverRoot.cjs +1 -1
  284. package/dist/Popover/PopoverRoot.cjs.map +1 -1
  285. package/dist/Popover/PopoverRoot.js +1 -1
  286. package/dist/Popover/PopoverRoot.js.map +1 -1
  287. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  288. package/dist/Popover/PopoverTrigger.js.map +1 -1
  289. package/dist/Popper/PopperAnchor.cjs.map +1 -1
  290. package/dist/Popper/PopperAnchor.js.map +1 -1
  291. package/dist/Popper/PopperArrow.cjs.map +1 -1
  292. package/dist/Popper/PopperArrow.js.map +1 -1
  293. package/dist/Popper/PopperContent.cjs.map +1 -1
  294. package/dist/Popper/PopperContent.js.map +1 -1
  295. package/dist/Presence/Presence.cjs.map +1 -1
  296. package/dist/Presence/Presence.js.map +1 -1
  297. package/dist/Presence/usePresence.cjs.map +1 -1
  298. package/dist/Presence/usePresence.js.map +1 -1
  299. package/dist/Primitive/Slot.cjs +1 -9
  300. package/dist/Primitive/Slot.cjs.map +1 -1
  301. package/dist/Primitive/Slot.js +1 -9
  302. package/dist/Primitive/Slot.js.map +1 -1
  303. package/dist/Progress/ProgressRoot.cjs +3 -2
  304. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  305. package/dist/Progress/ProgressRoot.js +3 -2
  306. package/dist/Progress/ProgressRoot.js.map +1 -1
  307. package/dist/RadioGroup/Radio.cjs.map +1 -1
  308. package/dist/RadioGroup/Radio.js.map +1 -1
  309. package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
  310. package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
  311. package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
  312. package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
  313. package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
  314. package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
  315. package/dist/RangeCalendar/RangeCalendarCell.js +2 -2
  316. package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
  317. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
  318. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  319. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
  320. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  321. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  322. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  323. package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
  324. package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
  325. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  326. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  327. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  328. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  329. package/dist/RangeCalendar/RangeCalendarRoot.cjs +26 -9
  330. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  331. package/dist/RangeCalendar/RangeCalendarRoot.js +26 -9
  332. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  333. package/dist/RangeCalendar/useRangeCalendar.cjs +21 -4
  334. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  335. package/dist/RangeCalendar/useRangeCalendar.js +21 -4
  336. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  337. package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
  338. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  339. package/dist/RovingFocus/RovingFocusGroup.js +1 -1
  340. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  341. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  342. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  343. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
  344. package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
  345. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  346. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  347. package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
  348. package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
  349. package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
  350. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
  351. package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
  352. package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
  353. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  354. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  355. package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
  356. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
  357. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
  358. package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
  359. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
  360. package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
  361. package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
  362. package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
  363. package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
  364. package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
  365. package/dist/Select/BubbleSelect.cjs.map +1 -1
  366. package/dist/Select/BubbleSelect.js.map +1 -1
  367. package/dist/Select/SelectContent.cjs.map +1 -1
  368. package/dist/Select/SelectContent.js.map +1 -1
  369. package/dist/Select/SelectContentImpl.cjs +1 -1
  370. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  371. package/dist/Select/SelectContentImpl.js +1 -1
  372. package/dist/Select/SelectContentImpl.js.map +1 -1
  373. package/dist/Select/SelectItem.cjs.map +1 -1
  374. package/dist/Select/SelectItem.js.map +1 -1
  375. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  376. package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
  377. package/dist/Select/SelectItemAlignedPosition.js +1 -1
  378. package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
  379. package/dist/Select/SelectItemText.cjs.map +1 -1
  380. package/dist/Select/SelectItemText.js.map +1 -1
  381. package/dist/Select/SelectProvider.cjs.map +1 -1
  382. package/dist/Select/SelectProvider.js.map +1 -1
  383. package/dist/Select/SelectRoot.cjs +3 -1
  384. package/dist/Select/SelectRoot.cjs.map +1 -1
  385. package/dist/Select/SelectRoot.js +3 -1
  386. package/dist/Select/SelectRoot.js.map +1 -1
  387. package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
  388. package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
  389. package/dist/Select/SelectTrigger.cjs.map +1 -1
  390. package/dist/Select/SelectTrigger.js.map +1 -1
  391. package/dist/Select/SelectValue.cjs.map +1 -1
  392. package/dist/Select/SelectValue.js.map +1 -1
  393. package/dist/Select/SelectViewport.cjs.map +1 -1
  394. package/dist/Select/SelectViewport.js.map +1 -1
  395. package/dist/Slider/SliderHorizontal.cjs +7 -4
  396. package/dist/Slider/SliderHorizontal.cjs.map +1 -1
  397. package/dist/Slider/SliderHorizontal.js +7 -4
  398. package/dist/Slider/SliderHorizontal.js.map +1 -1
  399. package/dist/Slider/SliderRange.cjs +2 -2
  400. package/dist/Slider/SliderRange.cjs.map +1 -1
  401. package/dist/Slider/SliderRange.js +2 -2
  402. package/dist/Slider/SliderRange.js.map +1 -1
  403. package/dist/Slider/SliderRoot.cjs.map +1 -1
  404. package/dist/Slider/SliderRoot.js.map +1 -1
  405. package/dist/Slider/SliderThumb.cjs.map +1 -1
  406. package/dist/Slider/SliderThumb.js.map +1 -1
  407. package/dist/Slider/SliderThumbImpl.cjs +3 -3
  408. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  409. package/dist/Slider/SliderThumbImpl.js +3 -3
  410. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  411. package/dist/Slider/SliderVertical.cjs +7 -4
  412. package/dist/Slider/SliderVertical.cjs.map +1 -1
  413. package/dist/Slider/SliderVertical.js +7 -4
  414. package/dist/Slider/SliderVertical.js.map +1 -1
  415. package/dist/Slider/utils.cjs +1 -1
  416. package/dist/Slider/utils.cjs.map +1 -1
  417. package/dist/Slider/utils.js +1 -1
  418. package/dist/Slider/utils.js.map +1 -1
  419. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  420. package/dist/Splitter/SplitterGroup.js.map +1 -1
  421. package/dist/Splitter/SplitterPanel.cjs +16 -10
  422. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  423. package/dist/Splitter/SplitterPanel.js +16 -10
  424. package/dist/Splitter/SplitterPanel.js.map +1 -1
  425. package/dist/Stepper/StepperIndicator.cjs.map +1 -1
  426. package/dist/Stepper/StepperIndicator.js.map +1 -1
  427. package/dist/Stepper/StepperItem.cjs.map +1 -1
  428. package/dist/Stepper/StepperItem.js.map +1 -1
  429. package/dist/Stepper/StepperRoot.cjs +30 -3
  430. package/dist/Stepper/StepperRoot.cjs.map +1 -1
  431. package/dist/Stepper/StepperRoot.js +30 -3
  432. package/dist/Stepper/StepperRoot.js.map +1 -1
  433. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  434. package/dist/Stepper/StepperTrigger.js.map +1 -1
  435. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  436. package/dist/Switch/SwitchRoot.js.map +1 -1
  437. package/dist/Tabs/TabsContent.cjs.map +1 -1
  438. package/dist/Tabs/TabsContent.js.map +1 -1
  439. package/dist/Tabs/TabsIndicator.cjs.map +1 -1
  440. package/dist/Tabs/TabsIndicator.js.map +1 -1
  441. package/dist/Tabs/TabsList.cjs.map +1 -1
  442. package/dist/Tabs/TabsList.js.map +1 -1
  443. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  444. package/dist/Tabs/TabsRoot.js.map +1 -1
  445. package/dist/Tabs/TabsTrigger.cjs.map +1 -1
  446. package/dist/Tabs/TabsTrigger.js.map +1 -1
  447. package/dist/TagsInput/TagsInputInput.cjs +1 -0
  448. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  449. package/dist/TagsInput/TagsInputInput.js +1 -0
  450. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  451. package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
  452. package/dist/TagsInput/TagsInputItem.js.map +1 -1
  453. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  454. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  455. package/dist/TagsInput/TagsInputRoot.cjs +1 -1
  456. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  457. package/dist/TagsInput/TagsInputRoot.js +1 -1
  458. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  459. package/dist/TimeField/TimeFieldInput.cjs +1 -0
  460. package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
  461. package/dist/TimeField/TimeFieldInput.js +1 -0
  462. package/dist/TimeField/TimeFieldInput.js.map +1 -1
  463. package/dist/TimeField/TimeFieldRoot.cjs +13 -4
  464. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  465. package/dist/TimeField/TimeFieldRoot.js +13 -4
  466. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  467. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  468. package/dist/Toast/ToastAnnounce.js.map +1 -1
  469. package/dist/Toast/ToastRoot.cjs.map +1 -1
  470. package/dist/Toast/ToastRoot.js.map +1 -1
  471. package/dist/Toast/ToastRootImpl.cjs +1 -1
  472. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  473. package/dist/Toast/ToastRootImpl.js +1 -1
  474. package/dist/Toast/ToastRootImpl.js.map +1 -1
  475. package/dist/Toast/ToastViewport.cjs +1 -1
  476. package/dist/Toast/ToastViewport.cjs.map +1 -1
  477. package/dist/Toast/ToastViewport.js +1 -1
  478. package/dist/Toast/ToastViewport.js.map +1 -1
  479. package/dist/Toggle/Toggle.cjs.map +1 -1
  480. package/dist/Toggle/Toggle.js.map +1 -1
  481. package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  482. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  483. package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
  484. package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
  485. package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
  486. package/dist/Toolbar/ToolbarRoot.js.map +1 -1
  487. package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
  488. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  489. package/dist/Tooltip/TooltipContentImpl.js +1 -1
  490. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  491. package/dist/Tooltip/TooltipRoot.cjs +1 -1
  492. package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
  493. package/dist/Tooltip/TooltipRoot.js +1 -1
  494. package/dist/Tooltip/TooltipRoot.js.map +1 -1
  495. package/dist/Tooltip/TooltipTrigger.cjs +1 -1
  496. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  497. package/dist/Tooltip/TooltipTrigger.js +1 -1
  498. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  499. package/dist/Tree/TreeItem.cjs +4 -1
  500. package/dist/Tree/TreeItem.cjs.map +1 -1
  501. package/dist/Tree/TreeItem.js +4 -1
  502. package/dist/Tree/TreeItem.js.map +1 -1
  503. package/dist/Tree/TreeRoot.cjs +29 -3
  504. package/dist/Tree/TreeRoot.cjs.map +1 -1
  505. package/dist/Tree/TreeRoot.js +29 -3
  506. package/dist/Tree/TreeRoot.js.map +1 -1
  507. package/dist/Tree/TreeVirtualizer.cjs +2 -2
  508. package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
  509. package/dist/Tree/TreeVirtualizer.js +2 -2
  510. package/dist/Tree/TreeVirtualizer.js.map +1 -1
  511. package/dist/Viewport/Viewport.cjs.map +1 -1
  512. package/dist/Viewport/Viewport.js.map +1 -1
  513. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
  514. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
  515. package/dist/component/BaseSeparator.cjs.map +1 -1
  516. package/dist/component/BaseSeparator.js.map +1 -1
  517. package/dist/date/calendar.cjs.map +1 -1
  518. package/dist/date/calendar.js.map +1 -1
  519. package/dist/date/parser.cjs +22 -7
  520. package/dist/date/parser.cjs.map +1 -1
  521. package/dist/date/parser.js +23 -8
  522. package/dist/date/parser.js.map +1 -1
  523. package/dist/date/useDateField.cjs +21 -6
  524. package/dist/date/useDateField.cjs.map +1 -1
  525. package/dist/date/useDateField.js +21 -6
  526. package/dist/date/useDateField.js.map +1 -1
  527. package/dist/date/utils.cjs +31 -2
  528. package/dist/date/utils.cjs.map +1 -1
  529. package/dist/date/utils.js +30 -3
  530. package/dist/date/utils.js.map +1 -1
  531. package/dist/index.d.ts +492 -351
  532. package/dist/shared/useBodyScrollLock.cjs +2 -2
  533. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  534. package/dist/shared/useBodyScrollLock.js +2 -2
  535. package/dist/shared/useBodyScrollLock.js.map +1 -1
  536. package/dist/shared/useDateFormatter.cjs +12 -10
  537. package/dist/shared/useDateFormatter.cjs.map +1 -1
  538. package/dist/shared/useDateFormatter.js +12 -10
  539. package/dist/shared/useDateFormatter.js.map +1 -1
  540. package/dist/shared/useDirection.cjs.map +1 -1
  541. package/dist/shared/useDirection.js.map +1 -1
  542. package/dist/shared/useForwardProps.cjs +4 -2
  543. package/dist/shared/useForwardProps.cjs.map +1 -1
  544. package/dist/shared/useForwardProps.js +5 -3
  545. package/dist/shared/useForwardProps.js.map +1 -1
  546. package/dist/shared/useGraceArea.cjs.map +1 -1
  547. package/dist/shared/useGraceArea.js.map +1 -1
  548. package/dist/shared/useId.cjs +2 -2
  549. package/dist/shared/useId.cjs.map +1 -1
  550. package/dist/shared/useId.js +2 -2
  551. package/dist/shared/useId.js.map +1 -1
  552. package/dist/shared/useLocale.cjs.map +1 -1
  553. package/dist/shared/useLocale.js.map +1 -1
  554. package/dist/shared/useNonce.cjs.map +1 -1
  555. package/dist/shared/useNonce.js.map +1 -1
  556. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"DismissableLayer.js","sources":["../../src/DismissableLayer/DismissableLayer.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nimport type {\n FocusOutsideEvent,\n PointerDownOutsideEvent,\n} from './utils'\nimport { useForwardExpose } from '@/shared'\nimport {\n computed,\n nextTick,\n reactive,\n watchEffect,\n} from 'vue'\n\nexport interface DismissableLayerProps extends PrimitiveProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean\n}\n\nexport type DismissableLayerEmits = {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n escapeKeyDown: [event: KeyboardEvent]\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n pointerDownOutside: [event: PointerDownOutsideEvent]\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n focusOutside: [ event: FocusOutsideEvent]\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n interactOutside: [ event: PointerDownOutsideEvent | FocusOutsideEvent]\n}\n\nexport type DismissableLayerPrivateEmits = DismissableLayerEmits & {\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n dismiss: []\n}\n\nexport const context = reactive({\n layersRoot: new Set<HTMLElement>(),\n layersWithOutsidePointerEventsDisabled: new Set<HTMLElement>(),\n branches: new Set<HTMLElement>(),\n})\n</script>\n\n<script setup lang=\"ts\">\nimport {\n Primitive,\n} from '@/Primitive'\nimport { onKeyStroke } from '@vueuse/core'\nimport {\n useFocusOutside,\n usePointerDownOutside,\n} from './utils'\n\nconst props = withDefaults(defineProps<DismissableLayerProps>(), {\n disableOutsidePointerEvents: false,\n})\n\nconst emits = defineEmits<DismissableLayerPrivateEmits>()\n\nconst { forwardRef, currentElement: layerElement } = useForwardExpose()\nconst ownerDocument = computed(\n () => layerElement.value?.ownerDocument ?? globalThis.document,\n)\n\nconst layers = computed(() => context.layersRoot)\n\nconst index = computed(() => {\n return layerElement.value\n ? Array.from(layers.value).indexOf(layerElement.value)\n : -1\n})\n\nconst isBodyPointerEventsDisabled = computed(() => {\n return context.layersWithOutsidePointerEventsDisabled.size > 0\n})\n\nconst isPointerEventsEnabled = computed(() => {\n const localLayers = Array.from(layers.value)\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1)\n const highestLayerWithOutsidePointerEventsDisabledIndex = localLayers.indexOf(highestLayerWithOutsidePointerEventsDisabled)\n\n return index.value >= highestLayerWithOutsidePointerEventsDisabledIndex\n})\n\nconst pointerDownOutside = usePointerDownOutside(async (event) => {\n const isPointerDownOnBranch = [...context.branches].some(branch =>\n branch?.contains(event.target as HTMLElement),\n )\n\n if (!isPointerEventsEnabled.value || isPointerDownOnBranch)\n return\n emits('pointerDownOutside', event)\n emits('interactOutside', event)\n await nextTick()\n if (!event.defaultPrevented)\n emits('dismiss')\n}, layerElement)\n\nconst focusOutside = useFocusOutside((event) => {\n const isFocusInBranch = [...context.branches].some(branch =>\n branch?.contains(event.target as HTMLElement),\n )\n\n if (isFocusInBranch)\n return\n emits('focusOutside', event)\n emits('interactOutside', event)\n if (!event.defaultPrevented)\n emits('dismiss')\n}, layerElement)\n\nonKeyStroke('Escape', (event) => {\n const isHighestLayer = index.value === layers.value.size - 1\n if (!isHighestLayer)\n return\n emits('escapeKeyDown', event)\n if (!event.defaultPrevented)\n emits('dismiss')\n})\n\nlet originalBodyPointerEvents: string\nwatchEffect((cleanupFn) => {\n if (!layerElement.value)\n return\n if (props.disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.value.body.style.pointerEvents\n ownerDocument.value.body.style.pointerEvents = 'none'\n }\n context.layersWithOutsidePointerEventsDisabled.add(layerElement.value)\n }\n layers.value.add(layerElement.value)\n\n cleanupFn(() => {\n if (\n props.disableOutsidePointerEvents\n && context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.value.body.style.pointerEvents = originalBodyPointerEvents\n }\n })\n})\n\nwatchEffect((cleanupFn) => {\n cleanupFn(() => {\n if (!layerElement.value)\n return\n layers.value.delete(layerElement.value)\n context.layersWithOutsidePointerEventsDisabled.delete(layerElement.value)\n })\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as-child=\"asChild\"\n :as=\"as\"\n data-dismissable-layer\n :style=\"{\n pointerEvents: isBodyPointerEventsDisabled\n ? isPointerEventsEnabled\n ? 'auto'\n : 'none'\n : undefined,\n }\"\n @focus.capture=\"focusOutside.onFocusCapture\"\n @blur.capture=\"focusOutside.onBlurCapture\"\n @pointerdown.capture=\"pointerDownOutside.onPointerDownCapture\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DismissableLayer.js","sources":["../../src/DismissableLayer/DismissableLayer.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n FocusOutsideEvent,\n PointerDownOutsideEvent,\n} from './utils'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport {\n computed,\n nextTick,\n reactive,\n watchEffect,\n} from 'vue'\nimport { useForwardExpose } from '@/shared'\n\nexport interface DismissableLayerProps extends PrimitiveProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean\n}\n\nexport type DismissableLayerEmits = {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n escapeKeyDown: [event: KeyboardEvent]\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n pointerDownOutside: [event: PointerDownOutsideEvent]\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n focusOutside: [ event: FocusOutsideEvent]\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n interactOutside: [ event: PointerDownOutsideEvent | FocusOutsideEvent]\n}\n\nexport type DismissableLayerPrivateEmits = DismissableLayerEmits & {\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n dismiss: []\n}\n\nexport const context = reactive({\n layersRoot: new Set<HTMLElement>(),\n layersWithOutsidePointerEventsDisabled: new Set<HTMLElement>(),\n branches: new Set<HTMLElement>(),\n})\n</script>\n\n<script setup lang=\"ts\">\nimport { onKeyStroke } from '@vueuse/core'\nimport {\n Primitive,\n} from '@/Primitive'\nimport {\n useFocusOutside,\n usePointerDownOutside,\n} from './utils'\n\nconst props = withDefaults(defineProps<DismissableLayerProps>(), {\n disableOutsidePointerEvents: false,\n})\n\nconst emits = defineEmits<DismissableLayerPrivateEmits>()\n\nconst { forwardRef, currentElement: layerElement } = useForwardExpose()\nconst ownerDocument = computed(\n () => layerElement.value?.ownerDocument ?? globalThis.document,\n)\n\nconst layers = computed(() => context.layersRoot)\n\nconst index = computed(() => {\n return layerElement.value\n ? Array.from(layers.value).indexOf(layerElement.value)\n : -1\n})\n\nconst isBodyPointerEventsDisabled = computed(() => {\n return context.layersWithOutsidePointerEventsDisabled.size > 0\n})\n\nconst isPointerEventsEnabled = computed(() => {\n const localLayers = Array.from(layers.value)\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1)\n const highestLayerWithOutsidePointerEventsDisabledIndex = localLayers.indexOf(highestLayerWithOutsidePointerEventsDisabled)\n\n return index.value >= highestLayerWithOutsidePointerEventsDisabledIndex\n})\n\nconst pointerDownOutside = usePointerDownOutside(async (event) => {\n const isPointerDownOnBranch = [...context.branches].some(branch =>\n branch?.contains(event.target as HTMLElement),\n )\n\n if (!isPointerEventsEnabled.value || isPointerDownOnBranch)\n return\n emits('pointerDownOutside', event)\n emits('interactOutside', event)\n await nextTick()\n if (!event.defaultPrevented)\n emits('dismiss')\n}, layerElement)\n\nconst focusOutside = useFocusOutside((event) => {\n const isFocusInBranch = [...context.branches].some(branch =>\n branch?.contains(event.target as HTMLElement),\n )\n\n if (isFocusInBranch)\n return\n emits('focusOutside', event)\n emits('interactOutside', event)\n if (!event.defaultPrevented)\n emits('dismiss')\n}, layerElement)\n\nonKeyStroke('Escape', (event) => {\n const isHighestLayer = index.value === layers.value.size - 1\n if (!isHighestLayer)\n return\n emits('escapeKeyDown', event)\n if (!event.defaultPrevented)\n emits('dismiss')\n})\n\nlet originalBodyPointerEvents: string\nwatchEffect((cleanupFn) => {\n if (!layerElement.value)\n return\n if (props.disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.value.body.style.pointerEvents\n ownerDocument.value.body.style.pointerEvents = 'none'\n }\n context.layersWithOutsidePointerEventsDisabled.add(layerElement.value)\n }\n layers.value.add(layerElement.value)\n\n cleanupFn(() => {\n if (\n props.disableOutsidePointerEvents\n && context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.value.body.style.pointerEvents = originalBodyPointerEvents\n }\n })\n})\n\nwatchEffect((cleanupFn) => {\n cleanupFn(() => {\n if (!layerElement.value)\n return\n layers.value.delete(layerElement.value)\n context.layersWithOutsidePointerEventsDisabled.delete(layerElement.value)\n })\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as-child=\"asChild\"\n :as=\"as\"\n data-dismissable-layer\n :style=\"{\n pointerEvents: isBodyPointerEventsDisabled\n ? isPointerEventsEnabled\n ? 'auto'\n : 'none'\n : undefined,\n }\"\n @focus.capture=\"focusOutside.onFocusCapture\"\n @blur.capture=\"focusOutside.onBlurCapture\"\n @pointerdown.capture=\"pointerDownOutside.onPointerDownCapture\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DismissableLayerBranch.cjs","sources":["../../src/DismissableLayer/DismissableLayerBranch.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface DismissableLayerBranchProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { onMounted, onUnmounted } from 'vue'\nimport { context } from './DismissableLayer.vue'\n\nconst props = defineProps<DismissableLayerBranchProps>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nonMounted(() => {\n context.branches.add(currentElement.value)\n})\nonUnmounted(() => {\n context.branches.delete(currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","onMounted","context","onUnmounted"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAAC,aAAA,CAAU,MAAM;AACd,MAAQC,yCAAA,CAAA,QAAA,CAAS,GAAI,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC1C,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAQD,yCAAA,CAAA,QAAA,CAAS,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC7C,CAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DismissableLayerBranch.cjs","sources":["../../src/DismissableLayer/DismissableLayerBranch.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface DismissableLayerBranchProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { context } from './DismissableLayer.vue'\n\nconst props = defineProps<DismissableLayerBranchProps>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nonMounted(() => {\n context.branches.add(currentElement.value)\n})\nonUnmounted(() => {\n context.branches.delete(currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","onMounted","context","onUnmounted"],"mappings":";;;;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAAC,aAAA,CAAU,MAAM;AACd,MAAQC,yCAAA,CAAA,QAAA,CAAS,GAAI,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC1C,CAAA;AACD,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAQD,yCAAA,CAAA,QAAA,CAAS,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC7C,CAAA;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DismissableLayerBranch.js","sources":["../../src/DismissableLayer/DismissableLayerBranch.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface DismissableLayerBranchProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { onMounted, onUnmounted } from 'vue'\nimport { context } from './DismissableLayer.vue'\n\nconst props = defineProps<DismissableLayerBranchProps>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nonMounted(() => {\n context.branches.add(currentElement.value)\n})\nonUnmounted(() => {\n context.branches.delete(currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,SAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,QAAA,CAAS,GAAI,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC1C,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAQ,OAAA,CAAA,QAAA,CAAS,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC7C,CAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DismissableLayerBranch.js","sources":["../../src/DismissableLayer/DismissableLayerBranch.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface DismissableLayerBranchProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { context } from './DismissableLayer.vue'\n\nconst props = defineProps<DismissableLayerBranchProps>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\nonMounted(() => {\n context.branches.add(currentElement.value)\n})\nonUnmounted(() => {\n context.branches.delete(currentElement.value)\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n v-bind=\"props\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAYA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,SAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,QAAA,CAAS,GAAI,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC1C,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAQ,OAAA,CAAA,QAAA,CAAS,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC7C,CAAA;;;;;;;;;;;;;;"}
@@ -22,13 +22,13 @@ function isLayerExist(layerElement, targetElement) {
22
22
  return false;
23
23
  }
24
24
  }
25
- function usePointerDownOutside(onPointerDownOutside, element) {
25
+ function usePointerDownOutside(onPointerDownOutside, element, enabled = true) {
26
26
  const ownerDocument = element?.value?.ownerDocument ?? globalThis?.document;
27
27
  const isPointerInsideDOMTree = vue.ref(false);
28
28
  const handleClickRef = vue.ref(() => {
29
29
  });
30
30
  vue.watchEffect((cleanupFn) => {
31
- if (!shared.isClient)
31
+ if (!shared.isClient || !vue.toValue(enabled))
32
32
  return;
33
33
  const handlePointerDown = async (event) => {
34
34
  const target = event.target;
@@ -71,7 +71,11 @@ function usePointerDownOutside(onPointerDownOutside, element) {
71
71
  });
72
72
  });
73
73
  return {
74
- onPointerDownCapture: () => isPointerInsideDOMTree.value = true
74
+ onPointerDownCapture: () => {
75
+ if (!vue.toValue(enabled))
76
+ return;
77
+ isPointerInsideDOMTree.value = true;
78
+ }
75
79
  };
76
80
  }
77
81
  function useFocusOutside(onFocusOutside, element) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../src/DismissableLayer/utils.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { handleAndDispatchCustomEvent } from '@/shared'\nimport { isClient } from '@vueuse/shared'\nimport { nextTick, ref, watchEffect } from 'vue'\n\nexport type PointerDownOutsideEvent = CustomEvent<{\n originalEvent: PointerEvent\n}>\nexport type FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>\n\nexport const DISMISSABLE_LAYER_NAME = 'DismissableLayer'\nexport const CONTEXT_UPDATE = 'dismissableLayer.update'\nexport const POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'\nexport const FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'\n\nfunction isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {\n const targetLayer = targetElement.closest(\n '[data-dismissable-layer]',\n )\n\n const mainLayer = layerElement.dataset.dismissableLayer === ''\n ? layerElement\n : layerElement.querySelector(\n '[data-dismissable-layer]',\n ) as HTMLElement\n\n const nodeList = Array.from(\n layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'),\n )\n\n if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))\n ) {\n return true\n }\n else {\n return false\n }\n}\n\n/**\n * Listens for `pointerdown` outside a DOM subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nexport function usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isPointerInsideDOMTree = ref(false)\n const handleClickRef = ref(() => {})\n\n watchEffect((cleanupFn) => {\n if (!isClient)\n return\n const handlePointerDown = async (event: PointerEvent) => {\n const target = event.target as HTMLElement | undefined\n\n if (!element?.value || !target)\n return\n\n if (isLayerExist(element.value, target)) {\n isPointerInsideDOMTree.value = false\n return\n }\n\n if (event.target && !isPointerInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n onPointerDownOutside,\n eventDetail,\n )\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executes events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.value)\n handleClickRef.value = handleAndDispatchPointerDownOutsideEvent\n ownerDocument.addEventListener('click', handleClickRef.value, {\n once: true,\n })\n }\n else {\n handleAndDispatchPointerDownOutsideEvent()\n }\n }\n else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.value)\n }\n isPointerInsideDOMTree.value = false\n }\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown)\n }, 0)\n\n cleanupFn(() => {\n window.clearTimeout(timerId)\n ownerDocument.removeEventListener('pointerdown', handlePointerDown)\n ownerDocument.removeEventListener('click', handleClickRef.value)\n })\n })\n\n return {\n onPointerDownCapture: () => (isPointerInsideDOMTree.value = true),\n }\n}\n\n/**\n * Listens for when focus happens outside a DOM subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nexport function useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isFocusInsideDOMTree = ref(false)\n watchEffect((cleanupFn) => {\n if (!isClient)\n return\n const handleFocus = async (event: FocusEvent) => {\n if (!element?.value)\n return\n\n await nextTick()\n await nextTick()\n const target = event.target as HTMLElement | undefined\n if (!element.value || !target || isLayerExist(element.value, target))\n return\n\n if (event.target && !isFocusInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n handleAndDispatchCustomEvent(\n FOCUS_OUTSIDE,\n onFocusOutside,\n eventDetail,\n )\n }\n }\n\n ownerDocument.addEventListener('focusin', handleFocus)\n\n cleanupFn(() => ownerDocument.removeEventListener('focusin', handleFocus))\n })\n\n return {\n onFocusCapture: () => (isFocusInsideDOMTree.value = true),\n onBlurCapture: () => (isFocusInsideDOMTree.value = false),\n }\n}\n\nexport function dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE)\n document.dispatchEvent(event)\n}\n"],"names":["ref","watchEffect","isClient","handleAndDispatchCustomEvent","nextTick"],"mappings":";;;;;;AAYO,MAAM,oBAAuB,GAAA,qCAAA;AAC7B,MAAM,aAAgB,GAAA,+BAAA;AAE7B,SAAS,YAAA,CAAa,cAA2B,aAA4B,EAAA;AAC3E,EAAA,MAAM,cAAc,aAAc,CAAA,OAAA;AAAA,IAChC;AAAA,GACF;AAEA,EAAA,MAAM,YAAY,YAAa,CAAA,OAAA,CAAQ,gBAAqB,KAAA,EAAA,GACxD,eACA,YAAa,CAAA,aAAA;AAAA,IACb;AAAA,GACF;AAEF,EAAA,MAAM,WAAW,KAAM,CAAA,IAAA;AAAA,IACrB,YAAA,CAAa,aAAc,CAAA,gBAAA,CAAiB,0BAA0B;AAAA,GACxE;AAEA,EAAI,IAAA,WAAA,KAAgB,SAAc,KAAA,WAAA,IAAe,QAAS,CAAA,OAAA,CAAQ,SAAS,CAAI,GAAA,QAAA,CAAS,OAAQ,CAAA,WAAW,CACzG,CAAA,EAAA;AACA,IAAO,OAAA,IAAA;AAAA,GAEJ,MAAA;AACH,IAAO,OAAA,KAAA;AAAA;AAEX;AAOgB,SAAA,qBAAA,CACd,sBACA,OACA,EAAA;AACA,EAAA,MAAM,aACF,GAAA,OAAA,EAAS,KAAO,EAAA,aAAA,IAAiB,UAAY,EAAA,QAAA;AAEjD,EAAM,MAAA,sBAAA,GAAyBA,QAAI,KAAK,CAAA;AACxC,EAAM,MAAA,cAAA,GAAiBA,QAAI,MAAM;AAAA,GAAE,CAAA;AAEnC,EAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,IAAA,IAAI,CAACC,eAAA;AACH,MAAA;AACF,IAAM,MAAA,iBAAA,GAAoB,OAAO,KAAwB,KAAA;AACvD,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AAErB,MAAI,IAAA,CAAC,OAAS,EAAA,KAAA,IAAS,CAAC,MAAA;AACtB,QAAA;AAEF,MAAA,IAAI,YAAa,CAAA,OAAA,CAAQ,KAAO,EAAA,MAAM,CAAG,EAAA;AACvC,QAAA,sBAAA,CAAuB,KAAQ,GAAA,KAAA;AAC/B,QAAA;AAAA;AAGF,MAAA,IAAI,KAAM,CAAA,MAAA,IAAU,CAAC,sBAAA,CAAuB,KAAO,EAAA;AAGjD,QAAA,IAAS,2CAAT,WAAoD;AAClD,UAAAC,gEAAA;AAAA,YACE,oBAAA;AAAA,YACA,oBAAA;AAAA,YACA;AAAA,WACF;AAAA,SACF;AARA,QAAM,MAAA,WAAA,GAAc,EAAE,aAAA,EAAe,KAAM,EAAA;AAsB3C,QAAI,IAAA,KAAA,CAAM,gBAAgB,OAAS,EAAA;AACjC,UAAc,aAAA,CAAA,mBAAA,CAAoB,OAAS,EAAA,cAAA,CAAe,KAAK,CAAA;AAC/D,UAAA,cAAA,CAAe,KAAQ,GAAA,wCAAA;AACvB,UAAc,aAAA,CAAA,gBAAA,CAAiB,OAAS,EAAA,cAAA,CAAe,KAAO,EAAA;AAAA,YAC5D,IAAM,EAAA;AAAA,WACP,CAAA;AAAA,SAEE,MAAA;AACH,UAAyC,wCAAA,EAAA;AAAA;AAC3C,OAEG,MAAA;AAGH,QAAc,aAAA,CAAA,mBAAA,CAAoB,OAAS,EAAA,cAAA,CAAe,KAAK,CAAA;AAAA;AAEjE,MAAA,sBAAA,CAAuB,KAAQ,GAAA,KAAA;AAAA,KACjC;AAcA,IAAM,MAAA,OAAA,GAAU,MAAO,CAAA,UAAA,CAAW,MAAM;AACtC,MAAc,aAAA,CAAA,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAAA,OAC9D,CAAC,CAAA;AAEJ,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAC3B,MAAc,aAAA,CAAA,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAClE,MAAc,aAAA,CAAA,mBAAA,CAAoB,OAAS,EAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAChE,CAAA;AAAA,GACF,CAAA;AAED,EAAO,OAAA;AAAA,IACL,oBAAA,EAAsB,MAAO,sBAAA,CAAuB,KAAQ,GAAA;AAAA,GAC9D;AACF;AAMgB,SAAA,eAAA,CACd,gBACA,OACA,EAAA;AACA,EAAA,MAAM,aACF,GAAA,OAAA,EAAS,KAAO,EAAA,aAAA,IAAiB,UAAY,EAAA,QAAA;AAEjD,EAAM,MAAA,oBAAA,GAAuBH,QAAI,KAAK,CAAA;AACtC,EAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,IAAA,IAAI,CAACC,eAAA;AACH,MAAA;AACF,IAAM,MAAA,WAAA,GAAc,OAAO,KAAsB,KAAA;AAC/C,MAAA,IAAI,CAAC,OAAS,EAAA,KAAA;AACZ,QAAA;AAEF,MAAA,MAAME,YAAS,EAAA;AACf,MAAA,MAAMA,YAAS,EAAA;AACf,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,MAAI,IAAA,CAAC,QAAQ,KAAS,IAAA,CAAC,UAAU,YAAa,CAAA,OAAA,CAAQ,OAAO,MAAM,CAAA;AACjE,QAAA;AAEF,MAAA,IAAI,KAAM,CAAA,MAAA,IAAU,CAAC,oBAAA,CAAqB,KAAO,EAAA;AAC/C,QAAM,MAAA,WAAA,GAAc,EAAE,aAAA,EAAe,KAAM,EAAA;AAC3C,QAAAD,gEAAA;AAAA,UACE,aAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA;AACF,KACF;AAEA,IAAc,aAAA,CAAA,gBAAA,CAAiB,WAAW,WAAW,CAAA;AAErD,IAAA,SAAA,CAAU,MAAM,aAAA,CAAc,mBAAoB,CAAA,SAAA,EAAW,WAAW,CAAC,CAAA;AAAA,GAC1E,CAAA;AAED,EAAO,OAAA;AAAA,IACL,cAAA,EAAgB,MAAO,oBAAA,CAAqB,KAAQ,GAAA,IAAA;AAAA,IACpD,aAAA,EAAe,MAAO,oBAAA,CAAqB,KAAQ,GAAA;AAAA,GACrD;AACF;;;;;"}
1
+ {"version":3,"file":"utils.cjs","sources":["../../src/DismissableLayer/utils.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref } from 'vue'\nimport { isClient } from '@vueuse/shared'\nimport { nextTick, ref, toValue, watchEffect } from 'vue'\nimport { handleAndDispatchCustomEvent } from '@/shared'\n\nexport type PointerDownOutsideEvent = CustomEvent<{\n originalEvent: PointerEvent\n}>\nexport type FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>\n\nexport const DISMISSABLE_LAYER_NAME = 'DismissableLayer'\nexport const CONTEXT_UPDATE = 'dismissableLayer.update'\nexport const POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'\nexport const FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'\n\nfunction isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {\n const targetLayer = targetElement.closest(\n '[data-dismissable-layer]',\n )\n\n const mainLayer = layerElement.dataset.dismissableLayer === ''\n ? layerElement\n : layerElement.querySelector(\n '[data-dismissable-layer]',\n ) as HTMLElement\n\n const nodeList = Array.from(\n layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'),\n )\n\n if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))\n ) {\n return true\n }\n else {\n return false\n }\n}\n\n/**\n * Listens for `pointerdown` outside a DOM subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nexport function usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n enabled: MaybeRefOrGetter<boolean> = true,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isPointerInsideDOMTree = ref(false)\n const handleClickRef = ref(() => {})\n\n watchEffect((cleanupFn) => {\n if (!isClient || !toValue(enabled))\n return\n const handlePointerDown = async (event: PointerEvent) => {\n const target = event.target as HTMLElement | undefined\n\n if (!element?.value || !target)\n return\n\n if (isLayerExist(element.value, target)) {\n isPointerInsideDOMTree.value = false\n return\n }\n\n if (event.target && !isPointerInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n onPointerDownOutside,\n eventDetail,\n )\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executes events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.value)\n handleClickRef.value = handleAndDispatchPointerDownOutsideEvent\n ownerDocument.addEventListener('click', handleClickRef.value, {\n once: true,\n })\n }\n else {\n handleAndDispatchPointerDownOutsideEvent()\n }\n }\n else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.value)\n }\n isPointerInsideDOMTree.value = false\n }\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown)\n }, 0)\n\n cleanupFn(() => {\n window.clearTimeout(timerId)\n ownerDocument.removeEventListener('pointerdown', handlePointerDown)\n ownerDocument.removeEventListener('click', handleClickRef.value)\n })\n })\n\n return {\n onPointerDownCapture: () => {\n if (!toValue(enabled))\n return\n isPointerInsideDOMTree.value = true\n },\n }\n}\n\n/**\n * Listens for when focus happens outside a DOM subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nexport function useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isFocusInsideDOMTree = ref(false)\n watchEffect((cleanupFn) => {\n if (!isClient)\n return\n const handleFocus = async (event: FocusEvent) => {\n if (!element?.value)\n return\n\n await nextTick()\n await nextTick()\n const target = event.target as HTMLElement | undefined\n if (!element.value || !target || isLayerExist(element.value, target))\n return\n\n if (event.target && !isFocusInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n handleAndDispatchCustomEvent(\n FOCUS_OUTSIDE,\n onFocusOutside,\n eventDetail,\n )\n }\n }\n\n ownerDocument.addEventListener('focusin', handleFocus)\n\n cleanupFn(() => ownerDocument.removeEventListener('focusin', handleFocus))\n })\n\n return {\n onFocusCapture: () => (isFocusInsideDOMTree.value = true),\n onBlurCapture: () => (isFocusInsideDOMTree.value = false),\n }\n}\n\nexport function dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE)\n document.dispatchEvent(event)\n}\n"],"names":["ref","watchEffect","isClient","toValue","handleAndDispatchCustomEvent","nextTick"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { isClient } from '@vueuse/shared';
2
- import { ref, watchEffect, nextTick } from 'vue';
2
+ import { ref, watchEffect, toValue, nextTick } from 'vue';
3
3
  import { h as handleAndDispatchCustomEvent } from '../shared/handleAndDispatchCustomEvent.js';
4
4
 
5
5
  const POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -20,13 +20,13 @@ function isLayerExist(layerElement, targetElement) {
20
20
  return false;
21
21
  }
22
22
  }
23
- function usePointerDownOutside(onPointerDownOutside, element) {
23
+ function usePointerDownOutside(onPointerDownOutside, element, enabled = true) {
24
24
  const ownerDocument = element?.value?.ownerDocument ?? globalThis?.document;
25
25
  const isPointerInsideDOMTree = ref(false);
26
26
  const handleClickRef = ref(() => {
27
27
  });
28
28
  watchEffect((cleanupFn) => {
29
- if (!isClient)
29
+ if (!isClient || !toValue(enabled))
30
30
  return;
31
31
  const handlePointerDown = async (event) => {
32
32
  const target = event.target;
@@ -69,7 +69,11 @@ function usePointerDownOutside(onPointerDownOutside, element) {
69
69
  });
70
70
  });
71
71
  return {
72
- onPointerDownCapture: () => isPointerInsideDOMTree.value = true
72
+ onPointerDownCapture: () => {
73
+ if (!toValue(enabled))
74
+ return;
75
+ isPointerInsideDOMTree.value = true;
76
+ }
73
77
  };
74
78
  }
75
79
  function useFocusOutside(onFocusOutside, element) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/DismissableLayer/utils.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { handleAndDispatchCustomEvent } from '@/shared'\nimport { isClient } from '@vueuse/shared'\nimport { nextTick, ref, watchEffect } from 'vue'\n\nexport type PointerDownOutsideEvent = CustomEvent<{\n originalEvent: PointerEvent\n}>\nexport type FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>\n\nexport const DISMISSABLE_LAYER_NAME = 'DismissableLayer'\nexport const CONTEXT_UPDATE = 'dismissableLayer.update'\nexport const POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'\nexport const FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'\n\nfunction isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {\n const targetLayer = targetElement.closest(\n '[data-dismissable-layer]',\n )\n\n const mainLayer = layerElement.dataset.dismissableLayer === ''\n ? layerElement\n : layerElement.querySelector(\n '[data-dismissable-layer]',\n ) as HTMLElement\n\n const nodeList = Array.from(\n layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'),\n )\n\n if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))\n ) {\n return true\n }\n else {\n return false\n }\n}\n\n/**\n * Listens for `pointerdown` outside a DOM subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nexport function usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isPointerInsideDOMTree = ref(false)\n const handleClickRef = ref(() => {})\n\n watchEffect((cleanupFn) => {\n if (!isClient)\n return\n const handlePointerDown = async (event: PointerEvent) => {\n const target = event.target as HTMLElement | undefined\n\n if (!element?.value || !target)\n return\n\n if (isLayerExist(element.value, target)) {\n isPointerInsideDOMTree.value = false\n return\n }\n\n if (event.target && !isPointerInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n onPointerDownOutside,\n eventDetail,\n )\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executes events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.value)\n handleClickRef.value = handleAndDispatchPointerDownOutsideEvent\n ownerDocument.addEventListener('click', handleClickRef.value, {\n once: true,\n })\n }\n else {\n handleAndDispatchPointerDownOutsideEvent()\n }\n }\n else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.value)\n }\n isPointerInsideDOMTree.value = false\n }\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown)\n }, 0)\n\n cleanupFn(() => {\n window.clearTimeout(timerId)\n ownerDocument.removeEventListener('pointerdown', handlePointerDown)\n ownerDocument.removeEventListener('click', handleClickRef.value)\n })\n })\n\n return {\n onPointerDownCapture: () => (isPointerInsideDOMTree.value = true),\n }\n}\n\n/**\n * Listens for when focus happens outside a DOM subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nexport function useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isFocusInsideDOMTree = ref(false)\n watchEffect((cleanupFn) => {\n if (!isClient)\n return\n const handleFocus = async (event: FocusEvent) => {\n if (!element?.value)\n return\n\n await nextTick()\n await nextTick()\n const target = event.target as HTMLElement | undefined\n if (!element.value || !target || isLayerExist(element.value, target))\n return\n\n if (event.target && !isFocusInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n handleAndDispatchCustomEvent(\n FOCUS_OUTSIDE,\n onFocusOutside,\n eventDetail,\n )\n }\n }\n\n ownerDocument.addEventListener('focusin', handleFocus)\n\n cleanupFn(() => ownerDocument.removeEventListener('focusin', handleFocus))\n })\n\n return {\n onFocusCapture: () => (isFocusInsideDOMTree.value = true),\n onBlurCapture: () => (isFocusInsideDOMTree.value = false),\n }\n}\n\nexport function dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE)\n document.dispatchEvent(event)\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/DismissableLayer/utils.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref } from 'vue'\nimport { isClient } from '@vueuse/shared'\nimport { nextTick, ref, toValue, watchEffect } from 'vue'\nimport { handleAndDispatchCustomEvent } from '@/shared'\n\nexport type PointerDownOutsideEvent = CustomEvent<{\n originalEvent: PointerEvent\n}>\nexport type FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>\n\nexport const DISMISSABLE_LAYER_NAME = 'DismissableLayer'\nexport const CONTEXT_UPDATE = 'dismissableLayer.update'\nexport const POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'\nexport const FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'\n\nfunction isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {\n const targetLayer = targetElement.closest(\n '[data-dismissable-layer]',\n )\n\n const mainLayer = layerElement.dataset.dismissableLayer === ''\n ? layerElement\n : layerElement.querySelector(\n '[data-dismissable-layer]',\n ) as HTMLElement\n\n const nodeList = Array.from(\n layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'),\n )\n\n if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))\n ) {\n return true\n }\n else {\n return false\n }\n}\n\n/**\n * Listens for `pointerdown` outside a DOM subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nexport function usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n enabled: MaybeRefOrGetter<boolean> = true,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isPointerInsideDOMTree = ref(false)\n const handleClickRef = ref(() => {})\n\n watchEffect((cleanupFn) => {\n if (!isClient || !toValue(enabled))\n return\n const handlePointerDown = async (event: PointerEvent) => {\n const target = event.target as HTMLElement | undefined\n\n if (!element?.value || !target)\n return\n\n if (isLayerExist(element.value, target)) {\n isPointerInsideDOMTree.value = false\n return\n }\n\n if (event.target && !isPointerInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n onPointerDownOutside,\n eventDetail,\n )\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executes events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.value)\n handleClickRef.value = handleAndDispatchPointerDownOutsideEvent\n ownerDocument.addEventListener('click', handleClickRef.value, {\n once: true,\n })\n }\n else {\n handleAndDispatchPointerDownOutsideEvent()\n }\n }\n else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.value)\n }\n isPointerInsideDOMTree.value = false\n }\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown)\n }, 0)\n\n cleanupFn(() => {\n window.clearTimeout(timerId)\n ownerDocument.removeEventListener('pointerdown', handlePointerDown)\n ownerDocument.removeEventListener('click', handleClickRef.value)\n })\n })\n\n return {\n onPointerDownCapture: () => {\n if (!toValue(enabled))\n return\n isPointerInsideDOMTree.value = true\n },\n }\n}\n\n/**\n * Listens for when focus happens outside a DOM subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nexport function useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n element?: Ref<HTMLElement | undefined>,\n) {\n const ownerDocument: Document\n = element?.value?.ownerDocument ?? globalThis?.document\n\n const isFocusInsideDOMTree = ref(false)\n watchEffect((cleanupFn) => {\n if (!isClient)\n return\n const handleFocus = async (event: FocusEvent) => {\n if (!element?.value)\n return\n\n await nextTick()\n await nextTick()\n const target = event.target as HTMLElement | undefined\n if (!element.value || !target || isLayerExist(element.value, target))\n return\n\n if (event.target && !isFocusInsideDOMTree.value) {\n const eventDetail = { originalEvent: event }\n handleAndDispatchCustomEvent(\n FOCUS_OUTSIDE,\n onFocusOutside,\n eventDetail,\n )\n }\n }\n\n ownerDocument.addEventListener('focusin', handleFocus)\n\n cleanupFn(() => ownerDocument.removeEventListener('focusin', handleFocus))\n })\n\n return {\n onFocusCapture: () => (isFocusInsideDOMTree.value = true),\n onBlurCapture: () => (isFocusInsideDOMTree.value = false),\n }\n}\n\nexport function dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE)\n document.dispatchEvent(event)\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuContent.cjs","sources":["../../src/DropdownMenu/DropdownMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\n\nexport type DropdownMenuContentEmits = MenuContentEmits\n\nexport interface DropdownMenuContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { ref } from 'vue'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = defineProps<DropdownMenuContentProps>()\nconst emits = defineEmits<DropdownMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nuseForwardExpose()\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst hasInteractedOutsideRef = ref(false)\n\nfunction handleCloseAutoFocus(event: Event) {\n if (event.defaultPrevented)\n return\n if (!hasInteractedOutsideRef.value) {\n setTimeout(() => {\n rootContext.triggerElement.value?.focus()\n }, 0)\n }\n hasInteractedOutsideRef.value = false\n\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault()\n}\n\nrootContext.contentId ||= useId(undefined, 'reka-dropdown-menu-content')\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n :id=\"rootContext.contentId\"\n :aria-labelledby=\"rootContext?.triggerId\"\n :style=\"{\n '--reka-dropdown-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-dropdown-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-dropdown-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-dropdown-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-dropdown-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"handleCloseAutoFocus\"\n @interact-outside=\"(event) => {\n if (event.defaultPrevented) return\n\n const originalEvent = event.detail.originalEvent as PointerEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!rootContext.modal.value || isRightClick) hasInteractedOutsideRef = true;\n if (rootContext.triggerElement.value?.contains(event.target as HTMLElement)) event.preventDefault()\n }\"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectDropdownMenuRootContext","ref","useId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAiBC,wCAAA,EAAA;AAEjB,IAAA,MAAM,cAAcC,2DAA8B,EAAA;AAElD,IAAM,MAAA,uBAAA,GAA0BC,QAAI,KAAK,CAAA;AAEzC,IAAA,SAAS,qBAAqB,KAAc,EAAA;AAC1C,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,wBAAwB,KAAO,EAAA;AAClC,QAAA,UAAA,CAAW,MAAM;AACf,UAAY,WAAA,CAAA,cAAA,CAAe,OAAO,KAAM,EAAA;AAAA,WACvC,CAAC,CAAA;AAAA;AAEN,MAAA,uBAAA,CAAwB,KAAQ,GAAA,KAAA;AAGhC,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AAGvB,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuContent.cjs","sources":["../../src/DropdownMenu/DropdownMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\n\nexport type DropdownMenuContentEmits = MenuContentEmits\n\nexport interface DropdownMenuContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = defineProps<DropdownMenuContentProps>()\nconst emits = defineEmits<DropdownMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nuseForwardExpose()\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst hasInteractedOutsideRef = ref(false)\n\nfunction handleCloseAutoFocus(event: Event) {\n if (event.defaultPrevented)\n return\n if (!hasInteractedOutsideRef.value) {\n setTimeout(() => {\n rootContext.triggerElement.value?.focus()\n }, 0)\n }\n hasInteractedOutsideRef.value = false\n\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault()\n}\n\nrootContext.contentId ||= useId(undefined, 'reka-dropdown-menu-content')\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n :id=\"rootContext.contentId\"\n :aria-labelledby=\"rootContext?.triggerId\"\n :style=\"{\n '--reka-dropdown-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-dropdown-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-dropdown-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-dropdown-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-dropdown-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"handleCloseAutoFocus\"\n @interact-outside=\"(event) => {\n if (event.defaultPrevented) return\n\n const originalEvent = event.detail.originalEvent as PointerEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!rootContext.modal.value || isRightClick) hasInteractedOutsideRef = true;\n if (rootContext.triggerElement.value?.contains(event.target as HTMLElement)) event.preventDefault()\n }\"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectDropdownMenuRootContext","ref","useId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAiBC,wCAAA,EAAA;AAEjB,IAAA,MAAM,cAAcC,2DAA8B,EAAA;AAElD,IAAM,MAAA,uBAAA,GAA0BC,QAAI,KAAK,CAAA;AAEzC,IAAA,SAAS,qBAAqB,KAAc,EAAA;AAC1C,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,wBAAwB,KAAO,EAAA;AAClC,QAAA,UAAA,CAAW,MAAM;AACf,UAAY,WAAA,CAAA,cAAA,CAAe,OAAO,KAAM,EAAA;AAAA,WACvC,CAAC,CAAA;AAAA;AAEN,MAAA,uBAAA,CAAwB,KAAQ,GAAA,KAAA;AAGhC,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AAGvB,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuContent.js","sources":["../../src/DropdownMenu/DropdownMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\n\nexport type DropdownMenuContentEmits = MenuContentEmits\n\nexport interface DropdownMenuContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { ref } from 'vue'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = defineProps<DropdownMenuContentProps>()\nconst emits = defineEmits<DropdownMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nuseForwardExpose()\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst hasInteractedOutsideRef = ref(false)\n\nfunction handleCloseAutoFocus(event: Event) {\n if (event.defaultPrevented)\n return\n if (!hasInteractedOutsideRef.value) {\n setTimeout(() => {\n rootContext.triggerElement.value?.focus()\n }, 0)\n }\n hasInteractedOutsideRef.value = false\n\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault()\n}\n\nrootContext.contentId ||= useId(undefined, 'reka-dropdown-menu-content')\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n :id=\"rootContext.contentId\"\n :aria-labelledby=\"rootContext?.triggerId\"\n :style=\"{\n '--reka-dropdown-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-dropdown-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-dropdown-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-dropdown-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-dropdown-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"handleCloseAutoFocus\"\n @interact-outside=\"(event) => {\n if (event.defaultPrevented) return\n\n const originalEvent = event.detail.originalEvent as PointerEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!rootContext.modal.value || isRightClick) hasInteractedOutsideRef = true;\n if (rootContext.triggerElement.value?.contains(event.target as HTMLElement)) event.preventDefault()\n }\"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAiB,gBAAA,EAAA;AAEjB,IAAA,MAAM,cAAc,6BAA8B,EAAA;AAElD,IAAM,MAAA,uBAAA,GAA0B,IAAI,KAAK,CAAA;AAEzC,IAAA,SAAS,qBAAqB,KAAc,EAAA;AAC1C,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,wBAAwB,KAAO,EAAA;AAClC,QAAA,UAAA,CAAW,MAAM;AACf,UAAY,WAAA,CAAA,cAAA,CAAe,OAAO,KAAM,EAAA;AAAA,WACvC,CAAC,CAAA;AAAA;AAEN,MAAA,uBAAA,CAAwB,KAAQ,GAAA,KAAA;AAGhC,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AAGvB,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuContent.js","sources":["../../src/DropdownMenu/DropdownMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\n\nexport type DropdownMenuContentEmits = MenuContentEmits\n\nexport interface DropdownMenuContentProps extends MenuContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { MenuContent } from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits, useId } from '@/shared'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = defineProps<DropdownMenuContentProps>()\nconst emits = defineEmits<DropdownMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nuseForwardExpose()\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst hasInteractedOutsideRef = ref(false)\n\nfunction handleCloseAutoFocus(event: Event) {\n if (event.defaultPrevented)\n return\n if (!hasInteractedOutsideRef.value) {\n setTimeout(() => {\n rootContext.triggerElement.value?.focus()\n }, 0)\n }\n hasInteractedOutsideRef.value = false\n\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault()\n}\n\nrootContext.contentId ||= useId(undefined, 'reka-dropdown-menu-content')\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n :id=\"rootContext.contentId\"\n :aria-labelledby=\"rootContext?.triggerId\"\n :style=\"{\n '--reka-dropdown-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-dropdown-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-dropdown-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-dropdown-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-dropdown-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"handleCloseAutoFocus\"\n @interact-outside=\"(event) => {\n if (event.defaultPrevented) return\n\n const originalEvent = event.detail.originalEvent as PointerEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!rootContext.modal.value || isRightClick) hasInteractedOutsideRef = true;\n if (rootContext.triggerElement.value?.contains(event.target as HTMLElement)) event.preventDefault()\n }\"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAiB,gBAAA,EAAA;AAEjB,IAAA,MAAM,cAAc,6BAA8B,EAAA;AAElD,IAAM,MAAA,uBAAA,GAA0B,IAAI,KAAK,CAAA;AAEzC,IAAA,SAAS,qBAAqB,KAAc,EAAA;AAC1C,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AACF,MAAI,IAAA,CAAC,wBAAwB,KAAO,EAAA;AAClC,QAAA,UAAA,CAAW,MAAM;AACf,UAAY,WAAA,CAAA,cAAA,CAAe,OAAO,KAAM,EAAA;AAAA,WACvC,CAAC,CAAA;AAAA;AAEN,MAAA,uBAAA,CAAwB,KAAQ,GAAA,KAAA;AAGhC,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AAGvB,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const Menu_MenuRoot = require('../Menu/MenuRoot.cjs');
5
4
  const core = require('@vueuse/core');
5
+ const Menu_MenuRoot = require('../Menu/MenuRoot.cjs');
6
6
  const shared_createContext = require('../shared/createContext.cjs');
7
7
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
8
8
  const shared_useDirection = require('../shared/useDirection.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuRoot.cjs","sources":["../../src/DropdownMenu/DropdownMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuEmits, MenuProps } from '@/Menu'\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface DropdownMenuRootProps extends MenuProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\nexport type DropdownMenuRootEmits = MenuEmits\n\nexport interface DropdownMenuRootContext {\n open: Readonly<Ref<boolean>>\n onOpenChange: (open: boolean) => void\n onOpenToggle: () => void\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n modal: Ref<boolean>\n dir: Ref<Direction>\n}\n\nexport const [injectDropdownMenuRootContext, provideDropdownMenuRootContext]\n = createContext<DropdownMenuRootContext>('DropdownMenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuRoot } from '@/Menu'\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\n\nconst props = withDefaults(defineProps<DropdownMenuRootProps>(), {\n modal: true,\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\n\nconst { modal, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nprovideDropdownMenuRootContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n triggerId: '',\n triggerElement,\n contentId: '',\n modal,\n dir,\n})\n</script>\n\n<template>\n <MenuRoot\n v-model:open=\"open\"\n :dir=\"dir\"\n :modal=\"modal\"\n >\n <slot :open=\"open\" />\n </MenuRoot>\n</template>\n"],"names":["createContext","useForwardExpose","useVModel","ref","toRefs","useDirection"],"mappings":";;;;;;;;;AAuBO,MAAM,CAAC,6BAAA,EAA+B,8BAA8B,CAAA,GACvEA,mCAAuC,kBAAkB;;;;;;;;;;;AAQ7D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAiBC,wCAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiBC,OAAiB,EAAA;AAExC,IAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAIC,WAAO,KAAK,CAAA;AAC5C,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAChC,IAA+B,8BAAA,CAAA;AAAA,MAC7B,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,cAAA;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuRoot.cjs","sources":["../../src/DropdownMenu/DropdownMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport type { MenuEmits, MenuProps } from '@/Menu'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface DropdownMenuRootProps extends MenuProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\nexport type DropdownMenuRootEmits = MenuEmits\n\nexport interface DropdownMenuRootContext {\n open: Readonly<Ref<boolean>>\n onOpenChange: (open: boolean) => void\n onOpenToggle: () => void\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n modal: Ref<boolean>\n dir: Ref<Direction>\n}\n\nexport const [injectDropdownMenuRootContext, provideDropdownMenuRootContext]\n = createContext<DropdownMenuRootContext>('DropdownMenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { MenuRoot } from '@/Menu'\n\nconst props = withDefaults(defineProps<DropdownMenuRootProps>(), {\n modal: true,\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\n\nconst { modal, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nprovideDropdownMenuRootContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n triggerId: '',\n triggerElement,\n contentId: '',\n modal,\n dir,\n})\n</script>\n\n<template>\n <MenuRoot\n v-model:open=\"open\"\n :dir=\"dir\"\n :modal=\"modal\"\n >\n <slot :open=\"open\" />\n </MenuRoot>\n</template>\n"],"names":["createContext","useForwardExpose","useVModel","ref","toRefs","useDirection"],"mappings":";;;;;;;;;AAuBO,MAAM,CAAC,6BAAA,EAA+B,8BAA8B,CAAA,GACvEA,mCAAuC,kBAAkB;;;;;;;;;;;AAQ7D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAiBC,wCAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiBC,OAAiB,EAAA;AAExC,IAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAIC,WAAO,KAAK,CAAA;AAC5C,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAChC,IAA+B,8BAAA,CAAA;AAAA,MAC7B,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,cAAA;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, toRefs, createBlock, openBlock, unref, isRef, withCtx, renderSlot } from 'vue';
2
- import { _ as _sfc_main$1 } from '../Menu/MenuRoot.js';
3
2
  import { useVModel } from '@vueuse/core';
3
+ import { _ as _sfc_main$1 } from '../Menu/MenuRoot.js';
4
4
  import { c as createContext } from '../shared/createContext.js';
5
5
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
6
6
  import { u as useDirection } from '../shared/useDirection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuRoot.js","sources":["../../src/DropdownMenu/DropdownMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuEmits, MenuProps } from '@/Menu'\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface DropdownMenuRootProps extends MenuProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\nexport type DropdownMenuRootEmits = MenuEmits\n\nexport interface DropdownMenuRootContext {\n open: Readonly<Ref<boolean>>\n onOpenChange: (open: boolean) => void\n onOpenToggle: () => void\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n modal: Ref<boolean>\n dir: Ref<Direction>\n}\n\nexport const [injectDropdownMenuRootContext, provideDropdownMenuRootContext]\n = createContext<DropdownMenuRootContext>('DropdownMenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuRoot } from '@/Menu'\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\n\nconst props = withDefaults(defineProps<DropdownMenuRootProps>(), {\n modal: true,\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\n\nconst { modal, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nprovideDropdownMenuRootContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n triggerId: '',\n triggerElement,\n contentId: '',\n modal,\n dir,\n})\n</script>\n\n<template>\n <MenuRoot\n v-model:open=\"open\"\n :dir=\"dir\"\n :modal=\"modal\"\n >\n <slot :open=\"open\" />\n </MenuRoot>\n</template>\n"],"names":[],"mappings":";;;;;;;AAuBO,MAAM,CAAC,6BAAA,EAA+B,8BAA8B,CAAA,GACvE,cAAuC,kBAAkB;;;;;;;;;;;AAQ7D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AAExC,IAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAI,OAAO,KAAK,CAAA;AAC5C,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAChC,IAA+B,8BAAA,CAAA;AAAA,MAC7B,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,cAAA;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuRoot.js","sources":["../../src/DropdownMenu/DropdownMenuRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { Direction } from '../shared/types'\nimport type { MenuEmits, MenuProps } from '@/Menu'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface DropdownMenuRootProps extends MenuProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\nexport type DropdownMenuRootEmits = MenuEmits\n\nexport interface DropdownMenuRootContext {\n open: Readonly<Ref<boolean>>\n onOpenChange: (open: boolean) => void\n onOpenToggle: () => void\n triggerId: string\n triggerElement: Ref<HTMLElement | undefined>\n contentId: string\n modal: Ref<boolean>\n dir: Ref<Direction>\n}\n\nexport const [injectDropdownMenuRootContext, provideDropdownMenuRootContext]\n = createContext<DropdownMenuRootContext>('DropdownMenuRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { MenuRoot } from '@/Menu'\n\nconst props = withDefaults(defineProps<DropdownMenuRootProps>(), {\n modal: true,\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nuseForwardExpose()\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\n\nconst { modal, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\nprovideDropdownMenuRootContext({\n open,\n onOpenChange: (value) => {\n open.value = value\n },\n onOpenToggle: () => {\n open.value = !open.value\n },\n triggerId: '',\n triggerElement,\n contentId: '',\n modal,\n dir,\n})\n</script>\n\n<template>\n <MenuRoot\n v-model:open=\"open\"\n :dir=\"dir\"\n :modal=\"modal\"\n >\n <slot :open=\"open\" />\n </MenuRoot>\n</template>\n"],"names":[],"mappings":";;;;;;;AAuBO,MAAM,CAAC,6BAAA,EAA+B,8BAA8B,CAAA,GACvE,cAAuC,kBAAkB;;;;;;;;;;;AAQ7D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AAExC,IAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAI,OAAO,KAAK,CAAA;AAC5C,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAChC,IAA+B,8BAAA,CAAA;AAAA,MAC7B,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,OACrB;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,cAAA;AAAA,MACA,SAAW,EAAA,EAAA;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const Menu_MenuSub = require('../Menu/MenuSub.cjs');
5
4
  const core = require('@vueuse/core');
5
+ const Menu_MenuSub = require('../Menu/MenuSub.cjs');
6
6
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
7
7
 
8
8
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuSub.cjs","sources":["../../src/DropdownMenu/DropdownMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuSubEmits, MenuSubProps } from '@/Menu'\nimport type { Ref } from 'vue'\n\nexport type DropdownMenuSubEmits = MenuSubEmits\nexport interface DropdownMenuSubProps extends MenuSubProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuSub } from '@/Menu'\nimport { useForwardExpose } from '@/shared'\nimport { useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<DropdownMenuSubProps>(), {\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuSubEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n passive: (props.open === undefined) as false,\n defaultValue: props.defaultOpen ?? false,\n}) as Ref<boolean>\n\nuseForwardExpose()\n</script>\n\n<template>\n <MenuSub v-model:open=\"open\">\n <slot :open=\"open\" />\n </MenuSub>\n</template>\n"],"names":["useVModel","useForwardExpose"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAAA,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,OAAA,EAAU,MAAM,IAAS,KAAA,MAAA;AAAA,MACzB,YAAA,EAAc,MAAM,WAAe,IAAA;AAAA,KACpC,CAAA;AAED,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuSub.cjs","sources":["../../src/DropdownMenu/DropdownMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuSubEmits, MenuSubProps } from '@/Menu'\n\nexport type DropdownMenuSubEmits = MenuSubEmits\nexport interface DropdownMenuSubProps extends MenuSubProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { MenuSub } from '@/Menu'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<DropdownMenuSubProps>(), {\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuSubEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n passive: (props.open === undefined) as false,\n defaultValue: props.defaultOpen ?? false,\n}) as Ref<boolean>\n\nuseForwardExpose()\n</script>\n\n<template>\n <MenuSub v-model:open=\"open\">\n <slot :open=\"open\" />\n </MenuSub>\n</template>\n"],"names":["useVModel","useForwardExpose"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAAA,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,OAAA,EAAU,MAAM,IAAS,KAAA,MAAA;AAAA,MACzB,YAAA,EAAc,MAAM,WAAe,IAAA;AAAA,KACpC,CAAA;AAED,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, createBlock, openBlock, unref, isRef, withCtx, renderSlot } from 'vue';
2
- import { _ as _sfc_main$1 } from '../Menu/MenuSub.js';
3
2
  import { useVModel } from '@vueuse/core';
3
+ import { _ as _sfc_main$1 } from '../Menu/MenuSub.js';
4
4
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
5
5
 
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuSub.js","sources":["../../src/DropdownMenu/DropdownMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { MenuSubEmits, MenuSubProps } from '@/Menu'\nimport type { Ref } from 'vue'\n\nexport type DropdownMenuSubEmits = MenuSubEmits\nexport interface DropdownMenuSubProps extends MenuSubProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuSub } from '@/Menu'\nimport { useForwardExpose } from '@/shared'\nimport { useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<DropdownMenuSubProps>(), {\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuSubEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n passive: (props.open === undefined) as false,\n defaultValue: props.defaultOpen ?? false,\n}) as Ref<boolean>\n\nuseForwardExpose()\n</script>\n\n<template>\n <MenuSub v-model:open=\"open\">\n <slot :open=\"open\" />\n </MenuSub>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,OAAA,EAAU,MAAM,IAAS,KAAA,MAAA;AAAA,MACzB,YAAA,EAAc,MAAM,WAAe,IAAA;AAAA,KACpC,CAAA;AAED,IAAiB,gBAAA,EAAA;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuSub.js","sources":["../../src/DropdownMenu/DropdownMenuSub.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { MenuSubEmits, MenuSubProps } from '@/Menu'\n\nexport type DropdownMenuSubEmits = MenuSubEmits\nexport interface DropdownMenuSubProps extends MenuSubProps {\n /** The open state of the dropdown menu when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { MenuSub } from '@/Menu'\nimport { useForwardExpose } from '@/shared'\n\nconst props = withDefaults(defineProps<DropdownMenuSubProps>(), {\n open: undefined,\n})\nconst emit = defineEmits<DropdownMenuSubEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n passive: (props.open === undefined) as false,\n defaultValue: props.defaultOpen ?? false,\n}) as Ref<boolean>\n\nuseForwardExpose()\n</script>\n\n<template>\n <MenuSub v-model:open=\"open\">\n <slot :open=\"open\" />\n </MenuSub>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,OAAA,EAAU,MAAM,IAAS,KAAA,MAAA;AAAA,MACzB,YAAA,EAAc,MAAM,WAAe,IAAA;AAAA,KACpC,CAAA;AAED,IAAiB,gBAAA,EAAA;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuTrigger.cjs","sources":["../../src/DropdownMenu/DropdownMenuTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface DropdownMenuTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { nextTick, onMounted } from 'vue'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = withDefaults(defineProps<DropdownMenuTriggerProps>(), {\n as: 'button',\n})\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\n\nonMounted(() => {\n rootContext.triggerElement = triggerElement\n})\n\nrootContext.triggerId ||= useId(undefined, 'reka-dropdown-menu-trigger')\n</script>\n\n<template>\n <MenuAnchor as-child>\n <Primitive\n :id=\"rootContext.triggerId\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.open.value ? rootContext.contentId : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n @click=\"\n async (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n rootContext?.onOpenToggle();\n await nextTick()\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (rootContext.open.value) event.preventDefault();\n }\n }\n \"\n @keydown.enter.space.arrow-down=\"\n (event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) rootContext.onOpenToggle();\n if (event.key === 'ArrowDown') rootContext.onOpenChange(true);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key))\n event.preventDefault();\n }\n \"\n >\n <slot />\n </Primitive>\n </MenuAnchor>\n</template>\n"],"names":["injectDropdownMenuRootContext","useForwardExpose","onMounted","useId"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,cAAcA,2DAA8B,EAAA;AAElD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmBC,wCAAiB,EAAA;AAExE,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAAA,KAC9B,CAAA;AAED,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuTrigger.cjs","sources":["../../src/DropdownMenu/DropdownMenuTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface DropdownMenuTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted } from 'vue'\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = withDefaults(defineProps<DropdownMenuTriggerProps>(), {\n as: 'button',\n})\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\n\nonMounted(() => {\n rootContext.triggerElement = triggerElement\n})\n\nrootContext.triggerId ||= useId(undefined, 'reka-dropdown-menu-trigger')\n</script>\n\n<template>\n <MenuAnchor as-child>\n <Primitive\n :id=\"rootContext.triggerId\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.open.value ? rootContext.contentId : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n @click=\"\n async (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n rootContext?.onOpenToggle();\n await nextTick()\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (rootContext.open.value) event.preventDefault();\n }\n }\n \"\n @keydown.enter.space.arrow-down=\"\n (event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) rootContext.onOpenToggle();\n if (event.key === 'ArrowDown') rootContext.onOpenChange(true);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key))\n event.preventDefault();\n }\n \"\n >\n <slot />\n </Primitive>\n </MenuAnchor>\n</template>\n"],"names":["injectDropdownMenuRootContext","useForwardExpose","onMounted","useId"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,cAAcA,2DAA8B,EAAA;AAElD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmBC,wCAAiB,EAAA;AAExE,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAAA,KAC9B,CAAA;AAED,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuTrigger.js","sources":["../../src/DropdownMenu/DropdownMenuTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface DropdownMenuTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { nextTick, onMounted } from 'vue'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = withDefaults(defineProps<DropdownMenuTriggerProps>(), {\n as: 'button',\n})\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\n\nonMounted(() => {\n rootContext.triggerElement = triggerElement\n})\n\nrootContext.triggerId ||= useId(undefined, 'reka-dropdown-menu-trigger')\n</script>\n\n<template>\n <MenuAnchor as-child>\n <Primitive\n :id=\"rootContext.triggerId\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.open.value ? rootContext.contentId : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n @click=\"\n async (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n rootContext?.onOpenToggle();\n await nextTick()\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (rootContext.open.value) event.preventDefault();\n }\n }\n \"\n @keydown.enter.space.arrow-down=\"\n (event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) rootContext.onOpenToggle();\n if (event.key === 'ArrowDown') rootContext.onOpenChange(true);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key))\n event.preventDefault();\n }\n \"\n >\n <slot />\n </Primitive>\n </MenuAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,cAAc,6BAA8B,EAAA;AAElD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmB,gBAAiB,EAAA;AAExE,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAAA,KAC9B,CAAA;AAED,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownMenuTrigger.js","sources":["../../src/DropdownMenu/DropdownMenuTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\n\nexport interface DropdownMenuTriggerProps extends PrimitiveProps {\n /** When `true`, prevents the user from interacting with item */\n disabled?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted } from 'vue'\nimport { MenuAnchor } from '@/Menu'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { injectDropdownMenuRootContext } from './DropdownMenuRoot.vue'\n\nconst props = withDefaults(defineProps<DropdownMenuTriggerProps>(), {\n as: 'button',\n})\n\nconst rootContext = injectDropdownMenuRootContext()\n\nconst { forwardRef, currentElement: triggerElement } = useForwardExpose()\n\nonMounted(() => {\n rootContext.triggerElement = triggerElement\n})\n\nrootContext.triggerId ||= useId(undefined, 'reka-dropdown-menu-trigger')\n</script>\n\n<template>\n <MenuAnchor as-child>\n <Primitive\n :id=\"rootContext.triggerId\"\n :ref=\"forwardRef\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"rootContext.open.value\"\n :aria-controls=\"rootContext.open.value ? rootContext.contentId : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n @click=\"\n async (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n rootContext?.onOpenToggle();\n await nextTick()\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (rootContext.open.value) event.preventDefault();\n }\n }\n \"\n @keydown.enter.space.arrow-down=\"\n (event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) rootContext.onOpenToggle();\n if (event.key === 'ArrowDown') rootContext.onOpenChange(true);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key))\n event.preventDefault();\n }\n \"\n >\n <slot />\n </Primitive>\n </MenuAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,cAAc,6BAA8B,EAAA;AAElD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmB,gBAAiB,EAAA;AAExE,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAAA,KAC9B,CAAA;AAED,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableInput.cjs","sources":["../../src/Editable/EditableInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nexport interface EditableInputProps extends PrimitiveProps {\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useKbd } from '@/shared'\nimport { computed, nextTick, onMounted, watch } from 'vue'\nimport { injectEditableRootContext } from './EditableRoot.vue'\n\nconst props = withDefaults(defineProps<EditableInputProps>(), {\n as: 'input',\n})\n\nconst kbd = useKbd()\n\nconst context = injectEditableRootContext()\n\nconst disabled = computed(() => context.disabled.value)\n\nconst placeholder = computed(() => context.placeholder.value?.edit)\n\nconst { primitiveElement, currentElement: inputRef } = usePrimitiveElement()\n\nonMounted(() => {\n context.inputRef.value = inputRef.value as HTMLInputElement\n if (context.startWithEditMode.value) {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n }\n})\n\nwatch(context.isEditing, (value) => {\n if (value) {\n nextTick(() => {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n })\n }\n})\n\nfunction handleSubmitKeyDown(event: KeyboardEvent) {\n if ((context.submitMode.value === 'enter' || context.submitMode.value === 'both') && event.key === kbd.ENTER && !event.shiftKey && !event.metaKey)\n context.submit()\n}\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n v-bind=\"props\"\n :value=\"context.inputValue.value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :maxlength=\"context.maxLength.value\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"context.readonly.value ? '' : undefined\"\n :readonly=\"context.readonly.value\"\n aria-label=\"editable input\"\n :hidden=\"context.autoResize.value ? undefined : !context.isEditing.value\"\n :style=\"context.autoResize.value ? { all: 'unset', gridArea: '1 / 1 / auto / auto', visibility: !context.isEditing.value ? 'hidden' : undefined } : undefined\"\n @input=\"context.inputValue.value = $event.target.value\"\n @keydown.enter.space=\"handleSubmitKeyDown\"\n @keydown.esc=\"context.cancel\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useKbd","injectEditableRootContext","computed","usePrimitiveElement","onMounted","watch","nextTick"],"mappings":";;;;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,MAAMA,oBAAO,EAAA;AAEnB,IAAA,MAAM,UAAUC,+CAA0B,EAAA;AAE1C,IAAA,MAAM,QAAW,GAAAC,YAAA,CAAS,MAAM,OAAA,CAAQ,SAAS,KAAK,CAAA;AAEtD,IAAA,MAAM,cAAcA,YAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,IAAI,CAAA;AAElE,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAgB,EAAA,QAAA,KAAaC,iDAAoB,EAAA;AAE3E,IAAAC,aAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,QAAA,CAAS,QAAQ,QAAS,CAAA,KAAA;AAClC,MAAI,IAAA,OAAA,CAAQ,kBAAkB,KAAO,EAAA;AACnC,QAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,QAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,UAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA;AACnC,KACD,CAAA;AAED,IAAMC,SAAA,CAAA,OAAA,CAAQ,SAAW,EAAA,CAAC,KAAU,KAAA;AAClC,MAAA,IAAI,KAAO,EAAA;AACT,QAAAC,YAAA,CAAS,MAAM;AACb,UAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,UAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,YAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA,SAClC,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,oBAAoB,KAAsB,EAAA;AACjD,MAAA,IAAA,CAAK,QAAQ,UAAW,CAAA,KAAA,KAAU,OAAW,IAAA,OAAA,CAAQ,WAAW,KAAU,KAAA,MAAA,KAAW,KAAM,CAAA,GAAA,KAAQ,IAAI,KAAS,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,CAAC,KAAM,CAAA,OAAA;AACxI,QAAA,OAAA,CAAQ,MAAO,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EditableInput.cjs","sources":["../../src/Editable/EditableInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nexport interface EditableInputProps extends PrimitiveProps {\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, watch } from 'vue'\nimport { useKbd } from '@/shared'\nimport { injectEditableRootContext } from './EditableRoot.vue'\n\nconst props = withDefaults(defineProps<EditableInputProps>(), {\n as: 'input',\n})\n\nconst kbd = useKbd()\n\nconst context = injectEditableRootContext()\n\nconst disabled = computed(() => context.disabled.value)\n\nconst placeholder = computed(() => context.placeholder.value?.edit)\n\nconst { primitiveElement, currentElement: inputRef } = usePrimitiveElement()\n\nonMounted(() => {\n context.inputRef.value = inputRef.value as HTMLInputElement\n if (context.startWithEditMode.value) {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n }\n})\n\nwatch(context.isEditing, (value) => {\n if (value) {\n nextTick(() => {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n })\n }\n})\n\nfunction handleSubmitKeyDown(event: KeyboardEvent) {\n if ((context.submitMode.value === 'enter' || context.submitMode.value === 'both') && event.key === kbd.ENTER && !event.shiftKey && !event.metaKey)\n context.submit()\n}\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n v-bind=\"props\"\n :value=\"context.inputValue.value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :maxlength=\"context.maxLength.value\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"context.readonly.value ? '' : undefined\"\n :readonly=\"context.readonly.value\"\n aria-label=\"editable input\"\n :hidden=\"context.autoResize.value ? undefined : !context.isEditing.value\"\n :style=\"context.autoResize.value ? { all: 'unset', gridArea: '1 / 1 / auto / auto', visibility: !context.isEditing.value ? 'hidden' : undefined } : undefined\"\n @input=\"context.inputValue.value = $event.target.value\"\n @keydown.enter.space=\"handleSubmitKeyDown\"\n @keydown.esc=\"context.cancel\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useKbd","injectEditableRootContext","computed","usePrimitiveElement","onMounted","watch","nextTick"],"mappings":";;;;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,MAAMA,oBAAO,EAAA;AAEnB,IAAA,MAAM,UAAUC,+CAA0B,EAAA;AAE1C,IAAA,MAAM,QAAW,GAAAC,YAAA,CAAS,MAAM,OAAA,CAAQ,SAAS,KAAK,CAAA;AAEtD,IAAA,MAAM,cAAcA,YAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,IAAI,CAAA;AAElE,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAgB,EAAA,QAAA,KAAaC,iDAAoB,EAAA;AAE3E,IAAAC,aAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,QAAA,CAAS,QAAQ,QAAS,CAAA,KAAA;AAClC,MAAI,IAAA,OAAA,CAAQ,kBAAkB,KAAO,EAAA;AACnC,QAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,QAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,UAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA;AACnC,KACD,CAAA;AAED,IAAMC,SAAA,CAAA,OAAA,CAAQ,SAAW,EAAA,CAAC,KAAU,KAAA;AAClC,MAAA,IAAI,KAAO,EAAA;AACT,QAAAC,YAAA,CAAS,MAAM;AACb,UAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,UAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,YAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA,SAClC,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,oBAAoB,KAAsB,EAAA;AACjD,MAAA,IAAA,CAAK,QAAQ,UAAW,CAAA,KAAA,KAAU,OAAW,IAAA,OAAA,CAAQ,WAAW,KAAU,KAAA,MAAA,KAAW,KAAM,CAAA,GAAA,KAAQ,IAAI,KAAS,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,CAAC,KAAM,CAAA,OAAA;AACxI,QAAA,OAAA,CAAQ,MAAO,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableInput.js","sources":["../../src/Editable/EditableInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nexport interface EditableInputProps extends PrimitiveProps {\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useKbd } from '@/shared'\nimport { computed, nextTick, onMounted, watch } from 'vue'\nimport { injectEditableRootContext } from './EditableRoot.vue'\n\nconst props = withDefaults(defineProps<EditableInputProps>(), {\n as: 'input',\n})\n\nconst kbd = useKbd()\n\nconst context = injectEditableRootContext()\n\nconst disabled = computed(() => context.disabled.value)\n\nconst placeholder = computed(() => context.placeholder.value?.edit)\n\nconst { primitiveElement, currentElement: inputRef } = usePrimitiveElement()\n\nonMounted(() => {\n context.inputRef.value = inputRef.value as HTMLInputElement\n if (context.startWithEditMode.value) {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n }\n})\n\nwatch(context.isEditing, (value) => {\n if (value) {\n nextTick(() => {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n })\n }\n})\n\nfunction handleSubmitKeyDown(event: KeyboardEvent) {\n if ((context.submitMode.value === 'enter' || context.submitMode.value === 'both') && event.key === kbd.ENTER && !event.shiftKey && !event.metaKey)\n context.submit()\n}\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n v-bind=\"props\"\n :value=\"context.inputValue.value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :maxlength=\"context.maxLength.value\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"context.readonly.value ? '' : undefined\"\n :readonly=\"context.readonly.value\"\n aria-label=\"editable input\"\n :hidden=\"context.autoResize.value ? undefined : !context.isEditing.value\"\n :style=\"context.autoResize.value ? { all: 'unset', gridArea: '1 / 1 / auto / auto', visibility: !context.isEditing.value ? 'hidden' : undefined } : undefined\"\n @input=\"context.inputValue.value = $event.target.value\"\n @keydown.enter.space=\"handleSubmitKeyDown\"\n @keydown.esc=\"context.cancel\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,MAAM,MAAO,EAAA;AAEnB,IAAA,MAAM,UAAU,yBAA0B,EAAA;AAE1C,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,OAAA,CAAQ,SAAS,KAAK,CAAA;AAEtD,IAAA,MAAM,cAAc,QAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,IAAI,CAAA;AAElE,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAgB,EAAA,QAAA,KAAa,mBAAoB,EAAA;AAE3E,IAAA,SAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,QAAA,CAAS,QAAQ,QAAS,CAAA,KAAA;AAClC,MAAI,IAAA,OAAA,CAAQ,kBAAkB,KAAO,EAAA;AACnC,QAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,QAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,UAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA;AACnC,KACD,CAAA;AAED,IAAM,KAAA,CAAA,OAAA,CAAQ,SAAW,EAAA,CAAC,KAAU,KAAA;AAClC,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,QAAA,CAAS,MAAM;AACb,UAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,UAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,YAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA,SAClC,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,oBAAoB,KAAsB,EAAA;AACjD,MAAA,IAAA,CAAK,QAAQ,UAAW,CAAA,KAAA,KAAU,OAAW,IAAA,OAAA,CAAQ,WAAW,KAAU,KAAA,MAAA,KAAW,KAAM,CAAA,GAAA,KAAQ,IAAI,KAAS,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,CAAC,KAAM,CAAA,OAAA;AACxI,QAAA,OAAA,CAAQ,MAAO,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EditableInput.js","sources":["../../src/Editable/EditableInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nexport interface EditableInputProps extends PrimitiveProps {\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, watch } from 'vue'\nimport { useKbd } from '@/shared'\nimport { injectEditableRootContext } from './EditableRoot.vue'\n\nconst props = withDefaults(defineProps<EditableInputProps>(), {\n as: 'input',\n})\n\nconst kbd = useKbd()\n\nconst context = injectEditableRootContext()\n\nconst disabled = computed(() => context.disabled.value)\n\nconst placeholder = computed(() => context.placeholder.value?.edit)\n\nconst { primitiveElement, currentElement: inputRef } = usePrimitiveElement()\n\nonMounted(() => {\n context.inputRef.value = inputRef.value as HTMLInputElement\n if (context.startWithEditMode.value) {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n }\n})\n\nwatch(context.isEditing, (value) => {\n if (value) {\n nextTick(() => {\n context.inputRef.value?.focus({ preventScroll: true })\n if (context.selectOnFocus.value)\n context.inputRef.value?.select()\n })\n }\n})\n\nfunction handleSubmitKeyDown(event: KeyboardEvent) {\n if ((context.submitMode.value === 'enter' || context.submitMode.value === 'both') && event.key === kbd.ENTER && !event.shiftKey && !event.metaKey)\n context.submit()\n}\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n v-bind=\"props\"\n :value=\"context.inputValue.value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :maxlength=\"context.maxLength.value\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"context.readonly.value ? '' : undefined\"\n :readonly=\"context.readonly.value\"\n aria-label=\"editable input\"\n :hidden=\"context.autoResize.value ? undefined : !context.isEditing.value\"\n :style=\"context.autoResize.value ? { all: 'unset', gridArea: '1 / 1 / auto / auto', visibility: !context.isEditing.value ? 'hidden' : undefined } : undefined\"\n @input=\"context.inputValue.value = $event.target.value\"\n @keydown.enter.space=\"handleSubmitKeyDown\"\n @keydown.esc=\"context.cancel\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAaA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,MAAM,MAAO,EAAA;AAEnB,IAAA,MAAM,UAAU,yBAA0B,EAAA;AAE1C,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,OAAA,CAAQ,SAAS,KAAK,CAAA;AAEtD,IAAA,MAAM,cAAc,QAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,IAAI,CAAA;AAElE,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAgB,EAAA,QAAA,KAAa,mBAAoB,EAAA;AAE3E,IAAA,SAAA,CAAU,MAAM;AACd,MAAQ,OAAA,CAAA,QAAA,CAAS,QAAQ,QAAS,CAAA,KAAA;AAClC,MAAI,IAAA,OAAA,CAAQ,kBAAkB,KAAO,EAAA;AACnC,QAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,QAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,UAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA;AACnC,KACD,CAAA;AAED,IAAM,KAAA,CAAA,OAAA,CAAQ,SAAW,EAAA,CAAC,KAAU,KAAA;AAClC,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,QAAA,CAAS,MAAM;AACb,UAAA,OAAA,CAAQ,SAAS,KAAO,EAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AACrD,UAAA,IAAI,QAAQ,aAAc,CAAA,KAAA;AACxB,YAAQ,OAAA,CAAA,QAAA,CAAS,OAAO,MAAO,EAAA;AAAA,SAClC,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,oBAAoB,KAAsB,EAAA;AACjD,MAAA,IAAA,CAAK,QAAQ,UAAW,CAAA,KAAA,KAAU,OAAW,IAAA,OAAA,CAAQ,WAAW,KAAU,KAAA,MAAA,KAAW,KAAM,CAAA,GAAA,KAAQ,IAAI,KAAS,IAAA,CAAC,KAAM,CAAA,QAAA,IAAY,CAAC,KAAM,CAAA,OAAA;AACxI,QAAA,OAAA,CAAQ,MAAO,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -94,7 +94,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
94
94
  cancel();
95
95
  }
96
96
  }
97
- const pointerDownOutside = DismissableLayer_utils.usePointerDownOutside(() => handleDismiss(), currentElement);
97
+ const pointerDownOutside = DismissableLayer_utils.usePointerDownOutside(() => handleDismiss(), currentElement, isEditing);
98
98
  const focusOutside = DismissableLayer_utils.useFocusOutside(() => handleDismiss(), currentElement);
99
99
  const isEmpty = vue.computed(() => modelValue.value === "");
100
100
  __expose({
@@ -1 +1 @@
1
- {"version":3,"file":"EditableRoot.cjs","sources":["../../src/Editable/EditableRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { useFocusOutside, usePointerDownOutside } from '@/DismissableLayer'\nimport { createContext, useDirection, useFormControl } from '@/shared'\n\ntype ActivationMode = 'focus' | 'dblclick' | 'none'\ntype SubmitMode = 'blur' | 'enter' | 'none' | 'both'\n\ntype EditableRootContext = {\n id: Ref<string | undefined>\n name: Ref<string | undefined>\n maxLength: Ref<number | undefined>\n disabled: Ref<boolean>\n modelValue: Ref<string | null | undefined>\n inputValue: Ref<string | null | undefined>\n placeholder: Ref<{ edit: string, preview: string }>\n isEditing: Ref<boolean>\n submitMode: Ref<SubmitMode>\n activationMode: Ref<ActivationMode>\n selectOnFocus: Ref<boolean>\n edit: () => void\n cancel: () => void\n submit: () => void\n inputRef: Ref<HTMLInputElement | undefined>\n startWithEditMode: Ref<boolean>\n isEmpty: Ref<boolean>\n readonly: Ref<boolean>\n autoResize: Ref<boolean>\n}\n\nexport interface EditableRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value of the editable field */\n defaultValue?: string\n /** The value of the editable field */\n modelValue?: string | null\n /** The placeholder for the editable field */\n placeholder?: string | { edit: string, preview: string }\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 /** Whether the editable field is disabled */\n disabled?: boolean\n /** Whether the editable field is read-only */\n readonly?: boolean\n /** The activation event of the editable field */\n activationMode?: ActivationMode\n /** Whether to select the text in the input when it is focused. */\n selectOnFocus?: boolean\n /** The submit event of the editable field */\n submitMode?: SubmitMode\n /** Whether to start with the edit mode active */\n startWithEditMode?: boolean\n /** The maximum number of characters allowed */\n maxLength?: number\n /** Whether the editable field should auto resize */\n autoResize?: boolean\n /** The id of the field */\n id?: string\n}\n\nexport type EditableRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [value: string]\n /** Event handler called when a value is submitted */\n 'submit': [value: string | null | undefined]\n /** Event handler called when the editable field changes state */\n 'update:state': [state: 'edit' | 'submit' | 'cancel']\n}\n\nexport const [injectEditableRootContext, provideEditableRootContext]\n = createContext<EditableRootContext>('EditableRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { useVModel } from '@vueuse/core'\nimport { computed, ref, toRefs, watch } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<EditableRootProps>(), {\n as: 'div',\n disabled: false,\n submitMode: 'blur',\n activationMode: 'focus',\n selectOnFocus: false,\n placeholder: 'Enter text...',\n autoResize: false,\n required: false,\n})\n\nconst emits = defineEmits<EditableRootEmits>()\ndefineSlots<{\n default: (props: {\n /** Whether the editable field is in edit mode */\n isEditing: boolean\n /** The value of the editable field */\n modelValue: typeof modelValue.value\n /** Whether the editable field is empty */\n isEmpty: boolean\n /** Function to submit the value of the editable */\n submit: () => void\n /** Function to cancel the value of the editable */\n cancel: () => void\n /** Function to set the editable in edit mode */\n edit: () => void\n }) => any\n}>()\n\nconst {\n id,\n name,\n defaultValue,\n startWithEditMode,\n placeholder: propPlaceholder,\n maxLength,\n disabled,\n dir: propDir,\n submitMode,\n activationMode,\n selectOnFocus,\n readonly,\n autoResize,\n required,\n} = toRefs(props)\n\nconst inputRef = ref<HTMLInputElement | undefined>()\nconst dir = useDirection(propDir)\nconst isEditing = ref(startWithEditMode.value ?? false)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value ?? '',\n passive: (props.modelValue === undefined) as false,\n})\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst isFormControl = useFormControl(currentElement)\n\nconst placeholder = computed(() => {\n return typeof propPlaceholder.value === 'string' ? { edit: propPlaceholder.value, preview: propPlaceholder.value } : propPlaceholder.value\n})\n\nconst inputValue = ref(modelValue.value)\n\nwatch(() => modelValue.value, () => {\n inputValue.value = modelValue.value\n}, { immediate: true, deep: true })\n\nfunction cancel() {\n isEditing.value = false\n emits('update:state', 'cancel')\n}\n\nfunction edit() {\n isEditing.value = true\n inputValue.value = modelValue.value\n\n emits('update:state', 'edit')\n}\n\nfunction submit() {\n modelValue.value = inputValue.value\n isEditing.value = false\n\n emits('update:state', 'submit')\n emits('submit', modelValue.value)\n}\n\nfunction handleDismiss() {\n if (isEditing.value) {\n if (submitMode.value === 'blur' || submitMode.value === 'both')\n submit()\n else\n cancel()\n }\n}\n\nconst pointerDownOutside = usePointerDownOutside(() => handleDismiss(), currentElement)\nconst focusOutside = useFocusOutside(() => handleDismiss(), currentElement)\nconst isEmpty = computed(() => modelValue.value === '')\n\ndefineExpose({\n /** Function to submit the value of the editable */\n submit,\n /** Function to cancel the value of the editable */\n cancel,\n /** Function to set the editable in edit mode */\n edit,\n})\n\nprovideEditableRootContext({\n id,\n name,\n disabled,\n isEditing,\n maxLength,\n modelValue,\n inputValue,\n placeholder,\n edit,\n cancel,\n submit,\n activationMode,\n submitMode,\n selectOnFocus,\n inputRef,\n startWithEditMode,\n isEmpty,\n readonly,\n autoResize,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n data-dismissable-layer\n @focus.capture=\"focusOutside.onFocusCapture\"\n @blur.capture=\"focusOutside.onBlurCapture\"\n @pointerdown.capture=\"pointerDownOutside.onPointerDownCapture\"\n >\n <slot\n :model-value=\"modelValue\"\n :is-editing=\"isEditing\"\n :is-empty=\"isEmpty\"\n :submit=\"submit\"\n :cancel=\"cancel\"\n :edit=\"edit\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n type=\"text\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","ref","useDirection","useVModel","usePrimitiveElement","useFormControl","computed","watch","usePointerDownOutside","useFocusOutside"],"mappings":"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"}
1
+ {"version":3,"file":"EditableRoot.cjs","sources":["../../src/Editable/EditableRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { useFocusOutside, usePointerDownOutside } from '@/DismissableLayer'\nimport { createContext, useDirection, useFormControl } from '@/shared'\n\ntype ActivationMode = 'focus' | 'dblclick' | 'none'\ntype SubmitMode = 'blur' | 'enter' | 'none' | 'both'\n\ntype EditableRootContext = {\n id: Ref<string | undefined>\n name: Ref<string | undefined>\n maxLength: Ref<number | undefined>\n disabled: Ref<boolean>\n modelValue: Ref<string | null | undefined>\n inputValue: Ref<string | null | undefined>\n placeholder: Ref<{ edit: string, preview: string }>\n isEditing: Ref<boolean>\n submitMode: Ref<SubmitMode>\n activationMode: Ref<ActivationMode>\n selectOnFocus: Ref<boolean>\n edit: () => void\n cancel: () => void\n submit: () => void\n inputRef: Ref<HTMLInputElement | undefined>\n startWithEditMode: Ref<boolean>\n isEmpty: Ref<boolean>\n readonly: Ref<boolean>\n autoResize: Ref<boolean>\n}\n\nexport interface EditableRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value of the editable field */\n defaultValue?: string\n /** The value of the editable field */\n modelValue?: string | null\n /** The placeholder for the editable field */\n placeholder?: string | { edit: string, preview: string }\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 /** Whether the editable field is disabled */\n disabled?: boolean\n /** Whether the editable field is read-only */\n readonly?: boolean\n /** The activation event of the editable field */\n activationMode?: ActivationMode\n /** Whether to select the text in the input when it is focused. */\n selectOnFocus?: boolean\n /** The submit event of the editable field */\n submitMode?: SubmitMode\n /** Whether to start with the edit mode active */\n startWithEditMode?: boolean\n /** The maximum number of characters allowed */\n maxLength?: number\n /** Whether the editable field should auto resize */\n autoResize?: boolean\n /** The id of the field */\n id?: string\n}\n\nexport type EditableRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [value: string]\n /** Event handler called when a value is submitted */\n 'submit': [value: string | null | undefined]\n /** Event handler called when the editable field changes state */\n 'update:state': [state: 'edit' | 'submit' | 'cancel']\n}\n\nexport const [injectEditableRootContext, provideEditableRootContext]\n = createContext<EditableRootContext>('EditableRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { computed, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<EditableRootProps>(), {\n as: 'div',\n disabled: false,\n submitMode: 'blur',\n activationMode: 'focus',\n selectOnFocus: false,\n placeholder: 'Enter text...',\n autoResize: false,\n required: false,\n})\n\nconst emits = defineEmits<EditableRootEmits>()\ndefineSlots<{\n default?: (props: {\n /** Whether the editable field is in edit mode */\n isEditing: boolean\n /** The value of the editable field */\n modelValue: typeof modelValue.value\n /** Whether the editable field is empty */\n isEmpty: boolean\n /** Function to submit the value of the editable */\n submit: () => void\n /** Function to cancel the value of the editable */\n cancel: () => void\n /** Function to set the editable in edit mode */\n edit: () => void\n }) => any\n}>()\n\nconst {\n id,\n name,\n defaultValue,\n startWithEditMode,\n placeholder: propPlaceholder,\n maxLength,\n disabled,\n dir: propDir,\n submitMode,\n activationMode,\n selectOnFocus,\n readonly,\n autoResize,\n required,\n} = toRefs(props)\n\nconst inputRef = ref<HTMLInputElement | undefined>()\nconst dir = useDirection(propDir)\nconst isEditing = ref(startWithEditMode.value ?? false)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value ?? '',\n passive: (props.modelValue === undefined) as false,\n})\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst isFormControl = useFormControl(currentElement)\n\nconst placeholder = computed(() => {\n return typeof propPlaceholder.value === 'string' ? { edit: propPlaceholder.value, preview: propPlaceholder.value } : propPlaceholder.value\n})\n\nconst inputValue = ref(modelValue.value)\n\nwatch(() => modelValue.value, () => {\n inputValue.value = modelValue.value\n}, { immediate: true, deep: true })\n\nfunction cancel() {\n isEditing.value = false\n emits('update:state', 'cancel')\n}\n\nfunction edit() {\n isEditing.value = true\n inputValue.value = modelValue.value\n\n emits('update:state', 'edit')\n}\n\nfunction submit() {\n modelValue.value = inputValue.value\n isEditing.value = false\n\n emits('update:state', 'submit')\n emits('submit', modelValue.value)\n}\n\nfunction handleDismiss() {\n if (isEditing.value) {\n if (submitMode.value === 'blur' || submitMode.value === 'both')\n submit()\n else\n cancel()\n }\n}\n\nconst pointerDownOutside = usePointerDownOutside(() => handleDismiss(), currentElement, isEditing)\nconst focusOutside = useFocusOutside(() => handleDismiss(), currentElement)\nconst isEmpty = computed(() => modelValue.value === '')\n\ndefineExpose({\n /** Function to submit the value of the editable */\n submit,\n /** Function to cancel the value of the editable */\n cancel,\n /** Function to set the editable in edit mode */\n edit,\n})\n\nprovideEditableRootContext({\n id,\n name,\n disabled,\n isEditing,\n maxLength,\n modelValue,\n inputValue,\n placeholder,\n edit,\n cancel,\n submit,\n activationMode,\n submitMode,\n selectOnFocus,\n inputRef,\n startWithEditMode,\n isEmpty,\n readonly,\n autoResize,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n :dir=\"dir\"\n data-dismissable-layer\n @focus.capture=\"focusOutside.onFocusCapture\"\n @blur.capture=\"focusOutside.onBlurCapture\"\n @pointerdown.capture=\"pointerDownOutside.onPointerDownCapture\"\n >\n <slot\n :model-value=\"modelValue\"\n :is-editing=\"isEditing\"\n :is-empty=\"isEmpty\"\n :submit=\"submit\"\n :cancel=\"cancel\"\n :edit=\"edit\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n type=\"text\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","ref","useDirection","useVModel","usePrimitiveElement","useFormControl","computed","watch","usePointerDownOutside","useFocusOutside"],"mappings":"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"}
@@ -92,7 +92,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
92
92
  cancel();
93
93
  }
94
94
  }
95
- const pointerDownOutside = usePointerDownOutside(() => handleDismiss(), currentElement);
95
+ const pointerDownOutside = usePointerDownOutside(() => handleDismiss(), currentElement, isEditing);
96
96
  const focusOutside = useFocusOutside(() => handleDismiss(), currentElement);
97
97
  const isEmpty = computed(() => modelValue.value === "");
98
98
  __expose({