@vuetify/nightly 3.6.3-master.2024-05-06 → 3.6.3-master.2024-05-07

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 (61) hide show
  1. package/CHANGELOG.md +8 -2
  2. package/dist/json/attributes.json +148 -8
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/importMap.json +112 -112
  5. package/dist/json/tags.json +36 -1
  6. package/dist/json/web-types.json +433 -23
  7. package/dist/vuetify-labs.css +1744 -1744
  8. package/dist/vuetify-labs.d.ts +631 -317
  9. package/dist/vuetify-labs.esm.js +65 -89
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +65 -89
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +4507 -4507
  14. package/dist/vuetify.d.ts +273 -315
  15. package/dist/vuetify.esm.js +12 -14
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +12 -14
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +11 -11
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/index.d.mts +18 -18
  25. package/lib/components/VBottomSheet/index.d.mts +9 -15
  26. package/lib/components/VCarousel/index.d.mts +6 -6
  27. package/lib/components/VCombobox/index.d.mts +18 -18
  28. package/lib/components/VDialog/index.d.mts +27 -33
  29. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  30. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  31. package/lib/components/VFileInput/index.d.mts +9 -9
  32. package/lib/components/VImg/index.d.mts +6 -6
  33. package/lib/components/VList/VListItem.mjs +3 -2
  34. package/lib/components/VList/VListItem.mjs.map +1 -1
  35. package/lib/components/VList/index.d.mts +6 -6
  36. package/lib/components/VMenu/index.d.mts +27 -33
  37. package/lib/components/VOverlay/VOverlay.mjs +2 -5
  38. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  39. package/lib/components/VOverlay/index.d.mts +9 -15
  40. package/lib/components/VResponsive/VResponsive.mjs +1 -1
  41. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  42. package/lib/components/VResponsive/index.d.mts +6 -6
  43. package/lib/components/VSelect/index.d.mts +18 -18
  44. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  45. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  46. package/lib/components/VSnackbar/index.d.mts +41 -47
  47. package/lib/components/VSpeedDial/index.d.mts +9 -15
  48. package/lib/components/VTooltip/index.d.mts +27 -33
  49. package/lib/components/index.d.mts +236 -278
  50. package/lib/composables/component.mjs +1 -1
  51. package/lib/composables/component.mjs.map +1 -1
  52. package/lib/entry-bundler.mjs +1 -1
  53. package/lib/framework.mjs +1 -1
  54. package/lib/index.d.mts +37 -37
  55. package/lib/labs/VNumberInput/VNumberInput.mjs +57 -81
  56. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  57. package/lib/labs/VNumberInput/index.d.mts +402 -34
  58. package/lib/labs/VSnackbarQueue/index.d.mts +41 -47
  59. package/lib/labs/VTreeview/index.d.mts +6 -6
  60. package/lib/labs/components.d.mts +442 -86
  61. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VResponsive.mjs","names":["makeComponentProps","makeDimensionProps","useDimension","computed","genericComponent","propsFactory","useRender","useAspectStyles","props","aspectStyles","ratio","Number","aspectRatio","paddingBottom","String","undefined","makeVResponsiveProps","contentClass","inline","Boolean","VResponsive","name","setup","_ref","slots","dimensionStyles","_createVNode","class","value","style","additional","default"],"sources":["../../../src/components/VResponsive/VResponsive.tsx"],"sourcesContent":["// Styles\nimport './VResponsive.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VResponsiveSlots = {\n default: never\n additional: never\n}\n\nexport function useAspectStyles (props: { aspectRatio?: string | number }) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio)\n\n return ratio\n ? { paddingBottom: String(1 / ratio * 100) + '%' }\n : undefined\n }),\n }\n}\n\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: String,\n inline: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VResponsive')\n\nexport const VResponsive = genericComponent<VResponsiveSlots>()({\n name: 'VResponsive',\n\n props: makeVResponsiveProps(),\n\n setup (props, { slots }) {\n const { aspectStyles } = useAspectStyles(props)\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n <div\n class={[\n 'v-responsive',\n { 'v-responsive--inline': props.inline },\n props.class,\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n <div class=\"v-responsive__sizer\" style={ aspectStyles.value } />\n\n { slots.additional?.() }\n\n { slots.default && (\n <div class={['v-responsive__content', props.contentClass]}>{ slots.default() }</div>\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VResponsive = InstanceType<typeof VResponsive>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY,4CAEzC;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAOlD,OAAO,SAASC,eAAeA,CAAEC,KAAwC,EAAE;EACzE,OAAO;IACLC,YAAY,EAAEN,QAAQ,CAAC,MAAM;MAC3B,MAAMO,KAAK,GAAGC,MAAM,CAACH,KAAK,CAACI,WAAW,CAAC;MAEvC,OAAOF,KAAK,GACR;QAAEG,aAAa,EAAEC,MAAM,CAAC,CAAC,GAAGJ,KAAK,GAAG,GAAG,CAAC,GAAG;MAAI,CAAC,GAChDK,SAAS;IACf,CAAC;EACH,CAAC;AACH;AAEA,OAAO,MAAMC,oBAAoB,GAAGX,YAAY,CAAC;EAC/CO,WAAW,EAAE,CAACE,MAAM,EAAEH,MAAM,CAAC;EAC7BM,YAAY,EAAEH,MAAM;EACpBI,MAAM,EAAEC,OAAO;EAEf,GAAGnB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC;AACxB,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAMmB,WAAW,GAAGhB,gBAAgB,CAAmB,CAAC,CAAC;EAC9DiB,IAAI,EAAE,aAAa;EAEnBb,KAAK,EAAEQ,oBAAoB,CAAC,CAAC;EAE7BM,KAAKA,CAAEd,KAAK,EAAAe,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEd;IAAa,CAAC,GAAGF,eAAe,CAACC,KAAK,CAAC;IAC/C,MAAM;MAAEiB;IAAgB,CAAC,GAAGvB,YAAY,CAACM,KAAK,CAAC;IAE/CF,SAAS,CAAC,MAAAoB,YAAA;MAAA,SAEC,CACL,cAAc,EACd;QAAE,sBAAsB,EAAElB,KAAK,CAACU;MAAO,CAAC,EACxCV,KAAK,CAACmB,KAAK,CACZ;MAAA,SACM,CACLF,eAAe,CAACG,KAAK,EACrBpB,KAAK,CAACqB,KAAK;IACZ,IAAAH,YAAA;MAAA;MAAA,SAEwCjB,YAAY,CAACmB;IAAK,UAEzDJ,KAAK,CAACM,UAAU,GAAG,CAAC,EAEpBN,KAAK,CAACO,OAAO,IAAAL,YAAA;MAAA,SACD,CAAC,uBAAuB,EAAElB,KAAK,CAACS,YAAY;IAAC,IAAIO,KAAK,CAACO,OAAO,CAAC,CAAC,EAC7E,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"VResponsive.mjs","names":["makeComponentProps","makeDimensionProps","useDimension","computed","genericComponent","propsFactory","useRender","useAspectStyles","props","aspectStyles","ratio","Number","aspectRatio","paddingBottom","String","undefined","makeVResponsiveProps","contentClass","inline","Boolean","VResponsive","name","setup","_ref","slots","dimensionStyles","_createVNode","class","value","style","additional","default"],"sources":["../../../src/components/VResponsive/VResponsive.tsx"],"sourcesContent":["// Styles\nimport './VResponsive.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VResponsiveSlots = {\n default: never\n additional: never\n}\n\nexport function useAspectStyles (props: { aspectRatio?: string | number }) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio)\n\n return ratio\n ? { paddingBottom: String(1 / ratio * 100) + '%' }\n : undefined\n }),\n }\n}\n\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: null,\n inline: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VResponsive')\n\nexport const VResponsive = genericComponent<VResponsiveSlots>()({\n name: 'VResponsive',\n\n props: makeVResponsiveProps(),\n\n setup (props, { slots }) {\n const { aspectStyles } = useAspectStyles(props)\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n <div\n class={[\n 'v-responsive',\n { 'v-responsive--inline': props.inline },\n props.class,\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n <div class=\"v-responsive__sizer\" style={ aspectStyles.value } />\n\n { slots.additional?.() }\n\n { slots.default && (\n <div class={['v-responsive__content', props.contentClass]}>{ slots.default() }</div>\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VResponsive = InstanceType<typeof VResponsive>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY,4CAEzC;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAOlD,OAAO,SAASC,eAAeA,CAAEC,KAAwC,EAAE;EACzE,OAAO;IACLC,YAAY,EAAEN,QAAQ,CAAC,MAAM;MAC3B,MAAMO,KAAK,GAAGC,MAAM,CAACH,KAAK,CAACI,WAAW,CAAC;MAEvC,OAAOF,KAAK,GACR;QAAEG,aAAa,EAAEC,MAAM,CAAC,CAAC,GAAGJ,KAAK,GAAG,GAAG,CAAC,GAAG;MAAI,CAAC,GAChDK,SAAS;IACf,CAAC;EACH,CAAC;AACH;AAEA,OAAO,MAAMC,oBAAoB,GAAGX,YAAY,CAAC;EAC/CO,WAAW,EAAE,CAACE,MAAM,EAAEH,MAAM,CAAC;EAC7BM,YAAY,EAAE,IAAI;EAClBC,MAAM,EAAEC,OAAO;EAEf,GAAGnB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC;AACxB,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAMmB,WAAW,GAAGhB,gBAAgB,CAAmB,CAAC,CAAC;EAC9DiB,IAAI,EAAE,aAAa;EAEnBb,KAAK,EAAEQ,oBAAoB,CAAC,CAAC;EAE7BM,KAAKA,CAAEd,KAAK,EAAAe,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEd;IAAa,CAAC,GAAGF,eAAe,CAACC,KAAK,CAAC;IAC/C,MAAM;MAAEiB;IAAgB,CAAC,GAAGvB,YAAY,CAACM,KAAK,CAAC;IAE/CF,SAAS,CAAC,MAAAoB,YAAA;MAAA,SAEC,CACL,cAAc,EACd;QAAE,sBAAsB,EAAElB,KAAK,CAACU;MAAO,CAAC,EACxCV,KAAK,CAACmB,KAAK,CACZ;MAAA,SACM,CACLF,eAAe,CAACG,KAAK,EACrBpB,KAAK,CAACqB,KAAK;IACZ,IAAAH,YAAA;MAAA;MAAA,SAEwCjB,YAAY,CAACmB;IAAK,UAEzDJ,KAAK,CAACM,UAAU,GAAG,CAAC,EAEpBN,KAAK,CAACO,OAAO,IAAAL,YAAA;MAAA,SACD,CAAC,uBAAuB,EAAElB,KAAK,CAACS,YAAY;IAAC,IAAIO,KAAK,CAACO,OAAO,CAAC,CAAC,EAC7E,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -13,7 +13,7 @@ declare const VResponsive: {
