vectis-ui 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/dist/components/VAccordion/VAccordion.css +1 -1
  2. package/dist/components/VAccordion/VAccordion.d.ts +6 -5
  3. package/dist/components/VAccordion/VAccordion.js.map +1 -1
  4. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/VAccordion/VAccordionItem.css +1 -1
  6. package/dist/components/VAccordion/VAccordionItem.d.ts +1 -1
  7. package/dist/components/VAccordion/VAccordionItem.js.map +1 -1
  8. package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/VAlert/VAlert.css +2 -0
  10. package/dist/components/VAlert/VAlert.d.ts +73 -0
  11. package/dist/components/VAlert/VAlert.js +9 -0
  12. package/dist/components/VAlert/VAlert.js.map +1 -0
  13. package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js +96 -0
  14. package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
  15. package/dist/components/VAvatar/VAvatar.d.ts +2 -2
  16. package/dist/components/VAvatar/VAvatarGroup.d.ts +1 -1
  17. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +8 -8
  18. package/dist/components/VBadge/VBadge.d.ts +3 -3
  19. package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js +9 -9
  20. package/dist/components/VButton/VButton.d.ts +4 -4
  21. package/dist/components/VButton/VButtonGroup.css +1 -1
  22. package/dist/components/VButton/VButtonGroup.d.ts +2 -2
  23. package/dist/components/VButton/VButtonGroup.js.map +1 -1
  24. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/VCalendar/VCalendar.css +1 -1
  26. package/dist/components/VCalendar/VCalendar.d.ts +7 -1
  27. package/dist/components/VCalendar/VCalendar.js.map +1 -1
  28. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js +20 -18
  29. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/VCalendar/VCalendarEvent.js.map +1 -1
  31. package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/components/VCalendar/VCalendarMonth.css +1 -1
  33. package/dist/components/VCalendar/VCalendarMonth.d.ts +2 -2
  34. package/dist/components/VCalendar/VCalendarMonth.js.map +1 -1
  35. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/VCalendar/VCalendarTimeGrid.css +1 -1
  37. package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +3 -3
  38. package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -1
  39. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/VCalendar/VCalendarYear.css +1 -1
  41. package/dist/components/VCalendar/VCalendarYear.js.map +1 -1
  42. package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/VCalendar/gesture.d.ts +1 -16
  44. package/dist/components/VCalendar/gesture.js +1 -1
  45. package/dist/components/VCalendar/gesture.js.map +1 -1
  46. package/dist/components/VCalendar/types.d.ts +2 -0
  47. package/dist/components/VCard/VCard.css +2 -0
  48. package/dist/components/VCard/VCard.d.ts +87 -0
  49. package/dist/components/VCard/VCard.js +9 -0
  50. package/dist/components/VCard/VCard.js.map +1 -0
  51. package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js +103 -0
  52. package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  53. package/dist/components/VCarousel/VCarousel.d.ts +1 -1
  54. package/dist/components/VCarousel/VCarousel.js.map +1 -1
  55. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +18 -18
  56. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/VCheckbox/VCheckMark.css +2 -0
  58. package/dist/components/VCheckbox/VCheckMark.js +9 -0
  59. package/dist/components/VCheckbox/VCheckMark.js.map +1 -0
  60. package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js +33 -0
  61. package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js.map +1 -0
  62. package/dist/components/VCheckbox/VCheckbox.css +1 -1
  63. package/dist/components/VCheckbox/VCheckbox.d.ts +8 -3
  64. package/dist/components/VCheckbox/VCheckbox.js.map +1 -1
  65. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js +54 -69
  66. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/VChip/VChip.d.ts +6 -6
  68. package/dist/components/VChip/VChip.js.map +1 -1
  69. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +26 -26
  70. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/components/VColorInput/VColorInput.css +2 -0
  72. package/dist/components/VColorInput/VColorInput.d.ts +113 -0
  73. package/dist/components/VColorInput/VColorInput.js +9 -0
  74. package/dist/components/VColorInput/VColorInput.js.map +1 -0
  75. package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js +230 -0
  76. package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  77. package/dist/components/VColorPicker/VColorPicker.css +2 -0
  78. package/dist/components/VColorPicker/VColorPicker.d.ts +67 -0
  79. package/dist/components/VColorPicker/VColorPicker.js +9 -0
  80. package/dist/components/VColorPicker/VColorPicker.js.map +1 -0
  81. package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js +390 -0
  82. package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  83. package/dist/components/VColorPicker/color.d.ts +42 -0
  84. package/dist/components/VColorPicker/color.js +158 -0
  85. package/dist/components/VColorPicker/color.js.map +1 -0
  86. package/dist/components/VCombobox/VCombobox.css +1 -1
  87. package/dist/components/VCombobox/VCombobox.d.ts +46 -60
  88. package/dist/components/VCombobox/VCombobox.js.map +1 -1
  89. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +271 -372
  90. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/components/VCommandPalette/VCommandPalette.css +2 -0
  92. package/dist/components/VCommandPalette/VCommandPalette.d.ts +163 -0
  93. package/dist/components/VCommandPalette/VCommandPalette.js +9 -0
  94. package/dist/components/VCommandPalette/VCommandPalette.js.map +1 -0
  95. package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js +321 -0
  96. package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js.map +1 -0
  97. package/dist/components/VCommandPalette/VCommandPaletteItem.css +2 -0
  98. package/dist/components/VCommandPalette/VCommandPaletteItem.d.ts +38 -0
  99. package/dist/components/VCommandPalette/VCommandPaletteItem.js +9 -0
  100. package/dist/components/VCommandPalette/VCommandPaletteItem.js.map +1 -0
  101. package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js +69 -0
  102. package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  103. package/dist/components/VContextMenu/VContextMenu.css +2 -0
  104. package/dist/components/VContextMenu/VContextMenu.d.ts +66 -0
  105. package/dist/components/VContextMenu/VContextMenu.js +9 -0
  106. package/dist/components/VContextMenu/VContextMenu.js.map +1 -0
  107. package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js +148 -0
  108. package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  109. package/dist/components/VDataTable/VDataTable.css +1 -1
  110. package/dist/components/VDataTable/VDataTable.d.ts +41 -23
  111. package/dist/components/VDataTable/VDataTable.js.map +1 -1
  112. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +291 -186
  113. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/VDateInput/VDateInput.d.ts +27 -7
  115. package/dist/components/VDateInput/VDateInput.js.map +1 -1
  116. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +170 -162
  117. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/VDatePicker/VDatePicker.d.ts +3 -3
  119. package/dist/components/VDatePicker/VDatePicker.js.map +1 -1
  120. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +228 -227
  121. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/VDatePicker/keyboard.d.ts +7 -7
  123. package/dist/components/VDatePicker/keyboard.js +8 -6
  124. package/dist/components/VDatePicker/keyboard.js.map +1 -1
  125. package/dist/components/VDatePicker/names.js +16 -20
  126. package/dist/components/VDatePicker/names.js.map +1 -1
  127. package/dist/components/VDialog/VDialog.d.ts +2 -4
  128. package/dist/components/VDialog/VDialog.js.map +1 -1
  129. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +46 -77
  130. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/components/VDrawer/VDrawer.css +2 -0
  132. package/dist/components/VDrawer/VDrawer.d.ts +102 -0
  133. package/dist/components/VDrawer/VDrawer.js +9 -0
  134. package/dist/components/VDrawer/VDrawer.js.map +1 -0
  135. package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js +128 -0
  136. package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  137. package/dist/components/VEmptyState/VEmptyState.css +2 -0
  138. package/dist/components/VEmptyState/VEmptyState.d.ts +43 -0
  139. package/dist/components/VEmptyState/VEmptyState.js +9 -0
  140. package/dist/components/VEmptyState/VEmptyState.js.map +1 -0
  141. package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js +48 -0
  142. package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  143. package/dist/components/VField/VField.css +2 -0
  144. package/dist/components/VField/VField.d.ts +84 -0
  145. package/dist/components/VField/VField.js +9 -0
  146. package/dist/components/VField/VField.js.map +1 -0
  147. package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js +99 -0
  148. package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  149. package/dist/components/VField/VFieldAnnouncer.d.ts +7 -0
  150. package/dist/components/VField/VFieldAnnouncer.js +7 -0
  151. package/dist/components/VField/VFieldAnnouncer.js.map +1 -0
  152. package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js +19 -0
  153. package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  154. package/dist/components/VField/VFieldMessage.d.ts +11 -0
  155. package/dist/components/VField/VFieldMessage.js +7 -0
  156. package/dist/components/VField/VFieldMessage.js.map +1 -0
  157. package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js +32 -0
  158. package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js.map +1 -0
  159. package/dist/components/VFieldset/VFieldset.css +2 -0
  160. package/dist/components/VFieldset/VFieldset.d.ts +52 -0
  161. package/dist/components/VFieldset/VFieldset.js +9 -0
  162. package/dist/components/VFieldset/VFieldset.js.map +1 -0
  163. package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js +63 -0
  164. package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -0
  165. package/dist/components/VFileInput/VFileInput.css +1 -1
  166. package/dist/components/VFileInput/VFileInput.d.ts +31 -7
  167. package/dist/components/VFileInput/VFileInput.js.map +1 -1
  168. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +168 -161
  169. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/VFilePicker/VFilePicker.d.ts +4 -4
  171. package/dist/components/VHotkeys/VHotkeys.css +1 -1
  172. package/dist/components/VHotkeys/VHotkeys.js.map +1 -1
  173. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +27 -30
  174. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  175. package/dist/components/VHotkeys/platform.d.ts +2 -0
  176. package/dist/components/VHotkeys/platform.js +24 -5
  177. package/dist/components/VHotkeys/platform.js.map +1 -1
  178. package/dist/components/VHoverCard/VHoverCard.css +2 -0
  179. package/dist/components/VHoverCard/VHoverCard.d.ts +62 -0
  180. package/dist/components/VHoverCard/VHoverCard.js +9 -0
  181. package/dist/components/VHoverCard/VHoverCard.js.map +1 -0
  182. package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js +97 -0
  183. package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  184. package/dist/components/VIcon/icons/add.d.ts +5 -0
  185. package/dist/components/VIcon/icons/add.js +9 -0
  186. package/dist/components/VIcon/icons/add.js.map +1 -0
  187. package/dist/components/VIcon/icons/colorize.d.ts +5 -0
  188. package/dist/components/VIcon/icons/colorize.js +9 -0
  189. package/dist/components/VIcon/icons/colorize.js.map +1 -0
  190. package/dist/components/VIcon/icons/inbox.d.ts +5 -0
  191. package/dist/components/VIcon/icons/inbox.js +9 -0
  192. package/dist/components/VIcon/icons/inbox.js.map +1 -0
  193. package/dist/components/VIcon/icons/index.d.ts +42 -2
  194. package/dist/components/VIcon/icons/index.js +88 -72
  195. package/dist/components/VIcon/icons/index.js.map +1 -1
  196. package/dist/components/VIcon/icons/names.d.ts +2 -2
  197. package/dist/components/VIcon/icons/names.js +1 -1
  198. package/dist/components/VIcon/icons/names.js.map +1 -1
  199. package/dist/components/VIcon/icons/open_in_new.d.ts +5 -0
  200. package/dist/components/VIcon/icons/open_in_new.js +9 -0
  201. package/dist/components/VIcon/icons/open_in_new.js.map +1 -0
  202. package/dist/components/VIcon/icons/priority_high.d.ts +5 -0
  203. package/dist/components/VIcon/icons/priority_high.js +9 -0
  204. package/dist/components/VIcon/icons/priority_high.js.map +1 -0
  205. package/dist/components/VIcon/icons/remove.d.ts +5 -0
  206. package/dist/components/VIcon/icons/remove.js +9 -0
  207. package/dist/components/VIcon/icons/remove.js.map +1 -0
  208. package/dist/components/VIcon/icons/search_off.d.ts +5 -0
  209. package/dist/components/VIcon/icons/search_off.js +9 -0
  210. package/dist/components/VIcon/icons/search_off.js.map +1 -0
  211. package/dist/components/VIcon/icons/star.d.ts +5 -0
  212. package/dist/components/VIcon/icons/star.js +9 -0
  213. package/dist/components/VIcon/icons/star.js.map +1 -0
  214. package/dist/components/VIconButton/VIconButton.d.ts +4 -4
  215. package/dist/components/VInput/VInput.css +1 -1
  216. package/dist/components/VInput/VInput.d.ts +51 -2
  217. package/dist/components/VInput/VInput.js.map +1 -1
  218. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +129 -106
  219. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  220. package/dist/components/VInput/VInputGroup.css +1 -1
  221. package/dist/components/VInput/VInputGroup.d.ts +20 -0
  222. package/dist/components/VInput/VInputGroup.js.map +1 -1
  223. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js +50 -51
  224. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/components/VInputOTP/VInputOTP.css +1 -1
  226. package/dist/components/VInputOTP/VInputOTP.d.ts +27 -4
  227. package/dist/components/VInputOTP/VInputOTP.js.map +1 -1
  228. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +131 -113
  229. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  230. package/dist/components/VLink/VLink.css +2 -0
  231. package/dist/components/VLink/VLink.d.ts +53 -0
  232. package/dist/components/VLink/VLink.js +9 -0
  233. package/dist/components/VLink/VLink.js.map +1 -0
  234. package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js +58 -0
  235. package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  236. package/dist/components/VListbox/VListboxChevron.css +2 -0
  237. package/dist/components/VListbox/VListboxChevron.d.ts +12 -0
  238. package/dist/components/VListbox/VListboxChevron.js +9 -0
  239. package/dist/components/VListbox/VListboxChevron.js.map +1 -0
  240. package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js +25 -0
  241. package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js.map +1 -0
  242. package/dist/components/VListbox/VListboxGroup.css +2 -0
  243. package/dist/components/VListbox/VListboxGroup.d.ts +27 -0
  244. package/dist/components/VListbox/VListboxGroup.js +9 -0
  245. package/dist/components/VListbox/VListboxGroup.js.map +1 -0
  246. package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js +21 -0
  247. package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  248. package/dist/components/VListbox/VListboxOption.css +2 -0
  249. package/dist/components/{VCombobox/VComboboxOption.d.ts → VListbox/VListboxOption.d.ts} +4 -4
  250. package/dist/components/VListbox/VListboxOption.js +9 -0
  251. package/dist/components/VListbox/VListboxOption.js.map +1 -0
  252. package/dist/components/{VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js → VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js} +6 -6
  253. package/dist/components/VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -0
  254. package/dist/components/VListbox/VListboxPanel.css +2 -0
  255. package/dist/components/VListbox/VListboxPanel.d.ts +59 -0
  256. package/dist/components/VListbox/VListboxPanel.js +9 -0
  257. package/dist/components/VListbox/VListboxPanel.js.map +1 -0
  258. package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js +123 -0
  259. package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  260. package/dist/components/VListbox/VListboxSeparator.css +2 -0
  261. package/dist/components/VListbox/VListboxSeparator.d.ts +3 -0
  262. package/dist/components/VListbox/VListboxSeparator.js +9 -0
  263. package/dist/components/VListbox/VListboxSeparator.js.map +1 -0
  264. package/dist/components/{VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js → VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js} +4 -4
  265. package/dist/components/VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  266. package/dist/components/VListbox/VListboxValues.css +2 -0
  267. package/dist/components/VListbox/VListboxValues.d.ts +52 -0
  268. package/dist/components/VListbox/VListboxValues.js +9 -0
  269. package/dist/components/VListbox/VListboxValues.js.map +1 -0
  270. package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js +103 -0
  271. package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js.map +1 -0
  272. package/dist/components/VMenu/VMenu.d.ts +1 -1
  273. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +9 -9
  274. package/dist/components/VMenu/VMenuItem.d.ts +1 -1
  275. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +16 -16
  276. package/dist/components/VMenu/VMenuPanel.d.ts +2 -2
  277. package/dist/components/VMenu/VMenuPanel.js.map +1 -1
  278. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +7 -7
  279. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  280. package/dist/components/VMeter/VMeter.css +2 -0
  281. package/dist/components/VMeter/VMeter.d.ts +77 -0
  282. package/dist/components/VMeter/VMeter.js +9 -0
  283. package/dist/components/VMeter/VMeter.js.map +1 -0
  284. package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js +113 -0
  285. package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js.map +1 -0
  286. package/dist/components/VNumberInput/VNumberInput.css +2 -0
  287. package/dist/components/VNumberInput/VNumberInput.d.ts +114 -0
  288. package/dist/components/VNumberInput/VNumberInput.js +9 -0
  289. package/dist/components/VNumberInput/VNumberInput.js.map +1 -0
  290. package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js +251 -0
  291. package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  292. package/dist/components/VNumberInput/number.d.ts +30 -0
  293. package/dist/components/VNumberInput/number.js +38 -0
  294. package/dist/components/VNumberInput/number.js.map +1 -0
  295. package/dist/components/VPagination/VPagination.css +1 -1
  296. package/dist/components/VPagination/VPagination.d.ts +4 -12
  297. package/dist/components/VPagination/VPagination.js.map +1 -1
  298. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +89 -96
  299. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  300. package/dist/components/VProgressCircular/VProgressCircular.d.ts +2 -2
  301. package/dist/components/VProgressLinear/VProgressLinear.css +1 -1
  302. package/dist/components/VProgressLinear/VProgressLinear.d.ts +10 -7
  303. package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -1
  304. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js +52 -34
  305. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/dist/components/VRadio/VRadio.d.ts +8 -3
  307. package/dist/components/VRadio/VRadio.js.map +1 -1
  308. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js +52 -46
  309. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/components/VRating/VRating.css +2 -0
  311. package/dist/components/VRating/VRating.d.ts +92 -0
  312. package/dist/components/VRating/VRating.js +9 -0
  313. package/dist/components/VRating/VRating.js.map +1 -0
  314. package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js +158 -0
  315. package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js.map +1 -0
  316. package/dist/components/VResizable/VResizable.css +2 -0
  317. package/dist/components/VResizable/VResizable.d.ts +50 -0
  318. package/dist/components/VResizable/VResizable.js +9 -0
  319. package/dist/components/VResizable/VResizable.js.map +1 -0
  320. package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js +225 -0
  321. package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  322. package/dist/components/VResizable/VResizablePanel.css +2 -0
  323. package/dist/components/VResizable/VResizablePanel.d.ts +60 -0
  324. package/dist/components/VResizable/VResizablePanel.js +9 -0
  325. package/dist/components/VResizable/VResizablePanel.js.map +1 -0
  326. package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js +83 -0
  327. package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  328. package/dist/components/VResizable/context.d.ts +24 -0
  329. package/dist/components/VResizable/context.js +6 -0
  330. package/dist/components/VResizable/context.js.map +1 -0
  331. package/dist/components/VResizable/layout.d.ts +28 -0
  332. package/dist/components/VResizable/layout.js +41 -0
  333. package/dist/components/VResizable/layout.js.map +1 -0
  334. package/dist/components/VSelect/VSelect.css +2 -0
  335. package/dist/components/VSelect/VSelect.d.ts +193 -0
  336. package/dist/components/VSelect/VSelect.js +9 -0
  337. package/dist/components/VSelect/VSelect.js.map +1 -0
  338. package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js +424 -0
  339. package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
  340. package/dist/components/VSeparator/VSeparator.js.map +1 -1
  341. package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  342. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +8 -8
  343. package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +2 -2
  344. package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -1
  345. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +3 -3
  346. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  347. package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +3 -3
  348. package/dist/components/VSlider/VSlider.css +1 -1
  349. package/dist/components/VSlider/VSlider.d.ts +34 -8
  350. package/dist/components/VSlider/VSlider.js.map +1 -1
  351. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +236 -215
  352. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js +4 -4
  354. package/dist/components/VSnackbar/state.js.map +1 -1
  355. package/dist/components/VSplitButton/VSplitButton.css +2 -0
  356. package/dist/components/VSplitButton/VSplitButton.d.ts +114 -0
  357. package/dist/components/VSplitButton/VSplitButton.js +9 -0
  358. package/dist/components/VSplitButton/VSplitButton.js.map +1 -0
  359. package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js +148 -0
  360. package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  361. package/dist/components/VStepper/VStepper.css +2 -0
  362. package/dist/components/VStepper/VStepper.d.ts +73 -0
  363. package/dist/components/VStepper/VStepper.js +9 -0
  364. package/dist/components/VStepper/VStepper.js.map +1 -0
  365. package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js +96 -0
  366. package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
  367. package/dist/components/VSwitch/VSwitch.d.ts +8 -3
  368. package/dist/components/VSwitch/VSwitch.js.map +1 -1
  369. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js +53 -47
  370. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  371. package/dist/components/VTabs/VTab.css +1 -1
  372. package/dist/components/VTabs/VTab.d.ts +1 -1
  373. package/dist/components/VTabs/VTab.js.map +1 -1
  374. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  375. package/dist/components/VTabs/VTabs.css +1 -1
  376. package/dist/components/VTabs/VTabs.d.ts +13 -5
  377. package/dist/components/VTabs/VTabs.js.map +1 -1
  378. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +20 -20
  379. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  380. package/dist/components/VTextarea/VTextarea.css +1 -1
  381. package/dist/components/VTextarea/VTextarea.d.ts +22 -2
  382. package/dist/components/VTextarea/VTextarea.js.map +1 -1
  383. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +108 -100
  384. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  385. package/dist/components/VTimeInput/VTimeInput.d.ts +27 -7
  386. package/dist/components/VTimeInput/VTimeInput.js.map +1 -1
  387. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +187 -171
  388. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  389. package/dist/components/VTimePicker/VTimePicker.d.ts +2 -2
  390. package/dist/components/VTimePicker/VTimePicker.js.map +1 -1
  391. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +15 -15
  392. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  393. package/dist/components/VTimeline/VTimeline.css +2 -0
  394. package/dist/components/VTimeline/VTimeline.d.ts +59 -0
  395. package/dist/components/VTimeline/VTimeline.js +9 -0
  396. package/dist/components/VTimeline/VTimeline.js.map +1 -0
  397. package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js +53 -0
  398. package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  399. package/dist/components/VTimeline/VTimelineItem.css +2 -0
  400. package/dist/components/VTimeline/VTimelineItem.d.ts +48 -0
  401. package/dist/components/VTimeline/VTimelineItem.js +9 -0
  402. package/dist/components/VTimeline/VTimelineItem.js.map +1 -0
  403. package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js +70 -0
  404. package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  405. package/dist/components/VTimeline/context.d.ts +11 -0
  406. package/dist/components/VTimeline/context.js +6 -0
  407. package/dist/components/VTimeline/context.js.map +1 -0
  408. package/dist/components/VTimeline/datetime.d.ts +8 -0
  409. package/dist/components/VTimeline/datetime.js +36 -0
  410. package/dist/components/VTimeline/datetime.js.map +1 -0
  411. package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js +8 -8
  412. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +12 -12
  413. package/dist/components/VToggle/VToggle.d.ts +4 -4
  414. package/dist/components/VToggle/VToggleItem.d.ts +1 -1
  415. package/dist/components/VTooltip/VTooltip.d.ts +8 -2
  416. package/dist/components/VTooltip/VTooltip.js.map +1 -1
  417. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +45 -43
  418. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  419. package/dist/components/VTreeView/VTreeView.css +2 -0
  420. package/dist/components/VTreeView/VTreeView.d.ts +112 -0
  421. package/dist/components/VTreeView/VTreeView.js +9 -0
  422. package/dist/components/VTreeView/VTreeView.js.map +1 -0
  423. package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js +321 -0
  424. package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
  425. package/dist/components/VTypography/VTypography.d.ts +1 -1
  426. package/dist/components/VVirtualList/VVirtualList.css +2 -0
  427. package/dist/components/VVirtualList/VVirtualList.d.ts +78 -0
  428. package/dist/components/VVirtualList/VVirtualList.js +9 -0
  429. package/dist/components/VVirtualList/VVirtualList.js.map +1 -0
  430. package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js +114 -0
  431. package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js.map +1 -0
  432. package/dist/composables/useChoice.d.ts +28 -0
  433. package/dist/composables/useChoice.js +28 -0
  434. package/dist/composables/useChoice.js.map +1 -0
  435. package/dist/composables/useDebouncedSearch.d.ts +17 -0
  436. package/dist/composables/useDebouncedSearch.js +18 -0
  437. package/dist/composables/useDebouncedSearch.js.map +1 -0
  438. package/dist/composables/useEscapeDismiss.d.ts +8 -0
  439. package/dist/composables/useEscapeDismiss.js +16 -0
  440. package/dist/composables/useEscapeDismiss.js.map +1 -0
  441. package/dist/composables/useFieldIds.d.ts +2 -1
  442. package/dist/composables/useFieldIds.js +7 -6
  443. package/dist/composables/useFieldIds.js.map +1 -1
  444. package/dist/composables/useFieldPanel.d.ts +1 -0
  445. package/dist/composables/useFieldPanel.js +52 -42
  446. package/dist/composables/useFieldPanel.js.map +1 -1
  447. package/dist/composables/useFileField.d.ts +1 -3
  448. package/dist/composables/useFileField.js +48 -50
  449. package/dist/composables/useFileField.js.map +1 -1
  450. package/dist/composables/useHotkeyListener.d.ts +17 -0
  451. package/dist/composables/useHotkeyListener.js +26 -0
  452. package/dist/composables/useHotkeyListener.js.map +1 -0
  453. package/dist/composables/useIconClickHandlers.d.ts +2 -10
  454. package/dist/composables/useIconClickHandlers.js +1 -1
  455. package/dist/composables/useIconClickHandlers.js.map +1 -1
  456. package/dist/{components/VCombobox/infiniteScroll.d.ts → composables/useInfiniteScroll.d.ts} +6 -0
  457. package/dist/{components/VCombobox/infiniteScroll.js → composables/useInfiniteScroll.js} +7 -7
  458. package/dist/composables/useInfiniteScroll.js.map +1 -0
  459. package/dist/composables/useListbox.d.ts +132 -0
  460. package/dist/composables/useListbox.js +227 -0
  461. package/dist/composables/useListbox.js.map +1 -0
  462. package/dist/composables/useModalDialog.d.ts +28 -0
  463. package/dist/composables/useModalDialog.js +60 -0
  464. package/dist/composables/useModalDialog.js.map +1 -0
  465. package/dist/composables/useRootAttrs.d.ts +2 -3
  466. package/dist/composables/useRootAttrs.js.map +1 -1
  467. package/dist/composables/useVirtualList.d.ts +46 -0
  468. package/dist/composables/useVirtualList.js +145 -0
  469. package/dist/composables/useVirtualList.js.map +1 -0
  470. package/dist/i18n/en.js +50 -0
  471. package/dist/i18n/en.js.map +1 -1
  472. package/dist/i18n/fr.js +50 -0
  473. package/dist/i18n/fr.js.map +1 -1
  474. package/dist/i18n/types.d.ts +103 -2
  475. package/dist/icons.js +45 -37
  476. package/dist/index.d.ts +50 -4
  477. package/dist/index.js +80 -56
  478. package/dist/styles.css +1 -1
  479. package/dist/tokens/index.d.ts +43 -0
  480. package/dist/tokens/semantic.d.ts +42 -0
  481. package/dist/tokens/semantic.js +43 -1
  482. package/dist/tokens/semantic.js.map +1 -1
  483. package/dist/tokens/themes/dark.d.ts +1 -0
  484. package/dist/tokens/themes/dark.js +1 -0
  485. package/dist/tokens/themes/dark.js.map +1 -1
  486. package/dist/tokens.json +215 -1
  487. package/dist/types.d.ts +57 -4
  488. package/dist/utils/arrowNav.js.map +1 -1
  489. package/dist/utils/attrs.d.ts +9 -0
  490. package/dist/utils/attrs.js +14 -0
  491. package/dist/utils/attrs.js.map +1 -0
  492. package/dist/utils/date.d.ts +1 -0
  493. package/dist/utils/date.js +2 -2
  494. package/dist/utils/date.js.map +1 -1
  495. package/package.json +1 -1
  496. package/dist/components/VCombobox/VComboboxGroup.css +0 -2
  497. package/dist/components/VCombobox/VComboboxGroup.d.ts +0 -17
  498. package/dist/components/VCombobox/VComboboxGroup.js +0 -9
  499. package/dist/components/VCombobox/VComboboxGroup.js.map +0 -1
  500. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js +0 -21
  501. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  502. package/dist/components/VCombobox/VComboboxOption.css +0 -2
  503. package/dist/components/VCombobox/VComboboxOption.js +0 -9
  504. package/dist/components/VCombobox/VComboboxOption.js.map +0 -1
  505. package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +0 -1
  506. package/dist/components/VCombobox/VComboboxSeparator.css +0 -2
  507. package/dist/components/VCombobox/VComboboxSeparator.js +0 -9
  508. package/dist/components/VCombobox/VComboboxSeparator.js.map +0 -1
  509. package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  510. package/dist/components/VCombobox/infiniteScroll.js.map +0 -1
  511. /package/dist/components/{VCombobox/VComboboxSeparator.d.ts → VCheckbox/VCheckMark.d.ts} +0 -0
