reka-ui 2.2.1 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  2. package/dist/Accordion/AccordionItem.js.map +1 -1
  3. package/dist/Accordion/AccordionRoot.cjs.map +1 -1
  4. package/dist/Accordion/AccordionRoot.js.map +1 -1
  5. package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
  6. package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
  7. package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
  8. package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
  9. package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js.map +1 -1
  11. package/dist/Avatar/AvatarFallback.cjs +11 -14
  12. package/dist/Avatar/AvatarFallback.cjs.map +1 -1
  13. package/dist/Avatar/AvatarFallback.js +12 -15
  14. package/dist/Avatar/AvatarFallback.js.map +1 -1
  15. package/dist/Avatar/AvatarImage.cjs +3 -2
  16. package/dist/Avatar/AvatarImage.cjs.map +1 -1
  17. package/dist/Avatar/AvatarImage.js +3 -2
  18. package/dist/Avatar/AvatarImage.js.map +1 -1
  19. package/dist/Avatar/AvatarRoot.cjs +1 -1
  20. package/dist/Avatar/AvatarRoot.cjs.map +1 -1
  21. package/dist/Avatar/AvatarRoot.js +1 -1
  22. package/dist/Avatar/AvatarRoot.js.map +1 -1
  23. package/dist/Avatar/utils.cjs +43 -16
  24. package/dist/Avatar/utils.cjs.map +1 -1
  25. package/dist/Avatar/utils.js +44 -17
  26. package/dist/Avatar/utils.js.map +1 -1
  27. package/dist/Calendar/CalendarCell.cjs +2 -2
  28. package/dist/Calendar/CalendarCell.cjs.map +1 -1
  29. package/dist/Calendar/CalendarCell.js +2 -2
  30. package/dist/Calendar/CalendarCell.js.map +1 -1
  31. package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
  32. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  33. package/dist/Calendar/CalendarCellTrigger.js +5 -1
  34. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  35. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  36. package/dist/Calendar/CalendarGrid.js.map +1 -1
  37. package/dist/Calendar/CalendarHeading.cjs.map +1 -1
  38. package/dist/Calendar/CalendarHeading.js.map +1 -1
  39. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  40. package/dist/Calendar/CalendarNext.js.map +1 -1
  41. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  42. package/dist/Calendar/CalendarPrev.js.map +1 -1
  43. package/dist/Calendar/CalendarRoot.cjs +7 -4
  44. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  45. package/dist/Calendar/CalendarRoot.js +7 -4
  46. package/dist/Calendar/CalendarRoot.js.map +1 -1
  47. package/dist/Calendar/useCalendar.cjs +2 -2
  48. package/dist/Calendar/useCalendar.cjs.map +1 -1
  49. package/dist/Calendar/useCalendar.js +2 -2
  50. package/dist/Calendar/useCalendar.js.map +1 -1
  51. package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
  52. package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
  53. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  54. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  55. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  56. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  57. package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
  58. package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
  59. package/dist/Collapsible/CollapsibleRoot.js +2 -0
  60. package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
  61. package/dist/Collection/Collection.cjs.map +1 -1
  62. package/dist/Collection/Collection.js.map +1 -1
  63. package/dist/Combobox/ComboboxContentImpl.cjs +1 -1
  64. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  65. package/dist/Combobox/ComboboxContentImpl.js +1 -1
  66. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  67. package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
  68. package/dist/Combobox/ComboboxGroup.js.map +1 -1
  69. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  70. package/dist/Combobox/ComboboxInput.js.map +1 -1
  71. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  72. package/dist/Combobox/ComboboxItem.js.map +1 -1
  73. package/dist/Combobox/ComboboxRoot.cjs +1 -2
  74. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  75. package/dist/Combobox/ComboboxRoot.js +1 -2
  76. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  77. package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
  78. package/dist/Combobox/ComboboxTrigger.js.map +1 -1
  79. package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
  80. package/dist/Combobox/ComboboxViewport.js.map +1 -1
  81. package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
  82. package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
  83. package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
  84. package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
  85. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  86. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  87. package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
  88. package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
  89. package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
  90. package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
  91. package/dist/ContextMenu/ContextMenuSub.js +1 -1
  92. package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
  93. package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
  94. package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
  95. package/dist/DateField/DateFieldInput.cjs +1 -0
  96. package/dist/DateField/DateFieldInput.cjs.map +1 -1
  97. package/dist/DateField/DateFieldInput.js +1 -0
  98. package/dist/DateField/DateFieldInput.js.map +1 -1
  99. package/dist/DateField/DateFieldRoot.cjs +7 -1
  100. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  101. package/dist/DateField/DateFieldRoot.js +7 -1
  102. package/dist/DateField/DateFieldRoot.js.map +1 -1
  103. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  104. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  105. package/dist/DatePicker/DatePickerContent.cjs +8 -3
  106. package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
  107. package/dist/DatePicker/DatePickerContent.js +9 -4
  108. package/dist/DatePicker/DatePickerContent.js.map +1 -1
  109. package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
  110. package/dist/DatePicker/DatePickerHeading.js.map +1 -1
  111. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  112. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  113. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  114. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  115. package/dist/DatePicker/DatePickerRoot.cjs +1 -0
  116. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  117. package/dist/DatePicker/DatePickerRoot.js +1 -0
  118. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  119. package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
  120. package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
  121. package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
  122. package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
  123. package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
  124. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  125. package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
  126. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  127. package/dist/DateRangePicker/DateRangePickerCalendar.cjs +2 -1
  128. package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
  129. package/dist/DateRangePicker/DateRangePickerCalendar.js +2 -1
  130. package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
  131. package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
  132. package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
  133. package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
  134. package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
  135. package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
  136. package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
  137. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  138. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  139. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  140. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  141. package/dist/DateRangePicker/DateRangePickerRoot.cjs +6 -2
  142. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  143. package/dist/DateRangePicker/DateRangePickerRoot.js +6 -2
  144. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  145. package/dist/Dialog/DialogContentImpl.cjs +1 -1
  146. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  147. package/dist/Dialog/DialogContentImpl.js +1 -1
  148. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  149. package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
  150. package/dist/Dialog/DialogContentNonModal.js.map +1 -1
  151. package/dist/Dialog/DialogRoot.cjs +4 -1
  152. package/dist/Dialog/DialogRoot.cjs.map +1 -1
  153. package/dist/Dialog/DialogRoot.js +4 -1
  154. package/dist/Dialog/DialogRoot.js.map +1 -1
  155. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  156. package/dist/Dialog/DialogTrigger.js.map +1 -1
  157. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  158. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  159. package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
  160. package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
  161. package/dist/DismissableLayer/utils.cjs +19 -7
  162. package/dist/DismissableLayer/utils.cjs.map +1 -1
  163. package/dist/DismissableLayer/utils.js +20 -8
  164. package/dist/DismissableLayer/utils.js.map +1 -1
  165. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  166. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  167. package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
  168. package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
  169. package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
  170. package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
  171. package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
  172. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  173. package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
  174. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  175. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  176. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  177. package/dist/Editable/EditableInput.cjs.map +1 -1
  178. package/dist/Editable/EditableInput.js.map +1 -1
  179. package/dist/Editable/EditableRoot.cjs +3 -3
  180. package/dist/Editable/EditableRoot.cjs.map +1 -1
  181. package/dist/Editable/EditableRoot.js +3 -3
  182. package/dist/Editable/EditableRoot.js.map +1 -1
  183. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  184. package/dist/FocusScope/FocusScope.js.map +1 -1
  185. package/dist/HoverCard/HoverCardContentImpl.cjs +1 -1
  186. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  187. package/dist/HoverCard/HoverCardContentImpl.js +1 -1
  188. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  189. package/dist/HoverCard/HoverCardRoot.cjs +1 -1
  190. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  191. package/dist/HoverCard/HoverCardRoot.js +1 -1
  192. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  193. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  194. package/dist/Listbox/ListboxFilter.js.map +1 -1
  195. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  196. package/dist/Listbox/ListboxItem.js.map +1 -1
  197. package/dist/Listbox/ListboxRoot.cjs +1 -1
  198. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  199. package/dist/Listbox/ListboxRoot.js +1 -1
  200. package/dist/Listbox/ListboxRoot.js.map +1 -1
  201. package/dist/Listbox/ListboxVirtualizer.cjs +3 -3
  202. package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
  203. package/dist/Listbox/ListboxVirtualizer.js +3 -3
  204. package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
  205. package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
  206. package/dist/Menu/MenuCheckboxItem.js.map +1 -1
  207. package/dist/Menu/MenuContentImpl.cjs +1 -1
  208. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  209. package/dist/Menu/MenuContentImpl.js +1 -1
  210. package/dist/Menu/MenuContentImpl.js.map +1 -1
  211. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  212. package/dist/Menu/MenuItemImpl.js.map +1 -1
  213. package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
  214. package/dist/Menu/MenuItemIndicator.js.map +1 -1
  215. package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
  216. package/dist/Menu/MenuRadioGroup.js.map +1 -1
  217. package/dist/Menu/MenuRoot.cjs +1 -1
  218. package/dist/Menu/MenuRoot.cjs.map +1 -1
  219. package/dist/Menu/MenuRoot.js +1 -1
  220. package/dist/Menu/MenuRoot.js.map +1 -1
  221. package/dist/Menu/MenuSub.cjs +1 -1
  222. package/dist/Menu/MenuSub.cjs.map +1 -1
  223. package/dist/Menu/MenuSub.js +1 -1
  224. package/dist/Menu/MenuSub.js.map +1 -1
  225. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  226. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  227. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  228. package/dist/Menubar/MenubarContent.js.map +1 -1
  229. package/dist/Menubar/MenubarMenu.cjs.map +1 -1
  230. package/dist/Menubar/MenubarMenu.js.map +1 -1
  231. package/dist/Menubar/MenubarRoot.cjs.map +1 -1
  232. package/dist/Menubar/MenubarRoot.js.map +1 -1
  233. package/dist/Menubar/MenubarSub.cjs +1 -1
  234. package/dist/Menubar/MenubarSub.cjs.map +1 -1
  235. package/dist/Menubar/MenubarSub.js +1 -1
  236. package/dist/Menubar/MenubarSub.js.map +1 -1
  237. package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
  238. package/dist/Menubar/MenubarTrigger.js.map +1 -1
  239. package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
  240. package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
  241. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
  242. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  243. package/dist/NavigationMenu/NavigationMenuContentImpl.js +1 -1
  244. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  245. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  246. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  247. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  248. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  249. package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
  250. package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
  251. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  252. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  253. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  254. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  255. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  256. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  257. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  258. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  259. package/dist/NumberField/NumberFieldInput.cjs +2 -2
  260. package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
  261. package/dist/NumberField/NumberFieldInput.js +2 -2
  262. package/dist/NumberField/NumberFieldInput.js.map +1 -1
  263. package/dist/NumberField/NumberFieldRoot.cjs +8 -5
  264. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  265. package/dist/NumberField/NumberFieldRoot.js +8 -5
  266. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  267. package/dist/Pagination/PaginationFirst.cjs.map +1 -1
  268. package/dist/Pagination/PaginationFirst.js.map +1 -1
  269. package/dist/Pagination/PaginationLast.cjs.map +1 -1
  270. package/dist/Pagination/PaginationLast.js.map +1 -1
  271. package/dist/Pagination/PaginationList.cjs.map +1 -1
  272. package/dist/Pagination/PaginationList.js.map +1 -1
  273. package/dist/Pagination/PaginationListItem.cjs.map +1 -1
  274. package/dist/Pagination/PaginationListItem.js.map +1 -1
  275. package/dist/Pagination/PaginationNext.cjs.map +1 -1
  276. package/dist/Pagination/PaginationNext.js.map +1 -1
  277. package/dist/Pagination/PaginationPrev.cjs.map +1 -1
  278. package/dist/Pagination/PaginationPrev.js.map +1 -1
  279. package/dist/Pagination/PaginationRoot.cjs.map +1 -1
  280. package/dist/Pagination/PaginationRoot.js.map +1 -1
  281. package/dist/PinInput/PinInputInput.cjs +14 -6
  282. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  283. package/dist/PinInput/PinInputInput.js +14 -6
  284. package/dist/PinInput/PinInputInput.js.map +1 -1
  285. package/dist/PinInput/PinInputRoot.cjs +4 -2
  286. package/dist/PinInput/PinInputRoot.cjs.map +1 -1
  287. package/dist/PinInput/PinInputRoot.js +4 -2
  288. package/dist/PinInput/PinInputRoot.js.map +1 -1
  289. package/dist/Popover/PopoverAnchor.cjs.map +1 -1
  290. package/dist/Popover/PopoverAnchor.js.map +1 -1
  291. package/dist/Popover/PopoverContentImpl.cjs +1 -1
  292. package/dist/Popover/PopoverContentImpl.js +1 -1
  293. package/dist/Popover/PopoverContentModal.cjs.map +1 -1
  294. package/dist/Popover/PopoverContentModal.js.map +1 -1
  295. package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
  296. package/dist/Popover/PopoverContentNonModal.js.map +1 -1
  297. package/dist/Popover/PopoverRoot.cjs +1 -1
  298. package/dist/Popover/PopoverRoot.cjs.map +1 -1
  299. package/dist/Popover/PopoverRoot.js +1 -1
  300. package/dist/Popover/PopoverRoot.js.map +1 -1
  301. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  302. package/dist/Popover/PopoverTrigger.js.map +1 -1
  303. package/dist/Popper/PopperAnchor.cjs.map +1 -1
  304. package/dist/Popper/PopperAnchor.js.map +1 -1
  305. package/dist/Popper/PopperArrow.cjs.map +1 -1
  306. package/dist/Popper/PopperArrow.js.map +1 -1
  307. package/dist/Popper/PopperContent.cjs.map +1 -1
  308. package/dist/Popper/PopperContent.js.map +1 -1
  309. package/dist/Presence/Presence.cjs.map +1 -1
  310. package/dist/Presence/Presence.js.map +1 -1
  311. package/dist/Presence/usePresence.cjs.map +1 -1
  312. package/dist/Presence/usePresence.js.map +1 -1
  313. package/dist/Primitive/Slot.cjs +1 -9
  314. package/dist/Primitive/Slot.cjs.map +1 -1
  315. package/dist/Primitive/Slot.js +1 -9
  316. package/dist/Primitive/Slot.js.map +1 -1
  317. package/dist/Progress/ProgressRoot.cjs +3 -2
  318. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  319. package/dist/Progress/ProgressRoot.js +3 -2
  320. package/dist/Progress/ProgressRoot.js.map +1 -1
  321. package/dist/RadioGroup/Radio.cjs +2 -0
  322. package/dist/RadioGroup/Radio.cjs.map +1 -1
  323. package/dist/RadioGroup/Radio.js +2 -0
  324. package/dist/RadioGroup/Radio.js.map +1 -1
  325. package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
  326. package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
  327. package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
  328. package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
  329. package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
  330. package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
  331. package/dist/RangeCalendar/RangeCalendarCell.js +2 -2
  332. package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
  333. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
  334. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  335. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
  336. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  337. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  338. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  339. package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
  340. package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
  341. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  342. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  343. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  344. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  345. package/dist/RangeCalendar/RangeCalendarRoot.cjs +26 -9
  346. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  347. package/dist/RangeCalendar/RangeCalendarRoot.js +26 -9
  348. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  349. package/dist/RangeCalendar/useRangeCalendar.cjs +21 -4
  350. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  351. package/dist/RangeCalendar/useRangeCalendar.js +21 -4
  352. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  353. package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
  354. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  355. package/dist/RovingFocus/RovingFocusGroup.js +1 -1
  356. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  357. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  358. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  359. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
  360. package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
  361. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  362. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  363. package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
  364. package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
  365. package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
  366. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
  367. package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
  368. package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
  369. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  370. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  371. package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
  372. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
  373. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
  374. package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
  375. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
  376. package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
  377. package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
  378. package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
  379. package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
  380. package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
  381. package/dist/Select/BubbleSelect.cjs.map +1 -1
  382. package/dist/Select/BubbleSelect.js.map +1 -1
  383. package/dist/Select/SelectContent.cjs.map +1 -1
  384. package/dist/Select/SelectContent.js.map +1 -1
  385. package/dist/Select/SelectContentImpl.cjs +2 -2
  386. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  387. package/dist/Select/SelectContentImpl.js +2 -2
  388. package/dist/Select/SelectContentImpl.js.map +1 -1
  389. package/dist/Select/SelectItem.cjs.map +1 -1
  390. package/dist/Select/SelectItem.js.map +1 -1
  391. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  392. package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
  393. package/dist/Select/SelectItemAlignedPosition.js +1 -1
  394. package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
  395. package/dist/Select/SelectItemText.cjs.map +1 -1
  396. package/dist/Select/SelectItemText.js.map +1 -1
  397. package/dist/Select/SelectProvider.cjs.map +1 -1
  398. package/dist/Select/SelectProvider.js.map +1 -1
  399. package/dist/Select/SelectRoot.cjs +3 -1
  400. package/dist/Select/SelectRoot.cjs.map +1 -1
  401. package/dist/Select/SelectRoot.js +3 -1
  402. package/dist/Select/SelectRoot.js.map +1 -1
  403. package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
  404. package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
  405. package/dist/Select/SelectTrigger.cjs.map +1 -1
  406. package/dist/Select/SelectTrigger.js.map +1 -1
  407. package/dist/Select/SelectValue.cjs.map +1 -1
  408. package/dist/Select/SelectValue.js.map +1 -1
  409. package/dist/Select/SelectViewport.cjs.map +1 -1
  410. package/dist/Select/SelectViewport.js.map +1 -1
  411. package/dist/Slider/SliderHorizontal.cjs +7 -4
  412. package/dist/Slider/SliderHorizontal.cjs.map +1 -1
  413. package/dist/Slider/SliderHorizontal.js +7 -4
  414. package/dist/Slider/SliderHorizontal.js.map +1 -1
  415. package/dist/Slider/SliderRange.cjs +2 -2
  416. package/dist/Slider/SliderRange.cjs.map +1 -1
  417. package/dist/Slider/SliderRange.js +2 -2
  418. package/dist/Slider/SliderRange.js.map +1 -1
  419. package/dist/Slider/SliderRoot.cjs.map +1 -1
  420. package/dist/Slider/SliderRoot.js.map +1 -1
  421. package/dist/Slider/SliderThumb.cjs.map +1 -1
  422. package/dist/Slider/SliderThumb.js.map +1 -1
  423. package/dist/Slider/SliderThumbImpl.cjs +3 -3
  424. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  425. package/dist/Slider/SliderThumbImpl.js +3 -3
  426. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  427. package/dist/Slider/SliderVertical.cjs +7 -4
  428. package/dist/Slider/SliderVertical.cjs.map +1 -1
  429. package/dist/Slider/SliderVertical.js +7 -4
  430. package/dist/Slider/SliderVertical.js.map +1 -1
  431. package/dist/Slider/utils.cjs +1 -1
  432. package/dist/Slider/utils.cjs.map +1 -1
  433. package/dist/Slider/utils.js +1 -1
  434. package/dist/Slider/utils.js.map +1 -1
  435. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  436. package/dist/Splitter/SplitterGroup.js.map +1 -1
  437. package/dist/Splitter/SplitterPanel.cjs +16 -10
  438. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  439. package/dist/Splitter/SplitterPanel.js +16 -10
  440. package/dist/Splitter/SplitterPanel.js.map +1 -1
  441. package/dist/Stepper/StepperIndicator.cjs.map +1 -1
  442. package/dist/Stepper/StepperIndicator.js.map +1 -1
  443. package/dist/Stepper/StepperItem.cjs.map +1 -1
  444. package/dist/Stepper/StepperItem.js.map +1 -1
  445. package/dist/Stepper/StepperRoot.cjs +31 -4
  446. package/dist/Stepper/StepperRoot.cjs.map +1 -1
  447. package/dist/Stepper/StepperRoot.js +31 -4
  448. package/dist/Stepper/StepperRoot.js.map +1 -1
  449. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  450. package/dist/Stepper/StepperTrigger.js.map +1 -1
  451. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  452. package/dist/Switch/SwitchRoot.js.map +1 -1
  453. package/dist/Tabs/TabsContent.cjs.map +1 -1
  454. package/dist/Tabs/TabsContent.js.map +1 -1
  455. package/dist/Tabs/TabsIndicator.cjs.map +1 -1
  456. package/dist/Tabs/TabsIndicator.js.map +1 -1
  457. package/dist/Tabs/TabsList.cjs.map +1 -1
  458. package/dist/Tabs/TabsList.js.map +1 -1
  459. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  460. package/dist/Tabs/TabsRoot.js.map +1 -1
  461. package/dist/Tabs/TabsTrigger.cjs.map +1 -1
  462. package/dist/Tabs/TabsTrigger.js.map +1 -1
  463. package/dist/TagsInput/TagsInputInput.cjs +1 -0
  464. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  465. package/dist/TagsInput/TagsInputInput.js +1 -0
  466. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  467. package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
  468. package/dist/TagsInput/TagsInputItem.js.map +1 -1
  469. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  470. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  471. package/dist/TagsInput/TagsInputRoot.cjs +1 -1
  472. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  473. package/dist/TagsInput/TagsInputRoot.js +1 -1
  474. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  475. package/dist/TimeField/TimeFieldInput.cjs +1 -0
  476. package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
  477. package/dist/TimeField/TimeFieldInput.js +1 -0
  478. package/dist/TimeField/TimeFieldInput.js.map +1 -1
  479. package/dist/TimeField/TimeFieldRoot.cjs +13 -4
  480. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  481. package/dist/TimeField/TimeFieldRoot.js +13 -4
  482. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  483. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  484. package/dist/Toast/ToastAnnounce.js.map +1 -1
  485. package/dist/Toast/ToastRoot.cjs.map +1 -1
  486. package/dist/Toast/ToastRoot.js.map +1 -1
  487. package/dist/Toast/ToastRootImpl.cjs +1 -1
  488. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  489. package/dist/Toast/ToastRootImpl.js +1 -1
  490. package/dist/Toast/ToastRootImpl.js.map +1 -1
  491. package/dist/Toast/ToastViewport.cjs +2 -2
  492. package/dist/Toast/ToastViewport.cjs.map +1 -1
  493. package/dist/Toast/ToastViewport.js +2 -2
  494. package/dist/Toast/ToastViewport.js.map +1 -1
  495. package/dist/Toggle/Toggle.cjs.map +1 -1
  496. package/dist/Toggle/Toggle.js.map +1 -1
  497. package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  498. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  499. package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
  500. package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
  501. package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
  502. package/dist/Toolbar/ToolbarRoot.js.map +1 -1
  503. package/dist/Tooltip/TooltipContentImpl.cjs +2 -2
  504. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  505. package/dist/Tooltip/TooltipContentImpl.js +2 -2
  506. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  507. package/dist/Tooltip/TooltipRoot.cjs +1 -1
  508. package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
  509. package/dist/Tooltip/TooltipRoot.js +1 -1
  510. package/dist/Tooltip/TooltipRoot.js.map +1 -1
  511. package/dist/Tooltip/TooltipTrigger.cjs +1 -1
  512. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  513. package/dist/Tooltip/TooltipTrigger.js +1 -1
  514. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  515. package/dist/Tree/TreeItem.cjs +4 -1
  516. package/dist/Tree/TreeItem.cjs.map +1 -1
  517. package/dist/Tree/TreeItem.js +4 -1
  518. package/dist/Tree/TreeItem.js.map +1 -1
  519. package/dist/Tree/TreeRoot.cjs +29 -3
  520. package/dist/Tree/TreeRoot.cjs.map +1 -1
  521. package/dist/Tree/TreeRoot.js +29 -3
  522. package/dist/Tree/TreeRoot.js.map +1 -1
  523. package/dist/Tree/TreeVirtualizer.cjs +2 -2
  524. package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
  525. package/dist/Tree/TreeVirtualizer.js +2 -2
  526. package/dist/Tree/TreeVirtualizer.js.map +1 -1
  527. package/dist/Viewport/Viewport.cjs.map +1 -1
  528. package/dist/Viewport/Viewport.js.map +1 -1
  529. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
  530. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
  531. package/dist/component/BaseSeparator.cjs.map +1 -1
  532. package/dist/component/BaseSeparator.js.map +1 -1
  533. package/dist/date/calendar.cjs.map +1 -1
  534. package/dist/date/calendar.js.map +1 -1
  535. package/dist/date/parser.cjs +22 -7
  536. package/dist/date/parser.cjs.map +1 -1
  537. package/dist/date/parser.js +23 -8
  538. package/dist/date/parser.js.map +1 -1
  539. package/dist/date/useDateField.cjs +21 -6
  540. package/dist/date/useDateField.cjs.map +1 -1
  541. package/dist/date/useDateField.js +21 -6
  542. package/dist/date/useDateField.js.map +1 -1
  543. package/dist/date/utils.cjs +31 -2
  544. package/dist/date/utils.cjs.map +1 -1
  545. package/dist/date/utils.js +30 -3
  546. package/dist/date/utils.js.map +1 -1
  547. package/dist/index.d.ts +495 -353
  548. package/dist/shared/useBodyScrollLock.cjs +2 -2
  549. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  550. package/dist/shared/useBodyScrollLock.js +2 -2
  551. package/dist/shared/useBodyScrollLock.js.map +1 -1
  552. package/dist/shared/useDateFormatter.cjs +12 -10
  553. package/dist/shared/useDateFormatter.cjs.map +1 -1
  554. package/dist/shared/useDateFormatter.js +12 -10
  555. package/dist/shared/useDateFormatter.js.map +1 -1
  556. package/dist/shared/useDirection.cjs.map +1 -1
  557. package/dist/shared/useDirection.js.map +1 -1
  558. package/dist/shared/useGraceArea.cjs.map +1 -1
  559. package/dist/shared/useGraceArea.js.map +1 -1
  560. package/dist/shared/useId.cjs +2 -2
  561. package/dist/shared/useId.cjs.map +1 -1
  562. package/dist/shared/useId.js +2 -2
  563. package/dist/shared/useId.js.map +1 -1
  564. package/dist/shared/useLocale.cjs.map +1 -1
  565. package/dist/shared/useLocale.js.map +1 -1
  566. package/dist/shared/useNonce.cjs.map +1 -1
  567. package/dist/shared/useNonce.js.map +1 -1
  568. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterGroup.js","sources":["../../src/Splitter/SplitterGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { CSSProperties, Ref } from 'vue'\nimport { areEqual, createContext, useDirection, useForwardExpose, useId } from '@/shared'\nimport { computed, ref, toRefs, watch, watchEffect } from 'vue'\nimport { useWindowSplitterPanelGroupBehavior } from './utils/composables/useWindowSplitterPanelGroupBehavior'\nimport {\n initializeDefaultStorage,\n loadPanelGroupState,\n savePanelGroupState,\n} from './utils/storage'\n\nexport interface SplitterGroupProps extends PrimitiveProps {\n /** Group id; falls back to `useId` when not provided. */\n id?: string | null\n /** Unique id used to auto-save group arrangement via `localStorage`. */\n autoSaveId?: string | null\n /** The group orientation of splitter. */\n direction: Direction\n /** Step size when arrow key was pressed. */\n keyboardResizeBy?: number | null\n /** Custom storage API; defaults to localStorage */\n storage?: PanelGroupStorage\n}\n\nexport type SplitterGroupEmits = {\n /** Event handler called when group layout changes */\n layout: [val: number[]]\n}\n\nconst LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100\n\nexport type PanelGroupStorage = {\n getItem: (name: string) => string | null\n setItem: (name: string, value: string) => void\n}\n\nconst defaultStorage: PanelGroupStorage = {\n getItem: (name: string) => {\n initializeDefaultStorage(defaultStorage)\n return defaultStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n initializeDefaultStorage(defaultStorage)\n defaultStorage.setItem(name, value)\n },\n}\n\nexport type PanelGroupContext = {\n direction: Ref<Direction>\n dragState: DragState | null\n groupId: string\n reevaluatePanelConstraints: (panelData: PanelData, prevConstraints: PanelConstraints) => void\n registerPanel: (panelData: PanelData) => void\n registerResizeHandle: (dragHandleId: string) => ResizeHandler\n resizePanel: (panelData: PanelData, size: number) => void\n startDragging: (dragHandleId: string, event: ResizeEvent) => void\n stopDragging: () => void\n unregisterPanel: (panelData: PanelData) => void\n panelGroupElement: Ref<ParentNode | null>\n\n // Exposed function for child component\n collapsePanel: (panelData: PanelData) => void\n expandPanel: (panelData: PanelData) => void\n isPanelCollapsed: (panelData: PanelData) => boolean\n isPanelExpanded: (panelData: PanelData) => boolean\n getPanelSize: (panelData: PanelData) => number\n getPanelStyle: (panelData: PanelData, defaultSize: number | undefined) => CSSProperties\n}\n\nexport const [injectPanelGroupContext, providePanelGroupContext] = createContext<PanelGroupContext>('PanelGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport type { PanelConstraints, PanelData } from './SplitterPanel.vue'\n\nimport type { Direction, DragState, ResizeEvent, ResizeHandler } from './utils/types'\nimport { Primitive } from '@/Primitive'\nimport { assert } from './utils/assert'\nimport { calculateDeltaPercentage, calculateUnsafeDefaultLayout } from './utils/calculate'\nimport { callPanelCallbacks } from './utils/callPanelCallbacks'\nimport debounce from './utils/debounce'\nimport { getResizeHandleElement } from './utils/dom'\nimport { getResizeEventCursorPosition, isKeyDown, isMouseEvent, isTouchEvent } from './utils/events'\nimport { adjustLayoutByDelta, compareLayouts } from './utils/layout'\nimport { determinePivotIndices } from './utils/pivot'\nimport {\n EXCEEDED_HORIZONTAL_MAX,\n EXCEEDED_HORIZONTAL_MIN,\n EXCEEDED_VERTICAL_MAX,\n EXCEEDED_VERTICAL_MIN,\n reportConstraintsViolation,\n} from './utils/registry'\nimport { computePanelFlexBoxStyle } from './utils/style'\nimport { validatePanelGroupLayout } from './utils/validation'\n\nconst props = withDefaults(defineProps<SplitterGroupProps>(), {\n autoSaveId: null,\n keyboardResizeBy: 10,\n storage: () => defaultStorage,\n})\nconst emits = defineEmits<SplitterGroupEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current size of layout */\n layout: typeof layout.value\n }) => any\n}>()\n\nconst debounceMap: {\n [key: string]: typeof savePanelGroupState\n} = {}\n\nconst { direction } = toRefs(props)\nconst groupId = useId(props.id, 'reka-splitter-group')\nconst dir = useDirection()\nconst { forwardRef, currentElement: panelGroupElementRef } = useForwardExpose()\n\nconst dragState = ref<DragState | null>(null)\nconst layout = ref<number[]>([])\nconst panelIdToLastNotifiedSizeMapRef = ref<Record<string, number>>({})\nconst panelSizeBeforeCollapseRef = ref<Map<string, number>>(new Map())\nconst prevDeltaRef = ref<number>(0)\n\nconst committedValuesRef = computed(() => ({\n autoSaveId: props.autoSaveId,\n direction: props.direction,\n dragState: dragState.value,\n id: groupId,\n keyboardResizeBy: props.keyboardResizeBy,\n storage: props.storage,\n}) satisfies {\n autoSaveId: string | null\n direction: Direction\n dragState: DragState | null\n id: string\n keyboardResizeBy: number | null\n storage: PanelGroupStorage\n})\n\nconst eagerValuesRef = ref<{\n layout: number[]\n panelDataArray: PanelData[]\n panelDataArrayChanged: boolean\n}>({\n layout: layout.value,\n panelDataArray: [],\n panelDataArrayChanged: false,\n})\n\nconst setLayout = (val: number[]) => layout.value = val\n\nuseWindowSplitterPanelGroupBehavior({\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray: eagerValuesRef.value.panelDataArray,\n setLayout,\n panelGroupElement: panelGroupElementRef,\n})\n\nwatchEffect(() => {\n const { panelDataArray } = eagerValuesRef.value\n const { autoSaveId } = props\n // If this panel has been configured to persist sizing information, save sizes to local storage.\n if (autoSaveId) {\n if (layout.value.length === 0 || layout.value.length !== panelDataArray.length)\n return\n\n let debouncedSave = debounceMap[autoSaveId]\n\n // Limit the frequency of localStorage updates.\n if (!debouncedSave) {\n debouncedSave = debounce(\n savePanelGroupState,\n LOCAL_STORAGE_DEBOUNCE_INTERVAL,\n )\n\n debounceMap[autoSaveId] = debouncedSave\n }\n\n // Clone mutable data before passing to the debounced function,\n // else we run the risk of saving an incorrect combination of mutable and immutable values to state.\n const clonedPanelDataArray = [...panelDataArray]\n const clonedPanelSizesBeforeCollapse = new Map(\n panelSizeBeforeCollapseRef.value,\n )\n\n debouncedSave(\n autoSaveId,\n clonedPanelDataArray,\n clonedPanelSizesBeforeCollapse,\n layout.value,\n props.storage,\n )\n }\n})\n\nfunction getPanelStyle(panelData: PanelData, defaultSize: number | undefined) {\n const { panelDataArray } = eagerValuesRef.value\n\n const panelIndex = findPanelDataIndex(panelDataArray, panelData)\n\n return computePanelFlexBoxStyle({\n defaultSize,\n dragState: dragState.value,\n layout: layout.value,\n panelData: panelDataArray,\n panelIndex,\n })\n}\n\nfunction registerPanel(panelData: PanelData) {\n const { panelDataArray } = eagerValuesRef.value\n\n panelDataArray.push(panelData)\n panelDataArray.sort((panelA, panelB) => {\n const orderA = panelA.order\n const orderB = panelB.order\n if (orderA == null && orderB == null)\n return 0\n else if (orderA == null)\n return -1\n else if (orderB == null)\n return 1\n else\n return orderA - orderB\n })\n\n eagerValuesRef.value.panelDataArrayChanged = true\n}\n\n// (Re)calculate group layout whenever panels are registered or unregistered.\n// useIsomorphicLayoutEffect\nwatch(() => eagerValuesRef.value.panelDataArrayChanged, () => {\n if (eagerValuesRef.value.panelDataArrayChanged) {\n eagerValuesRef.value.panelDataArrayChanged = false\n\n const { autoSaveId, storage } = committedValuesRef.value\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n // If this panel has been configured to persist sizing information,\n // default size should be restored from local storage if possible.\n let unsafeLayout: number[] | null = null\n if (autoSaveId) {\n const state = loadPanelGroupState(autoSaveId, panelDataArray, storage)\n if (state) {\n panelSizeBeforeCollapseRef.value = new Map(\n Object.entries(state.expandToSizes),\n )\n unsafeLayout = state.layout\n }\n }\n\n if (unsafeLayout === null) {\n unsafeLayout = calculateUnsafeDefaultLayout({\n panelDataArray,\n })\n }\n\n // Validate even saved layouts in case something has changed since last render\n // e.g. for pixel groups, this could be the size of the window\n const nextLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(\n panelData => panelData.constraints,\n ),\n })\n\n if (!areEqual(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n})\n\nfunction registerResizeHandle(dragHandleId: string) {\n return function resizeHandler(event: ResizeEvent) {\n event.preventDefault()\n const panelGroupElement = panelGroupElementRef.value\n if (!panelGroupElement)\n return () => null\n\n const { direction, dragState, id: groupId, keyboardResizeBy } = committedValuesRef.value\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n const { initialLayout } = dragState ?? {}\n\n const pivotIndices = determinePivotIndices(\n groupId,\n dragHandleId,\n panelGroupElement,\n )\n\n let delta = calculateDeltaPercentage(\n event,\n dragHandleId,\n direction,\n dragState,\n keyboardResizeBy,\n panelGroupElement,\n )\n if (delta === 0)\n return\n\n // Support RTL layouts\n const isHorizontal = direction === 'horizontal'\n if (dir.value === 'rtl' && isHorizontal)\n delta = -delta\n\n const panelConstraints = panelDataArray.map(panelData => panelData.constraints)\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: initialLayout ?? prevLayout,\n panelConstraints,\n pivotIndices,\n trigger: isKeyDown(event) ? 'keyboard' : 'mouse-or-touch',\n })\n\n const layoutChanged = !compareLayouts(prevLayout, nextLayout)\n\n // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)\n // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)\n if (isMouseEvent(event) || isTouchEvent(event)) {\n // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.\n // In this case, Panel sizes might not change–\n // but updating cursor in this scenario would cause a flicker.\n if (prevDeltaRef.value !== delta) {\n prevDeltaRef.value = delta\n\n if (!layoutChanged) {\n // If the pointer has moved too far to resize the panel any further, note this so we can update the cursor.\n // This mimics VS Code behavior.\n if (isHorizontal) {\n reportConstraintsViolation(\n dragHandleId,\n delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX,\n )\n }\n else {\n reportConstraintsViolation(\n dragHandleId,\n delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX,\n )\n }\n }\n else {\n reportConstraintsViolation(dragHandleId, 0)\n }\n }\n }\n\n if (layoutChanged) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n}\n\nfunction resizePanel(panelData: PanelData, unsafePanelSize: number) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints)\n\n const { panelSize, pivotIndices } = panelDataHelper(\n panelDataArray,\n panelData,\n prevLayout,\n )\n\n assert(panelSize != null)\n\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1\n const delta = isLastPanel\n ? panelSize - unsafePanelSize\n : unsafePanelSize - panelSize\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: 'imperative-api',\n })\n\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n}\n\nfunction reevaluatePanelConstraints(panelData: PanelData, prevConstraints: PanelConstraints) {\n const { layout, panelDataArray } = eagerValuesRef.value\n const index = findPanelDataIndex(panelDataArray, panelData)\n panelDataArray[index] = panelData\n eagerValuesRef.value.panelDataArrayChanged = true\n const {\n collapsedSize: prevCollapsedSize = 0,\n collapsible: prevCollapsible,\n } = prevConstraints\n\n const {\n collapsedSize: nextCollapsedSize = 0,\n collapsible: nextCollapsible,\n maxSize: nextMaxSize = 100,\n minSize: nextMinSize = 0,\n } = panelData.constraints\n\n const { panelSize: prevPanelSize } = panelDataHelper(\n panelDataArray,\n panelData,\n layout,\n )\n if (prevPanelSize === null) {\n // It's possible that the panels in this group have changed since the last render\n return\n }\n\n if (\n prevCollapsible\n && nextCollapsible\n && prevPanelSize === prevCollapsedSize\n ) {\n if (prevCollapsedSize !== nextCollapsedSize) {\n resizePanel(panelData, nextCollapsedSize)\n }\n else {\n // Stay collapsed\n }\n }\n else if (prevPanelSize < nextMinSize) {\n resizePanel(panelData, nextMinSize)\n }\n else if (prevPanelSize > nextMaxSize) {\n resizePanel(panelData, nextMaxSize)\n }\n}\n\nfunction startDragging(dragHandleId: string, event: ResizeEvent) {\n const { direction } = committedValuesRef.value\n const { layout } = eagerValuesRef.value\n if (!panelGroupElementRef.value)\n return\n\n const handleElement = getResizeHandleElement(\n dragHandleId,\n panelGroupElementRef.value,\n )\n assert(handleElement)\n\n const initialCursorPosition = getResizeEventCursorPosition(\n direction,\n event,\n )\n\n dragState.value = {\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n initialLayout: layout,\n }\n}\nfunction stopDragging() {\n dragState.value = null\n}\n\nfunction unregisterPanel(panelData: PanelData) {\n const { panelDataArray } = eagerValuesRef.value\n\n const index = findPanelDataIndex(panelDataArray, panelData)\n if (index >= 0) {\n panelDataArray.splice(index, 1)\n\n // TRICKY\n // When a panel is removed from the group, we should delete the most recent prev-size entry for it.\n // If we don't do this, then a conditionally rendered panel might not call onResize when it's re-mounted.\n // Strict effects mode makes this tricky though because all panels will be registered, unregistered, then re-registered on mount.\n delete panelIdToLastNotifiedSizeMapRef.value[panelData.id]\n\n eagerValuesRef.value.panelDataArrayChanged = true\n }\n}\n\nfunction collapsePanel(panelData: PanelData) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(\n panelData => panelData.constraints,\n )\n\n const {\n collapsedSize = 0,\n panelSize,\n pivotIndices,\n } = panelDataHelper(panelDataArray, panelData, prevLayout)\n\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`,\n )\n\n if (panelSize !== collapsedSize) {\n // Store size before collapse;\n // This is the size that gets restored if the expand() API is used.\n panelSizeBeforeCollapseRef.value.set(panelData.id, panelSize)\n\n const isLastPanel\n = findPanelDataIndex(panelDataArray, panelData)\n === panelDataArray.length - 1\n const delta = isLastPanel\n ? panelSize - collapsedSize\n : collapsedSize - panelSize\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: 'imperative-api',\n })\n\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n }\n}\n\nfunction expandPanel(panelData: PanelData) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(\n panelData => panelData.constraints,\n )\n\n const {\n collapsedSize = 0,\n panelSize,\n minSize = 0,\n pivotIndices,\n } = panelDataHelper(panelDataArray, panelData, prevLayout)\n\n if (panelSize === collapsedSize) {\n // Restore this panel to the size it was before it was collapsed, if possible.\n const prevPanelSize = panelSizeBeforeCollapseRef.value.get(\n panelData.id,\n )\n\n const baseSize\n = prevPanelSize != null && prevPanelSize >= minSize\n ? prevPanelSize\n : minSize\n\n const isLastPanel\n = findPanelDataIndex(panelDataArray, panelData)\n === panelDataArray.length - 1\n const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: 'imperative-api',\n })\n\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n }\n}\n\nfunction getPanelSize(panelData: PanelData) {\n const { layout, panelDataArray } = eagerValuesRef.value\n\n const { panelSize } = panelDataHelper(panelDataArray, panelData, layout)\n\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`,\n )\n\n return panelSize\n}\n\nfunction isPanelCollapsed(panelData: PanelData) {\n const { layout, panelDataArray } = eagerValuesRef.value\n\n const {\n collapsedSize = 0,\n collapsible,\n panelSize,\n } = panelDataHelper(panelDataArray, panelData, layout)\n\n if (!collapsible)\n return false\n\n // panelSize is undefined during ssr due to vue ssr reactivity limitation.\n if (panelSize === undefined) {\n return panelData.constraints.defaultSize === panelData.constraints.collapsedSize\n }\n else {\n return panelSize === collapsedSize\n }\n}\n\nfunction isPanelExpanded(panelData: PanelData) {\n const { layout, panelDataArray } = eagerValuesRef.value\n\n const {\n collapsedSize = 0,\n collapsible,\n panelSize,\n } = panelDataHelper(panelDataArray, panelData, layout)\n\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`,\n )\n\n return !collapsible || panelSize > collapsedSize\n}\n\nprovidePanelGroupContext({\n direction,\n dragState: dragState.value,\n groupId,\n reevaluatePanelConstraints,\n registerPanel,\n registerResizeHandle,\n resizePanel,\n startDragging,\n stopDragging,\n unregisterPanel,\n panelGroupElement: panelGroupElementRef,\n\n collapsePanel,\n expandPanel,\n isPanelCollapsed,\n isPanelExpanded,\n getPanelSize,\n getPanelStyle,\n})\n\nfunction findPanelDataIndex(panelDataArray: PanelData[], panelData: PanelData) {\n return panelDataArray.findIndex(\n prevPanelData =>\n prevPanelData === panelData || prevPanelData.id === panelData.id,\n )\n}\n\nfunction panelDataHelper(\n panelDataArray: PanelData[],\n panelData: PanelData,\n layout: number[],\n) {\n const panelIndex = findPanelDataIndex(panelDataArray, panelData)\n\n const isLastPanel = panelIndex === panelDataArray.length - 1\n const pivotIndices = isLastPanel\n ? [panelIndex - 1, panelIndex]\n : [panelIndex, panelIndex + 1]\n\n const panelSize = layout[panelIndex]\n\n return {\n ...panelData.constraints,\n panelSize,\n pivotIndices,\n }\n}\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n :style=\"{\n display: 'flex',\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\n height: '100%',\n overflow: 'hidden',\n width: '100%',\n }\"\n data-panel-group=\"\"\n :data-orientation=\"direction\"\n :data-panel-group-id=\"groupId\"\n >\n <slot :layout=\"layout\" />\n </Primitive>\n</template>\n"],"names":["direction","dragState","groupId","panelData","layout"],"mappings":"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"}
1
+ {"version":3,"file":"SplitterGroup.js","sources":["../../src/Splitter/SplitterGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { CSSProperties, Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { computed, ref, toRefs, watch, watchEffect } from 'vue'\nimport { areEqual, createContext, useDirection, useForwardExpose, useId } from '@/shared'\nimport { useWindowSplitterPanelGroupBehavior } from './utils/composables/useWindowSplitterPanelGroupBehavior'\nimport {\n initializeDefaultStorage,\n loadPanelGroupState,\n savePanelGroupState,\n} from './utils/storage'\n\nexport interface SplitterGroupProps extends PrimitiveProps {\n /** Group id; falls back to `useId` when not provided. */\n id?: string | null\n /** Unique id used to auto-save group arrangement via `localStorage`. */\n autoSaveId?: string | null\n /** The group orientation of splitter. */\n direction: Direction\n /** Step size when arrow key was pressed. */\n keyboardResizeBy?: number | null\n /** Custom storage API; defaults to localStorage */\n storage?: PanelGroupStorage\n}\n\nexport type SplitterGroupEmits = {\n /** Event handler called when group layout changes */\n layout: [val: number[]]\n}\n\nconst LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100\n\nexport type PanelGroupStorage = {\n getItem: (name: string) => string | null\n setItem: (name: string, value: string) => void\n}\n\nconst defaultStorage: PanelGroupStorage = {\n getItem: (name: string) => {\n initializeDefaultStorage(defaultStorage)\n return defaultStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n initializeDefaultStorage(defaultStorage)\n defaultStorage.setItem(name, value)\n },\n}\n\nexport type PanelGroupContext = {\n direction: Ref<Direction>\n dragState: DragState | null\n groupId: string\n reevaluatePanelConstraints: (panelData: PanelData, prevConstraints: PanelConstraints) => void\n registerPanel: (panelData: PanelData) => void\n registerResizeHandle: (dragHandleId: string) => ResizeHandler\n resizePanel: (panelData: PanelData, size: number) => void\n startDragging: (dragHandleId: string, event: ResizeEvent) => void\n stopDragging: () => void\n unregisterPanel: (panelData: PanelData) => void\n panelGroupElement: Ref<ParentNode | null>\n\n // Exposed function for child component\n collapsePanel: (panelData: PanelData) => void\n expandPanel: (panelData: PanelData) => void\n isPanelCollapsed: (panelData: PanelData) => boolean\n isPanelExpanded: (panelData: PanelData) => boolean\n getPanelSize: (panelData: PanelData) => number\n getPanelStyle: (panelData: PanelData, defaultSize: number | undefined) => CSSProperties\n}\n\nexport const [injectPanelGroupContext, providePanelGroupContext] = createContext<PanelGroupContext>('PanelGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport type { PanelConstraints, PanelData } from './SplitterPanel.vue'\n\nimport type { Direction, DragState, ResizeEvent, ResizeHandler } from './utils/types'\nimport { Primitive } from '@/Primitive'\nimport { assert } from './utils/assert'\nimport { calculateDeltaPercentage, calculateUnsafeDefaultLayout } from './utils/calculate'\nimport { callPanelCallbacks } from './utils/callPanelCallbacks'\nimport debounce from './utils/debounce'\nimport { getResizeHandleElement } from './utils/dom'\nimport { getResizeEventCursorPosition, isKeyDown, isMouseEvent, isTouchEvent } from './utils/events'\nimport { adjustLayoutByDelta, compareLayouts } from './utils/layout'\nimport { determinePivotIndices } from './utils/pivot'\nimport {\n EXCEEDED_HORIZONTAL_MAX,\n EXCEEDED_HORIZONTAL_MIN,\n EXCEEDED_VERTICAL_MAX,\n EXCEEDED_VERTICAL_MIN,\n reportConstraintsViolation,\n} from './utils/registry'\nimport { computePanelFlexBoxStyle } from './utils/style'\nimport { validatePanelGroupLayout } from './utils/validation'\n\nconst props = withDefaults(defineProps<SplitterGroupProps>(), {\n autoSaveId: null,\n keyboardResizeBy: 10,\n storage: () => defaultStorage,\n})\nconst emits = defineEmits<SplitterGroupEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current size of layout */\n layout: typeof layout.value\n }) => any\n}>()\n\nconst debounceMap: {\n [key: string]: typeof savePanelGroupState\n} = {}\n\nconst { direction } = toRefs(props)\nconst groupId = useId(props.id, 'reka-splitter-group')\nconst dir = useDirection()\nconst { forwardRef, currentElement: panelGroupElementRef } = useForwardExpose()\n\nconst dragState = ref<DragState | null>(null)\nconst layout = ref<number[]>([])\nconst panelIdToLastNotifiedSizeMapRef = ref<Record<string, number>>({})\nconst panelSizeBeforeCollapseRef = ref<Map<string, number>>(new Map())\nconst prevDeltaRef = ref<number>(0)\n\nconst committedValuesRef = computed(() => ({\n autoSaveId: props.autoSaveId,\n direction: props.direction,\n dragState: dragState.value,\n id: groupId,\n keyboardResizeBy: props.keyboardResizeBy,\n storage: props.storage,\n}) satisfies {\n autoSaveId: string | null\n direction: Direction\n dragState: DragState | null\n id: string\n keyboardResizeBy: number | null\n storage: PanelGroupStorage\n})\n\nconst eagerValuesRef = ref<{\n layout: number[]\n panelDataArray: PanelData[]\n panelDataArrayChanged: boolean\n}>({\n layout: layout.value,\n panelDataArray: [],\n panelDataArrayChanged: false,\n})\n\nconst setLayout = (val: number[]) => layout.value = val\n\nuseWindowSplitterPanelGroupBehavior({\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray: eagerValuesRef.value.panelDataArray,\n setLayout,\n panelGroupElement: panelGroupElementRef,\n})\n\nwatchEffect(() => {\n const { panelDataArray } = eagerValuesRef.value\n const { autoSaveId } = props\n // If this panel has been configured to persist sizing information, save sizes to local storage.\n if (autoSaveId) {\n if (layout.value.length === 0 || layout.value.length !== panelDataArray.length)\n return\n\n let debouncedSave = debounceMap[autoSaveId]\n\n // Limit the frequency of localStorage updates.\n if (!debouncedSave) {\n debouncedSave = debounce(\n savePanelGroupState,\n LOCAL_STORAGE_DEBOUNCE_INTERVAL,\n )\n\n debounceMap[autoSaveId] = debouncedSave\n }\n\n // Clone mutable data before passing to the debounced function,\n // else we run the risk of saving an incorrect combination of mutable and immutable values to state.\n const clonedPanelDataArray = [...panelDataArray]\n const clonedPanelSizesBeforeCollapse = new Map(\n panelSizeBeforeCollapseRef.value,\n )\n\n debouncedSave(\n autoSaveId,\n clonedPanelDataArray,\n clonedPanelSizesBeforeCollapse,\n layout.value,\n props.storage,\n )\n }\n})\n\nfunction getPanelStyle(panelData: PanelData, defaultSize: number | undefined) {\n const { panelDataArray } = eagerValuesRef.value\n\n const panelIndex = findPanelDataIndex(panelDataArray, panelData)\n\n return computePanelFlexBoxStyle({\n defaultSize,\n dragState: dragState.value,\n layout: layout.value,\n panelData: panelDataArray,\n panelIndex,\n })\n}\n\nfunction registerPanel(panelData: PanelData) {\n const { panelDataArray } = eagerValuesRef.value\n\n panelDataArray.push(panelData)\n panelDataArray.sort((panelA, panelB) => {\n const orderA = panelA.order\n const orderB = panelB.order\n if (orderA == null && orderB == null)\n return 0\n else if (orderA == null)\n return -1\n else if (orderB == null)\n return 1\n else\n return orderA - orderB\n })\n\n eagerValuesRef.value.panelDataArrayChanged = true\n}\n\n// (Re)calculate group layout whenever panels are registered or unregistered.\n// useIsomorphicLayoutEffect\nwatch(() => eagerValuesRef.value.panelDataArrayChanged, () => {\n if (eagerValuesRef.value.panelDataArrayChanged) {\n eagerValuesRef.value.panelDataArrayChanged = false\n\n const { autoSaveId, storage } = committedValuesRef.value\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n // If this panel has been configured to persist sizing information,\n // default size should be restored from local storage if possible.\n let unsafeLayout: number[] | null = null\n if (autoSaveId) {\n const state = loadPanelGroupState(autoSaveId, panelDataArray, storage)\n if (state) {\n panelSizeBeforeCollapseRef.value = new Map(\n Object.entries(state.expandToSizes),\n )\n unsafeLayout = state.layout\n }\n }\n\n if (unsafeLayout === null) {\n unsafeLayout = calculateUnsafeDefaultLayout({\n panelDataArray,\n })\n }\n\n // Validate even saved layouts in case something has changed since last render\n // e.g. for pixel groups, this could be the size of the window\n const nextLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(\n panelData => panelData.constraints,\n ),\n })\n\n if (!areEqual(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n})\n\nfunction registerResizeHandle(dragHandleId: string) {\n return function resizeHandler(event: ResizeEvent) {\n event.preventDefault()\n const panelGroupElement = panelGroupElementRef.value\n if (!panelGroupElement)\n return () => null\n\n const { direction, dragState, id: groupId, keyboardResizeBy } = committedValuesRef.value\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n const { initialLayout } = dragState ?? {}\n\n const pivotIndices = determinePivotIndices(\n groupId,\n dragHandleId,\n panelGroupElement,\n )\n\n let delta = calculateDeltaPercentage(\n event,\n dragHandleId,\n direction,\n dragState,\n keyboardResizeBy,\n panelGroupElement,\n )\n if (delta === 0)\n return\n\n // Support RTL layouts\n const isHorizontal = direction === 'horizontal'\n if (dir.value === 'rtl' && isHorizontal)\n delta = -delta\n\n const panelConstraints = panelDataArray.map(panelData => panelData.constraints)\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: initialLayout ?? prevLayout,\n panelConstraints,\n pivotIndices,\n trigger: isKeyDown(event) ? 'keyboard' : 'mouse-or-touch',\n })\n\n const layoutChanged = !compareLayouts(prevLayout, nextLayout)\n\n // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)\n // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)\n if (isMouseEvent(event) || isTouchEvent(event)) {\n // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.\n // In this case, Panel sizes might not change–\n // but updating cursor in this scenario would cause a flicker.\n if (prevDeltaRef.value !== delta) {\n prevDeltaRef.value = delta\n\n if (!layoutChanged) {\n // If the pointer has moved too far to resize the panel any further, note this so we can update the cursor.\n // This mimics VS Code behavior.\n if (isHorizontal) {\n reportConstraintsViolation(\n dragHandleId,\n delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX,\n )\n }\n else {\n reportConstraintsViolation(\n dragHandleId,\n delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX,\n )\n }\n }\n else {\n reportConstraintsViolation(dragHandleId, 0)\n }\n }\n }\n\n if (layoutChanged) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n}\n\nfunction resizePanel(panelData: PanelData, unsafePanelSize: number) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints)\n\n const { panelSize, pivotIndices } = panelDataHelper(\n panelDataArray,\n panelData,\n prevLayout,\n )\n\n assert(panelSize != null)\n\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1\n const delta = isLastPanel\n ? panelSize - unsafePanelSize\n : unsafePanelSize - panelSize\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: 'imperative-api',\n })\n\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n}\n\nfunction reevaluatePanelConstraints(panelData: PanelData, prevConstraints: PanelConstraints) {\n const { layout, panelDataArray } = eagerValuesRef.value\n const index = findPanelDataIndex(panelDataArray, panelData)\n panelDataArray[index] = panelData\n eagerValuesRef.value.panelDataArrayChanged = true\n const {\n collapsedSize: prevCollapsedSize = 0,\n collapsible: prevCollapsible,\n } = prevConstraints\n\n const {\n collapsedSize: nextCollapsedSize = 0,\n collapsible: nextCollapsible,\n maxSize: nextMaxSize = 100,\n minSize: nextMinSize = 0,\n } = panelData.constraints\n\n const { panelSize: prevPanelSize } = panelDataHelper(\n panelDataArray,\n panelData,\n layout,\n )\n if (prevPanelSize === null) {\n // It's possible that the panels in this group have changed since the last render\n return\n }\n\n if (\n prevCollapsible\n && nextCollapsible\n && prevPanelSize === prevCollapsedSize\n ) {\n if (prevCollapsedSize !== nextCollapsedSize) {\n resizePanel(panelData, nextCollapsedSize)\n }\n else {\n // Stay collapsed\n }\n }\n else if (prevPanelSize < nextMinSize) {\n resizePanel(panelData, nextMinSize)\n }\n else if (prevPanelSize > nextMaxSize) {\n resizePanel(panelData, nextMaxSize)\n }\n}\n\nfunction startDragging(dragHandleId: string, event: ResizeEvent) {\n const { direction } = committedValuesRef.value\n const { layout } = eagerValuesRef.value\n if (!panelGroupElementRef.value)\n return\n\n const handleElement = getResizeHandleElement(\n dragHandleId,\n panelGroupElementRef.value,\n )\n assert(handleElement)\n\n const initialCursorPosition = getResizeEventCursorPosition(\n direction,\n event,\n )\n\n dragState.value = {\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n initialLayout: layout,\n }\n}\nfunction stopDragging() {\n dragState.value = null\n}\n\nfunction unregisterPanel(panelData: PanelData) {\n const { panelDataArray } = eagerValuesRef.value\n\n const index = findPanelDataIndex(panelDataArray, panelData)\n if (index >= 0) {\n panelDataArray.splice(index, 1)\n\n // TRICKY\n // When a panel is removed from the group, we should delete the most recent prev-size entry for it.\n // If we don't do this, then a conditionally rendered panel might not call onResize when it's re-mounted.\n // Strict effects mode makes this tricky though because all panels will be registered, unregistered, then re-registered on mount.\n delete panelIdToLastNotifiedSizeMapRef.value[panelData.id]\n\n eagerValuesRef.value.panelDataArrayChanged = true\n }\n}\n\nfunction collapsePanel(panelData: PanelData) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(\n panelData => panelData.constraints,\n )\n\n const {\n collapsedSize = 0,\n panelSize,\n pivotIndices,\n } = panelDataHelper(panelDataArray, panelData, prevLayout)\n\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`,\n )\n\n if (panelSize !== collapsedSize) {\n // Store size before collapse;\n // This is the size that gets restored if the expand() API is used.\n panelSizeBeforeCollapseRef.value.set(panelData.id, panelSize)\n\n const isLastPanel\n = findPanelDataIndex(panelDataArray, panelData)\n === panelDataArray.length - 1\n const delta = isLastPanel\n ? panelSize - collapsedSize\n : collapsedSize - panelSize\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: 'imperative-api',\n })\n\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n }\n}\n\nfunction expandPanel(panelData: PanelData) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value\n\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(\n panelData => panelData.constraints,\n )\n\n const {\n collapsedSize = 0,\n panelSize,\n minSize = 0,\n pivotIndices,\n } = panelDataHelper(panelDataArray, panelData, prevLayout)\n\n if (panelSize === collapsedSize) {\n // Restore this panel to the size it was before it was collapsed, if possible.\n const prevPanelSize = panelSizeBeforeCollapseRef.value.get(\n panelData.id,\n )\n\n const baseSize\n = prevPanelSize != null && prevPanelSize >= minSize\n ? prevPanelSize\n : minSize\n\n const isLastPanel\n = findPanelDataIndex(panelDataArray, panelData)\n === panelDataArray.length - 1\n const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize\n\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: 'imperative-api',\n })\n\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout)\n\n eagerValuesRef.value.layout = nextLayout\n\n emits('layout', nextLayout)\n\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value,\n )\n }\n }\n }\n}\n\nfunction getPanelSize(panelData: PanelData) {\n const { layout, panelDataArray } = eagerValuesRef.value\n\n const { panelSize } = panelDataHelper(panelDataArray, panelData, layout)\n\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`,\n )\n\n return panelSize\n}\n\nfunction isPanelCollapsed(panelData: PanelData) {\n const { layout, panelDataArray } = eagerValuesRef.value\n\n const {\n collapsedSize = 0,\n collapsible,\n panelSize,\n } = panelDataHelper(panelDataArray, panelData, layout)\n\n if (!collapsible)\n return false\n\n // panelSize is undefined during ssr due to vue ssr reactivity limitation.\n if (panelSize === undefined) {\n return panelData.constraints.defaultSize === panelData.constraints.collapsedSize\n }\n else {\n return panelSize === collapsedSize\n }\n}\n\nfunction isPanelExpanded(panelData: PanelData) {\n const { layout, panelDataArray } = eagerValuesRef.value\n\n const {\n collapsedSize = 0,\n collapsible,\n panelSize,\n } = panelDataHelper(panelDataArray, panelData, layout)\n\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`,\n )\n\n return !collapsible || panelSize > collapsedSize\n}\n\nprovidePanelGroupContext({\n direction,\n dragState: dragState.value,\n groupId,\n reevaluatePanelConstraints,\n registerPanel,\n registerResizeHandle,\n resizePanel,\n startDragging,\n stopDragging,\n unregisterPanel,\n panelGroupElement: panelGroupElementRef,\n\n collapsePanel,\n expandPanel,\n isPanelCollapsed,\n isPanelExpanded,\n getPanelSize,\n getPanelStyle,\n})\n\nfunction findPanelDataIndex(panelDataArray: PanelData[], panelData: PanelData) {\n return panelDataArray.findIndex(\n prevPanelData =>\n prevPanelData === panelData || prevPanelData.id === panelData.id,\n )\n}\n\nfunction panelDataHelper(\n panelDataArray: PanelData[],\n panelData: PanelData,\n layout: number[],\n) {\n const panelIndex = findPanelDataIndex(panelDataArray, panelData)\n\n const isLastPanel = panelIndex === panelDataArray.length - 1\n const pivotIndices = isLastPanel\n ? [panelIndex - 1, panelIndex]\n : [panelIndex, panelIndex + 1]\n\n const panelSize = layout[panelIndex]\n\n return {\n ...panelData.constraints,\n panelSize,\n pivotIndices,\n }\n}\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n :style=\"{\n display: 'flex',\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\n height: '100%',\n overflow: 'hidden',\n width: '100%',\n }\"\n data-panel-group=\"\"\n :data-orientation=\"direction\"\n :data-panel-group-id=\"groupId\"\n >\n <slot :layout=\"layout\" />\n </Primitive>\n</template>\n"],"names":["direction","dragState","groupId","panelData","layout"],"mappings":"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"}
@@ -65,23 +65,26 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
65
65
  const style = vue.computed(() => getPanelStyle(panelDataRef.value, props.defaultSize));
66
66
  const isCollapsed = vue.computed(() => isPanelCollapsed(panelDataRef.value));
67
67
  const isExpanded = vue.computed(() => !isCollapsed.value);
68
+ function collapse() {
69
+ collapsePanel(panelDataRef.value);
70
+ }
71
+ function expand() {
72
+ expandPanel(panelDataRef.value);
73
+ }
74
+ function resize(size) {
75
+ resizePanel(panelDataRef.value, size);
76
+ }
68
77
  __expose({
69
78
  /** If panel is `collapsible`, collapse it fully. */
70
- collapse: () => {
71
- collapsePanel(panelDataRef.value);
72
- },
79
+ collapse,
73
80
  /** If panel is currently collapsed, expand it to its most recent size. */
74
- expand: () => {
75
- expandPanel(panelDataRef.value);
76
- },
81
+ expand,
77
82
  /** Gets the current size of the panel as a percentage (1 - 100). */
78
83
  getSize() {
79
84
  return getPanelSize(panelDataRef.value);
80
85
  },
81
86
  /** Resize panel to the specified percentage (1 - 100). */
82
- resize: (size) => {
83
- resizePanel(panelDataRef.value, size);
84
- },
87
+ resize,
85
88
  /** Returns `true` if the panel is currently collapsed */
86
89
  isCollapsed,
87
90
  /** Returns `true` if the panel is currently not collapsed */
@@ -103,7 +106,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
103
106
  default: vue.withCtx(() => [
104
107
  vue.renderSlot(_ctx.$slots, "default", {
105
108
  isCollapsed: isCollapsed.value,
106
- isExpanded: isExpanded.value
109
+ isExpanded: isExpanded.value,
110
+ expand,
111
+ collapse,
112
+ resize
107
113
  })
108
114
  ]),
109
115
  _: 3
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterPanel.cjs","sources":["../../src/Splitter/SplitterPanel.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { PRECISION } from './utils/constants'\n\nexport interface SplitterPanelProps extends PrimitiveProps {\n /** The size of panel when it is collapsed. */\n collapsedSize?: number\n /** Should panel collapse when resized beyond its `minSize`. When `true`, it will be collapsed to `collapsedSize`. */\n collapsible?: boolean\n /** Initial size of panel (numeric value between 1-100) */\n defaultSize?: number\n /** Panel id (unique within group); falls back to `useId` when not provided */\n id?: string\n /** The maximum allowable size of panel (numeric value between 1-100); defaults to `100` */\n maxSize?: number\n /** The minimum allowable size of panel (numeric value between 1-100); defaults to `10` */\n minSize?: number\n /** The order of panel within group; required for groups with conditionally rendered panels */\n order?: number\n}\n\nexport type SplitterPanelEmits = {\n /** Event handler called when panel is collapsed. */\n collapse: []\n /** Event handler called when panel is expanded. */\n expand: []\n /** Event handler called when panel is resized; size parameter is a numeric value between 1-100. */\n resize: [size: number, prevSize: number | undefined]\n}\n\nexport type PanelOnCollapse = () => void\nexport type PanelOnExpand = () => void\nexport type PanelOnResize = (\n size: number,\n prevSize: number | undefined\n) => void\n\nexport type PanelCallbacks = {\n onCollapse?: PanelOnCollapse\n onExpand?: PanelOnExpand\n onResize?: PanelOnResize\n}\n\nexport type PanelConstraints = {\n collapsedSize?: number | undefined\n collapsible?: boolean | undefined\n defaultSize?: number | undefined\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize?: number | undefined\n minSize?: number | undefined\n}\n\nexport type PanelData = {\n callbacks: PanelCallbacks\n constraints: PanelConstraints\n id: string\n idIsFromProps: boolean\n order: number | undefined\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { computed, onMounted, onUnmounted, watch } from 'vue'\nimport { injectPanelGroupContext } from './SplitterGroup.vue'\n\nconst props = defineProps<SplitterPanelProps>()\nconst emits = defineEmits<SplitterPanelEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Is the panel collapsed */\n isCollapsed: typeof isCollapsed.value\n /** Is the panel expanded */\n isExpanded: typeof isExpanded.value\n }) => any\n}>()\n\nconst panelGroupContext = injectPanelGroupContext()\nif (panelGroupContext === null) {\n throw new Error(\n 'SplitterPanel components must be rendered within a SplitterGroup container',\n )\n}\n\nconst { collapsePanel, expandPanel, getPanelSize, getPanelStyle, isPanelCollapsed, resizePanel, groupId, reevaluatePanelConstraints, registerPanel, unregisterPanel } = panelGroupContext\nconst panelId = useId(props.id, 'reka-splitter-panel')\n\nconst panelDataRef = computed(() => ({\n callbacks: {\n onCollapse: () => emits('collapse'),\n onExpand: () => emits('expand'),\n onResize: (...args) => emits('resize', ...args),\n },\n constraints: {\n collapsedSize: props.collapsedSize && Number.parseFloat(props.collapsedSize.toFixed(PRECISION)),\n collapsible: props.collapsible,\n defaultSize: props.defaultSize,\n /** Panel id (unique within group); falls back to useId when not provided */\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize: props.maxSize,\n minSize: props.minSize,\n },\n id: panelId,\n idIsFromProps: props.id !== undefined,\n order: props.order,\n}) satisfies PanelData)\n\nwatch(() => panelDataRef.value.constraints, (constraints, prevConstraints) => {\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (\n prevConstraints.collapsedSize !== constraints.collapsedSize\n || prevConstraints.collapsible !== constraints.collapsible\n || prevConstraints.maxSize !== constraints.maxSize\n || prevConstraints.minSize !== constraints.minSize\n ) {\n reevaluatePanelConstraints(panelDataRef.value, prevConstraints)\n }\n}, { deep: true })\n\nonMounted(() => {\n const panelData = panelDataRef.value\n registerPanel(panelData)\n onUnmounted(() => {\n unregisterPanel(panelData)\n })\n})\n\nconst style = computed(() => getPanelStyle(panelDataRef.value, props.defaultSize))\n/** Panel id (unique within group); falls back to useId when not provided */\n\nconst isCollapsed = computed(() => isPanelCollapsed(panelDataRef.value))\nconst isExpanded = computed(() => !isCollapsed.value)\n\ndefineExpose({\n /** If panel is `collapsible`, collapse it fully. */\n collapse: () => {\n collapsePanel(panelDataRef.value)\n },\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand: () => {\n expandPanel(panelDataRef.value)\n },\n /** Gets the current size of the panel as a percentage (1 - 100). */\n getSize() {\n return getPanelSize(panelDataRef.value)\n },\n /** Resize panel to the specified percentage (1 - 100). */\n resize: (size: number) => {\n resizePanel(panelDataRef.value, size)\n },\n /** Returns `true` if the panel is currently collapsed */\n isCollapsed,\n /** Returns `true` if the panel is currently not collapsed */\n isExpanded,\n})\n</script>\n\n<template>\n <Primitive\n :id=\"panelId\"\n :style=\"style\"\n :as=\"as\"\n :as-child=\"asChild\"\n data-panel=\"\"\n :data-panel-collapsible=\"collapsible || undefined\"\n :data-panel-group-id=\"groupId\"\n :data-panel-id=\"panelId\"\n :data-panel-size=\" Number.parseFloat(`${style.flexGrow}`).toFixed(1)\"\n :data-state=\"collapsible ? isCollapsed ? 'collapsed' : 'expanded' : undefined\"\n >\n <slot\n :is-collapsed=\"isCollapsed\"\n :is-expanded=\"isExpanded\"\n />\n </Primitive>\n</template>\n"],"names":["injectPanelGroupContext","useId","computed","PRECISION","watch","onMounted","onUnmounted"],"mappings":"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"}
1
+ {"version":3,"file":"SplitterPanel.cjs","sources":["../../src/Splitter/SplitterPanel.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { PRECISION } from './utils/constants'\n\nexport interface SplitterPanelProps extends PrimitiveProps {\n /** The size of panel when it is collapsed. */\n collapsedSize?: number\n /** Should panel collapse when resized beyond its `minSize`. When `true`, it will be collapsed to `collapsedSize`. */\n collapsible?: boolean\n /** Initial size of panel (numeric value between 1-100) */\n defaultSize?: number\n /** Panel id (unique within group); falls back to `useId` when not provided */\n id?: string\n /** The maximum allowable size of panel (numeric value between 1-100); defaults to `100` */\n maxSize?: number\n /** The minimum allowable size of panel (numeric value between 1-100); defaults to `10` */\n minSize?: number\n /** The order of panel within group; required for groups with conditionally rendered panels */\n order?: number\n}\n\nexport type SplitterPanelEmits = {\n /** Event handler called when panel is collapsed. */\n collapse: []\n /** Event handler called when panel is expanded. */\n expand: []\n /** Event handler called when panel is resized; size parameter is a numeric value between 1-100. */\n resize: [size: number, prevSize: number | undefined]\n}\n\nexport type PanelOnCollapse = () => void\nexport type PanelOnExpand = () => void\nexport type PanelOnResize = (\n size: number,\n prevSize: number | undefined\n) => void\n\nexport type PanelCallbacks = {\n onCollapse?: PanelOnCollapse\n onExpand?: PanelOnExpand\n onResize?: PanelOnResize\n}\n\nexport type PanelConstraints = {\n collapsedSize?: number | undefined\n collapsible?: boolean | undefined\n defaultSize?: number | undefined\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize?: number | undefined\n minSize?: number | undefined\n}\n\nexport type PanelData = {\n callbacks: PanelCallbacks\n constraints: PanelConstraints\n id: string\n idIsFromProps: boolean\n order: number | undefined\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, watch } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPanelGroupContext } from './SplitterGroup.vue'\n\nconst props = defineProps<SplitterPanelProps>()\nconst emits = defineEmits<SplitterPanelEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Is the panel collapsed */\n isCollapsed: typeof isCollapsed.value\n /** Is the panel expanded */\n isExpanded: typeof isExpanded.value\n /** If panel is `collapsible`, collapse it fully. */\n collapse: typeof collapse\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand: typeof expand\n /** Resize panel to the specified percentage (1 - 100). */\n resize: typeof resize\n }) => any\n}>()\n\nconst panelGroupContext = injectPanelGroupContext()\nif (panelGroupContext === null) {\n throw new Error(\n 'SplitterPanel components must be rendered within a SplitterGroup container',\n )\n}\n\nconst { collapsePanel, expandPanel, getPanelSize, getPanelStyle, isPanelCollapsed, resizePanel, groupId, reevaluatePanelConstraints, registerPanel, unregisterPanel } = panelGroupContext\nconst panelId = useId(props.id, 'reka-splitter-panel')\n\nconst panelDataRef = computed(() => ({\n callbacks: {\n onCollapse: () => emits('collapse'),\n onExpand: () => emits('expand'),\n onResize: (...args) => emits('resize', ...args),\n },\n constraints: {\n collapsedSize: props.collapsedSize && Number.parseFloat(props.collapsedSize.toFixed(PRECISION)),\n collapsible: props.collapsible,\n defaultSize: props.defaultSize,\n /** Panel id (unique within group); falls back to useId when not provided */\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize: props.maxSize,\n minSize: props.minSize,\n },\n id: panelId,\n idIsFromProps: props.id !== undefined,\n order: props.order,\n}) satisfies PanelData)\n\nwatch(() => panelDataRef.value.constraints, (constraints, prevConstraints) => {\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (\n prevConstraints.collapsedSize !== constraints.collapsedSize\n || prevConstraints.collapsible !== constraints.collapsible\n || prevConstraints.maxSize !== constraints.maxSize\n || prevConstraints.minSize !== constraints.minSize\n ) {\n reevaluatePanelConstraints(panelDataRef.value, prevConstraints)\n }\n}, { deep: true })\n\nonMounted(() => {\n const panelData = panelDataRef.value\n registerPanel(panelData)\n onUnmounted(() => {\n unregisterPanel(panelData)\n })\n})\n\nconst style = computed(() => getPanelStyle(panelDataRef.value, props.defaultSize))\n/** Panel id (unique within group); falls back to useId when not provided */\n\nconst isCollapsed = computed(() => isPanelCollapsed(panelDataRef.value))\nconst isExpanded = computed(() => !isCollapsed.value)\n\nfunction collapse() {\n collapsePanel(panelDataRef.value)\n}\n\nfunction expand() {\n expandPanel(panelDataRef.value)\n}\n\nfunction resize(size: number) {\n resizePanel(panelDataRef.value, size)\n}\n\ndefineExpose({\n /** If panel is `collapsible`, collapse it fully. */\n collapse,\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand,\n /** Gets the current size of the panel as a percentage (1 - 100). */\n getSize() {\n return getPanelSize(panelDataRef.value)\n },\n /** Resize panel to the specified percentage (1 - 100). */\n resize,\n /** Returns `true` if the panel is currently collapsed */\n isCollapsed,\n /** Returns `true` if the panel is currently not collapsed */\n isExpanded,\n})\n</script>\n\n<template>\n <Primitive\n :id=\"panelId\"\n :style=\"style\"\n :as=\"as\"\n :as-child=\"asChild\"\n data-panel=\"\"\n :data-panel-collapsible=\"collapsible || undefined\"\n :data-panel-group-id=\"groupId\"\n :data-panel-id=\"panelId\"\n :data-panel-size=\" Number.parseFloat(`${style.flexGrow}`).toFixed(1)\"\n :data-state=\"collapsible ? isCollapsed ? 'collapsed' : 'expanded' : undefined\"\n >\n <slot\n :is-collapsed=\"isCollapsed\"\n :is-expanded=\"isExpanded\"\n :expand=\"expand\"\n :collapse=\"collapse\"\n :resize=\"resize\"\n />\n </Primitive>\n</template>\n"],"names":["injectPanelGroupContext","useId","computed","PRECISION","watch","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmEA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAiBd,IAAA,MAAM,oBAAoBA,8CAAwB,EAAA;AAClD,IAAA,IAAI,sBAAsB,IAAM,EAAA;AAC9B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA;AAGF,IAAM,MAAA,EAAE,aAAe,EAAA,WAAA,EAAa,YAAc,EAAA,aAAA,EAAe,gBAAkB,EAAA,WAAA,EAAa,OAAS,EAAA,0BAAA,EAA4B,aAAe,EAAA,eAAA,EAAoB,GAAA,iBAAA;AACxK,IAAA,MAAM,OAAU,GAAAC,kBAAA,CAAM,KAAM,CAAA,EAAA,EAAI,qBAAqB,CAAA;AAErD,IAAM,MAAA,YAAA,GAAeC,aAAS,OAAO;AAAA,MACnC,SAAW,EAAA;AAAA,QACT,UAAA,EAAY,MAAM,KAAA,CAAM,UAAU,CAAA;AAAA,QAClC,QAAA,EAAU,MAAM,KAAA,CAAM,QAAQ,CAAA;AAAA,QAC9B,UAAU,CAAI,GAAA,IAAA,KAAS,KAAM,CAAA,QAAA,EAAU,GAAG,IAAI;AAAA,OAChD;AAAA,MACA,WAAa,EAAA;AAAA,QACX,aAAA,EAAe,MAAM,aAAiB,IAAA,MAAA,CAAO,WAAW,KAAM,CAAA,aAAA,CAAc,OAAQ,CAAAC,yBAAS,CAAC,CAAA;AAAA,QAC9F,aAAa,KAAM,CAAA,WAAA;AAAA,QACnB,aAAa,KAAM,CAAA,WAAA;AAAA;AAAA;AAAA,QAGnB,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,SAAS,KAAM,CAAA;AAAA,OACjB;AAAA,MACA,EAAI,EAAA,OAAA;AAAA,MACJ,aAAA,EAAe,MAAM,EAAO,KAAA,MAAA;AAAA,MAC5B,OAAO,KAAM,CAAA;AAAA,KACO,CAAA,CAAA;AAEtB,IAAAC,SAAA,CAAM,MAAM,YAAa,CAAA,KAAA,CAAM,WAAa,EAAA,CAAC,aAAa,eAAoB,KAAA;AAG5E,MAAA,IACE,eAAgB,CAAA,aAAA,KAAkB,WAAY,CAAA,aAAA,IAC3C,gBAAgB,WAAgB,KAAA,WAAA,CAAY,WAC5C,IAAA,eAAA,CAAgB,YAAY,WAAY,CAAA,OAAA,IACxC,eAAgB,CAAA,OAAA,KAAY,YAAY,OAC3C,EAAA;AACA,QAA2B,0BAAA,CAAA,YAAA,CAAa,OAAO,eAAe,CAAA;AAAA;AAChE,KACC,EAAA,EAAE,IAAM,EAAA,IAAA,EAAM,CAAA;AAEjB,IAAAC,aAAA,CAAU,MAAM;AACd,MAAA,MAAM,YAAY,YAAa,CAAA,KAAA;AAC/B,MAAA,aAAA,CAAc,SAAS,CAAA;AACvB,MAAAC,eAAA,CAAY,MAAM;AAChB,QAAA,eAAA,CAAgB,SAAS,CAAA;AAAA,OAC1B,CAAA;AAAA,KACF,CAAA;AAED,IAAM,MAAA,KAAA,GAAQJ,aAAS,MAAM,aAAA,CAAc,aAAa,KAAO,EAAA,KAAA,CAAM,WAAW,CAAC,CAAA;AAGjF,IAAA,MAAM,cAAcA,YAAS,CAAA,MAAM,gBAAiB,CAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACvE,IAAA,MAAM,UAAa,GAAAA,YAAA,CAAS,MAAM,CAAC,YAAY,KAAK,CAAA;AAEpD,IAAA,SAAS,QAAW,GAAA;AAClB,MAAA,aAAA,CAAc,aAAa,KAAK,CAAA;AAAA;AAGlC,IAAA,SAAS,MAAS,GAAA;AAChB,MAAA,WAAA,CAAY,aAAa,KAAK,CAAA;AAAA;AAGhC,IAAA,SAAS,OAAO,IAAc,EAAA;AAC5B,MAAY,WAAA,CAAA,YAAA,CAAa,OAAO,IAAI,CAAA;AAAA;AAGtC,IAAa,QAAA,CAAA;AAAA;AAAA,MAEX,QAAA;AAAA;AAAA,MAEA,MAAA;AAAA;AAAA,MAEA,OAAU,GAAA;AACR,QAAO,OAAA,YAAA,CAAa,aAAa,KAAK,CAAA;AAAA,OACxC;AAAA;AAAA,MAEA,MAAA;AAAA;AAAA,MAEA,WAAA;AAAA;AAAA,MAEA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -63,23 +63,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
63
63
  const style = computed(() => getPanelStyle(panelDataRef.value, props.defaultSize));
64
64
  const isCollapsed = computed(() => isPanelCollapsed(panelDataRef.value));
65
65
  const isExpanded = computed(() => !isCollapsed.value);
66
+ function collapse() {
67
+ collapsePanel(panelDataRef.value);
68
+ }
69
+ function expand() {
70
+ expandPanel(panelDataRef.value);
71
+ }
72
+ function resize(size) {
73
+ resizePanel(panelDataRef.value, size);
74
+ }
66
75
  __expose({
67
76
  /** If panel is `collapsible`, collapse it fully. */
68
- collapse: () => {
69
- collapsePanel(panelDataRef.value);
70
- },
77
+ collapse,
71
78
  /** If panel is currently collapsed, expand it to its most recent size. */
72
- expand: () => {
73
- expandPanel(panelDataRef.value);
74
- },
79
+ expand,
75
80
  /** Gets the current size of the panel as a percentage (1 - 100). */
76
81
  getSize() {
77
82
  return getPanelSize(panelDataRef.value);
78
83
  },
79
84
  /** Resize panel to the specified percentage (1 - 100). */
80
- resize: (size) => {
81
- resizePanel(panelDataRef.value, size);
82
- },
85
+ resize,
83
86
  /** Returns `true` if the panel is currently collapsed */
84
87
  isCollapsed,
85
88
  /** Returns `true` if the panel is currently not collapsed */
@@ -101,7 +104,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
101
104
  default: withCtx(() => [
102
105
  renderSlot(_ctx.$slots, "default", {
103
106
  isCollapsed: isCollapsed.value,
104
- isExpanded: isExpanded.value
107
+ isExpanded: isExpanded.value,
108
+ expand,
109
+ collapse,
110
+ resize
105
111
  })
106
112
  ]),
107
113
  _: 3
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterPanel.js","sources":["../../src/Splitter/SplitterPanel.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { PRECISION } from './utils/constants'\n\nexport interface SplitterPanelProps extends PrimitiveProps {\n /** The size of panel when it is collapsed. */\n collapsedSize?: number\n /** Should panel collapse when resized beyond its `minSize`. When `true`, it will be collapsed to `collapsedSize`. */\n collapsible?: boolean\n /** Initial size of panel (numeric value between 1-100) */\n defaultSize?: number\n /** Panel id (unique within group); falls back to `useId` when not provided */\n id?: string\n /** The maximum allowable size of panel (numeric value between 1-100); defaults to `100` */\n maxSize?: number\n /** The minimum allowable size of panel (numeric value between 1-100); defaults to `10` */\n minSize?: number\n /** The order of panel within group; required for groups with conditionally rendered panels */\n order?: number\n}\n\nexport type SplitterPanelEmits = {\n /** Event handler called when panel is collapsed. */\n collapse: []\n /** Event handler called when panel is expanded. */\n expand: []\n /** Event handler called when panel is resized; size parameter is a numeric value between 1-100. */\n resize: [size: number, prevSize: number | undefined]\n}\n\nexport type PanelOnCollapse = () => void\nexport type PanelOnExpand = () => void\nexport type PanelOnResize = (\n size: number,\n prevSize: number | undefined\n) => void\n\nexport type PanelCallbacks = {\n onCollapse?: PanelOnCollapse\n onExpand?: PanelOnExpand\n onResize?: PanelOnResize\n}\n\nexport type PanelConstraints = {\n collapsedSize?: number | undefined\n collapsible?: boolean | undefined\n defaultSize?: number | undefined\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize?: number | undefined\n minSize?: number | undefined\n}\n\nexport type PanelData = {\n callbacks: PanelCallbacks\n constraints: PanelConstraints\n id: string\n idIsFromProps: boolean\n order: number | undefined\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { computed, onMounted, onUnmounted, watch } from 'vue'\nimport { injectPanelGroupContext } from './SplitterGroup.vue'\n\nconst props = defineProps<SplitterPanelProps>()\nconst emits = defineEmits<SplitterPanelEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Is the panel collapsed */\n isCollapsed: typeof isCollapsed.value\n /** Is the panel expanded */\n isExpanded: typeof isExpanded.value\n }) => any\n}>()\n\nconst panelGroupContext = injectPanelGroupContext()\nif (panelGroupContext === null) {\n throw new Error(\n 'SplitterPanel components must be rendered within a SplitterGroup container',\n )\n}\n\nconst { collapsePanel, expandPanel, getPanelSize, getPanelStyle, isPanelCollapsed, resizePanel, groupId, reevaluatePanelConstraints, registerPanel, unregisterPanel } = panelGroupContext\nconst panelId = useId(props.id, 'reka-splitter-panel')\n\nconst panelDataRef = computed(() => ({\n callbacks: {\n onCollapse: () => emits('collapse'),\n onExpand: () => emits('expand'),\n onResize: (...args) => emits('resize', ...args),\n },\n constraints: {\n collapsedSize: props.collapsedSize && Number.parseFloat(props.collapsedSize.toFixed(PRECISION)),\n collapsible: props.collapsible,\n defaultSize: props.defaultSize,\n /** Panel id (unique within group); falls back to useId when not provided */\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize: props.maxSize,\n minSize: props.minSize,\n },\n id: panelId,\n idIsFromProps: props.id !== undefined,\n order: props.order,\n}) satisfies PanelData)\n\nwatch(() => panelDataRef.value.constraints, (constraints, prevConstraints) => {\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (\n prevConstraints.collapsedSize !== constraints.collapsedSize\n || prevConstraints.collapsible !== constraints.collapsible\n || prevConstraints.maxSize !== constraints.maxSize\n || prevConstraints.minSize !== constraints.minSize\n ) {\n reevaluatePanelConstraints(panelDataRef.value, prevConstraints)\n }\n}, { deep: true })\n\nonMounted(() => {\n const panelData = panelDataRef.value\n registerPanel(panelData)\n onUnmounted(() => {\n unregisterPanel(panelData)\n })\n})\n\nconst style = computed(() => getPanelStyle(panelDataRef.value, props.defaultSize))\n/** Panel id (unique within group); falls back to useId when not provided */\n\nconst isCollapsed = computed(() => isPanelCollapsed(panelDataRef.value))\nconst isExpanded = computed(() => !isCollapsed.value)\n\ndefineExpose({\n /** If panel is `collapsible`, collapse it fully. */\n collapse: () => {\n collapsePanel(panelDataRef.value)\n },\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand: () => {\n expandPanel(panelDataRef.value)\n },\n /** Gets the current size of the panel as a percentage (1 - 100). */\n getSize() {\n return getPanelSize(panelDataRef.value)\n },\n /** Resize panel to the specified percentage (1 - 100). */\n resize: (size: number) => {\n resizePanel(panelDataRef.value, size)\n },\n /** Returns `true` if the panel is currently collapsed */\n isCollapsed,\n /** Returns `true` if the panel is currently not collapsed */\n isExpanded,\n})\n</script>\n\n<template>\n <Primitive\n :id=\"panelId\"\n :style=\"style\"\n :as=\"as\"\n :as-child=\"asChild\"\n data-panel=\"\"\n :data-panel-collapsible=\"collapsible || undefined\"\n :data-panel-group-id=\"groupId\"\n :data-panel-id=\"panelId\"\n :data-panel-size=\" Number.parseFloat(`${style.flexGrow}`).toFixed(1)\"\n :data-state=\"collapsible ? isCollapsed ? 'collapsed' : 'expanded' : undefined\"\n >\n <slot\n :is-collapsed=\"isCollapsed\"\n :is-expanded=\"isExpanded\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SplitterPanel.js","sources":["../../src/Splitter/SplitterPanel.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useId } from '@/shared'\nimport { PRECISION } from './utils/constants'\n\nexport interface SplitterPanelProps extends PrimitiveProps {\n /** The size of panel when it is collapsed. */\n collapsedSize?: number\n /** Should panel collapse when resized beyond its `minSize`. When `true`, it will be collapsed to `collapsedSize`. */\n collapsible?: boolean\n /** Initial size of panel (numeric value between 1-100) */\n defaultSize?: number\n /** Panel id (unique within group); falls back to `useId` when not provided */\n id?: string\n /** The maximum allowable size of panel (numeric value between 1-100); defaults to `100` */\n maxSize?: number\n /** The minimum allowable size of panel (numeric value between 1-100); defaults to `10` */\n minSize?: number\n /** The order of panel within group; required for groups with conditionally rendered panels */\n order?: number\n}\n\nexport type SplitterPanelEmits = {\n /** Event handler called when panel is collapsed. */\n collapse: []\n /** Event handler called when panel is expanded. */\n expand: []\n /** Event handler called when panel is resized; size parameter is a numeric value between 1-100. */\n resize: [size: number, prevSize: number | undefined]\n}\n\nexport type PanelOnCollapse = () => void\nexport type PanelOnExpand = () => void\nexport type PanelOnResize = (\n size: number,\n prevSize: number | undefined\n) => void\n\nexport type PanelCallbacks = {\n onCollapse?: PanelOnCollapse\n onExpand?: PanelOnExpand\n onResize?: PanelOnResize\n}\n\nexport type PanelConstraints = {\n collapsedSize?: number | undefined\n collapsible?: boolean | undefined\n defaultSize?: number | undefined\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize?: number | undefined\n minSize?: number | undefined\n}\n\nexport type PanelData = {\n callbacks: PanelCallbacks\n constraints: PanelConstraints\n id: string\n idIsFromProps: boolean\n order: number | undefined\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, watch } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectPanelGroupContext } from './SplitterGroup.vue'\n\nconst props = defineProps<SplitterPanelProps>()\nconst emits = defineEmits<SplitterPanelEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Is the panel collapsed */\n isCollapsed: typeof isCollapsed.value\n /** Is the panel expanded */\n isExpanded: typeof isExpanded.value\n /** If panel is `collapsible`, collapse it fully. */\n collapse: typeof collapse\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand: typeof expand\n /** Resize panel to the specified percentage (1 - 100). */\n resize: typeof resize\n }) => any\n}>()\n\nconst panelGroupContext = injectPanelGroupContext()\nif (panelGroupContext === null) {\n throw new Error(\n 'SplitterPanel components must be rendered within a SplitterGroup container',\n )\n}\n\nconst { collapsePanel, expandPanel, getPanelSize, getPanelStyle, isPanelCollapsed, resizePanel, groupId, reevaluatePanelConstraints, registerPanel, unregisterPanel } = panelGroupContext\nconst panelId = useId(props.id, 'reka-splitter-panel')\n\nconst panelDataRef = computed(() => ({\n callbacks: {\n onCollapse: () => emits('collapse'),\n onExpand: () => emits('expand'),\n onResize: (...args) => emits('resize', ...args),\n },\n constraints: {\n collapsedSize: props.collapsedSize && Number.parseFloat(props.collapsedSize.toFixed(PRECISION)),\n collapsible: props.collapsible,\n defaultSize: props.defaultSize,\n /** Panel id (unique within group); falls back to useId when not provided */\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize: props.maxSize,\n minSize: props.minSize,\n },\n id: panelId,\n idIsFromProps: props.id !== undefined,\n order: props.order,\n}) satisfies PanelData)\n\nwatch(() => panelDataRef.value.constraints, (constraints, prevConstraints) => {\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (\n prevConstraints.collapsedSize !== constraints.collapsedSize\n || prevConstraints.collapsible !== constraints.collapsible\n || prevConstraints.maxSize !== constraints.maxSize\n || prevConstraints.minSize !== constraints.minSize\n ) {\n reevaluatePanelConstraints(panelDataRef.value, prevConstraints)\n }\n}, { deep: true })\n\nonMounted(() => {\n const panelData = panelDataRef.value\n registerPanel(panelData)\n onUnmounted(() => {\n unregisterPanel(panelData)\n })\n})\n\nconst style = computed(() => getPanelStyle(panelDataRef.value, props.defaultSize))\n/** Panel id (unique within group); falls back to useId when not provided */\n\nconst isCollapsed = computed(() => isPanelCollapsed(panelDataRef.value))\nconst isExpanded = computed(() => !isCollapsed.value)\n\nfunction collapse() {\n collapsePanel(panelDataRef.value)\n}\n\nfunction expand() {\n expandPanel(panelDataRef.value)\n}\n\nfunction resize(size: number) {\n resizePanel(panelDataRef.value, size)\n}\n\ndefineExpose({\n /** If panel is `collapsible`, collapse it fully. */\n collapse,\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand,\n /** Gets the current size of the panel as a percentage (1 - 100). */\n getSize() {\n return getPanelSize(panelDataRef.value)\n },\n /** Resize panel to the specified percentage (1 - 100). */\n resize,\n /** Returns `true` if the panel is currently collapsed */\n isCollapsed,\n /** Returns `true` if the panel is currently not collapsed */\n isExpanded,\n})\n</script>\n\n<template>\n <Primitive\n :id=\"panelId\"\n :style=\"style\"\n :as=\"as\"\n :as-child=\"asChild\"\n data-panel=\"\"\n :data-panel-collapsible=\"collapsible || undefined\"\n :data-panel-group-id=\"groupId\"\n :data-panel-id=\"panelId\"\n :data-panel-size=\" Number.parseFloat(`${style.flexGrow}`).toFixed(1)\"\n :data-state=\"collapsible ? isCollapsed ? 'collapsed' : 'expanded' : undefined\"\n >\n <slot\n :is-collapsed=\"isCollapsed\"\n :is-expanded=\"isExpanded\"\n :expand=\"expand\"\n :collapse=\"collapse\"\n :resize=\"resize\"\n />\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepperIndicator.cjs","sources":["../../src/Stepper/StepperIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectStepperItemContext } from './StepperItem.vue'\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nexport interface StepperIndicatorProps extends PrimitiveProps { }\n\nconst props = defineProps<StepperIndicatorProps>()\n\ndefineSlots<{\n default: (props: {\n /** Current step */\n step: number\n }) => any\n}>()\n\nconst itemContext = injectStepperItemContext()\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n >\n <slot :step=\"itemContext.step.value\">\n Step {{ itemContext.step.value }}\n </slot>\n </Primitive>\n</template>\n"],"names":["injectStepperItemContext","useForwardExpose"],"mappings":";;;;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AASd,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAC7C,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"StepperIndicator.cjs","sources":["../../src/Stepper/StepperIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectStepperItemContext } from './StepperItem.vue'\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nexport interface StepperIndicatorProps extends PrimitiveProps { }\n\nconst props = defineProps<StepperIndicatorProps>()\n\ndefineSlots<{\n default?: (props: {\n /** Current step */\n step: number\n }) => any\n}>()\n\nconst itemContext = injectStepperItemContext()\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n >\n <slot :step=\"itemContext.step.value\">\n Step {{ itemContext.step.value }}\n </slot>\n </Primitive>\n</template>\n"],"names":["injectStepperItemContext","useForwardExpose"],"mappings":";;;;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AASd,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAC7C,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepperIndicator.js","sources":["../../src/Stepper/StepperIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectStepperItemContext } from './StepperItem.vue'\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nexport interface StepperIndicatorProps extends PrimitiveProps { }\n\nconst props = defineProps<StepperIndicatorProps>()\n\ndefineSlots<{\n default: (props: {\n /** Current step */\n step: number\n }) => any\n}>()\n\nconst itemContext = injectStepperItemContext()\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n >\n <slot :step=\"itemContext.step.value\">\n Step {{ itemContext.step.value }}\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AASd,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAiB,gBAAA,EAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"StepperIndicator.js","sources":["../../src/Stepper/StepperIndicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\nimport { injectStepperItemContext } from './StepperItem.vue'\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nexport interface StepperIndicatorProps extends PrimitiveProps { }\n\nconst props = defineProps<StepperIndicatorProps>()\n\ndefineSlots<{\n default?: (props: {\n /** Current step */\n step: number\n }) => any\n}>()\n\nconst itemContext = injectStepperItemContext()\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n v-bind=\"props\"\n >\n <slot :step=\"itemContext.step.value\">\n Step {{ itemContext.step.value }}\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,OAAA;AASd,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAC7C,IAAiB,gBAAA,EAAA;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepperItem.cjs","sources":["../../src/Stepper/StepperItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nimport type { Ref } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createContext, useForwardExpose, useId } from '@/shared'\nimport { computed, toRefs } from 'vue'\nimport { injectStepperRootContext } from './StepperRoot.vue'\n\nexport const [injectStepperItemContext, provideStepperItemContext] = createContext<StepperItemContext>('StepperItem')\n\nexport type StepperState = 'completed' | 'active' | 'inactive'\n\nexport interface StepperItemContext {\n titleId: string\n descriptionId: string\n step: Ref<number>\n state: Ref<StepperState>\n disabled: Ref<boolean>\n isFocusable: Ref<boolean>\n}\n\nexport interface StepperItemProps extends PrimitiveProps {\n /** A unique value that associates the stepper item with an index */\n step: number\n /** When `true`, prevents the user from interacting with the step. */\n disabled?: boolean\n /** Shows whether the step is completed. */\n completed?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<StepperItemProps>(), {\n completed: false,\n disabled: false,\n})\n\ndefineSlots<{\n default: (props: {\n /** The current state of the stepper item */\n state: StepperState\n }) => any\n}>()\n\nconst { disabled, step, completed } = toRefs(props)\n\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectStepperRootContext()\n\nconst titleId = useId(undefined, 'reka-stepper-item-title')\nconst descriptionId = useId(undefined, 'reka-stepper-item-description')\n\nconst itemState = computed(() => {\n if (completed.value)\n return 'completed'\n if (rootContext.modelValue.value === step.value)\n return 'active'\n if (rootContext.modelValue.value! > step.value)\n return 'completed'\n return 'inactive'\n})\n\nconst isFocusable = computed(() => {\n if (disabled.value)\n return false\n if (rootContext.linear.value)\n return step.value <= rootContext.modelValue.value! || step.value === rootContext.modelValue.value! + 1\n\n return true\n})\n\nprovideStepperItemContext({\n titleId,\n descriptionId,\n state: itemState,\n disabled,\n step,\n isFocusable,\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-current=\"itemState === 'active' ? 'true' : undefined\"\n :data-state=\"itemState\"\n :disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-orientation=\"rootContext.orientation.value\"\n >\n <slot :state=\"itemState\" />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useForwardExpose","injectStepperRootContext","useId","computed"],"mappings":";;;;;;;;;AASO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAAIA,mCAAkC,aAAa;;;;;;;;;;;AAwBpH,IAAA,MAAM,KAAQ,GAAA,OAAA;AAYd,IAAA,MAAM,EAAE,QAAU,EAAA,IAAA,EAAM,SAAU,EAAA,GAAIC,WAAO,KAAK,CAAA;AAElD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AAExC,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAE7C,IAAM,MAAA,OAAA,GAAUC,kBAAM,CAAA,MAAA,EAAW,yBAAyB,CAAA;AAC1D,IAAM,MAAA,aAAA,GAAgBA,kBAAM,CAAA,MAAA,EAAW,+BAA+B,CAAA;AAEtE,IAAM,MAAA,SAAA,GAAYC,aAAS,MAAM;AAC/B,MAAA,IAAI,SAAU,CAAA,KAAA;AACZ,QAAO,OAAA,WAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,KAAU,IAAK,CAAA,KAAA;AACxC,QAAO,OAAA,QAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,GAAS,IAAK,CAAA,KAAA;AACvC,QAAO,OAAA,WAAA;AACT,MAAO,OAAA,UAAA;AAAA,KACR,CAAA;AAED,IAAM,MAAA,WAAA,GAAcA,aAAS,MAAM;AACjC,MAAA,IAAI,QAAS,CAAA,KAAA;AACX,QAAO,OAAA,KAAA;AACT,MAAA,IAAI,YAAY,MAAO,CAAA,KAAA;AACrB,QAAO,OAAA,IAAA,CAAK,SAAS,WAAY,CAAA,UAAA,CAAW,SAAU,IAAK,CAAA,KAAA,KAAU,WAAY,CAAA,UAAA,CAAW,KAAS,GAAA,CAAA;AAEvG,MAAO,OAAA,IAAA;AAAA,KACR,CAAA;AAED,IAA0B,yBAAA,CAAA;AAAA,MACxB,OAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,QAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"StepperItem.cjs","sources":["../../src/Stepper/StepperItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport { computed, toRefs } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createContext, useForwardExpose, useId } from '@/shared'\nimport { injectStepperRootContext } from './StepperRoot.vue'\n\nexport const [injectStepperItemContext, provideStepperItemContext] = createContext<StepperItemContext>('StepperItem')\n\nexport type StepperState = 'completed' | 'active' | 'inactive'\n\nexport interface StepperItemContext {\n titleId: string\n descriptionId: string\n step: Ref<number>\n state: Ref<StepperState>\n disabled: Ref<boolean>\n isFocusable: Ref<boolean>\n}\n\nexport interface StepperItemProps extends PrimitiveProps {\n /** A unique value that associates the stepper item with an index */\n step: number\n /** When `true`, prevents the user from interacting with the step. */\n disabled?: boolean\n /** Shows whether the step is completed. */\n completed?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<StepperItemProps>(), {\n completed: false,\n disabled: false,\n})\n\ndefineSlots<{\n default?: (props: {\n /** The current state of the stepper item */\n state: StepperState\n }) => any\n}>()\n\nconst { disabled, step, completed } = toRefs(props)\n\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectStepperRootContext()\n\nconst titleId = useId(undefined, 'reka-stepper-item-title')\nconst descriptionId = useId(undefined, 'reka-stepper-item-description')\n\nconst itemState = computed(() => {\n if (completed.value)\n return 'completed'\n if (rootContext.modelValue.value === step.value)\n return 'active'\n if (rootContext.modelValue.value! > step.value)\n return 'completed'\n return 'inactive'\n})\n\nconst isFocusable = computed(() => {\n if (disabled.value)\n return false\n if (rootContext.linear.value)\n return step.value <= rootContext.modelValue.value! || step.value === rootContext.modelValue.value! + 1\n\n return true\n})\n\nprovideStepperItemContext({\n titleId,\n descriptionId,\n state: itemState,\n disabled,\n step,\n isFocusable,\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-current=\"itemState === 'active' ? 'true' : undefined\"\n :data-state=\"itemState\"\n :disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-orientation=\"rootContext.orientation.value\"\n >\n <slot :state=\"itemState\" />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useForwardExpose","injectStepperRootContext","useId","computed"],"mappings":";;;;;;;;;AASO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAAIA,mCAAkC,aAAa;;;;;;;;;;;AAwBpH,IAAA,MAAM,KAAQ,GAAA,OAAA;AAYd,IAAA,MAAM,EAAE,QAAU,EAAA,IAAA,EAAM,SAAU,EAAA,GAAIC,WAAO,KAAK,CAAA;AAElD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AAExC,IAAA,MAAM,cAAcC,4CAAyB,EAAA;AAE7C,IAAM,MAAA,OAAA,GAAUC,kBAAM,CAAA,MAAA,EAAW,yBAAyB,CAAA;AAC1D,IAAM,MAAA,aAAA,GAAgBA,kBAAM,CAAA,MAAA,EAAW,+BAA+B,CAAA;AAEtE,IAAM,MAAA,SAAA,GAAYC,aAAS,MAAM;AAC/B,MAAA,IAAI,SAAU,CAAA,KAAA;AACZ,QAAO,OAAA,WAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,KAAU,IAAK,CAAA,KAAA;AACxC,QAAO,OAAA,QAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,GAAS,IAAK,CAAA,KAAA;AACvC,QAAO,OAAA,WAAA;AACT,MAAO,OAAA,UAAA;AAAA,KACR,CAAA;AAED,IAAM,MAAA,WAAA,GAAcA,aAAS,MAAM;AACjC,MAAA,IAAI,QAAS,CAAA,KAAA;AACX,QAAO,OAAA,KAAA;AACT,MAAA,IAAI,YAAY,MAAO,CAAA,KAAA;AACrB,QAAO,OAAA,IAAA,CAAK,SAAS,WAAY,CAAA,UAAA,CAAW,SAAU,IAAK,CAAA,KAAA,KAAU,WAAY,CAAA,UAAA,CAAW,KAAS,GAAA,CAAA;AAEvG,MAAO,OAAA,IAAA;AAAA,KACR,CAAA;AAED,IAA0B,yBAAA,CAAA;AAAA,MACxB,OAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,QAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepperItem.js","sources":["../../src/Stepper/StepperItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nimport type { Ref } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createContext, useForwardExpose, useId } from '@/shared'\nimport { computed, toRefs } from 'vue'\nimport { injectStepperRootContext } from './StepperRoot.vue'\n\nexport const [injectStepperItemContext, provideStepperItemContext] = createContext<StepperItemContext>('StepperItem')\n\nexport type StepperState = 'completed' | 'active' | 'inactive'\n\nexport interface StepperItemContext {\n titleId: string\n descriptionId: string\n step: Ref<number>\n state: Ref<StepperState>\n disabled: Ref<boolean>\n isFocusable: Ref<boolean>\n}\n\nexport interface StepperItemProps extends PrimitiveProps {\n /** A unique value that associates the stepper item with an index */\n step: number\n /** When `true`, prevents the user from interacting with the step. */\n disabled?: boolean\n /** Shows whether the step is completed. */\n completed?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<StepperItemProps>(), {\n completed: false,\n disabled: false,\n})\n\ndefineSlots<{\n default: (props: {\n /** The current state of the stepper item */\n state: StepperState\n }) => any\n}>()\n\nconst { disabled, step, completed } = toRefs(props)\n\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectStepperRootContext()\n\nconst titleId = useId(undefined, 'reka-stepper-item-title')\nconst descriptionId = useId(undefined, 'reka-stepper-item-description')\n\nconst itemState = computed(() => {\n if (completed.value)\n return 'completed'\n if (rootContext.modelValue.value === step.value)\n return 'active'\n if (rootContext.modelValue.value! > step.value)\n return 'completed'\n return 'inactive'\n})\n\nconst isFocusable = computed(() => {\n if (disabled.value)\n return false\n if (rootContext.linear.value)\n return step.value <= rootContext.modelValue.value! || step.value === rootContext.modelValue.value! + 1\n\n return true\n})\n\nprovideStepperItemContext({\n titleId,\n descriptionId,\n state: itemState,\n disabled,\n step,\n isFocusable,\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-current=\"itemState === 'active' ? 'true' : undefined\"\n :data-state=\"itemState\"\n :disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-orientation=\"rootContext.orientation.value\"\n >\n <slot :state=\"itemState\" />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;AASO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAAI,cAAkC,aAAa;;;;;;;;;;;AAwBpH,IAAA,MAAM,KAAQ,GAAA,OAAA;AAYd,IAAA,MAAM,EAAE,QAAU,EAAA,IAAA,EAAM,SAAU,EAAA,GAAI,OAAO,KAAK,CAAA;AAElD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AAExC,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAE7C,IAAM,MAAA,OAAA,GAAU,KAAM,CAAA,MAAA,EAAW,yBAAyB,CAAA;AAC1D,IAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,MAAA,EAAW,+BAA+B,CAAA;AAEtE,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,IAAI,SAAU,CAAA,KAAA;AACZ,QAAO,OAAA,WAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,KAAU,IAAK,CAAA,KAAA;AACxC,QAAO,OAAA,QAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,GAAS,IAAK,CAAA,KAAA;AACvC,QAAO,OAAA,WAAA;AACT,MAAO,OAAA,UAAA;AAAA,KACR,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,IAAI,QAAS,CAAA,KAAA;AACX,QAAO,OAAA,KAAA;AACT,MAAA,IAAI,YAAY,MAAO,CAAA,KAAA;AACrB,QAAO,OAAA,IAAA,CAAK,SAAS,WAAY,CAAA,UAAA,CAAW,SAAU,IAAK,CAAA,KAAA,KAAU,WAAY,CAAA,UAAA,CAAW,KAAS,GAAA,CAAA;AAEvG,MAAO,OAAA,IAAA;AAAA,KACR,CAAA;AAED,IAA0B,yBAAA,CAAA;AAAA,MACxB,OAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,QAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"StepperItem.js","sources":["../../src/Stepper/StepperItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport { computed, toRefs } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createContext, useForwardExpose, useId } from '@/shared'\nimport { injectStepperRootContext } from './StepperRoot.vue'\n\nexport const [injectStepperItemContext, provideStepperItemContext] = createContext<StepperItemContext>('StepperItem')\n\nexport type StepperState = 'completed' | 'active' | 'inactive'\n\nexport interface StepperItemContext {\n titleId: string\n descriptionId: string\n step: Ref<number>\n state: Ref<StepperState>\n disabled: Ref<boolean>\n isFocusable: Ref<boolean>\n}\n\nexport interface StepperItemProps extends PrimitiveProps {\n /** A unique value that associates the stepper item with an index */\n step: number\n /** When `true`, prevents the user from interacting with the step. */\n disabled?: boolean\n /** Shows whether the step is completed. */\n completed?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<StepperItemProps>(), {\n completed: false,\n disabled: false,\n})\n\ndefineSlots<{\n default?: (props: {\n /** The current state of the stepper item */\n state: StepperState\n }) => any\n}>()\n\nconst { disabled, step, completed } = toRefs(props)\n\nconst { forwardRef } = useForwardExpose()\n\nconst rootContext = injectStepperRootContext()\n\nconst titleId = useId(undefined, 'reka-stepper-item-title')\nconst descriptionId = useId(undefined, 'reka-stepper-item-description')\n\nconst itemState = computed(() => {\n if (completed.value)\n return 'completed'\n if (rootContext.modelValue.value === step.value)\n return 'active'\n if (rootContext.modelValue.value! > step.value)\n return 'completed'\n return 'inactive'\n})\n\nconst isFocusable = computed(() => {\n if (disabled.value)\n return false\n if (rootContext.linear.value)\n return step.value <= rootContext.modelValue.value! || step.value === rootContext.modelValue.value! + 1\n\n return true\n})\n\nprovideStepperItemContext({\n titleId,\n descriptionId,\n state: itemState,\n disabled,\n step,\n isFocusable,\n})\n</script>\n\n<template>\n <Primitive\n :ref=\"forwardRef\"\n :as=\"as\"\n :as-child=\"asChild\"\n :aria-current=\"itemState === 'active' ? 'true' : undefined\"\n :data-state=\"itemState\"\n :disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-disabled=\"disabled || !isFocusable ? '' : undefined\"\n :data-orientation=\"rootContext.orientation.value\"\n >\n <slot :state=\"itemState\" />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;AASO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAAI,cAAkC,aAAa;;;;;;;;;;;AAwBpH,IAAA,MAAM,KAAQ,GAAA,OAAA;AAYd,IAAA,MAAM,EAAE,QAAU,EAAA,IAAA,EAAM,SAAU,EAAA,GAAI,OAAO,KAAK,CAAA;AAElD,IAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA;AAExC,IAAA,MAAM,cAAc,wBAAyB,EAAA;AAE7C,IAAM,MAAA,OAAA,GAAU,KAAM,CAAA,MAAA,EAAW,yBAAyB,CAAA;AAC1D,IAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,MAAA,EAAW,+BAA+B,CAAA;AAEtE,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,IAAI,SAAU,CAAA,KAAA;AACZ,QAAO,OAAA,WAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,KAAU,IAAK,CAAA,KAAA;AACxC,QAAO,OAAA,QAAA;AACT,MAAI,IAAA,WAAA,CAAY,UAAW,CAAA,KAAA,GAAS,IAAK,CAAA,KAAA;AACvC,QAAO,OAAA,WAAA;AACT,MAAO,OAAA,UAAA;AAAA,KACR,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,IAAI,QAAS,CAAA,KAAA;AACX,QAAO,OAAA,KAAA;AACT,MAAA,IAAI,YAAY,MAAO,CAAA,KAAA;AACrB,QAAO,OAAA,IAAA,CAAK,SAAS,WAAY,CAAA,UAAA,CAAW,SAAU,IAAK,CAAA,KAAA,KAAU,WAAY,CAAA,UAAA,CAAW,KAAS,GAAA,CAAA;AAEvG,MAAO,OAAA,IAAA;AAAA,KACR,CAAA;AAED,IAA0B,yBAAA,CAAA;AAAA,MACxB,OAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,QAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -32,12 +32,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
32
32
  as: {}
33
33
  },
34
34
  emits: ["update:modelValue"],
35
- setup(__props, { emit: __emit }) {
35
+ setup(__props, { expose: __expose, emit: __emit }) {
36
36
  const props = __props;
37
37
  const emits = __emit;
38
38
  const { dir: propDir, orientation: propOrientation, linear } = vue.toRefs(props);
39
39
  const dir = shared_useDirection.useDirection(propDir);
40
- shared_useForwardExpose.useForwardExpose();
41
40
  const totalStepperItems = vue.ref(/* @__PURE__ */ new Set());
42
41
  const modelValue = core.useVModel(props, "modelValue", emits, {
43
42
  defaultValue: props.defaultValue,
@@ -60,6 +59,18 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
60
59
  }
61
60
  modelValue.value = step;
62
61
  }
62
+ function nextStep() {
63
+ goToStep((modelValue.value ?? 1) + 1);
64
+ }
65
+ function prevStep() {
66
+ goToStep((modelValue.value ?? 1) - 1);
67
+ }
68
+ function hasNext() {
69
+ return (modelValue.value ?? 1) < totalSteps.value;
70
+ }
71
+ function hasPrev() {
72
+ return (modelValue.value ?? 1) > 1;
73
+ }
63
74
  const nextStepperItem = vue.ref(null);
64
75
  const prevStepperItem = vue.ref(null);
65
76
  const isNextDisabled = vue.computed(() => nextStepperItem.value ? nextStepperItem.value.getAttribute("disabled") === "" : true);
@@ -86,6 +97,20 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
86
97
  linear,
87
98
  totalStepperItems
88
99
  });
100
+ __expose({
101
+ goToStep,
102
+ nextStep,
103
+ prevStep,
104
+ modelValue,
105
+ totalSteps,
106
+ isNextDisabled,
107
+ isPrevDisabled,
108
+ isFirstStep,
109
+ isLastStep,
110
+ hasNext,
111
+ hasPrev
112
+ });
113
+ shared_useForwardExpose.useForwardExpose();
89
114
  return (_ctx, _cache) => {
90
115
  return vue.openBlock(), vue.createBlock(vue.unref(Primitive_Primitive.Primitive), {
91
116
  role: "group",
@@ -104,8 +129,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
104
129
  isFirstStep: isFirstStep.value,
105
130
  isLastStep: isLastStep.value,
106
131
  goToStep,
107
- nextStep: () => goToStep((vue.unref(modelValue) ?? 1) + 1),
108
- prevStep: () => goToStep((vue.unref(modelValue) ?? 1) - 1)
132
+ nextStep,
133
+ prevStep,
134
+ hasNext,
135
+ hasPrev
109
136
  }),
110
137
  vue.createElementVNode("div", _hoisted_1, " Step " + vue.toDisplayString(vue.unref(modelValue)) + " of " + vue.toDisplayString(totalStepperItems.value.size), 1)
111
138
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"StepperRoot.cjs","sources":["../../src/Stepper/StepperRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport type { DataOrientation, Direction } from '../shared/types'\nimport { Primitive } from '@/Primitive'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { computed, nextTick, ref, toRefs, watch } from 'vue'\n\nexport interface StepperRootContext {\n modelValue: Ref<number | undefined>\n changeModelValue: (value: number) => void\n orientation: Ref<DataOrientation>\n dir: Ref<Direction>\n linear: Ref<boolean>\n totalStepperItems: Ref<Set<HTMLElement>>\n}\n\nexport interface StepperRootProps extends PrimitiveProps {\n /**\n * The value of the step that should be active when initially rendered. Use when you do not need to control the state of the steps.\n */\n defaultValue?: number\n /**\n * The orientation the steps are laid out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down).\n * @defaultValue horizontal\n */\n orientation?: DataOrientation\n /**\n * The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /** The controlled value of the step to activate. Can be bound as `v-model`. */\n modelValue?: number\n /** Whether or not the steps must be completed in order. */\n linear?: boolean\n}\nexport type StepperRootEmits = {\n /** Event handler called when the value changes */\n 'update:modelValue': [payload: number | undefined]\n}\n\nexport const [injectStepperRootContext, provideStepperRootContext]\n = createContext<StepperRootContext>('StepperRoot')\n</script>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<StepperRootProps>(), {\n orientation: 'horizontal',\n linear: true,\n defaultValue: 1,\n})\nconst emits = defineEmits<StepperRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current step */\n modelValue: number | undefined\n /** Total number of steps */\n totalSteps: number\n /** Whether or not the next step is disabled */\n isNextDisabled: boolean\n /** Whether or not the previous step is disabled */\n isPrevDisabled: boolean\n /** Whether or not the first step is active */\n isFirstStep: boolean\n /** Whether or not the last step is active */\n isLastStep: boolean\n /** Go to a specific step */\n goToStep: (step: number) => void\n /** Go to the next step */\n nextStep: () => void\n /** Go to the previous step */\n prevStep: () => void\n }) => any\n}>()\n\nconst { dir: propDir, orientation: propOrientation, linear } = toRefs(props)\nconst dir = useDirection(propDir)\nuseForwardExpose()\n\nconst totalStepperItems = ref<Set<HTMLElement>>(new Set())\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n})\n\nconst totalStepperItemsArray = computed(() => Array.from(totalStepperItems.value))\n\nconst isFirstStep = computed(() => modelValue.value === 1)\nconst isLastStep = computed(() => modelValue.value === totalStepperItemsArray.value.length)\n\nconst totalSteps = computed(() => totalStepperItems.value.size)\n\nfunction goToStep(step: number) {\n if (step > totalSteps.value)\n return\n\n if (step < 1)\n return\n\n if (totalStepperItems.value.size && !!totalStepperItemsArray.value[step] && !!totalStepperItemsArray.value[step].getAttribute('disabled'))\n return\n\n if (linear.value) {\n if (step > (modelValue.value ?? 1) + 1)\n return\n }\n\n modelValue.value = step\n}\nconst nextStepperItem = ref<HTMLElement | null>(null)\nconst prevStepperItem = ref<HTMLElement | null>(null)\nconst isNextDisabled = computed(() => nextStepperItem.value ? nextStepperItem.value.getAttribute('disabled') === '' : true)\nconst isPrevDisabled = computed(() => prevStepperItem.value ? prevStepperItem.value.getAttribute('disabled') === '' : true)\n\nwatch(modelValue, async () => {\n await nextTick(() => {\n nextStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! < totalStepperItemsArray.value.length ? totalStepperItemsArray.value[modelValue.value!] : null\n prevStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! > 1 ? totalStepperItemsArray.value[modelValue.value! - 2] : null\n })\n})\nwatch(totalStepperItemsArray, async () => {\n await nextTick(() => {\n nextStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! < totalStepperItemsArray.value.length ? totalStepperItemsArray.value[modelValue.value!] : null\n prevStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! > 1 ? totalStepperItemsArray.value[modelValue.value! - 2] : null\n })\n})\n\nprovideStepperRootContext({\n modelValue,\n changeModelValue: (value: number) => {\n modelValue.value = value\n },\n orientation: propOrientation,\n dir,\n linear,\n totalStepperItems,\n})\n</script>\n\n<template>\n <Primitive\n role=\"group\"\n aria-label=\"progress\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-linear=\"linear ? '' : undefined\"\n :data-orientation=\"orientation\"\n >\n <slot\n :model-value=\"modelValue\"\n :total-steps=\"totalStepperItems.size\"\n :is-next-disabled=\"isNextDisabled\"\n :is-prev-disabled=\"isPrevDisabled\"\n :is-first-step=\"isFirstStep\"\n :is-last-step=\"isLastStep\"\n :go-to-step=\"goToStep\"\n :next-step=\"() => goToStep((modelValue ?? 1) + 1)\"\n :prev-step=\"() => goToStep((modelValue ?? 1) - 1)\"\n />\n\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n role=\"status\"\n :style=\"{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }\"\n >\n Step {{ modelValue }} of {{ totalStepperItems.size }}\n </div>\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useDirection","useForwardExpose","ref","useVModel","computed","watch","nextTick"],"mappings":"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"}
1
+ {"version":3,"file":"StepperRoot.cjs","sources":["../../src/Stepper/StepperRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { DataOrientation, Direction } from '../shared/types'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { computed, nextTick, ref, toRefs, watch } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { createContext, useDirection, useForwardExpose } from '@/shared'\n\nexport interface StepperRootContext {\n modelValue: Ref<number | undefined>\n changeModelValue: (value: number) => void\n orientation: Ref<DataOrientation>\n dir: Ref<Direction>\n linear: Ref<boolean>\n totalStepperItems: Ref<Set<HTMLElement>>\n}\n\nexport interface StepperRootProps extends PrimitiveProps {\n /**\n * The value of the step that should be active when initially rendered. Use when you do not need to control the state of the steps.\n */\n defaultValue?: number\n /**\n * The orientation the steps are laid out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down).\n * @defaultValue horizontal\n */\n orientation?: DataOrientation\n /**\n * The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode.\n */\n dir?: Direction\n /** The controlled value of the step to activate. Can be bound as `v-model`. */\n modelValue?: number\n /** Whether or not the steps must be completed in order. */\n linear?: boolean\n}\nexport type StepperRootEmits = {\n /** Event handler called when the value changes */\n 'update:modelValue': [payload: number | undefined]\n}\n\nexport const [injectStepperRootContext, provideStepperRootContext]\n = createContext<StepperRootContext>('StepperRoot')\n</script>\n\n<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<StepperRootProps>(), {\n orientation: 'horizontal',\n linear: true,\n defaultValue: 1,\n})\nconst emits = defineEmits<StepperRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current step */\n modelValue: number | undefined\n /** Total number of steps */\n totalSteps: number\n /** Whether or not the next step is disabled */\n isNextDisabled: boolean\n /** Whether or not the previous step is disabled */\n isPrevDisabled: boolean\n /** Whether or not the first step is active */\n isFirstStep: boolean\n /** Whether or not the last step is active */\n isLastStep: boolean\n /** Go to a specific step */\n goToStep: (step: number) => void\n /** Go to the next step */\n nextStep: () => void\n /** Go to the previous step */\n prevStep: () => void\n /** Whether or not there is a next step */\n hasNext: () => boolean\n /** Whether or not there is a previous step */\n hasPrev: () => boolean\n }) => any\n}>()\n\nconst { dir: propDir, orientation: propOrientation, linear } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst totalStepperItems = ref<Set<HTMLElement>>(new Set())\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n})\n\nconst totalStepperItemsArray = computed(() => Array.from(totalStepperItems.value))\n\nconst isFirstStep = computed(() => modelValue.value === 1)\nconst isLastStep = computed(() => modelValue.value === totalStepperItemsArray.value.length)\n\nconst totalSteps = computed(() => totalStepperItems.value.size)\n\nfunction goToStep(step: number) {\n if (step > totalSteps.value)\n return\n\n if (step < 1)\n return\n\n if (totalStepperItems.value.size && !!totalStepperItemsArray.value[step] && !!totalStepperItemsArray.value[step].getAttribute('disabled'))\n return\n\n if (linear.value) {\n if (step > (modelValue.value ?? 1) + 1)\n return\n }\n\n modelValue.value = step\n}\n\nfunction nextStep() {\n goToStep((modelValue.value ?? 1) + 1)\n}\n\nfunction prevStep() {\n goToStep((modelValue.value ?? 1) - 1)\n}\n\nfunction hasNext() {\n return (modelValue.value ?? 1) < totalSteps.value\n}\n\nfunction hasPrev() {\n return (modelValue.value ?? 1) > 1\n}\n\nconst nextStepperItem = ref<HTMLElement | null>(null)\nconst prevStepperItem = ref<HTMLElement | null>(null)\nconst isNextDisabled = computed(() => nextStepperItem.value ? nextStepperItem.value.getAttribute('disabled') === '' : true)\nconst isPrevDisabled = computed(() => prevStepperItem.value ? prevStepperItem.value.getAttribute('disabled') === '' : true)\n\nwatch(modelValue, async () => {\n await nextTick(() => {\n nextStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! < totalStepperItemsArray.value.length ? totalStepperItemsArray.value[modelValue.value!] : null\n prevStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! > 1 ? totalStepperItemsArray.value[modelValue.value! - 2] : null\n })\n})\nwatch(totalStepperItemsArray, async () => {\n await nextTick(() => {\n nextStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! < totalStepperItemsArray.value.length ? totalStepperItemsArray.value[modelValue.value!] : null\n prevStepperItem.value = totalStepperItemsArray.value.length && modelValue.value! > 1 ? totalStepperItemsArray.value[modelValue.value! - 2] : null\n })\n})\n\nprovideStepperRootContext({\n modelValue,\n changeModelValue: (value: number) => {\n modelValue.value = value\n },\n orientation: propOrientation,\n dir,\n linear,\n totalStepperItems,\n})\n\ndefineExpose({\n goToStep,\n nextStep,\n prevStep,\n modelValue,\n totalSteps,\n isNextDisabled,\n isPrevDisabled,\n isFirstStep,\n isLastStep,\n hasNext,\n hasPrev,\n})\n\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n role=\"group\"\n aria-label=\"progress\"\n :as=\"as\"\n :as-child=\"asChild\"\n :data-linear=\"linear ? '' : undefined\"\n :data-orientation=\"orientation\"\n >\n <slot\n :model-value=\"modelValue\"\n :total-steps=\"totalStepperItems.size\"\n :is-next-disabled=\"isNextDisabled\"\n :is-prev-disabled=\"isPrevDisabled\"\n :is-first-step=\"isFirstStep\"\n :is-last-step=\"isLastStep\"\n :go-to-step=\"goToStep\"\n :next-step=\"nextStep\"\n :prev-step=\"prevStep\"\n :has-next=\"hasNext\"\n :has-prev=\"hasPrev\"\n />\n\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n role=\"status\"\n :style=\"{\n transform: 'translateX(-100%)',\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }\"\n >\n Step {{ modelValue }} of {{ totalStepperItems.size }}\n </div>\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useDirection","ref","useVModel","computed","watch","nextTick","useForwardExpose"],"mappings":"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"}
@@ -30,12 +30,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
30
30
  as: {}
31
31
  },
