{"version":3,"file":"js/3583-11f5f6674f1a26bfbb33.chunk.js","mappings":"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","sources":["webpack://agra/./app/javascript/components/buttons/link-button.vue","webpack://agra/./app/javascript/components/buttons/link-button.vue?a3b9","webpack://agra/./app/javascript/components/check-success-inline.vue","webpack://agra/./app/javascript/components/check-success-inline.vue?8b39","webpack://agra/./app/javascript/users/missing-info-modal.vue","webpack://agra/./app/javascript/users/missing-info-modal.vue?8a83","webpack://agra/./app/javascript/users/sign-in-form.vue","webpack://agra/./app/javascript/components/inputs/password-field.vue","webpack://agra/./app/javascript/components/inputs/password-field.vue?5295","webpack://agra/./app/javascript/users/sign-in-form.vue?68c6","webpack://agra/./app/javascript/users/verify-mfa-token-modal.vue","webpack://agra/./app/javascript/users/verify-mfa-token-modal.vue?028b"],"sourcesContent":["<template>\n <button type=\"button\" class=\"btn btn-link\" @click=\"$emit('click')\">\n <slot />\n </button>\n</template>\n\n<script>\nexport default {\n emits: ['click']\n}\n</script>\n","import { render } from \"./link-button.vue?vue&type=template&id=bbab6e5a\"\nimport script from \"./link-button.vue?vue&type=script&lang=js\"\nexport * from \"./link-button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span class=\"check-success\">\n <transition name=\"fade\">\n <svg v-if=\"showSuccess\" width=\"20px\" height=\"20px\" viewBox=\"0 0 28 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <defs>\n <path id=\"path-1\" d=\"M9.73960768,19.5080736 L9.70568722,19.541994 L0.075,9.91130682 L2.40845238,7.57785444 L9.72453192,14.893934 L24.5556872,0.0627786822 L26.8891396,2.39623106 L9.75845238,19.5269183 L9.73960768,19.5080736 Z\" />\n </defs>\n <g id=\"Info\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Reference\" transform=\"translate(-104.000000, -1843.000000)\">\n <g id=\"Check_Blue\" transform=\"translate(103.000000, 1837.000000)\">\n <g id=\"Check\">\n <g id=\"Icon\" transform=\"translate(1.500000, 6.450000)\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlink:href=\"#path-1\" />\n </mask>\n <use id=\"Mask\" fill=\"#000000\" xlink:href=\"#path-1\" />\n <g id=\"Blue\" mask=\"url(#mask-2)\" fill=\"#0F91C2\">\n <g id=\"Rectangle-2\" transform=\"translate(-1.500000, -6.450000)\">\n <rect x=\"0\" y=\"0\" width=\"30\" height=\"30\" />\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n </transition>\n </span>\n</template>\n\n<script>\nexport default {\n data() {\n return {\n showSuccess: false\n }\n },\n\n methods: {\n toggle() {\n this.showSuccess = true\n setTimeout(() => {\n this.showSuccess = false\n }, 500)\n }\n }\n}\n</script>\n\n\n<style lang=\"scss\" scoped>\n .fade-leave-active {\n transition: opacity .5s;\n }\n .fade-enter-from, .fade-leave-to {\n opacity: 0;\n }\n .check-success {\n display: inline-block;\n width:20px;\n\n svg {\n display: inline-block;\n vertical-align: middle;\n }\n }\n</style>\n","import { render } from \"./check-success-inline.vue?vue&type=template&id=177d5e62&scoped=true\"\nimport script from \"./check-success-inline.vue?vue&type=script&lang=js\"\nexport * from \"./check-success-inline.vue?vue&type=script&lang=js\"\n\nimport \"./check-success-inline.vue?vue&type=style&index=0&id=177d5e62&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-177d5e62\"]])\n\nexport default __exports__","<template>\n <modal ref=\"modal\" :show-on-mount=\"true\" :click-outside-to-close=\"false\" headerless size=\"md\"\n modal-id=\"missing-info-modal\">\n <template #body>\n <form class=\"d-grid\">\n <p v-if=\"showMissingFieldsIntro\">\n {{ missingFieldsIntro }}\n </p>\n <p v-else-if=\"showDataProcessingConsent\">\n {{ dataProcessingConsentIntro }}\n </p>\n\n <component :is=\"componentForField(field)\" v-for=\"field of missingFields\"\n v-bind=\"propsForField(field)\" :key=\"field\" required entity-name=\"user\"\n :validation-errors=\"validationErrorsForField(field)\"\n @changed=\"(value) => fieldChanged(field, value)\" />\n\n <eu-data-processing-consent v-if=\"showDataProcessingConsent\" entity-name=\"user\"\n :label=\"euDataProcessingConsentData.label\"\n :show-label=\"showDataProcessingConsentLabelBeforeSubmit\"\n input-name=\"user[eu_data_processing_consent]\"\n :explicit-consent-required=\"euDataProcessingConsentData.explicitConsentRequired\"\n :validation-errors=\"validationErrors.euDataProcessingConsent\"\n @changed=\"(value) => fieldChanged('eu_data_processing_consent', value)\" />\n\n <submit-button :label=\"i18n.t('administrative.continue')\" :submit-in-progress=\"submitting\" class=\"mt-3\"\n @click=\"submit\" />\n\n <div v-if=\"showDataProcessingConsentLabelAfterSubmit\" class=\"small-text mt-2\"\n v-html=\"euDataProcessingConsentData.label\" />\n </form>\n </template>\n </modal>\n</template>\n\n<script>\nimport AdditionalField from '../components/inputs/additional-field'\nimport ajax from '../helpers/ajax'\nimport camelCase from 'lodash/camelCase'\nimport EuDataProcessingConsent from '../components/inputs/eu-data-processing-consent.vue'\nimport FirstNameField from '../components/inputs/first-name-field'\nimport LastNameField from '../components/inputs/last-name-field'\nimport Modal from '../components/modal'\nimport PhoneNumberField from '../components/inputs/phone-number-field'\nimport PostcodeField from '../components/inputs/postcode-field'\nimport SubmitButton from '../components/buttons/submit-button'\n\nconst DATA_PROCESSING_FIELD_NAME = 'eu_data_processing_consent'\n\nexport default {\n components: { EuDataProcessingConsent, Modal, SubmitButton },\n\n props: {\n additionalFieldConfigs: {\n type: Array,\n required: true\n },\n\n euDataProcessingConsentData: {\n type: Object,\n required: false\n },\n\n requiredFields: {\n type: Array,\n required: true\n },\n\n phoneNumberLabel: {\n type: String,\n required: true\n },\n\n postcodeLabel: {\n type: String,\n required: false\n }\n },\n\n emits: ['completed'],\n\n data() {\n const userData = {}\n this.requiredFields.map((field) => {\n userData[field] = ''\n })\n\n return {\n submitting: false,\n userData: userData,\n validationErrors: {}\n }\n },\n\n computed: {\n dataProcessingConsentIntro() {\n return this.i18n.t('member.account.missing_info_modal.intro_data_processing_consent')\n },\n\n missingFields() {\n return this.requiredFields.filter(f => f !== DATA_PROCESSING_FIELD_NAME)\n },\n\n missingFieldsIntro() {\n return this.i18n.t('member.account.missing_info_modal.intro_missing_fields')\n },\n\n showDataProcessingConsent() {\n return this.requiredFields.includes(DATA_PROCESSING_FIELD_NAME)\n },\n\n showDataProcessingConsentLabelAfterSubmit() {\n if (!this.showDataProcessingConsent) {\n return false\n }\n\n if (this.euDataProcessingConsentData.explicitConsentRequired) {\n return false\n } else {\n return this.euDataProcessingConsentData.messagePosition === 'after_submit'\n }\n },\n\n showDataProcessingConsentLabelBeforeSubmit() {\n if (!this.showDataProcessingConsent) {\n return false\n }\n\n if (this.euDataProcessingConsentData.explicitConsentRequired) {\n return true\n } else {\n return this.euDataProcessingConsentData.messagePosition === 'before_submit'\n }\n },\n\n showMissingFieldsIntro() {\n return this.missingFields.length > 0\n }\n },\n\n methods: {\n componentForField(fieldName) {\n switch (fieldName) {\n case 'first_name':\n return FirstNameField\n case 'last_name':\n return LastNameField\n case 'phone_number':\n return PhoneNumberField\n case 'postcode':\n return PostcodeField\n default:\n return AdditionalField\n }\n },\n\n fieldChanged(fieldName, newValue) {\n this.userData[fieldName] = newValue\n },\n\n propsForField(fieldName) {\n switch (fieldName) {\n case 'first_name':\n return {}\n case 'last_name':\n return {}\n case 'phone_number':\n return {label: this.phoneNumberLabel}\n case 'postcode':\n return {label: this.postcodeLabel}\n default: {\n const fieldConfig = this.additionalFieldConfigs.find(config => config.name === fieldName)\n const { name, ...rest } = fieldConfig\n return {\n fieldName: name,\n ...rest\n }\n }}\n },\n\n submit() {\n this.submitting = true\n\n ajax.patch({\n url: '/account/missing_info',\n data: {\n user: this.userData\n },\n successHandler: ({ redirectUrl }) => {\n this.$emit('completed', { redirectUrl })\n },\n errorHandler: ({ info }) => {\n this.validationErrors = info.errors\n }\n }).then(() => {\n this.submitting = false\n })\n },\n\n validationErrorsForField(fieldName) {\n return this.validationErrors[camelCase(fieldName)]\n }\n }\n}\n</script>\n","import { render } from \"./missing-info-modal.vue?vue&type=template&id=7a85374e\"\nimport script from \"./missing-info-modal.vue?vue&type=script&lang=js\"\nexport * from \"./missing-info-modal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <form class=\"d-grid gap-3 mt-5\">\n <template v-if=\"errorMessage\">\n <p v-if=\"errorMessageIsHtml\" class=\"text-danger mb-4\" v-html=\"errorMessage\" />\n <p v-else class=\"text-danger mb-4\">\n {{ errorMessage }}\n </p>\n </template>\n\n <text-input ref=\"emailField\" :label=\"i18n.t('activerecord.attributes.user.email')\" :value=\"email\"\n input-name=\"user[email]\" input-id=\"user-email-field\" input-type=\"email\" autocomplete=\"email\"\n :required=\"true\" @changed=\"emailChanged\" />\n\n <password-field input-name=\"user[password]\" :value=\"password\" :required=\"true\" @input=\"passwordChanged\" />\n\n <checkbox-input input-name=\"user[remember_me]\" :initial-value=\"rememberMe\" checkbox-id=\"user-remember-me\"\n :label=\"i18n.t('member.account.authentication_modal.remember_me')\"\n @change=\"rememberMeChanged\" />\n\n <submit-button :label=\"submitButtonText\" class=\"submit-button\" @click=\"submit\" />\n\n <a v-if=\"enableForgotPassword\" class=\"text-center mt-2 mb-4\" :href=\"forgotPasswordUrl\">\n {{ i18n.t('users.shared.login.forgot_password') }}\n </a>\n </form>\n</template>\n\n<script>\nimport ajax from '../helpers/ajax'\nimport CheckboxInput from '../components/inputs/checkbox-input'\nimport PasswordField from '../components/inputs/password-field.vue'\nimport SubmitButton from '../components/buttons/submit-button'\nimport TextInput from '../components/inputs/text-input'\n\nexport default {\n components: { CheckboxInput, PasswordField , SubmitButton, TextInput},\n\n props: {\n enableForgotPassword: {\n type: Boolean,\n required: false,\n default: true\n },\n\n forgotPasswordUrl: {\n type: String,\n required: false\n },\n\n organisationId: {\n type: Number,\n required: true\n },\n\n signInPath: {\n type: String,\n required: true\n },\n\n submitButtonText: {\n type: String,\n required: true\n }\n },\n\n emits: [\n 'authenticated',\n 'authenticity-token-updated',\n 'mfa-setup-required',\n 'mfa-token-required',\n 'missing-info-required'\n ],\n\n data() {\n return {\n email: null,\n errorMessage: null,\n errorMessageIsHtml: false,\n password: null,\n rememberMe: false\n }\n },\n\n mounted() {\n this.$refs.emailField.focus()\n },\n\n methods: {\n emailChanged(value) {\n this.email = value\n },\n\n passwordChanged(value) {\n this.password = value\n },\n\n rememberMeChanged(value) {\n this.rememberMe = value\n },\n\n setErrorMessage(error) {\n switch (typeof error) {\n case 'string':\n this.errorMessage = error\n this.errorMessageIsHtml = false\n break\n case 'object':\n this.errorMessage = error.message\n this.errorMessageIsHtml = error.html_safe\n break\n default:\n throw 'invalid error message'\n }\n },\n\n submit() {\n ajax.post({\n url: this.signInPath,\n data: {\n user: {\n email: this.email,\n organisation_id: this.organisationId,\n password: this.password,\n remember_me: this.rememberMe\n }\n },\n throwOnFailure: true,\n successHandler: (response) => {\n if (response.success) {\n this.errorMessage = null\n\n if (response.authenticityToken) {\n this.$emit('authenticity-token-updated', response.authenticityToken)\n }\n\n if (response.requiresMfaSetup) {\n this.$emit('mfa-setup-required', {\n enableMfaPath: response.enableMfaPath\n })\n }\n else if (response.requiresMfaToken) {\n this.$emit('mfa-token-required', response.mfaParameters)\n } else if (response.requiresMissingInfo) {\n this.$emit('missing-info-required', {\n requiredFields: response.requiredFields,\n additionalFieldConfigs: response.additionalFieldConfigs,\n euDataProcessingConsentData: response.euDataProcessingConsentData,\n phoneNumberLabel: response.phoneNumberLabel,\n postcodeLabel: response.postcodeLabel\n })\n } else {\n this.$emit('authenticated', {\n afterSignInRedirect: response.afterSignInRedirect,\n userMenu: response.userMenu\n })\n }\n }\n }\n }).catch(({ error }) => {\n // We'll get here if the sign-in attempt received a non-200 (e.g. 401) response.\n this.setErrorMessage(error)\n\n this.email = ''\n this.password = ''\n })\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"~common_styles/breakpoints\" as breakpoints;\n\n::v-deep(input) {\n &[type=text], &[type=password], &[type=email] {\n height: 58px;\n\n @include breakpoints.screen-mobile-only {\n height: 50px;\n }\n }\n}\n\n.submit-button {\n text-transform: none;\n height: 56px;\n border-radius: 8px;\n\n @include breakpoints.screen-mobile-only {\n height: 50px;\n }\n}\n</style>\n","<template>\n <div :class=\"{ 'is-invalid': showValidationError }\">\n <label :for=\"inputId\">\n <required v-if=\"required\" />\n {{ i18n.t('activerecord.attributes.user.password') }}\n </label>\n <input :id=\"inputId\" type=\"password\" :name=\"inputName\" autocomplete=\"current-password\"\n :class=\"['form-control form-control-lg', {'is-invalid': showValidationError}]\" :value=\"value\" @input=\"setValue\">\n <validation-errors v-if=\"showValidationError\" :errors=\"validationErrors\" />\n </div>\n</template>\n\n<script>\nimport Required from '../required'\nimport ValidationErrors from './validation-errors'\n\nexport default {\n components: { Required, ValidationErrors },\n\n props: {\n inputId: {\n type: String,\n required: false,\n default: 'user_password'\n },\n inputName: {\n type: String,\n required: false,\n default: 'user[password]'\n },\n required: {\n type: Boolean,\n required: false,\n default: true\n },\n validationErrors: {\n type: Array,\n required: false\n },\n value: {\n type: String,\n required: false\n }\n },\n\n emits: ['input'],\n\n computed: {\n showValidationError() {\n return this.validationErrors && this.validationErrors.length > 0\n }\n },\n\n methods: {\n setValue(e) {\n this.$emit('input', e.target.value)\n }\n }\n}\n</script>\n","import { render } from \"./password-field.vue?vue&type=template&id=38e1a2ec\"\nimport script from \"./password-field.vue?vue&type=script&lang=js\"\nexport * from \"./password-field.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./sign-in-form.vue?vue&type=template&id=daf96bde&scoped=true\"\nimport script from \"./sign-in-form.vue?vue&type=script&lang=js\"\nexport * from \"./sign-in-form.vue?vue&type=script&lang=js\"\n\nimport \"./sign-in-form.vue?vue&type=style&index=0&id=daf96bde&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-daf96bde\"]])\n\nexport default __exports__","<template>\n <modal ref=\"modal\" :show-on-mount=\"true\" :click-outside-to-close=\"false\" headerless size=\"md\"\n modal-id=\"verify-mfa-token-modal\" @visibility-changed=\"visibilityChanged\">\n <template #body>\n <form>\n <h2 id=\"mfa-token-heading\" class=\"mt-3 title\">\n {{ i18n.t('devise.submit_token_title') }}\n </h2>\n\n <p v-if=\"errorMessage\" class=\"text-danger mb-4\" v-html=\"errorMessage\" />\n\n <template v-if=\"!hideInputs\">\n <div class=\"d-grid\">\n <div>\n <input id=\"mfa-token\" ref=\"tokenField\" v-model=\"token\" name=\"token\"\n autocomplete=\"one-time-code\" inputmode=\"numeric\" pattern=\"[0-9]*\"\n aria-labelledby=\"mfa-token-heading\" class=\"form-control form-control-lg\">\n\n <small class=\"form-text text-muted\">\n {{ tokenHelpText }}\n </small>\n </div>\n\n <checkbox-input checkbox-id=\"mfa-remember-device-checkbox\" input-name=\"remember_device\"\n :label=\"i18n.t('devise.remember_device')\" @change=\"updateRememberDevice\" />\n\n <submit-button :label=\"i18n.t('devise.submit_token')\" :submit-in-progress=\"submitting\"\n class=\"btn-lg modal-button my-3\" @click=\"submit\" />\n\n <div v-if=\"supportsSms\" class=\"d-flex justify-content-center mt-2 mb-4\">\n <link-button @click=\"requestSms\">\n {{ i18n.t('devise.request_sms') }}\n </link-button>\n <success-check ref=\"requestSmsSuccessCheck\" />\n </div>\n\n <div v-if=\"supportsRecoveryCodes\" class=\"d-flex justify-content-center mt-2 mb-4\">\n <a :href=\"useRecoveryCodePath\">{{ i18n.t('member.account.verify_mfa_token.use_recovery_code') }}</a>\n </div>\n </div>\n </template>\n </form>\n </template>\n </modal>\n</template>\n\n<script>\nimport ajax from '../helpers/ajax'\nimport CheckboxInput from '../components/inputs/checkbox-input'\nimport LinkButton from '../components/buttons/link-button'\nimport Modal from '../components/modal'\nimport SubmitButton from '@/components/buttons/submit-button'\nimport SuccessCheck from '../components/check-success-inline'\n\nconst REQUEST_SMS_PATH = '/users/request-sms'\n\nexport default {\n components: { CheckboxInput, LinkButton, Modal, SubmitButton, SuccessCheck },\n\n props: {\n // A URL we can poll to see if the user has verified via an alternative means.\n // Only supported by some MFA strategies.\n statusCheckPath: {\n type: String,\n required: false,\n default: null\n },\n supportsRecoveryCodes: {\n type: Boolean,\n default: false\n },\n supportsSms: {\n type: Boolean,\n default: false\n },\n tokenHelpText: {\n type: String,\n required: true\n },\n userId: {\n type: Number,\n required: true\n },\n useRecoveryCodePath: {\n type: String,\n required: false\n },\n verifyTokenPath: {\n type: String,\n required: true\n }\n },\n\n emits: ['authenticated', 'authenticity-token-updated', 'missing-info-required'],\n\n data() {\n return {\n errorMessage: null,\n hideInputs: false,\n statusCheckPollingIntervalId: null,\n submitting: false,\n rememberDevice: false,\n token: null\n }\n },\n\n mounted() {\n if (this.statusCheckPath) {\n this.statusCheckPollingIntervalId = setInterval(() => { this.pollStatus() }, 3000)\n }\n },\n\n methods: {\n handleSuccess(response) {\n this.$refs.modal.close()\n\n if (response.authenticityToken) {\n this.$emit('authenticity-token-updated', response.authenticityToken)\n }\n\n if (response.requiresMissingInfo) {\n this.$emit('missing-info-required', {\n requiredFields: response.requiredFields,\n additionalFieldConfigs: response.additionalFieldConfigs,\n euDataProcessingConsentData: response.euDataProcessingConsentData,\n phoneNumberLabel: response.phoneNumberLabel,\n postcodeLabel: response.postcodeLabel\n })\n } else {\n this.$emit('authenticated', {\n afterSignInRedirect: response.afterSignInRedirect,\n userMenu: response.userMenu\n })\n }\n },\n\n pollStatus() {\n fetch(this.statusCheckPath, {\n method: 'GET',\n headers: {\n 'Accept': 'application/json'\n }\n }).then((response) => {\n if (response.status !== 202) {\n // 202 means keep polling, so if the status is anything else, stop polling.\n clearInterval(this.statusCheckPollingIntervalId)\n }\n\n if (response.status === 200) {\n // Success! Handle the response the same way we would success from a button click.\n response.json().then((response) => {\n this.handleSuccess(response)\n })\n }\n })\n },\n\n requestSms() {\n ajax.post({\n url: REQUEST_SMS_PATH,\n successHandler: () => {\n this.$refs.requestSmsSuccessCheck.toggle()\n }\n })\n },\n\n submit() {\n this.submitting = true\n\n ajax.post({\n url: this.verifyTokenPath,\n data: {\n token: this.token,\n remember_device: this.rememberDevice,\n user_id: this.userId\n },\n successHandler: (response) => {\n this.handleSuccess(response)\n },\n errorHandler:({ message, info }) => { \n this.errorMessage = message\n this.token = null\n\n if (info.accountLocked) {\n this.hideInputs = true\n }\n }\n }).then(() => {\n this.submitting = false\n })\n },\n\n updateRememberDevice(value) {\n this.rememberDevice = value\n },\n\n visibilityChanged(newVisibility) {\n if (newVisibility === 'shown') {\n this.$refs.tokenField.focus()\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"~common_styles/breakpoints\" as breakpoints;\n\ninput {\n height: 58px;\n\n @include breakpoints.screen-mobile-only {\n height: 50px;\n }\n}\n\n.modal-button {\n text-transform: none;\n font-size: 1rem;\n padding: 1rem;\n}\n</style>\n","import { render } from \"./verify-mfa-token-modal.vue?vue&type=template&id=047f56d2&scoped=true\"\nimport script from \"./verify-mfa-token-modal.vue?vue&type=script&lang=js\"\nexport * from \"./verify-mfa-token-modal.vue?vue&type=script&lang=js\"\n\nimport \"./verify-mfa-token-modal.vue?vue&type=style&index=0&id=047f56d2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-047f56d2\"]])\n\nexport default __exports__"],"names":["emits","_createElementBlock","type","class","onClick","_cache","$event","_ctx","$emit","_renderSlot","$slots","key","width","height","viewBox","version","xmlns","data","showSuccess","methods","toggle","this","setTimeout","_hoisted_1","_createVNode","_Transition","name","default","_withCtx","$data","_hoisted_2","_createElementVNode","id","d","_createTextVNode","stroke","fill","transform","mask","x","y","_createCommentVNode","_","DATA_PROCESSING_FIELD_NAME","components","EuDataProcessingConsent","Modal","SubmitButton","props","additionalFieldConfigs","Array","required","euDataProcessingConsentData","Object","requiredFields","phoneNumberLabel","String","postcodeLabel","userData","map","field","submitting","validationErrors","computed","dataProcessingConsentIntro","i18n","t","missingFields","filter","f","missingFieldsIntro","showDataProcessingConsent","includes","showDataProcessingConsentLabelAfterSubmit","explicitConsentRequired","messagePosition","showDataProcessingConsentLabelBeforeSubmit","showMissingFieldsIntro","length","componentForField","fieldName","FirstNameField","LastNameField","PhoneNumberField","PostcodeField","AdditionalField","fieldChanged","newValue","propsForField","label","fieldConfig","find","config","rest","submit","ajax","patch","url","user","successHandler","redirectUrl","errorHandler","info","errors","then","validationErrorsForField","camelCase","_createBlock","_component_modal","ref","headerless","size","body","$options","_toDisplayString","_hoisted_3","_Fragment","_renderList","_resolveDynamicComponent","_mergeProps","ref_for","onChanged","value","_component_eu_data_processing_consent","$props","euDataProcessingConsent","_component_submit_button","innerHTML","_hoisted_4","Required","ValidationErrors","inputId","inputName","Boolean","showValidationError","setValue","e","target","_normalizeClass","for","_component_required","autocomplete","onInput","args","_component_validation_errors","CheckboxInput","PasswordField","TextInput","enableForgotPassword","forgotPasswordUrl","organisationId","Number","signInPath","submitButtonText","email","errorMessage","errorMessageIsHtml","password","rememberMe","mounted","$refs","emailField","focus","emailChanged","passwordChanged","rememberMeChanged","setErrorMessage","error","message","html_safe","post","organisation_id","remember_me","throwOnFailure","response","success","authenticityToken","requiresMfaSetup","enableMfaPath","requiresMfaToken","mfaParameters","requiresMissingInfo","afterSignInRedirect","userMenu","catch","_component_text_input","_component_password_field","_component_checkbox_input","onChange","href","LinkButton","SuccessCheck","statusCheckPath","supportsRecoveryCodes","supportsSms","tokenHelpText","userId","useRecoveryCodePath","verifyTokenPath","hideInputs","statusCheckPollingIntervalId","rememberDevice","token","setInterval","pollStatus","handleSuccess","modal","close","fetch","method","headers","status","clearInterval","json","requestSms","requestSmsSuccessCheck","remember_device","user_id","accountLocked","updateRememberDevice","visibilityChanged","newVisibility","tokenField","onVisibilityChanged","inputmode","pattern","_hoisted_5","_component_link_button","_component_success_check","_hoisted_6","_hoisted_7"],"sourceRoot":""}