{"version":3,"sources":["webpack:///./src/views/Qbo.vue?b81f","webpack:///./src/components/QboConnection.vue?a7ef","webpack:///./src/components/QboConnectButton.vue?f2d5","webpack:///./src/components/QboConnectButton.vue","webpack:///./src/components/QboConnectButton.vue?9f04","webpack:///./src/components/QboConnectButton.vue?dd1d","webpack:///./src/components/QboConnection.vue","webpack:///./src/components/QboConnection.vue?2b89","webpack:///./src/components/QboConnection.vue?e340","webpack:///./src/components/QboSync.vue?59e4","webpack:///./src/components/QboSync.vue","webpack:///./src/components/QboSync.vue?6a95","webpack:///./src/components/QboSync.vue?6811","webpack:///./src/views/Qbo.vue","webpack:///./src/views/Qbo.vue?24e1","webpack:///./src/views/Qbo.vue?697a","webpack:///./src/components/CloseButton.vue?d90c","webpack:///./src/components/CloseButton.vue","webpack:///./src/components/CloseButton.vue?6241","webpack:///./src/components/CloseButton.vue?5645","webpack:///./src/components/ProgressSpinner.vue?0be7","webpack:///./src/components/ProgressSpinner.vue","webpack:///./src/components/ProgressSpinner.vue?16c0","webpack:///./src/components/ProgressSpinner.vue?1232","webpack:///./src/views/QboLinkAccount.vue?15a4","webpack:///./src/views/QboLinkAccount.vue?5046","webpack:///./src/views/QboLinkAccount.vue","webpack:///./src/views/QboLinkAccount.vue?6a78","webpack:///./src/views/QboLinkAccount.vue?5c5c"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","toolbar","scopedSlots","_u","key","fn","staticClass","on","goToQbo","proxy","staticRenderFns","qboConnection","loading","dataProviderSyncProgress","qboDisconnectConfirm","_v","_e","status","qboAccount","company_name","staticStyle","style","$images","qboConnectButton","qboConnect","Vue","extend","props","sender","type","String","default","width","Number","methods","provider","$store","getters","tenant","data_provider","qboConnectExecute","splash","message","commit","url","api","window","intuit","ipp","anywhere","setup","menuProxy","grantUrl","datasources","quickbooks","controller","onConnectToIntuitClicked","component","components","QboConnectButton","data","mounted","$route","query","popDisconnected","popConnectionError","computed","mapGetters","dispatch","title","icon","text","color","callback","result","qboDisconnect","admin","dialog_result","response","VBtn","VCol","brandLogoHorizontal","qboLogo","qboSync","ProgressSpinner","percent","QboConnection","QboSync","left","back","tooltip","right","process","open","isApp","VRow","hide","goToHome","path","user","$router","push","signoutConfirm","imgTop","imgTopWidth","_s","iconTop","progress","total","imgBottom","imgBottomWidth","iconBottom","class","bind","required","imgTopStyle","imgBottomStyle","VIcon","VImg","VProgressCircular","$event","preventDefault","linkAccounts","apply","arguments","model","value","userTmp","$$v","$set","expression","directives","name","rawName","showPassword","errors","collect","password","CloseButton","mixins","tenantNavMixin","hk","isIntuitAppstore","method","encryptForm","payload","encoder","TextEncoder","secretBuffer","encode","crypto","subtle","importKey","hash","hmacKey","credentials","JSON","stringify","sign","signatureBuffer","btoa","fromCharCode","Uint8Array","email","created_at","$validator","validate","valid","Date","now","encryptedForm","subscribeFromAppstore","routeLogin","memberships","length","VForm","VTextField"],"mappings":"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","file":"js/qbo.7ba4b097.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('page-template',{attrs:{\"toolbar\":_vm.toolbar},scopedSlots:_vm._u([{key:\"left-top\",fn:function(){return [_c('v-row',{staticClass:\"pa-3\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"end\"}},[_c('tri-panel-button',{attrs:{\"small\":\"\",\"icon\":\"mdi-open-in-new\",\"text\":\"Go To QuickBooks Online\",\"color\":\"green\"},on:{\"click\":_vm.goToQbo}})],1)]},proxy:true}])},[_c('qbo-sync',{staticClass:\"mt-3\"}),_c('qbo-connection',{staticClass:\"mt-4\"})],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('v-col',{staticClass:\"pa-0\",attrs:{\"align\":\"center\"}},[(_vm.qboConnection && _vm.qboConnection === true)?_c('v-btn',{attrs:{\"outlined\":\"\",\"rounded\":\"\",\"text\":\"\",\"color\":\"grey\",\"disabled\":_vm.loading || _vm.dataProviderSyncProgress !== null,\"loading\":_vm.loading},on:{\"click\":_vm.qboDisconnectConfirm}},[_vm._v(\" Disconnect \")]):(_vm.qboConnection !== null)?_c('div',[_c('qbo-connect-button',{attrs:{\"sender\":'app_settings',\"width\":\"240\"}})],1):_vm._e(),_c('person-show-item',{staticClass:\"mt-2\",attrs:{\"center\":\"\",\"display\":\"Connection Status:\",\"value\":_vm.status}}),_c('person-show-item',{attrs:{\"center\":\"\",\"display\":_vm.qboConnection ? 'Connected To:' : 'Last Connected:',\"value\":_vm.qboAccount && _vm.qboAccount.company_name}})],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('a',{staticStyle:{\"cursor\":\"pointer\"}},[(_vm.width)?_c('img',{style:((\"width:\" + (this.width) + \"px\")),attrs:{\"src\":_vm.$images.qboConnectButton},on:{\"click\":_vm.qboConnect}}):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport SplashScreen from '@/types/components/SplashScreen.interface'\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nexport default Vue.extend({\n props: {\n // The name of the app location that is hosting the button\n sender: {\n type: String,\n default: ''\n },\n // The width of the button\n width: {\n type: [Number, String],\n default: 200\n }\n },\n methods: {\n qboConnect(): void {\n // Fetch the tenant's data provider\n const provider = this.$store.getters.tenant.data_provider\n\n // We allow a connection if the data provider is NULL or already set to QBO\n if (!provider || provider === 'QBO') {\n this.qboConnectExecute()\n }\n },\n qboConnectExecute(): void {\n // Assemble a splash screen\n const splash: SplashScreen = { message: 'Connecting to QuickBooks Online...' }\n\n // Show the splash screen loader\n this.$store.commit('splashSet', splash)\n\n // Assemble grant url with tenant api endpoint\n const url = `${this.$store.getters.api}/qbo/oauth/connect/redirect?sender=${this.sender}`\n\n // Intuit Anywhere setup\n window.intuit.ipp.anywhere.setup({\n menuProxy: '',\n grantUrl: url,\n datasources: {\n quickbooks: true\n }\n })\n\n // Pop connect to intuit window\n window.intuit.ipp.anywhere.controller.onConnectToIntuitClicked()\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboConnectButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboConnectButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QboConnectButton.vue?vue&type=template&id=5717f14a&\"\nimport script from \"./QboConnectButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./QboConnectButton.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 null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport QboConnectButton from '@/components/QboConnectButton.vue'\nimport { mapGetters } from 'vuex'\nexport default Vue.extend({\n components: { QboConnectButton },\n data: () => ({\n loading: false\n }),\n mounted() {\n // Get the 'sender' flag from the url\n const sender = this.$route.query.sender\n\n // If the sender is 'disconnectFromAppstore', pop disconnect message\n if (sender === 'disconnectFromAppstore') this.popDisconnected()\n\n // If the sender is 'error', pop connection error message\n if (sender === 'error') this.popConnectionError()\n },\n computed: {\n ...mapGetters([\n 'qboAccount',\n 'qboConnection',\n 'dataProviderSyncProgress',\n 'tenant'\n ]),\n status(): string {\n if (this.dataProviderSyncProgress) return 'Syncing Data'\n if (this.qboConnection) return 'Connected'\n return 'Disconnected'\n }\n },\n methods: {\n popConnectionError(): void {\n this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n title: 'Error Connecting to QuickBooks.',\n icon: 'error',\n text: `There was a problem connecting \"${this.tenant.company_name}\" to QuickBooks Online. You may be trying to connect to a company that is already connected. If you think you received this message in error, please refresh your browser and try to connect again`\n })\n },\n popDisconnected(): void {\n this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n title: 'Disconnected from QuickBooks Online',\n icon: 'mdi-check',\n text: `You have been disconnected from QuickBooks Online. Your subscription with MessageDesk is still active. If you would like to make changes to your subscription, please visit the subscription link located in the account menu.`\n })\n },\n qboDisconnectConfirm(): void {\n this.$store.dispatch('dialogOpen', {\n type: 'CONFIRM',\n title: 'Disconnect from QuickBooks Online?',\n text: `Are you sure you want to disconnect from QuickBooks Online?`,\n icon: 'mdi-alert-circle',\n color: 'yellow darken-2',\n callback: (result: boolean): void => this.qboDisconnect(result),\n admin: true\n })\n },\n async qboDisconnect(dialog_result: boolean): Promise {\n // If the dialog result is false, do nothing\n if (!dialog_result) return\n\n // Start the loading spinner\n this.loading = true\n\n // Send the request to the API\n const response = await this.$store.dispatch('qboDisconnect')\n\n // Stop the loading spinner\n this.loading = false\n\n // If the request failed, do nothing\n if (!response) return\n\n // Else, notify the user of success\n this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n title: 'Disconnected from QuickBooks Online',\n text: `You have been successfully disconnected from QuickBooks Online.`,\n icon: 'mdi-link-variant-off',\n color: 'red darken-1'\n })\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboConnection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboConnection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QboConnection.vue?vue&type=template&id=cceface0&\"\nimport script from \"./QboConnection.vue?vue&type=script&lang=ts&\"\nexport * from \"./QboConnection.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 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 { VCol } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{staticClass:\"pa-0\",attrs:{\"align\":\"center\"}},[_c('progress-spinner',{attrs:{\"bind\":\"dataProviderSyncProgress\",\"img-top\":_vm.$images.brandLogoHorizontal,\"img-bottom\":_vm.$images.qboLogo,\"color\":\"primary\"}}),(_vm.qboConnection)?_c('v-btn',{staticClass:\"mt-4\",attrs:{\"outlined\":\"\",\"rounded\":\"\",\"color\":\"primary\",\"disabled\":_vm.loading || _vm.dataProviderSyncProgress !== null,\"loading\":_vm.loading,\"width\":\"120\"},on:{\"click\":_vm.qboSync}},[_vm._v(\" Sync Now \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport ProgressSpinner from '@/components/ProgressSpinner.vue'\nexport default Vue.extend({\n components: { ProgressSpinner },\n data: () => ({\n loading: false\n }),\n computed: {\n ...mapGetters(['qboConnection', 'dataProviderSyncProgress'])\n },\n methods: {\n async qboSync(): Promise {\n // Start the loading spinner\n this.loading = true\n\n // Send the sync request to the API\n const response = await this.$store.dispatch('qboSync')\n\n // Stop the loading spinner\n this.loading = false\n\n // If the response is 409, we hit the 'BlockIfSyncingMiddleware'\n if (response === 409) {\n this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n title: 'Sync in progress',\n icon: 'mdi-alert-circle-outline',\n color: 'primary',\n text: 'A sync is already in progress. Data syncing can take a long time if you have a large data set. We appreciate your patience.'\n })\n } else {\n // Activate sync progress\n this.$store.commit('dataProviderSyncProgressSet', {\n message: 'Beginning Sync',\n percent: 0\n })\n }\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboSync.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboSync.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QboSync.vue?vue&type=template&id=2ac73f31&\"\nimport script from \"./QboSync.vue?vue&type=script&lang=ts&\"\nexport * from \"./QboSync.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 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 { VCol } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol})\n","\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport QboConnection from '@/components/QboConnection.vue'\nimport QboSync from '@/components/QboSync.vue'\nexport default Vue.extend({\n components: { QboConnection, QboSync },\n data() {\n return {\n toolbar: {\n title: 'QuickBooks Online',\n left: [\n {\n title: 'Back',\n icon: 'mdi-chevron-left',\n back: '/settings',\n tooltip: 'Back'\n }\n ],\n right: []\n }\n }\n },\n methods: {\n goToQbo(): void {\n // Grab our url from the .env\n const url = process.env.VUE_APP_QBO_APP_URL\n\n // Open up the url\n window.open(url, this.$store.getters.isApp ? '_system' : '_blank')\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Qbo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Qbo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Qbo.vue?vue&type=template&id=2f6ad598&\"\nimport script from \"./Qbo.vue?vue&type=script&lang=ts&\"\nexport * from \"./Qbo.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 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 { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hide)?_c('v-btn',{staticClass:\"subtitle black--text\",staticStyle:{\"position\":\"fixed\",\"left\":\"10px\",\"top\":\"10px\",\"z-index\":\"1\"},attrs:{\"icon\":\"\",\"large\":\"\"},on:{\"click\":_vm.goToHome}},[_vm._v(\" Back \")]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { mapGetters } from 'vuex'\nimport Vue from 'vue'\nimport { signoutConfirm } from '@/utility/helpers'\nexport default Vue.extend({\n computed: {\n ...mapGetters(['user']),\n hide(): boolean {\n // Array of routes we do not want to display on\n const hide = {\n '/': true,\n '/register/user': true,\n '/signin': true\n }\n\n // Hide if we are on one of those routes\n return hide[this.$route.path] || false\n }\n },\n methods: {\n goToHome(): void {\n // If an authenticated user does NOT exist, route to home\n if (!this.user) return this.$router.push('/')\n\n // Else, we need to signout the user, so pop signout confirm\n signoutConfirm()\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CloseButton.vue?vue&type=template&id=7efbfe72&\"\nimport script from \"./CloseButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./CloseButton.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 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';\ninstallComponents(component, {VBtn})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{staticClass:\"pa-0\",attrs:{\"align\":\"center\"}},[(_vm.imgTop)?_c('v-img',{style:(_vm.imgTopStyle),attrs:{\"src\":_vm.imgTop,\"width\":_vm.imgTopWidth}}):(_vm.iconTop)?_c('div',[_c('v-icon',{attrs:{\"x-large\":\"\",\"color\":_vm.color}},[_vm._v(\" \"+_vm._s(_vm.iconTop)+\" \")])],1):_vm._e(),(!_vm.progress)?_c('v-icon',{attrs:{\"color\":_vm.color,\"size\":50}},[_vm._v(\" mdi-sync \")]):_c('v-progress-circular',{attrs:{\"indeterminate\":!_vm.progress || _vm.progress.percent === 0 || _vm.progress.total === 999999,\"value\":_vm.progress && _vm.progress.percent,\"size\":50,\"width\":5,\"color\":_vm.color,\"rotate\":-90}},[(_vm.progress && _vm.progress.total == 999999)?_c('span',[_vm._v(\"IND\")]):(_vm.progress)?_c('span',[_vm._v(\" \"+_vm._s(_vm.progress.percent + '%')+\" \")]):_vm._e()]),(_vm.imgBottom)?_c('v-img',{style:(_vm.imgBottomStyle),attrs:{\"src\":_vm.imgBottom,\"width\":_vm.imgBottomWidth}}):(_vm.iconBottom)?_c('div',[_c('v-icon',{attrs:{\"x-large\":\"\",\"color\":_vm.color}},[_vm._v(\" \"+_vm._s(_vm.iconBottom)+\" \")])],1):_vm._e(),(_vm.progress && _vm.progress.message)?_c('div',{staticClass:\"mt-2\",class:(_vm.color + \"--text\")},[_vm._v(\" \"+_vm._s(_vm.progress.message)+\" \")]):_vm._e()],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\nimport Vue from 'vue'\nexport default Vue.extend ({\n props: {\n // The name of the vuex getter that holds progress data\n bind: {\n type: String,\n required: true\n },\n // The color of the circular spinner\n color: {\n type: String,\n default: 'primary'\n },\n // The icon displayed above the spinner\n iconTop: {\n type: String,\n default: null\n },\n // The icon displayed below the spinner\n iconBottom: {\n type: String,\n default: null\n },\n // The image displayed above the progress circular (overrides iconTop)\n imgTop: {\n type: String,\n default: null\n },\n // Style applied to the top image\n imgTopStyle: {\n type: String,\n default: null\n },\n // The width of the image displayed above the progress circular\n imgTopWidth: {\n type: String,\n default: '230px'\n },\n // The image displayed below the progress circular (overrides iconBottom)\n imgBottom: {\n type: String,\n default: null\n },\n // Style applied to the bottom image\n imgBottomStyle: {\n type: String,\n default: null\n },\n // The width of the image displayed below the progress circular\n imgBottomWidth: {\n type: String,\n default: '160px'\n }\n },\n computed: {\n progress(): object {\n return this.$store.getters[this.bind]\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressSpinner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressSpinner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProgressSpinner.vue?vue&type=template&id=061bbe43&\"\nimport script from \"./ProgressSpinner.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProgressSpinner.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 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 { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VCol,VIcon,VImg,VProgressCircular})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboLinkAccount.vue?vue&type=style&index=0&id=6452bdd5&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.userTmp)?_c('main-page-template',{attrs:{\"title\":\"Link your
Intuit Account\",\"img\":\"\"}},[_c('close-button'),_c('div',[_c('v-icon',{attrs:{\"large\":\"\"}},[_vm._v(\"mdi-sync-alert\")])],1),_c('img',{attrs:{\"src\":_vm.$store.getters.qboLogo,\"width\":\"200px\"}}),_c('p',{staticClass:\"mt-2 px-4\"},[_vm._v(\" Before we link your Intuit account, please enter your MessageDesk password to verify your identity. \")]),_c('v-form',{staticClass:\"px-4\",staticStyle:{\"max-width\":\"400px\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.linkAccounts.apply(null, arguments)}}},[_c('v-text-field',{staticClass:\"black-text\",attrs:{\"readonly\":\"\",\"label\":\"Email\",\"type\":\"email\",\"disabled\":true},model:{value:(_vm.userTmp.email),callback:function ($$v) {_vm.$set(_vm.userTmp, \"email\", $$v)},expression:\"userTmp.email\"}}),_c('v-text-field',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"required\":\"\",\"label\":\"Password\",\"name\":\"password\",\"type\":_vm.showPassword ? 'text' : 'password',\"error-messages\":_vm.errors.collect('password'),\"append-icon\":_vm.showPassword ? 'mdi-eye' : 'mdi-eye-off'},on:{\"click:append\":function($event){_vm.showPassword = !_vm.showPassword}},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-btn',{staticClass:\"mt-12\",attrs:{\"rounded\":\"\",\"outlined\":\"\",\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.loading,\"loading\":_vm.loading}},[_vm._v(\" Link Accounts \")])],1)],1):_vm._e()}\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\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport CloseButton from '@/components/CloseButton.vue'\nimport User from '@/types/User.interface'\nimport tenantNavMixin from '@/mixins/tenant-nav-mixin'\nimport Credentials from '@/types/Credentials'\nexport default Vue.extend({\n components: { CloseButton },\n mixins: [tenantNavMixin],\n data() {\n return {\n loading: false,\n password: '',\n showPassword: false,\n hk: process.env.VUE_APP_HASH_KEY,\n }\n },\n computed: {\n ...mapGetters(['userTmp'])\n },\n methods: {\n isIntuitAppstore(): boolean {\n // We know this registration is from intuit's appstore if the method is set\n return this.$route.query.method === 'subscribeFromAppstore'\n },\n async encryptForm(payload): Promise {\n const encoder = new TextEncoder()\n const secretBuffer = encoder.encode(this.hk)\n\n const hmacKey = await window.crypto.subtle.importKey(\n 'raw',\n secretBuffer,\n {name: 'HMAC', hash: 'SHA-256'},\n false,\n ['sign']\n )\n\n const credentials = encoder.encode(JSON.stringify(payload))\n\n const signatureBuffer = await window.crypto.subtle.sign(\n 'HMAC',\n hmacKey,\n credentials\n )\n\n return {\n hash: btoa(String.fromCharCode(...new Uint8Array(signatureBuffer))),\n email: payload.email,\n password: payload.password,\n created_at: payload.created_at\n }\n },\n async linkAccounts(): Promise {\n // validate the form\n const valid = await this.$validator.validate()\n\n // If the form is NOT valid, do nothing\n if (!valid) return\n\n // Else, assemble request payload\n const payload = {\n email: this.userTmp.email,\n password: this.password,\n created_at: Date.now() \n }\n\n // Start the loading spinner\n this.loading = true\n\n const encryptedForm = await this.encryptForm(payload)\n\n // Send the request\n const user = await this.$store.dispatch('linkAccounts', encryptedForm)\n\n // Stop the loading spinner\n this.loading = false\n\n // If the request failed, do nothing\n if (!user) return\n\n // If we landed here during the 'GET APP NOW' workflow, we have special handling\n if (this.isIntuitAppstore()) return this.subscribeFromAppstore(user)\n\n // Else, use standard login\n this.routeLogin(user)\n },\n subscribeFromAppstore(user: User): void {\n // Check the user for tenant memberships\n const memberships = user.memberships\n\n // If the user has at least one tenant, resume normal workflow\n if (memberships.length > 0) return this.routeLogin(user)\n\n // Else, nav to register/authenticated attaching 'subscribeFromAppstore' method\n this.$router.push('/register/authenticated?method=subscribeFromAppstore')\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboLinkAccount.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QboLinkAccount.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QboLinkAccount.vue?vue&type=template&id=6452bdd5&scoped=true&\"\nimport script from \"./QboLinkAccount.vue?vue&type=script&lang=ts&\"\nexport * from \"./QboLinkAccount.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./QboLinkAccount.vue?vue&type=style&index=0&id=6452bdd5&scoped=true&lang=css&\"\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 \"6452bdd5\",\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 { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VForm,VIcon,VTextField})\n"],"sourceRoot":""}