32
32
  emits: ["update:modelValue"],
33
- setup(__props, { emit: __emit }) {
33
+ setup(__props, { expose: __expose, emit: __emit }) {
34
34
  const props = __props;
35
35
  const emits = __emit;
36
36
  const { dir: propDir, orientation: propOrientation, linear } = toRefs(props);
37
37
  const dir = useDirection(propDir);
38
- useForwardExpose();
39
38
  const totalStepperItems = ref(/* @__PURE__ */ new Set());
40
39
  const modelValue = useVModel(props, "modelValue", emits, {
41
40
  defaultValue: props.defaultValue,
@@ -58,6 +57,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
58
57
  }
59
58
  modelValue.value = step;
60
59
  }
60
+ function nextStep() {
61
+ goToStep((modelValue.value ?? 1) + 1);
62
+ }
63
+ function prevStep() {
64
+ goToStep((modelValue.value ?? 1) - 1);
65
+ }
66
+ function hasNext() {
67
+ return (modelValue.value ?? 1) < totalSteps.value;
68
+ }
69
+ function hasPrev() {
70
+ return (modelValue.value ?? 1) > 1;
71
+ }
61
72
  const nextStepperItem = ref(null);
62
73
  const prevStepperItem = ref(null);
63
74
  const isNextDisabled = computed(() => nextStepperItem.value ? nextStepperItem.value.getAttribute("disabled") === "" : true);
@@ -84,6 +95,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
84
95
  linear,
85
96
  totalStepperItems
86
97
  });
98
+ __expose({
99
+ goToStep,
100
+ nextStep,
101
+ prevStep,
102
+ modelValue,
103
+ totalSteps,
104
+ isNextDisabled,
105
+ isPrevDisabled,
106
+ isFirstStep,
107
+ isLastStep,
108
+ hasNext,
109
+ hasPrev
110
+ });
111
+ useForwardExpose();
87
112
  return (_ctx, _cache) => {
88
113
  return openBlock(), createBlock(unref(Primitive), {
89
114
  role: "group",
@@ -102,8 +127,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
102
127
  isFirstStep: isFirstStep.value,
103
128
  isLastStep: isLastStep.value,
104
129
  goToStep,
105
- nextStep: () => goToStep((unref(modelValue) ?? 1) + 1),
106
- prevStep: () => goToStep((unref(modelValue) ?? 1) - 1)
130
+ nextStep,
131
+ prevStep,
132
+ hasNext,
133
+ hasPrev
107
134
  }),
108
135
  createElementVNode("div", _hoisted_1, " Step " + toDisplayString(unref(modelValue)) + " of " + toDisplayString(totalStepperItems.value.size), 1)
109
136
  ]),