reka-ui 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (817) hide show
  1. package/README.md +1 -1
  2. package/dist/Accordion/AccordionContent.cjs +2 -1
  3. package/dist/Accordion/AccordionContent.cjs.map +1 -1
  4. package/dist/Accordion/AccordionContent.js +3 -2
  5. package/dist/Accordion/AccordionContent.js.map +1 -1
  6. package/dist/Accordion/AccordionHeader.js +1 -1
  7. package/dist/Accordion/AccordionItem.cjs +2 -2
  8. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  9. package/dist/Accordion/AccordionItem.js +3 -3
  10. package/dist/Accordion/AccordionItem.js.map +1 -1
  11. package/dist/Accordion/AccordionRoot.cjs +1 -1
  12. package/dist/Accordion/AccordionRoot.js +2 -2
  13. package/dist/Accordion/AccordionTrigger.cjs +2 -2
  14. package/dist/Accordion/AccordionTrigger.cjs.map +1 -1
  15. package/dist/Accordion/AccordionTrigger.js +3 -3
  16. package/dist/Accordion/AccordionTrigger.js.map +1 -1
  17. package/dist/AlertDialog/AlertDialogAction.js +1 -1
  18. package/dist/AlertDialog/AlertDialogCancel.js +1 -1
  19. package/dist/AlertDialog/AlertDialogContent.cjs +1 -1
  20. package/dist/AlertDialog/AlertDialogContent.js +2 -2
  21. package/dist/AlertDialog/AlertDialogDescription.js +1 -1
  22. package/dist/AlertDialog/AlertDialogOverlay.js +1 -1
  23. package/dist/AlertDialog/AlertDialogPortal.js +1 -1
  24. package/dist/AlertDialog/AlertDialogRoot.js +1 -1
  25. package/dist/AlertDialog/AlertDialogTitle.js +1 -1
  26. package/dist/AlertDialog/AlertDialogTrigger.js +1 -1
  27. package/dist/AspectRatio/AspectRatio.js +1 -1
  28. package/dist/Avatar/AvatarFallback.js +1 -1
  29. package/dist/Avatar/AvatarImage.js +1 -1
  30. package/dist/Avatar/AvatarRoot.cjs +1 -1
  31. package/dist/Avatar/AvatarRoot.js +2 -2
  32. package/dist/Calendar/CalendarCell.cjs +2 -2
  33. package/dist/Calendar/CalendarCell.js +3 -3
  34. package/dist/Calendar/CalendarCellTrigger.cjs +74 -48
  35. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  36. package/dist/Calendar/CalendarCellTrigger.js +75 -49
  37. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  38. package/dist/Calendar/CalendarGrid.cjs +2 -2
  39. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  40. package/dist/Calendar/CalendarGrid.js +3 -3
  41. package/dist/Calendar/CalendarGrid.js.map +1 -1
  42. package/dist/Calendar/CalendarGridBody.js +1 -1
  43. package/dist/Calendar/CalendarGridHead.js +1 -1
  44. package/dist/Calendar/CalendarGridRow.js +1 -1
  45. package/dist/Calendar/CalendarHeadCell.js +1 -1
  46. package/dist/Calendar/CalendarHeader.js +1 -1
  47. package/dist/Calendar/CalendarHeading.cjs +1 -1
  48. package/dist/Calendar/CalendarHeading.js +2 -2
  49. package/dist/Calendar/CalendarNext.cjs +3 -3
  50. package/dist/Calendar/CalendarNext.js +4 -4
  51. package/dist/Calendar/CalendarPrev.cjs +3 -3
  52. package/dist/Calendar/CalendarPrev.js +4 -4
  53. package/dist/Calendar/CalendarRoot.cjs +14 -12
  54. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  55. package/dist/Calendar/CalendarRoot.js +15 -13
  56. package/dist/Calendar/CalendarRoot.js.map +1 -1
  57. package/dist/Calendar/useCalendar.js +1 -1
  58. package/dist/Calendar/utils.cjs +9 -0
  59. package/dist/Calendar/utils.cjs.map +1 -0
  60. package/dist/Calendar/utils.js +7 -0
  61. package/dist/Calendar/utils.js.map +1 -0
  62. package/dist/Checkbox/CheckboxGroupRoot.cjs +3 -3
  63. package/dist/Checkbox/CheckboxGroupRoot.js +4 -4
  64. package/dist/Checkbox/CheckboxIndicator.cjs +1 -1
  65. package/dist/Checkbox/CheckboxIndicator.js +2 -2
  66. package/dist/Checkbox/CheckboxRoot.cjs +8 -8
  67. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  68. package/dist/Checkbox/CheckboxRoot.js +10 -10
  69. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  70. package/dist/Collapsible/CollapsibleContent.cjs +4 -4
  71. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  72. package/dist/Collapsible/CollapsibleContent.js +5 -5
  73. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  74. package/dist/Collapsible/CollapsibleRoot.cjs +4 -4
  75. package/dist/Collapsible/CollapsibleRoot.js +5 -5
  76. package/dist/Collapsible/CollapsibleTrigger.cjs +2 -2
  77. package/dist/Collapsible/CollapsibleTrigger.js +3 -3
  78. package/dist/Combobox/ComboboxAnchor.js +1 -1
  79. package/dist/Combobox/ComboboxArrow.js +1 -1
  80. package/dist/Combobox/ComboboxCancel.cjs +1 -1
  81. package/dist/Combobox/ComboboxCancel.js +2 -2
  82. package/dist/Combobox/ComboboxContent.cjs +1 -1
  83. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  84. package/dist/Combobox/ComboboxContent.js +2 -2
  85. package/dist/Combobox/ComboboxContent.js.map +1 -1
  86. package/dist/Combobox/ComboboxContentImpl.cjs +1 -1
  87. package/dist/Combobox/ComboboxContentImpl.js +2 -2
  88. package/dist/Combobox/ComboboxEmpty.js +1 -1
  89. package/dist/Combobox/ComboboxGroup.cjs +3 -3
  90. package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
  91. package/dist/Combobox/ComboboxGroup.js +4 -4
  92. package/dist/Combobox/ComboboxGroup.js.map +1 -1
  93. package/dist/Combobox/ComboboxInput.cjs +1 -1
  94. package/dist/Combobox/ComboboxInput.js +2 -2
  95. package/dist/Combobox/ComboboxItem.cjs +2 -5
  96. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  97. package/dist/Combobox/ComboboxItem.js +4 -6
  98. package/dist/Combobox/ComboboxItem.js.map +1 -1
  99. package/dist/Combobox/ComboboxItemIndicator.js +1 -1
  100. package/dist/Combobox/ComboboxLabel.cjs +1 -1
  101. package/dist/Combobox/ComboboxLabel.cjs.map +1 -1
  102. package/dist/Combobox/ComboboxLabel.js +2 -2
  103. package/dist/Combobox/ComboboxLabel.js.map +1 -1
  104. package/dist/Combobox/ComboboxPortal.js +1 -1
  105. package/dist/Combobox/ComboboxRoot.cjs +7 -7
  106. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  107. package/dist/Combobox/ComboboxRoot.js +8 -8
  108. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  109. package/dist/Combobox/ComboboxSeparator.js +1 -1
  110. package/dist/Combobox/ComboboxTrigger.cjs +3 -3
  111. package/dist/Combobox/ComboboxTrigger.js +4 -4
  112. package/dist/Combobox/ComboboxViewport.cjs +1 -1
  113. package/dist/Combobox/ComboboxViewport.js +2 -2
  114. package/dist/Combobox/ComboboxVirtualizer.js +1 -1
  115. package/dist/ConfigProvider/ConfigProvider.cjs +2 -2
  116. package/dist/ConfigProvider/ConfigProvider.js +2 -2
  117. package/dist/ContextMenu/ContextMenuArrow.js +1 -1
  118. package/dist/ContextMenu/ContextMenuCheckboxItem.js +1 -1
  119. package/dist/ContextMenu/ContextMenuContent.js +1 -1
  120. package/dist/ContextMenu/ContextMenuGroup.js +1 -1
  121. package/dist/ContextMenu/ContextMenuItem.js +1 -1
  122. package/dist/ContextMenu/ContextMenuItemIndicator.js +1 -1
  123. package/dist/ContextMenu/ContextMenuLabel.js +1 -1
  124. package/dist/ContextMenu/ContextMenuPortal.js +1 -1
  125. package/dist/ContextMenu/ContextMenuRadioGroup.js +1 -1
  126. package/dist/ContextMenu/ContextMenuRadioItem.js +1 -1
  127. package/dist/ContextMenu/ContextMenuRoot.cjs +1 -1
  128. package/dist/ContextMenu/ContextMenuRoot.js +2 -2
  129. package/dist/ContextMenu/ContextMenuSeparator.js +1 -1
  130. package/dist/ContextMenu/ContextMenuSub.cjs +2 -2
  131. package/dist/ContextMenu/ContextMenuSub.js +3 -3
  132. package/dist/ContextMenu/ContextMenuSubContent.js +1 -1
  133. package/dist/ContextMenu/ContextMenuSubTrigger.js +1 -1
  134. package/dist/ContextMenu/ContextMenuTrigger.cjs +1 -1
  135. package/dist/ContextMenu/ContextMenuTrigger.js +2 -2
  136. package/dist/DateField/DateFieldInput.cjs +5 -5
  137. package/dist/DateField/DateFieldInput.js +6 -6
  138. package/dist/DateField/DateFieldRoot.cjs +10 -10
  139. package/dist/DateField/DateFieldRoot.js +11 -11
  140. package/dist/DatePicker/DatePickerArrow.js +1 -1
  141. package/dist/DatePicker/DatePickerCalendar.js +1 -1
  142. package/dist/DatePicker/DatePickerCell.js +1 -1
  143. package/dist/DatePicker/DatePickerCellTrigger.js +1 -1
  144. package/dist/DatePicker/DatePickerClose.js +1 -1
  145. package/dist/DatePicker/DatePickerContent.js +1 -1
  146. package/dist/DatePicker/DatePickerField.js +1 -1
  147. package/dist/DatePicker/DatePickerGrid.js +1 -1
  148. package/dist/DatePicker/DatePickerGridBody.js +1 -1
  149. package/dist/DatePicker/DatePickerGridHead.js +1 -1
  150. package/dist/DatePicker/DatePickerGridRow.js +1 -1
  151. package/dist/DatePicker/DatePickerHeadCell.js +1 -1
  152. package/dist/DatePicker/DatePickerHeader.js +1 -1
  153. package/dist/DatePicker/DatePickerHeading.js +1 -1
  154. package/dist/DatePicker/DatePickerInput.js +1 -1
  155. package/dist/DatePicker/DatePickerNext.js +1 -1
  156. package/dist/DatePicker/DatePickerPrev.js +1 -1
  157. package/dist/DatePicker/DatePickerRoot.cjs +11 -11
  158. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  159. package/dist/DatePicker/DatePickerRoot.js +12 -12
  160. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  161. package/dist/DatePicker/DatePickerTrigger.js +1 -1
  162. package/dist/DateRangeField/DateRangeFieldInput.cjs +5 -5
  163. package/dist/DateRangeField/DateRangeFieldInput.js +6 -6
  164. package/dist/DateRangeField/DateRangeFieldRoot.cjs +22 -18
  165. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  166. package/dist/DateRangeField/DateRangeFieldRoot.js +23 -19
  167. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  168. package/dist/DateRangePicker/DateRangePickerAnchor.js +1 -1
  169. package/dist/DateRangePicker/DateRangePickerArrow.js +1 -1
  170. package/dist/DateRangePicker/DateRangePickerCalendar.js +1 -1
  171. package/dist/DateRangePicker/DateRangePickerCell.js +1 -1
  172. package/dist/DateRangePicker/DateRangePickerCellTrigger.js +1 -1
  173. package/dist/DateRangePicker/DateRangePickerClose.js +1 -1
  174. package/dist/DateRangePicker/DateRangePickerContent.js +1 -1
  175. package/dist/DateRangePicker/DateRangePickerField.js +1 -1
  176. package/dist/DateRangePicker/DateRangePickerGrid.js +1 -1
  177. package/dist/DateRangePicker/DateRangePickerGridBody.js +1 -1
  178. package/dist/DateRangePicker/DateRangePickerGridHead.js +1 -1
  179. package/dist/DateRangePicker/DateRangePickerGridRow.js +1 -1
  180. package/dist/DateRangePicker/DateRangePickerHeadCell.js +1 -1
  181. package/dist/DateRangePicker/DateRangePickerHeader.js +1 -1
  182. package/dist/DateRangePicker/DateRangePickerHeading.js +1 -1
  183. package/dist/DateRangePicker/DateRangePickerInput.js +1 -1
  184. package/dist/DateRangePicker/DateRangePickerNext.js +1 -1
  185. package/dist/DateRangePicker/DateRangePickerPrev.js +1 -1
  186. package/dist/DateRangePicker/DateRangePickerRoot.cjs +11 -11
  187. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  188. package/dist/DateRangePicker/DateRangePickerRoot.js +12 -12
  189. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  190. package/dist/DateRangePicker/DateRangePickerTrigger.js +1 -1
  191. package/dist/Dialog/DialogClose.cjs +1 -1
  192. package/dist/Dialog/DialogClose.js +2 -2
  193. package/dist/Dialog/DialogContent.js +1 -1
  194. package/dist/Dialog/DialogContentImpl.cjs +2 -2
  195. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  196. package/dist/Dialog/DialogContentImpl.js +3 -3
  197. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  198. package/dist/Dialog/DialogContentModal.js +1 -1
  199. package/dist/Dialog/DialogContentNonModal.js +1 -1
  200. package/dist/Dialog/DialogDescription.js +1 -1
  201. package/dist/Dialog/DialogOverlay.js +1 -1
  202. package/dist/Dialog/DialogOverlayImpl.js +1 -1
  203. package/dist/Dialog/DialogPortal.js +1 -1
  204. package/dist/Dialog/DialogRoot.cjs +2 -2
  205. package/dist/Dialog/DialogRoot.js +2 -2
  206. package/dist/Dialog/DialogTitle.js +1 -1
  207. package/dist/Dialog/DialogTrigger.cjs +3 -3
  208. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  209. package/dist/Dialog/DialogTrigger.js +4 -4
  210. package/dist/Dialog/DialogTrigger.js.map +1 -1
  211. package/dist/DismissableLayer/DismissableLayer.cjs +1 -1
  212. package/dist/DismissableLayer/DismissableLayer.js +2 -2
  213. package/dist/DismissableLayer/DismissableLayerBranch.js +1 -1
  214. package/dist/DismissableLayer/utils.cjs +1 -0
  215. package/dist/DismissableLayer/utils.cjs.map +1 -1
  216. package/dist/DismissableLayer/utils.js +1 -0
  217. package/dist/DismissableLayer/utils.js.map +1 -1
  218. package/dist/DropdownMenu/DropdownMenuArrow.js +1 -1
  219. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +1 -1
  220. package/dist/DropdownMenu/DropdownMenuContent.cjs +1 -1
  221. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  222. package/dist/DropdownMenu/DropdownMenuContent.js +2 -2
  223. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  224. package/dist/DropdownMenu/DropdownMenuGroup.js +1 -1
  225. package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
  226. package/dist/DropdownMenu/DropdownMenuItemIndicator.js +1 -1
  227. package/dist/DropdownMenu/DropdownMenuLabel.js +1 -1
  228. package/dist/DropdownMenu/DropdownMenuPortal.js +1 -1
  229. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -1
  230. package/dist/DropdownMenu/DropdownMenuRadioItem.js +1 -1
  231. package/dist/DropdownMenu/DropdownMenuRoot.cjs +3 -3
  232. package/dist/DropdownMenu/DropdownMenuRoot.js +4 -4
  233. package/dist/DropdownMenu/DropdownMenuSeparator.js +1 -1
  234. package/dist/DropdownMenu/DropdownMenuSub.cjs +2 -2
  235. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  236. package/dist/DropdownMenu/DropdownMenuSub.js +3 -3
  237. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  238. package/dist/DropdownMenu/DropdownMenuSubContent.js +1 -1
  239. package/dist/DropdownMenu/DropdownMenuSubTrigger.js +1 -1
  240. package/dist/DropdownMenu/DropdownMenuTrigger.cjs +4 -4
  241. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  242. package/dist/DropdownMenu/DropdownMenuTrigger.js +5 -5
  243. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  244. package/dist/Editable/EditableArea.cjs +7 -7
  245. package/dist/Editable/EditableArea.js +8 -8
  246. package/dist/Editable/EditableCancelTrigger.cjs +4 -4
  247. package/dist/Editable/EditableCancelTrigger.js +5 -5
  248. package/dist/Editable/EditableEditTrigger.cjs +4 -4
  249. package/dist/Editable/EditableEditTrigger.js +5 -5
  250. package/dist/Editable/EditableInput.cjs +4 -4
  251. package/dist/Editable/EditableInput.js +5 -5
  252. package/dist/Editable/EditablePreview.cjs +4 -4
  253. package/dist/Editable/EditablePreview.js +5 -5
  254. package/dist/Editable/EditableRoot.cjs +2 -2
  255. package/dist/Editable/EditableRoot.js +3 -3
  256. package/dist/Editable/EditableSubmitTrigger.cjs +4 -4
  257. package/dist/Editable/EditableSubmitTrigger.js +5 -5
  258. package/dist/FocusScope/FocusScope.js +1 -1
  259. package/dist/FocusScope/utils.cjs +1 -1
  260. package/dist/FocusScope/utils.cjs.map +1 -1
  261. package/dist/FocusScope/utils.js +1 -1
  262. package/dist/FocusScope/utils.js.map +1 -1
  263. package/dist/HoverCard/HoverCardArrow.js +1 -1
  264. package/dist/HoverCard/HoverCardContent.js +1 -1
  265. package/dist/HoverCard/HoverCardContentImpl.cjs +2 -2
  266. package/dist/HoverCard/HoverCardContentImpl.js +3 -3
  267. package/dist/HoverCard/HoverCardPortal.js +1 -1
  268. package/dist/HoverCard/HoverCardRoot.cjs +3 -3
  269. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  270. package/dist/HoverCard/HoverCardRoot.js +4 -4
  271. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  272. package/dist/HoverCard/HoverCardTrigger.js +1 -1
  273. package/dist/HoverCard/utils.cjs +1 -1
  274. package/dist/HoverCard/utils.cjs.map +1 -1
  275. package/dist/HoverCard/utils.js +1 -1
  276. package/dist/HoverCard/utils.js.map +1 -1
  277. package/dist/Label/Label.js +1 -1
  278. package/dist/Listbox/ListboxContent.cjs +2 -2
  279. package/dist/Listbox/ListboxContent.js +3 -3
  280. package/dist/Listbox/ListboxFilter.cjs +8 -5
  281. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  282. package/dist/Listbox/ListboxFilter.js +9 -6
  283. package/dist/Listbox/ListboxFilter.js.map +1 -1
  284. package/dist/Listbox/ListboxGroup.cjs +2 -2
  285. package/dist/Listbox/ListboxGroup.cjs.map +1 -1
  286. package/dist/Listbox/ListboxGroup.js +3 -3
  287. package/dist/Listbox/ListboxGroup.js.map +1 -1
  288. package/dist/Listbox/ListboxGroupLabel.js +1 -1
  289. package/dist/Listbox/ListboxItem.cjs +6 -6
  290. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  291. package/dist/Listbox/ListboxItem.js +7 -7
  292. package/dist/Listbox/ListboxItem.js.map +1 -1
  293. package/dist/Listbox/ListboxItemIndicator.js +1 -1
  294. package/dist/Listbox/ListboxRoot.cjs +6 -6
  295. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  296. package/dist/Listbox/ListboxRoot.js +7 -7
  297. package/dist/Listbox/ListboxRoot.js.map +1 -1
  298. package/dist/Listbox/ListboxVirtualizer.js +1 -1
  299. package/dist/Listbox/utils.cjs +2 -2
  300. package/dist/Listbox/utils.cjs.map +1 -1
  301. package/dist/Listbox/utils.js +2 -2
  302. package/dist/Listbox/utils.js.map +1 -1
  303. package/dist/Menu/MenuAnchor.js +1 -1
  304. package/dist/Menu/MenuArrow.js +1 -1
  305. package/dist/Menu/MenuCheckboxItem.js +1 -1
  306. package/dist/Menu/MenuContent.js +1 -1
  307. package/dist/Menu/MenuContentImpl.cjs +2 -2
  308. package/dist/Menu/MenuContentImpl.js +4 -4
  309. package/dist/Menu/MenuGroup.js +1 -1
  310. package/dist/Menu/MenuItem.js +1 -1
  311. package/dist/Menu/MenuItemImpl.cjs +3 -3
  312. package/dist/Menu/MenuItemImpl.js +4 -4
  313. package/dist/Menu/MenuItemIndicator.cjs +1 -1
  314. package/dist/Menu/MenuItemIndicator.js +2 -2
  315. package/dist/Menu/MenuLabel.js +1 -1
  316. package/dist/Menu/MenuPortal.js +1 -1
  317. package/dist/Menu/MenuRadioGroup.js +1 -1
  318. package/dist/Menu/MenuRadioItem.js +1 -1
  319. package/dist/Menu/MenuRoot.js +1 -1
  320. package/dist/Menu/MenuRootContentModal.js +1 -1
  321. package/dist/Menu/MenuRootContentNonModal.js +1 -1
  322. package/dist/Menu/MenuSeparator.js +1 -1
  323. package/dist/Menu/MenuSub.cjs +2 -2
  324. package/dist/Menu/MenuSub.js +3 -3
  325. package/dist/Menu/MenuSubContent.cjs +1 -1
  326. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  327. package/dist/Menu/MenuSubContent.js +2 -2
  328. package/dist/Menu/MenuSubContent.js.map +1 -1
  329. package/dist/Menu/MenuSubTrigger.cjs +2 -2
  330. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  331. package/dist/Menu/MenuSubTrigger.js +3 -3
  332. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  333. package/dist/Menubar/MenubarArrow.js +1 -1
  334. package/dist/Menubar/MenubarCheckboxItem.js +1 -1
  335. package/dist/Menubar/MenubarContent.cjs +1 -1
  336. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  337. package/dist/Menubar/MenubarContent.js +2 -2
  338. package/dist/Menubar/MenubarContent.js.map +1 -1
  339. package/dist/Menubar/MenubarGroup.js +1 -1
  340. package/dist/Menubar/MenubarItem.js +1 -1
  341. package/dist/Menubar/MenubarItemIndicator.js +1 -1
  342. package/dist/Menubar/MenubarLabel.js +1 -1
  343. package/dist/Menubar/MenubarMenu.cjs +1 -1
  344. package/dist/Menubar/MenubarMenu.js +2 -2
  345. package/dist/Menubar/MenubarPortal.js +1 -1
  346. package/dist/Menubar/MenubarRadioGroup.js +1 -1
  347. package/dist/Menubar/MenubarRadioItem.js +1 -1
  348. package/dist/Menubar/MenubarRoot.cjs +3 -3
  349. package/dist/Menubar/MenubarRoot.js +4 -4
  350. package/dist/Menubar/MenubarSeparator.js +1 -1
  351. package/dist/Menubar/MenubarSub.cjs +2 -2
  352. package/dist/Menubar/MenubarSub.js +3 -3
  353. package/dist/Menubar/MenubarSubContent.js +1 -1
  354. package/dist/Menubar/MenubarSubTrigger.js +1 -1
  355. package/dist/Menubar/MenubarTrigger.cjs +5 -5
  356. package/dist/Menubar/MenubarTrigger.js +6 -6
  357. package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
  358. package/dist/NavigationMenu/NavigationMenuContent.js +2 -2
  359. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
  360. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  361. package/dist/NavigationMenu/NavigationMenuContentImpl.js +2 -2
  362. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  363. package/dist/NavigationMenu/NavigationMenuIndicator.js +1 -1
  364. package/dist/NavigationMenu/NavigationMenuItem.cjs +2 -2
  365. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  366. package/dist/NavigationMenu/NavigationMenuItem.js +3 -3
  367. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  368. package/dist/NavigationMenu/NavigationMenuLink.cjs +2 -2
  369. package/dist/NavigationMenu/NavigationMenuLink.js +3 -3
  370. package/dist/NavigationMenu/NavigationMenuList.js +1 -1
  371. package/dist/NavigationMenu/NavigationMenuRoot.cjs +4 -4
  372. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  373. package/dist/NavigationMenu/NavigationMenuRoot.js +5 -5
  374. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  375. package/dist/NavigationMenu/NavigationMenuSub.cjs +12 -2
  376. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  377. package/dist/NavigationMenu/NavigationMenuSub.js +13 -3
  378. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  379. package/dist/NavigationMenu/NavigationMenuTrigger.cjs +2 -2
  380. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  381. package/dist/NavigationMenu/NavigationMenuTrigger.js +3 -3
  382. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  383. package/dist/NavigationMenu/NavigationMenuViewport.cjs +8 -8
  384. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  385. package/dist/NavigationMenu/NavigationMenuViewport.js +10 -10
  386. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  387. package/dist/NavigationMenu/utils.cjs +1 -1
  388. package/dist/NavigationMenu/utils.cjs.map +1 -1
  389. package/dist/NavigationMenu/utils.js +1 -1
  390. package/dist/NavigationMenu/utils.js.map +1 -1
  391. package/dist/NumberField/NumberFieldDecrement.cjs +5 -5
  392. package/dist/NumberField/NumberFieldDecrement.js +6 -6
  393. package/dist/NumberField/NumberFieldIncrement.cjs +5 -5
  394. package/dist/NumberField/NumberFieldIncrement.js +6 -6
  395. package/dist/NumberField/NumberFieldInput.cjs +3 -3
  396. package/dist/NumberField/NumberFieldInput.js +4 -4
  397. package/dist/NumberField/NumberFieldRoot.cjs +7 -7
  398. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  399. package/dist/NumberField/NumberFieldRoot.js +8 -8
  400. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  401. package/dist/NumberField/utils.js +1 -1
  402. package/dist/Pagination/PaginationEllipsis.js +1 -1
  403. package/dist/Pagination/PaginationFirst.cjs +1 -1
  404. package/dist/Pagination/PaginationFirst.js +2 -2
  405. package/dist/Pagination/PaginationLast.cjs +1 -1
  406. package/dist/Pagination/PaginationLast.js +2 -2
  407. package/dist/Pagination/PaginationList.js +1 -1
  408. package/dist/Pagination/PaginationListItem.cjs +3 -3
  409. package/dist/Pagination/PaginationListItem.js +4 -4
  410. package/dist/Pagination/PaginationNext.cjs +1 -1
  411. package/dist/Pagination/PaginationNext.js +2 -2
  412. package/dist/Pagination/PaginationPrev.cjs +1 -1
  413. package/dist/Pagination/PaginationPrev.js +2 -2
  414. package/dist/Pagination/PaginationRoot.cjs +2 -2
  415. package/dist/Pagination/PaginationRoot.js +3 -3
  416. package/dist/PinInput/PinInputInput.cjs +4 -4
  417. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  418. package/dist/PinInput/PinInputInput.js +5 -5
  419. package/dist/PinInput/PinInputInput.js.map +1 -1
  420. package/dist/PinInput/PinInputRoot.cjs +4 -4
  421. package/dist/PinInput/PinInputRoot.js +5 -5
  422. package/dist/Popover/PopoverAnchor.js +1 -1
  423. package/dist/Popover/PopoverArrow.js +1 -1
  424. package/dist/Popover/PopoverClose.cjs +1 -1
  425. package/dist/Popover/PopoverClose.js +2 -2
  426. package/dist/Popover/PopoverContent.cjs +1 -1
  427. package/dist/Popover/PopoverContent.cjs.map +1 -1
  428. package/dist/Popover/PopoverContent.js +2 -2
  429. package/dist/Popover/PopoverContent.js.map +1 -1
  430. package/dist/Popover/PopoverContentImpl.js +1 -1
  431. package/dist/Popover/PopoverContentModal.js +1 -1
  432. package/dist/Popover/PopoverContentNonModal.js +1 -1
  433. package/dist/Popover/PopoverPortal.js +1 -1
  434. package/dist/Popover/PopoverRoot.cjs +2 -2
  435. package/dist/Popover/PopoverRoot.js +3 -3
  436. package/dist/Popover/PopoverTrigger.cjs +2 -2
  437. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  438. package/dist/Popover/PopoverTrigger.js +3 -3
  439. package/dist/Popover/PopoverTrigger.js.map +1 -1
  440. package/dist/Popper/PopperAnchor.js +1 -1
  441. package/dist/Popper/PopperArrow.cjs +4 -4
  442. package/dist/Popper/PopperArrow.js +5 -5
  443. package/dist/Popper/PopperContent.cjs +3 -3
  444. package/dist/Popper/PopperContent.cjs.map +1 -1
  445. package/dist/Popper/PopperContent.js +5 -5
  446. package/dist/Popper/PopperContent.js.map +1 -1
  447. package/dist/Presence/usePresence.cjs +2 -2
  448. package/dist/Presence/usePresence.cjs.map +1 -1
  449. package/dist/Presence/usePresence.js +2 -2
  450. package/dist/Presence/usePresence.js.map +1 -1
  451. package/dist/Primitive/Primitive.cjs +1 -1
  452. package/dist/Primitive/Primitive.cjs.map +1 -1
  453. package/dist/Primitive/Primitive.js +1 -1
  454. package/dist/Primitive/Primitive.js.map +1 -1
  455. package/dist/Progress/ProgressIndicator.cjs +1 -1
  456. package/dist/Progress/ProgressIndicator.js +2 -2
  457. package/dist/Progress/ProgressRoot.cjs +5 -5
  458. package/dist/Progress/ProgressRoot.js +6 -6
  459. package/dist/RadioGroup/Radio.cjs +6 -6
  460. package/dist/RadioGroup/Radio.cjs.map +1 -1
  461. package/dist/RadioGroup/Radio.js +7 -7
  462. package/dist/RadioGroup/Radio.js.map +1 -1
  463. package/dist/RadioGroup/RadioGroupIndicator.cjs +1 -1
  464. package/dist/RadioGroup/RadioGroupIndicator.js +2 -2
  465. package/dist/RadioGroup/RadioGroupItem.cjs +2 -2
  466. package/dist/RadioGroup/RadioGroupItem.js +3 -3
  467. package/dist/RadioGroup/RadioGroupRoot.cjs +5 -5
  468. package/dist/RadioGroup/RadioGroupRoot.js +6 -6
  469. package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
  470. package/dist/RangeCalendar/RangeCalendarCell.js +3 -3
  471. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +84 -58
  472. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  473. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +85 -59
  474. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  475. package/dist/RangeCalendar/RangeCalendarGrid.cjs +2 -2
  476. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  477. package/dist/RangeCalendar/RangeCalendarGrid.js +3 -3
  478. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  479. package/dist/RangeCalendar/RangeCalendarGridBody.js +1 -1
  480. package/dist/RangeCalendar/RangeCalendarGridHead.js +1 -1
  481. package/dist/RangeCalendar/RangeCalendarGridRow.js +1 -1
  482. package/dist/RangeCalendar/RangeCalendarHeadCell.js +1 -1
  483. package/dist/RangeCalendar/RangeCalendarHeader.js +1 -1
  484. package/dist/RangeCalendar/RangeCalendarHeading.cjs +1 -1
  485. package/dist/RangeCalendar/RangeCalendarHeading.js +2 -2
  486. package/dist/RangeCalendar/RangeCalendarNext.cjs +3 -3
  487. package/dist/RangeCalendar/RangeCalendarNext.js +4 -4
  488. package/dist/RangeCalendar/RangeCalendarPrev.cjs +3 -3
  489. package/dist/RangeCalendar/RangeCalendarPrev.js +4 -4
  490. package/dist/RangeCalendar/RangeCalendarRoot.cjs +18 -16
  491. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  492. package/dist/RangeCalendar/RangeCalendarRoot.js +19 -17
  493. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  494. package/dist/RovingFocus/RovingFocusGroup.cjs +4 -4
  495. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  496. package/dist/RovingFocus/RovingFocusGroup.js +5 -5
  497. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  498. package/dist/RovingFocus/RovingFocusItem.cjs +4 -4
  499. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  500. package/dist/RovingFocus/RovingFocusItem.js +5 -5
  501. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  502. package/dist/RovingFocus/utils.cjs +2 -2
  503. package/dist/RovingFocus/utils.cjs.map +1 -1
  504. package/dist/RovingFocus/utils.js +2 -2
  505. package/dist/RovingFocus/utils.js.map +1 -1
  506. package/dist/ScrollArea/ScrollAreaCorner.js +1 -1
  507. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs +2 -2
  508. package/dist/ScrollArea/ScrollAreaCornerImpl.js +3 -3
  509. package/dist/ScrollArea/ScrollAreaRoot.cjs +4 -4
  510. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  511. package/dist/ScrollArea/ScrollAreaRoot.js +5 -5
  512. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  513. package/dist/ScrollArea/ScrollAreaScrollbar.cjs +1 -1
  514. package/dist/ScrollArea/ScrollAreaScrollbar.js +2 -2
  515. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js +1 -1
  516. package/dist/ScrollArea/ScrollAreaScrollbarHover.js +1 -1
  517. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs +1 -1
  518. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  519. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js +2 -2
  520. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  521. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js +1 -1
  522. package/dist/ScrollArea/ScrollAreaScrollbarVisible.js +1 -1
  523. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs +1 -1
  524. package/dist/ScrollArea/ScrollAreaScrollbarX.js +2 -2
  525. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs +3 -3
  526. package/dist/ScrollArea/ScrollAreaScrollbarY.js +4 -4
  527. package/dist/ScrollArea/ScrollAreaThumb.js +1 -1
  528. package/dist/ScrollArea/ScrollAreaViewport.cjs +1 -1
  529. package/dist/ScrollArea/ScrollAreaViewport.js +2 -2
  530. package/dist/Select/BubbleSelect.cjs +2 -2
  531. package/dist/Select/BubbleSelect.cjs.map +1 -1
  532. package/dist/Select/BubbleSelect.js +3 -3
  533. package/dist/Select/BubbleSelect.js.map +1 -1
  534. package/dist/Select/SelectArrow.js +1 -1
  535. package/dist/Select/SelectContent.js +1 -1
  536. package/dist/Select/SelectContentImpl.cjs +17 -7
  537. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  538. package/dist/Select/SelectContentImpl.js +18 -8
  539. package/dist/Select/SelectContentImpl.js.map +1 -1
  540. package/dist/Select/SelectGroup.cjs +2 -2
  541. package/dist/Select/SelectGroup.cjs.map +1 -1
  542. package/dist/Select/SelectGroup.js +3 -3
  543. package/dist/Select/SelectGroup.js.map +1 -1
  544. package/dist/Select/SelectIcon.js +1 -1
  545. package/dist/Select/SelectItem.cjs +6 -6
  546. package/dist/Select/SelectItem.cjs.map +1 -1
  547. package/dist/Select/SelectItem.js +7 -7
  548. package/dist/Select/SelectItem.js.map +1 -1
  549. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  550. package/dist/Select/SelectItemAlignedPosition.js +2 -2
  551. package/dist/Select/SelectItemIndicator.js +1 -1
  552. package/dist/Select/SelectItemText.js +1 -1
  553. package/dist/Select/SelectLabel.js +1 -1
  554. package/dist/Select/SelectPopperPosition.js +1 -1
  555. package/dist/Select/SelectPortal.js +1 -1
  556. package/dist/Select/SelectRoot.cjs +6 -6
  557. package/dist/Select/SelectRoot.cjs.map +1 -1
  558. package/dist/Select/SelectRoot.js +7 -7
  559. package/dist/Select/SelectRoot.js.map +1 -1
  560. package/dist/Select/SelectScrollButtonImpl.js +1 -1
  561. package/dist/Select/SelectScrollDownButton.cjs +1 -1
  562. package/dist/Select/SelectScrollDownButton.cjs.map +1 -1
  563. package/dist/Select/SelectScrollDownButton.js +2 -2
  564. package/dist/Select/SelectScrollDownButton.js.map +1 -1
  565. package/dist/Select/SelectScrollUpButton.cjs +1 -1
  566. package/dist/Select/SelectScrollUpButton.cjs.map +1 -1
  567. package/dist/Select/SelectScrollUpButton.js +2 -2
  568. package/dist/Select/SelectScrollUpButton.js.map +1 -1
  569. package/dist/Select/SelectSeparator.js +1 -1
  570. package/dist/Select/SelectTrigger.cjs +4 -4
  571. package/dist/Select/SelectTrigger.cjs.map +1 -1
  572. package/dist/Select/SelectTrigger.js +5 -5
  573. package/dist/Select/SelectTrigger.js.map +1 -1
  574. package/dist/Select/SelectValue.cjs +1 -1
  575. package/dist/Select/SelectValue.js +2 -2
  576. package/dist/Select/SelectViewport.cjs +1 -1
  577. package/dist/Select/SelectViewport.cjs.map +1 -1
  578. package/dist/Select/SelectViewport.js +2 -2
  579. package/dist/Select/SelectViewport.js.map +1 -1
  580. package/dist/Select/utils.cjs +2 -2
  581. package/dist/Select/utils.cjs.map +1 -1
  582. package/dist/Select/utils.js +2 -2
  583. package/dist/Select/utils.js.map +1 -1
  584. package/dist/Separator/Separator.js +1 -1
  585. package/dist/Slider/SliderHorizontal.cjs +2 -2
  586. package/dist/Slider/SliderHorizontal.js +3 -3
  587. package/dist/Slider/SliderImpl.js +1 -1
  588. package/dist/Slider/SliderRange.cjs +1 -1
  589. package/dist/Slider/SliderRange.js +2 -2
  590. package/dist/Slider/SliderRoot.cjs +4 -4
  591. package/dist/Slider/SliderRoot.cjs.map +1 -1
  592. package/dist/Slider/SliderRoot.js +5 -5
  593. package/dist/Slider/SliderRoot.js.map +1 -1
  594. package/dist/Slider/SliderThumb.cjs +1 -1
  595. package/dist/Slider/SliderThumb.cjs.map +1 -1
  596. package/dist/Slider/SliderThumb.js +2 -2
  597. package/dist/Slider/SliderThumb.js.map +1 -1
  598. package/dist/Slider/SliderThumbImpl.cjs +4 -4
  599. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  600. package/dist/Slider/SliderThumbImpl.js +5 -5
  601. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  602. package/dist/Slider/SliderTrack.cjs +1 -1
  603. package/dist/Slider/SliderTrack.js +2 -2
  604. package/dist/Slider/SliderVertical.cjs +2 -2
  605. package/dist/Slider/SliderVertical.js +3 -3
  606. package/dist/Slider/utils.cjs +1 -1
  607. package/dist/Slider/utils.cjs.map +1 -1
  608. package/dist/Slider/utils.js +1 -1
  609. package/dist/Slider/utils.js.map +1 -1
  610. package/dist/Splitter/SplitterGroup.cjs +2 -2
  611. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  612. package/dist/Splitter/SplitterGroup.js +3 -3
  613. package/dist/Splitter/SplitterGroup.js.map +1 -1
  614. package/dist/Splitter/SplitterPanel.cjs +3 -3
  615. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  616. package/dist/Splitter/SplitterPanel.js +4 -4
  617. package/dist/Splitter/SplitterPanel.js.map +1 -1
  618. package/dist/Splitter/SplitterResizeHandle.cjs +2 -2
  619. package/dist/Splitter/SplitterResizeHandle.js +3 -3
  620. package/dist/Stepper/StepperDescription.js +1 -1
  621. package/dist/Stepper/StepperIndicator.js +1 -1
  622. package/dist/Stepper/StepperItem.cjs +6 -6
  623. package/dist/Stepper/StepperItem.cjs.map +1 -1
  624. package/dist/Stepper/StepperItem.js +7 -7
  625. package/dist/Stepper/StepperItem.js.map +1 -1
  626. package/dist/Stepper/StepperRoot.cjs +3 -3
  627. package/dist/Stepper/StepperRoot.js +4 -4
  628. package/dist/Stepper/StepperSeparator.js +1 -1
  629. package/dist/Stepper/StepperTitle.js +1 -1
  630. package/dist/Stepper/StepperTrigger.cjs +5 -5
  631. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  632. package/dist/Stepper/StepperTrigger.js +6 -6
  633. package/dist/Stepper/StepperTrigger.js.map +1 -1
  634. package/dist/Switch/SwitchRoot.cjs +6 -6
  635. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  636. package/dist/Switch/SwitchRoot.js +7 -7
  637. package/dist/Switch/SwitchRoot.js.map +1 -1
  638. package/dist/Switch/SwitchThumb.cjs +1 -1
  639. package/dist/Switch/SwitchThumb.js +2 -2
  640. package/dist/Tabs/TabsContent.cjs +1 -1
  641. package/dist/Tabs/TabsContent.js +2 -2
  642. package/dist/Tabs/TabsIndicator.js +1 -1
  643. package/dist/Tabs/TabsList.cjs +1 -1
  644. package/dist/Tabs/TabsList.js +2 -2
  645. package/dist/Tabs/TabsRoot.cjs +3 -3
  646. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  647. package/dist/Tabs/TabsRoot.js +4 -4
  648. package/dist/Tabs/TabsRoot.js.map +1 -1
  649. package/dist/Tabs/TabsTrigger.cjs +3 -3
  650. package/dist/Tabs/TabsTrigger.js +4 -4
  651. package/dist/TagsInput/TagsInputClear.cjs +2 -2
  652. package/dist/TagsInput/TagsInputClear.js +3 -3
  653. package/dist/TagsInput/TagsInputInput.cjs +1 -1
  654. package/dist/TagsInput/TagsInputInput.js +2 -2
  655. package/dist/TagsInput/TagsInputItem.cjs +2 -2
  656. package/dist/TagsInput/TagsInputItem.js +3 -3
  657. package/dist/TagsInput/TagsInputItemDelete.cjs +4 -3
  658. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  659. package/dist/TagsInput/TagsInputItemDelete.js +5 -4
  660. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  661. package/dist/TagsInput/TagsInputItemText.cjs +1 -1
  662. package/dist/TagsInput/TagsInputItemText.cjs.map +1 -1
  663. package/dist/TagsInput/TagsInputItemText.js +2 -2
  664. package/dist/TagsInput/TagsInputItemText.js.map +1 -1
  665. package/dist/TagsInput/TagsInputRoot.cjs +7 -7
  666. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  667. package/dist/TagsInput/TagsInputRoot.js +8 -8
  668. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  669. package/dist/Teleport/Teleport.js +1 -1
  670. package/dist/TimeField/TimeFieldInput.cjs +5 -5
  671. package/dist/TimeField/TimeFieldInput.js +6 -6
  672. package/dist/TimeField/TimeFieldRoot.cjs +17 -14
  673. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  674. package/dist/TimeField/TimeFieldRoot.js +19 -16
  675. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  676. package/dist/Toast/FocusProxy.js +1 -1
  677. package/dist/Toast/ToastAction.js +1 -1
  678. package/dist/Toast/ToastAnnounce.js +1 -1
  679. package/dist/Toast/ToastAnnounceExclude.cjs +1 -1
  680. package/dist/Toast/ToastAnnounceExclude.js +2 -2
  681. package/dist/Toast/ToastClose.cjs +3 -3
  682. package/dist/Toast/ToastClose.cjs.map +1 -1
  683. package/dist/Toast/ToastClose.js +4 -4
  684. package/dist/Toast/ToastClose.js.map +1 -1
  685. package/dist/Toast/ToastDescription.js +1 -1
  686. package/dist/Toast/ToastPortal.js +1 -1
  687. package/dist/Toast/ToastRoot.cjs +5 -2
  688. package/dist/Toast/ToastRoot.cjs.map +1 -1
  689. package/dist/Toast/ToastRoot.js +6 -3
  690. package/dist/Toast/ToastRoot.js.map +1 -1
  691. package/dist/Toast/ToastRootImpl.cjs +7 -4
  692. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  693. package/dist/Toast/ToastRootImpl.js +9 -6
  694. package/dist/Toast/ToastRootImpl.js.map +1 -1
  695. package/dist/Toast/ToastTitle.js +1 -1
  696. package/dist/Toast/ToastViewport.cjs +3 -3
  697. package/dist/Toast/ToastViewport.js +4 -4
  698. package/dist/Toast/utils.js +1 -1
  699. package/dist/Toggle/Toggle.cjs +4 -4
  700. package/dist/Toggle/Toggle.js +5 -5
  701. package/dist/ToggleGroup/ToggleGroupItem.cjs +1 -1
  702. package/dist/ToggleGroup/ToggleGroupItem.js +2 -2
  703. package/dist/ToggleGroup/ToggleGroupRoot.cjs +4 -4
  704. package/dist/ToggleGroup/ToggleGroupRoot.js +5 -5
  705. package/dist/Toolbar/ToolbarButton.cjs +2 -2
  706. package/dist/Toolbar/ToolbarButton.js +3 -3
  707. package/dist/Toolbar/ToolbarLink.cjs +1 -1
  708. package/dist/Toolbar/ToolbarLink.js +2 -2
  709. package/dist/Toolbar/ToolbarRoot.cjs +2 -2
  710. package/dist/Toolbar/ToolbarRoot.js +3 -3
  711. package/dist/Toolbar/ToolbarSeparator.js +1 -1
  712. package/dist/Toolbar/ToolbarToggleGroup.js +1 -1
  713. package/dist/Toolbar/ToolbarToggleItem.js +1 -1
  714. package/dist/Tooltip/TooltipArrow.js +1 -1
  715. package/dist/Tooltip/TooltipContent.js +1 -1
  716. package/dist/Tooltip/TooltipContentHoverable.js +1 -1
  717. package/dist/Tooltip/TooltipContentImpl.js +1 -1
  718. package/dist/Tooltip/TooltipPortal.js +1 -1
  719. package/dist/Tooltip/TooltipProvider.cjs +1 -1
  720. package/dist/Tooltip/TooltipProvider.js +1 -1
  721. package/dist/Tooltip/TooltipRoot.cjs +8 -8
  722. package/dist/Tooltip/TooltipRoot.js +9 -9
  723. package/dist/Tooltip/TooltipTrigger.cjs +2 -2
  724. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  725. package/dist/Tooltip/TooltipTrigger.js +3 -3
  726. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  727. package/dist/Tree/TreeItem.cjs +5 -5
  728. package/dist/Tree/TreeItem.cjs.map +1 -1
  729. package/dist/Tree/TreeItem.js +6 -6
  730. package/dist/Tree/TreeItem.js.map +1 -1
  731. package/dist/Tree/TreeRoot.cjs +8 -8
  732. package/dist/Tree/TreeRoot.cjs.map +1 -1
  733. package/dist/Tree/TreeRoot.js +9 -9
  734. package/dist/Tree/TreeRoot.js.map +1 -1
  735. package/dist/Tree/TreeVirtualizer.js +1 -1
  736. package/dist/Viewport/Viewport.js +1 -1
  737. package/dist/VisuallyHidden/VisuallyHidden.cjs +3 -3
  738. package/dist/VisuallyHidden/VisuallyHidden.js +4 -4
  739. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs +9 -3
  740. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs.map +1 -1
  741. package/dist/VisuallyHidden/VisuallyHiddenInput.js +10 -4
  742. package/dist/VisuallyHidden/VisuallyHiddenInput.js.map +1 -1
  743. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs +1 -1
  744. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js +2 -2
  745. package/dist/component/Arrow.cjs +2 -2
  746. package/dist/component/Arrow.js +3 -3
  747. package/dist/component/BaseSeparator.cjs +1 -1
  748. package/dist/component/BaseSeparator.js +2 -2
  749. package/dist/constant/components.cjs +4 -0
  750. package/dist/constant/components.cjs.map +1 -1
  751. package/dist/constant/components.js +4 -0
  752. package/dist/constant/components.js.map +1 -1
  753. package/dist/date/comparators.cjs +1 -1
  754. package/dist/date/comparators.cjs.map +1 -1
  755. package/dist/date/comparators.js +2 -2
  756. package/dist/date/comparators.js.map +1 -1
  757. package/dist/date/parser.cjs +2 -2
  758. package/dist/date/parser.js +3 -3
  759. package/dist/date/useDateField.cjs +9 -9
  760. package/dist/date/useDateField.cjs.map +1 -1
  761. package/dist/date/useDateField.js +10 -10
  762. package/dist/date/useDateField.js.map +1 -1
  763. package/dist/date/utils.cjs +2 -2
  764. package/dist/date/utils.cjs.map +1 -1
  765. package/dist/date/utils.js +2 -2
  766. package/dist/date/utils.js.map +1 -1
  767. package/dist/index.cjs +91 -87
  768. package/dist/index.cjs.map +1 -1
  769. package/dist/index.d.ts +75 -12
  770. package/dist/index.js +43 -41
  771. package/dist/index.js.map +1 -1
  772. package/dist/shared/nullish.cjs +1 -1
  773. package/dist/shared/nullish.cjs.map +1 -1
  774. package/dist/shared/nullish.js +1 -1
  775. package/dist/shared/nullish.js.map +1 -1
  776. package/dist/shared/useBodyScrollLock.cjs +2 -2
  777. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  778. package/dist/shared/useBodyScrollLock.js +4 -4
  779. package/dist/shared/useBodyScrollLock.js.map +1 -1
  780. package/dist/shared/useDateFormatter.js +2 -2
  781. package/dist/shared/useForwardProps.cjs +2 -2
  782. package/dist/shared/useForwardProps.cjs.map +1 -1
  783. package/dist/shared/useForwardProps.js +2 -2
  784. package/dist/shared/useForwardProps.js.map +1 -1
  785. package/dist/shared/useGraceArea.cjs +1 -1
  786. package/dist/shared/useGraceArea.cjs.map +1 -1
  787. package/dist/shared/useGraceArea.js +1 -1
  788. package/dist/shared/useGraceArea.js.map +1 -1
  789. package/dist/shared/useId.cjs +1 -1
  790. package/dist/shared/useId.cjs.map +1 -1
  791. package/dist/shared/useId.js +1 -1
  792. package/dist/shared/useId.js.map +1 -1
  793. package/dist/shared/useSelectionBehavior.cjs +1 -1
  794. package/dist/shared/useSelectionBehavior.cjs.map +1 -1
  795. package/dist/shared/useSelectionBehavior.js +1 -1
  796. package/dist/shared/useSelectionBehavior.js.map +1 -1
  797. package/dist/shared/useSingleOrMultipleValue.cjs +5 -5
  798. package/dist/shared/useSingleOrMultipleValue.cjs.map +1 -1
  799. package/dist/shared/useSingleOrMultipleValue.js +5 -5
  800. package/dist/shared/useSingleOrMultipleValue.js.map +1 -1
  801. package/dist/shared/useSize.cjs +1 -1
  802. package/dist/shared/useSize.cjs.map +1 -1
  803. package/dist/shared/useSize.js +1 -1
  804. package/dist/shared/useSize.js.map +1 -1
  805. package/dist/shared/useTypeahead.cjs +1 -1
  806. package/dist/shared/useTypeahead.cjs.map +1 -1
  807. package/dist/shared/useTypeahead.js +1 -1
  808. package/dist/shared/useTypeahead.js.map +1 -1
  809. package/dist/utils/layout.cjs +1 -1
  810. package/dist/utils/layout.cjs.map +1 -1
  811. package/dist/utils/layout.js +1 -1
  812. package/dist/utils/layout.js.map +1 -1
  813. package/dist/utils/style.cjs +2 -2
  814. package/dist/utils/style.cjs.map +1 -1
  815. package/dist/utils/style.js +3 -3
  816. package/dist/utils/style.js.map +1 -1
  817. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"useGraceArea.cjs","sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":["import { type Ref, ref, watchEffect } from 'vue'\nimport type { Side } from '@/Popper/utils'\nimport { createEventHook, refAutoReset } from '@vueuse/shared'\n\nexport function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, containerElement: Ref<HTMLElement | undefined>) {\n// Reset the inTransit state if idle/scrolled.\n const isPointerInTransit = refAutoReset(false, 300)\n\n const pointerGraceArea = ref<Polygon | null>(null)\n const pointerExit = createEventHook<void>()\n\n function handleRemoveGraceArea() {\n pointerGraceArea.value = null\n isPointerInTransit.value = false\n }\n\n function handleCreateGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {\n const currentTarget = event.currentTarget as HTMLElement\n const exitPoint = { x: event.clientX, y: event.clientY }\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect())\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide)\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect())\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints])\n pointerGraceArea.value = graceArea\n isPointerInTransit.value = true\n }\n\n watchEffect((cleanupFn) => {\n if (triggerElement.value && containerElement.value) {\n const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, containerElement.value!)\n const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, triggerElement.value!)\n\n triggerElement.value.addEventListener('pointerleave', handleTriggerLeave)\n containerElement.value.addEventListener('pointerleave', handleContentLeave)\n\n cleanupFn(() => {\n triggerElement.value?.removeEventListener('pointerleave', handleTriggerLeave)\n containerElement.value?.removeEventListener('pointerleave', handleContentLeave)\n })\n }\n })\n\n watchEffect((cleanupFn) => {\n if (pointerGraceArea.value) {\n const handleTrackPointerGrace = (event: PointerEvent) => {\n if (!pointerGraceArea.value)\n return\n const target = event.target as HTMLElement\n const pointerPosition = { x: event.clientX, y: event.clientY }\n const hasEnteredTarget = triggerElement.value?.contains(target) || containerElement.value?.contains(target)\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea.value)\n const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]')\n\n if (hasEnteredTarget) {\n handleRemoveGraceArea()\n }\n else if (isPointerOutsideGraceArea || isAnotherGraceAreaTrigger) {\n handleRemoveGraceArea()\n pointerExit.trigger()\n }\n }\n triggerElement.value?.ownerDocument.addEventListener('pointermove', handleTrackPointerGrace)\n\n cleanupFn(() => triggerElement.value?.ownerDocument.removeEventListener('pointermove', handleTrackPointerGrace))\n }\n })\n\n return {\n isPointerInTransit,\n onPointerExit: pointerExit.on,\n }\n}\n\ninterface Point { x: number, y: number }\n type Polygon = Point[]\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y)\n const bottom = Math.abs(rect.bottom - point.y)\n const right = Math.abs(rect.right - point.x)\n const left = Math.abs(rect.left - point.x)\n\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return 'left'\n case right:\n return 'right'\n case top:\n return 'top'\n case bottom:\n return 'bottom'\n default:\n throw new Error('unreachable')\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const paddedExitPoints: Point[] = []\n switch (exitSide) {\n case 'top':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'bottom':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n )\n break\n case 'left':\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'right':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n )\n break\n }\n return paddedExitPoints\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n ]\n}\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point\n let inside = false\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x\n const yi = polygon[i].y\n const xj = polygon[j].x\n const yj = polygon[j].y\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)\n if (intersect)\n inside = !inside\n }\n\n return inside\n}\n\n// Returns a new array of points representing the convex hull of the given set of points.\n// https://www.nayuki.io/page/convex-hull-algorithm\nfunction getHull<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n const newPoints: Array<P> = points.slice()\n newPoints.sort((a: Point, b: Point) => {\n if (a.x < b.x)\n return -1\n else if (a.x > b.x)\n return +1\n else if (a.y < b.y)\n return -1\n else if (a.y > b.y)\n return +1\n else return 0\n })\n return getHullPresorted(newPoints)\n}\n\n// Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.\nfunction getHullPresorted<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n if (points.length <= 1)\n return points.slice()\n\n const upperHull: Array<P> = []\n for (let i = 0; i < points.length; i++) {\n const p = points[i]\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1]\n const r = upperHull[upperHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n upperHull.pop()\n else break\n }\n upperHull.push(p)\n }\n upperHull.pop()\n\n const lowerHull: Array<P> = []\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i]\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1]\n const r = lowerHull[lowerHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n lowerHull.pop()\n else break\n }\n lowerHull.push(p)\n }\n lowerHull.pop()\n\n if (\n upperHull.length === 1\n && lowerHull.length === 1\n && upperHull[0].x === lowerHull[0].x\n && upperHull[0].y === lowerHull[0].y\n ) {\n return upperHull\n }\n\n else {\n return upperHull.concat(lowerHull)\n }\n}\n"],"names":["refAutoReset","ref","createEventHook","watchEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useGraceArea.cjs","sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":["import { type Ref, ref, watchEffect } from 'vue'\nimport type { Side } from '@/Popper/utils'\nimport { createEventHook, refAutoReset } from '@vueuse/shared'\n\nexport function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, containerElement: Ref<HTMLElement | undefined>) {\n// Reset the inTransit state if idle/scrolled.\n const isPointerInTransit = refAutoReset(false, 300)\n\n const pointerGraceArea = ref<Polygon | null>(null)\n const pointerExit = createEventHook<void>()\n\n function handleRemoveGraceArea() {\n pointerGraceArea.value = null\n isPointerInTransit.value = false\n }\n\n function handleCreateGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {\n const currentTarget = event.currentTarget as HTMLElement\n const exitPoint = { x: event.clientX, y: event.clientY }\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect())\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide)\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect())\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints])\n pointerGraceArea.value = graceArea\n isPointerInTransit.value = true\n }\n\n watchEffect((cleanupFn) => {\n if (triggerElement.value && containerElement.value) {\n const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, containerElement.value!)\n const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, triggerElement.value!)\n\n triggerElement.value.addEventListener('pointerleave', handleTriggerLeave)\n containerElement.value.addEventListener('pointerleave', handleContentLeave)\n\n cleanupFn(() => {\n triggerElement.value?.removeEventListener('pointerleave', handleTriggerLeave)\n containerElement.value?.removeEventListener('pointerleave', handleContentLeave)\n })\n }\n })\n\n watchEffect((cleanupFn) => {\n if (pointerGraceArea.value) {\n const handleTrackPointerGrace = (event: PointerEvent) => {\n if (!pointerGraceArea.value || !(event.target instanceof HTMLElement))\n return\n\n const target = event.target\n const pointerPosition = { x: event.clientX, y: event.clientY }\n const hasEnteredTarget = triggerElement.value?.contains(target) || containerElement.value?.contains(target)\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea.value)\n const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]')\n\n if (hasEnteredTarget) {\n handleRemoveGraceArea()\n }\n else if (isPointerOutsideGraceArea || isAnotherGraceAreaTrigger) {\n handleRemoveGraceArea()\n pointerExit.trigger()\n }\n }\n triggerElement.value?.ownerDocument.addEventListener('pointermove', handleTrackPointerGrace)\n\n cleanupFn(() => triggerElement.value?.ownerDocument.removeEventListener('pointermove', handleTrackPointerGrace))\n }\n })\n\n return {\n isPointerInTransit,\n onPointerExit: pointerExit.on,\n }\n}\n\ninterface Point { x: number, y: number }\n type Polygon = Point[]\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y)\n const bottom = Math.abs(rect.bottom - point.y)\n const right = Math.abs(rect.right - point.x)\n const left = Math.abs(rect.left - point.x)\n\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return 'left'\n case right:\n return 'right'\n case top:\n return 'top'\n case bottom:\n return 'bottom'\n default:\n throw new Error('unreachable')\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const paddedExitPoints: Point[] = []\n switch (exitSide) {\n case 'top':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'bottom':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n )\n break\n case 'left':\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'right':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n )\n break\n }\n return paddedExitPoints\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n ]\n}\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point\n let inside = false\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x\n const yi = polygon[i].y\n const xj = polygon[j].x\n const yj = polygon[j].y\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)\n if (intersect)\n inside = !inside\n }\n\n return inside\n}\n\n// Returns a new array of points representing the convex hull of the given set of points.\n// https://www.nayuki.io/page/convex-hull-algorithm\nfunction getHull<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n const newPoints: Array<P> = points.slice()\n newPoints.sort((a: Point, b: Point) => {\n if (a.x < b.x)\n return -1\n else if (a.x > b.x)\n return +1\n else if (a.y < b.y)\n return -1\n else if (a.y > b.y)\n return +1\n else return 0\n })\n return getHullPresorted(newPoints)\n}\n\n// Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.\nfunction getHullPresorted<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n if (points.length <= 1)\n return points.slice()\n\n const upperHull: Array<P> = []\n for (let i = 0; i < points.length; i++) {\n const p = points[i]\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1]\n const r = upperHull[upperHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n upperHull.pop()\n else break\n }\n upperHull.push(p)\n }\n upperHull.pop()\n\n const lowerHull: Array<P> = []\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i]\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1]\n const r = lowerHull[lowerHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n lowerHull.pop()\n else break\n }\n lowerHull.push(p)\n }\n lowerHull.pop()\n\n if (\n upperHull.length === 1\n && lowerHull.length === 1\n && upperHull[0].x === lowerHull[0].x\n && upperHull[0].y === lowerHull[0].y\n ) {\n return upperHull\n }\n\n else {\n return upperHull.concat(lowerHull)\n }\n}\n"],"names":["refAutoReset","ref","createEventHook","watchEffect"],"mappings":"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"}
