{"version":3,"sources":["webpack:///../../../src/mixins/applicationable/index.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/mixins/mobile/index.ts"],"names":["i","applicationable","value","events","mixins","PositionableFactory","extend","name","props","app","Boolean","computed","applicationProperty","watch","x","prev","this","removeApplication","callUpdate","newVal","oldVal","$vuetify","application","unregister","_uid","activated","created","length","$watch","mounted","deactivated","destroyed","methods","register","updateApplication","force","VResponsive","Measurable","aspectRatio","String","Number","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","$createElement","style","staticClass","genContent","class","$slots","render","h","measurableStyles","on","$listeners","hasIntersect","window","Themeable","directives","intersect","alt","contain","eager","gradient","lazySrc","options","type","Object","default","root","rootMargin","threshold","position","sizes","src","srcset","transition","data","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","push","join","backgroundPosition","key","attrs","mode","loadImage","init","undefined","entries","observer","isIntersecting","lazyImg","Image","pollForSize","onLoad","getSrc","$emit","endsWith","startsWith","naturalHeight","onError","onload","decode","err","consoleWarn","t","message","then","onerror","img","timeout","poll","complete","setTimeout","content","call","_b","width","__genPlaceholder","placeholder","appear","node","mergeData","role","themeClasses","modifiers","once","handler","children","tag","Vue","mobileBreakpoint","breakpoint","validator","v","isNaN","includes","isMobile","mobile","mobileWidth","parseInt","$attrs","hasOwnProperty","deprecate"],"mappings":"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","file":"chunk-cc3c6932.a5b0abc0fcbf10b71f33.js","sourcesContent":["import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\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\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\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 } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n"],"sourceRoot":""}