{"version":3,"file":"ManualRegisterForm-xAkHouB5.js","sources":["../../../app/javascript/stores/loading-store.js","../../../app/javascript/stores/user-store.js","../../../app/javascript/components/shared/ManualRegisterForm.vue"],"sourcesContent":["import { defineStore } from \"pinia\";\n\nconst useLoadingStore = defineStore(\"loading\", {\n  state: () => ({\n    loading: false\n  }),\n  actions: {\n    setLoading(loading) {\n      this.loading = loading;\n    }\n  }\n});\n\nexport default useLoadingStore;\n","import { defineStore } from \"pinia\";\nimport isEmail from \"validator/lib/isEmail\";\nimport usersApi from \"../api/user\";\nimport useLoadingStore from \"./loading-store\";\n\nconst useUserStore = defineStore(\"user\", {\n  state: () => ({\n    shippingAddresses: [],\n    billingAddresses: [],\n    guest: false,\n    guestType: null,\n    loginErrors: {},\n    registerErrors: {},\n    cards: [],\n    stripeV2Cards: [],\n    checkoutDotComCards: [],\n    credit: {},\n    newCustomer: false,\n    first_name: \"\",\n    last_name: \"\",\n    email: \"\",\n    isInternal: false\n  }),\n  actions: {\n    async login(details) {\n      if (!details.email || !isEmail(details.email)) {\n        this.loginErrors = {\n          email: [\"This doesn't look like a valid email\"]\n        };\n        return;\n      }\n\n      this.loginErrors = {};\n      const loadingStore = useLoadingStore();\n      const { setLoading } = loadingStore;\n      setLoading(true);\n      const response = await usersApi.login(details);\n      if (response.success) {\n        this.loginErrors = {};\n        analytics.track(\"Logged In\", { situation: \"Papier Website\" });\n        window.location.reload();\n      } else {\n        setLoading(false);\n        this.loginErrors = { email: [response.data.error] };\n      }\n    },\n    async register(details) {\n      if (!details.email || !isEmail(details.email)) {\n        this.registerErrors = {\n          email: [\"This doesn't look like a valid email\"]\n        };\n        return;\n      }\n\n      this.registerErrors = {};\n      const loadingStore = useLoadingStore();\n      const { setLoading } = loadingStore;\n      setLoading(true);\n      const response = await usersApi.register(details);\n      if (response.success) {\n        this.registerErrors = {};\n        window.location.reload();\n      } else {\n        setLoading(false);\n        this.registerErrors = response.data.errors;\n      }\n    }\n  }\n});\n\nexport default useUserStore;\n","<template>\n  <form @submit.prevent=\"submitForm\">\n    <div class=\"grid grid-cols-2 gap-3 mb-5\">\n      <text-input\n        v-model=\"user.first_name\"\n        :errors=\"registerErrors['first_name']\"\n        required\n        autocorrect=\"off\"\n        input-id=\"register-modal-first-name\"\n        :data-cy=\"`${signupLocation}-first-name`\"\n        :label=\"t('register-modal.form.first-name')\"\n        type=\"text\"\n        autocomplete=\"off\" />\n      <text-input\n        v-model=\"user.last_name\"\n        :errors=\"registerErrors['last_name']\"\n        required\n        autocorrect=\"off\"\n        input-id=\"register-modal-last-name\"\n        :data-cy=\"`${signupLocation}-last-name`\"\n        :label=\"t('register-modal.form.last-name')\"\n        type=\"text\"\n        autocomplete=\"off\" />\n    </div>\n    <date-of-birth-input\n      v-model=\"user.date_of_birth\"\n      :label=\"t('register-modal.form.date-of-birth')\"\n      :errors=\"registerErrors['date_of_birth']\"\n      class=\"mb-5\" />\n    <text-input\n      v-model=\"user.email\"\n      class=\"mb-5\"\n      type=\"email\"\n      :errors=\"registerErrors['email']\"\n      required\n      autocorrect=\"off\"\n      autocapitalize=\"off\"\n      input-id=\"register-modal-email\"\n      :data-cy=\"`${signupLocation}-email`\"\n      :label=\"t('register-modal.form.email')\"\n      inputmode=\"email\"\n      autocomplete=\"off\" />\n    <text-input\n      v-model=\"user.password\"\n      class=\"mb-5\"\n      :errors=\"registerErrors['password']\"\n      required\n      autocorrect=\"off\"\n      autocapitalize=\"off\"\n      input-id=\"register-modal-password\"\n      :data-cy=\"`${signupLocation}-password`\"\n      type=\"password\"\n      :label=\"t('register-modal.form.password')\"\n      autocomplete=\"off\" />\n    <checkbox-input\n      v-if=\"!hideCheckbox\"\n      v-model:checked=\"user.newsletter\"\n      flex-alignment-class=\"items-start\"\n      input-id=\"register-modal-newsletter\"\n      :data-cy=\"`${signupLocation}-newsletter`\"\n      class=\"mb-5\"\n      :label=\"t('register-modal.form.newsletter.explanation')\"\n      @update:checked=\"triggerAnalyticsEvent\" />\n    <input\n      type=\"submit\"\n      :value=\"t('register-modal.form.cta')\"\n      class=\"btn btn-primary btn-large btn-block\"\n      data-cy=\"signup\" />\n  </form>\n</template>\n\n<script setup>\nimport { storeToRefs } from \"pinia\";\nimport useUserStore from \"../../stores/user-store\";\nimport TextInput from \"./TextInput.vue\";\nimport CheckboxInput from \"./CheckboxInput.vue\";\nimport DateOfBirthInput from \"./DateOfBirthInput.vue\";\n\nconst userStore = useUserStore();\n\nconst { registerErrors } = storeToRefs(userStore);\n\nconst emit = defineEmits([\"submitRegisterForm\"]);\n\nconst submitForm = () => {\n  emit(\"submitRegisterForm\");\n};\n\nconst props = defineProps({\n  hideCheckbox: {\n    type: Boolean,\n    default: false\n  },\n  user: {\n    type: Object,\n    default: () => {}\n  },\n  signupLocation: {\n    type: String,\n    required: true\n  }\n});\n\nconst triggerAnalyticsEvent = () => {\n  if (props.user.newsletter) {\n    analytics.track(\"Ticked Opt-In Box\");\n  } else {\n    analytics.track(\"Unticked Opt-In Box\");\n  }\n};\n</script>\n"],"names":["useLoadingStore","defineStore","loading","useUserStore","details","isEmail","loadingStore","setLoading","response","usersApi","userStore","registerErrors","storeToRefs","emit","__emit","submitForm","props","__props","triggerAnalyticsEvent"],"mappings":"2VAEA,MAAMA,EAAkBC,EAAY,UAAW,CAC7C,MAAO,KAAO,CACZ,QAAS,EACb,GACE,QAAS,CACP,WAAWC,EAAS,CAClB,KAAK,QAAUA,CACrB,CACA,CACA,CAAC,ECNKC,EAAeF,EAAY,OAAQ,CACvC,MAAO,KAAO,CACZ,kBAAmB,CAAE,EACrB,iBAAkB,CAAE,EACpB,MAAO,GACP,UAAW,KACX,YAAa,CAAE,EACf,eAAgB,CAAE,EAClB,MAAO,CAAE,EACT,cAAe,CAAE,EACjB,oBAAqB,CAAE,EACvB,OAAQ,CAAE,EACV,YAAa,GACb,WAAY,GACZ,UAAW,GACX,MAAO,GACP,WAAY,EAChB,GACE,QAAS,CACP,MAAM,MAAMG,EAAS,CACnB,GAAI,CAACA,EAAQ,OAAS,CAACC,EAAQD,EAAQ,KAAK,EAAG,CAC7C,KAAK,YAAc,CACjB,MAAO,CAAC,sCAAsC,CAC/C,EACD,MACR,CAEM,KAAK,YAAc,CAAE,EACrB,MAAME,EAAeN,EAAiB,EAChC,CAAE,WAAAO,CAAU,EAAKD,EACvBC,EAAW,EAAI,EACf,MAAMC,EAAW,MAAMC,EAAS,MAAML,CAAO,EACzCI,EAAS,SACX,KAAK,YAAc,CAAE,EACrB,UAAU,MAAM,YAAa,CAAE,UAAW,gBAAgB,CAAE,EAC5D,OAAO,SAAS,OAAQ,IAExBD,EAAW,EAAK,EAChB,KAAK,YAAc,CAAE,MAAO,CAACC,EAAS,KAAK,KAAK,CAAG,EAEtD,EACD,MAAM,SAASJ,EAAS,CACtB,GAAI,CAACA,EAAQ,OAAS,CAACC,EAAQD,EAAQ,KAAK,EAAG,CAC7C,KAAK,eAAiB,CACpB,MAAO,CAAC,sCAAsC,CAC/C,EACD,MACR,CAEM,KAAK,eAAiB,CAAE,EACxB,MAAME,EAAeN,EAAiB,EAChC,CAAE,WAAAO,CAAU,EAAKD,EACvBC,EAAW,EAAI,EACf,MAAMC,EAAW,MAAMC,EAAS,SAASL,CAAO,EAC5CI,EAAS,SACX,KAAK,eAAiB,CAAE,EACxB,OAAO,SAAS,OAAQ,IAExBD,EAAW,EAAK,EAChB,KAAK,eAAiBC,EAAS,KAAK,OAE5C,CACA,CACA,CAAC,8PCUD,MAAME,EAAYP,EAAc,EAE1B,CAAE,eAAAQ,CAAc,EAAKC,EAAYF,CAAS,EAE1CG,EAAOC,EAEPC,EAAa,IAAM,CACvBF,EAAK,oBAAoB,CAC3B,EAEMG,EAAQC,EAeRC,EAAwB,IAAM,CAC9BF,EAAM,KAAK,WACb,UAAU,MAAM,mBAAmB,EAEnC,UAAU,MAAM,qBAAqB,CAEzC"}