@@ -0,0 +1,225 @@
1
+ import { isDev as e } from "../../utils/env.js";
2
+ import { useMessages as t } from "../../i18n/state.js";
3
+ import { useSlotNodes as n } from "../../composables/useSlotNodes.js";
4
+ import { isRtl as r } from "../../utils/direction.js";
5
+ import { clamp as i } from "../../utils/number.js";
6
+ import { resizableKey as a } from "./context.js";
7
+ import { defaultSizes as o, isCollapsedAt as s, resizeAt as c } from "./layout.js";
8
+ import l from "./VResizablePanel.js";
9
+ import { Fragment as u, cloneVNode as d, computed as f, createCommentVNode as p, createElementBlock as m, createVNode as ee, defineComponent as h, mergeModels as g, onMounted as te, openBlock as _, provide as ne, ref as v, renderList as re, shallowReactive as y, shallowRef as ie, useId as ae, useModel as oe, watchEffect as b } from "vue";
10
+ //#region src/components/VResizable/VResizable.vue?vue&type=script&setup=true&lang.ts
11
+ var x = [
12
+ "data-orientation",
13
+ "data-disabled",
14
+ "data-dragging"
15
+ ], se = [
16
+ "tabindex",
17
+ "aria-orientation",
18
+ "aria-label",
19
+ "aria-controls",
20
+ "aria-valuenow",
21
+ "aria-valuemin",
22
+ "aria-valuemax",
23
+ "aria-disabled",
24
+ "data-active",
25
+ "onKeydown",
26
+ "onPointerdown"
27
+ ], ce = {
28
+ key: 0,
29
+ class: "v-resizable-grip",
30
+ "aria-hidden": "true"
31
+ }, S = /*@__PURE__*/ h({
32
+ __name: "VResizable",
33
+ props: /*@__PURE__*/ g({
34
+ orientation: { default: "horizontal" },
35
+ disabled: {
36
+ type: Boolean,
37
+ default: !1
38
+ },
39
+ grip: {
40
+ type: Boolean,
41
+ default: !1
42
+ },
43
+ step: { default: 5 }
44
+ }, {
45
+ modelValue: {},
46
+ modelModifiers: {}
47
+ }),
48
+ emits: /*@__PURE__*/ g(["change"], ["update:modelValue"]),
49
+ setup(h, { emit: g }) {
50
+ let S = h, C = oe(h, "modelValue"), w = g, le = t(), T = ae(), E = v(null), D = f(() => S.orientation === "horizontal"), O = n(), k = f(() => O.value.filter((e) => e.type === l)), A = (e, t, n) => e.props?.[t] ?? e.props?.[n], j = (e, t) => e.props?.id ?? `${T}-panel-${t}`, M = f(() => o(k.value.map((e) => {
51
+ let t = A(e, "defaultSize", "default-size");
52
+ return t == null ? void 0 : Number(t);
53
+ }))), N = f(() => C.value?.length === k.value.length ? C.value : M.value), P = y(/* @__PURE__ */ new Map()), F = (e) => {
54
+ for (let t of P.values()) if (t.index === e) return t;
55
+ }, I = /* @__PURE__ */ new WeakMap(), L = v(0), R = y(/* @__PURE__ */ new Map()), z = (e) => `${S.orientation}:${e}`;
56
+ function B(e) {
57
+ if (e === void 0) return;
58
+ if (typeof e == "number") return e;
59
+ if (e.trim().endsWith("%")) return Number.parseFloat(e);
60
+ let t = R.get(z(e));
61
+ return t === void 0 || !L.value ? void 0 : t / L.value * 100;
62
+ }
63
+ let V = f(() => k.value.map((e, t) => {
64
+ let n = F(t), r = i(B(n?.minSize) ?? 0, 0, 100);
65
+ return {
66
+ min: r,
67
+ max: i(B(n?.maxSize) ?? 100, r, 100),
68
+ collapsible: !!n?.collapsible,
69
+ collapsedSize: i(B(n?.collapsedSize) ?? 0, 0, r)
70
+ };
71
+ }));
72
+ function H(e) {
73
+ let t = N.value.map((t, n) => (n === e?.index ? e.collapsed : F(n)?.collapsed) ? V.value[n].collapsedSize : void 0), n = t.reduce((e, t) => e + (t ?? 0), 0), r = N.value.reduce((e, n, r) => e + (t[r] === void 0 ? n : 0), 0);
74
+ return N.value.map((e, i) => t[i] ?? (r ? e / r * (100 - n) : 0));
75
+ }
76
+ let U = f(() => H());
77
+ function ue(e, t) {
78
+ let n = document.createElement("div");
79
+ n.style.position = "absolute", n.style.visibility = "hidden", n.style.setProperty(D.value ? "width" : "height", t), e.append(n);
80
+ let r = n.getBoundingClientRect();
81
+ return n.remove(), D.value ? r.width : r.height;
82
+ }
83
+ function W(e) {
84
+ let t = E.value, n = k.value.map((e, t) => F(t)?.el?.getBoundingClientRect()), r = n.map((e) => e ? D.value ? e.width : e.height : 0), i = r.reduce((e, t) => e + t, 0);
85
+ if (!t || !i || n.some((e) => !e)) return H(e);
86
+ for (let e of P.values()) for (let n of [
87
+ e.minSize,
88
+ e.maxSize,
89
+ e.collapsedSize
90
+ ]) typeof n == "string" && !n.trim().endsWith("%") && R.set(z(n), ue(t, n));
91
+ L.value = i;
92
+ let a = H(e);
93
+ return r.every((e, t) => Math.abs(e - a[t] * i / 100) < 2) ? a : r.map((e) => e / i * 100);
94
+ }
95
+ te(W);
96
+ let G = (e, t) => e.length === t.length && e.every((e, n) => Math.abs(e - t[n]) < .01);
97
+ function K(e, t) {
98
+ G(e, N.value) || (C.value = e), e.forEach((e, n) => {
99
+ let r = F(n), i = V.value[n];
100
+ if (!r || !i.collapsible) return;
101
+ let a = s(e, i);
102
+ a && !s(t[n], i) && I.set(r, t[n]), r.setCollapsed(a);
103
+ });
104
+ }
105
+ function q(e, t) {
106
+ K(e, t), G(e, t) || w("change", e);
107
+ }
108
+ function de(e) {
109
+ let t = F(e), n = V.value[e];
110
+ return i((t && I.get(t)) ?? M.value[e], n.min, n.max);
111
+ }
112
+ function J(e, t, n) {
113
+ let r = V.value[e], i = (t ? r.collapsedSize : de(e)) - n[e];
114
+ return e < n.length - 1 ? c(n, e, i, V.value, 1) : c(n, e - 1, -i, V.value, 1);
115
+ }
116
+ function Y(e) {
117
+ let t = V.value[e], n = V.value[e + 1];
118
+ return !t?.collapsible && n?.collapsible ? e + 1 : e;
119
+ }
120
+ ne(a, {
121
+ get orientation() {
122
+ return S.orientation;
123
+ },
124
+ sizeAt: (e) => N.value[e] ?? 1,
125
+ register: (e, t) => P.set(e, t),
126
+ unregister: (e) => P.delete(e),
127
+ toggle(e, t) {
128
+ let n = W({
129
+ index: e,
130
+ collapsed: !t
131
+ }), r = V.value[e];
132
+ !r || s(n[e], r) === t || q(J(e, t, n), n);
133
+ }
134
+ });
135
+ function fe(e, t) {
136
+ if (S.disabled) return;
137
+ let n = W(), i = Y(e), a = V.value[i], o = i === e ? 1 : -1, l = D.value && r(E.value), u = D.value ? l ? "ArrowRight" : "ArrowLeft" : "ArrowUp", d = D.value ? l ? "ArrowLeft" : "ArrowRight" : "ArrowDown", f;
138
+ if (t.key === u) f = c(n, e, -S.step, V.value, 1);
139
+ else if (t.key === d) f = c(n, e, S.step, V.value, 1);
140
+ else if (t.key === "Home") f = c(n, e, ((a.collapsible ? a.collapsedSize : a.min) - n[i]) * o, V.value, 1);
141
+ else if (t.key === "End") f = c(n, e, (a.max - n[i]) * o, V.value, 1);
142
+ else if (t.key === "Enter" && a.collapsible) f = J(i, !s(n[i], a), n);
143
+ else return;
144
+ t.preventDefault(), q(f, n);
145
+ }
146
+ let X = ie(null), Z = (e) => D.value ? e.clientX : e.clientY;
147
+ function pe(e, t) {
148
+ if (S.disabled || t.button !== 0 || X.value) return;
149
+ let n = t.currentTarget, i = W();
150
+ if (L.value) {
151
+ t.preventDefault(), n.focus({ preventScroll: !0 });
152
+ try {
153
+ n.setPointerCapture(t.pointerId);
154
+ } catch {}
155
+ X.value = {
156
+ handle: e,
157
+ pointerId: t.pointerId,
158
+ origin: Z(t),
159
+ base: i,
160
+ sign: D.value && r(E.value) ? -1 : 1,
161
+ last: i
162
+ };
163
+ }
164
+ }
165
+ function me(e) {
166
+ let t = X.value;
167
+ if (!t || t.pointerId !== e.pointerId) return;
168
+ let n = (Z(e) - t.origin) / L.value * 100 * t.sign;
169
+ t.last = c(t.base, t.handle, n, V.value), K(t.last, t.base);
170
+ }
171
+ function Q(e) {
172
+ let t = X.value;
173
+ !t || t.pointerId !== e.pointerId || (X.value = null, G(t.last, t.base) || w("change", t.last));
174
+ }
175
+ let $ = f(() => k.value.slice(1).map((e, t) => {
176
+ let n = Y(t), r = k.value[n], i = V.value[n];
177
+ return {
178
+ controls: j(r, n),
179
+ label: A(r, "label", "label") ?? le.value.resizable.panel(n + 1),
180
+ now: Math.round(U.value[n] ?? 0),
181
+ min: Math.round(i.collapsible ? i.collapsedSize : i.min),
182
+ max: Math.round(i.max)
183
+ };
184
+ })), he = ({ node: e, index: t }) => d(e, {
185
+ index: t,
186
+ id: j(e, t)
187
+ });
188
+ return e && b(() => {
189
+ O.value.length !== k.value.length && console.warn("[VResizable] Only VResizablePanel children are rendered."), C.value && C.value.length !== k.value.length && console.warn(`[VResizable] The v-model holds ${C.value.length} sizes for ${k.value.length} panels; the default sizes are used.`);
190
+ }), (e, t) => (_(), m("div", {
191
+ ref_key: "rootEl",
192
+ ref: E,
193
+ class: "v-resizable",
194
+ "data-orientation": h.orientation,
195
+ "data-disabled": h.disabled ? "" : void 0,
196
+ "data-dragging": X.value ? "" : void 0
197
+ }, [(_(!0), m(u, null, re(k.value, (e, t) => (_(), m(u, { key: e.key ?? t }, [t > 0 ? (_(), m("div", {
198
+ key: 0,
199
+ class: "v-resizable-handle",
200
+ role: "separator",
201
+ tabindex: h.disabled ? void 0 : 0,
202
+ "aria-orientation": D.value ? "vertical" : void 0,
203
+ "aria-label": $.value[t - 1].label,
204
+ "aria-controls": $.value[t - 1].controls,
205
+ "aria-valuenow": $.value[t - 1].now,
206
+ "aria-valuemin": $.value[t - 1].min,
207
+ "aria-valuemax": $.value[t - 1].max,
208
+ "aria-disabled": h.disabled || void 0,
209
+ "data-active": X.value?.handle === t - 1 ? "" : void 0,
210
+ onKeydown: (e) => fe(t - 1, e),
211
+ onPointerdown: (e) => pe(t - 1, e),
212
+ onPointermove: me,
213
+ onPointerup: Q,
214
+ onPointercancel: Q,
215
+ onLostpointercapture: Q
216
+ }, [h.grip ? (_(), m("span", ce)) : p("", !0)], 40, se)) : p("", !0), ee(he, {
217
+ node: e,
218
+ index: t
219
+ }, null, 8, ["node", "index"])], 64))), 128))], 8, x));
220
+ }
221
+ });
222
+ //#endregion
223
+ export { S as default };
224
+
225
+ //# sourceMappingURL=VResizable.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VResizable.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VResizable/VResizable.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * No native element resizes siblings, so each handle follows the APG window splitter: a focusable\n * `separator` carrying the size of its primary panel, moved with the arrow keys or dragged under\n * pointer capture. Sizes are percentages rendered as `flex-grow` weights, which needs no\n * measurement on the server.\n */\n\nimport {\n cloneVNode,\n computed,\n onMounted,\n provide,\n ref,\n shallowReactive,\n shallowRef,\n useId,\n watchEffect,\n type FunctionalComponent,\n type VNode,\n} from 'vue'\n\nimport { useSlotNodes } from '../../composables/useSlotNodes'\nimport { useMessages } from '../../i18n/state'\nimport { isRtl } from '../../utils/direction'\nimport { isDev } from '../../utils/env'\nimport { clamp } from '../../utils/number'\nimport { resizableKey, type ResizablePanelEntry } from './context'\nimport { defaultSizes, isCollapsedAt, resizeAt, type PanelLimits } from './layout'\nimport VResizablePanel from './VResizablePanel.vue'\n\n/** Which way the panels are laid out: side by side, or stacked. */\nexport type ResizableOrientation = 'horizontal' | 'vertical'\n\n/** A panel limit: a number in percent of the group, or a CSS length such as `240px`. */\nexport type ResizableLength = number | string\n\ninterface ResizableProps {\n /**\n * `horizontal` puts the panels side by side, following the direction of the text; `vertical`\n * stacks them, and the group then needs a height.\n */\n orientation?: ResizableOrientation\n /** Fixes the sizes: the handles can neither be dragged nor focused. */\n disabled?: boolean\n /** Draws a grip in the middle of every handle, which makes it easier to find. */\n grip?: boolean\n /** How far an arrow key moves a handle, in percent of the group. */\n step?: number\n}\n\nconst props = withDefaults(defineProps<ResizableProps>(), {\n orientation: 'horizontal',\n disabled: false,\n grip: false,\n step: 5,\n})\n\n/**\n * The size of each panel, in percent of the space they share, adding up to 100. Left unbound,\n * the panels start from their `defaultSize`.\n */\nconst model = defineModel<number[]>()\n\nconst emit = defineEmits<{\n /**\n * The sizes have settled: a handle was released, moved with a key, or a panel collapsed or\n * reopened. Save them here rather than on every `update:modelValue` of a drag.\n */\n change: [sizes: number[]]\n}>()\n\ndefineSlots<{\n /** The `<VResizablePanel>`s, two or more. A handle is placed between each pair. */\n default(): unknown\n}>()\n\nconst m = useMessages()\nconst baseId = useId()\nconst rootEl = ref<HTMLElement | null>(null)\nconst horizontal = computed(() => props.orientation === 'horizontal')\n\n// @ssr\n/*\n * The panels are read from the slot's VNodes, never from a registry fed at mount, which would\n * render no handle on the server. Cloning gives each panel its position and the id its handle\n * points at (the VCarousel idiom).\n */\nconst nodes = useSlotNodes()\nconst panels = computed(() => nodes.value.filter((node) => node.type === VResizablePanel))\n\nconst nodeProp = (node: VNode, camel: string, kebab: string): unknown =>\n node.props?.[camel] ?? node.props?.[kebab]\n\nconst panelId = (node: VNode, index: number) =>\n (node.props?.id as string | undefined) ?? `${baseId}-panel-${index}`\n\nconst defaults = computed(() =>\n defaultSizes(\n panels.value.map((node) => {\n const size = nodeProp(node, 'defaultSize', 'default-size')\n return size === undefined || size === null ? undefined : Number(size)\n }),\n ),\n)\n\nconst sizes = computed(() =>\n model.value?.length === panels.value.length ? model.value : defaults.value,\n)\n\nconst entries = shallowReactive(new Map<string, ResizablePanelEntry>())\nconst entryAt = (index: number) => {\n for (const entry of entries.values()) if (entry.index === index) return entry\n return undefined\n}\n\n/** Restored when a collapsed panel reopens: its size when it collapsed, by panel. */\nconst restoreSizes = new WeakMap<ResizablePanelEntry, number>()\n\n// @core\n/*\n * CSS lengths are converted at each interaction, against the space the panels share at that\n * moment. The pixels are cached so that the ARIA values can be derived reactively.\n */\nconst space = ref(0)\nconst pixels = shallowReactive(new Map<string, number>())\n\nconst lengthKey = (length: string) => `${props.orientation}:${length}`\n\nfunction percentOf(length: ResizableLength | undefined): number | undefined {\n if (length === undefined) return undefined\n if (typeof length === 'number') return length\n if (length.trim().endsWith('%')) return Number.parseFloat(length)\n const px = pixels.get(lengthKey(length))\n return px === undefined || !space.value ? undefined : (px / space.value) * 100\n}\n\nconst limits = computed<PanelLimits[]>(() =>\n panels.value.map((_, index) => {\n const entry = entryAt(index)\n const min = clamp(percentOf(entry?.minSize) ?? 0, 0, 100)\n return {\n min,\n max: clamp(percentOf(entry?.maxSize) ?? 100, min, 100),\n collapsible: !!entry?.collapsible,\n collapsedSize: clamp(percentOf(entry?.collapsedSize) ?? 0, 0, min),\n }\n }),\n)\n\n/**\n * The sizes as laid out: a collapsed panel keeps its collapsed size, and the others share the\n * rest in proportion to their weights, as `flex-grow` distributes it. `before` gives one panel\n * back the collapsed state it had before its model changed.\n */\nfunction layoutOf(before?: { index: number; collapsed: boolean }) {\n const fixed = sizes.value.map((_, i) =>\n (i === before?.index ? before.collapsed : entryAt(i)?.collapsed)\n ? limits.value[i]!.collapsedSize\n : undefined,\n )\n const fixedTotal = fixed.reduce<number>((sum, size) => sum + (size ?? 0), 0)\n const weights = sizes.value.reduce((sum, size, i) => sum + (fixed[i] === undefined ? size : 0), 0)\n return sizes.value.map(\n (size, i) => fixed[i] ?? (weights ? (size / weights) * (100 - fixedTotal) : 0),\n )\n}\n\nconst layout = computed(() => layoutOf())\n\nfunction lengthInPixels(root: HTMLElement, length: string): number {\n const probe = document.createElement('div')\n probe.style.position = 'absolute'\n probe.style.visibility = 'hidden'\n probe.style.setProperty(horizontal.value ? 'width' : 'height', length)\n root.append(probe)\n const rect = probe.getBoundingClientRect()\n probe.remove()\n return horizontal.value ? rect.width : rect.height\n}\n\n/**\n * Measures the panels as they are drawn, which accounts for CSS limits that the weights alone do\n * not show, and refreshes the converted lengths. It falls back to the computed layout when\n * nothing can be measured.\n */\nfunction measure(before?: { index: number; collapsed: boolean }): number[] {\n const root = rootEl.value\n const rects = panels.value.map((_, i) => entryAt(i)?.el?.getBoundingClientRect())\n const extents = rects.map((rect) => (rect ? (horizontal.value ? rect.width : rect.height) : 0))\n const total = extents.reduce((sum, extent) => sum + extent, 0)\n if (!root || !total || rects.some((rect) => !rect)) return layoutOf(before)\n for (const entry of entries.values())\n for (const length of [entry.minSize, entry.maxSize, entry.collapsedSize])\n if (typeof length === 'string' && !length.trim().endsWith('%'))\n pixels.set(lengthKey(length), lengthInPixels(root, length))\n space.value = total\n const laidOut = layoutOf(before)\n // Within two pixels, the difference is the 1px lines shrunk off the panels: the computed sizes\n // are kept, so the model does not fill with measurement noise. Beyond, CSS limits are at work.\n const drawn = extents.every((extent, i) => Math.abs(extent - (laidOut[i]! * total) / 100) < 2)\n return drawn ? laidOut : extents.map((extent) => (extent / total) * 100)\n}\n\nonMounted(measure)\n\nconst sameSizes = (a: readonly number[], b: readonly number[]) =>\n a.length === b.length && a.every((size, i) => Math.abs(size - b[i]!) < 0.01)\n\n/** Writes new sizes and the collapsed state they imply, remembering what collapsing panels had. */\nfunction apply(next: number[], base: readonly number[]) {\n if (!sameSizes(next, sizes.value)) model.value = next\n next.forEach((size, i) => {\n const entry = entryAt(i)\n const lim = limits.value[i]!\n if (!entry || !lim.collapsible) return\n const now = isCollapsedAt(size, lim)\n if (now && !isCollapsedAt(base[i]!, lim)) restoreSizes.set(entry, base[i]!)\n entry.setCollapsed(now)\n })\n}\n\nfunction commit(next: number[], base: readonly number[]) {\n apply(next, base)\n if (!sameSizes(next, base)) emit('change', next)\n}\n\n/**\n * The size a reopened panel returns to: the one it had when it collapsed, or its starting size,\n * within its limits.\n */\nfunction reopenSize(index: number) {\n const entry = entryAt(index)\n const lim = limits.value[index]!\n const remembered = entry && restoreSizes.get(entry)\n return clamp(remembered ?? defaults.value[index]!, lim.min, lim.max)\n}\n\n/** Collapses or reopens a panel through the handle after it, or before it for the last one. */\nfunction sizesWithCollapsed(index: number, collapse: boolean, base: readonly number[]) {\n const lim = limits.value[index]!\n const growth = (collapse ? lim.collapsedSize : reopenSize(index)) - base[index]!\n return index < base.length - 1\n ? resizeAt(base, index, growth, limits.value, 1)\n : resizeAt(base, index - 1, -growth, limits.value, 1)\n}\n\n/**\n * The panel a handle reports on and collapses: the one before it, unless only the one after it\n * can collapse, as for a sidebar on the end side.\n */\nfunction primaryOf(handle: number) {\n const before = limits.value[handle]\n const after = limits.value[handle + 1]\n return !before?.collapsible && after?.collapsible ? handle + 1 : handle\n}\n\nprovide(resizableKey, {\n get orientation() {\n return props.orientation\n },\n sizeAt: (index) => sizes.value[index] ?? 1,\n register: (id, entry) => entries.set(id, entry),\n unregister: (id) => entries.delete(id),\n // Called from the panel's pre-flush watcher: the DOM still shows the panel as it was.\n toggle(index, collapse) {\n const base = measure({ index, collapsed: !collapse })\n const lim = limits.value[index]\n if (!lim || isCollapsedAt(base[index]!, lim) === collapse) return\n commit(sizesWithCollapsed(index, collapse, base), base)\n },\n})\n\n// @keyboard\n/*\n * The arrows that run along the group move its handles, following the direction of the text.\n * Home and End give the primary panel its smallest and largest size, and Enter collapses or\n * reopens it, as the APG window splitter describes.\n */\nfunction onKeydown(handle: number, event: KeyboardEvent) {\n if (props.disabled) return\n const base = measure()\n const primary = primaryOf(handle)\n const lim = limits.value[primary]!\n // Positive when the primary panel grows, negative when it shrinks.\n const primarySign = primary === handle ? 1 : -1\n const rtl = horizontal.value && isRtl(rootEl.value)\n const back = horizontal.value ? (rtl ? 'ArrowRight' : 'ArrowLeft') : 'ArrowUp'\n const forth = horizontal.value ? (rtl ? 'ArrowLeft' : 'ArrowRight') : 'ArrowDown'\n let next: number[]\n if (event.key === back) next = resizeAt(base, handle, -props.step, limits.value, 1)\n else if (event.key === forth) next = resizeAt(base, handle, props.step, limits.value, 1)\n else if (event.key === 'Home') {\n const lowest = lim.collapsible ? lim.collapsedSize : lim.min\n next = resizeAt(base, handle, (lowest - base[primary]!) * primarySign, limits.value, 1)\n } else if (event.key === 'End')\n next = resizeAt(base, handle, (lim.max - base[primary]!) * primarySign, limits.value, 1)\n else if (event.key === 'Enter' && lim.collapsible)\n next = sizesWithCollapsed(primary, !isCollapsedAt(base[primary]!, lim), base)\n else return\n event.preventDefault()\n commit(next, base)\n}\n\ninterface Drag {\n handle: number\n pointerId: number\n origin: number\n base: number[]\n sign: number\n last: number[]\n}\n\nconst drag = shallowRef<Drag | null>(null)\n\nconst coordinate = (event: PointerEvent) => (horizontal.value ? event.clientX : event.clientY)\n\nfunction onPointerdown(handle: number, event: PointerEvent) {\n // A second pointer pressed during a drag is ignored, which leaves one finger in charge.\n if (props.disabled || event.button !== 0 || drag.value) return\n const el = event.currentTarget as HTMLElement\n const base = measure()\n if (!space.value) return\n // Prevented so that no text gets selected; the focus a press would give is given back.\n event.preventDefault()\n el.focus({ preventScroll: true })\n // @fallback\n // Synthetic pointer events have no pointer to capture; the drag then follows the handle only.\n try {\n el.setPointerCapture(event.pointerId)\n } catch {\n /* Synthetic pointers cannot be captured. */\n }\n drag.value = {\n handle,\n pointerId: event.pointerId,\n origin: coordinate(event),\n base,\n sign: horizontal.value && isRtl(rootEl.value) ? -1 : 1,\n last: base,\n }\n}\n\nfunction onPointermove(event: PointerEvent) {\n const state = drag.value\n if (!state || state.pointerId !== event.pointerId) return\n const delta = ((coordinate(event) - state.origin) / space.value) * 100 * state.sign\n state.last = resizeAt(state.base, state.handle, delta, limits.value)\n apply(state.last, state.base)\n}\n\nfunction onPointerEnd(event: PointerEvent) {\n const state = drag.value\n if (!state || state.pointerId !== event.pointerId) return\n drag.value = null\n if (!sameSizes(state.last, state.base)) emit('change', state.last)\n}\n\nconst handles = computed(() =>\n panels.value.slice(1).map((_, handle) => {\n const primary = primaryOf(handle)\n const node = panels.value[primary]!\n const lim = limits.value[primary]!\n return {\n controls: panelId(node, primary),\n label:\n (nodeProp(node, 'label', 'label') as string | undefined) ??\n m.value.resizable.panel(primary + 1),\n now: Math.round(layout.value[primary] ?? 0),\n min: Math.round(lim.collapsible ? lim.collapsedSize : lim.min),\n max: Math.round(lim.max),\n }\n }),\n)\n\n/** Renders a captured panel VNode, which `<component :is>` cannot do. */\nconst PanelNode: FunctionalComponent<{ node: VNode; index: number }> = ({ node, index }) =>\n cloneVNode(node, { index, id: panelId(node, index) })\n\n// @devwarn\nif (isDev) {\n watchEffect(() => {\n if (nodes.value.length !== panels.value.length)\n console.warn('[VResizable] Only VResizablePanel children are rendered.')\n if (model.value && model.value.length !== panels.value.length)\n console.warn(\n `[VResizable] The v-model holds ${model.value.length} sizes for ${panels.value.length} panels; the default sizes are used.`,\n )\n })\n}\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"v-resizable\"\n :data-orientation=\"orientation\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-dragging=\"drag ? '' : undefined\"\n >\n <template v-for=\"(node, index) in panels\" :key=\"node.key ?? index\">\n <!--\n A horizontal group is divided by vertical lines. `aria-orientation` is only written when\n it differs from the separator's implicit horizontal, as on VSeparator.\n -->\n <div\n v-if=\"index > 0\"\n class=\"v-resizable-handle\"\n role=\"separator\"\n :tabindex=\"disabled ? undefined : 0\"\n :aria-orientation=\"horizontal ? 'vertical' : undefined\"\n :aria-label=\"handles[index - 1]!.label\"\n :aria-controls=\"handles[index - 1]!.controls\"\n :aria-valuenow=\"handles[index - 1]!.now\"\n :aria-valuemin=\"handles[index - 1]!.min\"\n :aria-valuemax=\"handles[index - 1]!.max\"\n :aria-disabled=\"disabled || undefined\"\n :data-active=\"drag?.handle === index - 1 ? '' : undefined\"\n @keydown=\"onKeydown(index - 1, $event)\"\n @pointerdown=\"onPointerdown(index - 1, $event)\"\n @pointermove=\"onPointermove\"\n @pointerup=\"onPointerEnd\"\n @pointercancel=\"onPointerEnd\"\n @lostpointercapture=\"onPointerEnd\"\n >\n <span v-if=\"grip\" class=\"v-resizable-grip\" aria-hidden=\"true\" />\n </div>\n <PanelNode :node=\"node\" :index=\"index\" />\n </template>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-resizable {\n --resizable-hit: var(--vectis-control-size-resizable-hit);\n display: flex;\n }\n\n .v-resizable[data-orientation='vertical'] {\n flex-direction: column;\n }\n\n .v-resizable[data-dragging] {\n user-select: none;\n }\n\n .v-resizable-handle {\n position: relative;\n z-index: 1;\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 0 solid var(--vectis-color-border);\n touch-action: none;\n transition:\n border-color var(--vectis-duration-fast) var(--vectis-ease-default),\n box-shadow var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n /* The strip that catches the pointer, wider than the 1px line it is centred on. */\n .v-resizable-handle::before {\n content: '';\n position: absolute;\n }\n\n /* The content box stays empty so the line is exactly 1px: the grip overflows it, centred. */\n .v-resizable[data-orientation='horizontal'] > .v-resizable-handle {\n inline-size: 0;\n border-inline-start-width: 1px;\n cursor: col-resize;\n }\n\n .v-resizable[data-orientation='horizontal'] > .v-resizable-handle::before {\n inset-block: 0;\n inset-inline: calc(var(--resizable-hit) / -2);\n }\n\n .v-resizable[data-orientation='vertical'] > .v-resizable-handle {\n block-size: 0;\n border-block-start-width: 1px;\n cursor: row-resize;\n }\n\n .v-resizable[data-orientation='vertical'] > .v-resizable-handle::before {\n inset-inline: 0;\n inset-block: calc(var(--resizable-hit) / -2);\n }\n\n .v-resizable[data-dragging][data-orientation='horizontal'] {\n cursor: col-resize;\n }\n\n .v-resizable[data-dragging][data-orientation='vertical'] {\n cursor: row-resize;\n }\n\n .v-resizable-handle:is(:hover, [data-active]):not([aria-disabled]) {\n border-color: var(--vectis-color-accent);\n box-shadow: 0 0 0 1px var(--vectis-color-accent);\n }\n\n .v-resizable-handle:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n\n .v-resizable-grip {\n flex: none;\n border: 1px solid transparent;\n border-radius: var(--vectis-radius-pill);\n background: var(--vectis-color-border-strong);\n transition: background-color var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n .v-resizable[data-orientation='horizontal'] > .v-resizable-handle > .v-resizable-grip {\n inline-size: var(--vectis-control-size-resizable-grip-thickness);\n block-size: var(--vectis-control-size-resizable-grip-length);\n }\n\n .v-resizable[data-orientation='vertical'] > .v-resizable-handle > .v-resizable-grip {\n inline-size: var(--vectis-control-size-resizable-grip-length);\n block-size: var(--vectis-control-size-resizable-grip-thickness);\n }\n\n .v-resizable-handle:is(:hover, [data-active]):not([aria-disabled]) .v-resizable-grip {\n background: var(--vectis-color-accent);\n }\n\n .v-resizable-handle[aria-disabled] {\n cursor: default;\n }\n\n .v-resizable-handle[aria-disabled] .v-resizable-grip {\n background: var(--vectis-color-border);\n }\n\n @media (forced-colors: active) {\n .v-resizable-handle:is(:hover, [data-active]):not([aria-disabled]) {\n border-color: Highlight;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-resizable-handle,\n .v-resizable-grip {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-resizable-panel{box-sizing:border-box;flex:var(--resizable-panel-size) var(--resizable-panel-size) calc(var(--resizable-panel-size) * 1%);overflow:auto}.v-resizable[data-orientation=horizontal]>.v-resizable-panel{min-inline-size:var(--resizable-panel-min);max-inline-size:var(--resizable-panel-max)}.v-resizable[data-orientation=vertical]>.v-resizable-panel{min-block-size:var(--resizable-panel-min);max-block-size:var(--resizable-panel-max)}.v-resizable[data-orientation]>.v-resizable-panel[data-collapsed]{flex:0 0 var(--resizable-panel-collapsed);min-block-size:0;max-block-size:none;min-inline-size:0;max-inline-size:none}.v-resizable-panel[data-hidden]{display:none}}
@@ -0,0 +1,60 @@
1
+ import { ResizableLength } from './VResizable.js';
2
+ interface ResizablePanelProps {
3
+ /** Which panel this is among its siblings, set by VResizable. Do not set it yourself. */
4
+ index?: number;
5
+ /**
6
+ * The starting size in percent, used when the group's v-model gives none. Panels without one
7
+ * share what is left equally.
8
+ */
9
+ defaultSize?: number;
10
+ /** The smallest size: a number in percent, or a CSS length such as `200px` or `12rem`. */
11
+ minSize?: ResizableLength;
12
+ /** The largest size: a number in percent, or a CSS length. */
13
+ maxSize?: ResizableLength;
14
+ /**
15
+ * Lets the panel collapse: dragged past the middle of its minimum, or with Enter on its
16
+ * handle.
17
+ */
18
+ collapsible?: boolean;
19
+ /**
20
+ * The size of the collapsed panel, in percent or as a CSS length such as the width of an icon
21
+ * rail. At 0, the default, its content is hidden.
22
+ */
23
+ collapsedSize?: ResizableLength;
24
+ /**
25
+ * What the panel is called. It names the handle that resizes it; the dictionary's "Panel 2"
26
+ * otherwise.
27
+ */
28
+ label?: string;
29
+ }
30
+ type __VLS_Props = ResizablePanelProps;
31
+ type __VLS_Slots = {
32
+ /** The panel's content. */
33
+ default(): unknown;
34
+ };
35
+ type __VLS_ModelProps = {
36
+ /** Whether the panel is collapsed. It only takes effect on a `collapsible` panel. */
37
+ 'collapsed'?: boolean;
38
+ };
39
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
40
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
41
+ "update:collapsed": (value: boolean) => any;
42
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
43
+ "onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
44
+ }>, {
45
+ label: string;
46
+ index: number;
47
+ defaultSize: number;
48
+ minSize: ResizableLength;
49
+ maxSize: ResizableLength;
50
+ collapsible: boolean;
51
+ collapsedSize: ResizableLength;
52
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
53
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
54
+ declare const _default: typeof __VLS_export;
55
+ export default _default;
56
+ type __VLS_WithSlots<T, S> = T & {
57
+ new (): {
58
+ $slots: S;
59
+ };
60
+ };
@@ -0,0 +1,9 @@
1
+ import './VResizablePanel.css';
2
+ import e from "./VResizablePanel.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VResizable/VResizablePanel.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VResizablePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VResizablePanel.js","names":[],"sources":["../../../src/components/VResizable/VResizablePanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * The group hands each panel its share of the space as a `flex-grow` weight. The panel writes its\n * own limits in CSS as well, so a length limit holds before any script runs and while the window\n * is resized.\n */\n\nimport { computed, inject, onBeforeUnmount, ref, useAttrs, useId, watch } from 'vue'\n\nimport { isDev } from '../../utils/env'\nimport { resizableKey } from './context'\nimport type { ResizableLength } from './VResizable.vue'\n\ninterface ResizablePanelProps {\n /** Which panel this is among its siblings, set by VResizable. Do not set it yourself. */\n index?: number\n /**\n * The starting size in percent, used when the group's v-model gives none. Panels without one\n * share what is left equally.\n */\n defaultSize?: number\n /** The smallest size: a number in percent, or a CSS length such as `200px` or `12rem`. */\n minSize?: ResizableLength\n /** The largest size: a number in percent, or a CSS length. */\n maxSize?: ResizableLength\n /**\n * Lets the panel collapse: dragged past the middle of its minimum, or with Enter on its\n * handle.\n */\n collapsible?: boolean\n /**\n * The size of the collapsed panel, in percent or as a CSS length such as the width of an icon\n * rail. At 0, the default, its content is hidden.\n */\n collapsedSize?: ResizableLength\n /**\n * What the panel is called. It names the handle that resizes it; the dictionary's \"Panel 2\"\n * otherwise.\n */\n label?: string\n}\n\nconst props = withDefaults(defineProps<ResizablePanelProps>(), {\n index: 0,\n defaultSize: undefined,\n minSize: 0,\n maxSize: undefined,\n collapsible: false,\n collapsedSize: 0,\n label: undefined,\n})\n\n/** Whether the panel is collapsed. It only takes effect on a `collapsible` panel. */\nconst collapsed = defineModel<boolean>('collapsed', { default: false })\n\ndefineSlots<{\n /** The panel's content. */\n default(): unknown\n}>()\n\nconst group = inject(resizableKey, null)\nconst attrs = useAttrs()\nconst id = useId()\nconst el = ref<HTMLElement | null>(null)\n\nconst isCollapsed = computed(() => props.collapsible && collapsed.value)\n\nconst cssLength = (length: ResizableLength) => (typeof length === 'number' ? `${length}%` : length)\n\n/** A collapsed size of zero leaves nothing to read, so the content is hidden, focus included. */\nconst hidesContent = computed(\n () => isCollapsed.value && Number.parseFloat(String(props.collapsedSize)) === 0,\n)\n\n// @core\n/*\n * The value the group last wrote, so the watcher below tells the group's own writes from the\n * consumer's. Only the consumer's ask the group to make room.\n */\nlet fromGroup: boolean | undefined\n\ngroup?.register(id, {\n get index() {\n return props.index\n },\n get el() {\n return el.value\n },\n get minSize() {\n return props.minSize\n },\n get maxSize() {\n return props.maxSize\n },\n get collapsible() {\n return props.collapsible\n },\n get collapsedSize() {\n return props.collapsedSize\n },\n get collapsed() {\n return isCollapsed.value\n },\n setCollapsed(value) {\n if (collapsed.value === value) return\n fromGroup = value\n collapsed.value = value\n },\n})\nonBeforeUnmount(() => group?.unregister(id))\n\nwatch(collapsed, (value) => {\n const own = value === fromGroup\n fromGroup = undefined\n if (!own && props.collapsible) group?.toggle(props.index, value)\n})\n\n// @devwarn\nif (isDev) {\n if (!group) console.warn('[VResizablePanel] Place it directly inside a VResizable.')\n watch(\n () => collapsed.value && !props.collapsible,\n (wrong) => {\n if (wrong) console.warn('[VResizablePanel] `collapsed` has no effect without `collapsible`.')\n },\n { immediate: true },\n )\n}\n\n// Every variable is set, even to its default, so that a nested group's panel never inherits\n// the limits of the panel it sits in.\nconst style = computed(() => ({\n '--resizable-panel-size': String(group?.sizeAt(props.index) ?? 1),\n '--resizable-panel-min': cssLength(props.minSize),\n '--resizable-panel-max': props.maxSize === undefined ? 'none' : cssLength(props.maxSize),\n '--resizable-panel-collapsed': cssLength(props.collapsedSize),\n}))\n</script>\n\n<template>\n <div\n :id=\"(attrs.id as string | undefined) ?? id\"\n ref=\"el\"\n class=\"v-resizable-panel\"\n :data-collapsed=\"isCollapsed ? '' : undefined\"\n :data-hidden=\"hidesContent ? '' : undefined\"\n :style=\"style\"\n >\n <slot />\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * The basis is the size itself, padding and border included, so a padded panel still takes its\n * exact share. Growing by the same weight spreads any space left over, such as that of a\n * collapsed sibling, in proportion; the 1px handles are shrunk off the same way.\n */\n .v-resizable-panel {\n box-sizing: border-box;\n flex: var(--resizable-panel-size) var(--resizable-panel-size)\n calc(var(--resizable-panel-size) * 1%);\n overflow: auto;\n }\n\n .v-resizable[data-orientation='horizontal'] > .v-resizable-panel {\n min-inline-size: var(--resizable-panel-min);\n max-inline-size: var(--resizable-panel-max);\n }\n\n .v-resizable[data-orientation='vertical'] > .v-resizable-panel {\n min-block-size: var(--resizable-panel-min);\n max-block-size: var(--resizable-panel-max);\n }\n\n .v-resizable[data-orientation] > .v-resizable-panel[data-collapsed] {\n flex: 0 0 var(--resizable-panel-collapsed);\n min-inline-size: 0;\n max-inline-size: none;\n min-block-size: 0;\n max-block-size: none;\n }\n\n /* Removed from the layout as well, or its padding would keep the panel open. */\n .v-resizable-panel[data-hidden] {\n display: none;\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,83 @@
1
+ import { isDev as e } from "../../utils/env.js";
2
+ import { resizableKey as t } from "./context.js";
3
+ import { computed as n, createElementBlock as r, defineComponent as i, inject as a, mergeModels as o, normalizeStyle as s, onBeforeUnmount as c, openBlock as l, ref as u, renderSlot as d, unref as f, useAttrs as p, useId as m, useModel as h, watch as g } from "vue";
4
+ //#region src/components/VResizable/VResizablePanel.vue?vue&type=script&setup=true&lang.ts
5
+ var _ = [
6
+ "id",
7
+ "data-collapsed",
8
+ "data-hidden"
9
+ ], v = /*@__PURE__*/ i({
10
+ __name: "VResizablePanel",
11
+ props: /*@__PURE__*/ o({
12
+ index: { default: 0 },
13
+ defaultSize: { default: void 0 },
14
+ minSize: { default: 0 },
15
+ maxSize: { default: void 0 },
16
+ collapsible: {
17
+ type: Boolean,
18
+ default: !1
19
+ },
20
+ collapsedSize: { default: 0 },
21
+ label: { default: void 0 }
22
+ }, {
23
+ collapsed: {
24
+ type: Boolean,
25
+ default: !1
26
+ },
27
+ collapsedModifiers: {}
28
+ }),
29
+ emits: ["update:collapsed"],
30
+ setup(i) {
31
+ let o = i, v = h(i, "collapsed"), y = a(t, null), b = p(), x = m(), S = u(null), C = n(() => o.collapsible && v.value), w = (e) => typeof e == "number" ? `${e}%` : e, T = n(() => C.value && Number.parseFloat(String(o.collapsedSize)) === 0), E;
32
+ y?.register(x, {
33
+ get index() {
34
+ return o.index;
35
+ },
36
+ get el() {
37
+ return S.value;
38
+ },
39
+ get minSize() {
40
+ return o.minSize;
41
+ },
42
+ get maxSize() {
43
+ return o.maxSize;
44
+ },
45
+ get collapsible() {
46
+ return o.collapsible;
47
+ },
48
+ get collapsedSize() {
49
+ return o.collapsedSize;
50
+ },
51
+ get collapsed() {
52
+ return C.value;
53
+ },
54
+ setCollapsed(e) {
55
+ v.value !== e && (E = e, v.value = e);
56
+ }
57
+ }), c(() => y?.unregister(x)), g(v, (e) => {
58
+ let t = e === E;
59
+ E = void 0, !t && o.collapsible && y?.toggle(o.index, e);
60
+ }), e && (y || console.warn("[VResizablePanel] Place it directly inside a VResizable."), g(() => v.value && !o.collapsible, (e) => {
61
+ e && console.warn("[VResizablePanel] `collapsed` has no effect without `collapsible`.");
62
+ }, { immediate: !0 }));
63
+ let D = n(() => ({
64
+ "--resizable-panel-size": String(y?.sizeAt(o.index) ?? 1),
65
+ "--resizable-panel-min": w(o.minSize),
66
+ "--resizable-panel-max": o.maxSize === void 0 ? "none" : w(o.maxSize),
67
+ "--resizable-panel-collapsed": w(o.collapsedSize)
68
+ }));
69
+ return (e, t) => (l(), r("div", {
70
+ id: f(b).id ?? f(x),
71
+ ref_key: "el",
72
+ ref: S,
73
+ class: "v-resizable-panel",
74
+ "data-collapsed": C.value ? "" : void 0,
75
+ "data-hidden": T.value ? "" : void 0,
76
+ style: s(D.value)
77
+ }, [d(e.$slots, "default")], 12, _));
78
+ }
79
+ });
80
+ //#endregion
81
+ export { v as default };
82
+
83
+ //# sourceMappingURL=VResizablePanel.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VResizablePanel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VResizable/VResizablePanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * The group hands each panel its share of the space as a `flex-grow` weight. The panel writes its\n * own limits in CSS as well, so a length limit holds before any script runs and while the window\n * is resized.\n */\n\nimport { computed, inject, onBeforeUnmount, ref, useAttrs, useId, watch } from 'vue'\n\nimport { isDev } from '../../utils/env'\nimport { resizableKey } from './context'\nimport type { ResizableLength } from './VResizable.vue'\n\ninterface ResizablePanelProps {\n /** Which panel this is among its siblings, set by VResizable. Do not set it yourself. */\n index?: number\n /**\n * The starting size in percent, used when the group's v-model gives none. Panels without one\n * share what is left equally.\n */\n defaultSize?: number\n /** The smallest size: a number in percent, or a CSS length such as `200px` or `12rem`. */\n minSize?: ResizableLength\n /** The largest size: a number in percent, or a CSS length. */\n maxSize?: ResizableLength\n /**\n * Lets the panel collapse: dragged past the middle of its minimum, or with Enter on its\n * handle.\n */\n collapsible?: boolean\n /**\n * The size of the collapsed panel, in percent or as a CSS length such as the width of an icon\n * rail. At 0, the default, its content is hidden.\n */\n collapsedSize?: ResizableLength\n /**\n * What the panel is called. It names the handle that resizes it; the dictionary's \"Panel 2\"\n * otherwise.\n */\n label?: string\n}\n\nconst props = withDefaults(defineProps<ResizablePanelProps>(), {\n index: 0,\n defaultSize: undefined,\n minSize: 0,\n maxSize: undefined,\n collapsible: false,\n collapsedSize: 0,\n label: undefined,\n})\n\n/** Whether the panel is collapsed. It only takes effect on a `collapsible` panel. */\nconst collapsed = defineModel<boolean>('collapsed', { default: false })\n\ndefineSlots<{\n /** The panel's content. */\n default(): unknown\n}>()\n\nconst group = inject(resizableKey, null)\nconst attrs = useAttrs()\nconst id = useId()\nconst el = ref<HTMLElement | null>(null)\n\nconst isCollapsed = computed(() => props.collapsible && collapsed.value)\n\nconst cssLength = (length: ResizableLength) => (typeof length === 'number' ? `${length}%` : length)\n\n/** A collapsed size of zero leaves nothing to read, so the content is hidden, focus included. */\nconst hidesContent = computed(\n () => isCollapsed.value && Number.parseFloat(String(props.collapsedSize)) === 0,\n)\n\n// @core\n/*\n * The value the group last wrote, so the watcher below tells the group's own writes from the\n * consumer's. Only the consumer's ask the group to make room.\n */\nlet fromGroup: boolean | undefined\n\ngroup?.register(id, {\n get index() {\n return props.index\n },\n get el() {\n return el.value\n },\n get minSize() {\n return props.minSize\n },\n get maxSize() {\n return props.maxSize\n },\n get collapsible() {\n return props.collapsible\n },\n get collapsedSize() {\n return props.collapsedSize\n },\n get collapsed() {\n return isCollapsed.value\n },\n setCollapsed(value) {\n if (collapsed.value === value) return\n fromGroup = value\n collapsed.value = value\n },\n})\nonBeforeUnmount(() => group?.unregister(id))\n\nwatch(collapsed, (value) => {\n const own = value === fromGroup\n fromGroup = undefined\n if (!own && props.collapsible) group?.toggle(props.index, value)\n})\n\n// @devwarn\nif (isDev) {\n if (!group) console.warn('[VResizablePanel] Place it directly inside a VResizable.')\n watch(\n () => collapsed.value && !props.collapsible,\n (wrong) => {\n if (wrong) console.warn('[VResizablePanel] `collapsed` has no effect without `collapsible`.')\n },\n { immediate: true },\n )\n}\n\n// Every variable is set, even to its default, so that a nested group's panel never inherits\n// the limits of the panel it sits in.\nconst style = computed(() => ({\n '--resizable-panel-size': String(group?.sizeAt(props.index) ?? 1),\n '--resizable-panel-min': cssLength(props.minSize),\n '--resizable-panel-max': props.maxSize === undefined ? 'none' : cssLength(props.maxSize),\n '--resizable-panel-collapsed': cssLength(props.collapsedSize),\n}))\n</script>\n\n<template>\n <div\n :id=\"(attrs.id as string | undefined) ?? id\"\n ref=\"el\"\n class=\"v-resizable-panel\"\n :data-collapsed=\"isCollapsed ? '' : undefined\"\n :data-hidden=\"hidesContent ? '' : undefined\"\n :style=\"style\"\n >\n <slot />\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * The basis is the size itself, padding and border included, so a padded panel still takes its\n * exact share. Growing by the same weight spreads any space left over, such as that of a\n * collapsed sibling, in proportion; the 1px handles are shrunk off the same way.\n */\n .v-resizable-panel {\n box-sizing: border-box;\n flex: var(--resizable-panel-size) var(--resizable-panel-size)\n calc(var(--resizable-panel-size) * 1%);\n overflow: auto;\n }\n\n .v-resizable[data-orientation='horizontal'] > .v-resizable-panel {\n min-inline-size: var(--resizable-panel-min);\n max-inline-size: var(--resizable-panel-max);\n }\n\n .v-resizable[data-orientation='vertical'] > .v-resizable-panel {\n min-block-size: var(--resizable-panel-min);\n max-block-size: var(--resizable-panel-max);\n }\n\n .v-resizable[data-orientation] > .v-resizable-panel[data-collapsed] {\n flex: 0 0 var(--resizable-panel-collapsed);\n min-inline-size: 0;\n max-inline-size: none;\n min-block-size: 0;\n max-block-size: none;\n }\n\n /* Removed from the layout as well, or its padding would keep the panel open. */\n .v-resizable-panel[data-hidden] {\n display: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CA,IAAM,IAAQ,GAWR,IAAY,EAAoB,GAAC,WAA+B,GAOhE,IAAQ,EAAO,GAAc,IAAI,GACjC,IAAQ,EAAS,GACjB,IAAK,EAAM,GACX,IAAK,EAAwB,IAAI,GAEjC,IAAc,QAAe,EAAM,eAAe,EAAU,KAAK,GAEjE,KAAa,MAA6B,OAAO,KAAW,WAAW,GAAG,EAAO,KAAK,GAGtF,IAAe,QACb,EAAY,SAAS,OAAO,WAAW,OAAO,EAAM,aAAa,CAAC,MAAM,CAChF,GAOI;EAuCJ,AArCA,GAAO,SAAS,GAAI;GAClB,IAAI,QAAQ;IACV,OAAO,EAAM;GACf;GACA,IAAI,KAAK;IACP,OAAO,EAAG;GACZ;GACA,IAAI,UAAU;IACZ,OAAO,EAAM;GACf;GACA,IAAI,UAAU;IACZ,OAAO,EAAM;GACf;GACA,IAAI,cAAc;IAChB,OAAO,EAAM;GACf;GACA,IAAI,gBAAgB;IAClB,OAAO,EAAM;GACf;GACA,IAAI,YAAY;IACd,OAAO,EAAY;GACrB;GACA,aAAa,GAAO;IACd,EAAU,UAAU,MACxB,IAAY,GACZ,EAAU,QAAQ;GACpB;EACF,CAAC,GACD,QAAsB,GAAO,WAAW,CAAE,CAAC,GAE3C,EAAM,IAAY,MAAU;GAC1B,IAAM,IAAM,MAAU;GAEtB,AADA,IAAY,KAAA,GACR,CAAC,KAAO,EAAM,eAAa,GAAO,OAAO,EAAM,OAAO,CAAK;EACjE,CAAC,GAGG,MACG,KAAO,QAAQ,KAAK,0DAA0D,GACnF,QACQ,EAAU,SAAS,CAAC,EAAM,cAC/B,MAAU;GACT,AAAI,KAAO,QAAQ,KAAK,oEAAoE;EAC9F,GACA,EAAE,WAAW,GAAK,CACpB;EAKF,IAAM,IAAQ,SAAgB;GAC5B,0BAA0B,OAAO,GAAO,OAAO,EAAM,KAAK,KAAK,CAAC;GAChE,yBAAyB,EAAU,EAAM,OAAO;GAChD,yBAAyB,EAAM,YAAY,KAAA,IAAY,SAAS,EAAU,EAAM,OAAO;GACvF,+BAA+B,EAAU,EAAM,aAAa;EAC9D,EAAE;yBAIA,EASM,OAAA;GARH,IAAK,EAAA,CAAA,CAAK,CAAC,MAA6B,EAAA,CAAA;YACrC;GAAJ,KAAI;GACJ,OAAM;GACL,kBAAgB,EAAA,QAAW,KAAQ,KAAA;GACnC,eAAa,EAAA,QAAY,KAAQ,KAAA;GACjC,OAAK,EAAE,EAAA,KAAK;MAEb,EAAQ,EAAA,QAAA,SAAA,CAAA,GAAA,IAAA,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { InjectionKey } from 'vue';
2
+ import { ResizableOrientation, ResizableLength } from './VResizable.js';
3
+ export interface ResizablePanelEntry {
4
+ /** Which panel this is among its siblings. */
5
+ readonly index: number;
6
+ readonly el: HTMLElement | null;
7
+ readonly minSize: ResizableLength;
8
+ readonly maxSize: ResizableLength | undefined;
9
+ readonly collapsible: boolean;
10
+ readonly collapsedSize: ResizableLength;
11
+ readonly collapsed: boolean;
12
+ /** Writes the panel's collapsed model on behalf of the group. */
13
+ setCollapsed: (value: boolean) => void;
14
+ }
15
+ export interface ResizableContext {
16
+ readonly orientation: ResizableOrientation;
17
+ /** The size of a panel in percent, used as its `flex-grow` weight. */
18
+ sizeAt: (index: number) => number;
19
+ register: (id: string, entry: ResizablePanelEntry) => void;
20
+ unregister: (id: string) => void;
21
+ /** Collapses or reopens a panel whose collapsed model was changed from outside the group. */
22
+ toggle: (index: number, collapsed: boolean) => void;
23
+ }
24
+ export declare const resizableKey: InjectionKey<ResizableContext>;
@@ -0,0 +1,6 @@
1
+ //#region src/components/VResizable/context.ts
2
+ var e = Symbol("v-resizable");
3
+ //#endregion
4
+ export { e as resizableKey };
5
+
6
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/VResizable/context.ts"],"sourcesContent":["/**\n * Panels register what the group needs when it measures and moves them: their element, their\n * limits and their collapsed model. Positions come from the group, which clones each panel's\n * VNode with its `index` while rendering.\n */\n\nimport type { InjectionKey } from 'vue'\n\nimport type { ResizableOrientation, ResizableLength } from './VResizable.vue'\n\nexport interface ResizablePanelEntry {\n /** Which panel this is among its siblings. */\n readonly index: number\n readonly el: HTMLElement | null\n readonly minSize: ResizableLength\n readonly maxSize: ResizableLength | undefined\n readonly collapsible: boolean\n readonly collapsedSize: ResizableLength\n readonly collapsed: boolean\n /** Writes the panel's collapsed model on behalf of the group. */\n setCollapsed: (value: boolean) => void\n}\n\nexport interface ResizableContext {\n readonly orientation: ResizableOrientation\n /** The size of a panel in percent, used as its `flex-grow` weight. */\n sizeAt: (index: number) => number\n register: (id: string, entry: ResizablePanelEntry) => void\n unregister: (id: string) => void\n /** Collapses or reopens a panel whose collapsed model was changed from outside the group. */\n toggle: (index: number, collapsed: boolean) => void\n}\n\nexport const resizableKey: InjectionKey<ResizableContext> = Symbol('v-resizable')\n"],"mappings":";AAiCA,IAAa,IAA+C,OAAO,aAAa"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Panel sizes are percentages of the space the panels share, summing to 100. These functions are
3
+ * pure: the component measures the DOM and converts CSS lengths before calling them.
4
+ */
5
+ /** The limits of one panel, already converted to percentages. */
6
+ export interface PanelLimits {
7
+ min: number;
8
+ max: number;
9
+ collapsible: boolean;
10
+ collapsedSize: number;
11
+ }
12
+ export declare const isCollapsedAt: (size: number, limits: PanelLimits) => boolean;
13
+ /**
14
+ * The starting sizes: each panel's `defaultSize` where given, the rest shared equally. Sizes that
15
+ * do not add up to 100 are scaled to.
16
+ */
17
+ export declare function defaultSizes(defaults: (number | undefined)[]): number[];
18
+ /**
19
+ * Moves handle `handle`, which sits between panels `handle` and `handle + 1`, so that the panel
20
+ * before it grows by `delta` (or shrinks, when negative). The space is taken from the panels on
21
+ * the other side, nearest first, each down to its minimum; and given to the panels on this side,
22
+ * nearest first, each up to its maximum.
23
+ *
24
+ * `snap` places the collapse point of the two neighbours between their collapsed size and their
25
+ * minimum: 0.5 for a pointer, which must travel half that distance, 1 for the keyboard, which
26
+ * collapses or reopens on the first press.
27
+ */
28
+ export declare function resizeAt(base: readonly number[], handle: number, delta: number, limits: readonly PanelLimits[], snap?: number): number[];
@@ -0,0 +1,41 @@
1
+ //#region src/components/VResizable/layout.ts
2
+ var e = .01, t = (t, n) => n.collapsible && t <= n.collapsedSize + e, n = (e) => Math.round(e * 1e3) / 1e3;
3
+ function r(e) {
4
+ let t = e.reduce((e, t) => e + (t ?? 0), 0), r = e.filter((e) => e === void 0).length, i = r ? Math.max(0, 100 - t) / r : 0, a = e.map((e) => e ?? i), o = a.reduce((e, t) => e + t, 0);
5
+ return o ? a.map((e) => n(e / o * 100)) : e.map(() => n(100 / (e.length || 1)));
6
+ }
7
+ function i(r, i, a, o, s = .5) {
8
+ if (Math.abs(a) < e) return [...r];
9
+ let c = a > 0, l = c ? i : i + 1, u = c ? -1 : 1, d = c ? i + 1 : i, f = c ? 1 : -1, p = (e) => e >= 0 && e < r.length, m = Math.abs(a), h = o[l], g = t(r[l], h), _ = Math.max(0, h.min - h.collapsedSize);
10
+ if (g) {
11
+ if (m < _ * (1 - s) - e) return [...r];
12
+ m = Math.max(m, _);
13
+ }
14
+ let v = 0;
15
+ for (let e = l; p(e); e += u) e !== l && t(r[e], o[e]) || (v += Math.max(0, o[e].max - r[e]));
16
+ m = Math.min(m, v);
17
+ let y = [...r], b = 0;
18
+ for (let n = d; p(n) && m - b > e; n += f) {
19
+ let i = o[n], a = r[n];
20
+ if (t(a, i)) continue;
21
+ let c = a - (m - b);
22
+ if (c < i.min) {
23
+ let t = i.collapsedSize + (i.min - i.collapsedSize) * s;
24
+ c = i.collapsible && n === d && c < t - e && b + a - i.collapsedSize <= v + e ? i.collapsedSize : i.min;
25
+ }
26
+ c = Math.min(c, a), b += a - c, y[n] = c;
27
+ }
28
+ if (g && b < _ - e) return [...r];
29
+ let x = b;
30
+ for (let n = l; p(n) && x > e; n += u) {
31
+ let e = o[n];
32
+ if (n !== l && t(r[n], e)) continue;
33
+ let i = y[n], a = Math.min(e.max, i + x);
34
+ x -= a - i, y[n] = a;
35
+ }
36
+ return x > e ? [...r] : y.map(n);
37
+ }
38
+ //#endregion
39
+ export { r as defaultSizes, t as isCollapsedAt, i as resizeAt };
40
+
41
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","names":[],"sources":["../../../src/components/VResizable/layout.ts"],"sourcesContent":["// @core\n/**\n * Panel sizes are percentages of the space the panels share, summing to 100. These functions are\n * pure: the component measures the DOM and converts CSS lengths before calling them.\n */\n\n/** The limits of one panel, already converted to percentages. */\nexport interface PanelLimits {\n min: number\n max: number\n collapsible: boolean\n collapsedSize: number\n}\n\n/** Below this difference two sizes are equal, which absorbs the rounding of written sizes. */\nconst EPSILON = 0.01\n\nexport const isCollapsedAt = (size: number, limits: PanelLimits) =>\n limits.collapsible && size <= limits.collapsedSize + EPSILON\n\n/** Rounds a written size so the model does not carry floating-point noise. */\nconst roundSize = (size: number) => Math.round(size * 1000) / 1000\n\n/**\n * The starting sizes: each panel's `defaultSize` where given, the rest shared equally. Sizes that\n * do not add up to 100 are scaled to.\n */\nexport function defaultSizes(defaults: (number | undefined)[]): number[] {\n const given = defaults.reduce<number>((sum, size) => sum + (size ?? 0), 0)\n const free = defaults.filter((size) => size === undefined).length\n const share = free ? Math.max(0, 100 - given) / free : 0\n const sizes = defaults.map((size) => size ?? share)\n const total = sizes.reduce((sum, size) => sum + size, 0)\n if (!total) return defaults.map(() => roundSize(100 / (defaults.length || 1)))\n return sizes.map((size) => roundSize((size / total) * 100))\n}\n\n/**\n * Moves handle `handle`, which sits between panels `handle` and `handle + 1`, so that the panel\n * before it grows by `delta` (or shrinks, when negative). The space is taken from the panels on\n * the other side, nearest first, each down to its minimum; and given to the panels on this side,\n * nearest first, each up to its maximum.\n *\n * `snap` places the collapse point of the two neighbours between their collapsed size and their\n * minimum: 0.5 for a pointer, which must travel half that distance, 1 for the keyboard, which\n * collapses or reopens on the first press.\n */\nexport function resizeAt(\n base: readonly number[],\n handle: number,\n delta: number,\n limits: readonly PanelLimits[],\n snap = 0.5,\n): number[] {\n if (Math.abs(delta) < EPSILON) return [...base]\n const growing = delta > 0\n const growFirst = growing ? handle : handle + 1\n const growStep = growing ? -1 : 1\n const shrinkFirst = growing ? handle + 1 : handle\n const shrinkStep = growing ? 1 : -1\n const inRange = (i: number) => i >= 0 && i < base.length\n\n let want = Math.abs(delta)\n\n // A collapsed neighbour stays shut until the pull passes its collapse point, then opens at\n // its minimum at once: a panel narrower than its minimum is a state no rule allows.\n const opener = limits[growFirst]!\n const opening = isCollapsedAt(base[growFirst]!, opener)\n const openGap = Math.max(0, opener.min - opener.collapsedSize)\n if (opening) {\n if (want < openGap * (1 - snap) - EPSILON) return [...base]\n want = Math.max(want, openGap)\n }\n\n // A collapsed panel further away is not reopened by a drag that only passes by.\n let room = 0\n for (let i = growFirst; inRange(i); i += growStep) {\n if (i !== growFirst && isCollapsedAt(base[i]!, limits[i]!)) continue\n room += Math.max(0, limits[i]!.max - base[i]!)\n }\n want = Math.min(want, room)\n\n const next = [...base]\n let taken = 0\n for (let i = shrinkFirst; inRange(i) && want - taken > EPSILON; i += shrinkStep) {\n const lim = limits[i]!\n const size = base[i]!\n if (isCollapsedAt(size, lim)) continue\n let target = size - (want - taken)\n if (target < lim.min) {\n const collapsePoint = lim.collapsedSize + (lim.min - lim.collapsedSize) * snap\n const canCollapse =\n lim.collapsible &&\n i === shrinkFirst &&\n target < collapsePoint - EPSILON &&\n taken + size - lim.collapsedSize <= room + EPSILON\n target = canCollapse ? lim.collapsedSize : lim.min\n }\n target = Math.min(target, size)\n taken += size - target\n next[i] = target\n }\n\n if (opening && taken < openGap - EPSILON) return [...base]\n\n let left = taken\n for (let i = growFirst; inRange(i) && left > EPSILON; i += growStep) {\n const lim = limits[i]!\n if (i !== growFirst && isCollapsedAt(base[i]!, lim)) continue\n const size = next[i]!\n const target = Math.min(lim.max, size + left)\n left -= target - size\n next[i] = target\n }\n if (left > EPSILON) return [...base]\n\n return next.map(roundSize)\n}\n"],"mappings":";AAeA,IAAM,IAAU,KAEH,KAAiB,GAAc,MAC1C,EAAO,eAAe,KAAQ,EAAO,gBAAgB,GAGjD,KAAa,MAAiB,KAAK,MAAM,IAAO,GAAI,IAAI;AAM9D,SAAgB,EAAa,GAA4C;CACvE,IAAM,IAAQ,EAAS,QAAgB,GAAK,MAAS,KAAO,KAAQ,IAAI,CAAC,GACnE,IAAO,EAAS,QAAQ,MAAS,MAAS,KAAA,CAAS,CAAC,CAAC,QACrD,IAAQ,IAAO,KAAK,IAAI,GAAG,MAAM,CAAK,IAAI,IAAO,GACjD,IAAQ,EAAS,KAAK,MAAS,KAAQ,CAAK,GAC5C,IAAQ,EAAM,QAAQ,GAAK,MAAS,IAAM,GAAM,CAAC;CAEvD,OADK,IACE,EAAM,KAAK,MAAS,EAAW,IAAO,IAAS,GAAG,CAAC,IADvC,EAAS,UAAU,EAAU,OAAO,EAAS,UAAU,EAAE,CAAC;AAE/E;AAYA,SAAgB,EACd,GACA,GACA,GACA,GACA,IAAO,IACG;CACV,IAAI,KAAK,IAAI,CAAK,IAAI,GAAS,OAAO,CAAC,GAAG,CAAI;CAC9C,IAAM,IAAU,IAAQ,GAClB,IAAY,IAAU,IAAS,IAAS,GACxC,IAAW,IAAU,KAAK,GAC1B,IAAc,IAAU,IAAS,IAAI,GACrC,IAAa,IAAU,IAAI,IAC3B,KAAW,MAAc,KAAK,KAAK,IAAI,EAAK,QAE9C,IAAO,KAAK,IAAI,CAAK,GAInB,IAAS,EAAO,IAChB,IAAU,EAAc,EAAK,IAAa,CAAM,GAChD,IAAU,KAAK,IAAI,GAAG,EAAO,MAAM,EAAO,aAAa;CAC7D,IAAI,GAAS;EACX,IAAI,IAAO,KAAW,IAAI,KAAQ,GAAS,OAAO,CAAC,GAAG,CAAI;EAC1D,IAAO,KAAK,IAAI,GAAM,CAAO;CAC/B;CAGA,IAAI,IAAO;CACX,KAAK,IAAI,IAAI,GAAW,EAAQ,CAAC,GAAG,KAAK,GACnC,MAAM,KAAa,EAAc,EAAK,IAAK,EAAO,EAAG,MACzD,KAAQ,KAAK,IAAI,GAAG,EAAO,EAAE,CAAE,MAAM,EAAK,EAAG;CAE/C,IAAO,KAAK,IAAI,GAAM,CAAI;CAE1B,IAAM,IAAO,CAAC,GAAG,CAAI,GACjB,IAAQ;CACZ,KAAK,IAAI,IAAI,GAAa,EAAQ,CAAC,KAAK,IAAO,IAAQ,GAAS,KAAK,GAAY;EAC/E,IAAM,IAAM,EAAO,IACb,IAAO,EAAK;EAClB,IAAI,EAAc,GAAM,CAAG,GAAG;EAC9B,IAAI,IAAS,KAAQ,IAAO;EAC5B,IAAI,IAAS,EAAI,KAAK;GACpB,IAAM,IAAgB,EAAI,iBAAiB,EAAI,MAAM,EAAI,iBAAiB;GAM1E,IAJE,EAAI,eACJ,MAAM,KACN,IAAS,IAAgB,KACzB,IAAQ,IAAO,EAAI,iBAAiB,IAAO,IACtB,EAAI,gBAAgB,EAAI;EACjD;EAGA,AAFA,IAAS,KAAK,IAAI,GAAQ,CAAI,GAC9B,KAAS,IAAO,GAChB,EAAK,KAAK;CACZ;CAEA,IAAI,KAAW,IAAQ,IAAU,GAAS,OAAO,CAAC,GAAG,CAAI;CAEzD,IAAI,IAAO;CACX,KAAK,IAAI,IAAI,GAAW,EAAQ,CAAC,KAAK,IAAO,GAAS,KAAK,GAAU;EACnE,IAAM,IAAM,EAAO;EACnB,IAAI,MAAM,KAAa,EAAc,EAAK,IAAK,CAAG,GAAG;EACrD,IAAM,IAAO,EAAK,IACZ,IAAS,KAAK,IAAI,EAAI,KAAK,IAAO,CAAI;EAE5C,AADA,KAAQ,IAAS,GACjB,EAAK,KAAK;CACZ;CAGA,OAFI,IAAO,IAAgB,CAAC,GAAG,CAAI,IAE5B,EAAK,IAAI,CAAS;AAC3B"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-select{anchor-scope:--select-anchor;width:100%;font-family:var(--vectis-text-family)}.v-select-control{display:block}.v-select-control .v-input-field{anchor-name:--select-anchor}.v-select-panel{max-block-size:var(--vectis-control-size-select-list-max-block)}.v-select-trigger{text-align:start;cursor:pointer;align-items:center;display:flex}.v-select[data-multiple] .v-select-trigger{flex:1 1 0}.v-select-value,.v-select-placeholder{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.v-select-placeholder{color:var(--vectis-color-text-subtle)}.v-select-spinner{color:var(--vectis-color-text-muted)}.v-select:has(.v-listbox-text){min-inline-size:0}}