{"version":3,"file":"EmailForm.mjs","sources":["../../../../../../../../../web/src/ui/b2b/screens/EmailForm.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport React, { useState } from 'react';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport UsePasswordButton from '../components/UsePasswordButton';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { AppScreens } from '../types/AppScreens';\nimport { hasProduct } from '../utils';\nimport { useParseErrorMessage } from './useParseErrorMessage';\n\nexport const EmailForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n  const [state, dispatch] = useGlobalReducer();\n  const [emailInput, setEmailInput] = useState(state.formState.passwordState.email);\n  const parseErrorMessage = useParseErrorMessage();\n  const { t } = useLingui();\n\n  const { products } = useEffectiveAuthConfig();\n  const enableEml = hasProduct(products, 'emailMagicLinks');\n  const enableOtp = hasProduct(products, 'emailOtp');\n\n  const providedEmail = state.primary.email;\n  const email = providedEmail || emailInput;\n\n  const { trigger: stytchEmlLoginOrSignup, error: emlError, isMutating: emlIsMutating } = useEmlLoginOrSignup();\n  const { trigger: stytchOtpLoginOrSignup, error: otpError, isMutating: otpIsMutating } = useEmailOtpLoginOrSignup();\n\n  const isMutating = emlIsMutating || otpIsMutating;\n  const error = emlError || otpError;\n\n  const organization = state.flowState.organization;\n  if (!organization) return <></>;\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    dispatch({ type: 'set_user_supplied_email', email });\n\n    if (enableEml && enableOtp) {\n      dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n    } else if (enableEml) {\n      stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n    } else if (enableOtp) {\n      stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n    }\n  };\n\n  if (providedEmail) {\n    return (\n      <Column gap={2}>\n        {products\n          .filter((product) => product.id === 'emailMagicLinks' || product.id === 'emailOtp')\n          .map((product) => {\n            switch (product.id) {\n              case 'emailMagicLinks':\n                return (\n                  <Button\n                    key={product.id}\n                    onClick={() => {\n                      dispatch({ type: 'set_user_supplied_email', email });\n                      stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n                    }}\n                    loading={emlIsMutating}\n                    disabled={isMutating}\n                    variant=\"outline\"\n                  >\n                    {t({ id: 'button.emailLink', message: 'Email me a link' })}\n                  </Button>\n                );\n\n              case 'emailOtp':\n                return (\n                  <Button\n                    key={product.id}\n                    onClick={() => {\n                      dispatch({ type: 'set_user_supplied_email', email });\n                      stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n                    }}\n                    loading={otpIsMutating}\n                    disabled={isMutating}\n                    variant=\"outline\"\n                  >\n                    {t({ id: 'button.emailCode', message: 'Email me a code' })}\n                  </Button>\n                );\n            }\n          })}\n\n        {showPasswordButton && <UsePasswordButton email={email} />}\n      </Column>\n    );\n  }\n\n  return (\n    <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n      <EmailInput\n        email={email}\n        setEmail={setEmailInput}\n        hideLabel\n        error={error ? parseErrorMessage(error, { email, org: organization.organization_name }) : undefined}\n      />\n\n      <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n        {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n      </Button>\n\n      {showPasswordButton && <UsePasswordButton email={email} />}\n    </Column>\n  );\n};\n\nexport const EmailDiscoveryForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n  const [state, dispatch] = useGlobalReducer();\n  const [email, setEmail] = useState(state.formState.passwordState.email);\n  const { t } = useLingui();\n\n  const { products } = useEffectiveAuthConfig();\n  const enableEml = products.some((p) => p.id === 'emailMagicLinks');\n  const enableOtp = products.some((p) => p.id === 'emailOtp');\n\n  const { trigger: stytchEmlDiscoverySend, error: emlError, isMutating: emlIsMutating } = useEmlDiscoverySend();\n  const { trigger: stytchOtpDiscoverySend, error: otpError, isMutating: otpIsMutating } = useEmailOtpDiscoverySend();\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    dispatch({ type: 'set_user_supplied_email', email });\n\n    if (enableEml && enableOtp) {\n      dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n    } else if (enableEml) {\n      stytchEmlDiscoverySend({ email });\n    } else if (enableOtp) {\n      stytchOtpDiscoverySend({ email });\n    }\n  };\n\n  const isMutating = emlIsMutating || otpIsMutating;\n  const error = emlError || otpError;\n\n  return (\n    <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n      <EmailInput\n        email={email}\n        setEmail={setEmail}\n        hideLabel\n        error={error ? getTranslatedError(error, t) : undefined}\n      />\n\n      <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n        {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n      </Button>\n\n      {showPasswordButton && <UsePasswordButton email={email} />}\n    </Column>\n  );\n};\n"],"names":["EmailForm","showPasswordButton","state","dispatch","useGlobalReducer","emailInput","setEmailInput","useState","formState","passwordState","email","parseErrorMessage","useParseErrorMessage","useLingui","products","useEffectiveAuthConfig","enableEml","hasProduct","enableOtp","providedEmail","primary","trigger","stytchEmlLoginOrSignup","error","emlError","isMutating","emlIsMutating","useEmlLoginOrSignup","stytchOtpLoginOrSignup","otpError","otpIsMutating","useEmailOtpLoginOrSignup","organization","flowState","React","handleSubmit","e","preventDefault","type","screen","AppScreens","EmailMethodSelection","history","organization_id","Column","gap","filter","product","id","map","Button","key","onClick","loading","disabled","variant","UsePasswordButton","as","onSubmit","EmailInput","setEmail","hideLabel","org","organization_name","undefined","EmailDiscoveryForm","some","p","stytchEmlDiscoverySend","useEmlDiscoverySend","stytchOtpDiscoverySend","useEmailOtpDiscoverySend","getTranslatedError"],"mappings":"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"}