{"version":3,"file":"signIn-uRJIflwg.js","sources":["../../../app/javascript/src/modules/SignIn/SignInImage.vue","../../../app/javascript/src/modules/SignIn/SignIn.vue","../../../app/javascript/src/modules/SignIn/SignUp.vue","../../../app/javascript/src/modules/SignIn/ResetPassword.vue","../../../app/javascript/src/modules/SignIn/ForgetPassword.vue","../../../app/javascript/src/modules/SignIn/SocialLoginRedirect.vue","../../../app/javascript/src/routers/signIn.js","../../../app/javascript/src/views/SignIn.vue","../../../app/javascript/entrypoints/signIn.js"],"sourcesContent":["<template>\n <div class=\"devise-form-container__image\">\n <img src=\"https://assets.tourhero.com/tourhero/pages/home/hero_cover_new.jpg\">\n <div class=\"image-text\">\n <h2>Tailor-made <span class=\"red\">group adventures</span></h2>\n <div class=\"image-description\">With TourHero, you plan the perfect trip–your way.<br>No pre-made itineraries,\n no rigid schedules.<br>You get full freedom, and we take care of the rest.</div>\n </div>\n </div>\n</template>","<template>\n <div class=\"devise-form-container__form\">\n <div style=\"width: 100%\">\n <!-- Social login view -->\n <div v-if=\"nextAction === 'social_login'\">\n <h2>{{ t(\"continue_with_social\") }}</h2>\n\n <div class=\"social-login-message\">\n {{ t(\"social_login_message\") }}\n </div>\n\n <ThirdPartyAuth\n :providers=\"[providerName]\"\n :showDivider=\"false\"\n />\n </div>\n\n <!-- Regular sign in view -->\n <div v-else>\n <h2> {{ nextAction ? t(\"sign_in\") : t(\"welcome\") }}</h2>\n <ThirdPartyAuth :providers=\"['google', 'facebook']\" :action=\"nextAction\" />\n <form id=\"new_user\" name=\"sign_in_form\" method=\"post\" class=\"simple_form devise-form new_user\"\n action=\"/en/users/sign_in\">\n <input type=\"hidden\" name=\"authenticity_token\" :value=\"authenticityToken\" />\n <input type=\"hidden\" name=\"method\" value=\"post\" />\n <input type=\"hidden\" name=\"redirect_url\" :value=\"redirectUrl\" v-if=\"redirectUrl\" />\n <input v-if=\"nextAction == 'sign_in'\" type=\"hidden\" name=\"commit\" value=\"Sign In\" />\n <div class=\"form-inputs-container\">\n <EmailField v-model=\"email\" />\n\n <PasswordField v-if=nextAction>\n <template #hint>\n <div class=\"sign-in__forgot-password\">\n <a :href=\"`${resetPasswordUrl}?email=${encodeURIComponent(email)}`\">{{ t(\"forgot_password\") }}</a>\n </div>\n </template>\n </PasswordField>\n </div>\n\n <div v-if=\"nextAction === 'reset_password'\">\n <div class=\"sign-in__devise-action-info-message\">{{ t(\"reset_password_message\") }}</div>\n </div>\n <div v-if=\"errorMessage !== ''\">\n <div class=\"sign-up__error-message-container\">{{ errorMessage }}</div>\n </div>\n\n <div class=\"form-actions\">\n <Button id=\"sign-in-submit\" form=\"new_user\" type=\"submit\" color=\"secondary\" colorFilled rounded>\n {{ [\"sign_in\", \"reset_password\"].includes(nextAction) ? t(\"sign_in\") : t('continue') }}\n </Button>\n </div>\n\n <div v-if=\"nextAction\" style=\"width: 100%\">\n <div class=\"sign-in__optional\">\n <div class=\"sign-in__or\">\n <div class=\"sign-in__or-line\"></div>\n <div class=\"sign-in__or-text\">or</div>\n <div class=\"sign-in__or-line\"></div>\n </div>\n <h3>{{ t(\"go_passwordless\") }}</h3>\n <p>{{ t(\"send_a_secure_link\") }}</p>\n <input type=\"hidden\" name=\"request_passwordless_link\" v-model=\"requestPasswordlessLink\" />\n <Button id=\"sign-in-magic-link\" type=\"submit\" @click=\"requestLink\" color=\"tertiary\" rounded>{{ t(\"email_magic_link\") }}</Button>\n </div>\n\n <div v-if=\"nextAction === 'request_passwordless_link'\">\n <div class=\"sign-in__devise-action-info-message\">{{ t(\"passwordless_link_message\") }}</div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { getErrorArray } from '@/utils/getErrorMessage.js';\nimport { Button } from '@/components/Theme';\nimport { ref, onMounted, computed } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\n\nimport { metaTagContent, dataTagContent } from \"@/helpers/documentHelpers.js\";\nimport EmailField from \"@/modules/SignIn/Components/EmailField.vue\";\nimport PasswordField from \"@/modules/SignIn/Components/PasswordField.vue\";\nimport ThirdPartyAuth from \"@/modules/SignIn/Components/ThirdPartyAuth.vue\";\n\nconst { t } = useShared();\n\nconst providerName = computed(() => {\n const provider = metaTagContent('provider');\n if (provider === 'google_oauth2') return 'google';\n return provider || 'google';\n});\n\nconst form = ref(null)\nconst email = ref('');\nconst requestPasswordlessLink = ref('0')\nconst errorMessage = ref('');\nconst nextAction = ref(metaTagContent('nextAction') || \"\")\nconst authenticityToken = ref(metaTagContent('authenticityToken'))\nconst resetPasswordUrl = ref(metaTagContent('resetPasswordUrl'))\nconst redirectUrl = new URLSearchParams(window.location.search).get('redirect_url')\n\nonMounted(() => {\n form.value = document.forms['sign_in_form']\n email.value = dataTagContent('sign-in-main-app', 'email') || \"\"\n\n if (dataTagContent('sign-in-main-app', 'errors')) {\n const errorJson = JSON.parse(dataTagContent('sign-in-main-app', 'errors'))\n errorMessage.value = getErrorArray(errorJson).join(', ')\n }\n})\n\nfunction requestLink() {\n requestPasswordlessLink.value = '1'\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-inputs-container {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n row-gap: $spacing-6;\n}\n\n.form-actions {\n width: 100%;\n\n @media (min-width: $breakpoint-sm) {\n width: auto;\n }\n}\n\n.sign-up__error-message-container {\n width: 100%;\n margin-top: $spacing-6;\n background-color: $brand-secondary-light;\n border: 1px solid $brand-secondary;\n border-radius: $spacing-4;\n padding: $spacing-4;\n}\n\n.sign-in__devise-action-info-message {\n max-width: none;\n}\n\n.social-login-message {\n margin: $spacing-6 0;\n}\n</style>\n\n<i18n lang=\"yaml\">\n en:\n welcome: Welcome!\n sign_in: Sign in\n forgot_password: Forgot your password?\n reset_password_message: If this account exists, we'll send you a password reset email.\n go_passwordless: Go passwordless\n send_a_secure_link: Send a secure link to your email to sign in.\n email_magic_link: Email me a magic link\n passwordless_link_message: We've sent a magic link to your email. Please follow the link to sign in.\n continue: Continue\n continue_with_social: Continue with social account\n social_login_message: Looks like you've previously signed in with a social account. Please continue with your social login.\n</i18n>\n","<template>\n <div class=\"devise-form-container__form\">\n <div style=\"width: 100%\">\n <h2 class=\"header\"> {{ t(\"sign_up\") }}</h2>\n\n <ThirdPartyAuth\n :providers=\"['google']\"\n action=\"sign_up\"\n :showDivider=\"true\"\n />\n\n <form id=\"new_user\" v-on:submit.prevent=\"submit\" class=\"simple_form devise-form new_user\" method=\"post\"\n action=\"/en/users\" accept-charset=\"UTF-8\">\n <div class=\"form-inputs-container\">\n <NameField v-model=\"name\" :error=\"errorFields.includes('name')\" />\n\n <EmailField v-model=\"email\" :error=\"errorFields.includes('email')\" />\n\n <div class=\"password_with_confirm_container\">\n <PasswordField\n label=\"Password\"\n v-model=\"password\"\n :error=\"errorFields.includes('password')\"\n autocomplete=\"new-password\"\n >\n <template #hint=\"{ error }\">\n <div :class=\"error ? 'password-hint-error' : 'password-hint'\">{{ passwordLength }} characters minimum</div>\n </template>\n </PasswordField>\n\n <PasswordField\n label=\"Password confirmation\"\n v-model=\"passwordConfirmation\"\n :error=\"errorFields.includes('password_confirmation')\"\n autocomplete=\"new-password\"\n />\n </div>\n </div>\n\n <div v-if=\"errorMessage !== ''\">\n <div class=\"sign-up__error-message-container\">{{ errorMessage }}</div>\n </div>\n\n <div class=\"form-actions\">\n <Button type=\"submit\" :disabled=\"processing\" color=\"secondary\" colorFilled rounded>{{ t('sign_up') }}</Button>\n </div>\n\n <div class=\"sign-up-devise-links\">\n <div v-for=\"(path, key) in links\" :key=\"key\">\n <a :href=\"path\">{{ t(key) }}</a><br>\n </div>\n </div>\n\n <RecaptchaTerms />\n </form>\n </div>\n </div>\n <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { Button } from '@/components/Theme';\nimport { ref, onBeforeMount } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { useRoute } from \"vue-router\";\nimport { dataTagContent } from \"@/helpers/documentHelpers.js\";\nimport { getErrorFields, getErrorMessagesInSentence } from '@/utils/getErrorMessage.js';\nimport { redirectTo } from \"@/utils/functions.js\";\nimport NameField from \"@/modules/SignIn/Components/NameField.vue\";\nimport EmailField from \"@/modules/SignIn/Components/EmailField.vue\";\nimport PasswordField from \"@/modules/SignIn/Components/PasswordField.vue\";\nimport RecaptchaTerms from \"@/modules/SignIn/Components/RecaptchaTerms.vue\";\nimport ThirdPartyAuth from \"@/modules/SignIn/Components/ThirdPartyAuth.vue\";\nimport { useSignUp } from \"@/utils/auth.js\";\n\nconst { t } = useShared();\nconst route = useRoute()\n\nconst links = ref({})\nconst name = ref('');\nconst email = ref(route.query[\"user[email]\"] ?? \"\");\nconst password = ref('');\nconst passwordConfirmation = ref('');\nconst passwordLength = ref(0)\nconst processing = ref(false)\nconst errorFields = ref([])\nconst errorMessage = ref(\"\")\nconst signUp = useSignUp();\n\nonBeforeMount(() => {\n passwordLength.value = dataTagContent('sign-in-main-app', 'passwordMinLength')\n links.value = JSON.parse(dataTagContent('sign-in-main-app', 'deviseLinks'))\n});\n\nconst submit = async () => {\n try {\n processing.value = true;\n const response = await signUp(\n name.value,\n email.value,\n password.value,\n passwordConfirmation.value,\n {\n \"itinerary_request_id\": route.query.itinerary_request_id,\n \"chatroom_invitation_id\": route.query.chatroom_invitation_id\n }\n );\n const locationUrl = response.headers.get(\"location\");\n redirectTo(locationUrl || '/travelers/home');\n } catch (err) {\n console.log(err);\n errorFields.value = getErrorFields(err)\n errorMessage.value = getErrorMessagesInSentence(err);\n } finally {\n processing.value = false;\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-inputs-container {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n row-gap: $spacing-6;\n\n &:deep(.input-error) {\n border-color: $red !important;\n }\n}\n\n.form-actions {\n width: 100%;\n\n @media (min-width: $breakpoint-sm) {\n width: auto;\n }\n}\n\n.sign-up__error-message-container {\n width: 100%;\n margin-top: $spacing-6;\n background-color: $brand-secondary-light;\n border: 1px solid $brand-secondary;\n border-radius: $spacing-4;\n padding: $spacing-4;\n}\n\n.password-hint {\n margin-top: $spacing-2;\n color: $grey-100\n}\n\n.password-hint-error {\n margin-top: $spacing-2;\n color: $red;\n}\n\n.sign-up-devise-links a {\n font-size: $text-base;\n color: $green-300;\n\n &:not(:last-child) {\n display: inline-block;\n margin-bottom: $spacing-6;\n }\n}\n</style>\n\n<i18n lang=\"yaml\">\n en:\n sign_up: Sign up\n email: Email\n password: Password\n password_confirmation: Password confirmation\n sign_in: Have an account? Sign in here\n registration: Sign Up\n new_password: Forgot your password?\n confirmation: Didn't receive confirmation instructions?\n</i18n>\n","<template>\n <div class=\"devise-form-container__form\">\n <div style=\"width: 100%\">\n <h2> {{ t(\"reset_password\") }}</h2>\n\n <form id=\"change-password\" name=\"change-password_form\" method=\"post\" class=\"simple_form devise-form new_user\" :action=\"changePasswordPath\">\n <input type=\"hidden\" name=\"_method\" value=\"put\" autocomplete=\"off\" />\n <input type=\"hidden\" name=\"authenticity_token\" :value=\"authenticityToken\" />\n <input type=\"hidden\" name=\"user[reset_password_token]\" :value=\"resetPasswordToken\" />\n\n <div class=\"form-inputs-container\">\n <div class=\"input password optional user_password\">\n <div class=\"password_only_container\">\n <div class=\"password_with_show field_with_hint\">\n <label class=\"password required form-label__new\" for=\"user_password\">{{ t('new_user_password') }}</label>\n <input class=\"form-input password required input__new\" autocomplete=\"new-password\" required=\"required\"\n aria-required=\"true\" :type=\"showPassword ? 'text' : 'password'\" name=\"user[password]\"\n id=\"user_password\" v-model=\"password\" />\n <div class=\"password-hint\">\n {{ passwordLength }} characters minimum</div>\n <div @click=\"toggleShowPassword\">\n <i v-if=\"showPassword\" class=\"icon icon-view-off-1 icon-resized\" />\n <i v-else class=\"icon icon-view-1\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"input password optional user_password_confirmation\">\n <div class=\"password_only_container\">\n <div class=\"password_with_show\">\n <label class=\"string required form-label__new\" for=\"user_password_confirmation\">{{ t('confirm_new_user_password') }}</label>\n <input class=\"form-input password optional input__new\" autocomplete=\"current-password\"\n :type=\"showPassword ? 'text' : 'password'\" name=\"user[password_confirmation]\"\n id=\"user_password_confirmation\" v-model=\"passwordConfirmation\" />\n <div @click=\"toggleShowPassword\">\n <i v-if=\"showPassword\" id=\"password_icon\" class=\"icon icon-view-off-1 icon-resized\" />\n <i v-else id=\"password_icon\" class=\"icon icon-view-1\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div v-if=\"errorMessage\">\n <div class=\"sign-up__error-message-container\">{{ errorMessage }}</div>\n </div>\n\n <div class=\"form-actions\">\n <Button id=\"change-password-submit\" form=\"change-password\" type=\"submit\" color=\"secondary\" colorFilled rounded>\n {{ t('change_my_password') }}\n </Button>\n </div>\n\n <div class=\"sign-up-devise-links\">\n <div v-for=\"(path, key) in links\" :key=\"key\">\n <a :href=\"path\">{{ t(key) }}</a><br>\n </div>\n </div>\n </form>\n </div>\n </div>\n <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { useRoute } from \"vue-router\";\nimport { Button } from '@/components/Theme';\nimport { ref, onBeforeMount, onMounted } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { metaTagContent, dataTagContent } from \"@/helpers/documentHelpers.js\";\n\nconst { t } = useShared();\nconst route = useRoute();\n\nconst password = ref(null);\nconst passwordConfirmation = ref('');\nconst passwordLength = ref(0)\nconst links = ref({})\nconst errorMessage = ref('');\nconst authenticityToken = ref(metaTagContent('authenticityToken'))\nconst resetPasswordToken = ref(route.query.reset_password_token || metaTagContent('resetPasswordToken'))\nconst changePasswordPath = ref(metaTagContent('changePasswordPath'))\nconst showPassword = ref(false)\n\nonBeforeMount(() => {\n passwordLength.value = dataTagContent('sign-in-main-app', 'passwordMinLength')\n links.value = JSON.parse(dataTagContent('sign-in-main-app', 'deviseLinks'))\n});\n\nonMounted(() => {\n if (dataTagContent('sign-in-main-app', 'errors')) {\n const errorJson = JSON.parse(dataTagContent('sign-in-main-app', 'errors'))\n errorMessage.value = errorJson[\"password\"]\n }\n})\n\n\nfunction toggleShowPassword() {\n showPassword.value = !showPassword.value\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-inputs-container {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n row-gap: $spacing-6;\n}\n\n.form-actions {\n width: 100%;\n\n @media (min-width: $breakpoint-sm) {\n width: auto;\n }\n}\n\n.input.password.optional.user_password {\n .password_with_show {\n height: 95px;\n\n .icon {\n position: absolute;\n border-radius: 0.3rem;\n top: 50%;\n right: $spacing-4;\n transform: translateY(-50%);\n cursor: pointer;\n }\n }\n}\n\n.sign-up__error-message-container {\n width: 100%;\n margin-top: $spacing-6;\n background-color: $brand-secondary-light;\n border: 1px solid $brand-secondary;\n border-radius: $spacing-4;\n padding: $spacing-4;\n}\n\n.password-hint {\n margin-top: $spacing-2;\n color: $grey-100\n}\n\n.icon-resized {\n font-size: 13px;\n height: 18px;\n width: 16px;\n margin-top: 1px;\n}\n\n.sign-up-devise-links a {\n font-size: $text-base;\n color: $green-300;\n\n &:not(:last-child) {\n display: inline-block;\n margin-bottom: $spacing-6;\n }\n}\n</style>\n\n<i18n lang=\"yaml\">\nen:\n reset_password: Reset your password\n email: Email\n new_user_password: New password\n confirm_new_user_password: Confirm new password\n change_my_password: Change my password\n forgot_password: Forgot your password?\n reset_password_message: If this account exists, we'll send you a password reset email.\n\n continue: Continue\n\n sign_in: Have an account? Sign in here\n registration: Sign up\n new_password: Forgot your password?\n confirmation: Didn't receive confirmation instructions?\n</i18n>\n","<template>\n <div class=\"devise-form-container__form\">\n <div style=\"width: 100%\">\n <h2 class=\"forget_password_header\"> {{ t('forgot_your_password') }}</h2>\n <form id=\"request_reset_password\" name=\"request_reset_password_form\" @submit.prevent=\"submit\" method=\"post\" class=\"simple_form devise-form new_user\">\n <input type=\"hidden\" name=\"authenticity_token\" :value=\"authenticityToken\" />\n <input type=\"hidden\" name=\"method\" value=\"post\" />\n <div class=\"form-inputs-container\">\n <div class=\"input email required user_email field_without_errors\">\n <label class=\"string required form-label__new\" for=\"user_email\">{{ t('email') }}</label>\n <input class=\"form-input string required input__new\" autocomplete=\"email\" autofocus=\"autofocus\"\n required=\"required\" :pattern=\"emailRegex.value\" title=\"name@domain.com\" aria-required=\"true\" type=\"email\"\n name=\"user[email]\" id=\"user_email\" v-model=\"email\" />\n </div>\n </div>\n\n <div v-if=\"nextAction === 'reset_password'\">\n <div class=\"sign-in__devise-action-info-message\">{{ t(\"reset_password_message\") }}</div>\n </div>\n <div v-if=\"errorMessage !== ''\">\n <div class=\"reset-password__error-message-container\">{{ errorMessage }}</div>\n </div>\n\n <div class=\"form-actions\">\n <Button id=\"request_reset_password_submit\" form=\"request_reset_password\" :disabled=\"processing\" type=\"submit\" color=\"secondary\" colorFilled rounded>{{ t(\"send_password_instructions\") }}</Button>\n </div>\n\n <div class=\"forget-password-devise-links\">\n <div v-for=\"(path, key) in links\" :key=\"key\">\n <a :href=\"path\">{{ t(key) }}</a><br>\n </div>\n </div>\n </form>\n </div>\n </div>\n <SignInImage />\n</template>\n\n<script setup>\nimport api from '@/utils/api.js';\nimport SignInImage from '@/modules/SignIn/SignInImage.vue'\nimport { Button } from '@/components/Theme';\nimport { ref, onBeforeMount } from \"vue\";\nimport { useRoute } from \"vue-router\"\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { EMAIL_REGEX } from '@/utils/stringUtils.js';\nimport { metaTagContent, dataTagContent } from \"@/helpers/documentHelpers.js\";\n\nconst { t } = useShared();\nconst route = useRoute()\n\nonBeforeMount(() => {\n links.value = JSON.parse(dataTagContent('sign-in-main-app', 'deviseLinks'))\n});\n\nconst resetPasswordUrl = metaTagContent('resetPasswordUrl')\n\nconst email = ref(route.query.email || \"\")\nconst emailRegex = ref(EMAIL_REGEX.source)\nconst nextAction = ref('')\nconst errorMessage = ref('')\nconst authenticityToken = ref(metaTagContent('authenticityToken'))\nconst links = ref({})\nconst processing = ref(false)\n\n\nasync function submit() {\n processing.value = true;\n try {\n processing.value = true;\n const response = await api.post(`${resetPasswordUrl}.json`, {\n user: {\n email: email.value,\n },\n authenticityToken: authenticityToken.value,\n });\n\n nextAction.value = response.data[\"next_action\"]\n errorMessage.value = \"\"\n } catch (err) {\n console.log(err);\n errorMessage.value = err.response.data[\"errors\"]\n nextAction.value = \"\"\n } finally {\n processing.value = false;\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.forget_password_header {\n margin: $spacing-6 0 $spacing-8 0;\n}\n\n.form-inputs-container {\n margin-bottom: $spacing-2\n}\n\n.form-actions {\n width: 100%;\n\n @media (min-width: $breakpoint-sm) {\n width: auto;\n }\n}\n\n.forget-password-devise-links a {\n font-size: $text-base;\n color: $green-300;\n\n &:not(:last-child) {\n display: inline-block;\n margin-bottom: $spacing-6;\n }\n}\n\n.sign-in__devise-action-info-message {\n max-width: none;\n}\n\n.reset-password__error-message-container {\n width: 100%;\n margin-top: $spacing-6;\n background-color: $brand-secondary-light;\n border: 1px solid $brand-secondary;\n border-radius: $spacing-4;\n padding: $spacing-4;\n}\n</style>\n\n<i18n lang=\"yaml\">\n en:\n forgot_your_password: Forgot your password?\n email: Email\n reset_password_message: If this account exists, we'll send you a password reset email.\n sign_in: Have an account? Sign in here\n registration: Sign up\n new_password: Forgot your password?\n send_password_instructions: Send reset instructions\n</i18n>\n","<template>\n <div class=\"devise-form-container__form\">\n <div style=\"width: 100%\">\n <h2>{{ t(\"continue_with_social\") }}</h2>\n \n <div class=\"social-login-message\">\n {{ t(\"social_login_message\") }}\n </div>\n\n <ThirdPartyAuth \n :providers=\"[providerName]\" \n :showDivider=\"false\"\n />\n\n <div class=\"back-link\">\n <a href=\"/users/sign_in\">{{ t(\"back_to_signin\") }}</a>\n </div>\n </div>\n </div>\n <SignInImage />\n</template>\n\n<script setup>\nimport SignInImage from '@/modules/SignIn/SignInImage.vue';\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport { computed } from \"vue\";\nimport ThirdPartyAuth from \"@/modules/SignIn/Components/ThirdPartyAuth.vue\";\nimport { metaTagContent } from \"@/helpers/documentHelpers.js\";\n\nconst { t } = useShared();\nconst provider = metaTagContent('provider') || 'google_oauth2';\n\nconst providerName = computed(() => {\n if (provider === 'google_oauth2') return 'google';\n return provider || 'google';\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.social-login-message {\n margin: $spacing-6 0;\n color: $grey-100;\n text-align: center;\n}\n\n.back-link {\n margin-top: $spacing-8;\n text-align: center;\n \n a {\n color: $green-300;\n text-decoration: none;\n \n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n\n<i18n lang=\"yaml\">\n en:\n continue_with_social: Continue with social account\n social_login_message: Looks like you've previously signed in with a social account. Please continue with your social login.\n back_to_signin: Back to sign in\n</i18n>","import { createRouter, createWebHistory } from 'vue-router';\nimport { scrollBehavior } from \"@/helpers/vueHelpers.js\";\n\nimport SignIn from '@/modules/SignIn/SignIn.vue';\nimport SignUp from '@/modules/SignIn/SignUp.vue';\nimport ResetPassword from '@/modules/SignIn/ResetPassword.vue';\nimport ForgetPassword from '@/modules/SignIn/ForgetPassword.vue';\nimport SocialLoginRedirect from '@/modules/SignIn/SocialLoginRedirect.vue';\n\nexport default createRouter({\n history: createWebHistory(),\n routes: [\n {\n path: '/:lang/users/sign_in',\n name: 'signin',\n component: SignIn\n },\n {\n path: '/:lang/users/social_login',\n name: 'social_login',\n component: SocialLoginRedirect\n },\n {\n path: '/:lang/users/sign_up',\n name: 'signup',\n component: SignUp,\n },\n {\n path: '/:lang/users/password/new',\n name: 'forget_password',\n component: ForgetPassword,\n },\n {\n path: '/:lang/users/password',\n name: 'reset_password',\n component: ResetPassword,\n alias: '/:lang/users/password/edit',\n },\n ],\n scrollBehavior\n});\n","<template>\n <div class=\"sign-in-main devise-form-container\">\n <router-view></router-view>\n </div>\n</template>\n","import { initVueAppOnLoad } from \"@/app\";\nimport router from '@/routers/signIn.js';\nimport App from '@/views/SignIn.vue';\n\ninitVueAppOnLoad('#sign-in-main-app', App, async app => app.use(router));"],"names":["_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_createTextVNode","t","useShared","providerName","computed","provider","metaTagContent","form","ref","email","requestPasswordlessLink","errorMessage","nextAction","authenticityToken","resetPasswordUrl","redirectUrl","onMounted","dataTagContent","errorJson","getErrorArray","requestLink","route","useRoute","links","name","password","passwordConfirmation","passwordLength","processing","errorFields","signUp","useSignUp","onBeforeMount","submit","locationUrl","redirectTo","err","getErrorFields","getErrorMessagesInSentence","resetPasswordToken","changePasswordPath","showPassword","toggleShowPassword","emailRegex","EMAIL_REGEX","response","api","router","createRouter","createWebHistory","SignIn","SocialLoginRedirect","SignUp","ForgetPassword","ResetPassword","scrollBehavior","initVueAppOnLoad","App","app"],"mappings":"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"}