vuetify 3.3.15 → 3.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/json/attributes.json +111 -11
  2. package/dist/json/importMap.json +4 -4
  3. package/dist/json/tags.json +25 -0
  4. package/dist/json/web-types.json +263 -18
  5. package/dist/vuetify-labs.css +1558 -518
  6. package/dist/vuetify-labs.d.ts +499 -179
  7. package/dist/vuetify-labs.esm.js +264 -73
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +263 -72
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1080 -40
  12. package/dist/vuetify.d.ts +484 -170
  13. package/dist/vuetify.esm.js +264 -73
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +263 -72
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +914 -895
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/index.d.mts +20 -14
  21. package/lib/components/VAvatar/VAvatar.mjs +2 -1
  22. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  23. package/lib/components/VAvatar/index.d.mts +6 -0
  24. package/lib/components/VBanner/VBanner.mjs +5 -3
  25. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  26. package/lib/components/VBanner/index.d.mts +10 -0
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +9 -4
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  29. package/lib/components/VBreadcrumbs/index.d.mts +28 -2
  30. package/lib/components/VCarousel/index.d.mts +26 -0
  31. package/lib/components/VCheckbox/index.d.mts +12 -0
  32. package/lib/components/VColorPicker/VColorPickerPreview.css +5 -0
  33. package/lib/components/VColorPicker/VColorPickerPreview.mjs +28 -2
  34. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  35. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -0
  36. package/lib/components/VColorPicker/_variables.scss +1 -0
  37. package/lib/components/VCombobox/index.d.mts +20 -14
  38. package/lib/components/VDialog/index.d.mts +41 -20
  39. package/lib/components/VField/index.d.mts +4 -4
  40. package/lib/components/VFileInput/index.d.mts +4 -4
  41. package/lib/components/VImg/VImg.mjs +13 -1
  42. package/lib/components/VImg/VImg.mjs.map +1 -1
  43. package/lib/components/VImg/index.d.mts +26 -0
  44. package/lib/components/VList/index.d.mts +12 -12
  45. package/lib/components/VMenu/index.d.mts +41 -20
  46. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
  47. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  48. package/lib/components/VNavigationDrawer/index.d.mts +10 -0
  49. package/lib/components/VOverlay/VOverlay.mjs +9 -4
  50. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  51. package/lib/components/VOverlay/index.d.mts +17 -8
  52. package/lib/components/VOverlay/locationStrategies.mjs +9 -9
  53. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  54. package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
  55. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  56. package/lib/components/VOverlay/useActivator.mjs +50 -21
  57. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  58. package/lib/components/VRadio/index.d.mts +6 -0
  59. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -2
  60. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  61. package/lib/components/VRangeSlider/index.d.mts +14 -0
  62. package/lib/components/VSelect/index.d.mts +20 -14
  63. package/lib/components/VSelectionControl/VSelectionControl.mjs +3 -1
  64. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  65. package/lib/components/VSelectionControl/index.d.mts +6 -0
  66. package/lib/components/VSlideGroup/VSlideGroup.mjs +5 -3
  67. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  68. package/lib/components/VSlideGroup/index.d.mts +10 -0
  69. package/lib/components/VSlider/VSlider.mjs +2 -1
  70. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  71. package/lib/components/VSlider/index.d.mts +14 -0
  72. package/lib/components/VSlider/slider.mjs +5 -1
  73. package/lib/components/VSlider/slider.mjs.map +1 -1
  74. package/lib/components/VSnackbar/VSnackbar.css +9 -0
  75. package/lib/components/VSnackbar/VSnackbar.mjs +65 -6
  76. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  77. package/lib/components/VSnackbar/VSnackbar.sass +9 -0
  78. package/lib/components/VSnackbar/index.d.mts +52 -25
  79. package/lib/components/VSwitch/index.d.mts +6 -0
  80. package/lib/components/VTabs/index.d.mts +10 -0
  81. package/lib/components/VTextField/index.d.mts +16 -16
  82. package/lib/components/VTextarea/index.d.mts +4 -4
  83. package/lib/components/VTooltip/index.d.mts +41 -20
  84. package/lib/components/index.d.mts +455 -168
  85. package/lib/components/transitions/dialog-transition.mjs +4 -3
  86. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  87. package/lib/components/transitions/index.d.mts +6 -6
  88. package/lib/composables/directiveComponent.mjs +69 -0
  89. package/lib/composables/directiveComponent.mjs.map +1 -0
  90. package/lib/composables/display.mjs +23 -3
  91. package/lib/composables/display.mjs.map +1 -1
  92. package/lib/composables/resizeObserver.mjs.map +1 -1
  93. package/lib/composables/theme.mjs +7 -7
  94. package/lib/composables/theme.mjs.map +1 -1
  95. package/lib/entry-bundler.mjs +1 -1
  96. package/lib/entry-bundler.mjs.map +1 -1
  97. package/lib/framework.mjs +1 -1
  98. package/lib/framework.mjs.map +1 -1
  99. package/lib/iconsets/fa.mjs +2 -1
  100. package/lib/iconsets/fa.mjs.map +1 -1
  101. package/lib/iconsets/fa4.mjs +2 -1
  102. package/lib/iconsets/fa4.mjs.map +1 -1
  103. package/lib/iconsets/md.mjs +2 -1
  104. package/lib/iconsets/md.mjs.map +1 -1
  105. package/lib/iconsets/mdi-svg.mjs +2 -1
  106. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  107. package/lib/iconsets/mdi.mjs +2 -1
  108. package/lib/iconsets/mdi.mjs.map +1 -1
  109. package/lib/index.d.mts +33 -2
  110. package/lib/labs/VBottomSheet/index.d.mts +14 -8
  111. package/lib/labs/VDateInput/index.d.mts +4 -4
  112. package/lib/labs/VOtpInput/index.d.mts +4 -4
  113. package/lib/labs/components.d.mts +18 -12
  114. package/lib/styles/main.css +1026 -0
  115. package/lib/styles/settings/_utilities.scss +20 -0
  116. package/lib/util/box.mjs +12 -0
  117. package/lib/util/box.mjs.map +1 -1
  118. package/lib/util/globals.mjs +1 -0
  119. package/lib/util/globals.mjs.map +1 -1
  120. package/lib/util/helpers.mjs +9 -1
  121. package/lib/util/helpers.mjs.map +1 -1
  122. package/package.json +2 -2