13
13
  class?: any;
14
14
  width?: string | number | undefined;
15
15
  height?: string | number | undefined;
16
- contentClass?: string | undefined;
16
+ contentClass?: any;
17
17
  maxHeight?: string | number | undefined;
18
18
  maxWidth?: string | number | undefined;
19
19
  minHeight?: string | number | undefined;
@@ -38,7 +38,7 @@ declare const VResponsive: {
38
38
  class?: any;
39
39
  width?: string | number | undefined;
40
40
  height?: string | number | undefined;
41
- contentClass?: string | undefined;
41
+ contentClass?: any;
42
42
  maxHeight?: string | number | undefined;
43
43
  maxWidth?: string | number | undefined;
44
44
  minHeight?: string | number | undefined;
@@ -80,7 +80,7 @@ declare const VResponsive: {
80
80
  class?: any;
81
81
  width?: string | number | undefined;
82
82
  height?: string | number | undefined;
83
- contentClass?: string | undefined;
83
+ contentClass?: any;
84
84
  maxHeight?: string | number | undefined;
85
85
  maxWidth?: string | number | undefined;
86
86
  minHeight?: string | number | undefined;
@@ -112,7 +112,7 @@ declare const VResponsive: {
112
112
  class?: any;
113
113
  width?: string | number | undefined;
114
114
  height?: string | number | undefined;
115
- contentClass?: string | undefined;
115
+ contentClass?: any;
116
116
  maxHeight?: string | number | undefined;
117
117
  maxWidth?: string | number | undefined;
118
118
  minHeight?: string | number | undefined;
@@ -153,7 +153,7 @@ declare const VResponsive: {
153
153
  default: null;
154
154
  };
155
155
  aspectRatio: (StringConstructor | NumberConstructor)[];
156
- contentClass: StringConstructor;
156
+ contentClass: null;
157
157
  inline: BooleanConstructor;
158
158
  }, vue.ExtractPropTypes<{
159
159
  height: (StringConstructor | NumberConstructor)[];
@@ -168,7 +168,7 @@ declare const VResponsive: {
168
168
  default: null;
169
169
  };
170
170
  aspectRatio: (StringConstructor | NumberConstructor)[];
171
- contentClass: StringConstructor;
171
+ contentClass: null;
172
172
  inline: BooleanConstructor;
173
173
  }>>;
174
174
  type VResponsive = InstanceType<typeof VResponsive>;
@@ -622,7 +622,7 @@ declare const VSelect: {
622
622
  component: Component;
623
623
  };
624
624
  zIndex: string | number;
625
- modelValue: boolean | null;
625
+ modelValue: boolean;
626
626
  origin: Anchor | "auto" | "overlap";
627
627
  eager: boolean;
628
628
  location: Anchor;
@@ -651,7 +651,7 @@ declare const VSelect: {
651
651
  component: Component;
652
652
  };
653
653
  zIndex: string | number;
654
- modelValue: boolean | null;
654
+ modelValue: boolean;
655
655
  origin: Anchor | "auto" | "overlap";
656
656
  eager: boolean;
657
657
  location: Anchor;
@@ -727,7 +727,7 @@ declare const VSelect: {
727
727
  component: Component;
728
728
  };
729
729
  zIndex: string | number;
730
- modelValue: boolean | null;
730
+ modelValue: boolean;
731
731
  origin: Anchor | "auto" | "overlap";
732
732
  eager: boolean;
733
733
  location: Anchor;
@@ -1194,7 +1194,7 @@ declare const VSelect: {
1194
1194
  component: Component;
1195
1195
  };
1196
1196
  zIndex: string | number;
1197
- modelValue: boolean | null;
1197
+ modelValue: boolean;
1198
1198
  origin: Anchor | "auto" | "overlap";
1199
1199
  eager: boolean;
1200
1200
  location: Anchor;
@@ -1223,7 +1223,7 @@ declare const VSelect: {
1223
1223
  component: Component;
1224
1224
  };
1225
1225
  zIndex: string | number;
1226
- modelValue: boolean | null;
1226
+ modelValue: boolean;
1227
1227
  origin: Anchor | "auto" | "overlap";
1228
1228
  eager: boolean;
1229
1229
  location: Anchor;
@@ -1299,7 +1299,7 @@ declare const VSelect: {
1299
1299
  component: Component;
1300
1300
  };
1301
1301
  zIndex: string | number;
1302
- modelValue: boolean | null;
1302
+ modelValue: boolean;
1303
1303
  origin: Anchor | "auto" | "overlap";
1304
1304
  eager: boolean;
1305
1305
  location: Anchor;
@@ -1879,7 +1879,7 @@ declare const VSelect: {
1879
1879
  component: Component;
1880
1880
  };
1881
1881
  zIndex: string | number;
1882
- modelValue: boolean | null;
1882
+ modelValue: boolean;
1883
1883
  origin: Anchor | "auto" | "overlap";
1884
1884
  eager: boolean;
1885
1885
  location: Anchor;
@@ -1908,7 +1908,7 @@ declare const VSelect: {
1908
1908
  component: Component;
1909
1909
  };
1910
1910
  zIndex: string | number;
1911
- modelValue: boolean | null;
1911
+ modelValue: boolean;
1912
1912
  origin: Anchor | "auto" | "overlap";
1913
1913
  eager: boolean;
1914
1914
  location: Anchor;
@@ -1984,7 +1984,7 @@ declare const VSelect: {
1984
1984
  component: Component;
1985
1985
  };
1986
1986
  zIndex: string | number;
1987
- modelValue: boolean | null;
1987
+ modelValue: boolean;
1988
1988
  origin: Anchor | "auto" | "overlap";
1989
1989
  eager: boolean;
1990
1990
  location: Anchor;
@@ -2499,7 +2499,7 @@ declare const VSelect: {
2499
2499
  component: Component;
2500
2500
  };
2501
2501
  zIndex: string | number;
2502
- modelValue: boolean | null;
2502
+ modelValue: boolean;
2503
2503
  origin: Anchor | "auto" | "overlap";
2504
2504
  eager: boolean;
2505
2505
  location: Anchor;
@@ -2528,7 +2528,7 @@ declare const VSelect: {
2528
2528
  component: Component;
2529
2529
  };
2530
2530
  zIndex: string | number;
2531
- modelValue: boolean | null;
2531
+ modelValue: boolean;
2532
2532
  origin: Anchor | "auto" | "overlap";
2533
2533
  eager: boolean;
2534
2534
  location: Anchor;
@@ -2604,7 +2604,7 @@ declare const VSelect: {
2604
2604
  component: Component;
2605
2605
  };
2606
2606
  zIndex: string | number;
2607
- modelValue: boolean | null;
2607
+ modelValue: boolean;
2608
2608
  origin: Anchor | "auto" | "overlap";
2609
2609
  eager: boolean;
2610
2610
  location: Anchor;
@@ -3335,7 +3335,7 @@ declare const VSelect: {
3335
3335
  component: Component;
3336
3336
  };
3337
3337
  zIndex: string | number;
3338
- modelValue: boolean | null;
3338
+ modelValue: boolean;
3339
3339
  origin: Anchor | "auto" | "overlap";
3340
3340
  eager: boolean;
3341
3341
  location: Anchor;
@@ -3364,7 +3364,7 @@ declare const VSelect: {
3364
3364
  component: Component;
3365
3365
  };
3366
3366
  zIndex: string | number;
3367
- modelValue: boolean | null;
3367
+ modelValue: boolean;
3368
3368
  origin: Anchor | "auto" | "overlap";
3369
3369
  eager: boolean;
3370
3370
  location: Anchor;
@@ -3440,7 +3440,7 @@ declare const VSelect: {
3440
3440
  component: Component;
3441
3441
  };
3442
3442
  zIndex: string | number;
3443
- modelValue: boolean | null;
3443
+ modelValue: boolean;
3444
3444
  origin: Anchor | "auto" | "overlap";
3445
3445
  eager: boolean;
3446
3446
  location: Anchor;
@@ -4007,7 +4007,7 @@ declare const VSelect: {
4007
4007
  component: Component;
4008
4008
  };
4009
4009
  zIndex: string | number;
4010
- modelValue: boolean | null;
4010
+ modelValue: boolean;
4011
4011
  origin: Anchor | "auto" | "overlap";
4012
4012
  eager: boolean;
4013
4013
  location: Anchor;
@@ -4036,7 +4036,7 @@ declare const VSelect: {
4036
4036
  component: Component;
4037
4037
  };
4038
4038
  zIndex: string | number;
4039
- modelValue: boolean | null;
4039
+ modelValue: boolean;
4040
4040
  origin: Anchor | "auto" | "overlap";
4041
4041
  eager: boolean;
4042
4042
  location: Anchor;
@@ -4112,7 +4112,7 @@ declare const VSelect: {
4112
4112
  component: Component;
4113
4113
  };
4114
4114
  zIndex: string | number;
4115
- modelValue: boolean | null;
4115
+ modelValue: boolean;
4116
4116
  origin: Anchor | "auto" | "overlap";
4117
4117
  eager: boolean;
4118
4118
  location: Anchor;
@@ -1 +1 @@
1
- {"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","useGoTo","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","calculateCenteredTarget","calculateUpdatedTarget","getClientSize","getOffsetSize","getScrollPosition","getScrollSize","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","mobile","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","goTo","goToOptions","container","duration","easing","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","scrollToChildren","isFocused","center","target","containerElement","scrollToPosition","newPosition","offsetSize","scrollPosition","scrollSize","Math","abs","scrollWidth","offsetWidth","containerWidth","horizontal","onScroll","e","scrollTop","scrollLeft","onFocusin","el","composedPath","onFocusout","ignoreFocusEvent","onFocus","relatedTarget","contains","focus","onFocusAffixes","onKeydown","toFocus","location","preventDefault","key","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","preventScroll","scrollTo","offsetStep","slotProps","next","prev","select","isSelected","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","_createVNode","tag","class","style","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps(),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed<Partial<GoToOptions>>(() => {\n return {\n container: containerRef.value,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.value!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.value!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.value) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.value)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.value) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.value!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: UIEvent) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.value.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n function toFocus (location: Parameters<typeof focus>[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n let el: HTMLElement | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n el = focusable[0]\n } else if (location === 'next') {\n el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.value.firstElementChild as HTMLElement)\n } else if (location === 'last') {\n el = (contentRef.value.lastElementChild as HTMLElement)\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.value) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.value!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.value)\n const clientSize = getClientSize(isHorizontal.value, containerRef.value)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n displayClasses.value,\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","useGoTo","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","calculateCenteredTarget","calculateUpdatedTarget","getClientSize","getOffsetSize","getScrollPosition","getScrollSize","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","mobile","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","goTo","goToOptions","container","duration","easing","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","scrollToChildren","isFocused","center","target","containerElement","scrollToPosition","newPosition","offsetSize","scrollPosition","scrollSize","Math","abs","scrollWidth","offsetWidth","containerWidth","horizontal","onScroll","e","scrollTop","scrollLeft","onFocusin","el","composedPath","onFocusout","ignoreFocusEvent","onFocus","relatedTarget","contains","focus","onFocusAffixes","onKeydown","toFocus","location","preventDefault","key","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","preventScroll","scrollTo","offsetStep","slotProps","next","prev","select","isSelected","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","_createVNode","tag","class","style","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps(),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed<Partial<GoToOptions>>(() => {\n return {\n container: containerRef.value,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.value!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.value!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.value) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.value)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.value) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.value!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: Event) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.value.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n function toFocus (location: Parameters<typeof focus>[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n let el: HTMLElement | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n el = focusable[0]\n } else if (location === 'next') {\n el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.value.firstElementChild as HTMLElement)\n } else if (location === 'last') {\n el = (contentRef.value.lastElementChild as HTMLElement)\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.value) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.value!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.value)\n const clientSize = getClientSize(isHorizontal.value, containerRef.value)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n displayClasses.value,\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"VSnackbar.mjs","names":["VDefaultsProvider","VOverlay","makeVOverlayProps","VProgressLinear","useLayout","forwardRefs","VuetifyLayoutKey","makeLocationProps","makePositionProps","usePosition","useProxiedModel","makeRoundedProps","useRounded","useScopeId","makeThemeProps","provideTheme","useToggleScope","genOverlays","makeVariantProps","useVariant","computed","inject","mergeProps","nextTick","onMounted","onScopeDispose","ref","shallowRef","watch","watchEffect","genericComponent","omit","propsFactory","refElement","useRender","useCountdown","milliseconds","time","timer","clear","clearInterval","reset","value","start","el","style","getComputedStyle","transitionDuration","interval","parseFloat","startTime","performance","now","window","setInterval","elapsed","Math","max","makeVSnackbarProps","multiLine","Boolean","text","String","timeout","type","Number","default","vertical","location","transition","VSnackbar","name","props","emits","v","setup","_ref","slots","isActive","positionClasses","scopeId","themeClasses","colorClasses","colorStyles","variantClasses","roundedClasses","countdown","overlay","timerRef","isHovering","startY","mainStyles","hasLayout","undefined","layout","startTimeout","activeTimeout","clearTimeout","element","setTimeout","onPointerenter","onPointerleave","onTouchstart","event","touches","clientY","onTouchend","abs","changedTouches","locationClasses","split","reduce","acc","loc","overlayProps","filterProps","hasContent","_createVNode","_mergeProps","class","$event","contentProps","actions","VBtn","variant","ripple","slim","activator"],"sources":["../../../src/components/VSnackbar/VSnackbar.tsx"],"sourcesContent":["// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Composables\nimport { useLayout } from '@/composables'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { VuetifyLayoutKey } from '@/composables/layout'\nimport { makeLocationProps } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, refElement, useRender } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record<string, any> }\n default: never\n actions: { isActive: Ref<boolean | null> }\n text: never\n}\n\nfunction useCountdown (milliseconds: number) {\n const time = shallowRef(milliseconds)\n let timer = -1\n\n function clear () {\n clearInterval(timer)\n }\n\n function reset () {\n clear()\n\n nextTick(() => time.value = milliseconds)\n }\n\n function start (el?: HTMLElement) {\n const style = el ? getComputedStyle(el) : { transitionDuration: 0.2 }\n const interval = parseFloat(style.transitionDuration) * 1000 || 200\n\n clear()\n\n if (time.value <= 0) return\n\n const startTime = performance.now()\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval\n time.value = Math.max(milliseconds - elapsed, 0)\n\n if (time.value <= 0) clear()\n }, interval)\n }\n\n onScopeDispose(clear)\n\n return { clear, time, start, reset }\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent<VSnackbarSlots>()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n const countdown = useCountdown(Number(props.timeout))\n\n const overlay = ref<VOverlay>()\n const timerRef = ref<VProgressLinear>()\n const isHovering = shallowRef(false)\n const startY = shallowRef(0)\n const mainStyles = ref()\n const hasLayout = inject(VuetifyLayoutKey, undefined)\n\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout()\n\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value\n })\n })\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n const element = refElement(timerRef.value)\n\n countdown.start(element)\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function clearTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n }\n\n function onPointerenter () {\n isHovering.value = true\n clearTimeout()\n }\n\n function onPointerleave () {\n isHovering.value = false\n startTimeout()\n }\n\n function onTouchstart (event: TouchEvent) {\n startY.value = event.touches[0].clientY\n }\n\n function onTouchend (event: TouchEvent) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false\n }\n }\n\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true\n\n return acc\n }, {} as Record<string, any>)\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const hasContent = !!(slots.default || slots.text || props.text)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-snackbar',\n {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical,\n },\n locationClasses.value,\n positionClasses.value,\n props.class,\n ]}\n style={[\n mainStyles.value,\n props.style,\n ]}\n { ...overlayProps }\n v-model={ isActive.value }\n contentProps={ mergeProps({\n class: [\n 'v-snackbar__wrapper',\n themeClasses.value,\n colorClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ],\n style: [\n colorStyles.value,\n ],\n onPointerenter,\n onPointerleave,\n }, overlayProps.contentProps)}\n persistent\n noClickAnimation\n scrim={ false }\n scrollStrategy=\"none\"\n _disableGlobalStack\n onTouchstartPassive={ onTouchstart }\n onTouchend={ onTouchend }\n { ...scopeId }\n v-slots={{ activator: slots.activator }}\n >\n { genOverlays(false, 'v-snackbar') }\n\n { props.timer && !isHovering.value && (\n <div key=\"timer\" class=\"v-snackbar__timer\">\n <VProgressLinear\n ref={ timerRef }\n color={ typeof props.timer === 'string' ? props.timer : 'info' }\n max={ props.timeout }\n model-value={ countdown.time.value }\n />\n </div>\n )}\n\n { hasContent && (\n <div\n key=\"content\"\n class=\"v-snackbar__content\"\n role=\"status\"\n aria-live=\"polite\"\n >\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n </div>\n )}\n\n { slots.actions && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true,\n },\n }}\n >\n <div class=\"v-snackbar__actions\">\n { slots.actions({ isActive }) }\n </div>\n </VDefaultsProvider>\n )}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType<typeof VSnackbar>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VSnackbar.mjs","names":["VDefaultsProvider","VOverlay","makeVOverlayProps","VProgressLinear","useLayout","forwardRefs","VuetifyLayoutKey","makeLocationProps","makePositionProps","usePosition","useProxiedModel","makeRoundedProps","useRounded","useScopeId","makeThemeProps","provideTheme","useToggleScope","genOverlays","makeVariantProps","useVariant","computed","inject","mergeProps","nextTick","onMounted","onScopeDispose","ref","shallowRef","watch","watchEffect","genericComponent","omit","propsFactory","refElement","useRender","useCountdown","milliseconds","time","timer","clear","clearInterval","reset","value","start","el","style","getComputedStyle","transitionDuration","interval","parseFloat","startTime","performance","now","window","setInterval","elapsed","Math","max","makeVSnackbarProps","multiLine","Boolean","text","String","timeout","type","Number","default","vertical","location","transition","VSnackbar","name","props","emits","v","setup","_ref","slots","isActive","positionClasses","scopeId","themeClasses","colorClasses","colorStyles","variantClasses","roundedClasses","countdown","overlay","timerRef","isHovering","startY","mainStyles","hasLayout","undefined","layout","startTimeout","activeTimeout","clearTimeout","element","setTimeout","onPointerenter","onPointerleave","onTouchstart","event","touches","clientY","onTouchend","abs","changedTouches","locationClasses","split","reduce","acc","loc","overlayProps","filterProps","hasContent","_createVNode","_mergeProps","class","$event","contentProps","actions","VBtn","variant","ripple","slim","activator"],"sources":["../../../src/components/VSnackbar/VSnackbar.tsx"],"sourcesContent":["// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Composables\nimport { useLayout } from '@/composables'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { VuetifyLayoutKey } from '@/composables/layout'\nimport { makeLocationProps } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, refElement, useRender } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record<string, any> }\n default: never\n actions: { isActive: Ref<boolean> }\n text: never\n}\n\nfunction useCountdown (milliseconds: number) {\n const time = shallowRef(milliseconds)\n let timer = -1\n\n function clear () {\n clearInterval(timer)\n }\n\n function reset () {\n clear()\n\n nextTick(() => time.value = milliseconds)\n }\n\n function start (el?: HTMLElement) {\n const style = el ? getComputedStyle(el) : { transitionDuration: 0.2 }\n const interval = parseFloat(style.transitionDuration) * 1000 || 200\n\n clear()\n\n if (time.value <= 0) return\n\n const startTime = performance.now()\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval\n time.value = Math.max(milliseconds - elapsed, 0)\n\n if (time.value <= 0) clear()\n }, interval)\n }\n\n onScopeDispose(clear)\n\n return { clear, time, start, reset }\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent<VSnackbarSlots>()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n const countdown = useCountdown(Number(props.timeout))\n\n const overlay = ref<VOverlay>()\n const timerRef = ref<VProgressLinear>()\n const isHovering = shallowRef(false)\n const startY = shallowRef(0)\n const mainStyles = ref()\n const hasLayout = inject(VuetifyLayoutKey, undefined)\n\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout()\n\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value\n })\n })\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n const element = refElement(timerRef.value)\n\n countdown.start(element)\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function clearTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n }\n\n function onPointerenter () {\n isHovering.value = true\n clearTimeout()\n }\n\n function onPointerleave () {\n isHovering.value = false\n startTimeout()\n }\n\n function onTouchstart (event: TouchEvent) {\n startY.value = event.touches[0].clientY\n }\n\n function onTouchend (event: TouchEvent) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false\n }\n }\n\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true\n\n return acc\n }, {} as Record<string, any>)\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const hasContent = !!(slots.default || slots.text || props.text)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-snackbar',\n {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical,\n },\n locationClasses.value,\n positionClasses.value,\n props.class,\n ]}\n style={[\n mainStyles.value,\n props.style,\n ]}\n { ...overlayProps }\n v-model={ isActive.value }\n contentProps={ mergeProps({\n class: [\n 'v-snackbar__wrapper',\n themeClasses.value,\n colorClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ],\n style: [\n colorStyles.value,\n ],\n onPointerenter,\n onPointerleave,\n }, overlayProps.contentProps)}\n persistent\n noClickAnimation\n scrim={ false }\n scrollStrategy=\"none\"\n _disableGlobalStack\n onTouchstartPassive={ onTouchstart }\n onTouchend={ onTouchend }\n { ...scopeId }\n v-slots={{ activator: slots.activator }}\n >\n { genOverlays(false, 'v-snackbar') }\n\n { props.timer && !isHovering.value && (\n <div key=\"timer\" class=\"v-snackbar__timer\">\n <VProgressLinear\n ref={ timerRef }\n color={ typeof props.timer === 'string' ? props.timer : 'info' }\n max={ props.timeout }\n model-value={ countdown.time.value }\n />\n </div>\n )}\n\n { hasContent && (\n <div\n key=\"content\"\n class=\"v-snackbar__content\"\n role=\"status\"\n aria-live=\"polite\"\n >\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n </div>\n )}\n\n { slots.actions && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true,\n },\n }}\n >\n <div class=\"v-snackbar__actions\">\n { slots.actions({ isActive }) }\n </div>\n </VDefaultsProvider>\n )}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType<typeof VSnackbar>\n"],"mappings":"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","ignoreList":[]}