{"version":3,"sources":["webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts"],"names":["name","props","absolute","bottom","collapse","dense","extended","extensionHeight","default","type","Number","String","flat","floating","prominent","short","src","tag","data","isExtended","computed","computedHeight","height","this","parseInt","isCollapsed","isNaN","computedContentHeight","isProminent","$vuetify","breakpoint","classes","styles","created","breakingProps","original","replacement","methods","genBackground","image","$scopedSlots","img","$createElement","staticClass","genContent","style","genExtension","render","children","setBackgroundColor","class","on","$listeners","h","$","getOwnPropertyDescriptor","f","toLength","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","$endsWith","endsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","prototype","writable","target","proto","forced","searchString","that","endPosition","arguments","length","undefined","len","end","search","call","slice","mixins","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","$slots","hasIntersect","window","directives","intersect","alt","contain","eager","gradient","lazySrc","options","root","rootMargin","threshold","position","sizes","srcset","transition","Boolean","currentSrc","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","key","attrs","mode","watch","loadImage","init","mounted","lazyImg","onLoad","startsWith","naturalHeight","onError","getSrc","err","console","pollForSize","timeout","poll","setTimeout","content","width","__genPlaceholder","placeholder","appear","node","mergeData","role","modifiers","once","value","handler"],"mappings":"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","file":"js/chunk-c2e60f28.d93b28cf.js","sourcesContent":["import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\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","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'\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\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"],"sourceRoot":""}