vuetify 3.10.2 → 3.10.4

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 (226) hide show
  1. package/dist/json/attributes.json +3585 -3581
  2. package/dist/json/importMap-labs.json +22 -22
  3. package/dist/json/importMap.json +136 -136
  4. package/dist/json/tags.json +1 -0
  5. package/dist/json/web-types.json +6506 -6482
  6. package/dist/vuetify-labs.cjs +124 -92
  7. package/dist/vuetify-labs.css +4941 -4941
  8. package/dist/vuetify-labs.d.ts +1375 -1363
  9. package/dist/vuetify-labs.esm.js +125 -93
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +124 -92
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +116 -87
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +6491 -6491
  16. package/dist/vuetify.d.ts +1120 -1108
  17. package/dist/vuetify.esm.js +116 -87
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +116 -87
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +1435 -1428
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.d.ts +3 -3
  25. package/lib/components/VAlert/VAlertTitle.d.ts +3 -3
  26. package/lib/components/VApp/VApp.d.ts +3 -3
  27. package/lib/components/VAppBar/VAppBar.d.ts +3 -3
  28. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +6 -6
  29. package/lib/components/VAppBar/VAppBarTitle.d.ts +3 -3
  30. package/lib/components/VAutocomplete/VAutocomplete.d.ts +116 -116
  31. package/lib/components/VAutocomplete/VAutocomplete.js +1 -1
  32. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  33. package/lib/components/VAvatar/VAvatar.d.ts +3 -3
  34. package/lib/components/VBadge/VBadge.d.ts +3 -3
  35. package/lib/components/VBanner/VBanner.d.ts +3 -3
  36. package/lib/components/VBanner/VBannerActions.d.ts +3 -3
  37. package/lib/components/VBanner/VBannerText.d.ts +3 -3
  38. package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +3 -3
  39. package/lib/components/VBottomSheet/VBottomSheet.d.ts +3 -3
  40. package/lib/components/VBreadcrumbs/VBreadcrumbs.d.ts +3 -3
  41. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.d.ts +3 -3
  42. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.d.ts +3 -3
  43. package/lib/components/VBtn/VBtn.d.ts +6 -6
  44. package/lib/components/VBtn/VBtn.js +5 -5
  45. package/lib/components/VBtn/VBtn.js.map +1 -1
  46. package/lib/components/VBtnGroup/VBtnGroup.d.ts +3 -3
  47. package/lib/components/VBtnToggle/VBtnToggle.d.ts +3 -3
  48. package/lib/components/VCard/VCard.d.ts +6 -6
  49. package/lib/components/VCard/VCard.js +2 -2
  50. package/lib/components/VCard/VCard.js.map +1 -1
  51. package/lib/components/VCard/VCardActions.d.ts +3 -3
  52. package/lib/components/VCard/VCardItem.d.ts +3 -3
  53. package/lib/components/VCard/VCardSubtitle.d.ts +3 -3
  54. package/lib/components/VCard/VCardText.d.ts +3 -3
  55. package/lib/components/VCard/VCardTitle.d.ts +3 -3
  56. package/lib/components/VCarousel/VCarousel.d.ts +3 -3
  57. package/lib/components/VCarousel/VCarouselItem.d.ts +3 -3
  58. package/lib/components/VCheckbox/VCheckbox.d.ts +15 -15
  59. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +6 -6
  60. package/lib/components/VChip/VChip.d.ts +6 -6
  61. package/lib/components/VChip/VChip.js +15 -4
  62. package/lib/components/VChip/VChip.js.map +1 -1
  63. package/lib/components/VChipGroup/VChipGroup.d.ts +3 -3
  64. package/lib/components/VCode/index.d.ts +3 -3
  65. package/lib/components/VCombobox/VCombobox.d.ts +129 -116
  66. package/lib/components/VCombobox/VCombobox.js +8 -25
  67. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  68. package/lib/components/VCounter/VCounter.d.ts +3 -3
  69. package/lib/components/VDataIterator/VDataIterator.d.ts +9 -9
  70. package/lib/components/VDataTable/VDataTable.d.ts +3 -3
  71. package/lib/components/VDataTable/VDataTableServer.d.ts +3 -3
  72. package/lib/components/VDataTable/VDataTableVirtual.d.ts +6 -6
  73. package/lib/components/VDataTable/composables/expand.js +8 -8
  74. package/lib/components/VDataTable/composables/expand.js.map +1 -1
  75. package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
  76. package/lib/components/VDialog/VDialog.d.ts +12 -12
  77. package/lib/components/VDialog/VDialog.js +29 -11
  78. package/lib/components/VDialog/VDialog.js.map +1 -1
  79. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +41 -0
  80. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  81. package/lib/components/VDivider/VDivider.d.ts +3 -3
  82. package/lib/components/VEmptyState/VEmptyState.d.ts +6 -6
  83. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +6 -6
  84. package/lib/components/VExpansionPanel/VExpansionPanelText.d.ts +3 -3
  85. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +6 -6
  86. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +6 -6
  87. package/lib/components/VFab/VFab.d.ts +6 -6
  88. package/lib/components/VField/VField.d.ts +3 -3
  89. package/lib/components/VField/VFieldLabel.d.ts +3 -3
  90. package/lib/components/VFileInput/VFileInput.d.ts +12 -12
  91. package/lib/components/VFileInput/VFileInput.js +2 -1
  92. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  93. package/lib/components/VFooter/VFooter.d.ts +3 -3
  94. package/lib/components/VForm/VForm.d.ts +6 -6
  95. package/lib/components/VGrid/VCol.d.ts +3 -3
  96. package/lib/components/VGrid/VContainer.d.ts +3 -3
  97. package/lib/components/VGrid/VRow.d.ts +3 -3
  98. package/lib/components/VGrid/VSpacer.d.ts +3 -3
  99. package/lib/components/VIcon/VIcon.d.ts +3 -3
  100. package/lib/components/VImg/VImg.d.ts +3 -3
  101. package/lib/components/VInput/VInput.d.ts +3 -3
  102. package/lib/components/VItemGroup/VItemGroup.d.ts +3 -3
  103. package/lib/components/VKbd/VKbd.d.ts +3 -3
  104. package/lib/components/VLabel/VLabel.d.ts +3 -3
  105. package/lib/components/VLayout/VLayout.d.ts +3 -3
  106. package/lib/components/VLayout/VLayoutItem.d.ts +3 -3
  107. package/lib/components/VLazy/VLazy.d.ts +3 -3
  108. package/lib/components/VList/VList.d.ts +11 -11
  109. package/lib/components/VList/VList.js.map +1 -1
  110. package/lib/components/VList/VListGroup.d.ts +3 -3
  111. package/lib/components/VList/VListImg.d.ts +3 -3
  112. package/lib/components/VList/VListItem.d.ts +6 -6
  113. package/lib/components/VList/VListItem.js +2 -2
  114. package/lib/components/VList/VListItem.js.map +1 -1
  115. package/lib/components/VList/VListItemAction.d.ts +3 -3
  116. package/lib/components/VList/VListItemMedia.d.ts +3 -3
  117. package/lib/components/VList/VListItemSubtitle.d.ts +3 -3
  118. package/lib/components/VList/VListItemTitle.d.ts +3 -3
  119. package/lib/components/VList/VListSubheader.d.ts +3 -3
  120. package/lib/components/VLocaleProvider/VLocaleProvider.d.ts +3 -3
  121. package/lib/components/VMain/VMain.d.ts +3 -3
  122. package/lib/components/VMenu/VMenu.d.ts +15 -15
  123. package/lib/components/VMessages/VMessages.d.ts +3 -3
  124. package/lib/components/VNavigationDrawer/VNavigationDrawer.d.ts +3 -3
  125. package/lib/components/VNumberInput/VNumberInput.d.ts +66 -66
  126. package/lib/components/VNumberInput/VNumberInput.js +1 -0
  127. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  128. package/lib/components/VOtpInput/VOtpInput.d.ts +3 -3
  129. package/lib/components/VOverlay/VOverlay.d.ts +3 -3
  130. package/lib/components/VPagination/VPagination.d.ts +3 -3
  131. package/lib/components/VParallax/VParallax.d.ts +3 -3
  132. package/lib/components/VProgressCircular/VProgressCircular.d.ts +3 -3
  133. package/lib/components/VProgressLinear/VProgressLinear.d.ts +3 -3
  134. package/lib/components/VRadio/VRadio.d.ts +6 -6
  135. package/lib/components/VRadioGroup/VRadioGroup.d.ts +15 -15
  136. package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
  137. package/lib/components/VRating/VRating.d.ts +3 -3
  138. package/lib/components/VResponsive/VResponsive.d.ts +3 -3
  139. package/lib/components/VSelect/VSelect.d.ts +140 -140
  140. package/lib/components/VSelectionControl/VSelectionControl.d.ts +6 -6
  141. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +6 -6
  142. package/lib/components/VSheet/VSheet.d.ts +3 -3
  143. package/lib/components/VSlideGroup/VSlideGroup.d.ts +3 -3
  144. package/lib/components/VSlider/VSlider.d.ts +12 -12
  145. package/lib/components/VSlider/VSliderThumb.d.ts +6 -6
  146. package/lib/components/VSlider/VSliderTrack.d.ts +3 -3
  147. package/lib/components/VSnackbar/VSnackbar.d.ts +12 -12
  148. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -3
  149. package/lib/components/VSpeedDial/VSpeedDial.d.ts +9 -9
  150. package/lib/components/VStepper/VStepper.d.ts +3 -3
  151. package/lib/components/VStepper/VStepperHeader.d.ts +3 -3
  152. package/lib/components/VStepper/VStepperItem.d.ts +3 -3
  153. package/lib/components/VStepper/VStepperWindow.d.ts +3 -3
  154. package/lib/components/VStepper/VStepperWindowItem.d.ts +3 -3
  155. package/lib/components/VSwitch/VSwitch.d.ts +15 -15
  156. package/lib/components/VSwitch/VSwitch.js +2 -2
  157. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  158. package/lib/components/VSystemBar/VSystemBar.d.ts +3 -3
  159. package/lib/components/VTable/VTable.d.ts +3 -3
  160. package/lib/components/VTabs/VTab.d.ts +24 -24
  161. package/lib/components/VTabs/VTabs.d.ts +3 -3
  162. package/lib/components/VTabs/VTabsWindow.d.ts +3 -3
  163. package/lib/components/VTabs/VTabsWindowItem.d.ts +3 -3
  164. package/lib/components/VTextField/VTextField.d.ts +21 -21
  165. package/lib/components/VTextarea/VTextarea.d.ts +12 -12
  166. package/lib/components/VThemeProvider/VThemeProvider.d.ts +3 -3
  167. package/lib/components/VTimePicker/VTimePicker.d.ts +3 -3
  168. package/lib/components/VTimeline/VTimeline.d.ts +3 -3
  169. package/lib/components/VTimeline/VTimelineDivider.d.ts +3 -3
  170. package/lib/components/VTimeline/VTimelineItem.d.ts +3 -3
  171. package/lib/components/VToolbar/VToolbar.d.ts +3 -3
  172. package/lib/components/VToolbar/VToolbarItems.d.ts +3 -3
  173. package/lib/components/VToolbar/VToolbarTitle.d.ts +3 -3
  174. package/lib/components/VTooltip/VTooltip.d.ts +15 -15
  175. package/lib/components/VTreeview/VTreeview.d.ts +26 -26
  176. package/lib/components/VTreeview/VTreeviewChildren.js +1 -1
  177. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  178. package/lib/components/VTreeview/VTreeviewGroup.d.ts +3 -3
  179. package/lib/components/VTreeview/VTreeviewItem.d.ts +24 -24
  180. package/lib/components/VVirtualScroll/VVirtualScroll.d.ts +6 -6
  181. package/lib/components/VVirtualScroll/VVirtualScrollItem.d.ts +3 -3
  182. package/lib/components/VWindow/VWindow.d.ts +3 -3
  183. package/lib/components/VWindow/VWindowItem.d.ts +3 -3
  184. package/lib/components/transitions/createTransition.d.ts +6 -6
  185. package/lib/components/transitions/index.d.ts +78 -78
  186. package/lib/composables/goto.js +2 -2
  187. package/lib/composables/goto.js.map +1 -1
  188. package/lib/composables/group.d.ts +2 -0
  189. package/lib/composables/group.js +15 -9
  190. package/lib/composables/group.js.map +1 -1
  191. package/lib/composables/router.d.ts +2 -0
  192. package/lib/composables/router.js +6 -1
  193. package/lib/composables/router.js.map +1 -1
  194. package/lib/entry-bundler.js +1 -1
  195. package/lib/framework.d.ts +63 -63
  196. package/lib/framework.js +1 -1
  197. package/lib/labs/VCalendar/VCalendar.js +7 -4
  198. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  199. package/lib/labs/VCalendar/composables/calendarWithEvents.js +7 -4
  200. package/lib/labs/VCalendar/composables/calendarWithEvents.js.map +1 -1
  201. package/lib/labs/VColorInput/VColorInput.d.ts +6 -6
  202. package/lib/labs/VDateInput/VDateInput.d.ts +66 -66
  203. package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
  204. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  205. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  206. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +6 -6
  207. package/lib/labs/VHotkey/VHotkey.d.ts +3 -3
  208. package/lib/labs/VIconBtn/VIconBtn.d.ts +3 -3
  209. package/lib/labs/VMaskInput/VMaskInput.d.ts +66 -66
  210. package/lib/labs/VPicker/VPicker.d.ts +3 -3
  211. package/lib/labs/VPicker/VPickerTitle.d.ts +3 -3
  212. package/lib/labs/VPie/VPieTooltip.d.ts +3 -3
  213. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +6 -6
  214. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +6 -6
  215. package/lib/labs/VVideo/VVideo.d.ts +87 -87
  216. package/lib/labs/VVideo/VVideoControls.d.ts +40 -40
  217. package/lib/labs/VVideo/VVideoVolume.d.ts +33 -33
  218. package/lib/util/animation.js +1 -1
  219. package/lib/util/animation.js.map +1 -1
  220. package/lib/util/box.d.ts +1 -1
  221. package/lib/util/box.js +19 -14
  222. package/lib/util/box.js.map +1 -1
  223. package/lib/util/createSimpleFunctional.d.ts +3 -3
  224. package/lib/util/events.js +2 -2
  225. package/lib/util/events.js.map +1 -1
  226. package/package.json +9 -9
