reka-ui 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (842) hide show
  1. package/dist/Accordion/AccordionHeader.cjs.map +1 -1
  2. package/dist/Accordion/AccordionHeader.js.map +1 -1
  3. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  4. package/dist/Accordion/AccordionItem.js.map +1 -1
  5. package/dist/Accordion/AccordionRoot.cjs.map +1 -1
  6. package/dist/Accordion/AccordionRoot.js.map +1 -1
  7. package/dist/Accordion/AccordionTrigger.cjs.map +1 -1
  8. package/dist/Accordion/AccordionTrigger.js.map +1 -1
  9. package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
  10. package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
  11. package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
  12. package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
  13. package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
  14. package/dist/AspectRatio/AspectRatio.js.map +1 -1
  15. package/dist/Avatar/AvatarFallback.cjs.map +1 -1
  16. package/dist/Avatar/AvatarFallback.js.map +1 -1
  17. package/dist/Avatar/AvatarImage.cjs.map +1 -1
  18. package/dist/Avatar/AvatarImage.js.map +1 -1
  19. package/dist/Avatar/AvatarRoot.cjs.map +1 -1
  20. package/dist/Avatar/AvatarRoot.js.map +1 -1
  21. package/dist/Avatar/utils.cjs.map +1 -1
  22. package/dist/Avatar/utils.js.map +1 -1
  23. package/dist/Calendar/CalendarCell.cjs +1 -1
  24. package/dist/Calendar/CalendarCell.js +1 -1
  25. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  26. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  27. package/dist/Calendar/CalendarHeading.cjs +1 -1
  28. package/dist/Calendar/CalendarHeading.js +1 -1
  29. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  30. package/dist/Calendar/CalendarNext.js.map +1 -1
  31. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  32. package/dist/Calendar/CalendarPrev.js.map +1 -1
  33. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  34. package/dist/Calendar/CalendarRoot.js.map +1 -1
  35. package/dist/Calendar/useCalendar.cjs +2 -2
  36. package/dist/Calendar/useCalendar.cjs.map +1 -1
  37. package/dist/Calendar/useCalendar.js +2 -2
  38. package/dist/Calendar/useCalendar.js.map +1 -1
  39. package/dist/Checkbox/CheckboxGroupRoot.cjs +1 -1
  40. package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
  41. package/dist/Checkbox/CheckboxGroupRoot.js +1 -1
  42. package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
  43. package/dist/Checkbox/CheckboxIndicator.cjs.map +1 -1
  44. package/dist/Checkbox/CheckboxIndicator.js.map +1 -1
  45. package/dist/Checkbox/CheckboxRoot.cjs +1 -1
  46. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  47. package/dist/Checkbox/CheckboxRoot.js +1 -1
  48. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  49. package/dist/Collapsible/CollapsibleContent.cjs +1 -1
  50. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  51. package/dist/Collapsible/CollapsibleContent.js +1 -1
  52. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  53. package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
  54. package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
  55. package/dist/Collapsible/CollapsibleTrigger.cjs +1 -1
  56. package/dist/Collapsible/CollapsibleTrigger.js +1 -1
  57. package/dist/Collection/Collection.cjs.map +1 -1
  58. package/dist/Collection/Collection.js.map +1 -1
  59. package/dist/Combobox/ComboboxAnchor.cjs.map +1 -1
  60. package/dist/Combobox/ComboboxAnchor.js.map +1 -1
  61. package/dist/Combobox/ComboboxArrow.cjs.map +1 -1
  62. package/dist/Combobox/ComboboxArrow.js.map +1 -1
  63. package/dist/Combobox/ComboboxCancel.cjs +1 -0
  64. package/dist/Combobox/ComboboxCancel.cjs.map +1 -1
  65. package/dist/Combobox/ComboboxCancel.js +1 -0
  66. package/dist/Combobox/ComboboxCancel.js.map +1 -1
  67. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  68. package/dist/Combobox/ComboboxContent.js.map +1 -1
  69. package/dist/Combobox/ComboboxContentImpl.cjs +2 -2
  70. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  71. package/dist/Combobox/ComboboxContentImpl.js +2 -2
  72. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  73. package/dist/Combobox/ComboboxEmpty.cjs.map +1 -1
  74. package/dist/Combobox/ComboboxEmpty.js.map +1 -1
  75. package/dist/Combobox/ComboboxGroup.cjs +1 -1
  76. package/dist/Combobox/ComboboxGroup.js +1 -1
  77. package/dist/Combobox/ComboboxInput.cjs +9 -1
  78. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  79. package/dist/Combobox/ComboboxInput.js +9 -1
  80. package/dist/Combobox/ComboboxInput.js.map +1 -1
  81. package/dist/Combobox/ComboboxItem.cjs +4 -3
  82. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  83. package/dist/Combobox/ComboboxItem.js +4 -3
  84. package/dist/Combobox/ComboboxItem.js.map +1 -1
  85. package/dist/Combobox/ComboboxLabel.cjs +1 -1
  86. package/dist/Combobox/ComboboxLabel.js +1 -1
  87. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  88. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  89. package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
  90. package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
  91. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  92. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  93. package/dist/ContextMenu/ContextMenuPortal.cjs.map +1 -1
  94. package/dist/ContextMenu/ContextMenuPortal.js.map +1 -1
  95. package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
  96. package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
  97. package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
  98. package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
  99. package/dist/ContextMenu/ContextMenuSub.js +1 -1
  100. package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
  101. package/dist/ContextMenu/ContextMenuTrigger.cjs +2 -2
  102. package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
  103. package/dist/ContextMenu/ContextMenuTrigger.js +2 -2
  104. package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
  105. package/dist/DateField/DateFieldInput.cjs.map +1 -1
  106. package/dist/DateField/DateFieldInput.js.map +1 -1
  107. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  108. package/dist/DateField/DateFieldRoot.js.map +1 -1
  109. package/dist/DatePicker/DatePickerArrow.cjs.map +1 -1
  110. package/dist/DatePicker/DatePickerArrow.js.map +1 -1
  111. package/dist/DatePicker/DatePickerCalendar.cjs.map +1 -1
  112. package/dist/DatePicker/DatePickerCalendar.js.map +1 -1
  113. package/dist/DatePicker/DatePickerCell.cjs.map +1 -1
  114. package/dist/DatePicker/DatePickerCell.js.map +1 -1
  115. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  116. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  117. package/dist/DatePicker/DatePickerClose.cjs.map +1 -1
  118. package/dist/DatePicker/DatePickerClose.js.map +1 -1
  119. package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
  120. package/dist/DatePicker/DatePickerContent.js.map +1 -1
  121. package/dist/DatePicker/DatePickerGrid.cjs.map +1 -1
  122. package/dist/DatePicker/DatePickerGrid.js.map +1 -1
  123. package/dist/DatePicker/DatePickerGridBody.cjs.map +1 -1
  124. package/dist/DatePicker/DatePickerGridBody.js.map +1 -1
  125. package/dist/DatePicker/DatePickerGridHead.cjs.map +1 -1
  126. package/dist/DatePicker/DatePickerGridHead.js.map +1 -1
  127. package/dist/DatePicker/DatePickerGridRow.cjs.map +1 -1
  128. package/dist/DatePicker/DatePickerGridRow.js.map +1 -1
  129. package/dist/DatePicker/DatePickerHeadCell.cjs.map +1 -1
  130. package/dist/DatePicker/DatePickerHeadCell.js.map +1 -1
  131. package/dist/DatePicker/DatePickerHeader.cjs.map +1 -1
  132. package/dist/DatePicker/DatePickerHeader.js.map +1 -1
  133. package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
  134. package/dist/DatePicker/DatePickerHeading.js.map +1 -1
  135. package/dist/DatePicker/DatePickerInput.cjs.map +1 -1
  136. package/dist/DatePicker/DatePickerInput.js.map +1 -1
  137. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  138. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  139. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  140. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  141. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  142. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  143. package/dist/DatePicker/DatePickerTrigger.cjs.map +1 -1
  144. package/dist/DatePicker/DatePickerTrigger.js.map +1 -1
  145. package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
  146. package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
  147. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  148. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  149. package/dist/DateRangePicker/DateRangePickerAnchor.cjs.map +1 -1
  150. package/dist/DateRangePicker/DateRangePickerAnchor.js.map +1 -1
  151. package/dist/DateRangePicker/DateRangePickerArrow.cjs.map +1 -1
  152. package/dist/DateRangePicker/DateRangePickerArrow.js.map +1 -1
  153. package/dist/DateRangePicker/DateRangePickerCalendar.cjs +1 -0
  154. package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
  155. package/dist/DateRangePicker/DateRangePickerCalendar.js +1 -0
  156. package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
  157. package/dist/DateRangePicker/DateRangePickerCell.cjs.map +1 -1
  158. package/dist/DateRangePicker/DateRangePickerCell.js.map +1 -1
  159. package/dist/DateRangePicker/DateRangePickerClose.cjs.map +1 -1
  160. package/dist/DateRangePicker/DateRangePickerClose.js.map +1 -1
  161. package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
  162. package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
  163. package/dist/DateRangePicker/DateRangePickerGrid.cjs.map +1 -1
  164. package/dist/DateRangePicker/DateRangePickerGrid.js.map +1 -1
  165. package/dist/DateRangePicker/DateRangePickerGridBody.cjs.map +1 -1
  166. package/dist/DateRangePicker/DateRangePickerGridBody.js.map +1 -1
  167. package/dist/DateRangePicker/DateRangePickerGridHead.cjs.map +1 -1
  168. package/dist/DateRangePicker/DateRangePickerGridHead.js.map +1 -1
  169. package/dist/DateRangePicker/DateRangePickerGridRow.cjs.map +1 -1
  170. package/dist/DateRangePicker/DateRangePickerGridRow.js.map +1 -1
  171. package/dist/DateRangePicker/DateRangePickerHeadCell.cjs.map +1 -1
  172. package/dist/DateRangePicker/DateRangePickerHeadCell.js.map +1 -1
  173. package/dist/DateRangePicker/DateRangePickerHeader.cjs.map +1 -1
  174. package/dist/DateRangePicker/DateRangePickerHeader.js.map +1 -1
  175. package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
  176. package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
  177. package/dist/DateRangePicker/DateRangePickerInput.cjs.map +1 -1
  178. package/dist/DateRangePicker/DateRangePickerInput.js.map +1 -1
  179. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  180. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  181. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  182. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  183. package/dist/DateRangePicker/DateRangePickerRoot.cjs +3 -0
  184. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  185. package/dist/DateRangePicker/DateRangePickerRoot.js +3 -0
  186. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  187. package/dist/DateRangePicker/DateRangePickerTrigger.cjs.map +1 -1
  188. package/dist/DateRangePicker/DateRangePickerTrigger.js.map +1 -1
  189. package/dist/Dialog/DialogClose.cjs +1 -1
  190. package/dist/Dialog/DialogClose.cjs.map +1 -1
  191. package/dist/Dialog/DialogClose.js +1 -1
  192. package/dist/Dialog/DialogClose.js.map +1 -1
  193. package/dist/Dialog/DialogContent.cjs.map +1 -1
  194. package/dist/Dialog/DialogContent.js.map +1 -1
  195. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  196. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  197. package/dist/Dialog/DialogContentModal.cjs.map +1 -1
  198. package/dist/Dialog/DialogContentModal.js.map +1 -1
  199. package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
  200. package/dist/Dialog/DialogContentNonModal.js.map +1 -1
  201. package/dist/Dialog/DialogDescription.cjs.map +1 -1
  202. package/dist/Dialog/DialogDescription.js.map +1 -1
  203. package/dist/Dialog/DialogOverlay.cjs.map +1 -1
  204. package/dist/Dialog/DialogOverlay.js.map +1 -1
  205. package/dist/Dialog/DialogOverlayImpl.cjs.map +1 -1
  206. package/dist/Dialog/DialogOverlayImpl.js.map +1 -1
  207. package/dist/Dialog/DialogRoot.cjs.map +1 -1
  208. package/dist/Dialog/DialogRoot.js.map +1 -1
  209. package/dist/Dialog/DialogTitle.cjs.map +1 -1
  210. package/dist/Dialog/DialogTitle.js.map +1 -1
  211. package/dist/Dialog/DialogTrigger.cjs +1 -1
  212. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  213. package/dist/Dialog/DialogTrigger.js +1 -1
  214. package/dist/Dialog/DialogTrigger.js.map +1 -1
  215. package/dist/Dialog/utils.cjs.map +1 -1
  216. package/dist/Dialog/utils.js.map +1 -1
  217. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  218. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  219. package/dist/DismissableLayer/utils.cjs +4 -3
  220. package/dist/DismissableLayer/utils.cjs.map +1 -1
  221. package/dist/DismissableLayer/utils.js +4 -3
  222. package/dist/DismissableLayer/utils.js.map +1 -1
  223. package/dist/DropdownMenu/DropdownMenuContent.cjs +1 -1
  224. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  225. package/dist/DropdownMenu/DropdownMenuContent.js +1 -1
  226. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  227. package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
  228. package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
  229. package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
  230. package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
  231. package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
  232. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  233. package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
  234. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  235. package/dist/DropdownMenu/DropdownMenuTrigger.cjs +1 -1
  236. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  237. package/dist/DropdownMenu/DropdownMenuTrigger.js +1 -1
  238. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  239. package/dist/Editable/EditableInput.cjs.map +1 -1
  240. package/dist/Editable/EditableInput.js.map +1 -1
  241. package/dist/Editable/EditablePreview.cjs.map +1 -1
  242. package/dist/Editable/EditablePreview.js.map +1 -1
  243. package/dist/Editable/EditableRoot.cjs.map +1 -1
  244. package/dist/Editable/EditableRoot.js.map +1 -1
  245. package/dist/FocusScope/FocusScope.cjs +1 -1
  246. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  247. package/dist/FocusScope/FocusScope.js +1 -1
  248. package/dist/FocusScope/FocusScope.js.map +1 -1
  249. package/dist/HoverCard/HoverCardContent.cjs +1 -1
  250. package/dist/HoverCard/HoverCardContent.cjs.map +1 -1
  251. package/dist/HoverCard/HoverCardContent.js +1 -1
  252. package/dist/HoverCard/HoverCardContent.js.map +1 -1
  253. package/dist/HoverCard/HoverCardContentImpl.cjs +3 -3
  254. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  255. package/dist/HoverCard/HoverCardContentImpl.js +3 -3
  256. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  257. package/dist/HoverCard/HoverCardRoot.cjs +1 -1
  258. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  259. package/dist/HoverCard/HoverCardRoot.js +1 -1
  260. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  261. package/dist/HoverCard/HoverCardTrigger.cjs +1 -1
  262. package/dist/HoverCard/HoverCardTrigger.cjs.map +1 -1
  263. package/dist/HoverCard/HoverCardTrigger.js +1 -1
  264. package/dist/HoverCard/HoverCardTrigger.js.map +1 -1
  265. package/dist/Listbox/ListboxContent.cjs +1 -1
  266. package/dist/Listbox/ListboxContent.cjs.map +1 -1
  267. package/dist/Listbox/ListboxContent.js +1 -1
  268. package/dist/Listbox/ListboxContent.js.map +1 -1
  269. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  270. package/dist/Listbox/ListboxFilter.js.map +1 -1
  271. package/dist/Listbox/ListboxItem.cjs +2 -2
  272. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  273. package/dist/Listbox/ListboxItem.js +2 -2
  274. package/dist/Listbox/ListboxItem.js.map +1 -1
  275. package/dist/Listbox/ListboxItemIndicator.cjs.map +1 -1
  276. package/dist/Listbox/ListboxItemIndicator.js.map +1 -1
  277. package/dist/Listbox/ListboxRoot.cjs +3 -3
  278. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  279. package/dist/Listbox/ListboxRoot.js +3 -3
  280. package/dist/Listbox/ListboxRoot.js.map +1 -1
  281. package/dist/Listbox/ListboxVirtualizer.cjs +4 -4
  282. package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
  283. package/dist/Listbox/ListboxVirtualizer.js +4 -4
  284. package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
  285. package/dist/Menu/MenuAnchor.cjs.map +1 -1
  286. package/dist/Menu/MenuAnchor.js.map +1 -1
  287. package/dist/Menu/MenuCheckboxItem.cjs +1 -1
  288. package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
  289. package/dist/Menu/MenuCheckboxItem.js +1 -1
  290. package/dist/Menu/MenuCheckboxItem.js.map +1 -1
  291. package/dist/Menu/MenuContent.cjs.map +1 -1
  292. package/dist/Menu/MenuContent.js.map +1 -1
  293. package/dist/Menu/MenuContentImpl.cjs +2 -2
  294. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  295. package/dist/Menu/MenuContentImpl.js +2 -2
  296. package/dist/Menu/MenuContentImpl.js.map +1 -1
  297. package/dist/Menu/MenuItem.cjs.map +1 -1
  298. package/dist/Menu/MenuItem.js.map +1 -1
  299. package/dist/Menu/MenuItemImpl.cjs +1 -1
  300. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  301. package/dist/Menu/MenuItemImpl.js +1 -1
  302. package/dist/Menu/MenuItemImpl.js.map +1 -1
  303. package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
  304. package/dist/Menu/MenuItemIndicator.js.map +1 -1
  305. package/dist/Menu/MenuRadioItem.cjs +1 -1
  306. package/dist/Menu/MenuRadioItem.cjs.map +1 -1
  307. package/dist/Menu/MenuRadioItem.js +1 -1
  308. package/dist/Menu/MenuRadioItem.js.map +1 -1
  309. package/dist/Menu/MenuRoot.cjs +2 -2
  310. package/dist/Menu/MenuRoot.cjs.map +1 -1
  311. package/dist/Menu/MenuRoot.js +2 -2
  312. package/dist/Menu/MenuRoot.js.map +1 -1
  313. package/dist/Menu/MenuRootContentModal.cjs.map +1 -1
  314. package/dist/Menu/MenuRootContentModal.js.map +1 -1
  315. package/dist/Menu/MenuRootContentNonModal.cjs.map +1 -1
  316. package/dist/Menu/MenuRootContentNonModal.js.map +1 -1
  317. package/dist/Menu/MenuSub.cjs +1 -1
  318. package/dist/Menu/MenuSub.cjs.map +1 -1
  319. package/dist/Menu/MenuSub.js +1 -1
  320. package/dist/Menu/MenuSub.js.map +1 -1
  321. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  322. package/dist/Menu/MenuSubContent.js.map +1 -1
  323. package/dist/Menu/MenuSubTrigger.cjs +1 -1
  324. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  325. package/dist/Menu/MenuSubTrigger.js +1 -1
  326. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  327. package/dist/Menubar/MenubarContent.cjs +1 -1
  328. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  329. package/dist/Menubar/MenubarContent.js +1 -1
  330. package/dist/Menubar/MenubarContent.js.map +1 -1
  331. package/dist/Menubar/MenubarGroup.cjs.map +1 -1
  332. package/dist/Menubar/MenubarGroup.js.map +1 -1
  333. package/dist/Menubar/MenubarMenu.cjs.map +1 -1
  334. package/dist/Menubar/MenubarMenu.js.map +1 -1
  335. package/dist/Menubar/MenubarRoot.cjs.map +1 -1
  336. package/dist/Menubar/MenubarRoot.js.map +1 -1
  337. package/dist/Menubar/MenubarSub.cjs +1 -1
  338. package/dist/Menubar/MenubarSub.cjs.map +1 -1
  339. package/dist/Menubar/MenubarSub.js +1 -1
  340. package/dist/Menubar/MenubarSub.js.map +1 -1
  341. package/dist/Menubar/MenubarSubContent.cjs.map +1 -1
  342. package/dist/Menubar/MenubarSubContent.js.map +1 -1
  343. package/dist/Menubar/MenubarTrigger.cjs +1 -1
  344. package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
  345. package/dist/Menubar/MenubarTrigger.js +1 -1
  346. package/dist/Menubar/MenubarTrigger.js.map +1 -1
  347. package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
  348. package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
  349. package/dist/NavigationMenu/NavigationMenuContent.js +1 -1
  350. package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
  351. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
  352. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  353. package/dist/NavigationMenu/NavigationMenuContentImpl.js +1 -1
  354. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  355. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  356. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  357. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  358. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  359. package/dist/NavigationMenu/NavigationMenuLink.cjs.map +1 -1
  360. package/dist/NavigationMenu/NavigationMenuLink.js.map +1 -1
  361. package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
  362. package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
  363. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  364. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  365. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  366. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  367. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  368. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  369. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  370. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  371. package/dist/NumberField/NumberFieldDecrement.cjs +1 -1
  372. package/dist/NumberField/NumberFieldDecrement.cjs.map +1 -1
  373. package/dist/NumberField/NumberFieldDecrement.js +1 -1
  374. package/dist/NumberField/NumberFieldDecrement.js.map +1 -1
  375. package/dist/NumberField/NumberFieldIncrement.cjs.map +1 -1
  376. package/dist/NumberField/NumberFieldIncrement.js.map +1 -1
  377. package/dist/NumberField/NumberFieldInput.cjs +1 -1
  378. package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
  379. package/dist/NumberField/NumberFieldInput.js +1 -1
  380. package/dist/NumberField/NumberFieldInput.js.map +1 -1
  381. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  382. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  383. package/dist/NumberField/utils.cjs.map +1 -1
  384. package/dist/NumberField/utils.js +1 -1
  385. package/dist/NumberField/utils.js.map +1 -1
  386. package/dist/Pagination/PaginationFirst.cjs.map +1 -1
  387. package/dist/Pagination/PaginationFirst.js.map +1 -1
  388. package/dist/Pagination/PaginationLast.cjs.map +1 -1
  389. package/dist/Pagination/PaginationLast.js.map +1 -1
  390. package/dist/Pagination/PaginationListItem.cjs.map +1 -1
  391. package/dist/Pagination/PaginationListItem.js.map +1 -1
  392. package/dist/Pagination/PaginationNext.cjs.map +1 -1
  393. package/dist/Pagination/PaginationNext.js.map +1 -1
  394. package/dist/Pagination/PaginationPrev.cjs.map +1 -1
  395. package/dist/Pagination/PaginationPrev.js.map +1 -1
  396. package/dist/Pagination/PaginationRoot.cjs.map +1 -1
  397. package/dist/Pagination/PaginationRoot.js.map +1 -1
  398. package/dist/Pagination/utils.cjs.map +1 -1
  399. package/dist/Pagination/utils.js.map +1 -1
  400. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  401. package/dist/PinInput/PinInputInput.js.map +1 -1
  402. package/dist/PinInput/PinInputRoot.cjs.map +1 -1
  403. package/dist/PinInput/PinInputRoot.js.map +1 -1
  404. package/dist/Popover/PopoverAnchor.cjs.map +1 -1
  405. package/dist/Popover/PopoverAnchor.js.map +1 -1
  406. package/dist/Popover/PopoverClose.cjs.map +1 -1
  407. package/dist/Popover/PopoverClose.js.map +1 -1
  408. package/dist/Popover/PopoverContent.cjs.map +1 -1
  409. package/dist/Popover/PopoverContent.js.map +1 -1
  410. package/dist/Popover/PopoverContentImpl.cjs +1 -1
  411. package/dist/Popover/PopoverContentImpl.cjs.map +1 -1
  412. package/dist/Popover/PopoverContentImpl.js +1 -1
  413. package/dist/Popover/PopoverContentImpl.js.map +1 -1
  414. package/dist/Popover/PopoverContentModal.cjs +1 -1
  415. package/dist/Popover/PopoverContentModal.cjs.map +1 -1
  416. package/dist/Popover/PopoverContentModal.js +1 -1
  417. package/dist/Popover/PopoverContentModal.js.map +1 -1
  418. package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
  419. package/dist/Popover/PopoverContentNonModal.js.map +1 -1
  420. package/dist/Popover/PopoverRoot.cjs +1 -1
  421. package/dist/Popover/PopoverRoot.cjs.map +1 -1
  422. package/dist/Popover/PopoverRoot.js +1 -1
  423. package/dist/Popover/PopoverRoot.js.map +1 -1
  424. package/dist/Popover/PopoverTrigger.cjs +1 -1
  425. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  426. package/dist/Popover/PopoverTrigger.js +1 -1
  427. package/dist/Popover/PopoverTrigger.js.map +1 -1
  428. package/dist/Popper/PopperAnchor.cjs.map +1 -1
  429. package/dist/Popper/PopperAnchor.js.map +1 -1
  430. package/dist/Popper/PopperArrow.cjs.map +1 -1
  431. package/dist/Popper/PopperArrow.js.map +1 -1
  432. package/dist/Popper/PopperContent.cjs +2 -2
  433. package/dist/Popper/PopperContent.cjs.map +1 -1
  434. package/dist/Popper/PopperContent.js +2 -2
  435. package/dist/Popper/PopperContent.js.map +1 -1
  436. package/dist/Popper/PopperRoot.cjs.map +1 -1
  437. package/dist/Popper/PopperRoot.js.map +1 -1
  438. package/dist/Presence/Presence.cjs +1 -1
  439. package/dist/Presence/Presence.cjs.map +1 -1
  440. package/dist/Presence/Presence.js +1 -1
  441. package/dist/Presence/Presence.js.map +1 -1
  442. package/dist/Presence/usePresence.cjs +2 -2
  443. package/dist/Presence/usePresence.cjs.map +1 -1
  444. package/dist/Presence/usePresence.js +2 -2
  445. package/dist/Presence/usePresence.js.map +1 -1
  446. package/dist/Primitive/Primitive.cjs.map +1 -1
  447. package/dist/Primitive/Primitive.js.map +1 -1
  448. package/dist/Primitive/Slot.cjs.map +1 -1
  449. package/dist/Primitive/Slot.js.map +1 -1
  450. package/dist/Primitive/usePrimitiveElement.cjs.map +1 -1
  451. package/dist/Primitive/usePrimitiveElement.js.map +1 -1
  452. package/dist/Progress/ProgressIndicator.cjs.map +1 -1
  453. package/dist/Progress/ProgressIndicator.js.map +1 -1
  454. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  455. package/dist/Progress/ProgressRoot.js.map +1 -1
  456. package/dist/RadioGroup/Radio.cjs.map +1 -1
  457. package/dist/RadioGroup/Radio.js.map +1 -1
  458. package/dist/RadioGroup/RadioGroupIndicator.cjs.map +1 -1
  459. package/dist/RadioGroup/RadioGroupIndicator.js.map +1 -1
  460. package/dist/RadioGroup/RadioGroupItem.cjs +1 -1
  461. package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
  462. package/dist/RadioGroup/RadioGroupItem.js +1 -1
  463. package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
  464. package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
  465. package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
  466. package/dist/RadioGroup/utils.cjs.map +1 -1
  467. package/dist/RadioGroup/utils.js.map +1 -1
  468. package/dist/RangeCalendar/RangeCalendarCell.cjs +1 -1
  469. package/dist/RangeCalendar/RangeCalendarCell.js +1 -1
  470. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +2 -2
  471. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  472. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +2 -2
  473. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  474. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  475. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  476. package/dist/RangeCalendar/RangeCalendarHeading.cjs +1 -1
  477. package/dist/RangeCalendar/RangeCalendarHeading.js +1 -1
  478. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  479. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  480. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  481. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  482. package/dist/RangeCalendar/RangeCalendarRoot.cjs +8 -3
  483. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  484. package/dist/RangeCalendar/RangeCalendarRoot.js +8 -3
  485. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  486. package/dist/RangeCalendar/useRangeCalendar.cjs +8 -2
  487. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  488. package/dist/RangeCalendar/useRangeCalendar.js +8 -2
  489. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  490. package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
  491. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  492. package/dist/RovingFocus/RovingFocusGroup.js +1 -1
  493. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  494. package/dist/RovingFocus/RovingFocusItem.cjs +1 -1
  495. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  496. package/dist/RovingFocus/RovingFocusItem.js +1 -1
  497. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  498. package/dist/ScrollArea/ScrollAreaCorner.cjs.map +1 -1
  499. package/dist/ScrollArea/ScrollAreaCorner.js.map +1 -1
  500. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs +1 -1
  501. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
  502. package/dist/ScrollArea/ScrollAreaCornerImpl.js +1 -1
  503. package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
  504. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  505. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  506. package/dist/ScrollArea/ScrollAreaScrollbar.cjs +1 -1
  507. package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
  508. package/dist/ScrollArea/ScrollAreaScrollbar.js +1 -1
  509. package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
  510. package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
  511. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
  512. package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
  513. package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
  514. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  515. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  516. package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
  517. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
  518. package/dist/ScrollArea/ScrollAreaScrollbarVisible.cjs.map +1 -1
  519. package/dist/ScrollArea/ScrollAreaScrollbarVisible.js.map +1 -1
  520. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
  521. package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
  522. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
  523. package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
  524. package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
  525. package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
  526. package/dist/ScrollArea/ScrollAreaViewport.cjs +1 -1
  527. package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
  528. package/dist/ScrollArea/ScrollAreaViewport.js +1 -1
  529. package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
  530. package/dist/ScrollArea/utils.cjs.map +1 -1
  531. package/dist/ScrollArea/utils.js.map +1 -1
  532. package/dist/Select/BubbleSelect.cjs.map +1 -1
  533. package/dist/Select/BubbleSelect.js.map +1 -1
  534. package/dist/Select/SelectArrow.cjs +1 -1
  535. package/dist/Select/SelectArrow.cjs.map +1 -1
  536. package/dist/Select/SelectArrow.js +1 -1
  537. package/dist/Select/SelectArrow.js.map +1 -1
  538. package/dist/Select/SelectContent.cjs.map +1 -1
  539. package/dist/Select/SelectContent.js.map +1 -1
  540. package/dist/Select/SelectContentImpl.cjs +4 -4
  541. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  542. package/dist/Select/SelectContentImpl.js +4 -4
  543. package/dist/Select/SelectContentImpl.js.map +1 -1
  544. package/dist/Select/SelectItem.cjs +1 -1
  545. package/dist/Select/SelectItem.cjs.map +1 -1
  546. package/dist/Select/SelectItem.js +1 -1
  547. package/dist/Select/SelectItem.js.map +1 -1
  548. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  549. package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
  550. package/dist/Select/SelectItemAlignedPosition.js +1 -1
  551. package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
  552. package/dist/Select/SelectItemIndicator.cjs.map +1 -1
  553. package/dist/Select/SelectItemIndicator.js.map +1 -1
  554. package/dist/Select/SelectItemText.cjs.map +1 -1
  555. package/dist/Select/SelectItemText.js.map +1 -1
  556. package/dist/Select/SelectPopperPosition.cjs +1 -1
  557. package/dist/Select/SelectPopperPosition.cjs.map +1 -1
  558. package/dist/Select/SelectPopperPosition.js +1 -1
  559. package/dist/Select/SelectPopperPosition.js.map +1 -1
  560. package/dist/Select/SelectProvider.cjs.map +1 -1
  561. package/dist/Select/SelectProvider.js.map +1 -1
  562. package/dist/Select/SelectRoot.cjs +2 -2
  563. package/dist/Select/SelectRoot.cjs.map +1 -1
  564. package/dist/Select/SelectRoot.js +2 -2
  565. package/dist/Select/SelectRoot.js.map +1 -1
  566. package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
  567. package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
  568. package/dist/Select/SelectScrollDownButton.cjs +1 -1
  569. package/dist/Select/SelectScrollDownButton.cjs.map +1 -1
  570. package/dist/Select/SelectScrollDownButton.js +1 -1
  571. package/dist/Select/SelectScrollDownButton.js.map +1 -1
  572. package/dist/Select/SelectTrigger.cjs +3 -3
  573. package/dist/Select/SelectTrigger.cjs.map +1 -1
  574. package/dist/Select/SelectTrigger.js +3 -3
  575. package/dist/Select/SelectTrigger.js.map +1 -1
  576. package/dist/Select/SelectValue.cjs +2 -1
  577. package/dist/Select/SelectValue.cjs.map +1 -1
  578. package/dist/Select/SelectValue.js +2 -1
  579. package/dist/Select/SelectValue.js.map +1 -1
  580. package/dist/Select/SelectViewport.cjs +1 -1
  581. package/dist/Select/SelectViewport.cjs.map +1 -1
  582. package/dist/Select/SelectViewport.js +1 -1
  583. package/dist/Select/SelectViewport.js.map +1 -1
  584. package/dist/Select/utils.cjs +4 -0
  585. package/dist/Select/utils.cjs.map +1 -1
  586. package/dist/Select/utils.js +4 -1
  587. package/dist/Select/utils.js.map +1 -1
  588. package/dist/Slider/SliderHorizontal.cjs.map +1 -1
  589. package/dist/Slider/SliderHorizontal.js.map +1 -1
  590. package/dist/Slider/SliderRange.cjs.map +1 -1
  591. package/dist/Slider/SliderRange.js.map +1 -1
  592. package/dist/Slider/SliderRoot.cjs +1 -1
  593. package/dist/Slider/SliderRoot.cjs.map +1 -1
  594. package/dist/Slider/SliderRoot.js +1 -1
  595. package/dist/Slider/SliderRoot.js.map +1 -1
  596. package/dist/Slider/SliderThumb.cjs +1 -1
  597. package/dist/Slider/SliderThumb.cjs.map +1 -1
  598. package/dist/Slider/SliderThumb.js +1 -1
  599. package/dist/Slider/SliderThumb.js.map +1 -1
  600. package/dist/Slider/SliderThumbImpl.cjs +1 -1
  601. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  602. package/dist/Slider/SliderThumbImpl.js +1 -1
  603. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  604. package/dist/Slider/SliderVertical.cjs.map +1 -1
  605. package/dist/Slider/SliderVertical.js.map +1 -1
  606. package/dist/Splitter/SplitterGroup.cjs +5 -5
  607. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  608. package/dist/Splitter/SplitterGroup.js +5 -5
  609. package/dist/Splitter/SplitterGroup.js.map +1 -1
  610. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  611. package/dist/Splitter/SplitterPanel.js.map +1 -1
  612. package/dist/Splitter/SplitterResizeHandle.cjs +1 -1
  613. package/dist/Splitter/SplitterResizeHandle.cjs.map +1 -1
  614. package/dist/Splitter/SplitterResizeHandle.js +1 -1
  615. package/dist/Splitter/SplitterResizeHandle.js.map +1 -1
  616. package/dist/Stepper/StepperDescription.cjs +1 -1
  617. package/dist/Stepper/StepperDescription.cjs.map +1 -1
  618. package/dist/Stepper/StepperDescription.js +1 -1
  619. package/dist/Stepper/StepperDescription.js.map +1 -1
  620. package/dist/Stepper/StepperIndicator.cjs.map +1 -1
  621. package/dist/Stepper/StepperIndicator.js.map +1 -1
  622. package/dist/Stepper/StepperItem.cjs.map +1 -1
  623. package/dist/Stepper/StepperItem.js.map +1 -1
  624. package/dist/Stepper/StepperRoot.cjs.map +1 -1
  625. package/dist/Stepper/StepperRoot.js.map +1 -1
  626. package/dist/Stepper/StepperSeparator.cjs.map +1 -1
  627. package/dist/Stepper/StepperSeparator.js.map +1 -1
  628. package/dist/Stepper/StepperTitle.cjs.map +1 -1
  629. package/dist/Stepper/StepperTitle.js.map +1 -1
  630. package/dist/Stepper/StepperTrigger.cjs +1 -1
  631. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  632. package/dist/Stepper/StepperTrigger.js +1 -1
  633. package/dist/Stepper/StepperTrigger.js.map +1 -1
  634. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  635. package/dist/Switch/SwitchRoot.js.map +1 -1
  636. package/dist/Switch/SwitchThumb.cjs.map +1 -1
  637. package/dist/Switch/SwitchThumb.js.map +1 -1
  638. package/dist/Tabs/TabsContent.cjs +1 -1
  639. package/dist/Tabs/TabsContent.cjs.map +1 -1
  640. package/dist/Tabs/TabsContent.js +1 -1
  641. package/dist/Tabs/TabsContent.js.map +1 -1
  642. package/dist/Tabs/TabsIndicator.cjs.map +1 -1
  643. package/dist/Tabs/TabsIndicator.js.map +1 -1
  644. package/dist/Tabs/TabsList.cjs +1 -1
  645. package/dist/Tabs/TabsList.cjs.map +1 -1
  646. package/dist/Tabs/TabsList.js +1 -1
  647. package/dist/Tabs/TabsList.js.map +1 -1
  648. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  649. package/dist/Tabs/TabsRoot.js.map +1 -1
  650. package/dist/Tabs/TabsTrigger.cjs.map +1 -1
  651. package/dist/Tabs/TabsTrigger.js.map +1 -1
  652. package/dist/TagsInput/TagsInputClear.cjs +1 -1
  653. package/dist/TagsInput/TagsInputClear.cjs.map +1 -1
  654. package/dist/TagsInput/TagsInputClear.js +1 -1
  655. package/dist/TagsInput/TagsInputClear.js.map +1 -1
  656. package/dist/TagsInput/TagsInputInput.cjs +1 -1
  657. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  658. package/dist/TagsInput/TagsInputInput.js +1 -1
  659. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  660. package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
  661. package/dist/TagsInput/TagsInputItem.js.map +1 -1
  662. package/dist/TagsInput/TagsInputItemDelete.cjs +1 -1
  663. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  664. package/dist/TagsInput/TagsInputItemDelete.js +1 -1
  665. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  666. package/dist/TagsInput/TagsInputItemText.cjs +1 -1
  667. package/dist/TagsInput/TagsInputItemText.cjs.map +1 -1
  668. package/dist/TagsInput/TagsInputItemText.js +1 -1
  669. package/dist/TagsInput/TagsInputItemText.js.map +1 -1
  670. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  671. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  672. package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
  673. package/dist/TimeField/TimeFieldInput.js.map +1 -1
  674. package/dist/TimeField/TimeFieldRoot.cjs +1 -1
  675. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  676. package/dist/TimeField/TimeFieldRoot.js +1 -1
  677. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  678. package/dist/Toast/ToastAnnounce.cjs +1 -1
  679. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  680. package/dist/Toast/ToastAnnounce.js +1 -1
  681. package/dist/Toast/ToastAnnounce.js.map +1 -1
  682. package/dist/Toast/ToastProvider.cjs.map +1 -1
  683. package/dist/Toast/ToastProvider.js.map +1 -1
  684. package/dist/Toast/ToastRoot.cjs +28 -20
  685. package/dist/Toast/ToastRoot.cjs.map +1 -1
  686. package/dist/Toast/ToastRoot.js +28 -20
  687. package/dist/Toast/ToastRoot.js.map +1 -1
  688. package/dist/Toast/ToastRootImpl.cjs +3 -3
  689. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  690. package/dist/Toast/ToastRootImpl.js +3 -3
  691. package/dist/Toast/ToastRootImpl.js.map +1 -1
  692. package/dist/Toast/ToastViewport.cjs +2 -2
  693. package/dist/Toast/ToastViewport.cjs.map +1 -1
  694. package/dist/Toast/ToastViewport.js +2 -2
  695. package/dist/Toast/ToastViewport.js.map +1 -1
  696. package/dist/Toggle/Toggle.cjs.map +1 -1
  697. package/dist/Toggle/Toggle.js.map +1 -1
  698. package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  699. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  700. package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
  701. package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
  702. package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
  703. package/dist/Toolbar/ToolbarRoot.js.map +1 -1
  704. package/dist/Toolbar/ToolbarSeparator.cjs +1 -1
  705. package/dist/Toolbar/ToolbarSeparator.js +1 -1
  706. package/dist/Toolbar/ToolbarToggleGroup.cjs +1 -1
  707. package/dist/Toolbar/ToolbarToggleGroup.cjs.map +1 -1
  708. package/dist/Toolbar/ToolbarToggleGroup.js +1 -1
  709. package/dist/Toolbar/ToolbarToggleGroup.js.map +1 -1
  710. package/dist/Toolbar/ToolbarToggleItem.cjs.map +1 -1
  711. package/dist/Toolbar/ToolbarToggleItem.js.map +1 -1
  712. package/dist/Tooltip/TooltipContent.cjs +1 -1
  713. package/dist/Tooltip/TooltipContent.cjs.map +1 -1
  714. package/dist/Tooltip/TooltipContent.js +1 -1
  715. package/dist/Tooltip/TooltipContent.js.map +1 -1
  716. package/dist/Tooltip/TooltipContentHoverable.cjs.map +1 -1
  717. package/dist/Tooltip/TooltipContentHoverable.js.map +1 -1
  718. package/dist/Tooltip/TooltipContentImpl.cjs +3 -3
  719. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  720. package/dist/Tooltip/TooltipContentImpl.js +3 -3
  721. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  722. package/dist/Tooltip/TooltipRoot.cjs +1 -1
  723. package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
  724. package/dist/Tooltip/TooltipRoot.js +1 -1
  725. package/dist/Tooltip/TooltipRoot.js.map +1 -1
  726. package/dist/Tooltip/TooltipTrigger.cjs +4 -1
  727. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  728. package/dist/Tooltip/TooltipTrigger.js +4 -1
  729. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  730. package/dist/Tree/TreeItem.cjs.map +1 -1
  731. package/dist/Tree/TreeItem.js.map +1 -1
  732. package/dist/Tree/TreeRoot.cjs +1 -1
  733. package/dist/Tree/TreeRoot.cjs.map +1 -1
  734. package/dist/Tree/TreeRoot.js +1 -1
  735. package/dist/Tree/TreeRoot.js.map +1 -1
  736. package/dist/Tree/TreeVirtualizer.cjs +3 -3
  737. package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
  738. package/dist/Tree/TreeVirtualizer.js +3 -3
  739. package/dist/Tree/TreeVirtualizer.js.map +1 -1
  740. package/dist/Tree/utils.cjs.map +1 -1
  741. package/dist/Tree/utils.js.map +1 -1
  742. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs.map +1 -1
  743. package/dist/VisuallyHidden/VisuallyHiddenInput.js.map +1 -1
  744. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
  745. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
  746. package/dist/component/BaseSeparator.cjs.map +1 -1
  747. package/dist/component/BaseSeparator.js.map +1 -1
  748. package/dist/composables/useWindowSplitterBehavior.cjs.map +1 -1
  749. package/dist/composables/useWindowSplitterBehavior.js.map +1 -1
  750. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs +3 -3
  751. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs.map +1 -1
  752. package/dist/composables/useWindowSplitterPanelGroupBehavior.js +3 -3
  753. package/dist/composables/useWindowSplitterPanelGroupBehavior.js.map +1 -1
  754. package/dist/date/calendar.cjs +1 -1
  755. package/dist/date/calendar.cjs.map +1 -1
  756. package/dist/date/calendar.js +1 -1
  757. package/dist/date/calendar.js.map +1 -1
  758. package/dist/date/comparators.cjs +6 -4
  759. package/dist/date/comparators.cjs.map +1 -1
  760. package/dist/date/comparators.js +6 -4
  761. package/dist/date/comparators.js.map +1 -1
  762. package/dist/date/parser.cjs.map +1 -1
  763. package/dist/date/parser.js.map +1 -1
  764. package/dist/date/useDateField.cjs.map +1 -1
  765. package/dist/date/useDateField.js.map +1 -1
  766. package/dist/date/utils.cjs +7 -7
  767. package/dist/date/utils.cjs.map +1 -1
  768. package/dist/date/utils.js +7 -7
  769. package/dist/date/utils.js.map +1 -1
  770. package/dist/date.d.ts +2 -2
  771. package/dist/index.cjs +347 -347
  772. package/dist/index.cjs.map +1 -1
  773. package/dist/index.d.ts +1188 -1323
  774. package/dist/index.js +161 -161
  775. package/dist/index.js.map +1 -1
  776. package/dist/shared/createContext.cjs.map +1 -1
  777. package/dist/shared/createContext.js.map +1 -1
  778. package/dist/shared/renderSlotFragments.cjs.map +1 -1
  779. package/dist/shared/renderSlotFragments.js.map +1 -1
  780. package/dist/shared/useArrowNavigation.cjs.map +1 -1
  781. package/dist/shared/useArrowNavigation.js.map +1 -1
  782. package/dist/shared/useBodyScrollLock.cjs +1 -1
  783. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  784. package/dist/shared/useBodyScrollLock.js +1 -1
  785. package/dist/shared/useBodyScrollLock.js.map +1 -1
  786. package/dist/shared/useDateFormatter.cjs +1 -1
  787. package/dist/shared/useDateFormatter.cjs.map +1 -1
  788. package/dist/shared/useDateFormatter.js +1 -1
  789. package/dist/shared/useDateFormatter.js.map +1 -1
  790. package/dist/shared/useDirection.cjs.map +1 -1
  791. package/dist/shared/useDirection.js.map +1 -1
  792. package/dist/shared/useFilter.cjs.map +1 -1
  793. package/dist/shared/useFilter.js.map +1 -1
  794. package/dist/shared/useFormControl.cjs.map +1 -1
  795. package/dist/shared/useFormControl.js.map +1 -1
  796. package/dist/shared/useForwardExpose.cjs.map +1 -1
  797. package/dist/shared/useForwardExpose.js.map +1 -1
  798. package/dist/shared/useForwardProps.cjs.map +1 -1
  799. package/dist/shared/useForwardProps.js.map +1 -1
  800. package/dist/shared/useForwardPropsEmits.cjs.map +1 -1
  801. package/dist/shared/useForwardPropsEmits.js.map +1 -1
  802. package/dist/shared/useGraceArea.cjs +1 -1
  803. package/dist/shared/useGraceArea.cjs.map +1 -1
  804. package/dist/shared/useGraceArea.js +1 -1
  805. package/dist/shared/useGraceArea.js.map +1 -1
  806. package/dist/shared/useHideOthers.cjs.map +1 -1
  807. package/dist/shared/useHideOthers.js.map +1 -1
  808. package/dist/shared/useLocale.cjs.map +1 -1
  809. package/dist/shared/useLocale.js.map +1 -1
  810. package/dist/shared/useNonce.cjs.map +1 -1
  811. package/dist/shared/useNonce.js.map +1 -1
  812. package/dist/shared/useSelectionBehavior.cjs +2 -2
  813. package/dist/shared/useSelectionBehavior.cjs.map +1 -1
  814. package/dist/shared/useSelectionBehavior.js +2 -2
  815. package/dist/shared/useSelectionBehavior.js.map +1 -1
  816. package/dist/shared/useSingleOrMultipleValue.cjs +1 -1
  817. package/dist/shared/useSingleOrMultipleValue.cjs.map +1 -1
  818. package/dist/shared/useSingleOrMultipleValue.js +1 -1
  819. package/dist/shared/useSingleOrMultipleValue.js.map +1 -1
  820. package/dist/shared/useSize.cjs.map +1 -1
  821. package/dist/shared/useSize.js.map +1 -1
  822. package/dist/shared/useStateMachine.cjs.map +1 -1
  823. package/dist/shared/useStateMachine.js.map +1 -1
  824. package/dist/shared/withDefault.cjs.map +1 -1
  825. package/dist/shared/withDefault.js.map +1 -1
  826. package/dist/utils/calculate.cjs +1 -1
  827. package/dist/utils/calculate.cjs.map +1 -1
  828. package/dist/utils/calculate.js +1 -1
  829. package/dist/utils/calculate.js.map +1 -1
  830. package/dist/utils/dom.cjs.map +1 -1
  831. package/dist/utils/dom.js.map +1 -1
  832. package/dist/utils/registry.cjs +1 -1
  833. package/dist/utils/registry.cjs.map +1 -1
  834. package/dist/utils/registry.js +1 -1
  835. package/dist/utils/registry.js.map +1 -1
  836. package/dist/utils/resizePanel.cjs +1 -1
  837. package/dist/utils/resizePanel.cjs.map +1 -1
  838. package/dist/utils/resizePanel.js +1 -1
  839. package/dist/utils/resizePanel.js.map +1 -1
  840. package/dist/utils/style.cjs.map +1 -1
  841. package/dist/utils/style.js.map +1 -1
  842. package/package.json +7 -8
