@vuetify/nightly 3.2.0-dev-20230309.0 → 3.2.0-dev-20230322.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/json/attributes.json +210 -30
  3. package/dist/json/importMap.json +4 -4
  4. package/dist/json/tags.json +47 -2
  5. package/dist/json/web-types.json +529 -63
  6. package/dist/vuetify-labs.css +1186 -1146
  7. package/dist/vuetify-labs.d.ts +56928 -14280
  8. package/dist/vuetify-labs.esm.js +557 -363
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +557 -363
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +204 -179
  13. package/dist/vuetify.d.ts +55330 -15866
  14. package/dist/vuetify.esm.js +400 -306
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +400 -306
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +668 -667
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.ts +6 -9
  22. package/lib/blueprints/md1.d.ts +6 -9
  23. package/lib/blueprints/md2.d.ts +6 -9
  24. package/lib/blueprints/md3.d.ts +6 -9
  25. package/lib/blueprints/md3.mjs +6 -0
  26. package/lib/blueprints/md3.mjs.map +1 -1
  27. package/lib/components/VAlert/VAlert.mjs +29 -15
  28. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  29. package/lib/components/VAlert/index.d.ts +510 -82
  30. package/lib/components/VApp/VApp.css +1 -0
  31. package/lib/components/VApp/VApp.sass +1 -0
  32. package/lib/components/VApp/index.d.ts +158 -20
  33. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  34. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  35. package/lib/components/VAppBar/index.d.ts +616 -110
  36. package/lib/components/VAutocomplete/VAutocomplete.mjs +13 -7
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  38. package/lib/components/VAutocomplete/index.d.ts +1656 -130
  39. package/lib/components/VAvatar/index.d.ts +205 -29
  40. package/lib/components/VBadge/index.d.ts +284 -42
  41. package/lib/components/VBanner/VBanner.mjs +19 -12
  42. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  43. package/lib/components/VBanner/index.d.ts +478 -84
  44. package/lib/components/VBottomNavigation/index.d.ts +321 -40
  45. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
  46. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  47. package/lib/components/VBreadcrumbs/index.d.ts +325 -45
  48. package/lib/components/VBtn/VBtn.css +0 -5
  49. package/lib/components/VBtn/VBtn.mjs +65 -58
  50. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  51. package/lib/components/VBtn/VBtn.sass +0 -7
  52. package/lib/components/VBtn/_variables.scss +0 -2
  53. package/lib/components/VBtn/index.d.ts +452 -69
  54. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -7
  55. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  56. package/lib/components/VBtnGroup/index.d.ts +185 -26
  57. package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
  58. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  59. package/lib/components/VBtnToggle/index.d.ts +245 -35
  60. package/lib/components/VCard/VCard.mjs +10 -6
  61. package/lib/components/VCard/VCard.mjs.map +1 -1
  62. package/lib/components/VCard/VCardItem.mjs +27 -23
  63. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  64. package/lib/components/VCard/index.d.ts +938 -172
  65. package/lib/components/VCarousel/index.d.ts +561 -123
  66. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  67. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  68. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -4
  69. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  70. package/lib/components/VCheckbox/index.d.ts +831 -147
  71. package/lib/components/VChip/VChip.css +110 -90
  72. package/lib/components/VChip/VChip.mjs +70 -48
  73. package/lib/components/VChip/VChip.mjs.map +1 -1
  74. package/lib/components/VChip/_mixins.scss +27 -23
  75. package/lib/components/VChip/index.d.ts +474 -76
  76. package/lib/components/VChipGroup/index.d.ts +227 -32
  77. package/lib/components/VCode/index.d.ts +109 -16
  78. package/lib/components/VColorPicker/index.d.ts +284 -20
  79. package/lib/components/VCombobox/VCombobox.mjs +13 -7
  80. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  81. package/lib/components/VCombobox/index.d.ts +1668 -130
  82. package/lib/components/VCounter/index.d.ts +1894 -87
  83. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
  84. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  85. package/lib/components/VDefaultsProvider/index.d.ts +133 -21
  86. package/lib/components/VDialog/VDialog.css +31 -24
  87. package/lib/components/VDialog/VDialog.mjs +2 -2
  88. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  89. package/lib/components/VDialog/VDialog.sass +19 -12
  90. package/lib/components/VDialog/index.d.ts +2362 -146
  91. package/lib/components/VDivider/index.d.ts +130 -23
  92. package/lib/components/VExpansionPanel/index.d.ts +719 -119
  93. package/lib/components/VField/index.d.ts +163 -21
  94. package/lib/components/VFileInput/index.d.ts +1038 -104
  95. package/lib/components/VFooter/VFooter.css +2 -0
  96. package/lib/components/VFooter/VFooter.sass +2 -0
  97. package/lib/components/VFooter/_variables.scss +2 -0
  98. package/lib/components/VFooter/index.d.ts +203 -28
  99. package/lib/components/VForm/index.d.ts +204 -23
  100. package/lib/components/VGrid/VCol.mjs +6 -5
  101. package/lib/components/VGrid/VCol.mjs.map +1 -1
  102. package/lib/components/VGrid/VRow.mjs +4 -4
  103. package/lib/components/VGrid/VRow.mjs.map +1 -1
  104. package/lib/components/VGrid/index.d.ts +733 -76
  105. package/lib/components/VHover/index.d.ts +182 -35
  106. package/lib/components/VIcon/index.d.ts +494 -50
  107. package/lib/components/VImg/VImg.mjs +2 -2
  108. package/lib/components/VImg/VImg.mjs.map +1 -1
  109. package/lib/components/VImg/index.d.ts +275 -46
  110. package/lib/components/VInput/index.d.ts +315 -53
  111. package/lib/components/VItemGroup/index.d.ts +308 -52
  112. package/lib/components/VKbd/VKbd.css +1 -0
  113. package/lib/components/VKbd/VKbd.sass +1 -0
  114. package/lib/components/VKbd/_variables.scss +1 -0
  115. package/lib/components/VKbd/index.d.ts +109 -16
  116. package/lib/components/VLabel/index.d.ts +113 -20
  117. package/lib/components/VLayout/index.d.ts +296 -41
  118. package/lib/components/VLazy/VLazy.mjs +4 -1
  119. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  120. package/lib/components/VLazy/index.d.ts +219 -30
  121. package/lib/components/VList/VListChildren.mjs +2 -2
  122. package/lib/components/VList/VListChildren.mjs.map +1 -1
  123. package/lib/components/VList/VListGroup.mjs +1 -4
  124. package/lib/components/VList/VListGroup.mjs.map +1 -1
  125. package/lib/components/VList/VListItem.mjs +23 -19
  126. package/lib/components/VList/VListItem.mjs.map +1 -1
  127. package/lib/components/VList/index.d.ts +1461 -223
  128. package/lib/components/VLocaleProvider/index.d.ts +121 -20
  129. package/lib/components/VMain/index.d.ts +118 -17
  130. package/lib/components/VMenu/VMenu.css +4 -4
  131. package/lib/components/VMenu/VMenu.mjs +2 -2
  132. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  133. package/lib/components/VMenu/VMenu.sass +1 -1
  134. package/lib/components/VMenu/index.d.ts +2368 -142
  135. package/lib/components/VMessages/index.d.ts +1921 -98
  136. package/lib/components/VNavigationDrawer/index.d.ts +379 -56
  137. package/lib/components/VOverlay/VOverlay.css +2 -2
  138. package/lib/components/VOverlay/VOverlay.mjs +1 -4
  139. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  140. package/lib/components/VOverlay/VOverlay.sass +1 -1
  141. package/lib/components/VOverlay/_variables.scss +1 -1
  142. package/lib/components/VOverlay/index.d.ts +519 -85
  143. package/lib/components/VPagination/index.d.ts +502 -68
  144. package/lib/components/VParallax/VParallax.mjs +3 -3
  145. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  146. package/lib/components/VParallax/index.d.ts +141 -28
  147. package/lib/components/VProgressCircular/index.d.ts +186 -25
  148. package/lib/components/VProgressLinear/index.d.ts +319 -48
  149. package/lib/components/VRadio/index.d.ts +313 -57
  150. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -6
  151. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  152. package/lib/components/VRadioGroup/index.d.ts +463 -83
  153. package/lib/components/VRangeSlider/index.d.ts +528 -80
  154. package/lib/components/VRating/VRating.mjs.map +1 -1
  155. package/lib/components/VRating/index.d.ts +305 -43
  156. package/lib/components/VResponsive/index.d.ts +142 -27
  157. package/lib/components/VSelect/VSelect.mjs +13 -7
  158. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  159. package/lib/components/VSelect/index.d.ts +3060 -328
  160. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -4
  161. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  162. package/lib/components/VSelectionControl/index.d.ts +76 -4
  163. package/lib/components/VSelectionControlGroup/index.d.ts +242 -38
  164. package/lib/components/VSheet/VSheet.mjs +1 -7
  165. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  166. package/lib/components/VSheet/index.d.ts +194 -31
  167. package/lib/components/VSlideGroup/index.d.ts +475 -83
  168. package/lib/components/VSlider/VSliderTrack.mjs +1 -0
  169. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  170. package/lib/components/VSlider/index.d.ts +521 -79
  171. package/lib/components/VSlider/slider.mjs +5 -6
  172. package/lib/components/VSlider/slider.mjs.map +1 -1
  173. package/lib/components/VSnackbar/VSnackbar.css +2 -7
  174. package/lib/components/VSnackbar/VSnackbar.mjs +4 -3
  175. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  176. package/lib/components/VSnackbar/VSnackbar.sass +3 -8
  177. package/lib/components/VSnackbar/index.d.ts +1219 -81
  178. package/lib/components/VSwitch/VSwitch.mjs +2 -2
  179. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  180. package/lib/components/VSwitch/index.d.ts +498 -92
  181. package/lib/components/VSystemBar/index.d.ts +184 -27
  182. package/lib/components/VTable/index.d.ts +190 -35
  183. package/lib/components/VTabs/VTab.mjs +7 -23
  184. package/lib/components/VTabs/VTab.mjs.map +1 -1
  185. package/lib/components/VTabs/index.d.ts +623 -71
  186. package/lib/components/VTextField/VTextField.mjs +8 -5
  187. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  188. package/lib/components/VTextField/index.d.ts +1404 -106
  189. package/lib/components/VTextarea/VTextarea.mjs +7 -1
  190. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  191. package/lib/components/VTextarea/index.d.ts +1014 -102
  192. package/lib/components/VThemeProvider/index.d.ts +124 -19
  193. package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
  194. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  195. package/lib/components/VTimeline/index.d.ts +441 -71
  196. package/lib/components/VToolbar/VToolbar.mjs +10 -9
  197. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  198. package/lib/components/VToolbar/index.d.ts +542 -93
  199. package/lib/components/VTooltip/VTooltip.css +3 -3
  200. package/lib/components/VTooltip/VTooltip.mjs +2 -2
  201. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  202. package/lib/components/VTooltip/VTooltip.sass +1 -1
  203. package/lib/components/VTooltip/index.d.ts +1276 -82
  204. package/lib/components/VValidation/index.d.ts +201 -30
  205. package/lib/components/VWindow/index.d.ts +527 -95
  206. package/lib/components/index.d.ts +55255 -15788
  207. package/lib/components/transitions/index.d.ts +2097 -308
  208. package/lib/composables/defaults.mjs +2 -0
  209. package/lib/composables/defaults.mjs.map +1 -1
  210. package/lib/composables/display.mjs +2 -0
  211. package/lib/composables/display.mjs.map +1 -1
  212. package/lib/composables/form.mjs.map +1 -1
  213. package/lib/entry-bundler.mjs +1 -1
  214. package/lib/framework.mjs +1 -1
  215. package/lib/index.d.ts +7 -10
  216. package/lib/labs/VDataTable/VDataTable.css +15 -0
  217. package/lib/labs/VDataTable/VDataTable.mjs +41 -17
  218. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  219. package/lib/labs/VDataTable/VDataTable.sass +9 -0
  220. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
  221. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  222. package/lib/labs/VDataTable/VDataTableRow.mjs +8 -2
  223. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  224. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -1
  225. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  226. package/lib/labs/VDataTable/VDataTableServer.mjs +39 -17
  227. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  228. package/lib/labs/VDataTable/VDataTableVirtual.mjs +23 -12
  229. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  230. package/lib/labs/VDataTable/composables/expand.mjs +1 -1
  231. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  232. package/lib/labs/VDataTable/composables/group.mjs +12 -1
  233. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  234. package/lib/labs/VDataTable/composables/options.mjs +0 -12
  235. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  236. package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
  237. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  238. package/lib/labs/VDataTable/composables/select.mjs +1 -1
  239. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  240. package/lib/labs/VDataTable/composables/sort.mjs +19 -3
  241. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  242. package/lib/labs/VDataTable/index.d.ts +4179 -1017
  243. package/lib/labs/VVirtualScroll/index.d.ts +32 -1
  244. package/lib/labs/components.d.ts +4214 -1026
  245. package/lib/locale/adapters/vue-i18n.d.ts +1 -1
  246. package/lib/locale/adapters/vue-i18n.mjs +1 -1
  247. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  248. package/lib/styles/main.css +4 -0
  249. package/lib/styles/settings/_utilities.scss +7 -0
  250. package/lib/util/animation.mjs +8 -1
  251. package/lib/util/animation.mjs.map +1 -1
  252. package/lib/util/defineComponent.mjs +15 -7
  253. package/lib/util/defineComponent.mjs.map +1 -1
  254. package/lib/util/helpers.mjs +4 -0
  255. package/lib/util/helpers.mjs.map +1 -1
  256. package/package.json +5 -10
