{"version":3,"sources":["webpack:///../../../src/components/VGrid/VRow.ts","webpack:///./src/views/settings/components/LatestInvoice.vue?dc6a","webpack:///./src/views/settings/components/LatestInvoice.vue","webpack:///./src/views/settings/components/LatestInvoice.vue?ade1","webpack:///./src/views/settings/components/LatestInvoice.vue?11ee","webpack:///../../../src/components/VGrid/VCol.ts"],"names":["breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","props","val","upperFirst","alignValidator","str","includes","alignProps","type","String","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","extend","name","functional","tag","dense","Boolean","noGutters","render","h","data","children","cacheKey","classList","get","forEach","value","push","set","mergeData","staticClass","class","_vm","this","_h","$createElement","_c","_self","staticStyle","_v","_s","$t","VBtn","attrs","VList","VListItem","VRow","VCol","VIcon","subscriptionDetails","latestInvoice","number","Date","created","toLocaleDateString","LocalStorage","getLocale","formatPrice","formatAmount","total","VBadge","status","invoice_pdf","staticRenderFns","LatestInvoice","amount","toFixed","parseFloat","__decorate","Getter","Component","computed","component","breakpointProps","Number","offsetProps","orderProps","col","offset","order","cols","alignSelf","parent","hasColClasses","some","startsWith"],"mappings":"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","file":"assets/js/chunk-232b2e74.b1a26853.js","sourcesContent":["import './VGrid.sass'\n\nimport Vue, { 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 ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\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 `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"setting-title w-full d-flex justify-space-between align-center\",staticStyle:{\"height\":\"30px\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"subscription.latestInvoice\"))+\":\")]),_c(VBtn,{attrs:{\"text\":\"\",\"disabled\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"subscription.viewAll\")))])],1),_c(VList,[_c(VListItem,{staticClass:\"mb-4 grey lighten-5\"},[_c(VRow,{staticClass:\"align-center\"},[_c(VCol,{staticStyle:{\"min-width\":\"30%\"}},[_c(VIcon,{staticClass:\"mr-8\"},[_vm._v(\"mdi-receipt-text-check-outline\")]),_c('b',[_vm._v(_vm._s(_vm.$t(\"subscription.invoiceNr\"))+\":\")]),_vm._v(\" \"+_vm._s(_vm.subscriptionDetails.latestInvoice.number)+\" \")],1),_c(VCol,[_vm._v(\" \"+_vm._s(new Date( _vm.subscriptionDetails.latestInvoice.created * 1000 ).toLocaleDateString(_vm.LocalStorage.getLocale()))+\" \")]),_c(VCol,[_vm._v(\" \"+_vm._s(_vm.formatPrice(_vm.formatAmount(_vm.subscriptionDetails.latestInvoice.total)))+\" \")]),_c(VCol,[_c('b',[_vm._v(_vm._s(_vm.$t(\"subscription.status\"))+\":\")]),_c(VBadge,{staticClass:\"ml-2\",attrs:{\"content\":_vm.subscriptionDetails.latestInvoice.status === 'paid'\n ? _vm.$t('subscription.paid')\n : _vm.subscriptionDetails.latestInvoice.status,\"color\":\"success\"}})],1),_c(VCol,[_c('div',{staticClass:\"text-right\"},[_c(VBtn,{attrs:{\"link\":\"\",\"href\":_vm.subscriptionDetails.latestInvoice.invoice_pdf,\"target\":\"_blank\"}},[_c(VIcon,[_vm._v(\"mdi-download\")]),_vm._v(_vm._s(_vm.$t(\"subscription.downloadInvoice\")))],1)],1)])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Subscription } from \"@/core/models\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\n\r\n@Component({\r\n computed: {\r\n LocalStorage() {\r\n return LocalStorage;\r\n },\r\n },\r\n})\r\nexport default class LatestInvoice extends Vue {\r\n @Getter(\"profile/subscriptionDetails\") subscriptionDetails!: Subscription;\r\n\r\n // TODO: Map all subscriptionDetails.latestInvoice.status options to i18n\r\n\r\n formatPrice(amount: number) {\r\n return `€${amount.toFixed(2)}`;\r\n }\r\n\r\n formatAmount(amount: number) {\r\n // Use on all calculations with currency amounts per value to prevent 3rd decimal (.xx5) rounding issues of percent/tax calculations\r\n return parseFloat((amount / 100).toFixed(2));\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestInvoice.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestInvoice.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LatestInvoice.vue?vue&type=template&id=573aae38&scoped=true&\"\nimport script from \"./LatestInvoice.vue?vue&type=script&lang=ts&\"\nexport * from \"./LatestInvoice.vue?vue&type=script&lang=ts&\"\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 \"573aae38\",\n null\n \n)\n\nexport default component.exports","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"],"sourceRoot":""}