{"version":3,"sources":["webpack:///../../../src/components/VGrid/VFlex.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VGrid/grid.ts"],"names":["Grid","mixins","Measurable","extend","name","props","aspectRatio","String","Number","contentClass","computed","computedAspectRatio","this","aspectStyle","paddingBottom","undefined","__cachedSizer","$createElement","style","staticClass","methods","genContent","class","getSlot","render","h","measurableStyles","on","$listeners","VResponsive","hasIntersect","window","Themeable","directives","intersect","alt","contain","Boolean","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","watch","loadImage","init","mounted","entries","observer","isIntersecting","lazyImg","Image","pollForSize","onLoad","getSrc","$emit","endsWith","startsWith","naturalHeight","onError","onload","decode","catch","err","consoleWarn","message","then","onerror","img","timeout","poll","complete","setTimeout","content","call","_b","width","__genPlaceholder","slot","placeholder","appear","node","mergeData","role","themeClasses","modifiers","once","value","handler","children","tag","Loadable","Routable","VSheet","flat","hover","link","loaderHeight","raised","classes","isClickable","loading","disabled","styles","background","genProgress","generateRouteLink","tabindex","setBackgroundColor","color","$slots","VGrid","Vue","functional","id","trim","keys","filter","length","domProps"],"mappings":"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","file":"js/chunk-6997fe3d.d693a52b.js","sourcesContent":["import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('flex')\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'\nimport { getSlot } from '../../util/helpers'\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 }, getSlot(this))\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","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\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'\nimport { getSlot } from '../../util/helpers'\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 const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\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","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n"],"sourceRoot":""}