{"version":3,"file":"js/app.9bb349fd.js","mappings":"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","sources":["webpack://ocf-pa-vue/./src/App.vue?0387","webpack://ocf-pa-vue/./src/components/MainContent.vue?ca10","webpack://ocf-pa-vue/./src/components/OcfPipeda.vue?895f","webpack://ocf-pa-vue/./src/components/layout/WetTop.vue?3175","webpack://ocf-pa-vue/./src/views/RegisterView.vue?ed9e","webpack://ocf-pa-vue/./src/views/SessionEndedView.vue?4dc9","webpack://ocf-pa-vue/./src/views/ThankYouView.vue?10e2","webpack://ocf-pa-vue/./src/App.vue?a59b","webpack://ocf-pa-vue/./src/components/layout/WetTop.vue?e165","webpack://ocf-pa-vue/./src/components/layout/WetTop.vue","webpack://ocf-pa-vue/./src/components/layout/WetTop.vue?200c","webpack://ocf-pa-vue/./src/components/layout/WetTop.vue?e3dc","webpack://ocf-pa-vue/./src/components/layout/WetPreFooter.vue?458a","webpack://ocf-pa-vue/./src/components/layout/WetPreFooter.vue","webpack://ocf-pa-vue/./src/components/layout/WetPreFooter.vue?2a0c","webpack://ocf-pa-vue/./src/components/layout/WetFooter.vue?4391","webpack://ocf-pa-vue/./src/components/layout/WetFooter.vue","webpack://ocf-pa-vue/./src/components/layout/WetFooter.vue?09a1","webpack://ocf-pa-vue/./src/App.vue?38a5","webpack://ocf-pa-vue/./src/App.vue?a37c","webpack://ocf-pa-vue/./src/App.vue?b495","webpack://ocf-pa-vue/./src/App.vue","webpack://ocf-pa-vue/./src/views/RegisterView.vue?7ddd","webpack://ocf-pa-vue/./src/components/Title.vue?7921","webpack://ocf-pa-vue/./src/components/Title.vue?561a","webpack://ocf-pa-vue/./src/components/Title.vue?1cfa","webpack://ocf-pa-vue/./src/components/Title.vue","webpack://ocf-pa-vue/./src/components/MainContent.vue?1beb","webpack://ocf-pa-vue/./src/components/MainContent.vue?e2ed","webpack://ocf-pa-vue/./src/components/MainContent.vue?7524","webpack://ocf-pa-vue/./src/components/MainContent.vue?9c1e","webpack://ocf-pa-vue/./src/components/MainContent.vue","webpack://ocf-pa-vue/./src/views/RegisterView.vue?abbe","webpack://ocf-pa-vue/./src/views/RegisterView.vue?723e","webpack://ocf-pa-vue/./src/views/RegisterView.vue?0361","webpack://ocf-pa-vue/./src/views/RegisterView.vue","webpack://ocf-pa-vue/./src/views/OcfPipeda.vue?6564","webpack://ocf-pa-vue/./src/components/OcfPipeda.vue?2b9a","webpack://ocf-pa-vue/./src/surveys/survey-base.ts","webpack://ocf-pa-vue/./src/surveys/widgets/widget-base.ts","webpack://ocf-pa-vue/./src/surveys/widgets/alert-widget.ts","webpack://ocf-pa-vue/./src/surveys/survey-pdf-base.ts","webpack://ocf-pa-vue/./src/surveys/widgets/download-widget.ts","webpack://ocf-pa-vue/./src/surveys/widgets/event-base.ts","webpack://ocf-pa-vue/./src/surveys/widgets/filemeter-widget.ts","webpack://ocf-pa-vue/./src/surveys/widgets/checkbox-widget.ts","webpack://ocf-pa-vue/./src/i18n.ts","webpack://ocf-pa-vue/./src/data/province-data.ts","webpack://ocf-pa-vue/./src/surveys/pipeda-survey.ts","webpack://ocf-pa-vue/./src/surveys/pipeda-survey-pdf.ts","webpack://ocf-pa-vue/./src/helpers/surveyStateHelper.ts","webpack://ocf-pa-vue/./src/contexts/sessionStorageContext.ts","webpack://ocf-pa-vue/./src/components/OcfPipeda.vue?ff48","webpack://ocf-pa-vue/./src/components/OcfPipeda.vue?a3c4","webpack://ocf-pa-vue/./src/components/OcfPipeda.vue?cd82","webpack://ocf-pa-vue/./src/components/OcfPipeda.vue","webpack://ocf-pa-vue/src/views/OcfPipeda.vue","webpack://ocf-pa-vue/./src/views/OcfPipeda.vue?6a8b","webpack://ocf-pa-vue/./src/views/OcfPipeda.vue","webpack://ocf-pa-vue/./src/views/ThankYouView.vue?4ad1","webpack://ocf-pa-vue/./src/views/ThankYouView.vue?171d","webpack://ocf-pa-vue/./src/views/ThankYouView.vue?51b1","webpack://ocf-pa-vue/./src/views/ThankYouView.vue?94fd","webpack://ocf-pa-vue/./src/views/ThankYouView.vue","webpack://ocf-pa-vue/./src/views/SessionEndedView.vue?3c85","webpack://ocf-pa-vue/./src/views/SessionEndedView.vue?1734","webpack://ocf-pa-vue/./src/views/SessionEndedView.vue?990e","webpack://ocf-pa-vue/./src/views/SessionEndedView.vue?e7ca","webpack://ocf-pa-vue/./src/views/SessionEndedView.vue","webpack://ocf-pa-vue/./src/store/index.ts","webpack://ocf-pa-vue/./src/router/index.ts","webpack://ocf-pa-vue/./src/main.ts","webpack://ocf-pa-vue/./src/locales|sync|/[A-Za-z0-9-_,/s]+/.json$/i","webpack://ocf-pa-vue/external var \"jQuery\"","webpack://ocf-pa-vue/webpack/bootstrap","webpack://ocf-pa-vue/webpack/runtime/chunk loaded","webpack://ocf-pa-vue/webpack/runtime/compat get default export","webpack://ocf-pa-vue/webpack/runtime/create fake namespace object","webpack://ocf-pa-vue/webpack/runtime/define property getters","webpack://ocf-pa-vue/webpack/runtime/ensure chunk","webpack://ocf-pa-vue/webpack/runtime/get javascript chunk filename","webpack://ocf-pa-vue/webpack/runtime/get mini-css chunk filename","webpack://ocf-pa-vue/webpack/runtime/global","webpack://ocf-pa-vue/webpack/runtime/hasOwnProperty shorthand","webpack://ocf-pa-vue/webpack/runtime/load script","webpack://ocf-pa-vue/webpack/runtime/make namespace object","webpack://ocf-pa-vue/webpack/runtime/publicPath","webpack://ocf-pa-vue/webpack/runtime/jsonp chunk loading","webpack://ocf-pa-vue/webpack/startup"],"sourcesContent":["module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"browserNotSupportedTitle\":\"Browser not supported\",\"browserNotSupportedDescription\":\"This website is not compatible with Internet Explorer and older versions of Microsoft Edge. Please use a {0}.\",\"supportedBrowser\":\"supported browser\",\"supportedBrowserUrl\":\"https://www.priv.gc.ca/en/browser-not-supported/\"},\"fr\":{\"browserNotSupportedTitle\":\"Navigateur non pris en charge\",\"browserNotSupportedDescription\":\"Le navigateur Internet Explorer et les versions antérieures de Microsoft Edge ne sont pas pris en charge par le pr�sent site Web. Veuillez utiliser un des {0}.\",\"supportedBrowser\":\"navigateurs compatible\",\"supportedBrowserUrl\":\"https://www.priv.gc.ca/fr/navigateur-non-pris-en-charge/\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"mainContent\":\"Main content\"},\"fr\":{\"mainContent\":\"Contenu principal\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"title\":\"Completed—Privacy complaint form (private sector organization)\",\"completedMsg\":\"You have sent the Office of the Privacy Commissioner (OPC) an online privacy complaint about a private sector organization. Your temporary file number is {0}. You will receive an email soon to confirm its receipt. We will review your information and will try to contact you, if appropriate, as soon as possible.\",\"cannotProcessUntilAllRelevantInformation\":\"We cannot process a complaint until all relevant information is received. All supporting documents must be received {0} or no further action will be taken.\",\"45Days\":\"within 45 days\",\"downloadASummaryOfYourComplaint\":\"Download a summary of your complaint\",\"youCanDownloadASummary\":\"You can download a summary to save or print\",\"fileAnotherComplaintTitle\":\"File another complaint\",\"fileAnotherComplaintText\":\"File a privacy complaint about a business\",\"fileAnotherComplaintUrl\":\"https://www.priv.gc.ca/en/report-a-concern/file-a-formal-privacy-complaint/file-a-complaint-about-a-business/\",\"fileAnotherComplaintNote\":\" (you will need to register again to file a different type of complaint about another business)\",\"relatedContent\":\"Related content\",\"guideToThePipedaComplaintProcessText\":\"Guide to the PIPEDA complaint process\",\"guideToThePipedaComplaintProcessUrl\":\"https://www.priv.gc.ca/en/report-a-concern/file-a-formal-privacy-complaint/file-a-complaint-about-a-business/guide/\",\"pipedaText\":\"Personal Information Protection and Electronic Documents Act (PIPEDA)\",\"pipedaUrl\":\"https://www.priv.gc.ca/en/privacy-topics/privacy-laws-in-canada/the-personal-information-protection-and-electronic-documents-act-pipeda/\",\"businessesAndYourPersonalInformationText\":\"Businesses and your personal information\",\"businessesAndYourPersonalInformationUrl\":\"https://www.priv.gc.ca/en/privacy-topics/your-privacy-rights/businesses-and-your-personal-information/\",\"tipsForRaisingPrivacyConcernText\":\"Tips for raising your privacy concern with a business\",\"tipsForRaisingPrivacyConcernUrl\":\"https://www.priv.gc.ca/en/privacy-topics/your-privacy-rights/raising-your-privacy-concern-with-an-organization/tips-for-raising-your-privacy-concern-with-a-business/\",\"formSummary\":\"form_summary\",\"invalidRequestMessage\":\"An invalid request was made. Please try again.\",\"complaintWasSubmittedSuccessfully\":\"Your complaint was submitted successfully!\"},\"fr\":{\"title\":\"Remplie – Formulaire de plainte sur la protection de la vie privée (organisation du secteur privé)\",\"completedMsg\":\"Vous avez envoyé au Commissariat à la protection de la vie privée du Canada (Commissariat) un formulaire de plainte en ligne au sujet d’une institution fédérale. Votre numéro de dossier temporaire est le {0}. Vous recevrez bientôt un courriel confirmant sa réception. Nous examinerons vos renseignements et tenterons de communiquer avec vous, le cas échéant, dès que possible.\",\"cannotProcessUntilAllRelevantInformation\":\"Nous ne pouvons pas traiter une plainte tant que nous n’avons pas reçu tous les renseignements pertinents. Toutes les pièces justificatives doivent être reçues {0}; sinon, aucune autre mesure ne sera prise.\",\"45Days\":\"dans les 45 jours\",\"downloadASummaryOfYourComplaint\":\"Téléchargez un résumé de votre plainte\",\"youCanDownloadASummary\":\"Vous pouvez télécharger un résumé pour l’enregistrer ou l’imprimer\",\"fileAnotherComplaintTitle\":\"Déposer une autre plainte\",\"fileAnotherComplaintText\":\"Déposer une plainte relative à la protection de la vie privée visant une entreprise\",\"fileAnotherComplaintUrl\":\"https://www.priv.gc.ca/fr/signaler-un-probleme/deposer-une-plainte-officielle-concernant-la-protection-de-la-vie-privee/deposer-une-plainte-visant-une-entreprise/\",\"fileAnotherComplaintNote\":\" (vous devrez vous inscrire de nouveau pour déposer un autre type de plainte visant une autre entreprise)\",\"relatedContent\":\"Contenu connexe\",\"guideToThePipedaComplaintProcessText\":\"Guide sur le processus de traitement des plaintes en vertu de la LPRPDE\",\"guideToThePipedaComplaintProcessUrl\":\"https://www.priv.gc.ca/fr/signaler-un-probleme/deposer-une-plainte-officielle-concernant-la-protection-de-la-vie-privee/deposer-une-plainte-visant-une-entreprise/guide/\",\"pipedaText\":\"Loi sur la protection des renseignements personnels et les documents électroniques (LPRPDE)\",\"pipedaUrl\":\"https://www.priv.gc.ca/fr/sujets-lies-a-la-protection-de-la-vie-privee/lois-sur-la-protection-des-renseignements-personnels-au-canada/la-loi-sur-la-protection-des-renseignements-personnels-et-les-documents-electroniques-lprpde/\",\"businessesAndYourPersonalInformationText\":\"Les entreprises et vos renseignements personnels\",\"businessesAndYourPersonalInformationUrl\":\"https://www.priv.gc.ca/fr/sujets-lies-a-la-protection-de-la-vie-privee/votre-droit-a-la-vie-privee/les-entreprises-et-vos-renseignements-personnels/\",\"tipsForRaisingPrivacyConcernText\":\"Conseils pour faire part de vos préoccupations concernant la protection de la vie privée à une entreprise\",\"tipsForRaisingPrivacyConcernUrl\":\"https://www.priv.gc.ca/fr/sujets-lies-a-la-protection-de-la-vie-privee/votre-droit-a-la-vie-privee/faire-part-de-vos-preoccupations-concernant-la-protection-de-la-vie-privee-a-une-organisation/conseils-pour-faire-part-de-vos-preoccupations-concernant-la-protection-de-la-vie-privee-a-une-entreprise/\",\"formSummary\":\"sommaire_du_formulaire\",\"invalidRequestMessage\":\"Une requête invalide a été effectuée. Veuillez essayer de nouveau.\",\"complaintWasSubmittedSuccessfully\":\"Votre plainte a été soumise avec succès!\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"lang\":\"fr\",\"text\":\"Français\"},\"fr\":{\"lang\":\"en\",\"text\":\"English\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"title\":\"Access our online privacy complaint form (private sector organization)\",\"required\":\"(required)\",\"intro1\":\"First, please submit your email address below. We will email you a unique link to complete your complaint online.\",\"emailLabel\":\"Enter your email address\",\"emailPlaceholder\":\"Enter email\",\"submitLabel\":\"Submit\",\"success\":\"Registration successful! Please check your email.\",\"error\":\"There was an error with registration. Please try again later.\"},\"fr\":{\"title\":\"Accédez à notre formulaire de plainte en ligne sur la protection de la vie privée (organisation du secteur privé)\",\"required\":\"(obligatoire)\",\"intro1\":\"Tout d’abord, veuillez saisir votre adresse électronique ci-dessous. Nous vous enverrons par courriel un lien unique pour remplir votre plainte en ligne.\",\"emailLabel\":\"Saisissez votre adresse de courriel\",\"emailPlaceholder\":\"Saisissez ici votre adresse de courriel\",\"submitLabel\":\"Soumettre\",\"success\":\"L\\u0027inscription a été completé avec succès! successful! Veuillez vérifier vos courriel.\",\"error\":\"Une érreur c\\u0027est produit lors de l\\u0027inscription. Veuillez essayer de nouveau.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"yourSessionHasEndedTitle\":\"Your session has ended-Privacy complaint form\",\"yourSessionHasEndedText\":\" Your session has just ended. If you wish to file a privacy complaint later, you will need to access the form again and start over.\",\"federalInstitutionReportUrl\":\"https://www.priv.gc.ca/en/report-a-concern/file-a-formal-privacy-complaint/file-a-complaint-about-a-federal-institution/\",\"federalInstitutionReportText\":\"File a privacy complaint about a federal institution\",\"businessReportUrl\":\"https://www.priv.gc.ca/en/report-a-concern/file-a-formal-privacy-complaint/file-a-complaint-about-a-business/\",\"businessReportText\":\"File a privacy complaint about a business\"},\"fr\":{\"yourSessionHasEndedTitle\":\"Votre session a pris fin – Formulaire de plainte concernant la protection de la vie privée\",\"yourSessionHasEndedText\":\"Votre session vient de prendre fin. Si vous souhaitez déposer une plainte par la suite, vous devrez accéder de nouveau au formulaire et recommencer à zéro.\",\"federalInstitutionReportUrl\":\"https://www.priv.gc.ca/fr/signaler-un-probleme/deposer-une-plainte-officielle-concernant-la-protection-de-la-vie-privee/deposer-une-plainte-visant-une-institution-du-gouvernement-federal/\",\"federalInstitutionReportText\":\"Déposer une plainte concernant la protection de la vie privée visant une institution du gouvernement fédéral\",\"businessReportUrl\":\"https://www.priv.gc.ca/fr/signaler-un-probleme/deposer-une-plainte-officielle-concernant-la-protection-de-la-vie-privee/deposer-une-plainte-visant-une-entreprise/\",\"businessReportText\":\"Déposer une plainte concernant la protection de la vie privée visant une entreprise\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"title\":\"Access our online privacy complaint form (private sector organization)\",\"thankYou\":\"Thank You!\",\"thankYouMessage\":\"Thanks for submitting your email address. You will receive an email from {0} with a link to complete your complaint online. If you use a security filter, make sure to set it to allow messages from this email address.\",\"thankYouMessage2\":\"The link will be active for two hours. If you cannot submit the complaint and additional documentation in two hours, \",\"thankYouMessage3\":\"For any problems with your submission, contact the {0}.\",\"contactLink\":\"OPC Information Centre\",\"contactUrl\":\"https://www.priv.gc.ca/en/contact-the-opc/contact-the-information-centre/\",\"requestLink\":\"request a new link\"},\"fr\":{\"title\":\"Accédez à notre formulaire de plainte en ligne sur la protection de la vie privée (organisation du secteur privé)\",\"thankYou\":\"Merci!\",\"thankYouMessage\":\"Merci d’avoir soumis votre adresse électronique. Vous recevrez un courriel de {0} avec un lien pour remplir votre plainte en ligne. Si vous utilisez un filtre de sécurité, n’oubliez pas de le configurer de façon qu’il laisse entrer les messages de cette adresse courriel.\",\"thankYouMessage2\":\"Le lien sera actif pendant deux heures. Si vous ne pouvez pas soumettre la déclaration dans cette période, \",\"thankYouMessage3\":\"Pour tout problème en lien avec votre soumission, veuillez communiquer avec le {0}\",\"contactLink\":\"Centre d\\u0027information du Commissariat\",\"contactUrl\":\"https://www.priv.gc.ca/fr/communiquer-avec-le-commissariat/communiquer-avec-le-centre-d-information/\",\"requestLink\":\"demandez un nouveau lien\"}}')\n delete Component.options._Ctor\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\",attrs:{\"id\":\"app\"}},[(!_vm.isBrowserSupported)?_c('section',{staticClass:\"alert alert-warning\"},[_c('p',{staticClass:\"h3\"},[_vm._v(_vm._s(_vm.$t(\"browserNotSupportedTitle\")))]),_c('i18n',{attrs:{\"path\":\"browserNotSupportedDescription\",\"tag\":\"p\"}},[_c('a',{attrs:{\"href\":_vm.$t('supportedBrowserUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"supportedBrowser\")))])])],1):_vm._e(),_c('WetTop'),_c('router-view'),_c('WetPreFooter',{attrs:{\"pageDetails\":true,\"dateModified\":'2024-05-27',\"showFeedback\":_vm.feedbackApi,\"showShare\":true}}),_c('WetFooter')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { builder } from \"wet\";\n\ndeclare var wetEn: { builder: builder };\ndeclare var wetFr: { builder: builder };\n\n@Component\nexport default class WetTop extends Vue {\n @Prop({ default: true }) readonly search!: boolean;\n @Prop({ default: true }) readonly siteMenu!: boolean;\n @Prop({ default: true }) readonly showPreContent!: boolean;\n @Prop({ default: true }) readonly topSecMenu!: boolean;\n\n created() {\n this.buildTop();\n }\n\n @Watch(\"$route\")\n onRouteChanged() {\n this.buildTop();\n }\n\n buildTop(): void {\n const wet = this.$i18n.locale === \"fr\" ? wetFr : wetEn;\n const lngLink = this.resolveLanguageLink(this.$route.meta?.lngRoute);\n const defTop = document.getElementById(\"def-top\");\n if (defTop) {\n defTop.innerHTML = wet.builder.top({\n cdnEnv: \"prod\",\n search: this.search,\n siteMenu: this.siteMenu,\n lngLinks: [\n {\n href: lngLink,\n lang: this.$t(\"lang\"),\n text: this.$t(\"text\"),\n },\n ],\n showPreContent: this.showPreContent,\n breadcrumbs: this.$route.meta?.breadcrumbs,\n topSecMenu: this.topSecMenu,\n });\n }\n }\n\n resolveLanguageLink(route: string): string {\n const lang = this.$i18n.t(\"lang\").toString();\n return this.$router.resolve({\n name: route,\n params: { lang: lang },\n }).href;\n }\n}\n","var render, staticRenderFns\nimport script from \"./WetTop.vue?vue&type=script&lang=ts&\"\nexport * from \"./WetTop.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./WetTop.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetTop.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetTop.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetTop.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetTop.vue?vue&type=custom&index=0&blockType=i18n\"","\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { builder } from \"wet\";\n\ndeclare var wetEn: { builder: builder };\ndeclare var wetFr: { builder: builder };\n\n@Component\nexport default class WetPreFooter extends Vue {\n @Prop() readonly dateModified?: string;\n @Prop({ default: false }) readonly showPostContent!: boolean;\n @Prop({ default: false }) readonly showShare!: boolean;\n @Prop() readonly showFeedback?: string;\n @Prop() readonly versionIdentifier?: string;\n @Prop() readonly screenIdentifier?: string;\n @Prop({ default: false }) readonly pageDetails!: boolean;\n @Prop({ default: null }) readonly isContainer!: boolean;\n\n created() {\n this.buildPreFooter();\n }\n\n @Watch(\"$i18n.locale\")\n onLocaleChanged() {\n this.buildPreFooter();\n }\n\n buildPreFooter(): void {\n const wet = this.$i18n.locale === \"fr\" ? wetFr : wetEn;\n const defPreFooter = document.getElementById(\"def-preFooter\");\n if (defPreFooter) {\n defPreFooter.innerHTML = wet.builder.preFooter({\n cdnEnv: \"prod\",\n dateModified: this.dateModified,\n showPostContent: this.showPostContent,\n showFeedback: this.showFeedback,\n showShare: this.showShare,\n versionIdentifier: this.versionIdentifier,\n screenIdentifier: this.screenIdentifier,\n pageDetails: this.pageDetails,\n isContainer: this.isContainer,\n });\n }\n }\n}\n","var render, staticRenderFns\nimport script from \"./WetPreFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./WetPreFooter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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 mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetPreFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetPreFooter.vue?vue&type=script&lang=ts&\"","\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { builder } from \"wet\";\n\ndeclare var wetEn: { builder: builder };\ndeclare var wetFr: { builder: builder };\n\n@Component\nexport default class WetFooter extends Vue {\n @Prop({ default: true }) readonly showFooter!: boolean;\n\n created() {\n this.buildFooter();\n }\n\n @Watch(\"$i18n.locale\")\n onLocaleChanged() {\n this.buildFooter();\n }\n\n buildFooter(): void {\n const wet = this.$i18n.locale === \"fr\" ? wetFr : wetEn;\n const defFooter = document.getElementById(\"def-footer\");\n if (defFooter) {\n defFooter.innerHTML = wet.builder.footer({\n cdnEnv: \"prod\",\n showFooter: this.showFooter,\n });\n }\n }\n}\n","var render, staticRenderFns\nimport script from \"./WetFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./WetFooter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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 mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WetFooter.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios from \"axios\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport WetTop from \"@/components/layout/WetTop.vue\";\nimport WetPreFooter from \"@/components/layout/WetPreFooter.vue\";\nimport WetFooter from \"@/components/layout/WetFooter.vue\";\n\ninterface AxiosResponse {\n status: number;\n config: {\n __isRetryRequest: boolean;\n };\n}\n\n@Component({\n components: {\n WetTop,\n WetPreFooter,\n WetFooter,\n },\n})\nexport default class App extends Vue {\n // Internet Explorer and the non chromium based Edge browsers are not supported\n isBrowserSupported = !/MSIE|Trident|Edge/.test(window.navigator?.userAgent);\n feedbackApi = \"\";\n\n created() {\n this.feedbackApi = process.env.VUE_APP_FEEDBACK_API;\n axios.interceptors.response.use(undefined, (err: AxiosResponse) => {\n return new Promise(() => {\n if (err.status === 401 && err.config && !err.config.__isRetryRequest) {\n this.$store.dispatch(\"logout\");\n this.$router.push({\n name: `${this.$i18n.locale}-register`,\n params: {\n alertType: \"alert-warning\",\n alertMessage: this.$t(\"expiredToken\").toString(),\n },\n });\n }\n throw err;\n });\n });\n }\n}\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import mod from \"-!../node_modules/@intlify/vue-i18n-loader/lib/index.js!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../node_modules/@intlify/vue-i18n-loader/lib/index.js!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=685e3dc2&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./App.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\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:\"register container\"},[_c('div',{staticClass:\"row\"},[_c('Title',{attrs:{\"title\":_vm.$t('title')}}),_c('MainContent',[(_vm.alert.message)?_c('div',{staticClass:\"alert\",class:_vm.alert.type},[_c('p',[_vm._v(_vm._s(_vm.alert.message))])]):_vm._e(),_c('p',[_vm._v(_vm._s(_vm.$t(\"intro1\")))]),_c('form',{staticClass:\"register\",attrs:{\"role\":\"form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.register.apply(null, arguments)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"required\",attrs:{\"for\":\"email\"}},[_vm._v(_vm._s(_vm.$t(\"emailLabel\"))+\" \"),_c('strong',{staticClass:\"required\"},[_vm._v(_vm._s(_vm.$t(\"required\")))])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"required\":\"\",\"type\":\"email\",\"placeholder\":_vm.$t('emailPlaceholder')},domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}})]),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"submitLabel\"))+\" \")])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-12\"},[_c('h1',{attrs:{\"id\":\"wb-cont\"}},[_vm._v(_vm._s(_vm.title))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class Title extends Vue {\n @Prop() readonly title!: string;\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Title.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Title.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Title.vue?vue&type=template&id=305d99bb&\"\nimport script from \"./Title.vue?vue&type=script&lang=ts&\"\nexport * from \"./Title.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"col-md-12\",attrs:{\"aria-label\":_vm.$t('mainContent')}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component\nexport default class MainContent extends Vue {}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainContent.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainContent.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainContent.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./MainContent.vue?vue&type=template&id=55956272&\"\nimport script from \"./MainContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainContent.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./MainContent.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport Title from \"@/components/Title.vue\"; // @ is an alias to /src\nimport MainContent from \"@/components/MainContent.vue\"; // @ is an alias to /src\n\n@Component({\n components: {\n Title,\n MainContent,\n },\n})\nexport default class RegisterView extends Vue {\n @Prop() alertType?: string;\n @Prop() alertMessage?: string;\n\n email = \"\";\n alert = { type: \"\", message: \"\" };\n\n created() {\n if (this.alertType && this.alertMessage) {\n this.alert = { type: this.alertType, message: this.alertMessage };\n }\n }\n\n register() {\n const redirectUri =\n this.$i18n.locale === \"fr\"\n ? process.env.VUE_APP_AUTH_REDIRECT_FR\n : process.env.VUE_APP_AUTH_REDIRECT_EN;\n return new Promise((resolve, reject) => {\n this.$store\n .dispatch(\"register\", {\n lang: this.$i18n.locale,\n email: this.email,\n clientId: process.env.VUE_APP_CLIENT_ID,\n redirectUri: redirectUri,\n })\n .then(() => {\n this.$router.push({ name: `${this.$i18n.locale}-thankyou` });\n resolve();\n })\n .catch(() => {\n this.alert = {\n type: \"alert-danger\",\n message: this.$t(\"error\").toString(),\n };\n reject();\n });\n });\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RegisterView.vue?vue&type=template&id=2dcae300&\"\nimport script from \"./RegisterView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegisterView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RegisterView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\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:\"reporting\"},[_c('MainContent',[_c('OcfPipeda')],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('div',{staticClass:\"breach-report\"},[_c('vue-loading-overlay',{attrs:{\"active\":_vm.isLoading,\"can-cancel\":false,\"is-full-page\":false,\"loader\":\"dots\"},on:{\"update:active\":function($event){_vm.isLoading=$event}}}),(_vm.isLoading)?_c('div',[_c('div',[_vm._v(\"...\")])]):_vm._e(),_c('survey',{attrs:{\"survey\":_vm.survey.model}}),(_vm.submitted === true)?_c('div',[_c('h1',[_vm._v(_vm._s(_vm.$t(\"title\")))]),_c('i18n',{attrs:{\"path\":\"completedMsg\",\"tag\":\"p\"}},[_c('strong',[_vm._v(_vm._s(_vm.referenceNumber))])]),_c('div',{staticClass:\"alert alert-info\"},[_c('i18n',{attrs:{\"path\":\"cannotProcessUntilAllRelevantInformation\",\"tag\":\"p\"}},[_c('strong',[_vm._v(\" \"+_vm._s(_vm.$t(\"45Days\"))+\" \")])])],1),_c('h2',[_vm._v(_vm._s(_vm.$t(\"downloadASummaryOfYourComplaint\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"youCanDownloadASummary\")))]),_c('button',{staticClass:\"btn btn-primary piwik_download\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.downloadPdf}},[_vm._v(\" \"+_vm._s(_vm.$t(\"downloadASummaryOfYourComplaint\"))+\" \")]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"fileAnotherComplaintTitle\")))]),_c('p',[_c('a',{attrs:{\"href\":_vm.$t('fileAnotherComplaintUrl')}},[_vm._v(\" \"+_vm._s(_vm.$t(\"fileAnotherComplaintText\"))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t(\"fileAnotherComplaintNote\"))+\" \")]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"relatedContent\")))]),_c('ul',[_c('li',[_c('a',{attrs:{\"href\":_vm.$t('guideToThePipedaComplaintProcessUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"guideToThePipedaComplaintProcessText\")))])]),_c('li',[_c('a',{attrs:{\"href\":_vm.$t('pipedaUrl'),\"target\":\"_blank\"}},[_c('i',[_vm._v(_vm._s(_vm.$t(\"pipedaText\")))])])]),_c('li',[_c('a',{attrs:{\"href\":_vm.$t('businessesAndYourPersonalInformatioUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"businessesAndYourPersonalInformationText\")))])]),_c('li',[_c('a',{attrs:{\"href\":_vm.$t('tipsForRaisingPrivacyConcernUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"tipsForRaisingPrivacyConcernText\")))])])])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Converter } from \"showdown\";\nimport {\n defaultBootstrapCss,\n settings,\n surveyLocalization,\n MatrixDropdownRowModelBase,\n MatrixRowModel,\n Model,\n PageModel,\n Question,\n QuestionMatrixDropdownModelBase,\n QuestionMatrixModel,\n StylesManager,\n SurveyError,\n ActionContainer,\n Action,\n defaultActionBarCss,\n Base,\n} from \"survey-vue\";\n\nexport class SurveyBase {\n private static locale: \"en\" | \"fr\";\n\n readonly model: Model;\n\n // Used in cases the real model changes, this keeps a copy of a fresh model, which may contain relevant information\n readonly originalModel: Model;\n\n goingNextPage = false;\n\n private readonly converter = new Converter({\n simpleLineBreaks: true,\n tasklists: true,\n openLinksInNewWindow: true,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor() {\n // Theme changes need to be applied before the model is initialized\n this.setSurveyTheme();\n this.registerWidgets();\n\n this.model = new Model();\n this.model.locale = SurveyBase.locale as string;\n\n this.originalModel = new Model();\n this.model.locale = SurveyBase.locale as string;\n\n this.setSurveyLocalizations();\n this.setSurveyProperties();\n }\n\n public get isPreviewShowing(): boolean {\n return this.model.getPropertyValue(\"isShowingPreview\", false);\n }\n\n public displayErrorSummary(\n questionErrors: Map\n ): void {\n const summaryId = \"errors\";\n\n // If there's already an error summary, remove it\n\n let summary = document.getElementById(summaryId);\n if (summary) {\n summary.remove();\n }\n\n // If there aren't any errors, exit\n if (questionErrors.size === 0) {\n return;\n }\n\n const errorText = this.model.getLocalizationString(\"errorText\");\n\n // Create and populate the error summary\n summary = document.createElement(\"section\");\n summary.id = summaryId;\n summary.className = \"alert alert-danger\";\n\n let index = 1;\n const list = document.createElement(\"ul\");\n questionErrors.forEach((errors: SurveyError[], question: Question) => {\n const title = document.createElement(\"div\");\n title.innerHTML = question.processedTitle;\n\n const inputId = this.getInputId(question);\n for (const error of errors) {\n const item = document.createElement(\"li\");\n const link = document.createElement(\"a\");\n link.href = `#${inputId}`;\n link.innerText = `${errorText} ${index++}: ${\n title.innerText\n } - ${error.getText()}`;\n item.appendChild(link);\n list.appendChild(item);\n }\n });\n\n const errorCount = index - 1;\n const localizationKey =\n errorCount > 1 ? \"validationErrors\" : \"validationError\";\n const validationError = this.model.getLocalizationFormatString(\n localizationKey,\n errorCount\n );\n\n // Set the error summary's title\n const header = document.createElement(\"h2\");\n header.innerText = validationError;\n\n summary.appendChild(header);\n summary.appendChild(list);\n\n // Insert the error summary after the page's heading\n const heading = document.querySelector(\".sv_page_title\");\n if (heading) {\n heading.parentNode?.insertBefore(summary, heading.nextSibling);\n\n // Some cases may cause errors at the preview page when submitting, scroll for this too\n if (this.goingNextPage || this.isPreviewShowing) {\n heading.scrollIntoView();\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public loadSurveyFromJSON(json: any, data?: any) {\n // Preset data\n if (data) {\n this.model.data = data;\n }\n\n // Load survey model from JSON\n this.model.fromJSON(json);\n this.originalModel.fromJSON(json);\n\n this.registerCustomProperties();\n this.registerEventHandlers();\n this.registerFunctions();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected registerWidgets(): void {}\n\n protected registerFunctions(): void {\n // Replace the existing nextPage function with a custom one\n // The only difference is that the custom function will set the goingNextPage flag\n // TODO: Update, fixed in a way with: https://github.com/surveyjs/survey-library/issues/5194\n this.model.nextPage = ((): (() => boolean) => {\n const existingNextPageFunction = this.model.nextPage;\n const newNextPageFunction = (): boolean => {\n if (this.model.isLastPage ?? false) return false;\n this.goingNextPage = true;\n const result = existingNextPageFunction.apply(this.model);\n this.goingNextPage = false;\n return result;\n };\n return newNextPageFunction;\n })();\n }\n\n protected registerEventHandlers(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onAfterRenderQuestion.add((sender: Model, options: any) => {\n this.handleOnAfterRenderQuestion(sender, options);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onCurrentPageChanged.add((sender: Model, options: any) => {\n this.handleOnCurrentPageChanged(sender, options);\n });\n\n this.model.onComplete.add((sender: Model, options: any) => {\n this.handleOnComplete(sender, options);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onPageAdded.add((sender: Model, options: any) => {\n this.handleOnPageAdded(sender, options);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onTextMarkdown.add((sender: Model, options: any) => {\n this.handleOnTextMarkdown(sender, options);\n });\n\n this.model.onValidatedErrorsOnCurrentPage.add(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (sender: Model, options: any) => {\n this.handleOnValidatedErrorsOnCurrentPage(sender, options);\n }\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected registerCustomProperties(): void {}\n\n private getInputId(question: Question): string {\n let inputId = question.inputId;\n const questionType = question.getType();\n\n if (questionType === \"radiogroup\" || questionType === \"checkbox\") {\n inputId = `${inputId}_0`;\n } else if (questionType === \"matrix\") {\n const matrixQuestion = question as QuestionMatrixModel;\n const firstRow = matrixQuestion.visibleRows[0] as MatrixRowModel;\n inputId = `${inputId}_${firstRow.name}_0`;\n } else if (\n questionType === \"matrixdynamic\" ||\n questionType === \"matrixdropdown\"\n ) {\n const matrixQuestion = question as QuestionMatrixDropdownModelBase;\n const firstRow = matrixQuestion\n .visibleRows[0] as MatrixDropdownRowModelBase;\n const firstQuestion = firstRow.questions[0];\n inputId = this.getInputId(firstQuestion);\n }\n\n return inputId;\n }\n\n private setSurveyLocalizations(): void {\n // Override surveyjs strings\n surveyLocalization.locales[\"en\"].otherItemText = \"Other\";\n surveyLocalization.locales[\"en\"].requiredError = \"This field is required\";\n\n surveyLocalization.locales[\"fr\"].addPanel = \"Ajouter une nouvelle ligne\";\n surveyLocalization.locales[\"fr\"].chooseFile = \"Ajouter le(s) fichier(s)...\";\n surveyLocalization.locales[\"fr\"].chooseFileCaption =\n \"Sélectionner un fichier\";\n surveyLocalization.locales[\"fr\"].clearCaption = \"Effacer\";\n surveyLocalization.locales[\"fr\"].completingSurveyBefore =\n \"Nos dossiers indiquent que vous avez déjà rempli ce questionnaire.\";\n surveyLocalization.locales[\"fr\"].emptyRowsText = \"Il n'y a aucune ligne.\";\n surveyLocalization.locales[\"fr\"].exceedMaxSize =\n \"La taille du fichier ne doit pas dépasser {0}\";\n surveyLocalization.locales[\"fr\"].invalidEmail =\n \"Entrez une adresse de courriel valide.\";\n surveyLocalization.locales[\"fr\"].invalidExpression =\n \"L'expression : {0} doit donner la valeur 'true'.\";\n surveyLocalization.locales[\"fr\"].loadingFile = \"Téléchargement...\";\n surveyLocalization.locales[\"fr\"].maxError =\n \"Le nombre ne doit pas être supérieur à {0}\";\n surveyLocalization.locales[\"fr\"].maxSelectError =\n \"Sélectionnez pas plus de {0} réponse(s).\";\n surveyLocalization.locales[\"fr\"].minError =\n \"Le nombre ne doit pas être inférieur à {0}\";\n surveyLocalization.locales[\"fr\"].minSelectError =\n \"Sélectionnez au moins {0} réponse(s).\";\n surveyLocalization.locales[\"fr\"].modalApplyButtonText = \"Appliquer\";\n surveyLocalization.locales[\"fr\"].modalCancelButtonText = \"Annuler\";\n surveyLocalization.locales[\"fr\"].multipletext_itemname = \"texte\";\n surveyLocalization.locales[\"fr\"].noFileChosen = \"Aucun fichier sélectionné\";\n surveyLocalization.locales[\"fr\"].otherItemText = \"Autre\";\n surveyLocalization.locales[\"fr\"].panelDynamicProgressText =\n \"Enregistrement {0} de {1}\";\n surveyLocalization.locales[\"fr\"].progressText = \"Page {0} de {1}\";\n surveyLocalization.locales[\"fr\"].removeFileCaption = \"Supprimer ce fichier\";\n surveyLocalization.locales[\"fr\"].requiredError =\n \"Ce champ est obligatoire.\";\n surveyLocalization.locales[\"fr\"].requiredInAllRowsError =\n \"Ces champs sont obligatoires.\";\n surveyLocalization.locales[\"fr\"].savingDataError =\n \"Une erreur s'est produite et a empêché la sauvegarde des résultats.\";\n surveyLocalization.locales[\"fr\"].selectAllItemText = \"Sélectionner tout\";\n surveyLocalization.locales[\"fr\"].signaturePlaceHolder = \"Signer ici\";\n surveyLocalization.locales[\"fr\"].uploadingFile =\n \"Votre fichier est en cours de téléchargement. Merci de patienter quelques secondes et de réessayer.\";\n surveyLocalization.locales[\"fr\"].urlGetChoicesError =\n \"La requête indique un champ de données vide ou la propriété 'path' est incorrecte\";\n surveyLocalization.locales[\"fr\"].urlRequestError =\n \"La requête a généré une erreur '{0}'. {1}\";\n\n // Define custom localizable strings\n surveyLocalization.locales[\"en\"].errorText = \"Error\";\n surveyLocalization.locales[\"en\"].requiredText = \"(required)\";\n surveyLocalization.locales[\"en\"].validationError =\n \"The form could not be submitted because {0} error was found.\";\n surveyLocalization.locales[\"en\"].validationErrors =\n \"The form could not be submitted because {0} errors were found.\";\n\n surveyLocalization.locales[\"fr\"].errorText = \"Erreur\";\n surveyLocalization.locales[\"fr\"].requiredText = \"(obligatoire)\";\n surveyLocalization.locales[\"fr\"].validationError =\n \"Le formulaire n'a pu être soumis car {0} erreur a été trouvée.\";\n surveyLocalization.locales[\"fr\"].validationErrors =\n \"Le formulaire n'a pu être soumis car {0} erreurs ont été trouvées.\";\n\n surveyLocalization.locales[\"en\"].completeText = \"Submit your complaint\";\n surveyLocalization.locales[\"fr\"].completeText = \"Déposer votre plainte\";\n }\n\n private setSurveyProperties(): void {\n // Casting as any right now as navigationBarValue is private, find out a way to modify this in a proper way\n // Apply button group class to actions in the navigation bar.\n const container = (this.model as any).navigationBarValue as ActionContainer;\n const actions = container.actions as Array;\n actions.forEach((x) => {\n x.css = \"btn-group\";\n });\n\n settings.titleTags.page = \"h1\";\n settings.titleTags.panel = \"label\";\n settings.titleTags.question = \"label\";\n\n this.model.clearInvisibleValues = \"onHiddenContainer\"; // Clear the question value when it or its parent (page or panel) becomes invisible. If a question has value and it was invisible initially then survey clears the value on completing.\n this.model.focusOnFirstError = false;\n this.model.questionErrorLocation = \"top\";\n this.model.showCompletedPage = true;\n this.model.showPreviewBeforeComplete = \"showAllQuestions\"; // Allow respondents to preview answers before submitting the survey results.\n this.model.showProgressBar = \"bottom\";\n this.model.showQuestionNumbers = \"off\";\n this.model.storeOthersAsComment = false; // Gets or sets whether the \"Others\" option text is stored as question comment.\n this.model.questionTitlePattern = \"numTitle\"; // Remove the required text from question titles since we'll handle it manually.\n }\n\n private setSurveyTheme(): void {\n // Override the main-color to match the theme\n StylesManager.ThemeColors[\"bootstrap\"][\"$main-color\"] = \"#00627e\";\n\n // Override the font-family of the sv-list to match the style\n const listStyle = StylesManager.Styles[\".sv-list\"];\n if (listStyle) {\n const pattern = /font-family:.+?;/gi;\n StylesManager.Styles[\".sv-list\"] = listStyle.replace(pattern, \"\");\n }\n\n // The background color of selected item in dropdown is not set in survey-vue 1.9.68\n StylesManager.Styles[\".sv-list__item--selected\"] =\n \"background-color: #007bff; color: #fff;\";\n\n // The background color of the boolean switch is not set for some reason\n StylesManager.Styles[\".sv-boolean__switch\"] =\n \"background-color: rgb(0, 98, 126)\";\n\n // The boolean thumb ghost class is in diplay: block, causing line breaks we don't want for boolean switches\n StylesManager.Styles[\".sv-boolean__thumb-ghost\"] = \"display: inline\";\n\n // The background color of the boolean switch slider is not set for some reason\n StylesManager.Styles[\".sv-boolean__slider\"] = \"background-color: white\";\n\n // Better indentation of descriptions\n StylesManager.Styles[\".sv_p_description\"] = \"padding-left: 16px\";\n\n // Edit button color\n StylesManager.Styles[\".sv_main .sv-action-bar-item\"] =\n \"background-color: #00627e\";\n\n // Set Theme\n StylesManager.applyTheme(\"bootstrap\");\n\n // Override defaultActionBarCss Properties\n defaultActionBarCss.root = \"btn-toolbar\";\n\n // Override defaultBootstrapCss Properties\n defaultBootstrapCss.html.root = \"sv_q_html\";\n defaultBootstrapCss.error.icon = \"\";\n defaultBootstrapCss.error.item = \"label label-danger\";\n defaultBootstrapCss.error.root = \"\";\n defaultBootstrapCss.matrixdynamic.buttonAdd = \"btn btn-default\";\n defaultBootstrapCss.matrixdynamic.buttonRemove = \"btn btn-danger\";\n defaultBootstrapCss.navigation.complete = \"btn btn-primary\";\n defaultBootstrapCss.navigation.edit = \"btn btn-primary\";\n defaultBootstrapCss.navigation.next = \"btn btn-primary\";\n defaultBootstrapCss.navigation.prev = \"btn btn-default\";\n defaultBootstrapCss.navigation.preview = \"btn btn-primary\";\n defaultBootstrapCss.navigation.start = \"btn btn-primary\";\n defaultBootstrapCss.page.title = \"sv_page_title\";\n defaultBootstrapCss.panel.container = \"sv_p_container well\";\n defaultBootstrapCss.paneldynamic.buttonAdd = \"btn btn-default\";\n defaultBootstrapCss.paneldynamic.buttonRemove =\n \"btn btn-danger mrgn-bttm-md\";\n defaultBootstrapCss.progressTextInBar = \"\";\n defaultBootstrapCss.question.description = \"\";\n defaultBootstrapCss.question.mainRoot = \"sv_qstn form-group\";\n defaultBootstrapCss.question.title = \"sv_q_title\";\n defaultBootstrapCss.question.titleRequired = \"required\";\n defaultBootstrapCss.question.requiredText = \"required\";\n\n // This new property does not seem to be in the typings yet. It may never be due to bootstrap support getting removed\n // Removing the chracter counter for now as it affects the look too much\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (defaultBootstrapCss.question as any).remainingCharacterCounter = \"hide\";\n\n defaultBootstrapCss.radiogroup.root = \"form-inline\";\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n private handleOnComplete(sender: Model, options: any): void {\n sender.scrollToTopOnPageChange();\n\n if (window._paq) {\n window._paq.push([\"setDocumentTitle\", \"Complete\"]);\n window._paq.push([\"trackPageView\"]);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n private handleOnCurrentPageChanged(sender: Model, options: any): void {\n // Scroll page back to top on page changed\n sender.scrollToTopOnPageChange();\n\n if (window._paq) {\n window._paq.push([\n \"setDocumentTitle\",\n options.newCurrentPage?.title || options.newCurrentPage?.name,\n ]);\n window._paq.push([\"trackPageView\"]);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnAfterRenderQuestion(sender: Model, options: any): void {\n const question = options.question as Question;\n\n const html = options.htmlElement as HTMLElement;\n const heading = html?.querySelector(\".sv_q_title\");\n\n // Check for the presence of a heading\n if (!heading) {\n return;\n }\n\n // Unwrap the divs contained within the heading to fix alignment with required field asterisk\n // TODO: This causes issues with title rerendering, though finding another solution was not successful.\n // May be worth asking the surveyjs maintainers to generate proper HTML instead\n let div = heading.querySelector(\"div\");\n while (div) {\n div.outerHTML = div.innerHTML;\n div = heading.querySelector(\"div\");\n }\n\n const appendRequiredText = function () {\n const required = document.createElement(\"strong\");\n required.className = defaultBootstrapCss.question.requiredText;\n required.innerText = sender.getLocalizationString(\"requiredText\");\n\n // Only add this if it doesn't already exist\n if (heading.innerHTML.includes(required.innerHTML)) return;\n\n heading.appendChild(required);\n };\n\n // Appends the required text to the heading\n if (question.isRequired) {\n appendRequiredText();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n question.onPropertyChanged.add((sender: Base, options: any) => {\n if (options.name !== \"isRequired\") {\n return;\n }\n\n // Update the required text in the heading\n const isRequired = options.newValue as boolean;\n if (isRequired) {\n appendRequiredText();\n } else {\n const required = heading.querySelector(\n `strong.${defaultBootstrapCss.question.requiredText}`\n );\n required?.remove();\n }\n });\n\n // Added spacing to radio label\n if (question.getType() === \"radiogroup\") {\n html\n .querySelectorAll(\"fieldset span.sv-string-viewer\")\n .forEach((value) => {\n value.innerText = ` ${value.innerText}`;\n });\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnPageAdded(sender: Model, options: any): void {\n const page = options.page as PageModel;\n\n // Check if the added page is the preview page\n if (page.name !== \"all\") {\n return;\n }\n\n // Set the page title otherwise, it won't be rendered\n page.title = sender.previewText;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnTextMarkdown(sender: Model, options: any): void {\n // convert the markdown text to html\n let str = this.converter.makeHtml(options.text);\n\n // remove root paragraphs

\n if (options.name !== \"description\") {\n str = str.substring(str.indexOf(\">\") + 1);\n str = str.substring(0, str.lastIndexOf(\"<\"));\n }\n\n // set html\n options.html = str;\n }\n\n private handleOnValidatedErrorsOnCurrentPage(\n sender: Model,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: any\n ): void {\n const questions = options.questions as Question[];\n\n const questionErrors = new Map();\n for (const question of questions) {\n questionErrors.set(question, question.errors);\n }\n\n this.displayErrorSummary(questionErrors);\n }\n}\n","import { Question } from \"survey-vue\";\n\nexport abstract class WidgetBase {\n /**\n * The widget name. It should be unique and written in lowcase.\n */\n protected readonly name: string;\n\n /**\n * The widget title. It is how it will appear on the toolbox of the SurveyJS Editor/Builder.\n */\n protected readonly title: string;\n\n /**\n * The name of the icon on the toolbox. We will leave it empty to use the standard one.\n */\n protected readonly iconName: string;\n\n /**\n * You should use it if your set the isDefaultRender to false.\n */\n protected htmlTemplate = \"\";\n\n /**\n * If you want to use the default question rendering then set this property to true. We do not need any default rendering, we will use our our htmlTemplate\n */\n protected isDefaultRender = true;\n\n /**\n * The type used to render the widget in the PDF.\n */\n protected pdfQuestionType = \"\";\n\n protected activatedBy = \"property\";\n\n /**\n * @param name the widget name. It should be unique and written in lowcase.\n * @param title the widget title. It is how it will appear on the toolbox of the SurveyJS Editor/Builder.\n * @param iconName the name of the icon on the toolbox. We will leave it empty to use the standard one.\n */\n constructor(name: string, title: string, iconName = \"\") {\n this.name = name;\n this.title = title;\n this.iconName = iconName;\n }\n\n /**\n * The main function, rendering and two-way binding.\n *\n * @param question\n * @param el\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n afterRender(question: Question, el: HTMLElement): void {}\n\n /**\n * Gets called after the widget has been added to the CustomWidgetCollection.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init(): void {}\n\n /**\n * Use it to destroy the widget. It is typically needed by jQuery widgets.\n *\n * @param question\n * @param el\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n willUnmount(question: Question, el: HTMLElement): void {}\n\n /**\n * If the widgets depends on third-party library(s) then here you may check if this library(s) is loaded.\n */\n widgetIsLoaded(): boolean {\n return true;\n }\n\n /**\n * Use this function to create a new class or add new properties or remove unneeded properties from your widget.\n *\n * @param activatedBy Tells how your widget has been activated by: property, type or customType.\n * property - It means that it will activated if a property of the existing question type is set to particular value, for example inputType = \"date\".\n * type - You are changing the behaviour of entire question type. For example render radiogroup question differently, have a fancy radio buttons.\n * customType - You are creating a new type, like in our example \"textwithbutton\".\n */\n activatedByChanged(activatedBy: string): void {\n this.activatedBy = activatedBy;\n }\n\n /**\n * SurveyJS library calls this function for every question to check, if it should use this widget instead of default rendering/behavior.\n *\n * @param question\n */\n abstract isFit(question: Question): boolean;\n}\n","import { WidgetBase } from \"./widget-base\";\nimport {\n CustomWidgetCollection,\n JsonObject,\n Question,\n QuestionHtmlModel,\n} from \"survey-vue\";\n\nexport class AlertWidget extends WidgetBase {\n isDefaultRender = false;\n\n constructor() {\n super(\n \"alert\",\n \"Provide contextual feedback messages for typical user actions\"\n );\n }\n\n static register(): void {\n const widget: AlertWidget = new AlertWidget();\n\n // If activatedBy isn't passed, it will default to property.\n CustomWidgetCollection.Instance.addCustomWidget(widget, widget.activatedBy);\n }\n\n /**\n * Use this function to create a new class or add new properties or remove unneeded properties from your widget.\n *\n * @param activatedBy Tells how your widget has been activated by: property, type or customType.\n * property - It means that it will activated if a property of the existing question type is set to particular value, for example inputType = \"date\".\n * type - You are changing the behaviour of entire question type. For example render radiogroup question differently, have a fancy radio buttons.\n * customType - You are creating a new type, like in our example \"textwithbutton\".\n */\n activatedByChanged(activatedBy: string): void {\n super.activatedByChanged(activatedBy);\n\n if (activatedBy === \"property\") {\n const property = JsonObject.metaData.findProperty(\"html\", \"renderAs\");\n const choices = property.getChoices(null) ?? [property.defaultValue];\n\n if (!choices.some((choice) => choice === this.name)) {\n choices.push(this.name);\n property.setChoices(choices);\n }\n\n JsonObject.metaData.addProperty(\"html\", {\n dependsOn: \"renderAs\",\n name: \"alertType:string\",\n category: \"general\",\n default: \"alert-info\",\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n visibleIf: function (obj: any) {\n return obj.renderAs == this.name;\n },\n });\n }\n }\n\n /**\n * The main function, rendering and two-way binding.\n *\n * @param question\n * @param el\n */\n afterRender(question: Question, el: HTMLElement): void {\n const hasTitle = question.title !== question.name;\n\n const alert = hasTitle\n ? document.createElement(\"section\")\n : document.createElement(\"div\");\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const alertType = (question as any).alertType;\n alert.className = `alert ${alertType}`;\n\n if (hasTitle) {\n const heading = document.createElement(\"h3\");\n heading.innerText = question.title;\n alert.appendChild(heading);\n }\n\n const htmlQuestion = question as QuestionHtmlModel;\n alert.innerHTML += htmlQuestion.html;\n\n el.appendChild(alert);\n }\n\n /**\n * SurveyJS library calls this function for every question to check, if it should use this widget instead of default rendering/behavior.\n *\n * @param question\n */\n isFit(question: Question): boolean {\n if (this.activatedBy === \"property\") {\n return question.renderAs === this.name && question.getType() === \"html\";\n }\n return false;\n }\n}\n","import { Converter } from \"showdown\";\nimport { ChoicesRestful, Model } from \"survey-core\";\nimport * as SurveyCore from \"survey-core\";\nimport {\n IDocOptions,\n SurveyPDF,\n IPdfBrick,\n AdornersOptions,\n IPoint,\n TextBrick,\n} from \"survey-pdf\";\nimport { QuestionFileModel } from \"survey-vue\";\n\nimport * as Widgets from \"surveyjs-widgets\";\nexport class SurveyPDFBase {\n protected options: IDocOptions = {\n commercial: true,\n htmlRenderAs: \"standard\",\n fontSize: 10,\n compress: true,\n textFieldRenderAs: \"singleLine\",\n };\n\n protected readonly model: SurveyPDF;\n private requiredText = \"\";\n\n private readonly converter = new Converter({\n simpleLineBreaks: true,\n tasklists: true,\n openLinksInNewWindow: true,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor(json: any, data: any) {\n this.model = new SurveyPDF({}, this.options);\n\n this.setSurveyLocalizations();\n\n this.registerWidgets();\n\n this.registerCustomProperties();\n this.registerEventHandlers();\n\n this.model.data = data;\n\n this.model.fromJSON(json);\n\n this.setSurveyProperties();\n }\n\n public raw(type?: string): Promise {\n return this.model.raw(type);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public save(fileName?: string): Promise {\n return this.model.save(fileName);\n }\n\n protected registerEventHandlers(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onProcessHtml.add((sender: Model, options: any) => {\n this.handleOnProcessHtml(sender, options);\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onTextMarkdown.add((sender: Model, options: any) => {\n this.handleOnTextMarkdown(sender, options);\n });\n this.model.onGetQuestionTitle.add((sender: Model, options: any) =>\n this.onGetQuestionTitle(sender, options)\n );\n }\n\n private onGetQuestionTitle(sender: Model, options: any): void {\n if (options.question.isRequired && this.requiredText) {\n options.title += ` ${this.requiredText}`;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected registerCustomProperties(): void {\n ChoicesRestful.EncodeParameters = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected registerWidgets(): void {\n Widgets.select2tagbox(SurveyCore);\n Widgets.jqueryuidatepicker(SurveyCore);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private setSurveyLocalizations(): void {}\n\n private setSurveyProperties(): void {\n this.model.mode = \"display\";\n\n // Remove the required text as we'll be concatenating it with the title to remove a formatting bug\n this.requiredText = this.model.requiredText;\n this.model.requiredText = \"\";\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnProcessHtml(sender: Model, options: any): void {\n // Replaces HTML entities with their textual representation\n options.html = this.decodeEntities(options.html);\n\n // Replaces Unicode characters with their ASCII representation\n options.html = this.replaceUnicode(options.html);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnTextMarkdown(sender: Model, options: any): void {\n // convert the markdown text to html\n let str = this.converter.makeHtml(options.text);\n\n // remove root paragraphs

\n if (options.name !== \"description\") {\n str = str.substring(str.indexOf(\">\") + 1);\n str = str.substring(0, str.lastIndexOf(\"<\"));\n }\n\n // Replaces HTML entities with their textual representation\n str = this.decodeEntities(str);\n\n // Replaces Unicode characters with their ASCII representation\n str = this.replaceUnicode(str);\n\n // set html\n options.html = str;\n }\n\n private decodeEntities(input: string): string {\n const element = document.createElement(\"div\");\n return input.replace(/(&\\w+;)/g, (match) => {\n element.innerHTML = match;\n return element.innerText;\n });\n }\n\n private replaceUnicode(input: string): string {\n let output = input;\n output = output.replace(/[\\u2018\\u2019]/g, \"'\"); // single quote\n output = output.replace(/[\\u201C\\u201D]/g, '\"'); // double quote\n output = output.replace(/[\\u2013]/g, \"-\"); // dash\n return output;\n }\n\n protected handleOnRenderFileQuestion(\n survey: SurveyPDF,\n options: AdornersOptions\n ): Promise | void {\n if (options.question.getType() !== \"file\") return;\n\n const fileQuestion = options.question as unknown as QuestionFileModel;\n\n // No files\n if (!fileQuestion.value) {\n return;\n }\n\n // Only get the file names\n const fileNames = fileQuestion.value.map(\n (file: { name: string; type: string; content: string }) => file.name\n );\n\n // Create a temporary bricks array to use later.\n const bricks = options.bricks;\n\n // Remove the original bricks now to prevent rendering the files and their content in the PDF in case of errors.\n options.bricks = [];\n\n // Keep the generated title brick\n const titleBrick = bricks[0].unfold()[0];\n const point = options.module.SurveyHelper.createPoint(\n titleBrick,\n true,\n false\n );\n\n options.bricks = [titleBrick];\n\n const generateVerticalTextFlats = async function (\n point: IPoint,\n itemValues: string[],\n options: AdornersOptions\n ): Promise {\n const currPoint: IPoint = options.module.SurveyHelper.clone(point);\n const flats: IPdfBrick[] = [];\n\n for await (const itemValue of itemValues) {\n const itemFlat: IPdfBrick =\n await options.module.SurveyHelper.createTextFlat(\n currPoint,\n options.question,\n options.controller,\n itemValue,\n TextBrick\n );\n\n // Re-assign the point top for the next item to be generated under the previous one\n currPoint.yTop =\n itemFlat.yBot +\n options.module.SurveyHelper.GAP_BETWEEN_ROWS *\n options.controller.unitHeight;\n\n flats.push(itemFlat);\n }\n return flats;\n };\n\n // Generate and set the bricks to be in the PDF\n return new Promise(function (resolve) {\n generateVerticalTextFlats(point, fileNames, options).then(function (\n flats\n ) {\n options.bricks = options.bricks.concat(flats);\n resolve();\n });\n });\n }\n}\n","import { WidgetBase } from \"./widget-base\";\nimport {\n CustomWidgetCollection,\n JsonObject,\n Question,\n Serializer,\n Model,\n PageModel,\n} from \"survey-vue\";\nimport { SurveyPDFBase } from \"@/surveys/survey-pdf-base\";\nexport class DownloadWidget extends WidgetBase {\n private readonly defaultFileName = \"summary.pdf\";\n\n isDefaultRender = false;\n htmlTemplate = \"\";\n\n constructor() {\n super(\"download\", \"Button to download survey results to PDF\");\n }\n\n static register(): void {\n const widget: DownloadWidget = new DownloadWidget();\n\n // If activatedBy isn't passed, it will default to property.\n CustomWidgetCollection.Instance.addCustomWidget(widget, widget.activatedBy);\n }\n\n /**\n * Use this function to create a new class or add new properties or remove unneeded properties from your widget.\n *\n * @param activatedBy Tells how your widget has been activated by: property, type or customType.\n * property - It means that it will activated if a property of the existing question type is set to particular value, for example inputType = \"date\".\n * type - You are changing the behaviour of entire question type. For example render radiogroup question differently, have a fancy radio buttons.\n * customType - You are creating a new type, like in our example \"textwithbutton\".\n */\n activatedByChanged(activatedBy: string): void {\n super.activatedByChanged(activatedBy);\n\n if (activatedBy === \"property\") {\n const property = JsonObject.metaData.findProperty(\"html\", \"renderAs\");\n const choices = property.getChoices(null) ?? [property.defaultValue];\n\n if (!choices.some((choice) => choice === this.name)) {\n choices.push(this.name);\n property.setChoices(choices);\n }\n\n Serializer.addProperty(\"html\", {\n dependsOn: \"renderAs\",\n name: \"fileName:text\",\n serializationProperty: \"locFileName\",\n category: \"general\",\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n visibleIf: function (obj: any) {\n return obj.renderAs == this.name;\n },\n });\n }\n }\n\n /**\n * The main function, rendering and two-way binding.\n *\n * @param question\n * @param el\n */\n afterRender(question: Question, el: HTMLElement): void {\n const survey = question.survey as Model;\n const button = el.querySelector(\"button\");\n\n if (button === null) {\n return;\n }\n\n button.innerText = question.title;\n\n button.addEventListener(\"click\", () => {\n const model = survey.toJSON();\n\n // If the survey is running in preview mode, we need to send the runningPages\n if (survey.visiblePages) {\n model.pages = survey.visiblePages.map((p: PageModel) => p.toJSON());\n }\n\n const fileName = question.getLocalizableStringText(\n \"fileName\",\n this.defaultFileName\n );\n const surveyPDF = new SurveyPDFBase(model, survey.data);\n surveyPDF.save(fileName);\n });\n }\n\n /**\n * SurveyJS library calls this function for every question to check, if it should use this widget instead of default rendering/behavior.\n *\n * @param question\n */\n isFit(question: Question): boolean {\n if (this.activatedBy === \"property\") {\n return question.renderAs === this.name && question.getType() === \"html\";\n }\n return false;\n }\n}\n","import { Event } from \"survey-vue\";\n\nexport class EventBase extends Event<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (callBackFunc: any, sender: T, options: any) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n> {}\n","import { WidgetBase } from \"./widget-base\";\nimport {\n surveyLocalization,\n CustomWidgetCollection,\n JsonObject,\n Model,\n Question,\n} from \"survey-vue\";\nimport { EventBase } from \"./event-base\";\n\nexport class FileMeterWidget extends WidgetBase {\n private questionSizes = new Map();\n private questionOnUpdateFiles = new Map>();\n private totalSize = 0;\n\n constructor() {\n super(\"filemeter\", \"Provide details related to the uploaded files\");\n }\n\n static register(): void {\n const widget = new FileMeterWidget();\n\n // If activatedBy isn't passed, it will default to property.\n CustomWidgetCollection.Instance.addCustomWidget(widget, widget.activatedBy);\n }\n\n /**\n * Use this function to create a new class or add new properties or remove unneeded properties from your widget.\n *\n * @param activatedBy Tells how your widget has been activated by: property, type or customType.\n * property - It means that it will activated if a property of the existing question type is set to particular value, for example inputType = \"date\".\n * type - You are changing the behaviour of entire question type. For example render radiogroup question differently, have a fancy radio buttons.\n * customType - You are creating a new type, like in our example \"textwithbutton\".\n */\n activatedByChanged(activatedBy: string): void {\n super.activatedByChanged(activatedBy);\n\n if (activatedBy === \"property\") {\n const property = JsonObject.metaData.findProperty(\"file\", \"renderAs\");\n const choices = property.getChoices(null) ?? [property.defaultValue];\n\n if (!choices.some((choice) => choice === this.name)) {\n choices.push(this.name);\n property.setChoices(choices);\n }\n\n JsonObject.metaData.addProperty(\"survey\", {\n name: \"totalSize:number\",\n category: \"general\",\n default: 0,\n });\n }\n }\n\n /**\n * The main function, rendering and two-way binding.\n *\n * @param question\n * @param el\n */\n afterRender(question: Question, el: HTMLElement): void {\n const survey = question.survey as Model;\n\n if (this.totalSize === 0) {\n this.totalSize = survey.getPropertyValue(\"totalSize\", 0);\n }\n\n const placeholder = el.querySelector(\".sv_q_file\");\n if (!placeholder) {\n return;\n }\n\n const container = document.createElement(\"section\");\n container.className = \"alert alert-info\";\n\n const currentSize = this.getCurrentSize();\n\n const header = document.createElement(\"h4\");\n header.innerText = this.getHeaderText(survey, currentSize);\n\n const meter = document.createElement(\"meter\");\n meter.className = \"full-width\";\n meter.min = 0;\n meter.max = this.totalSize;\n meter.high = 0.8 * this.totalSize;\n meter.value = currentSize;\n\n container.appendChild(header);\n container.appendChild(meter);\n\n placeholder.insertAdjacentElement(\"beforebegin\", container);\n\n const onUpdateFiles = new EventBase();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onUpdateFiles.add((sender: WidgetBase, options: any) => {\n // Update files gets called without the survey in options at the start for some reason, return in the case\n if (!options.question.surveyValue) return;\n\n const currentSize: number = options.currentSize;\n header.innerText = this.getHeaderText(\n options.question.surveyValue,\n currentSize\n );\n\n meter.value = currentSize;\n });\n\n this.questionOnUpdateFiles.set(question.name, onUpdateFiles);\n\n question.valueChangedCallback = async () => {\n const files: {\n name: string;\n type: string;\n content: string | ArrayBuffer | null;\n }[] = question.value || [];\n\n // Read all data URLs as blobs\n const promises = files.map((file) =>\n fetch(file.content as string).then((response) => {\n return response.blob();\n })\n );\n\n // Calculate the cummulative size of the blobs\n const size = await Promise.all(promises).then((blobs: Blob[]) => {\n return blobs.reduce((previous, current) => previous + current.size, 0);\n });\n\n // Update the cache\n const name = question.getValueName();\n this.questionSizes.set(name, size);\n\n // Notify listeners\n for (const onUpdateFiles of this.questionOnUpdateFiles.values()) {\n if (!onUpdateFiles.isEmpty) {\n const currentSize = this.getCurrentSize();\n onUpdateFiles.fire(this, {\n question: question,\n currentSize: currentSize,\n });\n }\n }\n };\n\n // Initialize the cache for the current question\n question.valueChangedCallback();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n survey.onValidateQuestion.add((sender: Model, options: any) => {\n // Check if the question being updated is the same as the current question\n // This is required when registering multiple filemeter widgets\n if (options.question !== question) {\n return;\n }\n\n this.handleOnValidateQuestion(sender, options);\n });\n }\n\n /**\n * Gets called after the widget has been added to the CustomWidgetCollection.\n */\n init(): void {\n surveyLocalization.locales[\"en\"].totalFileSize =\n \"You have uploaded {0} MB of files out of {1} MB allowed.\";\n surveyLocalization.locales[\"en\"].exceededFileSize =\n \"The size of the files exceeds the total size allowed.\";\n\n surveyLocalization.locales[\"fr\"].totalFileSize =\n \"Vous avez téléchargé {0} MB de {1} MB permis.\";\n surveyLocalization.locales[\"fr\"].exceededFileSize =\n \"La taille des fichiers dépasse la taille totale autorisée.\";\n }\n\n /**\n * SurveyJS library calls this function for every question to check, if it should use this widget instead of default rendering/behavior.\n *\n * @param question\n */\n isFit(question: Question): boolean {\n if (this.activatedBy === \"property\") {\n return question.renderAs === this.name && question.getType() === \"file\";\n }\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n willUnmount(question: Question, el: HTMLElement): void {\n // Remove callback logic\n question.valueChangedCallback = () => {\n return;\n };\n this.questionOnUpdateFiles.delete(question.name);\n }\n\n private getHeaderText(survey: Model, currentSizeBytes: number): string {\n const totalSizeBytes = this.totalSize;\n\n const totalSize = this.convertBytesToMegabytes(totalSizeBytes).toFixed(1);\n const currentSize =\n this.convertBytesToMegabytes(currentSizeBytes).toFixed(1);\n\n // Typescript definition does not currently match the current implementation, casting to any until this gets fixerd\n const header = (survey as any).getLocalizationFormatString(\n \"totalFileSize\",\n currentSize,\n totalSize\n );\n return header;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnValidateQuestion(sender: Model, options: any): void {\n const currentSize = this.getCurrentSize();\n\n if (currentSize > this.totalSize) {\n options.error = sender.getLocalizationString(\"exceededFileSize\");\n }\n }\n\n // Convert bytes to megabytes\n private convertBytesToMegabytes(bytes: number): number {\n return bytes / 1_048_576;\n }\n\n // Returns the cummulative size of the files in the cache\n private getCurrentSize(): number {\n const sizes = Array.from(this.questionSizes.values());\n return sizes.reduce((previous, current) => previous + current, 0);\n }\n}\n","import { WidgetBase } from \"./widget-base\";\nimport {\n CustomWidgetCollection,\n ItemValue,\n Question,\n JsonObject,\n QuestionCheckboxModel,\n} from \"survey-vue\";\n\nexport class CheckboxWidget extends WidgetBase {\n constructor() {\n super(\"checkboxwithhtmlinfo\", \"Checkbox list with addtional Html info\");\n }\n\n static register(): void {\n const widget: CheckboxWidget = new CheckboxWidget();\n\n // If activatedBy isn't passed, it will default to property.\n CustomWidgetCollection.Instance.addCustomWidget(widget);\n }\n\n /**\n * SurveyJS library calls this function for every question to check, if it should use this widget instead of default rendering/behavior.\n *\n * @param question\n */\n isFit(question: Question): boolean {\n if (this.activatedBy === \"property\") {\n return (\n question.renderAs === \"checkboxwithhtmlinfo\" &&\n question.getType() === \"checkbox\"\n );\n } else if (this.activatedBy === \"type\") {\n return question.getType() === \"checkbox\";\n } else if (this.activatedBy === \"customtype\") {\n return question.getType() === \"checkboxwithhtmlinfo\";\n }\n return false;\n }\n\n /**\n * Use this function to create a new class or add new properties or remove unneeded properties from your widget.\n *\n * @param activatedBy Tells how your widget has been activated by: property, type or customType.\n * property - It means that it will activated if a property of the existing question type is set to particular value, for example inputType = \"date\".\n * type - You are changing the behaviour of entire question type. For example render radiogroup question differently, have a fancy radio buttons.\n * customType - You are creating a new type, like in our example \"textwithbutton\".\n */\n activatedByChanged(activatedBy: string): void {\n this.activatedBy = activatedBy;\n if (activatedBy === \"property\") {\n JsonObject.metaData.addProperty(\"checkbox\", {\n name: \"renderAs\",\n category: \"general\",\n default: \"standard\",\n choices: [\"standard\", \"checkboxwithhtmlinfo\"],\n });\n JsonObject.metaData.addProperty(\"itemvalue\", {\n name: \"htmlAdditionalInfo:text\",\n });\n } else if (activatedBy === \"customtype\") {\n JsonObject.metaData.addClass(\n \"checkboxwithhtmlinfo\",\n [],\n undefined,\n \"checkbox\"\n );\n }\n }\n\n /**\n * The main function, rendering and two-way binding.\n *\n * @param question\n * @param el\n */\n afterRender(question: Question, el: HTMLElement): void {\n const checkboxQuestion: QuestionCheckboxModel =\n question as unknown as QuestionCheckboxModel;\n const locale = question.getLocale();\n\n for (const choice of checkboxQuestion.choices) {\n const item: ItemValue = choice;\n\n // ignore choices without the additional info\n if (!choice.htmlAdditionalInfo) {\n continue;\n }\n\n const input: HTMLInputElement | null = el.querySelector(\n `input[value=\"${item.value as string}\"]`\n );\n const container = input?.closest(\"div\");\n\n if (!input || !container) {\n continue;\n }\n\n const additionalInfo =\n locale === \"fr\"\n ? choice.htmlAdditionalInfo.fr\n : choice.htmlAdditionalInfo.en;\n\n // create / append the alert to the choice\n const alert = document.createElement(\"div\");\n alert.className = \"alert alert-info\";\n alert.innerHTML = additionalInfo;\n alert.classList.add(input.checked ? \"show\" : \"hidden\");\n\n input.onchange = (ev: Event) => {\n alert.classList.toggle(\"hidden\");\n alert.classList.toggle(\"show\");\n };\n\n container?.appendChild(alert);\n }\n }\n}\n","import Vue from \"vue\";\nimport VueI18n, { LocaleMessages } from \"vue-i18n\";\n\nVue.use(VueI18n);\n\nfunction loadLocaleMessages(): LocaleMessages {\n const locales = require.context(\n \"@/locales\",\n true,\n /[A-Za-z0-9-_,\\s]+\\.json$/i\n );\n const messages: LocaleMessages = {};\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || \"en\",\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || \"en\",\n messages: loadLocaleMessages(),\n});\n","import { Province } from \"../interfaces/province\";\n\n// TODO: Preferably refactor this to use i18n and change other logic\nexport const ProvincesData: Map = new Map([\n [\n \"ON\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc:\n \"https://www.ipc.on.ca/en/resources/forms/file-privacy-complaint-under-ontarios-provincial-and-municipal-privacy-laws\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"en \",\n FrenchPrefixDu: \"de l’\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc:\n \"https://www.ipc.on.ca/fr/ressources/formulaires/plaintes-concernant-la-protection-de-la-vie-privee\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"QC\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"https://www.cai.gouv.qc.ca/english/\",\n },\n French: {\n FrenchPrefixAu: \"au \",\n FrenchPrefixDu: \"du \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"https://www.cai.gouv.qc.ca/\",\n },\n },\n ],\n [\n \"NS\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"https://foipop.ns.ca/publictools\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"en \",\n FrenchPrefixDu: \"de la \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"https://foipop.ns.ca/publictools\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"NB\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc:\n \"https://www2.gnb.ca/content/gnb/en/corporate/promo/information-access-and-privacy/make-a-privacy-complaint.html\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"au \",\n FrenchPrefixDu: \"du \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc:\n \"https://www2.gnb.ca/content/gnb/fr/corporate/promo/acces-a-l-information-et-protection-de-la-vie-privee/deposer-une-plainte-en-matiere-de-protection-de-la-vie-privee.html\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"MB\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo:\n \"https://www.ombudsman.mb.ca/info/access-and-privacy-division.html\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"au \",\n FrenchPrefixDu: \"du \",\n LinkMoreInfo:\n \"https://www.ombudsman.mb.ca/info/access-and-privacy-fr.html\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"BC\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"https://www.oipc.bc.ca/for-the-public/\",\n },\n French: {\n FrenchPrefixAu: \"en \",\n FrenchPrefixDu: \"de la \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"https://www.oipc.bc.ca/for-the-public/\",\n },\n },\n ],\n [\n \"PE\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"https://www.assembly.pe.ca/\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"à l’\",\n FrenchPrefixDu: \"de l’\",\n LinkMoreInfo: \"https://www.assembly.pe.ca/\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"SK\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"https://oipc.sk.ca/\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"en \",\n FrenchPrefixDu: \"de la \",\n LinkMoreInfo: \"https://oipc.sk.ca/\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"AB\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink:\n \"https://www.oipc.ab.ca/action-items/request-a-review-file-a-complaint.aspx\",\n },\n French: {\n FrenchPrefixAu: \"en \",\n FrenchPrefixDu: \"de l’\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink:\n \"https://www.oipc.ab.ca/action-items/request-a-review-file-a-complaint.aspx\",\n },\n },\n ],\n [\n \"NL\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc:\n \"https://www.oipc.nl.ca/files/ATIPPA2015PrivacyComplaintForm.pdf\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"à \",\n FrenchPrefixDu: \"de \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc:\n \"https://www.oipc.nl.ca/files/ATIPPA2015PrivacyComplaintForm.pdf\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"NV\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"au \",\n FrenchPrefixDu: \"du \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"YK\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"au \",\n FrenchPrefixDu: \"du \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"NT\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"aux \",\n FrenchPrefixDu: \"des \",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n [\n \"Other\",\n {\n English: {\n FrenchPrefixAu: \"\",\n FrenchPrefixDu: \"\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n French: {\n FrenchPrefixAu: \"à l’\",\n FrenchPrefixDu: \"de l’\",\n LinkMoreInfo: \"\",\n LinkProvinceOpc: \"\",\n ProvinceLink: \"\",\n },\n },\n ],\n]);\n","import jquery from \"jquery\";\nimport \"jquery-ui/ui/widgets/datepicker\";\nimport \"jquery-ui/themes/base/theme.css\";\nimport \"jquery-ui/themes/base/datepicker.css\";\nimport \"jquery-ui/ui/i18n/datepicker-fr-CA\";\nimport \"select2\";\nimport \"select2/dist/css/select2.min.css\";\nimport \"@ttskch/select2-bootstrap4-theme/dist/select2-bootstrap4.min.css\";\nimport { ChoicesRestful, Model, Question } from \"survey-vue\";\nimport * as Survey from \"survey-vue\";\nimport * as widgets from \"surveyjs-widgets\";\nimport { SurveyBase } from \"@/surveys/survey-base\";\nimport { AlertWidget } from \"@/surveys/widgets/alert-widget\";\nimport { DownloadWidget } from \"@/surveys/widgets/download-widget\";\nimport { FileMeterWidget } from \"@/surveys/widgets/filemeter-widget\";\nimport { CheckboxWidget } from \"@/surveys/widgets/checkbox-widget\";\nimport i18n from \"@/i18n\";\nimport { isPossiblePhoneNumber } from \"libphonenumber-js\";\nimport { ProvincesData } from \"@/data/province-data\";\n\nexport class PipedaSurvey extends SurveyBase {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor() {\n super();\n\n // Disable encoding of parameters so that we can use a variable to set the URL endpoint\n ChoicesRestful.EncodeParameters = false;\n\n Survey.JsonObject.metaData.addProperty(\"page\", {\n name: \"hideOnPDF:boolean\",\n default: false,\n });\n\n Survey.JsonObject.metaData.addProperty(\"page\", {\n name: \"pdfTitle:string\",\n default: false,\n });\n }\n\n protected registerWidgets(): void {\n // SurveyJS Widgets\n const datepickerLocale = i18n.locale === \"fr\" ? \"fr-CA\" : \"en\";\n jquery.datepicker.setDefaults(jquery.datepicker.regional[datepickerLocale]);\n widgets.jqueryuidatepicker(Survey);\n\n widgets.select2(Survey);\n widgets.select2tagbox(Survey);\n // Custom Widgets\n AlertWidget.register();\n DownloadWidget.register();\n FileMeterWidget.register();\n CheckboxWidget.register();\n }\n\n protected registerEventHandlers(): void {\n super.registerEventHandlers();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onUploadFiles.add((sender: Survey.Model, options: any) => {\n this.handleOnUploadFiles(sender, options);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.model.onValueChanged.add((sender: Survey.Model, options: any) => {\n this.handleOnValueChanged(sender, options);\n });\n }\n\n private handleOnValueChanged(sender: Model, options: any): void {\n const question = options.question as Question;\n\n if (\n !question ||\n question.name !== \"ProvinceIncidence\" ||\n options.value === null\n ) {\n return;\n }\n\n const provinceValue = options.value as string;\n const province = ProvincesData.get(provinceValue);\n\n if (!province) {\n return;\n }\n\n const provinceData =\n this.model.locale === \"fr\" ? province.French : province.English;\n\n this.model.setValue(\n \"ProvinceIncidencePrefixAu\",\n provinceData.FrenchPrefixAu\n ); // en, au, à...\n this.model.setValue(\n \"ProvinceIncidencePrefixDu\",\n provinceData.FrenchPrefixDu\n ); // de, du, de la...\n this.model.setValue(\"ProvinceLink\", provinceData.ProvinceLink);\n this.model.setValue(\"LinkProvinceOpc\", provinceData.LinkProvinceOpc);\n this.model.setValue(\"LinkMoreInfo\", provinceData.LinkMoreInfo);\n }\n\n protected registerFunctions(): void {\n super.registerFunctions();\n\n Survey.FunctionFactory.Instance.register(\n \"ValidatePhoneNumber\",\n this.ValidatePhoneNumber\n );\n\n Survey.FunctionFactory.Instance.register(\n \"ValidatePostalCode\",\n this.ValidatePostalCode\n );\n }\n\n // Validate local Canadian and international numbers\n private ValidatePhoneNumber(phoneNumberParam: any[]): boolean {\n // Checks whether the phone number is optional\n const optionalValue = phoneNumberParam[1] === true;\n\n // Checks whether the phone number is empty/non-existent, validation depends on whether it is optional or not\n if (!phoneNumberParam[0]) return optionalValue;\n\n const phoneNumber = String(phoneNumberParam[0]);\n\n return (\n isPossiblePhoneNumber(phoneNumber) ||\n isPossiblePhoneNumber(phoneNumber, \"CA\")\n );\n }\n\n // Validate Canadian and US postal codes only. Anything else goes\n private ValidatePostalCode(param: string[]): boolean {\n const postalCode = param[0];\n const countryCode = param[1];\n\n const usPostalCodePattern = /^\\d{5}(?:-*\\s*\\d{4})?$/;\n const canadaPostalCodePattern =\n /^([ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ])\\s*(\\d[ABCEGHJKLMNPRSTVWXYZ]\\d)$/i;\n\n if (countryCode === \"CA\") {\n return canadaPostalCodePattern.test(postalCode);\n } else if (countryCode === \"US\") {\n return usPostalCodePattern.test(postalCode);\n }\n\n return true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleOnUploadFiles(sender: Model, options: any): void {\n const data: { [name: string]: string | ArrayBuffer | null } = {};\n\n options.files.forEach((file: File) => {\n const reader = new FileReader();\n reader.onload = (e: ProgressEvent) => {\n if (e.target) {\n data[file.name] = e.target.result;\n }\n };\n reader.readAsDataURL(file);\n });\n\n options.callback(\n \"success\",\n options.files.map((file: File) => {\n return {\n file: file,\n content: data[file.name],\n };\n })\n );\n }\n}\n","import { SurveyPDFBase } from \"./survey-pdf-base\";\nimport {\n SurveyPDF,\n AdornersOptions,\n IPdfBrick,\n AdornersPanelOptions,\n IPoint,\n TextBrick,\n SurveyHelper,\n TextBoldBrick,\n ISize,\n CompositeBrick,\n FlatSurvey,\n} from \"survey-pdf\";\n\nexport class PipedaSurveyPdf extends SurveyPDFBase {\n private questionTitleIndex = 1;\n\n protected registerCustomProperties(): void {\n super.registerCustomProperties();\n\n // Slighlty bigger panel titles make for better question spacing\n SurveyHelper.TITLE_PANEL_FONT_SIZE_SCALE = 1.5;\n\n // No page titles needed\n SurveyHelper.TITLE_PAGE_FONT_SIZE_SCALE = 0.0;\n\n // This works to \"remove?\" the panel description however 0.0 does not\n SurveyHelper.DESCRIPTION_FONT_SIZE_SCALE = 1.0 / 100.0;\n\n SurveyHelper.GAP_BETWEEN_ROWS = 0.1;\n\n // Manage gaps of all kinds to reduce the amount of pages for the PDF\n SurveyHelper.EPSILON = 6; // Adds spacing between questions, usually under a question\n FlatSurvey.QUES_GAP_VERT_SCALE = -0.2; // Changes gaps between question as a whole. This lowers it comapared to defaults\n FlatSurvey.PANEL_CONT_GAP_SCALE = 0.2; // Gap for panel content. Lower than default\n FlatSurvey.PANEL_DESC_GAP_SCALE = -0.2; // Gaps for panel description, lower than default\n }\n\n protected registerEventHandlers(): void {\n super.registerEventHandlers();\n\n this.model.onRenderQuestion.add(\n (survey: SurveyPDF, options: AdornersOptions) =>\n this.handleOnRenderFileQuestion(survey, options)\n );\n this.model.onRenderQuestion.add(\n (survey: SurveyPDF, options: AdornersOptions) =>\n this.handleOnRenderQuestion(survey, options)\n );\n this.model.onRenderQuestion.add(\n (survey: SurveyPDF, options: AdornersOptions) =>\n this.handleOnRenderHtmlQuestion(survey, options)\n );\n }\n\n protected handleOnRenderPanel(\n survey: SurveyPDF,\n options: AdornersPanelOptions\n ): Promise | void {\n // Remove the introduction page\n if (options.panel.name === \"Introduction\") {\n return new Promise(function (resolve) {\n options.bricks = [];\n resolve();\n });\n }\n }\n\n // Removal of html questions from rendering as they convey no useful information for the summary PDF\n protected handleOnRenderHtmlQuestion(\n survey: SurveyPDF,\n options: AdornersOptions\n ): Promise | void {\n if (options.question.getType() !== \"html\") return;\n\n return new Promise(function (resolve) {\n options.bricks = [];\n resolve();\n });\n }\n\n protected handleOnRenderQuestion(\n survey: SurveyPDF,\n options: AdornersOptions\n ): Promise | void {\n const question = options.question;\n const isComplainantInfo =\n options.question.parent?.name == \"ComplainantInformation\";\n const isRepresentativeInfo =\n options.question.parent?.name == \"RepresentativeInformation\";\n\n // File and HTML questions get their own rendering\n if (question.getType() === \"file\" || question.getType() === \"html\") return;\n\n // Keep the generated title brick to use as an anchor\n const titleBrick = options.bricks[0].unfold()[0];\n const point = options.module.SurveyHelper.createPoint(\n titleBrick,\n true,\n false\n );\n\n // Place the next brick where the title brick should have been and bring it up a bit\n point.yTop = titleBrick.yTop - 3;\n\n // Remove the original bricks to be ready to be replaced\n options.bricks = [];\n\n const generateVerticalTextFlats = async (\n point: IPoint,\n itemValues: string[],\n options: AdornersOptions\n ): Promise => {\n const currPoint: IPoint = options.module.SurveyHelper.clone(point);\n const flats: IPdfBrick[] = [];\n\n // When we have the first question of the contact information, build a portion of it manually\n if (\n options.question.name === \"ComplainantFormOfAddress\" ||\n options.question.name === \"RepresentativeFormOfAddress\"\n ) {\n await PipedaSurveyPdf.buildContactInformationSummary(\n options.question.name === \"ComplainantFormOfAddress\"\n ? \"Complainant\"\n : \"Representative\",\n survey,\n options,\n currPoint,\n flats\n );\n }\n\n // Skip some of the contact info rendering as it has been built manually\n if (PipedaSurveyPdf.isContactInfoQuestionToSkip(options.question.name))\n return flats;\n\n for await (const itemValue of itemValues) {\n if (isComplainantInfo || isRepresentativeInfo) {\n options.question.title = `${this.questionTitleIndex++}. ${\n options.question.title\n }`;\n\n // Build any remaining contact information in an inline fashion\n await PipedaSurveyPdf.buildInlineQuestion(\n itemValue,\n options,\n currPoint,\n flats\n );\n\n // A bit of spacing, will this do anything?\n currPoint.yTop = question.yBot + options.controller.unitHeight * 0.8;\n } else {\n options.question.title = `${this\n .questionTitleIndex++}. ${options.question.title}`;\n\n const question = await SurveyHelper.createTitleFlat(\n point,\n options.question,\n options.controller\n );\n\n flats.push(question);\n currPoint.yTop = question.yBot + options.controller.unitHeight * 0.1;\n\n // Increase gap between answer lines when it's a comment based answer\n if (options.question.getType() == \"comment\") {\n await PipedaSurveyPdf.buildCommentFlat(\n itemValue,\n options,\n currPoint,\n flats\n );\n } else {\n // Text since we don't want to generate HTML for an answer\n const answer: IPdfBrick =\n await options.module.SurveyHelper.createTextFlat(\n currPoint,\n options.question,\n options.controller,\n itemValue,\n TextBrick\n );\n\n flats.push(answer);\n }\n }\n }\n\n return flats;\n };\n\n // Generate and set the bricks to be in the PDF\n return new Promise(function (resolve) {\n generateVerticalTextFlats(point, [question.displayValue], options).then(\n function (flats) {\n options.bricks = options.bricks.concat(flats);\n resolve();\n }\n );\n });\n }\n\n /*\n Returns true if the question name is found within the questions to skip generating\n */\n protected static isContactInfoQuestionToSkip(questionName: string): boolean {\n // Questions to skip\n const questionsToSkip = [\n \"FormOfAddress\",\n \"FirstName\",\n \"LastName\",\n \"MailingAddress\",\n \"City\",\n \"Country\",\n \"ProvinceOrState\",\n \"PostalCode\",\n ];\n\n // If the question name is found within the questions to skip\n return (\n (questionsToSkip\n .map((i) => \"Complainant\" + i)\n .find((x) => x === questionName)?.length ?? 0) > 1 ||\n (questionsToSkip\n .map((i) => \"Representative\" + i)\n .find((x) => x === questionName)?.length ?? 0) > 1\n );\n }\n\n protected static async buildCommentFlat(\n itemValue: string,\n options: AdornersOptions,\n currPoint: IPoint,\n flats: IPdfBrick[]\n ) {\n const lines: string[] = options.controller.doc.splitTextToSize(\n itemValue,\n options.controller.paperWidth -\n (options?.controller?.margins?.right ?? 0) -\n currPoint.xLeft\n );\n currPoint = options.module.SurveyHelper.clone(currPoint);\n const composite: CompositeBrick = new CompositeBrick();\n lines.forEach((line: string, index: number) => {\n if (lines.length > 1) {\n // Extra line spacing for Multi line comment between lines\n if (index > 0) {\n currPoint.yTop += options.controller.unitHeight;\n }\n // Add a bit of spacing for a multiline comment before the start of the text\n else {\n currPoint.yTop += options.controller.unitHeight * 0.5;\n }\n }\n\n const size: ISize = options.controller.measureText(line);\n composite.addBrick(\n new TextBrick(\n options.question,\n options.controller,\n SurveyHelper.createRect(currPoint, size.width, size.height),\n line\n )\n );\n });\n\n flats.push(composite);\n }\n\n /*\n Render a question and its answer in an inline way, both on the same line\n*/\n protected static async buildInlineQuestion(\n itemValue: string,\n options: AdornersOptions,\n currPoint: IPoint,\n flats: IPdfBrick[]\n ) {\n const question = await SurveyHelper.createTextFlat(\n currPoint,\n options.question,\n options.controller,\n options.question.title + \": \",\n TextBoldBrick\n );\n\n // Size of question, calculate to know where to start putting the answer\n const questionSize: ISize = options.controller.measureText(\n options.question.title\n );\n const widthScale = questionSize.width * 0.05;\n currPoint.xLeft =\n questionSize.width + // Add the question text width size to set the start of the answer text\n widthScale + // Scale the amount of extra width we want, more if longer text\n (options?.controller?.margins?.left ?? 0) + // Page margin\n options.controller.unitWidth; // Extra character length for spacing between question and answer\n\n const answer = await SurveyHelper.createTextFlat(\n currPoint,\n options.question,\n options.controller,\n itemValue,\n TextBrick\n );\n\n const compositeBrick = new CompositeBrick();\n compositeBrick.addBrick(question);\n compositeBrick.addBrick(answer);\n flats.push(compositeBrick);\n }\n\n protected static async buildContactInformationSummary(\n contactType: string,\n survey: SurveyPDF,\n options: AdornersOptions,\n currPoint: IPoint,\n flats: IPdfBrick[]\n ) {\n const formOfAddress = survey.getValue(contactType + \"FormOfAddress\");\n const firstName = survey.getValue(contactType + \"FirstName\");\n const lastName = survey.getValue(contactType + \"LastName\");\n const address = survey.getValue(contactType + \"MailingAddress\");\n const city = survey.getValue(contactType + \"City\");\n const country = survey.getValue(contactType + \"Country\");\n const province = survey.getValue(contactType + \"ProvinceOrState\");\n const postalCode = survey.getValue(contactType + \"PostalCode\");\n\n // Add spacing between the contact info and title due to custom generation\n currPoint.yTop = currPoint.yTop + 5;\n\n const createAnswerTextFlat = async function (value: string) {\n const answerInfo = await SurveyHelper.createTextFlat(\n currPoint,\n options.question,\n options.controller,\n value,\n TextBrick\n );\n flats.push(answerInfo);\n currPoint.yTop = answerInfo.yBot + options.controller.unitHeight * 0.4;\n };\n\n await createAnswerTextFlat(`${formOfAddress} ${firstName} ${lastName}`);\n await createAnswerTextFlat(address);\n await createAnswerTextFlat(\n `${city} ${province ? province + \" \" : \"\"}${postalCode}`\n );\n await createAnswerTextFlat(country);\n }\n}\n","import { ISurveyState } from \"../interfaces/ISurveyState\";\nimport { SurveyModel } from \"survey-vue\";\nimport { IStorageContext } from \"../interfaces/IStorageContext\";\n\nexport class SurveyStateHelper {\n private storage: IStorageContext;\n private surveyModel: SurveyModel;\n private fileQuestions: string[] = [];\n\n public constructor(surveyModel: SurveyModel, storage: IStorageContext) {\n this.surveyModel = surveyModel;\n this.storage = storage;\n }\n\n public load(storageName: string): void {\n const state = this.storage.load(storageName) as ISurveyState;\n\n if (state === null) {\n return;\n }\n\n this.setSurveyState(state);\n }\n\n public loadNew(surveyModel: SurveyModel, storageName: string): void {\n this.surveyModel = surveyModel;\n const state = this.storage.load(storageName) as ISurveyState;\n\n if (state === null) {\n return;\n }\n\n this.setSurveyState(state);\n }\n\n public remove(storageName: string): void {\n this.storage.remove(storageName);\n }\n\n public save(storageName: string): void {\n const state = this.getSurveyState();\n this.storage.save(storageName, state);\n }\n\n private getSurveyState(): ISurveyState {\n // Get file questions if not already set\n if (this.fileQuestions.length == 0) {\n this.fileQuestions = this.surveyModel\n .getAllQuestions()\n .filter((question) => question.getType() === \"file\")\n .map((question) => question.name);\n }\n\n // Need to assign the data first to a new variable to be able to remove the file questions\n const data = this.surveyModel.data;\n\n // Remove questions that are files as they take too much session storage space (max 5-10MB)\n if (this.surveyModel.data) {\n this.fileQuestions.forEach((questionName) => {\n data[questionName] = [];\n });\n }\n\n return {\n currentPageNo: this.surveyModel.currentPageNo,\n data: data,\n } as ISurveyState;\n }\n\n private setSurveyState(state: ISurveyState) {\n // It's important that the data is set first, otherwise changing the currentPageNo will cause\n // onCurrentPageChanged to trigger which will override the data.\n this.surveyModel.data = state.data;\n this.surveyModel.currentPageNo = state.currentPageNo;\n }\n}\n","import { IStorageContext } from \"../interfaces/IStorageContext\";\n\nexport class SessionStorageContext implements IStorageContext {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n save(key: string, value: any): void {\n window.sessionStorage.setItem(key, JSON.stringify(value));\n }\n\n load(key: string): any {\n const value = window.sessionStorage.getItem(key);\n\n if (value === null) {\n return value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n }\n\n remove(key: string): void {\n window.sessionStorage.removeItem(key);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios from \"axios\";\nimport { IElement, Model, PageModel, SurveyModel, Trigger } from \"survey-vue\";\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { PipedaSurvey } from \"@/surveys/pipeda-survey\";\nimport { PipedaSurveyPdf } from \"@/surveys/pipeda-survey-pdf\";\nimport { SurveyStateHelper } from \"@/helpers/surveyStateHelper\";\nimport { SessionStorageContext } from \"@/contexts/sessionStorageContext\";\n\n@Component\nexport default class OcfPipeda extends Vue {\n survey = new PipedaSurvey();\n isLoading = false;\n referenceNumber = \"\";\n submitterEmail = \"\";\n contactEmail = \"\";\n contactFirstName = \"\";\n contactLastName = \"\";\n submitted = false;\n surveyJson = \"\";\n\n // Session storage.\n private readonly storageName: string = \"SURVEY-DATA\";\n\n // Create helper.\n private surveyStateHelper: SurveyStateHelper = new SurveyStateHelper(\n this.survey.model,\n new SessionStorageContext()\n );\n\n downloadPdf() {\n const pdfModel = this.createPdfModel();\n const surveyPDF = new PipedaSurveyPdf(pdfModel, this.survey.model.data);\n\n surveyPDF.save(this.$t(\"formSummary\").toString());\n }\n\n // Remove any pages (panels due to preview) that should be hidden\n private createPdfModel(): SurveyModel {\n const surveyModel = this.survey.model.toJSON() as SurveyModel;\n try {\n this.survey.originalModel.pages.forEach((p: PageModel) => {\n const pageModel = p.toJSON();\n\n // Remove page titles except for pages that specify a PDF title\n surveyModel.pages[0].elements.forEach(\n (panel: IElement, index: number) => {\n if (panel.name === pageModel.name) {\n let title = {\n en: \"\",\n fr: \"\",\n };\n\n if (pageModel[\"pdfTitle\"]) {\n title = {\n en: pageModel[\"pdfTitle\"].en,\n fr: pageModel[\"pdfTitle\"].fr,\n };\n }\n\n (surveyModel.pages[0].elements[index] as any).title = title;\n }\n }\n );\n\n if (pageModel[\"hideOnPDF\"]) {\n surveyModel.pages[0].elements.forEach(\n (panel: IElement, index: number) => {\n if (panel.name === pageModel.name) {\n surveyModel.pages[0].elements.splice(index, 1);\n }\n }\n );\n }\n });\n } catch (err) {\n console.error(\n \"Error removing hidden pages from model for PDF generation.\",\n err\n );\n }\n return surveyModel;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async handleOnComplete(sender: Model, options: any) {\n // Don't submit the results if it completed prematurely due to a trigger\n if (this.surveyCompletingPrematurely(sender)) {\n return;\n }\n\n sender.showCompletedPage = false;\n\n this.isLoading = true;\n options.showDataSaving();\n\n // Reset the ENV variables set in the survey since they get cleared\n sender.setValue(\"ApplicationUrl\", process.env.VUE_APP_PBR_API);\n\n const pdfModel = this.createPdfModel();\n const surveyPDF = new PipedaSurveyPdf(pdfModel, sender.data);\n const dataUrl = await surveyPDF.raw(\"dataurlstring\");\n\n const file = {\n name: \"survey_result.pdf\",\n type: \"application/pdf\",\n content: dataUrl,\n };\n\n const files = (sender.getValue(\"Files\") as any[]) || [];\n files.push(file);\n\n // Set the survey summary\n sender.setValue(\"Files\", files);\n sender.setValue(\"Locale\", this.$i18n.locale);\n\n axios\n .post(`${process.env.VUE_APP_PBR_API}/ocfpipeda`, sender.data)\n .then((resp) => {\n options.showDataSavingSuccess(\n this.$t(\"complaintWasSubmittedSuccessfully\")\n );\n this.submitted = true;\n\n if (resp.data) {\n this.referenceNumber = resp.data.referenceNumber;\n }\n\n sender.showCompletedPage = true;\n })\n .catch((err) => {\n options.showDataSavingError(err?.message);\n })\n .finally(() => {\n sender.showCompletedPage = true;\n this.isLoading = false;\n // Delete session storage\n this.surveyStateHelper.remove(this.storageName);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleError(err: any) {\n console.error(err);\n let message = err.message;\n if (err.response?.status === 400) {\n message = this.$t(\"invalidRequestMessage\");\n }\n\n this.$router.push({\n name: `${this.$i18n.locale}-register`,\n params: {\n alertType: \"alert-warning\",\n alertMessage: message.toString(),\n },\n });\n\n this.$store.dispatch(\"logout\");\n }\n\n private handleOnServerValidateQuestions(\n sender: Model,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: any\n ): void {\n const isShowingPreview = sender.getPropertyValue(\"isShowingPreview\", false);\n if (!isShowingPreview) {\n options.complete();\n return;\n }\n\n axios\n .post(\n `${process.env.VUE_APP_QUESTIONS_API}/validation?type=ocf-pipeda`,\n sender.data\n )\n .then((resp) => {\n Object.keys(resp.data.errors).forEach((q) => {\n // Clear remaining errors if any, Surveyjs does not handle this as usual due to preview\n this.survey.model.pages.forEach((page) => {\n page.questions.forEach((question) => {\n question.errors = [];\n });\n });\n\n options.errors[q] = resp.data.errors[q][0];\n });\n\n options.complete();\n })\n .catch((err) => this.handleError(err));\n }\n\n surveyCompletingPrematurely(survey: Model): boolean {\n return survey.triggers\n .filter((t: Trigger) => t.getType() === \"completetrigger\")\n .some((t: Trigger) => survey.runExpression(t.expression) === true);\n }\n\n mounted() {\n this.isLoading = true;\n\n axios\n .get(`${process.env.VUE_APP_QUESTIONS_API}/questions`, {\n params: {\n type: \"ocf-pipeda\",\n },\n })\n .then((resp) => {\n this.surveyJson = resp.data;\n this.startSurvey();\n })\n .catch((err) => this.handleError(err))\n .finally(() => {\n this.isLoading = false;\n });\n }\n\n private startSurvey(data: any = {}) {\n data.ApplicationUrl = process.env.VUE_APP_PBR_API;\n\n this.survey.loadSurveyFromJSON(this.surveyJson, data);\n\n // Load session data if it exists\n this.surveyStateHelper.load(this.storageName);\n\n this.survey.model.setValue(\"Locale\", this.$i18n.locale);\n this.survey.model.locale = this.$i18n.locale;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.survey.model.onCompleting.add((survey: Model, options: any) => {\n // Don't submit the results if it completed prematurely due to a trigger\n if (this.surveyCompletingPrematurely(survey)) {\n return;\n }\n });\n\n this.survey.model.onComplete.add(this.handleOnComplete);\n this.survey.model.onServerValidateQuestions.add(\n this.handleOnServerValidateQuestions\n );\n\n // Save survey results to session storage\n this.survey.model.onValueChanged.add(() => {\n this.surveyStateHelper.save(this.storageName);\n });\n this.survey.model.onCurrentPageChanged.add(() => {\n this.surveyStateHelper.save(this.storageName);\n });\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OcfPipeda.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OcfPipeda.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OcfPipeda.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OcfPipeda.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./OcfPipeda.vue?vue&type=template&id=7085321b&\"\nimport script from \"./OcfPipeda.vue?vue&type=script&lang=ts&\"\nexport * from \"./OcfPipeda.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./OcfPipeda.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OcfPipeda.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OcfPipeda.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OcfPipeda.vue?vue&type=template&id=522634ea&\"\nimport script from \"./OcfPipeda.vue?vue&type=script&lang=js&\"\nexport * from \"./OcfPipeda.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"thank-you\"},[_c('Title',{attrs:{\"title\":_vm.$t('title')}}),_c('MainContent',[_c('div',{staticClass:\"alert alert-success\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"thankYou\")))]),_c('i18n',{attrs:{\"path\":\"thankYouMessage\",\"tag\":\"p\"}},[_c('strong',[_vm._v(\"NePasRepondre-DoNotReply@priv.gc.ca\")])]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"thankYouMessage2\"))),_c('router-link',{attrs:{\"to\":{ name: ((_vm.$i18n.locale) + \"-register\") }}},[_vm._v(_vm._s(_vm.$t(\"requestLink\")))]),_vm._v(\". \")],1),_c('i18n',{attrs:{\"path\":\"thankYouMessage3\",\"tag\":\"p\"}},[_c('a',{attrs:{\"href\":_vm.$t('contactUrl')}},[_vm._v(_vm._s(_vm.$t(\"contactLink\")))])])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport Title from \"@/components/Title.vue\";\nimport MainContent from \"@/components/MainContent.vue\";\n\n@Component({\n components: {\n Title,\n MainContent,\n },\n})\nexport default class ThankYouView extends Vue {}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ThankYouView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ThankYouView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ThankYouView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ThankYouView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ThankYouView.vue?vue&type=template&id=59b4491e&\"\nimport script from \"./ThankYouView.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThankYouView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ThankYouView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\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('Title',{attrs:{\"title\":_vm.$t('yourSessionHasEndedTitle')}}),_c('MainContent',[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"yourSessionHasEndedText\"))+\" \")]),_c('ul',[_c('li',[_c('a',{attrs:{\"href\":_vm.$t('federalInstitutionReportUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"federalInstitutionReportText\")))])]),_c('li',[_c('a',{attrs:{\"href\":_vm.$t('businessReportUrl'),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"businessReportText\")))])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport Title from \"@/components/Title.vue\";\nimport MainContent from \"@/components/MainContent.vue\";\n\n@Component({\n components: {\n Title,\n MainContent,\n },\n})\nexport default class SessionEndedView extends Vue {\n mounted() {\n this.$store.dispatch(\"logout\");\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SessionEndedView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SessionEndedView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SessionEndedView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SessionEndedView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SessionEndedView.vue?vue&type=template&id=609e4854&\"\nimport script from \"./SessionEndedView.vue?vue&type=script&lang=ts&\"\nexport * from \"./SessionEndedView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SessionEndedView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import axios from \"axios\";\nimport jwt_decode from \"jwt-decode\";\nimport Vue from \"vue\";\nimport Vuex, { ActionTree, GetterTree, MutationTree } from \"vuex\";\n\nVue.use(Vuex);\n\ninterface State {\n status: string;\n user: {\n email?: string | undefined;\n };\n token: string;\n}\n\nconst state: State = {\n status: \"\",\n user: {},\n token: localStorage.getItem(\"token\") || \"\",\n};\n\nconst mutations = >{\n authorization_request(state) {\n state.status = \"Authorization Request\";\n },\n authorization_success(state, token) {\n state.status = \"Authorization Success\";\n state.token = token;\n },\n authorization_error(state) {\n state.status = \"Authorization Error\";\n },\n authentication_request(state) {\n state.status = \"Authentication Request\";\n },\n authentication_success(state, token) {\n state.status = \"Authentication Success\";\n state.token = token;\n },\n authentication_error(state) {\n state.status = \"Authentication Error\";\n },\n logout(state) {\n state.user = {};\n state.status = \"\";\n state.token = \"\";\n },\n};\n\nconst actions = >{\n activate({ commit }, data) {\n return new Promise((resolve, reject) => {\n commit(\"authorization_request\");\n axios({\n url: `${process.env.VUE_APP_AUTH_API}/authorize`,\n data: data,\n method: \"POST\",\n })\n .then((resp) => {\n // This is the Access Token. We store the token in local storage for future API calls\n localStorage.setItem(\"token\", resp.data.token);\n axios.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${resp.data.token}`;\n commit(\"authorization_success\", resp.data.token);\n resolve();\n })\n .catch((err) => {\n commit(\"authorization_error\");\n reject(err);\n });\n });\n },\n register({ commit }, data) {\n return new Promise((resolve, reject) => {\n commit(\"authentication_request\");\n axios({\n url: `${process.env.VUE_APP_AUTH_API}/anonymousauthenticate`,\n data: data,\n method: \"POST\",\n })\n .then((resp) => {\n // This is the ID Token. We don't need to store the token in local storage for anonymous authentications\n commit(\"authentication_success\", resp.data.token);\n resolve(resp);\n })\n .catch((err) => {\n commit(\"authentication_error\");\n reject(err);\n });\n });\n },\n logout({ commit }) {\n return new Promise((resolve) => {\n commit(\"logout\");\n localStorage.removeItem(\"token\");\n delete axios.defaults.headers.common[\"Authorization\"];\n resolve();\n });\n },\n};\n\nconst getters = >{\n user: (state) => {\n if (state.token) {\n // Decode the token to get some user information.\n const decoded = jwt_decode(state.token) as { sub: string };\n const user = {\n email: decoded.sub,\n };\n return user;\n } else {\n return {};\n }\n },\n authToken: (state) => state.token,\n isAuthorized: (state) => !!state.token,\n authStatus: (state) => state.status,\n};\n\nexport default new Vuex.Store({\n strict: true,\n state: state,\n getters: getters,\n mutations: mutations,\n actions: actions,\n});\n","import axios from \"axios\";\nimport Vue from \"vue\";\nimport VueRouter, { NavigationGuardNext, Route, RouteConfig } from \"vue-router\";\nimport RegisterView from \"@/views/RegisterView.vue\";\nimport OcfPipedaView from \"@/views/OcfPipeda.vue\";\nimport ThankYouView from \"@/views/ThankYouView.vue\";\nimport SessionEndedView from \"@/views/SessionEndedView.vue\";\nimport i18n from \"@/i18n\";\nimport store from \"@/store\";\n\nVue.use(VueRouter);\n\nconst routes: Array = [\n {\n path: \"\",\n redirect: \"/fr/inscription\",\n },\n {\n path: \"/api/*\",\n },\n {\n path: \"/fr\",\n redirect: \"/fr/accueil\",\n },\n {\n path: \"/:lang/register\",\n name: \"en-register\",\n component: RegisterView,\n props: true,\n meta: {\n lngRoute: \"fr-register\",\n },\n },\n {\n path: \"/:lang/inscription\",\n name: \"fr-register\",\n component: RegisterView,\n props: true,\n meta: {\n lngRoute: \"en-register\",\n },\n },\n {\n path: \"/:lang/sessionfini\",\n name: \"fr-session-fini\",\n component: SessionEndedView,\n meta: {\n lngRoute: \"en-session-ended\",\n },\n },\n {\n path: \"/:lang/sessionended\",\n name: \"en-session-ended\",\n component: SessionEndedView,\n meta: {\n lngRoute: \"fr-session-fini\",\n },\n },\n {\n path: \"/:lang/thankyou\",\n name: \"en-thankyou\",\n component: ThankYouView,\n meta: {\n lngRoute: \"fr-thankyou\",\n },\n },\n {\n path: \"/:lang/merci\",\n name: \"fr-thankyou\",\n component: ThankYouView,\n meta: {\n lngRoute: \"en-thankyou\",\n },\n },\n {\n path: \"/:lang/activate\",\n name: \"en-activate\",\n beforeEnter: activate,\n component: OcfPipedaView,\n },\n {\n path: \"/:lang/activer\",\n name: \"fr-activate\",\n beforeEnter: activate,\n component: OcfPipedaView,\n },\n {\n path: \"/:lang/reporting\",\n name: \"en-reporting\",\n component: OcfPipedaView,\n meta: {\n lngRoute: \"fr-reporting\",\n requiresAuth: true,\n },\n },\n {\n path: \"/:lang/rapport\",\n name: \"fr-reporting\",\n component: OcfPipedaView,\n meta: {\n lngRoute: \"en-reporting\",\n requiresAuth: true,\n },\n },\n {\n path: \"*\",\n beforeEnter() {\n window.location.href = \"https://www.priv.gc.ca/404\";\n },\n },\n];\n\nfunction activate(\n to: Route,\n from: Route,\n next: NavigationGuardNext\n): void {\n const token = to.query.token;\n store\n .dispatch(\"activate\", {\n token,\n })\n .then(() => {\n next({\n name: `${i18n.locale}-reporting`,\n params: { lang: i18n.locale },\n });\n })\n .catch((err) => {\n let message = err.message;\n if (err.response.status === 403) {\n message = i18n.t(\"invalidToken\");\n }\n next({\n name: `${i18n.locale}-register`,\n params: {\n lang: i18n.locale,\n alert: message,\n },\n });\n });\n}\n\nconst router = new VueRouter({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes,\n});\n\nrouter.beforeEach((to, from, next) => {\n const lang = to.params.lang ?? process.env.VUE_APP_I18N_LOCALE;\n\n i18n.locale = lang;\n axios.defaults.headers.common[\"Accept-Language\"] = lang;\n document.querySelector(\"html\")?.setAttribute(\"lang\", lang);\n\n if (to.matched.some((record) => record.meta.requiresAuth)) {\n if (store.getters.isAuthorized) {\n next();\n return;\n }\n next({\n name: `${i18n.locale}-register`,\n params: {\n lang: i18n.locale,\n alertType: \"alert-warning\",\n alertMessage: i18n.t(\"notAuthorized\").toString(),\n },\n });\n } else {\n next();\n }\n});\n\nexport default router;\n","import axios from \"axios\";\nimport Loading from \"vue-loading-overlay\";\nimport \"vue-loading-overlay/dist/vue-loading.css\";\nimport NProgress from \"nprogress\";\nimport \"nprogress/nprogress.css\";\nimport Vue from \"vue\";\nimport VuePromiseBtn from \"vue-promise-btn\";\nimport \"vue-promise-btn/dist/vue-promise-btn.css\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport store from \"./store\";\nimport i18n from \"./i18n\";\nimport VueMatomo from \"vue-matomo\";\nimport \"./css/styles.css\";\n\n// Before an HTTP request is made, start nprogress but end it when encountering an error\naxios.interceptors.request.use(\n (config) => {\n NProgress.start();\n return config;\n },\n (error) => {\n NProgress.done();\n return Promise.reject(error);\n }\n);\n\n// Before an HTTP response is returned, stop nprogress (even on error)\naxios.interceptors.response.use(\n (response) => {\n NProgress.done();\n return response;\n },\n (error) => {\n NProgress.done();\n return Promise.reject(error);\n }\n);\n\nconst token = localStorage.getItem(\"token\");\nif (token) {\n axios.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n}\n\nVue.use(Loading);\nVue.component(\"vue-loading-overlay\", Loading);\n\nVue.use(VuePromiseBtn);\n\nVue.use(VueMatomo, {\n host: process.env.VUE_APP_MATOMO_HOST,\n siteId: process.env.VUE_APP_MATOMO_SITEID,\n trackerFileName: process.env.VUE_APP_MATOMO_TRACKERFILEPATH,\n // Enables automatically registering pageviews on the router\n router: router,\n // Domains prevents any links within the list to not be tracked as external\n domains: process.env.VUE_APP_MATOMO_DOMAINS, // TODO: Test if this works\n});\n\nnew Vue({\n router,\n store,\n i18n,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","var map = {\n\t\"./en.json\": 790,\n\t\"./fr.json\": 844\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 = 8973;","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"478\":\"cecd0cef\",\"823\":\"616be49d\",\"986\":\"36a538e4\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"ocf-pa-vue:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/plainte-complaint-lprpde-pipeda/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\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\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkocf_pa_vue\"] = self[\"webpackChunkocf_pa_vue\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(1671); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["module","exports","Component","options","__i18n","push","_Ctor","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","isBrowserSupported","_e","_v","_s","$t","feedbackApi","staticRenderFns","WetTop","Vue","created","buildTop","onRouteChanged","wet","$i18n","locale","wetFr","wetEn","lngLink","resolveLanguageLink","$route","meta","lngRoute","defTop","document","getElementById","innerHTML","builder","top","cdnEnv","search","siteMenu","lngLinks","href","lang","text","showPreContent","breadcrumbs","topSecMenu","route","t","toString","$router","resolve","name","params","__decorate","Prop","default","Watch","component","WetPreFooter","buildPreFooter","onLocaleChanged","defPreFooter","preFooter","dateModified","showPostContent","showFeedback","showShare","versionIdentifier","screenIdentifier","pageDetails","isContainer","WetFooter","buildFooter","defFooter","footer","showFooter","App","test","window","navigator","userAgent","process","axios","undefined","err","Promise","status","config","__isRetryRequest","$store","dispatch","alertType","alertMessage","components","alert","class","type","message","on","$event","preventDefault","register","apply","arguments","directives","rawName","value","expression","domProps","target","composing","email","title","Title","_t","MainContent","RegisterView","redirectUri","reject","clientId","then","catch","isLoading","survey","model","submitted","referenceNumber","downloadPdf","SurveyBase","constructor","Converter","simpleLineBreaks","tasklists","openLinksInNewWindow","setSurveyTheme","registerWidgets","Model","originalModel","setSurveyLocalizations","setSurveyProperties","isPreviewShowing","getPropertyValue","displayErrorSummary","questionErrors","summaryId","summary","remove","size","errorText","getLocalizationString","createElement","id","className","index","list","forEach","errors","question","processedTitle","inputId","getInputId","error","item","link","innerText","getText","appendChild","errorCount","localizationKey","validationError","getLocalizationFormatString","header","heading","querySelector","parentNode","insertBefore","nextSibling","goingNextPage","scrollIntoView","loadSurveyFromJSON","json","data","fromJSON","registerCustomProperties","registerEventHandlers","registerFunctions","nextPage","existingNextPageFunction","newNextPageFunction","isLastPage","result","onAfterRenderQuestion","add","sender","handleOnAfterRenderQuestion","onCurrentPageChanged","handleOnCurrentPageChanged","onComplete","handleOnComplete","onPageAdded","handleOnPageAdded","onTextMarkdown","handleOnTextMarkdown","onValidatedErrorsOnCurrentPage","handleOnValidatedErrorsOnCurrentPage","questionType","getType","matrixQuestion","firstRow","visibleRows","firstQuestion","questions","surveyLocalization","container","navigationBarValue","actions","x","css","settings","clearInvisibleValues","focusOnFirstError","questionErrorLocation","showCompletedPage","showPreviewBeforeComplete","showProgressBar","showQuestionNumbers","storeOthersAsComment","questionTitlePattern","StylesManager","listStyle","pattern","replace","defaultActionBarCss","defaultBootstrapCss","scrollToTopOnPageChange","_paq","newCurrentPage","html","htmlElement","div","outerHTML","appendRequiredText","required","includes","isRequired","onPropertyChanged","newValue","querySelectorAll","page","previewText","str","converter","makeHtml","substring","indexOf","lastIndexOf","Map","set","WidgetBase","iconName","afterRender","el","init","willUnmount","widgetIsLoaded","activatedByChanged","activatedBy","AlertWidget","super","widget","CustomWidgetCollection","property","JsonObject","choices","getChoices","defaultValue","some","choice","setChoices","dependsOn","category","visibleIf","obj","renderAs","hasTitle","htmlQuestion","isFit","SurveyPDFBase","commercial","htmlRenderAs","fontSize","compress","textFieldRenderAs","SurveyPDF","raw","save","fileName","onProcessHtml","handleOnProcessHtml","onGetQuestionTitle","requiredText","ChoicesRestful","Widgets","SurveyCore","mode","decodeEntities","replaceUnicode","input","element","match","output","handleOnRenderFileQuestion","fileQuestion","fileNames","map","file","bricks","titleBrick","unfold","point","SurveyHelper","createPoint","generateVerticalTextFlats","async","itemValues","currPoint","clone","flats","itemValue","itemFlat","createTextFlat","controller","TextBrick","yTop","yBot","GAP_BETWEEN_ROWS","unitHeight","concat","DownloadWidget","Serializer","serializationProperty","button","addEventListener","toJSON","visiblePages","pages","p","getLocalizableStringText","defaultFileName","surveyPDF","EventBase","Event","FileMeterWidget","totalSize","placeholder","currentSize","getCurrentSize","getHeaderText","meter","min","max","high","insertAdjacentElement","onUpdateFiles","surveyValue","questionOnUpdateFiles","valueChangedCallback","files","promises","fetch","content","response","blob","all","blobs","reduce","previous","current","getValueName","questionSizes","values","isEmpty","fire","onValidateQuestion","handleOnValidateQuestion","delete","currentSizeBytes","totalSizeBytes","convertBytesToMegabytes","toFixed","bytes","sizes","Array","from","CheckboxWidget","checkboxQuestion","getLocale","htmlAdditionalInfo","closest","additionalInfo","fr","en","classList","checked","onchange","ev","toggle","loadLocaleMessages","locales","require","messages","keys","key","matched","length","VueI18n","fallbackLocale","ProvincesData","English","FrenchPrefixAu","FrenchPrefixDu","LinkMoreInfo","LinkProvinceOpc","ProvinceLink","French","PipedaSurvey","Survey","datepickerLocale","i18n","jquery","widgets","onUploadFiles","handleOnUploadFiles","onValueChanged","handleOnValueChanged","provinceValue","province","get","provinceData","setValue","ValidatePhoneNumber","ValidatePostalCode","phoneNumberParam","optionalValue","phoneNumber","String","isPossiblePhoneNumber","param","postalCode","countryCode","usPostalCodePattern","canadaPostalCodePattern","reader","FileReader","onload","e","readAsDataURL","callback","PipedaSurveyPdf","FlatSurvey","onRenderQuestion","handleOnRenderQuestion","handleOnRenderHtmlQuestion","handleOnRenderPanel","panel","isComplainantInfo","parent","isRepresentativeInfo","buildContactInformationSummary","isContactInfoQuestionToSkip","questionTitleIndex","buildInlineQuestion","buildCommentFlat","answer","displayValue","questionName","questionsToSkip","i","find","lines","doc","splitTextToSize","paperWidth","margins","right","xLeft","composite","CompositeBrick","line","measureText","addBrick","width","height","TextBoldBrick","questionSize","widthScale","left","unitWidth","compositeBrick","contactType","formOfAddress","getValue","firstName","lastName","address","city","country","createAnswerTextFlat","answerInfo","SurveyStateHelper","surveyModel","storage","load","storageName","state","setSurveyState","loadNew","getSurveyState","fileQuestions","getAllQuestions","filter","currentPageNo","SessionStorageContext","sessionStorage","setItem","JSON","stringify","getItem","parse","removeItem","OcfPipeda","pdfModel","createPdfModel","pageModel","elements","splice","console","surveyCompletingPrematurely","showDataSaving","dataUrl","resp","showDataSavingSuccess","showDataSavingError","finally","surveyStateHelper","handleError","handleOnServerValidateQuestions","isShowingPreview","Object","q","complete","triggers","runExpression","mounted","surveyJson","startSurvey","ApplicationUrl","onCompleting","onServerValidateQuestions","OcfPipedaView","ThankYouView","SessionEndedView","Vuex","user","token","localStorage","mutations","authorization_request","authorization_success","authorization_error","authentication_request","authentication_success","authentication_error","logout","activate","commit","url","method","getters","decoded","jwt_decode","sub","authToken","isAuthorized","authStatus","strict","VueRouter","routes","path","redirect","props","beforeEnter","requiresAuth","location","to","next","query","store","router","base","beforeEach","setAttribute","record","NProgress","Loading","VuePromiseBtn","VueMatomo","host","siteId","trackerFileName","domains","h","$mount","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","jQuery","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","a","leafPrototypes","getProto","getPrototypeOf","__proto__","ns","create","def","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","src","onScriptComplete","prev","event","onerror","clearTimeout","doneFns","removeChild","setTimeout","bind","head","Symbol","toStringTag","installedChunks","installedChunkData","promise","loadingEnded","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}