@@ -1 +1 @@
1
- {"version":3,"file":"VImg.mjs","names":["VResponsive","intersect","makeTransitionProps","MaybeTransition","computed","nextTick","onBeforeMount","ref","vShow","watch","withDirectives","convertToUnit","genericComponent","SUPPORTS_INTERSECTION","useRender","VImg","name","directives","props","aspectRatio","String","Number","alt","cover","Boolean","eager","gradient","lazySrc","options","type","Object","default","root","undefined","rootMargin","threshold","sizes","src","srcset","width","emits","loadstart","event","load","error","setup","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","value","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","complete","onError","onLoad","getSrc","img","timer","timeout","poll","clearTimeout","imgHeight","imgWidth","window","setTimeout","endsWith","startsWith","containClasses","__image","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","additional","handler"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["import './VImg.sass'\n\n// Components\nimport { VResponsive } from '@/components/VResponsive'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Composables\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\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: []\n placeholder: []\n error: []\n sources: []\n}\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: {\n aspectRatio: [String, Number],\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 width: [String, Number],\n\n ...makeTransitionProps(),\n },\n\n emits: {\n loadstart: (event: string | undefined) => true,\n load: (event: string | undefined) => true,\n error: (event: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = ref('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = ref<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = ref<number>()\n const naturalHeight = ref<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=\"\"\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=\"\"\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 = ref(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 <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n ]}\n style={{ width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) }}\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 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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"}
1
+ {"version":3,"file":"VImg.mjs","names":["VResponsive","intersect","makeTransitionProps","MaybeTransition","computed","nextTick","onBeforeMount","ref","vShow","watch","withDirectives","convertToUnit","genericComponent","SUPPORTS_INTERSECTION","useRender","VImg","name","directives","props","aspectRatio","String","Number","alt","cover","Boolean","eager","gradient","lazySrc","options","type","Object","default","root","undefined","rootMargin","threshold","sizes","src","srcset","width","emits","loadstart","event","load","error","setup","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","value","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","complete","onError","onLoad","getSrc","img","timer","timeout","poll","clearTimeout","imgHeight","imgWidth","window","setTimeout","endsWith","startsWith","containClasses","__image","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","additional","handler"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["import './VImg.sass'\n\n// Components\nimport { VResponsive } from '@/components/VResponsive'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Composables\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\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: []\n placeholder: []\n error: []\n sources: []\n}\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: {\n aspectRatio: [String, Number],\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 width: [String, Number],\n\n ...makeTransitionProps(),\n },\n\n emits: {\n loadstart: (event: string | undefined) => true,\n load: (event: string | undefined) => true,\n error: (event: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = ref('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = ref<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = ref<number>()\n const naturalHeight = ref<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 = ref(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 <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n ]}\n style={{ width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) }}\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 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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"}
@@ -1,4 +1,9 @@
1
1
  import * as vue from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, nextTick, PropType } from 'vue';
3
+
4
+ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
+ filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
6
+ }
2
7
 
3
8
  interface srcObject {
4
9
  src?: string;
@@ -6,7 +11,213 @@ interface srcObject {
6
11
  lazySrc?: string;
7
12
  aspect: number;
8
13
  }
9
- declare const VImg: vue.DefineComponent<{
14
+ declare const VImg: {
15
+ new (...args: any[]): {
16
+ $: vue.ComponentInternalInstance;
17
+ $data: {};
18
+ $props: Partial<{
19
+ transition: string | boolean | (vue.TransitionProps & {
20
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
21
+ });
22
+ eager: boolean;
23
+ options: IntersectionObserverInit;
24
+ cover: boolean;
25
+ src: string | srcObject;
26
+ }> & Omit<{
27
+ transition: string | boolean | (vue.TransitionProps & {
28
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
29
+ });
30
+ eager: boolean;
31
+ options: IntersectionObserverInit;
32
+ cover: boolean;
33
+ src: string | srcObject;
34
+ } & {
35
+ width?: string | number | undefined;
36
+ aspectRatio?: string | number | undefined;
37
+ alt?: string | undefined;
38
+ sizes?: string | undefined;
39
+ srcset?: string | undefined;
40
+ gradient?: string | undefined;
41
+ lazySrc?: string | undefined;
42
+ } & {
43
+ $children?: {} | vue.VNodeChild | {
44
+ default?: (() => vue.VNodeChild) | undefined;
45
+ placeholder?: (() => vue.VNodeChild) | undefined;
46
+ error?: (() => vue.VNodeChild) | undefined;
47
+ sources?: (() => vue.VNodeChild) | undefined;
48
+ };
49
+ $slots?: {
50
+ default?: (() => vue.VNodeChild) | undefined;
51
+ placeholder?: (() => vue.VNodeChild) | undefined;
52
+ error?: (() => vue.VNodeChild) | undefined;
53
+ sources?: (() => vue.VNodeChild) | undefined;
54
+ } | undefined;
55
+ 'v-slots'?: {
56
+ default?: false | (() => vue.VNodeChild) | undefined;
57
+ placeholder?: false | (() => vue.VNodeChild) | undefined;
58
+ error?: false | (() => vue.VNodeChild) | undefined;
59
+ sources?: false | (() => vue.VNodeChild) | undefined;
60
+ } | undefined;
61
+ } & {
62
+ "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
63
+ "v-slot:placeholder"?: false | (() => vue.VNodeChild) | undefined;
64
+ "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
65
+ "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
66
+ } & {
67
+ onError?: ((event: string | undefined) => any) | undefined;
68
+ onLoad?: ((event: string | undefined) => any) | undefined;
69
+ onLoadstart?: ((event: string | undefined) => any) | undefined;
70
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "transition" | "eager" | "options" | "cover" | "src">;
71
+ $attrs: {
72
+ [x: string]: unknown;
73
+ };
74
+ $refs: {
75
+ [x: string]: unknown;
76
+ };
77
+ $slots: Readonly<{
78
+ [name: string]: vue.Slot | undefined;
79
+ }>;
80
+ $root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
81
+ $parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
82
+ $emit: ((event: "error", event: string | undefined) => void) & ((event: "load", event: string | undefined) => void) & ((event: "loadstart", event: string | undefined) => void);
83
+ $el: any;
84
+ $options: vue.ComponentOptionsBase<{
85
+ transition: string | boolean | (vue.TransitionProps & {
86
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
87
+ });
88
+ eager: boolean;
89
+ options: IntersectionObserverInit;
90
+ cover: boolean;
91
+ src: string | srcObject;
92
+ } & {
93
+ width?: string | number | undefined;
94
+ aspectRatio?: string | number | undefined;
95
+ alt?: string | undefined;
96
+ sizes?: string | undefined;
97
+ srcset?: string | undefined;
98
+ gradient?: string | undefined;
99
+ lazySrc?: string | undefined;
100
+ } & {
101
+ $children?: {} | vue.VNodeChild | {
102
+ default?: (() => vue.VNodeChild) | undefined;
103
+ placeholder?: (() => vue.VNodeChild) | undefined;
104
+ error?: (() => vue.VNodeChild) | undefined;
105
+ sources?: (() => vue.VNodeChild) | undefined;
106
+ };
107
+ $slots?: {
108
+ default?: (() => vue.VNodeChild) | undefined;
109
+ placeholder?: (() => vue.VNodeChild) | undefined;
110
+ error?: (() => vue.VNodeChild) | undefined;
111
+ sources?: (() => vue.VNodeChild) | undefined;
112
+ } | undefined;
113
+ 'v-slots'?: {
114
+ default?: false | (() => vue.VNodeChild) | undefined;
115
+ placeholder?: false | (() => vue.VNodeChild) | undefined;
116
+ error?: false | (() => vue.VNodeChild) | undefined;
117
+ sources?: false | (() => vue.VNodeChild) | undefined;
118
+ } | undefined;
119
+ } & {
120
+ "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
121
+ "v-slot:placeholder"?: false | (() => vue.VNodeChild) | undefined;
122
+ "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
123
+ "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
124
+ } & {
125
+ onError?: ((event: string | undefined) => any) | undefined;
126
+ onLoad?: ((event: string | undefined) => any) | undefined;
127
+ onLoadstart?: ((event: string | undefined) => any) | undefined;
128
+ }, {
129
+ currentSrc: vue.Ref<string>;
130
+ image: vue.Ref<HTMLImageElement | undefined>;
131
+ state: vue.Ref<"error" | "loaded" | "idle" | "loading">;
132
+ naturalWidth: vue.Ref<number | undefined>;
133
+ naturalHeight: vue.Ref<number | undefined>;
134
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
135
+ loadstart: (event: string | undefined) => true;
136
+ load: (event: string | undefined) => true;
137
+ error: (event: string | undefined) => true;
138
+ }, string, {
139
+ transition: string | boolean | (vue.TransitionProps & {
140
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
141
+ });
142
+ eager: boolean;
143
+ options: IntersectionObserverInit;
144
+ cover: boolean;
145
+ src: string | srcObject;
146
+ }, {}, string> & {
147
+ beforeCreate?: ((() => void) | (() => void)[]) | undefined;
148
+ created?: ((() => void) | (() => void)[]) | undefined;
149
+ beforeMount?: ((() => void) | (() => void)[]) | undefined;
150
+ mounted?: ((() => void) | (() => void)[]) | undefined;
151
+ beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
152
+ updated?: ((() => void) | (() => void)[]) | undefined;
153
+ activated?: ((() => void) | (() => void)[]) | undefined;
154
+ deactivated?: ((() => void) | (() => void)[]) | undefined;
155
+ beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
156
+ beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
157
+ destroyed?: ((() => void) | (() => void)[]) | undefined;
158
+ unmounted?: ((() => void) | (() => void)[]) | undefined;
159
+ renderTracked?: (((e: vue.DebuggerEvent) => void) | ((e: vue.DebuggerEvent) => void)[]) | undefined;
160
+ renderTriggered?: (((e: vue.DebuggerEvent) => void) | ((e: vue.DebuggerEvent) => void)[]) | undefined;
161
+ errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null, info: string) => boolean | void)[]) | undefined;
162
+ };
163
+ $forceUpdate: () => void;
164
+ $nextTick: typeof nextTick;
165
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
166
+ } & {
167
+ transition: string | boolean | (vue.TransitionProps & {
168
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
169
+ });
170
+ eager: boolean;
171
+ options: IntersectionObserverInit;
172
+ cover: boolean;
173
+ src: string | srcObject;
174
+ } & {
175
+ width?: string | number | undefined;
176
+ aspectRatio?: string | number | undefined;
177
+ alt?: string | undefined;
178
+ sizes?: string | undefined;
179
+ srcset?: string | undefined;
180
+ gradient?: string | undefined;
181
+ lazySrc?: string | undefined;
182
+ } & {
183
+ $children?: {} | vue.VNodeChild | {
184
+ default?: (() => vue.VNodeChild) | undefined;
185
+ placeholder?: (() => vue.VNodeChild) | undefined;
186
+ error?: (() => vue.VNodeChild) | undefined;
187
+ sources?: (() => vue.VNodeChild) | undefined;
188
+ };
189
+ $slots?: {
190
+ default?: (() => vue.VNodeChild) | undefined;
191
+ placeholder?: (() => vue.VNodeChild) | undefined;
192
+ error?: (() => vue.VNodeChild) | undefined;
193
+ sources?: (() => vue.VNodeChild) | undefined;
194
+ } | undefined;
195
+ 'v-slots'?: {
196
+ default?: false | (() => vue.VNodeChild) | undefined;
197
+ placeholder?: false | (() => vue.VNodeChild) | undefined;
198
+ error?: false | (() => vue.VNodeChild) | undefined;
199
+ sources?: false | (() => vue.VNodeChild) | undefined;
200
+ } | undefined;
201
+ } & {
202
+ "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
203
+ "v-slot:placeholder"?: false | (() => vue.VNodeChild) | undefined;
204
+ "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
205
+ "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
206
+ } & {
207
+ onError?: ((event: string | undefined) => any) | undefined;
208
+ onLoad?: ((event: string | undefined) => any) | undefined;
209
+ onLoadstart?: ((event: string | undefined) => any) | undefined;
210
+ } & vue.ShallowUnwrapRef<{
211
+ currentSrc: vue.Ref<string>;
212
+ image: vue.Ref<HTMLImageElement | undefined>;
213
+ state: vue.Ref<"error" | "loaded" | "idle" | "loading">;
214
+ naturalWidth: vue.Ref<number | undefined>;
215
+ naturalHeight: vue.Ref<number | undefined>;
216
+ }> & {} & vue.ComponentCustomProperties & {};
217
+ __isFragment?: undefined;
218
+ __isTeleport?: undefined;
219
+ __isSuspense?: undefined;
220
+ } & vue.ComponentOptionsBase<{
10
221
  transition: string | boolean | (vue.TransitionProps & {
11
222
  component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
12
223
  });
@@ -46,6 +257,10 @@ declare const VImg: vue.DefineComponent<{
46
257
  "v-slot:placeholder"?: false | (() => vue.VNodeChild) | undefined;
47
258
  "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
48
259
  "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
260
+ } & {
261
+ onError?: ((event: string | undefined) => any) | undefined;
262
+ onLoad?: ((event: string | undefined) => any) | undefined;
263
+ onLoadstart?: ((event: string | undefined) => any) | undefined;
49
264
  }, {
50
265
  currentSrc: vue.Ref<string>;
51
266
  image: vue.Ref<HTMLImageElement | undefined>;
@@ -56,7 +271,7 @@ declare const VImg: vue.DefineComponent<{
56
271
  loadstart: (event: string | undefined) => true;
57
272
  load: (event: string | undefined) => true;
58
273
  error: (event: string | undefined) => true;
59
- }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, {
274
+ }, string, {
60
275
  transition: string | boolean | (vue.TransitionProps & {
61
276
  component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
62
277
  });
@@ -64,51 +279,65 @@ declare const VImg: vue.DefineComponent<{
64
279
  options: IntersectionObserverInit;
65
280
  cover: boolean;
66
281
  src: string | srcObject;
67
- } & {
68
- width?: string | number | undefined;
69
- aspectRatio?: string | number | undefined;
70
- alt?: string | undefined;
71
- sizes?: string | undefined;
72
- srcset?: string | undefined;
73
- gradient?: string | undefined;
74
- lazySrc?: string | undefined;
75
- } & {
76
- $children?: {} | vue.VNodeChild | {
77
- default?: (() => vue.VNodeChild) | undefined;
78
- placeholder?: (() => vue.VNodeChild) | undefined;
79
- error?: (() => vue.VNodeChild) | undefined;
80
- sources?: (() => vue.VNodeChild) | undefined;
282
+ }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
283
+ transition: {
284
+ type: PropType<string | boolean | (vue.TransitionProps & {
285
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
286
+ })>;
287
+ default: string;
288
+ validator: (val: unknown) => boolean;
81
289
  };
82
- $slots?: {
83
- default?: (() => vue.VNodeChild) | undefined;
84
- placeholder?: (() => vue.VNodeChild) | undefined;
85
- error?: (() => vue.VNodeChild) | undefined;
86
- sources?: (() => vue.VNodeChild) | undefined;
87
- } | undefined;
88
- 'v-slots'?: {
89
- default?: false | (() => vue.VNodeChild) | undefined;
90
- placeholder?: false | (() => vue.VNodeChild) | undefined;
91
- error?: false | (() => vue.VNodeChild) | undefined;
92
- sources?: false | (() => vue.VNodeChild) | undefined;
93
- } | undefined;
94
- } & {
95
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
96
- "v-slot:placeholder"?: false | (() => vue.VNodeChild) | undefined;
97
- "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
98
- "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
99
- } & {
100
- onError?: ((event: string | undefined) => any) | undefined;
101
- onLoad?: ((event: string | undefined) => any) | undefined;
102
- onLoadstart?: ((event: string | undefined) => any) | undefined;
103
- }, {
104
- transition: string | boolean | (vue.TransitionProps & {
105
- component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
106
- });
107
- eager: boolean;
108
- options: IntersectionObserverInit;
109
- cover: boolean;
110
- src: string | srcObject;
111
- }>;
290
+ aspectRatio: (StringConstructor | NumberConstructor)[];
291
+ alt: StringConstructor;
292
+ cover: BooleanConstructor;
293
+ eager: BooleanConstructor;
294
+ gradient: StringConstructor;
295
+ lazySrc: StringConstructor;
296
+ options: {
297
+ type: PropType<IntersectionObserverInit>;
298
+ default: () => {
299
+ root: undefined;
300
+ rootMargin: undefined;
301
+ threshold: undefined;
302
+ };
303
+ };
304
+ sizes: StringConstructor;
305
+ src: {
306
+ type: PropType<string | srcObject>;
307
+ default: string;
308
+ };
309
+ srcset: StringConstructor;
310
+ width: (StringConstructor | NumberConstructor)[];
311
+ }, vue.ExtractPropTypes<{
312
+ transition: {
313
+ type: PropType<string | boolean | (vue.TransitionProps & {
314
+ component?: vue.Component<any, any, any, vue.ComputedOptions, vue.MethodOptions> | undefined;
315
+ })>;
316
+ default: string;
317
+ validator: (val: unknown) => boolean;
318
+ };
319
+ aspectRatio: (StringConstructor | NumberConstructor)[];
320
+ alt: StringConstructor;
321
+ cover: BooleanConstructor;
322
+ eager: BooleanConstructor;
323
+ gradient: StringConstructor;
324
+ lazySrc: StringConstructor;
325
+ options: {
326
+ type: PropType<IntersectionObserverInit>;
327
+ default: () => {
328
+ root: undefined;
329
+ rootMargin: undefined;
330
+ threshold: undefined;
331
+ };
332
+ };
333
+ sizes: StringConstructor;
334
+ src: {
335
+ type: PropType<string | srcObject>;
336
+ default: string;
337
+ };
338
+ srcset: StringConstructor;
339
+ width: (StringConstructor | NumberConstructor)[];
340
+ }>>;
112
341
  type VImg = InstanceType<typeof VImg>;
113
342
 
114
343
  export { VImg };