{"version":3,"file":"js/2339-5f55d0d0d4b9ef9e14fc.chunk.js","mappings":"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","sources":["webpack://agra/./app/javascript/components/check-success-inline.vue","webpack://agra/./app/javascript/components/check-success-inline.vue?8b39","webpack://agra/./app/javascript/components/buttons/link-button.vue","webpack://agra/./app/javascript/components/buttons/link-button.vue?a3b9","webpack://agra/./app/javascript/users/verify-mfa-token-modal.vue","webpack://agra/./app/javascript/users/verify-mfa-token-modal.vue?028b","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"],"sourcesContent":["<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  <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  <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 gap-3\">\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\" @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=2886a992&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=2886a992&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-2886a992\"]])\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__"],"names":["class","key","width","height","viewBox","version","xmlns","data","showSuccess","methods","toggle","this","setTimeout","_createElementBlock","_hoisted_1","_createVNode","_Transition","name","default","_withCtx","$data","_hoisted_2","_cache","_createElementVNode","id","d","_createTextVNode","stroke","fill","transform","mask","x","y","_createCommentVNode","_","emits","type","onClick","$event","_ctx","$emit","_renderSlot","$slots","components","CheckboxInput","LinkButton","Modal","SubmitButton","SuccessCheck","props","statusCheckPath","String","required","supportsRecoveryCodes","Boolean","supportsSms","tokenHelpText","userId","Number","useRecoveryCodePath","verifyTokenPath","errorMessage","hideInputs","statusCheckPollingIntervalId","submitting","rememberDevice","token","mounted","setInterval","pollStatus","handleSuccess","response","$refs","modal","close","authenticityToken","requiresMissingInfo","requiredFields","additionalFieldConfigs","euDataProcessingConsentData","phoneNumberLabel","postcodeLabel","afterSignInRedirect","userMenu","fetch","method","headers","then","status","clearInterval","json","requestSms","ajax","post","url","successHandler","requestSmsSuccessCheck","submit","remember_device","user_id","errorHandler","message","info","accountLocked","updateRememberDevice","value","visibilityChanged","newVisibility","tokenField","focus","_createBlock","_component_modal","ref","headerless","size","onVisibilityChanged","$options","body","_toDisplayString","i18n","t","innerHTML","_hoisted_3","autocomplete","inputmode","pattern","_hoisted_4","$props","_component_checkbox_input","label","onChange","_component_submit_button","_hoisted_5","_component_link_button","_component_success_check","_hoisted_6","href","_hoisted_7","DATA_PROCESSING_FIELD_NAME","EuDataProcessingConsent","Array","Object","userData","map","field","validationErrors","computed","dataProcessingConsentIntro","missingFields","filter","f","missingFieldsIntro","showDataProcessingConsent","includes","showDataProcessingConsentLabelAfterSubmit","explicitConsentRequired","messagePosition","showDataProcessingConsentLabelBeforeSubmit","showMissingFieldsIntro","length","componentForField","fieldName","FirstNameField","LastNameField","PhoneNumberField","PostcodeField","AdditionalField","fieldChanged","newValue","propsForField","fieldConfig","find","config","rest","patch","user","redirectUrl","errors","validationErrorsForField","camelCase","_Fragment","_renderList","_resolveDynamicComponent","_mergeProps","ref_for","onChanged","_component_eu_data_processing_consent","euDataProcessingConsent","Required","ValidationErrors","inputId","inputName","showValidationError","setValue","e","target","_normalizeClass","for","_component_required","onInput","args","_component_validation_errors","PasswordField","TextInput","enableForgotPassword","forgotPasswordUrl","organisationId","signInPath","submitButtonText","email","errorMessageIsHtml","password","rememberMe","emailField","emailChanged","passwordChanged","rememberMeChanged","setErrorMessage","error","html_safe","organisation_id","remember_me","throwOnFailure","success","requiresMfaSetup","enableMfaPath","requiresMfaToken","mfaParameters","catch","_component_text_input","_component_password_field"],"sourceRoot":""}