{"version":3,"file":"PasswordEmailForm.mjs","sources":["../../../../../../../../../web/src/ui/b2b/screens/PasswordEmailForm.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError } from '@stytch/core/public';\nimport React, { useState } from 'react';\n\nimport { EMAIL_REGEX } from '../../../utils';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useParseErrorMessage } from './useParseErrorMessage';\n\nexport const PasswordsEmailForm = () => {\n  const [, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const parseErrorMessages = useParseErrorMessage();\n\n  const {\n    stytch,\n    email,\n    setEmail,\n    password,\n    setPassword,\n    organization,\n    errorMessage,\n    setErrorMessage,\n    isSubmitting,\n    setIsSubmitting,\n    submitPassword,\n    submitDiscoveryPassword,\n    handleNonMemberReset,\n  } = usePasswordInput();\n\n  const [hideInput, setHideInput] = useState(!!organization && !email);\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    if (!organization) {\n      // Discovery flow\n      submitDiscoveryPassword();\n      return;\n    }\n\n    const organization_id = organization.organization_id;\n\n    // If we have processed the email, submit the password field\n    if (!hideInput) {\n      submitPassword(organization_id);\n      return;\n    }\n\n    // Validate we have a member with a password. Otherwise, check if we can jit\n    // provision and kickoff verification and session reset\n    if (!email.match(EMAIL_REGEX)) {\n      setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n      return;\n    }\n    setErrorMessage('');\n    setIsSubmitting(true);\n    readB2BInternals(stytch)\n      .searchManager.searchMember(email, organization.organization_id)\n      .then(({ member }) => {\n        if (member) {\n          setHideInput(false);\n          setIsSubmitting(false);\n          dispatch({ type: 'set_password_state', email });\n          return;\n        }\n        // No member password flow: verify email and use reset by session\n        handleNonMemberReset();\n      })\n      .catch((err: StytchAPIError) => {\n        setIsSubmitting(false);\n        setErrorMessage(parseErrorMessages(err, { email, org: organization_id }));\n      });\n  };\n\n  const onGetHelp = () => {\n    dispatch({ type: 'set_password_state', email: email });\n    dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n  };\n\n  return (\n    <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n      <EmailInput email={email} setEmail={setEmail} error={hideInput ? errorMessage : undefined} />\n\n      {!hideInput && (\n        <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n      )}\n\n      <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n        {t({ id: 'button.continue', message: 'Continue' })}\n      </Button>\n\n      {!hideInput && (\n        <Button variant=\"outline\" onClick={onGetHelp}>\n          {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n        </Button>\n      )}\n    </Column>\n  );\n};\n"],"names":["PasswordsEmailForm","dispatch","useGlobalReducer","useLingui","parseErrorMessages","useParseErrorMessage","stytch","email","setEmail","password","setPassword","organization","errorMessage","setErrorMessage","isSubmitting","setIsSubmitting","submitPassword","submitDiscoveryPassword","handleNonMemberReset","usePasswordInput","hideInput","setHideInput","useState","handleSubmit","e","preventDefault","organization_id","match","EMAIL_REGEX","readB2BInternals","searchManager","searchMember","then","member","type","catch","err","org","onGetHelp","screen","AppScreens","PasswordForgotForm","React","Column","as","onSubmit","gap","EmailInput","error","undefined","PasswordInput","Button","variant","loading","onClick"],"mappings":"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"}