@@ -30,7 +30,7 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
30
30
 
31
31
  interface LocationStrategyData {
32
32
  contentEl: Ref<HTMLElement | undefined>;
33
- activatorEl: Ref<HTMLElement | undefined>;
33
+ target: Ref<HTMLElement | [x: number, y: number] | undefined>;
34
34
  isActive: Ref<boolean>;
35
35
  isRtl: Ref<boolean>;
36
36
  }
@@ -65,7 +65,7 @@ declare function connectedLocationStrategy(data: LocationStrategyData, props: St
65
65
  interface ScrollStrategyData {
66
66
  root: Ref<HTMLElement | undefined>;
67
67
  contentEl: Ref<HTMLElement | undefined>;
68
- activatorEl: Ref<HTMLElement | undefined>;
68
+ targetEl: Ref<HTMLElement | undefined>;
69
69
  isActive: Ref<boolean>;
70
70
  updateLocation: Ref<((e: Event) => void) | undefined>;
71
71
  }
@@ -127,6 +127,7 @@ declare const VDialog: {
127
127
  maxWidth?: string | number | undefined;
128
128
  minHeight?: string | number | undefined;
129
129
  minWidth?: string | number | undefined;
130
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
130
131
  class?: any;
131
132
  $children?: vue.VNodeChild | {
132
133
  default?: ((arg: {
@@ -195,7 +196,7 @@ declare const VDialog: {
195
196
  [key: string]: any;
196
197
  }>) => void)[] | undefined;
197
198
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
198
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
199
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
199
200
  "v-slot:activator"?: false | ((arg: {
200
201
  isActive: boolean;
201
202
  props: Record<string, any>;
@@ -265,10 +266,11 @@ declare const VDialog: {
265
266
  maxWidth?: string | number | undefined;
266
267
  minHeight?: string | number | undefined;
267
268
  minWidth?: string | number | undefined;
269
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
268
270
  class?: any;
269
271
  theme?: string | undefined;
270
272
  contentClass?: any;
271
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
273
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
272
274
  closeDelay?: string | number | undefined;
273
275
  openDelay?: string | number | undefined;
274
276
  openOnClick?: boolean | undefined;
@@ -344,6 +346,7 @@ declare const VDialog: {
344
346
  maxWidth?: string | number | undefined;
345
347
  minHeight?: string | number | undefined;
346
348
  minWidth?: string | number | undefined;
349
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
347
350
  class?: any;
348
351
  onAfterLeave?: (() => any) | undefined;
349
352
  $children?: vue.VNodeChild | {
@@ -413,7 +416,7 @@ declare const VDialog: {
413
416
  [key: string]: any;
414
417
  }>) => void)[] | undefined;
415
418
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
416
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
419
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
417
420
  "v-slot:activator"?: false | ((arg: {
418
421
  isActive: boolean;
419
422
  props: Record<string, any>;
@@ -480,10 +483,11 @@ declare const VDialog: {
480
483
  maxWidth?: string | number | undefined;
481
484
  minHeight?: string | number | undefined;
482
485
  minWidth?: string | number | undefined;
486
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
483
487
  class?: any;
484
488
  theme?: string | undefined;
485
489
  contentClass?: any;
486
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
490
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
487
491
  closeDelay?: string | number | undefined;
488
492
  openDelay?: string | number | undefined;
489
493
  openOnClick?: boolean | undefined;
@@ -525,6 +529,7 @@ declare const VDialog: {
525
529
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
526
530
  }, {
527
531
  activatorEl: vue.Ref<HTMLElement | undefined>;
532
+ target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
528
533
  animateClick: () => void;
529
534
  contentEl: vue.Ref<HTMLElement | undefined>;
530
535
  globalTop: Readonly<vue.Ref<boolean>>;
@@ -626,10 +631,11 @@ declare const VDialog: {
626
631
  maxWidth?: string | number | undefined;
627
632
  minHeight?: string | number | undefined;
628
633
  minWidth?: string | number | undefined;
634
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
629
635
  class?: any;
630
636
  theme?: string | undefined;
631
637
  contentClass?: any;
632
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
638
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
633
639
  closeDelay?: string | number | undefined;
634
640
  openDelay?: string | number | undefined;
635
641
  openOnClick?: boolean | undefined;
@@ -671,12 +677,13 @@ declare const VDialog: {
671
677
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
672
678
  } & vue.ShallowUnwrapRef<{
673
679
  activatorEl: vue.Ref<HTMLElement | undefined>;
680
+ target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
674
681
  animateClick: () => void;
675
682
  contentEl: vue.Ref<HTMLElement | undefined>;
676
683
  globalTop: Readonly<vue.Ref<boolean>>;
677
684
  localTop: vue.ComputedRef<boolean>;
678
685
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
679
- }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "class" | "onAfterLeave" | "$children" | "ref" | "ref_for" | "ref_key" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
686
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "onAfterLeave" | "$children" | "ref" | "ref_for" | "ref_key" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
680
687
  'update:modelValue': (value: boolean) => boolean;
681
688
  }, string, {
682
689
  absolute: boolean;
@@ -778,10 +785,11 @@ declare const VDialog: {
778
785
  maxWidth?: string | number | undefined;
779
786
  minHeight?: string | number | undefined;
780
787
  minWidth?: string | number | undefined;
788
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
781
789
  class?: any;
782
790
  theme?: string | undefined;
783
791
  contentClass?: any;
784
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
792
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
785
793
  closeDelay?: string | number | undefined;
786
794
  openDelay?: string | number | undefined;
787
795
  openOnClick?: boolean | undefined;
@@ -857,6 +865,7 @@ declare const VDialog: {
857
865
  maxWidth?: string | number | undefined;
858
866
  minHeight?: string | number | undefined;
859
867
  minWidth?: string | number | undefined;
868
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
860
869
  class?: any;
861
870
  onAfterLeave?: (() => any) | undefined;
862
871
  $children?: vue.VNodeChild | {
@@ -926,7 +935,7 @@ declare const VDialog: {
926
935
  [key: string]: any;
927
936
  }>) => void)[] | undefined;
928
937
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
929
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
938
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
930
939
  "v-slot:activator"?: false | ((arg: {
931
940
  isActive: boolean;
932
941
  props: Record<string, any>;
@@ -993,10 +1002,11 @@ declare const VDialog: {
993
1002
  maxWidth?: string | number | undefined;
994
1003
  minHeight?: string | number | undefined;
995
1004
  minWidth?: string | number | undefined;
1005
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
996
1006
  class?: any;
997
1007
  theme?: string | undefined;
998
1008
  contentClass?: any;
999
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1009
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1000
1010
  closeDelay?: string | number | undefined;
1001
1011
  openDelay?: string | number | undefined;
1002
1012
  openOnClick?: boolean | undefined;
@@ -1038,6 +1048,7 @@ declare const VDialog: {
1038
1048
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1039
1049
  }, {
1040
1050
  activatorEl: vue.Ref<HTMLElement | undefined>;
1051
+ target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1041
1052
  animateClick: () => void;
1042
1053
  contentEl: vue.Ref<HTMLElement | undefined>;
1043
1054
  globalTop: Readonly<vue.Ref<boolean>>;
@@ -1139,10 +1150,11 @@ declare const VDialog: {
1139
1150
  maxWidth?: string | number | undefined;
1140
1151
  minHeight?: string | number | undefined;
1141
1152
  minWidth?: string | number | undefined;
1153
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1142
1154
  class?: any;
1143
1155
  theme?: string | undefined;
1144
1156
  contentClass?: any;
1145
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1157
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1146
1158
  closeDelay?: string | number | undefined;
1147
1159
  openDelay?: string | number | undefined;
1148
1160
  openOnClick?: boolean | undefined;
@@ -1184,12 +1196,13 @@ declare const VDialog: {
1184
1196
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1185
1197
  } & vue.ShallowUnwrapRef<{
1186
1198
  activatorEl: vue.Ref<HTMLElement | undefined>;
1199
+ target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1187
1200
  animateClick: () => void;
1188
1201
  contentEl: vue.Ref<HTMLElement | undefined>;
1189
1202
  globalTop: Readonly<vue.Ref<boolean>>;
1190
1203
  localTop: vue.ComputedRef<boolean>;
1191
1204
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
1192
- }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "class" | "onAfterLeave" | "$children" | "ref" | "ref_for" | "ref_key" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>> & {} & vue.ComponentCustomProperties & {};
1205
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "onAfterLeave" | "$children" | "ref" | "ref_for" | "ref_key" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>> & {} & vue.ComponentCustomProperties & {};
1193
1206
  __isFragment?: undefined;
1194
1207
  __isTeleport?: undefined;
1195
1208
  __isSuspense?: undefined;
@@ -1230,10 +1243,11 @@ declare const VDialog: {
1230
1243
  maxWidth?: string | number | undefined;
1231
1244
  minHeight?: string | number | undefined;
1232
1245
  minWidth?: string | number | undefined;
1246
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1233
1247
  class?: any;
1234
1248
  theme?: string | undefined;
1235
1249
  contentClass?: any;
1236
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1250
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1237
1251
  closeDelay?: string | number | undefined;
1238
1252
  openDelay?: string | number | undefined;
1239
1253
  openOnClick?: boolean | undefined;
@@ -1309,6 +1323,7 @@ declare const VDialog: {
1309
1323
  maxWidth?: string | number | undefined;
1310
1324
  minHeight?: string | number | undefined;
1311
1325
  minWidth?: string | number | undefined;
1326
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1312
1327
  class?: any;
1313
1328
  onAfterLeave?: (() => any) | undefined;
1314
1329
  $children?: vue.VNodeChild | {
@@ -1378,7 +1393,7 @@ declare const VDialog: {
1378
1393
  [key: string]: any;
1379
1394
  }>) => void)[] | undefined;
1380
1395
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1381
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1396
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1382
1397
  "v-slot:activator"?: false | ((arg: {
1383
1398
  isActive: boolean;
1384
1399
  props: Record<string, any>;
@@ -1445,10 +1460,11 @@ declare const VDialog: {
1445
1460
  maxWidth?: string | number | undefined;
1446
1461
  minHeight?: string | number | undefined;
1447
1462
  minWidth?: string | number | undefined;
1463
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1448
1464
  class?: any;
1449
1465
  theme?: string | undefined;
1450
1466
  contentClass?: any;
1451
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1467
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1452
1468
  closeDelay?: string | number | undefined;
1453
1469
  openDelay?: string | number | undefined;
1454
1470
  openOnClick?: boolean | undefined;
@@ -1490,6 +1506,7 @@ declare const VDialog: {
1490
1506
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1491
1507
  }, {
1492
1508
  activatorEl: vue.Ref<HTMLElement | undefined>;
1509
+ target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1493
1510
  animateClick: () => void;
1494
1511
  contentEl: vue.Ref<HTMLElement | undefined>;
1495
1512
  globalTop: Readonly<vue.Ref<boolean>>;
@@ -1591,10 +1608,11 @@ declare const VDialog: {
1591
1608
  maxWidth?: string | number | undefined;
1592
1609
  minHeight?: string | number | undefined;
1593
1610
  minWidth?: string | number | undefined;
1611
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1594
1612
  class?: any;
1595
1613
  theme?: string | undefined;
1596
1614
  contentClass?: any;
1597
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1615
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1598
1616
  closeDelay?: string | number | undefined;
1599
1617
  openDelay?: string | number | undefined;
1600
1618
  openOnClick?: boolean | undefined;
@@ -1636,12 +1654,13 @@ declare const VDialog: {
1636
1654
  "onClick:outside"?: ((e: MouseEvent) => any) | undefined;
1637
1655
  } & vue.ShallowUnwrapRef<{
1638
1656
  activatorEl: vue.Ref<HTMLElement | undefined>;
1657
+ target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
1639
1658
  animateClick: () => void;
1640
1659
  contentEl: vue.Ref<HTMLElement | undefined>;
1641
1660
  globalTop: Readonly<vue.Ref<boolean>>;
1642
1661
  localTop: vue.ComputedRef<boolean>;
1643
1662
  updateLocation: vue.Ref<((e: Event) => void) | undefined>;
1644
- }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "class" | "onAfterLeave" | "$children" | "ref" | "ref_for" | "ref_key" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
1663
+ }> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "target" | "class" | "onAfterLeave" | "$children" | "ref" | "ref_for" | "ref_key" | "theme" | "v-slot:default" | "v-slots" | "contentClass" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
1645
1664
  'update:modelValue': (value: boolean) => boolean;
1646
1665
  }, string, {
1647
1666
  absolute: boolean;
@@ -1747,7 +1766,8 @@ declare const VDialog: {
1747
1766
  };
1748
1767
  closeDelay: (StringConstructor | NumberConstructor)[];
1749
1768
  openDelay: (StringConstructor | NumberConstructor)[];
1750
- activator: vue.PropType<string | Element | vue.ComponentPublicInstance | undefined>;
1769
+ target: vue.PropType<Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined>;
1770
+ activator: vue.PropType<Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined>;
1751
1771
  activatorProps: {
1752
1772
  type: vue.PropType<Record<string, any>>;
1753
1773
  default: () => {};
@@ -1853,7 +1873,8 @@ declare const VDialog: {
1853
1873
  };
1854
1874
  closeDelay: (StringConstructor | NumberConstructor)[];
1855
1875
  openDelay: (StringConstructor | NumberConstructor)[];
1856
- activator: vue.PropType<string | Element | vue.ComponentPublicInstance | undefined>;
1876
+ target: vue.PropType<Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined>;
1877
+ activator: vue.PropType<Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined>;
1857
1878
  activatorProps: {
1858
1879
  type: vue.PropType<Record<string, any>>;
1859
1880
  default: () => {};
@@ -132,13 +132,13 @@ declare const VField: {
132
132
  }>) => void)[] | undefined;
133
133
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
134
134
  bgColor?: string | undefined;
135
+ baseColor?: string | undefined;
135
136
  appendInnerIcon?: IconValue | undefined;
136
137
  prependInnerIcon?: IconValue | undefined;
137
138
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
138
139
  'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
139
140
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
140
141
  'onUpdate:focused'?: (EventProp<[boolean], (args_0: boolean) => any> & ((focused: boolean) => any)) | undefined;
141
- baseColor?: string | undefined;
142
142
  };
143
143
  $attrs: {
144
144
  [x: string]: unknown;
@@ -196,6 +196,7 @@ declare const VField: {
196
196
  theme?: string | undefined;
197
197
  rounded?: string | number | boolean | undefined;
198
198
  bgColor?: string | undefined;
199
+ baseColor?: string | undefined;
199
200
  appendInnerIcon?: IconValue | undefined;
200
201
  prependInnerIcon?: IconValue | undefined;
201
202
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -203,7 +204,6 @@ declare const VField: {
203
204
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
204
205
  'onUpdate:focused'?: EventProp<[boolean], (args_0: boolean) => any> | undefined;
205
206
  centerAffix?: boolean | undefined;
206
- baseColor?: string | undefined;
207
207
  } & {
208
208
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
209
209
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
@@ -293,6 +293,7 @@ declare const VField: {
293
293
  theme?: string | undefined;
294
294
  rounded?: string | number | boolean | undefined;
295
295
  bgColor?: string | undefined;
296
+ baseColor?: string | undefined;
296
297
  appendInnerIcon?: IconValue | undefined;
297
298
  prependInnerIcon?: IconValue | undefined;
298
299
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -300,7 +301,6 @@ declare const VField: {
300
301
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
301
302
  'onUpdate:focused'?: EventProp<[boolean], (args_0: boolean) => any> | undefined;
302
303
  centerAffix?: boolean | undefined;
303
- baseColor?: string | undefined;
304
304
  } & {
305
305
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
306
306
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
@@ -333,6 +333,7 @@ declare const VField: {
333
333
  theme?: string | undefined;
334
334
  rounded?: string | number | boolean | undefined;
335
335
  bgColor?: string | undefined;
336
+ baseColor?: string | undefined;
336
337
  appendInnerIcon?: IconValue | undefined;
337
338
  prependInnerIcon?: IconValue | undefined;
338
339
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -340,7 +341,6 @@ declare const VField: {
340
341
  'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
341
342
  'onUpdate:focused'?: EventProp<[boolean], (args_0: boolean) => any> | undefined;
342
343
  centerAffix?: boolean | undefined;
343
- baseColor?: string | undefined;
344
344
  } & {
345
345
  "onUpdate:modelValue"?: ((val: any) => any) | undefined;
346
346
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
@@ -184,6 +184,7 @@ declare const VFileInput: {
184
184
  bgColor?: string | undefined;
185
185
  appendIcon?: IconValue | undefined;
186
186
  "v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
187
+ baseColor?: string | undefined;
187
188
  "v-slot:label"?: false | ((arg: DefaultInputSlot & {
188
189
  label: string | undefined;
189
190
  props: Record<string, any>;
@@ -202,7 +203,6 @@ declare const VFileInput: {
202
203
  hint?: string | undefined;
203
204
  hideDetails?: boolean | "auto" | undefined;
204
205
  "v-slot:details"?: false | ((arg: VInputSlot) => vue.VNodeChild) | undefined;
205
- baseColor?: string | undefined;
206
206
  "v-slot:clear"?: false | (() => vue.VNodeChild) | undefined;
207
207
  "v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
208
208
  "v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
@@ -311,6 +311,7 @@ declare const VFileInput: {
311
311
  rounded?: string | number | boolean | undefined;
312
312
  bgColor?: string | undefined;
313
313
  appendIcon?: IconValue | undefined;
314
+ baseColor?: string | undefined;
314
315
  appendInnerIcon?: IconValue | undefined;
315
316
  prependInnerIcon?: IconValue | undefined;
316
317
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -324,7 +325,6 @@ declare const VFileInput: {
324
325
  centerAffix?: boolean | undefined;
325
326
  hint?: string | undefined;
326
327
  hideDetails?: boolean | "auto" | undefined;
327
- baseColor?: string | undefined;
328
328
  } & {
329
329
  $children?: vue.VNodeChild | {
330
330
  default?: ((arg: VInputSlot & VFieldSlot) => vue.VNodeChild) | undefined;
@@ -820,6 +820,7 @@ declare const VFileInput: {
820
820
  rounded?: string | number | boolean | undefined;
821
821
  bgColor?: string | undefined;
822
822
  appendIcon?: IconValue | undefined;
823
+ baseColor?: string | undefined;
823
824
  appendInnerIcon?: IconValue | undefined;
824
825
  prependInnerIcon?: IconValue | undefined;
825
826
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -833,7 +834,6 @@ declare const VFileInput: {
833
834
  centerAffix?: boolean | undefined;
834
835
  hint?: string | undefined;
835
836
  hideDetails?: boolean | "auto" | undefined;
836
- baseColor?: string | undefined;
837
837
  } & {
838
838
  $children?: vue.VNodeChild | {
839
839
  default?: ((arg: VInputSlot & VFieldSlot) => vue.VNodeChild) | undefined;
@@ -1232,6 +1232,7 @@ declare const VFileInput: {
1232
1232
  rounded?: string | number | boolean | undefined;
1233
1233
  bgColor?: string | undefined;
1234
1234
  appendIcon?: IconValue | undefined;
1235
+ baseColor?: string | undefined;
1235
1236
  appendInnerIcon?: IconValue | undefined;
1236
1237
  prependInnerIcon?: IconValue | undefined;
1237
1238
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -1245,7 +1246,6 @@ declare const VFileInput: {
1245
1246
  centerAffix?: boolean | undefined;
1246
1247
  hint?: string | undefined;
1247
1248
  hideDetails?: boolean | "auto" | undefined;
1248
- baseColor?: string | undefined;
1249
1249
  } & {
1250
1250
  $children?: vue.VNodeChild | {
1251
1251
  default?: ((arg: VInputSlot & VFieldSlot) => vue.VNodeChild) | undefined;
@@ -12,6 +12,10 @@ import { convertToUnit, genericComponent, propsFactory, SUPPORTS_INTERSECTION, u
12
12
  export const makeVImgProps = propsFactory({
13
13
  alt: String,
14
14
  cover: Boolean,
15
+ draggable: {
16
+ type: [Boolean, String],
17
+ default: undefined
18
+ },
15
19
  eager: Boolean,
16
20
  gradient: String,
17
21
  lazySrc: String,
@@ -30,6 +34,8 @@ export const makeVImgProps = propsFactory({
30
34
  type: [String, Object],
31
35
  default: ''
32
36
  },
37
+ crossorigin: String,
38
+ referrerpolicy: String,
33
39
  srcset: String,
34
40
  ...makeVResponsiveProps(),
35
41
  ...makeComponentProps(),
@@ -154,6 +160,9 @@ export const VImg = genericComponent()({
154
160
  "src": normalisedSrc.value.src,
155
161
  "srcset": normalisedSrc.value.srcset,
156
162
  "alt": props.alt,
163
+ "crossorigin": props.crossorigin,
164
+ "referrerpolicy": props.referrerpolicy,
165
+ "draggable": props.draggable,
157
166
  "sizes": props.sizes,
158
167
  "ref": image,
159
168
  "onLoad": onLoad,
@@ -175,7 +184,10 @@ export const VImg = genericComponent()({
175
184
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && _createVNode("img", {
176
185
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
177
186
  "src": normalisedSrc.value.lazySrc,
178
- "alt": props.alt
187
+ "alt": props.alt,
188
+ "crossorigin": props.crossorigin,
189
+ "referrerpolicy": props.referrerpolicy,
190
+ "draggable": props.draggable
179
191
  }, null)]
180
192
  });
181
193
  const __placeholder = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"VImg.mjs","names":["makeVResponsiveProps","VResponsive","makeComponentProps","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","ref","shallowRef","vShow","watch","withDirectives","convertToUnit","genericComponent","propsFactory","SUPPORTS_INTERSECTION","useRender","makeVImgProps","alt","String","cover","Boolean","eager","gradient","lazySrc","options","type","Object","default","root","undefined","rootMargin","threshold","sizes","src","srcset","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","complete","onError","onLoad","getSrc","img","timer","timeout","arguments","length","poll","clearTimeout","imgHeight","imgWidth","window","setTimeout","endsWith","startsWith","containClasses","__image","_createVNode","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","responsiveProps","filterProps","_withDirectives","_mergeProps","class","width","style","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n alt: String,\n cover: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n srcset: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n }\n\n function onLoad () {\n getSrc()\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const [responsiveProps] = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,oBAAoB,EAAEC,WAAW,0CAE1C;AAAA,SACSC,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,eAAe,4CAE7C;AAAA,OACOC,SAAS,8CAEhB;AACA,SACEC,QAAQ,EACRC,QAAQ,EACRC,aAAa,EACbC,GAAG,EACHC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,cAAc,QACT,KAAK;AAAA,SAEVC,aAAa,EACbC,gBAAgB,EAChBC,YAAY,EACZC,qBAAqB,EACrBC,SAAS,gCAGX;AAkBA,OAAO,MAAMC,aAAa,GAAGH,YAAY,CAAC;EACxCI,GAAG,EAAEC,MAAM;EACXC,KAAK,EAAEC,OAAO;EACdC,KAAK,EAAED,OAAO;EACdE,QAAQ,EAAEJ,MAAM;EAChBK,OAAO,EAAEL,MAAM;EACfM,OAAO,EAAE;IACPC,IAAI,EAAEC,MAA4C;IAClD;IACA;IACAC,OAAO,EAAEA,CAAA,MAAO;MACdC,IAAI,EAAEC,SAAS;MACfC,UAAU,EAAED,SAAS;MACrBE,SAAS,EAAEF;IACb,CAAC;EACH,CAAC;EACDG,KAAK,EAAEd,MAAM;EACbe,GAAG,EAAE;IACHR,IAAI,EAAE,CAACP,MAAM,EAAEQ,MAAM,CAAiC;IACtDC,OAAO,EAAE;EACX,CAAC;EACDO,MAAM,EAAEhB,MAAM;EAEd,GAAGrB,oBAAoB,EAAE;EACzB,GAAGE,kBAAkB,EAAE;EACvB,GAAGC,mBAAmB;AACxB,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,MAAMmC,IAAI,GAAGvB,gBAAgB,EAAa,CAAC;EAChDwB,IAAI,EAAE,MAAM;EAEZC,UAAU,EAAE;IAAEnC;EAAU,CAAC;EAEzBoC,KAAK,EAAEtB,aAAa,EAAE;EAEtBuB,KAAK,EAAE;IACLC,SAAS,EAAGC,KAAyB,IAAK,IAAI;IAC9CC,IAAI,EAAGD,KAAyB,IAAK,IAAI;IACzCE,KAAK,EAAGF,KAAyB,IAAK;EACxC,CAAC;EAEDG,KAAKA,CAAEN,KAAK,EAAAO,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,UAAU,GAAGzC,UAAU,CAAC,EAAE,CAAC,EAAC;IAClC,MAAM0C,KAAK,GAAG3C,GAAG,EAAoB;IACrC,MAAM4C,KAAK,GAAG3C,UAAU,CAA0C+B,KAAK,CAACjB,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACnG,MAAM8B,YAAY,GAAG5C,UAAU,EAAU;IACzC,MAAM6C,aAAa,GAAG7C,UAAU,EAAU;IAE1C,MAAM8C,aAAa,GAAGlD,QAAQ,CAAY,MAAM;MAC9C,OAAOmC,KAAK,CAACL,GAAG,IAAI,OAAOK,KAAK,CAACL,GAAG,KAAK,QAAQ,GAC7C;QACAA,GAAG,EAAEK,KAAK,CAACL,GAAG,CAACA,GAAG;QAClBC,MAAM,EAAEI,KAAK,CAACJ,MAAM,IAAII,KAAK,CAACL,GAAG,CAACC,MAAM;QACxCX,OAAO,EAAEe,KAAK,CAACf,OAAO,IAAIe,KAAK,CAACL,GAAG,CAACV,OAAO;QAC3C+B,MAAM,EAAEC,MAAM,CAACjB,KAAK,CAACkB,WAAW,IAAIlB,KAAK,CAACL,GAAG,CAACqB,MAAM,IAAI,CAAC;MAC3D,CAAC,GAAG;QACFrB,GAAG,EAAEK,KAAK,CAACL,GAAG;QACdC,MAAM,EAAEI,KAAK,CAACJ,MAAM;QACpBX,OAAO,EAAEe,KAAK,CAACf,OAAO;QACtB+B,MAAM,EAAEC,MAAM,CAACjB,KAAK,CAACkB,WAAW,IAAI,CAAC;MACvC,CAAC;IACL,CAAC,CAAC;IACF,MAAMA,WAAW,GAAGrD,QAAQ,CAAC,MAAM;MACjC,OAAOkD,aAAa,CAACZ,KAAK,CAACa,MAAM,IAAIH,YAAY,CAACV,KAAK,GAAIW,aAAa,CAACX,KAAM,IAAI,CAAC;IACtF,CAAC,CAAC;IAEFhC,KAAK,CAAC,MAAM6B,KAAK,CAACL,GAAG,EAAE,MAAM;MAC3BwB,IAAI,CAACP,KAAK,CAACT,KAAK,KAAK,MAAM,CAAC;IAC9B,CAAC,CAAC;IACFhC,KAAK,CAAC+C,WAAW,EAAE,CAACE,GAAG,EAAEC,MAAM,KAAK;MAClC,IAAI,CAACD,GAAG,IAAIC,MAAM,IAAIV,KAAK,CAACR,KAAK,EAAE;QACjCmB,WAAW,CAACX,KAAK,CAACR,KAAK,CAAC;MAC1B;IACF,CAAC,CAAC;;IAEF;;IAEApC,aAAa,CAAC,MAAMoD,IAAI,EAAE,CAAC;IAE3B,SAASA,IAAIA,CAAEI,cAAwB,EAAE;MACvC,IAAIvB,KAAK,CAACjB,KAAK,IAAIwC,cAAc,EAAE;MACnC,IACE/C,qBAAqB,IACrB,CAAC+C,cAAc,IACf,CAACvB,KAAK,CAACjB,KAAK,EACZ;MAEF6B,KAAK,CAACT,KAAK,GAAG,SAAS;MAEvB,IAAIY,aAAa,CAACZ,KAAK,CAAClB,OAAO,EAAE;QAC/B,MAAMuC,OAAO,GAAG,IAAIC,KAAK,EAAE;QAC3BD,OAAO,CAAC7B,GAAG,GAAGoB,aAAa,CAACZ,KAAK,CAAClB,OAAO;QACzCqC,WAAW,CAACE,OAAO,EAAE,IAAI,CAAC;MAC5B;MAEA,IAAI,CAACT,aAAa,CAACZ,KAAK,CAACR,GAAG,EAAE;MAE9B7B,QAAQ,CAAC,MAAM;QACb0C,IAAI,CAAC,WAAW,EAAEG,KAAK,CAACR,KAAK,EAAEO,UAAU,IAAIK,aAAa,CAACZ,KAAK,CAACR,GAAG,CAAC;QAErE,IAAIgB,KAAK,CAACR,KAAK,EAAEuB,QAAQ,EAAE;UACzB,IAAI,CAACf,KAAK,CAACR,KAAK,CAACU,YAAY,EAAE;YAC7Bc,OAAO,EAAE;UACX;UAEA,IAAIf,KAAK,CAACT,KAAK,KAAK,OAAO,EAAE;UAE7B,IAAI,CAACe,WAAW,CAACf,KAAK,EAAEmB,WAAW,CAACX,KAAK,CAACR,KAAK,EAAE,IAAI,CAAC;UACtDyB,MAAM,EAAE;QACV,CAAC,MAAM;UACL,IAAI,CAACV,WAAW,CAACf,KAAK,EAAEmB,WAAW,CAACX,KAAK,CAACR,KAAK,CAAE;UACjD0B,MAAM,EAAE;QACV;MACF,CAAC,CAAC;IACJ;IAEA,SAASD,MAAMA,CAAA,EAAI;MACjBC,MAAM,EAAE;MACRjB,KAAK,CAACT,KAAK,GAAG,QAAQ;MACtBK,IAAI,CAAC,MAAM,EAAEG,KAAK,CAACR,KAAK,EAAEO,UAAU,IAAIK,aAAa,CAACZ,KAAK,CAACR,GAAG,CAAC;IAClE;IAEA,SAASgC,OAAOA,CAAA,EAAI;MAClBf,KAAK,CAACT,KAAK,GAAG,OAAO;MACrBK,IAAI,CAAC,OAAO,EAAEG,KAAK,CAACR,KAAK,EAAEO,UAAU,IAAIK,aAAa,CAACZ,KAAK,CAACR,GAAG,CAAC;IACnE;IAEA,SAASkC,MAAMA,CAAA,EAAI;MACjB,MAAMC,GAAG,GAAGnB,KAAK,CAACR,KAAK;MACvB,IAAI2B,GAAG,EAAEpB,UAAU,CAACP,KAAK,GAAG2B,GAAG,CAACpB,UAAU,IAAIoB,GAAG,CAACnC,GAAG;IACvD;IAEA,IAAIoC,KAAK,GAAG,CAAC,CAAC;IACd,SAAST,WAAWA,CAAEQ,GAAqB,EAAgC;MAAA,IAA9BE,OAAsB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA1C,SAAA,GAAA0C,SAAA,MAAG,GAAG;MACvE,MAAME,IAAI,GAAGA,CAAA,KAAM;QACjBC,YAAY,CAACL,KAAK,CAAC;QACnB,MAAM;UAAEjB,aAAa,EAAEuB,SAAS;UAAExB,YAAY,EAAEyB;QAAS,CAAC,GAAGR,GAAG;QAEhE,IAAIO,SAAS,IAAIC,QAAQ,EAAE;UACzBzB,YAAY,CAACV,KAAK,GAAGmC,QAAQ;UAC7BxB,aAAa,CAACX,KAAK,GAAGkC,SAAS;QACjC,CAAC,MAAM,IAAI,CAACP,GAAG,CAACJ,QAAQ,IAAId,KAAK,CAACT,KAAK,KAAK,SAAS,IAAI6B,OAAO,IAAI,IAAI,EAAE;UACxED,KAAK,GAAGQ,MAAM,CAACC,UAAU,CAACL,IAAI,EAAEH,OAAO,CAAC;QAC1C,CAAC,MAAM,IAAIF,GAAG,CAACpB,UAAU,CAAC+B,QAAQ,CAAC,MAAM,CAAC,IAAIX,GAAG,CAACpB,UAAU,CAACgC,UAAU,CAAC,oBAAoB,CAAC,EAAE;UAC7F7B,YAAY,CAACV,KAAK,GAAG,CAAC;UACtBW,aAAa,CAACX,KAAK,GAAG,CAAC;QACzB;MACF,CAAC;MAEDgC,IAAI,EAAE;IACR;IAEA,MAAMQ,cAAc,GAAG9E,QAAQ,CAAC,OAAO;MACrC,mBAAmB,EAAEmC,KAAK,CAACnB,KAAK;MAChC,qBAAqB,EAAE,CAACmB,KAAK,CAACnB;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM+D,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAAC7B,aAAa,CAACZ,KAAK,CAACR,GAAG,IAAIiB,KAAK,CAACT,KAAK,KAAK,MAAM,EAAE,OAAO,IAAI;MAEnE,MAAM2B,GAAG,GAAAe,YAAA;QAAA,SAEE,CAAC,YAAY,EAAEF,cAAc,CAACxC,KAAK,CAAC;QAAA,OACrCY,aAAa,CAACZ,KAAK,CAACR,GAAG;QAAA,UACpBoB,aAAa,CAACZ,KAAK,CAACP,MAAM;QAAA,OAC7BI,KAAK,CAACrB,GAAG;QAAA,SACPqB,KAAK,CAACN,KAAK;QAAA,OACbiB,KAAK;QAAA,UACFiB,MAAM;QAAA,WACLD;MAAO,QAEpB;MAED,MAAMmB,OAAO,GAAGrC,KAAK,CAACqC,OAAO,IAAI;MAEjC,OAAAD,YAAA,CAAAlF,eAAA;QAAA,cACgCqC,KAAK,CAAC+C,UAAU;QAAA;MAAA;QAAA1D,OAAA,EAAAA,CAAA,MAE1CjB,cAAc,CACZ0E,OAAO,GAAAD,YAAA;UAAA,SACY;QAAgB,IAAGC,OAAO,EAAIhB,GAAG,KAChDA,GAAG,EACP,CAAC,CAAC5D,KAAK,EAAE0C,KAAK,CAACT,KAAK,KAAK,QAAQ,CAAC,CAAC,CACpC;MAAA;IAIT,CAAC;IAED,MAAM6C,cAAc,GAAGA,CAAA,KAAAH,YAAA,CAAAlF,eAAA;MAAA,cACSqC,KAAK,CAAC+C;IAAU;MAAA1D,OAAA,EAAAA,CAAA,MAC1C0B,aAAa,CAACZ,KAAK,CAAClB,OAAO,IAAI2B,KAAK,CAACT,KAAK,KAAK,QAAQ,IAAA0C,YAAA;QAAA,SAE9C,CAAC,YAAY,EAAE,qBAAqB,EAAEF,cAAc,CAACxC,KAAK,CAAC;QAAA,OAC5DY,aAAa,CAACZ,KAAK,CAAClB,OAAO;QAAA,OAC3Be,KAAK,CAACrB;MAAG,QAElB;IAAA,EAEJ;IAED,MAAMsE,aAAa,GAAGA,CAAA,KAAM;MAC1B,IAAI,CAACxC,KAAK,CAACyC,WAAW,EAAE,OAAO,IAAI;MAEnC,OAAAL,YAAA,CAAAlF,eAAA;QAAA,cACgCqC,KAAK,CAAC+C,UAAU;QAAA;MAAA;QAAA1D,OAAA,EAAAA,CAAA,MAC1C,CAACuB,KAAK,CAACT,KAAK,KAAK,SAAS,IAAKS,KAAK,CAACT,KAAK,KAAK,OAAO,IAAI,CAACM,KAAK,CAACJ,KAAM,KAAAwC,YAAA;UAAA,SAC9D;QAAoB,IAAGpC,KAAK,CAACyC,WAAW,EAAE,EAAQ;MAAA;IAInE,CAAC;IAED,MAAMC,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAAC1C,KAAK,CAACJ,KAAK,EAAE,OAAO,IAAI;MAE7B,OAAAwC,YAAA,CAAAlF,eAAA;QAAA,cACgCqC,KAAK,CAAC+C,UAAU;QAAA;MAAA;QAAA1D,OAAA,EAAAA,CAAA,MAC1CuB,KAAK,CAACT,KAAK,KAAK,OAAO,IAAA0C,YAAA;UAAA,SACZ;QAAc,IAAGpC,KAAK,CAACJ,KAAK,EAAE,EAAQ;MAAA;IAIzD,CAAC;IAED,MAAM+C,UAAU,GAAGA,CAAA,KAAM;MACvB,IAAI,CAACpD,KAAK,CAAChB,QAAQ,EAAE,OAAO,IAAI;MAEhC,OAAA6D,YAAA;QAAA,SAAkB,iBAAiB;QAAA,SAAQ;UAAEQ,eAAe,EAAG,mBAAkBrD,KAAK,CAAChB,QAAS;QAAG;MAAC;IACtG,CAAC;IAED,MAAMsE,QAAQ,GAAGrF,UAAU,CAAC,KAAK,CAAC;IAClC;MACE,MAAMsF,IAAI,GAAGpF,KAAK,CAAC+C,WAAW,EAAEE,GAAG,IAAI;QACrC,IAAIA,GAAG,EAAE;UACP;UACAoC,qBAAqB,CAAC,MAAM;YAC1BA,qBAAqB,CAAC,MAAM;cAC1BF,QAAQ,CAACnD,KAAK,GAAG,IAAI;YACvB,CAAC,CAAC;UACJ,CAAC,CAAC;UACFoD,IAAI,EAAE;QACR;MACF,CAAC,CAAC;IACJ;IAEA9E,SAAS,CAAC,MAAM;MACd,MAAM,CAACgF,eAAe,CAAC,GAAGjG,WAAW,CAACkG,WAAW,CAAC1D,KAAK,CAAC;MACxD,OAAA2D,eAAA,CAAAd,YAAA,CAAArF,WAAA,EAAAoG,WAAA;QAAA,SAEW,CACL,OAAO,EACP;UAAE,gBAAgB,EAAE,CAACN,QAAQ,CAACnD;QAAM,CAAC,EACrCH,KAAK,CAAC6D,KAAK,CACZ;QAAA,SACM,CACL;UAAEC,KAAK,EAAEzF,aAAa,CAAC2B,KAAK,CAAC8D,KAAK,KAAK,MAAM,GAAGjD,YAAY,CAACV,KAAK,GAAGH,KAAK,CAAC8D,KAAK;QAAE,CAAC,EACnF9D,KAAK,CAAC+D,KAAK;MACZ,GACIN,eAAe;QAAA,eACNvC,WAAW,CAACf,KAAK;QAAA,cAClBH,KAAK,CAACrB,GAAG;QAAA,QACfqB,KAAK,CAACrB,GAAG,GAAG,KAAK,GAAGY;MAAS;QAMpCyE,UAAU,EAAEA,CAAA,KAAAnB,YAAA,CAAAoB,SAAA,SAAApB,YAAA,CAAAD,OAAA,eAAAC,YAAA,CAAAG,cAAA,eAAAH,YAAA,CAAAO,UAAA,eAAAP,YAAA,CAAAI,aAAA,eAAAJ,YAAA,CAAAM,OAAA,eAQX;QACD9D,OAAO,EAAEoB,KAAK,CAACpB;MAAO,MAAA6E,iBAAA,eAdR;QACZC,OAAO,EAAEhD,IAAI;QACbjC,OAAO,EAAEc,KAAK,CAACd;MACjB,CAAC,EAAE,IAAI;QAAAkF,IAAA;MAAA;IAcb,CAAC,CAAC;IAEF,OAAO;MACL1D,UAAU;MACVC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VImg.mjs","names":["makeVResponsiveProps","VResponsive","makeComponentProps","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","ref","shallowRef","vShow","watch","withDirectives","convertToUnit","genericComponent","propsFactory","SUPPORTS_INTERSECTION","useRender","makeVImgProps","alt","String","cover","Boolean","draggable","type","default","undefined","eager","gradient","lazySrc","options","Object","root","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","complete","onError","onLoad","getSrc","img","timer","timeout","arguments","length","poll","clearTimeout","imgHeight","imgWidth","window","setTimeout","endsWith","startsWith","containClasses","__image","_createVNode","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","responsiveProps","filterProps","_withDirectives","_mergeProps","class","width","style","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n alt: String,\n cover: Boolean,\n draggable: {\n type: [Boolean, String] as PropType<boolean | 'true' | 'false'>,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n }\n\n function onLoad () {\n getSrc()\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n crossorigin={ props.crossorigin }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n crossorigin={ props.crossorigin }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const [responsiveProps] = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":"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"}