{"version":3,"file":"VImg.mjs","names":["makeVResponsiveProps","VResponsive","makeComponentProps","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","ref","shallowRef","vShow","watch","withDirectives","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","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  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={ props.style }\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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"}