{"version":3,"sources":["webpack:///./src/assets/abstract2.png","webpack:///./src/components/Abstract2.vue?44b3","webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///./src/components/Abstract2.vue?6544","webpack:///./src/components/Abstract2.vue"],"names":["module","exports","name","props","height","Number","maxHeight","maxWidth","minHeight","minWidth","width","String","computed","measurableStyles","styles","this","inserted","modifiers","binding","value","handler","options","observer","IntersectionObserver","entries","el","isIntersecting","Boolean","entry","unbind","init","observe","Intersect","mixins","aspectRatio","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","$createElement","style","staticClass","methods","genContent","$slots","render","h","on","$listeners","hasIntersect","window","directives","intersect","alt","contain","eager","gradient","lazySrc","type","default","root","rootMargin","threshold","undefined","position","sizes","src","srcset","transition","data","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","normalisedSrc","aspect","__cachedImage","backgroundImage","class","backgroundPosition","key","attrs","mode","watch","loadImage","mounted","lazyImg","onLoad","onError","console","getSrc","err","pollForSize","timeout","poll","naturalHeight","setTimeout","content","__genPlaceholder","placeholder","appear","node","once","role","_vm","_h","_c","_self","staticRenderFns","script","component","VImg"],"mappings":"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","file":"js/chunk-a430c8fc.dd65a765.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/abstract2.3a696edc.png\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Abstract2.vue?vue&type=style&index=0&lang=sass&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Abstract2.vue?vue&type=style&index=0&lang=sass&\"","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective) {\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n /* istanbul ignore if */\n if (!el._observe) return // Just in case, should never fire\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n el._observe.init\n )\n ) {\n const isIntersecting = Boolean(entries.find(entry => entry.isIntersecting))\n\n handler(entries, observer, isIntersecting)\n }\n\n // If has already been initted and\n // has the once modifier, unbind\n if (el._observe.init && modifiers.once) unbind(el)\n // Otherwise, mark the observer as initted\n else (el._observe.init = true)\n }, options)\n\n el._observe = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._observe) return\n\n el._observe.observer.unobserve(el)\n delete el._observe\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\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 },\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 }, 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// Utils\nimport { consoleError, 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 VResponsive.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 },\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 }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return typeof this.src === 'string'\n ? {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\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 },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc)) 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 onError () {\n consoleError(\n `Image load failed\\n\\n` +\n `src: ${this.normalisedSrc.src}`,\n this\n )\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 image.src = this.normalisedSrc.src\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\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 {\n timeout != null && 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 node.data!.staticClass += ' v-image'\n\n // Only load intersect directive if it\n // will work in the current browser.\n if (hasIntersect) {\n node.data!.directives = [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n }\n\n node.data!.attrs = {\n role: this.alt ? 'img' : undefined,\n 'aria-label': this.alt,\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, node.data, node.children)\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-img',{staticClass:\"abstract-2\",attrs:{\"src\":require('@/assets/abstract2.png'),\"height\":\"711\",\"width\":\"778\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Abstract2.vue?vue&type=template&id=70cb387a&\"\nvar script = {}\nimport style0 from \"./Abstract2.vue?vue&type=style&index=0&lang=sass&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VImg})\n"],"sourceRoot":""}