{"version":3,"sources":["webpack:///./src/mixins/formatDateMixin.js","webpack:///./src/components/invoices/invoice-file-preview.vue?a3be","webpack:///src/components/invoices/invoice-file-preview.vue","webpack:///./src/components/invoices/invoice-file-preview.vue?5e78","webpack:///./src/components/invoices/invoice-file-preview.vue","webpack:///./src/router/views/finance.vue?348c","webpack:///./src/components/invoices/invoices-list.vue?8451","webpack:///src/components/invoices/invoices-list.vue","webpack:///./src/components/invoices/invoices-list.vue?5d2b","webpack:///../../../src/components/VPagination/VPagination.ts","webpack:///./src/components/invoices/invoices-list.vue","webpack:///src/router/views/finance.vue","webpack:///./src/router/views/finance.vue?6030","webpack:///./src/router/views/finance.vue","webpack:///./src/components/general/file-preview-container.vue?2db5","webpack:///./src/components/general/file-preview-container.vue?9e32","webpack:///src/components/general/file-preview-container.vue","webpack:///./src/components/general/file-preview-container.vue?a107","webpack:///./src/components/general/file-preview-container.vue"],"names":["methods","renderDate","dateTime","timeZone","format","date","dayjs","tz","this","$d","renderTime","time","renderTime24","render","_vm","_h","$createElement","_c","_self","attrs","on","$event","$emit","model","value","callback","$$v","show","expression","_v","_s","$t","invoice","staticClass","isDownloadingFile","fileData","fileDefinition","staticRenderFns","name","components","FilePreviewContainer","mixins","baseMixin","props","type","Object","required","Boolean","data","computed","watch","n","o","downloadFile","downloadInvoiceFile","result","invoiceID","isSuccess","fileName","component","VBtn","VCard","VCardText","VCardTitle","VDialog","VIcon","downloadInvoice","showDownloadDialog","headers","invoices","pageSize","isLoadingInvoices","currentPage","scopedSlots","_u","key","fn","ref","item","invoiceNumber","invoiceDateUTC","locationTimeZone","datePaidUTC","renderIssuedTo","$n","exGSTAmount","taxAmount","_g","_b","viewInvoice","serverCurrentPage","pageCount","updatePage","formatDateMixin","invoicesTotal","currentUser","Math","floor","created","page","$route","query","pageInt","parseInt","mounted","async","getInvoices","groupInvoice","groupName","multipleLocations","clientName","locationName","invoiceId","$router","push","invoiceItem","$vuetify","goTo","onVisible","directives","Resize","circle","disabled","length","default","validator","val","nextIcon","prevIcon","totalVisible","Number","pageAriaLabel","currentPageAriaLabel","previousAriaLabel","nextAriaLabel","wrapperAriaLabel","maxButtons","selected","themeClasses","maxLength","range","even","left","right","firstItem","lastItem","start","end","secondItem","beforeLastItem","setTimeout","width","$el","parentElement","window","e","from","i","h","class","label","click","color","isCurrentPage","ariaLabel","setBackgroundColor","lang","t","items","map","index","isNaN","genItem","modifiers","quiet","onResize","classes","children","genIcon","rtl","genItems","role","genList","VDataTable","VPagination","VTooltip","title","meta","rerender","_e","staticStyle","fileType","emptyStateTitle","emptyStateDescription","EmptyStateBlock","String","loading","includes","$nextTick","VImg","VSkeletonLoader"],"mappings":"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","file":"js/chunk-102d8a90.d9b409f2.js","sourcesContent":["import dayjs from '@/services/date'\nexport default {\n methods: {\n renderDate(dateTime, timeZone, format = null) {\n let date = dayjs(dateTime).tz(timeZone)\n date = format == null ? date : date.format(format)\n return this.$d(date)\n },\n renderTime(dateTime) {\n const time = dayjs(dateTime)\n return this.$d(time, 'time')\n },\n renderTime24(dateTime) {\n const time = dayjs(dateTime)\n return this.$d(time, 'time24')\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('v-dialog',{attrs:{\"fullscreen\":\"\",\"hide-overlay\":\"\",\"persistent\":\"\",\"no-click-animation\":\"\",\"transition\":\"dialog-bottom-transition\"},on:{\"input\":function($event){return _vm.$emit('update:show')}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-card-title',[_vm._v(_vm._s(((_vm.$t('finance.invoiceText')) + \" #\" + (_vm.invoice.invoiceNumber)))+\" \"),_c('v-btn',{staticClass:\"ml-auto\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('update:show', false)}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('FilePreviewContainer',{staticClass:\"mt-4\",attrs:{\"loading\":_vm.isDownloadingFile,\"file-data\":_vm.fileData,\"file-definition\":_vm.fileDefinition,\"empty-state-title\":_vm.$t('finance.invoiceFileNotAvailableText')}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { mapActions, mapGetters } from 'vuex'\nimport baseMixin from '@/mixins/baseMixin'\nimport FilePreviewContainer from '../general/file-preview-container.vue'\n\nexport default {\n name: 'InvoiceFilePreview',\n components: {\n FilePreviewContainer,\n },\n mixins: [baseMixin],\n props: {\n invoice: {\n type: Object,\n required: true,\n },\n show: {\n type: Boolean,\n required: true,\n },\n },\n data: () => {\n return {\n fileData: '',\n fileDefinition: {},\n }\n },\n computed: {\n ...mapGetters({\n isDownloadingFile: 'invoices/isDownloadingFile',\n }),\n },\n watch: {\n show(n, o) {\n if (n) {\n this.downloadFile()\n } else {\n this.fileData = ''\n this.fileDefinition = {}\n }\n },\n },\n methods: {\n ...mapActions({\n downloadInvoiceFile: 'invoices/downloadInvoiceFile',\n }),\n async downloadFile() {\n const result = await this.downloadInvoiceFile(this.invoice.invoiceID)\n\n if (!result.isSuccess) return\n\n this.fileData = result.data\n this.fileDefinition = {\n fileName: 'invoice.pdf',\n }\n },\n },\n}\n</script>\n\n<template>\n <section>\n <v-dialog\n v-model=\"show\"\n fullscreen\n hide-overlay\n persistent\n no-click-animation\n transition=\"dialog-bottom-transition\"\n @input=\"$emit('update:show')\"\n >\n <v-card>\n <v-card-title\n >{{ `${$t('finance.invoiceText')} #${invoice.invoiceNumber}` }}\n <v-btn class=\"ml-auto\" icon @click=\"$emit('update:show', false)\">\n <v-icon>mdi-close</v-icon>\n </v-btn>\n </v-card-title>\n <v-card-text>\n <FilePreviewContainer\n :loading=\"isDownloadingFile\"\n :file-data=\"fileData\"\n :file-definition=\"fileDefinition\"\n :empty-state-title=\"$t('finance.invoiceFileNotAvailableText')\"\n class=\"mt-4\"\n />\n </v-card-text>\n </v-card>\n </v-dialog>\n </section>\n</template>\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!./invoice-file-preview.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!./invoice-file-preview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./invoice-file-preview.vue?vue&type=template&id=02eb1300&\"\nimport script from \"./invoice-file-preview.vue?vue&type=script&lang=js&\"\nexport * from \"./invoice-file-preview.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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VDialog,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',[_c('BasePageTitle',{attrs:{\"title\":_vm.$t('finance.financePageTitle')}}),_c('InvoicesList',{on:{\"downloadInvoice\":_vm.downloadInvoice}}),_c('InvoiceFilePreview',{attrs:{\"show\":_vm.showDownloadDialog,\"invoice\":_vm.invoice},on:{\"update:show\":function($event){_vm.showDownloadDialog=$event}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-data-table',{staticClass:\"elevation-1 mt-2\",attrs:{\"id\":\"invoicesTable\",\"headers\":_vm.headers,\"items\":_vm.invoices,\"items-per-page\":_vm.pageSize,\"loading\":_vm.isLoadingInvoices,\"mobile-breakpoint\":960,\"no-data-text\":_vm.$t('finance.noInvoicesText'),\"page\":_vm.currentPage,\"hide-default-footer\":\"\",\"loading-text\":_vm.$t('finance.invoicesLoadingText')},on:{\"update:page\":function($event){_vm.currentPage=$event}},scopedSlots:_vm._u([{key:\"item.paidStatus\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.datePaidUTC)?_c('span',{staticClass:\"paid-status-span green--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('finance.invoicePaidText'))+\" \")]):_c('span',{staticClass:\"paid-status-span red--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('finance.invoiceNotPaidText'))+\" \")])]}},{key:\"item.invoiceNumber\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{staticClass:\"font-monospace\"},[_vm._v(_vm._s(item.invoiceNumber))])]}},{key:\"item.invoiceDateUTC\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{staticClass:\"font-monospace\"},[_vm._v(_vm._s(_vm.renderDate(item.invoiceDateUTC, item.locationTimeZone)))])]}},{key:\"item.datePaidUTC\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{staticClass:\"font-monospace\"},[_vm._v(_vm._s(item.datePaidUTC ? _vm.renderDate(item.datePaidUTC, item.locationTimeZone) : ''))])]}},{key:\"item.issuedTo\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{staticClass:\"issued-to-span\"},[_vm._v(_vm._s(_vm.renderIssuedTo(item)))])]}},{key:\"item.amount\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',{staticClass:\"amount-span font-monospace\"},[_vm._v(\" \"+_vm._s(_vm.$n(item.exGSTAmount + item.taxAmount, 'currency'))+\" \")])]}},{key:\"item.action\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex justify-end\"},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"dark\":\"\",\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.downloadInvoice(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\" mdi-cloud-download \")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t('finance.invoiceDownloadButtonTip')))])]),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"dark\":\"\",\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.viewInvoice(item.invoiceNumber)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\" mdi-text-box-search-outline \")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t('finance.invoiceViewButtonTip')))])])],1)]}}],null,true)}),_c('v-pagination',{staticClass:\"my-4\",attrs:{\"value\":_vm.serverCurrentPage,\"length\":_vm.pageCount},on:{\"input\":_vm.updatePage}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { mapActions, mapGetters } from 'vuex'\nimport formatDateMixin from '@/mixins/formatDateMixin'\n\nexport default {\n name: 'InvoicesList',\n mixins: [formatDateMixin],\n data() {\n return {\n headers: [\n {\n text: this.$t('finance.invoicePaidStatusHeader'),\n sortable: false,\n value: 'paidStatus',\n },\n {\n text: this.$t('finance.invoiceNumberHeader'),\n sortable: false,\n value: 'invoiceNumber',\n align: 'right',\n },\n {\n text: this.$t('finance.invoiceDateHeader'),\n sortable: false,\n value: 'invoiceDateUTC',\n },\n {\n text: this.$t('finance.invoicePaidDateHeader'),\n sortable: false,\n value: 'datePaidUTC',\n },\n {\n text: this.$t('finance.invoiceIssuedToHeader'),\n sortable: false,\n value: 'issuedTo',\n },\n {\n text: this.$t('finance.invoiceAmountHeader'),\n align: 'end',\n sortable: false,\n value: 'amount',\n },\n {\n text: this.$t('finance.invoiceActionHeader'),\n value: 'action',\n sortable: false,\n align: 'end',\n },\n ],\n pageSize: 50,\n currentPage: 1,\n }\n },\n computed: {\n ...mapGetters({\n isLoadingInvoices: 'invoices/isLoading',\n invoices: 'invoices/invoices',\n invoicesTotal: 'invoices/invoicesTotal',\n currentUser: 'auth/currentUser',\n serverCurrentPage: 'invoices/serverCurrentPage',\n }),\n pageCount: function() {\n if (this.invoicesTotal <= 0) {\n return 0\n }\n return Math.floor(this.invoicesTotal / this.pageSize) + 1\n },\n },\n created: function() {\n let page = 1\n if (this.$route.query.page) {\n const pageInt = parseInt(this.$route.query.page)\n if (pageInt) {\n page = pageInt\n }\n }\n this.currentPage = page\n },\n mounted: async function() {\n await this.getInvoices({\n page: this.currentPage,\n pageSize: this.pageSize,\n })\n },\n methods: {\n ...mapActions({\n getInvoices: 'invoices/loadInvoices',\n }),\n renderIssuedTo(invoice) {\n if (invoice.groupInvoice) return invoice.groupName\n\n if (invoice.multipleLocations) return invoice.clientName\n\n return invoice.locationName\n },\n viewInvoice(invoiceId) {\n this.$router.push({ path: `/finance/invoices/${invoiceId}` })\n },\n downloadInvoice(invoiceItem) {\n this.$emit('downloadInvoice', {\n invoiceID: invoiceItem.invoiceID,\n invoiceNumber: invoiceItem.invoiceNumber,\n })\n },\n updatePage(page) {\n this.$vuetify.goTo('#invoicesTable')\n this.$router.push({ path: this.$route.path + `?page=${page}` })\n },\n },\n}\n</script>\n\n<template>\n <div>\n <v-data-table\n id=\"invoicesTable\"\n :headers=\"headers\"\n :items=\"invoices\"\n :items-per-page=\"pageSize\"\n :loading=\"isLoadingInvoices\"\n :mobile-breakpoint=\"960\"\n :no-data-text=\"$t('finance.noInvoicesText')\"\n :page.sync=\"currentPage\"\n hide-default-footer\n :loading-text=\"$t('finance.invoicesLoadingText')\"\n class=\"elevation-1 mt-2\"\n >\n <template v-slot:[`item.paidStatus`]=\"{ item }\">\n <span v-if=\"item.datePaidUTC\" class=\"paid-status-span green--text\">\n {{ $t('finance.invoicePaidText') }}\n </span>\n <span v-else class=\"paid-status-span red--text\">\n {{ $t('finance.invoiceNotPaidText') }}\n </span>\n </template>\n <template v-slot:[`item.invoiceNumber`]=\"{ item }\">\n <span class=\"font-monospace\">{{ item.invoiceNumber }}</span>\n </template>\n <template v-slot:[`item.invoiceDateUTC`]=\"{ item }\">\n <span class=\"font-monospace\">{{\n renderDate(item.invoiceDateUTC, item.locationTimeZone)\n }}</span>\n </template>\n <template v-slot:[`item.datePaidUTC`]=\"{ item }\">\n <span class=\"font-monospace\">{{\n item.datePaidUTC\n ? renderDate(item.datePaidUTC, item.locationTimeZone)\n : ''\n }}</span>\n </template>\n <template v-slot:[`item.issuedTo`]=\"{ item }\">\n <span class=\"issued-to-span\">{{ renderIssuedTo(item) }}</span>\n </template>\n <template v-slot:[`item.amount`]=\"{ item }\">\n <span class=\"amount-span font-monospace\">\n {{ $n(item.exGSTAmount + item.taxAmount, 'currency') }}\n </span>\n </template>\n <template v-slot:[`item.action`]=\"{ item }\">\n <div class=\"d-flex justify-end\">\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n color=\"primary\"\n dark\n small\n text\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"downloadInvoice(item)\"\n >\n <v-icon>\n mdi-cloud-download\n </v-icon>\n </v-btn>\n </template>\n <span>{{ $t('finance.invoiceDownloadButtonTip') }}</span>\n </v-tooltip>\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n color=\"primary\"\n dark\n small\n text\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"viewInvoice(item.invoiceNumber)\"\n >\n <v-icon>\n mdi-text-box-search-outline\n </v-icon>\n </v-btn>\n </template>\n <span>{{ $t('finance.invoiceViewButtonTip') }}</span>\n </v-tooltip>\n </div>\n </template>\n </v-data-table>\n <v-pagination\n :value=\"serverCurrentPage\"\n class=\"my-4\"\n :length=\"pageCount\"\n @input=\"updatePage\"\n ></v-pagination>\n </div>\n</template>\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!./invoices-list.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!./invoices-list.vue?vue&type=script&lang=js&\"","import './VPagination.sass'\n\nimport VIcon from '../VIcon'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Intersectable from '../../mixins/intersectable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, CreateElement, VNodeChildrenArrayContents } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Intersectable({ onVisible: ['init'] }),\n Themeable\n).extend({\n name: 'v-pagination',\n\n directives: { Resize },\n\n props: {\n circle: Boolean,\n disabled: Boolean,\n length: {\n type: Number,\n default: 0,\n validator: (val: number) => val % 1 === 0,\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n totalVisible: [Number, String],\n value: {\n type: Number,\n default: 0,\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n wrapperAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.wrapper',\n },\n },\n\n data () {\n return {\n maxButtons: 0,\n selected: null as number | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-pagination': true,\n 'v-pagination--circle': this.circle,\n 'v-pagination--disabled': this.disabled,\n ...this.themeClasses,\n }\n },\n\n items (): (string | number)[] {\n const totalVisible = parseInt(this.totalVisible, 10)\n\n if (totalVisible === 0) {\n return []\n }\n\n const maxLength = Math.min(\n Math.max(0, totalVisible) || this.length,\n Math.max(0, this.maxButtons) || this.length,\n this.length\n )\n\n if (this.length <= maxLength) {\n return this.range(1, this.length)\n }\n\n const even = maxLength % 2 === 0 ? 1 : 0\n const left = Math.floor(maxLength / 2)\n const right = this.length - left + 1 + even\n\n if (this.value > left && this.value < right) {\n const firstItem = 1\n const lastItem = this.length\n const start = this.value - left + 2\n const end = this.value + left - 2 - even\n const secondItem = start - 1 === firstItem + 1 ? 2 : '...'\n const beforeLastItem = end + 1 === lastItem - 1 ? end + 1 : '...'\n\n return [1, secondItem, ...this.range(start, end), beforeLastItem, this.length]\n } else if (this.value === left) {\n const end = this.value + left - 1 - even\n return [...this.range(1, end), '...', this.length]\n } else if (this.value === right) {\n const start = this.value - left + 1\n return [1, '...', ...this.range(start, this.length)]\n } else {\n return [\n ...this.range(1, left),\n '...',\n ...this.range(right, this.length),\n ]\n }\n },\n },\n\n watch: {\n value () {\n this.init()\n },\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init () {\n this.selected = null\n\n this.$nextTick(this.onResize)\n // TODO: Change this (f75dee3a, cbdf7caa)\n setTimeout(() => (this.selected = this.value), 100)\n },\n onResize () {\n const width = this.$el && this.$el.parentElement\n ? this.$el.parentElement.clientWidth\n : window.innerWidth\n\n this.maxButtons = Math.floor((width - 96) / 42)\n },\n next (e: Event) {\n e.preventDefault()\n this.$emit('input', this.value + 1)\n this.$emit('next')\n },\n previous (e: Event) {\n e.preventDefault()\n this.$emit('input', this.value - 1)\n this.$emit('previous')\n },\n range (from: number, to: number) {\n const range = []\n\n from = from > 0 ? from : 1\n\n for (let i = from; i <= to; i++) {\n range.push(i)\n }\n\n return range\n },\n genIcon (h: CreateElement, icon: string, disabled: boolean, fn: EventListener, label: String): VNode {\n return h('li', [\n h('button', {\n staticClass: 'v-pagination__navigation',\n class: {\n 'v-pagination__navigation--disabled': disabled,\n },\n attrs: {\n disabled,\n type: 'button',\n 'aria-label': label,\n },\n on: disabled ? {} : { click: fn },\n }, [h(VIcon, [icon])]),\n ])\n },\n genItem (h: CreateElement, i: string | number): VNode {\n const color: string | false = (i === this.value) && (this.color || 'primary')\n const isCurrentPage = i === this.value\n const ariaLabel = isCurrentPage ? this.currentPageAriaLabel : this.pageAriaLabel\n\n return h('button', this.setBackgroundColor(color, {\n staticClass: 'v-pagination__item',\n class: {\n 'v-pagination__item--active': i === this.value,\n },\n attrs: {\n type: 'button',\n 'aria-current': isCurrentPage,\n 'aria-label': this.$vuetify.lang.t(ariaLabel, i),\n },\n on: {\n click: () => this.$emit('input', i),\n },\n }), [i.toString()])\n },\n genItems (h: CreateElement): VNode[] {\n return this.items.map((i, index) => {\n return h('li', { key: index }, [\n isNaN(Number(i)) ? h('span', { class: 'v-pagination__more' }, [i.toString()]) : this.genItem(h, i),\n ])\n })\n },\n genList (h: CreateElement, children: VNodeChildrenArrayContents): VNode {\n return h('ul', {\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize,\n }],\n class: this.classes,\n }, children)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genIcon(h,\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon,\n this.value <= 1,\n this.previous,\n this.$vuetify.lang.t(this.previousAriaLabel)),\n this.genItems(h),\n this.genIcon(h,\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon,\n this.value >= this.length,\n this.next,\n this.$vuetify.lang.t(this.nextAriaLabel)),\n ]\n\n return h('nav', {\n attrs: {\n role: 'navigation',\n 'aria-label': this.$vuetify.lang.t(this.wrapperAriaLabel),\n },\n }, [this.genList(h, children)])\n },\n})\n","import { render, staticRenderFns } from \"./invoices-list.vue?vue&type=template&id=d8b40748&\"\nimport script from \"./invoices-list.vue?vue&type=script&lang=js&\"\nexport * from \"./invoices-list.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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VPagination } from 'vuetify/lib/components/VPagination';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VDataTable,VIcon,VPagination,VTooltip})\n","<script>\nimport Layout from '@layouts/main.vue'\nimport InvoicesList from '@components/invoices/invoices-list.vue'\nimport InvoiceFilePreview from '@components/invoices/invoice-file-preview.vue'\n\nexport default {\n name: 'FinanceView',\n metaInfo() {\n return {\n title: this.$route?.meta?.title,\n meta: [{ name: 'description', content: 'The Finance page.' }],\n }\n },\n components: { Layout, InvoicesList, InvoiceFilePreview },\n data() {\n return {\n showDownloadDialog: false,\n invoice: {},\n }\n },\n methods: {\n downloadInvoice(invoice) {\n this.showDownloadDialog = true\n this.invoice = invoice\n },\n },\n}\n</script>\n\n<template>\n <Layout>\n <BasePageTitle :title=\"$t('finance.financePageTitle')\" />\n <InvoicesList @downloadInvoice=\"downloadInvoice\" />\n <InvoiceFilePreview :show.sync=\"showDownloadDialog\" :invoice=\"invoice\" />\n </Layout>\n</template>\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!./finance.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!./finance.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./finance.vue?vue&type=template&id=28914ff6&\"\nimport script from \"./finance.vue?vue&type=script&lang=js&\"\nexport * from \"./finance.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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file-preview-container.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.rerender)?_c('section',{staticClass:\"w-100\",staticStyle:{\"height\":\"800px\"}},[(_vm.loading)?_c('v-skeleton-loader',{staticClass:\"file-preview-loader\",attrs:{\"type\":\"image\"}}):(!_vm.fileData)?_c('article',[_c('EmptyStateBlock',{attrs:{\"icon\":\"mdi-file\",\"title\":_vm.emptyStateTitle || _vm.$t('error.noFilesAvailableEmptyStateTitle'),\"description\":_vm.emptyStateDescription,\"border\":\"\"}})],1):_c('article',{staticClass:\"h-100 w-100\"},[(_vm.isAnImage)?_c('v-img',{staticClass:\"h-100\",attrs:{\"contain\":\"\",\"src\":_vm.fileData,\"max-width\":\"800px\"}}):_c('object',{staticClass:\"h-100 w-100\",attrs:{\"data\":_vm.fileData,\"type\":_vm.fileType}},[_c('embed',{attrs:{\"src\":_vm.fileData,\"type\":_vm.fileType}})])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <section v-if=\"!rerender\" style=\"height: 800px;\" class=\"w-100\">\n <v-skeleton-loader\n v-if=\"loading\"\n class=\"file-preview-loader\"\n type=\"image\"\n />\n <article v-else-if=\"!fileData\">\n <EmptyStateBlock\n icon=\"mdi-file\"\n :title=\"emptyStateTitle || $t('error.noFilesAvailableEmptyStateTitle')\"\n :description=\"emptyStateDescription\"\n border\n />\n </article>\n <article v-else class=\"h-100 w-100\">\n <v-img\n v-if=\"isAnImage\"\n contain\n :src=\"fileData\"\n class=\"h-100\"\n max-width=\"800px\"\n />\n <object v-else :data=\"fileData\" :type=\"fileType\" class=\"h-100 w-100\">\n <embed :src=\"fileData\" :type=\"fileType\" />\n </object>\n </article>\n </section>\n</template>\n\n<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport { getType } from 'mime'\nimport EmptyStateBlock from '@components/general/empty-state-block.vue'\n\nexport default {\n name: 'FilePreviewContainer',\n components: {\n EmptyStateBlock,\n },\n mixins: [baseMixin],\n props: {\n fileData: {\n type: String,\n required: true,\n },\n fileDefinition: {\n type: Object,\n required: true,\n },\n loading: {\n type: Boolean,\n },\n emptyStateTitle: {\n type: String,\n default: '',\n },\n emptyStateDescription: {\n type: String,\n default: '',\n },\n },\n data: () => {\n return {\n rerender: false,\n }\n },\n computed: {\n fileType() {\n try {\n return getType(this.fileDefinition?.fileName)\n } catch {\n return null\n }\n },\n isAnImage() {\n const type = this.fileType\n if (!type) return false\n return type.includes('image')\n },\n },\n watch: {\n fileData: {\n async handler() {\n this.rerender = true\n await this.$nextTick()\n this.rerender = false\n },\n },\n },\n}\n</script>\n\n<style lang=\"scss\">\n.file-preview-loader .v-skeleton-loader__image {\n height: 100%;\n}\n</style>\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!./file-preview-container.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!./file-preview-container.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./file-preview-container.vue?vue&type=template&id=6bee2843&\"\nimport script from \"./file-preview-container.vue?vue&type=script&lang=js&\"\nexport * from \"./file-preview-container.vue?vue&type=script&lang=js&\"\nimport style0 from \"./file-preview-container.vue?vue&type=style&index=0&lang=scss&\"\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';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VImg,VSkeletonLoader})\n"],"sourceRoot":""}