@@ -1 +1 @@
1
- {"version":3,"file":"TagsInputRoot.cjs","sources":["../../src/TagsInput/TagsInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useArrowNavigation, useDirection, useFormControl, useForwardExpose } from '@/shared'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { type Ref, computed, ref, toRefs } from 'vue'\n\nexport type AcceptableInputValue = string | Record<string, any>\n\nexport interface TagsInputRootProps<T = AcceptableInputValue> extends PrimitiveProps, FormFieldProps {\n /** The controlled value of the tags input. Can be bind as `v-model`. */\n modelValue?: Array<T> | null\n /** The value of the tags that should be added. Use when you do not need to control the state of the tags input */\n defaultValue?: Array<T>\n /** When `true`, allow adding tags on paste. Work in conjunction with delimiter prop. */\n addOnPaste?: boolean\n /** When `true` allow adding tags on tab keydown */\n addOnTab?: boolean\n /** When `true` allow adding tags blur input */\n addOnBlur?: boolean\n /** When `true`, allow duplicated tags. */\n duplicate?: boolean\n /** When `true`, prevents the user from interacting with the tags input. */\n disabled?: boolean\n /** The character or regular expression to trigger the addition of a new tag. Also used to split tags for `@paste` event */\n delimiter?: string | RegExp\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Maximum number of tags. */\n max?: number\n id?: string\n /** Convert the input value to the desired type. Mandatory when using objects as values and using `TagsInputInput` */\n convertValue?: (value: string) => T\n /** Display the value of the tag. Useful when you want to apply modifications to the value like adding a suffix or when using object as values */\n displayValue?: (value: T) => string\n}\n\nexport type TagsInputRootEmits<T = AcceptableInputValue> = {\n /** Event handler called when the value changes */\n 'update:modelValue': [payload: Array<T>]\n /** Event handler called when the value is invalid */\n 'invalid': [payload: T]\n /** Event handler called when tag is added */\n 'addTag': [payload: T]\n /** Event handler called when tag is removed */\n 'removeTag': [payload: T]\n}\n\nexport interface TagsInputRootContext<T = AcceptableInputValue> {\n modelValue: Ref<Array<T>>\n onAddValue: (payload: string) => boolean\n onRemoveValue: (index: number) => void\n onInputKeydown: (event: KeyboardEvent) => void\n selectedElement: Ref<HTMLElement | undefined>\n isInvalidInput: Ref<boolean>\n addOnPaste: Ref<boolean>\n addOnTab: Ref<boolean>\n addOnBlur: Ref<boolean>\n disabled: Ref<boolean>\n delimiter: Ref<string | RegExp>\n dir: Ref<Direction>\n max: Ref<number>\n id: Ref<string | undefined> | undefined\n displayValue: (value: T) => string\n}\n\nexport const [injectTagsInputRootContext, provideTagsInputRootContext]\n = createContext<TagsInputRootContext>('TagsInputRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableInputValue = string\">\nimport { Primitive } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useFocusWithin, useVModel } from '@vueuse/core'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\nconst props = withDefaults(defineProps<TagsInputRootProps<T>>(), {\n defaultValue: () => [],\n delimiter: ',',\n max: 0,\n displayValue: (value: T) => value.toString(),\n})\nconst emits = defineEmits<TagsInputRootEmits<T>>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { addOnPaste, disabled, delimiter, max, id, dir: propDir, addOnBlur, addOnTab } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: true,\n deep: true,\n}) as Ref<Array<AcceptableInputValue>>\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { focused } = useFocusWithin(currentElement)\nconst isFormControl = useFormControl(currentElement)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nconst selectedElement = ref<HTMLElement>()\nconst isInvalidInput = ref(false)\n\nconst currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : [])\n\nfunction handleRemoveTag(index: number) {\n if (index !== -1) {\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n modelValue.value = modelValue.value.filter((_, i) => i !== index)\n emits('removeTag', collection[index].value)\n }\n}\n\nprovideTagsInputRootContext({\n modelValue,\n onAddValue: (_payload) => {\n const array = [...currentModelValue.value]\n const modelValueIsObject = array.length > 0 && typeof array[0] === 'object'\n const defaultValueIsObject = array.length > 0 && typeof props.defaultValue[0] === 'object'\n\n // Check if the value is an object and if the convertValue function is provided. We don't check this a type level because the use\n // of `TagsInputInput` is optional.\n if ((modelValueIsObject || defaultValueIsObject) && typeof props.convertValue !== 'function')\n throw new Error('You must provide a `convertValue` function when using objects as values.')\n const payload = props.convertValue ? props.convertValue(_payload) : _payload as T\n\n if ((array.length >= max.value) && !!max.value) {\n emits('invalid', payload)\n return false\n }\n\n if (props.duplicate) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n const exist = array.includes(payload)\n if (!exist) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n isInvalidInput.value = true\n }\n }\n emits('invalid', payload)\n return false\n },\n onRemoveValue: handleRemoveTag,\n onInputKeydown: (event) => {\n const target = event.target as HTMLInputElement\n const collection = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n if (!collection.length)\n return\n const lastTag = collection.at(-1)\n switch (event.key) {\n case 'Delete':\n case 'Backspace': {\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n if (selectedElement.value) {\n const index = collection.findIndex(i => i === selectedElement.value)\n handleRemoveTag(index)\n selectedElement.value = selectedElement.value === lastTag ? collection.at(index - 1) : collection.at(index + 1)\n event.preventDefault()\n }\n else if (event.key === 'Backspace') {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n break\n }\n case 'Home':\n case 'End':\n case 'ArrowRight':\n case 'ArrowLeft': {\n const isArrowRight = (event.key === 'ArrowRight' && dir.value === 'ltr') || (event.key === 'ArrowLeft' && dir.value === 'rtl')\n const isArrowLeft = !isArrowRight\n // only focus on tags when cursor is at the first position\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n // if you press ArrowLeft, then we last tag\n if (isArrowLeft && !selectedElement.value) {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n // if you press ArrowRight on last tag, you deselect\n else if (isArrowRight && lastTag && selectedElement.value === lastTag) {\n selectedElement.value = undefined\n event.preventDefault()\n }\n else if (selectedElement.value) {\n const el = useArrowNavigation(event, selectedElement.value, undefined, {\n itemsArray: collection,\n loop: false,\n dir: dir.value,\n })\n if (el)\n selectedElement.value = el\n event.preventDefault()\n }\n break\n }\n case 'ArrowUp':\n case 'ArrowDown': {\n if (selectedElement.value)\n event.preventDefault()\n break\n }\n default: {\n selectedElement.value = undefined\n }\n }\n },\n selectedElement,\n isInvalidInput,\n addOnPaste,\n addOnBlur,\n addOnTab,\n dir,\n disabled,\n delimiter,\n max,\n id,\n displayValue: props.displayValue as (value: AcceptableInputValue) => string,\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :dir=\"dir\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-invalid=\"isInvalidInput ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-focused=\"focused ? '' : undefined\"\n >\n <slot :model-value=\"modelValue\" />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["createContext","toRefs","useDirection","useVModel","useForwardExpose","useFocusWithin","useFormControl","useCollection","ref","computed","useArrowNavigation"],"mappings":"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"}
1
+ {"version":3,"file":"TagsInputRoot.cjs","sources":["../../src/TagsInput/TagsInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport { createContext, useArrowNavigation, useDirection, useFormControl, useForwardExpose } from '@/shared'\nimport { computed, ref, toRefs } from 'vue'\n\nexport type AcceptableInputValue = string | Record<string, any>\n\nexport interface TagsInputRootProps<T = AcceptableInputValue> extends PrimitiveProps, FormFieldProps {\n /** The controlled value of the tags input. Can be bind as `v-model`. */\n modelValue?: Array<T> | null\n /** The value of the tags that should be added. Use when you do not need to control the state of the tags input */\n defaultValue?: Array<T>\n /** When `true`, allow adding tags on paste. Work in conjunction with delimiter prop. */\n addOnPaste?: boolean\n /** When `true` allow adding tags on tab keydown */\n addOnTab?: boolean\n /** When `true` allow adding tags blur input */\n addOnBlur?: boolean\n /** When `true`, allow duplicated tags. */\n duplicate?: boolean\n /** When `true`, prevents the user from interacting with the tags input. */\n disabled?: boolean\n /** The character or regular expression to trigger the addition of a new tag. Also used to split tags for `@paste` event */\n delimiter?: string | RegExp\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Maximum number of tags. */\n max?: number\n id?: string\n /** Convert the input value to the desired type. Mandatory when using objects as values and using `TagsInputInput` */\n convertValue?: (value: string) => T\n /** Display the value of the tag. Useful when you want to apply modifications to the value like adding a suffix or when using object as values */\n displayValue?: (value: T) => string\n}\n\nexport type TagsInputRootEmits<T = AcceptableInputValue> = {\n /** Event handler called when the value changes */\n 'update:modelValue': [payload: Array<T>]\n /** Event handler called when the value is invalid */\n 'invalid': [payload: T]\n /** Event handler called when tag is added */\n 'addTag': [payload: T]\n /** Event handler called when tag is removed */\n 'removeTag': [payload: T]\n}\n\nexport interface TagsInputRootContext<T = AcceptableInputValue> {\n modelValue: Ref<Array<T>>\n onAddValue: (payload: string) => boolean\n onRemoveValue: (index: number) => void\n onInputKeydown: (event: KeyboardEvent) => void\n selectedElement: Ref<HTMLElement | undefined>\n isInvalidInput: Ref<boolean>\n addOnPaste: Ref<boolean>\n addOnTab: Ref<boolean>\n addOnBlur: Ref<boolean>\n disabled: Ref<boolean>\n delimiter: Ref<string | RegExp>\n dir: Ref<Direction>\n max: Ref<number>\n id: Ref<string | undefined> | undefined\n displayValue: (value: T) => string\n}\n\nexport const [injectTagsInputRootContext, provideTagsInputRootContext]\n = createContext<TagsInputRootContext>('TagsInputRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableInputValue = string\">\nimport { useCollection } from '@/Collection'\nimport { Primitive } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { useFocusWithin, useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<TagsInputRootProps<T>>(), {\n defaultValue: () => [],\n delimiter: ',',\n max: 0,\n displayValue: (value: T) => value.toString(),\n})\nconst emits = defineEmits<TagsInputRootEmits<T>>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { addOnPaste, disabled, delimiter, max, id, dir: propDir, addOnBlur, addOnTab } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: true,\n deep: true,\n}) as Ref<Array<AcceptableInputValue>>\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { focused } = useFocusWithin(currentElement)\nconst isFormControl = useFormControl(currentElement)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nconst selectedElement = ref<HTMLElement>()\nconst isInvalidInput = ref(false)\n\nconst currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : [])\n\nfunction handleRemoveTag(index: number) {\n if (index !== -1) {\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n modelValue.value = modelValue.value.filter((_, i) => i !== index)\n emits('removeTag', collection[index].value)\n }\n}\n\nprovideTagsInputRootContext({\n modelValue,\n onAddValue: (_payload) => {\n const array = [...currentModelValue.value]\n const modelValueIsObject = array.length > 0 && typeof array[0] === 'object'\n const defaultValueIsObject = array.length > 0 && typeof props.defaultValue[0] === 'object'\n\n // Check if the value is an object and if the convertValue function is provided. We don't check this a type level because the use\n // of `TagsInputInput` is optional.\n if ((modelValueIsObject || defaultValueIsObject) && typeof props.convertValue !== 'function')\n throw new Error('You must provide a `convertValue` function when using objects as values.')\n const payload = props.convertValue ? props.convertValue(_payload) : _payload as T\n\n if ((array.length >= max.value) && !!max.value) {\n emits('invalid', payload)\n return false\n }\n\n if (props.duplicate) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n const exist = array.includes(payload)\n if (!exist) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n isInvalidInput.value = true\n }\n }\n emits('invalid', payload)\n return false\n },\n onRemoveValue: handleRemoveTag,\n onInputKeydown: (event) => {\n const target = event.target as HTMLInputElement\n const collection = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n if (!collection.length)\n return\n const lastTag = collection.at(-1)\n switch (event.key) {\n case 'Delete':\n case 'Backspace': {\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n if (selectedElement.value) {\n const index = collection.findIndex(i => i === selectedElement.value)\n handleRemoveTag(index)\n selectedElement.value = selectedElement.value === lastTag ? collection.at(index - 1) : collection.at(index + 1)\n event.preventDefault()\n }\n else if (event.key === 'Backspace') {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n break\n }\n case 'Home':\n case 'End':\n case 'ArrowRight':\n case 'ArrowLeft': {\n const isArrowRight = (event.key === 'ArrowRight' && dir.value === 'ltr') || (event.key === 'ArrowLeft' && dir.value === 'rtl')\n const isArrowLeft = !isArrowRight\n // only focus on tags when cursor is at the first position\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n // if you press ArrowLeft, then we last tag\n if (isArrowLeft && !selectedElement.value) {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n // if you press ArrowRight on last tag, you deselect\n else if (isArrowRight && lastTag && selectedElement.value === lastTag) {\n selectedElement.value = undefined\n event.preventDefault()\n }\n else if (selectedElement.value) {\n const el = useArrowNavigation(event, selectedElement.value, undefined, {\n itemsArray: collection,\n loop: false,\n dir: dir.value,\n })\n if (el)\n selectedElement.value = el\n event.preventDefault()\n }\n break\n }\n case 'ArrowUp':\n case 'ArrowDown': {\n if (selectedElement.value)\n event.preventDefault()\n break\n }\n default: {\n selectedElement.value = undefined\n }\n }\n },\n selectedElement,\n isInvalidInput,\n addOnPaste,\n addOnBlur,\n addOnTab,\n dir,\n disabled,\n delimiter,\n max,\n id,\n displayValue: props.displayValue as (value: AcceptableInputValue) => string,\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :dir=\"dir\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-invalid=\"isInvalidInput ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-focused=\"focused ? '' : undefined\"\n >\n <slot :model-value=\"modelValue\" />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":["createContext","toRefs","useDirection","useVModel","useForwardExpose","useFocusWithin","useFormControl","useCollection","ref","computed","useArrowNavigation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TagsInputRoot.js","sources":["../../src/TagsInput/TagsInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useArrowNavigation, useDirection, useFormControl, useForwardExpose } from '@/shared'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport { type Ref, computed, ref, toRefs } from 'vue'\n\nexport type AcceptableInputValue = string | Record<string, any>\n\nexport interface TagsInputRootProps<T = AcceptableInputValue> extends PrimitiveProps, FormFieldProps {\n /** The controlled value of the tags input. Can be bind as `v-model`. */\n modelValue?: Array<T> | null\n /** The value of the tags that should be added. Use when you do not need to control the state of the tags input */\n defaultValue?: Array<T>\n /** When `true`, allow adding tags on paste. Work in conjunction with delimiter prop. */\n addOnPaste?: boolean\n /** When `true` allow adding tags on tab keydown */\n addOnTab?: boolean\n /** When `true` allow adding tags blur input */\n addOnBlur?: boolean\n /** When `true`, allow duplicated tags. */\n duplicate?: boolean\n /** When `true`, prevents the user from interacting with the tags input. */\n disabled?: boolean\n /** The character or regular expression to trigger the addition of a new tag. Also used to split tags for `@paste` event */\n delimiter?: string | RegExp\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Maximum number of tags. */\n max?: number\n id?: string\n /** Convert the input value to the desired type. Mandatory when using objects as values and using `TagsInputInput` */\n convertValue?: (value: string) => T\n /** Display the value of the tag. Useful when you want to apply modifications to the value like adding a suffix or when using object as values */\n displayValue?: (value: T) => string\n}\n\nexport type TagsInputRootEmits<T = AcceptableInputValue> = {\n /** Event handler called when the value changes */\n 'update:modelValue': [payload: Array<T>]\n /** Event handler called when the value is invalid */\n 'invalid': [payload: T]\n /** Event handler called when tag is added */\n 'addTag': [payload: T]\n /** Event handler called when tag is removed */\n 'removeTag': [payload: T]\n}\n\nexport interface TagsInputRootContext<T = AcceptableInputValue> {\n modelValue: Ref<Array<T>>\n onAddValue: (payload: string) => boolean\n onRemoveValue: (index: number) => void\n onInputKeydown: (event: KeyboardEvent) => void\n selectedElement: Ref<HTMLElement | undefined>\n isInvalidInput: Ref<boolean>\n addOnPaste: Ref<boolean>\n addOnTab: Ref<boolean>\n addOnBlur: Ref<boolean>\n disabled: Ref<boolean>\n delimiter: Ref<string | RegExp>\n dir: Ref<Direction>\n max: Ref<number>\n id: Ref<string | undefined> | undefined\n displayValue: (value: T) => string\n}\n\nexport const [injectTagsInputRootContext, provideTagsInputRootContext]\n = createContext<TagsInputRootContext>('TagsInputRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableInputValue = string\">\nimport { Primitive } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { useFocusWithin, useVModel } from '@vueuse/core'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\nconst props = withDefaults(defineProps<TagsInputRootProps<T>>(), {\n defaultValue: () => [],\n delimiter: ',',\n max: 0,\n displayValue: (value: T) => value.toString(),\n})\nconst emits = defineEmits<TagsInputRootEmits<T>>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { addOnPaste, disabled, delimiter, max, id, dir: propDir, addOnBlur, addOnTab } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: true,\n deep: true,\n}) as Ref<Array<AcceptableInputValue>>\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { focused } = useFocusWithin(currentElement)\nconst isFormControl = useFormControl(currentElement)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nconst selectedElement = ref<HTMLElement>()\nconst isInvalidInput = ref(false)\n\nconst currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : [])\n\nfunction handleRemoveTag(index: number) {\n if (index !== -1) {\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n modelValue.value = modelValue.value.filter((_, i) => i !== index)\n emits('removeTag', collection[index].value)\n }\n}\n\nprovideTagsInputRootContext({\n modelValue,\n onAddValue: (_payload) => {\n const array = [...currentModelValue.value]\n const modelValueIsObject = array.length > 0 && typeof array[0] === 'object'\n const defaultValueIsObject = array.length > 0 && typeof props.defaultValue[0] === 'object'\n\n // Check if the value is an object and if the convertValue function is provided. We don't check this a type level because the use\n // of `TagsInputInput` is optional.\n if ((modelValueIsObject || defaultValueIsObject) && typeof props.convertValue !== 'function')\n throw new Error('You must provide a `convertValue` function when using objects as values.')\n const payload = props.convertValue ? props.convertValue(_payload) : _payload as T\n\n if ((array.length >= max.value) && !!max.value) {\n emits('invalid', payload)\n return false\n }\n\n if (props.duplicate) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n const exist = array.includes(payload)\n if (!exist) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n isInvalidInput.value = true\n }\n }\n emits('invalid', payload)\n return false\n },\n onRemoveValue: handleRemoveTag,\n onInputKeydown: (event) => {\n const target = event.target as HTMLInputElement\n const collection = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n if (!collection.length)\n return\n const lastTag = collection.at(-1)\n switch (event.key) {\n case 'Delete':\n case 'Backspace': {\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n if (selectedElement.value) {\n const index = collection.findIndex(i => i === selectedElement.value)\n handleRemoveTag(index)\n selectedElement.value = selectedElement.value === lastTag ? collection.at(index - 1) : collection.at(index + 1)\n event.preventDefault()\n }\n else if (event.key === 'Backspace') {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n break\n }\n case 'Home':\n case 'End':\n case 'ArrowRight':\n case 'ArrowLeft': {\n const isArrowRight = (event.key === 'ArrowRight' && dir.value === 'ltr') || (event.key === 'ArrowLeft' && dir.value === 'rtl')\n const isArrowLeft = !isArrowRight\n // only focus on tags when cursor is at the first position\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n // if you press ArrowLeft, then we last tag\n if (isArrowLeft && !selectedElement.value) {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n // if you press ArrowRight on last tag, you deselect\n else if (isArrowRight && lastTag && selectedElement.value === lastTag) {\n selectedElement.value = undefined\n event.preventDefault()\n }\n else if (selectedElement.value) {\n const el = useArrowNavigation(event, selectedElement.value, undefined, {\n itemsArray: collection,\n loop: false,\n dir: dir.value,\n })\n if (el)\n selectedElement.value = el\n event.preventDefault()\n }\n break\n }\n case 'ArrowUp':\n case 'ArrowDown': {\n if (selectedElement.value)\n event.preventDefault()\n break\n }\n default: {\n selectedElement.value = undefined\n }\n }\n },\n selectedElement,\n isInvalidInput,\n addOnPaste,\n addOnBlur,\n addOnTab,\n dir,\n disabled,\n delimiter,\n max,\n id,\n displayValue: props.displayValue as (value: AcceptableInputValue) => string,\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :dir=\"dir\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-invalid=\"isInvalidInput ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-focused=\"focused ? '' : undefined\"\n >\n <slot :model-value=\"modelValue\" />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TagsInputRoot.js","sources":["../../src/TagsInput/TagsInputRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport { createContext, useArrowNavigation, useDirection, useFormControl, useForwardExpose } from '@/shared'\nimport { computed, ref, toRefs } from 'vue'\n\nexport type AcceptableInputValue = string | Record<string, any>\n\nexport interface TagsInputRootProps<T = AcceptableInputValue> extends PrimitiveProps, FormFieldProps {\n /** The controlled value of the tags input. Can be bind as `v-model`. */\n modelValue?: Array<T> | null\n /** The value of the tags that should be added. Use when you do not need to control the state of the tags input */\n defaultValue?: Array<T>\n /** When `true`, allow adding tags on paste. Work in conjunction with delimiter prop. */\n addOnPaste?: boolean\n /** When `true` allow adding tags on tab keydown */\n addOnTab?: boolean\n /** When `true` allow adding tags blur input */\n addOnBlur?: boolean\n /** When `true`, allow duplicated tags. */\n duplicate?: boolean\n /** When `true`, prevents the user from interacting with the tags input. */\n disabled?: boolean\n /** The character or regular expression to trigger the addition of a new tag. Also used to split tags for `@paste` event */\n delimiter?: string | RegExp\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Maximum number of tags. */\n max?: number\n id?: string\n /** Convert the input value to the desired type. Mandatory when using objects as values and using `TagsInputInput` */\n convertValue?: (value: string) => T\n /** Display the value of the tag. Useful when you want to apply modifications to the value like adding a suffix or when using object as values */\n displayValue?: (value: T) => string\n}\n\nexport type TagsInputRootEmits<T = AcceptableInputValue> = {\n /** Event handler called when the value changes */\n 'update:modelValue': [payload: Array<T>]\n /** Event handler called when the value is invalid */\n 'invalid': [payload: T]\n /** Event handler called when tag is added */\n 'addTag': [payload: T]\n /** Event handler called when tag is removed */\n 'removeTag': [payload: T]\n}\n\nexport interface TagsInputRootContext<T = AcceptableInputValue> {\n modelValue: Ref<Array<T>>\n onAddValue: (payload: string) => boolean\n onRemoveValue: (index: number) => void\n onInputKeydown: (event: KeyboardEvent) => void\n selectedElement: Ref<HTMLElement | undefined>\n isInvalidInput: Ref<boolean>\n addOnPaste: Ref<boolean>\n addOnTab: Ref<boolean>\n addOnBlur: Ref<boolean>\n disabled: Ref<boolean>\n delimiter: Ref<string | RegExp>\n dir: Ref<Direction>\n max: Ref<number>\n id: Ref<string | undefined> | undefined\n displayValue: (value: T) => string\n}\n\nexport const [injectTagsInputRootContext, provideTagsInputRootContext]\n = createContext<TagsInputRootContext>('TagsInputRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableInputValue = string\">\nimport { useCollection } from '@/Collection'\nimport { Primitive } from '@/Primitive'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { useFocusWithin, useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<TagsInputRootProps<T>>(), {\n defaultValue: () => [],\n delimiter: ',',\n max: 0,\n displayValue: (value: T) => value.toString(),\n})\nconst emits = defineEmits<TagsInputRootEmits<T>>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n }) => any\n}>()\n\nconst { addOnPaste, disabled, delimiter, max, id, dir: propDir, addOnBlur, addOnTab } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: true,\n deep: true,\n}) as Ref<Array<AcceptableInputValue>>\n\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { focused } = useFocusWithin(currentElement)\nconst isFormControl = useFormControl(currentElement)\n\nconst { getItems, CollectionSlot } = useCollection({ isProvider: true })\n\nconst selectedElement = ref<HTMLElement>()\nconst isInvalidInput = ref(false)\n\nconst currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : [])\n\nfunction handleRemoveTag(index: number) {\n if (index !== -1) {\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n modelValue.value = modelValue.value.filter((_, i) => i !== index)\n emits('removeTag', collection[index].value)\n }\n}\n\nprovideTagsInputRootContext({\n modelValue,\n onAddValue: (_payload) => {\n const array = [...currentModelValue.value]\n const modelValueIsObject = array.length > 0 && typeof array[0] === 'object'\n const defaultValueIsObject = array.length > 0 && typeof props.defaultValue[0] === 'object'\n\n // Check if the value is an object and if the convertValue function is provided. We don't check this a type level because the use\n // of `TagsInputInput` is optional.\n if ((modelValueIsObject || defaultValueIsObject) && typeof props.convertValue !== 'function')\n throw new Error('You must provide a `convertValue` function when using objects as values.')\n const payload = props.convertValue ? props.convertValue(_payload) : _payload as T\n\n if ((array.length >= max.value) && !!max.value) {\n emits('invalid', payload)\n return false\n }\n\n if (props.duplicate) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n const exist = array.includes(payload)\n if (!exist) {\n modelValue.value = [...array, payload]\n emits('addTag', payload)\n return true\n }\n else {\n isInvalidInput.value = true\n }\n }\n emits('invalid', payload)\n return false\n },\n onRemoveValue: handleRemoveTag,\n onInputKeydown: (event) => {\n const target = event.target as HTMLInputElement\n const collection = getItems().map(i => i.ref).filter(i => i.dataset.disabled !== '')\n if (!collection.length)\n return\n const lastTag = collection.at(-1)\n switch (event.key) {\n case 'Delete':\n case 'Backspace': {\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n if (selectedElement.value) {\n const index = collection.findIndex(i => i === selectedElement.value)\n handleRemoveTag(index)\n selectedElement.value = selectedElement.value === lastTag ? collection.at(index - 1) : collection.at(index + 1)\n event.preventDefault()\n }\n else if (event.key === 'Backspace') {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n break\n }\n case 'Home':\n case 'End':\n case 'ArrowRight':\n case 'ArrowLeft': {\n const isArrowRight = (event.key === 'ArrowRight' && dir.value === 'ltr') || (event.key === 'ArrowLeft' && dir.value === 'rtl')\n const isArrowLeft = !isArrowRight\n // only focus on tags when cursor is at the first position\n if (target.selectionStart !== 0 || target.selectionEnd !== 0)\n break\n\n // if you press ArrowLeft, then we last tag\n if (isArrowLeft && !selectedElement.value) {\n selectedElement.value = lastTag\n event.preventDefault()\n }\n // if you press ArrowRight on last tag, you deselect\n else if (isArrowRight && lastTag && selectedElement.value === lastTag) {\n selectedElement.value = undefined\n event.preventDefault()\n }\n else if (selectedElement.value) {\n const el = useArrowNavigation(event, selectedElement.value, undefined, {\n itemsArray: collection,\n loop: false,\n dir: dir.value,\n })\n if (el)\n selectedElement.value = el\n event.preventDefault()\n }\n break\n }\n case 'ArrowUp':\n case 'ArrowDown': {\n if (selectedElement.value)\n event.preventDefault()\n break\n }\n default: {\n selectedElement.value = undefined\n }\n }\n },\n selectedElement,\n isInvalidInput,\n addOnPaste,\n addOnBlur,\n addOnTab,\n dir,\n disabled,\n delimiter,\n max,\n id,\n displayValue: props.displayValue as (value: AcceptableInputValue) => string,\n})\n</script>\n\n<template>\n <CollectionSlot>\n <Primitive\n :ref=\"forwardRef\"\n :dir=\"dir\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-invalid=\"isInvalidInput ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-focused=\"focused ? '' : undefined\"\n >\n <slot :model-value=\"modelValue\" />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </Primitive>\n </CollectionSlot>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeFieldInput.cjs","sources":["../../src/TimeField/TimeFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { Primitive, type PrimitiveProps } from '@/Primitive'\nimport type { SegmentPart } from '@/shared/date'\nimport { useDateField } from '@/shared/date/useDateField'\nimport { injectTimeFieldRootContext } from './TimeFieldRoot.vue'\nimport { computed, ref } from 'vue'\n\nexport interface TimeFieldInputProps extends PrimitiveProps {\n /** The part of the date to render */\n part: SegmentPart\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<TimeFieldInputProps>()\n\nconst rootContext = injectTimeFieldRootContext()\n\nconst hasLeftFocus = ref(true)\nconst lastKeyZero = ref(false)\n\nconst {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes,\n} = useDateField({\n hasLeftFocus,\n lastKeyZero,\n placeholder: rootContext.placeholder,\n hourCycle: rootContext.hourCycle,\n segmentValues: rootContext.segmentValues,\n formatter: rootContext.formatter,\n part: props.part,\n disabled: rootContext.disabled,\n readonly: rootContext.readonly,\n focusNext: rootContext.focusNext,\n modelValue: rootContext.modelValue,\n})\n\nconst disabled = computed(() => rootContext.disabled.value)\nconst readonly = computed(() => rootContext.readonly.value)\nconst isInvalid = computed(() => rootContext.isInvalid.value)\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"attributes\"\n :contenteditable=\"disabled || readonly ? false : part !== 'literal'\"\n :data-reka-time-field-segment=\"part\"\n :aria-disabled=\"disabled ? true : undefined\"\n :aria-readonly=\"readonly ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :aria-invalid=\"isInvalid ? true : undefined\"\n v-on=\"part !== 'literal' ? {\n mousedown: handleSegmentClick,\n keydown: handleSegmentKeydown,\n focusout: () => { hasLeftFocus = true },\n focusin: (e: FocusEvent) => {\n rootContext.setFocusedElement(e.target as HTMLElement)\n },\n } : {}\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["injectTimeFieldRootContext","ref","useDateField","computed"],"mappings":";;;;;;;;;;;;;;;AAcA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAcA,kDAA2B,EAAA;AAE/C,IAAM,MAAA,YAAA,GAAeC,QAAI,IAAI,CAAA;AAC7B,IAAM,MAAA,WAAA,GAAcA,QAAI,KAAK,CAAA;AAE7B,IAAM,MAAA;AAAA,MACJ,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,QACEC,8BAAa,CAAA;AAAA,MACf,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAa,WAAY,CAAA,WAAA;AAAA,MACzB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,eAAe,WAAY,CAAA,aAAA;AAAA,MAC3B,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,YAAY,WAAY,CAAA;AAAA,KACzB,CAAA;AAED,IAAA,MAAM,QAAW,GAAAC,YAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,QAAW,GAAAA,YAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,SAAY,GAAAA,YAAA,CAAS,MAAM,WAAA,CAAY,UAAU,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"TimeFieldInput.cjs","sources":["../../src/TimeField/TimeFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { SegmentPart } from '@/shared/date'\nimport { Primitive } from '@/Primitive'\nimport { useDateField } from '@/shared/date/useDateField'\nimport { computed, ref } from 'vue'\nimport { injectTimeFieldRootContext } from './TimeFieldRoot.vue'\n\nexport interface TimeFieldInputProps extends PrimitiveProps {\n /** The part of the date to render */\n part: SegmentPart\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<TimeFieldInputProps>()\n\nconst rootContext = injectTimeFieldRootContext()\n\nconst hasLeftFocus = ref(true)\nconst lastKeyZero = ref(false)\n\nconst {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes,\n} = useDateField({\n hasLeftFocus,\n lastKeyZero,\n placeholder: rootContext.placeholder,\n hourCycle: rootContext.hourCycle,\n segmentValues: rootContext.segmentValues,\n formatter: rootContext.formatter,\n part: props.part,\n disabled: rootContext.disabled,\n readonly: rootContext.readonly,\n focusNext: rootContext.focusNext,\n modelValue: rootContext.modelValue,\n})\n\nconst disabled = computed(() => rootContext.disabled.value)\nconst readonly = computed(() => rootContext.readonly.value)\nconst isInvalid = computed(() => rootContext.isInvalid.value)\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"attributes\"\n :contenteditable=\"disabled || readonly ? false : part !== 'literal'\"\n :data-reka-time-field-segment=\"part\"\n :aria-disabled=\"disabled ? true : undefined\"\n :aria-readonly=\"readonly ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :aria-invalid=\"isInvalid ? true : undefined\"\n v-on=\"part !== 'literal' ? {\n mousedown: handleSegmentClick,\n keydown: handleSegmentKeydown,\n focusout: () => { hasLeftFocus = true },\n focusin: (e: FocusEvent) => {\n rootContext.setFocusedElement(e.target as HTMLElement)\n },\n } : {}\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["injectTimeFieldRootContext","ref","useDateField","computed"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAcA,kDAA2B,EAAA;AAE/C,IAAM,MAAA,YAAA,GAAeC,QAAI,IAAI,CAAA;AAC7B,IAAM,MAAA,WAAA,GAAcA,QAAI,KAAK,CAAA;AAE7B,IAAM,MAAA;AAAA,MACJ,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,QACEC,8BAAa,CAAA;AAAA,MACf,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAa,WAAY,CAAA,WAAA;AAAA,MACzB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,eAAe,WAAY,CAAA,aAAA;AAAA,MAC3B,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,YAAY,WAAY,CAAA;AAAA,KACzB,CAAA;AAED,IAAA,MAAM,QAAW,GAAAC,YAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,QAAW,GAAAA,YAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,SAAY,GAAAA,YAAA,CAAS,MAAM,WAAA,CAAY,UAAU,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeFieldInput.js","sources":["../../src/TimeField/TimeFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { Primitive, type PrimitiveProps } from '@/Primitive'\nimport type { SegmentPart } from '@/shared/date'\nimport { useDateField } from '@/shared/date/useDateField'\nimport { injectTimeFieldRootContext } from './TimeFieldRoot.vue'\nimport { computed, ref } from 'vue'\n\nexport interface TimeFieldInputProps extends PrimitiveProps {\n /** The part of the date to render */\n part: SegmentPart\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<TimeFieldInputProps>()\n\nconst rootContext = injectTimeFieldRootContext()\n\nconst hasLeftFocus = ref(true)\nconst lastKeyZero = ref(false)\n\nconst {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes,\n} = useDateField({\n hasLeftFocus,\n lastKeyZero,\n placeholder: rootContext.placeholder,\n hourCycle: rootContext.hourCycle,\n segmentValues: rootContext.segmentValues,\n formatter: rootContext.formatter,\n part: props.part,\n disabled: rootContext.disabled,\n readonly: rootContext.readonly,\n focusNext: rootContext.focusNext,\n modelValue: rootContext.modelValue,\n})\n\nconst disabled = computed(() => rootContext.disabled.value)\nconst readonly = computed(() => rootContext.readonly.value)\nconst isInvalid = computed(() => rootContext.isInvalid.value)\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"attributes\"\n :contenteditable=\"disabled || readonly ? false : part !== 'literal'\"\n :data-reka-time-field-segment=\"part\"\n :aria-disabled=\"disabled ? true : undefined\"\n :aria-readonly=\"readonly ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :aria-invalid=\"isInvalid ? true : undefined\"\n v-on=\"part !== 'literal' ? {\n mousedown: handleSegmentClick,\n keydown: handleSegmentKeydown,\n focusout: () => { hasLeftFocus = true },\n focusin: (e: FocusEvent) => {\n rootContext.setFocusedElement(e.target as HTMLElement)\n },\n } : {}\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAcA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAc,0BAA2B,EAAA;AAE/C,IAAM,MAAA,YAAA,GAAe,IAAI,IAAI,CAAA;AAC7B,IAAM,MAAA,WAAA,GAAc,IAAI,KAAK,CAAA;AAE7B,IAAM,MAAA;AAAA,MACJ,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,QACE,YAAa,CAAA;AAAA,MACf,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAa,WAAY,CAAA,WAAA;AAAA,MACzB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,eAAe,WAAY,CAAA,aAAA;AAAA,MAC3B,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,YAAY,WAAY,CAAA;AAAA,KACzB,CAAA;AAED,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,SAAY,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,UAAU,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"TimeFieldInput.js","sources":["../../src/TimeField/TimeFieldInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { SegmentPart } from '@/shared/date'\nimport { Primitive } from '@/Primitive'\nimport { useDateField } from '@/shared/date/useDateField'\nimport { computed, ref } from 'vue'\nimport { injectTimeFieldRootContext } from './TimeFieldRoot.vue'\n\nexport interface TimeFieldInputProps extends PrimitiveProps {\n /** The part of the date to render */\n part: SegmentPart\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = defineProps<TimeFieldInputProps>()\n\nconst rootContext = injectTimeFieldRootContext()\n\nconst hasLeftFocus = ref(true)\nconst lastKeyZero = ref(false)\n\nconst {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes,\n} = useDateField({\n hasLeftFocus,\n lastKeyZero,\n placeholder: rootContext.placeholder,\n hourCycle: rootContext.hourCycle,\n segmentValues: rootContext.segmentValues,\n formatter: rootContext.formatter,\n part: props.part,\n disabled: rootContext.disabled,\n readonly: rootContext.readonly,\n focusNext: rootContext.focusNext,\n modelValue: rootContext.modelValue,\n})\n\nconst disabled = computed(() => rootContext.disabled.value)\nconst readonly = computed(() => rootContext.readonly.value)\nconst isInvalid = computed(() => rootContext.isInvalid.value)\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"attributes\"\n :contenteditable=\"disabled || readonly ? false : part !== 'literal'\"\n :data-reka-time-field-segment=\"part\"\n :aria-disabled=\"disabled ? true : undefined\"\n :aria-readonly=\"readonly ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :aria-invalid=\"isInvalid ? true : undefined\"\n v-on=\"part !== 'literal' ? {\n mousedown: handleSegmentClick,\n keydown: handleSegmentKeydown,\n focusout: () => { hasLeftFocus = true },\n focusin: (e: FocusEvent) => {\n rootContext.setFocusedElement(e.target as HTMLElement)\n },\n } : {}\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,cAAc,0BAA2B,EAAA;AAE/C,IAAM,MAAA,YAAA,GAAe,IAAI,IAAI,CAAA;AAC7B,IAAM,MAAA,WAAA,GAAc,IAAI,KAAK,CAAA;AAE7B,IAAM,MAAA;AAAA,MACJ,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,QACE,YAAa,CAAA;AAAA,MACf,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAa,WAAY,CAAA,WAAA;AAAA,MACzB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,eAAe,WAAY,CAAA,aAAA;AAAA,MAC3B,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,UAAU,WAAY,CAAA,QAAA;AAAA,MACtB,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,YAAY,WAAY,CAAA;AAAA,KACzB,CAAA;AAED,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,SAAY,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,UAAU,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  const vue = require('vue');
4
4
  const core = require('@vueuse/core');
5
- const date = require('@internationalized/date');
6
5
  const date_comparators = require('../date/comparators.cjs');
6
+ const date = require('@internationalized/date');
7
7
  const shared_createContext = require('../shared/createContext.cjs');
8
8
  const shared_useLocale = require('../shared/useLocale.cjs');
9
9
  const shared_useDirection = require('../shared/useDirection.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"TimeFieldRoot.cjs","sources":["../../src/TimeField/TimeFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { type DateValue, Time, getLocalTimeZone, isEqualDay, toCalendarDateTime, today } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Formatter, createContext, isNullish, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'\nimport {\n type HourCycle,\n type SegmentPart,\n type SegmentValueObj,\n type TimeValue,\n createContent,\n getDefaultTime,\n getTimeFieldSegmentElements,\n initializeTimeSegmentValues,\n isSegmentNavigationKey,\n syncTimeSegmentValues,\n\n} from '@/shared/date'\nimport { isBefore } from '@/date'\nimport type { Direction, FormFieldProps } from '@/shared/types'\n\ntype TimeFieldRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | undefined>\n placeholder: Ref<DateValue>\n isInvalid: Ref<boolean>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n formatter: Formatter\n hourCycle: HourCycle\n segmentValues: Ref<SegmentValueObj>\n segmentContents: Ref<{ part: SegmentPart, value: string }[]>\n elements: Ref<Set<HTMLElement>>\n focusNext: () => void\n setFocusedElement: (el: HTMLElement) => void\n}\n\nexport interface TimeFieldRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value for the calendar */\n defaultValue?: TimeValue\n /** The default placeholder date */\n defaultPlaceholder?: TimeValue\n /** The placeholder date, which is used to determine what time to display when no time is selected. This updates as the user navigates the field */\n placeholder?: TimeValue\n /** The controlled checked state of the field. Can be bound as `v-model`. */\n modelValue?: TimeValue | null\n /** The hour cycle used for formatting times. Defaults to the local preference */\n hourCycle?: HourCycle\n /** The granularity to use for formatting times. Defaults to minute if a Time is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity */\n granularity?: 'hour' | 'minute' | 'second'\n /** Whether or not to hide the time zone segment of the field */\n hideTimeZone?: boolean\n /** The maximum date that can be selected */\n maxValue?: TimeValue\n /** The minimum date that can be selected */\n minValue?: TimeValue\n /** The locale to use for formatting dates */\n locale?: string\n /** Whether or not the time field is disabled */\n disabled?: boolean\n /** Whether or not the time field is readonly */\n readonly?: boolean\n /** Id of the element */\n id?: string\n /** The reading direction of the time field when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n}\n\nexport type TimeFieldRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: TimeValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: TimeValue]\n}\n\nexport const [injectTimeFieldRootContext, provideTimeFieldRootContext]\n = createContext<TimeFieldRootContext>('TimeFieldRoot')\n\nfunction convertValue(value: TimeValue, date: DateValue = today(getLocalTimeZone())) {\n if (value && 'day' in value) {\n return value\n }\n\n return toCalendarDateTime(date, value)\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { VisuallyHidden } from '@/VisuallyHidden'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TimeFieldRootProps>(), {\n defaultValue: undefined,\n disabled: false,\n readonly: false,\n placeholder: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<TimeFieldRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current time of the field */\n modelValue: TimeValue | undefined\n /** The time field segment contents */\n segments: { part: SegmentPart, value: string }[]\n /** Value if the input is invalid */\n isInvalid: boolean\n }) => any\n}>()\n\nconst { disabled, readonly, granularity, defaultValue, minValue, maxValue, dir: propDir, locale: propLocale } = toRefs(props)\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst formatter = useDateFormatter(locale.value)\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst segmentElements = ref<Set<HTMLElement>>(new Set())\n\nconst convertedMinValue = computed(() => minValue.value ? convertValue(minValue.value) : undefined)\nconst convertedMaxValue = computed(() => maxValue.value ? convertValue(maxValue.value) : undefined)\n\nonMounted(() => {\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n})\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedModelValue = computed({\n get() {\n if (isNullish(modelValue.value))\n return modelValue.value\n return convertValue(modelValue.value)\n },\n set(newValue) {\n if (newValue)\n modelValue.value = modelValue.value && 'day' in modelValue.value ? newValue : new Time(newValue.hour, newValue.minute, newValue.second, modelValue.value?.millisecond)\n\n return newValue\n },\n})\n\nconst defaultDate = getDefaultTime({\n defaultPlaceholder: props.placeholder,\n defaultValue: modelValue.value,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedPlaceholder = computed({\n get() {\n return convertValue(placeholder.value)\n },\n set(newValue) {\n if (newValue)\n placeholder.value = 'day' in placeholder.value ? newValue.copy() : new Time(newValue.hour, newValue.minute, newValue.second, placeholder.value?.millisecond)\n return newValue\n },\n})\n\nconst inferredGranularity = computed(() => {\n if (granularity.value)\n return granularity.value\n\n return 'minute'\n})\n\nconst isInvalid = computed(() => {\n if (!modelValue.value)\n return false\n\n if (convertedMinValue.value && isBefore(convertedModelValue.value, convertedMinValue.value))\n return true\n\n if (convertedMaxValue.value && isBefore(convertedMaxValue.value, convertedModelValue.value))\n return true\n\n return false\n})\n\nconst initialSegments = initializeTimeSegmentValues(inferredGranularity.value)\n\nconst segmentValues = ref<SegmentValueObj>(modelValue.value ? { ...syncTimeSegmentValues({ value: convertedModelValue.value, formatter }) } : { ...initialSegments })\n\nconst allSegmentContent = computed(() => createContent({\n granularity: inferredGranularity.value,\n dateRef: convertedPlaceholder.value,\n formatter,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n segmentValues: segmentValues.value,\n locale,\n isTimeValue: true,\n}))\n\nconst segmentContents = computed(() => allSegmentContent.value.arr)\n\nconst editableSegmentContents = computed(() => segmentContents.value.filter(({ part }) => part !== 'literal'))\n\nwatch(locale, (value) => {\n if (formatter.getLocale() !== value) {\n formatter.setLocale(value)\n // Locale changed, so we need to clear the segment elements and re-get them (different order)\n // Get the focusable elements again on the next tick\n nextTick(() => {\n segmentElements.value.clear()\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n })\n }\n})\n\nwatch(convertedModelValue, (_modelValue) => {\n if (!isNullish(_modelValue) && (!isEqualDay(convertedPlaceholder.value, _modelValue) || convertedPlaceholder.value.compare(_modelValue) !== 0))\n placeholder.value = _modelValue.copy()\n})\n\nwatch([convertedModelValue, locale], ([_modelValue]) => {\n if (!isNullish(_modelValue)) {\n segmentValues.value = { ...syncTimeSegmentValues({ value: _modelValue, formatter }) }\n }\n else if (Object.values(segmentValues.value).every(value => value === null) || isNullish(_modelValue)) {\n segmentValues.value = { ...initialSegments }\n }\n})\n\nconst currentFocusedElement = ref<HTMLElement | null>(null)\n\nconst currentSegmentIndex = computed(() =>\n Array.from(segmentElements.value).findIndex(el =>\n el.getAttribute('data-reka-time-field-segment')\n === currentFocusedElement.value?.getAttribute('data-reka-time-field-segment')))\n\nconst nextFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const nextCondition = sign < 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (nextCondition)\n return null\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value + sign]\n return segmentToFocus\n})\n\nconst prevFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const prevCondition = sign > 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (prevCondition)\n return null\n\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value - sign]\n return segmentToFocus\n})\n\nconst kbd = useKbd()\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (!isSegmentNavigationKey(e.key))\n return\n if (e.key === kbd.ARROW_LEFT)\n prevFocusableSegment.value?.focus()\n if (e.key === kbd.ARROW_RIGHT)\n nextFocusableSegment.value?.focus()\n}\n\nfunction setFocusedElement(el: HTMLElement) {\n currentFocusedElement.value = el\n}\n\nprovideTimeFieldRootContext({\n locale,\n modelValue: convertedModelValue,\n placeholder: convertedPlaceholder,\n disabled,\n formatter,\n hourCycle: props.hourCycle,\n readonly,\n segmentValues,\n isInvalid,\n segmentContents: editableSegmentContents,\n elements: segmentElements,\n setFocusedElement,\n focusNext() {\n nextFocusableSegment.value?.focus()\n },\n})\n\ndefineExpose({\n /** Helper to set the focused element inside the DateField */\n setFocusedElement,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :aria-disabled=\"disabled ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n @keydown.left.right=\"handleKeydown\"\n >\n <slot\n :model-value=\"modelValue\"\n :segments=\"segmentContents\"\n :is-invalid=\"isInvalid\"\n />\n\n <VisuallyHidden\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"modelValue ? modelValue.toString() : ''\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(segmentElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","date","today","getLocalTimeZone","toCalendarDateTime","toRefs","useLocale","useDirection","useDateFormatter","usePrimitiveElement","ref","computed","onMounted","getTimeFieldSegmentElements","useVModel","isNullish","Time","getDefaultTime","isBefore","initializeTimeSegmentValues","syncTimeSegmentValues","createContent","watch","nextTick","isEqualDay","useKbd","isSegmentNavigationKey"],"mappings":"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"}
1
+ {"version":3,"file":"TimeFieldRoot.cjs","sources":["../../src/TimeField/TimeFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nimport type { Formatter } from '@/shared'\nimport type { HourCycle, SegmentPart, SegmentValueObj, TimeValue } from '@/shared/date'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport type { DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { isBefore } from '@/date'\nimport { createContext, isNullish, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'\nimport {\n createContent,\n getDefaultTime,\n getTimeFieldSegmentElements,\n\n initializeTimeSegmentValues,\n isSegmentNavigationKey,\n\n syncTimeSegmentValues,\n\n} from '@/shared/date'\nimport { getLocalTimeZone, isEqualDay, Time, toCalendarDateTime, today } from '@internationalized/date'\n\ntype TimeFieldRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | undefined>\n placeholder: Ref<DateValue>\n isInvalid: Ref<boolean>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n formatter: Formatter\n hourCycle: HourCycle\n segmentValues: Ref<SegmentValueObj>\n segmentContents: Ref<{ part: SegmentPart, value: string }[]>\n elements: Ref<Set<HTMLElement>>\n focusNext: () => void\n setFocusedElement: (el: HTMLElement) => void\n}\n\nexport interface TimeFieldRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value for the calendar */\n defaultValue?: TimeValue\n /** The default placeholder date */\n defaultPlaceholder?: TimeValue\n /** The placeholder date, which is used to determine what time to display when no time is selected. This updates as the user navigates the field */\n placeholder?: TimeValue\n /** The controlled checked state of the field. Can be bound as `v-model`. */\n modelValue?: TimeValue | null\n /** The hour cycle used for formatting times. Defaults to the local preference */\n hourCycle?: HourCycle\n /** The granularity to use for formatting times. Defaults to minute if a Time is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity */\n granularity?: 'hour' | 'minute' | 'second'\n /** Whether or not to hide the time zone segment of the field */\n hideTimeZone?: boolean\n /** The maximum date that can be selected */\n maxValue?: TimeValue\n /** The minimum date that can be selected */\n minValue?: TimeValue\n /** The locale to use for formatting dates */\n locale?: string\n /** Whether or not the time field is disabled */\n disabled?: boolean\n /** Whether or not the time field is readonly */\n readonly?: boolean\n /** Id of the element */\n id?: string\n /** The reading direction of the time field when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n}\n\nexport type TimeFieldRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: TimeValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: TimeValue]\n}\n\nexport const [injectTimeFieldRootContext, provideTimeFieldRootContext]\n = createContext<TimeFieldRootContext>('TimeFieldRoot')\n\nfunction convertValue(value: TimeValue, date: DateValue = today(getLocalTimeZone())) {\n if (value && 'day' in value) {\n return value\n }\n\n return toCalendarDateTime(date, value)\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHidden } from '@/VisuallyHidden'\nimport { useVModel } from '@vueuse/core'\nimport { computed, nextTick, onMounted, ref, toRefs, watch } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TimeFieldRootProps>(), {\n defaultValue: undefined,\n disabled: false,\n readonly: false,\n placeholder: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<TimeFieldRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current time of the field */\n modelValue: TimeValue | undefined\n /** The time field segment contents */\n segments: { part: SegmentPart, value: string }[]\n /** Value if the input is invalid */\n isInvalid: boolean\n }) => any\n}>()\n\nconst { disabled, readonly, granularity, defaultValue, minValue, maxValue, dir: propDir, locale: propLocale } = toRefs(props)\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst formatter = useDateFormatter(locale.value)\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst segmentElements = ref<Set<HTMLElement>>(new Set())\n\nconst convertedMinValue = computed(() => minValue.value ? convertValue(minValue.value) : undefined)\nconst convertedMaxValue = computed(() => maxValue.value ? convertValue(maxValue.value) : undefined)\n\nonMounted(() => {\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n})\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedModelValue = computed({\n get() {\n if (isNullish(modelValue.value))\n return modelValue.value\n return convertValue(modelValue.value)\n },\n set(newValue) {\n if (newValue)\n modelValue.value = modelValue.value && 'day' in modelValue.value ? newValue : new Time(newValue.hour, newValue.minute, newValue.second, modelValue.value?.millisecond)\n\n return newValue\n },\n})\n\nconst defaultDate = getDefaultTime({\n defaultPlaceholder: props.placeholder,\n defaultValue: modelValue.value,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedPlaceholder = computed({\n get() {\n return convertValue(placeholder.value)\n },\n set(newValue) {\n if (newValue)\n placeholder.value = 'day' in placeholder.value ? newValue.copy() : new Time(newValue.hour, newValue.minute, newValue.second, placeholder.value?.millisecond)\n return newValue\n },\n})\n\nconst inferredGranularity = computed(() => {\n if (granularity.value)\n return granularity.value\n\n return 'minute'\n})\n\nconst isInvalid = computed(() => {\n if (!modelValue.value)\n return false\n\n if (convertedMinValue.value && isBefore(convertedModelValue.value, convertedMinValue.value))\n return true\n\n if (convertedMaxValue.value && isBefore(convertedMaxValue.value, convertedModelValue.value))\n return true\n\n return false\n})\n\nconst initialSegments = initializeTimeSegmentValues(inferredGranularity.value)\n\nconst segmentValues = ref<SegmentValueObj>(modelValue.value ? { ...syncTimeSegmentValues({ value: convertedModelValue.value, formatter }) } : { ...initialSegments })\n\nconst allSegmentContent = computed(() => createContent({\n granularity: inferredGranularity.value,\n dateRef: convertedPlaceholder.value,\n formatter,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n segmentValues: segmentValues.value,\n locale,\n isTimeValue: true,\n}))\n\nconst segmentContents = computed(() => allSegmentContent.value.arr)\n\nconst editableSegmentContents = computed(() => segmentContents.value.filter(({ part }) => part !== 'literal'))\n\nwatch(locale, (value) => {\n if (formatter.getLocale() !== value) {\n formatter.setLocale(value)\n // Locale changed, so we need to clear the segment elements and re-get them (different order)\n // Get the focusable elements again on the next tick\n nextTick(() => {\n segmentElements.value.clear()\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n })\n }\n})\n\nwatch(convertedModelValue, (_modelValue) => {\n if (!isNullish(_modelValue) && (!isEqualDay(convertedPlaceholder.value, _modelValue) || convertedPlaceholder.value.compare(_modelValue) !== 0))\n placeholder.value = _modelValue.copy()\n})\n\nwatch([convertedModelValue, locale], ([_modelValue]) => {\n if (!isNullish(_modelValue)) {\n segmentValues.value = { ...syncTimeSegmentValues({ value: _modelValue, formatter }) }\n }\n else if (Object.values(segmentValues.value).every(value => value === null) || isNullish(_modelValue)) {\n segmentValues.value = { ...initialSegments }\n }\n})\n\nconst currentFocusedElement = ref<HTMLElement | null>(null)\n\nconst currentSegmentIndex = computed(() =>\n Array.from(segmentElements.value).findIndex(el =>\n el.getAttribute('data-reka-time-field-segment')\n === currentFocusedElement.value?.getAttribute('data-reka-time-field-segment')))\n\nconst nextFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const nextCondition = sign < 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (nextCondition)\n return null\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value + sign]\n return segmentToFocus\n})\n\nconst prevFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const prevCondition = sign > 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (prevCondition)\n return null\n\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value - sign]\n return segmentToFocus\n})\n\nconst kbd = useKbd()\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (!isSegmentNavigationKey(e.key))\n return\n if (e.key === kbd.ARROW_LEFT)\n prevFocusableSegment.value?.focus()\n if (e.key === kbd.ARROW_RIGHT)\n nextFocusableSegment.value?.focus()\n}\n\nfunction setFocusedElement(el: HTMLElement) {\n currentFocusedElement.value = el\n}\n\nprovideTimeFieldRootContext({\n locale,\n modelValue: convertedModelValue,\n placeholder: convertedPlaceholder,\n disabled,\n formatter,\n hourCycle: props.hourCycle,\n readonly,\n segmentValues,\n isInvalid,\n segmentContents: editableSegmentContents,\n elements: segmentElements,\n setFocusedElement,\n focusNext() {\n nextFocusableSegment.value?.focus()\n },\n})\n\ndefineExpose({\n /** Helper to set the focused element inside the DateField */\n setFocusedElement,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :aria-disabled=\"disabled ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n @keydown.left.right=\"handleKeydown\"\n >\n <slot\n :model-value=\"modelValue\"\n :segments=\"segmentContents\"\n :is-invalid=\"isInvalid\"\n />\n\n <VisuallyHidden\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"modelValue ? modelValue.toString() : ''\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(segmentElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","date","today","getLocalTimeZone","toCalendarDateTime","toRefs","useLocale","useDirection","useDateFormatter","usePrimitiveElement","ref","computed","onMounted","getTimeFieldSegmentElements","useVModel","isNullish","Time","getDefaultTime","isBefore","initializeTimeSegmentValues","syncTimeSegmentValues","createContent","watch","nextTick","isEqualDay","useKbd","isSegmentNavigationKey"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, toRefs, ref, computed, onMounted, watch, nextTick, createBlock, openBlock, unref, mergeProps, withKeys, withCtx, renderSlot, createVNode } from 'vue';
2
2
  import { useVModel } from '@vueuse/core';
3
- import { today, Time, isEqualDay, toCalendarDateTime, getLocalTimeZone } from '@internationalized/date';
4
3
  import { o as getDefaultTime, b as isBefore } from '../date/comparators.js';
4
+ import { today, Time, isEqualDay, toCalendarDateTime, getLocalTimeZone } from '@internationalized/date';
5
5
  import { c as createContext } from '../shared/createContext.js';
6
6
  import { u as useLocale } from '../shared/useLocale.js';
7
7
  import { u as useDirection } from '../shared/useDirection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"TimeFieldRoot.js","sources":["../../src/TimeField/TimeFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { type DateValue, Time, getLocalTimeZone, isEqualDay, toCalendarDateTime, today } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Formatter, createContext, isNullish, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'\nimport {\n type HourCycle,\n type SegmentPart,\n type SegmentValueObj,\n type TimeValue,\n createContent,\n getDefaultTime,\n getTimeFieldSegmentElements,\n initializeTimeSegmentValues,\n isSegmentNavigationKey,\n syncTimeSegmentValues,\n\n} from '@/shared/date'\nimport { isBefore } from '@/date'\nimport type { Direction, FormFieldProps } from '@/shared/types'\n\ntype TimeFieldRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | undefined>\n placeholder: Ref<DateValue>\n isInvalid: Ref<boolean>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n formatter: Formatter\n hourCycle: HourCycle\n segmentValues: Ref<SegmentValueObj>\n segmentContents: Ref<{ part: SegmentPart, value: string }[]>\n elements: Ref<Set<HTMLElement>>\n focusNext: () => void\n setFocusedElement: (el: HTMLElement) => void\n}\n\nexport interface TimeFieldRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value for the calendar */\n defaultValue?: TimeValue\n /** The default placeholder date */\n defaultPlaceholder?: TimeValue\n /** The placeholder date, which is used to determine what time to display when no time is selected. This updates as the user navigates the field */\n placeholder?: TimeValue\n /** The controlled checked state of the field. Can be bound as `v-model`. */\n modelValue?: TimeValue | null\n /** The hour cycle used for formatting times. Defaults to the local preference */\n hourCycle?: HourCycle\n /** The granularity to use for formatting times. Defaults to minute if a Time is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity */\n granularity?: 'hour' | 'minute' | 'second'\n /** Whether or not to hide the time zone segment of the field */\n hideTimeZone?: boolean\n /** The maximum date that can be selected */\n maxValue?: TimeValue\n /** The minimum date that can be selected */\n minValue?: TimeValue\n /** The locale to use for formatting dates */\n locale?: string\n /** Whether or not the time field is disabled */\n disabled?: boolean\n /** Whether or not the time field is readonly */\n readonly?: boolean\n /** Id of the element */\n id?: string\n /** The reading direction of the time field when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n}\n\nexport type TimeFieldRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: TimeValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: TimeValue]\n}\n\nexport const [injectTimeFieldRootContext, provideTimeFieldRootContext]\n = createContext<TimeFieldRootContext>('TimeFieldRoot')\n\nfunction convertValue(value: TimeValue, date: DateValue = today(getLocalTimeZone())) {\n if (value && 'day' in value) {\n return value\n }\n\n return toCalendarDateTime(date, value)\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { VisuallyHidden } from '@/VisuallyHidden'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TimeFieldRootProps>(), {\n defaultValue: undefined,\n disabled: false,\n readonly: false,\n placeholder: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<TimeFieldRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current time of the field */\n modelValue: TimeValue | undefined\n /** The time field segment contents */\n segments: { part: SegmentPart, value: string }[]\n /** Value if the input is invalid */\n isInvalid: boolean\n }) => any\n}>()\n\nconst { disabled, readonly, granularity, defaultValue, minValue, maxValue, dir: propDir, locale: propLocale } = toRefs(props)\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst formatter = useDateFormatter(locale.value)\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst segmentElements = ref<Set<HTMLElement>>(new Set())\n\nconst convertedMinValue = computed(() => minValue.value ? convertValue(minValue.value) : undefined)\nconst convertedMaxValue = computed(() => maxValue.value ? convertValue(maxValue.value) : undefined)\n\nonMounted(() => {\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n})\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedModelValue = computed({\n get() {\n if (isNullish(modelValue.value))\n return modelValue.value\n return convertValue(modelValue.value)\n },\n set(newValue) {\n if (newValue)\n modelValue.value = modelValue.value && 'day' in modelValue.value ? newValue : new Time(newValue.hour, newValue.minute, newValue.second, modelValue.value?.millisecond)\n\n return newValue\n },\n})\n\nconst defaultDate = getDefaultTime({\n defaultPlaceholder: props.placeholder,\n defaultValue: modelValue.value,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedPlaceholder = computed({\n get() {\n return convertValue(placeholder.value)\n },\n set(newValue) {\n if (newValue)\n placeholder.value = 'day' in placeholder.value ? newValue.copy() : new Time(newValue.hour, newValue.minute, newValue.second, placeholder.value?.millisecond)\n return newValue\n },\n})\n\nconst inferredGranularity = computed(() => {\n if (granularity.value)\n return granularity.value\n\n return 'minute'\n})\n\nconst isInvalid = computed(() => {\n if (!modelValue.value)\n return false\n\n if (convertedMinValue.value && isBefore(convertedModelValue.value, convertedMinValue.value))\n return true\n\n if (convertedMaxValue.value && isBefore(convertedMaxValue.value, convertedModelValue.value))\n return true\n\n return false\n})\n\nconst initialSegments = initializeTimeSegmentValues(inferredGranularity.value)\n\nconst segmentValues = ref<SegmentValueObj>(modelValue.value ? { ...syncTimeSegmentValues({ value: convertedModelValue.value, formatter }) } : { ...initialSegments })\n\nconst allSegmentContent = computed(() => createContent({\n granularity: inferredGranularity.value,\n dateRef: convertedPlaceholder.value,\n formatter,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n segmentValues: segmentValues.value,\n locale,\n isTimeValue: true,\n}))\n\nconst segmentContents = computed(() => allSegmentContent.value.arr)\n\nconst editableSegmentContents = computed(() => segmentContents.value.filter(({ part }) => part !== 'literal'))\n\nwatch(locale, (value) => {\n if (formatter.getLocale() !== value) {\n formatter.setLocale(value)\n // Locale changed, so we need to clear the segment elements and re-get them (different order)\n // Get the focusable elements again on the next tick\n nextTick(() => {\n segmentElements.value.clear()\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n })\n }\n})\n\nwatch(convertedModelValue, (_modelValue) => {\n if (!isNullish(_modelValue) && (!isEqualDay(convertedPlaceholder.value, _modelValue) || convertedPlaceholder.value.compare(_modelValue) !== 0))\n placeholder.value = _modelValue.copy()\n})\n\nwatch([convertedModelValue, locale], ([_modelValue]) => {\n if (!isNullish(_modelValue)) {\n segmentValues.value = { ...syncTimeSegmentValues({ value: _modelValue, formatter }) }\n }\n else if (Object.values(segmentValues.value).every(value => value === null) || isNullish(_modelValue)) {\n segmentValues.value = { ...initialSegments }\n }\n})\n\nconst currentFocusedElement = ref<HTMLElement | null>(null)\n\nconst currentSegmentIndex = computed(() =>\n Array.from(segmentElements.value).findIndex(el =>\n el.getAttribute('data-reka-time-field-segment')\n === currentFocusedElement.value?.getAttribute('data-reka-time-field-segment')))\n\nconst nextFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const nextCondition = sign < 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (nextCondition)\n return null\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value + sign]\n return segmentToFocus\n})\n\nconst prevFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const prevCondition = sign > 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (prevCondition)\n return null\n\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value - sign]\n return segmentToFocus\n})\n\nconst kbd = useKbd()\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (!isSegmentNavigationKey(e.key))\n return\n if (e.key === kbd.ARROW_LEFT)\n prevFocusableSegment.value?.focus()\n if (e.key === kbd.ARROW_RIGHT)\n nextFocusableSegment.value?.focus()\n}\n\nfunction setFocusedElement(el: HTMLElement) {\n currentFocusedElement.value = el\n}\n\nprovideTimeFieldRootContext({\n locale,\n modelValue: convertedModelValue,\n placeholder: convertedPlaceholder,\n disabled,\n formatter,\n hourCycle: props.hourCycle,\n readonly,\n segmentValues,\n isInvalid,\n segmentContents: editableSegmentContents,\n elements: segmentElements,\n setFocusedElement,\n focusNext() {\n nextFocusableSegment.value?.focus()\n },\n})\n\ndefineExpose({\n /** Helper to set the focused element inside the DateField */\n setFocusedElement,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :aria-disabled=\"disabled ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n @keydown.left.right=\"handleKeydown\"\n >\n <slot\n :model-value=\"modelValue\"\n :segments=\"segmentContents\"\n :is-invalid=\"isInvalid\"\n />\n\n <VisuallyHidden\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"modelValue ? modelValue.toString() : ''\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(segmentElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TimeFieldRoot.js","sources":["../../src/TimeField/TimeFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nimport type { Formatter } from '@/shared'\nimport type { HourCycle, SegmentPart, SegmentValueObj, TimeValue } from '@/shared/date'\nimport type { Direction, FormFieldProps } from '@/shared/types'\nimport type { DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { isBefore } from '@/date'\nimport { createContext, isNullish, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'\nimport {\n createContent,\n getDefaultTime,\n getTimeFieldSegmentElements,\n\n initializeTimeSegmentValues,\n isSegmentNavigationKey,\n\n syncTimeSegmentValues,\n\n} from '@/shared/date'\nimport { getLocalTimeZone, isEqualDay, Time, toCalendarDateTime, today } from '@internationalized/date'\n\ntype TimeFieldRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | undefined>\n placeholder: Ref<DateValue>\n isInvalid: Ref<boolean>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n formatter: Formatter\n hourCycle: HourCycle\n segmentValues: Ref<SegmentValueObj>\n segmentContents: Ref<{ part: SegmentPart, value: string }[]>\n elements: Ref<Set<HTMLElement>>\n focusNext: () => void\n setFocusedElement: (el: HTMLElement) => void\n}\n\nexport interface TimeFieldRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value for the calendar */\n defaultValue?: TimeValue\n /** The default placeholder date */\n defaultPlaceholder?: TimeValue\n /** The placeholder date, which is used to determine what time to display when no time is selected. This updates as the user navigates the field */\n placeholder?: TimeValue\n /** The controlled checked state of the field. Can be bound as `v-model`. */\n modelValue?: TimeValue | null\n /** The hour cycle used for formatting times. Defaults to the local preference */\n hourCycle?: HourCycle\n /** The granularity to use for formatting times. Defaults to minute if a Time is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity */\n granularity?: 'hour' | 'minute' | 'second'\n /** Whether or not to hide the time zone segment of the field */\n hideTimeZone?: boolean\n /** The maximum date that can be selected */\n maxValue?: TimeValue\n /** The minimum date that can be selected */\n minValue?: TimeValue\n /** The locale to use for formatting dates */\n locale?: string\n /** Whether or not the time field is disabled */\n disabled?: boolean\n /** Whether or not the time field is readonly */\n readonly?: boolean\n /** Id of the element */\n id?: string\n /** The reading direction of the time field when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n}\n\nexport type TimeFieldRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: TimeValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: TimeValue]\n}\n\nexport const [injectTimeFieldRootContext, provideTimeFieldRootContext]\n = createContext<TimeFieldRootContext>('TimeFieldRoot')\n\nfunction convertValue(value: TimeValue, date: DateValue = today(getLocalTimeZone())) {\n if (value && 'day' in value) {\n return value\n }\n\n return toCalendarDateTime(date, value)\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { VisuallyHidden } from '@/VisuallyHidden'\nimport { useVModel } from '@vueuse/core'\nimport { computed, nextTick, onMounted, ref, toRefs, watch } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TimeFieldRootProps>(), {\n defaultValue: undefined,\n disabled: false,\n readonly: false,\n placeholder: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<TimeFieldRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current time of the field */\n modelValue: TimeValue | undefined\n /** The time field segment contents */\n segments: { part: SegmentPart, value: string }[]\n /** Value if the input is invalid */\n isInvalid: boolean\n }) => any\n}>()\n\nconst { disabled, readonly, granularity, defaultValue, minValue, maxValue, dir: propDir, locale: propLocale } = toRefs(props)\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst formatter = useDateFormatter(locale.value)\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst segmentElements = ref<Set<HTMLElement>>(new Set())\n\nconst convertedMinValue = computed(() => minValue.value ? convertValue(minValue.value) : undefined)\nconst convertedMaxValue = computed(() => maxValue.value ? convertValue(maxValue.value) : undefined)\n\nonMounted(() => {\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n})\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedModelValue = computed({\n get() {\n if (isNullish(modelValue.value))\n return modelValue.value\n return convertValue(modelValue.value)\n },\n set(newValue) {\n if (newValue)\n modelValue.value = modelValue.value && 'day' in modelValue.value ? newValue : new Time(newValue.hour, newValue.minute, newValue.second, modelValue.value?.millisecond)\n\n return newValue\n },\n})\n\nconst defaultDate = getDefaultTime({\n defaultPlaceholder: props.placeholder,\n defaultValue: modelValue.value,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<TimeValue>\n\nconst convertedPlaceholder = computed({\n get() {\n return convertValue(placeholder.value)\n },\n set(newValue) {\n if (newValue)\n placeholder.value = 'day' in placeholder.value ? newValue.copy() : new Time(newValue.hour, newValue.minute, newValue.second, placeholder.value?.millisecond)\n return newValue\n },\n})\n\nconst inferredGranularity = computed(() => {\n if (granularity.value)\n return granularity.value\n\n return 'minute'\n})\n\nconst isInvalid = computed(() => {\n if (!modelValue.value)\n return false\n\n if (convertedMinValue.value && isBefore(convertedModelValue.value, convertedMinValue.value))\n return true\n\n if (convertedMaxValue.value && isBefore(convertedMaxValue.value, convertedModelValue.value))\n return true\n\n return false\n})\n\nconst initialSegments = initializeTimeSegmentValues(inferredGranularity.value)\n\nconst segmentValues = ref<SegmentValueObj>(modelValue.value ? { ...syncTimeSegmentValues({ value: convertedModelValue.value, formatter }) } : { ...initialSegments })\n\nconst allSegmentContent = computed(() => createContent({\n granularity: inferredGranularity.value,\n dateRef: convertedPlaceholder.value,\n formatter,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n segmentValues: segmentValues.value,\n locale,\n isTimeValue: true,\n}))\n\nconst segmentContents = computed(() => allSegmentContent.value.arr)\n\nconst editableSegmentContents = computed(() => segmentContents.value.filter(({ part }) => part !== 'literal'))\n\nwatch(locale, (value) => {\n if (formatter.getLocale() !== value) {\n formatter.setLocale(value)\n // Locale changed, so we need to clear the segment elements and re-get them (different order)\n // Get the focusable elements again on the next tick\n nextTick(() => {\n segmentElements.value.clear()\n getTimeFieldSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n })\n }\n})\n\nwatch(convertedModelValue, (_modelValue) => {\n if (!isNullish(_modelValue) && (!isEqualDay(convertedPlaceholder.value, _modelValue) || convertedPlaceholder.value.compare(_modelValue) !== 0))\n placeholder.value = _modelValue.copy()\n})\n\nwatch([convertedModelValue, locale], ([_modelValue]) => {\n if (!isNullish(_modelValue)) {\n segmentValues.value = { ...syncTimeSegmentValues({ value: _modelValue, formatter }) }\n }\n else if (Object.values(segmentValues.value).every(value => value === null) || isNullish(_modelValue)) {\n segmentValues.value = { ...initialSegments }\n }\n})\n\nconst currentFocusedElement = ref<HTMLElement | null>(null)\n\nconst currentSegmentIndex = computed(() =>\n Array.from(segmentElements.value).findIndex(el =>\n el.getAttribute('data-reka-time-field-segment')\n === currentFocusedElement.value?.getAttribute('data-reka-time-field-segment')))\n\nconst nextFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const nextCondition = sign < 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (nextCondition)\n return null\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value + sign]\n return segmentToFocus\n})\n\nconst prevFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const prevCondition = sign > 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (prevCondition)\n return null\n\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value - sign]\n return segmentToFocus\n})\n\nconst kbd = useKbd()\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (!isSegmentNavigationKey(e.key))\n return\n if (e.key === kbd.ARROW_LEFT)\n prevFocusableSegment.value?.focus()\n if (e.key === kbd.ARROW_RIGHT)\n nextFocusableSegment.value?.focus()\n}\n\nfunction setFocusedElement(el: HTMLElement) {\n currentFocusedElement.value = el\n}\n\nprovideTimeFieldRootContext({\n locale,\n modelValue: convertedModelValue,\n placeholder: convertedPlaceholder,\n disabled,\n formatter,\n hourCycle: props.hourCycle,\n readonly,\n segmentValues,\n isInvalid,\n segmentContents: editableSegmentContents,\n elements: segmentElements,\n setFocusedElement,\n focusNext() {\n nextFocusableSegment.value?.focus()\n },\n})\n\ndefineExpose({\n /** Helper to set the focused element inside the DateField */\n setFocusedElement,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :aria-disabled=\"disabled ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n @keydown.left.right=\"handleKeydown\"\n >\n <slot\n :model-value=\"modelValue\"\n :segments=\"segmentContents\"\n :is-invalid=\"isInvalid\"\n />\n\n <VisuallyHidden\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"modelValue ? modelValue.toString() : ''\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(segmentElements)?.[0]?.focus()\"\n />\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 shared = require('@vueuse/shared');
5
4
  const core = require('@vueuse/core');
5
+ const shared = require('@vueuse/shared');
6
6
  const Toast_ToastProvider = require('./ToastProvider.cjs');
7
7
  const VisuallyHidden_VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.cjs');
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"ToastAnnounce.cjs","sources":["../../src/Toast/ToastAnnounce.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectToastProviderContext } from './ToastProvider.vue'\nimport { VisuallyHidden } from '@/VisuallyHidden'\nimport { useTimeout } from '@vueuse/shared'\nimport { useRafFn } from '@vueuse/core'\n\nconst providerContext = injectToastProviderContext()\n\nconst isAnnounced = useTimeout(1000)\nconst renderAnnounceText = ref(false)\n\nuseRafFn(() => {\n renderAnnounceText.value = true\n})\n</script>\n\n<template>\n <VisuallyHidden v-if=\"isAnnounced || renderAnnounceText\">\n {{ providerContext.label.value }}\n <slot />\n </VisuallyHidden>\n</template>\n"],"names":["injectToastProviderContext","useTimeout","ref","useRafFn"],"mappings":";;;;;;;;;;;AAOA,IAAA,MAAM,kBAAkBA,8CAA2B,EAAA;AAEnD,IAAM,MAAA,WAAA,GAAcC,kBAAW,GAAI,CAAA;AACnC,IAAM,MAAA,kBAAA,GAAqBC,QAAI,KAAK,CAAA;AAEpC,IAAAC,aAAA,CAAS,MAAM;AACb,MAAA,kBAAA,CAAmB,KAAQ,GAAA,IAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ToastAnnounce.cjs","sources":["../../src/Toast/ToastAnnounce.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { VisuallyHidden } from '@/VisuallyHidden'\nimport { useRafFn } from '@vueuse/core'\nimport { useTimeout } from '@vueuse/shared'\nimport { ref } from 'vue'\nimport { injectToastProviderContext } from './ToastProvider.vue'\n\nconst providerContext = injectToastProviderContext()\n\nconst isAnnounced = useTimeout(1000)\nconst renderAnnounceText = ref(false)\n\nuseRafFn(() => {\n renderAnnounceText.value = true\n})\n</script>\n\n<template>\n <VisuallyHidden v-if=\"isAnnounced || renderAnnounceText\">\n {{ providerContext.label.value }}\n <slot />\n </VisuallyHidden>\n</template>\n"],"names":["injectToastProviderContext","useTimeout","ref","useRafFn"],"mappings":";;;;;;;;;;;AAOA,IAAA,MAAM,kBAAkBA,8CAA2B,EAAA;AAEnD,IAAM,MAAA,WAAA,GAAcC,kBAAW,GAAI,CAAA;AACnC,IAAM,MAAA,kBAAA,GAAqBC,QAAI,KAAK,CAAA;AAEpC,IAAAC,aAAA,CAAS,MAAM;AACb,MAAA,kBAAA,CAAmB,KAAQ,GAAA,IAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, createBlock, createCommentVNode, unref, openBlock, withCtx, createTextVNode, renderSlot, toDisplayString } from 'vue';
2
- import { useTimeout } from '@vueuse/shared';
3
2
  import { useRafFn } from '@vueuse/core';
3
+ import { useTimeout } from '@vueuse/shared';
4
4
  import { i as injectToastProviderContext } from './ToastProvider.js';
5
5
  import { _ as _sfc_main$1 } from '../VisuallyHidden/VisuallyHidden.js';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"ToastAnnounce.js","sources":["../../src/Toast/ToastAnnounce.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectToastProviderContext } from './ToastProvider.vue'\nimport { VisuallyHidden } from '@/VisuallyHidden'\nimport { useTimeout } from '@vueuse/shared'\nimport { useRafFn } from '@vueuse/core'\n\nconst providerContext = injectToastProviderContext()\n\nconst isAnnounced = useTimeout(1000)\nconst renderAnnounceText = ref(false)\n\nuseRafFn(() => {\n renderAnnounceText.value = true\n})\n</script>\n\n<template>\n <VisuallyHidden v-if=\"isAnnounced || renderAnnounceText\">\n {{ providerContext.label.value }}\n <slot />\n </VisuallyHidden>\n</template>\n"],"names":[],"mappings":";;;;;;;;;AAOA,IAAA,MAAM,kBAAkB,0BAA2B,EAAA;AAEnD,IAAM,MAAA,WAAA,GAAc,WAAW,GAAI,CAAA;AACnC,IAAM,MAAA,kBAAA,GAAqB,IAAI,KAAK,CAAA;AAEpC,IAAA,QAAA,CAAS,MAAM;AACb,MAAA,kBAAA,CAAmB,KAAQ,GAAA,IAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ToastAnnounce.js","sources":["../../src/Toast/ToastAnnounce.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { VisuallyHidden } from '@/VisuallyHidden'\nimport { useRafFn } from '@vueuse/core'\nimport { useTimeout } from '@vueuse/shared'\nimport { ref } from 'vue'\nimport { injectToastProviderContext } from './ToastProvider.vue'\n\nconst providerContext = injectToastProviderContext()\n\nconst isAnnounced = useTimeout(1000)\nconst renderAnnounceText = ref(false)\n\nuseRafFn(() => {\n renderAnnounceText.value = true\n})\n</script>\n\n<template>\n <VisuallyHidden v-if=\"isAnnounced || renderAnnounceText\">\n {{ providerContext.label.value }}\n <slot />\n </VisuallyHidden>\n</template>\n"],"names":[],"mappings":";;;;;;;;;AAOA,IAAA,MAAM,kBAAkB,0BAA2B,EAAA;AAEnD,IAAM,MAAA,WAAA,GAAc,WAAW,GAAI,CAAA;AACnC,IAAM,MAAA,kBAAA,GAAqB,IAAI,KAAK,CAAA;AAEpC,IAAA,QAAA,CAAS,MAAM;AACb,MAAA,kBAAA,CAAmB,KAAQ,GAAA,IAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.cjs","sources":["../../src/Toast/ToastProvider.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { SwipeDirection } from './utils'\nimport { createContext } from '@/shared'\nimport { useCollection } from '@/Collection'\n\ntype ToastProviderContext = {\n label: Ref<string>\n duration: Ref<number>\n swipeDirection: Ref< SwipeDirection>\n swipeThreshold: Ref<number>\n toastCount: Ref<number>\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement) => void\n onToastAdd: () => void\n onToastRemove: () => void\n isFocusedToastEscapeKeyDownRef: Ref<boolean>\n isClosePausedRef: Ref<boolean>\n}\n\nexport interface ToastProviderProps {\n /**\n * An author-localized label for each toast. Used to help screen reader users\n * associate the interruption with a toast.\n * @defaultValue 'Notification'\n */\n label?: string\n /**\n * Time in milliseconds that each toast should remain visible for.\n * @defaultValue 5000\n */\n duration?: number\n /**\n * Direction of pointer swipe that should close the toast.\n * @defaultValue 'right'\n */\n swipeDirection?: SwipeDirection\n /**\n * Distance in pixels that the swipe must pass before a close is triggered.\n * @defaultValue 50\n */\n swipeThreshold?: number\n}\n\nexport const [injectToastProviderContext, provideToastProviderContext]\n = createContext<ToastProviderContext>('ToastProvider')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ToastProviderProps>(), {\n label: 'Notification',\n duration: 5000,\n swipeDirection: 'right',\n swipeThreshold: 50,\n})\nconst { label, duration, swipeDirection, swipeThreshold } = toRefs(props)\nuseCollection({ isProvider: true })\n\nconst viewport = ref<HTMLElement>()\nconst toastCount = ref(0)\nconst isFocusedToastEscapeKeyDownRef = ref(false)\nconst isClosePausedRef = ref(false)\n\nif (props.label && typeof props.label === 'string' && !props.label.trim()) {\n const error = 'Invalid prop `label` supplied to `ToastProvider`. Expected non-empty `string`.'\n throw new Error(error)\n}\n\nprovideToastProviderContext({\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange(el) {\n viewport.value = el\n },\n onToastAdd() {\n toastCount.value++\n },\n onToastRemove() {\n toastCount.value--\n },\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n\n})\n</script>\n\n<template>\n <slot />\n</template>\n"],"names":["createContext","toRefs","useCollection","ref"],"mappings":";;;;;;AA4CO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjEA,mCAAoC,eAAe;;;;;;;;;;;;;AAUvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,EAAE,KAAO,EAAA,QAAA,EAAU,gBAAgB,cAAe,EAAA,GAAIC,WAAO,KAAK,CAAA;AACxE,IAAcC,mCAAA,CAAA,EAAE,UAAY,EAAA,IAAA,EAAM,CAAA;AAElC,IAAA,MAAM,WAAWC,OAAiB,EAAA;AAClC,IAAM,MAAA,UAAA,GAAaA,QAAI,CAAC,CAAA;AACxB,IAAM,MAAA,8BAAA,GAAiCA,QAAI,KAAK,CAAA;AAChD,IAAM,MAAA,gBAAA,GAAmBA,QAAI,KAAK,CAAA;AAElC,IAAI,IAAA,KAAA,CAAM,KAAS,IAAA,OAAO,KAAM,CAAA,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,KAAM,CAAA,IAAA,EAAQ,EAAA;AACzE,MAAA,MAAM,KAAQ,GAAA,gFAAA;AACd,MAAM,MAAA,IAAI,MAAM,KAAK,CAAA;AAAA;AAGvB,IAA4B,2BAAA,CAAA;AAAA,MAC1B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAiB,EAAI,EAAA;AACnB,QAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AAAA,OACnB;AAAA,MACA,UAAa,GAAA;AACX,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,aAAgB,GAAA;AACd,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,8BAAA;AAAA,MACA;AAAA,KAED,CAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"ToastProvider.cjs","sources":["../../src/Toast/ToastProvider.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { SwipeDirection } from './utils'\nimport { useCollection } from '@/Collection'\nimport { createContext } from '@/shared'\n\ntype ToastProviderContext = {\n label: Ref<string>\n duration: Ref<number>\n swipeDirection: Ref<SwipeDirection>\n swipeThreshold: Ref<number>\n toastCount: Ref<number>\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement) => void\n onToastAdd: () => void\n onToastRemove: () => void\n isFocusedToastEscapeKeyDownRef: Ref<boolean>\n isClosePausedRef: Ref<boolean>\n}\n\nexport interface ToastProviderProps {\n /**\n * An author-localized label for each toast. Used to help screen reader users\n * associate the interruption with a toast.\n * @defaultValue 'Notification'\n */\n label?: string\n /**\n * Time in milliseconds that each toast should remain visible for.\n * @defaultValue 5000\n */\n duration?: number\n /**\n * Direction of pointer swipe that should close the toast.\n * @defaultValue 'right'\n */\n swipeDirection?: SwipeDirection\n /**\n * Distance in pixels that the swipe must pass before a close is triggered.\n * @defaultValue 50\n */\n swipeThreshold?: number\n}\n\nexport const [injectToastProviderContext, provideToastProviderContext]\n = createContext<ToastProviderContext>('ToastProvider')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ToastProviderProps>(), {\n label: 'Notification',\n duration: 5000,\n swipeDirection: 'right',\n swipeThreshold: 50,\n})\nconst { label, duration, swipeDirection, swipeThreshold } = toRefs(props)\nuseCollection({ isProvider: true })\n\nconst viewport = ref<HTMLElement>()\nconst toastCount = ref(0)\nconst isFocusedToastEscapeKeyDownRef = ref(false)\nconst isClosePausedRef = ref(false)\n\nif (props.label && typeof props.label === 'string' && !props.label.trim()) {\n const error = 'Invalid prop `label` supplied to `ToastProvider`. Expected non-empty `string`.'\n throw new Error(error)\n}\n\nprovideToastProviderContext({\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange(el) {\n viewport.value = el\n },\n onToastAdd() {\n toastCount.value++\n },\n onToastRemove() {\n toastCount.value--\n },\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n\n})\n</script>\n\n<template>\n <slot />\n</template>\n"],"names":["createContext","toRefs","useCollection","ref"],"mappings":";;;;;;AA4CO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjEA,mCAAoC,eAAe;;;;;;;;;;;;;AAUvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,EAAE,KAAO,EAAA,QAAA,EAAU,gBAAgB,cAAe,EAAA,GAAIC,WAAO,KAAK,CAAA;AACxE,IAAcC,mCAAA,CAAA,EAAE,UAAY,EAAA,IAAA,EAAM,CAAA;AAElC,IAAA,MAAM,WAAWC,OAAiB,EAAA;AAClC,IAAM,MAAA,UAAA,GAAaA,QAAI,CAAC,CAAA;AACxB,IAAM,MAAA,8BAAA,GAAiCA,QAAI,KAAK,CAAA;AAChD,IAAM,MAAA,gBAAA,GAAmBA,QAAI,KAAK,CAAA;AAElC,IAAI,IAAA,KAAA,CAAM,KAAS,IAAA,OAAO,KAAM,CAAA,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,KAAM,CAAA,IAAA,EAAQ,EAAA;AACzE,MAAA,MAAM,KAAQ,GAAA,gFAAA;AACd,MAAM,MAAA,IAAI,MAAM,KAAK,CAAA;AAAA;AAGvB,IAA4B,2BAAA,CAAA;AAAA,MAC1B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAiB,EAAI,EAAA;AACnB,QAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AAAA,OACnB;AAAA,MACA,UAAa,GAAA;AACX,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,aAAgB,GAAA;AACd,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,8BAAA;AAAA,MACA;AAAA,KAED,CAAA;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.js","sources":["../../src/Toast/ToastProvider.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { SwipeDirection } from './utils'\nimport { createContext } from '@/shared'\nimport { useCollection } from '@/Collection'\n\ntype ToastProviderContext = {\n label: Ref<string>\n duration: Ref<number>\n swipeDirection: Ref< SwipeDirection>\n swipeThreshold: Ref<number>\n toastCount: Ref<number>\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement) => void\n onToastAdd: () => void\n onToastRemove: () => void\n isFocusedToastEscapeKeyDownRef: Ref<boolean>\n isClosePausedRef: Ref<boolean>\n}\n\nexport interface ToastProviderProps {\n /**\n * An author-localized label for each toast. Used to help screen reader users\n * associate the interruption with a toast.\n * @defaultValue 'Notification'\n */\n label?: string\n /**\n * Time in milliseconds that each toast should remain visible for.\n * @defaultValue 5000\n */\n duration?: number\n /**\n * Direction of pointer swipe that should close the toast.\n * @defaultValue 'right'\n */\n swipeDirection?: SwipeDirection\n /**\n * Distance in pixels that the swipe must pass before a close is triggered.\n * @defaultValue 50\n */\n swipeThreshold?: number\n}\n\nexport const [injectToastProviderContext, provideToastProviderContext]\n = createContext<ToastProviderContext>('ToastProvider')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ToastProviderProps>(), {\n label: 'Notification',\n duration: 5000,\n swipeDirection: 'right',\n swipeThreshold: 50,\n})\nconst { label, duration, swipeDirection, swipeThreshold } = toRefs(props)\nuseCollection({ isProvider: true })\n\nconst viewport = ref<HTMLElement>()\nconst toastCount = ref(0)\nconst isFocusedToastEscapeKeyDownRef = ref(false)\nconst isClosePausedRef = ref(false)\n\nif (props.label && typeof props.label === 'string' && !props.label.trim()) {\n const error = 'Invalid prop `label` supplied to `ToastProvider`. Expected non-empty `string`.'\n throw new Error(error)\n}\n\nprovideToastProviderContext({\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange(el) {\n viewport.value = el\n },\n onToastAdd() {\n toastCount.value++\n },\n onToastRemove() {\n toastCount.value--\n },\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n\n})\n</script>\n\n<template>\n <slot />\n</template>\n"],"names":[],"mappings":";;;;AA4CO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjE,cAAoC,eAAe;;;;;;;;;;;;;AAUvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,EAAE,KAAO,EAAA,QAAA,EAAU,gBAAgB,cAAe,EAAA,GAAI,OAAO,KAAK,CAAA;AACxE,IAAc,aAAA,CAAA,EAAE,UAAY,EAAA,IAAA,EAAM,CAAA;AAElC,IAAA,MAAM,WAAW,GAAiB,EAAA;AAClC,IAAM,MAAA,UAAA,GAAa,IAAI,CAAC,CAAA;AACxB,IAAM,MAAA,8BAAA,GAAiC,IAAI,KAAK,CAAA;AAChD,IAAM,MAAA,gBAAA,GAAmB,IAAI,KAAK,CAAA;AAElC,IAAI,IAAA,KAAA,CAAM,KAAS,IAAA,OAAO,KAAM,CAAA,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,KAAM,CAAA,IAAA,EAAQ,EAAA;AACzE,MAAA,MAAM,KAAQ,GAAA,gFAAA;AACd,MAAM,MAAA,IAAI,MAAM,KAAK,CAAA;AAAA;AAGvB,IAA4B,2BAAA,CAAA;AAAA,MAC1B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAiB,EAAI,EAAA;AACnB,QAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AAAA,OACnB;AAAA,MACA,UAAa,GAAA;AACX,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,aAAgB,GAAA;AACd,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,8BAAA;AAAA,MACA;AAAA,KAED,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"ToastProvider.js","sources":["../../src/Toast/ToastProvider.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { SwipeDirection } from './utils'\nimport { useCollection } from '@/Collection'\nimport { createContext } from '@/shared'\n\ntype ToastProviderContext = {\n label: Ref<string>\n duration: Ref<number>\n swipeDirection: Ref<SwipeDirection>\n swipeThreshold: Ref<number>\n toastCount: Ref<number>\n viewport: Ref<HTMLElement | undefined>\n onViewportChange: (viewport: HTMLElement) => void\n onToastAdd: () => void\n onToastRemove: () => void\n isFocusedToastEscapeKeyDownRef: Ref<boolean>\n isClosePausedRef: Ref<boolean>\n}\n\nexport interface ToastProviderProps {\n /**\n * An author-localized label for each toast. Used to help screen reader users\n * associate the interruption with a toast.\n * @defaultValue 'Notification'\n */\n label?: string\n /**\n * Time in milliseconds that each toast should remain visible for.\n * @defaultValue 5000\n */\n duration?: number\n /**\n * Direction of pointer swipe that should close the toast.\n * @defaultValue 'right'\n */\n swipeDirection?: SwipeDirection\n /**\n * Distance in pixels that the swipe must pass before a close is triggered.\n * @defaultValue 50\n */\n swipeThreshold?: number\n}\n\nexport const [injectToastProviderContext, provideToastProviderContext]\n = createContext<ToastProviderContext>('ToastProvider')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs } from 'vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ToastProviderProps>(), {\n label: 'Notification',\n duration: 5000,\n swipeDirection: 'right',\n swipeThreshold: 50,\n})\nconst { label, duration, swipeDirection, swipeThreshold } = toRefs(props)\nuseCollection({ isProvider: true })\n\nconst viewport = ref<HTMLElement>()\nconst toastCount = ref(0)\nconst isFocusedToastEscapeKeyDownRef = ref(false)\nconst isClosePausedRef = ref(false)\n\nif (props.label && typeof props.label === 'string' && !props.label.trim()) {\n const error = 'Invalid prop `label` supplied to `ToastProvider`. Expected non-empty `string`.'\n throw new Error(error)\n}\n\nprovideToastProviderContext({\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange(el) {\n viewport.value = el\n },\n onToastAdd() {\n toastCount.value++\n },\n onToastRemove() {\n toastCount.value--\n },\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n\n})\n</script>\n\n<template>\n <slot />\n</template>\n"],"names":[],"mappings":";;;;AA4CO,MAAM,CAAC,0BAAA,EAA4B,2BAA2B,CAAA,GACjE,cAAoC,eAAe;;;;;;;;;;;;;AAUvD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,EAAE,KAAO,EAAA,QAAA,EAAU,gBAAgB,cAAe,EAAA,GAAI,OAAO,KAAK,CAAA;AACxE,IAAc,aAAA,CAAA,EAAE,UAAY,EAAA,IAAA,EAAM,CAAA;AAElC,IAAA,MAAM,WAAW,GAAiB,EAAA;AAClC,IAAM,MAAA,UAAA,GAAa,IAAI,CAAC,CAAA;AACxB,IAAM,MAAA,8BAAA,GAAiC,IAAI,KAAK,CAAA;AAChD,IAAM,MAAA,gBAAA,GAAmB,IAAI,KAAK,CAAA;AAElC,IAAI,IAAA,KAAA,CAAM,KAAS,IAAA,OAAO,KAAM,CAAA,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,KAAM,CAAA,IAAA,EAAQ,EAAA;AACzE,MAAA,MAAM,KAAQ,GAAA,gFAAA;AACd,MAAM,MAAA,IAAI,MAAM,KAAK,CAAA;AAAA;AAGvB,IAA4B,2BAAA,CAAA;AAAA,MAC1B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAiB,EAAI,EAAA;AACnB,QAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AAAA,OACnB;AAAA,MACA,UAAa,GAAA;AACX,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,aAAgB,GAAA;AACd,QAAW,UAAA,CAAA,KAAA,EAAA;AAAA,OACb;AAAA,MACA,8BAAA;AAAA,MACA;AAAA,KAED,CAAA;;;;;;;;;"}
@@ -45,35 +45,43 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
45
45
  onEscapeKeyDown: _cache[3] || (_cache[3] = ($event) => emits("escapeKeyDown", $event)),
46
46
  onSwipeStart: _cache[4] || (_cache[4] = (event) => {
47
47
  emits("swipeStart", event);
48
- event.currentTarget.setAttribute("data-swipe", "start");
48
+ if (!event.defaultPrevented) {
49
+ event.currentTarget.setAttribute("data-swipe", "start");
50
+ }
49
51
  }),
50
52
  onSwipeMove: _cache[5] || (_cache[5] = (event) => {
51
53
  emits("swipeMove", event);
52
- const { x, y } = event.detail.delta;
53
- const target = event.currentTarget;
54
- target.setAttribute("data-swipe", "move");
55
- target.style.setProperty("--reka-toast-swipe-move-x", `${x}px`);
56
- target.style.setProperty("--reka-toast-swipe-move-y", `${y}px`);
54
+ if (!event.defaultPrevented) {
55
+ const { x, y } = event.detail.delta;
56
+ const target = event.currentTarget;
57
+ target.setAttribute("data-swipe", "move");
58
+ target.style.setProperty("--reka-toast-swipe-move-x", `${x}px`);
59
+ target.style.setProperty("--reka-toast-swipe-move-y", `${y}px`);
60
+ }
57
61
  }),
58
62
  onSwipeCancel: _cache[6] || (_cache[6] = (event) => {
59
63
  emits("swipeCancel", event);
60
- const target = event.currentTarget;
61
- target.setAttribute("data-swipe", "cancel");
62
- target.style.removeProperty("--reka-toast-swipe-move-x");
63
- target.style.removeProperty("--reka-toast-swipe-move-y");
64
- target.style.removeProperty("--reka-toast-swipe-end-x");
65
- target.style.removeProperty("--reka-toast-swipe-end-y");
64
+ if (!event.defaultPrevented) {
65
+ const target = event.currentTarget;
66
+ target.setAttribute("data-swipe", "cancel");
67
+ target.style.removeProperty("--reka-toast-swipe-move-x");
68
+ target.style.removeProperty("--reka-toast-swipe-move-y");
69
+ target.style.removeProperty("--reka-toast-swipe-end-x");
70
+ target.style.removeProperty("--reka-toast-swipe-end-y");
71
+ }
66
72
  }),
67
73
  onSwipeEnd: _cache[7] || (_cache[7] = (event) => {
68
74
  emits("swipeEnd", event);
69
- const { x, y } = event.detail.delta;
70
- const target = event.currentTarget;
71
- target.setAttribute("data-swipe", "end");
72
- target.style.removeProperty("--reka-toast-swipe-move-x");
73
- target.style.removeProperty("--reka-toast-swipe-move-y");
74
- target.style.setProperty("--reka-toast-swipe-end-x", `${x}px`);
75
- target.style.setProperty("--reka-toast-swipe-end-y", `${y}px`);
76
- open.value = false;
75
+ if (!event.defaultPrevented) {
76
+ const { x, y } = event.detail.delta;
77
+ const target = event.currentTarget;
78
+ target.setAttribute("data-swipe", "end");
79
+ target.style.removeProperty("--reka-toast-swipe-move-x");
80
+ target.style.removeProperty("--reka-toast-swipe-move-y");
81
+ target.style.setProperty("--reka-toast-swipe-end-x", `${x}px`);
82
+ target.style.setProperty("--reka-toast-swipe-end-y", `${y}px`);
83
+ open.value = false;
84
+ }
77
85
  })
78
86
  }), {
79
87
  default: vue.withCtx(({ remaining, duration: _duration }) => [
@@ -1 +1 @@
1
- {"version":3,"file":"ToastRoot.cjs","sources":["../../src/Toast/ToastRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { ToastRootImplEmits, ToastRootImplProps } from './ToastRootImpl.vue'\nimport { useForwardExpose } from '@/shared'\n\nexport type ToastRootEmits = Omit<ToastRootImplEmits, 'close'> & {\n /** Event handler called when the open state changes */\n 'update:open': [value: boolean]\n}\n\nexport interface ToastRootProps extends ToastRootImplProps {\n /** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\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 { useVModel } from '@vueuse/core'\nimport { Presence } from '@/Presence'\nimport ToastRootImpl from './ToastRootImpl.vue'\n\nconst props = withDefaults(defineProps<ToastRootProps>(), {\n type: 'foreground',\n open: undefined,\n defaultOpen: true,\n as: 'li',\n})\n\nconst emits = defineEmits<ToastRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n /** Remaining time (in ms) */\n remaining: number\n /** Total time the toast will remain visible for (in ms) */\n duration: number\n }) => any\n}>()\n\nconst { forwardRef } = useForwardExpose()\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n</script>\n\n<template>\n <Presence :present=\"forceMount || open\">\n <ToastRootImpl\n :ref=\"forwardRef\"\n v-slot=\"{ remaining, duration: _duration }\"\n :open=\"open\"\n :type=\"type\"\n :as=\"as\"\n :as-child=\"asChild\"\n :duration=\"duration\"\n v-bind=\"$attrs\"\n @close=\"open = false\"\n @pause=\"emits('pause')\"\n @resume=\"emits('resume')\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @swipe-start=\"(event) => {\n emits('swipeStart', event);\n (event.currentTarget as HTMLElement).setAttribute('data-swipe', 'start');\n }\"\n @swipe-move=\"(event) => {\n emits('swipeMove', event);\n const { x, y } = event.detail.delta;\n const target = event.currentTarget as HTMLElement\n target.setAttribute('data-swipe', 'move');\n target.style.setProperty('--reka-toast-swipe-move-x', `${x}px`);\n target.style.setProperty('--reka-toast-swipe-move-y', `${y}px`);\n }\"\n @swipe-cancel=\"(event) => {\n emits('swipeCancel', event);\n const target = event.currentTarget as HTMLElement\n target.setAttribute('data-swipe', 'cancel');\n target.style.removeProperty('--reka-toast-swipe-move-x');\n target.style.removeProperty('--reka-toast-swipe-move-y');\n target.style.removeProperty('--reka-toast-swipe-end-x');\n target.style.removeProperty('--reka-toast-swipe-end-y');\n }\"\n @swipe-end=\"(event) => {\n emits('swipeEnd', event);\n const { x, y } = event.detail.delta;\n const target = event.currentTarget as HTMLElement\n target.setAttribute('data-swipe', 'end');\n target.style.removeProperty('--reka-toast-swipe-move-x');\n target.style.removeProperty('--reka-toast-swipe-move-y');\n target.style.setProperty('--reka-toast-swipe-end-x', `${x}px`);\n target.style.setProperty('--reka-toast-swipe-end-y', `${y}px`);\n open = false;\n }\"\n >\n <slot\n :remaining=\"remaining\"\n :duration=\"_duration\"\n :open=\"open\"\n />\n </ToastRootImpl>\n </Presence>\n</template>\n"],"names":["useForwardExpose","useVModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAOd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAad,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIA,wCAAiB,EAAA;AACxC,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA;AAAA,MAC3C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ToastRoot.cjs","sources":["../../src/Toast/ToastRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { ToastRootImplEmits, ToastRootImplProps } from './ToastRootImpl.vue'\nimport { useForwardExpose } from '@/shared'\n\nexport type ToastRootEmits = Omit<ToastRootImplEmits, 'close'> & {\n /** Event handler called when the open state changes */\n 'update:open': [value: boolean]\n}\n\nexport interface ToastRootProps extends ToastRootImplProps {\n /** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\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 { useVModel } from '@vueuse/core'\nimport ToastRootImpl from './ToastRootImpl.vue'\n\nconst props = withDefaults(defineProps<ToastRootProps>(), {\n type: 'foreground',\n open: undefined,\n defaultOpen: true,\n as: 'li',\n})\n\nconst emits = defineEmits<ToastRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n /** Remaining time (in ms) */\n remaining: number\n /** Total time the toast will remain visible for (in ms) */\n duration: number\n }) => any\n}>()\n\nconst { forwardRef } = useForwardExpose()\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n</script>\n\n<template>\n <Presence :present=\"forceMount || open\">\n <ToastRootImpl\n :ref=\"forwardRef\"\n v-slot=\"{ remaining, duration: _duration }\"\n :open=\"open\"\n :type=\"type\"\n :as=\"as\"\n :as-child=\"asChild\"\n :duration=\"duration\"\n v-bind=\"$attrs\"\n @close=\"open = false\"\n @pause=\"emits('pause')\"\n @resume=\"emits('resume')\"\n @escape-key-down=\"emits('escapeKeyDown', $event)\"\n @swipe-start=\"(event) => {\n emits('swipeStart', event);\n if (!event.defaultPrevented) {\n (event.currentTarget as HTMLElement).setAttribute('data-swipe', 'start');\n }\n }\"\n @swipe-move=\"(event) => {\n emits('swipeMove', event);\n if (!event.defaultPrevented) {\n const { x, y } = event.detail.delta;\n const target = event.currentTarget as HTMLElement\n target.setAttribute('data-swipe', 'move');\n target.style.setProperty('--reka-toast-swipe-move-x', `${x}px`);\n target.style.setProperty('--reka-toast-swipe-move-y', `${y}px`);\n }\n }\"\n @swipe-cancel=\"(event) => {\n emits('swipeCancel', event);\n if (!event.defaultPrevented) {\n const target = event.currentTarget as HTMLElement\n target.setAttribute('data-swipe', 'cancel');\n target.style.removeProperty('--reka-toast-swipe-move-x');\n target.style.removeProperty('--reka-toast-swipe-move-y');\n target.style.removeProperty('--reka-toast-swipe-end-x');\n target.style.removeProperty('--reka-toast-swipe-end-y');\n }\n }\"\n @swipe-end=\"(event) => {\n emits('swipeEnd', event);\n if (!event.defaultPrevented) {\n const { x, y } = event.detail.delta;\n const target = event.currentTarget as HTMLElement\n target.setAttribute('data-swipe', 'end');\n target.style.removeProperty('--reka-toast-swipe-move-x');\n target.style.removeProperty('--reka-toast-swipe-move-y');\n target.style.setProperty('--reka-toast-swipe-end-x', `${x}px`);\n target.style.setProperty('--reka-toast-swipe-end-y', `${y}px`);\n open = false;\n }\n }\"\n >\n <slot\n :remaining=\"remaining\"\n :duration=\"_duration\"\n :open=\"open\"\n />\n </ToastRootImpl>\n </Presence>\n</template>\n"],"names":["useForwardExpose","useVModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAOd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAad,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIA,wCAAiB,EAAA;AACxC,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA;AAAA,MAC3C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}