{"version":3,"sources":["webpack:///./src/assets/payment_bg.png","webpack:///./src/components/payment/Banner.vue?88ec","webpack:///src/components/payment/Banner.vue","webpack:///./src/components/payment/Banner.vue?d2f4","webpack:///./src/components/payment/Banner.vue","webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/components/VGrid/VCol.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"],"names":["module","exports","render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","staticRenderFns","component","VCol","VImg","VRow","name","props","height","Number","maxHeight","maxWidth","minHeight","minWidth","width","String","computed","measurableStyles","styles","breakpoints","breakpointProps","type","Boolean","default","offsetProps","orderProps","propMap","col","Object","offset","order","breakpointClass","className","val","breakpoint","prop","cache","functional","cols","alignSelf","validator","str","includes","tag","cacheKey","parent","classList","value","hasColClasses","h","data","class","inserted","modifiers","binding","handler","options","observer","IntersectionObserver","entries","el","isIntersecting","entry","unbind","init","observe","Intersect","mixins","aspectRatio","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","style","methods","genContent","on","$listeners","hasIntersect","window","directives","intersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","undefined","position","sizes","src","srcset","transition","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","key","mode","watch","loadImage","mounted","lazyImg","onLoad","onError","getSrc","err","console","pollForSize","timeout","poll","naturalHeight","setTimeout","content","__genPlaceholder","$slots","placeholder","appear","node","mergeData","role","once"],"mappings":"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","file":"js/chunk-2a7a44e4.c2686d56.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/payment_bg.e0f39e29.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"dark\":\"\"}},[_c('v-img',{staticClass:\"grey lighten-2\",attrs:{\"src\":require('@/assets/payment_bg.png'),\"height\":\"300\",\"width\":\"100%\"}},[_c('v-row',{staticClass:\"fill-height pa-3\",attrs:{\"align\":\"center\"}},[_c('v-col',{attrs:{\"col\":\"12\",\"xs\":\"12\",\"sm\":\"12\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"4\",\"offset\":\"1\"}},[_c('h4',{staticClass:\"banner\"},[_c('span',[_vm._v(\" Your policy has been renewed \")]),_vm._v(\" Here's to another fantastic \"),_c('br'),_vm._v(\" year together \")])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Banner.vue?vue&type=template&id=2d359d6c&\"\nimport script from \"./Banner.vue?vue&type=script&lang=js&\"\nexport * from \"./Banner.vue?vue&type=script&lang=js&\"\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 { VCol } from 'vuetify/lib/components/VGrid';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VImg,VRow})\n","// 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 './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\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// 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 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 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 && !this.hasError && 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":""}