reka-ui 2.2.0 → 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 (902) hide show
  1. package/dist/Accordion/AccordionHeader.cjs.map +1 -1
  2. package/dist/Accordion/AccordionHeader.js.map +1 -1
  3. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  4. package/dist/Accordion/AccordionItem.js.map +1 -1
  5. package/dist/Accordion/AccordionRoot.cjs.map +1 -1
  6. package/dist/Accordion/AccordionRoot.js.map +1 -1
  7. package/dist/Accordion/AccordionTrigger.cjs.map +1 -1
  8. package/dist/Accordion/AccordionTrigger.js.map +1 -1
  9. package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
  10. package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
  11. package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
  12. package/dist/AspectRatio/AspectRatio.js.map +1 -1
  13. package/dist/Avatar/AvatarFallback.cjs +11 -14
  14. package/dist/Avatar/AvatarFallback.cjs.map +1 -1
  15. package/dist/Avatar/AvatarFallback.js +12 -15
  16. package/dist/Avatar/AvatarFallback.js.map +1 -1
  17. package/dist/Avatar/AvatarImage.cjs +3 -2
  18. package/dist/Avatar/AvatarImage.cjs.map +1 -1
  19. package/dist/Avatar/AvatarImage.js +3 -2
  20. package/dist/Avatar/AvatarImage.js.map +1 -1
  21. package/dist/Avatar/AvatarRoot.cjs +1 -1
  22. package/dist/Avatar/AvatarRoot.cjs.map +1 -1
  23. package/dist/Avatar/AvatarRoot.js +1 -1
  24. package/dist/Avatar/AvatarRoot.js.map +1 -1
  25. package/dist/Avatar/utils.cjs +43 -16
  26. package/dist/Avatar/utils.cjs.map +1 -1
  27. package/dist/Avatar/utils.js +44 -17
  28. package/dist/Avatar/utils.js.map +1 -1
  29. package/dist/Calendar/CalendarCell.cjs +3 -3
  30. package/dist/Calendar/CalendarCell.cjs.map +1 -1
  31. package/dist/Calendar/CalendarCell.js +3 -3
  32. package/dist/Calendar/CalendarCell.js.map +1 -1
  33. package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
  34. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  35. package/dist/Calendar/CalendarCellTrigger.js +5 -1
  36. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  37. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  38. package/dist/Calendar/CalendarGrid.js.map +1 -1
  39. package/dist/Calendar/CalendarHeading.cjs +1 -1
  40. package/dist/Calendar/CalendarHeading.cjs.map +1 -1
  41. package/dist/Calendar/CalendarHeading.js +1 -1
  42. package/dist/Calendar/CalendarHeading.js.map +1 -1
  43. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  44. package/dist/Calendar/CalendarNext.js.map +1 -1
  45. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  46. package/dist/Calendar/CalendarPrev.js.map +1 -1
  47. package/dist/Calendar/CalendarRoot.cjs +7 -4
  48. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  49. package/dist/Calendar/CalendarRoot.js +7 -4
  50. package/dist/Calendar/CalendarRoot.js.map +1 -1
  51. package/dist/Calendar/useCalendar.cjs.map +1 -1
  52. package/dist/Calendar/useCalendar.js.map +1 -1
  53. package/dist/Checkbox/CheckboxGroupRoot.cjs +1 -1
  54. package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
  55. package/dist/Checkbox/CheckboxGroupRoot.js +1 -1
  56. package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
  57. package/dist/Checkbox/CheckboxIndicator.cjs.map +1 -1
  58. package/dist/Checkbox/CheckboxIndicator.js.map +1 -1
  59. package/dist/Checkbox/CheckboxRoot.cjs +1 -1
  60. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  61. package/dist/Checkbox/CheckboxRoot.js +1 -1
  62. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  63. package/dist/Collapsible/CollapsibleContent.cjs +1 -1
  64. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  65. package/dist/Collapsible/CollapsibleContent.js +1 -1
  66. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  67. package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
  68. package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
  69. package/dist/Collapsible/CollapsibleRoot.js +2 -0
  70. package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
  71. package/dist/Collapsible/CollapsibleTrigger.cjs +1 -1
  72. package/dist/Collapsible/CollapsibleTrigger.js +1 -1
  73. package/dist/Collection/Collection.cjs.map +1 -1
  74. package/dist/Collection/Collection.js.map +1 -1
  75. package/dist/Combobox/ComboboxAnchor.cjs.map +1 -1
  76. package/dist/Combobox/ComboboxAnchor.js.map +1 -1
  77. package/dist/Combobox/ComboboxArrow.cjs.map +1 -1
  78. package/dist/Combobox/ComboboxArrow.js.map +1 -1
  79. package/dist/Combobox/ComboboxCancel.cjs +1 -0
  80. package/dist/Combobox/ComboboxCancel.cjs.map +1 -1
  81. package/dist/Combobox/ComboboxCancel.js +1 -0
  82. package/dist/Combobox/ComboboxCancel.js.map +1 -1
  83. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  84. package/dist/Combobox/ComboboxContent.js.map +1 -1
  85. package/dist/Combobox/ComboboxContentImpl.cjs +2 -2
  86. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  87. package/dist/Combobox/ComboboxContentImpl.js +2 -2
  88. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  89. package/dist/Combobox/ComboboxEmpty.cjs.map +1 -1
  90. package/dist/Combobox/ComboboxEmpty.js.map +1 -1
  91. package/dist/Combobox/ComboboxGroup.cjs +1 -1
  92. package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
  93. package/dist/Combobox/ComboboxGroup.js +1 -1
  94. package/dist/Combobox/ComboboxGroup.js.map +1 -1
  95. package/dist/Combobox/ComboboxInput.cjs +9 -1
  96. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  97. package/dist/Combobox/ComboboxInput.js +9 -1
  98. package/dist/Combobox/ComboboxInput.js.map +1 -1
  99. package/dist/Combobox/ComboboxItem.cjs +4 -3
  100. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  101. package/dist/Combobox/ComboboxItem.js +4 -3
  102. package/dist/Combobox/ComboboxItem.js.map +1 -1
  103. package/dist/Combobox/ComboboxLabel.cjs +1 -1
  104. package/dist/Combobox/ComboboxLabel.js +1 -1
  105. package/dist/Combobox/ComboboxRoot.cjs +1 -2
  106. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  107. package/dist/Combobox/ComboboxRoot.js +1 -2
  108. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  109. package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
  110. package/dist/Combobox/ComboboxTrigger.js.map +1 -1
  111. package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
  112. package/dist/Combobox/ComboboxViewport.js.map +1 -1
  113. package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
  114. package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
  115. package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
  116. package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
  117. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  118. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  119. package/dist/ContextMenu/ContextMenuPortal.cjs.map +1 -1
  120. package/dist/ContextMenu/ContextMenuPortal.js.map +1 -1
  121. package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
  122. package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
  123. package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
  124. package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
  125. package/dist/ContextMenu/ContextMenuTrigger.cjs +2 -2
  126. package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
  127. package/dist/ContextMenu/ContextMenuTrigger.js +2 -2
  128. package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
  129. package/dist/DateField/DateFieldInput.cjs +1 -0
  130. package/dist/DateField/DateFieldInput.cjs.map +1 -1
  131. package/dist/DateField/DateFieldInput.js +1 -0
  132. package/dist/DateField/DateFieldInput.js.map +1 -1
  133. package/dist/DateField/DateFieldRoot.cjs +7 -1
  134. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  135. package/dist/DateField/DateFieldRoot.js +7 -1
  136. package/dist/DateField/DateFieldRoot.js.map +1 -1
  137. package/dist/DatePicker/DatePickerArrow.cjs.map +1 -1
  138. package/dist/DatePicker/DatePickerArrow.js.map +1 -1
  139. package/dist/DatePicker/DatePickerCalendar.cjs.map +1 -1
  140. package/dist/DatePicker/DatePickerCalendar.js.map +1 -1
  141. package/dist/DatePicker/DatePickerCell.cjs.map +1 -1
  142. package/dist/DatePicker/DatePickerCell.js.map +1 -1
  143. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  144. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  145. package/dist/DatePicker/DatePickerClose.cjs.map +1 -1
  146. package/dist/DatePicker/DatePickerClose.js.map +1 -1
  147. package/dist/DatePicker/DatePickerContent.cjs +8 -3
  148. package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
  149. package/dist/DatePicker/DatePickerContent.js +9 -4
  150. package/dist/DatePicker/DatePickerContent.js.map +1 -1
  151. package/dist/DatePicker/DatePickerGrid.cjs.map +1 -1
  152. package/dist/DatePicker/DatePickerGrid.js.map +1 -1
  153. package/dist/DatePicker/DatePickerGridBody.cjs.map +1 -1
  154. package/dist/DatePicker/DatePickerGridBody.js.map +1 -1
  155. package/dist/DatePicker/DatePickerGridHead.cjs.map +1 -1
  156. package/dist/DatePicker/DatePickerGridHead.js.map +1 -1
  157. package/dist/DatePicker/DatePickerGridRow.cjs.map +1 -1
  158. package/dist/DatePicker/DatePickerGridRow.js.map +1 -1
  159. package/dist/DatePicker/DatePickerHeadCell.cjs.map +1 -1
  160. package/dist/DatePicker/DatePickerHeadCell.js.map +1 -1
  161. package/dist/DatePicker/DatePickerHeader.cjs.map +1 -1
  162. package/dist/DatePicker/DatePickerHeader.js.map +1 -1
  163. package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
  164. package/dist/DatePicker/DatePickerHeading.js.map +1 -1
  165. package/dist/DatePicker/DatePickerInput.cjs.map +1 -1
  166. package/dist/DatePicker/DatePickerInput.js.map +1 -1
  167. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  168. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  169. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  170. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  171. package/dist/DatePicker/DatePickerRoot.cjs +1 -0
  172. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  173. package/dist/DatePicker/DatePickerRoot.js +1 -0
  174. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  175. package/dist/DatePicker/DatePickerTrigger.cjs.map +1 -1
  176. package/dist/DatePicker/DatePickerTrigger.js.map +1 -1
  177. package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
  178. package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
  179. package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
  180. package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
  181. package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
  182. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  183. package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
  184. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  185. package/dist/DateRangePicker/DateRangePickerAnchor.cjs.map +1 -1
  186. package/dist/DateRangePicker/DateRangePickerAnchor.js.map +1 -1
  187. package/dist/DateRangePicker/DateRangePickerArrow.cjs.map +1 -1
  188. package/dist/DateRangePicker/DateRangePickerArrow.js.map +1 -1
  189. package/dist/DateRangePicker/DateRangePickerCalendar.cjs +3 -1
  190. package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
  191. package/dist/DateRangePicker/DateRangePickerCalendar.js +3 -1
  192. package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
  193. package/dist/DateRangePicker/DateRangePickerCell.cjs.map +1 -1
  194. package/dist/DateRangePicker/DateRangePickerCell.js.map +1 -1
  195. package/dist/DateRangePicker/DateRangePickerClose.cjs.map +1 -1
  196. package/dist/DateRangePicker/DateRangePickerClose.js.map +1 -1
  197. package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
  198. package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
  199. package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
  200. package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
  201. package/dist/DateRangePicker/DateRangePickerGrid.cjs.map +1 -1
  202. package/dist/DateRangePicker/DateRangePickerGrid.js.map +1 -1
  203. package/dist/DateRangePicker/DateRangePickerGridBody.cjs.map +1 -1
  204. package/dist/DateRangePicker/DateRangePickerGridBody.js.map +1 -1
  205. package/dist/DateRangePicker/DateRangePickerGridHead.cjs.map +1 -1
  206. package/dist/DateRangePicker/DateRangePickerGridHead.js.map +1 -1
  207. package/dist/DateRangePicker/DateRangePickerGridRow.cjs.map +1 -1
  208. package/dist/DateRangePicker/DateRangePickerGridRow.js.map +1 -1
  209. package/dist/DateRangePicker/DateRangePickerHeadCell.cjs.map +1 -1
  210. package/dist/DateRangePicker/DateRangePickerHeadCell.js.map +1 -1
  211. package/dist/DateRangePicker/DateRangePickerHeader.cjs.map +1 -1
  212. package/dist/DateRangePicker/DateRangePickerHeader.js.map +1 -1
  213. package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
  214. package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
  215. package/dist/DateRangePicker/DateRangePickerInput.cjs.map +1 -1
  216. package/dist/DateRangePicker/DateRangePickerInput.js.map +1 -1
  217. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  218. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  219. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  220. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  221. package/dist/DateRangePicker/DateRangePickerRoot.cjs +9 -2
  222. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  223. package/dist/DateRangePicker/DateRangePickerRoot.js +9 -2
  224. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  225. package/dist/DateRangePicker/DateRangePickerTrigger.cjs.map +1 -1
  226. package/dist/DateRangePicker/DateRangePickerTrigger.js.map +1 -1
  227. package/dist/Dialog/DialogClose.cjs +1 -1
  228. package/dist/Dialog/DialogClose.cjs.map +1 -1
  229. package/dist/Dialog/DialogClose.js +1 -1
  230. package/dist/Dialog/DialogClose.js.map +1 -1
  231. package/dist/Dialog/DialogContent.cjs.map +1 -1
  232. package/dist/Dialog/DialogContent.js.map +1 -1
  233. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  234. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  235. package/dist/Dialog/DialogContentModal.cjs.map +1 -1
  236. package/dist/Dialog/DialogContentModal.js.map +1 -1
  237. package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
  238. package/dist/Dialog/DialogContentNonModal.js.map +1 -1
  239. package/dist/Dialog/DialogDescription.cjs.map +1 -1
  240. package/dist/Dialog/DialogDescription.js.map +1 -1
  241. package/dist/Dialog/DialogOverlay.cjs.map +1 -1
  242. package/dist/Dialog/DialogOverlay.js.map +1 -1
  243. package/dist/Dialog/DialogOverlayImpl.cjs.map +1 -1
  244. package/dist/Dialog/DialogOverlayImpl.js.map +1 -1
  245. package/dist/Dialog/DialogRoot.cjs +4 -1
  246. package/dist/Dialog/DialogRoot.cjs.map +1 -1
  247. package/dist/Dialog/DialogRoot.js +4 -1
  248. package/dist/Dialog/DialogRoot.js.map +1 -1
  249. package/dist/Dialog/DialogTitle.cjs.map +1 -1
  250. package/dist/Dialog/DialogTitle.js.map +1 -1
  251. package/dist/Dialog/DialogTrigger.cjs +1 -1
  252. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  253. package/dist/Dialog/DialogTrigger.js +1 -1
  254. package/dist/Dialog/DialogTrigger.js.map +1 -1
  255. package/dist/Dialog/utils.cjs.map +1 -1
  256. package/dist/Dialog/utils.js.map +1 -1
  257. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  258. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  259. package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
  260. package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
  261. package/dist/DismissableLayer/utils.cjs +11 -6
  262. package/dist/DismissableLayer/utils.cjs.map +1 -1
  263. package/dist/DismissableLayer/utils.js +12 -7
  264. package/dist/DismissableLayer/utils.js.map +1 -1
  265. package/dist/DropdownMenu/DropdownMenuContent.cjs +1 -1
  266. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  267. package/dist/DropdownMenu/DropdownMenuContent.js +1 -1
  268. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  269. package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
  270. package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
  271. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  272. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  273. package/dist/DropdownMenu/DropdownMenuTrigger.cjs +1 -1
  274. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  275. package/dist/DropdownMenu/DropdownMenuTrigger.js +1 -1
  276. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  277. package/dist/Editable/EditableInput.cjs.map +1 -1
  278. package/dist/Editable/EditableInput.js.map +1 -1
  279. package/dist/Editable/EditablePreview.cjs.map +1 -1
  280. package/dist/Editable/EditablePreview.js.map +1 -1
  281. package/dist/Editable/EditableRoot.cjs +1 -1
  282. package/dist/Editable/EditableRoot.cjs.map +1 -1
  283. package/dist/Editable/EditableRoot.js +1 -1
  284. package/dist/Editable/EditableRoot.js.map +1 -1
  285. package/dist/FocusScope/FocusScope.cjs +1 -1
  286. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  287. package/dist/FocusScope/FocusScope.js +1 -1
  288. package/dist/FocusScope/FocusScope.js.map +1 -1
  289. package/dist/HoverCard/HoverCardContent.cjs +1 -1
  290. package/dist/HoverCard/HoverCardContent.cjs.map +1 -1
  291. package/dist/HoverCard/HoverCardContent.js +1 -1
  292. package/dist/HoverCard/HoverCardContent.js.map +1 -1
  293. package/dist/HoverCard/HoverCardContentImpl.cjs +3 -3
  294. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  295. package/dist/HoverCard/HoverCardContentImpl.js +3 -3
  296. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  297. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  298. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  299. package/dist/HoverCard/HoverCardTrigger.cjs +1 -1
  300. package/dist/HoverCard/HoverCardTrigger.cjs.map +1 -1
  301. package/dist/HoverCard/HoverCardTrigger.js +1 -1
  302. package/dist/HoverCard/HoverCardTrigger.js.map +1 -1
  303. package/dist/Listbox/ListboxContent.cjs +1 -1
  304. package/dist/Listbox/ListboxContent.cjs.map +1 -1
  305. package/dist/Listbox/ListboxContent.js +1 -1
  306. package/dist/Listbox/ListboxContent.js.map +1 -1
  307. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  308. package/dist/Listbox/ListboxFilter.js.map +1 -1
  309. package/dist/Listbox/ListboxItem.cjs +2 -2
  310. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  311. package/dist/Listbox/ListboxItem.js +2 -2
  312. package/dist/Listbox/ListboxItem.js.map +1 -1
  313. package/dist/Listbox/ListboxItemIndicator.cjs.map +1 -1
  314. package/dist/Listbox/ListboxItemIndicator.js.map +1 -1
  315. package/dist/Listbox/ListboxRoot.cjs +3 -3
  316. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  317. package/dist/Listbox/ListboxRoot.js +3 -3
  318. package/dist/Listbox/ListboxRoot.js.map +1 -1
  319. package/dist/Listbox/ListboxVirtualizer.cjs +4 -4
  320. package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
  321. package/dist/Listbox/ListboxVirtualizer.js +4 -4
  322. package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
  323. package/dist/Menu/MenuAnchor.cjs.map +1 -1
  324. package/dist/Menu/MenuAnchor.js.map +1 -1
  325. package/dist/Menu/MenuCheckboxItem.cjs +1 -1
  326. package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
  327. package/dist/Menu/MenuCheckboxItem.js +1 -1
  328. package/dist/Menu/MenuCheckboxItem.js.map +1 -1
  329. package/dist/Menu/MenuContent.cjs.map +1 -1
  330. package/dist/Menu/MenuContent.js.map +1 -1
  331. package/dist/Menu/MenuContentImpl.cjs +2 -2
  332. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  333. package/dist/Menu/MenuContentImpl.js +2 -2
  334. package/dist/Menu/MenuContentImpl.js.map +1 -1
  335. package/dist/Menu/MenuItem.cjs.map +1 -1
  336. package/dist/Menu/MenuItem.js.map +1 -1
  337. package/dist/Menu/MenuItemImpl.cjs +1 -1
  338. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  339. package/dist/Menu/MenuItemImpl.js +1 -1
  340. package/dist/Menu/MenuItemImpl.js.map +1 -1
  341. package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
  342. package/dist/Menu/MenuItemIndicator.js.map +1 -1
  343. package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
  344. package/dist/Menu/MenuRadioGroup.js.map +1 -1
  345. package/dist/Menu/MenuRadioItem.cjs +1 -1
  346. package/dist/Menu/MenuRadioItem.cjs.map +1 -1
  347. package/dist/Menu/MenuRadioItem.js +1 -1
  348. package/dist/Menu/MenuRadioItem.js.map +1 -1
  349. package/dist/Menu/MenuRoot.cjs +1 -1
  350. package/dist/Menu/MenuRoot.cjs.map +1 -1
  351. package/dist/Menu/MenuRoot.js +1 -1
  352. package/dist/Menu/MenuRoot.js.map +1 -1
  353. package/dist/Menu/MenuRootContentModal.cjs.map +1 -1
  354. package/dist/Menu/MenuRootContentModal.js.map +1 -1
  355. package/dist/Menu/MenuRootContentNonModal.cjs.map +1 -1
  356. package/dist/Menu/MenuRootContentNonModal.js.map +1 -1
  357. package/dist/Menu/MenuSub.cjs.map +1 -1
  358. package/dist/Menu/MenuSub.js.map +1 -1
  359. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  360. package/dist/Menu/MenuSubContent.js.map +1 -1
  361. package/dist/Menu/MenuSubTrigger.cjs +1 -1
  362. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  363. package/dist/Menu/MenuSubTrigger.js +1 -1
  364. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  365. package/dist/Menubar/MenubarContent.cjs +1 -1
  366. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  367. package/dist/Menubar/MenubarContent.js +1 -1
  368. package/dist/Menubar/MenubarContent.js.map +1 -1
  369. package/dist/Menubar/MenubarGroup.cjs.map +1 -1
  370. package/dist/Menubar/MenubarGroup.js.map +1 -1
  371. package/dist/Menubar/MenubarMenu.cjs.map +1 -1
  372. package/dist/Menubar/MenubarMenu.js.map +1 -1
  373. package/dist/Menubar/MenubarRoot.cjs.map +1 -1
  374. package/dist/Menubar/MenubarRoot.js.map +1 -1
  375. package/dist/Menubar/MenubarSub.cjs.map +1 -1
  376. package/dist/Menubar/MenubarSub.js.map +1 -1
  377. package/dist/Menubar/MenubarSubContent.cjs.map +1 -1
  378. package/dist/Menubar/MenubarSubContent.js.map +1 -1
  379. package/dist/Menubar/MenubarTrigger.cjs +1 -1
  380. package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
  381. package/dist/Menubar/MenubarTrigger.js +1 -1
  382. package/dist/Menubar/MenubarTrigger.js.map +1 -1
  383. package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
  384. package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
  385. package/dist/NavigationMenu/NavigationMenuContent.js +1 -1
  386. package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
  387. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
  388. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  389. package/dist/NavigationMenu/NavigationMenuContentImpl.js +1 -1
  390. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  391. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  392. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  393. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  394. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  395. package/dist/NavigationMenu/NavigationMenuLink.cjs.map +1 -1
  396. package/dist/NavigationMenu/NavigationMenuLink.js.map +1 -1
  397. package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
  398. package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
  399. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  400. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  401. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  402. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  403. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  404. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  405. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  406. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  407. package/dist/NumberField/NumberFieldDecrement.cjs +1 -1
  408. package/dist/NumberField/NumberFieldDecrement.cjs.map +1 -1
  409. package/dist/NumberField/NumberFieldDecrement.js +1 -1
  410. package/dist/NumberField/NumberFieldDecrement.js.map +1 -1
  411. package/dist/NumberField/NumberFieldIncrement.cjs.map +1 -1
  412. package/dist/NumberField/NumberFieldIncrement.js.map +1 -1
  413. package/dist/NumberField/NumberFieldInput.cjs +3 -3
  414. package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
  415. package/dist/NumberField/NumberFieldInput.js +3 -3
  416. package/dist/NumberField/NumberFieldInput.js.map +1 -1
  417. package/dist/NumberField/NumberFieldRoot.cjs +8 -5
  418. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  419. package/dist/NumberField/NumberFieldRoot.js +8 -5
  420. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  421. package/dist/NumberField/utils.cjs.map +1 -1
  422. package/dist/NumberField/utils.js +1 -1
  423. package/dist/NumberField/utils.js.map +1 -1
  424. package/dist/Pagination/PaginationList.cjs.map +1 -1
  425. package/dist/Pagination/PaginationList.js.map +1 -1
  426. package/dist/Pagination/PaginationRoot.cjs.map +1 -1
  427. package/dist/Pagination/PaginationRoot.js.map +1 -1
  428. package/dist/Pagination/utils.cjs.map +1 -1
  429. package/dist/Pagination/utils.js.map +1 -1
  430. package/dist/PinInput/PinInputInput.cjs +1 -1
  431. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  432. package/dist/PinInput/PinInputInput.js +1 -1
  433. package/dist/PinInput/PinInputInput.js.map +1 -1
  434. package/dist/PinInput/PinInputRoot.cjs.map +1 -1
  435. package/dist/PinInput/PinInputRoot.js.map +1 -1
  436. package/dist/Popover/PopoverAnchor.cjs.map +1 -1
  437. package/dist/Popover/PopoverAnchor.js.map +1 -1
  438. package/dist/Popover/PopoverClose.cjs.map +1 -1
  439. package/dist/Popover/PopoverClose.js.map +1 -1
  440. package/dist/Popover/PopoverContent.cjs.map +1 -1
  441. package/dist/Popover/PopoverContent.js.map +1 -1
  442. package/dist/Popover/PopoverContentImpl.cjs +1 -1
  443. package/dist/Popover/PopoverContentImpl.cjs.map +1 -1
  444. package/dist/Popover/PopoverContentImpl.js +1 -1
  445. package/dist/Popover/PopoverContentImpl.js.map +1 -1
  446. package/dist/Popover/PopoverContentModal.cjs +1 -1
  447. package/dist/Popover/PopoverContentModal.cjs.map +1 -1
  448. package/dist/Popover/PopoverContentModal.js +1 -1
  449. package/dist/Popover/PopoverContentModal.js.map +1 -1
  450. package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
  451. package/dist/Popover/PopoverContentNonModal.js.map +1 -1
  452. package/dist/Popover/PopoverRoot.cjs.map +1 -1
  453. package/dist/Popover/PopoverRoot.js.map +1 -1
  454. package/dist/Popover/PopoverTrigger.cjs +1 -1
  455. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  456. package/dist/Popover/PopoverTrigger.js +1 -1
  457. package/dist/Popover/PopoverTrigger.js.map +1 -1
  458. package/dist/Popper/PopperAnchor.cjs.map +1 -1
  459. package/dist/Popper/PopperAnchor.js.map +1 -1
  460. package/dist/Popper/PopperArrow.cjs.map +1 -1
  461. package/dist/Popper/PopperArrow.js.map +1 -1
  462. package/dist/Popper/PopperContent.cjs +2 -2
  463. package/dist/Popper/PopperContent.cjs.map +1 -1
  464. package/dist/Popper/PopperContent.js +2 -2
  465. package/dist/Popper/PopperContent.js.map +1 -1
  466. package/dist/Popper/PopperRoot.cjs.map +1 -1
  467. package/dist/Popper/PopperRoot.js.map +1 -1
  468. package/dist/Presence/Presence.cjs +1 -1
  469. package/dist/Presence/Presence.cjs.map +1 -1
  470. package/dist/Presence/Presence.js +1 -1
  471. package/dist/Presence/Presence.js.map +1 -1
  472. package/dist/Presence/usePresence.cjs +2 -2
  473. package/dist/Presence/usePresence.cjs.map +1 -1
  474. package/dist/Presence/usePresence.js +2 -2
  475. package/dist/Presence/usePresence.js.map +1 -1
  476. package/dist/Primitive/Primitive.cjs.map +1 -1
  477. package/dist/Primitive/Primitive.js.map +1 -1
  478. package/dist/Primitive/Slot.cjs +1 -9
  479. package/dist/Primitive/Slot.cjs.map +1 -1
  480. package/dist/Primitive/Slot.js +1 -9
  481. package/dist/Primitive/Slot.js.map +1 -1
  482. package/dist/Primitive/usePrimitiveElement.cjs.map +1 -1
  483. package/dist/Primitive/usePrimitiveElement.js.map +1 -1
  484. package/dist/Progress/ProgressIndicator.cjs.map +1 -1
  485. package/dist/Progress/ProgressIndicator.js.map +1 -1
  486. package/dist/Progress/ProgressRoot.cjs +3 -2
  487. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  488. package/dist/Progress/ProgressRoot.js +3 -2
  489. package/dist/Progress/ProgressRoot.js.map +1 -1
  490. package/dist/RadioGroup/Radio.cjs.map +1 -1
  491. package/dist/RadioGroup/Radio.js.map +1 -1
  492. package/dist/RadioGroup/RadioGroupIndicator.cjs.map +1 -1
  493. package/dist/RadioGroup/RadioGroupIndicator.js.map +1 -1
  494. package/dist/RadioGroup/RadioGroupItem.cjs +1 -1
  495. package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
  496. package/dist/RadioGroup/RadioGroupItem.js +1 -1
  497. package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
  498. package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
  499. package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
  500. package/dist/RadioGroup/utils.cjs.map +1 -1
  501. package/dist/RadioGroup/utils.js.map +1 -1
  502. package/dist/RangeCalendar/RangeCalendarCell.cjs +3 -3
  503. package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
  504. package/dist/RangeCalendar/RangeCalendarCell.js +3 -3
  505. package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
  506. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
  507. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  508. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
  509. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  510. package/dist/RangeCalendar/RangeCalendarHeading.cjs +1 -1
  511. package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
  512. package/dist/RangeCalendar/RangeCalendarHeading.js +1 -1
  513. package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
  514. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  515. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  516. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  517. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  518. package/dist/RangeCalendar/RangeCalendarRoot.cjs +32 -10
  519. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  520. package/dist/RangeCalendar/RangeCalendarRoot.js +32 -10
  521. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  522. package/dist/RangeCalendar/useRangeCalendar.cjs +26 -3
  523. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  524. package/dist/RangeCalendar/useRangeCalendar.js +26 -3
  525. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  526. package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
  527. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  528. package/dist/RovingFocus/RovingFocusGroup.js +1 -1
  529. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  530. package/dist/RovingFocus/RovingFocusItem.cjs +1 -1
  531. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  532. package/dist/RovingFocus/RovingFocusItem.js +1 -1
  533. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  534. package/dist/ScrollArea/ScrollAreaCorner.cjs.map +1 -1
  535. package/dist/ScrollArea/ScrollAreaCorner.js.map +1 -1
  536. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs +1 -1
  537. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
  538. package/dist/ScrollArea/ScrollAreaCornerImpl.js +1 -1
  539. package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
  540. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  541. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  542. package/dist/ScrollArea/ScrollAreaScrollbar.cjs +1 -1
  543. package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
  544. package/dist/ScrollArea/ScrollAreaScrollbar.js +1 -1
  545. package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
  546. package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
  547. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
  548. package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
  549. package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
  550. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  551. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  552. package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
  553. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
  554. package/dist/ScrollArea/ScrollAreaScrollbarVisible.cjs.map +1 -1
  555. package/dist/ScrollArea/ScrollAreaScrollbarVisible.js.map +1 -1
  556. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
  557. package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
  558. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
  559. package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
  560. package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
  561. package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
  562. package/dist/ScrollArea/ScrollAreaViewport.cjs +1 -1
  563. package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
  564. package/dist/ScrollArea/ScrollAreaViewport.js +1 -1
  565. package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
  566. package/dist/ScrollArea/utils.cjs.map +1 -1
  567. package/dist/ScrollArea/utils.js.map +1 -1
  568. package/dist/Select/SelectArrow.cjs +1 -1
  569. package/dist/Select/SelectArrow.cjs.map +1 -1
  570. package/dist/Select/SelectArrow.js +1 -1
  571. package/dist/Select/SelectArrow.js.map +1 -1
  572. package/dist/Select/SelectContent.cjs.map +1 -1
  573. package/dist/Select/SelectContent.js.map +1 -1
  574. package/dist/Select/SelectContentImpl.cjs +4 -4
  575. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  576. package/dist/Select/SelectContentImpl.js +4 -4
  577. package/dist/Select/SelectContentImpl.js.map +1 -1
  578. package/dist/Select/SelectItem.cjs +1 -1
  579. package/dist/Select/SelectItem.cjs.map +1 -1
  580. package/dist/Select/SelectItem.js +1 -1
  581. package/dist/Select/SelectItem.js.map +1 -1
  582. package/dist/Select/SelectItemAlignedPosition.cjs +2 -2
  583. package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
  584. package/dist/Select/SelectItemAlignedPosition.js +2 -2
  585. package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
  586. package/dist/Select/SelectItemIndicator.cjs.map +1 -1
  587. package/dist/Select/SelectItemIndicator.js.map +1 -1
  588. package/dist/Select/SelectItemText.cjs.map +1 -1
  589. package/dist/Select/SelectItemText.js.map +1 -1
  590. package/dist/Select/SelectPopperPosition.cjs +1 -1
  591. package/dist/Select/SelectPopperPosition.cjs.map +1 -1
  592. package/dist/Select/SelectPopperPosition.js +1 -1
  593. package/dist/Select/SelectPopperPosition.js.map +1 -1
  594. package/dist/Select/SelectProvider.cjs.map +1 -1
  595. package/dist/Select/SelectProvider.js.map +1 -1
  596. package/dist/Select/SelectRoot.cjs +5 -3
  597. package/dist/Select/SelectRoot.cjs.map +1 -1
  598. package/dist/Select/SelectRoot.js +5 -3
  599. package/dist/Select/SelectRoot.js.map +1 -1
  600. package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
  601. package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
  602. package/dist/Select/SelectScrollDownButton.cjs +1 -1
  603. package/dist/Select/SelectScrollDownButton.cjs.map +1 -1
  604. package/dist/Select/SelectScrollDownButton.js +1 -1
  605. package/dist/Select/SelectScrollDownButton.js.map +1 -1
  606. package/dist/Select/SelectTrigger.cjs +3 -3
  607. package/dist/Select/SelectTrigger.cjs.map +1 -1
  608. package/dist/Select/SelectTrigger.js +3 -3
  609. package/dist/Select/SelectTrigger.js.map +1 -1
  610. package/dist/Select/SelectValue.cjs +2 -1
  611. package/dist/Select/SelectValue.cjs.map +1 -1
  612. package/dist/Select/SelectValue.js +2 -1
  613. package/dist/Select/SelectValue.js.map +1 -1
  614. package/dist/Select/SelectViewport.cjs +1 -1
  615. package/dist/Select/SelectViewport.cjs.map +1 -1
  616. package/dist/Select/SelectViewport.js +1 -1
  617. package/dist/Select/SelectViewport.js.map +1 -1
  618. package/dist/Select/utils.cjs +4 -0
  619. package/dist/Select/utils.cjs.map +1 -1
  620. package/dist/Select/utils.js +4 -1
  621. package/dist/Select/utils.js.map +1 -1
  622. package/dist/Slider/SliderHorizontal.cjs +7 -4
  623. package/dist/Slider/SliderHorizontal.cjs.map +1 -1
  624. package/dist/Slider/SliderHorizontal.js +7 -4
  625. package/dist/Slider/SliderHorizontal.js.map +1 -1
  626. package/dist/Slider/SliderRange.cjs +2 -2
  627. package/dist/Slider/SliderRange.cjs.map +1 -1
  628. package/dist/Slider/SliderRange.js +2 -2
  629. package/dist/Slider/SliderRange.js.map +1 -1
  630. package/dist/Slider/SliderRoot.cjs +1 -1
  631. package/dist/Slider/SliderRoot.cjs.map +1 -1
  632. package/dist/Slider/SliderRoot.js +1 -1
  633. package/dist/Slider/SliderRoot.js.map +1 -1
  634. package/dist/Slider/SliderThumb.cjs +1 -1
  635. package/dist/Slider/SliderThumb.cjs.map +1 -1
  636. package/dist/Slider/SliderThumb.js +1 -1
  637. package/dist/Slider/SliderThumb.js.map +1 -1
  638. package/dist/Slider/SliderThumbImpl.cjs +2 -2
  639. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  640. package/dist/Slider/SliderThumbImpl.js +2 -2
  641. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  642. package/dist/Slider/SliderVertical.cjs +7 -4
  643. package/dist/Slider/SliderVertical.cjs.map +1 -1
  644. package/dist/Slider/SliderVertical.js +7 -4
  645. package/dist/Slider/SliderVertical.js.map +1 -1
  646. package/dist/Slider/utils.cjs +1 -1
  647. package/dist/Slider/utils.cjs.map +1 -1
  648. package/dist/Slider/utils.js +1 -1
  649. package/dist/Slider/utils.js.map +1 -1
  650. package/dist/Splitter/SplitterGroup.cjs +5 -5
  651. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  652. package/dist/Splitter/SplitterGroup.js +5 -5
  653. package/dist/Splitter/SplitterGroup.js.map +1 -1
  654. package/dist/Splitter/SplitterPanel.cjs +16 -10
  655. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  656. package/dist/Splitter/SplitterPanel.js +16 -10
  657. package/dist/Splitter/SplitterPanel.js.map +1 -1
  658. package/dist/Splitter/SplitterResizeHandle.cjs +1 -1
  659. package/dist/Splitter/SplitterResizeHandle.cjs.map +1 -1
  660. package/dist/Splitter/SplitterResizeHandle.js +1 -1
  661. package/dist/Splitter/SplitterResizeHandle.js.map +1 -1
  662. package/dist/Stepper/StepperDescription.cjs +1 -1
  663. package/dist/Stepper/StepperDescription.cjs.map +1 -1
  664. package/dist/Stepper/StepperDescription.js +1 -1
  665. package/dist/Stepper/StepperDescription.js.map +1 -1
  666. package/dist/Stepper/StepperIndicator.cjs.map +1 -1
  667. package/dist/Stepper/StepperIndicator.js.map +1 -1
  668. package/dist/Stepper/StepperItem.cjs.map +1 -1
  669. package/dist/Stepper/StepperItem.js.map +1 -1
  670. package/dist/Stepper/StepperRoot.cjs +30 -3
  671. package/dist/Stepper/StepperRoot.cjs.map +1 -1
  672. package/dist/Stepper/StepperRoot.js +30 -3
  673. package/dist/Stepper/StepperRoot.js.map +1 -1
  674. package/dist/Stepper/StepperSeparator.cjs.map +1 -1
  675. package/dist/Stepper/StepperSeparator.js.map +1 -1
  676. package/dist/Stepper/StepperTitle.cjs.map +1 -1
  677. package/dist/Stepper/StepperTitle.js.map +1 -1
  678. package/dist/Stepper/StepperTrigger.cjs +1 -1
  679. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  680. package/dist/Stepper/StepperTrigger.js +1 -1
  681. package/dist/Stepper/StepperTrigger.js.map +1 -1
  682. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  683. package/dist/Switch/SwitchRoot.js.map +1 -1
  684. package/dist/Switch/SwitchThumb.cjs.map +1 -1
  685. package/dist/Switch/SwitchThumb.js.map +1 -1
  686. package/dist/Tabs/TabsContent.cjs +1 -1
  687. package/dist/Tabs/TabsContent.cjs.map +1 -1
  688. package/dist/Tabs/TabsContent.js +1 -1
  689. package/dist/Tabs/TabsContent.js.map +1 -1
  690. package/dist/Tabs/TabsIndicator.cjs.map +1 -1
  691. package/dist/Tabs/TabsIndicator.js.map +1 -1
  692. package/dist/Tabs/TabsList.cjs +1 -1
  693. package/dist/Tabs/TabsList.cjs.map +1 -1
  694. package/dist/Tabs/TabsList.js +1 -1
  695. package/dist/Tabs/TabsList.js.map +1 -1
  696. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  697. package/dist/Tabs/TabsRoot.js.map +1 -1
  698. package/dist/Tabs/TabsTrigger.cjs.map +1 -1
  699. package/dist/Tabs/TabsTrigger.js.map +1 -1
  700. package/dist/TagsInput/TagsInputClear.cjs +1 -1
  701. package/dist/TagsInput/TagsInputClear.cjs.map +1 -1
  702. package/dist/TagsInput/TagsInputClear.js +1 -1
  703. package/dist/TagsInput/TagsInputClear.js.map +1 -1
  704. package/dist/TagsInput/TagsInputInput.cjs +2 -1
  705. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  706. package/dist/TagsInput/TagsInputInput.js +2 -1
  707. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  708. package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
  709. package/dist/TagsInput/TagsInputItem.js.map +1 -1
  710. package/dist/TagsInput/TagsInputItemDelete.cjs +1 -1
  711. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  712. package/dist/TagsInput/TagsInputItemDelete.js +1 -1
  713. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  714. package/dist/TagsInput/TagsInputItemText.cjs +1 -1
  715. package/dist/TagsInput/TagsInputItemText.cjs.map +1 -1
  716. package/dist/TagsInput/TagsInputItemText.js +1 -1
  717. package/dist/TagsInput/TagsInputItemText.js.map +1 -1
  718. package/dist/TagsInput/TagsInputRoot.cjs +1 -1
  719. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  720. package/dist/TagsInput/TagsInputRoot.js +1 -1
  721. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  722. package/dist/TimeField/TimeFieldInput.cjs +1 -0
  723. package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
  724. package/dist/TimeField/TimeFieldInput.js +1 -0
  725. package/dist/TimeField/TimeFieldInput.js.map +1 -1
  726. package/dist/TimeField/TimeFieldRoot.cjs +12 -3
  727. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  728. package/dist/TimeField/TimeFieldRoot.js +12 -3
  729. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  730. package/dist/Toast/ToastAnnounce.cjs +1 -1
  731. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  732. package/dist/Toast/ToastAnnounce.js +1 -1
  733. package/dist/Toast/ToastAnnounce.js.map +1 -1
  734. package/dist/Toast/ToastProvider.cjs.map +1 -1
  735. package/dist/Toast/ToastProvider.js.map +1 -1
  736. package/dist/Toast/ToastRoot.cjs +28 -20
  737. package/dist/Toast/ToastRoot.cjs.map +1 -1
  738. package/dist/Toast/ToastRoot.js +28 -20
  739. package/dist/Toast/ToastRoot.js.map +1 -1
  740. package/dist/Toast/ToastRootImpl.cjs +2 -2
  741. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  742. package/dist/Toast/ToastRootImpl.js +2 -2
  743. package/dist/Toast/ToastRootImpl.js.map +1 -1
  744. package/dist/Toast/ToastViewport.cjs +2 -2
  745. package/dist/Toast/ToastViewport.cjs.map +1 -1
  746. package/dist/Toast/ToastViewport.js +2 -2
  747. package/dist/Toast/ToastViewport.js.map +1 -1
  748. package/dist/Toggle/Toggle.cjs.map +1 -1
  749. package/dist/Toggle/Toggle.js.map +1 -1
  750. package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  751. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  752. package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
  753. package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
  754. package/dist/Toolbar/ToolbarSeparator.cjs +1 -1
  755. package/dist/Toolbar/ToolbarSeparator.js +1 -1
  756. package/dist/Toolbar/ToolbarToggleGroup.cjs +1 -1
  757. package/dist/Toolbar/ToolbarToggleGroup.cjs.map +1 -1
  758. package/dist/Toolbar/ToolbarToggleGroup.js +1 -1
  759. package/dist/Toolbar/ToolbarToggleGroup.js.map +1 -1
  760. package/dist/Toolbar/ToolbarToggleItem.cjs.map +1 -1
  761. package/dist/Toolbar/ToolbarToggleItem.js.map +1 -1
  762. package/dist/Tooltip/TooltipContent.cjs +1 -1
  763. package/dist/Tooltip/TooltipContent.cjs.map +1 -1
  764. package/dist/Tooltip/TooltipContent.js +1 -1
  765. package/dist/Tooltip/TooltipContent.js.map +1 -1
  766. package/dist/Tooltip/TooltipContentHoverable.cjs.map +1 -1
  767. package/dist/Tooltip/TooltipContentHoverable.js.map +1 -1
  768. package/dist/Tooltip/TooltipContentImpl.cjs +3 -3
  769. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  770. package/dist/Tooltip/TooltipContentImpl.js +3 -3
  771. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  772. package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
  773. package/dist/Tooltip/TooltipRoot.js.map +1 -1
  774. package/dist/Tooltip/TooltipTrigger.cjs +4 -1
  775. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  776. package/dist/Tooltip/TooltipTrigger.js +4 -1
  777. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  778. package/dist/Tree/TreeItem.cjs +4 -1
  779. package/dist/Tree/TreeItem.cjs.map +1 -1
  780. package/dist/Tree/TreeItem.js +4 -1
  781. package/dist/Tree/TreeItem.js.map +1 -1
  782. package/dist/Tree/TreeRoot.cjs +28 -2
  783. package/dist/Tree/TreeRoot.cjs.map +1 -1
  784. package/dist/Tree/TreeRoot.js +28 -2
  785. package/dist/Tree/TreeRoot.js.map +1 -1
  786. package/dist/Tree/TreeVirtualizer.cjs +2 -2
  787. package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
  788. package/dist/Tree/TreeVirtualizer.js +2 -2
  789. package/dist/Tree/TreeVirtualizer.js.map +1 -1
  790. package/dist/Tree/utils.cjs.map +1 -1
  791. package/dist/Tree/utils.js.map +1 -1
  792. package/dist/Viewport/Viewport.cjs.map +1 -1
  793. package/dist/Viewport/Viewport.js.map +1 -1
  794. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs.map +1 -1
  795. package/dist/VisuallyHidden/VisuallyHiddenInput.js.map +1 -1
  796. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
  797. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
  798. package/dist/composables/useWindowSplitterBehavior.cjs.map +1 -1
  799. package/dist/composables/useWindowSplitterBehavior.js.map +1 -1
  800. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs +3 -3
  801. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs.map +1 -1
  802. package/dist/composables/useWindowSplitterPanelGroupBehavior.js +3 -3
  803. package/dist/composables/useWindowSplitterPanelGroupBehavior.js.map +1 -1
  804. package/dist/date/calendar.cjs +1 -1
  805. package/dist/date/calendar.cjs.map +1 -1
  806. package/dist/date/calendar.js +1 -1
  807. package/dist/date/calendar.js.map +1 -1
  808. package/dist/date/comparators.cjs +6 -4
  809. package/dist/date/comparators.cjs.map +1 -1
  810. package/dist/date/comparators.js +6 -4
  811. package/dist/date/comparators.js.map +1 -1
  812. package/dist/date/parser.cjs +22 -7
  813. package/dist/date/parser.cjs.map +1 -1
  814. package/dist/date/parser.js +23 -8
  815. package/dist/date/parser.js.map +1 -1
  816. package/dist/date/useDateField.cjs +21 -6
  817. package/dist/date/useDateField.cjs.map +1 -1
  818. package/dist/date/useDateField.js +21 -6
  819. package/dist/date/useDateField.js.map +1 -1
  820. package/dist/date/utils.cjs +37 -8
  821. package/dist/date/utils.cjs.map +1 -1
  822. package/dist/date/utils.js +36 -9
  823. package/dist/date/utils.js.map +1 -1
  824. package/dist/date.d.ts +2 -2
  825. package/dist/index.cjs +347 -347
  826. package/dist/index.cjs.map +1 -1
  827. package/dist/index.d.ts +1558 -1552
  828. package/dist/index.js +161 -161
  829. package/dist/index.js.map +1 -1
  830. package/dist/shared/createContext.cjs.map +1 -1
  831. package/dist/shared/createContext.js.map +1 -1
  832. package/dist/shared/renderSlotFragments.cjs.map +1 -1
  833. package/dist/shared/renderSlotFragments.js.map +1 -1
  834. package/dist/shared/useArrowNavigation.cjs.map +1 -1
  835. package/dist/shared/useArrowNavigation.js.map +1 -1
  836. package/dist/shared/useBodyScrollLock.cjs +3 -3
  837. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  838. package/dist/shared/useBodyScrollLock.js +3 -3
  839. package/dist/shared/useBodyScrollLock.js.map +1 -1
  840. package/dist/shared/useDateFormatter.cjs +12 -10
  841. package/dist/shared/useDateFormatter.cjs.map +1 -1
  842. package/dist/shared/useDateFormatter.js +12 -10
  843. package/dist/shared/useDateFormatter.js.map +1 -1
  844. package/dist/shared/useDirection.cjs.map +1 -1
  845. package/dist/shared/useDirection.js.map +1 -1
  846. package/dist/shared/useFilter.cjs.map +1 -1
  847. package/dist/shared/useFilter.js.map +1 -1
  848. package/dist/shared/useFormControl.cjs.map +1 -1
  849. package/dist/shared/useFormControl.js.map +1 -1
  850. package/dist/shared/useForwardExpose.cjs.map +1 -1
  851. package/dist/shared/useForwardExpose.js.map +1 -1
  852. package/dist/shared/useForwardProps.cjs +4 -2
  853. package/dist/shared/useForwardProps.cjs.map +1 -1
  854. package/dist/shared/useForwardProps.js +5 -3
  855. package/dist/shared/useForwardProps.js.map +1 -1
  856. package/dist/shared/useForwardPropsEmits.cjs.map +1 -1
  857. package/dist/shared/useForwardPropsEmits.js.map +1 -1
  858. package/dist/shared/useGraceArea.cjs +1 -1
  859. package/dist/shared/useGraceArea.cjs.map +1 -1
  860. package/dist/shared/useGraceArea.js +1 -1
  861. package/dist/shared/useGraceArea.js.map +1 -1
  862. package/dist/shared/useHideOthers.cjs.map +1 -1
  863. package/dist/shared/useHideOthers.js.map +1 -1
  864. package/dist/shared/useId.cjs +2 -2
  865. package/dist/shared/useId.cjs.map +1 -1
  866. package/dist/shared/useId.js +2 -2
  867. package/dist/shared/useId.js.map +1 -1
  868. package/dist/shared/useLocale.cjs.map +1 -1
  869. package/dist/shared/useLocale.js.map +1 -1
  870. package/dist/shared/useNonce.cjs.map +1 -1
  871. package/dist/shared/useNonce.js.map +1 -1
  872. package/dist/shared/useSelectionBehavior.cjs +2 -2
  873. package/dist/shared/useSelectionBehavior.cjs.map +1 -1
  874. package/dist/shared/useSelectionBehavior.js +2 -2
  875. package/dist/shared/useSelectionBehavior.js.map +1 -1
  876. package/dist/shared/useSingleOrMultipleValue.cjs +1 -1
  877. package/dist/shared/useSingleOrMultipleValue.cjs.map +1 -1
  878. package/dist/shared/useSingleOrMultipleValue.js +1 -1
  879. package/dist/shared/useSingleOrMultipleValue.js.map +1 -1
  880. package/dist/shared/useSize.cjs.map +1 -1
  881. package/dist/shared/useSize.js.map +1 -1
  882. package/dist/shared/useStateMachine.cjs.map +1 -1
  883. package/dist/shared/useStateMachine.js.map +1 -1
  884. package/dist/shared/withDefault.cjs.map +1 -1
  885. package/dist/shared/withDefault.js.map +1 -1
  886. package/dist/utils/calculate.cjs +1 -1
  887. package/dist/utils/calculate.cjs.map +1 -1
  888. package/dist/utils/calculate.js +1 -1
  889. package/dist/utils/calculate.js.map +1 -1
  890. package/dist/utils/dom.cjs.map +1 -1
  891. package/dist/utils/dom.js.map +1 -1
  892. package/dist/utils/registry.cjs +1 -1
  893. package/dist/utils/registry.cjs.map +1 -1
  894. package/dist/utils/registry.js +1 -1
  895. package/dist/utils/registry.js.map +1 -1
  896. package/dist/utils/resizePanel.cjs +1 -1
  897. package/dist/utils/resizePanel.cjs.map +1 -1
  898. package/dist/utils/resizePanel.js +1 -1
  899. package/dist/utils/resizePanel.js.map +1 -1
  900. package/dist/utils/style.cjs.map +1 -1
  901. package/dist/utils/style.js.map +1 -1
  902. package/package.json +7 -8
