{"version":3,"file":"js/280.ece5d725.js","mappings":"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","sources":["webpack://vyhub-central-web/../../../src/components/VAlert/VAlert.ts","webpack://vyhub-central-web/../../../src/components/VForm/VForm.ts","webpack://vyhub-central-web/./node_modules/vue-recaptcha/dist/vue-recaptcha.es.js","webpack://vyhub-central-web/./src/components/LoginRegister.vue?98d7","webpack://vyhub-central-web/src/components/LoginRegister.vue","webpack://vyhub-central-web/./src/components/LoginRegister.vue?3f09","webpack://vyhub-central-web/./src/components/LoginRegister.vue"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n  VSheet,\n  Toggleable,\n  Transitionable\n).extend({\n  name: 'v-alert',\n\n  props: {\n    border: {\n      type: String,\n      validator (val: string) {\n        return [\n          'top',\n          'right',\n          'bottom',\n          'left',\n        ].includes(val)\n      },\n    },\n    closeLabel: {\n      type: String,\n      default: '$vuetify.close',\n    },\n    coloredBorder: Boolean,\n    dense: Boolean,\n    dismissible: Boolean,\n    closeIcon: {\n      type: String,\n      default: '$cancel',\n    },\n    icon: {\n      default: '',\n      type: [Boolean, String],\n      validator (val: boolean | string) {\n        return typeof val === 'string' || val === false\n      },\n    },\n    outlined: Boolean,\n    prominent: Boolean,\n    text: Boolean,\n    type: {\n      type: String,\n      validator (val: string) {\n        return [\n          'info',\n          'error',\n          'success',\n          'warning',\n        ].includes(val)\n      },\n    },\n    value: {\n      type: Boolean,\n      default: true,\n    },\n  },\n\n  computed: {\n    __cachedBorder (): VNode | null {\n      if (!this.border) return null\n\n      let data: VNodeData = {\n        staticClass: 'v-alert__border',\n        class: {\n          [`v-alert__border--${this.border}`]: true,\n        },\n      }\n\n      if (this.coloredBorder) {\n        data = this.setBackgroundColor(this.computedColor, data)\n        data.class['v-alert__border--has-color'] = true\n      }\n\n      return this.$createElement('div', data)\n    },\n    __cachedDismissible (): VNode | null {\n      if (!this.dismissible) return null\n\n      const color = this.iconColor\n\n      return this.$createElement(VBtn, {\n        staticClass: 'v-alert__dismissible',\n        props: {\n          color,\n          icon: true,\n          small: true,\n        },\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.closeLabel),\n        },\n        on: {\n          click: () => (this.isActive = false),\n        },\n      }, [\n        this.$createElement(VIcon, {\n          props: { color },\n        }, this.closeIcon),\n      ])\n    },\n    __cachedIcon (): VNode | null {\n      if (!this.computedIcon) return null\n\n      return this.$createElement(VIcon, {\n        staticClass: 'v-alert__icon',\n        props: { color: this.iconColor },\n      }, this.computedIcon)\n    },\n    classes (): object {\n      const classes: Record<string, boolean> = {\n        ...VSheet.options.computed.classes.call(this),\n        'v-alert--border': Boolean(this.border),\n        'v-alert--dense': this.dense,\n        'v-alert--outlined': this.outlined,\n        'v-alert--prominent': this.prominent,\n        'v-alert--text': this.text,\n      }\n\n      if (this.border) {\n        classes[`v-alert--border-${this.border}`] = true\n      }\n\n      return classes\n    },\n    computedColor (): string {\n      return this.color || this.type\n    },\n    computedIcon (): string | boolean {\n      if (this.icon === false) return false\n      if (typeof this.icon === 'string' && this.icon) return this.icon\n      if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n      return `$${this.type}`\n    },\n    hasColoredIcon (): boolean {\n      return (\n        this.hasText ||\n        (Boolean(this.border) && this.coloredBorder)\n      )\n    },\n    hasText (): boolean {\n      return this.text || this.outlined\n    },\n    iconColor (): string | undefined {\n      return this.hasColoredIcon ? this.computedColor : undefined\n    },\n    isDark (): boolean {\n      if (\n        this.type &&\n        !this.coloredBorder &&\n        !this.outlined\n      ) return true\n\n      return Themeable.options.computed.isDark.call(this)\n    },\n  },\n\n  created () {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('outline')) {\n      breaking('outline', 'outlined', this)\n    }\n  },\n\n  methods: {\n    genWrapper (): VNode {\n      const children = [\n        this.$slots.prepend || this.__cachedIcon,\n        this.genContent(),\n        this.__cachedBorder,\n        this.$slots.append,\n        this.$scopedSlots.close\n          ? this.$scopedSlots.close({ toggle: this.toggle })\n          : this.__cachedDismissible,\n      ]\n\n      const data: VNodeData = {\n        staticClass: 'v-alert__wrapper',\n      }\n\n      return this.$createElement('div', data, children)\n    },\n    genContent (): VNode {\n      return this.$createElement('div', {\n        staticClass: 'v-alert__content',\n      }, this.$slots.default)\n    },\n    genAlert (): VNode {\n      let data: VNodeData = {\n        staticClass: 'v-alert',\n        attrs: {\n          role: 'alert',\n        },\n        on: this.listeners$,\n        class: this.classes,\n        style: this.styles,\n        directives: [{\n          name: 'show',\n          value: this.isActive,\n        }],\n      }\n\n      if (!this.coloredBorder) {\n        const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n        data = setColor(this.computedColor, data)\n      }\n\n      return this.$createElement('div', data, [this.genWrapper()])\n    },\n    /** @public */\n    toggle () {\n      this.isActive = !this.isActive\n    },\n  },\n\n  render (h): VNode {\n    const render = this.genAlert()\n\n    if (!this.transition) return render\n\n    return h('transition', {\n      props: {\n        name: this.transition,\n        origin: this.origin,\n        mode: this.mode,\n      },\n    }, [render])\n  },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n  _uid: number\n  valid: () => void\n  shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n  BindsAttrs,\n  RegistrableProvide('form')\n  /* @vue/component */\n).extend({\n  name: 'v-form',\n\n  provide (): object {\n    return { form: this }\n  },\n\n  inheritAttrs: false,\n\n  props: {\n    disabled: Boolean,\n    lazyValidation: Boolean,\n    readonly: Boolean,\n    value: Boolean,\n  },\n\n  data: () => ({\n    inputs: [] as VInputInstance[],\n    watchers: [] as Watchers[],\n    errorBag: {} as ErrorBag,\n  }),\n\n  watch: {\n    errorBag: {\n      handler (val) {\n        const errors = Object.values(val).includes(true)\n\n        this.$emit('input', !errors)\n      },\n      deep: true,\n      immediate: true,\n    },\n  },\n\n  methods: {\n    watchInput (input: any): Watchers {\n      const watcher = (input: any): (() => void) => {\n        return input.$watch('hasError', (val: boolean) => {\n          this.$set(this.errorBag, input._uid, val)\n        }, { immediate: true })\n      }\n\n      const watchers: Watchers = {\n        _uid: input._uid,\n        valid: () => {},\n        shouldValidate: () => {},\n      }\n\n      if (this.lazyValidation) {\n        // Only start watching inputs if we need to\n        watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n          if (!val) return\n\n          // Only watch if we're not already doing it\n          if (this.errorBag.hasOwnProperty(input._uid)) return\n\n          watchers.valid = watcher(input)\n        })\n      } else {\n        watchers.valid = watcher(input)\n      }\n\n      return watchers\n    },\n    /** @public */\n    validate (): boolean {\n      return this.inputs.filter(input => !input.validate(true)).length === 0\n    },\n    /** @public */\n    reset (): void {\n      this.inputs.forEach(input => input.reset())\n      this.resetErrorBag()\n    },\n    resetErrorBag () {\n      if (this.lazyValidation) {\n        // Account for timeout in validatable\n        setTimeout(() => {\n          this.errorBag = {}\n        }, 0)\n      }\n    },\n    /** @public */\n    resetValidation () {\n      this.inputs.forEach(input => input.resetValidation())\n      this.resetErrorBag()\n    },\n    register (input: VInputInstance) {\n      this.inputs.push(input)\n      this.watchers.push(this.watchInput(input))\n    },\n    unregister (input: VInputInstance) {\n      const found = this.inputs.find(i => i._uid === input._uid)\n\n      if (!found) return\n\n      const unwatch = this.watchers.find(i => i._uid === found._uid)\n      if (unwatch) {\n        unwatch.valid()\n        unwatch.shouldValidate()\n      }\n\n      this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n      this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n      this.$delete(this.errorBag, found._uid)\n    },\n  },\n\n  render (h): VNode {\n    return h('form', {\n      staticClass: 'v-form',\n      attrs: {\n        novalidate: true,\n        ...this.attrs$,\n      },\n      on: {\n        submit: (e: Event) => this.$emit('submit', e),\n      },\n    }, this.$slots.default)\n  },\n})\n","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar defer = function defer() {\n  var state = false; // Resolved or not\n\n  var callbacks = [];\n\n  var resolve = function resolve(val) {\n    if (state) {\n      return;\n    }\n\n    state = true;\n\n    for (var i = 0, len = callbacks.length; i < len; i++) {\n      callbacks[i](val);\n    }\n  };\n\n  var then = function then(cb) {\n    if (!state) {\n      callbacks.push(cb);\n      return;\n    }\n\n    cb();\n  };\n\n  var deferred = {\n    resolved: function resolved() {\n      return state;\n    },\n    resolve: resolve,\n    promise: {\n      then: then\n    }\n  };\n  return deferred;\n};\n\nvar ownProp = Object.prototype.hasOwnProperty;\nfunction createRecaptcha() {\n  var deferred = defer();\n  return {\n    notify: function notify() {\n      deferred.resolve();\n    },\n    wait: function wait() {\n      return deferred.promise;\n    },\n    render: function render(ele, options, cb) {\n      this.wait().then(function () {\n        cb(window.grecaptcha.render(ele, options));\n      });\n    },\n    reset: function reset(widgetId) {\n      if (typeof widgetId === 'undefined') {\n        return;\n      }\n\n      this.assertLoaded();\n      this.wait().then(function () {\n        return window.grecaptcha.reset(widgetId);\n      });\n    },\n    execute: function execute(widgetId) {\n      if (typeof widgetId === 'undefined') {\n        return;\n      }\n\n      this.assertLoaded();\n      this.wait().then(function () {\n        return window.grecaptcha.execute(widgetId);\n      });\n    },\n    checkRecaptchaLoad: function checkRecaptchaLoad() {\n      if (ownProp.call(window, 'grecaptcha') && ownProp.call(window.grecaptcha, 'render')) {\n        this.notify();\n      }\n    },\n    assertLoaded: function assertLoaded() {\n      if (!deferred.resolved()) {\n        throw new Error('ReCAPTCHA has not been loaded');\n      }\n    }\n  };\n}\nvar recaptcha = createRecaptcha();\n\nif (typeof window !== 'undefined') {\n  window.vueRecaptchaApiLoaded = recaptcha.notify;\n}\n\nvar VueRecaptcha = {\n  name: 'VueRecaptcha',\n  props: {\n    sitekey: {\n      type: String,\n      required: true\n    },\n    theme: {\n      type: String\n    },\n    badge: {\n      type: String\n    },\n    type: {\n      type: String\n    },\n    size: {\n      type: String\n    },\n    tabindex: {\n      type: String\n    },\n    loadRecaptchaScript: {\n      type: Boolean,\n      \"default\": false\n    },\n    recaptchaScriptId: {\n      type: String,\n      \"default\": '__RECAPTCHA_SCRIPT'\n    },\n    recaptchaHost: {\n      type: String,\n      \"default\": 'www.google.com'\n    },\n    language: {\n      type: String,\n      \"default\": ''\n    }\n  },\n  beforeMount: function beforeMount() {\n    if (this.loadRecaptchaScript) {\n      if (!document.getElementById(this.recaptchaScriptId)) {\n        // Note: vueRecaptchaApiLoaded load callback name is per the latest documentation\n        var script = document.createElement('script');\n        script.id = this.recaptchaScriptId;\n        script.src = \"https://\" + this.recaptchaHost + \"/recaptcha/api.js?onload=vueRecaptchaApiLoaded&render=explicit&hl=\" + this.language;\n        script.async = true;\n        script.defer = true;\n        document.head.appendChild(script);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    recaptcha.checkRecaptchaLoad();\n\n    var opts = _extends({}, this.$props, {\n      callback: this.emitVerify,\n      'expired-callback': this.emitExpired,\n      'error-callback': this.emitError\n    });\n\n    var container = this.$slots[\"default\"] ? this.$el.children[0] : this.$el;\n    recaptcha.render(container, opts, function (id) {\n      _this.$widgetId = id;\n\n      _this.$emit('render', id);\n    });\n  },\n  methods: {\n    reset: function reset() {\n      recaptcha.reset(this.$widgetId);\n    },\n    execute: function execute() {\n      recaptcha.execute(this.$widgetId);\n    },\n    emitVerify: function emitVerify(response) {\n      this.$emit('verify', response);\n    },\n    emitExpired: function emitExpired() {\n      this.$emit('expired');\n    },\n    emitError: function emitError() {\n      this.$emit('error');\n    }\n  },\n  render: function render(h) {\n    return h('div', {}, this.$slots[\"default\"]);\n  }\n};\n\nexport default VueRecaptcha;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"text-center\"},[(!_vm.register)?_c('h1',{staticClass:\"text-h3\"},[_vm._v(_vm._s(_vm.$t('_loginRegister.welcomeBack')))]):_c('h1',{staticClass:\"text-h3\"},[_vm._v(_vm._s(_vm.$t('_loginRegister.welcome')))]),(!_vm.register)?_c('div',{staticClass:\"d-flex mt-1\"},[_c('v-spacer'),_c('p',[_vm._v(_vm._s(_vm.$t('_loginRegister.noAccount')))]),_c('a',{staticClass:\"ml-1\",on:{\"click\":function($event){_vm.register=true; _vm.emailConfirmationButtonEnabled=true}}},[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.register'))+\" \")]),_c('v-spacer')],1):_c('div',{staticClass:\"d-flex mt-1\"},[_c('v-spacer'),_c('p',[_vm._v(_vm._s(_vm.$t('_loginRegister.alreadyHaveAccount')))]),_c('a',{staticClass:\"ml-1\",on:{\"click\":function($event){_vm.register=false; _vm.emailConfirmationButtonEnabled=false}}},[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.login'))+\" \")]),_c('v-spacer')],1)]),(_vm.errorMessage)?_c('v-alert',{staticClass:\"mt-3 mb-7\",attrs:{\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e(),_c('v-form',{ref:\"form\",staticClass:\"mt-3\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submitForm.apply(null, arguments)}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{ref:\"form\",attrs:{\"type\":\"email\",\"label\":_vm.$t('_form.login.email'),\"rules\":_vm.rules.email,\"validate-on-blur\":\"\",\"data-cy\":\"email-input\",\"outlined\":\"\"},model:{value:(_vm.model.email),callback:function ($$v) {_vm.$set(_vm.model, \"email\", $$v)},expression:\"model.email\"}}),(_vm.register)?_c('v-text-field',{attrs:{\"outlined\":\"\",\"validate-on-blur\":_vm.model.email_confirmation !== '     ',\"label\":_vm.$t('_form.login.emailConfirmation'),\"rules\":_vm.rules.mailConfirmation},on:{\"focus\":_vm.removeSpaces,\"click\":_vm.removeSpaces},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [(_vm.register)?_c('v-btn',{staticClass:\"darken-3\",staticStyle:{\"margin-top\":\"-5px\"},attrs:{\"height\":\"30px\",\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":!_vm.emailConfirmationButtonEnabled ||\n                (_vm.captchaVersion ===  'v2' && _vm.captcha_v2_token === '') ||\n                 !_vm.model.email},on:{\"click\":_vm.sendConfirmationCode}},[_vm._v(\" \"+_vm._s(_vm.emailConfirmationButton)+\" \"),(_vm.emailConfirmationButtonEnabled)?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-email \")]):_vm._e(),_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.sendConfirmationCode'))+\" \")])],1):_vm._e()]},proxy:true}],null,false,1046752435),model:{value:(_vm.model.email_confirmation),callback:function ($$v) {_vm.$set(_vm.model, \"email_confirmation\", $$v)},expression:\"model.email_confirmation\"}}):_vm._e(),_c('v-text-field',{attrs:{\"label\":_vm.$t('_form.login.password'),\"rules\":_vm.register ? _vm.rules.password : _vm.rules.required,\"outlined\":\"\",\"validate-on-blur\":\"\",\"data-cy\":\"password-input\",\"type\":_vm.passwordShow ? 'text' : 'password',\"append-icon\":_vm.passwordShow ? 'mdi-eye' : 'mdi-eye-off'},on:{\"click:append\":function($event){_vm.passwordShow = !_vm.passwordShow}},model:{value:(_vm.model.password),callback:function ($$v) {_vm.$set(_vm.model, \"password\", $$v)},expression:\"model.password\"}}),(_vm.register)?_c('v-text-field',{attrs:{\"type\":\"password\",\"rules\":_vm.rules.passwordConfirmation,\"validate-on-blur\":\"\",\"outlined\":\"\",\"label\":_vm.$t('_form.login.passwordConfirmation')},model:{value:(_vm.model.password_confirmation),callback:function ($$v) {_vm.$set(_vm.model, \"password_confirmation\", $$v)},expression:\"model.password_confirmation\"}}):_vm._e(),(_vm.register)?_c('v-text-field',{attrs:{\"label\":_vm.$t('_form.login.username'),\"rules\":_vm.rules.username,\"validate-on-blur\":\"\",\"outlined\":\"\"},model:{value:(_vm.model.username),callback:function ($$v) {_vm.$set(_vm.model, \"username\", $$v)},expression:\"model.username\"}}):_vm._e(),(_vm.register)?_c('v-select',{attrs:{\"rules\":_vm.rules.required,\"outlined\":\"\",\"items\":_vm.howDoYouKnowUsOptions,\"label\":_vm.$t('_form.login.howDidYouHearAboutUs')},model:{value:(_vm.model.how_do_you_know_us),callback:function ($$v) {_vm.$set(_vm.model, \"how_do_you_know_us\", $$v)},expression:\"model.how_do_you_know_us\"}}):_vm._e(),(_vm.captchaVersion === 'v2')?_c('VueRecaptcha',{staticClass:\"mb-3\",attrs:{\"sitekey\":_vm.captcha_v2_secret,\"loadRecaptchaScript\":true},on:{\"verify\":_vm.captchaVerified,\"expired\":_vm.captchaExpired}}):_vm._e(),_c('v-btn',{staticClass:\"darken-3\",attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"width\":\"100%\",\"loading\":_vm.buttonLoading,\"x-large\":\"\",\"depressed\":\"\",\"disabled\":_vm.captchaVersion === 'v2' && _vm.captcha_v2_token === ''}},[(!_vm.register)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.login'))+\" \")]):_vm._e(),(_vm.register)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.register'))+\" \")]):_vm._e(),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-right \")])],1),(_vm.register === false)?_c('div',{staticClass:\"mt-3 text-center\"},[_c('router-link',{staticClass:\"mt-2\",staticStyle:{\"text-decoration\":\"none\"},attrs:{\"to\":\"/auth/forgot\"}},[_c('a',[_vm._v(_vm._s(_vm.$t('_form.login.forgotPassword'))+\"?\")])])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div class=\"text-center\">\n      <h1 v-if=\"!register\" class=\"text-h3\">{{ $t('_loginRegister.welcomeBack') }}</h1>\n      <h1 v-else class=\"text-h3\">{{ $t('_loginRegister.welcome') }}</h1>\n      <div class=\"d-flex mt-1\" v-if=\"!register\">\n        <v-spacer />\n        <p>{{ $t('_loginRegister.noAccount') }}</p>\n        <a @click=\"register=true; emailConfirmationButtonEnabled=true\" class=\"ml-1\">\n          {{ $t('_form.login.register') }}\n        </a>\n        <v-spacer />\n      </div>\n      <div class=\"d-flex mt-1\" v-else>\n        <v-spacer />\n        <p>{{ $t('_loginRegister.alreadyHaveAccount') }}</p>\n        <a @click=\"register=false; emailConfirmationButtonEnabled=false\" class=\"ml-1\">\n          {{ $t('_form.login.login') }}\n        </a>\n        <v-spacer />\n      </div>\n    </div>\n    <v-alert v-if=\"errorMessage\"\n      type=\"error\" class=\"mt-3 mb-7\">\n      {{ errorMessage }}\n    </v-alert>\n    <v-form v-model=\"valid\" @submit.prevent=\"submitForm\" ref=\"form\" lazy-validation class=\"mt-3\">\n      <v-text-field v-model=\"model.email\" type=\"email\" :label=\"$t('_form.login.email')\" ref=\"form\"\n                    :rules=\"rules.email\" validate-on-blur data-cy=\"email-input\" outlined/>\n      <v-text-field v-if=\"register\" v-model=\"model.email_confirmation\" @focus=\"removeSpaces\"\n                    @click=\"removeSpaces\" outlined\n                    :validate-on-blur=\"model.email_confirmation !== '     '\"\n                    :label=\"$t('_form.login.emailConfirmation')\" :rules=\"rules.mailConfirmation\">\n        <template v-slot:prepend>\n            <v-btn height=\"30px\" color=\"secondary\" class=\"darken-3\" style=\"margin-top: -5px;\"\n                   @click=\"sendConfirmationCode\" v-if=\"register\" depressed\n                   :disabled=\"!emailConfirmationButtonEnabled ||\n                  (captchaVersion ===  'v2' && captcha_v2_token === '') ||\n                   !model.email\">\n              {{ emailConfirmationButton }}\n              <v-icon v-if=\"emailConfirmationButtonEnabled\" left>\n                mdi-email\n              </v-icon>\n              <span>\n              {{ $t('_form.login.sendConfirmationCode') }}\n            </span>\n            </v-btn>\n        </template>\n      </v-text-field>\n      <v-text-field v-model=\"model.password\" :label=\"$t('_form.login.password')\"\n                    :rules=\"register ? rules.password : rules.required\" outlined\n                    validate-on-blur data-cy=\"password-input\"\n                    :type=\"passwordShow ? 'text' : 'password'\"\n                    @click:append=\"passwordShow = !passwordShow\"\n                    :append-icon=\"passwordShow ? 'mdi-eye' : 'mdi-eye-off'\"/>\n      <v-text-field v-if=\"register\" v-model=\"model.password_confirmation\" type=\"password\"\n                    :rules=\"rules.passwordConfirmation\" validate-on-blur outlined\n                    :label=\"$t('_form.login.passwordConfirmation')\"/>\n      <v-text-field v-if=\"register\" v-model=\"model.username\" :label=\"$t('_form.login.username')\"\n                    :rules=\"rules.username\" validate-on-blur outlined/>\n      <v-select :rules=\"rules.required\" v-model=\"model.how_do_you_know_us\" v-if=\"register\" outlined\n        :items=\"howDoYouKnowUsOptions\" :label=\"$t('_form.login.howDidYouHearAboutUs')\"></v-select>\n      <VueRecaptcha :sitekey=\"captcha_v2_secret\" v-if=\"captchaVersion === 'v2'\" class=\"mb-3\"\n                    :loadRecaptchaScript=\"true\" @verify=\"captchaVerified\"\n                    @expired=\"captchaExpired\"></VueRecaptcha>\n      <v-btn type=\"submit\" color=\"secondary\" class=\"darken-3\" width=\"100%\"\n             :loading=\"buttonLoading\" x-large depressed\n             :disabled=\"captchaVersion === 'v2' && captcha_v2_token === ''\">\n        <span v-if=\"!register\">\n          {{ $t('_form.login.login') }}\n        </span>\n        <span v-if=\"register\">\n          {{ $t('_form.login.register') }}\n        </span>\n        <v-icon right>\n          mdi-arrow-right\n        </v-icon>\n      </v-btn>\n      <div class=\"mt-3 text-center\" v-if=\"register === false\">\n        <router-link class=\"mt-2\" style=\"text-decoration: none;\" to=\"/auth/forgot\">\n          <a>{{ $t('_form.login.forgotPassword') }}?</a>\n        </router-link>\n      </div>\n    </v-form>\n  </div>\n</template>\n\n<script>\nimport VueRecaptcha from 'vue-recaptcha';\nimport AuthService from '@/services/AuthService';\nimport i18n from '@/plugins/i18n';\nimport config from '@/config';\nimport openapi from '../api/openapi';\n\nconst captcha_v2_secret = config.ggl_recaptcha_v2_token;\n\nexport default {\n  name: 'LoginRegister.vue',\n  components: {\n    VueRecaptcha,\n  },\n  data() {\n    return {\n      captcha_v2_secret,\n      captchaVersion: 'v3',\n      captcha_v2_token: '',\n      valid: false,\n      register: false,\n      errorMessage: null,\n      emailConfirmationButton: null,\n      emailConfirmationButtonEnabled: true,\n      buttonLoading: false,\n      passwordShow: false,\n      howDoYouKnowUsOptions: [\n        {\n          text: this.$t('_form.login.howDidYouHearAboutUsOptions.searchEngine'),\n          value: 'Search Engine',\n        },\n        {\n          text: this.$t('_form.login.howDidYouHearAboutUsOptions.socialMedia'),\n          value: 'Social Media',\n        },\n        {\n          text: this.$t('_form.login.howDidYouHearAboutUsOptions.otherCommunity'),\n          value: 'Other Community',\n        },\n        {\n          text: this.$t('_form.login.howDidYouHearAboutUsOptions.friends'),\n          value: 'Friends',\n        },\n        {\n          text: this.$t('_form.login.howDidYouHearAboutUsOptions.youtube'),\n          value: 'YouTube',\n        },\n        {\n          text: this.$t('_form.login.howDidYouHearAboutUsOptions.other'),\n          value: 'Other',\n        },\n      ],\n      model: {\n        email: '',\n        password: '',\n        password_confirmation: '',\n        username: '',\n        email_confirmation: '     ',\n        how_do_you_know_us: '',\n      },\n      rules: {\n        email: [\n          (v) => !!v || i18n.t('_form.validation.required'),\n          (v) => /.+@.+\\..+/.test(v) || i18n.t('_form.validation.emailInvalid'),\n        ],\n        required: [\n          (v) => !!v || i18n.t('_form.validation.required'),\n        ],\n        passwordConfirmation: [\n          (v) => !!v || i18n.t('_form.validation.required'),\n          (v) => v === this.model.password || i18n.t('_form.validation.passwordMatch'),\n        ],\n        password: [\n          (v) => v.length >= 8 || i18n.t('_form.validation.passwordLength'),\n          (v) => /[.+]?[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?][.+]?/.test(v) || i18n.t('_form.validation.passwordNoSpecialCharacter'),\n          (v) => /[.+]?\\d[.+]?/.test(v) || i18n.t('_form.validation.passwordNoNumber'),\n          (v) => /[.+]?[A-Z][.+]?/.test(v) || i18n.t('_form.validation.passwordNoUppercase'),\n        ],\n        username: [\n          (v) => !!v || i18n.t('_form.validation.required'),\n          (v) => v.length >= 3 || i18n.t('_form.validation.usernameLength'),\n          (v) => /^[a-z0-9_.-]+$/.test(v) || i18n.t('_form.validation.usernameFormat'),\n        ],\n        mailConfirmation: [\n          (v) => !!v || i18n.t('_form.validation.required'),\n          (v) => v.length === 5 || i18n.t('_form.validation.codeLength'),\n        ],\n      },\n    };\n  },\n  methods: {\n    async submitForm() {\n      this.$refs.form.validate();\n      if (this.valid && !this.register) {\n        await this.login();\n        return;\n      }\n      if (!this.valid || Object.values(this.model).includes('' || '     ')) {\n        return;\n      }\n      if (this.valid && this.register) {\n        const token = await this.getCaptchaToken();\n        await AuthService.register(this.model, { version: this.captchaVersion, token }, () => {\n          // GTag Event for Google Analytics Tracking\n          this.$gtag.event('sign_up');\n          this.login();\n        }, (err) => {\n          if (err.response.status === 429) this.captchaVersion = 'v2';\n          this.errorMessage = this.$t(`_form.login.error.${err.response.data.detail.code}`);\n        });\n      }\n    },\n    async login() {\n      const api = await openapi;\n\n      try {\n        this.buttonLoading = true;\n        const data = this.model;\n        // const token = await this.getCaptchaToken();\n\n        AuthService.loginCredentials(data.email, data.password).then(() => {\n          this.loginCompleted();\n          this.$gtag.event('login');\n        }).catch((error) => {\n          api.user_checkEmailInUse({ email: data.email }).then((rsp) => {\n            if (rsp.data) {\n              // email registered\n              this.buttonLoading = false;\n              this.errorMessage = this.$t(`_form.login.error.${error.response.data.error}`);\n            } else {\n              // email not registered\n              this.register = true;\n              this.errorMessage = null;\n              this.emailConfirmationButtonEnabled = true;\n              this.buttonLoading = false;\n            }\n          });\n        });\n      } catch (error) {\n        this.buttonLoading = false;\n        this.errorMessage = `Error in phase get_data: ${error.response.data.msg}`;\n      }\n    },\n    async sendConfirmationCode() {\n      const token = await this.getCaptchaToken();\n      await AuthService.sendConfirmationCode(this.model.email,\n        { version: this.captchaVersion, token }, () => {\n          this.emailConfirmationButtonEnabled = false;\n          this.emailConfirmationButton = 31;\n          this.counter();\n        }, (err) => {\n          if (err.response.data.detail.code === 'captcha_low') this.captchaVersion = 'v2';\n          this.errorMessage = this.$t(`_form.login.error.${err.response.data.detail.code}`);\n        });\n    },\n    counter() {\n      this.emailConfirmationButton -= 1;\n      if (this.emailConfirmationButton !== 0 && !this.emailConfirmationButtonEnabled) {\n        setTimeout(() => { this.counter(); }, 1000);\n      } else {\n        this.emailConfirmationButtonEnabled = true;\n        this.emailConfirmationButton = null;\n      }\n    },\n    loginCompleted() {\n      this.buttonLoading = false;\n      AuthService.refreshUser();\n      this.$emit('completed');\n    },\n    removeSpaces() {\n      if (this.model.email_confirmation === '     ') this.model.email_confirmation = '';\n    },\n    async getCaptchaToken() {\n      let captchaToken = '';\n      if (this.captchaVersion === 'v3') {\n        captchaToken = await this.recaptcha();\n      } else {\n        console.log('v2');\n        console.log(this.captcha_v2_token);\n        captchaToken = this.captcha_v2_token;\n      }\n      return captchaToken;\n    },\n    async recaptcha() {\n      await this.$recaptchaLoaded();\n      return this.$recaptcha();\n    },\n    captchaVerified(token) {\n      this.captcha_v2_token = token;\n    },\n    captchaExpired() {\n      this.captcha_v2_token = '';\n    },\n  },\n  mounted() {\n    if (this.$store.getters.isLoggedIn) {\n      this.$emit('completed');\n    }\n    if (this.$route.query.register === 'true') {\n      this.register = true;\n    }\n    if (this.$route.query.email) {\n      this.model.email = this.$route.query.email;\n    }\n  },\n  computed: {\n    getConfirmationCode() {\n      return this.model.email_confirmation;\n    },\n    getUsername() {\n      return this.model.username;\n    },\n  },\n  watch: {\n    // Makes the Mail Confirmation Code Uppercase\n    getConfirmationCode() {\n      this.model.email_confirmation = this.model.email_confirmation.toUpperCase();\n    },\n    // Makes the Username Lowercase\n    getUsername() {\n      this.model.username = this.model.username.toLowerCase();\n    },\n  },\n};\n</script>\n\n<style scoped>\n.code input{\n  text-transform: uppercase;\n}\n</style>\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!./LoginRegister.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!./LoginRegister.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoginRegister.vue?vue&type=template&id=10afa897&scoped=true&\"\nimport script from \"./LoginRegister.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginRegister.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginRegister.vue?vue&type=style&index=0&id=10afa897&scoped=true&lang=css&\"\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  \"10afa897\",\n  null\n  \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VForm,VIcon,VSelect,VSpacer,VTextField})\n"],"names":["mixins","VSheet","Toggleable","Transitionable","extend","name","props","border","type","String","validator","val","includes","closeLabel","default","coloredBorder","Boolean","dense","dismissible","closeIcon","icon","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","computedColor","$createElement","__cachedDismissible","color","iconColor","VBtn","small","attrs","$vuetify","lang","t","on","click","isActive","VIcon","__cachedIcon","computedIcon","classes","hasColoredIcon","hasText","undefined","isDark","Themeable","created","$attrs","hasOwnProperty","breaking","methods","genWrapper","children","$slots","prepend","genContent","append","$scopedSlots","close","toggle","genAlert","role","listeners$","style","styles","directives","setColor","setTextColor","render","h","transition","origin","mode","BindsAttrs","RegistrableProvide","provide","form","inheritAttrs","disabled","lazyValidation","readonly","inputs","watchers","errorBag","watch","handler","errors","Object","values","$emit","deep","immediate","watchInput","input","watcher","$watch","$set","_uid","valid","shouldValidate","validate","filter","length","reset","forEach","resetErrorBag","setTimeout","resetValidation","register","push","unregister","found","find","i","unwatch","$delete","novalidate","attrs$","submit","e","_extends","assign","target","arguments","source","key","prototype","call","apply","defer","state","callbacks","resolve","len","then","cb","deferred","resolved","promise","ownProp","createRecaptcha","notify","wait","ele","options","window","grecaptcha","widgetId","assertLoaded","execute","checkRecaptchaLoad","Error","recaptcha","vueRecaptchaApiLoaded","VueRecaptcha","sitekey","required","theme","badge","size","tabindex","loadRecaptchaScript","recaptchaScriptId","recaptchaHost","language","beforeMount","document","getElementById","script","createElement","id","src","async","head","appendChild","mounted","_this","opts","$props","callback","emitVerify","emitExpired","emitError","container","$el","$widgetId","response","_vm","_h","_c","_self","_v","_s","$t","$event","emailConfirmationButtonEnabled","errorMessage","_e","ref","preventDefault","submitForm","model","$$v","expression","rules","email","email_confirmation","mailConfirmation","removeSpaces","scopedSlots","_u","fn","staticStyle","captchaVersion","captcha_v2_token","sendConfirmationCode","emailConfirmationButton","proxy","password","passwordShow","passwordConfirmation","username","howDoYouKnowUsOptions","captcha_v2_secret","captchaVerified","captchaExpired","buttonLoading","staticRenderFns","config","components","password_confirmation","how_do_you_know_us","v","version","token","AuthService","api","counter","loginCompleted","captchaToken","console","getConfirmationCode","getUsername","component","VAlert"],"sourceRoot":""}