@@ -5,8 +5,8 @@ export declare const VFabTransition: {
5
5
  group: boolean;
6
6
  hideOnLeave: boolean;
7
7
  leaveAbsolute: boolean;
8
- mode: string | undefined;
9
- origin: string | undefined;
8
+ mode: string;
9
+ origin: string;
10
10
  } & {} & {
11
11
  $children?: {
12
12
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -43,8 +43,8 @@ export declare const VFabTransition: {
43
43
  group: boolean;
44
44
  hideOnLeave: boolean;
45
45
  leaveAbsolute: boolean;
46
- mode: string | undefined;
47
- origin: string | undefined;
46
+ mode: string;
47
+ origin: string;
48
48
  } & {} & {
49
49
  $children?: {
50
50
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -74,8 +74,8 @@ export declare const VFabTransition: {
74
74
  group: boolean;
75
75
  hideOnLeave: boolean;
76
76
  leaveAbsolute: boolean;
77
- mode: string | undefined;
78
- origin: string | undefined;
77
+ mode: string;
78
+ origin: string;
79
79
  } & {} & {
80
80
  $children?: {
81
81
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -134,8 +134,8 @@ export declare const VDialogBottomTransition: {
134
134
  group: boolean;
135
135
  hideOnLeave: boolean;
136
136
  leaveAbsolute: boolean;
137
- mode: string | undefined;
138
- origin: string | undefined;
137
+ mode: string;
138
+ origin: string;
139
139
  } & {} & {
140
140
  $children?: {
141
141
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -172,8 +172,8 @@ export declare const VDialogBottomTransition: {
172
172
  group: boolean;
173
173
  hideOnLeave: boolean;
174
174
  leaveAbsolute: boolean;
175
- mode: string | undefined;
176
- origin: string | undefined;
175
+ mode: string;
176
+ origin: string;
177
177
  } & {} & {
178
178
  $children?: {
179
179
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -203,8 +203,8 @@ export declare const VDialogBottomTransition: {
203
203
  group: boolean;
204
204
  hideOnLeave: boolean;
205
205
  leaveAbsolute: boolean;
206
- mode: string | undefined;
207
- origin: string | undefined;
206
+ mode: string;
207
+ origin: string;
208
208
  } & {} & {
209
209
  $children?: {
210
210
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -262,8 +262,8 @@ export declare const VDialogTopTransition: {
262
262
  group: boolean;
263
263
  hideOnLeave: boolean;
264
264
  leaveAbsolute: boolean;
265
- mode: string | undefined;
266
- origin: string | undefined;
265
+ mode: string;
266
+ origin: string;
267
267
  } & {} & {
268
268
  $children?: {
269
269
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -300,8 +300,8 @@ export declare const VDialogTopTransition: {
300
300
  group: boolean;
301
301
  hideOnLeave: boolean;
302
302
  leaveAbsolute: boolean;
303
- mode: string | undefined;
304
- origin: string | undefined;
303
+ mode: string;
304
+ origin: string;
305
305
  } & {} & {
306
306
  $children?: {
307
307
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -331,8 +331,8 @@ export declare const VDialogTopTransition: {
331
331
  group: boolean;
332
332
  hideOnLeave: boolean;
333
333
  leaveAbsolute: boolean;
334
- mode: string | undefined;
335
- origin: string | undefined;
334
+ mode: string;
335
+ origin: string;
336
336
  } & {} & {
337
337
  $children?: {
338
338
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -390,8 +390,8 @@ export declare const VFadeTransition: {
390
390
  group: boolean;
391
391
  hideOnLeave: boolean;
392
392
  leaveAbsolute: boolean;
393
- mode: string | undefined;
394
- origin: string | undefined;
393
+ mode: string;
394
+ origin: string;
395
395
  } & {} & {
396
396
  $children?: {
397
397
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -428,8 +428,8 @@ export declare const VFadeTransition: {
428
428
  group: boolean;
429
429
  hideOnLeave: boolean;
430
430
  leaveAbsolute: boolean;
431
- mode: string | undefined;
432
- origin: string | undefined;
431
+ mode: string;
432
+ origin: string;
433
433
  } & {} & {
434
434
  $children?: {
435
435
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -459,8 +459,8 @@ export declare const VFadeTransition: {
459
459
  group: boolean;
460
460
  hideOnLeave: boolean;
461
461
  leaveAbsolute: boolean;
462
- mode: string | undefined;
463
- origin: string | undefined;
462
+ mode: string;
463
+ origin: string;
464
464
  } & {} & {
465
465
  $children?: {
466
466
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -518,8 +518,8 @@ export declare const VScaleTransition: {
518
518
  group: boolean;
519
519
  hideOnLeave: boolean;
520
520
  leaveAbsolute: boolean;
521
- mode: string | undefined;
522
- origin: string | undefined;
521
+ mode: string;
522
+ origin: string;
523
523
  } & {} & {
524
524
  $children?: {
525
525
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -556,8 +556,8 @@ export declare const VScaleTransition: {
556
556
  group: boolean;
557
557
  hideOnLeave: boolean;
558
558
  leaveAbsolute: boolean;
559
- mode: string | undefined;
560
- origin: string | undefined;
559
+ mode: string;
560
+ origin: string;
561
561
  } & {} & {
562
562
  $children?: {
563
563
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -587,8 +587,8 @@ export declare const VScaleTransition: {
587
587
  group: boolean;
588
588
  hideOnLeave: boolean;
589
589
  leaveAbsolute: boolean;
590
- mode: string | undefined;
591
- origin: string | undefined;
590
+ mode: string;
591
+ origin: string;
592
592
  } & {} & {
593
593
  $children?: {
594
594
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -646,8 +646,8 @@ export declare const VScrollXTransition: {
646
646
  group: boolean;
647
647
  hideOnLeave: boolean;
648
648
  leaveAbsolute: boolean;
649
- mode: string | undefined;
650
- origin: string | undefined;
649
+ mode: string;
650
+ origin: string;
651
651
  } & {} & {
652
652
  $children?: {
653
653
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -684,8 +684,8 @@ export declare const VScrollXTransition: {
684
684
  group: boolean;
685
685
  hideOnLeave: boolean;
686
686
  leaveAbsolute: boolean;
687
- mode: string | undefined;
688
- origin: string | undefined;
687
+ mode: string;
688
+ origin: string;
689
689
  } & {} & {
690
690
  $children?: {
691
691
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -715,8 +715,8 @@ export declare const VScrollXTransition: {
715
715
  group: boolean;
716
716
  hideOnLeave: boolean;
717
717
  leaveAbsolute: boolean;
718
- mode: string | undefined;
719
- origin: string | undefined;
718
+ mode: string;
719
+ origin: string;
720
720
  } & {} & {
721
721
  $children?: {
722
722
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -774,8 +774,8 @@ export declare const VScrollXReverseTransition: {
774
774
  group: boolean;
775
775
  hideOnLeave: boolean;
776
776
  leaveAbsolute: boolean;
777
- mode: string | undefined;
778
- origin: string | undefined;
777
+ mode: string;
778
+ origin: string;
779
779
  } & {} & {
780
780
  $children?: {
781
781
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -812,8 +812,8 @@ export declare const VScrollXReverseTransition: {
812
812
  group: boolean;
813
813
  hideOnLeave: boolean;
814
814
  leaveAbsolute: boolean;
815
- mode: string | undefined;
816
- origin: string | undefined;
815
+ mode: string;
816
+ origin: string;
817
817
  } & {} & {
818
818
  $children?: {
819
819
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -843,8 +843,8 @@ export declare const VScrollXReverseTransition: {
843
843
  group: boolean;
844
844
  hideOnLeave: boolean;
845
845
  leaveAbsolute: boolean;
846
- mode: string | undefined;
847
- origin: string | undefined;
846
+ mode: string;
847
+ origin: string;
848
848
  } & {} & {
849
849
  $children?: {
850
850
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -902,8 +902,8 @@ export declare const VScrollYTransition: {
902
902
  group: boolean;
903
903
  hideOnLeave: boolean;
904
904
  leaveAbsolute: boolean;
905
- mode: string | undefined;
906
- origin: string | undefined;
905
+ mode: string;
906
+ origin: string;
907
907
  } & {} & {
908
908
  $children?: {
909
909
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -940,8 +940,8 @@ export declare const VScrollYTransition: {
940
940
  group: boolean;
941
941
  hideOnLeave: boolean;
942
942
  leaveAbsolute: boolean;
943
- mode: string | undefined;
944
- origin: string | undefined;
943
+ mode: string;
944
+ origin: string;
945
945
  } & {} & {
946
946
  $children?: {
947
947
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -971,8 +971,8 @@ export declare const VScrollYTransition: {
971
971
  group: boolean;
972
972
  hideOnLeave: boolean;
973
973
  leaveAbsolute: boolean;
974
- mode: string | undefined;
975
- origin: string | undefined;
974
+ mode: string;
975
+ origin: string;
976
976
  } & {} & {
977
977
  $children?: {
978
978
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1030,8 +1030,8 @@ export declare const VScrollYReverseTransition: {
1030
1030
  group: boolean;
1031
1031
  hideOnLeave: boolean;
1032
1032
  leaveAbsolute: boolean;
1033
- mode: string | undefined;
1034
- origin: string | undefined;
1033
+ mode: string;
1034
+ origin: string;
1035
1035
  } & {} & {
1036
1036
  $children?: {
1037
1037
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1068,8 +1068,8 @@ export declare const VScrollYReverseTransition: {
1068
1068
  group: boolean;
1069
1069
  hideOnLeave: boolean;
1070
1070
  leaveAbsolute: boolean;
1071
- mode: string | undefined;
1072
- origin: string | undefined;
1071
+ mode: string;
1072
+ origin: string;
1073
1073
  } & {} & {
1074
1074
  $children?: {
1075
1075
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1099,8 +1099,8 @@ export declare const VScrollYReverseTransition: {
1099
1099
  group: boolean;
1100
1100
  hideOnLeave: boolean;
1101
1101
  leaveAbsolute: boolean;
1102
- mode: string | undefined;
1103
- origin: string | undefined;
1102
+ mode: string;
1103
+ origin: string;
1104
1104
  } & {} & {
1105
1105
  $children?: {
1106
1106
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1158,8 +1158,8 @@ export declare const VSlideXTransition: {
1158
1158
  group: boolean;
1159
1159
  hideOnLeave: boolean;
1160
1160
  leaveAbsolute: boolean;
1161
- mode: string | undefined;
1162
- origin: string | undefined;
1161
+ mode: string;
1162
+ origin: string;
1163
1163
  } & {} & {
1164
1164
  $children?: {
1165
1165
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1196,8 +1196,8 @@ export declare const VSlideXTransition: {
1196
1196
  group: boolean;
1197
1197
  hideOnLeave: boolean;
1198
1198
  leaveAbsolute: boolean;
1199
- mode: string | undefined;
1200
- origin: string | undefined;
1199
+ mode: string;
1200
+ origin: string;
1201
1201
  } & {} & {
1202
1202
  $children?: {
1203
1203
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1227,8 +1227,8 @@ export declare const VSlideXTransition: {
1227
1227
  group: boolean;
1228
1228
  hideOnLeave: boolean;
1229
1229
  leaveAbsolute: boolean;
1230
- mode: string | undefined;
1231
- origin: string | undefined;
1230
+ mode: string;
1231
+ origin: string;
1232
1232
  } & {} & {
1233
1233
  $children?: {
1234
1234
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1286,8 +1286,8 @@ export declare const VSlideXReverseTransition: {
1286
1286
  group: boolean;
1287
1287
  hideOnLeave: boolean;
1288
1288
  leaveAbsolute: boolean;
1289
- mode: string | undefined;
1290
- origin: string | undefined;
1289
+ mode: string;
1290
+ origin: string;
1291
1291
  } & {} & {
1292
1292
  $children?: {
1293
1293
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1324,8 +1324,8 @@ export declare const VSlideXReverseTransition: {
1324
1324
  group: boolean;
1325
1325
  hideOnLeave: boolean;
1326
1326
  leaveAbsolute: boolean;
1327
- mode: string | undefined;
1328
- origin: string | undefined;
1327
+ mode: string;
1328
+ origin: string;
1329
1329
  } & {} & {
1330
1330
  $children?: {
1331
1331
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1355,8 +1355,8 @@ export declare const VSlideXReverseTransition: {
1355
1355
  group: boolean;
1356
1356
  hideOnLeave: boolean;
1357
1357
  leaveAbsolute: boolean;
1358
- mode: string | undefined;
1359
- origin: string | undefined;
1358
+ mode: string;
1359
+ origin: string;
1360
1360
  } & {} & {
1361
1361
  $children?: {
1362
1362
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1414,8 +1414,8 @@ export declare const VSlideYTransition: {
1414
1414
  group: boolean;
1415
1415
  hideOnLeave: boolean;
1416
1416
  leaveAbsolute: boolean;
1417
- mode: string | undefined;
1418
- origin: string | undefined;
1417
+ mode: string;
1418
+ origin: string;
1419
1419
  } & {} & {
1420
1420
  $children?: {
1421
1421
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1452,8 +1452,8 @@ export declare const VSlideYTransition: {
1452
1452
  group: boolean;
1453
1453
  hideOnLeave: boolean;
1454
1454
  leaveAbsolute: boolean;
1455
- mode: string | undefined;
1456
- origin: string | undefined;
1455
+ mode: string;
1456
+ origin: string;
1457
1457
  } & {} & {
1458
1458
  $children?: {
1459
1459
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1483,8 +1483,8 @@ export declare const VSlideYTransition: {
1483
1483
  group: boolean;
1484
1484
  hideOnLeave: boolean;
1485
1485
  leaveAbsolute: boolean;
1486
- mode: string | undefined;
1487
- origin: string | undefined;
1486
+ mode: string;
1487
+ origin: string;
1488
1488
  } & {} & {
1489
1489
  $children?: {
1490
1490
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1542,8 +1542,8 @@ export declare const VSlideYReverseTransition: {
1542
1542
  group: boolean;
1543
1543
  hideOnLeave: boolean;
1544
1544
  leaveAbsolute: boolean;
1545
- mode: string | undefined;
1546
- origin: string | undefined;
1545
+ mode: string;
1546
+ origin: string;
1547
1547
  } & {} & {
1548
1548
  $children?: {
1549
1549
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1580,8 +1580,8 @@ export declare const VSlideYReverseTransition: {
1580
1580
  group: boolean;
1581
1581
  hideOnLeave: boolean;
1582
1582
  leaveAbsolute: boolean;
1583
- mode: string | undefined;
1584
- origin: string | undefined;
1583
+ mode: string;
1584
+ origin: string;
1585
1585
  } & {} & {
1586
1586
  $children?: {
1587
1587
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1611,8 +1611,8 @@ export declare const VSlideYReverseTransition: {
1611
1611
  group: boolean;
1612
1612
  hideOnLeave: boolean;
1613
1613
  leaveAbsolute: boolean;
1614
- mode: string | undefined;
1615
- origin: string | undefined;
1614
+ mode: string;
1615
+ origin: string;
1616
1616
  } & {} & {
1617
1617
  $children?: {
1618
1618
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -1,7 +1,7 @@
1
1
  // Utilities
2
2
  import { inject, toRef } from 'vue';
3
3
  import { useRtl } from "./locale.js";
4
- import { clamp, consoleWarn, easingPatterns, mergeDeep, refElement } from "../util/index.js"; // Types
4
+ import { clamp, consoleWarn, easingPatterns, mergeDeep, PREFERS_REDUCED_MOTION, refElement } from "../util/index.js"; // Types
5
5
  export const GoToSymbol = Symbol.for('vuetify:goto');
6
6
  function genDefaults() {
7
7
  return {
@@ -41,7 +41,7 @@ export async function scrollTo(_target, _options, horizontal, goTo) {
41
41
  const rtl = goTo?.rtl.value;
42
42
  const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;
43
43
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
44
- const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
44
+ const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
45
45
  if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
46
46
  let targetLocation;
47
47
  if (typeof target === 'number') {
@@ -1 +1 @@
1
- {"version":3,"file":"goto.js","names":["inject","toRef","useRtl","clamp","consoleWarn","easingPatterns","mergeDeep","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","window","matchMedia","matches","instant","TypeError","targetLocation","styles","getComputedStyle","layoutOffset","getPropertyValue","parseInt","clampTarget","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","goToInstance","Error","go","scrollWidth","scrollHeight","containerWidth","containerHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","min","max"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject, toRef } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, easingPatterns, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\nimport type { EasingFunction } from '@/util'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | EasingFunction\n patterns: Record<string, EasingFunction>\n}\n\nexport type GoToOptions = Partial<InternalGoToOptions>\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic' satisfies keyof typeof easingPatterns,\n patterns: easingPatterns,\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant\n : typeof options.easing === 'function' ? options.easing\n : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: toRef(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return clamp(value, min, max)\n}\n"],"mappings":"AAAA;AACA,SAASA,MAAM,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC1BC,MAAM;AAAA,SACNC,KAAK,EAAEC,WAAW,EAAEC,cAAc,EAAEC,SAAS,EAAEC,UAAU,4BAElE;AAqBA,OAAO,MAAMC,UAAsC,GAAGC,MAAM,CAACC,GAAG,CAAC,cAAc,CAAC;AAEhF,SAASC,WAAWA,CAAA,EAAI;EACtB,OAAO;IACLC,SAAS,EAAEC,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAE,KAAK;IACbC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,gBAAsD;IAC9DC,QAAQ,EAAEb;EACZ,CAAC;AACH;AAEA,SAASc,YAAYA,CAAEC,EAAmD,EAAE;EAC1E,OAAOC,SAAS,CAACD,EAAE,CAAC,KAAKE,QAAQ,CAACC,gBAAgB,IAAID,QAAQ,CAACE,IAAI,CAAgB;AACrF;AAEA,SAASH,SAASA,CAAED,EAA8D,EAAE;EAClF,OAAQ,OAAOA,EAAE,KAAK,QAAQ,GAAIE,QAAQ,CAACG,aAAa,CAAcL,EAAE,CAAC,GAAGb,UAAU,CAACa,EAAE,CAAC;AAC5F;AAEA,SAASM,SAASA,CAAEC,MAAW,EAAEC,UAAoB,EAAEC,GAAa,EAAU;EAC5E,IAAI,OAAOF,MAAM,KAAK,QAAQ,EAAE,OAAOC,UAAU,IAAIC,GAAG,GAAG,CAACF,MAAM,GAAGA,MAAM;EAE3E,IAAIP,EAAE,GAAGC,SAAS,CAACM,MAAM,CAAC;EAC1B,IAAIG,WAAW,GAAG,CAAC;EACnB,OAAOV,EAAE,EAAE;IACTU,WAAW,IAAIF,UAAU,GAAGR,EAAE,CAACW,UAAU,GAAGX,EAAE,CAACY,SAAS;IACxDZ,EAAE,GAAGA,EAAE,CAACa,YAA2B;EACrC;EAEA,OAAOH,WAAW;AACpB;AAEA,OAAO,SAASI,UAAUA,CACxBC,OAA+B,EAC/BC,MAAoC,EACtB;EACd,OAAO;IACLP,GAAG,EAAEO,MAAM,CAACC,KAAK;IACjBF,OAAO,EAAE7B,SAAS,CAACK,WAAW,CAAC,CAAC,EAAEwB,OAAO;EAC3C,CAAC;AACH;AAEA,OAAO,eAAeG,QAAQA,CAC5BC,OAAgE,EAChEC,QAAqB,EACrBZ,UAAoB,EACpBa,IAAmB,EACnB;EACA,MAAMC,QAAQ,GAAGd,UAAU,GAAG,YAAY,GAAG,WAAW;EACxD,MAAMO,OAAO,GAAG7B,SAAS,CAACmC,IAAI,EAAEN,OAAO,IAAIxB,WAAW,CAAC,CAAC,EAAE6B,QAAQ,CAAC;EACnE,MAAMX,GAAG,GAAGY,IAAI,EAAEZ,GAAG,CAACc,KAAK;EAC3B,MAAMhB,MAAM,GAAG,CAAC,OAAOY,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGlB,SAAS,CAACkB,OAAO,CAAC,KAAK,CAAC;EAChF,MAAM3B,SAAS,GAAGuB,OAAO,CAACvB,SAAS,KAAK,QAAQ,IAAIe,MAAM,YAAYiB,WAAW,GAC7EjB,MAAM,CAACkB,aAAa,GACpB1B,YAAY,CAACgB,OAAO,CAACvB,SAAS,CAAC;EACnC,MAAMkC,IAAI,GAAGC,MAAM,CAACC,UAAU,CAAC,kCAAkC,CAAC,CAACC,OAAO,GAAGd,OAAO,CAACjB,QAAQ,CAACgC,OAAO,GACjG,OAAOf,OAAO,CAAClB,MAAM,KAAK,UAAU,GAAGkB,OAAO,CAAClB,MAAM,GACrDkB,OAAO,CAACjB,QAAQ,CAACiB,OAAO,CAAClB,MAAM,CAAC;EAEpC,IAAI,CAAC6B,IAAI,EAAE,MAAM,IAAIK,SAAS,CAAC,oBAAoBhB,OAAO,CAAClB,MAAM,cAAc,CAAC;EAEhF,IAAImC,cAAsB;EAC1B,IAAI,OAAOzB,MAAM,KAAK,QAAQ,EAAE;IAC9ByB,cAAc,GAAG1B,SAAS,CAACC,MAAM,EAAEC,UAAU,EAAEC,GAAG,CAAC;EACrD,CAAC,MAAM;IACLuB,cAAc,GAAG1B,SAAS,CAACC,MAAM,EAAEC,UAAU,EAAEC,GAAG,CAAC,GAAGH,SAAS,CAACd,SAAS,EAAEgB,UAAU,EAAEC,GAAG,CAAC;IAE3F,IAAIM,OAAO,CAACpB,MAAM,EAAE;MAClB,MAAMsC,MAAM,GAAGN,MAAM,CAACO,gBAAgB,CAAC3B,MAAM,CAAC;MAC9C,MAAM4B,YAAY,GAAGF,MAAM,CAACG,gBAAgB,CAAC,gBAAgB,CAAC;MAE9D,IAAID,YAAY,EAAEH,cAAc,IAAIK,QAAQ,CAACF,YAAY,EAAE,EAAE,CAAC;IAChE;EACF;EAEAH,cAAc,IAAIjB,OAAO,CAACnB,MAAM;EAChCoC,cAAc,GAAGM,WAAW,CAAC9C,SAAS,EAAEwC,cAAc,EAAE,CAAC,CAACvB,GAAG,EAAE,CAAC,CAACD,UAAU,CAAC;EAE5E,MAAM+B,aAAa,GAAG/C,SAAS,CAAC8B,QAAQ,CAAC,IAAI,CAAC;EAE9C,IAAIU,cAAc,KAAKO,aAAa,EAAE,OAAOC,OAAO,CAACC,OAAO,CAACT,cAAc,CAAC;EAE5E,MAAMU,SAAS,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;EAEnC,OAAO,IAAIJ,OAAO,CAACC,OAAO,IAAII,qBAAqB,CAAC,SAASC,IAAIA,CAAEC,WAAmB,EAAE;IACtF,MAAMC,WAAW,GAAGD,WAAW,GAAGL,SAAS;IAC3C,MAAMO,QAAQ,GAAGD,WAAW,GAAGjC,OAAO,CAACrB,QAAQ;IAC/C,MAAMwD,QAAQ,GAAGC,IAAI,CAACC,KAAK,CACzBb,aAAa,GACb,CAACP,cAAc,GAAGO,aAAa,IAC/Bb,IAAI,CAAC3C,KAAK,CAACkE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAC5B,CAAC;IAEDzD,SAAS,CAAC8B,QAAQ,CAAC,GAAG4B,QAAQ;;IAE9B;IACA,IAAID,QAAQ,IAAI,CAAC,IAAIE,IAAI,CAACE,GAAG,CAACH,QAAQ,GAAG1D,SAAS,CAAC8B,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;MAClE,OAAOmB,OAAO,CAACT,cAAc,CAAC;IAChC,CAAC,MAAM,IAAIiB,QAAQ,GAAG,CAAC,EAAE;MACvB;MACAjE,WAAW,CAAC,gCAAgC,CAAC;MAC7C,OAAOyD,OAAO,CAACjD,SAAS,CAAC8B,QAAQ,CAAC,CAAC;IACrC;IAEAuB,qBAAqB,CAACC,IAAI,CAAC;EAC7B,CAAC,CAAC,CAAC;AACL;AAEA,OAAO,SAASQ,OAAOA,CAAA,EAA8B;EAAA,IAA5BlC,QAAqB,GAAAmC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9D,SAAA,GAAA8D,SAAA,MAAG,CAAC,CAAC;EACjD,MAAME,YAAY,GAAG7E,MAAM,CAACQ,UAAU,CAAC;EACvC,MAAM;IAAE6B;EAAM,CAAC,GAAGnC,MAAM,CAAC,CAAC;EAE1B,IAAI,CAAC2E,YAAY,EAAE,MAAM,IAAIC,KAAK,CAAC,iDAAiD,CAAC;EAErF,MAAMrC,IAAI,GAAG;IACX,GAAGoC,YAAY;IACf;IACAhD,GAAG,EAAE5B,KAAK,CAAC,MAAM4E,YAAY,CAAChD,GAAG,CAACc,KAAK,IAAIN,KAAK,CAACM,KAAK;EACxD,CAAC;EAED,eAAeoC,EAAEA,CACfpD,MAA+D,EAC/DQ,OAA8B,EAC9B;IACA,OAAOG,QAAQ,CAACX,MAAM,EAAErB,SAAS,CAACkC,QAAQ,EAAEL,OAAO,CAAC,EAAE,KAAK,EAAEM,IAAI,CAAC;EACpE;EAEAsC,EAAE,CAACnD,UAAU,GAAG,OACdD,MAA+D,EAC/DQ,OAA8B,KAC3B;IACH,OAAOG,QAAQ,CAACX,MAAM,EAAErB,SAAS,CAACkC,QAAQ,EAAEL,OAAO,CAAC,EAAE,IAAI,EAAEM,IAAI,CAAC;EACnE,CAAC;EAED,OAAOsC,EAAE;AACX;;AAEA;AACA;AACA;AACA;AACA,SAASrB,WAAWA,CAClB9C,SAAsB,EACtB+B,KAAa,EACbd,GAAY,EACZD,UAAmB,EACnB;EACA,MAAM;IAAEoD,WAAW;IAAEC;EAAa,CAAC,GAAGrE,SAAS;EAC/C,MAAM,CAACsE,cAAc,EAAEC,eAAe,CAAC,GAAGvE,SAAS,KAAKU,QAAQ,CAACC,gBAAgB,GAC7E,CAACwB,MAAM,CAACqC,UAAU,EAAErC,MAAM,CAACsC,WAAW,CAAC,GACvC,CAACzE,SAAS,CAAC0E,WAAW,EAAE1E,SAAS,CAAC2E,YAAY,CAAC;EAEnD,IAAIC,GAAW;EACf,IAAIC,GAAW;EAEf,IAAI7D,UAAU,EAAE;IACd,IAAIC,GAAG,EAAE;MACP2D,GAAG,GAAG,EAAER,WAAW,GAAGE,cAAc,CAAC;MACrCO,GAAG,GAAG,CAAC;IACT,CAAC,MAAM;MACLD,GAAG,GAAG,CAAC;MACPC,GAAG,GAAGT,WAAW,GAAGE,cAAc;IACpC;EACF,CAAC,MAAM;IACLM,GAAG,GAAG,CAAC;IACPC,GAAG,GAAGR,YAAY,GAAG,CAACE,eAAe;EACvC;EAEA,OAAOhF,KAAK,CAACwC,KAAK,EAAE6C,GAAG,EAAEC,GAAG,CAAC;AAC/B","ignoreList":[]}
1
+ {"version":3,"file":"goto.js","names":["inject","toRef","useRtl","clamp","consoleWarn","easingPatterns","mergeDeep","PREFERS_REDUCED_MOTION","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","instant","TypeError","targetLocation","styles","window","getComputedStyle","layoutOffset","getPropertyValue","parseInt","clampTarget","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","goToInstance","Error","go","scrollWidth","scrollHeight","containerWidth","containerHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","min","max"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject, toRef } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, easingPatterns, mergeDeep, PREFERS_REDUCED_MOTION, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\nimport type { EasingFunction } from '@/util'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | EasingFunction\n patterns: Record<string, EasingFunction>\n}\n\nexport type GoToOptions = Partial<InternalGoToOptions>\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic' satisfies keyof typeof easingPatterns,\n patterns: easingPatterns,\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant\n : typeof options.easing === 'function' ? options.easing\n : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: toRef(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return clamp(value, min, max)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -44,6 +44,8 @@ export interface GroupItemProvide {
44
44
  value: Ref<unknown>;
45
45
  disabled: Ref<boolean | undefined>;
46
46
  group: GroupProvide;
47
+ register: () => void;
48
+ unregister: () => void;
47
49
  }
48
50
  export declare const makeGroupProps: <Defaults extends {
49
51
  modelValue?: unknown;
@@ -36,14 +36,18 @@ export function useGroupItem(props, injectKey) {
36
36
  }
37
37
  const value = toRef(() => props.value);
38
38
  const disabled = computed(() => !!(group.disabled.value || props.disabled));
39
- group.register({
40
- id,
41
- value,
42
- disabled
43
- }, vm);
44
- onBeforeUnmount(() => {
45
- group.unregister(id);
46
- });
39
+ function register() {
40
+ group?.register({
41
+ id,
42
+ value,
43
+ disabled
44
+ }, vm);
45
+ }
46
+ function unregister() {
47
+ group?.unregister(id);
48
+ }
49
+ onMounted(() => register());
50
+ onBeforeUnmount(() => unregister());
47
51
  const isSelected = computed(() => {
48
52
  return group.isSelected(id);
49
53
  });
@@ -71,7 +75,9 @@ export function useGroupItem(props, injectKey) {
71
75
  selectedClass,
72
76
  value,
73
77
  disabled,
74
- group
78
+ group,
79
+ register,
80
+ unregister
75
81
  };
76
82
  }
77
83
  export function useGroup(props, injectKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","useId","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","isFirst","items","isLast","emit","flush","toggle","select","useGroup","isUnmounted","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","useIndexAsValue","splice","push","forceMandatoryValue","findIndex","find","i","internalValue","slice","includes","step","offset","currentId","currentIndex","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: string\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: string) => void\n select: (id: string, value: boolean) => void\n selected: Ref<Readonly<string[]>>\n isSelected: (id: string) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: Readonly<Ref<{\n id: string\n value: unknown\n disabled: boolean | undefined\n }[]>>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: string\n isSelected: Ref<boolean>\n isFirst: Ref<boolean>\n isLast: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = useId()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(() => props.value)\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v === undefined) return []\n\n return getIds(items, v === null ? [null] : wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) === undefined) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: string) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: string, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n if (!isSelected && !value) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(() => props.disabled),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: string) => selected.value.includes(id),\n selectedClass: toRef(() => props.selectedClass),\n items: toRef(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: string[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value !== undefined) {\n ids.push(item.id)\n } else if (itemByIndex?.useIndexAsValue) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value !== undefined ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","useId","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","isFirst","items","isLast","emit","flush","toggle","select","useGroup","isUnmounted","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","useIndexAsValue","splice","push","forceMandatoryValue","findIndex","find","i","internalValue","slice","includes","step","offset","currentId","currentIndex","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: string\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: string) => void\n select: (id: string, value: boolean) => void\n selected: Ref<Readonly<string[]>>\n isSelected: (id: string) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: Readonly<Ref<{\n id: string\n value: unknown\n disabled: boolean | undefined\n }[]>>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: string\n isSelected: Ref<boolean>\n isFirst: Ref<boolean>\n isLast: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n register: () => void\n unregister: () => void\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = useId()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(() => props.value)\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n function register () {\n group?.register({ id, value, disabled }, vm)\n }\n\n function unregister () {\n group?.unregister(id)\n }\n\n onMounted(() => register())\n onBeforeUnmount(() => unregister())\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n register,\n unregister,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v === undefined) return []\n\n return getIds(items, v === null ? [null] : wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) === undefined) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: string) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: string, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n if (!isSelected && !value) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(() => props.disabled),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: string) => selected.value.includes(id),\n selectedClass: toRef(() => props.selectedClass),\n items: toRef(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: string[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value !== undefined) {\n ids.push(item.id)\n } else if (itemByIndex?.useIndexAsValue) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value !== undefined ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}