@@ -1 +1 @@
1
- {"version":3,"file":"EditablePreview.cjs","sources":["../../src/Editable/EditablePreview.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { injectEditableRootContext } from './EditableRoot.vue'\nimport { computed } from 'vue'\n\nexport interface EditablePreviewProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<EditablePreviewProps>(), { as: 'span' })\n\nconst context = injectEditableRootContext()\n\nconst placeholder = computed(() => context.placeholder.value?.preview)\n\nfunction handleFocus() {\n if (context.activationMode.value === 'focus')\n context.edit()\n}\nfunction handleDoubleClick() {\n if (context.activationMode.value === 'dblclick')\n context.edit()\n}\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n tabindex=\"0\"\n :data-placeholder-shown=\"context.isEditing.value ? undefined : ''\"\n :hidden=\"context.autoResize.value ? undefined : context.isEditing.value\"\n :style=\"context.autoResize.value ? {\n whiteSpace: 'pre',\n userSelect: 'none',\n gridArea: '1 / 1 / auto / auto',\n visibility: context.isEditing.value ? 'hidden' : undefined,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n } : undefined\"\n @focusin=\"handleFocus\"\n @dblclick=\"handleDoubleClick\"\n >\n <slot>\n {{ context.modelValue.value || placeholder }}\n </slot>\n </Primitive>\n</template>\n"],"names":["injectEditableRootContext","computed"],"mappings":";;;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,UAAUA,+CAA0B,EAAA;AAE1C,IAAA,MAAM,cAAcC,YAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,OAAO,CAAA;AAErE,IAAA,SAAS,WAAc,GAAA;AACrB,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,OAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;AAEjB,IAAA,SAAS,iBAAoB,GAAA;AAC3B,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,UAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EditablePreview.cjs","sources":["../../src/Editable/EditablePreview.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { computed } from 'vue'\nimport { injectEditableRootContext } from './EditableRoot.vue'\n\nexport interface EditablePreviewProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<EditablePreviewProps>(), { as: 'span' })\n\nconst context = injectEditableRootContext()\n\nconst placeholder = computed(() => context.placeholder.value?.preview)\n\nfunction handleFocus() {\n if (context.activationMode.value === 'focus')\n context.edit()\n}\nfunction handleDoubleClick() {\n if (context.activationMode.value === 'dblclick')\n context.edit()\n}\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n tabindex=\"0\"\n :data-placeholder-shown=\"context.isEditing.value ? undefined : ''\"\n :hidden=\"context.autoResize.value ? undefined : context.isEditing.value\"\n :style=\"context.autoResize.value ? {\n whiteSpace: 'pre',\n userSelect: 'none',\n gridArea: '1 / 1 / auto / auto',\n visibility: context.isEditing.value ? 'hidden' : undefined,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n } : undefined\"\n @focusin=\"handleFocus\"\n @dblclick=\"handleDoubleClick\"\n >\n <slot>\n {{ context.modelValue.value || placeholder }}\n </slot>\n </Primitive>\n</template>\n"],"names":["injectEditableRootContext","computed"],"mappings":";;;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,UAAUA,+CAA0B,EAAA;AAE1C,IAAA,MAAM,cAAcC,YAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,OAAO,CAAA;AAErE,IAAA,SAAS,WAAc,GAAA;AACrB,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,OAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;AAEjB,IAAA,SAAS,iBAAoB,GAAA;AAC3B,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,UAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditablePreview.js","sources":["../../src/Editable/EditablePreview.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { injectEditableRootContext } from './EditableRoot.vue'\nimport { computed } from 'vue'\n\nexport interface EditablePreviewProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<EditablePreviewProps>(), { as: 'span' })\n\nconst context = injectEditableRootContext()\n\nconst placeholder = computed(() => context.placeholder.value?.preview)\n\nfunction handleFocus() {\n if (context.activationMode.value === 'focus')\n context.edit()\n}\nfunction handleDoubleClick() {\n if (context.activationMode.value === 'dblclick')\n context.edit()\n}\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n tabindex=\"0\"\n :data-placeholder-shown=\"context.isEditing.value ? undefined : ''\"\n :hidden=\"context.autoResize.value ? undefined : context.isEditing.value\"\n :style=\"context.autoResize.value ? {\n whiteSpace: 'pre',\n userSelect: 'none',\n gridArea: '1 / 1 / auto / auto',\n visibility: context.isEditing.value ? 'hidden' : undefined,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n } : undefined\"\n @focusin=\"handleFocus\"\n @dblclick=\"handleDoubleClick\"\n >\n <slot>\n {{ context.modelValue.value || placeholder }}\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,UAAU,yBAA0B,EAAA;AAE1C,IAAA,MAAM,cAAc,QAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,OAAO,CAAA;AAErE,IAAA,SAAS,WAAc,GAAA;AACrB,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,OAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;AAEjB,IAAA,SAAS,iBAAoB,GAAA;AAC3B,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,UAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EditablePreview.js","sources":["../../src/Editable/EditablePreview.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { computed } from 'vue'\nimport { injectEditableRootContext } from './EditableRoot.vue'\n\nexport interface EditablePreviewProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<EditablePreviewProps>(), { as: 'span' })\n\nconst context = injectEditableRootContext()\n\nconst placeholder = computed(() => context.placeholder.value?.preview)\n\nfunction handleFocus() {\n if (context.activationMode.value === 'focus')\n context.edit()\n}\nfunction handleDoubleClick() {\n if (context.activationMode.value === 'dblclick')\n context.edit()\n}\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n tabindex=\"0\"\n :data-placeholder-shown=\"context.isEditing.value ? undefined : ''\"\n :hidden=\"context.autoResize.value ? undefined : context.isEditing.value\"\n :style=\"context.autoResize.value ? {\n whiteSpace: 'pre',\n userSelect: 'none',\n gridArea: '1 / 1 / auto / auto',\n visibility: context.isEditing.value ? 'hidden' : undefined,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n } : undefined\"\n @focusin=\"handleFocus\"\n @dblclick=\"handleDoubleClick\"\n >\n <slot>\n {{ context.modelValue.value || placeholder }}\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,UAAU,yBAA0B,EAAA;AAE1C,IAAA,MAAM,cAAc,QAAS,CAAA,MAAM,OAAQ,CAAA,WAAA,CAAY,OAAO,OAAO,CAAA;AAErE,IAAA,SAAS,WAAc,GAAA;AACrB,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,OAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,EAAA;AAAA;AAEjB,IAAA,SAAS,iBAAoB,GAAA;AAC3B,MAAI,IAAA,OAAA,CAAQ,eAAe,KAAU,KAAA,UAAA;AACnC,QAAA,OAAA,CAAQ,IAAK,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 { createContext, useDirection, useFormControl } from '@/shared'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { useFocusOutside, usePointerDownOutside } from '@/DismissableLayer'\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, computed, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\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)\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({
@@ -1 +1 @@
1
- {"version":3,"file":"EditableRoot.js","sources":["../../src/Editable/EditableRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useDirection, useFormControl } from '@/shared'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { useFocusOutside, usePointerDownOutside } from '@/DismissableLayer'\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, computed, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\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)\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":[],"mappings":"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"}
1
+ {"version":3,"file":"EditableRoot.js","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":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  const vue = require('vue');
4
4
  const shared = require('@vueuse/shared');
5
- const FocusScope_utils = require('./utils.cjs');
6
5
  const FocusScope_stack = require('./stack.cjs');
6
+ const FocusScope_utils = require('./utils.cjs');
7
7
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
8
8
  const shared_getActiveElement = require('../shared/getActiveElement.cjs');
9
9
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"FocusScope.cjs","sources":["../../src/FocusScope/FocusScope.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { getActiveElement, useForwardExpose } from '@/shared'\n\nexport type FocusScopeEmits = {\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n mountAutoFocus: [event: Event]\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n unmountAutoFocus: [event: Event]\n}\n\nexport interface FocusScopeProps extends PrimitiveProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, reactive, ref, watchEffect } from 'vue'\nimport { isClient } from '@vueuse/shared'\nimport {\n AUTOFOCUS_ON_MOUNT,\n AUTOFOCUS_ON_UNMOUNT,\n EVENT_OPTIONS,\n focus,\n focusFirst,\n getTabbableCandidates,\n getTabbableEdges,\n} from './utils'\nimport { createFocusScopesStack, removeLinks } from './stack'\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<FocusScopeProps>(), {\n loop: false,\n trapped: false,\n})\nconst emits = defineEmits<FocusScopeEmits>()\n\nconst { currentRef, currentElement } = useForwardExpose()\nconst lastFocusedElementRef = ref<HTMLElement | null>(null)\nconst focusScopesStack = createFocusScopesStack()\n\nconst focusScope = reactive({\n paused: false,\n pause() {\n this.paused = true\n },\n resume() {\n this.paused = false\n },\n})\n\nwatchEffect((cleanupFn) => {\n if (!isClient)\n return\n const container = currentElement.value\n if (!props.trapped)\n return\n\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const target = event.target as HTMLElement | null\n if (container.contains(target))\n lastFocusedElementRef.value = target\n else focus(lastFocusedElementRef.value, { select: true })\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const relatedTarget = event.relatedTarget as HTMLElement | null\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null)\n return\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget))\n focus(lastFocusedElementRef.value, { select: true })\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n // -- related: https://github.com/unovue/reka-ui/issues/518\n // Reka UI tentative solution:\n // instead of leaning on document.activeElement, we use lastFocusedElementRef.value to check\n // if the element still exist inside the container,\n // if not then we focus to the container\n function handleMutations(mutations: MutationRecord[]) {\n const isLastFocusedElementExist = container.contains(lastFocusedElementRef.value)\n if (!isLastFocusedElementExist)\n focus(container)\n }\n\n document.addEventListener('focusin', handleFocusIn)\n document.addEventListener('focusout', handleFocusOut)\n const mutationObserver = new MutationObserver(handleMutations)\n if (container)\n mutationObserver.observe(container, { childList: true, subtree: true })\n\n cleanupFn(() => {\n document.removeEventListener('focusin', handleFocusIn)\n document.removeEventListener('focusout', handleFocusOut)\n mutationObserver.disconnect()\n })\n})\n\nwatchEffect(async (cleanupFn) => {\n const container = currentElement.value\n\n await nextTick()\n if (!container)\n return\n focusScopesStack.add(focusScope)\n const previouslyFocusedElement = getActiveElement() as HTMLElement | null\n const hasFocusedCandidate = container.contains(previouslyFocusedElement)\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS)\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n container.dispatchEvent(mountEvent)\n\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true,\n })\n if (getActiveElement() === previouslyFocusedElement)\n focus(container)\n }\n }\n\n cleanupFn(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS)\n const unmountEventHandler = (ev: Event) => {\n emits('unmountAutoFocus', ev)\n }\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n container.dispatchEvent(unmountEvent)\n\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true })\n\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n\n focusScopesStack.remove(focusScope)\n }, 0)\n })\n})\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (!props.loop && !props.trapped)\n return\n if (focusScope.paused)\n return\n\n const isTabKey\n = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey\n const focusedElement = getActiveElement() as HTMLElement | null\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement\n const [first, last] = getTabbableEdges(container)\n const hasTabbableElementsInside = first && last\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container)\n event.preventDefault()\n }\n else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault()\n if (props.loop)\n focus(first, { select: true })\n }\n else if (event.shiftKey && focusedElement === first) {\n event.preventDefault()\n if (props.loop)\n focus(last, { select: true })\n }\n }\n }\n}\n</script>\n\n<template>\n <Primitive\n ref=\"currentRef\"\n tabindex=\"-1\"\n :as-child=\"asChild\"\n :as=\"as\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","ref","createFocusScopesStack","reactive","watchEffect","isClient","focus","nextTick","getActiveElement","AUTOFOCUS_ON_MOUNT","EVENT_OPTIONS","focusFirst","removeLinks","getTabbableCandidates","AUTOFOCUS_ON_UNMOUNT","getTabbableEdges"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkDA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAM,MAAA,qBAAA,GAAwBC,QAAwB,IAAI,CAAA;AAC1D,IAAA,MAAM,mBAAmBC,uCAAuB,EAAA;AAEhD,IAAA,MAAM,aAAaC,YAAS,CAAA;AAAA,MAC1B,MAAQ,EAAA,KAAA;AAAA,MACR,KAAQ,GAAA;AACN,QAAA,IAAA,CAAK,MAAS,GAAA,IAAA;AAAA,OAChB;AAAA,MACA,MAAS,GAAA;AACP,QAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB,KACD,CAAA;AAED,IAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,CAACC,eAAA;AACH,QAAA;AACF,MAAA,MAAM,YAAY,cAAe,CAAA,KAAA;AACjC,MAAA,IAAI,CAAC,KAAM,CAAA,OAAA;AACT,QAAA;AAEF,MAAA,SAAS,cAAc,KAAmB,EAAA;AACxC,QAAI,IAAA,UAAA,CAAW,UAAU,CAAC,SAAA;AACxB,UAAA;AACF,QAAA,MAAM,SAAS,KAAM,CAAA,MAAA;AACrB,QAAI,IAAA,SAAA,CAAU,SAAS,MAAM,CAAA;AAC3B,UAAA,qBAAA,CAAsB,KAAQ,GAAA,MAAA;AAAA,oCACrB,qBAAsB,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA;AAG1D,MAAA,SAAS,eAAe,KAAmB,EAAA;AACzC,QAAI,IAAA,UAAA,CAAW,UAAU,CAAC,SAAA;AACxB,UAAA;AACF,QAAA,MAAM,gBAAgB,KAAM,CAAA,aAAA;AAY5B,QAAA,IAAI,aAAkB,KAAA,IAAA;AACpB,UAAA;AAIF,QAAI,IAAA,CAAC,SAAU,CAAA,QAAA,CAAS,aAAa,CAAA;AACnC,UAAAC,sBAAA,CAAM,qBAAsB,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA;AAWvD,MAAA,SAAS,gBAAgB,SAA6B,EAAA;AACpD,QAAA,MAAM,yBAA4B,GAAA,SAAA,CAAU,QAAS,CAAA,qBAAA,CAAsB,KAAK,CAAA;AAChF,QAAA,IAAI,CAAC,yBAAA;AACH,UAAAA,sBAAA,CAAM,SAAS,CAAA;AAAA;AAGnB,MAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,MAAS,QAAA,CAAA,gBAAA,CAAiB,YAAY,cAAc,CAAA;AACpD,MAAM,MAAA,gBAAA,GAAmB,IAAI,gBAAA,CAAiB,eAAe,CAAA;AAC7D,MAAI,IAAA,SAAA;AACF,QAAA,gBAAA,CAAiB,QAAQ,SAAW,EAAA,EAAE,WAAW,IAAM,EAAA,OAAA,EAAS,MAAM,CAAA;AAExE,MAAA,SAAA,CAAU,MAAM;AACd,QAAS,QAAA,CAAA,mBAAA,CAAoB,WAAW,aAAa,CAAA;AACrD,QAAS,QAAA,CAAA,mBAAA,CAAoB,YAAY,cAAc,CAAA;AACvD,QAAA,gBAAA,CAAiB,UAAW,EAAA;AAAA,OAC7B,CAAA;AAAA,KACF,CAAA;AAED,IAAAF,eAAA,CAAY,OAAO,SAAc,KAAA;AAC/B,MAAA,MAAM,YAAY,cAAe,CAAA,KAAA;AAEjC,MAAA,MAAMG,YAAS,EAAA;AACf,MAAA,IAAI,CAAC,SAAA;AACH,QAAA;AACF,MAAA,gBAAA,CAAiB,IAAI,UAAU,CAAA;AAC/B,MAAA,MAAM,2BAA2BC,wCAAiB,EAAA;AAClD,MAAM,MAAA,mBAAA,GAAsB,SAAU,CAAA,QAAA,CAAS,wBAAwB,CAAA;AAEvE,MAAA,IAAI,CAAC,mBAAqB,EAAA;AACxB,QAAA,MAAM,UAAa,GAAA,IAAI,WAAY,CAAAC,mCAAA,EAAoBC,8BAAa,CAAA;AACpE,QAAA,SAAA,CAAU,iBAAiBD,mCAAoB,EAAA,CAAC,OAC9C,KAAM,CAAA,gBAAA,EAAkB,EAAE,CAAC,CAAA;AAC7B,QAAA,SAAA,CAAU,cAAc,UAAU,CAAA;AAElC,QAAI,IAAA,CAAC,WAAW,gBAAkB,EAAA;AAChC,UAAAE,2BAAA,CAAWC,4BAAY,CAAAC,sCAAA,CAAsB,SAAS,CAAC,CAAG,EAAA;AAAA,YACxD,MAAQ,EAAA;AAAA,WACT,CAAA;AACD,UAAA,IAAIL,0CAAuB,KAAA,wBAAA;AACzB,YAAAF,sBAAA,CAAM,SAAS,CAAA;AAAA;AACnB;AAGF,MAAA,SAAA,CAAU,MAAM;AACd,QAAA,SAAA,CAAU,oBAAoBG,mCAAoB,EAAA,CAAC,OACjD,KAAM,CAAA,gBAAA,EAAkB,EAAE,CAAC,CAAA;AAE7B,QAAA,MAAM,YAAe,GAAA,IAAI,WAAY,CAAAK,qCAAA,EAAsBJ,8BAAa,CAAA;AACxE,QAAM,MAAA,mBAAA,GAAsB,CAAC,EAAc,KAAA;AACzC,UAAA,KAAA,CAAM,oBAAoB,EAAE,CAAA;AAAA,SAC9B;AACA,QAAU,SAAA,CAAA,gBAAA,CAAiBI,uCAAsB,mBAAmB,CAAA;AACpE,QAAA,SAAA,CAAU,cAAc,YAAY,CAAA;AAEpC,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,CAAC,YAAa,CAAA,gBAAA;AAChB,YAAAR,sBAAA,CAAM,4BAA4B,QAAS,CAAA,IAAA,EAAM,EAAE,MAAA,EAAQ,MAAM,CAAA;AAGnE,UAAU,SAAA,CAAA,mBAAA,CAAoBQ,uCAAsB,mBAAmB,CAAA;AAEvE,UAAA,gBAAA,CAAiB,OAAO,UAAU,CAAA;AAAA,WACjC,CAAC,CAAA;AAAA,OACL,CAAA;AAAA,KACF,CAAA;AAED,IAAA,SAAS,cAAc,KAAsB,EAAA;AAC3C,MAAA,IAAI,CAAC,KAAA,CAAM,IAAQ,IAAA,CAAC,KAAM,CAAA,OAAA;AACxB,QAAA;AACF,MAAA,IAAI,UAAW,CAAA,MAAA;AACb,QAAA;AAEF,MAAM,MAAA,QAAA,GACF,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,CAAC,KAAM,CAAA,MAAA,IAAU,CAAC,KAAA,CAAM,OAAW,IAAA,CAAC,KAAM,CAAA,OAAA;AACrE,MAAA,MAAM,iBAAiBN,wCAAiB,EAAA;AAExC,MAAA,IAAI,YAAY,cAAgB,EAAA;AAC9B,QAAA,MAAM,YAAY,KAAM,CAAA,aAAA;AACxB,QAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAIO,kCAAiB,SAAS,CAAA;AAChD,QAAA,MAAM,4BAA4B,KAAS,IAAA,IAAA;AAG3C,QAAA,IAAI,CAAC,yBAA2B,EAAA;AAC9B,UAAA,IAAI,cAAmB,KAAA,SAAA;AACrB,YAAA,KAAA,CAAM,cAAe,EAAA;AAAA,SAEpB,MAAA;AACH,UAAA,IAAI,CAAC,KAAA,CAAM,QAAY,IAAA,cAAA,KAAmB,IAAM,EAAA;AAC9C,YAAA,KAAA,CAAM,cAAe,EAAA;AACrB,YAAA,IAAI,KAAM,CAAA,IAAA;AACR,cAAAT,sBAAA,CAAM,KAAO,EAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAA;AAAA,WAExB,MAAA,IAAA,KAAA,CAAM,QAAY,IAAA,cAAA,KAAmB,KAAO,EAAA;AACnD,YAAA,KAAA,CAAM,cAAe,EAAA;AACrB,YAAA,IAAI,KAAM,CAAA,IAAA;AACR,cAAAA,sBAAA,CAAM,IAAM,EAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAA;AAAA;AAChC;AACF;AACF;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FocusScope.cjs","sources":["../../src/FocusScope/FocusScope.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { getActiveElement, useForwardExpose } from '@/shared'\n\nexport type FocusScopeEmits = {\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n mountAutoFocus: [event: Event]\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n unmountAutoFocus: [event: Event]\n}\n\nexport interface FocusScopeProps extends PrimitiveProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isClient } from '@vueuse/shared'\nimport { nextTick, reactive, ref, watchEffect } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createFocusScopesStack, removeLinks } from './stack'\nimport {\n AUTOFOCUS_ON_MOUNT,\n AUTOFOCUS_ON_UNMOUNT,\n EVENT_OPTIONS,\n focus,\n focusFirst,\n getTabbableCandidates,\n getTabbableEdges,\n} from './utils'\n\nconst props = withDefaults(defineProps<FocusScopeProps>(), {\n loop: false,\n trapped: false,\n})\nconst emits = defineEmits<FocusScopeEmits>()\n\nconst { currentRef, currentElement } = useForwardExpose()\nconst lastFocusedElementRef = ref<HTMLElement | null>(null)\nconst focusScopesStack = createFocusScopesStack()\n\nconst focusScope = reactive({\n paused: false,\n pause() {\n this.paused = true\n },\n resume() {\n this.paused = false\n },\n})\n\nwatchEffect((cleanupFn) => {\n if (!isClient)\n return\n const container = currentElement.value\n if (!props.trapped)\n return\n\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const target = event.target as HTMLElement | null\n if (container.contains(target))\n lastFocusedElementRef.value = target\n else focus(lastFocusedElementRef.value, { select: true })\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const relatedTarget = event.relatedTarget as HTMLElement | null\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null)\n return\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget))\n focus(lastFocusedElementRef.value, { select: true })\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n // -- related: https://github.com/unovue/reka-ui/issues/518\n // Reka UI tentative solution:\n // instead of leaning on document.activeElement, we use lastFocusedElementRef.value to check\n // if the element still exist inside the container,\n // if not then we focus to the container\n function handleMutations(mutations: MutationRecord[]) {\n const isLastFocusedElementExist = container.contains(lastFocusedElementRef.value)\n if (!isLastFocusedElementExist)\n focus(container)\n }\n\n document.addEventListener('focusin', handleFocusIn)\n document.addEventListener('focusout', handleFocusOut)\n const mutationObserver = new MutationObserver(handleMutations)\n if (container)\n mutationObserver.observe(container, { childList: true, subtree: true })\n\n cleanupFn(() => {\n document.removeEventListener('focusin', handleFocusIn)\n document.removeEventListener('focusout', handleFocusOut)\n mutationObserver.disconnect()\n })\n})\n\nwatchEffect(async (cleanupFn) => {\n const container = currentElement.value\n\n await nextTick()\n if (!container)\n return\n focusScopesStack.add(focusScope)\n const previouslyFocusedElement = getActiveElement() as HTMLElement | null\n const hasFocusedCandidate = container.contains(previouslyFocusedElement)\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS)\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n container.dispatchEvent(mountEvent)\n\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true,\n })\n if (getActiveElement() === previouslyFocusedElement)\n focus(container)\n }\n }\n\n cleanupFn(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS)\n const unmountEventHandler = (ev: Event) => {\n emits('unmountAutoFocus', ev)\n }\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n container.dispatchEvent(unmountEvent)\n\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true })\n\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n\n focusScopesStack.remove(focusScope)\n }, 0)\n })\n})\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (!props.loop && !props.trapped)\n return\n if (focusScope.paused)\n return\n\n const isTabKey\n = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey\n const focusedElement = getActiveElement() as HTMLElement | null\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement\n const [first, last] = getTabbableEdges(container)\n const hasTabbableElementsInside = first && last\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container)\n event.preventDefault()\n }\n else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault()\n if (props.loop)\n focus(first, { select: true })\n }\n else if (event.shiftKey && focusedElement === first) {\n event.preventDefault()\n if (props.loop)\n focus(last, { select: true })\n }\n }\n }\n}\n</script>\n\n<template>\n <Primitive\n ref=\"currentRef\"\n tabindex=\"-1\"\n :as-child=\"asChild\"\n :as=\"as\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["useForwardExpose","ref","createFocusScopesStack","reactive","watchEffect","isClient","focus","nextTick","getActiveElement","AUTOFOCUS_ON_MOUNT","EVENT_OPTIONS","focusFirst","removeLinks","getTabbableCandidates","AUTOFOCUS_ON_UNMOUNT","getTabbableEdges"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, reactive, watchEffect, nextTick, createBlock, openBlock, unref, withCtx, renderSlot } from 'vue';
2
2
  import { isClient } from '@vueuse/shared';
3
- import { A as AUTOFOCUS_ON_MOUNT, f as focusFirst, g as getTabbableCandidates, a as focus, b as AUTOFOCUS_ON_UNMOUNT, E as EVENT_OPTIONS, c as getTabbableEdges } from './utils.js';
4
3
  import { c as createFocusScopesStack, r as removeLinks } from './stack.js';
4
+ import { A as AUTOFOCUS_ON_MOUNT, f as focusFirst, g as getTabbableCandidates, a as focus, b as AUTOFOCUS_ON_UNMOUNT, E as EVENT_OPTIONS, c as getTabbableEdges } from './utils.js';
5
5
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
6
6
  import { g as getActiveElement } from '../shared/getActiveElement.js';
7
7
  import { P as Primitive } from '../Primitive/Primitive.js';
@@ -1 +1 @@
1
- {"version":3,"file":"FocusScope.js","sources":["../../src/FocusScope/FocusScope.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { getActiveElement, useForwardExpose } from '@/shared'\n\nexport type FocusScopeEmits = {\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n mountAutoFocus: [event: Event]\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n unmountAutoFocus: [event: Event]\n}\n\nexport interface FocusScopeProps extends PrimitiveProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, reactive, ref, watchEffect } from 'vue'\nimport { isClient } from '@vueuse/shared'\nimport {\n AUTOFOCUS_ON_MOUNT,\n AUTOFOCUS_ON_UNMOUNT,\n EVENT_OPTIONS,\n focus,\n focusFirst,\n getTabbableCandidates,\n getTabbableEdges,\n} from './utils'\nimport { createFocusScopesStack, removeLinks } from './stack'\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<FocusScopeProps>(), {\n loop: false,\n trapped: false,\n})\nconst emits = defineEmits<FocusScopeEmits>()\n\nconst { currentRef, currentElement } = useForwardExpose()\nconst lastFocusedElementRef = ref<HTMLElement | null>(null)\nconst focusScopesStack = createFocusScopesStack()\n\nconst focusScope = reactive({\n paused: false,\n pause() {\n this.paused = true\n },\n resume() {\n this.paused = false\n },\n})\n\nwatchEffect((cleanupFn) => {\n if (!isClient)\n return\n const container = currentElement.value\n if (!props.trapped)\n return\n\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const target = event.target as HTMLElement | null\n if (container.contains(target))\n lastFocusedElementRef.value = target\n else focus(lastFocusedElementRef.value, { select: true })\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const relatedTarget = event.relatedTarget as HTMLElement | null\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null)\n return\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget))\n focus(lastFocusedElementRef.value, { select: true })\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n // -- related: https://github.com/unovue/reka-ui/issues/518\n // Reka UI tentative solution:\n // instead of leaning on document.activeElement, we use lastFocusedElementRef.value to check\n // if the element still exist inside the container,\n // if not then we focus to the container\n function handleMutations(mutations: MutationRecord[]) {\n const isLastFocusedElementExist = container.contains(lastFocusedElementRef.value)\n if (!isLastFocusedElementExist)\n focus(container)\n }\n\n document.addEventListener('focusin', handleFocusIn)\n document.addEventListener('focusout', handleFocusOut)\n const mutationObserver = new MutationObserver(handleMutations)\n if (container)\n mutationObserver.observe(container, { childList: true, subtree: true })\n\n cleanupFn(() => {\n document.removeEventListener('focusin', handleFocusIn)\n document.removeEventListener('focusout', handleFocusOut)\n mutationObserver.disconnect()\n })\n})\n\nwatchEffect(async (cleanupFn) => {\n const container = currentElement.value\n\n await nextTick()\n if (!container)\n return\n focusScopesStack.add(focusScope)\n const previouslyFocusedElement = getActiveElement() as HTMLElement | null\n const hasFocusedCandidate = container.contains(previouslyFocusedElement)\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS)\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n container.dispatchEvent(mountEvent)\n\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true,\n })\n if (getActiveElement() === previouslyFocusedElement)\n focus(container)\n }\n }\n\n cleanupFn(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS)\n const unmountEventHandler = (ev: Event) => {\n emits('unmountAutoFocus', ev)\n }\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n container.dispatchEvent(unmountEvent)\n\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true })\n\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n\n focusScopesStack.remove(focusScope)\n }, 0)\n })\n})\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (!props.loop && !props.trapped)\n return\n if (focusScope.paused)\n return\n\n const isTabKey\n = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey\n const focusedElement = getActiveElement() as HTMLElement | null\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement\n const [first, last] = getTabbableEdges(container)\n const hasTabbableElementsInside = first && last\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container)\n event.preventDefault()\n }\n else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault()\n if (props.loop)\n focus(first, { select: true })\n }\n else if (event.shiftKey && focusedElement === first) {\n event.preventDefault()\n if (props.loop)\n focus(last, { select: true })\n }\n }\n }\n}\n</script>\n\n<template>\n <Primitive\n ref=\"currentRef\"\n tabindex=\"-1\"\n :as-child=\"asChild\"\n :as=\"as\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FocusScope.js","sources":["../../src/FocusScope/FocusScope.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { getActiveElement, useForwardExpose } from '@/shared'\n\nexport type FocusScopeEmits = {\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n mountAutoFocus: [event: Event]\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n unmountAutoFocus: [event: Event]\n}\n\nexport interface FocusScopeProps extends PrimitiveProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isClient } from '@vueuse/shared'\nimport { nextTick, reactive, ref, watchEffect } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createFocusScopesStack, removeLinks } from './stack'\nimport {\n AUTOFOCUS_ON_MOUNT,\n AUTOFOCUS_ON_UNMOUNT,\n EVENT_OPTIONS,\n focus,\n focusFirst,\n getTabbableCandidates,\n getTabbableEdges,\n} from './utils'\n\nconst props = withDefaults(defineProps<FocusScopeProps>(), {\n loop: false,\n trapped: false,\n})\nconst emits = defineEmits<FocusScopeEmits>()\n\nconst { currentRef, currentElement } = useForwardExpose()\nconst lastFocusedElementRef = ref<HTMLElement | null>(null)\nconst focusScopesStack = createFocusScopesStack()\n\nconst focusScope = reactive({\n paused: false,\n pause() {\n this.paused = true\n },\n resume() {\n this.paused = false\n },\n})\n\nwatchEffect((cleanupFn) => {\n if (!isClient)\n return\n const container = currentElement.value\n if (!props.trapped)\n return\n\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const target = event.target as HTMLElement | null\n if (container.contains(target))\n lastFocusedElementRef.value = target\n else focus(lastFocusedElementRef.value, { select: true })\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container)\n return\n const relatedTarget = event.relatedTarget as HTMLElement | null\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null)\n return\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget))\n focus(lastFocusedElementRef.value, { select: true })\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n // -- related: https://github.com/unovue/reka-ui/issues/518\n // Reka UI tentative solution:\n // instead of leaning on document.activeElement, we use lastFocusedElementRef.value to check\n // if the element still exist inside the container,\n // if not then we focus to the container\n function handleMutations(mutations: MutationRecord[]) {\n const isLastFocusedElementExist = container.contains(lastFocusedElementRef.value)\n if (!isLastFocusedElementExist)\n focus(container)\n }\n\n document.addEventListener('focusin', handleFocusIn)\n document.addEventListener('focusout', handleFocusOut)\n const mutationObserver = new MutationObserver(handleMutations)\n if (container)\n mutationObserver.observe(container, { childList: true, subtree: true })\n\n cleanupFn(() => {\n document.removeEventListener('focusin', handleFocusIn)\n document.removeEventListener('focusout', handleFocusOut)\n mutationObserver.disconnect()\n })\n})\n\nwatchEffect(async (cleanupFn) => {\n const container = currentElement.value\n\n await nextTick()\n if (!container)\n return\n focusScopesStack.add(focusScope)\n const previouslyFocusedElement = getActiveElement() as HTMLElement | null\n const hasFocusedCandidate = container.contains(previouslyFocusedElement)\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS)\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n container.dispatchEvent(mountEvent)\n\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true,\n })\n if (getActiveElement() === previouslyFocusedElement)\n focus(container)\n }\n }\n\n cleanupFn(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) =>\n emits('mountAutoFocus', ev))\n\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS)\n const unmountEventHandler = (ev: Event) => {\n emits('unmountAutoFocus', ev)\n }\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n container.dispatchEvent(unmountEvent)\n\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true })\n\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler)\n\n focusScopesStack.remove(focusScope)\n }, 0)\n })\n})\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (!props.loop && !props.trapped)\n return\n if (focusScope.paused)\n return\n\n const isTabKey\n = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey\n const focusedElement = getActiveElement() as HTMLElement | null\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement\n const [first, last] = getTabbableEdges(container)\n const hasTabbableElementsInside = first && last\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container)\n event.preventDefault()\n }\n else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault()\n if (props.loop)\n focus(first, { select: true })\n }\n else if (event.shiftKey && focusedElement === first) {\n event.preventDefault()\n if (props.loop)\n focus(last, { select: true })\n }\n }\n }\n}\n</script>\n\n<template>\n <Primitive\n ref=\"currentRef\"\n tabindex=\"-1\"\n :as-child=\"asChild\"\n :as=\"as\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const HoverCard_utils = require('./utils.cjs');
5
4
  const HoverCard_HoverCardContentImpl = require('./HoverCardContentImpl.cjs');
5
+ const HoverCard_utils = require('./utils.cjs');
6
6
  const shared_useForwardPropsEmits = require('../shared/useForwardPropsEmits.cjs');
7
7
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
8
8
  const Presence_Presence = require('../Presence/Presence.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardContent.cjs","sources":["../../src/HoverCard/HoverCardContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { HoverCardContentImplEmits, HoverCardContentImplProps } from './HoverCardContentImpl.vue'\n\nexport type HoverCardContentEmits = HoverCardContentImplEmits\n\nexport interface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { excludeTouch } from './utils'\nimport { Presence } from '@/Presence'\nimport HoverCardContentImpl from './HoverCardContentImpl.vue'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\n\nconst props = defineProps<HoverCardContentProps>()\nconst emits = defineEmits<HoverCardContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectHoverCardRootContext()\n</script>\n\n<template>\n <Presence\n :present=\"forceMount || rootContext.open.value\"\n >\n <HoverCardContentImpl\n v-bind=\"forwarded\"\n :ref=\"forwardRef\"\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n >\n <slot />\n </HoverCardContentImpl>\n </Presence>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectHoverCardRootContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AAExC,IAAA,MAAM,cAAcC,kDAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardContent.cjs","sources":["../../src/HoverCard/HoverCardContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { HoverCardContentImplEmits, HoverCardContentImplProps } from './HoverCardContentImpl.vue'\n\nexport type HoverCardContentEmits = HoverCardContentImplEmits\n\nexport interface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\nimport HoverCardContentImpl from './HoverCardContentImpl.vue'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { excludeTouch } from './utils'\n\nconst props = defineProps<HoverCardContentProps>()\nconst emits = defineEmits<HoverCardContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectHoverCardRootContext()\n</script>\n\n<template>\n <Presence\n :present=\"forceMount || rootContext.open.value\"\n >\n <HoverCardContentImpl\n v-bind=\"forwarded\"\n :ref=\"forwardRef\"\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n >\n <slot />\n </HoverCardContentImpl>\n </Presence>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectHoverCardRootContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AAExC,IAAA,MAAM,cAAcC,kDAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, createBlock, openBlock, unref, withCtx, createVNode, mergeProps, renderSlot } from 'vue';
2
- import { e as excludeTouch } from './utils.js';
3
2
  import { _ as _sfc_main$1 } from './HoverCardContentImpl.js';
3
+ import { e as excludeTouch } from './utils.js';
4
4
  import { u as useForwardPropsEmits } from '../shared/useForwardPropsEmits.js';
5
5
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
6
6
  import { P as Presence } from '../Presence/Presence.js';
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardContent.js","sources":["../../src/HoverCard/HoverCardContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { HoverCardContentImplEmits, HoverCardContentImplProps } from './HoverCardContentImpl.vue'\n\nexport type HoverCardContentEmits = HoverCardContentImplEmits\n\nexport interface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { excludeTouch } from './utils'\nimport { Presence } from '@/Presence'\nimport HoverCardContentImpl from './HoverCardContentImpl.vue'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\n\nconst props = defineProps<HoverCardContentProps>()\nconst emits = defineEmits<HoverCardContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectHoverCardRootContext()\n</script>\n\n<template>\n <Presence\n :present=\"forceMount || rootContext.open.value\"\n >\n <HoverCardContentImpl\n v-bind=\"forwarded\"\n :ref=\"forwardRef\"\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n >\n <slot />\n </HoverCardContentImpl>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AAExC,IAAA,MAAM,cAAc,0BAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardContent.js","sources":["../../src/HoverCard/HoverCardContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { HoverCardContentImplEmits, HoverCardContentImplProps } from './HoverCardContentImpl.vue'\n\nexport type HoverCardContentEmits = HoverCardContentImplEmits\n\nexport interface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\nimport HoverCardContentImpl from './HoverCardContentImpl.vue'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { excludeTouch } from './utils'\n\nconst props = defineProps<HoverCardContentProps>()\nconst emits = defineEmits<HoverCardContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectHoverCardRootContext()\n</script>\n\n<template>\n <Presence\n :present=\"forceMount || rootContext.open.value\"\n >\n <HoverCardContentImpl\n v-bind=\"forwarded\"\n :ref=\"forwardRef\"\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n >\n <slot />\n </HoverCardContentImpl>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AACnD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AAExC,IAAA,MAAM,cAAc,0BAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
- const Popper_PopperContent = require('../Popper/PopperContent.cjs');
5
4
  const DismissableLayer_DismissableLayer = require('../DismissableLayer/DismissableLayer.cjs');
6
- const HoverCard_utils = require('./utils.cjs');
5
+ const Popper_PopperContent = require('../Popper/PopperContent.cjs');
7
6
  require('@floating-ui/vue');
7
+ const HoverCard_utils = require('./utils.cjs');
8
8
  const shared = require('@vueuse/shared');
9
9
  const shared_useForwardProps = require('../shared/useForwardProps.cjs');
10
10
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
11
- const shared_useGraceArea = require('../shared/useGraceArea.cjs');
12
11
  const HoverCard_HoverCardRoot = require('./HoverCardRoot.cjs');
12
+ const shared_useGraceArea = require('../shared/useGraceArea.cjs');
13
13
 
14
14
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
15
15
  __name: "HoverCardContentImpl",
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardContentImpl.cjs","sources":["../../src/HoverCard/HoverCardContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PopperContentProps } from '@/Popper'\nimport type { DismissableLayerEmits } from '@/DismissableLayer'\nimport { useForwardExpose, useGraceArea } from '@/shared'\nimport { syncRef } from '@vueuse/shared'\n\nexport type HoverCardContentImplEmits = DismissableLayerEmits\nexport interface HoverCardContentImplProps extends PopperContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, ref, watchEffect } from 'vue'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { PopperContent } from '@/Popper'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getTabbableNodes } from './utils'\nimport { useForwardProps } from '..'\n\nconst props = defineProps<HoverCardContentImplProps>()\nconst emits = defineEmits<HoverCardContentImplEmits>()\nconst forwarded = useForwardProps(props)\n\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nconst { isPointerInTransit, onPointerExit } = useGraceArea(rootContext.triggerElement, contentElement)\n\nsyncRef(rootContext.isPointerInTransitRef, isPointerInTransit, { direction: 'rtl' })\n\nonPointerExit(() => {\n rootContext.onClose()\n})\n\nconst containSelection = ref(false)\n\nlet originalBodyUserSelect: string\nwatchEffect((cleanupFn) => {\n if (containSelection.value) {\n const body = document.body\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect\n\n body.style.userSelect = 'none'\n body.style.webkitUserSelect = 'none'\n\n cleanupFn(() => {\n body.style.userSelect = originalBodyUserSelect\n body.style.webkitUserSelect = originalBodyUserSelect\n })\n }\n})\n\nfunction handlePointerUp() {\n containSelection.value = false\n rootContext.isPointerDownOnContentRef.value = false\n\n // Delay a frame to ensure we always access the latest selection\n nextTick(() => {\n const hasSelection = document.getSelection()?.toString() !== ''\n if (hasSelection)\n rootContext.hasSelectionRef.value = true\n })\n}\nonMounted(() => {\n if (contentElement.value) {\n document.addEventListener('pointerup', handlePointerUp)\n\n const tabbables = getTabbableNodes(contentElement.value)\n tabbables.forEach(tabbable => tabbable.setAttribute('tabindex', '-1'))\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('pointerup', handlePointerUp)\n rootContext.hasSelectionRef.value = false\n rootContext.isPointerDownOnContentRef.value = false\n})\n</script>\n\n<template>\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"false\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside.prevent=\"emits('focusOutside', $event)\"\n @dismiss=\"rootContext.onDismiss\"\n >\n <PopperContent\n v-bind=\"{ ...forwarded, ...$attrs }\"\n :ref=\"forwardRef\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :style=\"{\n 'userSelect': containSelection ? 'text' : undefined,\n // Safari requires prefix\n 'WebkitUserSelect': containSelection ? 'text' : undefined,\n // re-namespace exposed content custom properties\n '--reka-hover-card-content-transform-origin': 'var(--reka-popper-transform-origin)',\n '--reka-hover-card-content-available-width': 'var(--reka-popper-available-width)',\n '--reka-hover-card-content-available-height': 'var(--reka-popper-available-height)',\n '--reka-hover-card-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-hover-card-trigger-height': 'var(--reka-popper-anchor-height)',\n }\"\n @pointerdown=\"(event: PointerEvent) => {\n // Contain selection to current layer\n if ((event.currentTarget as HTMLElement).contains(event.target as HTMLElement)) {\n containSelection = true\n }\n rootContext.hasSelectionRef.value = false;\n rootContext.isPointerDownOnContentRef.value = true;\n }\"\n >\n <slot />\n </PopperContent>\n </DismissableLayer>\n</template>\n"],"names":["useForwardProps","useForwardExpose","injectHoverCardRootContext","useGraceArea","syncRef","ref","watchEffect","nextTick","onMounted","getTabbableNodes","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,uCAAgB,KAAK,CAAA;AAEvC,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmBC,wCAAiB,EAAA;AACxE,IAAA,MAAM,cAAcC,kDAA2B,EAAA;AAC/C,IAAA,MAAM,EAAE,kBAAoB,EAAA,aAAA,KAAkBC,gCAAa,CAAA,WAAA,CAAY,gBAAgB,cAAc,CAAA;AAErG,IAAAC,cAAA,CAAQ,YAAY,qBAAuB,EAAA,kBAAA,EAAoB,EAAE,SAAA,EAAW,OAAO,CAAA;AAEnF,IAAA,aAAA,CAAc,MAAM;AAClB,MAAA,WAAA,CAAY,OAAQ,EAAA;AAAA,KACrB,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmBC,QAAI,KAAK,CAAA;AAElC,IAAI,IAAA,sBAAA;AACJ,IAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,QAAA,MAAM,OAAO,QAAS,CAAA,IAAA;AAGtB,QAAA,sBAAA,GAAyB,IAAK,CAAA,KAAA,CAAM,UAAc,IAAA,IAAA,CAAK,KAAM,CAAA,gBAAA;AAE7D,QAAA,IAAA,CAAK,MAAM,UAAa,GAAA,MAAA;AACxB,QAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,MAAA;AAE9B,QAAA,SAAA,CAAU,MAAM;AACd,UAAA,IAAA,CAAK,MAAM,UAAa,GAAA,sBAAA;AACxB,UAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,sBAAA;AAAA,SAC/B,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AACzB,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAG9C,MAAAC,YAAA,CAAS,MAAM;AACb,QAAA,MAAM,YAAe,GAAA,QAAA,CAAS,YAAa,EAAA,EAAG,UAAe,KAAA,EAAA;AAC7D,QAAI,IAAA,YAAA;AACF,UAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,IAAA;AAAA,OACvC,CAAA;AAAA;AAEH,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA;AAEtD,QAAM,MAAA,SAAA,GAAYC,gCAAiB,CAAA,cAAA,CAAe,KAAK,CAAA;AACvD,QAAA,SAAA,CAAU,QAAQ,CAAY,QAAA,KAAA,QAAA,CAAS,YAAa,CAAA,UAAA,EAAY,IAAI,CAAC,CAAA;AAAA;AACvE,KACD,CAAA;AAED,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACzD,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,KAAA;AACpC,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAAA,KAC/C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardContentImpl.cjs","sources":["../../src/HoverCard/HoverCardContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DismissableLayerEmits } from '@/DismissableLayer'\nimport type { PopperContentProps } from '@/Popper'\nimport { syncRef } from '@vueuse/shared'\nimport { useForwardExpose, useGraceArea } from '@/shared'\n\nexport type HoverCardContentImplEmits = DismissableLayerEmits\nexport interface HoverCardContentImplProps extends PopperContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, ref, watchEffect } from 'vue'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { PopperContent } from '@/Popper'\nimport { useForwardProps } from '..'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { getTabbableNodes } from './utils'\n\nconst props = defineProps<HoverCardContentImplProps>()\nconst emits = defineEmits<HoverCardContentImplEmits>()\nconst forwarded = useForwardProps(props)\n\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nconst { isPointerInTransit, onPointerExit } = useGraceArea(rootContext.triggerElement, contentElement)\n\nsyncRef(rootContext.isPointerInTransitRef, isPointerInTransit, { direction: 'rtl' })\n\nonPointerExit(() => {\n rootContext.onClose()\n})\n\nconst containSelection = ref(false)\n\nlet originalBodyUserSelect: string\nwatchEffect((cleanupFn) => {\n if (containSelection.value) {\n const body = document.body\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect\n\n body.style.userSelect = 'none'\n body.style.webkitUserSelect = 'none'\n\n cleanupFn(() => {\n body.style.userSelect = originalBodyUserSelect\n body.style.webkitUserSelect = originalBodyUserSelect\n })\n }\n})\n\nfunction handlePointerUp() {\n containSelection.value = false\n rootContext.isPointerDownOnContentRef.value = false\n\n // Delay a frame to ensure we always access the latest selection\n nextTick(() => {\n const hasSelection = document.getSelection()?.toString() !== ''\n if (hasSelection)\n rootContext.hasSelectionRef.value = true\n })\n}\nonMounted(() => {\n if (contentElement.value) {\n document.addEventListener('pointerup', handlePointerUp)\n\n const tabbables = getTabbableNodes(contentElement.value)\n tabbables.forEach(tabbable => tabbable.setAttribute('tabindex', '-1'))\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('pointerup', handlePointerUp)\n rootContext.hasSelectionRef.value = false\n rootContext.isPointerDownOnContentRef.value = false\n})\n</script>\n\n<template>\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"false\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside.prevent=\"emits('focusOutside', $event)\"\n @dismiss=\"rootContext.onDismiss\"\n >\n <PopperContent\n v-bind=\"{ ...forwarded, ...$attrs }\"\n :ref=\"forwardRef\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :style=\"{\n 'userSelect': containSelection ? 'text' : undefined,\n // Safari requires prefix\n 'WebkitUserSelect': containSelection ? 'text' : undefined,\n // re-namespace exposed content custom properties\n '--reka-hover-card-content-transform-origin': 'var(--reka-popper-transform-origin)',\n '--reka-hover-card-content-available-width': 'var(--reka-popper-available-width)',\n '--reka-hover-card-content-available-height': 'var(--reka-popper-available-height)',\n '--reka-hover-card-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-hover-card-trigger-height': 'var(--reka-popper-anchor-height)',\n }\"\n @pointerdown=\"(event: PointerEvent) => {\n // Contain selection to current layer\n if ((event.currentTarget as HTMLElement).contains(event.target as HTMLElement)) {\n containSelection = true\n }\n rootContext.hasSelectionRef.value = false;\n rootContext.isPointerDownOnContentRef.value = true;\n }\"\n >\n <slot />\n </PopperContent>\n </DismissableLayer>\n</template>\n"],"names":["useForwardProps","useForwardExpose","injectHoverCardRootContext","useGraceArea","syncRef","ref","watchEffect","nextTick","onMounted","getTabbableNodes","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,uCAAgB,KAAK,CAAA;AAEvC,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmBC,wCAAiB,EAAA;AACxE,IAAA,MAAM,cAAcC,kDAA2B,EAAA;AAC/C,IAAA,MAAM,EAAE,kBAAoB,EAAA,aAAA,KAAkBC,gCAAa,CAAA,WAAA,CAAY,gBAAgB,cAAc,CAAA;AAErG,IAAAC,cAAA,CAAQ,YAAY,qBAAuB,EAAA,kBAAA,EAAoB,EAAE,SAAA,EAAW,OAAO,CAAA;AAEnF,IAAA,aAAA,CAAc,MAAM;AAClB,MAAA,WAAA,CAAY,OAAQ,EAAA;AAAA,KACrB,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmBC,QAAI,KAAK,CAAA;AAElC,IAAI,IAAA,sBAAA;AACJ,IAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,QAAA,MAAM,OAAO,QAAS,CAAA,IAAA;AAGtB,QAAA,sBAAA,GAAyB,IAAK,CAAA,KAAA,CAAM,UAAc,IAAA,IAAA,CAAK,KAAM,CAAA,gBAAA;AAE7D,QAAA,IAAA,CAAK,MAAM,UAAa,GAAA,MAAA;AACxB,QAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,MAAA;AAE9B,QAAA,SAAA,CAAU,MAAM;AACd,UAAA,IAAA,CAAK,MAAM,UAAa,GAAA,sBAAA;AACxB,UAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,sBAAA;AAAA,SAC/B,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AACzB,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAG9C,MAAAC,YAAA,CAAS,MAAM;AACb,QAAA,MAAM,YAAe,GAAA,QAAA,CAAS,YAAa,EAAA,EAAG,UAAe,KAAA,EAAA;AAC7D,QAAI,IAAA,YAAA;AACF,UAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,IAAA;AAAA,OACvC,CAAA;AAAA;AAEH,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA;AAEtD,QAAM,MAAA,SAAA,GAAYC,gCAAiB,CAAA,cAAA,CAAe,KAAK,CAAA;AACvD,QAAA,SAAA,CAAU,QAAQ,CAAY,QAAA,KAAA,QAAA,CAAS,YAAa,CAAA,UAAA,EAAY,IAAI,CAAC,CAAA;AAAA;AACvE,KACD,CAAA;AAED,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACzD,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,KAAA;AACpC,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAAA,KAC/C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,13 +1,13 @@
1
1
  import { defineComponent, ref, watchEffect, onMounted, onUnmounted, createBlock, openBlock, unref, withModifiers, withCtx, createVNode, mergeProps, renderSlot, nextTick } from 'vue';
2
- import { _ as _sfc_main$2 } from '../Popper/PopperContent.js';
3
2
  import { _ as _sfc_main$1 } from '../DismissableLayer/DismissableLayer.js';
4
- import { g as getTabbableNodes } from './utils.js';
3
+ import { _ as _sfc_main$2 } from '../Popper/PopperContent.js';
5
4
  import '@floating-ui/vue';
5
+ import { g as getTabbableNodes } from './utils.js';
6
6
  import { syncRef } from '@vueuse/shared';
7
7
  import { u as useForwardProps } from '../shared/useForwardProps.js';
8
8
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
9
- import { u as useGraceArea } from '../shared/useGraceArea.js';
10
9
  import { i as injectHoverCardRootContext } from './HoverCardRoot.js';
10
+ import { u as useGraceArea } from '../shared/useGraceArea.js';
11
11
 
12
12
  const _sfc_main = /* @__PURE__ */ defineComponent({
13
13
  __name: "HoverCardContentImpl",
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardContentImpl.js","sources":["../../src/HoverCard/HoverCardContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PopperContentProps } from '@/Popper'\nimport type { DismissableLayerEmits } from '@/DismissableLayer'\nimport { useForwardExpose, useGraceArea } from '@/shared'\nimport { syncRef } from '@vueuse/shared'\n\nexport type HoverCardContentImplEmits = DismissableLayerEmits\nexport interface HoverCardContentImplProps extends PopperContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, ref, watchEffect } from 'vue'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { PopperContent } from '@/Popper'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { getTabbableNodes } from './utils'\nimport { useForwardProps } from '..'\n\nconst props = defineProps<HoverCardContentImplProps>()\nconst emits = defineEmits<HoverCardContentImplEmits>()\nconst forwarded = useForwardProps(props)\n\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nconst { isPointerInTransit, onPointerExit } = useGraceArea(rootContext.triggerElement, contentElement)\n\nsyncRef(rootContext.isPointerInTransitRef, isPointerInTransit, { direction: 'rtl' })\n\nonPointerExit(() => {\n rootContext.onClose()\n})\n\nconst containSelection = ref(false)\n\nlet originalBodyUserSelect: string\nwatchEffect((cleanupFn) => {\n if (containSelection.value) {\n const body = document.body\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect\n\n body.style.userSelect = 'none'\n body.style.webkitUserSelect = 'none'\n\n cleanupFn(() => {\n body.style.userSelect = originalBodyUserSelect\n body.style.webkitUserSelect = originalBodyUserSelect\n })\n }\n})\n\nfunction handlePointerUp() {\n containSelection.value = false\n rootContext.isPointerDownOnContentRef.value = false\n\n // Delay a frame to ensure we always access the latest selection\n nextTick(() => {\n const hasSelection = document.getSelection()?.toString() !== ''\n if (hasSelection)\n rootContext.hasSelectionRef.value = true\n })\n}\nonMounted(() => {\n if (contentElement.value) {\n document.addEventListener('pointerup', handlePointerUp)\n\n const tabbables = getTabbableNodes(contentElement.value)\n tabbables.forEach(tabbable => tabbable.setAttribute('tabindex', '-1'))\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('pointerup', handlePointerUp)\n rootContext.hasSelectionRef.value = false\n rootContext.isPointerDownOnContentRef.value = false\n})\n</script>\n\n<template>\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"false\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside.prevent=\"emits('focusOutside', $event)\"\n @dismiss=\"rootContext.onDismiss\"\n >\n <PopperContent\n v-bind=\"{ ...forwarded, ...$attrs }\"\n :ref=\"forwardRef\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :style=\"{\n 'userSelect': containSelection ? 'text' : undefined,\n // Safari requires prefix\n 'WebkitUserSelect': containSelection ? 'text' : undefined,\n // re-namespace exposed content custom properties\n '--reka-hover-card-content-transform-origin': 'var(--reka-popper-transform-origin)',\n '--reka-hover-card-content-available-width': 'var(--reka-popper-available-width)',\n '--reka-hover-card-content-available-height': 'var(--reka-popper-available-height)',\n '--reka-hover-card-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-hover-card-trigger-height': 'var(--reka-popper-anchor-height)',\n }\"\n @pointerdown=\"(event: PointerEvent) => {\n // Contain selection to current layer\n if ((event.currentTarget as HTMLElement).contains(event.target as HTMLElement)) {\n containSelection = true\n }\n rootContext.hasSelectionRef.value = false;\n rootContext.isPointerDownOnContentRef.value = true;\n }\"\n >\n <slot />\n </PopperContent>\n </DismissableLayer>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,gBAAgB,KAAK,CAAA;AAEvC,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmB,gBAAiB,EAAA;AACxE,IAAA,MAAM,cAAc,0BAA2B,EAAA;AAC/C,IAAA,MAAM,EAAE,kBAAoB,EAAA,aAAA,KAAkB,YAAa,CAAA,WAAA,CAAY,gBAAgB,cAAc,CAAA;AAErG,IAAA,OAAA,CAAQ,YAAY,qBAAuB,EAAA,kBAAA,EAAoB,EAAE,SAAA,EAAW,OAAO,CAAA;AAEnF,IAAA,aAAA,CAAc,MAAM;AAClB,MAAA,WAAA,CAAY,OAAQ,EAAA;AAAA,KACrB,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmB,IAAI,KAAK,CAAA;AAElC,IAAI,IAAA,sBAAA;AACJ,IAAA,WAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,QAAA,MAAM,OAAO,QAAS,CAAA,IAAA;AAGtB,QAAA,sBAAA,GAAyB,IAAK,CAAA,KAAA,CAAM,UAAc,IAAA,IAAA,CAAK,KAAM,CAAA,gBAAA;AAE7D,QAAA,IAAA,CAAK,MAAM,UAAa,GAAA,MAAA;AACxB,QAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,MAAA;AAE9B,QAAA,SAAA,CAAU,MAAM;AACd,UAAA,IAAA,CAAK,MAAM,UAAa,GAAA,sBAAA;AACxB,UAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,sBAAA;AAAA,SAC/B,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AACzB,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAG9C,MAAA,QAAA,CAAS,MAAM;AACb,QAAA,MAAM,YAAe,GAAA,QAAA,CAAS,YAAa,EAAA,EAAG,UAAe,KAAA,EAAA;AAC7D,QAAI,IAAA,YAAA;AACF,UAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,IAAA;AAAA,OACvC,CAAA;AAAA;AAEH,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA;AAEtD,QAAM,MAAA,SAAA,GAAY,gBAAiB,CAAA,cAAA,CAAe,KAAK,CAAA;AACvD,QAAA,SAAA,CAAU,QAAQ,CAAY,QAAA,KAAA,QAAA,CAAS,YAAa,CAAA,UAAA,EAAY,IAAI,CAAC,CAAA;AAAA;AACvE,KACD,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACzD,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,KAAA;AACpC,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAAA,KAC/C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardContentImpl.js","sources":["../../src/HoverCard/HoverCardContentImpl.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DismissableLayerEmits } from '@/DismissableLayer'\nimport type { PopperContentProps } from '@/Popper'\nimport { syncRef } from '@vueuse/shared'\nimport { useForwardExpose, useGraceArea } from '@/shared'\n\nexport type HoverCardContentImplEmits = DismissableLayerEmits\nexport interface HoverCardContentImplProps extends PopperContentProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, ref, watchEffect } from 'vue'\nimport { DismissableLayer } from '@/DismissableLayer'\nimport { PopperContent } from '@/Popper'\nimport { useForwardProps } from '..'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { getTabbableNodes } from './utils'\n\nconst props = defineProps<HoverCardContentImplProps>()\nconst emits = defineEmits<HoverCardContentImplEmits>()\nconst forwarded = useForwardProps(props)\n\nconst { forwardRef, currentElement: contentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nconst { isPointerInTransit, onPointerExit } = useGraceArea(rootContext.triggerElement, contentElement)\n\nsyncRef(rootContext.isPointerInTransitRef, isPointerInTransit, { direction: 'rtl' })\n\nonPointerExit(() => {\n rootContext.onClose()\n})\n\nconst containSelection = ref(false)\n\nlet originalBodyUserSelect: string\nwatchEffect((cleanupFn) => {\n if (containSelection.value) {\n const body = document.body\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect\n\n body.style.userSelect = 'none'\n body.style.webkitUserSelect = 'none'\n\n cleanupFn(() => {\n body.style.userSelect = originalBodyUserSelect\n body.style.webkitUserSelect = originalBodyUserSelect\n })\n }\n})\n\nfunction handlePointerUp() {\n containSelection.value = false\n rootContext.isPointerDownOnContentRef.value = false\n\n // Delay a frame to ensure we always access the latest selection\n nextTick(() => {\n const hasSelection = document.getSelection()?.toString() !== ''\n if (hasSelection)\n rootContext.hasSelectionRef.value = true\n })\n}\nonMounted(() => {\n if (contentElement.value) {\n document.addEventListener('pointerup', handlePointerUp)\n\n const tabbables = getTabbableNodes(contentElement.value)\n tabbables.forEach(tabbable => tabbable.setAttribute('tabindex', '-1'))\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('pointerup', handlePointerUp)\n rootContext.hasSelectionRef.value = false\n rootContext.isPointerDownOnContentRef.value = false\n})\n</script>\n\n<template>\n <DismissableLayer\n as-child\n :disable-outside-pointer-events=\"false\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n @focus-outside.prevent=\"emits('focusOutside', $event)\"\n @dismiss=\"rootContext.onDismiss\"\n >\n <PopperContent\n v-bind=\"{ ...forwarded, ...$attrs }\"\n :ref=\"forwardRef\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n :style=\"{\n 'userSelect': containSelection ? 'text' : undefined,\n // Safari requires prefix\n 'WebkitUserSelect': containSelection ? 'text' : undefined,\n // re-namespace exposed content custom properties\n '--reka-hover-card-content-transform-origin': 'var(--reka-popper-transform-origin)',\n '--reka-hover-card-content-available-width': 'var(--reka-popper-available-width)',\n '--reka-hover-card-content-available-height': 'var(--reka-popper-available-height)',\n '--reka-hover-card-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-hover-card-trigger-height': 'var(--reka-popper-anchor-height)',\n }\"\n @pointerdown=\"(event: PointerEvent) => {\n // Contain selection to current layer\n if ((event.currentTarget as HTMLElement).contains(event.target as HTMLElement)) {\n containSelection = true\n }\n rootContext.hasSelectionRef.value = false;\n rootContext.isPointerDownOnContentRef.value = true;\n }\"\n >\n <slot />\n </PopperContent>\n </DismissableLayer>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,gBAAgB,KAAK,CAAA;AAEvC,IAAA,MAAM,EAAE,UAAA,EAAY,cAAgB,EAAA,cAAA,KAAmB,gBAAiB,EAAA;AACxE,IAAA,MAAM,cAAc,0BAA2B,EAAA;AAC/C,IAAA,MAAM,EAAE,kBAAoB,EAAA,aAAA,KAAkB,YAAa,CAAA,WAAA,CAAY,gBAAgB,cAAc,CAAA;AAErG,IAAA,OAAA,CAAQ,YAAY,qBAAuB,EAAA,kBAAA,EAAoB,EAAE,SAAA,EAAW,OAAO,CAAA;AAEnF,IAAA,aAAA,CAAc,MAAM;AAClB,MAAA,WAAA,CAAY,OAAQ,EAAA;AAAA,KACrB,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmB,IAAI,KAAK,CAAA;AAElC,IAAI,IAAA,sBAAA;AACJ,IAAA,WAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,QAAA,MAAM,OAAO,QAAS,CAAA,IAAA;AAGtB,QAAA,sBAAA,GAAyB,IAAK,CAAA,KAAA,CAAM,UAAc,IAAA,IAAA,CAAK,KAAM,CAAA,gBAAA;AAE7D,QAAA,IAAA,CAAK,MAAM,UAAa,GAAA,MAAA;AACxB,QAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,MAAA;AAE9B,QAAA,SAAA,CAAU,MAAM;AACd,UAAA,IAAA,CAAK,MAAM,UAAa,GAAA,sBAAA;AACxB,UAAA,IAAA,CAAK,MAAM,gBAAmB,GAAA,sBAAA;AAAA,SAC/B,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAA,gBAAA,CAAiB,KAAQ,GAAA,KAAA;AACzB,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAG9C,MAAA,QAAA,CAAS,MAAM;AACb,QAAA,MAAM,YAAe,GAAA,QAAA,CAAS,YAAa,EAAA,EAAG,UAAe,KAAA,EAAA;AAC7D,QAAI,IAAA,YAAA;AACF,UAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,IAAA;AAAA,OACvC,CAAA;AAAA;AAEH,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA;AAEtD,QAAM,MAAA,SAAA,GAAY,gBAAiB,CAAA,cAAA,CAAe,KAAK,CAAA;AACvD,QAAA,SAAA,CAAU,QAAQ,CAAY,QAAA,KAAA,QAAA,CAAS,YAAa,CAAA,UAAA,EAAY,IAAI,CAAC,CAAA;AAAA;AACvE,KACD,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACzD,MAAA,WAAA,CAAY,gBAAgB,KAAQ,GAAA,KAAA;AACpC,MAAA,WAAA,CAAY,0BAA0B,KAAQ,GAAA,KAAA;AAAA,KAC/C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardRoot.cjs","sources":["../../src/HoverCard/HoverCardRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface HoverCardRootProps {\n /** The open state of the hover card when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the hover card. Can be binded as `v-model:open`. */\n open?: boolean\n /** The duration from when the mouse enters the trigger until the hover card opens. */\n openDelay?: number\n /** The duration from when the mouse leaves the trigger or content until the hover card closes. */\n closeDelay?: number\n}\nexport type HoverCardRootEmits = {\n /** Event handler called when the open state of the hover card changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface HoverCardRootContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n onOpen: () => void\n onClose: () => void\n onDismiss: () => void\n hasSelectionRef: Ref<boolean>\n isPointerDownOnContentRef: Ref<boolean>\n isPointerInTransitRef: Ref<boolean>\n triggerElement: Ref<HTMLElement | undefined>\n}\n\nexport const [injectHoverCardRootContext, provideHoverCardRootContext]\n = createContext<HoverCardRootContext>('HoverCardRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<HoverCardRootProps>(), {\n defaultOpen: false,\n open: undefined,\n openDelay: 700,\n closeDelay: 300,\n})\nconst emit = defineEmits<HoverCardRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { openDelay, closeDelay } = toRefs(props)\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 openTimerRef = ref(0)\nconst closeTimerRef = ref(0)\nconst hasSelectionRef = ref(false)\nconst isPointerDownOnContentRef = ref(false)\nconst isPointerInTransitRef = ref(false)\nconst triggerElement = ref<HTMLElement>()\n\nfunction handleOpen() {\n clearTimeout(closeTimerRef.value)\n openTimerRef.value = window.setTimeout(() => open.value = true, openDelay.value)\n}\n\nfunction handleClose() {\n clearTimeout(openTimerRef.value)\n if (!hasSelectionRef.value && !isPointerDownOnContentRef.value)\n closeTimerRef.value = window.setTimeout(() => open.value = false, closeDelay.value)\n}\n\nfunction handleDismiss() {\n open.value = false\n}\n\nprovideHoverCardRootContext({\n open,\n onOpenChange(value) {\n open.value = value\n },\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n isPointerInTransitRef,\n triggerElement,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot :open=\"open\" />\n </PopperRoot>\n</template>\n"],"names":["createContext","toRefs","useForwardExpose","useVModel","ref"],"mappings":";;;;;;;;AA+BO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjEA,mCAAoC,eAAe;;;;;;;;;;;AAQvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,EAAE,SAAA,EAAW,UAAW,EAAA,GAAIC,WAAO,KAAK,CAAA;AAE9C,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,IAAM,MAAA,YAAA,GAAeC,QAAI,CAAC,CAAA;AAC1B,IAAM,MAAA,aAAA,GAAgBA,QAAI,CAAC,CAAA;AAC3B,IAAM,MAAA,eAAA,GAAkBA,QAAI,KAAK,CAAA;AACjC,IAAM,MAAA,yBAAA,GAA4BA,QAAI,KAAK,CAAA;AAC3C,IAAM,MAAA,qBAAA,GAAwBA,QAAI,KAAK,CAAA;AACvC,IAAA,MAAM,iBAAiBA,OAAiB,EAAA;AAExC,IAAA,SAAS,UAAa,GAAA;AACpB,MAAA,YAAA,CAAa,cAAc,KAAK,CAAA;AAChC,MAAa,YAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,IAAA,EAAM,UAAU,KAAK,CAAA;AAAA;AAGjF,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,YAAA,CAAa,aAAa,KAAK,CAAA;AAC/B,MAAA,IAAI,CAAC,eAAA,CAAgB,KAAS,IAAA,CAAC,yBAA0B,CAAA,KAAA;AACvD,QAAc,aAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA;AAGtF,IAAA,SAAS,aAAgB,GAAA;AACvB,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA;AAGf,IAA4B,2BAAA,CAAA;AAAA,MAC1B,IAAA;AAAA,MACA,aAAa,KAAO,EAAA;AAClB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,MAAQ,EAAA,UAAA;AAAA,MACR,OAAS,EAAA,WAAA;AAAA,MACT,SAAW,EAAA,aAAA;AAAA,MACX,eAAA;AAAA,MACA,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardRoot.cjs","sources":["../../src/HoverCard/HoverCardRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface HoverCardRootProps {\n /** The open state of the hover card when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the hover card. Can be binded as `v-model:open`. */\n open?: boolean\n /** The duration from when the mouse enters the trigger until the hover card opens. */\n openDelay?: number\n /** The duration from when the mouse leaves the trigger or content until the hover card closes. */\n closeDelay?: number\n}\nexport type HoverCardRootEmits = {\n /** Event handler called when the open state of the hover card changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface HoverCardRootContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n onOpen: () => void\n onClose: () => void\n onDismiss: () => void\n hasSelectionRef: Ref<boolean>\n isPointerDownOnContentRef: Ref<boolean>\n isPointerInTransitRef: Ref<boolean>\n triggerElement: Ref<HTMLElement | undefined>\n}\n\nexport const [injectHoverCardRootContext, provideHoverCardRootContext]\n = createContext<HoverCardRootContext>('HoverCardRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<HoverCardRootProps>(), {\n defaultOpen: false,\n open: undefined,\n openDelay: 700,\n closeDelay: 300,\n})\nconst emit = defineEmits<HoverCardRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { openDelay, closeDelay } = toRefs(props)\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 openTimerRef = ref(0)\nconst closeTimerRef = ref(0)\nconst hasSelectionRef = ref(false)\nconst isPointerDownOnContentRef = ref(false)\nconst isPointerInTransitRef = ref(false)\nconst triggerElement = ref<HTMLElement>()\n\nfunction handleOpen() {\n clearTimeout(closeTimerRef.value)\n openTimerRef.value = window.setTimeout(() => open.value = true, openDelay.value)\n}\n\nfunction handleClose() {\n clearTimeout(openTimerRef.value)\n if (!hasSelectionRef.value && !isPointerDownOnContentRef.value)\n closeTimerRef.value = window.setTimeout(() => open.value = false, closeDelay.value)\n}\n\nfunction handleDismiss() {\n open.value = false\n}\n\nprovideHoverCardRootContext({\n open,\n onOpenChange(value) {\n open.value = value\n },\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n isPointerInTransitRef,\n triggerElement,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot :open=\"open\" />\n </PopperRoot>\n</template>\n"],"names":["createContext","toRefs","useForwardExpose","useVModel","ref"],"mappings":";;;;;;;;AA+BO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjEA,mCAAoC,eAAe;;;;;;;;;;;AAQvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,EAAE,SAAA,EAAW,UAAW,EAAA,GAAIC,WAAO,KAAK,CAAA;AAE9C,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,IAAM,MAAA,YAAA,GAAeC,QAAI,CAAC,CAAA;AAC1B,IAAM,MAAA,aAAA,GAAgBA,QAAI,CAAC,CAAA;AAC3B,IAAM,MAAA,eAAA,GAAkBA,QAAI,KAAK,CAAA;AACjC,IAAM,MAAA,yBAAA,GAA4BA,QAAI,KAAK,CAAA;AAC3C,IAAM,MAAA,qBAAA,GAAwBA,QAAI,KAAK,CAAA;AACvC,IAAA,MAAM,iBAAiBA,OAAiB,EAAA;AAExC,IAAA,SAAS,UAAa,GAAA;AACpB,MAAA,YAAA,CAAa,cAAc,KAAK,CAAA;AAChC,MAAa,YAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,IAAA,EAAM,UAAU,KAAK,CAAA;AAAA;AAGjF,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,YAAA,CAAa,aAAa,KAAK,CAAA;AAC/B,MAAA,IAAI,CAAC,eAAA,CAAgB,KAAS,IAAA,CAAC,yBAA0B,CAAA,KAAA;AACvD,QAAc,aAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA;AAGtF,IAAA,SAAS,aAAgB,GAAA;AACvB,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA;AAGf,IAA4B,2BAAA,CAAA;AAAA,MAC1B,IAAA;AAAA,MACA,aAAa,KAAO,EAAA;AAClB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,MAAQ,EAAA,UAAA;AAAA,MACR,OAAS,EAAA,WAAA;AAAA,MACT,SAAW,EAAA,aAAA;AAAA,MACX,eAAA;AAAA,MACA,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardRoot.js","sources":["../../src/HoverCard/HoverCardRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface HoverCardRootProps {\n /** The open state of the hover card when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the hover card. Can be binded as `v-model:open`. */\n open?: boolean\n /** The duration from when the mouse enters the trigger until the hover card opens. */\n openDelay?: number\n /** The duration from when the mouse leaves the trigger or content until the hover card closes. */\n closeDelay?: number\n}\nexport type HoverCardRootEmits = {\n /** Event handler called when the open state of the hover card changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface HoverCardRootContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n onOpen: () => void\n onClose: () => void\n onDismiss: () => void\n hasSelectionRef: Ref<boolean>\n isPointerDownOnContentRef: Ref<boolean>\n isPointerInTransitRef: Ref<boolean>\n triggerElement: Ref<HTMLElement | undefined>\n}\n\nexport const [injectHoverCardRootContext, provideHoverCardRootContext]\n = createContext<HoverCardRootContext>('HoverCardRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\nimport { useVModel } from '@vueuse/core'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<HoverCardRootProps>(), {\n defaultOpen: false,\n open: undefined,\n openDelay: 700,\n closeDelay: 300,\n})\nconst emit = defineEmits<HoverCardRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { openDelay, closeDelay } = toRefs(props)\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 openTimerRef = ref(0)\nconst closeTimerRef = ref(0)\nconst hasSelectionRef = ref(false)\nconst isPointerDownOnContentRef = ref(false)\nconst isPointerInTransitRef = ref(false)\nconst triggerElement = ref<HTMLElement>()\n\nfunction handleOpen() {\n clearTimeout(closeTimerRef.value)\n openTimerRef.value = window.setTimeout(() => open.value = true, openDelay.value)\n}\n\nfunction handleClose() {\n clearTimeout(openTimerRef.value)\n if (!hasSelectionRef.value && !isPointerDownOnContentRef.value)\n closeTimerRef.value = window.setTimeout(() => open.value = false, closeDelay.value)\n}\n\nfunction handleDismiss() {\n open.value = false\n}\n\nprovideHoverCardRootContext({\n open,\n onOpenChange(value) {\n open.value = value\n },\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n isPointerInTransitRef,\n triggerElement,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot :open=\"open\" />\n </PopperRoot>\n</template>\n"],"names":[],"mappings":";;;;;;AA+BO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjE,cAAoC,eAAe;;;;;;;;;;;AAQvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,EAAE,SAAA,EAAW,UAAW,EAAA,GAAI,OAAO,KAAK,CAAA;AAE9C,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,IAAM,MAAA,YAAA,GAAe,IAAI,CAAC,CAAA;AAC1B,IAAM,MAAA,aAAA,GAAgB,IAAI,CAAC,CAAA;AAC3B,IAAM,MAAA,eAAA,GAAkB,IAAI,KAAK,CAAA;AACjC,IAAM,MAAA,yBAAA,GAA4B,IAAI,KAAK,CAAA;AAC3C,IAAM,MAAA,qBAAA,GAAwB,IAAI,KAAK,CAAA;AACvC,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AAExC,IAAA,SAAS,UAAa,GAAA;AACpB,MAAA,YAAA,CAAa,cAAc,KAAK,CAAA;AAChC,MAAa,YAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,IAAA,EAAM,UAAU,KAAK,CAAA;AAAA;AAGjF,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,YAAA,CAAa,aAAa,KAAK,CAAA;AAC/B,MAAA,IAAI,CAAC,eAAA,CAAgB,KAAS,IAAA,CAAC,yBAA0B,CAAA,KAAA;AACvD,QAAc,aAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA;AAGtF,IAAA,SAAS,aAAgB,GAAA;AACvB,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA;AAGf,IAA4B,2BAAA,CAAA;AAAA,MAC1B,IAAA;AAAA,MACA,aAAa,KAAO,EAAA;AAClB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,MAAQ,EAAA,UAAA;AAAA,MACR,OAAS,EAAA,WAAA;AAAA,MACT,SAAW,EAAA,aAAA;AAAA,MACX,eAAA;AAAA,MACA,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardRoot.js","sources":["../../src/HoverCard/HoverCardRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface HoverCardRootProps {\n /** The open state of the hover card when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the hover card. Can be binded as `v-model:open`. */\n open?: boolean\n /** The duration from when the mouse enters the trigger until the hover card opens. */\n openDelay?: number\n /** The duration from when the mouse leaves the trigger or content until the hover card closes. */\n closeDelay?: number\n}\nexport type HoverCardRootEmits = {\n /** Event handler called when the open state of the hover card changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface HoverCardRootContext {\n open: Ref<boolean>\n onOpenChange: (open: boolean) => void\n onOpen: () => void\n onClose: () => void\n onDismiss: () => void\n hasSelectionRef: Ref<boolean>\n isPointerDownOnContentRef: Ref<boolean>\n isPointerInTransitRef: Ref<boolean>\n triggerElement: Ref<HTMLElement | undefined>\n}\n\nexport const [injectHoverCardRootContext, provideHoverCardRootContext]\n = createContext<HoverCardRootContext>('HoverCardRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { ref, toRefs } from 'vue'\nimport { PopperRoot } from '@/Popper'\n\nconst props = withDefaults(defineProps<HoverCardRootProps>(), {\n defaultOpen: false,\n open: undefined,\n openDelay: 700,\n closeDelay: 300,\n})\nconst emit = defineEmits<HoverCardRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { openDelay, closeDelay } = toRefs(props)\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 openTimerRef = ref(0)\nconst closeTimerRef = ref(0)\nconst hasSelectionRef = ref(false)\nconst isPointerDownOnContentRef = ref(false)\nconst isPointerInTransitRef = ref(false)\nconst triggerElement = ref<HTMLElement>()\n\nfunction handleOpen() {\n clearTimeout(closeTimerRef.value)\n openTimerRef.value = window.setTimeout(() => open.value = true, openDelay.value)\n}\n\nfunction handleClose() {\n clearTimeout(openTimerRef.value)\n if (!hasSelectionRef.value && !isPointerDownOnContentRef.value)\n closeTimerRef.value = window.setTimeout(() => open.value = false, closeDelay.value)\n}\n\nfunction handleDismiss() {\n open.value = false\n}\n\nprovideHoverCardRootContext({\n open,\n onOpenChange(value) {\n open.value = value\n },\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n isPointerInTransitRef,\n triggerElement,\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot :open=\"open\" />\n </PopperRoot>\n</template>\n"],"names":[],"mappings":";;;;;;AA+BO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjE,cAAoC,eAAe;;;;;;;;;;;AAQvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,EAAE,SAAA,EAAW,UAAW,EAAA,GAAI,OAAO,KAAK,CAAA;AAE9C,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,IAAM,MAAA,YAAA,GAAe,IAAI,CAAC,CAAA;AAC1B,IAAM,MAAA,aAAA,GAAgB,IAAI,CAAC,CAAA;AAC3B,IAAM,MAAA,eAAA,GAAkB,IAAI,KAAK,CAAA;AACjC,IAAM,MAAA,yBAAA,GAA4B,IAAI,KAAK,CAAA;AAC3C,IAAM,MAAA,qBAAA,GAAwB,IAAI,KAAK,CAAA;AACvC,IAAA,MAAM,iBAAiB,GAAiB,EAAA;AAExC,IAAA,SAAS,UAAa,GAAA;AACpB,MAAA,YAAA,CAAa,cAAc,KAAK,CAAA;AAChC,MAAa,YAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,IAAA,EAAM,UAAU,KAAK,CAAA;AAAA;AAGjF,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,YAAA,CAAa,aAAa,KAAK,CAAA;AAC/B,MAAA,IAAI,CAAC,eAAA,CAAgB,KAAS,IAAA,CAAC,yBAA0B,CAAA,KAAA;AACvD,QAAc,aAAA,CAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,MAAM,KAAK,KAAQ,GAAA,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA;AAGtF,IAAA,SAAS,aAAgB,GAAA;AACvB,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA;AAGf,IAA4B,2BAAA,CAAA;AAAA,MAC1B,IAAA;AAAA,MACA,aAAa,KAAO,EAAA;AAClB,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,OACf;AAAA,MACA,MAAQ,EAAA,UAAA;AAAA,MACR,OAAS,EAAA,WAAA;AAAA,MACT,SAAW,EAAA,aAAA;AAAA,MACX,eAAA;AAAA,MACA,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;"}
@@ -4,8 +4,8 @@ const vue = require('vue');
4
4
  const Popper_PopperAnchor = require('../Popper/PopperAnchor.cjs');
5
5
  const HoverCard_utils = require('./utils.cjs');
6
6
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
7
- const HoverCard_HoverCardRoot = require('./HoverCardRoot.cjs');
8
7
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
8
+ const HoverCard_HoverCardRoot = require('./HoverCardRoot.cjs');
9
9
 
10
10
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
11
11
  __name: "HoverCardTrigger",
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardTrigger.cjs","sources":["../../src/HoverCard/HoverCardTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface HoverCardTriggerProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { Primitive } from '@/Primitive'\nimport { PopperAnchor, type PopperAnchorProps } from '@/Popper'\nimport { useForwardExpose } from '@/shared'\nimport { excludeTouch } from './utils'\n\nwithDefaults(defineProps<HoverCardTriggerProps>(), {\n as: 'a',\n})\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nrootContext.triggerElement = currentElement\n\nfunction handleLeave() {\n setTimeout(() => {\n if (!rootContext.isPointerInTransitRef.value && !rootContext.open.value) {\n rootContext.onClose()\n }\n }, 0)\n}\n</script>\n\n<template>\n <PopperAnchor\n as-child\n :reference=\"reference\"\n >\n <Primitive\n :ref=\"forwardRef\"\n :as-child=\"asChild\"\n :as=\"as\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n data-grace-area-trigger\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n @pointerleave=\"excludeTouch(handleLeave)($event)\"\n @focus=\"rootContext.onOpen()\"\n @blur=\"rootContext.onClose()\"\n >\n <slot />\n </Primitive>\n </PopperAnchor>\n</template>\n"],"names":["useForwardExpose","injectHoverCardRootContext"],"mappings":";;;;;;;;;;;;;;;;;AAeA,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAA,MAAM,cAAcC,kDAA2B,EAAA;AAC/C,IAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAE7B,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAI,CAAC,WAAY,CAAA,qBAAA,CAAsB,SAAS,CAAC,WAAA,CAAY,KAAK,KAAO,EAAA;AACvE,UAAA,WAAA,CAAY,OAAQ,EAAA;AAAA;AACtB,SACC,CAAC,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardTrigger.cjs","sources":["../../src/HoverCard/HoverCardTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface HoverCardTriggerProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { PopperAnchor } from '@/Popper'\nimport { Primitive } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { excludeTouch } from './utils'\n\nwithDefaults(defineProps<HoverCardTriggerProps>(), {\n as: 'a',\n})\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nrootContext.triggerElement = currentElement\n\nfunction handleLeave() {\n setTimeout(() => {\n if (!rootContext.isPointerInTransitRef.value && !rootContext.open.value) {\n rootContext.onClose()\n }\n }, 0)\n}\n</script>\n\n<template>\n <PopperAnchor\n as-child\n :reference=\"reference\"\n >\n <Primitive\n :ref=\"forwardRef\"\n :as-child=\"asChild\"\n :as=\"as\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n data-grace-area-trigger\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n @pointerleave=\"excludeTouch(handleLeave)($event)\"\n @focus=\"rootContext.onOpen()\"\n @blur=\"rootContext.onClose()\"\n >\n <slot />\n </Primitive>\n </PopperAnchor>\n</template>\n"],"names":["useForwardExpose","injectHoverCardRootContext"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,wCAAiB,EAAA;AACxD,IAAA,MAAM,cAAcC,kDAA2B,EAAA;AAC/C,IAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAE7B,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAI,CAAC,WAAY,CAAA,qBAAA,CAAsB,SAAS,CAAC,WAAA,CAAY,KAAK,KAAO,EAAA;AACvE,UAAA,WAAA,CAAY,OAAQ,EAAA;AAAA;AACtB,SACC,CAAC,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,8 +2,8 @@ import { defineComponent, createBlock, openBlock, unref, withCtx, createVNode, r
2
2
  import { _ as _sfc_main$1 } from '../Popper/PopperAnchor.js';
3
3
  import { e as excludeTouch } from './utils.js';
4
4
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
5
- import { i as injectHoverCardRootContext } from './HoverCardRoot.js';
6
5
  import { P as Primitive } from '../Primitive/Primitive.js';
6
+ import { i as injectHoverCardRootContext } from './HoverCardRoot.js';
7
7
 
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  __name: "HoverCardTrigger",
@@ -1 +1 @@
1
- {"version":3,"file":"HoverCardTrigger.js","sources":["../../src/HoverCard/HoverCardTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface HoverCardTriggerProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { Primitive } from '@/Primitive'\nimport { PopperAnchor, type PopperAnchorProps } from '@/Popper'\nimport { useForwardExpose } from '@/shared'\nimport { excludeTouch } from './utils'\n\nwithDefaults(defineProps<HoverCardTriggerProps>(), {\n as: 'a',\n})\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nrootContext.triggerElement = currentElement\n\nfunction handleLeave() {\n setTimeout(() => {\n if (!rootContext.isPointerInTransitRef.value && !rootContext.open.value) {\n rootContext.onClose()\n }\n }, 0)\n}\n</script>\n\n<template>\n <PopperAnchor\n as-child\n :reference=\"reference\"\n >\n <Primitive\n :ref=\"forwardRef\"\n :as-child=\"asChild\"\n :as=\"as\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n data-grace-area-trigger\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n @pointerleave=\"excludeTouch(handleLeave)($event)\"\n @focus=\"rootContext.onOpen()\"\n @blur=\"rootContext.onClose()\"\n >\n <slot />\n </Primitive>\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAeA,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,MAAM,cAAc,0BAA2B,EAAA;AAC/C,IAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAE7B,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAI,CAAC,WAAY,CAAA,qBAAA,CAAsB,SAAS,CAAC,WAAA,CAAY,KAAK,KAAO,EAAA;AACvE,UAAA,WAAA,CAAY,OAAQ,EAAA;AAAA;AACtB,SACC,CAAC,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HoverCardTrigger.js","sources":["../../src/HoverCard/HoverCardTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface HoverCardTriggerProps extends PopperAnchorProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport type { PopperAnchorProps } from '@/Popper'\nimport { PopperAnchor } from '@/Popper'\nimport { Primitive } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectHoverCardRootContext } from './HoverCardRoot.vue'\nimport { excludeTouch } from './utils'\n\nwithDefaults(defineProps<HoverCardTriggerProps>(), {\n as: 'a',\n})\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst rootContext = injectHoverCardRootContext()\nrootContext.triggerElement = currentElement\n\nfunction handleLeave() {\n setTimeout(() => {\n if (!rootContext.isPointerInTransitRef.value && !rootContext.open.value) {\n rootContext.onClose()\n }\n }, 0)\n}\n</script>\n\n<template>\n <PopperAnchor\n as-child\n :reference=\"reference\"\n >\n <Primitive\n :ref=\"forwardRef\"\n :as-child=\"asChild\"\n :as=\"as\"\n :data-state=\"rootContext.open.value ? 'open' : 'closed'\"\n data-grace-area-trigger\n @pointerenter=\"excludeTouch(rootContext.onOpen)($event)\"\n @pointerleave=\"excludeTouch(handleLeave)($event)\"\n @focus=\"rootContext.onOpen()\"\n @blur=\"rootContext.onClose()\"\n >\n <slot />\n </Primitive>\n </PopperAnchor>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AACxD,IAAA,MAAM,cAAc,0BAA2B,EAAA;AAC/C,IAAA,WAAA,CAAY,cAAiB,GAAA,cAAA;AAE7B,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAI,CAAC,WAAY,CAAA,qBAAA,CAAsB,SAAS,CAAC,WAAA,CAAY,KAAK,KAAO,EAAA;AACvE,UAAA,WAAA,CAAY,OAAQ,EAAA;AAAA;AACtB,SACC,CAAC,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  const vue = require('vue');
4
4
  const Collection_Collection = require('../Collection/Collection.cjs');
5
- require('@floating-ui/vue');
6
5
  const shared = require('@vueuse/shared');
6
+ require('@floating-ui/vue');
7
7
  const Listbox_ListboxRoot = require('./ListboxRoot.cjs');
8
8
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
9
9