{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./shared/store/index.ts","webpack:///./shared/router/auth-guard.ts","webpack:///./shared/global/pages/PageNotFound.vue?166a","webpack:///./shared/global/pages/PageNotFound.vue","webpack:///./shared/global/pages/PageNotFound.vue?b1cc","webpack:///./shared/global/pages/PageNotFound.vue?caaf","webpack:///./shared/router/index.ts","webpack:///./shared/global/layouts/App.vue?9e61","webpack:///./shared/global/components/BrandedFooter.vue?daa3","webpack:///./shared/global/components/BrandedFooter.vue","webpack:///./shared/global/components/BrandedFooter.vue?3fa1","webpack:///./shared/global/components/BrandedFooter.vue?8f26","webpack:///./shared/global/components/MainMenu.vue?f10b","webpack:///./shared/global/components/MainMenu.vue?4ed4","webpack:///./shared/global/components/MainMenu.vue?bdb5","webpack:///./shared/global/components/MainMenu.vue?0337","webpack:///./shared/global/components/NamePlate.vue?689b","webpack:///./shared/global/components/NamePlate.vue?698f","webpack:///./shared/global/components/NamePlate.vue?8a41","webpack:///./shared/global/components/NamePlate.vue?b423","webpack:///./shared/global/components/SnackbarStore.vue?c860","webpack:///./shared/global/components/SnackbarStore.vue","webpack:///./shared/global/components/SnackbarStore.vue?1247","webpack:///./shared/global/components/SnackbarStore.vue?32ed","webpack:///./shared/global/layouts/App.vue","webpack:///./shared/global/layouts/App.vue?e831","webpack:///./shared/global/layouts/App.vue?15ce","webpack:///./shared/bootstrap/vuetify.ts","webpack:///./shared/bootstrap/vee-validate.ts","webpack:///./shared/i18n/index.ts","webpack:///./shared/store/auth/actions.ts","webpack:///./shared/store/auth/state.ts","webpack:///./shared/store/auth/mutations.ts","webpack:///./shared/store/auth/getters.ts","webpack:///./shared/store/auth/index.ts","webpack:///./shared/store/global/getters.ts","webpack:///./shared/store/global/state.ts","webpack:///./shared/store/global/mutations.ts","webpack:///./shared/store/global/index.ts","webpack:///./shared/store/snackbar/getters.ts","webpack:///./shared/store/snackbar/state.ts","webpack:///./shared/store/snackbar/mutations.ts","webpack:///./shared/bootstrap/types.ts","webpack:///./shared/store/snackbar/index.ts","webpack:///./shared/bootstrap/vuePlugins.ts","webpack:///./shared/bootstrap/bootstrap.ts","webpack:///./modules/base/index.ts","webpack:///./src/b2bplaza-public/portal-manifest.ts","webpack:///./modules/relationprofile/store/state.ts","webpack:///./modules/relationprofile/store/mutations.ts","webpack:///./modules/relationprofile/store/getters.ts","webpack:///./modules/relationprofile/store/actions.ts","webpack:///./modules/relationprofile/store/index.ts","webpack:///./modules/relationprofile/index.ts","webpack:///./modules/projects/store/state.ts","webpack:///./modules/projects/store/mutations.ts","webpack:///./modules/projects/models/term.ts","webpack:///./modules/projects/store/getters.ts","webpack:///./modules/projects/models/project.ts","webpack:///./modules/projects/api.ts","webpack:///./modules/projects/store/actions.ts","webpack:///./modules/projects/store/index.ts","webpack:///./modules/projects/index.ts","webpack:///./modules/manuals/store/state.ts","webpack:///./modules/manuals/store/mutations.ts","webpack:///./modules/manuals/store/getters.ts","webpack:///./modules/manuals/store/actions.ts","webpack:///./modules/manuals/store/index.ts","webpack:///./modules/manuals/index.ts","webpack:///./modules/feedback/index.ts","webpack:///./modules/contact/store/state.ts","webpack:///./modules/contact/store/mutations.ts","webpack:///./modules/contact/store/index.ts","webpack:///./modules/contact/index.ts","webpack:///./customer-modules/b2bplaza/credentials/index.ts","webpack:///./customer-modules/b2bplaza/invoices/store/state.ts","webpack:///./customer-modules/b2bplaza/invoices/store/mutations.ts","webpack:///./customer-modules/b2bplaza/invoices/store/getters.ts","webpack:///./customer-modules/b2bplaza/invoices/models/invoice.ts","webpack:///./customer-modules/b2bplaza/invoices/models/accessLogEntry.ts","webpack:///./customer-modules/b2bplaza/invoices/models/accessLogUser.ts","webpack:///./customer-modules/b2bplaza/invoices/api.ts","webpack:///./customer-modules/b2bplaza/invoices/store/actions.ts","webpack:///./customer-modules/b2bplaza/invoices/store/index.ts","webpack:///./customer-modules/b2bplaza/invoices/index.ts","webpack:///./customer-modules/b2bplaza/c3x/store/state.ts","webpack:///./customer-modules/b2bplaza/c3x/store/mutations.ts","webpack:///./customer-modules/b2bplaza/c3x/store/index.ts","webpack:///./customer-modules/b2bplaza/c3x/index.ts","webpack:///./src/b2bplaza-public/main.ts","webpack:///./modules/relationprofile/models/fileEntry.ts","webpack:///./modules/relationprofile/models/privatePerson.ts","webpack:///./shared/store/auth/types.ts","webpack:///./modules/relationprofile/api.ts","webpack:///./modules/relationprofile/models/address.ts","webpack:///./modules/manuals/api.ts","webpack:///./shared/global/components/MainMenu.vue?30c2","webpack:///./modules/relationprofile/models/contact.ts","webpack:///./modules/relationprofile/models/organisation.ts","webpack:///./shared/env-loader/index.ts","webpack:///./modules/base/api.ts","webpack:///./shared/global/components/BrandedFooter.vue?ffe7","webpack:///./modules/manuals/models/manual.ts","webpack:///./shared/global/components/FaIcon.vue?1d5c","webpack:///./shared/global/components/NamePlate.vue?f481","webpack:///./shared/global/components/FaIcon.vue?00db","webpack:///./shared/global/components/FaIcon.vue?50b7","webpack:///./shared/global/components/FaIcon.vue?a6f4","webpack:///./shared/global/components/FaIcon.vue?8bb4","webpack:///./shared/api/index.ts","webpack:///./shared/global/pages/PageNotFound.vue?2678","webpack:///./shared/widgets/index.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","use","initialState","store","Store","state","mutations","storeInitialState","JSON","stringify","loadInitialState","initial","parse","keys","forEach","preloadStores","config","commit","dispatch","loginBackground","branding","title","loadModules","registerModule","deleteAllCookies","cookies","cookie","split","eqPos","indexOf","substr","sessionStorage","clear","authGuard","to","from","next","a","currentAuth","getters","info","logged_in","user_id","meta","auth","routeAuth","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","_s","$t","on","back","home","staticRenderFns","PageNotFound","history","$router","referrer","location","host","component","VBtn","VCard","VCardActions","VCardText","VFlex","VLayout","VSpacer","router","base","beforeEach","routes","addRoutes","path","model","callback","$$v","drawer","expression","_e","menuItems","loginStatus","$event","stopPropagation","domProps","fullTitle","_l","v","childTitle","BrandedFooter","VDivider","VFooter","list","topDivider","deviderNeeded","item","icon","authStore","MainMenu","seperatedItems","filtered","loggedIn","items","filter","hideAuth","hideNoAuth","top","bottom","Getter","required","default","GFaIcon","VList","VListTile","VListTileAction","VListTileContent","VListTileTitle","profile","id","fullName","NamePlate","ensureCurrentProfile","first_name","last_name","Action","State","VToolbar","snackbar","isMultiline","color","$set","text","snackStore","SnackbarStore","setSnackbarVisibility","Mutation","VSnackbar","userID","authCheck","checkStatus","setLoggedIn","reload","clearProfile","ensureProfile","val","oldVal","customToolbar","routerTitle","$route","displayTitle","immediate","components","VApp","VContent","VNavigationDrawer","VToolbarSideIcon","VToolbarTitle","customProperties","lang","locales","nl","current","localize","locale","instance","allMessages","addLocalisation","km","messages","loadLocalisations","keyedMsgArr","global","getInstance","actions","nextTick","localStorage","setItem","String","keepLoggedInSynced","parseEvent","loggedInString","newValue","root","addEventListener","representee_id","organisation_name","email_address","relation_type","private","setStateFromLocalStorage","str","getItem","setProfile","namespaced","branded","applicationName","setLoginBackground","payload","setBranded","setApplicationName","visible","VuePlugins","snackbarDefaults","defaultError","toString","setSnackbar","plugins","plugin","CompendaIntegration","productionTip","loadBootstrapConfigDefaults","vuetify","axios","continuousAuthCheck","customLocalisation","loadServerConfig","server","theme","login_background","parseModules","res","storeModules","vuePlugins","widgets","localisations","includes","localisation","settings","filledConfig","props","i18n","render","h","$mount","manifest","children","redirect","vuexFetchersState","Map","organisation","privatePerson","fileEntries","setCurrentOrganisation","setCurrentPrivatePerson","person","setFileEntriesForProject","entries","currentOrganisation","currentPrivatePerson","factory","fetchCurrentOrganisation","createSingleFetcher","fetchCurrentPrivatePerson","fetchFileEntries","createBulkFetcher","loadConfig","contact","relationprofile","projects","subscriptions","Interval","setProjectsHandle","setSubscriptionsHandle","allProjects","allSubscriptions","activeSubscriptions","isActive","lastFive","sort","b","projectId","TermModel","description","amount","price","interval","raw","month","quarter","year","sixMonths","twoYears","week","relation_id","start_date","end_date","terms","ProjectModel","map","nt","fillModel","getRaw","format","start","isBefore","end","isAfter","prefix","getProjectsForCurrentUser","api","getSubscriptionsForCurrentUser","fetchProjects","fetchSubscriptions","manuals","setManualsHandle","allManuals","allTags","hash","manual","tags","fetchManuals","forceFetchManuals","open","close","invoices","accessLogs","setInvoicesHandle","setAccessLogsHandle","allInvoices","invoice_id","allAccessLogs","InvoiceModel","invoice_date","expiration_date","outstanding","AccessLogEntryModel","created_at","Date","AccessLogUserModel","getInvoicesForCurrentUser","getAccessLogs","fetchInvoices","fetchAccessLogs","loaded","c3x","primary","secondary","accent","warning","success","bootstrap","credentials","feedback","baseURL","withCredentials","FileEntryModel","source","project","archive_id","category","archive_date","extension","encodeURI","endsWith","PrivatePersonModel","gender","phone_number","mobile_phone_number","relation_admin","addresses","cm","RelationType","getOrganisationForCurrentUser","getPrivatePersonForCurrentUser","getFileEntries","getFrontendConfig","AddressType","AddressModel","business","internal_line","internal_line2","street","house_number","house_number_suffix","town","postal_code","country","getManuals","getBlob","url","responseType","getNonCachedBlob","getTime","postManual","post","postThumbnail","file","formData","FormData","append","headers","postPdf","putManual","put","deleteManual","delete","ContactModel","organisation_id","main_contact","access","contacts","OrganisationModel","fallback","prefixedKey","env","postRequestMagicLink","postProcessMagicLink","token","postLoggedOut","getUserLoginStats","getImpersonateLink","userId","getWallpaper","orientation","ManualModel","thumbnail","download_link","class","startsWith","vHtml","FaIcon","isTrue","fas","far","fal","VIcon","client","setupClient","getGlobalInfo","getProfile","getServerSideConfig","getTranslations","registerWidget","widget","registerWidgets","w"],"mappings":"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","file":"js/app.6fd681e6.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-150e48ab\":\"767f9219\",\"chunk-2144367c\":\"efe53998\",\"chunk-2d0de792\":\"9b6fe183\",\"chunk-2d21aafe\":\"9730928a\",\"chunk-30975846\":\"bf15cb74\",\"chunk-7480abc8\":\"9d8523a5\",\"chunk-1ddf992c\":\"1a8ed23a\",\"chunk-297bf923\":\"608e5f12\",\"chunk-401d14cb\":\"88a290ba\",\"chunk-7dc9f697\":\"74e8dfc1\",\"chunk-23220778\":\"c4861b26\",\"chunk-39fdab54\":\"820f57a0\",\"chunk-57fa4536\":\"24a2217b\",\"chunk-183b08ae\":\"c5853485\",\"chunk-1e1ad62a\":\"b931f456\",\"chunk-6044b70a\":\"4495f8a7\",\"chunk-61407de9\":\"82c3d7d7\",\"chunk-6917e04e\":\"b707568a\",\"chunk-7560e061\":\"3694af74\",\"chunk-99fae0be\":\"792f590d\",\"chunk-9c3150da\":\"d76dbafe\",\"chunk-bae49602\":\"9707c913\",\"chunk-d17c619a\":\"9a6078b1\",\"chunk-e4640740\":\"19542b4e\",\"chunk-fe3e9e30\":\"8827ef9a\",\"chunk-3eefea24\":\"85572a9e\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-150e48ab\":1,\"chunk-2144367c\":1,\"chunk-30975846\":1,\"chunk-7480abc8\":1,\"chunk-1ddf992c\":1,\"chunk-297bf923\":1,\"chunk-401d14cb\":1,\"chunk-7dc9f697\":1,\"chunk-23220778\":1,\"chunk-39fdab54\":1,\"chunk-57fa4536\":1,\"chunk-183b08ae\":1,\"chunk-1e1ad62a\":1,\"chunk-6044b70a\":1,\"chunk-61407de9\":1,\"chunk-6917e04e\":1,\"chunk-7560e061\":1,\"chunk-99fae0be\":1,\"chunk-9c3150da\":1,\"chunk-e4640740\":1,\"chunk-fe3e9e30\":1,\"chunk-3eefea24\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-150e48ab\":\"6e7d92c6\",\"chunk-2144367c\":\"1712c9e0\",\"chunk-2d0de792\":\"31d6cfe0\",\"chunk-2d21aafe\":\"31d6cfe0\",\"chunk-30975846\":\"6e7d92c6\",\"chunk-7480abc8\":\"50dad480\",\"chunk-1ddf992c\":\"1fb7bff2\",\"chunk-297bf923\":\"31074186\",\"chunk-401d14cb\":\"723f807e\",\"chunk-7dc9f697\":\"cfbdcb5b\",\"chunk-23220778\":\"f2d96fc8\",\"chunk-39fdab54\":\"c9a4d63c\",\"chunk-57fa4536\":\"a2129bd0\",\"chunk-183b08ae\":\"bb4dda82\",\"chunk-1e1ad62a\":\"86615ee5\",\"chunk-6044b70a\":\"24d96f1a\",\"chunk-61407de9\":\"70af055c\",\"chunk-6917e04e\":\"f6d53614\",\"chunk-7560e061\":\"2fb8a18b\",\"chunk-99fae0be\":\"987ea06f\",\"chunk-9c3150da\":\"b3a3b7fd\",\"chunk-bae49602\":\"31d6cfe0\",\"chunk-d17c619a\":\"31d6cfe0\",\"chunk-e4640740\":\"2c755472\",\"chunk-fe3e9e30\":\"a2b4c82c\",\"chunk-3eefea24\":\"c5cd1a46\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"101c\",\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import Vue from \"vue\";\nimport Vuex, { ModuleTree } from \"vuex\";\nimport { BootstrapConfig } from \"shared/bootstrap\";\n\nVue.use(Vuex);\n\nlet initialState = \"\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst state: { [key: string]: any } = {};\n\nconst store = new Vuex.Store({\n state,\n mutations: {\n storeInitialState(s): void {\n initialState = JSON.stringify(s);\n },\n loadInitialState(s): void {\n const initial = JSON.parse(initialState);\n Object.keys(initial).forEach((key): void => {\n s[key] = initial[key];\n });\n }\n }\n});\n\nexport default store;\n\nexport const preloadStores = (config: BootstrapConfig): void => {\n store.commit(\"storeInitialState\");\n store.commit(\"auth/setStateFromLocalStorage\");\n store.dispatch(\"auth/keepLoggedInSynced\");\n store.commit(\"global/setLoginBackground\", config.loginBackground);\n store.commit(\"global/setBranded\", config.branding);\n store.commit(\"global/setApplicationName\", config.title);\n};\n\nexport const loadModules = (modules: ModuleTree<{}>): void => {\n const keys = Object.keys(modules);\n keys.forEach((key): void => {\n store.registerModule(key, modules[key]);\n });\n};\n","import { NavigationGuard } from \"vue-router\";\nimport store from \"shared/store\";\nimport { getGlobalInfo, GlobalInfo } from \"shared/api\";\nimport { postLoggedOut } from \"modules/base/api\";\n\nfunction deleteAllCookies(): void {\n const cookies = document.cookie.split(\";\");\n\n for (var i = 0; i < cookies.length; i++) {\n const cookie = cookies[i];\n const eqPos = cookie.indexOf(\"=\");\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = name + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n }\n\n sessionStorage.clear();\n}\n\nconst authGuard: NavigationGuard = async (to, from, next): Promise => {\n let currentAuth = store.getters[\"auth/loggedIn\"];\n\n let info: GlobalInfo = {\n logged_in: true,\n user_id: \"\"\n };\n\n try {\n info = await getGlobalInfo();\n } catch (e) {\n try {\n postLoggedOut();\n } catch (e) {\n // silently fail\n }\n }\n\n if (currentAuth !== info.logged_in) {\n store.dispatch(\"auth/setLoggedIn\", info.logged_in);\n currentAuth = info.logged_in;\n }\n\n if (!currentAuth) {\n deleteAllCookies();\n }\n\n if (to.meta === undefined || to.meta.auth === undefined) {\n return next();\n }\n\n const routeAuth = to.meta.auth;\n if (!currentAuth) {\n if (routeAuth) next({ name: \"login-request\" });\n else next();\n return;\n }\n\n if (!currentAuth && routeAuth) {\n next({ name: \"login-request\" });\n } else if (currentAuth && !routeAuth) {\n next({ name: \"home\" });\n } else {\n next();\n }\n};\n\nexport default authGuard;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-layout',{attrs:{\"justify-center\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md4\":\"\"}},[_c('v-card',{staticClass:\"elevation-1 mt-5\"},[_c('v-card-text',{staticClass:\"text-xs-center\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":\"/images/logo-with-name.png\"}}),_c('h5',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t(\"global.errors.404.title\")))]),_c('p',{staticClass:\"description\"},[_vm._v(_vm._s(_vm.$t(\"global.errors.404.description\")))])]),_c('v-card-actions',[_c('v-spacer'),(_vm.canGoBack)?_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.back}},[_vm._v(_vm._s(_vm.$t(\"global.terms.back\")))]):_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.home}},[_vm._v(_vm._s(_vm.$t(\"global.terms.home\")))])],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\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class PageNotFound extends Vue {\n get canGoBack(): boolean {\n return document.referrer.split(\"/\")[2] === window.location.host;\n }\n\n back(): void {\n window.history.back();\n }\n\n home(): void {\n this.$router.push({ name: \"home\" });\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageNotFound.vue?vue&type=template&id=6fa0f40c&scoped=true&lang=pug&\"\nimport script from \"./PageNotFound.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageNotFound.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PageNotFound.vue?vue&type=style&index=0&id=6fa0f40c&lang=stylus&scoped=true&\"\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 \"6fa0f40c\",\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 { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VFlex,VLayout,VSpacer})\n","import { RouteConfig } from \"vue-router\";\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\nimport authGuard from \"./auth-guard\";\nimport PageNotFound from \"shared/global/pages/PageNotFound.vue\";\n\nVue.use(Router);\n\nconst router = new Router({\n mode: \"history\",\n base: process.env.BASE_URL\n});\n\nrouter.beforeEach(authGuard);\n\nexport default router;\n\nexport const setRoutes = (routes: RouteConfig[]): void => {\n router.addRoutes(routes);\n router.addRoutes([\n {\n path: \"*\",\n component: PageNotFound\n }\n ]);\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('v-navigation-drawer',{attrs:{\"clipped\":\"\",\"fixed\":\"\",\"app\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[(_vm.loginStatus)?_c('name-plate'):_vm._e(),_c('main-menu',{attrs:{\"items\":_vm.menuItems,\"top-divider\":_vm.loginStatus}})],1),_c('v-toolbar',{attrs:{\"color\":\"primary\",\"dark\":\"\",\"app\":\"\",\"clipped-left\":\"\"}},[_c('v-toolbar-side-icon',{on:{\"click\":function($event){$event.stopPropagation();_vm.drawer = !_vm.drawer}}}),_c('v-toolbar-title',{domProps:{\"textContent\":_vm._s(_vm.fullTitle)}}),(_vm.showCustom)?[_c('v-spacer'),_vm._l((_vm.customToolbar),function(c,i){return _c(c,{key:i,tag:\"component\"})})]:_vm._e()],2),_c('v-content',{staticClass:\"mt-1\"},[_c('router-view',{on:{\"title\":function (v) { return (_vm.childTitle = v); }}})],1),(_vm.branding)?_c('branded-footer'):_vm._e(),_c('snackbar-store')],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-footer',{attrs:{\"color\":\"white\",\"app\":\"\",\"inset\":\"\",\"height\":\"auto\"}},[_c('v-layout',{attrs:{\"justify-center\":\"\",\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('v-divider')],1),_c('v-flex',{staticClass:\"ma-2\",attrs:{\"text-xs-center\":\"\",\"xs12\":\"\"}},[_vm._v(\"Mogelijk gemaakt door \"),_c('a',{attrs:{\"href\":\"https://www.compenda.nl/\",\"target\":\"_blank\"}},[_vm._v(\"Compenda Business Software\")]),_c('span',{staticClass:\"ml-4 grey--text\"},[_vm._v(\"CRM | Projectbeheer | Urenregistratie\")])])],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\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class BrandedFooter extends Vue {}\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandedFooter.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandedFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandedFooter.vue?vue&type=template&id=13ad38ec&scoped=true&lang=pug&\"\nimport script from \"./BrandedFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandedFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandedFooter.vue?vue&type=style&index=0&id=13ad38ec&lang=stylus&scoped=true&\"\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 \"13ad38ec\",\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 { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VDivider,VFlex,VFooter,VLayout})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-list',_vm._l((_vm.seperatedItems),function(list,i){return _c('div',{key:'menu-' + i},[(_vm.topDivider || _vm.deviderNeeded(i))?_c('v-divider'):_vm._e(),_vm._l((list),function(item,j){return _c('v-list-tile',{key:'menu-' + i + '-item-' + j + '-' + item.icon,attrs:{\"to\":item.to}},[_c('v-list-tile-action',{staticClass:\"text-xs-center\"},[_c('g-fa-icon',{staticClass:\"center-icon\",attrs:{\"value\":item.icon,\"fal\":\"\"}})],1),_c('v-list-tile-content',[_c('v-list-tile-title',{domProps:{\"textContent\":_vm._s(_vm.$t(item.title))}})],1)],1)})],2)}),0)}\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\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { MenuItem } from \"shared/bootstrap\";\nimport { namespace } from \"vuex-class\";\n\nconst authStore = namespace(\"auth\");\n\n@Component\nexport default class MainMenu extends Vue {\n @authStore.Getter(\"loggedIn\") loggedIn!: boolean;\n\n @Prop({ required: true })\n items!: MenuItem[];\n\n @Prop({ default: false })\n topDivider!: boolean;\n\n get seperatedItems() {\n let filtered: MenuItem[];\n if (this.loggedIn) {\n filtered = this.items.filter(item => !item.hideAuth);\n } else {\n filtered = this.items.filter(item => !item.hideNoAuth);\n }\n\n return [\n filtered.filter(item => item.top),\n filtered.filter(item => !item.top && !item.bottom),\n filtered.filter(item => item.bottom)\n ];\n }\n\n deviderNeeded(i: number) {\n return (\n this.seperatedItems[i].length > 0 &&\n i > 0 &&\n this.seperatedItems[i - 1].length > 0\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainMenu.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MainMenu.vue?vue&type=template&id=a6da57b2&scoped=true&\"\nimport script from \"./MainMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MainMenu.vue?vue&type=style&index=0&id=a6da57b2&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 \"a6da57b2\",\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 GFaIcon from 'shared/global/components/FaIcon.vue'\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListTile } from 'vuetify/lib/components/VList';\nimport { VListTileAction } from 'vuetify/lib/components/VList';\nimport { VListTileContent } from 'vuetify/lib/components/VList';\nimport { VListTileTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {GFaIcon,VDivider,VList,VListTile,VListTileAction,VListTileContent,VListTileTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.profile.id > 0)?_c('v-toolbar',{staticClass:\"transparent profile\",attrs:{\"flat\":\"\"}},[_c('v-list',{staticClass:\"pa-0 mb-0\"},[_c('v-list-tile',[_c('v-list-tile-action',{staticClass:\"text-xs-center\"},[_c('g-fa-icon',{staticClass:\"user-icon\",attrs:{\"value\":\"user\",\"fal\":\"\"}})],1),_c('v-list-tile-content',[_c('v-list-tile-title',{domProps:{\"textContent\":_vm._s(_vm.fullName)}})],1)],1)],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\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\nimport { User } from \"../../store/auth/types\";\n\nconst authStore = namespace(\"auth\");\n\n@Component\nexport default class NamePlate extends Vue {\n @authStore.Action ensureCurrentProfile!: () => Promise;\n @authStore.State(\"profile\") profile!: User;\n\n get fullName(): string {\n if (this.profile === undefined) return \"\";\n return this.profile.first_name + \" \" + this.profile.last_name;\n }\n\n private mounted() {\n this.ensureCurrentProfile();\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamePlate.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamePlate.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NamePlate.vue?vue&type=template&id=206ef518&scoped=true&\"\nimport script from \"./NamePlate.vue?vue&type=script&lang=ts&\"\nexport * from \"./NamePlate.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NamePlate.vue?vue&type=style&index=0&id=206ef518&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 \"206ef518\",\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 GFaIcon from 'shared/global/components/FaIcon.vue'\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListTile } from 'vuetify/lib/components/VList';\nimport { VListTileAction } from 'vuetify/lib/components/VList';\nimport { VListTileContent } from 'vuetify/lib/components/VList';\nimport { VListTileTitle } from 'vuetify/lib/components/VList';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {GFaIcon,VList,VListTile,VListTileAction,VListTileContent,VListTileTitle,VToolbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-snackbar',{attrs:{\"timeout\":_vm.snackbar.timeout,\"multi-line\":_vm.isMultiline,\"color\":_vm.snackbar.color,\"top\":\"\"},model:{value:(_vm.snackbar.visible),callback:function ($$v) {_vm.$set(_vm.snackbar, \"visible\", $$v)},expression:\"snackbar.visible\"}},[_vm._v(\"\\n \"+_vm._s(_vm.snackbar.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\nimport { SnackbarInterface } from \"../../store/snackbar/state\";\n\nconst snackStore = namespace(\"snackbar\");\n\n@Component\nexport default class SnackbarStore extends Vue {\n @snackStore.Getter snackbar!: SnackbarInterface;\n\n @snackStore.Mutation setSnackbarVisibility!: (payload: boolean) => void;\n\n closeSnackbar() {\n this.setSnackbarVisibility(false);\n }\n\n get isMultiline() {\n return this.snackbar.text !== undefined && this.snackbar.text.length > 50;\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SnackbarStore.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SnackbarStore.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SnackbarStore.vue?vue&type=template&id=36a110e8&\"\nimport script from \"./SnackbarStore.vue?vue&type=script&lang=ts&\"\nexport * from \"./SnackbarStore.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 { VSnackbar } from 'vuetify/lib/components/VSnackbar';\ninstallComponents(component, {VSnackbar})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport BrandedFooter from \"../components/BrandedFooter.vue\";\nimport MainMenu from \"../components/MainMenu.vue\";\nimport NamePlate from \"../components/NamePlate.vue\";\nimport SnackbarStore from \"../components/SnackbarStore.vue\";\nimport { MenuItem, TComponent } from \"../../bootstrap\";\nimport { namespace } from \"vuex-class\";\nimport { getGlobalInfo } from \"../../api\";\nimport { Route } from \"vue-router\";\n\nconst authStore = namespace(\"auth\");\n\n@Component({\n components: { BrandedFooter, MainMenu, NamePlate, SnackbarStore }\n})\nexport default class App extends Vue {\n @authStore.Getter loggedIn!: boolean;\n @authStore.Action setLoggedIn!: (state: boolean) => Promise;\n @authStore.Mutation clearProfile!: () => void;\n @authStore.Action ensureProfile!: () => void;\n\n drawer = true;\n loginStatus: boolean | null = null;\n userID: string = \"\";\n childTitle = \"\";\n\n @Prop({ required: true })\n title!: string;\n\n @Prop({ required: true })\n menuItems!: MenuItem[];\n\n @Prop({ required: true })\n authCheck!: boolean;\n\n @Prop({ required: true })\n branding!: boolean;\n\n @Prop({ default: undefined })\n customToolbar?: TComponent[];\n\n get showCustom() {\n return this.customToolbar !== undefined && this.customToolbar.length > 0;\n }\n\n get displayTitle() {\n const routerTitle =\n this.$route.meta.title === undefined ? \"\" : this.$route.meta.title;\n return this.childTitle === \"\" ? routerTitle : this.childTitle;\n }\n\n get fullTitle() {\n if (this.displayTitle === \"\") return this.title;\n return `${this.title} - ${this.$t(this.displayTitle)}`;\n }\n\n @Watch(\"$route\")\n onRouteChange(n: Route, o: Route) {\n if (n === o) return;\n this.childTitle = \"\";\n }\n\n private mounted() {\n if (!this.authCheck) {\n return;\n }\n // TODO: place in a mixin\n const checkStatus = async () => {\n setTimeout(checkStatus, 300000);\n try {\n const info = await getGlobalInfo();\n\n if (this.loginStatus === null) {\n this.loginStatus = info.logged_in;\n this.userID = info.user_id;\n } else {\n if (this.loginStatus !== info.logged_in) {\n this.setLoggedIn(info.logged_in);\n location.reload();\n }\n if (this.userID !== info.user_id) {\n this.clearProfile();\n this.ensureProfile();\n }\n }\n } catch (e) {\n if (!this.loginStatus) {\n this.$router.push({ name: \"login-request\" });\n }\n }\n };\n\n checkStatus();\n }\n\n @Watch(\"fullTitle\", { immediate: true })\n setPageTitle(title: string) {\n document.title = title;\n }\n\n @Watch(\"loggedIn\")\n onLogin(val: boolean, oldVal: boolean) {\n if (val !== oldVal) this.loginStatus = val;\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2ac9d3ba&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.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 { VApp } from 'vuetify/lib/components/VApp';\nimport { VContent } from 'vuetify/lib/components/VGrid';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarSideIcon } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VApp,VContent,VNavigationDrawer,VSpacer,VToolbar,VToolbarSideIcon,VToolbarTitle})\n","import \"@babel/polyfill\";\nimport Vue from \"vue\";\nimport Vuetify, { VLayout } from \"vuetify/lib\";\nimport { VuetifyUseOptions } from \"vuetify\";\nimport \"vuetify/src/stylus/app.styl\";\nimport nl from \"vuetify/src/locale/nl\";\nimport \"@fortawesome/fontawesome-pro/js/all.js\";\n\nexport default (config: VuetifyUseOptions): void => {\n config = {\n ...{\n components: { VLayout },\n customProperties: true,\n lang: {\n locales: { nl },\n current: \"nl\"\n }\n },\n ...config\n };\n\n Vue.use(Vuetify, config);\n};\n","import Vue from \"vue\";\n// @ts-ignore because there are no definitions for the locales\nimport nl from \"vee-validate/dist/locale/nl\";\nimport VeeValidate, { Validator } from \"vee-validate\";\n\nexport default (): void => {\n Validator.localize(\"nl\", nl);\n Vue.use(VeeValidate, {\n locale: \"nl\"\n });\n};\n","import Vue from \"vue\";\nimport VueI18n, { LocaleMessages } from \"vue-i18n\";\nimport deepmerge from \"deepmerge\";\nimport { getTranslations } from \"shared/api\";\nimport globalMessages from \"./global.json\";\n\nexport interface GroupedLocaleMessages {\n [key: string]: LocaleMessages;\n}\n\nexport interface KeyedMessages {\n key: string;\n messages: GroupedLocaleMessages;\n}\n\nexport const allMessages: LocaleMessages = {};\n\nfunction addLocalisation(km: KeyedMessages): void {\n for (const lang in km.messages) {\n if (!allMessages.hasOwnProperty(lang)) allMessages[lang] = {};\n if (allMessages[lang].hasOwnProperty(km.key)) throw \"key exists\";\n allMessages[lang][km.key] = km.messages[lang];\n }\n}\n\naddLocalisation({ key: \"global\", messages: globalMessages });\n\nexport function loadLocalisations(keyedMsgArr: KeyedMessages[]): void {\n for (const km of keyedMsgArr) addLocalisation(km);\n}\n\nlet instance: VueI18n;\n\nexport const getInstance = (): Readonly => {\n return instance;\n};\n\nexport default async (messages?: LocaleMessages): Promise => {\n Vue.use(VueI18n);\n\n messages =\n messages === undefined ? allMessages : deepmerge(allMessages, messages);\n\n messages.nl = deepmerge(messages.nl, await getTranslations(\"nl\"));\n\n instance = new VueI18n({\n locale: \"nl\", // set locale\n messages // set locale messages\n });\n\n return instance;\n};\n","import { ActionTree } from \"vuex\";\nimport { StateInterface } from \"./types\";\nimport { getProfile } from \"shared/api\";\nimport Vue from \"vue\";\n\nconst actions: ActionTree = {\n async setLoggedIn({ state }, loggedIn: boolean): Promise {\n state.loggedIn = loggedIn;\n await Vue.nextTick();\n localStorage.setItem(\"loggedIn\", String(loggedIn));\n },\n keepLoggedInSynced({ commit, getters, state }): void {\n const parseEvent = (e: StorageEvent): void => {\n if (\n e.key !== \"loggedIn\" ||\n getters.loggedInString === e.newValue ||\n (getters.loggedIn && e.newValue === null)\n )\n return;\n\n state.loggedIn = e.newValue === \"true\";\n\n if (!state.loggedIn) {\n commit(\"clearProfile\");\n commit(\"loadInitialState\", null, { root: true });\n }\n\n location.reload();\n };\n\n window.addEventListener(\"storage\", parseEvent, {});\n },\n async ensureCurrentProfile({ state, commit }): Promise {\n if (state.profile.id > 0) return;\n\n try {\n const profile = await getProfile();\n commit(\"setProfile\", profile);\n } catch (e) {\n throw e;\n }\n }\n};\n\nexport default actions;\n","import { StateInterface, RelationType } from \"./types\";\n\nconst state: StateInterface = {\n loggedIn: false,\n profile: {\n id: 0,\n representee_id: 0,\n first_name: \"\",\n last_name: \"\",\n organisation_name: \"\",\n email_address: \"\",\n relation_type: RelationType.private\n }\n};\n\nexport default state;\n","import { StateInterface, User, RelationType } from \"./types\";\n\nexport default {\n setStateFromLocalStorage(state: StateInterface): void {\n const str = localStorage.getItem(\"loggedIn\");\n state.loggedIn = str === \"true\";\n },\n setProfile(state: StateInterface, profile: User): void {\n state.profile = profile;\n },\n clearProfile(state: StateInterface): void {\n state.profile = {\n id: 0,\n representee_id: 0,\n first_name: \"\",\n last_name: \"\",\n organisation_name: \"\",\n email_address: \"\",\n relation_type: RelationType.private\n };\n }\n};\n","import { StateInterface } from \"./types\";\n\nexport default {\n loggedIn(state: StateInterface): boolean {\n return state.loggedIn;\n },\n loggedInString(state: StateInterface): string {\n return state.loggedIn ? \"true\" : \"false\";\n }\n};\n","import actions from \"./actions\";\nimport state from \"./state\";\nimport mutations from \"./mutations\";\nimport getters from \"./getters\";\n\nexport default {\n namespaced: true,\n\n actions,\n state,\n mutations,\n getters\n};\n","import { StateInterface } from \"./state\";\n\nexport default {\n loginBackground(state: StateInterface): boolean {\n return state.loginBackground;\n },\n branded(state: StateInterface): boolean {\n return state.branded;\n },\n applicationName(state: StateInterface): string {\n return state.applicationName;\n }\n};\n","export interface StateInterface {\n loginBackground: boolean;\n branded: boolean;\n applicationName: string;\n}\n\nconst state: StateInterface = {\n loginBackground: false,\n branded: false,\n applicationName: \"\"\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\n\nexport default {\n setLoginBackground(state: StateInterface, payload: boolean): void {\n state.loginBackground = payload;\n },\n setBranded(state: StateInterface, payload: boolean): void {\n state.branded = payload;\n },\n setApplicationName(state: StateInterface, payload: string): void {\n state.applicationName = payload;\n }\n};\n","import getters from \"./getters\";\nimport state from \"./state\";\nimport mutations from \"./mutations\";\n\nexport default {\n namespaced: true,\n\n getters,\n state,\n mutations\n};\n","import { StateInterface, SnackbarInterface } from \"./state\";\n\nexport default {\n snackbar(state: StateInterface): SnackbarInterface {\n return state.snackbar;\n }\n};\n","export interface SnackbarInterface {\n visible?: boolean;\n text?: string;\n timeout?: number;\n color?: string;\n}\n\nexport interface StateInterface {\n snackbar: SnackbarInterface;\n}\n\nconst state: StateInterface = {\n snackbar: {\n visible: false,\n text: \"\",\n timeout: 6000\n }\n};\n\nexport default state;\n","import { StateInterface, SnackbarInterface } from \"./state\";\nimport { getInstance } from \"shared/i18n\";\n\nconst snackbarDefaults = {\n visible: true,\n text: \"\",\n timeout: 6000\n};\n\nexport default {\n defaultError(state: StateInterface): void {\n state.snackbar = {\n ...snackbarDefaults,\n text: getInstance()\n .t(\"global.errors.default\")\n .toString(),\n color: \"error\"\n };\n },\n setSnackbar(state: StateInterface, payload: SnackbarInterface): void {\n state.snackbar = { ...snackbarDefaults, ...payload };\n },\n setSnackbarVisibility(state: StateInterface, payload: boolean): void {\n state.snackbar.visible = payload;\n }\n};\n","import { RouteConfig, RawLocation } from \"vue-router\";\nimport { ModuleTree } from \"vuex\";\nimport { VuetifyUseOptions, VuetifyTheme } from \"vuetify\";\nimport { AxiosRequestConfig } from \"axios\";\nimport Vue, { ComponentOptions, AsyncComponent } from \"vue\";\nimport { Widget } from \"shared/widgets\";\nimport { LocaleMessages } from \"vue-i18n\";\nimport { KeyedMessages } from \"../i18n\";\n\nexport enum VuePlugins {\n CompendaIntegration\n}\n\nexport interface MenuItem {\n to: RawLocation;\n title: string;\n icon: string;\n hideAuth?: boolean;\n hideNoAuth?: boolean;\n children?: MenuItem[];\n top?: boolean;\n bottom?: boolean;\n}\n\nexport interface ModuleManifest {\n routes?: RouteConfig[];\n storeModules?: ModuleTree<{}>;\n menuItems?: MenuItem[];\n vuePlugins?: VuePlugins[];\n widgets?: Widget[];\n localisation?: KeyedMessages;\n}\n\nexport type ModuleManifestFactory = () => ModuleManifest;\n\nexport type ModuleManifestArray = (ModuleManifest | ModuleManifestFactory)[];\n\nexport interface BootstrapConfig {\n title: string;\n modules: ModuleManifestArray;\n vuetify: VuetifyUseOptions;\n axios: AxiosRequestConfig;\n customToolbar?: TComponent[];\n continuousAuthCheck: boolean;\n customLocalisation: LocaleMessages;\n branding: boolean;\n loginBackground: boolean;\n}\n\nexport type TComponent = ComponentOptions | typeof Vue | AsyncComponent;\n\nexport interface ServerSideConfig {\n title?: string;\n branding: boolean;\n login_background: boolean;\n theme: Partial;\n}\n","import getters from \"./getters\";\nimport state from \"./state\";\nimport mutations from \"./mutations\";\n\nexport default {\n namespaced: true,\n\n getters,\n state,\n mutations\n};\n","import { VuePlugins } from \"./types\";\nimport Vue from \"vue\";\nimport { InstallCompendaCardVuePlugin } from \"compenda-integration\";\n\nconst installCompendaIntegration = (): void => {\n InstallCompendaCardVuePlugin(Vue);\n};\n\nexport const installPlugins = (plugins: VuePlugins[]): void => {\n plugins.forEach((plugin): void => {\n switch (plugin) {\n case VuePlugins.CompendaIntegration:\n installCompendaIntegration();\n break;\n }\n });\n};\n","import router, { setRoutes } from \"../router\";\nimport store, { loadModules, preloadStores } from \"shared/store\";\nimport { RouteConfig } from \"vue-router\";\nimport Vue, { VNode } from \"vue\";\nimport {\n BootstrapConfig,\n MenuItem,\n ModuleManifest,\n VuePlugins,\n ModuleManifestArray\n} from \"./types\";\nimport { ModuleTree } from \"vuex\";\nimport App from \"shared/global/layouts/App.vue\";\nimport vuetifyLoader from \"shared/bootstrap/vuetify\";\nimport VeeValidate from \"shared/bootstrap/vee-validate\";\nimport i18nSetup, { KeyedMessages, loadLocalisations } from \"shared/i18n\";\nimport { setupClient, getServerSideConfig } from \"shared/api\";\nimport auth from \"shared/store/auth\";\nimport global from \"shared/store/global\";\nimport snackbar from \"shared/store/snackbar\";\nimport { installPlugins } from \"./vuePlugins\";\nimport { Widget, registerWidgets } from \"shared/widgets\";\n\nVue.config.productionTip = false;\n\ninterface Settings {\n routes: RouteConfig[];\n storeModules: ModuleTree<{}>;\n menuItems: MenuItem[];\n vuePlugins: VuePlugins[];\n widgets: Widget[];\n localisations: KeyedMessages[];\n}\n\nconst loadBootstrapConfigDefaults = (\n config: Partial\n): BootstrapConfig => {\n return {\n ...{\n title: \"\",\n modules: [],\n vuetify: {},\n axios: {},\n continuousAuthCheck: true,\n customLocalisation: {},\n branding: false,\n loginBackground: false\n },\n ...config\n };\n};\n\nconst loadServerConfig = async (config: BootstrapConfig): Promise => {\n const server = await getServerSideConfig();\n\n if (server.title !== undefined) {\n config.title = server.title;\n }\n if (server.theme !== undefined) {\n config.vuetify.theme = { ...config.vuetify.theme, ...server.theme };\n }\n config.branding = server.branding;\n config.loginBackground = server.login_background;\n};\n\nconst parseModules = (modules: ModuleManifestArray): Settings => {\n const res: Settings = {\n routes: [],\n storeModules: {},\n menuItems: [],\n vuePlugins: [],\n widgets: [],\n localisations: []\n };\n\n modules.forEach((m): void => {\n let module: ModuleManifest;\n if (typeof m === \"function\") {\n module = m();\n } else {\n module = m;\n }\n\n if (module.routes !== undefined) res.routes.push(...module.routes);\n if (module.storeModules !== undefined)\n res.storeModules = { ...res.storeModules, ...module.storeModules };\n if (module.menuItems !== undefined) res.menuItems.push(...module.menuItems);\n\n if (module.vuePlugins !== undefined) {\n module.vuePlugins.forEach((plugin): void => {\n if (!res.vuePlugins.includes(plugin)) res.vuePlugins.push(plugin);\n });\n }\n\n if (module.widgets !== undefined) res.widgets.push(...module.widgets);\n\n if (module.localisation !== undefined)\n res.localisations.push(module.localisation);\n });\n\n return res;\n};\n\nconst loadBaseSetting = (settings: Settings): void => {\n settings.storeModules = { auth, global, snackbar, ...settings.storeModules };\n};\n\nexport default async (config?: Partial): Promise => {\n if (config === undefined) config = {};\n const filledConfig = await loadBootstrapConfigDefaults(config);\n setupClient(filledConfig.axios);\n await loadServerConfig(filledConfig);\n\n VeeValidate();\n vuetifyLoader(filledConfig.vuetify);\n\n const settings = parseModules(filledConfig.modules);\n loadBaseSetting(settings);\n\n installPlugins(settings.vuePlugins);\n setRoutes(settings.routes);\n loadModules(settings.storeModules);\n registerWidgets(settings.widgets);\n loadLocalisations(settings.localisations);\n\n preloadStores(filledConfig);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const props: { [key: string]: any } = {\n title: filledConfig.title,\n menuItems: settings.menuItems,\n authCheck: filledConfig.continuousAuthCheck,\n branding: filledConfig.branding\n };\n\n if (filledConfig.customToolbar !== undefined) {\n props.customToolbar = filledConfig.customToolbar;\n }\n\n const i18n = await i18nSetup(filledConfig.customLocalisation);\n\n new Vue({\n router,\n store,\n i18n,\n render: (h): VNode =>\n h(App, {\n props\n })\n }).$mount(\"#app\");\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { ModuleManifest } from \"shared/bootstrap\";\nimport moment from \"moment\";\nimport publicLocale from \"./i18n/public.json\";\nimport adminLocale from \"./i18n/admin.json\";\nimport \"moment/locale/nl\";\nimport { VuePlugins } from \"shared/bootstrap/types\";\n\nmoment.locale(\"nl\");\n\nconst manifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"login-request\" },\n title: \"base.menuItems.login\",\n icon: \"sign-in-alt\",\n hideAuth: true\n },\n {\n to: { name: \"logout\" },\n title: \"base.menuItems.logout\",\n icon: \"sign-out-alt\",\n hideNoAuth: true,\n bottom: true\n }\n ],\n routes: [\n {\n path: \"/login\",\n component: () => import(\"./layouts/Auth.vue\"),\n children: [\n {\n path: \"/\",\n name: \"login-request\",\n meta: {\n title: \"base.menuItems.login\",\n auth: false\n },\n component: () => import(\"./pages/LoginRequest.vue\")\n },\n {\n path: \":token\",\n name: \"login-process-token\",\n props: true,\n meta: {\n title: \"base.menuItems.login\"\n },\n component: () => import(\"./pages/LoginProcessToken.vue\")\n }\n ]\n },\n {\n path: \"/logout\",\n component: () => import(\"./layouts/Auth.vue\"),\n children: [\n {\n path: \"/\",\n name: \"logout\",\n meta: {\n title: \"base.menuItems.logout\"\n },\n component: () => import(\"./pages/Logout.vue\")\n }\n ]\n }\n ],\n localisation: { key: \"base\", messages: publicLocale }\n};\n\nexport default manifest;\n\nexport const AdminManifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"login-stats\" },\n title: \"base.menuItems.loginStats\",\n icon: \"users\"\n }\n ],\n routes: [\n {\n path: \"/login-statistieken\",\n name: \"login-stats\",\n component: () => import(\"./pages/LoginStats.vue\"),\n meta: {\n title: \"base.menuItems.loginStats\"\n }\n }\n ],\n vuePlugins: [VuePlugins.CompendaIntegration],\n localisation: { key: \"base\", messages: adminLocale }\n};\n","import { ModuleManifest } from \"shared/bootstrap\";\n\nconst manifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"home\" },\n title: \"global.terms.home\",\n icon: \"home\",\n hideNoAuth: true,\n top: true\n }\n ],\n routes: [\n {\n path: \"/\",\n redirect: { name: \"home\" },\n meta: {\n auth: true\n }\n },\n {\n path: \"/home\",\n name: \"home\",\n meta: {\n auth: true\n },\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n component: () => import(\"./pages/Home.vue\")\n }\n ]\n};\n\nexport default manifest;\n","import { RequestState } from \"vuex-fetch-factory\";\nimport { OrganisationModel } from \"modules/relationprofile/models\";\nimport { PrivatePersonModel } from \"../models/privatePerson\";\nimport { FileEntryModel } from \"../models/fileEntry\";\n\nexport interface StateInterface {\n vuexFetchersState: Map>;\n organisation: OrganisationModel;\n privatePerson: PrivatePersonModel;\n fileEntries: FileEntryModel[];\n}\n\nconst state: StateInterface = {\n vuexFetchersState: new Map(),\n organisation: new OrganisationModel(),\n privatePerson: new PrivatePersonModel(),\n fileEntries: []\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\nimport { OrganisationModel } from \"modules/relationprofile/models\";\nimport { PrivatePersonModel } from \"../models/privatePerson\";\nimport { FileEntryModel } from \"../models/fileEntry\";\n\nexport default {\n setCurrentOrganisation(\n state: StateInterface,\n organisation: OrganisationModel\n ): void {\n state.organisation = organisation;\n },\n setCurrentPrivatePerson(\n state: StateInterface,\n person: PrivatePersonModel\n ): void {\n state.privatePerson = person;\n },\n setFileEntriesForProject(\n state: StateInterface,\n entries: FileEntryModel[]\n ): void {\n if (entries.length > 0) state.fileEntries = entries;\n }\n};\n","import { StateInterface } from \"./state\";\nimport { OrganisationModel, PrivatePersonModel } from \"../models\";\nimport { FileEntryModel } from \"../models/fileEntry\";\n\nexport default {\n currentOrganisation(state: StateInterface): OrganisationModel {\n return state.organisation;\n },\n currentPrivatePerson(state: StateInterface): PrivatePersonModel {\n return state.privatePerson;\n },\n fileEntries(state: StateInterface): FileEntryModel[] {\n return state.fileEntries;\n }\n};\n","import FetchFactory from \"vuex-fetch-factory\";\nimport { StateInterface } from \"./state\";\nimport {\n OrganisationRaw,\n OrganisationModel\n} from \"modules/relationprofile/models\";\nimport {\n getOrganisationForCurrentUser,\n getPrivatePersonForCurrentUser,\n getFileEntries\n} from \"modules/relationprofile/api\";\nimport { PrivatePersonModel, PrivatePersonRaw } from \"../models/privatePerson\";\nimport { FileEntryRaw, FileEntryModel } from \"../models/fileEntry\";\n\nconst factory = new FetchFactory();\n\nexport default {\n fetchCurrentOrganisation: factory.createSingleFetcher<\n {},\n OrganisationRaw,\n OrganisationModel\n >(\n true,\n \"setCurrentOrganisation\",\n getOrganisationForCurrentUser,\n (): OrganisationModel => new OrganisationModel()\n ),\n fetchCurrentPrivatePerson: factory.createSingleFetcher<\n {},\n PrivatePersonRaw,\n PrivatePersonModel\n >(\n true,\n \"setCurrentPrivatePerson\",\n getPrivatePersonForCurrentUser,\n (): PrivatePersonModel => new PrivatePersonModel()\n ),\n fetchFileEntries: factory.createBulkFetcher<\n number,\n FileEntryRaw,\n FileEntryModel\n >(\n true,\n \"setFileEntriesForProject\",\n getFileEntries,\n (): FileEntryModel => new FileEntryModel()\n )\n};\n","import state from \"./state\";\nimport mutations from \"./mutations\";\nimport getters from \"./getters\";\nimport actions from \"./actions\";\n\nexport default {\n namespaced: true,\n\n state,\n mutations,\n getters,\n actions\n};\n","import { ModuleManifest } from \"shared/bootstrap\";\nimport publicLocale from \"./i18n/public.json\";\nimport storeMod from \"./store\";\n\nexport interface Config {\n contact: boolean;\n}\n\nfunction loadConfig(c: Partial = {}): Config {\n return {\n contact: true,\n ...c\n };\n}\n\nexport default function(c?: Partial): ModuleManifest {\n const config = loadConfig(c);\n\n return {\n menuItems: [\n {\n to: { name: \"my-data\" },\n title: \"relationprofile.menuItems.myData\",\n icon: \"users\",\n hideNoAuth: true\n }\n ],\n routes: [\n {\n path: \"/mijn-gegevens\",\n name: \"my-data\",\n meta: {\n auth: true,\n title: \"relationprofile.menuItems.myData\",\n contact: config.contact\n },\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n component: () => import(\"./pages/MyData.vue\")\n }\n ],\n storeModules: {\n relationprofile: storeMod\n },\n widgets: [\n {\n name: \"UserInfo\",\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n component: () => import(\"./widgets/UserInfo.vue\")\n }\n ],\n localisation: { key: \"relationprofile\", messages: publicLocale }\n };\n}\n","import { RequestState } from \"vuex-fetch-factory\";\nimport { ProjectModel } from \"../models\";\n\nexport interface StateInterface {\n vuexFetchersState: Map>;\n projects: ProjectModel[];\n subscriptions: ProjectModel[];\n}\n\nconst state: StateInterface = {\n vuexFetchersState: new Map(),\n projects: [],\n subscriptions: []\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\nimport { ProjectModel } from \"../models\";\n\nexport const setProjectsHandle = \"setProjects\";\nexport const setSubscriptionsHandle = \"setSubscriptions\";\n\nexport default {\n [setProjectsHandle](state: StateInterface, projects: ProjectModel[]): void {\n state.projects = projects;\n },\n [setSubscriptionsHandle](\n state: StateInterface,\n projects: ProjectModel[]\n ): void {\n state.subscriptions = projects;\n }\n};\n","import { Model } from \"vuex-fetch-factory\";\n\nexport enum Interval {\n month = 1,\n quarter = 2,\n year = 3,\n sixMonths = 4,\n twoYears = 5,\n week = 6\n}\n\nexport interface TermRaw {\n id: number;\n description: string;\n amount: number;\n price: number;\n interval: number;\n}\n\nexport class TermModel implements Model {\n private id = 0;\n private description = \"\";\n private amount = 0;\n private price = 0;\n private interval: Interval = 0;\n\n public getNew(): TermModel {\n return new TermModel();\n }\n\n public fillModel(raw: TermRaw): this {\n this.id = raw.id;\n this.description = raw.description;\n this.amount = raw.amount;\n this.price = raw.price;\n this.interval = raw.interval;\n return this;\n }\n\n public getRaw(): TermRaw {\n return {\n id: this.id,\n description: this.description,\n amount: this.amount,\n price: this.price,\n interval: this.interval\n };\n }\n\n public get intervalString(): string {\n switch (this.interval) {\n case Interval.month:\n return \"per maand\";\n case Interval.quarter:\n return \"per kwartaal\";\n case Interval.year:\n return \"per jaar\";\n case Interval.sixMonths:\n return \"per half jaar\";\n case Interval.twoYears:\n return \"per twee jaar\";\n case Interval.week:\n return \"per week\";\n default:\n return \"\";\n }\n }\n\n public get termTotal(): number {\n return this.amount * this.price;\n }\n}\n","import { StateInterface } from \"./state\";\nimport { ProjectModel } from \"../models\";\n\nexport default {\n allProjects(state: StateInterface): ProjectModel[] {\n return state.projects;\n },\n allSubscriptions(state: StateInterface): ProjectModel[] {\n return state.subscriptions;\n },\n activeSubscriptions(state: StateInterface): ProjectModel[] {\n return state.subscriptions.filter((s): boolean => s.isActive());\n },\n lastFive(state: StateInterface): ProjectModel[] {\n return state.projects\n .sort((a, b): number => {\n if (a.projectId > b.projectId) return -1;\n if (a.projectId < b.projectId) return 1;\n return 0;\n })\n .slice(0, 5);\n }\n};\n","import { Model } from \"vuex-fetch-factory\";\nimport { TermRaw, TermModel } from \"./term\";\nimport moment from \"moment\";\n\nexport interface ProjectRaw {\n id: number;\n relation_id: number;\n description: string;\n start_date: string;\n end_date: string;\n terms: TermRaw[] | null;\n}\n\nexport class ProjectModel implements Model {\n private id = 0;\n private relation_id = 0;\n private description = \"\";\n private start_date = \"\";\n private end_date = \"\";\n private terms: TermModel[] = [];\n\n public getNew(): ProjectModel {\n return new ProjectModel();\n }\n\n public fillModel(raw: ProjectRaw): this {\n this.id = raw.id;\n this.relation_id = raw.relation_id;\n this.description = raw.description;\n this.start_date = raw.start_date;\n this.end_date = raw.end_date;\n\n if (raw.terms !== null) {\n this.terms = raw.terms.map(\n (t): TermModel => {\n const nt = new TermModel();\n nt.fillModel(t);\n return nt;\n }\n );\n }\n\n return this;\n }\n\n public getRaw(): ProjectRaw {\n return {\n id: this.id,\n relation_id: this.relation_id,\n description: this.description,\n start_date: this.start_date,\n end_date: this.end_date,\n terms: this.terms.map(\n (t): TermRaw => {\n return t.getRaw();\n }\n )\n };\n }\n\n public get projectId(): number {\n return this.id;\n }\n\n public isActive(): boolean {\n const format = \"YYYY-MM-DD\";\n const start = moment(this.start_date, format);\n\n if (!start.isBefore(moment())) return false;\n\n if (this.end_date === \"\") return true;\n\n const end = moment(this.end_date, format);\n return end.isAfter(moment());\n }\n}\n","import api from \"shared/api\";\nimport { ProjectRaw } from \"./models\";\n\nconst prefix = \"api/projects\";\n\nexport const getProjectsForCurrentUser = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/current-user`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getSubscriptionsForCurrentUser = async (): Promise => {\n try {\n const res = await api().get(\n `${prefix}/current-user/subscriptions`\n );\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n","import FetchFactory from \"vuex-fetch-factory\";\nimport { StateInterface } from \"./state\";\nimport { ProjectRaw, ProjectModel } from \"../models\";\nimport {\n getProjectsForCurrentUser,\n getSubscriptionsForCurrentUser\n} from \"../api\";\nimport { setProjectsHandle, setSubscriptionsHandle } from \"./mutations\";\n\nconst factory = new FetchFactory();\n\nexport default {\n fetchProjects: factory.createBulkFetcher<{}, ProjectRaw, ProjectModel>(\n true,\n setProjectsHandle,\n getProjectsForCurrentUser,\n (): ProjectModel => new ProjectModel()\n ),\n fetchSubscriptions: factory.createBulkFetcher<{}, ProjectRaw, ProjectModel>(\n true,\n setSubscriptionsHandle,\n getSubscriptionsForCurrentUser,\n (): ProjectModel => new ProjectModel()\n )\n};\n","import state from \"./state\";\nimport mutations from \"./mutations\";\nimport getters from \"./getters\";\nimport actions from \"./actions\";\n\nexport default {\n namespaced: true,\n\n state,\n mutations,\n getters,\n actions\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { ModuleManifest } from \"shared/bootstrap\";\nimport store from \"modules/projects/store\";\nimport publicLocale from \"./i18n/public.json\";\n\nconst manifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"my-subscriptions\" },\n title: \"projects.menuItems.mySubscriptions\",\n icon: \"redo\",\n hideNoAuth: true\n },\n {\n to: { name: \"my-projects\" },\n title: \"projects.menuItems.myProjects\",\n icon: \"project-diagram\",\n hideNoAuth: true\n }\n ],\n routes: [\n {\n path: \"/mijn-abonnementen\",\n name: \"my-subscriptions\",\n meta: {\n auth: true,\n title: \"projects.menuItems.mySubscriptions\"\n },\n component: () => import(\"./pages/MySubscriptions.vue\")\n },\n {\n path: \"/mijn-projecten\",\n name: \"my-projects\",\n meta: {\n auth: true,\n title: \"projects.menuItems.myProjects\"\n },\n component: () => import(\"./pages/MyProjects.vue\")\n }\n ],\n storeModules: {\n projects: store\n },\n widgets: [\n {\n name: \"ProjectInfo\",\n component: () => import(\"./widgets/ProjectInfo.vue\")\n },\n {\n name: \"SubscriptionInfo\",\n component: () => import(\"./widgets/SubscriptionInfo.vue\")\n }\n ],\n localisation: { key: \"projects\", messages: publicLocale }\n};\n\nexport default manifest;\n","import { RequestState } from \"vuex-fetch-factory\";\nimport { ManualModel } from \"../models\";\n\nexport interface StateInterface {\n vuexFetchersState: Map>;\n manuals: ManualModel[];\n}\n\nconst state: StateInterface = {\n vuexFetchersState: new Map(),\n manuals: []\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\nimport { ManualModel } from \"../models\";\n\nexport const setManualsHandle = \"setManuals\";\n\nexport default {\n [setManualsHandle](state: StateInterface, manuals: ManualModel[]): void {\n state.manuals = manuals;\n }\n};\n","import { StateInterface } from \"./state\";\nimport { ManualModel } from \"../models\";\n\nexport default {\n allManuals(state: StateInterface): ManualModel[] {\n return state.manuals;\n },\n allTags(state: StateInterface): string[] {\n const hash: { [key: string]: boolean } = {};\n const allTags: string[] = [];\n for (let manual of state.manuals) {\n if (manual.tags === null) continue;\n for (let tag of manual.tags) {\n if (hash[tag] === true) continue;\n allTags.push(tag);\n hash[tag] = true;\n }\n }\n return allTags.sort();\n }\n};\n","import FetchFactory from \"vuex-fetch-factory\";\nimport { StateInterface } from \"./state\";\nimport { ManualRaw, ManualModel } from \"../models\";\nimport { getManuals } from \"../api\";\nimport { setManualsHandle } from \"./mutations\";\n\nconst factory = new FetchFactory();\n\nexport default {\n fetchManuals: factory.createBulkFetcher<{}, ManualRaw, ManualModel>(\n false,\n setManualsHandle,\n getManuals,\n (): ManualModel => new ManualModel()\n ),\n forceFetchManuals: factory.createBulkFetcher<{}, ManualRaw, ManualModel>(\n true,\n setManualsHandle,\n getManuals,\n (): ManualModel => new ManualModel()\n )\n};\n","import state from \"./state\";\nimport mutations from \"./mutations\";\nimport getters from \"./getters\";\nimport actions from \"./actions\";\n\nexport default {\n namespaced: true,\n\n state,\n mutations,\n getters,\n actions\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { ModuleManifest } from \"shared/bootstrap\";\nimport store from \"modules/manuals/store\";\nimport publicLocale from \"./i18n/public.json\";\nimport adminLocale from \"./i18n/admin.json\";\n\nconst manifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"manuals\" },\n title: \"manuals.menuItems.manuals\",\n icon: \"book\",\n hideNoAuth: true\n }\n ],\n routes: [\n {\n path: \"/handleidingen\",\n name: \"manuals\",\n meta: {\n auth: true,\n title: \"manuals.menuItems.manuals\"\n },\n component: () => import(\"./pages/Manuals.vue\")\n }\n ],\n storeModules: {\n manual: store\n },\n localisation: { key: \"manuals\", messages: publicLocale }\n};\n\nexport default manifest;\n\nexport const AdminManifest = {\n menuItems: [\n {\n to: { name: \"manuals\" },\n title: \"manuals.menuItems.manuals\",\n icon: \"book\"\n }\n ],\n routes: [\n {\n path: \"/handleidingen\",\n name: \"manuals\",\n component: () => import(\"./pages/Manuals.vue\"),\n meta: {\n editMode: true,\n title: \"manuals.menuItems.manuals\"\n }\n }\n ],\n storeModules: {\n manual: store\n },\n localisation: { key: \"manuals\", messages: adminLocale }\n};\n","import { ModuleManifest } from \"shared/bootstrap\";\nimport { VuePlugins } from \"shared/bootstrap/types\";\nimport publicLocale from \"./i18n/public.json\";\nimport adminLocale from \"./i18n/admin.json\";\n\nconst manifest: ModuleManifest = {\n localisation: { key: \"feedback\", messages: publicLocale }\n};\nexport default manifest;\n\nexport const AdminManifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"feedback\" },\n title: \"feedback.menuItems.feedback\",\n icon: \"bullhorn\"\n }\n ],\n routes: [\n {\n path: \"/feedback\",\n name: \"feedback\",\n meta: {\n title: \"feedback.menuItems.feedback\"\n },\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n component: () => import(\"./pages/Feedback.vue\")\n }\n ],\n vuePlugins: [VuePlugins.CompendaIntegration],\n localisation: { key: \"feedback\", messages: adminLocale }\n};\n","import { Type } from \"../models/message\";\n\nexport interface StateInterface {\n visible: boolean;\n type: Type | \"\";\n}\n\nconst state: StateInterface = {\n visible: false,\n type: \"\"\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\nimport { Type } from \"../models/message\";\n\nexport default {\n open(state: StateInterface, type: Type): void {\n state.visible = true;\n state.type = type;\n },\n close(state: StateInterface): void {\n state.visible = false;\n state.type = \"\";\n }\n};\n","import state from \"./state\";\nimport mutations from \"./mutations\";\n\nexport default {\n namespaced: true,\n\n state,\n mutations\n};\n","import { ModuleManifest } from \"shared/bootstrap\";\nimport store from \"./store\";\nimport publicLocale from \"./i18n/public.json\";\nimport adminLocale from \"./i18n/admin.json\";\nimport { VuePlugins } from \"shared/bootstrap/types\";\n\nconst manifest: ModuleManifest = {\n storeModules: {\n contact: store\n },\n localisation: { key: \"contact\", messages: publicLocale }\n};\n\nexport default manifest;\n\nexport const AdminManifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"messages\" },\n title: \"contact.menuItems.messages\",\n icon: \"envelope\"\n }\n ],\n routes: [\n {\n path: \"/messages\",\n name: \"messages\",\n meta: {\n title: \"contact.menuItems.messages\"\n },\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n component: () => import(\"./pages/MessagesOverview.vue\")\n }\n ],\n vuePlugins: [VuePlugins.CompendaIntegration],\n localisation: { key: \"contact\", messages: adminLocale }\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { ModuleManifest } from \"shared/bootstrap\";\nimport publicLocale from \"./i18n/public.json\";\n\nconst manifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"credentials\" },\n title: \"credentials.menuItems.credentials\",\n icon: \"fingerprint\",\n hideNoAuth: true\n }\n ],\n routes: [\n {\n path: \"/credentials\",\n name: \"credentials\",\n meta: {\n auth: true,\n title: \"credentials.menuItems.credentials\"\n },\n component: () => import(\"./pages/Credentials.vue\")\n }\n ],\n localisation: { key: \"credentials\", messages: publicLocale }\n};\n\nexport default manifest;\n","import { RequestState } from \"vuex-fetch-factory\";\nimport { InvoiceModel, AccessLogUserModel } from \"../models\";\n\nexport interface StateInterface {\n vuexFetchersState: Map>;\n invoices: InvoiceModel[];\n accessLogs: AccessLogUserModel[];\n}\n\nconst state: StateInterface = {\n vuexFetchersState: new Map(),\n invoices: [],\n accessLogs: []\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\nimport { InvoiceModel, AccessLogUserModel } from \"../models\";\n\nexport const setInvoicesHandle = \"setInvoices\";\nexport const setAccessLogsHandle = \"setAccessLogs\";\n\nexport default {\n [setInvoicesHandle](state: StateInterface, invoices: InvoiceModel[]): void {\n state.invoices = invoices;\n },\n [setAccessLogsHandle](\n state: StateInterface,\n accessLogs: AccessLogUserModel[]\n ): void {\n state.accessLogs = accessLogs;\n }\n};\n","import { StateInterface } from \"./state\";\nimport { AccessLogUserModel, InvoiceModel } from \"../models\";\n\nexport default {\n allInvoices(state: StateInterface): InvoiceModel[] {\n return state.invoices;\n },\n lastFive(state: StateInterface): InvoiceModel[] {\n return state.invoices\n .sort((a, b): number => {\n if (a.invoice_id > b.invoice_id) return -1;\n if (a.invoice_id < b.invoice_id) return 1;\n return 0;\n })\n .slice(0, 5);\n },\n allAccessLogs(state: StateInterface): AccessLogUserModel[] {\n return state.accessLogs;\n }\n};\n","import { Model } from \"vuex-fetch-factory\";\n\nexport interface InvoiceRaw {\n relation_id: number;\n invoice_id: number;\n invoice_date: string;\n expiration_date: string;\n amount: number;\n outstanding: number;\n}\n\nexport class InvoiceModel implements Model {\n public relation_id = 0;\n public invoice_id = 0;\n public invoice_date = \"\";\n public expiration_date = \"\";\n public amount = 0;\n public outstanding = 0;\n\n public getNew(): InvoiceModel {\n return new InvoiceModel();\n }\n\n public fillModel(raw: InvoiceRaw): this {\n this.relation_id = raw.relation_id;\n this.invoice_id = raw.invoice_id;\n this.invoice_date = raw.invoice_date;\n this.expiration_date = raw.expiration_date;\n this.amount = raw.amount;\n this.outstanding = raw.outstanding;\n return this;\n }\n\n public getRaw(): InvoiceRaw {\n return {\n relation_id: this.relation_id,\n invoice_id: this.invoice_id,\n invoice_date: this.invoice_date,\n expiration_date: this.expiration_date,\n amount: this.amount,\n outstanding: this.outstanding\n };\n }\n\n public get url(): string {\n return `api/invoices/${this.invoice_id}/pdf/Factuur ${this.invoice_id}.pdf`;\n }\n}\n","import { Model } from \"vuex-fetch-factory\";\n\nexport interface AccessLogEntryRaw {\n relation_id: number;\n invoice_id: string;\n created_at: Date;\n}\n\nexport class AccessLogEntryModel\n implements Model {\n public relation_id = 0;\n public invoice_id = \"\";\n public created_at = new Date();\n\n public getNew(): AccessLogEntryModel {\n return new AccessLogEntryModel();\n }\n\n public fillModel(raw: AccessLogEntryRaw): this {\n this.relation_id = raw.relation_id;\n this.invoice_id = raw.invoice_id;\n this.created_at = raw.created_at;\n return this;\n }\n\n public getRaw(): AccessLogEntryRaw {\n return {\n relation_id: this.relation_id,\n invoice_id: this.invoice_id,\n created_at: this.created_at\n };\n }\n}\n","import { Model } from \"vuex-fetch-factory\";\nimport { AccessLogEntryRaw, AccessLogEntryModel } from \"./accessLogEntry\";\nimport { User, RelationType } from \"shared/store/auth/types\";\n\nexport interface AccessLogUserRaw extends User {\n entries: AccessLogEntryRaw[];\n}\n\nexport class AccessLogUserModel\n implements Model {\n public id = 0;\n public representee_id = 0;\n public first_name = \"\";\n public last_name = \"\";\n public organisation_name = \"\";\n public email_address = \"\";\n public relation_type: RelationType = RelationType.private;\n public entries: AccessLogEntryModel[] = [];\n\n public getNew(): AccessLogUserModel {\n return new AccessLogUserModel();\n }\n\n public fillModel(raw: AccessLogUserRaw): this {\n this.id = raw.id;\n this.representee_id = raw.representee_id;\n this.first_name = raw.first_name;\n this.last_name = raw.last_name;\n this.organisation_name = raw.organisation_name;\n this.email_address = raw.email_address;\n this.relation_type = raw.relation_type;\n this.entries = raw.entries.map(\n (e): AccessLogEntryModel => {\n const model = new AccessLogEntryModel();\n model.fillModel(e);\n return model;\n }\n );\n\n return this;\n }\n\n public getRaw(): AccessLogUserRaw {\n return {\n id: this.id,\n representee_id: this.representee_id,\n first_name: this.first_name,\n last_name: this.last_name,\n organisation_name: this.organisation_name,\n email_address: this.email_address,\n relation_type: this.relation_type,\n entries: this.entries.map((e): AccessLogEntryRaw => e.getRaw())\n };\n }\n\n public get full_name(): string {\n return this.first_name + \" \" + this.last_name;\n }\n}\n","import api from \"shared/api\";\nimport { InvoiceRaw, AccessLogUserRaw } from \"./models\";\n\nconst prefix = \"api/invoices\";\n\nexport const getInvoicesForCurrentUser = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/current-user`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getAccessLogs = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/access-logs`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n","import FetchFactory from \"vuex-fetch-factory\";\nimport { StateInterface } from \"./state\";\nimport {\n InvoiceRaw,\n InvoiceModel,\n AccessLogUserModel,\n AccessLogUserRaw\n} from \"../models\";\nimport { getInvoicesForCurrentUser, getAccessLogs } from \"../api\";\nimport { setInvoicesHandle, setAccessLogsHandle } from \"./mutations\";\n\nconst factory = new FetchFactory();\n\nexport default {\n fetchInvoices: factory.createBulkFetcher<{}, InvoiceRaw, InvoiceModel>(\n true,\n setInvoicesHandle,\n getInvoicesForCurrentUser,\n (): InvoiceModel => new InvoiceModel()\n ),\n fetchAccessLogs: factory.createBulkFetcher<\n {},\n AccessLogUserRaw,\n AccessLogUserModel\n >(\n true,\n setAccessLogsHandle,\n getAccessLogs,\n (): AccessLogUserModel => new AccessLogUserModel()\n )\n};\n","import state from \"./state\";\nimport mutations from \"./mutations\";\nimport getters from \"./getters\";\nimport actions from \"./actions\";\n\nexport default {\n namespaced: true,\n\n state,\n mutations,\n getters,\n actions\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { ModuleManifest } from \"shared/bootstrap\";\nimport store from \"./store\";\nimport { VuePlugins } from \"shared/bootstrap/types\";\nimport publicLocale from \"./i18n/public.json\";\nimport adminLocale from \"./i18n/admin.json\";\n\nconst manifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"my-invoices\" },\n title: \"invoices.menuItems.myInvoices\",\n icon: \"file-invoice\",\n hideNoAuth: true\n }\n ],\n routes: [\n {\n path: \"/mijn-facturen\",\n name: \"my-invoices\",\n meta: {\n auth: true,\n title: \"invoices.menuItems.myInvoices\"\n },\n component: () => import(\"./pages/MyInvoices.vue\")\n }\n ],\n storeModules: {\n invoices: store\n },\n widgets: [\n {\n name: \"InvoiceInfo\",\n component: () => import(\"./widgets/InvoiceInfo.vue\")\n }\n ],\n localisation: { key: \"invoices\", messages: publicLocale }\n};\n\nexport default manifest;\n\nexport const AdminManifest: ModuleManifest = {\n menuItems: [\n {\n to: { name: \"invoice-access-logs\" },\n title: \"invoices.menuItems.invoiceAccessLogs\",\n icon: \"file-invoice\"\n }\n ],\n routes: [\n {\n path: \"/factuur-downloads\",\n name: \"invoice-access-logs\",\n component: () => import(\"./pages/AccessLogs.vue\"),\n meta: {\n title: \"invoices.menuItems.invoiceAccessLogs\"\n }\n }\n ],\n storeModules: {\n invoices: store\n },\n vuePlugins: [VuePlugins.CompendaIntegration],\n localisation: { key: \"invoices\", messages: adminLocale }\n};\n","export interface StateInterface {\n loaded: boolean;\n}\n\nconst state: StateInterface = {\n loaded: false\n};\n\nexport default state;\n","import { StateInterface } from \"./state\";\n\nexport default {\n loaded(state: StateInterface): void {\n state.loaded = true;\n }\n};\n","import state from \"./state\";\nimport mutations from \"./mutations\";\n\nexport default {\n namespaced: true,\n\n state,\n mutations\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { ModuleManifest } from \"shared/bootstrap\";\nimport store from \"./store\";\n\nconst manifest: ModuleManifest = {\n storeModules: {\n c3x: store\n }\n};\n\nexport default manifest;\n","import bootstrap from \"shared/bootstrap\";\nimport baseManifest from \"modules/base\";\nimport portalManifest from \"./portal-manifest\";\nimport envLoader from \"shared/env-loader\";\nimport relationprofile from \"modules/relationprofile\";\nimport projects from \"modules/projects\";\nimport manuals from \"modules/manuals\";\nimport feedback from \"modules/feedback\";\nimport contact from \"modules/contact\";\nimport credentials from \"customer-modules/b2bplaza/credentials\";\nimport invoices from \"customer-modules/b2bplaza/invoices\";\nimport c3x from \"customer-modules/b2bplaza/c3x\";\n\nconst vuetify = {\n theme: {\n primary: \"#2f71a6\",\n secondary: \"#5c95ba\",\n accent: \"#91c61c\",\n error: \"#f44336\",\n warning: \"#ffeb3b\",\n info: \"#2196f3\",\n success: \"#4caf50\"\n }\n};\n\nbootstrap({\n title: \"Mijn B2B Plaza\",\n vuetify,\n modules: [\n baseManifest,\n portalManifest,\n relationprofile,\n projects,\n invoices,\n credentials,\n manuals,\n feedback,\n contact,\n c3x\n ],\n axios: {\n baseURL: envLoader(\"API_URL\", \"/\"),\n withCredentials: true\n },\n customToolbar: [\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n () => import(\"../../modules/feedback/components/ToolbarFeedbackAction.vue\"),\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n () => import(\"../../modules/contact/components/GlobalContactButton.vue\"),\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n () => import(\"../../customer-modules/b2bplaza/c3x/components/ButtonLoader\")\n ]\n});\n","import { Model } from \"vuex-fetch-factory\";\n\nexport interface FileEntryRaw {\n source: string;\n relation_id: number;\n project: string;\n archive_id: number;\n description: string;\n category: string;\n archive_date: string;\n extension: string;\n}\n\nexport class FileEntryModel implements Model {\n public source = \"\";\n public relation_id = 0;\n public project = \"\";\n public archive_id = 0;\n public description = \"\";\n public category = \"\";\n public archive_date = \"\";\n public extension = \"\";\n\n public getNew(): FileEntryModel {\n return new FileEntryModel();\n }\n\n public fillModel(raw: FileEntryRaw): this {\n this.source = raw.source;\n this.relation_id = raw.relation_id;\n this.project = raw.project;\n this.archive_id = raw.archive_id;\n this.description = raw.description;\n this.category = raw.category;\n this.archive_date = raw.archive_date;\n this.extension = raw.extension;\n\n return this;\n }\n\n public getRaw(): FileEntryRaw {\n return {\n source: this.source,\n relation_id: this.relation_id,\n project: this.project,\n archive_id: this.archive_id,\n description: this.description,\n category: this.category,\n archive_date: this.archive_date,\n extension: this.extension\n };\n }\n\n public get link(): string {\n const l = `api/relationprofile/me/archive/${\n this.archive_id\n }/download/${encodeURI(this.description)}`;\n\n if (l.endsWith(\".\" + this.extension)) return l;\n return l + \".\" + this.extension;\n }\n}\n","import { Model } from \"vuex-fetch-factory\";\nimport { AddressRaw, AddressModel } from \"./address\";\n\nexport interface PrivatePersonRaw {\n id: number;\n first_name: string;\n last_name: string;\n gender: string;\n email_address: string;\n phone_number: string;\n mobile_phone_number: string;\n relation_admin: string;\n addresses: AddressRaw[];\n}\n\nexport class PrivatePersonModel\n implements Model {\n public id: number = 0;\n public first_name: string = \"\";\n public last_name: string = \"\";\n public gender: string = \"\";\n public email_address: string = \"\";\n public phone_number: string = \"\";\n public mobile_phone_number: string = \"\";\n public relation_admin: string = \"\";\n public addresses: AddressModel[] = [];\n\n public getNew(): PrivatePersonModel {\n return new PrivatePersonModel();\n }\n\n public fillModel(raw: PrivatePersonRaw): this {\n this.id = raw.id;\n this.first_name = raw.first_name;\n this.last_name = raw.last_name;\n this.gender = raw.gender;\n this.email_address = raw.email_address;\n this.phone_number = raw.phone_number;\n this.mobile_phone_number = raw.mobile_phone_number;\n this.relation_admin = raw.relation_admin;\n\n raw.addresses.forEach((c): void => {\n const model = new AddressModel();\n model.fillModel(c);\n this.addresses.push(model);\n });\n return this;\n }\n\n public getRaw(): PrivatePersonRaw {\n return {\n id: this.id,\n first_name: this.first_name,\n last_name: this.last_name,\n gender: this.gender,\n email_address: this.email_address,\n phone_number: this.phone_number,\n mobile_phone_number: this.mobile_phone_number,\n relation_admin: this.relation_admin,\n addresses: this.addresses.map((cm): AddressRaw => cm.getRaw())\n };\n }\n}\n","export interface User {\n id: number;\n representee_id: number;\n first_name: string;\n last_name: string;\n organisation_name: string;\n email_address: string;\n relation_type: RelationType;\n}\n\nexport enum RelationType {\n contact = \"contact\",\n private = \"private\"\n}\n\nexport interface StateInterface {\n loggedIn: boolean;\n profile: User;\n}\n","import api from \"shared/api\";\nimport { OrganisationRaw } from \"./models\";\nimport { PrivatePersonRaw } from \"./models/privatePerson\";\nimport { FileEntryRaw } from \"./models/fileEntry\";\n\nconst prefix = \"api/relationprofile\";\n\nexport const getOrganisationForCurrentUser = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/me/organisation`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getPrivatePersonForCurrentUser = async (): Promise => {\n try {\n const res = await api().get(\n `${prefix}/me/private-person`\n );\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getFileEntries = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/me/archive`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getFrontendConfig = async (): Promise<{\n archive_enable: boolean;\n archive_show_project_files: boolean;\n}> => {\n try {\n const res = await api().get<{\n archive_enable: boolean;\n archive_show_project_files: boolean;\n }>(`${prefix}/frontend-config`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n","import { Model } from \"vuex-fetch-factory\";\n\nexport enum AddressType {\n business = \"business\",\n post = \"post\",\n invoice = \"invoice\",\n delivery = \"delivery\"\n}\n\nexport interface AddressRaw {\n relation_id: number;\n type: AddressType;\n internal_line: string;\n internal_line2: string;\n street: string;\n house_number: number;\n house_number_suffix: string;\n town: string;\n postal_code: string;\n country: string;\n}\n\nexport class AddressModel implements Model {\n public relation_id = 0;\n public type: AddressType = AddressType.business;\n public internal_line = \"\";\n public internal_line2 = \"\";\n public street = \"\";\n public house_number = 0;\n public house_number_suffix = \"\";\n public town = \"\";\n public postal_code = \"\";\n public country = \"\";\n\n public getNew(): AddressModel {\n return new AddressModel();\n }\n\n public fillModel(raw: AddressRaw): this {\n this.relation_id = raw.relation_id;\n this.type = raw.type;\n this.internal_line = raw.internal_line;\n this.internal_line2 = raw.internal_line2;\n this.street = raw.street;\n this.house_number = raw.house_number;\n this.house_number_suffix = raw.house_number_suffix;\n this.town = raw.town;\n this.postal_code = raw.postal_code;\n this.country = raw.country;\n return this;\n }\n\n public getRaw(): AddressRaw {\n return {\n relation_id: this.relation_id,\n type: this.type,\n internal_line: this.internal_line,\n internal_line2: this.internal_line2,\n street: this.street,\n house_number: this.house_number,\n house_number_suffix: this.house_number_suffix,\n town: this.town,\n postal_code: this.postal_code,\n country: this.country\n };\n }\n}\n","import api from \"shared/api\";\nimport { ManualRaw } from \"./models\";\nimport { AxiosPromise } from \"axios\";\n\nconst prefix = \"api/manuals\";\n\nexport interface PostManualRequest {\n name: string;\n description: string;\n tags: string[] | null;\n}\ninterface PostManualResponse {\n id: number;\n}\n\nexport const getManuals = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/list`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getBlob = async (url: string): Promise => {\n try {\n const res = await api().get(url, { responseType: \"blob\" });\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getNonCachedBlob = async (url: string): Promise => {\n url += \"?ts=\" + new Date().getTime();\n return getBlob(url);\n};\n\nexport const postManual = async (\n payload: PostManualRequest\n): Promise => {\n try {\n const res = await api().post(`${prefix}/new`, payload);\n return res.data.id;\n } catch (e) {\n throw e;\n }\n};\n\nexport const postThumbnail = async (id: number, file: File): Promise => {\n try {\n const formData = new FormData();\n formData.append(\"thumbnail\", file);\n\n await api().post(`${prefix}/${id}/thumbnail`, formData, {\n headers: { \"content-type\": \"multipart/form-data\" }\n });\n } catch (e) {\n throw e;\n }\n};\n\nexport const postPdf = async (id: number, file: File): Promise => {\n try {\n const formData = new FormData();\n formData.append(\"pdf\", file);\n\n api().post(`${prefix}/${id}/pdf`, formData, {\n headers: { \"content-type\": \"multipart/form-data\" }\n });\n } catch (e) {\n throw e;\n }\n};\n\nexport const putManual = async (\n id: number,\n payload: PostManualRequest\n): Promise => {\n try {\n const res = await api().put(`${prefix}/${id}`, payload);\n return res.data.id;\n } catch (e) {\n throw e;\n }\n};\n\nexport const deleteManual = (id: number): AxiosPromise => {\n return api().delete(`${prefix}/${id}`);\n};\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--5-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainMenu.vue?vue&type=style&index=0&id=a6da57b2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--5-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainMenu.vue?vue&type=style&index=0&id=a6da57b2&scoped=true&lang=css&\"","import { Model } from \"vuex-fetch-factory\";\n\nexport interface ContactRaw {\n id: number;\n organisation_id: number;\n first_name: string;\n last_name: string;\n gender: string;\n phone_number: string;\n mobile_phone_number: string;\n main_contact: boolean;\n email_address: string;\n access: boolean;\n}\n\nexport class ContactModel implements Model {\n public id: number = 0;\n public organisation_id: number = 0;\n public first_name: string = \"\";\n public last_name: string = \"\";\n public gender: string = \"\";\n public phone_number: string = \"\";\n public mobile_phone_number: string = \"\";\n public main_contact: boolean = false;\n public email_address: string = \"\";\n public access: boolean = false;\n\n public getNew(): ContactModel {\n return new ContactModel();\n }\n\n public fillModel(raw: ContactRaw): this {\n this.id = raw.id;\n this.organisation_id = raw.organisation_id;\n this.first_name = raw.first_name;\n this.last_name = raw.last_name;\n this.gender = raw.gender;\n this.phone_number = raw.phone_number;\n this.mobile_phone_number = raw.mobile_phone_number;\n this.main_contact = raw.main_contact;\n this.email_address = raw.email_address;\n this.access = raw.access;\n return this;\n }\n\n public getRaw(): ContactRaw {\n return {\n id: this.id,\n organisation_id: this.organisation_id,\n first_name: this.first_name,\n last_name: this.last_name,\n gender: this.gender,\n phone_number: this.phone_number,\n mobile_phone_number: this.mobile_phone_number,\n main_contact: this.main_contact,\n email_address: this.email_address,\n access: this.access\n };\n }\n\n public get full_name(): string {\n return `${this.first_name} ${this.last_name}`;\n }\n}\n","import { Model } from \"vuex-fetch-factory\";\nimport { ContactRaw, ContactModel } from \"./contact\";\nimport { AddressRaw, AddressModel } from \"./address\";\n\nexport interface OrganisationRaw {\n id: number;\n name: string;\n email_address: string;\n phone_number: string;\n mobile_phone_number: string;\n main_contact: number;\n relation_admin: string;\n contacts: ContactRaw[];\n addresses: AddressRaw[];\n}\n\nexport class OrganisationModel\n implements Model {\n public id: number = 0;\n public name: string = \"\";\n public email_address: string = \"\";\n public phone_number: string = \"\";\n public mobile_phone_number: string = \"\";\n public main_contact: number = 0;\n public relation_admin: string = \"\";\n public contacts: ContactModel[] = [];\n public addresses: AddressModel[] = [];\n\n public getNew(): OrganisationModel {\n return new OrganisationModel();\n }\n\n public fillModel(raw: OrganisationRaw): this {\n this.id = raw.id;\n this.name = raw.name;\n this.email_address = raw.email_address;\n this.phone_number = raw.phone_number;\n this.mobile_phone_number = raw.mobile_phone_number;\n this.main_contact = raw.main_contact;\n this.relation_admin = raw.relation_admin;\n\n raw.contacts.forEach((c): void => {\n const model = new ContactModel();\n model.fillModel(c);\n this.contacts.push(model);\n });\n raw.addresses.forEach((c): void => {\n const model = new AddressModel();\n model.fillModel(c);\n this.addresses.push(model);\n });\n return this;\n }\n\n public getRaw(): OrganisationRaw {\n return {\n id: this.id,\n name: this.name,\n email_address: this.email_address,\n phone_number: this.phone_number,\n mobile_phone_number: this.mobile_phone_number,\n main_contact: this.main_contact,\n relation_admin: this.relation_admin,\n contacts: this.contacts.map((cm): ContactRaw => cm.getRaw()),\n addresses: this.addresses.map((cm): AddressRaw => cm.getRaw())\n };\n }\n}\n","export default function(key: string, fallback?: string): string {\n const prefixedKey = `VUE_APP_` + key;\n const env = String(process.env[prefixedKey]);\n if (env == ``) {\n return fallback === undefined ? \"\" : fallback;\n }\n return env;\n}\n","import api from \"shared/api\";\nimport { User } from \"shared/store/auth/types\";\nimport { AxiosPromise } from \"axios\";\n\nconst prefix = \"api/base\";\n\nexport interface UserLoginStats extends User {\n last_login: Date;\n times_logged_in: number;\n}\n\nexport interface WallpaperInfo {\n image_url: string;\n name: string;\n referral_url: string;\n unsplash_url: string;\n}\n\nexport interface Link {\n link: string;\n}\n\nexport const postRequestMagicLink = (\n email_address: string\n): AxiosPromise => {\n return api().post(`${prefix}/auth/request-magic-link`, { email_address });\n};\n\nexport const postProcessMagicLink = (token: string): AxiosPromise => {\n return api().post(`${prefix}/auth/process-magic-link`, { token });\n};\n\nexport const postLoggedOut = (): AxiosPromise => {\n return api().post(`${prefix}/auth/logout`);\n};\n\nexport const getUserLoginStats = async (): Promise => {\n try {\n const res = await api().get(`${prefix}/auth/stats`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getImpersonateLink = async (userId: number): Promise => {\n try {\n const res = await api().get(`${prefix}/auth/impersonate/${userId}`);\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n\nexport const getWallpaper = async (\n orientation: string\n): Promise => {\n try {\n const res = await api().get(\n `${prefix}/wallpaper/${orientation}`\n );\n return res.data;\n } catch (e) {\n throw e;\n }\n};\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--10-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandedFooter.vue?vue&type=style&index=0&id=13ad38ec&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--10-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandedFooter.vue?vue&type=style&index=0&id=13ad38ec&lang=stylus&scoped=true&\"","import { Model } from \"vuex-fetch-factory\";\nimport { PostManualRequest } from \"../api\";\n\nexport interface ManualRaw {\n id: number;\n name: string;\n description: string;\n tags: string[] | null;\n thumbnail: string;\n download_link: string;\n}\n\nexport class ManualModel implements Model {\n public id = 0;\n public name = \"\";\n public description = \"\";\n public tags: string[] | null = [];\n public thumbnail = \"\";\n public download_link = \"\";\n\n public getNew(): ManualModel {\n return new ManualModel();\n }\n\n public fillModel(raw: ManualRaw): this {\n this.id = raw.id;\n this.name = raw.name;\n this.description = raw.description;\n this.tags = raw.tags;\n this.thumbnail = raw.thumbnail;\n this.download_link = raw.download_link;\n return this;\n }\n\n public getRaw(): ManualRaw {\n return {\n id: this.id,\n name: this.name,\n description: this.description,\n tags: this.tags,\n thumbnail: this.thumbnail,\n download_link: this.download_link\n };\n }\n\n public getIPostManualRequest(): PostManualRequest {\n return {\n name: this.name,\n description: this.description,\n tags: this.tags\n };\n }\n\n public getCopy(): ManualModel {\n return new ManualModel().fillModel(this.getRaw());\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--5-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaIcon.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--5-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaIcon.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--5-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamePlate.vue?vue&type=style&index=0&id=206ef518&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--5-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamePlate.vue?vue&type=style&index=0&id=206ef518&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-icon',{class:{\n 'custom-icon-bg': _vm.value.endsWith(' bg'),\n 'custom-icon-md': _vm.value.endsWith(' md'),\n 'custom-icon-sm': _vm.value.endsWith(' sm'),\n 'custom-icon-i': _vm.value.startsWith('icon-')\n },domProps:{\"innerHTML\":_vm._s(_vm.vHtml)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class FaIcon extends Vue {\n @Prop({ required: true })\n value!: string;\n\n @Prop() fas: string | boolean | undefined;\n\n @Prop() far: string | boolean | undefined;\n\n @Prop() fal: string | boolean | undefined;\n\n get vHtml() {\n let icon = this.value;\n\n // custom logos\n if (icon.startsWith(\"icon-\")) {\n return icon;\n }\n\n if (!icon.startsWith(\"fa-\")) {\n icon = `fa-${icon}`;\n }\n\n return `${this.type} ${icon}`;\n }\n\n get type() {\n if (this.isTrue(this.fas)) return `fas`;\n if (this.isTrue(this.far)) return `far`;\n if (this.isTrue(this.fal)) return `fal`;\n return `fal`;\n }\n\n isTrue(val: string | boolean | undefined) {\n if (typeof val === \"boolean\") return val;\n if (val === \"\" || val === \"true\") return true;\n return false;\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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaIcon.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/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FaIcon.vue?vue&type=template&id=4279c079&\"\nimport script from \"./FaIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./FaIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FaIcon.vue?vue&type=style&index=0&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 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 { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","import axios, { AxiosRequestConfig, AxiosInstance } from \"axios\";\nimport { User } from \"shared/store/auth/types\";\nimport { ServerSideConfig } from \"shared/bootstrap/types\";\nimport { LocaleMessages } from \"vue-i18n\";\n\nlet client = axios.create();\n\nexport default (): AxiosInstance => client;\n\nexport const setupClient = (config: AxiosRequestConfig): void => {\n client = axios.create(config);\n};\n\nexport interface GlobalInfo {\n logged_in: boolean;\n user_id: string;\n}\n\nexport const getGlobalInfo = async (): Promise => {\n const res = await client.get(`api/global-info`);\n return res.data;\n};\n\nexport const getProfile = async (): Promise => {\n const res = await client.get(`api/base/auth/profile`);\n return res.data;\n};\n\nexport const getServerSideConfig = async (): Promise => {\n const res = await client.get(`api/base/frontend-config`);\n return res.data;\n};\n\nexport const getTranslations = async (\n lang: string\n): Promise => {\n const res = await client.get(`api/base/translations/` + lang);\n return res.data;\n};\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--10-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=style&index=0&id=6fa0f40c&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--10-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=style&index=0&id=6fa0f40c&lang=stylus&scoped=true&\"","import { TComponent } from \"shared/bootstrap\";\n\nexport interface Widget {\n name: string;\n component: TComponent;\n}\n\nconst widgets: { [key: string]: TComponent } = {};\n\nexport default widgets;\n\nexport const registerWidget = (widget: Widget): void => {\n if (widgets.hasOwnProperty(widget.name))\n throw `widget with name: ${widget.name} already exists`;\n widgets[widget.name] = widget.component;\n};\n\nexport const registerWidgets = (widgets: Widget[]): void => {\n widgets.forEach((w): void => registerWidget(w));\n};\n"],"sourceRoot":""}