{"version":3,"file":"sign_up_flow-hkPqQZTN.js","sources":["../../app/javascript/utils/password_utils.js","../../app/javascript/components/sign_up/sign_up_additional_info.jsx","../../app/javascript/components/sign_up/existing_user/additional_info.jsx","../../app/javascript/components/sign_up/existing_user/reset_password/email.jsx","../../app/javascript/components/sign_up/existing_user/reset_password/sms.tsx","../../app/javascript/components/sign_up/existing_user/reset_password/index.jsx","../../app/javascript/utils/headers.ts","../../app/javascript/components/sign_up/existing_user/sign_in_form.jsx","../../app/javascript/components/sign_up/disambiguate_during_sign_up.jsx","../../app/javascript/components/sign_up/sign_up_flow.jsx","../../app/javascript/entrypoints/react_rails/sign_up/sign_up_flow.tsx"],"sourcesContent":["// check if a password meets the minimum requirements:\n// - 10-30 characters\n// - 1 number\n// - 1 upper case letter\n// - 1 special character\nfunction isValidPassword(password) {\n // password does not meet requirements (10-30 char, 1 num, 1 upper, 1 special)\n const passFormat = /^(?=.*\\d)(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\\s).{10,30}$/;\n\n return password.match(passFormat) ? true : false;\n}\n\nexport { isValidPassword };\n","// Third-party imports.\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport { ParagraphSmall } from \"baseui/typography\";\nimport { NewTab } from \"@carbon/icons-react\";\nimport { StyledLink } from \"baseui/link\";\n\nconst Heading = styled(ParagraphSmall)`\n margin-top: ${({ theme }) => theme.sizing.scale400};\n margin-bottom: 0px;\n font-weight: ${({ theme }) => theme.typography.HeadingXSmall.fontWeight};\n`;\n\nconst StyledParagraphSmall = styled(ParagraphSmall)`\n margin-top: ${({ theme }) => theme.sizing.scale800};\n`;\n\nconst StyledLinksContainer = styled(ParagraphSmall)`\n display: inline-grid;\n grid-template-columns: auto auto;\n grid-gap: 5px;\n margin-top: ${({ theme }) => theme.sizing.scale300};\n margin-bottom: 0px;\n color: ${({ theme }) => theme.colors.primary500};\n`;\nclass SignUpAdditionalInfo extends React.Component {\n textContainerRef = React.createRef();\n\n static propTypes = {\n role: PropTypes.string.isRequired, // 'Student' or 'Mentor'\n translator: PropTypes.object.isRequired,\n };\n\n render() {\n return (\n
\n {this.renderFirstParagraph()}\n \n {this.props.translator.transformText(\n \"The next few steps will ensure that you have the information to succeed in your mentorship.\",\n )}\n \n Still confused?\n \n \n \n {this.getProgramInfoLinkText()}\n \n \n \n \n \n You can also email us at help@mentorcollective.org to ask individual questions\n \n \n
\n );\n }\n\n renderFirstParagraph() {\n const match = this.props.role === \"Student\" ? \"mentor\" : \"mentee\";\n\n return (\n \n Mentor Collective is an international mentoring community that partners with institutions\n like yours to deliver a transformative mentorship experience. You're in the process of being\n matched with a {this.props.translator.transformText(match)} in your institution's program.\n \n );\n }\n\n customOrDefaultProgramInfoUrl() {\n // These are URLs on our partner-facing website.\n if (this.props.role === \"Student\") {\n return \"https://www.mentorcollective.org/mentees\";\n } else if (this.props.role === \"Mentor\") {\n return \"https://www.mentorcollective.org/mentors\";\n }\n }\n\n getProgramInfoLinkText() {\n const role = this.props.role === \"Mentor\" ? \"mentor\" : \"mentee\";\n return this.props.translator.transformText(\n `Head over to the Mentor Collective website to learn more about becoming a ${role}`,\n );\n }\n\n componentDidMount() {\n if (this.textContainerRef?.current?.scrollIntoView) {\n this.textContainerRef.current.scrollIntoView();\n }\n }\n}\n\nexport default SignUpAdditionalInfo;\n","// Third-party imports.\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport { ParagraphSmall } from \"baseui/typography\";\nimport { StyledLink } from \"baseui/link\";\n\nconst Heading = styled(ParagraphSmall)`\n margin-top: ${({ theme }) => theme.sizing.scale400};\n margin-bottom: ${({ theme }) => theme.sizing.scale300};\n font-weight: ${({ theme }) => theme.typography.HeadingXSmall.fontWeight};\n`;\n\nclass ExistingUserAdditionalInfo extends React.Component {\n textContainerRef = React.createRef();\n\n render() {\n return (\n
\n \n Since you already have a mentor or mentee account with us, it's important that we link\n your new signup rather than create a new account. If you have multiple emails, make sure\n you enter the one with the domain outlined above (in bold).\n \n Still can't log in?\n \n Click \"Forgot password?\" and we'll send you a link to reset it. For any further questions,\n please write to{\" \"}\n help@mentorcollective.org{\" \"}\n or hit the \"back\" button on your browser and choose \"I'm not sure\" when asked \"Is this\n you?\" and a team member will reach out within 1 business day.\n \n
\n );\n }\n\n componentDidMount() {\n if (this.textContainerRef?.current?.scrollIntoView) {\n this.textContainerRef.current.scrollIntoView();\n }\n }\n}\n\nexport default ExistingUserAdditionalInfo;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport jQuery from \"jquery\";\nimport { ParagraphMedium } from \"baseui/typography\";\nimport { CenteredLoadingSpinner } from \"../../../components/base_ui/progress_and_validation/spinner/centered_loading_spinner\";\nimport { Button } from \"../../../components/base_ui/inputs/button\";\nimport FormControl from \"../../../components/base_ui/inputs/form_control\";\nimport Input from \"../../../components/base_ui/inputs/input\";\n\nconst EmailFormControlOverrides = {\n Label: {\n style: ({ $theme }) => ({\n fontFamily: $theme.typography.LabelMedium.fontFamily,\n fontWeight: $theme.typography.LabelMedium.fontWeight,\n fontSize: $theme.typography.LabelMedium.fontSize,\n lineHeight: $theme.typography.LabelMedium.lineHeight,\n textTransform: \"none\",\n }),\n },\n};\n\nfunction ResetEmailConfirmation({ email }) {\n return (\n
\n \n No worries! We sent an email to {email} that will let you log in and reset\n your password. If you didn't receive it, contact help@mentorcollective.org.\n \n
\n );\n}\nResetEmailConfirmation.propTypes = {\n email: PropTypes.string.isRequired,\n};\nfunction ResetWithKnownEmail({ email, onClickSend, errors, emailInFlight, emailSent }) {\n if (emailSent) {\n return ;\n }\n return (\n
\n \n Would you like to send a password reset email to {email}?\n \n {errors > 0 && (\n
\n {errors.map((error) => (\n
\n {error}\n
\n ))}\n
\n )}\n\n
\n {emailInFlight && }\n \n
\n
\n );\n}\nResetWithKnownEmail.propTypes = {\n email: PropTypes.string.isRequired,\n onClickSend: PropTypes.func.isRequired,\n errors: PropTypes.array.isRequired,\n emailInFlight: PropTypes.bool.isRequired,\n emailSent: PropTypes.bool.isRequired,\n};\n\nclass ResetWithUnknownEmail extends React.Component {\n static propTypes = {\n emailDomain: PropTypes.string.isRequired,\n onClickSend: PropTypes.func.isRequired,\n errors: PropTypes.array.isRequired,\n emailInFlight: PropTypes.bool.isRequired,\n emailSent: PropTypes.bool.isRequired,\n onClickBack: PropTypes.func.isRequired,\n };\n\n state = {\n inputEmail: \"\",\n };\n\n render() {\n if (this.props.emailSent) {\n return ;\n }\n return (\n
\n
\n \n Just enter your existing {this.props.emailDomain} email, and we'll send\n you a link to reset your password.\n \n
\n \n \n this.setState((prevState) => ({ ...prevState, inputEmail: updatedEmail }))\n }\n />\n \n
\n {this.props.errors.length > 0 && (\n
\n {this.props.errors.map((error) => (\n
\n {error}\n
\n ))}\n
\n )}\n
\n {this.props.emailInFlight && }\n this.props.onClickSend(this.state.inputEmail)}\n >\n Send Email\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default class ResetWithEmail extends React.Component {\n static propTypes = {\n // What do we already know about this existing user? We should either have\n // the email that a user entered and we validated as an existing account,\n // or if we instead identified them based on first/last name, the domain\n // of the email they already have registered (we don't know 100% if this is actually\n // the current user or not yet, so we don't have the full email), and whether or not\n // the already registered user has a valid phone #\n knownUserInfo: PropTypes.oneOfType([\n PropTypes.shape({\n emailDomain: PropTypes.string.isRequired,\n hasValidPhone: PropTypes.bool.isRequired,\n id: PropTypes.number.isRequired,\n }),\n PropTypes.shape({\n email: PropTypes.string.isRequired,\n }),\n ]),\n sendPasswordResetEmailPath: PropTypes.string.isRequired,\n programId: PropTypes.string.isRequired,\n roleToRegisterFor: PropTypes.string.isRequired,\n onClickBack: PropTypes.func.isRequired,\n };\n\n state = {\n errors: [],\n resetInFlight: false,\n emailSent: false,\n };\n\n isEmailValidForKnownUser = async (email) => {\n try {\n const result = await jQuery.get({\n url: \"/api/users/check_valid_email\",\n data: {\n user_id: this.props.knownUserInfo.id,\n email_to_validate: email,\n },\n });\n return result.is_valid;\n } catch (response) {\n this.setState((prevState) => ({\n ...prevState,\n errors: [\n \"There was a problem validating your input email address. Please try again or refresh the page\",\n ],\n }));\n return false;\n }\n };\n\n sendResetPasswordEmail = async (email) => {\n this.setState((prevState) => ({ ...prevState, resetInFlight: true }));\n try {\n await jQuery.post({\n url: this.props.sendPasswordResetEmailPath,\n data: {\n email,\n program_id: this.props.programId,\n role: this.props.roleToRegisterFor,\n },\n });\n this.setState((prevState) => ({ ...prevState, emailSent: true }));\n } catch (response) {\n // Display the error in the form.\n if (response.responseJSON) {\n this.setState((prevState) => ({ ...prevState, errors: response.responseJSON.errors }));\n } else if (response.status === 404) {\n this.setState((prevState) => ({\n ...prevState,\n errors: [\"Couldn't find any user with that email address.\"],\n }));\n } else {\n this.setState((prevState) => ({\n ...prevState,\n errors: [`Error: HTTP ${response.status}. Please try again or refresh the page.`],\n }));\n }\n return;\n } finally {\n this.setState((prevState) => ({ ...prevState, resetInFlight: false }));\n }\n };\n\n render() {\n return this.props.knownUserInfo.email ? (\n \n ) : (\n {\n const isEmailValid = await this.isEmailValidForKnownUser(email);\n if (isEmailValid) {\n await this.sendResetPasswordEmail(email);\n } else {\n this.setState((prevState) => ({\n ...prevState,\n errors: [\n `The email you entered doesn't match your existing email we have on file. Please enter your existing ${this.props.knownUserInfo.emailDomain} email and try again.`,\n ],\n }));\n }\n }}\n emailInFlight={this.state.resetInFlight}\n emailSent={this.state.emailSent}\n onClickBack={this.props.onClickBack}\n />\n );\n }\n}\n","import React, { useState } from \"react\";\nimport jQuery from \"jquery\";\nimport { ParagraphMedium } from \"baseui/typography\";\nimport { CenteredLoadingSpinner } from \"../../../components/base_ui/progress_and_validation/spinner/centered_loading_spinner\";\nimport { Button } from \"../../../components/base_ui/inputs/button\";\nimport FormControl from \"../../../components/base_ui/inputs/form_control\";\nimport Input from \"../../../components/base_ui/inputs/input\";\n\nexport async function sendRecoverySMS(\n userId: string,\n programId: string,\n firstName: string,\n lastName: string\n): Promise {\n try {\n const result = await jQuery.post({\n url: \"/api/users/send_sms_recovery_code\",\n data: {\n user_id: userId,\n program_id: programId,\n first_name: firstName,\n last_name: lastName,\n },\n });\n if (!result.sms_sent) {\n throw new Error(\"Something went wrong. SMS not sent\");\n }\n } catch (response) {\n throw new Error(\"Something went wrong trying to send an account recovery SMS\");\n }\n}\n\nexport default function ResetWithSms({\n onClickBack,\n userId,\n programId,\n roleToRegisterFor,\n}: {\n onClickBack: () => void;\n userId: string;\n programId: string;\n roleToRegisterFor: string;\n}) {\n const [inputRecoveryCode, setInputRecoveryCode] = useState(\"\");\n const [checkingCode, setCheckingCode] = useState(false);\n const [error, setError] = useState(\"\");\n\n return (\n
\n \n Great! We just sent a recovery code to the phone number you have registered to your existing\n account. Once you receive it, please enter it below.\n \n
\n ({\n fontFamily: $theme.typography.LabelMedium.fontFamily,\n fontWeight: $theme.typography.LabelMedium.fontWeight,\n fontSize: $theme.typography.LabelMedium.fontSize,\n lineHeight: $theme.typography.LabelMedium.lineHeight,\n textTransform: \"none\",\n }),\n },\n }}\n >\n \n setInputRecoveryCode(updatedCode)\n }\n />\n \n
\n {error && (\n
\n
{error}
\n
\n )}\n
\n {\n setCheckingCode(true);\n try {\n const result = await jQuery.post({\n url: \"/api/users/validate_recovery_code\",\n data: {\n user_id: userId,\n program_id: programId,\n recovery_code: inputRecoveryCode,\n role: roleToRegisterFor,\n },\n });\n if (!result.validated) {\n setError(\n \"Invalid code. Please double check your phone and try again. If you're still having problems, go back to the previous page and try again.\"\n );\n } else if (result.recovery_link) {\n window.location.replace(result.recovery_link);\n }\n } catch (response) {\n setError(\"There was a problem sending your code. Please reload and try again.\");\n } finally {\n setCheckingCode(false);\n }\n }}\n >\n Sign in\n \n
\n
\n {checkingCode && }\n \n
\n
\n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ResetWithEmail from \"./email\";\nimport ResetWithSms, { sendRecoverySMS } from \"./sms\";\nimport { ParagraphMedium } from \"baseui/typography\";\nimport { CenteredLoadingSpinner } from \"../../../components/base_ui/progress_and_validation/spinner/centered_loading_spinner\";\nimport { Button } from \"../../../components/base_ui/inputs/button\";\n\nconst email = \"email\";\nconst sms = \"sms\";\n\nexport default class ExistingUserResetPassword extends React.Component {\n static propTypes = {\n // What do we already know about this existing user? We should either have\n // the email that a user entered and we validated as an existing account,\n // or if we instead identified them based on first/last name, the domain\n // of the email they already have registered (we don't know 100% if this is actually\n // the current user or not yet, so we don't have the full email), and whether or not\n // the already registered user has a valid phone #\n knownUserInfo: PropTypes.oneOfType([\n PropTypes.shape({\n emailDomain: PropTypes.string.isRequired,\n hasValidPhone: PropTypes.bool.isRequired,\n id: PropTypes.number.isRequired,\n }),\n PropTypes.shape({\n email: PropTypes.string.isRequired,\n }),\n ]),\n inputUserInfo: PropTypes.shape({\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n }).isRequired,\n sendPasswordResetEmailPath: PropTypes.string.isRequired,\n programId: PropTypes.string.isRequired,\n roleToRegisterFor: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n recoveryType: props.knownUserInfo.email ? props.knownUserInfo.email : undefined,\n isSendingSMS: false,\n error: undefined,\n };\n }\n\n render() {\n return !this.props.knownUserInfo.hasValidPhone || this.state.recoveryType === email ? (\n \n this.setState((prevState) => ({ ...prevState, recoveryType: undefined }))\n }\n />\n ) : this.state.recoveryType === sms ? (\n \n this.setState((prevState) => ({ ...prevState, recoveryType: undefined }))\n }\n userId={this.props.knownUserInfo.id}\n programId={this.props.programId}\n roleToRegisterFor={this.props.roleToRegisterFor}\n />\n ) : (\n
\n
\n \n Looks like you have both an e-mail address and phone number associated with your\n existing account. To reset your password, we can send a code to either one. How would\n you like to receive your recovery code?\n \n
\n {this.state.error && (\n
\n
{this.state.error}
\n
\n )}\n
\n {\n this.setState((prevState) => ({ ...prevState, recoveryType: email }));\n }}\n >\n Reset with Email\n \n
\n
\n {this.state.isSendingSMS && }\n {\n this.setState((prevState) => ({ ...prevState, isSendingSMS: true }));\n try {\n await sendRecoverySMS(\n this.props.knownUserInfo.id,\n this.props.programId,\n this.props.inputUserInfo.firstName,\n this.props.inputUserInfo.lastName\n );\n } catch (error) {\n this.setState((prevState) => ({\n ...prevState,\n isSendingSMS: false,\n error:\n \"Something went wrong trying to send a SMS recovery code. Please reload the page and try again.\",\n }));\n }\n this.setState((prevState) => ({\n ...prevState,\n isSendingSMS: false,\n recoveryType: sms,\n }));\n }}\n >\n Reset with SMS\n \n
\n
\n );\n }\n}\n","import styled from \"styled-components\";\n\n/**\n * This component allows us to insert a Header 1 with the styling of\n * a Header 3 in the sign in / sign up flow pages.\n * @deprecated\n */\nexport const H1asH3 = styled.h1`\n font-size: 1.375em;\n font-weight: normal;\n letter-spacing: 0.0025em;\n line-height: 1.5em;\n margin-top: 0em;\n margin-bottom: 0.1em;\n`;\n\n/**\n * This component allows us to insert a Header 1 with the styling without\n * any visual indication that the text is different than the rest of a paragraph\n * in the sign in / sign up flow pages.\n * @deprecated\n */\nexport const SilentH1 = styled.h1<{ bold?: boolean }>`\n display: inline;\n font-size: 1em;\n font-weight: ${({ bold }: { bold?: boolean }) => (bold ? \"bold\" : \"normal\")};\n font-style: normal;\n`;\n","// Third-party imports.\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport jQuery from \"jquery\";\nimport { StyledLink } from \"baseui/link\";\nimport styled from \"styled-components\";\nimport { ParagraphMedium, ParagraphSmall } from \"baseui/typography\";\n\n// Our imports.\nimport { CenteredLoadingSpinner } from \"../../components/base_ui/progress_and_validation/spinner/centered_loading_spinner\";\nimport { Button } from \"../../components/base_ui/inputs/button\";\nimport FormControl from \"../../components/base_ui/inputs/form_control\";\nimport Input from \"../../components/base_ui/inputs/input\";\n\nimport ExistingUserAdditionalInfo from \"./additional_info\";\nimport ExistingUserResetPassword from \"./reset_password\";\nimport \"./sign_in_form.css\";\nimport { SilentH1 } from \"../../../utils/headers\";\n\nconst StyledContainer = styled.div`\n margin-top: ${({ theme }) => theme.sizing.scale600};\n`;\n\nconst StyledParagraph = styled(ParagraphSmall)`\n color: ${({ theme }) => theme.colors.contentTertiary};\n`;\n\nconst StyledInputsContainer = styled.div`\n label {\n font-family: ${({ theme }) => theme.typography.LabelMedium.fontFamily};\n font-weight: ${({ theme }) => theme.typography.LabelMedium.fontWeight};\n font-size: ${({ theme }) => theme.typography.LabelMedium.fontSize};\n line-height: ${({ theme }) => theme.typography.LabelMedium.lineHeight};\n text-transform: none;\n }\n`;\n\n// This component relies on a parent component to keep the email and password state for it.\nclass ExistingUserSignInForm extends React.Component {\n static propTypes = {\n roleToRegisterFor: PropTypes.string.isRequired, // \"Mentor\" | \"Student\"\n programId: PropTypes.string.isRequired,\n\n // What do we already know about this existing user? We should either have\n // the email that a user entered and we validated as an existing account,\n // or if we instead identified them based on first/last name, the domain\n // of the email they already have registered (we don't know 100% if this is actually\n // the current user or not yet, so we don't have the full email), and whether or not\n // the already registered user has a valid phone #\n knownUserInfo: PropTypes.oneOfType([\n PropTypes.shape({\n emailDomain: PropTypes.string.isRequired,\n hasValidPhone: PropTypes.bool.isRequired,\n id: PropTypes.number.isRequired,\n }),\n PropTypes.shape({\n email: PropTypes.string.isRequired,\n }),\n ]),\n inputUserInfo: PropTypes.shape({\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n }).isRequired,\n\n // What URL do we hit to sign up and register this person?\n signInPath: PropTypes.string.isRequired,\n registerPath: PropTypes.string.isRequired,\n sendPasswordResetEmailPath: PropTypes.string.isRequired,\n\n csrfToken: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n inputEmail: props.knownUserInfo.email ? props.knownUserInfo.email : \"\",\n inputPassword: \"\",\n\n // For tracking when we should display a spinner to let the user know we're doing something on\n // their behalf.\n processingSubmission: false,\n\n // Show/hide for the \"additional info\" box at the bottom of the screen.\n displayingAdditionalInfo: false,\n\n // We may display errors to the user if information they provided is invalid.\n errors: [],\n\n // If the User has signaled that they forgot their password\n forgotPassword: false,\n };\n }\n\n render() {\n let existingUserAdditionalInfo;\n if (this.state.displayingAdditionalInfo) {\n existingUserAdditionalInfo = ;\n }\n\n let headerElement;\n if (this.props.knownUserInfo.emailDomain) {\n headerElement = (\n \n \n Please log in to your existing account, using your{\" \"}\n {this.props.knownUserInfo.emailDomain} email.\n \n \n );\n } else {\n headerElement = (\n \n You already have an account with us — nice!\n \n Enter your password to log in and register for this year's program.\n \n \n );\n }\n\n return (\n
\n {this.state.forgotPassword ? (\n \n ) : (\n \n
{headerElement}
\n {this.renderFormElement()}\n {this.renderFormErrorsElement()}\n
\n \n this.setState((prevState) => ({ ...prevState, forgotPassword: true }))\n }\n >\n Forgot password?\n \n
\n
\n )}\n\n
\n
\n \n Not sure what's going on?{\" \"}\n \n this.setState({ displayingAdditionalInfo: !this.state.displayingAdditionalInfo })\n }\n >\n Learn More\n \n \n
\n {existingUserAdditionalInfo}\n
\n
\n );\n }\n\n renderFormErrorsElement() {\n if (this.state.errors.length === 0) {\n return null;\n }\n\n const errorItems = this.state.errors.map((error) => (\n
\n {error}\n
\n ));\n\n return
{errorItems}
;\n }\n\n renderFormElement() {\n // We aren't using the submit capabilities of the
element -- that is handled by Ajax.\n return (\n \n {this.renderFormItems()}\n {this.state.processingSubmission && }\n \n \n );\n }\n\n renderFormItems() {\n return (\n \n
\n \n \n this.setState((prevState) => ({\n ...prevState,\n inputEmail: updatedEmail,\n errors: [],\n }))\n }\n />\n \n
\n
\n \n \n this.setState((prevState) => ({\n ...prevState,\n inputPassword: updatedPassword,\n errors: [],\n }))\n }\n />\n \n
\n
\n );\n }\n\n /**\n * @return {Boolean} True if we allow the user to click the submit button, false otherwise.\n */\n allowSubmit() {\n return this.state.inputEmail && this.state.inputPassword;\n }\n\n onSubmitSignInForm = async (event) => {\n // We don't actually want the form to be submitted. Instead we take data from the form and\n // submit it using AJAX.\n event.preventDefault();\n\n // Start the button spinning so the user knows we're doing something.\n this.setState({ processingSubmission: true });\n\n // This is a two-request process: first we make a POST request to sign the user in, then we make\n // a POST request to register them for the program (if they are not registered already).\n try {\n // Note we are binding the return value of jQuery.post and then awaiting, not awaiting\n // directly. This is because we need to access the CSRF token in the first response so we can\n // use it in the second response. Rails generates a new CSRF token in between the first\n // request and the second.\n\n // See http://api.jquery.com/jQuery.ajax/#jqXHR for documentation about the jqXHR object.\n const signInjqXHR = jQuery.post({\n url: this.props.signInPath,\n headers: { \"X-CSRF-Token\": this.props.csrfToken },\n data: {\n api_user: {\n email: this.state.inputEmail,\n password: this.state.inputPassword,\n },\n },\n });\n await signInjqXHR;\n const newCSRFToken = signInjqXHR.getResponseHeader(\"X-CSRF-Token\");\n\n await jQuery.post({\n url: this.props.registerPath,\n headers: { \"X-CSRF-Token\": newCSRFToken },\n data: {\n role: this.props.roleToRegisterFor,\n program_id: this.props.programId,\n },\n });\n } catch (response) {\n // Display the error in the form.\n this.setState({ errors: [response.responseText] });\n return;\n } finally {\n this.setState({ processingSubmission: false });\n }\n\n // We're now signed in and registered for the new program, put them on the pipe.\n window.location.reload();\n };\n}\n\nexport default ExistingUserSignInForm;\n","// Our imports\nimport { SilentH1 } from \"../../utils/headers\";\n\n// Third-party imports.\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport \"./disambiguate_during_sign_up.css\";\nimport { Button } from \"../components/base_ui/inputs/button\";\nimport { ParagraphMedium } from \"baseui/typography\";\n\nclass DisambiguateDuringSignUp extends React.Component {\n static propTypes = {\n schoolName: PropTypes.string.isRequired,\n role: PropTypes.string.isRequired,\n\n email: PropTypes.string.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n\n existingUserData: PropTypes.object,\n\n onYesThatsMeClicked: PropTypes.func.isRequired,\n onNoThatsNotMeClicked: PropTypes.func.isRequired,\n };\n\n render() {\n return (\n
\n \n Our records show that somebody with the following contact information was either invited\n to this program by {this.props.schoolName}, or has been part of a Mentor Collective\n program in the past.\n \n\n {this.props.existingUserData && this.props.existingUserData?.redactedEmail && (\n \n Email: {this.props.existingUserData.redactedEmail}\n \n )}\n\n {this.props.existingUserData && this.props.existingUserData?.redactedPhone && (\n \n Phone: {this.props.existingUserData.redactedPhone}\n \n )}\n\n \n Is this you?\n \n\n
\n
\n \n
\n\n
\n \n
\n
\n
\n );\n }\n\n onClickedYesThatsMe = () => {\n this.props.onYesThatsMeClicked();\n };\n\n onClickedNoThatsNotMe = () => {\n this.props.onNoThatsNotMeClicked();\n };\n}\n\nexport default DisambiguateDuringSignUp;\n","// Third-party imports.\nimport React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport jQuery from \"jquery\";\nimport _ from \"lodash\";\nimport \"./sign_up_flow.css\";\n\n// Our imports.\nimport * as Utils from \"../../utils/utils\";\nimport { isValidPassword } from \"../../utils/password_utils\";\nimport { LoginPage as LoginBackground } from \"../login\";\nimport LegalTermsAgreement from \"../legal_terms_agreement\";\nimport EuCitizenCheckbox from \"./eu_citizen_checkbox\";\nimport { CenteredLoadingSpinner } from \"../components/base_ui/progress_and_validation/spinner/centered_loading_spinner\";\nimport { Button } from \"../components/base_ui/inputs/button\";\nimport FormControl from \"../components/base_ui/inputs/form_control\";\nimport Input from \"../components/base_ui/inputs/input\";\nimport SignUpAdditionalInfo from \"./sign_up_additional_info\";\nimport ExistingUserSignInForm from \"./existing_user/sign_in_form\";\nimport DisambiguateDuringSignUp from \"./disambiguate_during_sign_up\";\nimport styled, { ThemeProvider } from \"styled-components\";\nimport {\n StyledCard,\n StyledHeading,\n StyledParagraphMedium,\n} from \"../shared/login_and_sign_up/styled\";\nimport SsoButton from \"../sso_button\";\nimport deprecatedTheme from \"../styling/deprecated_theme\";\nimport { LabelTranslator } from \"../../utils/label_utils\";\nimport { StyledLink } from \"baseui/link\";\nimport { ParagraphSmall } from \"baseui/typography\";\nimport { Provider as StyletronProvider } from \"styletron-react\";\nimport { BaseProvider } from \"baseui\";\nimport baseuiTheme from \"../../components/styling/baseui_theme\";\nimport { ThemeProvider as MaterialThemeProvider, THEME_ID } from \"@mui/material/styles\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFnsV3\";\nimport materialTheme from \"../styling/material_theme\";\nimport { Client as Styletron } from \"styletron-engine-atomic\";\nimport ProgramSchoolLogoBlock from \"../shared/login_and_sign_up/program_school_logo_block\";\nimport { Enterprise } from \"@carbon/icons-react\";\nimport { emailRegex } from \"../../utils/string_utils\";\n\nconst engine = new Styletron();\n\nconst StyledParagraphSmall = styled(ParagraphSmall)`\n color: ${({ theme }) => theme.colors.contentTertiary};\n margin-top: 0px;\n margin-bottom: 0px;\n`;\n\nconst CheckboxContainer = styled.div`\n margin-top: ${({ theme }) => theme.sizing.scale800};\n margin-bottom: ${({ theme }) => theme.sizing.scale800};\n`;\n\nconst ButtonContainer = styled.div`\n margin-top: ${({ theme }) => theme.sizing.scale800};\n margin-bottom: ${({ theme }) => theme.sizing.scale1000};\n`;\n\n// States.\nconst signUpForm = \"signUpForm\";\nconst existingUserSignInForm = \"existingUserSignInForm\";\nconst disambiguating = \"disambiguating\";\n\n// Disambiguation outcomes.\nconst yesThatsMe = \"yes-thats-me\";\nconst noThatsNotMe = \"no-thats-not-me\";\nclass SignUpFlow extends React.Component {\n static propTypes = {\n userId: PropTypes.string,\n userFullName: PropTypes.string,\n activeSsoTokenForSchool: PropTypes.bool,\n role: PropTypes.string.isRequired, // e.g. 'Student' or 'Mentor'\n programData: PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n logo: PropTypes.string,\n shortName: PropTypes.string.isRequired,\n schoolName: PropTypes.string.isRequired,\n schoolShortName: PropTypes.string.isRequired,\n programInfoUrl: PropTypes.string,\n schoolId: PropTypes.string.isRequired,\n schoolLogo: PropTypes.string,\n programCustomLabel: PropTypes.object.isRequired,\n higherEdSegment: PropTypes.string.isRequired,\n }).isRequired,\n isSsoEnabled: PropTypes.bool.isRequired,\n ssoConnection: PropTypes.string,\n ssoBrand: PropTypes.string,\n\n // What URL to we hit to check if the user is signed up?\n checkIfUserSignedUpPath: PropTypes.string.isRequired,\n // What URL do we hit to determine if the user who's signing up is already a contact?\n detectExistingContactPath: PropTypes.string.isRequired,\n // What URL do we hit to determine if the user who's signing up might be a duplicate?\n detectDuplicatesPath: PropTypes.string.isRequired,\n\n // What URL do we hit to sign up and register this person?\n signUpAndRegisterPath: PropTypes.string.isRequired,\n signInPath: PropTypes.string.isRequired,\n registerPath: PropTypes.string.isRequired,\n sendPasswordResetEmailPath: PropTypes.string.isRequired,\n\n csrfToken: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const program = {\n programSequence: {\n higherEdSegment: props?.programData?.higherEdSegment?.toUpperCase(),\n },\n programCustomLabel: props.programData.programCustomLabel,\n };\n\n const translator = new LabelTranslator(program);\n\n this.state = {\n currentState: signUpForm, // Which state are we in?\n translator: translator,\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n password: \"\",\n confirmPassword: \"\",\n // GDPR regulations require the next two items.\n isEUCitizen: false,\n acceptedLegalTerms: false,\n\n // For tracking when we should display a spinner to let the user know we're doing something on\n // their behalf.\n processingSubmission: false,\n\n // We may display errors to the user if information they provided is invalid.\n errorLegalTerms: false,\n errorEmail: false,\n errorFirstName: false,\n errorLastName: false,\n errorPassword: false,\n errorConfirmPassword: false,\n errors: [],\n\n // Show/hide for the \"additional info\" box at the bottom of the screen.\n displayingAdditionalInfo: false,\n\n // Has this user been through the disambiguation flow? May be null, or strings yesThatsMe or\n // noThatsNotMe (defined at the top of this file).\n disambiguationOutcome: null,\n // What the backend has told us about the other user who might be this one (if applicable).\n existingUserData: null,\n };\n }\n\n render() {\n return (\n \n \n \n \n \n
{this.renderForCurrentState()}
\n
\n
\n
\n
\n
\n );\n }\n\n renderForCurrentState() {\n switch (this.state.currentState) {\n case signUpForm: {\n let signUpAdditionalInfo;\n if (this.state.displayingAdditionalInfo) {\n signUpAdditionalInfo = (\n \n );\n }\n\n return (\n \n \n \n {this.renderSignUpForm()}\n
\n
\n \n Not sure what's going on?{\" \"}\n \n this.setState({\n displayingAdditionalInfo: !this.state.displayingAdditionalInfo,\n })\n }\n >\n Learn More\n \n \n
\n {signUpAdditionalInfo}\n
\n
\n
\n );\n }\n case disambiguating: {\n return (\n
\n
\n \n
\n \n
\n );\n }\n case existingUserSignInForm: {\n return (\n
\n
\n \n
\n \n
\n );\n }\n }\n }\n\n onNoThatsNotMeClicked = () => {\n // Change state so the form appears again, then submit it. We pass a callback to setState which\n // fires once the form has been rendered.\n this.setState(\n { currentState: signUpForm, disambiguationOutcome: noThatsNotMe },\n this.signUpAndRegister,\n );\n };\n\n onYesThatsMeClicked = () => {\n this.setState({ disambiguationOutcome: yesThatsMe });\n\n // The user has indicated that they have an existing account. The account may be already signed\n // up (have a password), or it may not.\n if (this.state.existingUserData.isSignedUp) {\n // The other account is signed up, so the user needs to sign into it. Clear the data you've\n // typed in so far.\n this.setState({\n currentState: existingUserSignInForm,\n email: \"\",\n password: \"\",\n });\n return;\n }\n\n // Otherwise, we can just go ahead and sign them up ourselves.\n\n // Change state so the form appears again, then submit it. We pass a callback to setState which\n // fires once the form has been rendered.\n this.setState({ currentState: signUpForm }, () =>\n this.signUpAndRegister(this.state.existingUserData.id),\n );\n };\n\n renderSignUpForm() {\n let text;\n switch (this.props.role) {\n case \"Student\":\n text = this.state.translator.transformText(\"Sign Up to Get a Mentor\");\n break;\n case \"Mentor\":\n text = this.state.translator.transformText(\"Sign Up to Be a Mentor\");\n break;\n }\n\n return (\n
\n
\n {text}\n {this.renderMessageSection()}\n
\n {this.props.userId\n ? this.renderLoggedInUserRegistration()\n : this.renderNotLoggedInUserRegistration()}\n
\n );\n }\n\n renderLoggedInUserRegistration() {\n const ssoText = `Continue With ${\n this.props.ssoBrand ? this.props.ssoBrand : \"Institutional Credentials\"\n }`;\n return (\n \n {this.props.isSsoEnabled ? (\n \n {this.props.activeSsoTokenForSchool && (\n
\n \n }\n dataAnalyticsId=\"continue-with-sso-logged-in-user\"\n >\n {ssoText}\n \n \n
\n )}\n {!this.props.activeSsoTokenForSchool && (\n \n \n \n )}\n
\n ) : (\n
\n \n \n Sign Up\n \n \n
\n )}\n
\n );\n }\n\n renderNotLoggedInUserRegistration() {\n const queryParams = {\n is_eu: this.state.isEUCitizen,\n accepted_terms: this.state.acceptedLegalTerms,\n };\n\n return (\n \n {this.props.isSsoEnabled && (\n
\n \n \n this.setState({ acceptedLegalTerms: agreementStatus, errorLegalTerms: false })\n }\n />\n this.onFormDataChanged(\"isEUCitizen\", event.target.checked)}\n />\n \n \n \n \n
\n )}\n {!this.props.isSsoEnabled && this.renderFormElement()}\n {this.renderFormErrorsElement()}\n
\n );\n }\n\n renderMessageSection() {\n return (\n \n {this.props.userId ? (\n \n \n Welcome back,{\" \"}\n {this.props.userFullName}!\n {this.props.isSsoEnabled &&\n ` This program requires you to sign up using ${\n this.props.ssoBrand ? this.props.ssoBrand : \"Institutional Credentials\"\n }.`}{\" \"}\n Please follow the next few steps to get you registered for{\" \"}\n \n {this.props.programData.shortName} {this.props.programData.title}\n {\" \"}\n at {this.props.programData.schoolName}.\n \n \n Not your account?{\" \"}\n \n Sign out\n \n \n \n ) : (\n \n Welcome! Please sign up to join the{\" \"}\n \n {this.props.programData.shortName} {this.props.programData.title}\n {\" \"}\n at {this.props.programData.schoolName}.\n \n )}\n \n );\n }\n\n renderFormElement() {\n // We aren't using the submit capabilities of the
element -- that is handled by Ajax.\n return (\n \n {this.renderFormItems()}\n \n \n this.setState({ acceptedLegalTerms: agreementStatus, errorLegalTerms: false })\n }\n />\n this.onFormDataChanged(\"isEUCitizen\", event.target.checked)}\n />\n \n {this.state.processingSubmission && }\n \n \n Sign Up\n \n \n \n );\n }\n\n renderFormItems() {\n return (\n
\n \n \n \n \n {\n this.onFormDataChanged(\"firstName\", event.target.value);\n this.setState({ errorFirstName: false });\n }}\n dataTest={\"registration-first-name-input\"}\n />\n \n \n {\n this.onFormDataChanged(\"lastName\", event.target.value);\n this.setState({ errorLastName: false });\n }}\n dataTest={\"registration-last-name-input\"}\n />\n \n \n \n \n \n {\n this.onFormDataChanged(\"confirmPassword\", event.target.value);\n this.setState({ errorConfirmPassword: false });\n }}\n dataTest={\"registration-confirm-password-input\"}\n />\n \n
\n );\n }\n\n onEmailChanged = (event) => {\n const email = event.target.value;\n\n this.setState({ errorEmail: false });\n this.onFormDataChanged(\"email\", email);\n this.checkIfSignedUp(email);\n };\n\n onPasswordChanged = (event) => {\n this.setState({ errorPassword: false });\n this.onFormDataChanged(\"password\", event.target.value);\n };\n\n // We don't want to overwhelm the backend with requests, so we debounce it to ensure that the\n // check is only made 300 milliseconds after the user stops typing.\n checkIfSignedUp = _.debounce((email) => {\n // If we're in the signing-in-to-an-existing-user stage, don't check -- we don't want to update\n // the state no matter what the email changes to.\n if (this.state.existingUserData && this.state.existingUserData.isSignedUp) {\n return;\n }\n\n jQuery.getJSON(this.props.checkIfUserSignedUpPath, { email }).then((response) => {\n this.setState({ currentState: response.signed_up ? existingUserSignInForm : signUpForm });\n });\n }, 300);\n\n onFormDataChanged(key, newValue) {\n // Whenever form data changes, we want to reset the errors attribute as they may no longer be\n // relevant. (There might still be errors, of course, but we want to be optimistic. We'll\n // discover them again when the user presses submit.)\n const update = { errors: [] };\n update[key] = newValue;\n\n this.setState(update);\n }\n\n renderFormErrorsElement() {\n if (this.state.errors.length === 0) {\n return null;\n }\n\n const errorItems = this.state.errors.map((error) => (\n
\n {error}\n
\n ));\n\n return
{errorItems}
;\n }\n\n handleSsoValidate = (e) => {\n let validForSso = true;\n\n if (this.state.acceptedLegalTerms === false) {\n e.preventDefault();\n this.setState({ errorLegalTerms: true });\n validForSso = false;\n }\n\n return validForSso;\n };\n\n /**\n * Checks to make sure the information is valid, before allowing submission to proceed. Also\n * populates this.state.errors if it returns false.\n * @return {Boolean} True if we allow submission to proceed, false otherwise.\n */\n validateBeforeSubmission() {\n let errorsDetected = false;\n\n // no email\n if (this.state.email.trim() === \"\") {\n this.setState({ errorEmail: true });\n errorsDetected = true;\n }\n\n // invalid email format\n if (!this.state.email.match(emailRegex)) {\n this.setState({ errorEmail: true });\n errorsDetected = true;\n }\n\n // no first name\n if (this.state.firstName.trim() === \"\") {\n this.setState({ errorFirstName: true });\n errorsDetected = true;\n }\n\n // no last name\n if (this.state.lastName.trim() === \"\") {\n this.setState({ errorLastName: true });\n errorsDetected = true;\n }\n\n // password does not meet requirements\n if (!isValidPassword(this.state.password)) {\n this.setState({ errorPassword: true });\n errorsDetected = true;\n }\n\n // password confirm is null or does not match password\n if (\n this.state.confirmPassword.trim() === \"\" ||\n this.state.password !== this.state.confirmPassword\n ) {\n this.setState({ errorConfirmPassword: true });\n errorsDetected = true;\n }\n\n // legal terms were not accepted\n if (this.state.acceptedLegalTerms === false) {\n this.setState({ errorLegalTerms: true });\n errorsDetected = true;\n }\n\n return !errorsDetected;\n }\n\n signOut = async () => {\n await fetch(\"/api/users/sign_out\", {\n method: \"DELETE\",\n headers: {\n \"X-CSRF-Param\": \"authenticity_token\",\n \"X-CSRF-Token\": `${this.props.csrfToken}`,\n },\n }).then(() => {\n window.location.reload();\n });\n };\n\n onLoggedInUserSubmitSignUp = async (event) => {\n event.preventDefault();\n try {\n await jQuery.post({\n url: this.props.registerPath,\n headers: { \"X-CSRF-Token\": this.props.csrfToken },\n data: {\n role: this.props.role,\n program_id: this.props.programData.id,\n },\n });\n } catch (response) {\n // Display the error in the form.\n this.setState({ errors: response.responseJSON.errors });\n return;\n } finally {\n this.setState({ processingSubmission: false });\n }\n\n // We're now signed in. Reload the page to show the user the next step in the pre-match flow.\n window.location.reload();\n };\n\n onSubmitSignUpForm = async (event) => {\n // We don't actually want the form to be submitted. Instead we take data from the form and\n // submit it using AJAX.\n event.preventDefault();\n\n const validationPassed = this.validateBeforeSubmission();\n if (!validationPassed) {\n return;\n }\n\n // If we've already been through the disambiguation flow, just submit the form normally.\n if (this.state.disambiguationOutcome !== null) {\n return this.signUpAndRegister();\n }\n\n // Start the button spinning so the user knows we're doing something.\n this.setState({ processingSubmission: true });\n\n // Check to see if there are any existing contact users (not signed up) with the same name and email\n try {\n const data = {\n program_id: this.props.programData.id,\n first_name: this.state.firstName,\n last_name: this.state.lastName,\n email: this.state.email,\n };\n const response = await jQuery.getJSON(this.props.detectExistingContactPath, data);\n const matchingUserFromContact = Utils.withKeysCamelized(response.data).matchingUser;\n\n if (matchingUserFromContact !== null && !matchingUserFromContact.signedUp) {\n // If the call to the backend revealed that there's another user matching these details,\n // proceed to sign up with that information.\n return this.signUpAndRegister(matchingUserFromContact.id);\n }\n } catch (response) {\n // Do nothing: we'll notice the error on the backend, and we just want registration to proceed.\n }\n\n // Check to see if there are any existing users with the same name.\n try {\n const data = {\n program_id: this.props.programData.id,\n first_name: this.state.firstName,\n last_name: this.state.lastName,\n };\n const response = await jQuery.getJSON(this.props.detectDuplicatesPath, data);\n const matchingUserData = Utils.withKeysCamelized(response.data).matchingUser;\n\n if (matchingUserData !== null) {\n // If the call to the backend revealed that there's another user matching these details,\n // switch into the disambiguation flow.\n this.setState({ currentState: disambiguating, existingUserData: matchingUserData });\n return;\n }\n } catch (response) {\n // Do nothing: we'll notice the error on the backend, and we just want registration to proceed.\n }\n\n // Otherwise, proceed with the registration.\n return this.signUpAndRegister();\n };\n\n async signUpAndRegister(existingUserId) {\n try {\n await jQuery.post({\n url: this.props.signUpAndRegisterPath,\n data: {\n email: this.state.email,\n first_name: this.state.firstName,\n last_name: this.state.lastName,\n password: this.state.password,\n\n is_eu_citizen: this.state.isEUCitizen,\n has_accepted_privacy_policy: this.state.acceptedLegalTerms,\n\n role: this.props.role,\n program_id: this.props.programData.id,\n\n // The id of the (not signed-up) User record that we should \"absorb\" with this signup --\n // if any.\n existing_user_id: existingUserId,\n },\n });\n } catch (response) {\n // Display the error in the form.\n this.setState({ errors: response.responseJSON.errors });\n return;\n } finally {\n this.setState({ processingSubmission: false });\n }\n\n // We're now signed in. Reload the page to show the user the next step in the pre-match flow.\n window.location.reload();\n }\n}\n\nexport default SignUpFlow;\n","import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport SignUpFlow from \"../../../components/sign_up/sign_up_flow\";\n\nfunction init() {\n const componentElements = document.querySelectorAll('[data-react-class=\"sign_up/sign_up_flow\"]');\n componentElements.forEach((rootElement) => {\n const classString = rootElement.getAttribute(\"data-react-class\");\n const propsJson = rootElement.getAttribute(\"data-react-props\");\n const props = rootElement && JSON.parse(propsJson ?? \"\");\n if (classString) {\n const root = createRoot(rootElement);\n root.render();\n }\n });\n}\n\nif (document.readyState === \"complete\" || document.readyState === \"interactive\") {\n // document has at least been parsed\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n init();\n });\n}\n"],"names":["isValidPassword","password","passFormat","Heading","styled","ParagraphSmall","theme","StyledParagraphSmall","StyledLinksContainer","SignUpAdditionalInfo","React","__publicField","jsxs","jsx","NewTab","StyledLink","match","role","_b","_a","PropTypes","ExistingUserAdditionalInfo","EmailFormControlOverrides","$theme","ResetEmailConfirmation","email","ParagraphMedium","ResetWithKnownEmail","onClickSend","errors","emailInFlight","emailSent","error","CenteredLoadingSpinner","Button","ResetWithUnknownEmail","FormControl","Input","updatedEmail","prevState","ResetWithEmail","jQuery","response","sendRecoverySMS","userId","programId","firstName","lastName","ResetWithSms","onClickBack","roleToRegisterFor","inputRecoveryCode","setInputRecoveryCode","useState","checkingCode","setCheckingCode","setError","updatedCode","result","sms","ExistingUserResetPassword","props","SilentH1","bold","StyledContainer","StyledParagraph","StyledInputsContainer","ExistingUserSignInForm","event","signInjqXHR","newCSRFToken","existingUserAdditionalInfo","headerElement","errorItems","updatedPassword","DisambiguateDuringSignUp","engine","Styletron","CheckboxContainer","ButtonContainer","signUpForm","existingUserSignInForm","disambiguating","yesThatsMe","noThatsNotMe","SignUpFlow","_","e","validForSso","data","matchingUserFromContact","Utils.withKeysCamelized","matchingUserData","program","translator","LabelTranslator","StyletronProvider","BaseProvider","baseuiTheme","ThemeProvider","deprecatedTheme","MaterialThemeProvider","THEME_ID","materialTheme","LocalizationProvider","AdapterDateFns","signUpAdditionalInfo","LoginBackground","StyledCard","ProgramSchoolLogoBlock","text","StyledHeading","ssoText","Fragment","Enterprise","SsoButton","queryParams","LegalTermsAgreement","agreementStatus","EuCitizenCheckbox","StyledParagraphMedium","key","newValue","update","errorsDetected","emailRegex","existingUserId","init","rootElement","classString","propsJson","createRoot"],"mappings":"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"}