UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 20.9 kB
{"version":3,"file":"VImg.mjs","names":["makeVResponsiveProps","VResponsive","makeComponentProps","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","onBeforeUnmount","ref","shallowRef","vShow","watch","withDirectives","convertToUnit","genericComponent","getCurrentInstance","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","position","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","vm","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","setTimeout","isUnmounted","complete","onError","onLoad","getSrc","img","timer","clearTimeout","timeout","arguments","length","poll","imgHeight","imgWidth","window","endsWith","startsWith","containClasses","__image","_createVNode","objectPosition","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 onBeforeUnmount,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\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 position: 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 vm = getCurrentInstance('VImg')\n\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 setTimeout(() => {\n if (vm.isUnmounted) return\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 if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n if (vm.isUnmounted) return\n\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n if (vm.isUnmounted) return\n\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\n onBeforeUnmount(() => {\n clearTimeout(timer)\n })\n\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n if (vm.isUnmounted) return\n\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 style={{ objectPosition: props.position }}\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 style={{ objectPosition: props.position }}\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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"}