@@ -34,7 +34,7 @@ function useGraceArea(triggerElement, containerElement) {
34
34
  watchEffect((cleanupFn) => {
35
35
  if (pointerGraceArea.value) {
36
36
  const handleTrackPointerGrace = (event) => {
37
- if (!pointerGraceArea.value)
37
+ if (!pointerGraceArea.value || !(event.target instanceof HTMLElement))
38
38
  return;
39
39
  const target = event.target;
40
40
  const pointerPosition = { x: event.clientX, y: event.clientY };
@@ -1 +1 @@
1
- {"version":3,"file":"useGraceArea.js","sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":["import { type Ref, ref, watchEffect } from 'vue'\nimport type { Side } from '@/Popper/utils'\nimport { createEventHook, refAutoReset } from '@vueuse/shared'\n\nexport function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, containerElement: Ref<HTMLElement | undefined>) {\n// Reset the inTransit state if idle/scrolled.\n const isPointerInTransit = refAutoReset(false, 300)\n\n const pointerGraceArea = ref<Polygon | null>(null)\n const pointerExit = createEventHook<void>()\n\n function handleRemoveGraceArea() {\n pointerGraceArea.value = null\n isPointerInTransit.value = false\n }\n\n function handleCreateGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {\n const currentTarget = event.currentTarget as HTMLElement\n const exitPoint = { x: event.clientX, y: event.clientY }\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect())\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide)\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect())\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints])\n pointerGraceArea.value = graceArea\n isPointerInTransit.value = true\n }\n\n watchEffect((cleanupFn) => {\n if (triggerElement.value && containerElement.value) {\n const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, containerElement.value!)\n const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, triggerElement.value!)\n\n triggerElement.value.addEventListener('pointerleave', handleTriggerLeave)\n containerElement.value.addEventListener('pointerleave', handleContentLeave)\n\n cleanupFn(() => {\n triggerElement.value?.removeEventListener('pointerleave', handleTriggerLeave)\n containerElement.value?.removeEventListener('pointerleave', handleContentLeave)\n })\n }\n })\n\n watchEffect((cleanupFn) => {\n if (pointerGraceArea.value) {\n const handleTrackPointerGrace = (event: PointerEvent) => {\n if (!pointerGraceArea.value)\n return\n const target = event.target as HTMLElement\n const pointerPosition = { x: event.clientX, y: event.clientY }\n const hasEnteredTarget = triggerElement.value?.contains(target) || containerElement.value?.contains(target)\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea.value)\n const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]')\n\n if (hasEnteredTarget) {\n handleRemoveGraceArea()\n }\n else if (isPointerOutsideGraceArea || isAnotherGraceAreaTrigger) {\n handleRemoveGraceArea()\n pointerExit.trigger()\n }\n }\n triggerElement.value?.ownerDocument.addEventListener('pointermove', handleTrackPointerGrace)\n\n cleanupFn(() => triggerElement.value?.ownerDocument.removeEventListener('pointermove', handleTrackPointerGrace))\n }\n })\n\n return {\n isPointerInTransit,\n onPointerExit: pointerExit.on,\n }\n}\n\ninterface Point { x: number, y: number }\n type Polygon = Point[]\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y)\n const bottom = Math.abs(rect.bottom - point.y)\n const right = Math.abs(rect.right - point.x)\n const left = Math.abs(rect.left - point.x)\n\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return 'left'\n case right:\n return 'right'\n case top:\n return 'top'\n case bottom:\n return 'bottom'\n default:\n throw new Error('unreachable')\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const paddedExitPoints: Point[] = []\n switch (exitSide) {\n case 'top':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'bottom':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n )\n break\n case 'left':\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'right':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n )\n break\n }\n return paddedExitPoints\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n ]\n}\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point\n let inside = false\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x\n const yi = polygon[i].y\n const xj = polygon[j].x\n const yj = polygon[j].y\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)\n if (intersect)\n inside = !inside\n }\n\n return inside\n}\n\n// Returns a new array of points representing the convex hull of the given set of points.\n// https://www.nayuki.io/page/convex-hull-algorithm\nfunction getHull<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n const newPoints: Array<P> = points.slice()\n newPoints.sort((a: Point, b: Point) => {\n if (a.x < b.x)\n return -1\n else if (a.x > b.x)\n return +1\n else if (a.y < b.y)\n return -1\n else if (a.y > b.y)\n return +1\n else return 0\n })\n return getHullPresorted(newPoints)\n}\n\n// Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.\nfunction getHullPresorted<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n if (points.length <= 1)\n return points.slice()\n\n const upperHull: Array<P> = []\n for (let i = 0; i < points.length; i++) {\n const p = points[i]\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1]\n const r = upperHull[upperHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n upperHull.pop()\n else break\n }\n upperHull.push(p)\n }\n upperHull.pop()\n\n const lowerHull: Array<P> = []\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i]\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1]\n const r = lowerHull[lowerHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n lowerHull.pop()\n else break\n }\n lowerHull.push(p)\n }\n lowerHull.pop()\n\n if (\n upperHull.length === 1\n && lowerHull.length === 1\n && upperHull[0].x === lowerHull[0].x\n && upperHull[0].y === lowerHull[0].y\n ) {\n return upperHull\n }\n\n else {\n return upperHull.concat(lowerHull)\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useGraceArea.js","sources":["../../src/shared/useGraceArea.ts"],"sourcesContent":["import { type Ref, ref, watchEffect } from 'vue'\nimport type { Side } from '@/Popper/utils'\nimport { createEventHook, refAutoReset } from '@vueuse/shared'\n\nexport function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, containerElement: Ref<HTMLElement | undefined>) {\n// Reset the inTransit state if idle/scrolled.\n const isPointerInTransit = refAutoReset(false, 300)\n\n const pointerGraceArea = ref<Polygon | null>(null)\n const pointerExit = createEventHook<void>()\n\n function handleRemoveGraceArea() {\n pointerGraceArea.value = null\n isPointerInTransit.value = false\n }\n\n function handleCreateGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {\n const currentTarget = event.currentTarget as HTMLElement\n const exitPoint = { x: event.clientX, y: event.clientY }\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect())\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide)\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect())\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints])\n pointerGraceArea.value = graceArea\n isPointerInTransit.value = true\n }\n\n watchEffect((cleanupFn) => {\n if (triggerElement.value && containerElement.value) {\n const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, containerElement.value!)\n const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, triggerElement.value!)\n\n triggerElement.value.addEventListener('pointerleave', handleTriggerLeave)\n containerElement.value.addEventListener('pointerleave', handleContentLeave)\n\n cleanupFn(() => {\n triggerElement.value?.removeEventListener('pointerleave', handleTriggerLeave)\n containerElement.value?.removeEventListener('pointerleave', handleContentLeave)\n })\n }\n })\n\n watchEffect((cleanupFn) => {\n if (pointerGraceArea.value) {\n const handleTrackPointerGrace = (event: PointerEvent) => {\n if (!pointerGraceArea.value || !(event.target instanceof HTMLElement))\n return\n\n const target = event.target\n const pointerPosition = { x: event.clientX, y: event.clientY }\n const hasEnteredTarget = triggerElement.value?.contains(target) || containerElement.value?.contains(target)\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea.value)\n const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]')\n\n if (hasEnteredTarget) {\n handleRemoveGraceArea()\n }\n else if (isPointerOutsideGraceArea || isAnotherGraceAreaTrigger) {\n handleRemoveGraceArea()\n pointerExit.trigger()\n }\n }\n triggerElement.value?.ownerDocument.addEventListener('pointermove', handleTrackPointerGrace)\n\n cleanupFn(() => triggerElement.value?.ownerDocument.removeEventListener('pointermove', handleTrackPointerGrace))\n }\n })\n\n return {\n isPointerInTransit,\n onPointerExit: pointerExit.on,\n }\n}\n\ninterface Point { x: number, y: number }\n type Polygon = Point[]\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y)\n const bottom = Math.abs(rect.bottom - point.y)\n const right = Math.abs(rect.right - point.x)\n const left = Math.abs(rect.left - point.x)\n\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return 'left'\n case right:\n return 'right'\n case top:\n return 'top'\n case bottom:\n return 'bottom'\n default:\n throw new Error('unreachable')\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const paddedExitPoints: Point[] = []\n switch (exitSide) {\n case 'top':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'bottom':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n )\n break\n case 'left':\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n )\n break\n case 'right':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n )\n break\n }\n return paddedExitPoints\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n ]\n}\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point\n let inside = false\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x\n const yi = polygon[i].y\n const xj = polygon[j].x\n const yj = polygon[j].y\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)\n if (intersect)\n inside = !inside\n }\n\n return inside\n}\n\n// Returns a new array of points representing the convex hull of the given set of points.\n// https://www.nayuki.io/page/convex-hull-algorithm\nfunction getHull<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n const newPoints: Array<P> = points.slice()\n newPoints.sort((a: Point, b: Point) => {\n if (a.x < b.x)\n return -1\n else if (a.x > b.x)\n return +1\n else if (a.y < b.y)\n return -1\n else if (a.y > b.y)\n return +1\n else return 0\n })\n return getHullPresorted(newPoints)\n}\n\n// Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.\nfunction getHullPresorted<P extends Point>(points: Readonly<Array<P>>): Array<P> {\n if (points.length <= 1)\n return points.slice()\n\n const upperHull: Array<P> = []\n for (let i = 0; i < points.length; i++) {\n const p = points[i]\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1]\n const r = upperHull[upperHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n upperHull.pop()\n else break\n }\n upperHull.push(p)\n }\n upperHull.pop()\n\n const lowerHull: Array<P> = []\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i]\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1]\n const r = lowerHull[lowerHull.length - 2]\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n lowerHull.pop()\n else break\n }\n lowerHull.push(p)\n }\n lowerHull.pop()\n\n if (\n upperHull.length === 1\n && lowerHull.length === 1\n && upperHull[0].x === lowerHull[0].x\n && upperHull[0].y === lowerHull[0].y\n ) {\n return upperHull\n }\n\n else {\n return upperHull.concat(lowerHull)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ let count = 0;
26
26
  function useId(deterministicId, prefix = "reka") {
27
27
  if (deterministicId)
28
28
  return deterministicId;
29
- const configProviderContext = ConfigProvider_ConfigProvider.injectConfigProviderContext({ useId: undefined });
29
+ const configProviderContext = ConfigProvider_ConfigProvider.injectConfigProviderContext({ useId: void 0 });
30
30
  if (vue__namespace.useId) {
31
31
  return `${prefix}-${vue__namespace.useId()}`;
32
32
  } else if (configProviderContext.useId) {
@@ -1 +1 @@
1
- {"version":3,"file":"useId.cjs","sources":["../../src/shared/useId.ts"],"sourcesContent":["// Inspired from https://github.com/tailwindlabs/headlessui/issues/2913\n// as the alternative, and a fallback for Vue version < 3.5\nimport { injectConfigProviderContext } from '@/ConfigProvider/ConfigProvider.vue'\nimport * as vue from 'vue'\n\nlet count = 0\n/**\n * The `useId` function generates a unique identifier using a provided deterministic ID or a default\n * one prefixed with \"reka-\", or the provided one via `useId` props from `<ConfigProvider>`.\n * @param {string | null | undefined} [deterministicId] - The `useId` function you provided takes an\n * optional parameter `deterministicId`, which can be a string, null, or undefined. If\n * `deterministicId` is provided, the function will return it. Otherwise, it will generate an id using\n * the `useId` function obtained\n */\nexport function useId(deterministicId?: string | null | undefined, prefix = 'reka') {\n if (deterministicId)\n return deterministicId\n\n const configProviderContext = injectConfigProviderContext({ useId: undefined })\n\n if (vue.useId) {\n return `${prefix}-${vue.useId()}`\n }\n else if (configProviderContext.useId) {\n return `${prefix}-${configProviderContext.useId()}`\n }\n\n return `${prefix}-${++count}`\n}\n"],"names":["injectConfigProviderContext","vue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAI,KAAQ,GAAA,CAAA;AASI,SAAA,KAAA,CAAM,eAA6C,EAAA,MAAA,GAAS,MAAQ,EAAA;AAClF,EAAI,IAAA,eAAA;AACF,IAAO,OAAA,eAAA;AAET,EAAA,MAAM,qBAAwB,GAAAA,yDAAA,CAA4B,EAAE,KAAA,EAAO,WAAW,CAAA;AAE9E,EAAA,IAAIC,eAAI,KAAO,EAAA;AACb,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAAA,cAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GACjC,MAAA,IACS,sBAAsB,KAAO,EAAA;AACpC,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,qBAAA,CAAsB,OAAO,CAAA,CAAA;AAAA;AAGnD,EAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,EAAE,KAAK,CAAA,CAAA;AAC7B;;;;"}
1
+ {"version":3,"file":"useId.cjs","sources":["../../src/shared/useId.ts"],"sourcesContent":["// Inspired from https://github.com/tailwindlabs/headlessui/issues/2913\n// as the alternative, and a fallback for Vue version < 3.5\nimport { injectConfigProviderContext } from '@/ConfigProvider/ConfigProvider.vue'\nimport * as vue from 'vue'\n\nlet count = 0\n/**\n * The `useId` function generates a unique identifier using a provided deterministic ID or a default\n * one prefixed with \"reka-\", or the provided one via `useId` props from `<ConfigProvider>`.\n * @param {string | null | undefined} [deterministicId] - The `useId` function you provided takes an\n * optional parameter `deterministicId`, which can be a string, null, or undefined. If\n * `deterministicId` is provided, the function will return it. Otherwise, it will generate an id using\n * the `useId` function obtained\n */\nexport function useId(deterministicId?: string | null | undefined, prefix = 'reka') {\n if (deterministicId)\n return deterministicId\n\n const configProviderContext = injectConfigProviderContext({ useId: undefined })\n\n if (vue.useId) {\n return `${prefix}-${vue.useId()}`\n }\n else if (configProviderContext.useId) {\n return `${prefix}-${configProviderContext.useId()}`\n }\n\n return `${prefix}-${++count}`\n}\n"],"names":["injectConfigProviderContext","vue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAI,KAAQ,GAAA,CAAA;AASI,SAAA,KAAA,CAAM,eAA6C,EAAA,MAAA,GAAS,MAAQ,EAAA;AAClF,EAAI,IAAA,eAAA;AACF,IAAO,OAAA,eAAA;AAET,EAAA,MAAM,qBAAwB,GAAAA,yDAAA,CAA4B,EAAE,KAAA,EAAO,QAAW,CAAA;AAE9E,EAAA,IAAIC,eAAI,KAAO,EAAA;AACb,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAAA,cAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GACjC,MAAA,IACS,sBAAsB,KAAO,EAAA;AACpC,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,qBAAA,CAAsB,OAAO,CAAA,CAAA;AAAA;AAGnD,EAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,EAAE,KAAK,CAAA,CAAA;AAC7B;;;;"}
@@ -5,7 +5,7 @@ let count = 0;
5
5
  function useId(deterministicId, prefix = "reka") {
6
6
  if (deterministicId)
7
7
  return deterministicId;
8
- const configProviderContext = injectConfigProviderContext({ useId: undefined });
8
+ const configProviderContext = injectConfigProviderContext({ useId: void 0 });
9
9
  if (vue.useId) {
10
10
  return `${prefix}-${vue.useId()}`;
11
11
  } else if (configProviderContext.useId) {
@@ -1 +1 @@
1
- {"version":3,"file":"useId.js","sources":["../../src/shared/useId.ts"],"sourcesContent":["// Inspired from https://github.com/tailwindlabs/headlessui/issues/2913\n// as the alternative, and a fallback for Vue version < 3.5\nimport { injectConfigProviderContext } from '@/ConfigProvider/ConfigProvider.vue'\nimport * as vue from 'vue'\n\nlet count = 0\n/**\n * The `useId` function generates a unique identifier using a provided deterministic ID or a default\n * one prefixed with \"reka-\", or the provided one via `useId` props from `<ConfigProvider>`.\n * @param {string | null | undefined} [deterministicId] - The `useId` function you provided takes an\n * optional parameter `deterministicId`, which can be a string, null, or undefined. If\n * `deterministicId` is provided, the function will return it. Otherwise, it will generate an id using\n * the `useId` function obtained\n */\nexport function useId(deterministicId?: string | null | undefined, prefix = 'reka') {\n if (deterministicId)\n return deterministicId\n\n const configProviderContext = injectConfigProviderContext({ useId: undefined })\n\n if (vue.useId) {\n return `${prefix}-${vue.useId()}`\n }\n else if (configProviderContext.useId) {\n return `${prefix}-${configProviderContext.useId()}`\n }\n\n return `${prefix}-${++count}`\n}\n"],"names":[],"mappings":";;;AAKA,IAAI,KAAQ,GAAA,CAAA;AASI,SAAA,KAAA,CAAM,eAA6C,EAAA,MAAA,GAAS,MAAQ,EAAA;AAClF,EAAI,IAAA,eAAA;AACF,IAAO,OAAA,eAAA;AAET,EAAA,MAAM,qBAAwB,GAAA,2BAAA,CAA4B,EAAE,KAAA,EAAO,WAAW,CAAA;AAE9E,EAAA,IAAI,IAAI,KAAO,EAAA;AACb,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GACjC,MAAA,IACS,sBAAsB,KAAO,EAAA;AACpC,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,qBAAA,CAAsB,OAAO,CAAA,CAAA;AAAA;AAGnD,EAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,EAAE,KAAK,CAAA,CAAA;AAC7B;;;;"}
1
+ {"version":3,"file":"useId.js","sources":["../../src/shared/useId.ts"],"sourcesContent":["// Inspired from https://github.com/tailwindlabs/headlessui/issues/2913\n// as the alternative, and a fallback for Vue version < 3.5\nimport { injectConfigProviderContext } from '@/ConfigProvider/ConfigProvider.vue'\nimport * as vue from 'vue'\n\nlet count = 0\n/**\n * The `useId` function generates a unique identifier using a provided deterministic ID or a default\n * one prefixed with \"reka-\", or the provided one via `useId` props from `<ConfigProvider>`.\n * @param {string | null | undefined} [deterministicId] - The `useId` function you provided takes an\n * optional parameter `deterministicId`, which can be a string, null, or undefined. If\n * `deterministicId` is provided, the function will return it. Otherwise, it will generate an id using\n * the `useId` function obtained\n */\nexport function useId(deterministicId?: string | null | undefined, prefix = 'reka') {\n if (deterministicId)\n return deterministicId\n\n const configProviderContext = injectConfigProviderContext({ useId: undefined })\n\n if (vue.useId) {\n return `${prefix}-${vue.useId()}`\n }\n else if (configProviderContext.useId) {\n return `${prefix}-${configProviderContext.useId()}`\n }\n\n return `${prefix}-${++count}`\n}\n"],"names":[],"mappings":";;;AAKA,IAAI,KAAQ,GAAA,CAAA;AASI,SAAA,KAAA,CAAM,eAA6C,EAAA,MAAA,GAAS,MAAQ,EAAA;AAClF,EAAI,IAAA,eAAA;AACF,IAAO,OAAA,eAAA;AAET,EAAA,MAAM,qBAAwB,GAAA,2BAAA,CAA4B,EAAE,KAAA,EAAO,QAAW,CAAA;AAE9E,EAAA,IAAI,IAAI,KAAO,EAAA;AACb,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GACjC,MAAA,IACS,sBAAsB,KAAO,EAAA;AACpC,IAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,qBAAA,CAAsB,OAAO,CAAA,CAAA;AAAA;AAGnD,EAAA,OAAO,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,EAAE,KAAK,CAAA,CAAA;AAC7B;;;;"}
@@ -22,7 +22,7 @@ function useSelectionBehavior(modelValue, props) {
22
22
  modelValue.value = { ...val };
23
23
  } else {
24
24
  if (!Array.isArray(modelValue.value) && condition(modelValue.value))
25
- modelValue.value = undefined;
25
+ modelValue.value = void 0;
26
26
  else
27
27
  modelValue.value = { ...val };
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectionBehavior.cjs","sources":["../../src/shared/useSelectionBehavior.ts"],"sourcesContent":["import { type Ref, type UnwrapNestedRefs, ref } from 'vue'\nimport { findValuesBetween } from './arrays'\n\nexport function useSelectionBehavior<T>(\n modelValue: Ref<T | T[]>,\n props: UnwrapNestedRefs<{ multiple?: boolean, selectionBehavior?: 'toggle' | 'replace' }>,\n) {\n const firstValue = ref()\n\n const onSelectItem = (val: T, condition: (existingValue: T) => boolean) => {\n // multiple select\n if (props.multiple && Array.isArray(modelValue.value)) {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = [val]\n firstValue.value = val\n }\n else {\n const index = modelValue.value.findIndex(v => condition(v))\n if (index !== -1)\n modelValue.value.splice(index, 1)\n else\n modelValue.value.push(val)\n }\n }\n // single select\n else {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = { ...val }\n }\n else {\n if (!Array.isArray(modelValue.value) && condition(modelValue.value))\n modelValue.value = undefined as any\n else\n modelValue.value = { ...val }\n }\n }\n return modelValue.value\n }\n\n function handleMultipleReplace(intent: 'first' | 'last' | 'prev' | 'next', currentElement: HTMLElement | Element | null, getItems: () => { ref: HTMLElement, value?: any }[], options: any[]) {\n if (!firstValue?.value || !props.multiple || !Array.isArray(modelValue.value))\n return\n\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n const lastValue = collection.find(i => i.ref === currentElement)?.value\n if (!lastValue)\n return\n\n let value: T[] | null = null\n switch (intent) {\n case 'prev':\n case 'next': {\n value = findValuesBetween(options, firstValue.value, lastValue)\n break\n }\n case 'first': {\n value = findValuesBetween(options, firstValue.value, options?.[0])\n break\n }\n case 'last': {\n value = findValuesBetween(options, firstValue.value, options?.[options.length - 1])\n break\n }\n }\n\n modelValue.value = value\n }\n\n return {\n firstValue,\n onSelectItem,\n handleMultipleReplace,\n }\n}\n"],"names":["ref","findValuesBetween"],"mappings":";;;;;AAGgB,SAAA,oBAAA,CACd,YACA,KACA,EAAA;AACA,EAAA,MAAM,aAAaA,OAAI,EAAA;AAEvB,EAAM,MAAA,YAAA,GAAe,CAAC,GAAA,EAAQ,SAA6C,KAAA;AAEzE,IAAA,IAAI,MAAM,QAAY,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACrD,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,CAAC,GAAG,CAAA;AACvB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OAEhB,MAAA;AACH,QAAA,MAAM,QAAQ,UAAW,CAAA,KAAA,CAAM,UAAU,CAAK,CAAA,KAAA,SAAA,CAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,IAAI,KAAU,KAAA,EAAA;AACZ,UAAW,UAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAEhC,UAAW,UAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAC7B,KAGG,MAAA;AACH,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA,OAEzB,MAAA;AACH,QAAI,IAAA,CAAC,MAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAK,IAAA,SAAA,CAAU,WAAW,KAAK,CAAA;AAChE,UAAA,UAAA,CAAW,KAAQ,GAAA,SAAA;AAAA;AAEnB,UAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA;AAChC;AAEF,IAAA,OAAO,UAAW,CAAA,KAAA;AAAA,GACpB;AAEA,EAAA,SAAS,qBAAsB,CAAA,MAAA,EAA4C,cAA8C,EAAA,QAAA,EAAqD,OAAgB,EAAA;AAC5L,IAAI,IAAA,CAAC,UAAY,EAAA,KAAA,IAAS,CAAC,KAAA,CAAM,YAAY,CAAC,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAC1E,MAAA;AAEF,IAAM,MAAA,UAAA,GAAa,UAAW,CAAA,MAAA,CAAO,OAAK,CAAE,CAAA,GAAA,CAAI,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAA;AACvE,IAAA,MAAM,YAAY,UAAW,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,GAAA,KAAQ,cAAc,CAAG,EAAA,KAAA;AAClE,IAAA,IAAI,CAAC,SAAA;AACH,MAAA;AAEF,IAAA,IAAI,KAAoB,GAAA,IAAA;AACxB,IAAA,QAAQ,MAAQ;AAAA,MACd,KAAK,MAAA;AAAA,MACL,KAAK,MAAQ,EAAA;AACX,QAAA,KAAA,GAAQC,+BAAkB,CAAA,OAAA,EAAS,UAAW,CAAA,KAAA,EAAO,SAAS,CAAA;AAC9D,QAAA;AAAA;AACF,MACA,KAAK,OAAS,EAAA;AACZ,QAAA,KAAA,GAAQA,gCAAkB,OAAS,EAAA,UAAA,CAAW,KAAO,EAAA,OAAA,GAAU,CAAC,CAAC,CAAA;AACjE,QAAA;AAAA;AACF,MACA,KAAK,MAAQ,EAAA;AACX,QAAQ,KAAA,GAAAA,+BAAA,CAAkB,SAAS,UAAW,CAAA,KAAA,EAAO,UAAU,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA;AAClF,QAAA;AAAA;AACF;AAGF,IAAA,UAAA,CAAW,KAAQ,GAAA,KAAA;AAAA;AAGrB,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSelectionBehavior.cjs","sources":["../../src/shared/useSelectionBehavior.ts"],"sourcesContent":["import { type Ref, type UnwrapNestedRefs, ref } from 'vue'\nimport { findValuesBetween } from './arrays'\n\nexport function useSelectionBehavior<T>(\n modelValue: Ref<T | T[]>,\n props: UnwrapNestedRefs<{ multiple?: boolean, selectionBehavior?: 'toggle' | 'replace' }>,\n) {\n const firstValue = ref()\n\n const onSelectItem = (val: T, condition: (existingValue: T) => boolean) => {\n // multiple select\n if (props.multiple && Array.isArray(modelValue.value)) {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = [val]\n firstValue.value = val\n }\n else {\n const index = modelValue.value.findIndex(v => condition(v))\n if (index !== -1)\n modelValue.value.splice(index, 1)\n else\n modelValue.value.push(val)\n }\n }\n // single select\n else {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = { ...val }\n }\n else {\n if (!Array.isArray(modelValue.value) && condition(modelValue.value))\n modelValue.value = undefined as any\n else\n modelValue.value = { ...val }\n }\n }\n return modelValue.value\n }\n\n function handleMultipleReplace(intent: 'first' | 'last' | 'prev' | 'next', currentElement: HTMLElement | Element | null, getItems: () => { ref: HTMLElement, value?: any }[], options: any[]) {\n if (!firstValue?.value || !props.multiple || !Array.isArray(modelValue.value))\n return\n\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n const lastValue = collection.find(i => i.ref === currentElement)?.value\n if (!lastValue)\n return\n\n let value: T[] | null = null\n switch (intent) {\n case 'prev':\n case 'next': {\n value = findValuesBetween(options, firstValue.value, lastValue)\n break\n }\n case 'first': {\n value = findValuesBetween(options, firstValue.value, options?.[0])\n break\n }\n case 'last': {\n value = findValuesBetween(options, firstValue.value, options?.[options.length - 1])\n break\n }\n }\n\n modelValue.value = value\n }\n\n return {\n firstValue,\n onSelectItem,\n handleMultipleReplace,\n }\n}\n"],"names":["ref","findValuesBetween"],"mappings":";;;;;AAGgB,SAAA,oBAAA,CACd,YACA,KACA,EAAA;AACA,EAAA,MAAM,aAAaA,OAAI,EAAA;AAEvB,EAAM,MAAA,YAAA,GAAe,CAAC,GAAA,EAAQ,SAA6C,KAAA;AAEzE,IAAA,IAAI,MAAM,QAAY,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACrD,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,CAAC,GAAG,CAAA;AACvB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OAEhB,MAAA;AACH,QAAA,MAAM,QAAQ,UAAW,CAAA,KAAA,CAAM,UAAU,CAAK,CAAA,KAAA,SAAA,CAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,IAAI,KAAU,KAAA,EAAA;AACZ,UAAW,UAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAEhC,UAAW,UAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAC7B,KAGG,MAAA;AACH,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA,OAEzB,MAAA;AACH,QAAI,IAAA,CAAC,MAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAK,IAAA,SAAA,CAAU,WAAW,KAAK,CAAA;AAChE,UAAA,UAAA,CAAW,KAAQ,GAAA,MAAA;AAAA;AAEnB,UAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA;AAChC;AAEF,IAAA,OAAO,UAAW,CAAA,KAAA;AAAA,GACpB;AAEA,EAAA,SAAS,qBAAsB,CAAA,MAAA,EAA4C,cAA8C,EAAA,QAAA,EAAqD,OAAgB,EAAA;AAC5L,IAAI,IAAA,CAAC,UAAY,EAAA,KAAA,IAAS,CAAC,KAAA,CAAM,YAAY,CAAC,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAC1E,MAAA;AAEF,IAAM,MAAA,UAAA,GAAa,UAAW,CAAA,MAAA,CAAO,OAAK,CAAE,CAAA,GAAA,CAAI,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAA;AACvE,IAAA,MAAM,YAAY,UAAW,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,GAAA,KAAQ,cAAc,CAAG,EAAA,KAAA;AAClE,IAAA,IAAI,CAAC,SAAA;AACH,MAAA;AAEF,IAAA,IAAI,KAAoB,GAAA,IAAA;AACxB,IAAA,QAAQ,MAAQ;AAAA,MACd,KAAK,MAAA;AAAA,MACL,KAAK,MAAQ,EAAA;AACX,QAAA,KAAA,GAAQC,+BAAkB,CAAA,OAAA,EAAS,UAAW,CAAA,KAAA,EAAO,SAAS,CAAA;AAC9D,QAAA;AAAA;AACF,MACA,KAAK,OAAS,EAAA;AACZ,QAAA,KAAA,GAAQA,gCAAkB,OAAS,EAAA,UAAA,CAAW,KAAO,EAAA,OAAA,GAAU,CAAC,CAAC,CAAA;AACjE,QAAA;AAAA;AACF,MACA,KAAK,MAAQ,EAAA;AACX,QAAQ,KAAA,GAAAA,+BAAA,CAAkB,SAAS,UAAW,CAAA,KAAA,EAAO,UAAU,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA;AAClF,QAAA;AAAA;AACF;AAGF,IAAA,UAAA,CAAW,KAAQ,GAAA,KAAA;AAAA;AAGrB,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -20,7 +20,7 @@ function useSelectionBehavior(modelValue, props) {
20
20
  modelValue.value = { ...val };
21
21
  } else {
22
22
  if (!Array.isArray(modelValue.value) && condition(modelValue.value))
23
- modelValue.value = undefined;
23
+ modelValue.value = void 0;
24
24
  else
25
25
  modelValue.value = { ...val };
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectionBehavior.js","sources":["../../src/shared/useSelectionBehavior.ts"],"sourcesContent":["import { type Ref, type UnwrapNestedRefs, ref } from 'vue'\nimport { findValuesBetween } from './arrays'\n\nexport function useSelectionBehavior<T>(\n modelValue: Ref<T | T[]>,\n props: UnwrapNestedRefs<{ multiple?: boolean, selectionBehavior?: 'toggle' | 'replace' }>,\n) {\n const firstValue = ref()\n\n const onSelectItem = (val: T, condition: (existingValue: T) => boolean) => {\n // multiple select\n if (props.multiple && Array.isArray(modelValue.value)) {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = [val]\n firstValue.value = val\n }\n else {\n const index = modelValue.value.findIndex(v => condition(v))\n if (index !== -1)\n modelValue.value.splice(index, 1)\n else\n modelValue.value.push(val)\n }\n }\n // single select\n else {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = { ...val }\n }\n else {\n if (!Array.isArray(modelValue.value) && condition(modelValue.value))\n modelValue.value = undefined as any\n else\n modelValue.value = { ...val }\n }\n }\n return modelValue.value\n }\n\n function handleMultipleReplace(intent: 'first' | 'last' | 'prev' | 'next', currentElement: HTMLElement | Element | null, getItems: () => { ref: HTMLElement, value?: any }[], options: any[]) {\n if (!firstValue?.value || !props.multiple || !Array.isArray(modelValue.value))\n return\n\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n const lastValue = collection.find(i => i.ref === currentElement)?.value\n if (!lastValue)\n return\n\n let value: T[] | null = null\n switch (intent) {\n case 'prev':\n case 'next': {\n value = findValuesBetween(options, firstValue.value, lastValue)\n break\n }\n case 'first': {\n value = findValuesBetween(options, firstValue.value, options?.[0])\n break\n }\n case 'last': {\n value = findValuesBetween(options, firstValue.value, options?.[options.length - 1])\n break\n }\n }\n\n modelValue.value = value\n }\n\n return {\n firstValue,\n onSelectItem,\n handleMultipleReplace,\n }\n}\n"],"names":[],"mappings":";;;AAGgB,SAAA,oBAAA,CACd,YACA,KACA,EAAA;AACA,EAAA,MAAM,aAAa,GAAI,EAAA;AAEvB,EAAM,MAAA,YAAA,GAAe,CAAC,GAAA,EAAQ,SAA6C,KAAA;AAEzE,IAAA,IAAI,MAAM,QAAY,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACrD,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,CAAC,GAAG,CAAA;AACvB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OAEhB,MAAA;AACH,QAAA,MAAM,QAAQ,UAAW,CAAA,KAAA,CAAM,UAAU,CAAK,CAAA,KAAA,SAAA,CAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,IAAI,KAAU,KAAA,EAAA;AACZ,UAAW,UAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAEhC,UAAW,UAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAC7B,KAGG,MAAA;AACH,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA,OAEzB,MAAA;AACH,QAAI,IAAA,CAAC,MAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAK,IAAA,SAAA,CAAU,WAAW,KAAK,CAAA;AAChE,UAAA,UAAA,CAAW,KAAQ,GAAA,SAAA;AAAA;AAEnB,UAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA;AAChC;AAEF,IAAA,OAAO,UAAW,CAAA,KAAA;AAAA,GACpB;AAEA,EAAA,SAAS,qBAAsB,CAAA,MAAA,EAA4C,cAA8C,EAAA,QAAA,EAAqD,OAAgB,EAAA;AAC5L,IAAI,IAAA,CAAC,UAAY,EAAA,KAAA,IAAS,CAAC,KAAA,CAAM,YAAY,CAAC,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAC1E,MAAA;AAEF,IAAM,MAAA,UAAA,GAAa,UAAW,CAAA,MAAA,CAAO,OAAK,CAAE,CAAA,GAAA,CAAI,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAA;AACvE,IAAA,MAAM,YAAY,UAAW,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,GAAA,KAAQ,cAAc,CAAG,EAAA,KAAA;AAClE,IAAA,IAAI,CAAC,SAAA;AACH,MAAA;AAEF,IAAA,IAAI,KAAoB,GAAA,IAAA;AACxB,IAAA,QAAQ,MAAQ;AAAA,MACd,KAAK,MAAA;AAAA,MACL,KAAK,MAAQ,EAAA;AACX,QAAA,KAAA,GAAQ,iBAAkB,CAAA,OAAA,EAAS,UAAW,CAAA,KAAA,EAAO,SAAS,CAAA;AAC9D,QAAA;AAAA;AACF,MACA,KAAK,OAAS,EAAA;AACZ,QAAA,KAAA,GAAQ,kBAAkB,OAAS,EAAA,UAAA,CAAW,KAAO,EAAA,OAAA,GAAU,CAAC,CAAC,CAAA;AACjE,QAAA;AAAA;AACF,MACA,KAAK,MAAQ,EAAA;AACX,QAAQ,KAAA,GAAA,iBAAA,CAAkB,SAAS,UAAW,CAAA,KAAA,EAAO,UAAU,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA;AAClF,QAAA;AAAA;AACF;AAGF,IAAA,UAAA,CAAW,KAAQ,GAAA,KAAA;AAAA;AAGrB,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSelectionBehavior.js","sources":["../../src/shared/useSelectionBehavior.ts"],"sourcesContent":["import { type Ref, type UnwrapNestedRefs, ref } from 'vue'\nimport { findValuesBetween } from './arrays'\n\nexport function useSelectionBehavior<T>(\n modelValue: Ref<T | T[]>,\n props: UnwrapNestedRefs<{ multiple?: boolean, selectionBehavior?: 'toggle' | 'replace' }>,\n) {\n const firstValue = ref()\n\n const onSelectItem = (val: T, condition: (existingValue: T) => boolean) => {\n // multiple select\n if (props.multiple && Array.isArray(modelValue.value)) {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = [val]\n firstValue.value = val\n }\n else {\n const index = modelValue.value.findIndex(v => condition(v))\n if (index !== -1)\n modelValue.value.splice(index, 1)\n else\n modelValue.value.push(val)\n }\n }\n // single select\n else {\n if (props.selectionBehavior === 'replace') {\n modelValue.value = { ...val }\n }\n else {\n if (!Array.isArray(modelValue.value) && condition(modelValue.value))\n modelValue.value = undefined as any\n else\n modelValue.value = { ...val }\n }\n }\n return modelValue.value\n }\n\n function handleMultipleReplace(intent: 'first' | 'last' | 'prev' | 'next', currentElement: HTMLElement | Element | null, getItems: () => { ref: HTMLElement, value?: any }[], options: any[]) {\n if (!firstValue?.value || !props.multiple || !Array.isArray(modelValue.value))\n return\n\n const collection = getItems().filter(i => i.ref.dataset.disabled !== '')\n const lastValue = collection.find(i => i.ref === currentElement)?.value\n if (!lastValue)\n return\n\n let value: T[] | null = null\n switch (intent) {\n case 'prev':\n case 'next': {\n value = findValuesBetween(options, firstValue.value, lastValue)\n break\n }\n case 'first': {\n value = findValuesBetween(options, firstValue.value, options?.[0])\n break\n }\n case 'last': {\n value = findValuesBetween(options, firstValue.value, options?.[options.length - 1])\n break\n }\n }\n\n modelValue.value = value\n }\n\n return {\n firstValue,\n onSelectItem,\n handleMultipleReplace,\n }\n}\n"],"names":[],"mappings":";;;AAGgB,SAAA,oBAAA,CACd,YACA,KACA,EAAA;AACA,EAAA,MAAM,aAAa,GAAI,EAAA;AAEvB,EAAM,MAAA,YAAA,GAAe,CAAC,GAAA,EAAQ,SAA6C,KAAA;AAEzE,IAAA,IAAI,MAAM,QAAY,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACrD,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,CAAC,GAAG,CAAA;AACvB,QAAA,UAAA,CAAW,KAAQ,GAAA,GAAA;AAAA,OAEhB,MAAA;AACH,QAAA,MAAM,QAAQ,UAAW,CAAA,KAAA,CAAM,UAAU,CAAK,CAAA,KAAA,SAAA,CAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,IAAI,KAAU,KAAA,EAAA;AACZ,UAAW,UAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAEhC,UAAW,UAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAC7B,KAGG,MAAA;AACH,MAAI,IAAA,KAAA,CAAM,sBAAsB,SAAW,EAAA;AACzC,QAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA,OAEzB,MAAA;AACH,QAAI,IAAA,CAAC,MAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAK,IAAA,SAAA,CAAU,WAAW,KAAK,CAAA;AAChE,UAAA,UAAA,CAAW,KAAQ,GAAA,MAAA;AAAA;AAEnB,UAAW,UAAA,CAAA,KAAA,GAAQ,EAAE,GAAG,GAAI,EAAA;AAAA;AAChC;AAEF,IAAA,OAAO,UAAW,CAAA,KAAA;AAAA,GACpB;AAEA,EAAA,SAAS,qBAAsB,CAAA,MAAA,EAA4C,cAA8C,EAAA,QAAA,EAAqD,OAAgB,EAAA;AAC5L,IAAI,IAAA,CAAC,UAAY,EAAA,KAAA,IAAS,CAAC,KAAA,CAAM,YAAY,CAAC,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAC1E,MAAA;AAEF,IAAM,MAAA,UAAA,GAAa,UAAW,CAAA,MAAA,CAAO,OAAK,CAAE,CAAA,GAAA,CAAI,OAAQ,CAAA,QAAA,KAAa,EAAE,CAAA;AACvE,IAAA,MAAM,YAAY,UAAW,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,GAAA,KAAQ,cAAc,CAAG,EAAA,KAAA;AAClE,IAAA,IAAI,CAAC,SAAA;AACH,MAAA;AAEF,IAAA,IAAI,KAAoB,GAAA,IAAA;AACxB,IAAA,QAAQ,MAAQ;AAAA,MACd,KAAK,MAAA;AAAA,MACL,KAAK,MAAQ,EAAA;AACX,QAAA,KAAA,GAAQ,iBAAkB,CAAA,OAAA,EAAS,UAAW,CAAA,KAAA,EAAO,SAAS,CAAA;AAC9D,QAAA;AAAA;AACF,MACA,KAAK,OAAS,EAAA;AACZ,QAAA,KAAA,GAAQ,kBAAkB,OAAS,EAAA,UAAA,CAAW,KAAO,EAAA,OAAA,GAAU,CAAC,CAAC,CAAA;AACjE,QAAA;AAAA;AACF,MACA,KAAK,MAAQ,EAAA;AACX,QAAQ,KAAA,GAAA,iBAAA,CAAkB,SAAS,UAAW,CAAA,KAAA,EAAO,UAAU,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA;AAClF,QAAA;AAAA;AACF;AAGF,IAAA,UAAA,CAAW,KAAQ,GAAA,KAAA;AAAA;AAGrB,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -7,7 +7,7 @@ const shared_isValueEqualOrExist = require('./isValueEqualOrExist.cjs');
7
7
 
8
8
  function validateProps({ type, defaultValue, modelValue }) {
9
9
  const value = modelValue || defaultValue;
10
- const canTypeBeInferred = modelValue !== undefined || defaultValue !== undefined;
10
+ const canTypeBeInferred = modelValue !== void 0 || defaultValue !== void 0;
11
11
  if (canTypeBeInferred)
12
12
  return Array.isArray(value) ? "multiple" : "single";
13
13
  else
@@ -19,20 +19,20 @@ function getDefaultType({ type, defaultValue, modelValue }) {
19
19
  return validateProps({ type, defaultValue, modelValue });
20
20
  }
21
21
  function getDefaultValue({ type, defaultValue }) {
22
- if (defaultValue !== undefined)
22
+ if (defaultValue !== void 0)
23
23
  return defaultValue;
24
- return type === "single" ? undefined : [];
24
+ return type === "single" ? void 0 : [];
25
25
  }
26
26
  function useSingleOrMultipleValue(props, emits) {
27
27
  const type = vue.computed(() => getDefaultType(props));
28
28
  const modelValue = core.useVModel(props, "modelValue", emits, {
29
29
  defaultValue: getDefaultValue(props),
30
- passive: props.modelValue === undefined,
30
+ passive: props.modelValue === void 0,
31
31
  deep: true
32
32
  });
33
33
  function changeModelValue(value) {
34
34
  if (type.value === "single") {
35
- modelValue.value = ohash.isEqual(value, modelValue.value) ? undefined : value;
35
+ modelValue.value = ohash.isEqual(value, modelValue.value) ? void 0 : value;
36
36
  } else {
37
37
  const modelValueArray = Array.isArray(modelValue.value) ? [...modelValue.value || []] : [modelValue.value].filter(Boolean);
38
38
  if (shared_isValueEqualOrExist.isValueEqualOrExist(modelValueArray, value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"useSingleOrMultipleValue.cjs","sources":["../../src/shared/useSingleOrMultipleValue.ts"],"sourcesContent":["import { useVModel } from '@vueuse/core'\nimport { type Ref, computed } from 'vue'\nimport type { AcceptableValue, SingleOrMultipleProps } from './types'\nimport { isEqual } from 'ohash'\nimport { isValueEqualOrExist } from './isValueEqualOrExist'\n\n/**\n * Validates the props and it makes sure that the types are coherent with each other\n *\n * 1. If type, defaultValue, and modelValue are all undefined, throw an error.\n * 2. If modelValue and defaultValue are defined and not of the same type, throw an error.\n * 3. If type is defined:\n * a. If type is 'single' and either modelValue or defaultValue is an array, log an error and return 'multiple'.\n * b. If type is 'multiple' and neither modelValue nor defaultValue is an array, log an error and return 'single'.\n * 4. Return 'multiple' if modelValue is an array, else return 'single'.\n */\nfunction validateProps({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n const value = modelValue || defaultValue\n const canTypeBeInferred = modelValue !== undefined || defaultValue !== undefined\n\n if (canTypeBeInferred)\n return Array.isArray(value) ? 'multiple' : 'single'\n else\n return type ?? 'single' // always fallback to `single`\n}\n\nfunction getDefaultType({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n if (type)\n return type\n\n return validateProps({ type, defaultValue, modelValue })\n}\n\nfunction getDefaultValue({ type, defaultValue }: SingleOrMultipleProps) {\n if (defaultValue !== undefined)\n return defaultValue\n\n return (type === 'single') ? undefined : []\n}\n\nexport function useSingleOrMultipleValue<P extends SingleOrMultipleProps, Name extends string>(\n props: P,\n emits: (name: Name, ...args: any[]) => void,\n) {\n const type = computed(() => getDefaultType(props))\n const modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: getDefaultValue(props),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n }) as Ref<AcceptableValue | AcceptableValue[] | undefined>\n\n function changeModelValue(value: AcceptableValue) {\n if (type.value === 'single') {\n modelValue.value = isEqual(value, modelValue.value) ? undefined : value\n }\n else {\n const modelValueArray = Array.isArray(modelValue.value) ? [...(modelValue.value as AcceptableValue[] || [])] : [modelValue.value].filter(Boolean)\n if (isValueEqualOrExist(modelValueArray, value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(value)\n }\n modelValue.value = modelValueArray\n }\n }\n\n const isSingle = computed(() => type.value === 'single')\n\n return {\n modelValue,\n changeModelValue,\n isSingle,\n }\n}\n"],"names":["computed","useVModel","isEqual","isValueEqualOrExist"],"mappings":";;;;;;;AAgBA,SAAS,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AAChF,EAAA,MAAM,QAAQ,UAAc,IAAA,YAAA;AAC5B,EAAM,MAAA,iBAAA,GAAoB,UAAe,KAAA,SAAA,IAAa,YAAiB,KAAA,SAAA;AAEvE,EAAI,IAAA,iBAAA;AACF,IAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,UAAa,GAAA,QAAA;AAAA;AAE3C,IAAA,OAAO,IAAQ,IAAA,QAAA;AACnB;AAEA,SAAS,cAAe,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AACjF,EAAI,IAAA,IAAA;AACF,IAAO,OAAA,IAAA;AAET,EAAA,OAAO,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAY,CAAA;AACzD;AAEA,SAAS,eAAgB,CAAA,EAAE,IAAM,EAAA,YAAA,EAAuC,EAAA;AACtE,EAAA,IAAI,YAAiB,KAAA,SAAA;AACnB,IAAO,OAAA,YAAA;AAET,EAAQ,OAAA,IAAA,KAAS,QAAY,GAAA,SAAA,GAAY,EAAC;AAC5C;AAEgB,SAAA,wBAAA,CACd,OACA,KACA,EAAA;AACA,EAAA,MAAM,IAAO,GAAAA,YAAA,CAAS,MAAM,cAAA,CAAe,KAAK,CAAC,CAAA;AACjD,EAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,IACvD,YAAA,EAAc,gBAAgB,KAAK,CAAA;AAAA,IACnC,OAAA,EAAU,MAAM,UAAe,KAAA,SAAA;AAAA,IAC/B,IAAM,EAAA;AAAA,GACP,CAAA;AAED,EAAA,SAAS,iBAAiB,KAAwB,EAAA;AAChD,IAAI,IAAA,IAAA,CAAK,UAAU,QAAU,EAAA;AAC3B,MAAA,UAAA,CAAW,QAAQC,aAAQ,CAAA,KAAA,EAAO,UAAW,CAAA,KAAK,IAAI,SAAY,GAAA,KAAA;AAAA,KAE/D,MAAA;AACH,MAAA,MAAM,kBAAkB,KAAM,CAAA,OAAA,CAAQ,WAAW,KAAK,CAAA,GAAI,CAAC,GAAI,UAAA,CAAW,KAA8B,IAAA,EAAG,CAAI,GAAA,CAAC,WAAW,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAChJ,MAAI,IAAAC,8CAAA,CAAoB,eAAiB,EAAA,KAAK,CAAG,EAAA;AAC/C,QAAA,MAAM,QAAQ,eAAgB,CAAA,SAAA,CAAU,OAAKD,aAAQ,CAAA,CAAA,EAAG,KAAK,CAAC,CAAA;AAC9D,QAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,OAE5B,MAAA;AACH,QAAA,eAAA,CAAgB,KAAK,KAAK,CAAA;AAAA;AAE5B,MAAA,UAAA,CAAW,KAAQ,GAAA,eAAA;AAAA;AACrB;AAGF,EAAA,MAAM,QAAW,GAAAF,YAAA,CAAS,MAAM,IAAA,CAAK,UAAU,QAAQ,CAAA;AAEvD,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSingleOrMultipleValue.cjs","sources":["../../src/shared/useSingleOrMultipleValue.ts"],"sourcesContent":["import { useVModel } from '@vueuse/core'\nimport { type Ref, computed } from 'vue'\nimport type { AcceptableValue, SingleOrMultipleProps } from './types'\nimport { isEqual } from 'ohash'\nimport { isValueEqualOrExist } from './isValueEqualOrExist'\n\n/**\n * Validates the props and it makes sure that the types are coherent with each other\n *\n * 1. If type, defaultValue, and modelValue are all undefined, throw an error.\n * 2. If modelValue and defaultValue are defined and not of the same type, throw an error.\n * 3. If type is defined:\n * a. If type is 'single' and either modelValue or defaultValue is an array, log an error and return 'multiple'.\n * b. If type is 'multiple' and neither modelValue nor defaultValue is an array, log an error and return 'single'.\n * 4. Return 'multiple' if modelValue is an array, else return 'single'.\n */\nfunction validateProps({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n const value = modelValue || defaultValue\n const canTypeBeInferred = modelValue !== undefined || defaultValue !== undefined\n\n if (canTypeBeInferred)\n return Array.isArray(value) ? 'multiple' : 'single'\n else\n return type ?? 'single' // always fallback to `single`\n}\n\nfunction getDefaultType({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n if (type)\n return type\n\n return validateProps({ type, defaultValue, modelValue })\n}\n\nfunction getDefaultValue({ type, defaultValue }: SingleOrMultipleProps) {\n if (defaultValue !== undefined)\n return defaultValue\n\n return (type === 'single') ? undefined : []\n}\n\nexport function useSingleOrMultipleValue<P extends SingleOrMultipleProps, Name extends string>(\n props: P,\n emits: (name: Name, ...args: any[]) => void,\n) {\n const type = computed(() => getDefaultType(props))\n const modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: getDefaultValue(props),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n }) as Ref<AcceptableValue | AcceptableValue[] | undefined>\n\n function changeModelValue(value: AcceptableValue) {\n if (type.value === 'single') {\n modelValue.value = isEqual(value, modelValue.value) ? undefined : value\n }\n else {\n const modelValueArray = Array.isArray(modelValue.value) ? [...(modelValue.value as AcceptableValue[] || [])] : [modelValue.value].filter(Boolean)\n if (isValueEqualOrExist(modelValueArray, value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(value)\n }\n modelValue.value = modelValueArray\n }\n }\n\n const isSingle = computed(() => type.value === 'single')\n\n return {\n modelValue,\n changeModelValue,\n isSingle,\n }\n}\n"],"names":["computed","useVModel","isEqual","isValueEqualOrExist"],"mappings":";;;;;;;AAgBA,SAAS,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AAChF,EAAA,MAAM,QAAQ,UAAc,IAAA,YAAA;AAC5B,EAAM,MAAA,iBAAA,GAAoB,UAAe,KAAA,MAAA,IAAa,YAAiB,KAAA,MAAA;AAEvE,EAAI,IAAA,iBAAA;AACF,IAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,UAAa,GAAA,QAAA;AAAA;AAE3C,IAAA,OAAO,IAAQ,IAAA,QAAA;AACnB;AAEA,SAAS,cAAe,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AACjF,EAAI,IAAA,IAAA;AACF,IAAO,OAAA,IAAA;AAET,EAAA,OAAO,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAY,CAAA;AACzD;AAEA,SAAS,eAAgB,CAAA,EAAE,IAAM,EAAA,YAAA,EAAuC,EAAA;AACtE,EAAA,IAAI,YAAiB,KAAA,MAAA;AACnB,IAAO,OAAA,YAAA;AAET,EAAQ,OAAA,IAAA,KAAS,QAAY,GAAA,MAAA,GAAY,EAAC;AAC5C;AAEgB,SAAA,wBAAA,CACd,OACA,KACA,EAAA;AACA,EAAA,MAAM,IAAO,GAAAA,YAAA,CAAS,MAAM,cAAA,CAAe,KAAK,CAAC,CAAA;AACjD,EAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,IACvD,YAAA,EAAc,gBAAgB,KAAK,CAAA;AAAA,IACnC,OAAA,EAAU,MAAM,UAAe,KAAA,MAAA;AAAA,IAC/B,IAAM,EAAA;AAAA,GACP,CAAA;AAED,EAAA,SAAS,iBAAiB,KAAwB,EAAA;AAChD,IAAI,IAAA,IAAA,CAAK,UAAU,QAAU,EAAA;AAC3B,MAAA,UAAA,CAAW,QAAQC,aAAQ,CAAA,KAAA,EAAO,UAAW,CAAA,KAAK,IAAI,MAAY,GAAA,KAAA;AAAA,KAE/D,MAAA;AACH,MAAA,MAAM,kBAAkB,KAAM,CAAA,OAAA,CAAQ,WAAW,KAAK,CAAA,GAAI,CAAC,GAAI,UAAA,CAAW,KAA8B,IAAA,EAAG,CAAI,GAAA,CAAC,WAAW,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAChJ,MAAI,IAAAC,8CAAA,CAAoB,eAAiB,EAAA,KAAK,CAAG,EAAA;AAC/C,QAAA,MAAM,QAAQ,eAAgB,CAAA,SAAA,CAAU,OAAKD,aAAQ,CAAA,CAAA,EAAG,KAAK,CAAC,CAAA;AAC9D,QAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,OAE5B,MAAA;AACH,QAAA,eAAA,CAAgB,KAAK,KAAK,CAAA;AAAA;AAE5B,MAAA,UAAA,CAAW,KAAQ,GAAA,eAAA;AAAA;AACrB;AAGF,EAAA,MAAM,QAAW,GAAAF,YAAA,CAAS,MAAM,IAAA,CAAK,UAAU,QAAQ,CAAA;AAEvD,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -5,7 +5,7 @@ import { i as isValueEqualOrExist } from './isValueEqualOrExist.js';
5
5
 
6
6
  function validateProps({ type, defaultValue, modelValue }) {
7
7
  const value = modelValue || defaultValue;
8
- const canTypeBeInferred = modelValue !== undefined || defaultValue !== undefined;
8
+ const canTypeBeInferred = modelValue !== void 0 || defaultValue !== void 0;
9
9
  if (canTypeBeInferred)
10
10
  return Array.isArray(value) ? "multiple" : "single";
11
11
  else
@@ -17,20 +17,20 @@ function getDefaultType({ type, defaultValue, modelValue }) {
17
17
  return validateProps({ type, defaultValue, modelValue });
18
18
  }
19
19
  function getDefaultValue({ type, defaultValue }) {
20
- if (defaultValue !== undefined)
20
+ if (defaultValue !== void 0)
21
21
  return defaultValue;
22
- return type === "single" ? undefined : [];
22
+ return type === "single" ? void 0 : [];
23
23
  }
24
24
  function useSingleOrMultipleValue(props, emits) {
25
25
  const type = computed(() => getDefaultType(props));
26
26
  const modelValue = useVModel(props, "modelValue", emits, {
27
27
  defaultValue: getDefaultValue(props),
28
- passive: props.modelValue === undefined,
28
+ passive: props.modelValue === void 0,
29
29
  deep: true
30
30
  });
31
31
  function changeModelValue(value) {
32
32
  if (type.value === "single") {
33
- modelValue.value = isEqual(value, modelValue.value) ? undefined : value;
33
+ modelValue.value = isEqual(value, modelValue.value) ? void 0 : value;
34
34
  } else {
35
35
  const modelValueArray = Array.isArray(modelValue.value) ? [...modelValue.value || []] : [modelValue.value].filter(Boolean);
36
36
  if (isValueEqualOrExist(modelValueArray, value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"useSingleOrMultipleValue.js","sources":["../../src/shared/useSingleOrMultipleValue.ts"],"sourcesContent":["import { useVModel } from '@vueuse/core'\nimport { type Ref, computed } from 'vue'\nimport type { AcceptableValue, SingleOrMultipleProps } from './types'\nimport { isEqual } from 'ohash'\nimport { isValueEqualOrExist } from './isValueEqualOrExist'\n\n/**\n * Validates the props and it makes sure that the types are coherent with each other\n *\n * 1. If type, defaultValue, and modelValue are all undefined, throw an error.\n * 2. If modelValue and defaultValue are defined and not of the same type, throw an error.\n * 3. If type is defined:\n * a. If type is 'single' and either modelValue or defaultValue is an array, log an error and return 'multiple'.\n * b. If type is 'multiple' and neither modelValue nor defaultValue is an array, log an error and return 'single'.\n * 4. Return 'multiple' if modelValue is an array, else return 'single'.\n */\nfunction validateProps({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n const value = modelValue || defaultValue\n const canTypeBeInferred = modelValue !== undefined || defaultValue !== undefined\n\n if (canTypeBeInferred)\n return Array.isArray(value) ? 'multiple' : 'single'\n else\n return type ?? 'single' // always fallback to `single`\n}\n\nfunction getDefaultType({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n if (type)\n return type\n\n return validateProps({ type, defaultValue, modelValue })\n}\n\nfunction getDefaultValue({ type, defaultValue }: SingleOrMultipleProps) {\n if (defaultValue !== undefined)\n return defaultValue\n\n return (type === 'single') ? undefined : []\n}\n\nexport function useSingleOrMultipleValue<P extends SingleOrMultipleProps, Name extends string>(\n props: P,\n emits: (name: Name, ...args: any[]) => void,\n) {\n const type = computed(() => getDefaultType(props))\n const modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: getDefaultValue(props),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n }) as Ref<AcceptableValue | AcceptableValue[] | undefined>\n\n function changeModelValue(value: AcceptableValue) {\n if (type.value === 'single') {\n modelValue.value = isEqual(value, modelValue.value) ? undefined : value\n }\n else {\n const modelValueArray = Array.isArray(modelValue.value) ? [...(modelValue.value as AcceptableValue[] || [])] : [modelValue.value].filter(Boolean)\n if (isValueEqualOrExist(modelValueArray, value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(value)\n }\n modelValue.value = modelValueArray\n }\n }\n\n const isSingle = computed(() => type.value === 'single')\n\n return {\n modelValue,\n changeModelValue,\n isSingle,\n }\n}\n"],"names":[],"mappings":";;;;;AAgBA,SAAS,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AAChF,EAAA,MAAM,QAAQ,UAAc,IAAA,YAAA;AAC5B,EAAM,MAAA,iBAAA,GAAoB,UAAe,KAAA,SAAA,IAAa,YAAiB,KAAA,SAAA;AAEvE,EAAI,IAAA,iBAAA;AACF,IAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,UAAa,GAAA,QAAA;AAAA;AAE3C,IAAA,OAAO,IAAQ,IAAA,QAAA;AACnB;AAEA,SAAS,cAAe,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AACjF,EAAI,IAAA,IAAA;AACF,IAAO,OAAA,IAAA;AAET,EAAA,OAAO,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAY,CAAA;AACzD;AAEA,SAAS,eAAgB,CAAA,EAAE,IAAM,EAAA,YAAA,EAAuC,EAAA;AACtE,EAAA,IAAI,YAAiB,KAAA,SAAA;AACnB,IAAO,OAAA,YAAA;AAET,EAAQ,OAAA,IAAA,KAAS,QAAY,GAAA,SAAA,GAAY,EAAC;AAC5C;AAEgB,SAAA,wBAAA,CACd,OACA,KACA,EAAA;AACA,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,MAAM,cAAA,CAAe,KAAK,CAAC,CAAA;AACjD,EAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,IACvD,YAAA,EAAc,gBAAgB,KAAK,CAAA;AAAA,IACnC,OAAA,EAAU,MAAM,UAAe,KAAA,SAAA;AAAA,IAC/B,IAAM,EAAA;AAAA,GACP,CAAA;AAED,EAAA,SAAS,iBAAiB,KAAwB,EAAA;AAChD,IAAI,IAAA,IAAA,CAAK,UAAU,QAAU,EAAA;AAC3B,MAAA,UAAA,CAAW,QAAQ,OAAQ,CAAA,KAAA,EAAO,UAAW,CAAA,KAAK,IAAI,SAAY,GAAA,KAAA;AAAA,KAE/D,MAAA;AACH,MAAA,MAAM,kBAAkB,KAAM,CAAA,OAAA,CAAQ,WAAW,KAAK,CAAA,GAAI,CAAC,GAAI,UAAA,CAAW,KAA8B,IAAA,EAAG,CAAI,GAAA,CAAC,WAAW,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAChJ,MAAI,IAAA,mBAAA,CAAoB,eAAiB,EAAA,KAAK,CAAG,EAAA;AAC/C,QAAA,MAAM,QAAQ,eAAgB,CAAA,SAAA,CAAU,OAAK,OAAQ,CAAA,CAAA,EAAG,KAAK,CAAC,CAAA;AAC9D,QAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,OAE5B,MAAA;AACH,QAAA,eAAA,CAAgB,KAAK,KAAK,CAAA;AAAA;AAE5B,MAAA,UAAA,CAAW,KAAQ,GAAA,eAAA;AAAA;AACrB;AAGF,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,IAAA,CAAK,UAAU,QAAQ,CAAA;AAEvD,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSingleOrMultipleValue.js","sources":["../../src/shared/useSingleOrMultipleValue.ts"],"sourcesContent":["import { useVModel } from '@vueuse/core'\nimport { type Ref, computed } from 'vue'\nimport type { AcceptableValue, SingleOrMultipleProps } from './types'\nimport { isEqual } from 'ohash'\nimport { isValueEqualOrExist } from './isValueEqualOrExist'\n\n/**\n * Validates the props and it makes sure that the types are coherent with each other\n *\n * 1. If type, defaultValue, and modelValue are all undefined, throw an error.\n * 2. If modelValue and defaultValue are defined and not of the same type, throw an error.\n * 3. If type is defined:\n * a. If type is 'single' and either modelValue or defaultValue is an array, log an error and return 'multiple'.\n * b. If type is 'multiple' and neither modelValue nor defaultValue is an array, log an error and return 'single'.\n * 4. Return 'multiple' if modelValue is an array, else return 'single'.\n */\nfunction validateProps({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n const value = modelValue || defaultValue\n const canTypeBeInferred = modelValue !== undefined || defaultValue !== undefined\n\n if (canTypeBeInferred)\n return Array.isArray(value) ? 'multiple' : 'single'\n else\n return type ?? 'single' // always fallback to `single`\n}\n\nfunction getDefaultType({ type, defaultValue, modelValue }: SingleOrMultipleProps) {\n if (type)\n return type\n\n return validateProps({ type, defaultValue, modelValue })\n}\n\nfunction getDefaultValue({ type, defaultValue }: SingleOrMultipleProps) {\n if (defaultValue !== undefined)\n return defaultValue\n\n return (type === 'single') ? undefined : []\n}\n\nexport function useSingleOrMultipleValue<P extends SingleOrMultipleProps, Name extends string>(\n props: P,\n emits: (name: Name, ...args: any[]) => void,\n) {\n const type = computed(() => getDefaultType(props))\n const modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: getDefaultValue(props),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n }) as Ref<AcceptableValue | AcceptableValue[] | undefined>\n\n function changeModelValue(value: AcceptableValue) {\n if (type.value === 'single') {\n modelValue.value = isEqual(value, modelValue.value) ? undefined : value\n }\n else {\n const modelValueArray = Array.isArray(modelValue.value) ? [...(modelValue.value as AcceptableValue[] || [])] : [modelValue.value].filter(Boolean)\n if (isValueEqualOrExist(modelValueArray, value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(value)\n }\n modelValue.value = modelValueArray\n }\n }\n\n const isSingle = computed(() => type.value === 'single')\n\n return {\n modelValue,\n changeModelValue,\n isSingle,\n }\n}\n"],"names":[],"mappings":";;;;;AAgBA,SAAS,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AAChF,EAAA,MAAM,QAAQ,UAAc,IAAA,YAAA;AAC5B,EAAM,MAAA,iBAAA,GAAoB,UAAe,KAAA,MAAA,IAAa,YAAiB,KAAA,MAAA;AAEvE,EAAI,IAAA,iBAAA;AACF,IAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,UAAa,GAAA,QAAA;AAAA;AAE3C,IAAA,OAAO,IAAQ,IAAA,QAAA;AACnB;AAEA,SAAS,cAAe,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAqC,EAAA;AACjF,EAAI,IAAA,IAAA;AACF,IAAO,OAAA,IAAA;AAET,EAAA,OAAO,aAAc,CAAA,EAAE,IAAM,EAAA,YAAA,EAAc,YAAY,CAAA;AACzD;AAEA,SAAS,eAAgB,CAAA,EAAE,IAAM,EAAA,YAAA,EAAuC,EAAA;AACtE,EAAA,IAAI,YAAiB,KAAA,MAAA;AACnB,IAAO,OAAA,YAAA;AAET,EAAQ,OAAA,IAAA,KAAS,QAAY,GAAA,MAAA,GAAY,EAAC;AAC5C;AAEgB,SAAA,wBAAA,CACd,OACA,KACA,EAAA;AACA,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,MAAM,cAAA,CAAe,KAAK,CAAC,CAAA;AACjD,EAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,IACvD,YAAA,EAAc,gBAAgB,KAAK,CAAA;AAAA,IACnC,OAAA,EAAU,MAAM,UAAe,KAAA,MAAA;AAAA,IAC/B,IAAM,EAAA;AAAA,GACP,CAAA;AAED,EAAA,SAAS,iBAAiB,KAAwB,EAAA;AAChD,IAAI,IAAA,IAAA,CAAK,UAAU,QAAU,EAAA;AAC3B,MAAA,UAAA,CAAW,QAAQ,OAAQ,CAAA,KAAA,EAAO,UAAW,CAAA,KAAK,IAAI,MAAY,GAAA,KAAA;AAAA,KAE/D,MAAA;AACH,MAAA,MAAM,kBAAkB,KAAM,CAAA,OAAA,CAAQ,WAAW,KAAK,CAAA,GAAI,CAAC,GAAI,UAAA,CAAW,KAA8B,IAAA,EAAG,CAAI,GAAA,CAAC,WAAW,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAChJ,MAAI,IAAA,mBAAA,CAAoB,eAAiB,EAAA,KAAK,CAAG,EAAA;AAC/C,QAAA,MAAM,QAAQ,eAAgB,CAAA,SAAA,CAAU,OAAK,OAAQ,CAAA,CAAA,EAAG,KAAK,CAAC,CAAA;AAC9D,QAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,OAE5B,MAAA;AACH,QAAA,eAAA,CAAgB,KAAK,KAAK,CAAA;AAAA;AAE5B,MAAA,UAAA,CAAW,KAAQ,GAAA,eAAA;AAAA;AACrB;AAGF,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,MAAM,IAAA,CAAK,UAAU,QAAQ,CAAA;AAEvD,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -33,7 +33,7 @@ function useSize(element) {
33
33
  resizeObserver.observe(el, { box: "border-box" });
34
34
  return () => resizeObserver.unobserve(el);
35
35
  } else {
36
- size.value = undefined;
36
+ size.value = void 0;
37
37
  }
38
38
  });
39
39
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useSize.cjs","sources":["../../src/shared/useSize.ts"],"sourcesContent":["import { type MaybeElementRef, unrefElement } from '@vueuse/core'\nimport { computed, onMounted, ref } from 'vue'\n\nexport function useSize(element: MaybeElementRef) {\n const size = ref<{ width: number, height: number }>()\n const width = computed(() => size.value?.width ?? 0)\n const height = computed(() => size.value?.height ?? 0)\n\n onMounted(() => {\n const el = unrefElement(element) as HTMLElement\n if (el) {\n // provide size as early as possible\n size.value = { width: el.offsetWidth, height: el.offsetHeight }\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries))\n return\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length)\n return\n\n const entry = entries[0]\n let width: number\n let height: number\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry.borderBoxSize\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry\n width = borderSize.inlineSize\n height = borderSize.blockSize\n }\n else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = el.offsetWidth\n height = el.offsetHeight\n }\n\n // temporary disable width/height from resize observer. borderSizeEntry seems to be incorrect\n size.value = { width, height }\n })\n\n resizeObserver.observe(el, { box: 'border-box' })\n\n return () => resizeObserver.unobserve(el)\n }\n else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n size.value = undefined\n }\n })\n\n return {\n width,\n height,\n }\n}\n"],"names":["ref","computed","onMounted","unrefElement","width","height"],"mappings":";;;;;AAGO,SAAS,QAAQ,OAA0B,EAAA;AAChD,EAAA,MAAM,OAAOA,OAAuC,EAAA;AACpD,EAAA,MAAM,QAAQC,YAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,SAAS,CAAC,CAAA;AACnD,EAAA,MAAM,SAASA,YAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,UAAU,CAAC,CAAA;AAErD,EAAAC,aAAA,CAAU,MAAM;AACd,IAAM,MAAA,EAAA,GAAKC,kBAAa,OAAO,CAAA;AAC/B,IAAA,IAAI,EAAI,EAAA;AAEN,MAAA,IAAA,CAAK,QAAQ,EAAE,KAAA,EAAO,GAAG,WAAa,EAAA,MAAA,EAAQ,GAAG,YAAa,EAAA;AAE9D,MAAA,MAAM,cAAiB,GAAA,IAAI,cAAe,CAAA,CAAC,OAAY,KAAA;AACrD,QAAI,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA;AACxB,UAAA;AAIF,QAAA,IAAI,CAAC,OAAQ,CAAA,MAAA;AACX,UAAA;AAEF,QAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAIC,IAAAA,MAAAA;AACJ,QAAIC,IAAAA,OAAAA;AAEJ,QAAA,IAAI,mBAAmB,KAAO,EAAA;AAC5B,UAAA,MAAM,kBAAkB,KAAM,CAAA,aAAA;AAE9B,UAAA,MAAM,aAAa,KAAM,CAAA,OAAA,CAAQ,eAAe,CAC5C,GAAA,eAAA,CAAgB,CAAC,CACjB,GAAA,eAAA;AACJ,UAAAD,SAAQ,UAAW,CAAA,UAAA;AACnB,UAAAC,UAAS,UAAW,CAAA,SAAA;AAAA,SAEjB,MAAA;AAGH,UAAAD,SAAQ,EAAG,CAAA,WAAA;AACX,UAAAC,UAAS,EAAG,CAAA,YAAA;AAAA;AAId,QAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,KAAAD,EAAAA,MAAAA,EAAO,QAAAC,OAAO,EAAA;AAAA,OAC9B,CAAA;AAED,MAAA,cAAA,CAAe,OAAQ,CAAA,EAAA,EAAI,EAAE,GAAA,EAAK,cAAc,CAAA;AAEhD,MAAO,OAAA,MAAM,cAAe,CAAA,SAAA,CAAU,EAAE,CAAA;AAAA,KAErC,MAAA;AAGH,MAAA,IAAA,CAAK,KAAQ,GAAA,SAAA;AAAA;AACf,GACD,CAAA;AAED,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSize.cjs","sources":["../../src/shared/useSize.ts"],"sourcesContent":["import { type MaybeElementRef, unrefElement } from '@vueuse/core'\nimport { computed, onMounted, ref } from 'vue'\n\nexport function useSize(element: MaybeElementRef) {\n const size = ref<{ width: number, height: number }>()\n const width = computed(() => size.value?.width ?? 0)\n const height = computed(() => size.value?.height ?? 0)\n\n onMounted(() => {\n const el = unrefElement(element) as HTMLElement\n if (el) {\n // provide size as early as possible\n size.value = { width: el.offsetWidth, height: el.offsetHeight }\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries))\n return\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length)\n return\n\n const entry = entries[0]\n let width: number\n let height: number\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry.borderBoxSize\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry\n width = borderSize.inlineSize\n height = borderSize.blockSize\n }\n else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = el.offsetWidth\n height = el.offsetHeight\n }\n\n // temporary disable width/height from resize observer. borderSizeEntry seems to be incorrect\n size.value = { width, height }\n })\n\n resizeObserver.observe(el, { box: 'border-box' })\n\n return () => resizeObserver.unobserve(el)\n }\n else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n size.value = undefined\n }\n })\n\n return {\n width,\n height,\n }\n}\n"],"names":["ref","computed","onMounted","unrefElement","width","height"],"mappings":";;;;;AAGO,SAAS,QAAQ,OAA0B,EAAA;AAChD,EAAA,MAAM,OAAOA,OAAuC,EAAA;AACpD,EAAA,MAAM,QAAQC,YAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,SAAS,CAAC,CAAA;AACnD,EAAA,MAAM,SAASA,YAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,UAAU,CAAC,CAAA;AAErD,EAAAC,aAAA,CAAU,MAAM;AACd,IAAM,MAAA,EAAA,GAAKC,kBAAa,OAAO,CAAA;AAC/B,IAAA,IAAI,EAAI,EAAA;AAEN,MAAA,IAAA,CAAK,QAAQ,EAAE,KAAA,EAAO,GAAG,WAAa,EAAA,MAAA,EAAQ,GAAG,YAAa,EAAA;AAE9D,MAAA,MAAM,cAAiB,GAAA,IAAI,cAAe,CAAA,CAAC,OAAY,KAAA;AACrD,QAAI,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA;AACxB,UAAA;AAIF,QAAA,IAAI,CAAC,OAAQ,CAAA,MAAA;AACX,UAAA;AAEF,QAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAIC,IAAAA,MAAAA;AACJ,QAAIC,IAAAA,OAAAA;AAEJ,QAAA,IAAI,mBAAmB,KAAO,EAAA;AAC5B,UAAA,MAAM,kBAAkB,KAAM,CAAA,aAAA;AAE9B,UAAA,MAAM,aAAa,KAAM,CAAA,OAAA,CAAQ,eAAe,CAC5C,GAAA,eAAA,CAAgB,CAAC,CACjB,GAAA,eAAA;AACJ,UAAAD,SAAQ,UAAW,CAAA,UAAA;AACnB,UAAAC,UAAS,UAAW,CAAA,SAAA;AAAA,SAEjB,MAAA;AAGH,UAAAD,SAAQ,EAAG,CAAA,WAAA;AACX,UAAAC,UAAS,EAAG,CAAA,YAAA;AAAA;AAId,QAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,KAAAD,EAAAA,MAAAA,EAAO,QAAAC,OAAO,EAAA;AAAA,OAC9B,CAAA;AAED,MAAA,cAAA,CAAe,OAAQ,CAAA,EAAA,EAAI,EAAE,GAAA,EAAK,cAAc,CAAA;AAEhD,MAAO,OAAA,MAAM,cAAe,CAAA,SAAA,CAAU,EAAE,CAAA;AAAA,KAErC,MAAA;AAGH,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA;AAAA;AACf,GACD,CAAA;AAED,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -31,7 +31,7 @@ function useSize(element) {
31
31
  resizeObserver.observe(el, { box: "border-box" });
32
32
  return () => resizeObserver.unobserve(el);
33
33
  } else {
34
- size.value = undefined;
34
+ size.value = void 0;
35
35
  }
36
36
  });
37
37
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useSize.js","sources":["../../src/shared/useSize.ts"],"sourcesContent":["import { type MaybeElementRef, unrefElement } from '@vueuse/core'\nimport { computed, onMounted, ref } from 'vue'\n\nexport function useSize(element: MaybeElementRef) {\n const size = ref<{ width: number, height: number }>()\n const width = computed(() => size.value?.width ?? 0)\n const height = computed(() => size.value?.height ?? 0)\n\n onMounted(() => {\n const el = unrefElement(element) as HTMLElement\n if (el) {\n // provide size as early as possible\n size.value = { width: el.offsetWidth, height: el.offsetHeight }\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries))\n return\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length)\n return\n\n const entry = entries[0]\n let width: number\n let height: number\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry.borderBoxSize\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry\n width = borderSize.inlineSize\n height = borderSize.blockSize\n }\n else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = el.offsetWidth\n height = el.offsetHeight\n }\n\n // temporary disable width/height from resize observer. borderSizeEntry seems to be incorrect\n size.value = { width, height }\n })\n\n resizeObserver.observe(el, { box: 'border-box' })\n\n return () => resizeObserver.unobserve(el)\n }\n else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n size.value = undefined\n }\n })\n\n return {\n width,\n height,\n }\n}\n"],"names":["width","height"],"mappings":";;;AAGO,SAAS,QAAQ,OAA0B,EAAA;AAChD,EAAA,MAAM,OAAO,GAAuC,EAAA;AACpD,EAAA,MAAM,QAAQ,QAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,SAAS,CAAC,CAAA;AACnD,EAAA,MAAM,SAAS,QAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,UAAU,CAAC,CAAA;AAErD,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,EAAA,GAAK,aAAa,OAAO,CAAA;AAC/B,IAAA,IAAI,EAAI,EAAA;AAEN,MAAA,IAAA,CAAK,QAAQ,EAAE,KAAA,EAAO,GAAG,WAAa,EAAA,MAAA,EAAQ,GAAG,YAAa,EAAA;AAE9D,MAAA,MAAM,cAAiB,GAAA,IAAI,cAAe,CAAA,CAAC,OAAY,KAAA;AACrD,QAAI,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA;AACxB,UAAA;AAIF,QAAA,IAAI,CAAC,OAAQ,CAAA,MAAA;AACX,UAAA;AAEF,QAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAIA,IAAAA,MAAAA;AACJ,QAAIC,IAAAA,OAAAA;AAEJ,QAAA,IAAI,mBAAmB,KAAO,EAAA;AAC5B,UAAA,MAAM,kBAAkB,KAAM,CAAA,aAAA;AAE9B,UAAA,MAAM,aAAa,KAAM,CAAA,OAAA,CAAQ,eAAe,CAC5C,GAAA,eAAA,CAAgB,CAAC,CACjB,GAAA,eAAA;AACJ,UAAAD,SAAQ,UAAW,CAAA,UAAA;AACnB,UAAAC,UAAS,UAAW,CAAA,SAAA;AAAA,SAEjB,MAAA;AAGH,UAAAD,SAAQ,EAAG,CAAA,WAAA;AACX,UAAAC,UAAS,EAAG,CAAA,YAAA;AAAA;AAId,QAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,KAAAD,EAAAA,MAAAA,EAAO,QAAAC,OAAO,EAAA;AAAA,OAC9B,CAAA;AAED,MAAA,cAAA,CAAe,OAAQ,CAAA,EAAA,EAAI,EAAE,GAAA,EAAK,cAAc,CAAA;AAEhD,MAAO,OAAA,MAAM,cAAe,CAAA,SAAA,CAAU,EAAE,CAAA;AAAA,KAErC,MAAA;AAGH,MAAA,IAAA,CAAK,KAAQ,GAAA,SAAA;AAAA;AACf,GACD,CAAA;AAED,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSize.js","sources":["../../src/shared/useSize.ts"],"sourcesContent":["import { type MaybeElementRef, unrefElement } from '@vueuse/core'\nimport { computed, onMounted, ref } from 'vue'\n\nexport function useSize(element: MaybeElementRef) {\n const size = ref<{ width: number, height: number }>()\n const width = computed(() => size.value?.width ?? 0)\n const height = computed(() => size.value?.height ?? 0)\n\n onMounted(() => {\n const el = unrefElement(element) as HTMLElement\n if (el) {\n // provide size as early as possible\n size.value = { width: el.offsetWidth, height: el.offsetHeight }\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries))\n return\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length)\n return\n\n const entry = entries[0]\n let width: number\n let height: number\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry.borderBoxSize\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry\n width = borderSize.inlineSize\n height = borderSize.blockSize\n }\n else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = el.offsetWidth\n height = el.offsetHeight\n }\n\n // temporary disable width/height from resize observer. borderSizeEntry seems to be incorrect\n size.value = { width, height }\n })\n\n resizeObserver.observe(el, { box: 'border-box' })\n\n return () => resizeObserver.unobserve(el)\n }\n else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n size.value = undefined\n }\n })\n\n return {\n width,\n height,\n }\n}\n"],"names":["width","height"],"mappings":";;;AAGO,SAAS,QAAQ,OAA0B,EAAA;AAChD,EAAA,MAAM,OAAO,GAAuC,EAAA;AACpD,EAAA,MAAM,QAAQ,QAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,SAAS,CAAC,CAAA;AACnD,EAAA,MAAM,SAAS,QAAS,CAAA,MAAM,IAAK,CAAA,KAAA,EAAO,UAAU,CAAC,CAAA;AAErD,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,EAAA,GAAK,aAAa,OAAO,CAAA;AAC/B,IAAA,IAAI,EAAI,EAAA;AAEN,MAAA,IAAA,CAAK,QAAQ,EAAE,KAAA,EAAO,GAAG,WAAa,EAAA,MAAA,EAAQ,GAAG,YAAa,EAAA;AAE9D,MAAA,MAAM,cAAiB,GAAA,IAAI,cAAe,CAAA,CAAC,OAAY,KAAA;AACrD,QAAI,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA;AACxB,UAAA;AAIF,QAAA,IAAI,CAAC,OAAQ,CAAA,MAAA;AACX,UAAA;AAEF,QAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAIA,IAAAA,MAAAA;AACJ,QAAIC,IAAAA,OAAAA;AAEJ,QAAA,IAAI,mBAAmB,KAAO,EAAA;AAC5B,UAAA,MAAM,kBAAkB,KAAM,CAAA,aAAA;AAE9B,UAAA,MAAM,aAAa,KAAM,CAAA,OAAA,CAAQ,eAAe,CAC5C,GAAA,eAAA,CAAgB,CAAC,CACjB,GAAA,eAAA;AACJ,UAAAD,SAAQ,UAAW,CAAA,UAAA;AACnB,UAAAC,UAAS,UAAW,CAAA,SAAA;AAAA,SAEjB,MAAA;AAGH,UAAAD,SAAQ,EAAG,CAAA,WAAA;AACX,UAAAC,UAAS,EAAG,CAAA,YAAA;AAAA;AAId,QAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,KAAAD,EAAAA,MAAAA,EAAO,QAAAC,OAAO,EAAA;AAAA,OAC9B,CAAA;AAED,MAAA,cAAA,CAAe,OAAQ,CAAA,EAAA,EAAI,EAAE,GAAA,EAAK,cAAc,CAAA;AAEhD,MAAO,OAAA,MAAM,cAAe,CAAA,SAAA,CAAU,EAAE,CAAA;AAAA,KAErC,MAAA;AAGH,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA;AAAA;AACf,GACD,CAAA;AAED,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -45,7 +45,7 @@ function getNextMatch(values, search, currentMatch) {
45
45
  const nextMatch = wrappedValues.find(
46
46
  (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())
47
47
  );
48
- return nextMatch !== currentMatch ? nextMatch : undefined;
48
+ return nextMatch !== currentMatch ? nextMatch : void 0;
49
49
  }
50
50
 
51
51
  exports.getNextMatch = getNextMatch;
@@ -1 +1 @@
1
- {"version":3,"file":"useTypeahead.cjs","sources":["../../src/shared/useTypeahead.ts"],"sourcesContent":["import { refAutoReset } from '@vueuse/shared'\nimport { getActiveElement } from './getActiveElement'\n\nexport function useTypeahead(callback?: (search: string) => void) {\n // Reset `search` 1 second after it was last updated\n const search = refAutoReset('', 1000)\n\n const handleTypeaheadSearch = (key: string, items: { ref: HTMLElement, value?: any }[]) => {\n search.value = search.value + key\n\n if (callback) {\n callback(key)\n }\n else {\n const currentItem = getActiveElement()\n const itemsWithTextValue = items.map(item => ({\n ...item,\n textValue: item.value?.textValue ?? item.ref.textContent?.trim() ?? '',\n }))\n const currentMatch = itemsWithTextValue.find(item => item.ref === currentItem)\n const values = itemsWithTextValue.map(item => item.textValue)\n const nextMatch = getNextMatch(values, search.value, currentMatch?.textValue)\n\n const newItem = itemsWithTextValue.find(item => item.textValue === nextMatch)\n\n if (newItem)\n (newItem.ref as HTMLElement).focus()\n return newItem?.ref\n }\n }\n\n const resetTypeahead = () => {\n search.value = ''\n }\n\n return {\n search,\n handleTypeaheadSearch,\n resetTypeahead,\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length])\n}\n\n/**\n * This is the \"meat\" of the typeahead matching logic. It takes in all the values,\n * the search and the current match, and returns the next match (or `undefined`).\n *\n * We normalize the search because if a user has repeatedly pressed a character,\n * we want the exact same behavior as if we only had that one character\n * (ie. cycle through options starting with that character)\n *\n * We also reorder the values by wrapping the array around the current match.\n * This is so we always look forward from the current match, and picking the first\n * match will always be the correct one.\n *\n * Finally, if the normalized search is exactly one character, we exclude the\n * current match from the values because otherwise it would be the first to match always\n * and focus would never move. This is as opposed to the regular case, where we\n * don't want focus to move if the current match still matches.\n */\nexport function getNextMatch(\n values: string[],\n search: string,\n currentMatch?: string,\n) {\n const isRepeated\n = search.length > 1 && Array.from(search).every(char => char === search[0])\n const normalizedSearch = isRepeated ? search[0] : search\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0))\n const excludeCurrentMatch = normalizedSearch.length === 1\n if (excludeCurrentMatch)\n wrappedValues = wrappedValues.filter(v => v !== currentMatch)\n const nextMatch = wrappedValues.find(value =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase()),\n )\n return nextMatch !== currentMatch ? nextMatch : undefined\n}\n"],"names":["refAutoReset","getActiveElement"],"mappings":";;;;;AAGO,SAAS,aAAa,QAAqC,EAAA;AAEhE,EAAM,MAAA,MAAA,GAASA,mBAAa,CAAA,EAAA,EAAI,GAAI,CAAA;AAEpC,EAAM,MAAA,qBAAA,GAAwB,CAAC,GAAA,EAAa,KAA+C,KAAA;AACzF,IAAO,MAAA,CAAA,KAAA,GAAQ,OAAO,KAAQ,GAAA,GAAA;AAE9B,IAGK;AACH,MAAA,MAAM,cAAcC,wCAAiB,EAAA;AACrC,MAAM,MAAA,kBAAA,GAAqB,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,QAC5C,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,KAAK,KAAO,EAAA,SAAA,IAAa,KAAK,GAAI,CAAA,WAAA,EAAa,MAAU,IAAA;AAAA,OACpE,CAAA,CAAA;AACF,MAAA,MAAM,eAAe,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,WAAW,CAAA;AAC7E,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,GAAI,CAAA,CAAA,IAAA,KAAQ,KAAK,SAAS,CAAA;AAC5D,MAAA,MAAM,YAAY,YAAa,CAAA,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,cAAc,SAAS,CAAA;AAE5E,MAAA,MAAM,UAAU,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,cAAc,SAAS,CAAA;AAE5E,MAAI,IAAA,OAAA;AACF,QAAC,OAAA,CAAQ,IAAoB,KAAM,EAAA;AACrC,MAAA,OAAO,OAAS,EAAA,GAAA;AAAA;AAClB,GACF;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAA,CAAO,KAAQ,GAAA,EAAA;AAAA,GACjB;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF;AACF;AAMgB,SAAA,SAAA,CAAa,OAAY,UAAoB,EAAA;AAC3D,EAAO,OAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAG,EAAA,KAAA,KAAU,OAAO,UAAa,GAAA,KAAA,IAAS,KAAM,CAAA,MAAM,CAAC,CAAA;AAC3E;AAmBgB,SAAA,YAAA,CACd,MACA,EAAA,MAAA,EACA,YACA,EAAA;AACA,EAAA,MAAM,UACF,GAAA,MAAA,CAAO,MAAS,GAAA,CAAA,IAAK,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA,CAAE,KAAM,CAAA,CAAA,IAAA,KAAQ,IAAS,KAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,gBAAmB,GAAA,UAAA,GAAa,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA;AAClD,EAAA,MAAM,iBAAoB,GAAA,YAAA,GAAe,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAI,GAAA,EAAA;AACxE,EAAA,IAAI,gBAAgB,SAAU,CAAA,MAAA,EAAQ,KAAK,GAAI,CAAA,iBAAA,EAAmB,CAAC,CAAC,CAAA;AACpE,EAAM,MAAA,mBAAA,GAAsB,iBAAiB,MAAW,KAAA,CAAA;AACxD,EAAI,IAAA,mBAAA;AACF,IAAA,aAAA,GAAgB,aAAc,CAAA,MAAA,CAAO,CAAK,CAAA,KAAA,CAAA,KAAM,YAAY,CAAA;AAC9D,EAAA,MAAM,YAAY,aAAc,CAAA,IAAA;AAAA,IAAK,WACnC,KAAM,CAAA,WAAA,GAAc,UAAW,CAAA,gBAAA,CAAiB,aAAa;AAAA,GAC/D;AACA,EAAO,OAAA,SAAA,KAAc,eAAe,SAAY,GAAA,SAAA;AAClD;;;;;;"}
1
+ {"version":3,"file":"useTypeahead.cjs","sources":["../../src/shared/useTypeahead.ts"],"sourcesContent":["import { refAutoReset } from '@vueuse/shared'\nimport { getActiveElement } from './getActiveElement'\n\nexport function useTypeahead(callback?: (search: string) => void) {\n // Reset `search` 1 second after it was last updated\n const search = refAutoReset('', 1000)\n\n const handleTypeaheadSearch = (key: string, items: { ref: HTMLElement, value?: any }[]) => {\n search.value = search.value + key\n\n if (callback) {\n callback(key)\n }\n else {\n const currentItem = getActiveElement()\n const itemsWithTextValue = items.map(item => ({\n ...item,\n textValue: item.value?.textValue ?? item.ref.textContent?.trim() ?? '',\n }))\n const currentMatch = itemsWithTextValue.find(item => item.ref === currentItem)\n const values = itemsWithTextValue.map(item => item.textValue)\n const nextMatch = getNextMatch(values, search.value, currentMatch?.textValue)\n\n const newItem = itemsWithTextValue.find(item => item.textValue === nextMatch)\n\n if (newItem)\n (newItem.ref as HTMLElement).focus()\n return newItem?.ref\n }\n }\n\n const resetTypeahead = () => {\n search.value = ''\n }\n\n return {\n search,\n handleTypeaheadSearch,\n resetTypeahead,\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length])\n}\n\n/**\n * This is the \"meat\" of the typeahead matching logic. It takes in all the values,\n * the search and the current match, and returns the next match (or `undefined`).\n *\n * We normalize the search because if a user has repeatedly pressed a character,\n * we want the exact same behavior as if we only had that one character\n * (ie. cycle through options starting with that character)\n *\n * We also reorder the values by wrapping the array around the current match.\n * This is so we always look forward from the current match, and picking the first\n * match will always be the correct one.\n *\n * Finally, if the normalized search is exactly one character, we exclude the\n * current match from the values because otherwise it would be the first to match always\n * and focus would never move. This is as opposed to the regular case, where we\n * don't want focus to move if the current match still matches.\n */\nexport function getNextMatch(\n values: string[],\n search: string,\n currentMatch?: string,\n) {\n const isRepeated\n = search.length > 1 && Array.from(search).every(char => char === search[0])\n const normalizedSearch = isRepeated ? search[0] : search\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0))\n const excludeCurrentMatch = normalizedSearch.length === 1\n if (excludeCurrentMatch)\n wrappedValues = wrappedValues.filter(v => v !== currentMatch)\n const nextMatch = wrappedValues.find(value =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase()),\n )\n return nextMatch !== currentMatch ? nextMatch : undefined\n}\n"],"names":["refAutoReset","getActiveElement"],"mappings":";;;;;AAGO,SAAS,aAAa,QAAqC,EAAA;AAEhE,EAAM,MAAA,MAAA,GAASA,mBAAa,CAAA,EAAA,EAAI,GAAI,CAAA;AAEpC,EAAM,MAAA,qBAAA,GAAwB,CAAC,GAAA,EAAa,KAA+C,KAAA;AACzF,IAAO,MAAA,CAAA,KAAA,GAAQ,OAAO,KAAQ,GAAA,GAAA;AAE9B,IAGK;AACH,MAAA,MAAM,cAAcC,wCAAiB,EAAA;AACrC,MAAM,MAAA,kBAAA,GAAqB,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,QAC5C,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,KAAK,KAAO,EAAA,SAAA,IAAa,KAAK,GAAI,CAAA,WAAA,EAAa,MAAU,IAAA;AAAA,OACpE,CAAA,CAAA;AACF,MAAA,MAAM,eAAe,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,WAAW,CAAA;AAC7E,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,GAAI,CAAA,CAAA,IAAA,KAAQ,KAAK,SAAS,CAAA;AAC5D,MAAA,MAAM,YAAY,YAAa,CAAA,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,cAAc,SAAS,CAAA;AAE5E,MAAA,MAAM,UAAU,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,cAAc,SAAS,CAAA;AAE5E,MAAI,IAAA,OAAA;AACF,QAAC,OAAA,CAAQ,IAAoB,KAAM,EAAA;AACrC,MAAA,OAAO,OAAS,EAAA,GAAA;AAAA;AAClB,GACF;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAA,CAAO,KAAQ,GAAA,EAAA;AAAA,GACjB;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF;AACF;AAMgB,SAAA,SAAA,CAAa,OAAY,UAAoB,EAAA;AAC3D,EAAO,OAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAG,EAAA,KAAA,KAAU,OAAO,UAAa,GAAA,KAAA,IAAS,KAAM,CAAA,MAAM,CAAC,CAAA;AAC3E;AAmBgB,SAAA,YAAA,CACd,MACA,EAAA,MAAA,EACA,YACA,EAAA;AACA,EAAA,MAAM,UACF,GAAA,MAAA,CAAO,MAAS,GAAA,CAAA,IAAK,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA,CAAE,KAAM,CAAA,CAAA,IAAA,KAAQ,IAAS,KAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,gBAAmB,GAAA,UAAA,GAAa,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA;AAClD,EAAA,MAAM,iBAAoB,GAAA,YAAA,GAAe,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAI,GAAA,EAAA;AACxE,EAAA,IAAI,gBAAgB,SAAU,CAAA,MAAA,EAAQ,KAAK,GAAI,CAAA,iBAAA,EAAmB,CAAC,CAAC,CAAA;AACpE,EAAM,MAAA,mBAAA,GAAsB,iBAAiB,MAAW,KAAA,CAAA;AACxD,EAAI,IAAA,mBAAA;AACF,IAAA,aAAA,GAAgB,aAAc,CAAA,MAAA,CAAO,CAAK,CAAA,KAAA,CAAA,KAAM,YAAY,CAAA;AAC9D,EAAA,MAAM,YAAY,aAAc,CAAA,IAAA;AAAA,IAAK,WACnC,KAAM,CAAA,WAAA,GAAc,UAAW,CAAA,gBAAA,CAAiB,aAAa;AAAA,GAC/D;AACA,EAAO,OAAA,SAAA,KAAc,eAAe,SAAY,GAAA,MAAA;AAClD;;;;;;"}
@@ -43,7 +43,7 @@ function getNextMatch(values, search, currentMatch) {
43
43
  const nextMatch = wrappedValues.find(
44
44
  (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())
45
45
  );
46
- return nextMatch !== currentMatch ? nextMatch : undefined;
46
+ return nextMatch !== currentMatch ? nextMatch : void 0;
47
47
  }
48
48
 
49
49
  export { getNextMatch as g, useTypeahead as u, wrapArray as w };
@@ -1 +1 @@
1
- {"version":3,"file":"useTypeahead.js","sources":["../../src/shared/useTypeahead.ts"],"sourcesContent":["import { refAutoReset } from '@vueuse/shared'\nimport { getActiveElement } from './getActiveElement'\n\nexport function useTypeahead(callback?: (search: string) => void) {\n // Reset `search` 1 second after it was last updated\n const search = refAutoReset('', 1000)\n\n const handleTypeaheadSearch = (key: string, items: { ref: HTMLElement, value?: any }[]) => {\n search.value = search.value + key\n\n if (callback) {\n callback(key)\n }\n else {\n const currentItem = getActiveElement()\n const itemsWithTextValue = items.map(item => ({\n ...item,\n textValue: item.value?.textValue ?? item.ref.textContent?.trim() ?? '',\n }))\n const currentMatch = itemsWithTextValue.find(item => item.ref === currentItem)\n const values = itemsWithTextValue.map(item => item.textValue)\n const nextMatch = getNextMatch(values, search.value, currentMatch?.textValue)\n\n const newItem = itemsWithTextValue.find(item => item.textValue === nextMatch)\n\n if (newItem)\n (newItem.ref as HTMLElement).focus()\n return newItem?.ref\n }\n }\n\n const resetTypeahead = () => {\n search.value = ''\n }\n\n return {\n search,\n handleTypeaheadSearch,\n resetTypeahead,\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length])\n}\n\n/**\n * This is the \"meat\" of the typeahead matching logic. It takes in all the values,\n * the search and the current match, and returns the next match (or `undefined`).\n *\n * We normalize the search because if a user has repeatedly pressed a character,\n * we want the exact same behavior as if we only had that one character\n * (ie. cycle through options starting with that character)\n *\n * We also reorder the values by wrapping the array around the current match.\n * This is so we always look forward from the current match, and picking the first\n * match will always be the correct one.\n *\n * Finally, if the normalized search is exactly one character, we exclude the\n * current match from the values because otherwise it would be the first to match always\n * and focus would never move. This is as opposed to the regular case, where we\n * don't want focus to move if the current match still matches.\n */\nexport function getNextMatch(\n values: string[],\n search: string,\n currentMatch?: string,\n) {\n const isRepeated\n = search.length > 1 && Array.from(search).every(char => char === search[0])\n const normalizedSearch = isRepeated ? search[0] : search\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0))\n const excludeCurrentMatch = normalizedSearch.length === 1\n if (excludeCurrentMatch)\n wrappedValues = wrappedValues.filter(v => v !== currentMatch)\n const nextMatch = wrappedValues.find(value =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase()),\n )\n return nextMatch !== currentMatch ? nextMatch : undefined\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,QAAqC,EAAA;AAEhE,EAAM,MAAA,MAAA,GAAS,YAAa,CAAA,EAAA,EAAI,GAAI,CAAA;AAEpC,EAAM,MAAA,qBAAA,GAAwB,CAAC,GAAA,EAAa,KAA+C,KAAA;AACzF,IAAO,MAAA,CAAA,KAAA,GAAQ,OAAO,KAAQ,GAAA,GAAA;AAE9B,IAGK;AACH,MAAA,MAAM,cAAc,gBAAiB,EAAA;AACrC,MAAM,MAAA,kBAAA,GAAqB,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,QAC5C,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,KAAK,KAAO,EAAA,SAAA,IAAa,KAAK,GAAI,CAAA,WAAA,EAAa,MAAU,IAAA;AAAA,OACpE,CAAA,CAAA;AACF,MAAA,MAAM,eAAe,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,WAAW,CAAA;AAC7E,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,GAAI,CAAA,CAAA,IAAA,KAAQ,KAAK,SAAS,CAAA;AAC5D,MAAA,MAAM,YAAY,YAAa,CAAA,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,cAAc,SAAS,CAAA;AAE5E,MAAA,MAAM,UAAU,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,cAAc,SAAS,CAAA;AAE5E,MAAI,IAAA,OAAA;AACF,QAAC,OAAA,CAAQ,IAAoB,KAAM,EAAA;AACrC,MAAA,OAAO,OAAS,EAAA,GAAA;AAAA;AAClB,GACF;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAA,CAAO,KAAQ,GAAA,EAAA;AAAA,GACjB;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF;AACF;AAMgB,SAAA,SAAA,CAAa,OAAY,UAAoB,EAAA;AAC3D,EAAO,OAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAG,EAAA,KAAA,KAAU,OAAO,UAAa,GAAA,KAAA,IAAS,KAAM,CAAA,MAAM,CAAC,CAAA;AAC3E;AAmBgB,SAAA,YAAA,CACd,MACA,EAAA,MAAA,EACA,YACA,EAAA;AACA,EAAA,MAAM,UACF,GAAA,MAAA,CAAO,MAAS,GAAA,CAAA,IAAK,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA,CAAE,KAAM,CAAA,CAAA,IAAA,KAAQ,IAAS,KAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,gBAAmB,GAAA,UAAA,GAAa,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA;AAClD,EAAA,MAAM,iBAAoB,GAAA,YAAA,GAAe,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAI,GAAA,EAAA;AACxE,EAAA,IAAI,gBAAgB,SAAU,CAAA,MAAA,EAAQ,KAAK,GAAI,CAAA,iBAAA,EAAmB,CAAC,CAAC,CAAA;AACpE,EAAM,MAAA,mBAAA,GAAsB,iBAAiB,MAAW,KAAA,CAAA;AACxD,EAAI,IAAA,mBAAA;AACF,IAAA,aAAA,GAAgB,aAAc,CAAA,MAAA,CAAO,CAAK,CAAA,KAAA,CAAA,KAAM,YAAY,CAAA;AAC9D,EAAA,MAAM,YAAY,aAAc,CAAA,IAAA;AAAA,IAAK,WACnC,KAAM,CAAA,WAAA,GAAc,UAAW,CAAA,gBAAA,CAAiB,aAAa;AAAA,GAC/D;AACA,EAAO,OAAA,SAAA,KAAc,eAAe,SAAY,GAAA,SAAA;AAClD;;;;"}
1
+ {"version":3,"file":"useTypeahead.js","sources":["../../src/shared/useTypeahead.ts"],"sourcesContent":["import { refAutoReset } from '@vueuse/shared'\nimport { getActiveElement } from './getActiveElement'\n\nexport function useTypeahead(callback?: (search: string) => void) {\n // Reset `search` 1 second after it was last updated\n const search = refAutoReset('', 1000)\n\n const handleTypeaheadSearch = (key: string, items: { ref: HTMLElement, value?: any }[]) => {\n search.value = search.value + key\n\n if (callback) {\n callback(key)\n }\n else {\n const currentItem = getActiveElement()\n const itemsWithTextValue = items.map(item => ({\n ...item,\n textValue: item.value?.textValue ?? item.ref.textContent?.trim() ?? '',\n }))\n const currentMatch = itemsWithTextValue.find(item => item.ref === currentItem)\n const values = itemsWithTextValue.map(item => item.textValue)\n const nextMatch = getNextMatch(values, search.value, currentMatch?.textValue)\n\n const newItem = itemsWithTextValue.find(item => item.textValue === nextMatch)\n\n if (newItem)\n (newItem.ref as HTMLElement).focus()\n return newItem?.ref\n }\n }\n\n const resetTypeahead = () => {\n search.value = ''\n }\n\n return {\n search,\n handleTypeaheadSearch,\n resetTypeahead,\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length])\n}\n\n/**\n * This is the \"meat\" of the typeahead matching logic. It takes in all the values,\n * the search and the current match, and returns the next match (or `undefined`).\n *\n * We normalize the search because if a user has repeatedly pressed a character,\n * we want the exact same behavior as if we only had that one character\n * (ie. cycle through options starting with that character)\n *\n * We also reorder the values by wrapping the array around the current match.\n * This is so we always look forward from the current match, and picking the first\n * match will always be the correct one.\n *\n * Finally, if the normalized search is exactly one character, we exclude the\n * current match from the values because otherwise it would be the first to match always\n * and focus would never move. This is as opposed to the regular case, where we\n * don't want focus to move if the current match still matches.\n */\nexport function getNextMatch(\n values: string[],\n search: string,\n currentMatch?: string,\n) {\n const isRepeated\n = search.length > 1 && Array.from(search).every(char => char === search[0])\n const normalizedSearch = isRepeated ? search[0] : search\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0))\n const excludeCurrentMatch = normalizedSearch.length === 1\n if (excludeCurrentMatch)\n wrappedValues = wrappedValues.filter(v => v !== currentMatch)\n const nextMatch = wrappedValues.find(value =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase()),\n )\n return nextMatch !== currentMatch ? nextMatch : undefined\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,QAAqC,EAAA;AAEhE,EAAM,MAAA,MAAA,GAAS,YAAa,CAAA,EAAA,EAAI,GAAI,CAAA;AAEpC,EAAM,MAAA,qBAAA,GAAwB,CAAC,GAAA,EAAa,KAA+C,KAAA;AACzF,IAAO,MAAA,CAAA,KAAA,GAAQ,OAAO,KAAQ,GAAA,GAAA;AAE9B,IAGK;AACH,MAAA,MAAM,cAAc,gBAAiB,EAAA;AACrC,MAAM,MAAA,kBAAA,GAAqB,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,QAC5C,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,KAAK,KAAO,EAAA,SAAA,IAAa,KAAK,GAAI,CAAA,WAAA,EAAa,MAAU,IAAA;AAAA,OACpE,CAAA,CAAA;AACF,MAAA,MAAM,eAAe,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,WAAW,CAAA;AAC7E,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,GAAI,CAAA,CAAA,IAAA,KAAQ,KAAK,SAAS,CAAA;AAC5D,MAAA,MAAM,YAAY,YAAa,CAAA,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,cAAc,SAAS,CAAA;AAE5E,MAAA,MAAM,UAAU,kBAAmB,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,cAAc,SAAS,CAAA;AAE5E,MAAI,IAAA,OAAA;AACF,QAAC,OAAA,CAAQ,IAAoB,KAAM,EAAA;AACrC,MAAA,OAAO,OAAS,EAAA,GAAA;AAAA;AAClB,GACF;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAA,CAAO,KAAQ,GAAA,EAAA;AAAA,GACjB;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF;AACF;AAMgB,SAAA,SAAA,CAAa,OAAY,UAAoB,EAAA;AAC3D,EAAO,OAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAG,EAAA,KAAA,KAAU,OAAO,UAAa,GAAA,KAAA,IAAS,KAAM,CAAA,MAAM,CAAC,CAAA;AAC3E;AAmBgB,SAAA,YAAA,CACd,MACA,EAAA,MAAA,EACA,YACA,EAAA;AACA,EAAA,MAAM,UACF,GAAA,MAAA,CAAO,MAAS,GAAA,CAAA,IAAK,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA,CAAE,KAAM,CAAA,CAAA,IAAA,KAAQ,IAAS,KAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,gBAAmB,GAAA,UAAA,GAAa,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA;AAClD,EAAA,MAAM,iBAAoB,GAAA,YAAA,GAAe,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAI,GAAA,EAAA;AACxE,EAAA,IAAI,gBAAgB,SAAU,CAAA,MAAA,EAAQ,KAAK,GAAI,CAAA,iBAAA,EAAmB,CAAC,CAAC,CAAA;AACpE,EAAM,MAAA,mBAAA,GAAsB,iBAAiB,MAAW,KAAA,CAAA;AACxD,EAAI,IAAA,mBAAA;AACF,IAAA,aAAA,GAAgB,aAAc,CAAA,MAAA,CAAO,CAAK,CAAA,KAAA,CAAA,KAAM,YAAY,CAAA;AAC9D,EAAA,MAAM,YAAY,aAAc,CAAA,IAAA;AAAA,IAAK,WACnC,KAAM,CAAA,WAAA,GAAc,UAAW,CAAA,gBAAA,CAAiB,aAAa;AAAA,GAC/D;AACA,EAAO,OAAA,SAAA,KAAc,eAAe,SAAY,GAAA,MAAA;AAClD;;;;"}
@@ -105,7 +105,7 @@ function adjustLayoutByDelta({
105
105
  if (!utils_compare.fuzzyNumbersEqual(prevSize, safeSize)) {
106
106
  deltaApplied += prevSize - safeSize;
107
107
  nextLayout[index] = safeSize;
108
- if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {
108
+ if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), void 0, {
109
109
  numeric: true
110
110
  }) >= 0) {
111
111
  break;