{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Logo/Logo.css?7090","webpack:///./src/components/LanguagePicker/LanguagePicker.scss?f55d","webpack:///./src/store/index.ts","webpack:///./src/assets/logos sync ^\\.\\/.*\\.jpg$","webpack:///./src/components/Loader/Loader.scss?929f","webpack:///./src/assets/icons/csm_picto_sein.png","webpack:///./src/locale sync nonrecursive [A-Za-z0-9-_,\\s]+\\.json$/","webpack:///./src/components/MobileMenu/MobileMenu.scss?451f","webpack:///./src/locale/su lazy ^\\.\\/.*\\.json$ namespace object","webpack:///./src/services/user.service.ts","webpack:///./src/components/MoreInfo/MoreInfo.scss?179a","webpack:///./src/components/ModalTemplate/ModalTemplate.scss?de96","webpack:///./src/assets/logos/vs.jpg","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/logos sync ^\\.\\/.*\\.png$","webpack:///./src/assets/icons/logout.svg","webpack:///./src/assets/logos/default.png","webpack:///./src/models/constants/McsisRole.ts","webpack:///./src/assets/logos/fr.svg","webpack:///./src/exceptions/api.error.ts","webpack:///./src/utils/notification.ts","webpack:///./src/utils/blobconverter.ts","webpack:///./src/utils/api.handler.ts","webpack:///./src/services/api.service.ts","webpack:///./src/assets/logos/ti.jpg","webpack:///./src/assets/icons/close.svg","webpack:///./src/components/ModalTemplate/ModalTemplate.vue?d1eb","webpack:///./src/components/ModalTemplate/ModalTemplate.ts","webpack:///./src/components/ModalTemplate/ModalTemplate.ts?ade9","webpack:///./src/components/ModalTemplate/ModalTemplate.vue","webpack:///./src/assets/logos/tg.jpg","webpack:///./src/components/EmptyRouterView/EmptyRouterView.vue?dea2","webpack:///./src/components/EmptyRouterView/EmptyRouterView.ts","webpack:///./src/components/EmptyRouterView/EmptyRouterView.ts?4689","webpack:///./src/components/EmptyRouterView/EmptyRouterView.vue","webpack:///./src/router/index.ts","webpack:///./src/config/app.config.ts","webpack:///./src/utils/local.store.ts","webpack:///./src/assets/logos/ge.png","webpack:///./src/App/App.vue?fe4e","webpack:///./src/components/LanguagePicker/LanguagePicker.vue?c4c4","webpack:///./src/components/LanguagePicker/LanguagePicker.ts","webpack:///./src/components/LanguagePicker/LanguagePicker.ts?f7ca","webpack:///./src/components/LanguagePicker/LanguagePicker.vue","webpack:///./src/components/Loader/Loader.vue?4fde","webpack:///./src/components/Loader/Loader.ts","webpack:///./src/components/Loader/Loader.ts?cb5e","webpack:///./src/components/Loader/Loader.vue","webpack:///./src/components/Logo/Logo.vue?8858","webpack:///./src/components/Logo/Logo.ts","webpack:///./src/components/Logo/Logo.ts?ac5d","webpack:///./src/components/Logo/Logo.vue","webpack:///./src/components/MobileMenu/MobileMenu.vue?077b","webpack:///./src/components/MobileMenu/MobileMenu.ts","webpack:///./src/components/MobileMenu/MobileMenu.ts?60ed","webpack:///./src/components/MobileMenu/MobileMenu.vue","webpack:///./src/components/MoreInfo/MoreInfo.vue?7b6f","webpack:///./src/components/MoreInfo/MoreInfo.ts","webpack:///./src/components/MoreInfo/MoreInfo.ts?a192","webpack:///./src/components/MoreInfo/MoreInfo.vue","webpack:///./src/App/App.ts","webpack:///./src/models/constants/McsisPolicy.ts","webpack:///./src/App/App.ts?e8fa","webpack:///./src/App/App.vue","webpack:///./src/services/auth.service.ts","webpack:///./src/plugins/auth.ts","webpack:///./src/main.ts","webpack:///./src/App/App.scss?17e3","webpack:///./src/assets/logos/gr.png","webpack:///./src/assets/logos/bb.png","webpack:///./src/models/VariousEnum.ts","webpack:///./src/services/token.service.ts","webpack:///./src/assets/logos sync ^\\.\\/.*\\.svg$","webpack:///./src/plugins/i18n.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","initialState","token","tokenTimestamp","isAuthenticated","screeningUnit","dataLoading","isLanguagesLoaded","isDossierOpened","consents","questionnaire","questionnaireValidationErrors","isAppLoaded","appVersion","isLatest","lastCheckDate","Date","hasGivenUp","giveUpClicked","isIdentified","localityNotInList","noDoctorInList","noDoctorOtherInList","showContentFromEquestAtHome","dossierInitialState","use","Store","state","getters","fullname","lastname","firstname","maidenname","hasSignatureExpired","consentDate","a","b","diff","isPart1Valid","isIdentityValidated","isPart2Valid","address","doctor","insurance","isValidated","isPart3Valid","questions","allPartsValid","mutations","resetState","assign","resetDossierState","setToken","setTokenTimestamp","timestamp","setIsAuthenticated","status","setScreeningUnit","suId","setLoadingState","setIsLanguagesLoaded","setIsDossierOpened","setConsentDate","setConsents","setQuestionnaire","setQuestionnaireValidationErrors","errors","setQuestionnaireConsent","questConsent","consent","setQuestionnaireAddress","questAddress","setQuestionnaireInsurance","questInsurance","setQuestionnaireDoctor","questDoctor","setQuestionnaireQuestions","setIsAppLoaded","setAppVersion","setHasGivenUp","setGiveUpClicked","setEquestLng","lngName","setIsIdentified","setNoDoctorInList","setNoDoctorOtherInList","setLocalityNotInList","setShowContentFromEquestAtHome","actions","context","commit","map","webpackContext","req","id","webpackContextResolve","keys","webpackAsyncContext","ids","UserService","username","password","requestData","url","post","response","setItem","localItemKeys","proUsername","userName","logoutFromFrontend","removeToken","removeHeader","X_XSRF_TOKEN","clearAll","oldPassword","newPassword","put","handlerSuccessEnabled","handlerErrorEnabled","catch","deleteItem","dossierId","McsisRole","ApiError","constructor","NotificationType","NotificationGroup","b64Data","contentType","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","Array","charCodeAt","byteArray","Uint8Array","blob","Blob","res","reader","FileReader","readAsDataURL","onloadend","base64data","replace","file","abort","readAsText","group","Default","title","text","duration","notify","this","errorMessage","Important","Warning","Auth","statusCode","details","store","prepare","TOKEN_EXPIRED","NETWORK_ERROR","requestConfig","isHandlerSuccessEnabled","isHandlerErrorEnabled","timestampNow","Math","ceil","now","router","currentRoute","CancelToken","cancelToken","cancel","config","errorNotif","prepareWithStatus","tokenExists","responseType","fileReader","JSON","parse","handlerEnabled","responseConfig","baseURL","service","defaults","withCredentials","interceptors","requestHandler","successHandler","errorHandler","content","headers","common","k","getToken","resource","patch","delete","instance","params","defaultName","paramsUrl","isArray","innerValue","contentDispositionHeader","split","trim","render","_vm","_h","$createElement","_c","_self","staticClass","on","$event","$emit","attrs","_t","staticRenderFns","component","setAuthenticated","setIdentified","logout","routeName","routes","path","children","redirect","meta","public","onlyWhenLoggedOut","atHome","onlyWhenDossierOpened","beforeEnter","to","from","next","su","redirectTo","itemExists","getItem","base","scrollBehavior","savedPosition","scrollTo","top","left","behavior","beforeEach","isPublic","matched","some","record","isAtHome","loggedIn","suName","screening","location","reload","includes","toLocaleLowerCase","SUPPORTED_SU","SUPPORTED_LANGUAGES","FALLBACK_LANGUAGE","PUBLIC_ROOT_API","APP_VERSION","PHONE_NUMBER_COUNTRIES_MAPPING","ge","fr","tg","vs","getPhoneNumberCountriesBySu","toLowerCase","countries","phoneNumberCountry","forEach","element","toUpperCase","SCREENING_UNITS","1","5","6","3","getScreeningUnitNameFromID","Number","LocalStoreService","val","localStorage","getKey","removeItem","entries","keyString","prefix","policies","appVersionTrys","class","$route","mobileMenuOpen","isLoading","_e","authenticated","_v","nativeOn","preventDefault","_s","$t","env","toggleMenu","scopedSlots","_u","fn","props","item","close","getFullYear","closeMobMenu","hideUpdateModal","slot","_l","msg","index","hideInfoEquestAtHomeContentModal","hideGiveUpModal","giveUp","lang","isCurrentLanguage","changeLocale","languages","$i18n","locale","$store","fallbackLocale","headerLogoSrc","svg","jpg","png","required","default","components","LanguagePicker","domProps","shortContactInfo","immediate","deep","showUpdateModal","showGiveUpModal","checkAppVersion","addEventListener","setup","oldLocale","fetch","json","version","refreshTrys","dispatch","setXsrfTokenInHeader","isTokenValid","routePrefix","getUserRoutePrefix","$isInRole","EquestParticipant","isEquestParticipant","Participant","isParticipant","$router","onbeforeunload","ev","warningText","toString","returnValue","addPopupMessageBeforeUnload","removePopupMessageBeforeUnload","oldSuName","parseInt","Loader","Logo","MobileMenu","ModalTemplate","MoreInfo","McsisPolicy","POLICIES","stringify","AuthPlugin","Vue","options","$isAuthorized","directive","ShowByPolicy","ShowByRole","HideByRole","policy","decodedToken","requiredClaims","claimCode","role","isinRole","getPolicies","size","Map","mcsisPolicyCode","claims","mcsisClaims","claim","mcsisClaimCode","parentClaims","mcsisParentPolicy","indexOf","set","savePolicies","statusText","el","binding","style","display","remove","visible","JsonExcel","productionTip","i18n","h","$mount","init","PhoneNumberCountries","ConsentText","AnswerChoices","Breast","CancerFamilyChoices","BreastSymptom","BreastOperation","getEnumKeyByEnumValue","myEnum","enumValue","filter","x","TokenService","cookieToken","getCookieByName","TOKEN_KEY","timestampExp","XSRF_TOKEN","setHeader","axiosInstance","accessToken","cookie","match","REFRESH_TOKEN_KEY","CSRF_TOKEN","loadLocaleInfo","locales","localeMessages","localeInfo","navigator","language","substring","messages","silentTranslationWarn","loadedLanguages","loadLanguageAsync","mergeLocaleMessage"],"mappings":"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","file":"js/app.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) + \".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-409fe342\":1,\"chunk-6fb912aa\":1,\"chunk-dcf8c352\":1,\"chunk-1764c1e0\":1,\"chunk-11ddeed2\":1,\"chunk-455bff00\":1,\"chunk-79ee6925\":1,\"chunk-977f1fca\":1,\"chunk-2f01bb40\":1,\"chunk-60295d45\":1,\"chunk-74fe98ae\":1,\"chunk-829e146e\":1,\"chunk-913c23f4\":1,\"chunk-957cbf88\":1,\"chunk-f4c0e2fe\":1,\"chunk-28155d62\":1,\"chunk-77720b98\":1,\"chunk-de7c5812\":1,\"chunk-137b1610\":1,\"chunk-14f43a2c\":1,\"chunk-36914736\":1,\"chunk-6c0e1e66\":1,\"chunk-21cd3814\":1,\"chunk-f3a0dd26\":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) + \".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([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./Logo.css?vue&type=style&index=0&id=258cdb52&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./Logo.css?vue&type=style&index=0&id=258cdb52&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./LanguagePicker.scss?vue&type=style&index=0&id=f3ca5a12&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./LanguagePicker.scss?vue&type=style&index=0&id=f3ca5a12&scoped=true&lang=scss&\"","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport { ConsentDTO } from '@/models/ConsentDTO';\r\nimport { QuestionnaireDTO } from '@/models/QuestionnaireDTO';\r\nimport { QuestAddressDTO } from '@/models/QuestAddressDTO';\r\nimport { QuestInsuranceDTO } from '@/models/QuestInsuranceDTO';\r\nimport { QuestDoctorDTO } from '@/models/QuestDoctorDTO';\r\nimport { QuestQuestionDTO } from '@/models/QuestQuestionDTO';\r\nimport { QuestConsentDTO } from '@/models/QuestConsentDTO';\r\nimport moment from 'moment';\r\n\r\nVue.use(Vuex);\r\n\r\nfunction initialState() {\r\n return {\r\n token: '',\r\n tokenTimestamp: 0,\r\n isAuthenticated: false,\r\n screeningUnit: 0,\r\n dataLoading: false,\r\n isLanguagesLoaded: false,\r\n isDossierOpened: false,\r\n consents: [] as ConsentDTO[],\r\n questionnaire: {} as QuestionnaireDTO,\r\n questionnaireValidationErrors: {},\r\n isAppLoaded: false,\r\n appVersion: {\r\n isLatest: false,\r\n lastCheckDate: new Date(),\r\n },\r\n hasGivenUp: false,\r\n giveUpClicked: false,\r\n isIdentified: false,\r\n localityNotInList: false,\r\n noDoctorInList: false,\r\n noDoctorOtherInList: false,\r\n showContentFromEquestAtHome: false,\r\n };\r\n}\r\n\r\nfunction dossierInitialState() {\r\n return {\r\n consents: [] as ConsentDTO[],\r\n questionnaire: {} as QuestionnaireDTO,\r\n questionnaireValidationErrors: {},\r\n hasGivenUp: false,\r\n giveUpClicked: false,\r\n localityNotInList: false,\r\n noDoctorInList: false,\r\n noDoctorOtherInList: false,\r\n };\r\n}\r\n\r\nexport default new Vuex.Store({\r\n state: initialState(),\r\n\r\n getters: {\r\n fullname(state) {\r\n if (state.questionnaire.lastname != null && state.questionnaire.firstname != null) {\r\n if (state.questionnaire.maidenname != null && state.questionnaire.maidenname != undefined && state.questionnaire.maidenname.length > 0) {\r\n return `${state.questionnaire.lastname} ${state.questionnaire.firstname} (${state.questionnaire.maidenname})`;\r\n }\r\n return `${state.questionnaire.lastname} ${state.questionnaire.firstname}`;\r\n }\r\n return null;\r\n },\r\n\r\n hasSignatureExpired(state) {\r\n if (state.questionnaire && state.questionnaire.consentDate) {\r\n // If it's been more than 24 hours, the signature is considered expired\r\n const a = moment(state.questionnaire.consentDate);\r\n const b = moment();\r\n if (b.diff(a, 'hours', true) > 24.0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n isPart1Valid(state, getters) {\r\n if (state.questionnaire.isIdentityValidated && state.questionnaire.consentDate && !getters.hasSignatureExpired) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n isPart2Valid(state) {\r\n if (state.questionnaire.address && state.questionnaire.doctor && state.questionnaire.insurance) {\r\n if (state.questionnaire.address.isValidated && state.questionnaire.doctor.isValidated && state.questionnaire.insurance.isValidated) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n isPart3Valid(state) {\r\n if (state.questionnaire.questions && state.questionnaire.questions.isValidated) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n allPartsValid(state, getters) {\r\n return getters.isPart1Valid && getters.isPart2Valid && getters.isPart3Valid;\r\n }\r\n },\r\n\r\n // Mutations have to be synchronous ! Use actions to do async operations.\r\n mutations: {\r\n resetState(state) {\r\n Object.assign(state, initialState());\r\n },\r\n\r\n resetDossierState(state) {\r\n Object.assign(state, dossierInitialState());\r\n },\r\n\r\n setToken(state, value: string) {\r\n state.token = value;\r\n },\r\n\r\n setTokenTimestamp(state, timestamp: number) {\r\n state.tokenTimestamp = timestamp;\r\n },\r\n \r\n setIsAuthenticated(state, status: boolean) {\r\n state.isAuthenticated = status;\r\n },\r\n \r\n setScreeningUnit(state, suId: number) {\r\n state.screeningUnit = suId;\r\n },\r\n \r\n setLoadingState(state, status: boolean) {\r\n state.dataLoading = status;\r\n },\r\n \r\n setIsLanguagesLoaded(state, status: boolean) {\r\n state.isLanguagesLoaded = status;\r\n },\r\n \r\n setIsDossierOpened(state, status: boolean) {\r\n state.isDossierOpened = status;\r\n },\r\n\r\n setConsentDate(state, value: Date) {\r\n state.questionnaire.consentDate = value;\r\n },\r\n\r\n setConsents(state, consents: ConsentDTO[]) {\r\n state.consents = consents;\r\n },\r\n\r\n setQuestionnaire(state, questionnaire: QuestionnaireDTO) {\r\n state.questionnaire = questionnaire;\r\n },\r\n\r\n setQuestionnaireValidationErrors(state, errors: object) {\r\n state.questionnaireValidationErrors = errors;\r\n },\r\n\r\n setQuestionnaireConsent(state, questConsent: QuestConsentDTO) {\r\n state.questionnaire.consent = questConsent;\r\n },\r\n\r\n setQuestionnaireAddress(state, questAddress: QuestAddressDTO) {\r\n state.questionnaire.address = questAddress;\r\n },\r\n\r\n setQuestionnaireInsurance(state, questInsurance: QuestInsuranceDTO) {\r\n state.questionnaire.insurance = questInsurance;\r\n },\r\n\r\n setQuestionnaireDoctor(state, questDoctor: QuestDoctorDTO) {\r\n state.questionnaire.doctor = questDoctor;\r\n },\r\n\r\n setQuestionnaireQuestions(state, questions: QuestQuestionDTO) {\r\n state.questionnaire.questions = questions;\r\n },\r\n\r\n setIsAppLoaded(state, value: boolean) {\r\n state.isAppLoaded = value;\r\n },\r\n\r\n setAppVersion(state, value: any) {\r\n state.appVersion = value;\r\n },\r\n\r\n setHasGivenUp(state, value: boolean) {\r\n state.hasGivenUp = value;\r\n },\r\n\r\n setGiveUpClicked(state, value: boolean) {\r\n state.giveUpClicked = value;\r\n },\r\n\r\n setEquestLng(state, value: string) {\r\n state.questionnaire.lngName = value;\r\n },\r\n\r\n setIsIdentified(state, status: boolean) {\r\n state.isIdentified = status;\r\n },\r\n\r\n setNoDoctorInList(state, status: boolean) {\r\n state.noDoctorInList = status;\r\n },\r\n\r\n setNoDoctorOtherInList(state, status: boolean) {\r\n state.noDoctorOtherInList = status;\r\n },\r\n\r\n setLocalityNotInList(state, status: boolean) {\r\n state.localityNotInList = status;\r\n },\r\n\r\n setShowContentFromEquestAtHome(state, value: boolean) {\r\n state.showContentFromEquestAtHome = value;\r\n } \r\n },\r\n\r\n // Actions commit mutations and can contain arbitrary asynchronous operations\r\n actions: {\r\n setToken(context, value) {\r\n context.commit('setToken', value);\r\n },\r\n\r\n setTokenTimestamp(context, value) {\r\n context.commit('setTokenTimestamp', value);\r\n },\r\n \r\n setIsAuthenticated(context, value) {\r\n context.commit('setIsAuthenticated', value);\r\n },\r\n \r\n setScreeningUnit(context, value) {\r\n context.commit('setScreeningUnit', value);\r\n },\r\n \r\n setLoadingState(context, value) {\r\n context.commit('setLoadingState', value);\r\n },\r\n \r\n setIsLanguagesLoaded(context, value) {\r\n context.commit('setIsLanguagesLoaded', value);\r\n },\r\n \r\n setIsDossierOpened(context, value) {\r\n context.commit('setIsDossierOpened', value);\r\n },\r\n\r\n setConsents(context, value) {\r\n context.commit('setConsents', value);\r\n },\r\n\r\n setQuestionnaire(context, value) {\r\n context.commit('setQuestionnaire', value);\r\n },\r\n\r\n setHasGivenUp(context, value: boolean) {\r\n context.commit('setHasGivenUp', value);\r\n },\r\n\r\n setGiveUpClicked(context, value: boolean) {\r\n context.commit('setGiveUpClicked', value);\r\n },\r\n\r\n setIsIdentified(context, value) {\r\n context.commit('setIsIdentified', value);\r\n },\r\n\r\n setNoDoctorInList(context, value) {\r\n context.commit('setNoDoctorInList', value);\r\n },\r\n\r\n setNoDoctorOtherInList(context, value) {\r\n context.commit('setNoDoctorOtherInList', value);\r\n },\r\n\r\n setLocalityNotInList(context, value) {\r\n context.commit('setLocalityNotInList', value);\r\n },\r\n setShowContentFromEquestAtHome(context, value) {\r\n context.commit('setShowContentFromEquestAtHome', value);\r\n }\r\n },\r\n modules: {}\r\n});\r\n","var map = {\n\t\"./tg.jpg\": \"ac32\",\n\t\"./ti.jpg\": \"89a5\",\n\t\"./vs.jpg\": \"3f6e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"06e5\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./Loader.scss?vue&type=style&index=0&id=59d3fac7&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./Loader.scss?vue&type=style&index=0&id=59d3fac7&scoped=true&lang=scss&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFJ0lEQVRIx5WWWWxUZRTH/+e72+ztlFraUkpLKyAFi0gxhK0sBqIoxrhgNBpFQtRIDMiLGsMD8CAYDShgXHkQfXCJD0aiQgSxbJHVkYal0tJtus20s9/t+DDTKW2niOe+3Hy53/md8z/nO98ljGHMDACqEYzUBPeeqDdDiTpOmQVsM5EgJofSRYRTpMlHZb/zEidNo2zL/Tl90ciFwMI9UIo8WjwQXFKxe/XTvqXVi3sPnCsZONIkkyCAGaDsNhOC2kkWh4RD/lQp9Z2w47pV9tbysSHna3ZC8jkmpJr63jB6Ys/4H57uq9r/JOyYjuC+E9DbBkBiaEsmWxARIKiLFGmP5NV2WdFUqHLX6ux30uDLn6VbQZo8LfVP6GOzL/4E2+xINfVBLfHBt6QKkldD4lIX2LDSTjPOidLZMbMbFi9g0y6X/a4/Xpu7JvZ+wwEAgACAc9N2QKssmGh0RD60+hPLmJkIBFs30P7Ob4g0NMM1ewLyV0wFySKbwZAeaRgzy6xbT5mh+LvCqfhb3jyYzqTxgc/gmlmiRY5d326F4o8zMyijIoFg9seRutKDvKXVcM8qgZ0yoV8PgZmzGQ2xCMxMsLiGDSvpnFp4dEPtY5CebZsBoyu6yuyObWHLVml0LyDVEoZ+ox95y6rhursYnLSgt4TB9pggAcY0O6ofs+NGm7T5kfWeRCC43Y7pM3IBBteSjd0wumPw1VfBVVsCEgS9OQw27FGgTEd5wWw67iw8KK215803u6Mb2bJduSCDIAYjcaEDqeYQfAsq4Z49AZJHQ+p6CHbSHAbKZAMAfjbsn6V12uK1Vji5IlO+sc5mGsSMRCCIRCAI971lcM8pg1Lshd4chhXVc0gHN4Bz0jppwSZOmlNuBRgl3bUeRI+3wHlXEbz3lUMp8iDxdxds3RzW3gBkoUrtgg2rhMH/CRgOIsTOtqLpxW8QDwThqBoHudCVngYjzDasMkGy5LltwgiQ3hKCEYyAZAGSBHLFyoblEGxa0f8LyZpIO2dGziwAgBQpKUiROm6nHrlMLnRBKfbCjuuwovrNg3MoDkVqFcKtngWB/09dMmrDO28StMoC6K39sMKJYeOWmQFCihmnheTVDpMq9d3aIY94bKjFeRj/0jyQIhA70wY7ZeXQilqFUzkpXDNLTgunevxWkjGG2hcAtIpxKN+5Ct76yUhc7ET8bDtA2bbNzjWSxS9qqfeyHP7xUlQp9n5ix/V6Wzc9I2EMhjbJj+IN88GGDeFR4Vs0Gc6a8dCbw+j7PpA+iGJEkII6hFP5Inm115J99VVQy/IO9n3315fcG1t/8xQexGiVBbjjhTrI+c7sarKpFz37z0BvHxhVCyKySBH7HFPGnUo1hyF9cOUHPB+rs9SJ+eetgWQtp6xKxnCQ0RlF9GQLog3NMIIRuGdPQPxCJyINzblkskmTvpb9ri1mKJEo37YyfWnNatyM5JWeG0qR5xXJ5zhERJluS8PspIH+Xy+j86NjGDh8FWzzMOeZmxFEZJIqfSX7XZvshBEq37YyrdxgtHO63gYpotE5veg5pcizV6jyADLTFwAIAgSR8yyACCSJLnLIW2W/81UrkgpO2vHgUHlu/rY28DpIFm2+5dUbtfL8NVKB81vhULpJCDu7wamCBIF1Cww2SRItpEqfSx71Ua3Cv5U0KVTx3kPDYpBHBlXz+8sAkLo4d/dPzpnFR5LX+u4xe2MLYdp1ejDikdwqAFikSJ1CU84It3JUzk//d5VuXJTzCPwL+ptbslle0rsAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAEnRFWHRFWElGOk9yaWVudGF0aW9uADGEWOzvAAAAAElFTkSuQmCC\"","var map = {\n\t\"./de.json\": \"0950\",\n\t\"./en.json\": \"02623\",\n\t\"./es.json\": \"2359\",\n\t\"./fr.json\": \"7960\",\n\t\"./it.json\": \"1632\",\n\t\"./pt.json\": \"4773\",\n\t\"./sq.json\": \"30d0\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"1ce5\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./MobileMenu.scss?vue&type=style&index=0&id=38fd0c1a&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./MobileMenu.scss?vue&type=style&index=0&id=38fd0c1a&scoped=true&lang=scss&\"","var map = {\n\t\"./fr/de.json\": [\n\t\t\"43c3\",\n\t\t\"chunk-2d0c0fe5\"\n\t],\n\t\"./fr/en.json\": [\n\t\t\"2ec6\",\n\t\t\"chunk-2d0be2dc\"\n\t],\n\t\"./fr/es.json\": [\n\t\t\"472c\",\n\t\t\"chunk-2d0c192a\"\n\t],\n\t\"./fr/fr.json\": [\n\t\t\"1c7c\",\n\t\t\"chunk-2d0b61d4\"\n\t],\n\t\"./fr/it.json\": [\n\t\t\"2ad9\",\n\t\t\"chunk-2d0bd3fa\"\n\t],\n\t\"./fr/pt.json\": [\n\t\t\"5e17\",\n\t\t\"chunk-2d0d39ec\"\n\t],\n\t\"./fr/sq.json\": [\n\t\t\"bd1c\",\n\t\t\"chunk-2d21ab0a\"\n\t],\n\t\"./ge/de.json\": [\n\t\t\"949b\",\n\t\t\"chunk-2d0e549a\"\n\t],\n\t\"./ge/en.json\": [\n\t\t\"b542\",\n\t\t\"chunk-2d20fac7\"\n\t],\n\t\"./ge/es.json\": [\n\t\t\"2e75\",\n\t\t\"chunk-2d0bdd87\"\n\t],\n\t\"./ge/fr.json\": [\n\t\t\"814c\",\n\t\t\"chunk-2d0dd45e\"\n\t],\n\t\"./ge/it.json\": [\n\t\t\"ae73\",\n\t\t\"chunk-2d213af6\"\n\t],\n\t\"./ge/pt.json\": [\n\t\t\"08c1\",\n\t\t\"chunk-2d0a512c\"\n\t],\n\t\"./ge/sq.json\": [\n\t\t\"17c5\",\n\t\t\"chunk-2d0ac1ce\"\n\t],\n\t\"./tg/de.json\": [\n\t\t\"ac18\",\n\t\t\"chunk-2d2132bf\"\n\t],\n\t\"./tg/en.json\": [\n\t\t\"d274\",\n\t\t\"chunk-2d21d8a1\"\n\t],\n\t\"./tg/es.json\": [\n\t\t\"ff25\",\n\t\t\"chunk-2d2383f9\"\n\t],\n\t\"./tg/fr.json\": [\n\t\t\"445c\",\n\t\t\"chunk-2d0c0e44\"\n\t],\n\t\"./tg/it.json\": [\n\t\t\"af0f\",\n\t\t\"chunk-2d213e11\"\n\t],\n\t\"./tg/pt.json\": [\n\t\t\"42d3\",\n\t\t\"chunk-2d0c0c43\"\n\t],\n\t\"./tg/sq.json\": [\n\t\t\"7edd\",\n\t\t\"chunk-2d0e2904\"\n\t],\n\t\"./vs/de.json\": [\n\t\t\"a75e\",\n\t\t\"chunk-2d208e3c\"\n\t],\n\t\"./vs/en.json\": [\n\t\t\"942c\",\n\t\t\"chunk-2d0e53c2\"\n\t],\n\t\"./vs/es.json\": [\n\t\t\"3190\",\n\t\t\"chunk-2d0b8eeb\"\n\t],\n\t\"./vs/fr.json\": [\n\t\t\"5981\",\n\t\t\"chunk-2d0c9593\"\n\t],\n\t\"./vs/it.json\": [\n\t\t\"b59f\",\n\t\t\"chunk-2d20fb96\"\n\t],\n\t\"./vs/pt.json\": [\n\t\t\"e545\",\n\t\t\"chunk-2d2257e7\"\n\t],\n\t\"./vs/sq.json\": [\n\t\t\"a57f\",\n\t\t\"chunk-2d2086f9\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"20fc\";\nmodule.exports = webpackAsyncContext;","import ApiService from './api.service';\r\nimport TokenService from './token.service';\r\nimport store from '@/store';\r\nimport LocalStoreService from '@/utils/local.store';\r\nimport { UserDTO } from '@/models/UserDTO';\r\nimport { PUBLIC_ROOT_API } from '@/config/app.config';\r\n\r\nexport default class UserService {\r\n\r\n /**\r\n * Login the user\r\n * @param username The username of a Pro user\r\n * @param password The password\r\n * @returns {UserDTO} A UserDTO object containing minimal user data.\r\n */\r\n public static async login(username: string, password: string) {\r\n const requestData = {\r\n url: `${PUBLIC_ROOT_API}/Users/authenticate`,\r\n data: {\r\n username,\r\n password,\r\n },\r\n };\r\n\r\n return await ApiService.post(requestData.url, requestData.data)\r\n .then((response: any) => {\r\n LocalStoreService.setItem(LocalStoreService.localItemKeys.proUsername, response.data.userName);\r\n LocalStoreService.setItem(LocalStoreService.localItemKeys.screeningUnit, response.data.suId);\r\n return response.data as UserDTO;\r\n });\r\n }\r\n\r\n /**\r\n * Logout the current user by calling the API in order to expire the cookies.\r\n * It also removes the token from storage and XSRF token from header.\r\n * @returns {Promise} A promise\r\n */\r\n public static async logout(): Promise {\r\n const requestData = {\r\n url: `${PUBLIC_ROOT_API}/Users/logout`,\r\n };\r\n\r\n await ApiService.post(requestData.url, {})\r\n .then((response: any) => {\r\n this.logoutFromFrontend();\r\n });\r\n }\r\n\r\n /**\r\n * Logout the current user by removing the token from storage and XSRF token from header.\r\n */\r\n public static logoutFromFrontend(): void {\r\n TokenService.removeToken();\r\n ApiService.removeHeader(TokenService.X_XSRF_TOKEN);\r\n store.commit('resetState');\r\n LocalStoreService.clearAll()\r\n }\r\n\r\n /**\r\n * Saves the newly created password to DB.\r\n * @param username The username of a Pro user\r\n * @param oldPassword The old password\r\n * @param newPassword The new password\r\n * @returns {Promise} A promise\r\n */\r\n public static async saveNewPassword(username: string, oldPassword: string, newPassword: string): Promise {\r\n const requestData = {\r\n url: `${PUBLIC_ROOT_API}/Users/SaveNewPassword`,\r\n data: {\r\n username,\r\n oldPassword,\r\n newPassword,\r\n },\r\n };\r\n\r\n await ApiService.put(requestData.url, requestData.data);\r\n }\r\n\r\n /**\r\n * Get route prefex corresponding to user SU\r\n * @returns {string} The route prefix\r\n */\r\n public static async getUserRoutePrefix(): Promise {\r\n return await ApiService.get(`${PUBLIC_ROOT_API}/users/route`, {\r\n handlerSuccessEnabled: false,\r\n handlerErrorEnabled: false,\r\n })\r\n .then((response: any) => {\r\n return response.data;\r\n })\r\n .catch(() => 'fr');\r\n }\r\n\r\n /**\r\n * Clear data from the user (before opening a new dossier).\r\n */\r\n public static clearData(): void {\r\n store.commit('setIsDossierOpened', false);\r\n store.commit('setIsIdentified', false);\r\n LocalStoreService.deleteItem(LocalStoreService.localItemKeys.dossierId);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./MoreInfo.scss?vue&type=style&index=0&id=42d53cd4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./MoreInfo.scss?vue&type=style&index=0&id=42d53cd4&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ModalTemplate.scss?vue&type=style&index=0&id=0a8dd513&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ModalTemplate.scss?vue&type=style&index=0&id=0a8dd513&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/vs.jpg\";","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","var map = {\n\t\"./bb.png\": \"d984\",\n\t\"./default.png\": \"744f\",\n\t\"./ge.png\": \"c94c\",\n\t\"./gr.png\": \"d3f8\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"69ae\";","module.exports = __webpack_public_path__ + \"img/logout.svg\";","module.exports = \"data:image/png;base64,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\"","export enum McsisRole {\r\n Administrator,\r\n Doctor,\r\n Participant,\r\n Pharmacist,\r\n EquestParticipant,\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/fr.svg\";","export default class ApiError extends Error {\r\n\r\n public status: number;\r\n\r\n constructor(status: number, message: string) {\r\n super();\r\n this.name = this.constructor.name;\r\n this.message = message;\r\n this.status = status;\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport store from '@/store';\r\n\r\n/**\r\n * The notification class. This class handles the manipulation of\r\n * notification configuration and sends notification.\r\n * \r\n * @class Notification\r\n * @example\r\n * let foo = new Notification(); // init a notification configuration object with default values\r\n * foo.notify(); // sends the notification\r\n */\r\nexport class Notification {\r\n /**\r\n * Name of the notification holder.\r\n */\r\n group: NotificationGroup = NotificationGroup.Default;\r\n /**\r\n * The type of the notification. Class that will be assigned to the notification (warn, error, success, etc).\r\n */\r\n type: NotificationType = NotificationType.Error;\r\n /**\r\n * The title of the notification\r\n */\r\n title: string = NotificationType.Error;\r\n /**\r\n * The text of the notification. Content (will be wrapped in div.notification-content).\r\n */\r\n text: string = NotificationType.Error;\r\n /**\r\n * Time (ms) animation stays visible (if negative - notification will stay forever or until clicked)\r\n */\r\n duration: number = 20000;\r\n\r\n /**\r\n * Create a notification object with default configuration\r\n */\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Send the notification\r\n */\r\n public notify() {\r\n Vue.notify({\r\n group: this.group,\r\n type: this.type,\r\n title: `errorTitles.${this.title}`,\r\n text: `errorMgs.${this.text}`,\r\n duration: this.duration,\r\n });\r\n }\r\n\r\n /**\r\n * Prepare the notification configuration based on the received errorMessage.\r\n * This prepares the notification for error where we didn't receive any response from the API.\r\n * \r\n * @param errorMessage The error message to show on the notification\r\n * @param title The title to show on the notification (optional)\r\n */\r\n public prepare(errorMessage: string|undefined, title?: string): void {\r\n this.title = title || this.title;\r\n\r\n switch (errorMessage) {\r\n case 'networkError':\r\n this.text = errorMessage || this.text;\r\n this.group = NotificationGroup.Important;\r\n this.duration = -1;\r\n break;\r\n\r\n case 'sessionExpiration':\r\n this.type = NotificationType.Warning;\r\n this.text = errorMessage || this.text;\r\n this.group = NotificationGroup.Auth;\r\n break;\r\n\r\n default:\r\n this.text = 'unknownError';\r\n this.group = NotificationGroup.Important;\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Prepare the notification configuration based on the received statusCode and errorMessage.\r\n * This prepares the notification for error where we received a response from the API.\r\n * \r\n * @param statusCode The HTTP status code\r\n * @param errorMessage The error message to show on the notification\r\n * @param details The details of the error (optional)\r\n */\r\n public prepareWithStatus(statusCode: number, errorMessage: string|undefined, details?: object): void {\r\n\r\n switch (statusCode) {\r\n case 500:\r\n this.text = errorMessage || this.text;\r\n this.group = NotificationGroup.Important;\r\n this.duration = -1;\r\n break;\r\n\r\n case 400:\r\n this.type = NotificationType.Warning\r\n this.text = errorMessage || this.text;\r\n this.group = NotificationGroup.Default;\r\n if (!errorMessage) {\r\n this.title = 'questionnaireValidationFailed';\r\n this.text = 'pleaseCheckData';\r\n }\r\n if (this.text == 'questionnaireValidationFailed') {\r\n store.commit('setQuestionnaireValidationErrors', details);\r\n }\r\n break;\r\n\r\n case 403:\r\n case 404:\r\n this.type = NotificationType.Error\r\n this.text = errorMessage || this.text;\r\n this.group = NotificationGroup.Important;\r\n break;\r\n \r\n case 401:\r\n if (errorMessage == 'sessionExpiration') {\r\n this.prepare(errorMessage, 'warning');\r\n } else {\r\n this.type = NotificationType.Error;\r\n this.text = errorMessage || this.text;\r\n this.group = NotificationGroup.Auth;\r\n }\r\n break;\r\n\r\n default:\r\n this.text = 'error';\r\n this.group = NotificationGroup.Default;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum NotificationType {\r\n Success = 'success',\r\n Warning = 'warn',\r\n Error = 'error',\r\n}\r\n\r\nexport enum NotificationGroup {\r\n Default = 'default',\r\n Auth = 'auth',\r\n Important = 'important'\r\n}\r\n","import { FileDataInterface } from './interfaces/filedata.interface';\r\nimport LocalStoreService from '@/utils/local.store';\r\n\r\nexport default class BlobConverter {\r\n\r\n public static b64toBlob(b64Data: string, contentType = '', sliceSize = 512): Blob {\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n }\r\n\r\n public static saveBlobToLocalStorage(res: FileDataInterface) {\r\n const reader = new FileReader();\r\n // LocalStoreService.setItem(LocalStoreService.localItemKeys.followUpFilename, res.name);\r\n reader.readAsDataURL(res.blob);\r\n reader.onloadend = () => {\r\n const base64data = (reader.result as string).replace(/^data:.+;base64,/, '');\r\n LocalStoreService.setItem(res.name, base64data as string);\r\n };\r\n }\r\n\r\n public static fileReader(file: Blob): Promise {\r\n const reader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n reader.onerror = () => {\r\n reader.abort();\r\n reject(new Error('Problem parsing file'));\r\n };\r\n\r\n reader.onload = () => {\r\n resolve(reader.result);\r\n };\r\n\r\n reader.readAsText(file);\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-prototype-builtins */\r\nimport Vue from 'vue';\r\nimport TokenService from '@/services/token.service';\r\nimport BlobConverter from '@/utils/blobconverter';\r\nimport store from '@/store';\r\nimport UserService from '@/services/user.service';\r\nimport Axios from 'axios';\r\nimport router from '@/router';\r\nimport { Notification } from '@/utils/notification';\r\n\r\ndeclare module 'axios' {\r\n interface AxiosRequestConfig {\r\n handlerErrorEnabled: boolean;\r\n handlerSuccessEnabled: boolean;\r\n }\r\n}\r\n\r\nexport default class ApiHandler extends Vue {\r\n\r\n private readonly TOKEN_EXPIRED = 'TOKEN_EXPIRED';\r\n private readonly NETWORK_ERROR = 'Network Error';\r\n\r\n public requestHandler(requestConfig: any) {\r\n if (this.isHandlerSuccessEnabled(requestConfig) || this.isHandlerErrorEnabled(requestConfig)) {\r\n // Check token expiration if the user is connected\r\n if (store.state.isAuthenticated && store.state.tokenTimestamp > 0) {\r\n const timestampNow = Math.ceil(Date.now() / 1000);\r\n if (store.state.tokenTimestamp <= timestampNow) {\r\n // token expired : redirect to login page\r\n if (store.state.isAuthenticated) {\r\n UserService.logoutFromFrontend();\r\n if (!!router.currentRoute.name && router.currentRoute.name !== 'login') {\r\n router.push({\r\n name: 'login',\r\n });\r\n }\r\n }\r\n\r\n const CancelToken = Axios.CancelToken;\r\n\r\n // Cancel the request\r\n return {\r\n ...requestConfig,\r\n cancelToken: new CancelToken((cancel) => cancel(this.TOKEN_EXPIRED)),\r\n };\r\n }\r\n }\r\n\r\n // set loading state to true\r\n // todo: maybe add navigation guards to prevent page changes before requests is done?\r\n // + apply these setLoading states to everywhere you need.\r\n this.setLoadingState(true);\r\n }\r\n return requestConfig;\r\n }\r\n\r\n public async errorHandler(error: any) {\r\n if (this.isHandlerErrorEnabled(error.config)) {\r\n // Handle errors\r\n\r\n // set loading state to false\r\n this.setLoadingState(false);\r\n\r\n let errorMessage = 'error';\r\n // Check any error (without response) first\r\n if (!error.response) {\r\n const errorNotif = new Notification();\r\n \r\n if (error.message === this.NETWORK_ERROR) {\r\n errorMessage = 'networkError';\r\n errorNotif.prepare(errorMessage);\r\n\r\n } else if (error.message === this.TOKEN_EXPIRED) {\r\n errorMessage = 'sessionExpiration';\r\n errorNotif.prepare(errorMessage, 'warning');\r\n\r\n } else {\r\n errorMessage = 'unknownError';\r\n errorNotif.prepare(errorMessage);\r\n }\r\n\r\n errorNotif.notify();\r\n } else {\r\n const errorNotif = new Notification();\r\n // Check error in response (i.e. returned by the API)\r\n switch (error.response.status) {\r\n case (500):\r\n errorMessage = 'serverError';\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage)\r\n break;\r\n\r\n case (400):\r\n case (403):\r\n case (404):\r\n errorMessage = error.response.data.message;\r\n if (errorMessage == 'questionnaireValidationFailed') {\r\n // Errors returned by the endpoint\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage, error.response.data.details)\r\n } else {\r\n // Errors returned by .NET Core\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage, error.response.data.errors)\r\n }\r\n break;\r\n \r\n case (401):\r\n // In case someone was able to make a call to the API without a JWT\r\n if (!TokenService.tokenExists()) {\r\n errorMessage = 'sessionExpiration';\r\n if (store.state.isAuthenticated) {\r\n UserService.logoutFromFrontend();\r\n if (!!router.currentRoute.name && router.currentRoute.name !== 'login') {\r\n router.push({\r\n name: 'login',\r\n });\r\n }\r\n } else {\r\n errorMessage = error.response.data.message;\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage)\r\n }\r\n } else {\r\n // In case of a call to the API with a non valid JWT : get the error message received from the API\r\n errorMessage = error.response.data.message;\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage)\r\n }\r\n break;\r\n default:\r\n if (error.request.responseType === 'blob') {\r\n const { data } = error.response;\r\n // Read file\r\n const file = await BlobConverter.fileReader(data);\r\n // Parse content and retrieve 'message'\r\n const { message } = JSON.parse(file as string);\r\n errorMessage = message;\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage)\r\n } else {\r\n errorMessage = error.response.data.message;\r\n errorNotif.prepareWithStatus(error.response.status, errorMessage)\r\n }\r\n break;\r\n }\r\n\r\n errorNotif.notify();\r\n }\r\n }\r\n return Promise.reject({ ...error });\r\n }\r\n\r\n public isHandlerErrorEnabled(config = { handlerEnabled: {} }) {\r\n return config.hasOwnProperty('handlerErrorEnabled') && !config.handlerEnabled ?\r\n false : true;\r\n }\r\n\r\n public isHandlerSuccessEnabled(config = { handlerEnabled: {} }) {\r\n return config.hasOwnProperty('handlerSuccessEnabled') && !config.handlerEnabled ?\r\n false : true;\r\n }\r\n\r\n public successHandler(responseConfig: any) {\r\n if (this.isHandlerSuccessEnabled(responseConfig.config)) {\r\n // Handle sucesses\r\n // set loading state to false\r\n this.setLoadingState(false);\r\n\r\n // TODO : send success notification for post method only and only for certain endpoints ?\r\n // console.log({ responseObj: responseConfig.response });\r\n // console.log({ requestObj: responseConfig.request });\r\n // console.log({ responseConfig: responseConfig });\r\n\r\n // if (responseConfig.config.method == 'post') {\r\n // const successNotif = new Notification();\r\n\r\n // }\r\n }\r\n return responseConfig;\r\n }\r\n\r\n protected setLoadingState(value: boolean): void {\r\n store.commit('setLoadingState', value);\r\n }\r\n}\r\n","/* eslint-disable no-prototype-builtins */\r\nimport axios, { AxiosRequestConfig } from 'axios';\r\nimport TokenService from '@/services/token.service';\r\nimport { FileDataInterface } from '@/utils/interfaces/filedata.interface';\r\nimport ApiHandler from '@/utils/api.handler';\r\n\r\nexport default class ApiService {\r\n\r\n /**\r\n * Initialize the base URL against axios.\r\n * @param baseURL The API base URL\r\n */\r\n public static init(baseURL: string) {\r\n const service = new ApiHandler();\r\n axios.defaults.baseURL = baseURL;\r\n axios.defaults.withCredentials = true; // enables passing of cookies\r\n axios.interceptors.request.use((requestConfig: AxiosRequestConfig) => service.requestHandler(requestConfig));\r\n axios.interceptors.response.use(\r\n (responseConfig) => service.successHandler(responseConfig),\r\n (error) => service.errorHandler(error),\r\n );\r\n }\r\n\r\n /**\r\n * Set the header with key and content if any, otherwise set Authorization header by default\r\n * @param {string} key The header key entry\r\n * @param {string} content The content for the key entry\r\n */\r\n public static setHeader(key?: string, content?: string): void {\r\n if (!!key && !!content) {\r\n axios.defaults.headers.common[key] = content;\r\n return;\r\n }\r\n const k = 'Authorization';\r\n axios.defaults.headers.common[k] = `Bearer ${TokenService.getToken()}`;\r\n }\r\n\r\n /**\r\n * Remove the header specified by the key if any, otherwise remove all headers\r\n * @param {string} key The header key entry\r\n */\r\n public static removeHeader(key?: string): void {\r\n if (key) {\r\n delete axios.defaults.headers.common[key];\r\n return;\r\n }\r\n axios.defaults.headers.common = {};\r\n }\r\n\r\n /**\r\n * Get the resource\r\n * @param resource The API resource to get\r\n */\r\n public static get(resource: string, config?: AxiosRequestConfig) {\r\n return axios.get(resource, config);\r\n }\r\n\r\n /**\r\n * Post to the API resource\r\n * @param resource The API resource where to post\r\n * @param data The payload as JSON object\r\n */\r\n public static post(resource: string, data: object) {\r\n return axios.post(resource, data);\r\n }\r\n\r\n /**\r\n * Replace a resource\r\n * @param resource The API resource to update\r\n * @param data The payload as JSON object\r\n */\r\n public static put(resource: string, data: object) {\r\n return axios.put(resource, data);\r\n }\r\n\r\n /**\r\n * Update/patch a resource\r\n * @param resource The API resource to update\r\n * @param data The payload as JSON object\r\n */\r\n public static patch(resource: string, data: object) {\r\n return axios.patch(resource, data);\r\n }\r\n\r\n /**\r\n * Delete a resource\r\n * @param resource The API resource to delete\r\n */\r\n public static delete(resource: string) {\r\n return axios.delete(resource);\r\n }\r\n\r\n /**\r\n * Perform a custom Axios request.\r\n *\r\n * data is an object containing the following properties:\r\n * - method\r\n * - url\r\n * - data ... request payload\r\n * - auth (optional)\r\n * - username\r\n * - password\r\n * @param data\r\n */\r\n public static async customRequest(data: AxiosRequestConfig) {\r\n return axios(data);\r\n }\r\n\r\n /**\r\n * Create a new instance of axios without interceptors. Use it for special cases only!\r\n */\r\n public static async create() {\r\n const instance = axios.create();\r\n instance.defaults.baseURL = process.env.VUE_APP_PUBLIC_ROOT_API;\r\n instance.defaults.withCredentials = true; // enables passing of cookies\r\n\r\n return instance;\r\n }\r\n\r\n /**\r\n * get a file from backend\r\n * @param url The url where is the file\r\n * @param params The params\r\n * @param defaultName The default name in case of the filename is not provided by the API\r\n */\r\n public static async getFileFromBackend(url: string\r\n , params?: { [key: string]: string | string[] }\r\n , defaultName?: string\r\n , handlerSuccessEnabled: boolean = true): Promise {\r\n let paramsUrl: string = '';\r\n if (params) {\r\n for (const key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n if (paramsUrl === '') {\r\n paramsUrl += '?';\r\n } else {\r\n paramsUrl += '&';\r\n }\r\n const value = params[key];\r\n if (Array.isArray(value)) {\r\n for (const innerValue of value) {\r\n paramsUrl += `${key}=${innerValue}`;\r\n }\r\n } else {\r\n paramsUrl += `${key}=${value}`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return axios.get(url + paramsUrl,\r\n { responseType: 'blob', handlerSuccessEnabled } as AxiosRequestConfig).then(\r\n (res: any) => {\r\n const contentDispositionHeader = res.headers['content-disposition'];\r\n let name = defaultName;\r\n if (contentDispositionHeader) {\r\n name = contentDispositionHeader.split(';')[1].trim().split('=')[1].replace(/\"/g, '');\r\n }\r\n res.name = name;\r\n\r\n return {\r\n blob: res.data,\r\n name: res.name,\r\n };\r\n },\r\n );\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/ti.jpg\";","module.exports = __webpack_public_path__ + \"img/close.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\"},[_c('div',{staticClass:\"modal-container\"},[_c('button',{staticClass:\"modal-default-button\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('img',{attrs:{\"src\":require(\"@/assets/icons/close.svg\"),\"alt\":\"close\"}})]),_c('div',{staticClass:\"modal-header\"},[_vm._t(\"header\")],2),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"body\")],2),_c('div',{staticClass:\"modal-footer\"},[_vm._t(\"footer\")],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component } from 'vue-property-decorator';\r\nimport Vue from 'vue';\r\n\r\n@Component\r\nexport default class ModalTemplate extends Vue {\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./ModalTemplate.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./ModalTemplate.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ModalTemplate.vue?vue&type=template&id=0a8dd513&scoped=true&\"\nimport script from \"./ModalTemplate.ts?vue&type=script&lang=ts&\"\nexport * from \"./ModalTemplate.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./ModalTemplate.scss?vue&type=style&index=0&id=0a8dd513&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a8dd513\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/tg.jpg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"name\":\"pagefade\",\"mode\":\"out-in\"}},[_c('router-view',{on:{\"authenticated\":_vm.setAuthenticated,\"identified\":_vm.setIdentified,\"logout\":_vm.logout}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Prop, Vue } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class EmptyRouterView extends Vue {\r\n protected setIdentified(status: boolean): void {\r\n this.$emit('identified', status);\r\n }\r\n\r\n protected setAuthenticated(status: boolean): void {\r\n this.$emit('authenticated', status);\r\n }\r\n\r\n protected logout(routeName: string): void {\r\n this.$emit('logout', routeName);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./EmptyRouterView.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./EmptyRouterView.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmptyRouterView.vue?vue&type=template&id=89d8225e&scoped=true&\"\nimport script from \"./EmptyRouterView.ts?vue&type=script&lang=ts&\"\nexport * from \"./EmptyRouterView.ts?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 \"89d8225e\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport VueRouter, { RouteConfig } from 'vue-router';\r\nimport EmptyRouterView from '@/components/EmptyRouterView/EmptyRouterView.vue';\r\nimport TokenService from '@/services/token.service';\r\nimport store from '@/store';\r\nimport { SUPPORTED_SU } from '@/config/app.config';\r\nimport LocalStoreService from '@/utils/local.store';\r\nimport { getScreeningUnitNameFromID } from '@/config/app.config';\r\nimport moment from 'moment';\r\n\r\nVue.use(VueRouter);\r\n\r\nconst routes: Array = [\r\n {\r\n path: '/:screening/at-home',\r\n component: EmptyRouterView, // must pass a component here\r\n children: [\r\n {\r\n path: '',\r\n name: 'atHome',\r\n redirect: { name: 'atHomeIdentification' },\r\n meta: {\r\n public: true, // Allow access to even if not logged in\r\n onlyWhenLoggedOut: false,\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'identification',\r\n name: 'atHomeIdentification',\r\n component: () => import('../views/AtHome/ParticipantIdentification/ParticipantIdentification.vue'),\r\n meta: {\r\n public: true, // Allow access to even if not logged in\r\n onlyWhenLoggedOut: true,\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'identity',\r\n name: 'atHomeIdentity',\r\n component: () => import('../views/AtHome/QuestIdentity/QuestIdentity.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'address',\r\n name: 'atHomeAddress',\r\n component: () => import('../views/AtHome/QuestAddress/QuestAddress.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'insurance',\r\n name: 'atHomeInsurance',\r\n component: () => import('../views/AtHome/QuestInsurance/QuestInsurance.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'doctor',\r\n name: 'atHomeDoctor',\r\n component: () => import('../views/AtHome/QuestDoctor/QuestDoctor.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'questions',\r\n name: 'atHomeQuestions',\r\n component: () => import('../views/AtHome/QuestQuestions/QuestQuestions.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'recap',\r\n name: 'atHomeRecap',\r\n component: () => import('../views/AtHome/QuestRecap/QuestRecap.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n {\r\n path: 'confirmation',\r\n name: 'atHomeConfirmation',\r\n component: () => import('../views/AtHome/Confirmation/Confirmation.vue'),\r\n meta: {\r\n atHome: true,\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n path: '/:screening',\r\n component: EmptyRouterView, // must pass a component here\r\n children: [\r\n {\r\n path: '',\r\n name: 'home',\r\n redirect: 'login',\r\n meta: {\r\n public: true, // Allow access to even if not logged in\r\n onlyWhenLoggedOut: false,\r\n },\r\n },\r\n {\r\n path: 'login',\r\n name: 'login',\r\n component: () => import('../views/UserAuthentication/UserAuthentication.vue'),\r\n meta: {\r\n public: true, // Allow access to even if not logged in\r\n onlyWhenLoggedOut: true,\r\n },\r\n },\r\n {\r\n path: 'participant',\r\n name: 'participant',\r\n component: () => import('../views/ParticipantIdentification/ParticipantIdentification.vue'),\r\n },\r\n {\r\n path: ':partId/overview',\r\n name: 'overview',\r\n component: () => import('../views/QuestOverview/QuestOverview.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: ':partId/identity',\r\n name: 'identity',\r\n component: () => import('../views/QuestIdentity/QuestIdentity.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: ':partId/consent',\r\n name: 'consent',\r\n component: () => import('../views/QuestConsent/QuestConsent.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n beforeEnter: (to, from, next) => {\r\n // Bypass this route in case we already have a signature that didn't expire\r\n if (store.state.questionnaire.consentDate && !store.getters.hasSignatureExpired) {\r\n return next({\r\n name: 'overview',\r\n });\r\n }\r\n next();\r\n }\r\n },\r\n {\r\n path: ':partId/address',\r\n name: 'address',\r\n component: () => import('../views/QuestAddress/QuestAddress.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: ':partId/insurance',\r\n name: 'insurance',\r\n component: () => import('../views/QuestInsurance/QuestInsurance.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: ':partId/doctor',\r\n name: 'doctor',\r\n component: () => import('../views/QuestDoctor/QuestDoctor.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: ':partId/questions',\r\n name: 'questions',\r\n component: () => import('../views/QuestQuestions/QuestQuestions.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: ':partId/recap',\r\n name: 'recap',\r\n component: () => import('../views/QuestRecap/QuestRecap.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: 'confirmation',\r\n name: 'confirmation',\r\n component: () => import('../views/Confirmation/Confirmation.vue'),\r\n meta: {\r\n onlyWhenDossierOpened: true,\r\n },\r\n },\r\n {\r\n path: 'passwordModification',\r\n name: 'password-modification',\r\n component: () => import('../views/PasswordModification/PasswordModification.vue'),\r\n },\r\n {\r\n path: 'admin/translation',\r\n name: 'translation',\r\n component: () => import('../views/AdminTranslation/AdminTranslation.vue'),\r\n meta: {\r\n public: true, // Allow access to even if not logged in\r\n onlyWhenLoggedOut: true,\r\n },\r\n },\r\n ],\r\n },\r\n\r\n {\r\n // Default behaviour if no screening is set in the URL\r\n path: '/',\r\n name: 'default',\r\n redirect: () => {\r\n const su = LocalStoreService.localItemKeys.screeningUnit;\r\n const redirectTo = LocalStoreService.itemExists(su) ?\r\n `${getScreeningUnitNameFromID(LocalStoreService.getItem(su))}/login` :\r\n `${process.env.VUE_APP_DEFAULT_ROUTE_PREFIX}/login`;\r\n return redirectTo;\r\n },\r\n },\r\n];\r\n\r\nconst router = new VueRouter({\r\n mode: 'history',\r\n base: process.env.BASE_URL,\r\n routes,\r\n scrollBehavior(to, from, savedPosition) {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n}\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n\r\n // If we are trying to go to a page where we already are, just ignore it.\r\n if (from.name === to.name) {\r\n return;\r\n }\r\n\r\n const isPublic = to.matched.some((record) => record.meta.public);\r\n const isAtHome = to.matched.some((record) => record.meta.atHome);\r\n const onlyWhenLoggedOut = to.matched.some((record) => record.meta.onlyWhenLoggedOut);\r\n const loggedIn = TokenService.tokenExists() && (store.state.isAuthenticated || store.state.isIdentified);\r\n const suName = to.params.screening;\r\n const onlyWhenDossierOpened = to.matched.some((record) => record.meta.onlyWhenDossierOpened)\r\n\r\n // Prevent the user to change pages without having the latest app version\r\n if (store.state.isAppLoaded) {\r\n if (!store.state.appVersion.isLatest) {\r\n window.location.reload();\r\n } else {\r\n // If it's the latest version, check also the last time we checked it\r\n const a = moment(store.state.appVersion.lastCheckDate);\r\n const b = moment();\r\n if (b.diff(a, 'days') > 0) {\r\n window.location.reload();\r\n }\r\n }\r\n }\r\n\r\n if (suName !== undefined) {\r\n // Redirect to homepage if it's not a supported SU\r\n if (!SUPPORTED_SU.includes(suName.toLocaleLowerCase())) {\r\n return next({\r\n name: 'default',\r\n });\r\n }\r\n }\r\n \r\n // If authentified when can't access to atHome routes so redirect to home\r\n if (store.state.isAuthenticated && isAtHome) {\r\n return next({\r\n path: '/',\r\n });\r\n }\r\n\r\n // If authentified when can't access to non-atHome routes so redirect to atHomeIdentity\r\n if (store.state.isIdentified && !isAtHome) {\r\n return next({\r\n name: 'atHomeIdentity',\r\n });\r\n }\r\n\r\n if (!loggedIn && !isPublic && !isAtHome) {\r\n return next({\r\n path: '/',\r\n });\r\n }\r\n\r\n if (!loggedIn && !isPublic && isAtHome) {\r\n return next({\r\n name: 'atHomeIdentification',\r\n });\r\n }\r\n\r\n // Do not allow user to visit login page or register page if they are logged in\r\n // Pro users should access to the login page in order to open the participant dossier\r\n if (loggedIn && onlyWhenLoggedOut && !store.state.isAuthenticated) {\r\n return next({\r\n name: 'home',\r\n });\r\n }\r\n\r\n // Do not allow to come back after confirmation\r\n // Go back to login page\r\n if (from.name === 'confirmation' && !!to.name && !isAtHome) {\r\n if (to.name !== 'participant') {\r\n return next({\r\n name: 'participant',\r\n });\r\n }\r\n }\r\n\r\n // Do not allow to come back after confirmation\r\n // Go back to login page\r\n if (from.name === 'confirmation' && !!to.name && isAtHome) {\r\n if (to.name !== 'atHomeIdentification') {\r\n return next({\r\n name: 'atHomeIdentification',\r\n });\r\n }\r\n }\r\n \r\n // If we are logged in but no dossier opened we must go/stay\r\n // on participant page to open a dossier\r\n if (loggedIn && onlyWhenDossierOpened && !store.state.isDossierOpened) {\r\n return next({\r\n name: 'participant',\r\n });\r\n }\r\n\r\n next();\r\n});\r\n\r\nexport default router;\r\n","/* eslint-disable no-prototype-builtins */\r\nimport { PhoneNumberCountries } from '@/models/VariousEnum';\r\n\r\n/**\r\n * Configuration extracted from .env file for an easy access.\r\n */\r\n// List of supported SU (e.g: vd, vs, fr)\r\nexport const SUPPORTED_SU = process.env.VUE_APP_SUPPORTED_SU.split(',');\r\n\r\n// Configuration regarding app languages/locales\r\nexport const SUPPORTED_LANGUAGES = process.env.VUE_APP_SUPPORTED_LANGUAGES.split(',');\r\nexport const FALLBACK_LANGUAGE = process.env.VUE_APP_FALLBACK_LANGUAGE;\r\n\r\nexport const PUBLIC_ROOT_API = process.env.VUE_APP_PUBLIC_ROOT_API;\r\n\r\n// App version used to force refresh the app when new update is available\r\nexport const APP_VERSION = process.env.VUE_APP_VERSION.trim();\r\n\r\n/**\r\n * Phone numbers configuration for each SU\r\n */\r\nconst PHONE_NUMBER_COUNTRIES_MAPPING: any = {\r\n ge: ['ch'],\r\n fr: ['ch'],\r\n tg: ['ch'],\r\n vs: ['ch'],\r\n};\r\n\r\nexport function getPhoneNumberCountriesBySu(suName: string): string[] {\r\n const su: string = suName.toLowerCase();\r\n if (!PHONE_NUMBER_COUNTRIES_MAPPING.hasOwnProperty(su)) {\r\n return [];\r\n }\r\n\r\n const countries = PHONE_NUMBER_COUNTRIES_MAPPING[su];\r\n const phoneNumberCountry = [];\r\n\r\n countries.forEach((element: string) => {\r\n phoneNumberCountry.push(PhoneNumberCountries[element.toUpperCase() as keyof typeof PhoneNumberCountries]);\r\n });\r\n\r\n return countries;\r\n}\r\n\r\n/**\r\n * Screening units id and name\r\n */\r\nconst SCREENING_UNITS: any = {\r\n 1: 'fr',\r\n 5: 'tg',\r\n 6: 'ge',\r\n 3: 'vs',\r\n};\r\n\r\nexport function getScreeningUnitNameFromID(suId: string) {\r\n const su: number = Number(suId) % 100;\r\n if (!SCREENING_UNITS.hasOwnProperty(su)) {\r\n return '';\r\n }\r\n return SCREENING_UNITS[su];\r\n}\r\n","/**\r\n * This is a wrapper around the localStorage API. Data are stored\r\n * in the browser and survive between page reload and browser session.\r\n * Use this class to store non-sensitive information in the frontend.\r\n */\r\nexport default class LocalStoreService {\r\n\r\n /**\r\n * @prop {object} localItemKeys Object with all the local storage keys used in this application\r\n */\r\n public static readonly localItemKeys = {\r\n /** @prop {string} proUsername The username of a Pro user */\r\n proUsername: 'username',\r\n /** @prop {string} screeningUnit The screening unit (e.g. fr, vs) of the logged in user */\r\n screeningUnit: 'su',\r\n /** @prop {string} dossierId The dossier/participant ID */\r\n dossierId: 'dossier',\r\n /** @prop {string} policies The list of policies */\r\n policies: 'POLICIES',\r\n /** @prop {string} appVersionTrys The number of try to refresh the app */\r\n appVersionTrys: 'appVersionTrys',\r\n };\r\n\r\n /**\r\n * Get an item from local storage. If the item doesn't exists we return an empty string by default.\r\n * An empty string doesn't necessarily mean that the item doesn't exist : use the itemExists() for this purpose.\r\n * @param key The item key to get\r\n * @returns {string} The item at key in the local storage.\r\n */\r\n public static getItem(key: string): string {\r\n const val = localStorage.getItem(this.getKey(key));\r\n if (val === null) {\r\n return '';\r\n }\r\n return val;\r\n }\r\n\r\n /**\r\n * Set (add or update) an item in local storage\r\n * @param key The item key to set\r\n * @param value The item value to set\r\n */\r\n public static setItem(key: string, value: string): void {\r\n localStorage.setItem(this.getKey(key), value);\r\n }\r\n\r\n /**\r\n * Delete/remove an item from local storage\r\n * @param key The item key to delete/remove\r\n */\r\n public static deleteItem(key: string): void {\r\n localStorage.removeItem(this.getKey(key));\r\n }\r\n\r\n /**\r\n * Check if a key exists in the local storage\r\n * @param key The item key to check\r\n * @returns {boolean} True if an item exists in the local sotrage, false otherwise.\r\n */\r\n public static itemExists(key: string): boolean {\r\n const val = localStorage.getItem(this.getKey(key));\r\n if (val === null) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Clears all the data stored in local storage for the current application.\r\n */\r\n public static clearAll(): void {\r\n for (const [prop, keyString] of Object.entries(this.localItemKeys)) {\r\n this.deleteItem(keyString);\r\n }\r\n }\r\n\r\n /** The prefix used on every key the app stores in Local Storage */\r\n private static readonly prefix = 'mcsis:equest';\r\n\r\n /**\r\n * Get the key with prefix.\r\n * @param {string} key\r\n */\r\n private static getKey(key: string): string {\r\n return `${this.prefix}:${key}`.trim();\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/ge.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[\n (\"route-\" + (this.$route.name)),\n { 'menu-open': this.mobileMenuOpen, 'data-is-loading': this.isLoading } ],attrs:{\"id\":\"app\"}},[_c('header',[_c('div',{staticClass:\"inner-header\"},[_c('div',{staticClass:\"logos\"},[_c('Logo')],1),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"actions-top\"},[_c('LanguagePicker'),(_vm.isAtHome)?_c('MoreInfo'):_vm._e()],1),(!_vm.isAtHome)?_c('div',{attrs:{\"id\":\"nav\"}},[(!_vm.authenticated)?_c('router-link',{attrs:{\"to\":{ name: 'login' }}},[_vm._v(\"Login \")]):_vm._e(),(_vm.authenticated)?_c('router-link',{staticClass:\"button-logout\",attrs:{\"to\":{ name: 'login' },\"replace\":\"\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.logout()}}},[_c('img',{attrs:{\"src\":require(\"@/assets/icons/logout.svg\"),\"alt\":\"logout\"}}),_vm._v(\" \"+_vm._s(_vm.$t('buttons.logout'))+\" (\"+_vm._s(_vm.userName)+\") \")]):_vm._e(),(_vm.authenticated)?_c('router-link',{attrs:{\"to\":{ name: 'password-modification' }}},[_vm._v(_vm._s(_vm.$t('menu.changePassword'))+\" \")]):_vm._e(),(_vm.env === 'development')?_c('router-link',{attrs:{\"to\":{ name: 'translation' }}},[_vm._v(_vm._s(_vm.$t('Translations'))+\" \")]):_vm._e()],1):_vm._e(),_c('div',{attrs:{\"id\":\"mobile-trigger\"},on:{\"click\":_vm.toggleMenu,\"toggleMenu\":_vm.toggleMenu}},[_c('span',{staticClass:\"hamburger-top\"}),_c('span',{staticClass:\"hamburger-bot\"})])])])]),_c('notifications',{attrs:{\"group\":\"default\",\"position\":\"top right\"},scopedSlots:_vm._u([{key:\"body\",fn:function(props){return [_c('div',{class:(\"vue-notification \" + (props.item.type)),on:{\"click\":props.close}},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(props.item.title)))])]),_c('div',[_vm._v(_vm._s(_vm.$t(props.item.text)))])])]}}])}),_c('notifications',{attrs:{\"group\":\"auth\",\"position\":\"top center\"},scopedSlots:_vm._u([{key:\"body\",fn:function(props){return [_c('div',{class:(\"vue-notification \" + (props.item.type)),on:{\"click\":props.close}},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(props.item.title)))])]),_c('div',[_vm._v(_vm._s(_vm.$t(props.item.text)))])])]}}])}),_c('notifications',{attrs:{\"group\":\"important\",\"position\":\"top center\"},scopedSlots:_vm._u([{key:\"body\",fn:function(props){return [_c('div',{class:(\"vue-notification \" + (props.item.type)),on:{\"click\":props.close}},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(props.item.title)))])]),_c('div',[_vm._v(_vm._s(_vm.$t(props.item.text)))])])]}}])}),_c('router-view',{staticClass:\"main-content\",on:{\"authenticated\":_vm.setAuthenticated,\"logout\":_vm.logout}}),_c('Loader'),_c('footer',[_c('span',[_vm._v(\" © \"+_vm._s(new Date().getFullYear())+\" Swiss Cancer Screening - Created by \"),_c('a',{attrs:{\"href\":\"https://cdi.ch\",\"target\":\"_blank\"}},[_vm._v(\"CDI\")])])]),_c('MobileMenu',{attrs:{\"authenticated\":_vm.authenticated,\"username\":_vm.authenticated ? _vm.userName : null,\"env\":_vm.env},on:{\"close-mob-menu\":_vm.closeMobMenu,\"logout\":function($event){_vm.logout(); _vm.closeMobMenu();}}}),_c('transition',{attrs:{\"name\":\"modal\"}},[(_vm.showUpdateModal)?_c('ModalTemplate',{on:{\"close\":_vm.hideUpdateModal}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.$t('appUpdate.modal.title')))]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_vm._l((_vm.$t('appUpdate.modal.bodyMessage')),function(msg,index){return _c('p',{key:index},[_vm._v(\" \"+_vm._s(msg)+\" \")])}),_c('Contact')],2),_c('div',{staticClass:\"modal-bottom-buttons\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('div',[_c('button',{on:{\"click\":function($event){return _vm.hideUpdateModal()}}},[_vm._v(_vm._s(_vm.$t('buttons.ok')))])])])]):_vm._e()],1),_c('transition',{attrs:{\"name\":\"modal\"}},[(_vm.showEquestAtHomeContentModal)?_c('ModalTemplate',{on:{\"close\":_vm.hideInfoEquestAtHomeContentModal}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.$t('pages.modalEquestAtHomeContent.title')))]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('pages.modalEquestAtHomeContent.message'))+\" \")])]),_c('div',{staticClass:\"modal-bottom-buttons\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('div',[_c('button',{on:{\"click\":function($event){return _vm.hideInfoEquestAtHomeContentModal()}}},[_vm._v(_vm._s(_vm.$t('buttons.ok')))])])])]):_vm._e()],1),_c('transition',{attrs:{\"name\":\"modal\"}},[(_vm.onShowGiveUpModal)?_c('ModalTemplate',{on:{\"close\":_vm.hideGiveUpModal}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.$t('pages.modalGiveUp.finish')))]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('p',[_vm._v(_vm._s(_vm.$t('pages.modalGiveUp.cannotParticipate')))]),_c('p',[_vm._v(_vm._s(_vm.$t('pages.modalGiveUp.giveBackIfYes')))])]),_c('div',{staticClass:\"bottom-buttons\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('div',{staticClass:\"bottom-buttons__prev-next\"},[_c('button',{staticClass:\"reversed\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.hideGiveUpModal()}}},[_vm._v(_vm._s(_vm.$t('buttons.back')))]),_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.giveUp()}}},[_vm._v(_vm._s(_vm.$t('buttons.giveUp')))])])])]):_vm._e()],1)],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('ul',{staticClass:\"languageSwitcher\"},_vm._l((_vm.languages),function(lang){return _c('li',{key:lang},[_c('a',{class:{ 'active': _vm.isCurrentLanguage(lang) },attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.changeLocale(lang)}}},[_vm._v(_vm._s(lang)+\" \")])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue } from 'vue-property-decorator';\r\nimport { SUPPORTED_LANGUAGES } from '@/config/app.config';\r\n\r\n@Component\r\nexport default class LanguagePicker extends Vue {\r\n private languages = SUPPORTED_LANGUAGES;\r\n\r\n protected changeLocale(lang: string): void {\r\n this.$i18n.locale = lang;\r\n if (this.$store.state.isAuthenticated && this.$store.state.isDossierOpened) {\r\n this.$store.commit('setEquestLng', lang);\r\n }\r\n }\r\n\r\n protected isCurrentLanguage(lang: string): boolean {\r\n if (this.languages.includes(this.$i18n.locale)) {\r\n return this.$i18n.locale === lang;\r\n }\r\n return this.$i18n.fallbackLocale === lang;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./LanguagePicker.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./LanguagePicker.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LanguagePicker.vue?vue&type=template&id=f3ca5a12&scoped=true&\"\nimport script from \"./LanguagePicker.ts?vue&type=script&lang=ts&\"\nexport * from \"./LanguagePicker.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./LanguagePicker.scss?vue&type=style&index=0&id=f3ca5a12&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f3ca5a12\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[(this.isLoading)?_c('div',{staticClass:\"loader-bg\"},[_c('div',{attrs:{\"id\":\"loader\"}})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class Loader extends Vue {\r\n // Get loading state from store\r\n protected get isLoading(): boolean { return this.$store.state.dataLoading; }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./Loader.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./Loader.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=59d3fac7&scoped=true&\"\nimport script from \"./Loader.ts?vue&type=script&lang=ts&\"\nexport * from \"./Loader.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./Loader.scss?vue&type=style&index=0&id=59d3fac7&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59d3fac7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('img',{staticClass:\"logo\",attrs:{\"src\":_vm.headerLogoSrc,\"alt\":\"\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class Logo extends Vue {\r\n public get isAtHome() {\r\n return this.$route.matched.some((record) => record.meta.atHome);\r\n }\r\n\r\n protected get headerLogoSrc(): string {\r\n if (this.$route.params.screening === undefined) {\r\n // Load a default logo instead\r\n return '';\r\n }\r\n const suName = this.$route.params.screening.toLowerCase();\r\n\r\n // TODO: move these in a configuration file instead ?\r\n const svg = ['fr'];\r\n const jpg = ['vd', 'vs', 'ti', 'tg'];\r\n const png = ['bb', 'gr', 'ge'];\r\n\r\n if (this.isAtHome) {\r\n if (jpg.includes(suName)) {\r\n return require(`@/assets/logos/${suName}.jpg`);\r\n } else if (svg.includes(suName)) {\r\n return require(`@/assets/logos/${suName}.svg`);\r\n } else if (png.includes(suName)) {\r\n return require(`@/assets/logos/${suName}.png`);\r\n }\r\n }\r\n\r\n // Load a default logo (same for all SU)\r\n // eslint-disable-next-line quotes\r\n return require(`@/assets/logos/default.png`);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./Logo.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./Logo.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Logo.vue?vue&type=template&id=258cdb52&scoped=true&\"\nimport script from \"./Logo.ts?vue&type=script&lang=ts&\"\nexport * from \"./Logo.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./Logo.css?vue&type=style&index=0&id=258cdb52&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 \"258cdb52\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"offcanvas\"},[_c('LanguagePicker'),_c('div',{attrs:{\"id\":\"mobile-nav\"}},[(!_vm.authenticated)?_c('router-link',{attrs:{\"to\":{ name: 'login' }},nativeOn:{\"click\":function($event){return _vm.$emit('close-mob-menu')}}},[_vm._v(\"Login \")]):_vm._e(),(_vm.authenticated)?_c('router-link',{staticClass:\"button-logout\",attrs:{\"to\":{ name: 'login' },\"replace\":\"\"},nativeOn:{\"click\":function($event){return _vm.$emit('logout')}}},[_c('img',{attrs:{\"src\":require(\"@/assets/icons/logout.svg\"),\"alt\":\"logout\"}}),_vm._v(\" \"+_vm._s(_vm.$t('buttons.logout'))+\" (\"+_vm._s(_vm.username)+\") \")]):_vm._e(),(_vm.authenticated)?_c('router-link',{attrs:{\"to\":{ name: 'password-modification' }},nativeOn:{\"click\":function($event){return _vm.$emit('close-mob-menu')}}},[_vm._v(_vm._s(_vm.$t('menu.changePassword'))+\" \")]):_vm._e(),(_vm.env === 'development')?_c('router-link',{attrs:{\"to\":{ name: 'translation' }},nativeOn:{\"click\":function($event){return _vm.$emit('close-mob-menu')}}},[_vm._v(_vm._s(_vm.$t('Translations'))+\" \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport LanguagePicker from '@/components/LanguagePicker/LanguagePicker.vue';\r\n\r\n@Component({\r\n components: {\r\n LanguagePicker,\r\n },\r\n})\r\nexport default class MobileMenu extends Vue {\r\n @Prop({ required: true, default: false })\r\n public authenticated!: boolean;\r\n @Prop({ required: true, default: null })\r\n public username!: string|null;\r\n @Prop({ required: true, default: null })\r\n public env!: string|null;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./MobileMenu.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./MobileMenu.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobileMenu.vue?vue&type=template&id=38fd0c1a&scoped=true&\"\nimport script from \"./MobileMenu.ts?vue&type=script&lang=ts&\"\nexport * from \"./MobileMenu.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./MobileMenu.scss?vue&type=style&index=0&id=38fd0c1a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38fd0c1a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"learnmore\"},[_c('img',{attrs:{\"src\":require(\"@/assets/icons/csm_picto_sein.png\")}}),_c('a',{attrs:{\"href\":_vm.$t('moreInfo.faqUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('moreInfo.faqLinkText')))])]),_c('div',{staticClass:\"shortContactInfo\",domProps:{\"innerHTML\":_vm._s(_vm.shortContactInfo)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport { WatchOptions } from 'vue';\r\nimport { LocaleMessage } from 'vue-i18n';\r\n\r\n@Component\r\nexport default class MoreInfo extends Vue {\r\n protected shortContactInfo: LocaleMessage = '';\r\n get isLanguagesLoaded() { return this.$store.state.isLanguagesLoaded; }\r\n\r\n @Watch('isLanguagesLoaded', { immediate: true, deep: true } as WatchOptions)\r\n protected onIsLanguagesLoadedChanged({ to, from }: { to: boolean; from: boolean; }) {\r\n if (this.isLanguagesLoaded === true) {\r\n this.shortContactInfo = this.$t('contact.shortContactInfo');\r\n }\r\n }\r\n\r\n @Watch('$i18n.locale', { immediate: true, deep: true } as WatchOptions)\r\n protected onLocaleChanged({ to, from }: { to: boolean; from: boolean; }) {\r\n if (this.isLanguagesLoaded === true) {\r\n this.shortContactInfo = this.$t('contact.shortContactInfo');\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./MoreInfo.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/eslint-loader/index.js??ref--13-0!./MoreInfo.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MoreInfo.vue?vue&type=template&id=42d53cd4&scoped=true&\"\nimport script from \"./MoreInfo.ts?vue&type=script&lang=ts&\"\nexport * from \"./MoreInfo.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./MoreInfo.scss?vue&type=style&index=0&id=42d53cd4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42d53cd4\",\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport UserService from '@/services/user.service';\r\nimport LanguagePicker from '@/components/LanguagePicker/LanguagePicker.vue';\r\nimport Loader from '@/components/Loader/Loader.vue';\r\nimport Logo from '@/components/Logo/Logo.vue';\r\nimport MobileMenu from '@/components/MobileMenu/MobileMenu.vue';\r\nimport { WatchOptions } from 'vue';\r\nimport TokenService from '@/services/token.service';\r\nimport { SUPPORTED_LANGUAGES, APP_VERSION } from '@/config/app.config';\r\nimport { loadLanguageAsync } from '@/plugins/i18n';\r\nimport LocalStoreService from '@/utils/local.store';\r\nimport ModalTemplate from '@/components/ModalTemplate/ModalTemplate.vue';\r\nimport { McsisRole } from '@/models/constants/McsisRole';\r\nimport MoreInfo from '@/components/MoreInfo/MoreInfo.vue';\r\n\r\n@Component({\r\n components: {\r\n LanguagePicker,\r\n Loader,\r\n Logo,\r\n MobileMenu,\r\n ModalTemplate,\r\n MoreInfo,\r\n },\r\n})\r\nexport default class App extends Vue {\r\n // Properties\r\n public mobileMenuOpen: boolean = false;\r\n public env = process.env.NODE_ENV;\r\n private get suName() { return this.$route.params.screening; }\r\n private showUpdateModal: boolean = false;\r\n private showGiveUpModal: boolean = false;\r\n\r\n private get showEquestAtHomeContentModal(): boolean {\r\n return this.$store.state.showContentFromEquestAtHome;\r\n }\r\n\r\n public get isAtHome() {\r\n return this.$route.matched.some((record) => record.meta.atHome);\r\n }\r\n\r\n public created() {\r\n this.checkAppVersion();\r\n }\r\n\r\n public mounted() {\r\n window.addEventListener('load', () => {\r\n this.$store.commit('setIsAppLoaded', true);\r\n // run after everything is in-place\r\n this.setup();\r\n\r\n // Remove the locale from $i18n in order to force a \"refresh\" of the texts\r\n // by setting the former locale.\r\n const oldLocale = this.$i18n.locale;\r\n this.$i18n.locale = '';\r\n this.$i18n.locale = oldLocale;\r\n });\r\n }\r\n\r\n get userName() {\r\n return this.authenticated ? LocalStoreService.getItem(LocalStoreService.localItemKeys.proUsername) : '';\r\n }\r\n get authenticated() { return this.$store.state.isAuthenticated; }\r\n get isDossierOpened() { return this.$store.state.isDossierOpened; }\r\n\r\n get refreshTrys() {\r\n return parseInt(LocalStoreService.getItem(LocalStoreService.localItemKeys.appVersionTrys), 10) || 0;\r\n }\r\n set refreshTrys(value: number) {\r\n LocalStoreService.setItem(LocalStoreService.localItemKeys.appVersionTrys, value.toString());\r\n }\r\n\r\n get onShowGiveUpModal(): boolean {\r\n if (this.$store.state.giveUpClicked) {\r\n this.showGiveUpModal = true;\r\n this.$store.dispatch('setGiveUpClicked', false);\r\n }\r\n return this.showGiveUpModal;\r\n }\r\n\r\n /**\r\n * Check the app version when the App is first loaded\r\n * and force the refresh if the version is different\r\n * from the app-version.json file on the server.\r\n */\r\n public checkAppVersion(): void {\r\n fetch('/app-version.json')\r\n .then((res) => res.json())\r\n .then((data) => {\r\n this.$store.commit('setAppVersion', {\r\n isLatest: data.version === APP_VERSION,\r\n lastCheckDate: new Date(),\r\n });\r\n if (!this.$store.state.appVersion.isLatest) {\r\n if (this.refreshTrys > 1) {\r\n this.showUpdateModal = true;\r\n } else {\r\n this.refreshTrys++;\r\n window.location.reload();\r\n }\r\n } else {\r\n // Reset the values\r\n this.refreshTrys = 0;\r\n }\r\n })\r\n .catch((err) => {\r\n throw(err);\r\n });\r\n }\r\n\r\n public hideUpdateModal(): void {\r\n this.showUpdateModal = false;\r\n }\r\n\r\n public hideGiveUpModal(): void {\r\n this.showGiveUpModal = false;\r\n }\r\n\r\n protected hideInfoEquestAtHomeContentModal() {\r\n this.$store.dispatch('setShowContentFromEquestAtHome', false);\r\n }\r\n\r\n /**\r\n * Setup the application on first loading\r\n */\r\n public async setup() {\r\n TokenService.setXsrfTokenInHeader();\r\n \r\n if (TokenService.tokenExists()) {\r\n const isTokenValid = await TokenService.isTokenValid()\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n return false;\r\n });\r\n if (isTokenValid) {\r\n let routePrefix = this.suName;\r\n if (!routePrefix) {\r\n // Get the route prefix from the connected participant/pro user\r\n routePrefix = await UserService.getUserRoutePrefix();\r\n }\r\n var isEquestParticipant = await this.$isInRole(McsisRole.EquestParticipant);\r\n var isParticipant = await this.$isInRole(McsisRole.Participant);\r\n if (isEquestParticipant) {\r\n this.setIdentified(true).then(\r\n async () => {\r\n // redirect to login participant in order to open the participant dossier\r\n this.$router.push({\r\n name: 'atHomeIdentity',\r\n params: {\r\n screening: routePrefix,\r\n },\r\n });\r\n });\r\n } else if (!isParticipant) {\r\n this.setAuthenticated(true).then(\r\n () => {\r\n // redirect to login participant in order to open the participant dossier\r\n if (!!this.$route.name && this.$route.name !== 'participant') {\r\n this.$router.push({\r\n name: 'participant',\r\n params: {\r\n screening: routePrefix,\r\n },\r\n });\r\n }\r\n });\r\n }\r\n } else {\r\n // In case a token exists but is no longer valid we force a logout from the\r\n // frontend to be sure to clean all data\r\n const routePrefix = this.suName;\r\n UserService.logoutFromFrontend();\r\n if (!!this.$route.name && this.$route.name !== 'login') {\r\n this.$router.push({\r\n name: 'login',\r\n params: {\r\n screening: routePrefix,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n // triggered from hamburger\r\n protected toggleMenu(): void {\r\n this.mobileMenuOpen = !this.mobileMenuOpen;\r\n }\r\n // triggered from mobile menu links\r\n protected closeMobMenu(): void {\r\n this.mobileMenuOpen = false;\r\n }\r\n\r\n protected async setAuthenticated(status: boolean): Promise {\r\n this.$store.dispatch('setIsAuthenticated', status);\r\n }\r\n\r\n protected async setIdentified(status: boolean): Promise {\r\n this.$store.dispatch('setIsIdentified', status);\r\n }\r\n\r\n // Get loading state from store\r\n protected get isLoading(): boolean { return this.$store.state.dataLoading; }\r\n\r\n\r\n /**\r\n * Logs the participant or the user out of the app\r\n */\r\n protected async logout(): Promise {\r\n if (this.authenticated) {\r\n await UserService.logout();\r\n }\r\n }\r\n\r\n /**\r\n * Go to the confirmation when the participant gives up.\r\n */\r\n protected giveUp(): void {\r\n this.hideGiveUpModal();\r\n this.$store.dispatch('setHasGivenUp', true);\r\n this.$router.push({\r\n name: 'confirmation',\r\n params: {\r\n screening: this.$route.params.screening,\r\n },\r\n });\r\n }\r\n\r\n protected addPopupMessageBeforeUnload(): void {\r\n if (window.onbeforeunload) {\r\n return;\r\n }\r\n\r\n window.onbeforeunload = (ev: any) => {\r\n const e = ev || window.event;\r\n const warningText = this.$i18n.t('msgs.notSavedDataWarningMessage').toString();\r\n\r\n // For IE and Firefox\r\n if (e) {\r\n e.returnValue = warningText;\r\n }\r\n\r\n // For Safari, Chrome\r\n return warningText;\r\n };\r\n }\r\n\r\n protected removePopupMessageBeforeUnload(): void {\r\n if (window.onbeforeunload) {\r\n window.onbeforeunload = null;\r\n }\r\n }\r\n\r\n @Watch('$route.name', { immediate: true, deep: true } as WatchOptions)\r\n protected onRouteNameChanged(to: string, from: string) {\r\n if (to !== undefined) {\r\n if (to !== 'confirmation') {\r\n this.addPopupMessageBeforeUnload();\r\n } else {\r\n this.removePopupMessageBeforeUnload();\r\n }\r\n } else {\r\n this.removePopupMessageBeforeUnload();\r\n }\r\n }\r\n\r\n @Watch('suName', { immediate: true, deep: true } as WatchOptions)\r\n protected onLocaleChanged(suName: string, oldSuName: string) {\r\n if (oldSuName !== suName && suName !== undefined) {\r\n this.$store.dispatch('setIsLanguagesLoaded', false);\r\n // Load languages by SU\r\n SUPPORTED_LANGUAGES.forEach((lang: string) => {\r\n loadLanguageAsync(lang, suName).then(() => {\r\n this.$store.dispatch('setIsLanguagesLoaded', true);\r\n });\r\n });\r\n }\r\n }\r\n}\r\n","export enum McsisPolicy {\r\n DoctorRead,\r\n InsuranceRead,\r\n LocalityRead,\r\n MedicalDataEdit,\r\n MedicalDataRead,\r\n QuestionRead,\r\n UserRead,\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/eslint-loader/index.js??ref--13-0!./App.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/eslint-loader/index.js??ref--13-0!./App.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1625e1ce&\"\nimport script from \"./App.ts?vue&type=script&lang=ts&\"\nexport * from \"./App.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./App.scss?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { McsisPolicy } from '@/models/constants/McsisPolicy';\r\nimport LocalStoreService from '@/utils/local.store';\r\n\r\n\r\n/**\r\n * Manage how the policies are being stored and retrieved from storage.\r\n *\r\n * Current implementation stores to localStorage (LocalStoreService).\r\n */\r\nexport default class AuthService {\r\n public static readonly POLICIES = 'policies';\r\n\r\n /**\r\n * Get the policies\r\n * @returns {Map} The policies\r\n */\r\n public static getPolicies(): Map {\r\n const policies = LocalStoreService.getItem(this.POLICIES);\r\n return JSON.parse(policies as string);\r\n }\r\n\r\n /**\r\n * Save the given policies\r\n * @param policies The policies\r\n */\r\n public static savePolicies(policies: Map) {\r\n LocalStoreService.setItem(this.POLICIES, JSON.stringify(policies));\r\n }\r\n\r\n /**\r\n * Remove/delete the policies\r\n */\r\n public static removePolicies() {\r\n LocalStoreService.deleteItem(this.POLICIES);\r\n }\r\n\r\n}\r\n","import _Vue from 'vue';\r\nimport AuthService from '@/services/auth.service';\r\nimport { McsisPolicy } from '@/models/constants/McsisPolicy';\r\nimport TokenService from '@/services/token.service';\r\nimport ApiService from '@/services/api.service';\r\nimport { McsisClaimDTO } from '@/models/McsisClaimDTO';\r\nimport ApiError from '@/exceptions/api.error';\r\nimport { McsisPolicyDTO } from '@/models/McsisPolicyDTO';\r\nimport jwt_decode from 'jwt-decode';\r\nimport { McsisRole } from '@/models/constants/McsisRole';\r\n\r\nexport function AuthPlugin(Vue: typeof _Vue, options?: AuthPluginOptions): void {\r\n // do stuff with options\r\n Vue.prototype.$isAuthorized = isAuthorized;\r\n Vue.prototype.$isInRole = isInRole;\r\n Vue.directive('ShowByPolicy', ShowByPolicy);\r\n Vue.directive('ShowByRole', ShowByRole);\r\n Vue.directive('HideByRole', HideByRole);\r\n}\r\n\r\nconst isAuthorized = (policy: McsisPolicy): Promise => {\r\n return fetchPolicies().then((policies: any) => {\r\n if (TokenService.tokenExists()) {\r\n const decodedToken = jwt_decode(TokenService.getToken() as string) as any;\r\n\r\n const requiredClaims = policies.get(policy);\r\n if (requiredClaims === undefined) {\r\n throw new Error(\r\n 'No information received from the API about policy: ' +\r\n McsisPolicy[policy],\r\n );\r\n }\r\n for (const claimCode of requiredClaims) {\r\n if (decodedToken[claimCode] === undefined) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n });\r\n};\r\n\r\nconst isInRole = (role: McsisRole): Promise => {\r\n const decodedToken = jwt_decode(TokenService.getToken() as string) as any;\r\n let isinRole = false;\r\n if (Array.isArray(decodedToken.role)) {\r\n isinRole = decodedToken.role.some((r: string) => r === McsisRole[role]);\r\n } else {\r\n isinRole = decodedToken.role === McsisRole[role];\r\n }\r\n\r\n return Promise.resolve(isinRole);\r\n};\r\n\r\nconst fetchPolicies = (): Promise> => {\r\n let policies = AuthService.getPolicies();\r\n if (policies && policies.size > 0) {\r\n return Promise.resolve(policies);\r\n }\r\n // data services cannot be used since they may depend on this service\r\n return ApiService.get(`${process.env.VUE_APP_PUBLIC_ROOT_API}/auth/policies`,\r\n { handlerSuccessEnabled: false, handlerErrorEnabled: false })\r\n .then((response: any) => {\r\n const res = response.data as McsisPolicyDTO[];\r\n\r\n policies = new Map();\r\n res.forEach((val: any) => {\r\n const policy: McsisPolicy =\r\n McsisPolicy[val.mcsisPolicyCode as keyof typeof McsisPolicy];\r\n if (policy === undefined) {\r\n throw new Error(\r\n `A policy returned by the API is unknown to the front-end code: ${val.mcsisPolicyCode}`,\r\n );\r\n }\r\n const claims: string[] = val.mcsisClaims.map(\r\n (claim: McsisClaimDTO) => claim.mcsisClaimCode,\r\n );\r\n const parentClaims: string[] = val.mcsisParentPolicy\r\n ? val.mcsisParentPolicy.mcsisClaims.map(\r\n (claim: McsisClaimDTO) => claim.mcsisClaimCode,\r\n )\r\n : [];\r\n for (const claimCode of parentClaims) {\r\n if (claims.indexOf(claimCode) === -1) {\r\n claims.push(claimCode);\r\n }\r\n }\r\n\r\n policies.set(policy, claims);\r\n });\r\n AuthService.savePolicies(policies);\r\n return policies;\r\n })\r\n .catch((error: any) => {\r\n throw new ApiError(error.response.status, error.response.statusText);\r\n });\r\n};\r\n\r\nconst ShowByPolicy = {\r\n bind(el: any, binding: any) {\r\n el.style.display = 'none';\r\n isAuthorized(McsisPolicy[binding.value as keyof typeof McsisPolicy]).then(\r\n (response: boolean) => {\r\n if (el && response) {\r\n el.style.display = 'inherit';\r\n } else {\r\n el.remove();\r\n }\r\n },\r\n );\r\n },\r\n};\r\n\r\nconst ShowByRole = {\r\n bind(el: any, binding: any) {\r\n el.style.display = 'none';\r\n isInRole(McsisRole[binding.value as keyof typeof McsisRole]).then(\r\n (visible: boolean) => {\r\n if (el && visible) {\r\n el.style.display = 'inherit';\r\n } else {\r\n el.remove();\r\n }\r\n },\r\n );\r\n },\r\n};\r\n\r\nconst HideByRole = {\r\n bind(el: any, binding: any) {\r\n el.style.display = 'none';\r\n isInRole(McsisRole[binding.value as keyof typeof McsisRole]).then(\r\n (visible: boolean) => {\r\n if (el && visible) {\r\n el.remove();\r\n } else {\r\n el.style.display = 'inherit';\r\n }\r\n },\r\n );\r\n },\r\n};\r\n\r\nexport class AuthPluginOptions { }\r\n","import Vue from 'vue';\r\nimport App from './App/App.vue';\r\nimport router from './router';\r\nimport store from './store';\r\nimport ApiService from './services/api.service';\r\nimport i18n from './plugins/i18n';\r\nimport { AuthPlugin } from './plugins/auth';\r\nimport Notifications from 'vue-notification';\r\nimport VueI18n from 'vue-i18n';\r\nimport VueTelInput from 'vue-tel-input';\r\n\r\nconst JsonExcel = require('vue-json-excel').default;\r\n\r\nVue.config.productionTip = false;\r\n\r\nVue.component('downloadExcel', JsonExcel);\r\nVue.use(AuthPlugin);\r\nVue.use(Notifications);\r\nVue.use(VueI18n);\r\nVue.use(VueTelInput);\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App)\r\n}).$mount('#app');\r\n\r\n// Set the base URL of the API\r\nApiService.init(process.env.VUE_APP_PUBLIC_ROOT_API);\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./App.scss?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./App.scss?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/gr.png\";","module.exports = __webpack_public_path__ + \"img/bb.png\";","export enum PhoneNumberCountries {\r\n CH,\r\n FR,\r\n IT,\r\n DE,\r\n}\r\n\r\n/**\r\n * The different consent text with abbreviation coming from the ConfigItem\r\n */\r\nexport enum ConsentText {\r\n AssessmentDocuments = 'AD',\r\n Basic = 'B',\r\n CancerRegistry = 'CR',\r\n DataProcessing = 'DP',\r\n ExternalPhysician = 'EP',\r\n ProgramMigration = 'PM',\r\n StatisticalUse = 'SU',\r\n}\r\n\r\n/**\r\n * Get the enum Key (as a string) by the given enum Value\r\n * TODO: move this method elsewhere as a helper ?\r\n * @param myEnum The enum\r\n * @param enumValue The value\r\n * @returns {String} The enum key as a string\r\n */\r\nexport function getEnumKeyByEnumValue(myEnum: any, enumValue: any) {\r\n const keys = Object.keys(myEnum).filter(x => myEnum[x] == enumValue);\r\n return keys.length > 0 ? keys[0] : null;\r\n}\r\n\r\n/**\r\n * The different enum for the health questionnaire\r\n */\r\nexport enum AnswerChoices {\r\n No = 'NON',\r\n Yes = 'OUI',\r\n DontKnow = 'SAIS_PAS',\r\n Other = 'AUTRE',\r\n Unknown = 'INCONNU',\r\n Screening = 'DEPIST',\r\n BreastProblem = 'PB_SEIN',\r\n BeforeHT_No = 'QF_FTHB_NO',\r\n BeforeHT_NoSince = 'QF_FTHB_NO_SINCE',\r\n BeforeHT_NoAnswer = 'QF_FTHB_NO_ANSWER',\r\n}\r\n\r\nexport enum Breast {\r\n Both = '2S',\r\n Right = 'SD',\r\n Left = 'SG',\r\n}\r\n\r\nexport enum CancerFamilyChoices {\r\n DontKnow = 'SAIS_PAS',\r\n LessThan50 = 'MOINS_50',\r\n MoreThan50 = 'PLUS_50'\r\n}\r\n\r\nexport enum BreastSymptom {\r\n Pain,\r\n Flow,\r\n Boule,\r\n Other\r\n}\r\n\r\nexport enum BreastOperation {\r\n BenignAffection,\r\n Cancer,\r\n PlasticSurgery,\r\n Other\r\n}\r\n","import store from '@/store';\r\nimport { PUBLIC_ROOT_API } from '@/config/app.config';\r\nimport ApiService from './api.service';\r\nimport jwt_decode from 'jwt-decode';\r\n\r\n/**\r\n * Manage how the Access Tokens are being stored and retrieved from storage.\r\n *\r\n * Current implementation stores to in memory store and cookie.\r\n */\r\nexport default class TokenService {\r\n public static readonly TOKEN_KEY = 'access_token';\r\n public static readonly REFRESH_TOKEN_KEY = 'refresh_token';\r\n public static readonly CSRF_TOKEN = 'csrf_token';\r\n public static readonly XSRF_TOKEN = 'xsrf_token';\r\n public static readonly X_XSRF_TOKEN = 'x-xsrf-token';\r\n\r\n /**\r\n * Get the JWT token from cookie or store\r\n * @returns {string} The token\r\n */\r\n public static getToken(): string {\r\n if (!store.state.token) {\r\n // Get Token from cookie\r\n const cookieToken = this.getCookieByName(this.TOKEN_KEY);\r\n if (cookieToken) {\r\n // Get expiration timestamp from token\r\n const decodedToken = jwt_decode(cookieToken) as any;\r\n const key = 'exp';\r\n const timestampExp = decodedToken[key] as number;\r\n\r\n store.commit('setToken', cookieToken);\r\n store.commit('setTokenTimestamp', timestampExp);\r\n } else {\r\n this.removeToken();\r\n }\r\n }\r\n return store.state.token;\r\n }\r\n\r\n /**\r\n * Refresh the JWT token from cookie\r\n * @returns {string} The token\r\n */\r\n public static refreshToken(): void {\r\n const cookieToken = this.getCookieByName(this.TOKEN_KEY);\r\n store.commit('setToken', cookieToken);\r\n }\r\n\r\n\r\n /**\r\n * Get the XSRF token from cookie and set it as header for axios\r\n */\r\n public static setXsrfTokenInHeader(): void {\r\n const cookieToken = this.getCookieByName(this.XSRF_TOKEN);\r\n if (cookieToken) {\r\n ApiService.setHeader(this.X_XSRF_TOKEN, cookieToken);\r\n }\r\n }\r\n\r\n /**\r\n * Generate the XSRF token\r\n */\r\n public static async generateXsrfToken(): Promise {\r\n const requestData = {\r\n url: `${PUBLIC_ROOT_API}/Tokens/csrf`,\r\n };\r\n\r\n return await ApiService.get(requestData.url)\r\n .then((response: any) => {\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * Check JWT token existence from the cookie\r\n * @returns {boolean} True if the JWT token exists in the cookie\r\n */\r\n public static tokenExists(): boolean {\r\n return !!this.getToken();\r\n }\r\n\r\n /**\r\n * Check JWT token validity\r\n * @returns {boolean} True if the JWT token is valid\r\n */\r\n public static async isTokenValid(): Promise {\r\n const requestData = {\r\n url: `${PUBLIC_ROOT_API}/Tokens/is-valid`,\r\n };\r\n\r\n // use another axios instance without interceptors in order to not show any error message\r\n const axiosInstance = ApiService.create();\r\n return (await axiosInstance).get(requestData.url)\r\n .then((response: any) => {\r\n return true;\r\n })\r\n .catch((error: any) => {\r\n return false;\r\n });\r\n }\r\n\r\n /**\r\n * Save the given JWT token\r\n * @param accessToken The token\r\n */\r\n public static saveToken(accessToken: string) {\r\n store.commit('setToken', accessToken);\r\n }\r\n\r\n /**\r\n * Remove/delete the JWT token and reset its expiration timestamp\r\n */\r\n public static removeToken() {\r\n store.commit('setToken', '');\r\n store.commit('setTokenTimestamp', 0);\r\n }\r\n\r\n /**\r\n * Get a cookie by name (only non secure and non http cookie can be retrieved)\r\n * @param name The cookie name\r\n */\r\n private static getCookieByName(name: string): string {\r\n const value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\r\n return value ? value[2] : '';\r\n }\r\n}\r\n","var map = {\n\t\"./fr.svg\": \"7b3c\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"f99c\";","import Vue from 'vue';\r\nimport VueI18n from 'vue-i18n';\r\nimport { FALLBACK_LANGUAGE } from '@/config/app.config';\r\nimport { SUPPORTED_LANGUAGES } from '@/config/app.config';\r\n\r\nVue.use(VueI18n);\r\n\r\nfunction loadLocaleInfo() {\r\n const locales = require.context('../locale', false, /[A-Za-z0-9-_,\\s]+\\.json$/i);\r\n const localeMessages: VueI18n.LocaleMessages = {};\r\n\r\n locales.keys().forEach((key) => {\r\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\r\n if (matched && matched.length > 1) {\r\n const locale = matched[1];\r\n\r\n // ignore locale files not yet in the supported language list.\r\n if (SUPPORTED_LANGUAGES.includes(locale)) {\r\n localeMessages[locale] = locales(key);\r\n }\r\n }\r\n });\r\n\r\n return { id: locales.id, localeMessages };\r\n}\r\n\r\nconst localeInfo = loadLocaleInfo();\r\n\r\nconst options: VueI18n.I18nOptions = {\r\n // check if navigator is in one of the supported languages\r\n // if not, immediately set the locale as the one from the fallback\r\n locale: SUPPORTED_LANGUAGES.includes(navigator.language.substring(0, 2)) ? navigator.language.substring(0, 2) :\r\n FALLBACK_LANGUAGE,\r\n fallbackLocale: FALLBACK_LANGUAGE, // set fallback locale\r\n messages: localeInfo.localeMessages, // set locale messages\r\n silentTranslationWarn: true, // hide console warnings of failed localization\r\n};\r\n\r\nconst i18n = new VueI18n(options);\r\n\r\nif (module.hot) {\r\n module.hot.accept(localeInfo.id, () => {\r\n const messages = loadLocaleInfo();\r\n Object.keys(messages).forEach((locale) => {\r\n i18n.setLocaleMessage(locale, messages.localeMessages[locale]);\r\n });\r\n // console.log('hot module replacemenet', arguments)\r\n });\r\n}\r\n\r\nconst loadedLanguages = [''];\r\n\r\nexport async function loadLanguageAsync(lang: string, suName: string) {\r\n // If the language hasn't been loaded yet\r\n const messages = await import(`@/locale/su/${suName}/${lang}.json`);\r\n\r\n i18n.mergeLocaleMessage(lang, messages.default);\r\n // If the language was already loaded\r\n if (loadedLanguages.includes(lang)) {\r\n return;\r\n }\r\n loadedLanguages.push(lang);\r\n return;\r\n}\r\n\r\n\r\nexport default i18n;\r\n"],"sourceRoot":""}