\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n\r\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/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; 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/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=a5075438&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.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","import Vue from 'vue';\r\n\r\nVue.directive('xer-focus', {\r\n inserted(el) {\r\n el.focus();\r\n },\r\n update(el) {\r\n el.focus();\r\n }\r\n});\r\n","import Axios from 'axios';\r\n\r\n// TODO: Extend API to support loading of multiple groepnamen at once\r\n\r\nfunction getCodeType(groepnaam) {\r\n return Axios.get(`${process.env.VUE_APP_API_ENDPOINT}/api/v1/codetype/${groepnaam}`).then(\r\n ({ data }) => data\r\n );\r\n}\r\n\r\nexport default {\r\n getCodeType\r\n};\r\n","import codeTypeApi from '@/api/code-type.api';\r\nimport { defineStore } from 'pinia';\r\n\r\nexport const useCodeTypeStore = defineStore('codeType', {\r\n state: () => ({\r\n data: []\r\n }),\r\n getters: {\r\n codeType: (state) => (groepnaam, code) =>\r\n state.data[groepnaam] ? state.data[groepnaam][code] : undefined\r\n },\r\n actions: {\r\n async preLoadGroepnamen(groepnamen) {\r\n return groepnamen.forEach(async (groepnaam) => {\r\n if (!this.data[groepnaam]) {\r\n await this.loadGroepnaam(groepnaam);\r\n }\r\n });\r\n },\r\n async loadGroepnaam(groepnaam) {\r\n if (this.data[groepnaam]) {\r\n return;\r\n }\r\n\r\n return codeTypeApi.getCodeType(groepnaam).then((data) => {\r\n this.addCodeType(groepnaam, data);\r\n });\r\n },\r\n async getCodeTypeKorteText(groepnaam, code) {\r\n let codeType = this.codeType(groepnaam, code);\r\n if (!codeType) {\r\n await this.loadGroepnaam(groepnaam);\r\n codeType = this.codeType(groepnaam, code);\r\n }\r\n\r\n if (!codeType) {\r\n return `${groepnaam} not found`;\r\n }\r\n return codeType.korteTekst;\r\n },\r\n addCodeType(groepnaam, codeTypes) {\r\n this.data = {\r\n ...this.data,\r\n ...{\r\n [groepnaam]: codeTypes\r\n .map((codeType) => ({ [codeType.code]: codeType }))\r\n .reduce((prev, current) => ({ ...prev, ...current }), {})\r\n }\r\n };\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { useCodeTypeStore } from '@/stores/code-type/code-type';\r\n\r\nVue.directive('xer-code-type', {\r\n bind(el, binding) {\r\n const {\r\n value: { groepnaam, code }\r\n } = binding;\r\n const codeTypeStore = useCodeTypeStore();\r\n codeTypeStore\r\n .getCodeTypeKorteText(groepnaam, code)\r\n .then((korteTekst) => (el.innerHTML = korteTekst));\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nimport VueCircleSlider from 'vue-circle-slider';\r\nvar VueScrollTo = require('vue-scrollto');\r\n\r\nVue.use(VueCircleSlider);\r\nVue.use(VueScrollTo, {\r\n container: '#app',\r\n easing: 'ease',\r\n offset: 0,\r\n force: true,\r\n cancelable: false,\r\n onStart: false,\r\n onDone: false,\r\n onCancel: false,\r\n x: false,\r\n y: true\r\n});\r\n\r\n// used to Support contentComponent.nextDisabled reading on Stap.vue\r\nimport { DynamicReactiveRefs } from 'vue-reactive-refs';\r\nVue.use(DynamicReactiveRefs);\r\n\r\nimport device from 'vue-device-detector';\r\nVue.use(device);\r\n\r\nimport AsyncComputed from 'vue-async-computed';\r\nVue.use(AsyncComputed);\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport VueAxios from 'vue-axios';\r\nimport router from '@/router/index';\r\nimport applicationInsights from '@/application-insights';\r\nimport { useRootStore } from '@/stores/index';\r\n\r\nconst errorHandler = (error) => {\r\n if (axios.isCancel(error)) {\r\n return Promise.reject(error);\r\n }\r\n\r\n const requestUrl = error?.response?.config?.url;\r\n const statusCode = error.response?.status;\r\n const {\r\n query: { aanvraagId }\r\n } = router.currentRoute;\r\n const ignoreGlobalErrorHandler =\r\n Object.prototype.hasOwnProperty.call(error.config, 'ignoreGlobalErrorHandler') &&\r\n error.config.ignoreGlobalErrorHandler === true;\r\n const traceProperties = {\r\n aanvraagId,\r\n ignoreGlobalErrorHandler,\r\n requestUrl\r\n };\r\n\r\n const rootStore = useRootStore();\r\n\r\n if (\r\n !ignoreGlobalErrorHandler &&\r\n (statusCode === 401 || statusCode === 403 || statusCode === 404)\r\n ) {\r\n let message;\r\n const { actionOnError, loginType } = error?.response?.data;\r\n switch (statusCode) {\r\n case 401:\r\n if (actionOnError == 'RedirectToLogin') {\r\n message = 'user not logged in, redirecting to login page';\r\n rootStore.setErrorLoggedOut({ autoStart: loginType });\r\n break;\r\n }\r\n\r\n message = `401 case to Unauthorized (${error})`;\r\n rootStore.setErrorUnauthorised();\r\n break;\r\n case 403:\r\n message = `403 case to Forbidden (${error})`;\r\n rootStore.setErrorUnauthorised();\r\n break;\r\n case 404:\r\n message = `404 case to Not Found (${error})`;\r\n rootStore.setErrorNotFound();\r\n break;\r\n default:\r\n throw new Error(`Unhandled Status code in axios error handling: ${statusCode}.`);\r\n }\r\n\r\n applicationInsights.trackTrace(message, traceProperties);\r\n return Promise.reject(error);\r\n }\r\n\r\n if (ignoreGlobalErrorHandler || (error.response && error.response.status < 500)) {\r\n return Promise.reject(error);\r\n }\r\n\r\n applicationInsights.trackTrace(`default case to Oeps (${error})`, traceProperties);\r\n rootStore.setErrorInternalServer();\r\n return Promise.reject(error);\r\n};\r\n\r\naxios.defaults.withCredentials = true;\r\naxios.defaults.headers.get.Accept = 'application/json';\r\n\r\naxios.interceptors.response.use(\r\n (response) => response,\r\n (error) => errorHandler(error)\r\n);\r\n\r\nVue.use(VueAxios, axios);\r\n","/**\r\n * @param {import(\"vue-router\").Route} route\r\n */\r\nexport default function (route) {\r\n let documentTitle;\r\n switch (route.name) {\r\n case 'StartAanbod':\r\n documentTitle = route.params.aanbod;\r\n break;\r\n case 'Page':\r\n documentTitle = `${route.params.subflow} - ${route.params.page}`;\r\n break;\r\n default:\r\n documentTitle = route.meta?.title;\r\n break;\r\n }\r\n\r\n return `Xerius - ${documentTitle}`;\r\n}\r\n","import getRouteWindowTitle from './get-route-window-title';\r\n\r\n/**\r\n * @param {import(\"vue-router\").Route} route\r\n * @returns {string} windowTitle\r\n */\r\nexport default function (route) {\r\n return (document.title = getRouteWindowTitle(route));\r\n}\r\n","import { setupCookiebot } from '@xerius/codey-cookiebot-vue2';\r\nimport { useGtm } from '@gtm-support/vue2-gtm';\r\nimport appInsights from '@/application-insights';\r\nimport getRouteWindowTitle from './router/get-route-window-title';\r\n\r\n/**\r\n *\r\n * @param {string} lang\r\n * @param {import('node_modules/vue-router/types/index').Route} toRoute\r\n */\r\n\r\nfunction initialize(lang, toRoute) {\r\n if (!window.Cookiebot) {\r\n setupCookiebot({\r\n cbid: '33655448-1393-4b43-8126-e8b9cd543ac6', // Xerius domain group id\r\n language: lang,\r\n onMarketingAccept() {\r\n useGtm()?.enable();\r\n },\r\n onStatisticsAccept() {\r\n const ai = appInsights.getInstance();\r\n ai?.loadAppInsights();\r\n appInsights.trackRoutePageView(toRoute, getRouteWindowTitle(toRoute));\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default {\r\n initialize\r\n};\r\n","import Vue from 'vue';\r\nimport VueGtm from '@gtm-support/vue2-gtm';\r\nimport getRouteWindowTitle from './router/get-route-window-title';\r\n\r\nexport function initGtm(googleTGMContainer) {\r\n Vue.use(VueGtm, {\r\n id: googleTGMContainer\r\n });\r\n}\r\n\r\n// If this is still needed will depends on how data is received by gtm\r\n/**\r\n *\r\n * @param {import('node_modules/vue-router/types/index').Route} to\r\n */\r\nexport function pageTrackerTemplate(to) {\r\n return {\r\n page_title: getRouteWindowTitle(to),\r\n page_path: `${process.env.VUE_APP_PUBLIC_PATH.substring(\r\n 0,\r\n process.env.VUE_APP_PUBLIC_PATH.length - 1\r\n )}${to.path}`,\r\n page_location: window.location.href\r\n };\r\n}\r\n","import updateWindowTitle from './update-window-title';\r\nimport cookiebot from '@/cookiebot';\r\nimport appInsights from '@/application-insights';\r\nimport { useNotificationsStore } from '@/stores/notification/notification';\r\nimport { useRootStore } from '@/stores/index';\r\nimport { useCodeTypeStore } from '@/stores/code-type/code-type';\r\nimport { useLeadAanvraagStore } from '@/stores/lead-aanvraag/lead-aanvraag';\r\nimport { initGtm } from '@/vue-gtm';\r\n\r\nexport default function (to, pinia) {\r\n const lang = to.meta?.lang ?? to.params?.lang;\r\n const aanbod = to.params?.aanbod;\r\n const aanvraagId = to.query?.aanvraagId;\r\n const notificationStore = useNotificationsStore(pinia);\r\n const rootStore = useRootStore(pinia);\r\n const codeTypeStore = useCodeTypeStore(pinia);\r\n const leadAanvraagStore = useLeadAanvraagStore(pinia);\r\n\r\n const configPromise = !rootStore.config.loaded\r\n ? rootStore.loadConfig().then(() => {\r\n appInsights.init(rootStore.config.instrumentationKey);\r\n\r\n if (rootStore.config.googleTagManagerContainer) {\r\n initGtm(rootStore.config.googleTagManagerContainer);\r\n }\r\n\r\n return Promise.resolve();\r\n })\r\n : Promise.resolve();\r\n\r\n configPromise\r\n .then(() => rootStore.handleRouteChangeLangChange(lang))\r\n .then(() => {\r\n if (rootStore.config.useCookiebot === 'true') {\r\n cookiebot.initialize(lang, to);\r\n }\r\n });\r\n\r\n if (rootStore.error) {\r\n rootStore.error = undefined;\r\n }\r\n\r\n if (to.meta.preLoadCodeTypeGroepnamen) {\r\n codeTypeStore.preLoadCodeTypeGroepnamen(to.meta.preLoadCodeTypeGroepnamen);\r\n }\r\n\r\n if (aanbod && aanvraagId) {\r\n leadAanvraagStore.loadFromRouteParams({\r\n lang,\r\n aanbod,\r\n aanvraagId,\r\n updatePrijzen: to.meta?.updatePrijzen\r\n });\r\n }\r\n\r\n notificationStore.forceClose();\r\n\r\n const windowTitle = updateWindowTitle(to);\r\n if (rootStore.config.loaded) {\r\n appInsights.trackRoutePageView(to, windowTitle);\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport App from './App.vue';\r\nimport router from './router';\r\n\r\nVue.config.productionTip = false;\r\n\r\nimport '@/directives/index';\r\nimport './vendor';\r\nimport '@/init-axios';\r\n\r\nimport '@/styles.scss';\r\nimport '@/codey-prime/primevue.scss';\r\n\r\nimport { XerIcon } from '@xerius/codey-components-vue2';\r\nimport xerIconsPlugin from '@xerius/codey-icons-vue2';\r\n\r\n// import VueCompositionAPI from '@vue/composition-api';\r\n// import { VueQueryPlugin } from 'vue-query';\r\nimport { createPinia, PiniaVuePlugin } from 'pinia';\r\nimport registerRouteChanged from '@/router/register-route-changed';\r\nimport { useRootStore } from '@/stores/index';\r\nimport { VueQueryPlugin } from '@tanstack/vue-query';\r\nimport { useLeadAanvraagStore } from '@/stores/lead-aanvraag/lead-aanvraag';\r\nimport { useNotificationsStore } from '@/stores/notification/notification';\r\nimport { useStapConfigStore } from '@/stores/stap-config/stap-config';\r\n\r\nimport PrimeVue from 'primevue/config';\r\nVue.use(PrimeVue);\r\n\r\nVue.component(XerIcon.name, XerIcon);\r\nVue.use(xerIconsPlugin);\r\n// Vue.use(VueCompositionAPI);\r\nVue.use(VueQueryPlugin);\r\nVue.use(PiniaVuePlugin);\r\n\r\nconst pinia = createPinia();\r\n//TODO is this stil needed?\r\n// pinia.use(({ store }) => {\r\n// store.router = markRaw(router);\r\n// });\r\nrouter.beforeEach(async (to, from, next) => {\r\n registerRouteChanged(to, pinia);\r\n next();\r\n});\r\n\r\nconst app = new Vue({\r\n router,\r\n pinia,\r\n mounted() {\r\n const rootStore = useRootStore(pinia);\r\n rootStore.setIsMobile(this.$device.mobile);\r\n },\r\n render: (h) => h(App)\r\n}).$mount('#app');\r\n\r\nif (window.Cypress) {\r\n // eslint-disable-next-line no-console\r\n console.info('Vue App exposesed on window.app for testing puroses');\r\n window.app = app;\r\n const leadAanvraagStore = useLeadAanvraagStore();\r\n const notificationStore = useNotificationsStore();\r\n const stapConfigStore = useStapConfigStore();\r\n window.stores = { leadAanvraagStore, notificationStore, stapConfigStore };\r\n window.router = router;\r\n}\r\n","import camelCase from 'lodash/camelCase';\r\n\r\n/**\r\n *\r\n * @param {String} dotString\r\n * @returns {String}\r\n */\r\nexport default function (dotString) {\r\n if (!dotString) {\r\n return dotString;\r\n }\r\n\r\n return dotString\r\n .split('.')\r\n .map((part) => {\r\n const breacketIndex = part.indexOf('[');\r\n if (breacketIndex === -1) {\r\n return camelCase(part);\r\n }\r\n\r\n return `${camelCase(part.substr(0, breacketIndex))}${part.substr(breacketIndex)}`;\r\n })\r\n .join('.');\r\n}\r\n","import SubflowStatusEnum from '@/stores/lead-aanvraag/SubflowStatus.enum.js';\r\nimport { useLeadAanvraagStore } from '@/stores/lead-aanvraag/lead-aanvraag';\r\n\r\nexport function updateCurrentSubflowState(status, isFlowOpener, currentSubflowNaam) {\r\n const leadAanvraagStore = useLeadAanvraagStore();\r\n\r\n var statusToUpdate;\r\n if (status !== null && status !== undefined) {\r\n statusToUpdate = status;\r\n } else if (isFlowOpener) {\r\n statusToUpdate = SubflowStatusEnum.Open;\r\n }\r\n\r\n if (statusToUpdate === null || statusToUpdate === undefined) return;\r\n const index = leadAanvraagStore.leadAanvraag.subflowState.findIndex(\r\n (subflow) => subflow.subflowNaam === currentSubflowNaam\r\n );\r\n\r\n if (index >= 0) {\r\n leadAanvraagStore.setValueOnLeadAanvraag({\r\n contentLocator: `subflowState.[${index}].subflowStatus`,\r\n value: statusToUpdate\r\n });\r\n }\r\n}\r\n","import { useNotificationsStore } from '@/stores/notification/notification';\r\n\r\nimport { useStapConfigStore } from '@/stores/stap-config/stap-config';\r\nimport leadAanvraagApi from '@/api/lead-aanvraag.api';\r\nimport { savingPromise } from '@/stores/lead-aanvraag/functions//sequential-save-stap';\r\nimport { updateCurrentSubflowState } from '@/stores/lead-aanvraag/functions/update-current-subflow-state';\r\nimport { useLeadAanvraagStore } from '@/stores/lead-aanvraag/lead-aanvraag';\r\nimport { useFlowUrls } from '@/use/use-flow-urls';\r\nimport { Base64 } from 'js-base64';\r\nimport router from '@/router';\r\nimport { computed } from 'vue';\r\nimport { useRouteExtensions } from '@/use/use-route-extensions';\r\nimport { useFlowNavigation } from '@/use/use-flow-navigation';\r\nimport { useQueryClient } from '@tanstack/vue-query';\r\nimport { useAanbodExtensions } from '@/use/aanbod-definitie/use-aanbod-extensions';\r\nimport { useAanbodDefinitieByVersionQueryInFunction } from '@/use/aanbod-definitie/use-aanbod-definitie-by-version-query';\r\n\r\nexport const useNext = () => {\r\n const flowNavigation = useFlowNavigation();\r\n const queryClient = useQueryClient();\r\n const { currentPageConfig, pageHasMultipleStappen } = useAanbodExtensions();\r\n\r\n async function next(noLoading, subflowState, subflowOverride, aanbodOverride) {\r\n const leadAanvraagStore = useLeadAanvraagStore();\r\n try {\r\n const notificationsStore = useNotificationsStore();\r\n const flowUrls = useFlowUrls();\r\n\r\n if (leadAanvraagStore.loading) return;\r\n\r\n if (!noLoading) {\r\n leadAanvraagStore.loadingFromNext = true;\r\n }\r\n const routeExtensions = useRouteExtensions();\r\n\r\n const leadAanvraag = computed(() => leadAanvraagStore.leadAanvraag);\r\n\r\n let aanbodDefinitie;\r\n\r\n aanbodDefinitie = await useAanbodDefinitieByVersionQueryInFunction(\r\n queryClient,\r\n leadAanvraag.value.aanbodVersieId,\r\n leadAanvraagStore.subflowVersieIds,\r\n routeExtensions.lang\r\n );\r\n\r\n await (savingPromise ?? Promise.resolve());\r\n const stapConfigStore = useStapConfigStore();\r\n\r\n let isFlowOpener = false;\r\n if (!pageHasMultipleStappen.value) {\r\n const stapContentComponent = currentPageConfig?.value?.stappen[0]?.contentComponent;\r\n isFlowOpener =\r\n stapContentComponent === 'FlowOpener' || stapContentComponent === 'IntroFlowOpener';\r\n }\r\n\r\n updateCurrentSubflowState(\r\n subflowState,\r\n isFlowOpener,\r\n subflowOverride ?? routeExtensions.subflowNaam.value\r\n );\r\n let putResult;\r\n try {\r\n putResult = await leadAanvraagApi.putLeadAanvraag(\r\n {\r\n aanbod: aanbodOverride ?? routeExtensions.aanbodNaam.value,\r\n subflow: subflowOverride ?? routeExtensions.subflowNaam.value,\r\n page: routeExtensions.pageNaam.value,\r\n lang: routeExtensions.lang.value\r\n },\r\n leadAanvraag.value\r\n );\r\n } catch (error) {\r\n if (error.response?.data?.errorMessages || error.response?.data?.notification) {\r\n leadAanvraagStore.updateStapErrors(error.response.data.errorMessages);\r\n leadAanvraagStore.setValueOnLeadAanvraag({\r\n contentLocator: `suppressedErrors`,\r\n value: error.response.data.suppressedErrors\r\n });\r\n } else {\r\n //reset stepErrorMessages\r\n leadAanvraagStore.updateStapErrors(undefined);\r\n }\r\n\r\n if (error.response.data.notification) {\r\n notificationsStore.openPopUp({\r\n ...error.response.data.notification,\r\n content: error.response.data.notification.beschrijving\r\n });\r\n }\r\n\r\n if (error.response?.data?.pageErrorMessages) {\r\n leadAanvraagStore.updatePageErrors(error.response?.data?.pageErrorMessages);\r\n } else {\r\n //reset PageErrorMessages\r\n leadAanvraagStore.updatePageErrors(undefined);\r\n }\r\n return;\r\n }\r\n\r\n if (putResult.headers['next-url']) {\r\n window.location = putResult.headers['next-url'];\r\n return putResult.data.leadAanvraag;\r\n }\r\n\r\n const isSingleFlowAanbod = () =>\r\n aanbodDefinitie.subflows && aanbodDefinitie.subflows.length == 1;\r\n let url = flowUrls.overzichtUrl.value;\r\n if (isSingleFlowAanbod()) {\r\n url = flowUrls.betaaloverzichtUrl.value;\r\n }\r\n\r\n if (putResult.headers['next-subflow']) {\r\n const decode = (headerName) => Base64.decode(putResult.headers[headerName]);\r\n\r\n url = `/${routeExtensions.lang.value}/${\r\n aanbodOverride ?? routeExtensions.aanbodNaam.value\r\n }/${decode('next-subflow')}/${decode('next-page')}?aanvraagId=${\r\n routeExtensions.aanvraagId.value ?? leadAanvraagStore.leadAanvraag.aanvraagId\r\n }`;\r\n\r\n var data = await leadAanvraagApi.getLeadAanvraag(\r\n {\r\n aanbod: aanbodOverride ?? routeExtensions.aanbodNaam.value,\r\n subflow: decode('next-subflow'),\r\n page: decode('next-page'),\r\n lang: routeExtensions.lang.value\r\n },\r\n { aanvraagId: leadAanvraagStore.leadAanvraag.aanvraagId }\r\n );\r\n //reset errormessages\r\n leadAanvraagStore.resetAllErrorMessages();\r\n leadAanvraagStore.updateLeadAanvraag(data.leadAanvraag);\r\n\r\n //TO-IMPLEMENT this store should not exist, this is a part of aanbodDefinitie so should be updated by aanbodDefinitie query\r\n //Currently not reworked because of pre data hooks in interceptors, see adl for more information\r\n stapConfigStore.setConfigs(data.page.stappen, data.page.naam);\r\n } else {\r\n leadAanvraagStore.updateLeadAanvraag(putResult.data.leadAanvraag);\r\n // Support to finalize aanbod at any point in the flow\r\n\r\n const pageConfig = currentPageConfig.value;\r\n if (isSingleFlowAanbod() && pageConfig.metaData['FinalizeOnNext'] === 'true') {\r\n await flowNavigation.finalize({});\r\n return;\r\n }\r\n }\r\n await router.push(url);\r\n\r\n return putResult.data.leadAanvraag;\r\n } finally {\r\n leadAanvraagStore.loadingFromNext = false;\r\n }\r\n }\r\n\r\n return {\r\n next\r\n };\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.value)?_c('div',{staticClass:\"sync-point\",attrs:{\"data-automation-id\":\"xer-sync-point\"}},[_vm._v(_vm._s(_vm.value))]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","