{"version":3,"file":"app.401f0285ccac7215701c.js","mappings":"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","sources":["webpack://@edx/frontend-app-authn/./src/config/index.js","webpack://@edx/frontend-app-authn/./src/i18n/index.jsx","webpack://@edx/frontend-app-authn/./src/data/constants.js","webpack://@edx/frontend-app-authn/./src/data/utils/dataUtils.js","webpack://@edx/frontend-app-authn/./src/data/utils/reduxUtils.js","webpack://@edx/frontend-app-authn/./src/data/utils/cookies.js","webpack://@edx/frontend-app-authn/./src/common-components/RedirectLogistration.jsx","webpack://@edx/frontend-app-authn/./src/common-components/EmbeddedRegistrationRoute.jsx","webpack://@edx/frontend-app-authn/./src/common-components/UnAuthOnlyRoute.jsx","webpack://@edx/frontend-app-authn/./src/common-components/NotFoundPage.jsx","webpack://@edx/frontend-app-authn/./src/common-components/messages.jsx","webpack://@edx/frontend-app-authn/./src/common-components/SocialAuthProviders.jsx","webpack://@edx/frontend-app-authn/./src/common-components/ThirdPartyAuthAlert.jsx","webpack://@edx/frontend-app-authn/./src/common-components/InstitutionLogistration.jsx","webpack://@edx/frontend-app-authn/./src/common-components/data/actions.js","webpack://@edx/frontend-app-authn/./src/common-components/data/reducers.js","webpack://@edx/frontend-app-authn/./src/common-components/data/service.js","webpack://@edx/frontend-app-authn/./src/register/data/actions.js","webpack://@edx/frontend-app-authn/./src/common-components/data/sagas.js","webpack://@edx/frontend-app-authn/./src/common-components/data/selectors.js","webpack://@edx/frontend-app-authn/./src/common-components/FormGroup.jsx","webpack://@edx/frontend-app-authn/./src/register/messages.jsx","webpack://@edx/frontend-app-authn/./src/register/data/utils.js","webpack://@edx/frontend-app-authn/./src/common-components/PasswordField.jsx","webpack://@edx/frontend-app-authn/./src/common-components/Zendesk.jsx","webpack://@edx/frontend-app-authn/./src/forgot-password/data/actions.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/selectors.js","webpack://@edx/frontend-app-authn/./src/forgot-password/messages.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/constants.js","webpack://@edx/frontend-app-authn/./src/forgot-password/ForgotPasswordAlert.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/default-layout/messages.js","webpack://@edx/frontend-app-authn/./src/base-container/components/default-layout/LargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/default-layout/MediumLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/default-layout/SmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/image-layout/messages.js","webpack://@edx/frontend-app-authn/./src/base-container/components/image-layout/LargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/image-layout/MediumLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/image-layout/SmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/image-layout/ExtraSmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/welcome-page-layout/messages.js","webpack://@edx/frontend-app-authn/./src/base-container/components/welcome-page-layout/LargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/welcome-page-layout/MediumLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/components/welcome-page-layout/SmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-container/index.jsx","webpack://@edx/frontend-app-authn/./src/base-container/data/constants.js","webpack://@edx/frontend-app-authn/./src/forgot-password/ForgotPasswordPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/actions.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/reducers.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/service.js","webpack://@edx/frontend-app-authn/./src/forgot-password/data/sagas.js","webpack://@edx/frontend-app-authn/./src/login/data/constants.js","webpack://@edx/frontend-app-authn/./src/login/messages.jsx","webpack://@edx/frontend-app-authn/./src/login/AccountActivationMessage.jsx","webpack://@edx/frontend-app-authn/./src/login/data/actions.js","webpack://@edx/frontend-app-authn/./src/login/data/selectors.js","webpack://@edx/frontend-app-authn/./src/data/utils/useMobileResponsive.js","webpack://@edx/frontend-app-authn/./src/login/ChangePasswordPrompt.jsx","webpack://@edx/frontend-app-authn/./src/login/LoginFailure.jsx","webpack://@edx/frontend-app-authn/./src/common-components/EnterpriseSSO.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/messages.js","webpack://@edx/frontend-app-authn/./src/reset-password/ResetPasswordSuccess.jsx","webpack://@edx/frontend-app-authn/./src/login/LoginPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/selectors.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/service.js","webpack://@edx/frontend-app-authn/./src/reset-password/ResetPasswordFailure.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/ResetPasswordPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/reducers.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/sagas.js","webpack://@edx/frontend-app-authn/./src/login/data/reducers.js","webpack://@edx/frontend-app-authn/./src/login/data/service.js","webpack://@edx/frontend-app-authn/./src/login/data/sagas.js","webpack://@edx/frontend-app-authn/./src/progressive-profiling/data/actions.js","webpack://@edx/frontend-app-authn/./src/progressive-profiling/data/selectors.js","webpack://@edx/frontend-app-authn/./src/progressive-profiling/messages.jsx","webpack://@edx/frontend-app-authn/./src/progressive-profiling/ProgressiveProfilingPageModal.jsx","webpack://@edx/frontend-app-authn/./src/data/oneTrust.js","webpack://@edx/frontend-app-authn/./src/field-renderer/FieldRenderer.jsx","webpack://@edx/frontend-app-authn/./src/progressive-profiling/ProgressiveProfiling.jsx","webpack://@edx/frontend-app-authn/./src/progressive-profiling/data/reducers.js","webpack://@edx/frontend-app-authn/./src/progressive-profiling/data/service.js","webpack://@edx/frontend-app-authn/./src/progressive-profiling/data/sagas.js","webpack://@edx/frontend-app-authn/./src/register/data/constants.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/NameField/validator.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/NameField/NameField.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/EmailField/constants.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/EmailField/validator.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/EmailField/EmailField.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/UsernameField/validator.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/UsernameField/UsernameField.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/CountryField/validator.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/CountryField/CountryField.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/HonorCodeField/HonorCode.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationFields/TermsOfServiceField/TermsOfService.jsx","webpack://@edx/frontend-app-authn/./src/register/components/ConfigurableRegistrationForm.jsx","webpack://@edx/frontend-app-authn/./src/register/components/RegistrationFailure.jsx","webpack://@edx/frontend-app-authn/./src/register/components/ThirdPartyAuth.jsx","webpack://@edx/frontend-app-authn/./src/register/RegistrationPage.jsx","webpack://@edx/frontend-app-authn/./src/register/data/reducers.js","webpack://@edx/frontend-app-authn/./src/register/data/service.js","webpack://@edx/frontend-app-authn/./src/register/data/sagas.js","webpack://@edx/frontend-app-authn/./src/data/sagas.js","webpack://@edx/frontend-app-authn/./src/data/configureStore.js","webpack://@edx/frontend-app-authn/./src/data/reducers.js","webpack://@edx/frontend-app-authn/./src/logistration/Logistration.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/data/constants.js","webpack://@edx/frontend-app-authn/./src/data/algolia.js","webpack://@edx/frontend-app-authn/./src/recommendations/data/algoliaResultsParser.js","webpack://@edx/frontend-app-authn/./src/recommendations/data/hooks/useAlgoliaRecommendations.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/messages.js","webpack://@edx/frontend-app-authn/./src/recommendations/data/loadingCoursesPlaceholders.js","webpack://@edx/frontend-app-authn/./src/recommendations/data/utils.js","webpack://@edx/frontend-app-authn/./src/recommendations/ProductCard/BaseCard/index.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/ProductCard/Footer/index.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/track.js","webpack://@edx/frontend-app-authn/./src/recommendations/ProductCard/index.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationsList.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationsPageLayouts/LargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationsPageLayouts/SmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationsPage.jsx","webpack://@edx/frontend-app-authn/./src/common-components/RegisterFaIcons.jsx","webpack://@edx/frontend-app-authn/./src/MainApp.jsx","webpack://@edx/frontend-app-authn/./src/index.jsx"],"sourcesContent":["const configuration = {\n // Cookies related configs\n SESSION_COOKIE_DOMAIN: process.env.SESSION_COOKIE_DOMAIN,\n USER_RETENTION_COOKIE_NAME: process.env.USER_RETENTION_COOKIE_NAME || '',\n // Features\n DISABLE_ENTERPRISE_LOGIN: process.env.DISABLE_ENTERPRISE_LOGIN || '',\n ENABLE_DYNAMIC_REGISTRATION_FIELDS: process.env.ENABLE_DYNAMIC_REGISTRATION_FIELDS || false,\n ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN: process.env.ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN || false,\n ENABLE_POST_REGISTRATION_RECOMMENDATIONS: process.env.ENABLE_POST_REGISTRATION_RECOMMENDATIONS || false,\n MARKETING_EMAILS_OPT_IN: process.env.MARKETING_EMAILS_OPT_IN || '',\n SHOW_CONFIGURABLE_EDX_FIELDS: process.env.SHOW_CONFIGURABLE_EDX_FIELDS || false,\n // Links\n ACTIVATION_EMAIL_SUPPORT_LINK: process.env.ACTIVATION_EMAIL_SUPPORT_LINK || null,\n AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK: process.env.AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK || null,\n LOGIN_ISSUE_SUPPORT_LINK: process.env.LOGIN_ISSUE_SUPPORT_LINK || null,\n PASSWORD_RESET_SUPPORT_LINK: process.env.PASSWORD_RESET_SUPPORT_LINK || null,\n POST_REGISTRATION_REDIRECT_URL: process.env.POST_REGISTRATION_REDIRECT_URL || '',\n PRIVACY_POLICY: process.env.PRIVACY_POLICY || null,\n SEARCH_CATALOG_URL: process.env.SEARCH_CATALOG_URL || null,\n TOS_AND_HONOR_CODE: process.env.TOS_AND_HONOR_CODE || null,\n TOS_LINK: process.env.TOS_LINK || null,\n // Base container images\n BANNER_IMAGE_LARGE: process.env.BANNER_IMAGE_LARGE || '',\n BANNER_IMAGE_MEDIUM: process.env.BANNER_IMAGE_MEDIUM || '',\n BANNER_IMAGE_SMALL: process.env.BANNER_IMAGE_SMALL || '',\n BANNER_IMAGE_EXTRA_SMALL: process.env.BANNER_IMAGE_EXTRA_SMALL || '',\n // Recommendation constants\n GENERAL_RECOMMENDATIONS: process.env.GENERAL_RECOMMENDATIONS || '[]',\n // Miscellaneous\n INFO_EMAIL: process.env.INFO_EMAIL || '',\n ZENDESK_KEY: process.env.ZENDESK_KEY,\n ZENDESK_LOGO_URL: process.env.ZENDESK_LOGO_URL,\n ALGOLIA_APP_ID: process.env.ALGOLIA_APP_ID || '',\n ALGOLIA_SEARCH_API_KEY: process.env.ALGOLIA_SEARCH_API_KEY || '',\n};\n\nexport default configuration;\n","import { messages as paragonMessages } from '@edx/paragon';\n\nimport arMessages from './messages/ar.json';\nimport deMessages from './messages/de.json';\nimport deDEMessages from './messages/de_DE.json';\nimport es419Messages from './messages/es_419.json';\nimport faIRMessages from './messages/fa_IR.json';\nimport frMessages from './messages/fr.json';\nimport frCAMessages from './messages/fr_CA.json';\nimport hiMessages from './messages/hi.json';\nimport itMessages from './messages/it.json';\nimport itITMessages from './messages/it_IT.json';\nimport ptMessages from './messages/pt.json';\nimport ptPTMessages from './messages/pt_PT.json';\nimport ruMessages from './messages/ru.json';\nimport ukMessages from './messages/uk.json';\nimport zhCNMessages from './messages/zh_CN.json';\n// no need to import en messages-- they are in the defaultMessage field\n\nconst appMessages = {\n ar: arMessages,\n de: deMessages,\n 'de-de': deDEMessages,\n 'es-419': es419Messages,\n 'fa-ir': faIRMessages,\n fr: frMessages,\n 'fr-ca': frCAMessages,\n hi: hiMessages,\n it: itMessages,\n 'it-it': itITMessages,\n pt: ptMessages,\n 'pt-pt': ptPTMessages,\n ru: ruMessages,\n uk: ukMessages,\n 'zh-cn': zhCNMessages,\n};\n\nexport default [\n paragonMessages,\n appMessages,\n];\n","// URL Paths\nexport const LOGIN_PAGE = '/login';\nexport const REGISTER_PAGE = '/register';\nexport const REGISTER_EMBEDDED_PAGE = '/register-embedded';\nexport const RESET_PAGE = '/reset';\nexport const AUTHN_PROGRESSIVE_PROFILING = '/welcome';\nexport const DEFAULT_REDIRECT_URL = '/dashboard';\nexport const RECOMMENDATIONS = '/recommendations';\nexport const PASSWORD_RESET_CONFIRM = '/password_reset_confirm/:token/';\nexport const PAGE_NOT_FOUND = '/notfound';\nexport const ENTERPRISE_LOGIN_URL = '/enterprise/login';\n\n// Constants\nexport const SUPPORTED_ICON_CLASSES = ['apple', 'facebook', 'google', 'microsoft'];\n\n// Error Codes\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const API_RATELIMIT_ERROR = 'api-ratelimit-error';\n\n// Common States\nexport const DEFAULT_STATE = 'default';\nexport const PENDING_STATE = 'pending';\nexport const COMPLETE_STATE = 'complete';\nexport const FAILURE_STATE = 'failure';\nexport const FORBIDDEN_STATE = 'forbidden';\nexport const EMBEDDED = 'embedded';\n\nexport const LETTER_REGEX = /[a-zA-Z]/;\nexport const NUMBER_REGEX = /\\d/;\nexport const VALID_EMAIL_REGEX = '(^[-!#$%&\\'*+/=?^_`{}|~0-9A-Z]+(\\\\.[-!#$%&\\'*+/=?^_`{}|~0-9A-Z]+)*'\n + '|^\"([\\\\001-\\\\010\\\\013\\\\014\\\\016-\\\\037!#-\\\\[\\\\]-\\\\177]|\\\\\\\\[\\\\001-\\\\011\\\\013\\\\014\\\\016-\\\\177])*\"'\n + ')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\\\\.)+)(?:[A-Z0-9-]{2,63})'\n + '|\\\\[(25[0-5]|2[0-4]\\\\d|[0-1]?\\\\d?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|[0-1]?\\\\d?\\\\d)){3}\\\\]$';\n\n// Query string parameters that can be passed to LMS to manage\n// things like auto-enrollment upon login and registration.\nexport const AUTH_PARAMS = ['course_id', 'enrollment_action', 'course_mode', 'email_opt_in', 'purchase_workflow', 'next', 'register_for_free', 'track', 'is_account_recovery', 'variant', 'host', 'cta'];\nexport const REDIRECT = 'redirect';\n","// Utility functions\nimport * as QueryString from 'query-string';\n\nimport { AUTH_PARAMS } from '../constants';\n\nexport const getTpaProvider = (tpaHintProvider, primaryProviders, secondaryProviders) => {\n let tpaProvider = null;\n let skipHintedLogin = false;\n [...primaryProviders, ...secondaryProviders].forEach((provider) => {\n if (provider.id === tpaHintProvider) {\n tpaProvider = provider;\n if (provider.skipHintedLogin) {\n skipHintedLogin = true;\n }\n }\n });\n return { provider: tpaProvider, skipHintedLogin };\n};\n\nexport const getTpaHint = () => {\n const params = QueryString.parse(window.location.search);\n let tpaHint = null;\n tpaHint = params.tpa_hint;\n if (!tpaHint) {\n const { next } = params;\n if (next) {\n const index = next.indexOf('tpa_hint=');\n if (index !== -1) {\n tpaHint = next.substring(index + 'tpa_hint='.length, next.length);\n }\n }\n }\n return tpaHint;\n};\n\nexport const updatePathWithQueryParams = (path) => {\n let queryParams = window.location.search;\n\n if (!queryParams) {\n return path;\n }\n\n if (queryParams.indexOf('track=pwreset') > -1) {\n queryParams = queryParams.replace(\n '?track=pwreset&', '?',\n ).replace('?track=pwreset', '').replace('&track=pwreset', '').replace('?&', '?');\n }\n\n return `${path}${queryParams}`;\n};\n\nexport const getAllPossibleQueryParams = (locationURl = null) => {\n const urlParams = locationURl ? QueryString.parseUrl(locationURl).query : QueryString.parse(window.location.search);\n const params = {};\n Object.entries(urlParams).forEach(([key, value]) => {\n if (AUTH_PARAMS.indexOf(key) > -1) {\n params[key] = value;\n }\n });\n\n return params;\n};\n\nexport const getActivationStatus = () => {\n const params = QueryString.parse(window.location.search);\n\n return params.account_activation_status;\n};\n\nexport const isScrollBehaviorSupported = () => 'scrollBehavior' in document.documentElement.style;\n\nexport const windowScrollTo = (options) => {\n if (isScrollBehaviorSupported()) {\n return window.scrollTo(options);\n }\n\n return window.scrollTo(options.top, options.left);\n};\n\nexport const isHostAvailableInQueryParams = () => {\n const queryParams = getAllPossibleQueryParams();\n return 'host' in queryParams;\n};\n","/**\n * Helper class to save time when writing out action types for asynchronous methods. Also helps\n * ensure that actions are namespaced.\n */\nexport default class AsyncActionType {\n constructor(topic, name) {\n this.topic = topic;\n this.name = name;\n }\n\n get BASE() {\n return `${this.topic}__${this.name}`;\n }\n\n get BEGIN() {\n return `${this.topic}__${this.name}__BEGIN`;\n }\n\n get SUCCESS() {\n return `${this.topic}__${this.name}__SUCCESS`;\n }\n\n get FAILURE() {\n return `${this.topic}__${this.name}__FAILURE`;\n }\n\n get RESET() {\n return `${this.topic}__${this.name}__RESET`;\n }\n\n get FORBIDDEN() {\n return `${this.topic}__${this.name}__FORBIDDEN`;\n }\n}\n","import { getConfig } from '@edx/frontend-platform';\nimport Cookies from 'universal-cookie';\n\nexport default function setCookie(cookieName, cookieValue, cookieExpiry) {\n const cookies = new Cookies();\n const options = { domain: getConfig().SESSION_COOKIE_DOMAIN, path: '/' };\n if (cookieExpiry) {\n options.expires = cookieExpiry;\n }\n cookies.set(cookieName, cookieValue, options);\n}\n","import { getConfig } from '@edx/frontend-platform';\nimport PropTypes from 'prop-types';\nimport { Navigate } from 'react-router-dom';\n\nimport {\n AUTHN_PROGRESSIVE_PROFILING, RECOMMENDATIONS, REDIRECT,\n} from '../data/constants';\nimport { setCookie } from '../data/utils';\n\nconst RedirectLogistration = (props) => {\n const {\n authenticatedUser,\n finishAuthUrl,\n redirectUrl,\n redirectToProgressiveProfilingPage,\n success,\n optionalFields,\n redirectToRecommendationsPage,\n educationLevel,\n userId,\n registrationEmbedded,\n host,\n } = props;\n let finalRedirectUrl = '';\n\n if (success) {\n // If we're in a third party auth pipeline, we must complete the pipeline\n // once user has successfully logged in. Otherwise, redirect to the specified redirect url.\n // Note: For multiple enterprise use case, we need to make sure that user first visits the\n // enterprise selection page and then complete the auth workflow\n if (finishAuthUrl && !redirectUrl.includes(finishAuthUrl)) {\n finalRedirectUrl = getConfig().LMS_BASE_URL + finishAuthUrl;\n } else {\n finalRedirectUrl = redirectUrl;\n }\n\n // Redirect to Progressive Profiling after successful registration\n if (redirectToProgressiveProfilingPage) {\n // TODO: Do we still need this cookie?\n setCookie('van-504-returning-user', true);\n\n if (registrationEmbedded) {\n window.parent.postMessage({\n action: REDIRECT,\n redirectUrl: getConfig().POST_REGISTRATION_REDIRECT_URL,\n }, host);\n return null;\n }\n const registrationResult = { redirectUrl: finalRedirectUrl, success };\n return (\n \n );\n }\n\n // Redirect to Recommendation page\n if (redirectToRecommendationsPage) {\n const registrationResult = { redirectUrl: finalRedirectUrl, success };\n return (\n \n );\n }\n\n window.location.href = finalRedirectUrl;\n }\n\n return null;\n};\n\nRedirectLogistration.defaultProps = {\n authenticatedUser: {},\n educationLevel: null,\n finishAuthUrl: null,\n success: false,\n redirectUrl: '',\n redirectToProgressiveProfilingPage: false,\n optionalFields: {},\n redirectToRecommendationsPage: false,\n userId: null,\n registrationEmbedded: false,\n host: '',\n};\n\nRedirectLogistration.propTypes = {\n authenticatedUser: PropTypes.shape({}),\n educationLevel: PropTypes.string,\n finishAuthUrl: PropTypes.string,\n success: PropTypes.bool,\n redirectUrl: PropTypes.string,\n redirectToProgressiveProfilingPage: PropTypes.bool,\n optionalFields: PropTypes.shape({}),\n redirectToRecommendationsPage: PropTypes.bool,\n userId: PropTypes.number,\n registrationEmbedded: PropTypes.bool,\n host: PropTypes.string,\n};\n\nexport default RedirectLogistration;\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { Navigate } from 'react-router-dom';\n\nimport { PAGE_NOT_FOUND } from '../data/constants';\nimport { isHostAvailableInQueryParams } from '../data/utils';\n\n/**\n * This wrapper redirects the requester to embedded register page only if host\n * query param is present.\n */\nconst EmbeddedRegistrationRoute = ({ children }) => {\n const registrationEmbedded = isHostAvailableInQueryParams();\n\n // Show registration page for embedded experience even if the user is authenticated\n if (registrationEmbedded) {\n return children;\n }\n\n return ;\n};\n\nEmbeddedRegistrationRoute.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default EmbeddedRegistrationRoute;\n","import { useEffect, useState } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { fetchAuthenticatedUser, getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport PropTypes from 'prop-types';\n\nimport {\n DEFAULT_REDIRECT_URL,\n} from '../data/constants';\n\n/**\n * This wrapper redirects the requester to our default redirect url if they are\n * already authenticated.\n */\nconst UnAuthOnlyRoute = ({ children }) => {\n const [authUser, setAuthUser] = useState({});\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n fetchAuthenticatedUser({ forceRefresh: !!getAuthenticatedUser() }).then((authenticatedUser) => {\n setAuthUser(authenticatedUser);\n setIsReady(true);\n });\n }, []);\n\n if (isReady) {\n if (authUser && authUser.username) {\n global.location.href = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n return null;\n }\n\n return children;\n }\n\n return null;\n};\n\nUnAuthOnlyRoute.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default UnAuthOnlyRoute;\n","import React from 'react';\n\nimport { FormattedMessage } from '@edx/frontend-platform/i18n';\n\nconst NotFoundPage = () => (\n
\n

\n \n

\n
\n);\n\nexport default NotFoundPage;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n // institution login strings\n 'institution.login.page.sub.heading': {\n id: 'institution.login.page.sub.heading',\n defaultMessage: 'Choose your institution from the list below',\n description: 'Heading of the institutions list',\n },\n // logistration strings\n 'logistration.sign.in': {\n id: 'logistration.sign.in',\n defaultMessage: 'Sign in',\n description: 'Text that appears on the tab to switch between login and register',\n },\n 'logistration.register': {\n id: 'logistration.register',\n defaultMessage: 'Register',\n description: 'Text that appears on the tab to switch between login and register',\n },\n // enterprise sso strings\n 'enterprisetpa.title.heading': {\n id: 'enterprisetpa.title.heading',\n defaultMessage: 'Would you like to sign in using your {providerName} credentials?',\n description: 'Header text used in enterprise third party authentication',\n },\n 'enterprisetpa.login.button.text': {\n id: 'enterprisetpa.login.button.text',\n defaultMessage: 'Show me other ways to sign in or register',\n description: 'Button text for login',\n },\n 'enterprisetpa.login.button.text.public.account.creation.disabled': {\n id: 'enterprisetpa.login.button.text.public.account.creation.disabled',\n defaultMessage: 'Show me other ways to sign in',\n description: 'Button text for login when account creation is disabled',\n },\n // social auth providers\n 'sso.sign.in.with': {\n id: 'sso.sign.in.with',\n defaultMessage: 'Sign in with {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n 'sso.create.account.using': {\n id: 'sso.create.account.using',\n defaultMessage: 'Create account using {providerName}',\n description: 'Screen reader text that appears before social auth provider name',\n },\n // password field strings\n 'show.password': {\n id: 'show.password',\n defaultMessage: 'Show password',\n description: 'aria label for show password icon on password field',\n },\n 'hide.password': {\n id: 'hide.password',\n defaultMessage: 'Hide password',\n description: 'aria label for hide password icon on password field',\n },\n 'one.letter': {\n id: 'one.letter',\n defaultMessage: '1 letter',\n description: 'password requirement to have 1 letter',\n },\n 'one.number': {\n id: 'one.number',\n defaultMessage: '1 number',\n description: 'password requirement to have 1 number',\n },\n 'eight.characters': {\n id: 'eight.characters',\n defaultMessage: '8 characters',\n description: 'password requirement to have a minimum of 8 characters',\n },\n 'password.sr.only.helping.text': {\n id: 'password.sr.only.helping.text',\n defaultMessage: 'Password must contain at least 8 characters, at least one letter, and at least one number',\n description: 'Password helping text for the sr-only class',\n },\n // third party auth\n 'tpa.alert.heading': {\n id: 'tpa.alert.heading',\n defaultMessage: 'Almost done!',\n description: 'Success alert heading after user has successfully signed in with social auth',\n },\n 'login.third.party.auth.account.not.linked': {\n id: 'login.third.party.auth.account.not.linked',\n defaultMessage: 'You have successfully signed into {currentProvider}, but your {currentProvider} '\n + 'account does not have a linked {platformName} account. To link your accounts, '\n + 'sign in now using your {platformName} password.',\n description: 'Message that appears on login page if user has successfully authenticated with social '\n + 'auth but no associated platform account exists',\n },\n 'register.third.party.auth.account.not.linked': {\n id: 'register.third.party.auth.account.not.linked',\n defaultMessage: 'You\\'ve successfully signed into {currentProvider}! We just need a little more information '\n + 'before you start learning with {platformName}.',\n description: 'Message that appears on register page if user has successfully authenticated with TPA '\n + 'but no associated platform account exists',\n },\n 'registration.using.tpa.form.heading': {\n id: 'registration.using.tpa.form.heading',\n defaultMessage: 'Finish creating your account',\n description: 'Heading that appears above form when user is trying to create account using social auth',\n },\n supportTitle: {\n id: 'zendesk.supportTitle',\n description: 'Title for the support button',\n defaultMessage: 'edX Support',\n },\n selectTicketForm: {\n id: 'zendesk.selectTicketForm',\n description: 'Select ticket form',\n defaultMessage: 'Please choose your request type:',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Icon } from '@edx/paragon';\nimport { Login } from '@edx/paragon/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';\n\nconst SocialAuthProviders = (props) => {\n const { formatMessage } = useIntl();\n const { referrer, socialAuthProviders } = props;\n\n function handleSubmit(e) {\n e.preventDefault();\n\n const url = e.currentTarget.dataset.providerUrl;\n window.location.href = getConfig().LMS_BASE_URL + url;\n }\n\n const socialAuth = socialAuthProviders.map((provider, index) => (\n \n {provider.iconImage ? (\n
\n {`icon\n
\n )\n : (\n
\n {SUPPORTED_ICON_CLASSES.includes(provider.iconClass) ? (\n )\n : (\n \n )}\n
\n )}\n {provider.name}\n \n {referrer === LOGIN_PAGE\n ? formatMessage(messages['sso.sign.in.with'], { providerName: provider.name })\n : formatMessage(messages['sso.create.account.using'], { providerName: provider.name })}\n \n \n ));\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{socialAuth};\n};\n\nSocialAuthProviders.defaultProps = {\n referrer: LOGIN_PAGE,\n socialAuthProviders: [],\n};\n\nSocialAuthProviders.propTypes = {\n referrer: PropTypes.string,\n socialAuthProviders: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n iconClass: PropTypes.string,\n iconImage: PropTypes.string,\n loginUrl: PropTypes.string,\n registerUrl: PropTypes.string,\n skipRegistrationForm: PropTypes.bool,\n })),\n};\n\nexport default SocialAuthProviders;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\n\nconst ThirdPartyAuthAlert = (props) => {\n const { formatMessage } = useIntl();\n const { currentProvider, referrer } = props;\n const platformName = getConfig().SITE_NAME;\n let message;\n\n if (referrer === LOGIN_PAGE) {\n message = formatMessage(messages['login.third.party.auth.account.not.linked'], { currentProvider, platformName });\n } else {\n message = formatMessage(messages['register.third.party.auth.account.not.linked'], { currentProvider, platformName });\n }\n\n if (!currentProvider) {\n return null;\n }\n\n return (\n <>\n \n {referrer === REGISTER_PAGE ? (\n {formatMessage(messages['tpa.alert.heading'])}\n ) : null}\n

{ message }

\n
\n {referrer === REGISTER_PAGE ? (\n

{formatMessage(messages['registration.using.tpa.form.heading'])}

\n ) : null}\n \n );\n};\n\nThirdPartyAuthAlert.defaultProps = {\n currentProvider: '',\n referrer: LOGIN_PAGE,\n};\n\nThirdPartyAuthAlert.propTypes = {\n currentProvider: PropTypes.string,\n referrer: PropTypes.string,\n};\n\nexport default ThirdPartyAuthAlert;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button, Hyperlink, Icon } from '@edx/paragon';\nimport { Institution } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\n/**\n * This component renders the Institution login button\n * */\nexport const RenderInstitutionButton = props => {\n const { onSubmitHandler, buttonTitle } = props;\n\n return (\n \n \n {buttonTitle}\n \n );\n};\n\n/**\n * This component renders the page list of available institutions for login\n * */\nconst InstitutionLogistration = props => {\n const lmsBaseUrl = getConfig().LMS_BASE_URL;\n const { formatMessage } = useIntl();\n const {\n secondaryProviders,\n headingTitle,\n } = props;\n\n return (\n <>\n
\n
\n

\n {headingTitle}\n

\n

\n {formatMessage(messages['institution.login.page.sub.heading'])}\n

\n
\n
\n
\n \n \n {secondaryProviders.map(provider => (\n \n \n \n ))}\n \n
\n \n {provider.name}\n \n
\n
\n \n );\n};\n\nconst LogistrationDefaultProps = {\n secondaryProviders: [],\n buttonTitle: '',\n};\nconst LogistrationProps = {\n secondaryProviders: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n loginUrl: PropTypes.string.isRequired,\n })),\n};\n\nRenderInstitutionButton.propTypes = {\n ...LogistrationProps,\n buttonTitle: PropTypes.string,\n onSubmitHandler: PropTypes.func.isRequired,\n\n};\nRenderInstitutionButton.defaultProps = {\n ...LogistrationDefaultProps,\n};\n\nInstitutionLogistration.propTypes = {\n ...LogistrationProps,\n headingTitle: PropTypes.string,\n};\nInstitutionLogistration.defaultProps = {\n ...LogistrationDefaultProps,\n headingTitle: '',\n};\n\nexport default InstitutionLogistration;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const THIRD_PARTY_AUTH_CONTEXT = new AsyncActionType('THIRD_PARTY_AUTH', 'GET_THIRD_PARTY_AUTH_CONTEXT');\nexport const THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG = 'THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG';\n\n// Third party auth context\nexport const getThirdPartyAuthContext = (urlParams) => ({\n type: THIRD_PARTY_AUTH_CONTEXT.BASE,\n payload: { urlParams },\n});\n\nexport const getThirdPartyAuthContextBegin = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT.BEGIN,\n});\n\nexport const getThirdPartyAuthContextSuccess = (fieldDescriptions, optionalFields, thirdPartyAuthContext) => ({\n type: THIRD_PARTY_AUTH_CONTEXT.SUCCESS,\n payload: { fieldDescriptions, optionalFields, thirdPartyAuthContext },\n});\n\nexport const getThirdPartyAuthContextFailure = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT.FAILURE,\n});\n\nexport const clearThirdPartyAuthContextErrorMessage = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG,\n});\n","import { THIRD_PARTY_AUTH_CONTEXT, THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG } from './actions';\nimport { COMPLETE_STATE, FAILURE_STATE, PENDING_STATE } from '../../data/constants';\n\nexport const defaultState = {\n fieldDescriptions: {\n fields: {},\n },\n optionalFields: {\n fields: {},\n extended_profile: [],\n },\n thirdPartyAuthApiStatus: null,\n thirdPartyAuthContext: {\n autoSubmitRegForm: false,\n currentProvider: null,\n finishAuthUrl: null,\n countryCode: null,\n providers: [],\n secondaryProviders: [],\n pipelineUserDetails: null,\n errorMessage: null,\n welcomePageRedirectUrl: null,\n },\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case THIRD_PARTY_AUTH_CONTEXT.BEGIN:\n return {\n ...state,\n thirdPartyAuthApiStatus: PENDING_STATE,\n };\n case THIRD_PARTY_AUTH_CONTEXT.SUCCESS: {\n return {\n ...state,\n fieldDescriptions: action.payload.fieldDescriptions.fields,\n optionalFields: action.payload.optionalFields,\n thirdPartyAuthContext: action.payload.thirdPartyAuthContext,\n thirdPartyAuthApiStatus: COMPLETE_STATE,\n };\n }\n case THIRD_PARTY_AUTH_CONTEXT.FAILURE:\n return {\n ...state,\n thirdPartyAuthApiStatus: FAILURE_STATE,\n thirdPartyAuthContext: {\n ...state.thirdPartyAuthContext,\n errorMessage: null,\n },\n };\n case THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG:\n return {\n ...state,\n thirdPartyAuthApiStatus: PENDING_STATE,\n thirdPartyAuthContext: {\n ...state.thirdPartyAuthContext,\n errorMessage: null,\n },\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function getThirdPartyAuthContext(urlParams) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n params: urlParams,\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .get(\n `${getConfig().LMS_BASE_URL}/api/mfe_context`,\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n return {\n fieldDescriptions: data.registrationFields || {},\n optionalFields: data.optionalFields || {},\n thirdPartyAuthContext: data.contextData || {},\n };\n}\n","import { AsyncActionType } from '../../data/utils';\n\nexport const BACKUP_REGISTRATION_DATA = new AsyncActionType('REGISTRATION', 'BACKUP_REGISTRATION_DATA');\nexport const REGISTER_FORM_VALIDATIONS = new AsyncActionType('REGISTRATION', 'GET_FORM_VALIDATIONS');\nexport const REGISTER_NEW_USER = new AsyncActionType('REGISTRATION', 'REGISTER_NEW_USER');\nexport const REGISTER_CLEAR_USERNAME_SUGGESTIONS = 'REGISTRATION_CLEAR_USERNAME_SUGGESTIONS';\nexport const REGISTRATION_CLEAR_BACKEND_ERROR = 'REGISTRATION_CLEAR_BACKEND_ERROR';\nexport const REGISTER_SET_COUNTRY_CODE = 'REGISTER_SET_COUNTRY_CODE';\nexport const REGISTER_SET_USER_PIPELINE_DATA_LOADED = 'REGISTER_SET_USER_PIPELINE_DATA_LOADED';\n\n// Backup registration form\nexport const backupRegistrationForm = () => ({\n type: BACKUP_REGISTRATION_DATA.BASE,\n});\n\nexport const backupRegistrationFormBegin = (data) => ({\n type: BACKUP_REGISTRATION_DATA.BEGIN,\n payload: { ...data },\n});\n\n// Validate fields from the backend\nexport const fetchRealtimeValidations = (formPayload) => ({\n type: REGISTER_FORM_VALIDATIONS.BASE,\n payload: { formPayload },\n});\n\nexport const fetchRealtimeValidationsBegin = () => ({\n type: REGISTER_FORM_VALIDATIONS.BEGIN,\n});\n\nexport const fetchRealtimeValidationsSuccess = (validations) => ({\n type: REGISTER_FORM_VALIDATIONS.SUCCESS,\n payload: { validations },\n});\n\nexport const fetchRealtimeValidationsFailure = () => ({\n type: REGISTER_FORM_VALIDATIONS.FAILURE,\n});\n\n// Register\nexport const registerNewUser = registrationInfo => ({\n type: REGISTER_NEW_USER.BASE,\n payload: { registrationInfo },\n});\n\nexport const registerNewUserBegin = () => ({\n type: REGISTER_NEW_USER.BEGIN,\n});\n\nexport const registerNewUserSuccess = (authenticatedUser, redirectUrl, success) => ({\n type: REGISTER_NEW_USER.SUCCESS,\n payload: { authenticatedUser, redirectUrl, success },\n\n});\n\nexport const registerNewUserFailure = (error) => ({\n type: REGISTER_NEW_USER.FAILURE,\n payload: { ...error },\n});\n\nexport const clearUsernameSuggestions = () => ({\n type: REGISTER_CLEAR_USERNAME_SUGGESTIONS,\n});\n\nexport const clearRegistrationBackendError = (fieldName) => ({\n type: REGISTRATION_CLEAR_BACKEND_ERROR,\n payload: fieldName,\n});\n\nexport const setCountryFromThirdPartyAuthContext = (countryCode) => ({\n type: REGISTER_SET_COUNTRY_CODE,\n payload: { countryCode },\n});\n\nexport const setUserPipelineDataLoaded = (value) => ({\n type: REGISTER_SET_USER_PIPELINE_DATA_LOADED,\n payload: { value },\n});\n","import { logError } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n getThirdPartyAuthContextBegin,\n getThirdPartyAuthContextFailure,\n getThirdPartyAuthContextSuccess,\n THIRD_PARTY_AUTH_CONTEXT,\n} from './actions';\nimport {\n getThirdPartyAuthContext,\n} from './service';\nimport { setCountryFromThirdPartyAuthContext } from '../../register/data/actions';\n\nexport function* fetchThirdPartyAuthContext(action) {\n try {\n yield put(getThirdPartyAuthContextBegin());\n const {\n fieldDescriptions, optionalFields, thirdPartyAuthContext,\n } = yield call(getThirdPartyAuthContext, action.payload.urlParams);\n\n yield put(setCountryFromThirdPartyAuthContext(thirdPartyAuthContext.countryCode));\n yield put(getThirdPartyAuthContextSuccess(fieldDescriptions, optionalFields, thirdPartyAuthContext));\n } catch (e) {\n yield put(getThirdPartyAuthContextFailure());\n logError(e);\n }\n}\n\nexport default function* saga() {\n yield takeEvery(THIRD_PARTY_AUTH_CONTEXT.BASE, fetchThirdPartyAuthContext);\n}\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'commonComponents';\n\nexport const commonComponentsSelector = state => ({ ...state[storeName] });\n\nexport const thirdPartyAuthContextSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.thirdPartyAuthContext,\n);\n\nexport const fieldDescriptionSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.fieldDescriptions,\n);\n\nexport const optionalFieldsSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.optionalFields,\n);\n\nexport const tpaProvidersSelector = createSelector(\n commonComponentsSelector,\n commonComponents => ({\n providers: commonComponents.thirdPartyAuthContext.providers,\n secondaryProviders: commonComponents.thirdPartyAuthContext.secondaryProviders,\n }),\n);\n","import React, { useState } from 'react';\n\nimport {\n Form, TransitionReplace,\n} from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nconst FormGroup = (props) => {\n const [hasFocus, setHasFocus] = useState(false);\n\n const handleFocus = (e) => {\n setHasFocus(true);\n if (props.handleFocus) { props.handleFocus(e); }\n };\n const handleClick = (e) => {\n if (props.handleClick) { props.handleClick(e); }\n };\n const handleOnBlur = (e) => {\n setHasFocus(false);\n if (props.handleBlur) { props.handleBlur(e); }\n };\n\n return (\n \n \n {props.options ? props.options() : null}\n \n \n {hasFocus && props.helpText ? (\n \n {props.helpText.map((message, index) => (\n \n {message}\n
\n
\n ))}\n
\n ) :
}\n \n {props.errorMessage !== '' && (\n {props.errorMessage}\n )}\n {props.children}\n \n );\n};\n\nFormGroup.defaultProps = {\n as: 'input',\n autoComplete: null,\n borderClass: '',\n children: null,\n className: '',\n errorMessage: '',\n handleBlur: null,\n handleChange: () => {},\n handleClick: null,\n handleFocus: null,\n helpText: [],\n options: null,\n readOnly: false,\n spellCheck: null,\n trailingElement: null,\n type: 'text',\n};\n\nFormGroup.propTypes = {\n as: PropTypes.string,\n autoComplete: PropTypes.string,\n borderClass: PropTypes.string,\n children: PropTypes.element,\n className: PropTypes.string,\n errorMessage: PropTypes.string,\n floatingLabel: PropTypes.string.isRequired,\n handleBlur: PropTypes.func,\n handleChange: PropTypes.func,\n handleClick: PropTypes.func,\n handleFocus: PropTypes.func,\n helpText: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string.isRequired,\n options: PropTypes.func,\n readOnly: PropTypes.bool,\n spellCheck: PropTypes.string,\n trailingElement: PropTypes.element,\n type: PropTypes.string,\n value: PropTypes.string.isRequired,\n};\n\nexport default FormGroup;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'register.page.title': {\n id: 'register.page.title',\n defaultMessage: 'Register | {siteName}',\n description: 'register page title',\n },\n // Field labels\n 'registration.fullname.label': {\n id: 'registration.fullname.label',\n defaultMessage: 'Full name',\n description: 'Label that appears above fullname field',\n },\n 'registration.email.label': {\n id: 'registration.email.label',\n defaultMessage: 'Email',\n description: 'Label that appears above email field on register page',\n },\n 'registration.username.label': {\n id: 'registration.username.label',\n defaultMessage: 'Public username',\n description: 'Label that appears above username field',\n },\n 'registration.password.label': {\n id: 'registration.password.label',\n defaultMessage: 'Password',\n description: 'Label that appears above password field',\n },\n 'registration.country.label': {\n id: 'registration.country.label',\n defaultMessage: 'Country/Region',\n description: 'Placeholder for the country options dropdown.',\n },\n 'registration.opt.in.label': {\n id: 'registration.opt.in.label',\n defaultMessage: 'I agree that {siteName} may send me marketing messages.',\n description: 'Text for opt in option on register page.',\n },\n // Help text\n 'help.text.name': {\n id: 'help.text.name',\n defaultMessage: 'This name will be used by any certificates that you earn.',\n description: 'Help text for fullname field on registration page',\n },\n 'help.text.username.1': {\n id: 'help.text.username.1',\n defaultMessage: 'The name that will identify you in your courses.',\n description: 'Part of help text for username field on registration page',\n },\n 'help.text.username.2': {\n id: 'help.text.username.2',\n defaultMessage: 'This can not be changed later.',\n description: 'Part of help text for username field on registration page',\n },\n 'help.text.email': {\n id: 'help.text.email',\n defaultMessage: 'For account activation and important updates',\n description: 'Help text for email field on registration page',\n },\n // Form buttons\n 'create.account.for.free.button': {\n id: 'create.account.for.free.button',\n defaultMessage: 'Create an account for free',\n description: 'Label text for registration form submission button',\n },\n 'registration.other.options.heading': {\n id: 'registration.other.options.heading',\n defaultMessage: 'Or register with:',\n description: 'A message that appears above third party auth providers i.e saml, google, facebook etc',\n },\n 'create.account.cta.button': {\n id: 'create.account.cta.button',\n defaultMessage: '{label}',\n description: 'Label text for registration form submission button for those users who are landing through redirections',\n },\n // Institution login\n 'register.institution.login.button': {\n id: 'register.institution.login.button',\n defaultMessage: 'Institution/campus credentials',\n description: 'shows institutions list',\n },\n 'register.institution.login.page.title': {\n id: 'register.institution.login.page.title',\n defaultMessage: 'Register with institution/campus credentials',\n description: 'Heading of institution page',\n },\n // Validation messages\n 'empty.name.field.error': {\n id: 'empty.name.field.error',\n defaultMessage: 'Enter your full name',\n description: 'Error message for empty fullname field',\n },\n 'empty.email.field.error': {\n id: 'empty.email.field.error',\n defaultMessage: 'Enter your email',\n description: 'Error message for empty email field',\n },\n 'empty.username.field.error': {\n id: 'empty.username.field.error',\n defaultMessage: 'Username must be between 2 and 30 characters',\n description: 'Error message for empty username field',\n },\n 'empty.password.field.error': {\n id: 'empty.password.field.error',\n defaultMessage: 'Password criteria has not been met',\n description: 'Error message for empty password field',\n },\n 'empty.country.field.error': {\n id: 'empty.country.field.error',\n defaultMessage: 'Select your country or region of residence',\n description: 'Error message when no country/region is selected',\n },\n 'email.do.not.match': {\n id: 'email.do.not.match',\n defaultMessage: 'The email addresses do not match.',\n description: 'Email not match to confirm email',\n },\n 'email.invalid.format.error': {\n id: 'email.invalid.format.error',\n defaultMessage: 'Enter a valid email address',\n description: 'Validation error for invalid email address',\n },\n 'username.validation.message': {\n id: 'username.validation.message',\n defaultMessage: 'Username must be between 2 and 30 characters',\n description: 'Error message for empty username field',\n },\n 'name.validation.message': {\n id: 'name.validation.message',\n defaultMessage: 'Enter a valid name',\n description: 'Validation message that appears when fullname contain URL',\n },\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Password criteria has not been met',\n description: 'Error message for empty or invalid password',\n },\n 'username.format.validation.message': {\n id: 'username.format.validation.message',\n defaultMessage: 'Usernames can only contain letters (A-Z, a-z), numerals (0-9), underscores (_), and hyphens (-). Usernames cannot contain spaces',\n description: 'Validation message that appears when username format is invalid',\n },\n // Error messages\n 'registration.request.failure.header': {\n id: 'registration.request.failure.header',\n defaultMessage: 'We couldn\\'t create your account.',\n description: 'error message when registration failure.',\n },\n 'registration.empty.form.submission.error': {\n id: 'registration.empty.form.submission.error',\n defaultMessage: 'Please check your responses and try again.',\n description: 'Error message that appears on top of the form when empty form is submitted',\n },\n 'registration.request.server.error': {\n id: 'registration.request.server.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message for internal server error.',\n },\n 'registration.rate.limit.error': {\n id: 'registration.rate.limit.error',\n defaultMessage: 'Too many failed registration attempts. Try again later.',\n description: 'Error message that appears when an anonymous user has made too many failed registration attempts',\n },\n 'registration.tpa.session.expired': {\n id: 'registration.tpa.session.expired',\n defaultMessage: 'Registration using {provider} has timed out.',\n description: '',\n },\n 'registration.tpa.authentication.failure': {\n id: 'registration.tpa.authentication.failure',\n defaultMessage: 'We are sorry, you are not authorized to access {platform_name} via this channel. '\n + 'Please contact your learning administrator or manager in order to access {platform_name}.'\n + '{lineBreak}{lineBreak}Error Details:{lineBreak}{errorMessage}',\n description: 'Error message third party authentication pipeline fails',\n },\n // Terms of Service and Honor Code\n 'terms.of.service.and.honor.code': {\n id: 'terms.of.service.and.honor.code',\n defaultMessage: 'Terms of Service and Honor Code',\n description: 'Text for the hyperlink that redirects user to terms of service and honor code',\n },\n 'privacy.policy': {\n id: 'privacy.policy',\n defaultMessage: 'Privacy Policy',\n description: 'Text for the hyperlink that redirects user to privacy policy',\n },\n 'honor.code': {\n id: 'honor.code',\n defaultMessage: 'Honor Code',\n description: 'Text for the hyperlink that redirects user to the honor code',\n },\n 'terms.of.service': {\n id: 'terms.of.service',\n defaultMessage: 'Terms of Service',\n description: 'Text for the hyperlink that redirects user to the terms of service',\n },\n // miscellaneous strings\n 'registration.username.suggestion.label': {\n id: 'registration.username.suggestion.label',\n defaultMessage: 'Suggested:',\n description: 'Suggested usernames label text.',\n },\n 'did.you.mean.alert.text': {\n id: 'did.you.mean.alert.text',\n defaultMessage: 'Did you mean',\n description: 'Did you mean alert suggestion',\n },\n});\n\nexport default messages;\n","import { getConfig, snakeCaseObject } from '@edx/frontend-platform';\n\nimport { LETTER_REGEX, NUMBER_REGEX } from '../../data/constants';\nimport messages from '../messages';\n\n/**\n * It validates the password field value\n * @param value\n * @param formatMessage\n * @returns {string}\n */\nexport const validatePasswordField = (value, formatMessage) => {\n let fieldError = '';\n if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n fieldError = formatMessage(messages['password.validation.message']);\n }\n return fieldError;\n};\n\n/**\n * It accepts complete registration data as payload and checks if the form is valid.\n * @param payload\n * @param errors\n * @param configurableFormFields\n * @param fieldDescriptions\n * @param formatMessage\n * @returns {{fieldErrors, isValid: boolean}}\n */\nexport const isFormValid = (\n payload,\n errors,\n configurableFormFields,\n fieldDescriptions,\n formatMessage,\n) => {\n const fieldErrors = { ...errors };\n let isValid = true;\n Object.keys(payload).forEach(key => {\n if (!payload[key]) {\n fieldErrors[key] = formatMessage(messages[`empty.${key}.field.error`]);\n }\n if (fieldErrors[key]) {\n isValid = false;\n }\n });\n\n if (getConfig().SHOW_CONFIGURABLE_EDX_FIELDS) {\n if (!configurableFormFields?.country?.displayValue) {\n fieldErrors.country = formatMessage(messages['empty.country.field.error']);\n isValid = false;\n }\n }\n Object.keys(fieldDescriptions).forEach(key => {\n if (key === 'country' && !configurableFormFields.country.displayValue) {\n fieldErrors[key] = formatMessage(messages['empty.country.field.error']);\n } else if (!configurableFormFields[key]) {\n fieldErrors[key] = fieldDescriptions[key].error_message;\n }\n if (fieldErrors[key]) {\n isValid = false;\n }\n });\n\n return { isValid, fieldErrors };\n};\n\n/**\n * It prepares a payload for registration data that can be passed to registration API endpoint.\n * @param initPayload\n * @param configurableFormFields\n * @param showMarketingEmailOptInCheckbox\n * @param totalRegistrationTime\n * @param queryParams\n * @returns {*}\n */\nexport const prepareRegistrationPayload = (\n initPayload,\n configurableFormFields,\n showMarketingEmailOptInCheckbox,\n totalRegistrationTime,\n queryParams,\n) => {\n let payload = { ...initPayload };\n Object.keys(configurableFormFields).forEach((fieldName) => {\n if (fieldName === 'country') {\n payload[fieldName] = configurableFormFields[fieldName].countryCode;\n } else {\n payload[fieldName] = configurableFormFields[fieldName];\n }\n });\n\n // Don't send the marketing email opt-in value if the flag is turned off\n if (!showMarketingEmailOptInCheckbox) {\n delete payload.marketingEmailsOptIn;\n }\n\n payload = snakeCaseObject(payload);\n payload.totalRegistrationTime = totalRegistrationTime;\n\n // add query params to the payload\n payload = { ...payload, ...queryParams };\n return payload;\n};\n\n/**\n * A helper for backend validations selector. It processes the api output and generates a\n * key value dict for field errors.\n * @param registrationError\n * @param validations\n * @returns {{username: string}|{name: string}|*|{}|null}\n */\nexport const getBackendValidations = (registrationError, validations) => {\n if (validations) {\n return validations.validationDecisions;\n }\n\n if (Object.keys(registrationError).length > 0) {\n const fields = Object.keys(registrationError).filter(\n (fieldName) => !(fieldName in ['errorCode', 'usernameSuggestions']),\n );\n\n const validationDecisions = {};\n fields.forEach(field => {\n validationDecisions[field] = registrationError[field][0].userMessage || '';\n });\n return validationDecisions;\n }\n\n return null;\n};\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form, Icon, IconButton, OverlayTrigger, Tooltip, useToggle,\n} from '@edx/paragon';\nimport {\n Check, Remove, Visibility, VisibilityOff,\n} from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';\nimport { clearRegistrationBackendError, fetchRealtimeValidations } from '../register/data/actions';\nimport { validatePasswordField } from '../register/data/utils';\n\nconst PasswordField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleBlur = (e) => {\n const { name, value } = e.target;\n if (name === props.name && e.relatedTarget?.name === 'passwordIcon') {\n return; // Do not run validations on password icon click\n }\n\n let passwordValue = value;\n if (name === 'passwordIcon') {\n // To validate actual password value when onBlur is triggered by focusing out the password icon\n passwordValue = props.value;\n }\n\n if (props.handleBlur) {\n props.handleBlur({\n target: {\n name: props.name,\n value: passwordValue,\n },\n });\n }\n\n setShowTooltip(props.showRequirements && false);\n if (props.handleErrorChange) { // If rendering from register page\n const fieldError = validatePasswordField(passwordValue, formatMessage);\n if (fieldError) {\n props.handleErrorChange('password', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ password: passwordValue }));\n }\n }\n };\n\n const handleFocus = (e) => {\n if (e.target?.name === 'passwordIcon') {\n return; // Do not clear error on password icon focus\n }\n\n if (props.handleFocus) {\n props.handleFocus(e);\n }\n if (props.handleErrorChange) {\n props.handleErrorChange('password', '');\n dispatch(clearRegistrationBackendError('password'));\n }\n setTimeout(() => setShowTooltip(props.showRequirements && true), 150);\n };\n\n const HideButton = (\n \n );\n\n const ShowButton = (\n \n );\n\n const placement = window.innerWidth < 768 ? 'top' : 'left';\n const tooltip = (\n \n \n {LETTER_REGEX.test(props.value) ? : }\n {formatMessage(messages['one.letter'])}\n \n \n {NUMBER_REGEX.test(props.value) ? : }\n {formatMessage(messages['one.number'])}\n \n \n {props.value.length >= 8 ? : }\n {formatMessage(messages['eight.characters'])}\n \n \n );\n\n return (\n \n \n \n \n {props.errorMessage !== '' && (\n \n {props.errorMessage}\n {formatMessage(messages['password.sr.only.helping.text'])}\n \n )}\n \n );\n};\n\nPasswordField.defaultProps = {\n borderClass: '',\n errorMessage: '',\n handleBlur: null,\n handleFocus: null,\n handleChange: () => {},\n handleErrorChange: null,\n showRequirements: true,\n autoComplete: null,\n};\n\nPasswordField.propTypes = {\n borderClass: PropTypes.string,\n errorMessage: PropTypes.string,\n floatingLabel: PropTypes.string.isRequired,\n handleBlur: PropTypes.func,\n handleFocus: PropTypes.func,\n handleChange: PropTypes.func,\n handleErrorChange: PropTypes.func,\n name: PropTypes.string.isRequired,\n showRequirements: PropTypes.bool,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n};\n\nexport default PasswordField;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport Zendesk from 'react-zendesk';\n\nimport messages from './messages';\nimport { REGISTER_EMBEDDED_PAGE } from '../data/constants';\n\nconst ZendeskHelp = () => {\n const { formatMessage } = useIntl();\n const setting = {\n cookies: true,\n webWidget: {\n contactOptions: {\n enabled: false,\n },\n chat: {\n suppress: false,\n departments: {\n enabled: ['account settings', 'billing and payments', 'certificates', 'deadlines', 'errors and technical issues', 'other', 'proctoring'],\n },\n },\n contactForm: {\n ticketForms: [\n {\n id: 360003368814,\n subject: false,\n fields: [{ id: 'description', prefill: { '*': '' } }],\n },\n ],\n selectTicketForm: {\n '*': formatMessage(messages.selectTicketForm),\n },\n attachments: true,\n },\n helpCenter: {\n originalArticleButton: true,\n },\n answerBot: {\n suppress: false,\n contactOnlyAfterQuery: true,\n title: { '*': formatMessage(messages.supportTitle) },\n avatar: {\n url: getConfig().ZENDESK_LOGO_URL,\n name: { '*': formatMessage(messages.supportTitle) },\n },\n },\n },\n };\n\n if (window.location.pathname === REGISTER_EMBEDDED_PAGE) {\n return null;\n }\n\n return (\n \n );\n};\n\nexport default ZendeskHelp;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const FORGOT_PASSWORD = new AsyncActionType('FORGOT', 'PASSWORD');\nexport const FORGOT_PASSWORD_PERSIST_FORM_DATA = 'FORGOT_PASSWORD_PERSIST_FORM_DATA';\n\n// Forgot Password\nexport const forgotPassword = email => ({\n type: FORGOT_PASSWORD.BASE,\n payload: { email },\n});\n\nexport const forgotPasswordBegin = () => ({\n type: FORGOT_PASSWORD.BEGIN,\n});\n\nexport const forgotPasswordSuccess = email => ({\n type: FORGOT_PASSWORD.SUCCESS,\n payload: { email },\n});\n\nexport const forgotPasswordForbidden = () => ({\n type: FORGOT_PASSWORD.FORBIDDEN,\n});\n\nexport const forgotPasswordServerError = () => ({\n type: FORGOT_PASSWORD.FAILURE,\n});\n\nexport const setForgotPasswordFormData = (forgotPasswordFormData) => ({\n type: FORGOT_PASSWORD_PERSIST_FORM_DATA,\n payload: { forgotPasswordFormData },\n});\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'forgotPassword';\n\nexport const forgotPasswordSelector = state => ({ ...state[storeName] });\n\nexport const forgotPasswordResultSelector = createSelector(\n forgotPasswordSelector,\n forgotPassword => forgotPassword,\n);\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'forgot.password.page.title': {\n id: 'forgot.password.page.title',\n defaultMessage: 'Forgot Password | {siteName}',\n description: 'forgot password page title',\n },\n 'forgot.password.page.heading': {\n id: 'forgot.password.page.heading',\n defaultMessage: 'Reset password',\n description: 'The page heading for the forgot password page.',\n },\n 'forgot.password.page.instructions': {\n id: 'forgot.password.page.instructions',\n defaultMessage: 'Please enter your email address below and we will send you an email with instructions on how to reset your password.',\n description: 'Instructions message for forgot password page.',\n },\n 'forgot.password.page.invalid.email.message': {\n id: 'forgot.password.page.invalid.email.message',\n defaultMessage: 'Enter a valid email address',\n description: 'Invalid email address message for input field.',\n },\n 'forgot.password.page.email.field.label': {\n id: 'forgot.password.page.email.field.label',\n defaultMessage: 'Email',\n description: 'Email field label for the forgot password page.',\n },\n 'forgot.password.page.submit.button': {\n id: 'forgot.password.page.submit.button',\n defaultMessage: 'Submit',\n description: 'Submit button text for the forgot password page.',\n },\n 'forgot.password.error.alert.title': {\n id: 'forgot.password.error.alert.title.',\n defaultMessage: 'We were unable to contact you.',\n description: 'Failed to send password recovery email.',\n },\n 'forgot.password.error.message.title': {\n id: 'forgot.password.error.message.title',\n defaultMessage: 'An error occurred.',\n description: 'Title for message that appears when error occurs for password assistance page',\n },\n 'forgot.password.request.in.progress.message': {\n id: 'forgot.password.request.in.progress.message',\n defaultMessage: 'Your previous request is in progress, please try again in a few moments.',\n description: 'Message displayed when previous password reset request is still in progress.',\n },\n 'forgot.password.empty.email.field.error': {\n id: 'forgot.password.empty.email.field.error',\n defaultMessage: 'Enter your email',\n description: 'Error message that appears when user tries to submit empty email field',\n },\n 'forgot.password.email.help.text': {\n id: 'forgot.password.email.help.text',\n defaultMessage: 'The email address you used to register with {platformName}',\n description: 'text help for the email',\n },\n // Confirmation Alert Message\n 'confirmation.message.title': {\n id: 'confirmation.message.title',\n defaultMessage: 'Check your email',\n description: 'Forgot password confirmation message title',\n },\n 'confirmation.support.link': {\n id: 'confirmation.support.link',\n defaultMessage: 'contact technical support',\n description: 'Technical support link text',\n },\n 'need.help.sign.in.text': {\n id: 'need.help.sign.in.text',\n defaultMessage: 'Need help signing in?',\n description: 'Sign in help link on forgot password page',\n },\n 'additional.help.text': {\n id: 'additional.help.text',\n defaultMessage: 'For additional help, contact {platformName} support at ',\n description: 'additional help text on forgot password page',\n },\n 'sign.in.text': {\n id: 'sign.in.text',\n defaultMessage: 'Sign in',\n description: 'login page link on password page',\n },\n 'extend.field.errors': {\n id: 'extend.field.errors',\n defaultMessage: '{emailError} below.',\n description: 'extends the field error for alert message',\n },\n // Reset password token validation failure\n 'invalid.token.heading': {\n id: 'invalid.token.heading',\n defaultMessage: 'Invalid password reset link',\n description: 'Alert heading when reset password link is invalid',\n },\n 'invalid.token.error.message': {\n id: 'invalid.token.error.message',\n defaultMessage: 'This password reset link is invalid. It may have been used already. Enter your email below to receive a new link.',\n description: 'Alert message when reset password link has expired or is invalid',\n },\n 'token.validation.rate.limit.error.heading': {\n id: 'token.validation.rate.limit.error.heading',\n defaultMessage: 'Too many requests',\n description: 'Too many request at server end point',\n },\n 'token.validation.rate.limit.error': {\n id: 'token.validation.rate.limit.error',\n defaultMessage: 'An error has occurred because of too many requests. Please try again after some time.',\n description: 'Error message that appears when server responds with 429 error code',\n },\n 'token.validation.internal.sever.error.heading': {\n id: 'token.validation.internal.sever.error.heading',\n defaultMessage: 'Token validation failure',\n description: 'Failed to validate reset password token error message.',\n },\n 'token.validation.internal.sever.error': {\n id: 'token.validation.internal.sever.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n // Error messages\n 'internal.server.error': {\n id: 'internal.server.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n});\nexport default messages;\n","export const TOKEN_STATE = {\n PENDING: 'token-pending',\n VALID: 'token-valid',\n};\n\n// password reset error codes\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const PASSWORD_RESET_ERROR = 'password-reset-error';\nexport const SUCCESS = 'success';\nexport const PASSWORD_VALIDATION_ERROR = 'password-validation-failure';\n\nexport const PASSWORD_RESET = {\n INVALID_TOKEN: 'invalid-token',\n INTERNAL_SERVER_ERROR: 'password-reset-internal-server-error',\n FORBIDDEN_REQUEST: 'password-reset-rate-limit-error',\n};\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { CheckCircle, Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport {\n COMPLETE_STATE, FORBIDDEN_STATE, FORM_SUBMISSION_ERROR, INTERNAL_SERVER_ERROR,\n} from '../data/constants';\nimport { PASSWORD_RESET } from '../reset-password/data/constants';\n\nconst ForgotPasswordAlert = (props) => {\n const { formatMessage } = useIntl();\n const { email, emailError } = props;\n let message = '';\n let heading = formatMessage(messages['forgot.password.error.alert.title']);\n let { status } = props;\n\n if (emailError) {\n status = FORM_SUBMISSION_ERROR;\n }\n\n switch (status) {\n case COMPLETE_STATE:\n heading = formatMessage(messages['confirmation.message.title']);\n message = (\n {email},\n supportLink: (\n \n {formatMessage(messages['confirmation.support.link'])}\n \n ),\n }}\n />\n );\n break;\n case INTERNAL_SERVER_ERROR:\n message = formatMessage(messages['internal.server.error']);\n break;\n case FORBIDDEN_STATE:\n heading = formatMessage(messages['forgot.password.error.message.title']);\n message = formatMessage(messages['forgot.password.request.in.progress.message']);\n break;\n case FORM_SUBMISSION_ERROR:\n message = formatMessage(messages['extend.field.errors'], { emailError });\n break;\n case PASSWORD_RESET.INVALID_TOKEN:\n heading = formatMessage(messages['invalid.token.heading']);\n message = formatMessage(messages['invalid.token.error.message']);\n break;\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = formatMessage(messages['token.validation.rate.limit.error.heading']);\n message = formatMessage(messages['token.validation.rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n heading = formatMessage(messages['token.validation.internal.sever.error.heading']);\n message = formatMessage(messages['token.validation.internal.sever.error']);\n break;\n default:\n break;\n }\n\n if (message) {\n return (\n \n {heading}\n

{message}

\n \n );\n }\n return null;\n};\n\nForgotPasswordAlert.defaultProps = {\n email: '',\n emailError: '',\n};\n\nForgotPasswordAlert.propTypes = {\n status: PropTypes.string.isRequired,\n email: PropTypes.string,\n emailError: PropTypes.string,\n};\n\nexport default ForgotPasswordAlert;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'start.learning': {\n id: 'start.learning',\n defaultMessage: 'Start learning',\n description: 'Header text for logistration MFE pages',\n },\n 'with.site.name': {\n id: 'with.site.name',\n defaultMessage: 'with {siteName}',\n description: 'Header text with site name for logistration MFE pages',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\nimport classNames from 'classnames';\n\nimport messages from './messages';\n\nconst LargeLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n \n {formatMessage(messages['start.learning'])}\n
\n {formatMessage(messages['with.site.name'], { siteName: getConfig().SITE_NAME })}\n
\n \n
\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nexport default LargeLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\nimport classNames from 'classnames';\n\nimport messages from './messages';\n\nconst MediumLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n
\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n
\n \n \n {formatMessage(messages['start.learning'])}{' '}\n \n {formatMessage(messages['with.site.name'], { siteName: getConfig().SITE_NAME })}\n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n );\n};\n\nexport default MediumLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\nimport classNames from 'classnames';\n\nimport messages from './messages';\n\nconst SmallLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n \n \n {formatMessage(messages['start.learning'])}{' '}\n \n {formatMessage(messages['with.site.name'], { siteName: getConfig().SITE_NAME })}\n \n \n \n
\n
\n \n );\n};\n\nexport default SmallLayout;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'your.career.turning.point': {\n id: 'your.career.turning.point',\n defaultMessage: 'Your career turning point',\n description: 'Part of the heading \"Your career turning point is here.\" shown on Authn MFE',\n },\n 'is.here': {\n id: 'is.here',\n defaultMessage: 'is here.',\n description: 'Part of the heading \"Your career turning point is here.\" shown on Authn MFE',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\n\nimport './index.scss';\nimport messages from './messages';\n\nconst LargeLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {getConfig().SITE_NAME}\n \n
\n

\n \n {formatMessage(messages['your.career.turning.point'])}\n \n \n {formatMessage(messages['is.here'])}\n \n

\n
\n
\n );\n};\n\nexport default LargeLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\n\nimport './index.scss';\nimport messages from './messages';\n\nconst MediumLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {getConfig().SITE_NAME}\n \n
\n

\n \n {formatMessage(messages['your.career.turning.point'])}{' '}\n \n \n {formatMessage(messages['is.here'])}\n \n

\n
\n
\n );\n};\n\nexport default MediumLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\n\nimport messages from './messages';\n\nconst SmallLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {getConfig().SITE_NAME}\n \n
\n

\n \n {formatMessage(messages['your.career.turning.point'])}{' '}\n \n \n {formatMessage(messages['is.here'])}\n \n

\n
\n
\n );\n};\n\nexport default SmallLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\n\nimport messages from './messages';\n\nconst ExtraSmallLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {getConfig().SITE_NAME}\n \n
\n

\n \n {formatMessage(messages['your.career.turning.point'])}{' '}\n \n \n {formatMessage(messages['is.here'])}\n \n

\n
\n \n );\n};\n\nexport default ExtraSmallLayout;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'welcome.to.platform': {\n id: 'welcome.to.platform',\n defaultMessage: 'Welcome to {siteName}, {username}!',\n description: 'Welcome message that appears on progressive profile page',\n },\n 'complete.your.profile.1': {\n id: 'complete.your.profile.1',\n defaultMessage: 'Complete',\n description: 'part of text \"complete your profile\"',\n },\n 'complete.your.profile.2': {\n id: 'complete.your.profile.2',\n defaultMessage: 'your profile',\n description: 'part of text \"complete your profile\"',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\nconst LargeLayout = ({ username }) => {\n const { formatMessage } = useIntl();\n\n return (\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n
\n

\n {formatMessage(messages['welcome.to.platform'], { siteName: getConfig().SITE_NAME, username })}\n

\n

\n {formatMessage(messages['complete.your.profile.1'])}\n
\n {formatMessage(messages['complete.your.profile.2'])}\n
\n

\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nLargeLayout.propTypes = {\n username: PropTypes.string.isRequired,\n};\n\nexport default LargeLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\nconst MediumLayout = ({ username }) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n
\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n
\n

\n {formatMessage(messages['welcome.to.platform'], { siteName: getConfig().SITE_NAME, username })}\n

\n

\n {formatMessage(messages['complete.your.profile.1'])}\n
\n {formatMessage(messages['complete.your.profile.2'])}\n
\n

\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n );\n};\n\nMediumLayout.propTypes = {\n username: PropTypes.string.isRequired,\n};\n\nexport default MediumLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\nconst SmallLayout = ({ username }) => {\n const { formatMessage } = useIntl();\n\n return (\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n
\n

\n {formatMessage(messages['welcome.to.platform'], { siteName: getConfig().SITE_NAME, username })}\n

\n

\n {formatMessage(messages['complete.your.profile.1'])}\n
\n {formatMessage(messages['complete.your.profile.2'])}\n
\n

\n
\n
\n
\n );\n};\n\nSmallLayout.propTypes = {\n username: PropTypes.string.isRequired,\n};\n\nexport default SmallLayout;\n","import React, { useEffect, useState } from 'react';\n\nimport { breakpoints } from '@edx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\n\nimport { DefaultLargeLayout, DefaultMediumLayout, DefaultSmallLayout } from './components/default-layout';\nimport {\n ImageExtraSmallLayout, ImageLargeLayout, ImageMediumLayout, ImageSmallLayout,\n} from './components/image-layout';\nimport { AuthLargeLayout, AuthMediumLayout, AuthSmallLayout } from './components/welcome-page-layout';\nimport { DEFAULT_LAYOUT, IMAGE_LAYOUT } from './data/constants';\n\nconst BaseContainer = ({ children, showWelcomeBanner, username }) => {\n const [baseContainerVersion, setBaseContainerVersion] = useState(DEFAULT_LAYOUT);\n\n useEffect(() => {\n const initRebrandExperiment = () => {\n if (window.experiments?.rebrandExperiment) {\n setBaseContainerVersion(window.experiments?.rebrandExperiment?.variation);\n } else {\n window.experiments = window.experiments || {};\n window.experiments.rebrandExperiment = {};\n window.experiments.rebrandExperiment.handleLoaded = () => {\n setBaseContainerVersion(window.experiments?.rebrandExperiment?.variation);\n };\n }\n };\n initRebrandExperiment();\n }, []);\n\n if (baseContainerVersion === IMAGE_LAYOUT) {\n return (\n
\n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n
\n {children}\n
\n
\n );\n }\n\n return (\n <>\n
\n
\n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n
\n {children}\n
\n
\n \n );\n};\n\nBaseContainer.defaultProps = {\n showWelcomeBanner: false,\n username: null,\n};\n\nBaseContainer.propTypes = {\n children: PropTypes.node.isRequired,\n showWelcomeBanner: PropTypes.bool,\n username: PropTypes.string,\n};\n\nexport default BaseContainer;\n","const IMAGE_LAYOUT = 'image-layout';\nconst DEFAULT_LAYOUT = 'default-layout';\n\nexport { DEFAULT_LAYOUT, IMAGE_LAYOUT };\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form,\n Hyperlink,\n Icon,\n StatefulButton,\n Tab,\n Tabs,\n} from '@edx/paragon';\nimport { ChevronLeft } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { useNavigate } from 'react-router-dom';\n\nimport { forgotPassword, setForgotPasswordFormData } from './data/actions';\nimport { forgotPasswordResultSelector } from './data/selectors';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\nimport BaseContainer from '../base-container';\nimport { FormGroup } from '../common-components';\nimport { DEFAULT_STATE, LOGIN_PAGE, VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\n\nconst ForgotPasswordPage = (props) => {\n const platformName = getConfig().SITE_NAME;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const {\n status, submitState, emailValidationError,\n } = props;\n\n const { formatMessage } = useIntl();\n const [email, setEmail] = useState(props.email);\n const [bannerEmail, setBannerEmail] = useState('');\n const [formErrors, setFormErrors] = useState('');\n const [validationError, setValidationError] = useState(emailValidationError);\n const navigate = useNavigate();\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n useEffect(() => {\n setValidationError(emailValidationError);\n }, [emailValidationError]);\n\n useEffect(() => {\n if (status === 'complete') {\n setEmail('');\n }\n }, [status]);\n\n const getValidationMessage = (value) => {\n let error = '';\n\n if (value === '') {\n error = formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!emailRegex.test(value)) {\n error = formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n return error;\n };\n\n const handleBlur = () => {\n props.setForgotPasswordFormData({ email, emailValidationError: getValidationMessage(email) });\n };\n\n const handleFocus = () => props.setForgotPasswordFormData({ emailValidationError: '' });\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setBannerEmail(email);\n\n const error = getValidationMessage(email);\n if (error) {\n setFormErrors(error);\n props.setForgotPasswordFormData({ email, emailValidationError: error });\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n } else {\n props.forgotPassword(email);\n }\n };\n\n const tabTitle = (\n
\n \n {formatMessage(messages['sign.in.text'])}\n
\n );\n\n return (\n \n \n {formatMessage(messages['forgot.password.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n
\n navigate(updatePathWithQueryParams(key))}>\n \n \n
\n
\n \n

\n {formatMessage(messages['forgot.password.page.heading'])}\n

\n

\n {formatMessage(messages['forgot.password.page.instructions'])}\n

\n setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n e.preventDefault()}\n />\n {(getConfig().LOGIN_ISSUE_SUPPORT_LINK) && (\n \n {formatMessage(messages['need.help.sign.in.text'])}\n \n )}\n

\n {formatMessage(messages['additional.help.text'], { platformName })}\n \n {getConfig().INFO_EMAIL}\n \n

\n \n
\n
\n
\n );\n};\n\nForgotPasswordPage.propTypes = {\n email: PropTypes.string,\n emailValidationError: PropTypes.string,\n forgotPassword: PropTypes.func.isRequired,\n setForgotPasswordFormData: PropTypes.func.isRequired,\n status: PropTypes.string,\n submitState: PropTypes.string,\n};\n\nForgotPasswordPage.defaultProps = {\n email: '',\n emailValidationError: '',\n status: null,\n submitState: DEFAULT_STATE,\n};\n\nexport default connect(\n forgotPasswordResultSelector,\n {\n forgotPassword,\n setForgotPasswordFormData,\n },\n)(ForgotPasswordPage);\n","import { AsyncActionType } from '../../data/utils';\n\nexport const RESET_PASSWORD = new AsyncActionType('RESET', 'PASSWORD');\nexport const VALIDATE_TOKEN = new AsyncActionType('VALIDATE', 'TOKEN');\nexport const PASSWORD_RESET_FAILURE = 'PASSWORD_RESET_FAILURE';\n\nexport const passwordResetFailure = (errorCode) => ({\n type: PASSWORD_RESET_FAILURE,\n payload: { errorCode },\n});\n\n// Validate confirmation token\nexport const validateToken = (token) => ({\n type: VALIDATE_TOKEN.BASE,\n payload: { token },\n});\n\nexport const validateTokenBegin = () => ({\n type: VALIDATE_TOKEN.BEGIN,\n});\n\nexport const validateTokenSuccess = (tokenStatus, token) => ({\n type: VALIDATE_TOKEN.SUCCESS,\n payload: { tokenStatus, token },\n});\n\nexport const validateTokenFailure = errorCode => ({\n type: VALIDATE_TOKEN.FAILURE,\n payload: { errorCode },\n});\n\n// Reset Password\nexport const resetPassword = (formPayload, token, params) => ({\n type: RESET_PASSWORD.BASE,\n payload: { formPayload, token, params },\n});\n\nexport const resetPasswordBegin = () => ({\n type: RESET_PASSWORD.BEGIN,\n});\n\nexport const resetPasswordSuccess = data => ({\n type: RESET_PASSWORD.SUCCESS,\n payload: { data },\n});\n\nexport const resetPasswordFailure = (errorCode, errorMsg = null) => ({\n type: RESET_PASSWORD.FAILURE,\n payload: { errorCode, errorMsg: errorMsg || errorCode },\n});\n","import { FORGOT_PASSWORD, FORGOT_PASSWORD_PERSIST_FORM_DATA } from './actions';\nimport { INTERNAL_SERVER_ERROR, PENDING_STATE } from '../../data/constants';\nimport { PASSWORD_RESET_FAILURE } from '../../reset-password/data/actions';\n\nexport const defaultState = {\n status: '',\n submitState: '',\n email: '',\n emailValidationError: '',\n};\n\nconst reducer = (state = defaultState, action = null) => {\n if (action !== null) {\n switch (action.type) {\n case FORGOT_PASSWORD.BEGIN:\n return {\n email: state.email,\n status: 'pending',\n submitState: PENDING_STATE,\n };\n case FORGOT_PASSWORD.SUCCESS:\n return {\n ...defaultState,\n status: 'complete',\n };\n case FORGOT_PASSWORD.FORBIDDEN:\n return {\n email: state.email,\n status: 'forbidden',\n };\n case FORGOT_PASSWORD.FAILURE:\n return {\n email: state.email,\n status: INTERNAL_SERVER_ERROR,\n };\n case PASSWORD_RESET_FAILURE:\n return {\n status: action.payload.errorCode,\n };\n case FORGOT_PASSWORD_PERSIST_FORM_DATA: {\n const { forgotPasswordFormData } = action.payload;\n return {\n ...state,\n ...forgotPasswordFormData,\n };\n }\n default:\n return {\n ...defaultState,\n email: state.email,\n emailValidationError: state.emailValidationError,\n };\n }\n }\n return state;\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport formurlencoded from 'form-urlencoded';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function forgotPassword(email) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/account/password`,\n formurlencoded({ email }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return data;\n}\n","import { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\n// Actions\nimport {\n FORGOT_PASSWORD,\n forgotPasswordBegin,\n forgotPasswordForbidden,\n forgotPasswordServerError,\n forgotPasswordSuccess,\n} from './actions';\nimport { forgotPassword } from './service';\n\n// Services\nexport function* handleForgotPassword(action) {\n try {\n yield put(forgotPasswordBegin());\n\n yield call(forgotPassword, action.payload.email);\n\n yield put(forgotPasswordSuccess(action.payload.email));\n } catch (e) {\n if (e.response && e.response.status === 403) {\n yield put(forgotPasswordForbidden());\n logInfo(e);\n } else {\n yield put(forgotPasswordServerError());\n logError(e);\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(FORGOT_PASSWORD.BASE, handleForgotPassword);\n}\n","// Login Error Codes\nexport const INACTIVE_USER = 'inactive-user';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const INVALID_FORM = 'invalid-form';\nexport const NON_COMPLIANT_PASSWORD_EXCEPTION = 'NonCompliantPasswordException';\nexport const FORBIDDEN_REQUEST = 'forbidden-request';\nexport const FAILED_LOGIN_ATTEMPT = 'failed-login-attempt';\nexport const ACCOUNT_LOCKED_OUT = 'account-locked-out';\nexport const INCORRECT_EMAIL_PASSWORD = 'incorrect-email-or-password';\nexport const NUDGE_PASSWORD_CHANGE = 'nudge-password-change';\nexport const REQUIRE_PASSWORD_CHANGE = 'require-password-change';\nexport const ALLOWED_DOMAIN_LOGIN_ERROR = 'allowed-domain-login-error';\nexport const TPA_AUTHENTICATION_FAILURE = 'tpa-authentication-failure';\n\n// Account Activation Message\nexport const ACCOUNT_ACTIVATION_MESSAGE = {\n INFO: 'info',\n SUCCESS: 'success',\n ERROR: 'error',\n};\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'login.page.title': {\n id: 'login.page.title',\n defaultMessage: 'Login | {siteName}',\n description: 'login page title',\n },\n // Login labels\n 'login.user.identity.label': {\n id: 'login.user.identity.label',\n defaultMessage: 'Username or email',\n description: 'Label for user identity field to enter either username or email to login',\n },\n 'login.password.label': {\n id: 'login.password.label',\n defaultMessage: 'Password',\n description: 'Label for password field',\n },\n 'sign.in.button': {\n id: 'sign.in.button',\n defaultMessage: 'Sign in',\n description: 'Sign in button label that appears on login page',\n },\n 'forgot.password': {\n id: 'forgot.password',\n defaultMessage: 'Forgot password',\n description: 'Button text for forgot password',\n },\n 'institution.login.button': {\n id: 'institution.login.button',\n defaultMessage: 'Institution/campus credentials',\n description: 'shows institutions list',\n },\n 'institution.login.page.title': {\n id: 'institution.login.page.title',\n defaultMessage: 'Sign in with institution/campus credentials',\n description: 'Heading of institution page',\n },\n 'institution.login.page.sub.heading': {\n id: 'institution.login.page.sub.heading',\n defaultMessage: 'Choose your institution from the list below',\n description: 'Heading of the institutions list',\n },\n 'login.other.options.heading': {\n id: 'login.other.options.heading',\n defaultMessage: 'Or sign in with:',\n description: 'Text that appears above other sign in options like social auth buttons',\n },\n 'non.compliant.password.title': {\n id: 'non.compliant.password.title',\n defaultMessage: 'We recently changed our password requirements',\n description: 'A title that appears in bold before error message for non-compliant password',\n },\n 'non.compliant.password.message': {\n id: 'non.compliant.password.message',\n defaultMessage: 'Your current password does not meet the new security requirements. '\n + 'We just sent a password-reset message to the email address associated with this account. '\n + 'Thank you for helping us keep your data safe.',\n description: 'Error message for non-compliant password',\n },\n 'account.locked.out.message.1': {\n id: 'account.locked.out.message.1',\n defaultMessage: 'To protect your account, it\\'s been temporarily locked. Try again in 30 minutes.',\n description: 'Part of message for when user account has been locked out after multiple failed login attempts',\n },\n 'enterprise.login.btn.text': {\n id: 'enterprise.login.btn.text',\n defaultMessage: 'Company or school credentials',\n description: 'Company or school login link text.',\n },\n 'username.or.email.format.validation.less.chars.message': {\n id: 'username.or.email.format.validation.less.chars.message',\n defaultMessage: 'Username or email must have at least 2 characters.',\n description: 'Validation message that appears when username or email address is less than 2 characters',\n },\n 'email.validation.message': {\n id: 'email.validation.message',\n defaultMessage: 'Enter your username or email',\n description: 'Validation message that appears when email is empty',\n },\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Enter your password',\n description: 'Validation message that appears when password is empty',\n },\n // Account Activation Strings\n 'account.activation.success.message.title': {\n id: 'account.activation.success.message.title',\n defaultMessage: 'Success! You have activated your account.',\n description: 'Account Activation success message title',\n },\n 'account.activation.success.message': {\n id: 'account.activation.success.message',\n defaultMessage: 'You will now receive email updates and alerts from us related to the courses you are enrolled in. Sign in to continue.',\n description: 'Message show to learners when their account has been activated successfully',\n },\n 'account.activation.info.message': {\n id: 'account.activation.info.message',\n defaultMessage: 'This account has already been activated.',\n description: 'Message shown when learner account has already been activated',\n },\n 'account.activation.error.message.title': {\n id: 'account.activation.error.message.title',\n defaultMessage: 'Your account could not be activated',\n description: 'Account Activation error message title',\n },\n 'account.activation.support.link': {\n id: 'account.activation.support.link',\n defaultMessage: 'contact support',\n description: 'Link text used in account activation error message to go to learner help center',\n },\n // Email Confirmation Strings\n 'account.confirmation.success.message.title': {\n id: 'account.confirmation.success.message.title',\n defaultMessage: 'Success! You have confirmed your email.',\n description: 'Account verification success message title',\n },\n 'account.confirmation.success.message': {\n id: 'account.confirmation.success.message',\n defaultMessage: 'Sign in to continue.',\n description: 'Message show to learners when their account has been activated successfully',\n },\n 'account.confirmation.info.message': {\n id: 'account.confirmation.info.message',\n defaultMessage: 'This email has already been confirmed.',\n description: 'Message shown when learner account has already been verified',\n },\n 'account.confirmation.error.message.title': {\n id: 'account.confirmation.error.message.title',\n defaultMessage: 'Your email could not be confirmed',\n description: 'Account verification error message title',\n },\n 'tpa.account.link': {\n id: 'tpa.account.link',\n defaultMessage: '{provider} account',\n description: 'Link text error message used to go to SSO when staff user try to login through password.',\n },\n 'internal.server.error.message': {\n id: 'internal.server.error.message',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n 'login.rate.limit.reached.message': {\n id: 'login.rate.limit.reached.message',\n defaultMessage: 'Too many failed login attempts. Try again later.',\n description: 'Error message that appears when an anonymous user has made too many failed login attempts',\n },\n 'login.failure.header.title': {\n id: 'login.failure.header.title',\n defaultMessage: 'We couldn\\'t sign you in.',\n description: 'Login failure header message.',\n },\n 'contact.support.link': {\n id: 'contact.support.link',\n defaultMessage: 'contact {platformName} support',\n description: 'Link text used in inactive user error message to go to learner help center',\n },\n 'login.incorrect.credentials.error': {\n id: 'login.incorrect.credentials.error',\n defaultMessage: 'The username, email, or password you entered is incorrect. Please try again.',\n description: 'Error message for incorrect email or password',\n },\n 'login.form.invalid.error.message': {\n id: 'login.form.invalid.error.message',\n defaultMessage: 'Please fill in the fields below.',\n description: 'Login form empty input user message',\n },\n 'login.incorrect.credentials.error.reset.link.text': {\n id: 'login.incorrect.credentials.error.reset.link.text',\n defaultMessage: 'reset your password',\n description: 'Reset password link text for incorrect email or password credentials',\n },\n 'login.incorrect.credentials.error.before.account.blocked.text': {\n id: 'login.incorrect.credentials.error.before.account.blocked.text',\n defaultMessage: 'click here to reset it.',\n description: 'Reset password link text for incorrect email or password credentials before blocking account',\n },\n // Vulnerable password change prompt\n 'password.security.nudge.title': {\n id: 'password.security.nudge.title',\n defaultMessage: 'Password security',\n description: 'Title for prompt that nudges user to change their vulnerable password',\n },\n 'password.security.block.title': {\n id: 'password.security.block.title',\n defaultMessage: 'Password change required',\n description: 'Title for prompt that asks user to change their vulnerable password',\n },\n 'password.security.nudge.body': {\n id: 'password.security.nudge.body',\n defaultMessage: 'Our system detected that your password is vulnerable. '\n + 'We recommend you change it so that your account stays secure.',\n description: 'Message copy for prompt that nudges user to change their vulnerable password',\n },\n 'password.security.block.body': {\n id: 'password.security.block.body',\n defaultMessage: 'Our system detected that your password is vulnerable. '\n + 'Change your password so that your account stays secure.',\n description: 'Message copy for prompt that asks user to change their vulnerable password',\n },\n 'password.security.close.button': {\n id: 'password.security.close.button',\n defaultMessage: 'Close',\n description: 'Button to close popup',\n },\n 'password.security.redirect.to.reset.password.button': {\n id: 'password.security.redirect.to.reset.password.button',\n defaultMessage: 'Reset your password',\n description: 'Button to redirect users to Reset Password page',\n },\n 'login.tpa.authentication.failure': {\n id: 'login.tpa.authentication.failure',\n defaultMessage: 'We are sorry, you are not authorized to access {platform_name} via this channel. '\n + 'Please contact your learning administrator or manager in order to access {platform_name}.'\n + '{lineBreak}{lineBreak}Error Details:{lineBreak}{errorMessage}',\n description: 'Error message third party authentication pipeline fails',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { CheckCircle, Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { ACCOUNT_ACTIVATION_MESSAGE } from './data/constants';\nimport messages from './messages';\n\nconst AccountActivationMessage = (props) => {\n const { formatMessage } = useIntl();\n const { messageType } = props;\n const variant = messageType === ACCOUNT_ACTIVATION_MESSAGE.ERROR ? 'danger' : messageType;\n\n const activationOrVerification = getConfig().MARKETING_EMAILS_OPT_IN ? 'confirmation' : 'activation';\n\n let activationMessage;\n let heading;\n\n const iconMapping = {\n [ACCOUNT_ACTIVATION_MESSAGE.SUCCESS]: CheckCircle,\n [ACCOUNT_ACTIVATION_MESSAGE.ERROR]: Error,\n };\n\n switch (messageType) {\n case ACCOUNT_ACTIVATION_MESSAGE.SUCCESS: {\n heading = formatMessage(messages[`account.${activationOrVerification}.success.message.title`]);\n activationMessage = {formatMessage(messages[`account.${activationOrVerification}.success.message`])};\n break;\n }\n case ACCOUNT_ACTIVATION_MESSAGE.INFO: {\n activationMessage = formatMessage(messages[`account.${activationOrVerification}.info.message`]);\n break;\n }\n case ACCOUNT_ACTIVATION_MESSAGE.ERROR: {\n const supportLink = (\n \n {formatMessage(messages['account.activation.support.link'])}\n \n );\n\n heading = formatMessage(messages[`account.${activationOrVerification}.error.message.title`]);\n activationMessage = (\n \n );\n break;\n }\n default:\n break;\n }\n\n return activationMessage ? (\n \n {heading && {heading}}\n {activationMessage}\n \n ) : null;\n};\n\nAccountActivationMessage.propTypes = {\n messageType: PropTypes.string.isRequired,\n};\n\nexport default AccountActivationMessage;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const LOGIN_REQUEST = new AsyncActionType('LOGIN', 'REQUEST');\nexport const LOGIN_PERSIST_FORM_DATA = 'LOGIN_PERSIST_FORM_DATA';\nexport const LOGIN_REMOVE_PASSWORD_RESET_BANNER = 'LOGIN_REMOVE_PASSWORD_RESET_BANNER';\n\n// Login\nexport const loginRequest = creds => ({\n type: LOGIN_REQUEST.BASE,\n payload: { creds },\n});\n\nexport const loginRequestBegin = () => ({\n type: LOGIN_REQUEST.BEGIN,\n});\n\nexport const loginRequestSuccess = (redirectUrl, success) => ({\n type: LOGIN_REQUEST.SUCCESS,\n payload: { redirectUrl, success },\n});\n\nexport const loginRequestFailure = (loginError) => ({\n type: LOGIN_REQUEST.FAILURE,\n payload: { loginError },\n});\n\nexport const loginRequestReset = () => ({\n type: LOGIN_REQUEST.RESET,\n});\n\nexport const setLoginFormData = (formData) => ({\n type: LOGIN_PERSIST_FORM_DATA,\n payload: { formData },\n});\n\nexport const loginRemovePasswordResetBanner = () => ({\n type: LOGIN_REMOVE_PASSWORD_RESET_BANNER,\n});\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'login';\n\nexport const loginSelector = state => ({ ...state[storeName] });\n\nexport const loginRequestSelector = createSelector(\n loginSelector,\n login => login.loginResult,\n);\n\nexport const loginErrorSelector = createSelector(\n loginSelector,\n login => login.loginError,\n);\n\nexport const loginFormDataSelector = createSelector(\n loginSelector,\n login => login.loginFormData,\n);\n","import { useEffect, useState } from 'react';\n\nimport { breakpoints } from '@edx/paragon';\n\n/**\n * A react hook used to determine if the current window is mobile or not.\n * returns true if the window is of mobile size.\n * Code source: https://github.com/edx/prospectus/blob/master/src/utils/useMobileResponsive.js\n */\nconst useMobileResponsive = (breakpoint) => {\n const [isMobileWindow, setIsMobileWindow] = useState();\n const checkForMobile = () => {\n setIsMobileWindow(window.matchMedia(`(max-width: ${breakpoint || breakpoints.small.maxWidth}px)`).matches);\n };\n useEffect(() => {\n checkForMobile();\n window.addEventListener('resize', checkForMobile);\n // return this function here to clean up the event listener\n return () => window.removeEventListener('resize', checkForMobile);\n });\n return isMobileWindow;\n};\n\nexport default useMobileResponsive;\n","import React, { useEffect, useState } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, ModalDialog, useToggle,\n} from '@edx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport messages from './messages';\nimport { DEFAULT_REDIRECT_URL, RESET_PAGE } from '../data/constants';\nimport { updatePathWithQueryParams } from '../data/utils';\nimport useMobileResponsive from '../data/utils/useMobileResponsive';\n\nconst ChangePasswordPrompt = ({ variant, redirectUrl }) => {\n const isMobileView = useMobileResponsive();\n const [redirectToResetPasswordPage, setRedirectToResetPasswordPage] = useState(false);\n const handlers = {\n handleToggleOff: () => {\n if (variant === 'block') {\n setRedirectToResetPasswordPage(true);\n } else {\n window.location.href = redirectUrl || getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n }\n },\n };\n // eslint-disable-next-line no-unused-vars\n const [isOpen, open, close] = useToggle(true, handlers);\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (redirectToResetPasswordPage) {\n navigate(updatePathWithQueryParams(RESET_PAGE));\n }\n }, [redirectToResetPasswordPage, navigate]);\n\n return (\n \n \n \n {formatMessage(messages[`password.security.${variant}.title`])}\n \n \n \n {formatMessage(messages[`password.security.${variant}.body`])}\n \n \n \n {variant === 'nudge' ? (\n \n {formatMessage(messages['password.security.close.button'])}\n \n ) : null}\n \n {formatMessage(messages['password.security.redirect.to.reset.password.button'])}\n \n \n \n \n );\n};\n\nChangePasswordPrompt.defaultProps = {\n variant: 'block',\n redirectUrl: null,\n};\n\nChangePasswordPrompt.propTypes = {\n variant: PropTypes.oneOf(['nudge', 'block']),\n redirectUrl: PropTypes.string,\n};\n\nexport default ChangePasswordPrompt;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthService } from '@edx/frontend-platform/auth';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Hyperlink } from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport ChangePasswordPrompt from './ChangePasswordPrompt';\nimport {\n ACCOUNT_LOCKED_OUT,\n ALLOWED_DOMAIN_LOGIN_ERROR,\n FAILED_LOGIN_ATTEMPT,\n FORBIDDEN_REQUEST,\n INACTIVE_USER,\n INCORRECT_EMAIL_PASSWORD,\n INTERNAL_SERVER_ERROR,\n INVALID_FORM,\n NON_COMPLIANT_PASSWORD_EXCEPTION,\n NUDGE_PASSWORD_CHANGE,\n REQUIRE_PASSWORD_CHANGE,\n TPA_AUTHENTICATION_FAILURE,\n} from './data/constants';\nimport messages from './messages';\n\nconst LoginFailureMessage = (props) => {\n const { formatMessage } = useIntl();\n const { context, errorCode } = props.loginError;\n\n const authService = getAuthService();\n let errorList;\n let resetLink = (\n \n {formatMessage(messages['login.incorrect.credentials.error.reset.link.text'])}\n \n );\n\n switch (errorCode) {\n case NON_COMPLIANT_PASSWORD_EXCEPTION: {\n errorList = (\n <>\n {formatMessage(messages['non.compliant.password.title'])}\n

{formatMessage(messages['non.compliant.password.message'])}

\n \n );\n break;\n }\n case FORBIDDEN_REQUEST:\n errorList =

{formatMessage(messages['login.rate.limit.reached.message'])}

;\n break;\n case INACTIVE_USER: {\n const supportLink = (\n \n {formatMessage(messages['contact.support.link'], { platformName: context.platformName })}\n \n );\n errorList = (\n

\n ,\n email: {props.loginError.email},\n supportLink,\n }}\n />\n

\n );\n break;\n }\n case ALLOWED_DOMAIN_LOGIN_ERROR: {\n const url = `${getConfig().LMS_BASE_URL}/dashboard/?tpa_hint=${context.tpaHint}`;\n const tpaLink = (\n \n {formatMessage(messages['tpa.account.link'], { provider: context.provider })}\n \n );\n errorList = (\n

\n \n

\n );\n break;\n }\n case INVALID_FORM:\n errorList =

{formatMessage(messages['login.form.invalid.error.message'])}

;\n break;\n case FAILED_LOGIN_ATTEMPT: {\n resetLink = (\n \n {formatMessage(messages['login.incorrect.credentials.error.before.account.blocked.text'])}\n \n );\n errorList = (\n <>\n

\n \n

\n

\n \n

\n \n );\n break;\n }\n case ACCOUNT_LOCKED_OUT: {\n errorList = (\n <>\n

{formatMessage(messages['account.locked.out.message.1'])}

\n

\n \n

\n \n );\n break;\n }\n case INCORRECT_EMAIL_PASSWORD:\n if (context.failureCount <= 1) {\n errorList =

{formatMessage(messages['login.incorrect.credentials.error'])}

;\n } else if (context.failureCount === 2) {\n errorList = (\n

\n \n

\n );\n }\n break;\n case NUDGE_PASSWORD_CHANGE:\n // Need to clear the CSRF token here to fetch a new one because token is already rotated after successful login.\n if (authService) {\n authService.getCsrfTokenService().clearCsrfTokenCache();\n }\n return (\n \n );\n case REQUIRE_PASSWORD_CHANGE:\n return ;\n case TPA_AUTHENTICATION_FAILURE:\n errorList = (\n

{formatMessage(messages['login.tpa.authentication.failure'], {\n platform_name: getConfig().SITE_NAME,\n lineBreak:
,\n errorMessage: context.errorMessage,\n })}\n

\n );\n break;\n case INTERNAL_SERVER_ERROR:\n default:\n errorList =

{formatMessage(messages['internal.server.error.message'])}

;\n break;\n }\n\n return (\n \n {formatMessage(messages['login.failure.header.title'])}\n { errorList }\n \n );\n};\n\nLoginFailureMessage.defaultProps = {\n loginError: {\n redirectUrl: null,\n errorCode: null,\n errorMessage: null,\n },\n};\n\nLoginFailureMessage.propTypes = {\n loginError: PropTypes.shape({\n context: PropTypes.shape({\n supportLink: PropTypes.string,\n platformName: PropTypes.string,\n tpaHint: PropTypes.string,\n provider: PropTypes.string,\n allowedDomain: PropTypes.string,\n remainingAttempts: PropTypes.number,\n failureCount: PropTypes.number,\n errorMessage: PropTypes.string,\n }),\n email: PropTypes.string,\n errorCode: PropTypes.string,\n redirectUrl: PropTypes.string,\n }),\n};\n\nexport default LoginFailureMessage;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Button, Form,\n Icon,\n} from '@edx/paragon';\nimport { Login } from '@edx/paragon/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';\n\n/**\n * This component renders the Single sign-on (SSO) button only for the tpa provider passed\n * */\nconst EnterpriseSSO = (props) => {\n const { formatMessage } = useIntl();\n const tpaProvider = props.provider;\n const disablePublicAccountCreation = getConfig().ALLOW_PUBLIC_ACCOUNT_CREATION === false;\n\n const handleSubmit = (e, url) => {\n e.preventDefault();\n window.location.href = getConfig().LMS_BASE_URL + url;\n };\n\n const handleClick = (e) => {\n e.preventDefault();\n window.location.href = LOGIN_PAGE;\n };\n\n if (tpaProvider) {\n return (\n
\n
\n
\n
\n

{formatMessage(messages['enterprisetpa.title.heading'], { providerName: tpaProvider.name })}

\n handleSubmit(e, tpaProvider.loginUrl)}\n >\n {tpaProvider.iconImage ? (\n
\n {`icon\n { tpaProvider.name }\n
\n )\n : (\n <>\n
\n {SUPPORTED_ICON_CLASSES.includes(tpaProvider.iconClass) ? (\n )\n : (\n \n )}\n
\n { tpaProvider.name }\n \n )}\n \n
\n handleClick(e)}\n >\n {disablePublicAccountCreation\n ? formatMessage(messages['enterprisetpa.login.button.text.public.account.creation.disabled'])\n : formatMessage(messages['enterprisetpa.login.button.text'])}\n \n \n
\n
\n
\n );\n }\n return
;\n};\n\nEnterpriseSSO.defaultProps = {\n provider: {\n id: '',\n name: '',\n iconClass: '',\n iconImage: '',\n loginUrl: '',\n registerUrl: '',\n },\n};\n\nEnterpriseSSO.propTypes = {\n provider: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n iconClass: PropTypes.string,\n iconImage: PropTypes.string,\n loginUrl: PropTypes.string,\n registerUrl: PropTypes.string,\n }),\n};\n\nexport default EnterpriseSSO;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'sign.in': {\n id: 'sign.in',\n defaultMessage: 'Sign in',\n description: 'Sign in toggle text',\n },\n 'reset.password.page.title': {\n id: 'reset.password.page.title',\n defaultMessage: 'Reset Password | {siteName}',\n description: 'page title',\n },\n 'reset.password': {\n id: 'reset.password',\n defaultMessage: 'Reset password',\n description: 'The page heading and button text for reset password page.',\n },\n 'reset.password.page.instructions': {\n id: 'reset.password.page.instructions',\n defaultMessage: 'Enter and confirm your new password.',\n description: 'Instructions message for reset password page.',\n },\n 'new.password.label': {\n id: 'new.password.label',\n defaultMessage: 'New password',\n description: 'New password field label for the reset password page.',\n },\n 'confirm.password.label': {\n id: 'confirm.password.label',\n defaultMessage: 'Confirm password',\n description: 'Confirm password field label for the reset password page.',\n },\n // validation errors\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Password criteria has not been met',\n description: 'Error message for empty or invalid password',\n },\n 'passwords.do.not.match': {\n id: 'passwords.do.not.match',\n defaultMessage: 'Passwords do not match',\n description: 'Password format error.',\n },\n 'confirm.your.password': {\n id: 'confirm.your.password',\n defaultMessage: 'Confirm your password',\n description: 'Field validation message when confirm password is empty',\n },\n // alert banner strings\n 'reset.password.failure.heading': {\n id: 'reset.password.failure.heading',\n defaultMessage: 'We couldn\\'t reset your password.',\n description: 'Heading for reset password request failure',\n },\n 'reset.password.form.submission.error': {\n id: 'reset.password.form.submission.error',\n defaultMessage: 'Please check your responses and try again.',\n description: 'Error message for reset password page',\n },\n 'reset.server.rate.limit.error': {\n id: 'reset.server.rate.limit.error',\n defaultMessage: 'Too many requests.',\n description: 'Too many request at server end point',\n },\n 'reset.password.success.heading': {\n id: 'reset.password.success.heading',\n defaultMessage: 'Password reset complete.',\n description: 'Heading for alert box when reset password is successful',\n },\n 'reset.password.success': {\n id: 'reset.password.success',\n defaultMessage: 'Your password has been reset. Sign in to your account.',\n description: 'Reset password success message',\n },\n 'internal.server.error': {\n id: 'internal.server.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n 'rate.limit.error': {\n id: 'rate.limit.error',\n defaultMessage: 'An error has occurred because of too many requests. Please try again after some time.',\n description: 'Error message that appears when server responds with 429 error code',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\n\nimport messages from './messages';\n\nconst ResetPasswordSuccess = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {formatMessage(messages['reset.password.success.heading'])}\n \n

{formatMessage(messages['reset.password.success'])}

\n
\n );\n};\n\nexport default ResetPasswordSuccess;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { injectIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form, Hyperlink, Icon, StatefulButton,\n} from '@edx/paragon';\nimport { Institution } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport Skeleton from 'react-loading-skeleton';\nimport { Link } from 'react-router-dom';\n\nimport AccountActivationMessage from './AccountActivationMessage';\nimport {\n loginRemovePasswordResetBanner, loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,\n} from './data/actions';\nimport { INVALID_FORM, TPA_AUTHENTICATION_FAILURE } from './data/constants';\nimport { loginErrorSelector, loginFormDataSelector, loginRequestSelector } from './data/selectors';\nimport LoginFailureMessage from './LoginFailure';\nimport messages from './messages';\nimport {\n FormGroup, InstitutionLogistration, PasswordField, RedirectLogistration,\n RenderInstitutionButton, SocialAuthProviders, ThirdPartyAuthAlert,\n} from '../common-components';\nimport { getThirdPartyAuthContext } from '../common-components/data/actions';\nimport { thirdPartyAuthContextSelector } from '../common-components/data/selectors';\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\nimport {\n DEFAULT_STATE, ENTERPRISE_LOGIN_URL, PENDING_STATE, RESET_PAGE,\n} from '../data/constants';\nimport {\n getActivationStatus,\n getAllPossibleQueryParams,\n getTpaHint,\n getTpaProvider,\n updatePathWithQueryParams,\n windowScrollTo,\n} from '../data/utils';\nimport ResetPasswordSuccess from '../reset-password/ResetPasswordSuccess';\n\nclass LoginPage extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {\n password: this.props.loginFormData.password,\n emailOrUsername: this.props.loginFormData.emailOrUsername,\n errors: {\n emailOrUsername: this.props.loginFormData.errors.emailOrUsername,\n password: this.props.loginFormData.errors.password,\n },\n isSubmitted: false,\n };\n this.queryParams = getAllPossibleQueryParams();\n this.tpaHint = getTpaHint();\n }\n\n componentDidMount() {\n sendPageEvent('login_and_registration', 'login');\n const payload = { ...this.queryParams };\n\n if (this.tpaHint) {\n payload.tpa_hint = this.tpaHint;\n }\n this.props.getThirdPartyAuthContext(payload);\n this.props.loginRequestReset();\n }\n\n shouldComponentUpdate(nextProps) {\n if (nextProps.loginFormData && this.props.loginFormData !== nextProps.loginFormData) {\n // Ensuring browser's autofill user credentials get filled and their state persists in the redux store.\n const nextState = {\n emailOrUsername: nextProps.loginFormData.emailOrUsername || this.state.emailOrUsername,\n password: nextProps.loginFormData.password || this.state.password,\n };\n this.setState({\n ...nextProps.loginFormData,\n ...nextState,\n });\n return false;\n }\n return true;\n }\n\n componentWillUnmount() {\n if (this.props.resetPassword) {\n this.props.loginRemovePasswordResetBanner();\n }\n }\n\n getEnterPriseLoginURL() {\n return getConfig().LMS_BASE_URL + ENTERPRISE_LOGIN_URL;\n }\n\n handleSubmit = (e) => {\n e.preventDefault();\n if (this.props.resetPassword) {\n this.props.loginRemovePasswordResetBanner();\n }\n this.setState({ isSubmitted: true });\n const { emailOrUsername, password } = this.state;\n const emailValidationError = this.validateEmail(emailOrUsername);\n const passwordValidationError = this.validatePassword(password);\n\n if (emailValidationError !== '' || passwordValidationError !== '') {\n this.props.setLoginFormData({\n errors: {\n emailOrUsername: emailValidationError,\n password: passwordValidationError,\n },\n });\n this.props.loginRequestFailure({\n errorCode: INVALID_FORM,\n });\n return;\n }\n\n const payload = {\n email_or_username: emailOrUsername, password, ...this.queryParams,\n };\n this.props.loginRequest(payload);\n };\n\n handleOnFocus = (e) => {\n const { errors } = this.state;\n errors[e.target.name] = '';\n this.props.setLoginFormData({\n errors,\n });\n };\n\n handleOnBlur = (e) => {\n const payload = {\n [e.target.name]: e.target.value,\n };\n this.props.setLoginFormData(payload);\n };\n\n handleForgotPasswordLinkClickEvent = () => {\n sendTrackEvent('edx.bi.password-reset_form.toggled', { category: 'user-engagement' });\n };\n\n validateEmail(email) {\n const { errors } = this.state;\n\n if (email === '') {\n errors.emailOrUsername = this.props.intl.formatMessage(messages['email.validation.message']);\n } else if (email.length < 2) {\n errors.emailOrUsername = this.props.intl.formatMessage(messages['username.or.email.format.validation.less.chars.message']);\n } else {\n errors.emailOrUsername = '';\n }\n return errors.emailOrUsername;\n }\n\n validatePassword(password) {\n const { errors } = this.state;\n errors.password = password.length > 0 ? '' : this.props.intl.formatMessage(messages['password.validation.message']);\n\n return errors.password;\n }\n\n renderThirdPartyAuth(providers, secondaryProviders, currentProvider, thirdPartyAuthApiStatus, intl) {\n const isInstitutionAuthActive = !!secondaryProviders.length && !currentProvider;\n const isSocialAuthActive = !!providers.length && !currentProvider;\n const isEnterpriseLoginDisabled = getConfig().DISABLE_ENTERPRISE_LOGIN;\n\n return (\n <>\n {(isSocialAuthActive || (isEnterpriseLoginDisabled && isInstitutionAuthActive))\n && (\n
\n {intl.formatMessage(messages['login.other.options.heading'])}\n
\n )}\n\n {(!isEnterpriseLoginDisabled && isSocialAuthActive) && (\n \n \n {intl.formatMessage(messages['enterprise.login.btn.text'])}\n \n )}\n\n {thirdPartyAuthApiStatus === PENDING_STATE ? (\n \n ) : (\n <>\n {(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (\n \n )}\n {isSocialAuthActive && (\n
\n \n
\n )}\n \n )}\n \n );\n }\n\n renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthContext,\n thirdPartyAuthApiStatus,\n submitState,\n intl,\n ) {\n const activationMsgType = getActivationStatus();\n if (this.props.institutionLogin) {\n return (\n \n );\n }\n const tpaAuthenticationError = {};\n if (thirdPartyAuthContext.errorMessage) {\n tpaAuthenticationError.context = {\n errorMessage: thirdPartyAuthContext.errorMessage,\n };\n tpaAuthenticationError.errorCode = TPA_AUTHENTICATION_FAILURE;\n }\n\n return (\n <>\n \n {intl.formatMessage(messages['login.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n \n
\n \n {this.props.loginError ? : null}\n {thirdPartyAuthContext.errorMessage ? : null}\n {submitState === DEFAULT_STATE && this.state.isSubmitted ? windowScrollTo({ left: 0, top: 0, behavior: 'smooth' }) : null}\n {activationMsgType && }\n {this.props.resetPassword && !this.props.loginError ? : null}\n
\n this.setState({ emailOrUsername: e.target.value, isSubmitted: false })}\n handleFocus={this.handleOnFocus}\n handleBlur={this.handleOnBlur}\n errorMessage={this.state.errors.emailOrUsername}\n floatingLabel={intl.formatMessage(messages['login.user.identity.label'])}\n />\n this.setState({ password: e.target.value, isSubmitted: false })}\n handleFocus={this.handleOnFocus}\n handleBlur={this.handleOnBlur}\n errorMessage={this.state.errors.password}\n floatingLabel={intl.formatMessage(messages['login.password.label'])}\n />\n e.preventDefault()}\n />\n \n {intl.formatMessage(messages['forgot.password'])}\n \n {this.renderThirdPartyAuth(providers, secondaryProviders, currentProvider, thirdPartyAuthApiStatus, intl)}\n \n
\n \n );\n }\n\n render() {\n const {\n intl, submitState, thirdPartyAuthContext, thirdPartyAuthApiStatus,\n } = this.props;\n const { currentProvider, providers, secondaryProviders } = this.props.thirdPartyAuthContext;\n\n if (this.tpaHint) {\n if (thirdPartyAuthApiStatus === PENDING_STATE) {\n return ;\n }\n const { provider, skipHintedLogin } = getTpaProvider(this.tpaHint, providers, secondaryProviders);\n if (skipHintedLogin) {\n window.location.href = getConfig().LMS_BASE_URL + provider.loginUrl;\n return null;\n }\n return provider ? () : this.renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthContext,\n thirdPartyAuthApiStatus,\n submitState,\n intl,\n );\n }\n return this.renderForm(\n currentProvider,\n providers,\n secondaryProviders,\n thirdPartyAuthContext,\n thirdPartyAuthApiStatus,\n submitState,\n intl,\n );\n }\n}\n\nLoginPage.defaultProps = {\n loginResult: null,\n loginError: null,\n loginFormData: {\n emailOrUsername: '',\n password: '',\n errors: {\n emailOrUsername: '',\n password: '',\n },\n },\n resetPassword: false,\n submitState: DEFAULT_STATE,\n thirdPartyAuthApiStatus: 'pending',\n thirdPartyAuthContext: {\n currentProvider: null,\n errorMessage: null,\n finishAuthUrl: null,\n providers: [],\n secondaryProviders: [],\n },\n};\n\nLoginPage.propTypes = {\n getThirdPartyAuthContext: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func,\n }).isRequired,\n loginError: PropTypes.shape({}),\n loginRequest: PropTypes.func.isRequired,\n loginRequestFailure: PropTypes.func.isRequired,\n loginRequestReset: PropTypes.func.isRequired,\n setLoginFormData: PropTypes.func.isRequired,\n loginRemovePasswordResetBanner: PropTypes.func.isRequired,\n loginResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n success: PropTypes.bool,\n }),\n loginFormData: PropTypes.shape({\n emailOrUsername: PropTypes.string,\n password: PropTypes.string,\n errors: PropTypes.shape({\n emailOrUsername: PropTypes.string,\n password: PropTypes.string,\n }),\n }),\n resetPassword: PropTypes.bool,\n submitState: PropTypes.string,\n thirdPartyAuthApiStatus: PropTypes.string,\n thirdPartyAuthContext: PropTypes.shape({\n currentProvider: PropTypes.string,\n errorMessage: PropTypes.string,\n platformName: PropTypes.string,\n providers: PropTypes.arrayOf(PropTypes.shape({})),\n secondaryProviders: PropTypes.arrayOf(PropTypes.shape({})),\n finishAuthUrl: PropTypes.string,\n }),\n institutionLogin: PropTypes.bool.isRequired,\n handleInstitutionLogin: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = state => {\n const loginResult = loginRequestSelector(state);\n const thirdPartyAuthContext = thirdPartyAuthContextSelector(state);\n const loginError = loginErrorSelector(state);\n const loginFormData = loginFormDataSelector(state);\n return {\n submitState: state.login.submitState,\n thirdPartyAuthApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n loginError,\n loginResult,\n thirdPartyAuthContext,\n loginFormData,\n resetPassword: state.login.resetPassword,\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n getThirdPartyAuthContext,\n loginRequest,\n loginRequestFailure,\n loginRequestReset,\n setLoginFormData,\n loginRemovePasswordResetBanner,\n },\n)(injectIntl(LoginPage));\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'resetPassword';\n\nexport const resetPasswordSelector = state => ({ ...state[storeName] });\n\nexport const resetPasswordResultSelector = createSelector(\n resetPasswordSelector,\n resetPassword => resetPassword,\n);\n","import { getConfig } from '@edx/frontend-platform';\nimport { getHttpClient } from '@edx/frontend-platform/auth';\nimport formurlencoded from 'form-urlencoded';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function validateToken(token) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/user_api/v1/account/password_reset/token/validate/`,\n formurlencoded({ token }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n return data;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function resetPassword(payload, token, queryParams) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n const url = new URL(`${getConfig().LMS_BASE_URL}/password/reset/${token}/`);\n\n if (queryParams.is_account_recovery) {\n url.searchParams.append('is_account_recovery', true);\n }\n\n const { data } = await getHttpClient()\n .post(url.href, formurlencoded(payload), requestConfig)\n .catch((e) => {\n throw (e);\n });\n return data;\n}\n\nexport async function validatePassword(payload) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v1/validation/registration`,\n formurlencoded(payload),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n let errorMessage = '';\n // Be careful about grabbing this message, since we could have received an HTTP error or the\n // endpoint didn't give us what we expect. We only care if we get a clear error message.\n if (data.validation_decisions && data.validation_decisions.password) {\n errorMessage = data.validation_decisions.password;\n }\n\n return errorMessage;\n}\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { FORM_SUBMISSION_ERROR, PASSWORD_RESET, PASSWORD_VALIDATION_ERROR } from './data/constants';\nimport messages from './messages';\n\nconst ResetPasswordFailure = (props) => {\n const { formatMessage } = useIntl();\n const { errorCode, errorMsg } = props;\n\n let errorMessage = null;\n let heading = formatMessage(messages['reset.password.failure.heading']);\n switch (errorCode) {\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = formatMessage(messages['reset.server.rate.limit.error']);\n errorMessage = formatMessage(messages['rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n errorMessage = formatMessage(messages['internal.server.error']);\n break;\n case PASSWORD_VALIDATION_ERROR:\n errorMessage = errorMsg;\n break;\n case FORM_SUBMISSION_ERROR:\n errorMessage = formatMessage(messages['reset.password.form.submission.error']);\n break;\n default:\n break;\n }\n\n if (errorMessage) {\n return (\n \n {heading}\n

{errorMessage}

\n
\n );\n }\n\n return null;\n};\n\nResetPasswordFailure.defaultProps = {\n errorCode: null,\n errorMsg: null,\n};\n\nResetPasswordFailure.propTypes = {\n errorCode: PropTypes.string,\n errorMsg: PropTypes.string,\n};\n\nexport default ResetPasswordFailure;\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form,\n Icon,\n Spinner,\n StatefulButton,\n Tab,\n Tabs,\n} from '@edx/paragon';\nimport { ChevronLeft } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { useNavigate, useParams } from 'react-router-dom';\n\nimport { resetPassword, validateToken } from './data/actions';\nimport {\n FORM_SUBMISSION_ERROR, PASSWORD_RESET_ERROR, PASSWORD_VALIDATION_ERROR, TOKEN_STATE,\n} from './data/constants';\nimport { resetPasswordResultSelector } from './data/selectors';\nimport { validatePassword } from './data/service';\nimport messages from './messages';\nimport ResetPasswordFailure from './ResetPasswordFailure';\nimport BaseContainer from '../base-container';\nimport { PasswordField } from '../common-components';\nimport {\n LETTER_REGEX, LOGIN_PAGE, NUMBER_REGEX, RESET_PAGE,\n} from '../data/constants';\nimport { getAllPossibleQueryParams, updatePathWithQueryParams, windowScrollTo } from '../data/utils';\n\nconst ResetPasswordPage = (props) => {\n const { formatMessage } = useIntl();\n const newPasswordError = formatMessage(messages['password.validation.message']);\n\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [formErrors, setFormErrors] = useState({});\n const [errorCode, setErrorCode] = useState(null);\n const { token } = useParams();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (props.status !== TOKEN_STATE.PENDING && props.status !== PASSWORD_RESET_ERROR) {\n setErrorCode(props.status);\n }\n if (props.status === PASSWORD_VALIDATION_ERROR) {\n setFormErrors({ newPassword: newPasswordError });\n }\n }, [props.status, newPasswordError]);\n\n const validatePasswordFromBackend = async (password) => {\n let errorMessage = '';\n try {\n const payload = {\n reset_password_page: true,\n password,\n };\n errorMessage = await validatePassword(payload);\n } catch (err) {\n errorMessage = '';\n }\n setFormErrors({ ...formErrors, newPassword: errorMessage });\n };\n\n const validateInput = (name, value) => {\n switch (name) {\n case 'newPassword':\n if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n formErrors.newPassword = formatMessage(messages['password.validation.message']);\n } else {\n validatePasswordFromBackend(value);\n }\n break;\n case 'confirmPassword':\n if (!value) {\n formErrors.confirmPassword = formatMessage(messages['confirm.your.password']);\n } else if (value !== newPassword) {\n formErrors.confirmPassword = formatMessage(messages['passwords.do.not.match']);\n } else {\n formErrors.confirmPassword = '';\n }\n break;\n default:\n break;\n }\n setFormErrors({ ...formErrors });\n return !Object.values(formErrors).some(x => (x !== ''));\n };\n\n const handleOnBlur = (event) => {\n const { name, value } = event.target;\n validateInput(name, value);\n };\n\n const handleConfirmPasswordChange = (e) => {\n const { value } = e.target;\n\n setConfirmPassword(value);\n validateInput('confirmPassword', value);\n };\n\n const handleOnFocus = (e) => {\n setFormErrors({ ...formErrors, [e.target.name]: '' });\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const isPasswordValid = validateInput('newPassword', newPassword);\n const isPasswordConfirmed = validateInput('confirmPassword', confirmPassword);\n\n if (isPasswordValid && isPasswordConfirmed) {\n const formPayload = {\n new_password1: newPassword,\n new_password2: confirmPassword,\n };\n const params = getAllPossibleQueryParams();\n props.resetPassword(formPayload, props.token, params);\n } else {\n setErrorCode(FORM_SUBMISSION_ERROR);\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n }\n };\n\n const tabTitle = (\n
\n \n {formatMessage(messages['sign.in'])}\n
\n );\n\n if (props.status === TOKEN_STATE.PENDING) {\n if (token) {\n props.validateToken(token);\n return ;\n }\n } else if (props.status === PASSWORD_RESET_ERROR) {\n navigate(updatePathWithQueryParams(RESET_PAGE));\n } else if (props.status === 'success') {\n navigate(updatePathWithQueryParams(LOGIN_PAGE));\n } else {\n return (\n \n
\n \n \n {formatMessage(messages['reset.password.page.title'], { siteName: getConfig().SITE_NAME })}\n \n \n navigate(updatePathWithQueryParams(key))}>\n \n \n
\n
\n \n

{formatMessage(messages['reset.password'])}

\n

{formatMessage(messages['reset.password.page.instructions'])}

\n
\n setNewPassword(e.target.value)}\n handleBlur={handleOnBlur}\n handleFocus={handleOnFocus}\n errorMessage={formErrors.newPassword}\n floatingLabel={formatMessage(messages['new.password.label'])}\n />\n \n handleSubmit(e)}\n onMouseDown={(e) => e.preventDefault()}\n />\n \n
\n
\n
\n
\n );\n }\n return null;\n};\n\nResetPasswordPage.defaultProps = {\n status: null,\n token: null,\n errorMsg: null,\n};\n\nResetPasswordPage.propTypes = {\n resetPassword: PropTypes.func.isRequired,\n validateToken: PropTypes.func.isRequired,\n token: PropTypes.string,\n status: PropTypes.string,\n errorMsg: PropTypes.string,\n};\n\nexport default connect(\n resetPasswordResultSelector,\n {\n resetPassword,\n validateToken,\n },\n)(ResetPasswordPage);\n","import { PASSWORD_RESET_FAILURE, RESET_PASSWORD, VALIDATE_TOKEN } from './actions';\nimport { PASSWORD_RESET_ERROR, TOKEN_STATE } from './constants';\n\nexport const defaultState = {\n status: TOKEN_STATE.PENDING,\n token: null,\n errorMsg: null,\n};\n\nconst reducer = (state = defaultState, action = null) => {\n switch (action.type) {\n case VALIDATE_TOKEN.SUCCESS:\n return {\n ...state,\n status: TOKEN_STATE.VALID,\n token: action.payload.token,\n };\n case PASSWORD_RESET_FAILURE:\n return {\n ...state,\n status: PASSWORD_RESET_ERROR,\n };\n case RESET_PASSWORD.BEGIN:\n return {\n ...state,\n status: 'pending',\n };\n case RESET_PASSWORD.SUCCESS:\n return {\n ...state,\n status: 'success',\n };\n case RESET_PASSWORD.FAILURE:\n return {\n ...state,\n status: action.payload.errorCode,\n errorMsg: action.payload.errorMsg,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n passwordResetFailure,\n RESET_PASSWORD,\n resetPasswordBegin,\n resetPasswordFailure,\n resetPasswordSuccess,\n VALIDATE_TOKEN,\n validateTokenBegin,\n validateTokenSuccess,\n} from './actions';\nimport { PASSWORD_RESET, PASSWORD_VALIDATION_ERROR } from './constants';\nimport { resetPassword, validateToken } from './service';\n\n// Services\nexport function* handleValidateToken(action) {\n try {\n yield put(validateTokenBegin());\n const data = yield call(validateToken, action.payload.token);\n const isValid = data.is_valid;\n if (isValid) {\n yield put(validateTokenSuccess(isValid, action.payload.token));\n } else {\n yield put(passwordResetFailure(PASSWORD_RESET.INVALID_TOKEN));\n }\n } catch (err) {\n if (err.response && err.response.status === 429) {\n yield put(passwordResetFailure(PASSWORD_RESET.FORBIDDEN_REQUEST));\n logInfo(err);\n } else {\n yield put(passwordResetFailure(PASSWORD_RESET.INTERNAL_SERVER_ERROR));\n logError(err);\n }\n }\n}\n\nexport function* handleResetPassword(action) {\n try {\n yield put(resetPasswordBegin());\n const data = yield call(resetPassword, action.payload.formPayload, action.payload.token, action.payload.params);\n const resetStatus = data.reset_status;\n const resetErrors = data.err_msg;\n\n if (resetStatus) {\n yield put(resetPasswordSuccess(resetStatus));\n } else if (data.token_invalid) {\n yield put(passwordResetFailure(PASSWORD_RESET.INVALID_TOKEN));\n } else {\n yield put(resetPasswordFailure(PASSWORD_VALIDATION_ERROR, resetErrors));\n }\n } catch (err) {\n if (err.response && err.response.status === 429) {\n yield put(resetPasswordFailure(PASSWORD_RESET.FORBIDDEN_REQUEST));\n logInfo(err);\n } else {\n yield put(resetPasswordFailure(PASSWORD_RESET.INTERNAL_SERVER_ERROR));\n logError(err);\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(RESET_PASSWORD.BASE, handleResetPassword);\n yield takeEvery(VALIDATE_TOKEN.BASE, handleValidateToken);\n}\n","import { LOGIN_PERSIST_FORM_DATA, LOGIN_REMOVE_PASSWORD_RESET_BANNER, LOGIN_REQUEST } from './actions';\nimport { DEFAULT_STATE, PENDING_STATE } from '../../data/constants';\nimport { RESET_PASSWORD } from '../../reset-password';\n\nexport const defaultState = {\n loginError: null,\n loginResult: {},\n resetPassword: false,\n loginFormData: {\n password: '',\n emailOrUsername: '',\n errors: {\n emailOrUsername: '',\n password: '',\n },\n },\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case LOGIN_REQUEST.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n resetPassword: false,\n };\n case LOGIN_REQUEST.SUCCESS:\n return {\n ...state,\n loginResult: action.payload,\n };\n case LOGIN_REQUEST.FAILURE:\n return {\n ...state,\n loginError: action.payload.loginError,\n submitState: DEFAULT_STATE,\n };\n case LOGIN_REQUEST.RESET:\n return {\n ...state,\n loginError: null,\n };\n case RESET_PASSWORD.SUCCESS:\n return {\n ...state,\n resetPassword: true,\n };\n case LOGIN_PERSIST_FORM_DATA: {\n const { formData } = action.payload;\n return {\n ...state,\n loginFormData: {\n ...state.loginFormData,\n ...formData,\n },\n };\n }\n case LOGIN_REMOVE_PASSWORD_RESET_BANNER: {\n return {\n ...state,\n resetPassword: false,\n };\n }\n default:\n return {\n ...state,\n };\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport * as QueryString from 'query-string';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function loginRequest(creds) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v2/account/login_session/`,\n QueryString.stringify(creds),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n redirectUrl: data.redirect_url || `${getConfig().LMS_BASE_URL}/dashboard`,\n success: data.success || false,\n };\n}\n","import { camelCaseObject } from '@edx/frontend-platform';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n LOGIN_REQUEST,\n loginRequestBegin,\n loginRequestFailure,\n loginRequestSuccess,\n} from './actions';\nimport { FORBIDDEN_REQUEST, INTERNAL_SERVER_ERROR } from './constants';\nimport {\n loginRequest,\n} from './service';\n\nexport function* handleLoginRequest(action) {\n try {\n yield put(loginRequestBegin());\n\n const { redirectUrl, success } = yield call(loginRequest, action.payload.creds);\n\n yield put(loginRequestSuccess(\n redirectUrl,\n success,\n ));\n } catch (e) {\n const statusCodes = [400];\n if (e.response) {\n const { status } = e.response;\n if (statusCodes.includes(status)) {\n yield put(loginRequestFailure(camelCaseObject(e.response.data)));\n logInfo(e);\n } else if (status === 403) {\n yield put(loginRequestFailure({ errorCode: FORBIDDEN_REQUEST }));\n logInfo(e);\n } else {\n yield put(loginRequestFailure({ errorCode: INTERNAL_SERVER_ERROR }));\n logError(e);\n }\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(LOGIN_REQUEST.BASE, handleLoginRequest);\n}\n","import { AsyncActionType } from '../../data/utils';\n\nexport const GET_FIELDS_DATA = new AsyncActionType('FIELD_DESCRIPTION', 'GET_FIELDS_DATA');\nexport const SAVE_USER_PROFILE = new AsyncActionType('USER_PROFILE', 'SAVE_USER_PROFILE');\n\n// save additional user information\nexport const saveUserProfile = (username, data) => ({\n type: SAVE_USER_PROFILE.BASE,\n payload: { username, data },\n});\n\nexport const saveUserProfileBegin = () => ({\n type: SAVE_USER_PROFILE.BEGIN,\n});\n\nexport const saveUserProfileSuccess = () => ({\n type: SAVE_USER_PROFILE.SUCCESS,\n});\n\nexport const saveUserProfileFailure = () => ({\n type: SAVE_USER_PROFILE.FAILURE,\n});\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'commonComponents';\n\nexport const commonComponentsSelector = state => ({ ...state[storeName] });\n\nexport const welcomePageContextSelector = createSelector(\n commonComponentsSelector,\n commonComponents => ({\n fields: commonComponents.optionalFields.fields,\n extended_profile: commonComponents.optionalFields.extended_profile,\n nextUrl: commonComponents.thirdPartyAuthContext.welcomePageRedirectUrl,\n }),\n);\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'progressive.profiling.page.title': {\n id: 'progressive.profiling.page.title',\n defaultMessage: 'Welcome | {siteName}',\n description: 'progressive profiling page title',\n },\n 'progressive.profiling.page.heading': {\n id: 'progressive.profiling.page.heading',\n defaultMessage: 'A few questions for you will help us get smarter.',\n description: 'The page heading for the progressive profiling page.',\n },\n 'optional.fields.information.link': {\n id: 'optional.fields.information.link',\n defaultMessage: 'Learn more about how we use this information.',\n description: 'Optional fields page information link',\n },\n 'optional.fields.submit.button': {\n id: 'optional.fields.submit.button',\n defaultMessage: 'Submit',\n description: 'Submit button text',\n },\n 'optional.fields.skip.button': {\n id: 'optional.fields.skip.button',\n defaultMessage: 'Skip for now',\n description: 'Skip button text',\n },\n 'optional.fields.next.button': {\n id: 'optional.fields.next.button',\n defaultMessage: 'Next',\n description: 'Next button text',\n },\n // modal dialog box\n 'continue.to.platform': {\n id: 'continue.to.platform',\n defaultMessage: 'Continue to {platformName}',\n description: 'Button text for modal when user chooses \"skip for now\" option',\n },\n 'modal.title': {\n id: 'modal.title',\n defaultMessage: 'Thanks for letting us know.',\n description: 'Heading for welcome page modal',\n },\n 'modal.description': {\n id: 'modal.description',\n defaultMessage: 'You can complete your profile in settings at any time if you change your mind.',\n description: 'Modal body text',\n },\n // error message\n 'welcome.page.error.heading': {\n id: 'welcome.page.error.heading',\n defaultMessage: 'We couldn\\'t update your profile',\n description: 'Error message heading',\n },\n 'welcome.page.error.message': {\n id: 'welcome.page.error.message',\n defaultMessage: 'An error occurred. You can complete your profile in settings at any time.',\n description: 'Error message body',\n },\n});\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { ActionRow, Button, ModalDialog } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\nconst ProgressiveProfilingPageModal = (props) => {\n const { formatMessage } = useIntl();\n const { isOpen, redirectUrl } = props;\n const platformName = getConfig().SITE_NAME;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n window.location.href = redirectUrl;\n };\n\n return (\n {}}\n size=\"sm\"\n variant=\"default\"\n hasCloseButton={false}\n >\n \n \n {formatMessage(messages['modal.title'])}\n \n \n\n \n {formatMessage(messages['modal.description'])}\n \n\n \n \n \n \n \n \n );\n};\n\nProgressiveProfilingPageModal.propTypes = {\n isOpen: PropTypes.bool,\n redirectUrl: PropTypes.string.isRequired,\n};\n\nProgressiveProfilingPageModal.defaultProps = {\n isOpen: false,\n};\n\nexport default ProgressiveProfilingPageModal;\n","const isOneTrustFunctionalCookieEnabled = () => !!window?.OnetrustActiveGroups?.includes('C0003');\n\nexport default isOneTrustFunctionalCookieEnabled;\n","import React from 'react';\n\nimport { Form, Icon } from '@edx/paragon';\nimport { ExpandMore } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nconst FormFieldRenderer = (props) => {\n let formField = null;\n const {\n className, errorMessage, fieldData, onChangeHandler, isRequired, value,\n } = props;\n\n const handleFocus = (e) => {\n if (props.handleFocus) { props.handleFocus(e); }\n };\n\n const handleOnBlur = (e) => {\n if (props.handleBlur) { props.handleBlur(e); }\n };\n\n switch (fieldData.type) {\n case 'select': {\n if (!fieldData.options) {\n return null;\n }\n formField = (\n \n onChangeHandler(e)}\n trailingElement={}\n floatingLabel={fieldData.label}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n >\n \n {fieldData.options.map(option => (\n \n ))}\n \n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n case 'textarea': {\n formField = (\n \n onChangeHandler(e)}\n floatingLabel={fieldData.label}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n />\n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n case 'text': {\n formField = (\n \n onChangeHandler(e)}\n floatingLabel={fieldData.label}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n />\n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n case 'checkbox': {\n formField = (\n \n onChangeHandler(e)}\n onBlur={handleOnBlur}\n onFocus={handleFocus}\n >\n {fieldData.label}\n \n {isRequired && errorMessage && (\n \n {errorMessage}\n \n )}\n \n );\n break;\n }\n default:\n break;\n }\n\n return formField;\n};\nFormFieldRenderer.defaultProps = {\n className: '',\n value: '',\n handleBlur: null,\n handleFocus: null,\n errorMessage: '',\n isRequired: false,\n};\n\nFormFieldRenderer.propTypes = {\n className: PropTypes.string,\n fieldData: PropTypes.shape({\n type: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n }).isRequired,\n onChangeHandler: PropTypes.func.isRequired,\n handleBlur: PropTypes.func,\n handleFocus: PropTypes.func,\n errorMessage: PropTypes.string,\n isRequired: PropTypes.bool,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n};\n\nexport default FormFieldRenderer;\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig, snakeCaseObject } from '@edx/frontend-platform';\nimport { identifyAuthenticatedUser, sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport {\n AxiosJwtAuthService,\n configure as configureAuth,\n getAuthenticatedUser,\n} from '@edx/frontend-platform/auth';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { getLoggingService } from '@edx/frontend-platform/logging';\nimport {\n Alert,\n Form,\n Hyperlink,\n StatefulButton,\n} from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { useLocation } from 'react-router-dom';\n\nimport { saveUserProfile } from './data/actions';\nimport { welcomePageContextSelector } from './data/selectors';\nimport messages from './messages';\nimport ProgressiveProfilingPageModal from './ProgressiveProfilingPageModal';\nimport BaseContainer from '../base-container';\nimport { RedirectLogistration } from '../common-components';\nimport { getThirdPartyAuthContext } from '../common-components/data/actions';\nimport {\n COMPLETE_STATE,\n DEFAULT_REDIRECT_URL,\n DEFAULT_STATE,\n FAILURE_STATE,\n PENDING_STATE,\n} from '../data/constants';\nimport isOneTrustFunctionalCookieEnabled from '../data/oneTrust';\nimport { getAllPossibleQueryParams, isHostAvailableInQueryParams } from '../data/utils';\nimport { FormFieldRenderer } from '../field-renderer';\n\nconst ProgressiveProfiling = (props) => {\n const { formatMessage } = useIntl();\n const {\n getFieldDataFromBackend,\n submitState,\n showError,\n welcomePageContext,\n welcomePageContextApiStatus,\n } = props;\n const location = useLocation();\n const registrationEmbedded = isHostAvailableInQueryParams();\n\n const queryParams = getAllPossibleQueryParams();\n const authenticatedUser = getAuthenticatedUser() || location.state?.authenticatedUser;\n const functionalCookiesConsent = isOneTrustFunctionalCookieEnabled();\n const enablePostRegistrationRecommendations = (\n getConfig().ENABLE_POST_REGISTRATION_RECOMMENDATIONS && functionalCookiesConsent\n );\n\n const [registrationResult, setRegistrationResult] = useState({ redirectUrl: '' });\n const [formFieldData, setFormFieldData] = useState({ fields: {}, extendedProfile: [] });\n const [values, setValues] = useState({});\n const [showModal, setShowModal] = useState(false);\n const [showRecommendationsPage, setShowRecommendationsPage] = useState(false);\n\n useEffect(() => {\n if (registrationEmbedded) {\n getFieldDataFromBackend({ is_welcome_page: true, next: queryParams?.next });\n } else {\n configureAuth(AxiosJwtAuthService, { loggingService: getLoggingService(), config: getConfig() });\n }\n }, [registrationEmbedded, getFieldDataFromBackend, queryParams?.next]);\n\n useEffect(() => {\n const registrationResponse = location.state?.registrationResult;\n if (registrationResponse) {\n setRegistrationResult(registrationResponse);\n setFormFieldData({\n fields: location.state?.optionalFields.fields,\n extendedProfile: location.state?.optionalFields.extended_profile,\n });\n }\n }, [location.state]);\n\n useEffect(() => {\n if (registrationEmbedded && Object.keys(welcomePageContext).includes('fields')) {\n setFormFieldData({\n fields: welcomePageContext.fields,\n extendedProfile: welcomePageContext.extended_profile,\n });\n const nextUrl = welcomePageContext.nextUrl ? welcomePageContext.nextUrl : getConfig().SEARCH_CATALOG_URL;\n setRegistrationResult({ redirectUrl: nextUrl });\n }\n }, [registrationEmbedded, welcomePageContext]);\n\n useEffect(() => {\n if (authenticatedUser?.userId) {\n identifyAuthenticatedUser(authenticatedUser.userId);\n sendPageEvent('login_and_registration', 'welcome');\n }\n }, [authenticatedUser]);\n\n useEffect(() => {\n if (!enablePostRegistrationRecommendations) {\n sendTrackEvent(\n 'edx.bi.user.recommendations.not.enabled',\n { functionalCookiesConsent, page: 'authn_recommendations' },\n );\n return;\n }\n\n if (registrationResult.redirectUrl && authenticatedUser?.userId) {\n const redirectQueryParams = getAllPossibleQueryParams(registrationResult.redirectUrl);\n if (!('enrollment_action' in redirectQueryParams || queryParams?.next)) {\n setShowRecommendationsPage(true);\n }\n }\n }, [\n authenticatedUser,\n enablePostRegistrationRecommendations,\n functionalCookiesConsent,\n registrationResult.redirectUrl,\n queryParams?.next,\n ]);\n\n if (\n !authenticatedUser\n || !(location.state?.registrationResult || registrationEmbedded)\n || welcomePageContextApiStatus === FAILURE_STATE\n || (welcomePageContextApiStatus === COMPLETE_STATE && !Object.keys(welcomePageContext).includes('fields'))\n ) {\n const DASHBOARD_URL = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n global.location.assign(DASHBOARD_URL);\n return null;\n }\n\n const handleSubmit = (e) => {\n e.preventDefault();\n window.history.replaceState(location.state, null, '');\n const payload = { ...values, extendedProfile: [] };\n if (Object.keys(formFieldData.extendedProfile).length > 0) {\n formFieldData.extendedProfile.forEach(fieldName => {\n if (values[fieldName]) {\n payload.extendedProfile.push({ fieldName, fieldValue: values[fieldName] });\n }\n delete payload[fieldName];\n });\n }\n props.saveUserProfile(authenticatedUser.username, snakeCaseObject(payload));\n\n sendTrackEvent(\n 'edx.bi.welcome.page.submit.clicked',\n {\n isGenderSelected: !!values.gender,\n isYearOfBirthSelected: !!values.year_of_birth,\n isLevelOfEducationSelected: !!values.level_of_education,\n host: queryParams?.host || '',\n },\n );\n };\n\n const handleSkip = (e) => {\n e.preventDefault();\n window.history.replaceState(location.state, null, '');\n setShowModal(true);\n sendTrackEvent(\n 'edx.bi.welcome.page.skip.link.clicked',\n {\n host: queryParams?.host || '',\n },\n );\n };\n\n const onChangeHandler = (e) => {\n if (e.target.type === 'checkbox') {\n setValues({ ...values, [e.target.name]: e.target.checked });\n } else {\n setValues({ ...values, [e.target.name]: e.target.value });\n }\n };\n\n const formFields = Object.keys(formFieldData.fields).map((fieldName) => {\n const fieldData = formFieldData.fields[fieldName];\n return (\n \n \n \n );\n });\n\n return (\n \n \n {formatMessage(messages['progressive.profiling.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n \n {(props.shouldRedirect && welcomePageContext.nextUrl) && (\n \n )}\n {props.shouldRedirect && (\n \n )}\n
\n
\n

{formatMessage(messages['progressive.profiling.page.heading'])}

\n
\n
\n {showError ? (\n \n {formatMessage(messages['welcome.page.error.heading'])}\n

{formatMessage(messages['welcome.page.error.message'])}

\n
\n ) : null}\n
\n {formFields}\n {(getConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK) && (\n \n (sendTrackEvent('edx.bi.welcome.page.support.link.clicked'))}\n >\n {formatMessage(messages['optional.fields.information.link'])}\n \n \n )}\n
\n e.preventDefault()}\n />\n e.preventDefault()}\n />\n
\n
\n
\n
\n );\n};\n\nProgressiveProfiling.propTypes = {\n authenticatedUser: PropTypes.shape({\n username: PropTypes.string,\n userId: PropTypes.number,\n }),\n showError: PropTypes.bool,\n shouldRedirect: PropTypes.bool,\n submitState: PropTypes.string,\n welcomePageContext: PropTypes.shape({\n extended_profile: PropTypes.arrayOf(PropTypes.string),\n fields: PropTypes.shape({}),\n nextUrl: PropTypes.string,\n }),\n welcomePageContextApiStatus: PropTypes.string,\n // Actions\n getFieldDataFromBackend: PropTypes.func.isRequired,\n saveUserProfile: PropTypes.func.isRequired,\n};\n\nProgressiveProfiling.defaultProps = {\n authenticatedUser: {},\n shouldRedirect: false,\n showError: false,\n submitState: DEFAULT_STATE,\n welcomePageContext: {},\n welcomePageContextApiStatus: PENDING_STATE,\n};\n\nconst mapStateToProps = state => {\n const welcomePageStore = state.welcomePage;\n\n return {\n shouldRedirect: welcomePageStore.success,\n showError: welcomePageStore.showError,\n submitState: welcomePageStore.submitState,\n welcomePageContext: welcomePageContextSelector(state),\n welcomePageContextApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n saveUserProfile,\n getFieldDataFromBackend: getThirdPartyAuthContext,\n },\n)(ProgressiveProfiling);\n","import { SAVE_USER_PROFILE } from './actions';\nimport {\n DEFAULT_STATE, PENDING_STATE,\n} from '../../data/constants';\n\nexport const defaultState = {\n extendedProfile: [],\n fieldDescriptions: {},\n success: false,\n submitState: DEFAULT_STATE,\n showError: false,\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case SAVE_USER_PROFILE.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n };\n case SAVE_USER_PROFILE.SUCCESS:\n return {\n ...state,\n success: true,\n showError: false,\n };\n case SAVE_USER_PROFILE.FAILURE:\n return {\n ...state,\n submitState: DEFAULT_STATE,\n showError: true,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function patchAccount(username, commitValues) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/merge-patch+json' },\n };\n\n await getAuthenticatedHttpClient()\n .patch(\n `${getConfig().LMS_BASE_URL}/api/user/v1/accounts/${username}`,\n commitValues,\n requestConfig,\n )\n .catch((error) => {\n throw (error);\n });\n}\n","import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n SAVE_USER_PROFILE,\n saveUserProfileBegin,\n saveUserProfileFailure,\n saveUserProfileSuccess,\n} from './actions';\nimport { patchAccount } from './service';\n\nexport function* saveUserProfileInformation(action) {\n try {\n yield put(saveUserProfileBegin());\n yield call(patchAccount, action.payload.username, action.payload.data);\n\n yield put(saveUserProfileSuccess());\n } catch (e) {\n yield put(saveUserProfileFailure());\n }\n}\n\nexport default function* saga() {\n yield takeEvery(SAVE_USER_PROFILE.BASE, saveUserProfileInformation);\n}\n","// Registration Fields\nexport const FIELDS = {\n COUNTRY: 'country',\n HONOR_CODE: 'honor_code',\n TERMS_OF_SERVICE: 'terms_of_service',\n};\n\n// Registration Error Codes\nexport const FORBIDDEN_REQUEST = 'forbidden-request';\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const TPA_AUTHENTICATION_FAILURE = 'tpa-authentication-failure';\nexport const TPA_SESSION_EXPIRED = 'tpa-session-expired';\n","import messages from '../../messages';\n\nexport const INVALID_NAME_REGEX = /[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)?/gi; // eslint-disable-line no-useless-escape\nexport const urlRegex = new RegExp(INVALID_NAME_REGEX);\n\nconst validateName = (value, formatMessage) => {\n let fieldError;\n if (!value.trim()) {\n fieldError = formatMessage(messages['empty.name.field.error']);\n } else if (value && value.match(urlRegex)) {\n fieldError = formatMessage(messages['name.validation.message']);\n }\n return fieldError;\n};\n\nexport default validateName;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport validateName from './validator';\nimport { FormGroup } from '../../../common-components';\nimport { clearRegistrationBackendError, fetchRealtimeValidations } from '../../data/actions';\n\n/**\n * Name field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Making backend call for generating username suggestions\n * - Performing name field validations\n * - Clearing error on focus\n * - Setting value on change\n */\nconst NameField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n\n const {\n handleErrorChange,\n shouldFetchUsernameSuggestions,\n } = props;\n\n const handleOnBlur = (e) => {\n const { value } = e.target;\n const fieldError = validateName(value, formatMessage);\n if (fieldError) {\n handleErrorChange('name', fieldError);\n } else if (shouldFetchUsernameSuggestions && !validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ name: value }));\n }\n };\n\n const handleOnFocus = () => {\n handleErrorChange('name', '');\n dispatch(clearRegistrationBackendError('name'));\n };\n\n return (\n \n );\n};\n\nNameField.defaultProps = {\n errorMessage: '',\n shouldFetchUsernameSuggestions: false,\n};\n\nNameField.propTypes = {\n errorMessage: PropTypes.string,\n shouldFetchUsernameSuggestions: PropTypes.bool,\n value: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n};\n\nexport default NameField;\n","export const COMMON_EMAIL_PROVIDERS = [\n 'hotmail.com', 'yahoo.com', 'outlook.com', 'live.com', 'gmail.com',\n];\n\nexport const DEFAULT_SERVICE_PROVIDER_DOMAINS = ['yahoo', 'hotmail', 'live', 'outlook', 'gmail'];\n\nexport const DEFAULT_TOP_LEVEL_DOMAINS = [\n 'aaa', 'aarp', 'abarth', 'abb', 'abbott', 'abbvie', 'abc', 'able', 'abogado', 'abudhabi', 'ac', 'academy',\n 'accenture', 'accountant', 'accountants', 'aco', 'active', 'actor', 'ad', 'adac', 'ads', 'adult', 'ae', 'aeg', 'aero',\n 'aetna', 'af', 'afamilycompany', 'afl', 'africa', 'ag', 'agakhan', 'agency', 'ai', 'aig', 'aigo', 'airbus', 'airforce',\n 'airtel', 'akdn', 'al', 'alfaromeo', 'alibaba', 'alipay', 'allfinanz', 'allstate', 'ally', 'alsace', 'alstom', 'am',\n 'amazon', 'americanexpress', 'americanfamily', 'amex', 'amfam', 'amica', 'amsterdam', 'an', 'analytics', 'android',\n 'anquan', 'anz', 'ao', 'aol', 'apartments', 'app', 'apple', 'aq', 'aquarelle', 'ar', 'arab', 'aramco', 'archi', 'army',\n 'arpa', 'art', 'arte', 'as', 'asda', 'asia', 'associates', 'at', 'athleta', 'attorney', 'au', 'auction', 'audi',\n 'audible', 'audio', 'auspost', 'author', 'auto', 'autos', 'avianca', 'aw', 'aws', 'ax', 'axa', 'az', 'azure', 'ba',\n 'baby', 'baidu', 'banamex', 'bananarepublic', 'band', 'bank', 'bar', 'barcelona', 'barclaycard', 'barclays',\n 'barefoot', 'bargains', 'baseball', 'basketball', 'bauhaus', 'bayern', 'bb', 'bbc', 'bbt', 'bbva', 'bcg', 'bcn', 'bd',\n 'be', 'beats', 'beauty', 'beer', 'bentley', 'berlin', 'best', 'bestbuy', 'bet', 'bf', 'bg', 'bh', 'bharti', 'bi',\n 'bible', 'bid', 'bike', 'bing', 'bingo', 'bio', 'biz', 'bj', 'bl', 'black', 'blackfriday', 'blanco', 'blockbuster',\n 'blog', 'bloomberg', 'blue', 'bm', 'bms', 'bmw', 'bn', 'bnl', 'bnpparibas', 'bo', 'boats', 'boehringer', 'bofa', 'bom',\n 'bond', 'boo', 'book', 'booking', 'boots', 'bosch', 'bostik', 'boston', 'bot', 'boutique', 'box', 'bq', 'br',\n 'bradesco', 'bridgestone', 'broadway', 'broker', 'brother', 'brussels', 'bs', 'bt', 'budapest', 'bugatti', 'build',\n 'builders', 'business', 'buy', 'buzz', 'bv', 'bw', 'by', 'bz', 'bzh', 'ca', 'cab', 'cafe', 'cal', 'call',\n 'calvinklein', 'cam', 'camera', 'camp', 'cancerresearch', 'canon', 'capetown', 'capital', 'capitalone', 'car',\n 'caravan', 'cards', 'care', 'career', 'careers', 'cars', 'cartier', 'casa', 'case', 'caseih', 'cash', 'casino', 'cat',\n 'catering', 'catholic', 'cba', 'cbn', 'cbre', 'cbs', 'cc', 'cd', 'ceb', 'center', 'ceo', 'cern', 'cf', 'cfa', 'cfd',\n 'cg', 'ch', 'chanel', 'channel', 'charity', 'chase', 'chat', 'cheap', 'chintai', 'chloe', 'christmas', 'chrome',\n 'chrysler', 'church', 'ci', 'cipriani', 'circle', 'cisco', 'citadel', 'citi', 'citic', 'city', 'cityeats', 'ck', 'cl',\n 'claims', 'cleaning', 'click', 'clinic', 'clinique', 'clothing', 'cloud', 'club', 'clubmed', 'cm', 'cn', 'co', 'coach',\n 'codes', 'coffee', 'college', 'cologne', 'com', 'comcast', 'commbank', 'community', 'company', 'compare', 'computer',\n 'comsec', 'condos', 'construction', 'consulting', 'contact', 'contractors', 'cooking', 'cookingchannel', 'cool', 'coop',\n 'corsica', 'country', 'coupon', 'coupons', 'courses', 'cpa', 'cr', 'credit', 'creditcard', 'creditunion', 'cricket',\n 'crown', 'crs', 'cruise', 'cruises', 'csc', 'cu', 'cuisinella', 'cv', 'cw', 'cx', 'cy', 'cymru', 'cyou', 'cz', 'dabur',\n 'dad', 'dance', 'data', 'date', 'dating', 'datsun', 'day', 'dclk', 'dds', 'de', 'deal', 'dealer', 'deals', 'degree',\n 'delivery', 'dell', 'deloitte', 'delta', 'democrat', 'dental', 'dentist', 'desi', 'design', 'dev', 'dhl', 'diamonds',\n 'diet', 'digital', 'direct', 'directory', 'discount', 'discover', 'dish', 'diy', 'dj', 'dk', 'dm', 'dnp', 'do', 'docs',\n 'doctor', 'dodge', 'dog', 'doha', 'domains', 'doosan', 'dot', 'download', 'drive', 'dtv', 'dubai', 'duck', 'dunlop',\n 'duns', 'dupont', 'durban', 'dvag', 'dvr', 'dz', 'earth', 'eat', 'ec', 'eco', 'edeka', 'edu', 'education', 'ee', 'eg',\n 'eh', 'email', 'emerck', 'energy', 'engineer', 'engineering', 'enterprises', 'epost', 'epson', 'equipment', 'er',\n 'ericsson', 'erni', 'es', 'esq', 'estate', 'esurance', 'et', 'etisalat', 'eu', 'eurovision', 'eus', 'events', 'everbank',\n 'exchange', 'expert', 'exposed', 'express', 'extraspace', 'fage', 'fail', 'fairwinds', 'faith', 'family', 'fan', 'fans',\n 'farm', 'farmers', 'fashion', 'fast', 'fedex', 'feedback', 'ferrari', 'ferrero', 'fi', 'fiat', 'fidelity', 'fido', 'film',\n 'final', 'finance', 'financial', 'fire', 'firestone', 'firmdale', 'fish', 'fishing', 'fit', 'fitness', 'fj', 'fk',\n 'flickr', 'flights', 'flir', 'florist', 'flowers', 'flsmidth', 'fly', 'fm', 'fo', 'foo', 'food', 'foodnetwork', 'football',\n 'ford', 'forex', 'forsale', 'forum', 'foundation', 'fox', 'fr', 'free', 'fresenius', 'frl', 'frogans', 'frontdoor',\n 'frontier', 'ftr', 'fujitsu', 'fujixerox', 'fun', 'fund', 'furniture', 'futbol', 'fyi', 'ga', 'gal', 'gallery', 'gallo',\n 'gallup', 'game', 'games', 'gap', 'garden', 'gay', 'gb', 'gbiz', 'gd', 'gdn', 'ge', 'gea', 'gent', 'genting', 'george',\n 'gf', 'gg', 'ggee', 'gh', 'gi', 'gift', 'gifts', 'gives', 'giving', 'gl', 'glade', 'glass', 'gle', 'global', 'globo',\n 'gm', 'gmail', 'gmbh', 'gmo', 'gmx', 'gn', 'godaddy', 'gold', 'goldpoint', 'golf', 'goo', 'goodhands', 'goodyear', 'goog',\n 'google', 'gop', 'got', 'gov', 'gp', 'gq', 'gr', 'grainger', 'graphics', 'gratis', 'green', 'gripe', 'grocery', 'group',\n 'gs', 'gt', 'gu', 'guardian', 'gucci', 'guge', 'guide', 'guitars', 'guru', 'gw', 'gy', 'hair', 'hamburg', 'hangout',\n 'haus', 'hbo', 'hdfc', 'hdfcbank', 'health', 'healthcare', 'help', 'helsinki', 'here', 'hermes', 'hgtv', 'hiphop',\n 'hisamitsu', 'hitachi', 'hiv', 'hk', 'hkt', 'hm', 'hn', 'hockey', 'holdings', 'holiday', 'homedepot', 'homegoods',\n 'homes', 'homesense', 'honda', 'honeywell', 'horse', 'hospital', 'host', 'hosting', 'hot', 'hoteles', 'hotels', 'hotmail',\n 'house', 'how', 'hr', 'hsbc', 'ht', 'htc', 'hu', 'hughes', 'hyatt', 'hyundai', 'ibm', 'icbc', 'ice', 'icu', 'id', 'ie',\n 'ieee', 'ifm', 'iinet', 'ikano', 'il', 'im', 'imamat', 'imdb', 'immo', 'immobilien', 'in', 'inc', 'industries', 'infiniti',\n 'info', 'ing', 'ink', 'institute', 'insurance', 'insure', 'int', 'intel', 'international', 'intuit', 'investments',\n 'io', 'ipiranga', 'iq', 'ir', 'irish', 'is', 'iselect', 'ismaili', 'ist', 'istanbul', 'it', 'itau', 'itv', 'iveco', 'iwc',\n 'jaguar', 'java', 'jcb', 'jcp', 'je', 'jeep', 'jetzt', 'jewelry', 'jio', 'jlc', 'jll', 'jm', 'jmp', 'jnj', 'jo',\n 'jobs', 'joburg', 'jot', 'joy', 'jp', 'jpmorgan', 'jprs', 'juegos', 'juniper', 'kaufen', 'kddi', 'ke', 'kerryhotels',\n 'kerrylogistics', 'kerryproperties', 'kfh', 'kg', 'kh', 'ki', 'kia', 'kim', 'kinder', 'kindle', 'kitchen', 'kiwi', 'km',\n 'kn', 'koeln', 'komatsu', 'kosher', 'kp', 'kpmg', 'kpn', 'kr', 'krd', 'kred', 'kuokgroup', 'kw', 'ky', 'kyoto', 'kz',\n 'la', 'lacaixa', 'ladbrokes', 'lamborghini', 'lamer', 'lancaster', 'lancia', 'lancome', 'land', 'landrover', 'lanxess',\n 'lasalle', 'lat', 'latino', 'latrobe', 'law', 'lawyer', 'lb', 'lc', 'lds', 'lease', 'leclerc', 'lefrak', 'legal',\n 'lego', 'lexus', 'lgbt', 'li', 'liaison', 'lidl', 'life', 'lifeinsurance', 'lifestyle', 'lighting', 'like', 'lilly',\n 'limited', 'limo', 'lincoln', 'linde', 'link', 'lipsy', 'live', 'living', 'lixil', 'lk', 'llc', 'llp', 'loan', 'loans',\n 'locker', 'locus', 'loft', 'lol', 'london', 'lotte', 'lotto', 'love', 'lpl', 'lplfinancial', 'lr', 'ls', 'lt', 'ltd',\n 'ltda', 'lu', 'lundbeck', 'lupin', 'luxe', 'luxury', 'lv', 'ly', 'ma', 'macys', 'madrid', 'maif', 'maison', 'makeup',\n 'man', 'management', 'mango', 'map', 'market', 'marketing', 'markets', 'marriott', 'marshalls', 'maserati', 'mattel',\n 'mba', 'mc', 'mcd', 'mcdonalds', 'mckinsey', 'md', 'me', 'med', 'media', 'meet', 'melbourne', 'meme', 'memorial', 'men',\n 'menu', 'meo', 'merckmsd', 'metlife', 'mf', 'mg', 'mh', 'miami', 'microsoft', 'mil', 'mini', 'mint', 'mit', 'mitsubishi',\n 'mk', 'ml', 'mlb', 'mls', 'mm', 'mma', 'mn', 'mo', 'mobi', 'mobile', 'mobily', 'moda', 'moe', 'moi', 'mom', 'monash',\n 'money', 'monster', 'montblanc', 'mopar', 'mormon', 'mortgage', 'moscow', 'moto', 'motorcycles', 'mov', 'movie', 'movistar',\n 'mp', 'mq', 'mr', 'ms', 'msd', 'mt', 'mtn', 'mtpc', 'mtr', 'mu', 'museum', 'mutual', 'mutuelle', 'mv', 'mw', 'mx', 'my',\n 'mz', 'na', 'nab', 'nadex', 'nagoya', 'name', 'nationwide', 'natura', 'navy', 'nba', 'nc', 'ne', 'nec', 'net', 'netbank',\n 'netflix', 'network', 'neustar', 'new', 'newholland', 'news', 'next', 'nextdirect', 'nexus', 'nf', 'nfl', 'ng', 'ngo', 'nhk',\n 'ni', 'nico', 'nike', 'nikon', 'ninja', 'nissan', 'nissay', 'nl', 'no', 'nokia', 'northwesternmutual', 'norton', 'now',\n 'nowruz', 'nowtv', 'np', 'nr', 'nra', 'nrw', 'ntt', 'nu', 'nyc', 'nz', 'obi', 'observer', 'off', 'office', 'okinawa',\n 'olayan', 'olayangroup', 'oldnavy', 'ollo', 'om', 'omega', 'one', 'ong', 'onl', 'online', 'onyourside', 'ooo', 'open',\n 'oracle', 'orange', 'org', 'organic', 'orientexpress', 'origins', 'osaka', 'otsuka', 'ott', 'ovh', 'pa', 'page',\n 'pamperedchef', 'panasonic', 'panerai', 'paris', 'pars', 'partners', 'parts', 'party', 'passagens', 'pay', 'pccw', 'pe',\n 'pet', 'pf', 'pfizer', 'pg', 'ph', 'pharmacy', 'phd', 'philips', 'phone', 'photo', 'photography', 'photos', 'physio',\n 'piaget', 'pics', 'pictet', 'pictures', 'pid', 'pin', 'ping', 'pink', 'pioneer', 'pizza', 'pk', 'pl', 'place', 'play',\n 'playstation', 'plumbing', 'plus', 'pm', 'pn', 'pnc', 'pohl', 'poker', 'politie', 'porn', 'post', 'pr', 'pramerica',\n 'praxi', 'press', 'prime', 'pro', 'prod', 'productions', 'prof', 'progressive', 'promo', 'properties', 'property',\n 'protection', 'pru', 'prudential', 'ps', 'pt', 'pub', 'pw', 'pwc', 'py', 'qa', 'qpon', 'quebec', 'quest', 'qvc',\n 'racing', 'radio', 'raid', 're', 'read', 'realestate', 'realtor', 'realty', 'recipes', 'red', 'redstone', 'redumbrella',\n 'rehab', 'reise', 'reisen', 'reit', 'reliance', 'ren', 'rent', 'rentals', 'repair', 'report', 'republican', 'rest',\n 'restaurant', 'review', 'reviews', 'rexroth', 'rich', 'richardli', 'ricoh', 'rightathome', 'ril', 'rio', 'rip', 'rmit',\n 'ro', 'rocher', 'rocks', 'rodeo', 'rogers', 'room', 'rs', 'rsvp', 'ru', 'rugby', 'ruhr', 'run', 'rw', 'rwe', 'ryukyu',\n 'sa', 'saarland', 'safe', 'safety', 'sakura', 'sale', 'salon', 'samsclub', 'samsung', 'sandvik', 'sandvikcoromant',\n 'sanofi', 'sap', 'sapo', 'sarl', 'sas', 'save', 'saxo', 'sb', 'sbi', 'sbs', 'sc', 'sca', 'scb', 'schaeffler', 'schmidt',\n 'scholarships', 'school', 'schule', 'schwarz', 'science', 'scjohnson', 'scor', 'scot', 'sd', 'se', 'search', 'seat',\n 'secure', 'security', 'seek', 'select', 'sener', 'services', 'ses', 'seven', 'sew', 'sex', 'sexy', 'sfr', 'sg', 'sh',\n 'shangrila', 'sharp', 'shaw', 'shell', 'shia', 'shiksha', 'shoes', 'shop', 'shopping', 'shouji', 'show', 'showtime',\n 'shriram', 'si', 'silk', 'sina', 'singles', 'site', 'sj', 'sk', 'ski', 'skin', 'sky', 'skype', 'sl', 'sling', 'sm',\n 'smart', 'smile', 'sn', 'sncf', 'so', 'soccer', 'social', 'softbank', 'software', 'sohu', 'solar', 'solutions', 'song',\n 'sony', 'soy', 'spa', 'space', 'spiegel', 'sport', 'spot', 'spreadbetting', 'sr', 'srl', 'srt', 'ss', 'st', 'stada',\n 'staples', 'star', 'starhub', 'statebank', 'statefarm', 'statoil', 'stc', 'stcgroup', 'stockholm', 'storage', 'store',\n 'stream', 'studio', 'study', 'style', 'su', 'sucks', 'supplies', 'supply', 'support', 'surf', 'surgery', 'suzuki', 'sv',\n 'swatch', 'swiftcover', 'swiss', 'sx', 'sy', 'sydney', 'symantec', 'systems', 'sz', 'tab', 'taipei', 'talk', 'taobao',\n 'target', 'tatamotors', 'tatar', 'tattoo', 'tax', 'taxi', 'tc', 'tci', 'td', 'tdk', 'team', 'tech', 'technology', 'tel',\n 'telecity', 'telefonica', 'temasek', 'tennis', 'teva', 'tf', 'tg', 'th', 'thd', 'theater', 'theatre', 'tiaa', 'tickets',\n 'tienda', 'tiffany', 'tips', 'tires', 'tirol', 'tj', 'tjmaxx', 'tjx', 'tk', 'tkmaxx', 'tl', 'tm', 'tmall', 'tn', 'to',\n 'today', 'tokyo', 'tools', 'top', 'toray', 'toshiba', 'total', 'tours', 'town', 'toyota', 'toys', 'tp', 'tr', 'trade',\n 'trading', 'training', 'travel', 'travelchannel', 'travelers', 'travelersinsurance', 'trust', 'trv', 'tt', 'tube', 'tui',\n 'tunes', 'tushu', 'tv', 'tvs', 'tw', 'tz', 'ua', 'ubank', 'ubs', 'uconnect', 'ug', 'uk', 'um', 'unicom', 'university',\n 'uno', 'uol', 'ups', 'us', 'uy', 'uz', 'va', 'vacations', 'vana', 'vanguard', 'vc', 've', 'vegas', 'ventures', 'verisign',\n 'versicherung', 'vet', 'vg', 'vi', 'viajes', 'video', 'vig', 'viking', 'villas', 'vin', 'vip', 'virgin', 'visa', 'vision',\n 'vista', 'vistaprint', 'viva', 'vivo', 'vlaanderen', 'vn', 'vodka', 'volkswagen', 'volvo', 'vote', 'voting', 'voto',\n 'voyage', 'vu', 'vuelos', 'wales', 'walmart', 'walter', 'wang', 'wanggou', 'warman', 'watch', 'watches', 'weather',\n 'weatherchannel', 'webcam', 'weber', 'website', 'wed', 'wedding', 'weibo', 'weir', 'wf', 'whoswho', 'wien', 'wiki',\n 'williamhill', 'win', 'windows', 'wine', 'winners', 'wme', 'wolterskluwer', 'woodside', 'work', 'works', 'world', 'wow',\n 'ws', 'wtc', 'wtf', 'xbox', 'xerox', 'xfinity', 'xihuan', 'xin', '测试', 'कॉम', 'परीक्षा', 'セール', '佛山', 'ಭಾರತ', '慈善',\n '集团', '在线', '한국', 'ଭାରତ', '大众汽车', '点看', 'คอม', 'ভাৰত', 'ভারত', '八卦', 'ישראל\\u200e', 'موقع\\u200e', 'বাংলা', '公益',\n '公司', '香格里拉', '网站', '移动', '我爱你', 'москва', 'испытание', 'қаз', 'католик', 'онлайн', 'сайт', '联通', 'срб', 'бг',\n 'бел', 'קום\\u200e', '时尚', '微博', '테스트', '淡马锡', 'ファッション', 'орг', 'नेट', 'ストア', 'アマゾン', '삼성', 'சிங்கப்பூர்', '商标',\n '商店', '商城', 'дети', 'мкд', 'טעסט\\u200e', 'ею', 'ポイント', '新闻', '工行', '家電', 'كوم\\u200e', '中文网', '中信', '中国',\n '中國', '娱乐', '谷歌', 'భారత్', 'ලංකා', '電訊盈科', '购物', '測試', 'クラウド', 'ભારત', '通販', 'भारतम्', 'भारत', 'भारोत', 'آزمایشی\\u200e',\n 'பரிட்சை', '网店', 'संगठन', '餐厅', '网络', 'ком', 'укр', '香港', '亚马逊', '诺基亚', '食品', 'δοκιμή', '飞利浦', 'إختبار\\u200e',\n '台湾', '台灣', '手表', '手机', 'мон', 'الجزائر\\u200e', 'عمان\\u200e', 'ارامكو\\u200e', 'ایران\\u200e', 'العليان\\u200e',\n 'اتصالات\\u200e', 'امارات\\u200e', 'بازار\\u200e', 'موريتانيا\\u200e', 'پاکستان\\u200e', 'الاردن\\u200e', 'موبايلي\\u200e',\n 'بارت\\u200e', 'بھارت\\u200e', 'المغرب\\u200e', 'ابوظبي\\u200e', 'البحرين\\u200e', 'السعودية\\u200e', 'ڀارت\\u200e',\n 'كاثوليك\\u200e', 'سودان\\u200e', 'همراه\\u200e', 'عراق\\u200e', 'مليسيا\\u200e', '澳門', '닷컴', '政府', 'شبكة\\u200e',\n 'بيتك\\u200e', 'عرب\\u200e', 'გე', '机构', '组织机构', '健康', 'ไทย', 'سورية\\u200e', '招聘', 'рус', 'рф', '珠宝',\n 'تونس\\u200e', '大拿', 'ລາວ', 'みんな', 'グーグル', 'ευ', 'ελ', '世界', '書籍', 'ഭാരതം', 'ਭਾਰਤ', '网址', '닷넷', 'コム',\n '天主教', '游戏', 'vermögensberater', 'vermögensberatung', '企业', '信息', '嘉里大酒店', '嘉里', 'مصر\\u200e',\n 'قطر\\u200e', '广东', 'இலங்கை', 'இந்தியா', 'հայ', '新加坡', 'فلسطين\\u200e', 'テスト', '政务', 'xperia', 'xxx',\n 'xyz', 'yachts', 'yahoo', 'yamaxun', 'yandex', 'ye', 'yodobashi', 'yoga', 'yokohama', 'you', 'youtube', 'yt',\n 'yun', 'za', 'zappos', 'zara', 'zero', 'zip', 'zippo', 'zm', 'zone', 'zuerich', 'zw',\n];\n","import { distance } from 'fastest-levenshtein';\n\nimport {\n COMMON_EMAIL_PROVIDERS,\n DEFAULT_SERVICE_PROVIDER_DOMAINS,\n DEFAULT_TOP_LEVEL_DOMAINS,\n} from './constants';\nimport { VALID_EMAIL_REGEX } from '../../../data/constants';\nimport messages from '../../messages';\n\nexport const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n\nexport const getLevenshteinSuggestion = (word, knownWords, similarityThreshold = 4) => {\n if (!word) {\n return null;\n }\n\n let minEditDistance = 100;\n let mostSimilar = word;\n\n for (let i = 0; i < knownWords.length; i++) {\n const editDistance = distance(knownWords[i].toLowerCase(), word.toLowerCase());\n if (editDistance < minEditDistance) {\n minEditDistance = editDistance;\n mostSimilar = knownWords[i];\n }\n }\n\n return minEditDistance <= similarityThreshold && word !== mostSimilar ? mostSimilar : null;\n};\n\nexport const getSuggestionForInvalidEmail = (domain, username) => {\n if (!domain) {\n return '';\n }\n\n const defaultDomains = ['yahoo', 'aol', 'hotmail', 'live', 'outlook', 'gmail'];\n const suggestion = getLevenshteinSuggestion(domain, COMMON_EMAIL_PROVIDERS);\n\n if (suggestion) {\n return `${username}@${suggestion}`;\n }\n\n for (let i = 0; i < defaultDomains.length; i++) {\n if (domain.includes(defaultDomains[i])) {\n return `${username}@${defaultDomains[i]}.com`;\n }\n }\n\n return '';\n};\n\nexport const validateEmailAddress = (value, username, domainName) => {\n let suggestion = null;\n const validation = {\n hasError: false,\n suggestion: '',\n type: '',\n };\n\n const hasMultipleSubdomains = value.match(/\\./g).length > 1;\n const [serviceLevelDomain, topLevelDomain] = domainName.split('.');\n const tldSuggestion = !DEFAULT_TOP_LEVEL_DOMAINS.includes(topLevelDomain);\n const serviceSuggestion = getLevenshteinSuggestion(serviceLevelDomain, DEFAULT_SERVICE_PROVIDER_DOMAINS, 2);\n\n if (DEFAULT_SERVICE_PROVIDER_DOMAINS.includes(serviceSuggestion || serviceLevelDomain)) {\n suggestion = `${username}@${serviceSuggestion || serviceLevelDomain}.com`;\n }\n\n if (!hasMultipleSubdomains && tldSuggestion) {\n validation.suggestion = suggestion;\n validation.type = 'error';\n } else if (serviceSuggestion) {\n validation.suggestion = suggestion;\n validation.type = 'warning';\n } else {\n suggestion = getLevenshteinSuggestion(domainName, COMMON_EMAIL_PROVIDERS, 3);\n if (suggestion) {\n validation.suggestion = `${username}@${suggestion}`;\n validation.type = 'warning';\n }\n }\n\n if (!hasMultipleSubdomains && tldSuggestion) {\n validation.hasError = true;\n }\n\n return validation;\n};\n\nconst validateEmail = (value, confirmEmailValue, formatMessage) => {\n let fieldError = '';\n let confirmEmailError = '';\n let emailSuggestion = {};\n\n if (!value) {\n fieldError = formatMessage(messages['empty.email.field.error']);\n } else if (value.length <= 2) {\n fieldError = formatMessage(messages['email.invalid.format.error']);\n } else {\n const [username, domainName] = value.split('@');\n // Check if email address is invalid. If we have a suggestion for invalid email\n // provide that along with the error message.\n if (!emailRegex.test(value)) {\n fieldError = formatMessage(messages['email.invalid.format.error']);\n emailSuggestion = {\n suggestion: getSuggestionForInvalidEmail(domainName, username),\n type: 'error',\n };\n } else {\n const response = validateEmailAddress(value, username, domainName);\n if (response.hasError) {\n fieldError = formatMessage(messages['email.invalid.format.error']);\n delete response.hasError;\n }\n emailSuggestion = { ...response };\n\n if (confirmEmailValue && value !== confirmEmailValue) {\n confirmEmailError = formatMessage(messages['email.do.not.match']);\n }\n }\n }\n return { fieldError, confirmEmailError, suggestion: emailSuggestion };\n};\n\nexport default validateEmail;\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Icon } from '@edx/paragon';\nimport { Close, Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport validateEmail from './validator';\nimport { FormGroup } from '../../../common-components';\nimport {\n backupRegistrationFormBegin,\n clearRegistrationBackendError,\n fetchRealtimeValidations,\n} from '../../data/actions';\nimport messages from '../../messages';\n\n/**\n * Email field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Generating email warning and error suggestions\n * - Setting and clearing email suggestions\n * - Performing email field validations\n * - clearing error on focus\n * - setting value on change\n */\nconst EmailField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const {\n handleChange,\n handleErrorChange,\n confirmEmailValue,\n } = props;\n\n const {\n registrationFormData: backedUpFormData,\n validationApiRateLimited,\n } = useSelector(state => state.register);\n\n const [emailSuggestion, setEmailSuggestion] = useState({ ...backedUpFormData?.emailSuggestion });\n\n const handleOnBlur = (e) => {\n const { value } = e.target;\n const { fieldError, confirmEmailError, suggestion } = validateEmail(value, confirmEmailValue, formatMessage);\n\n if (confirmEmailError) {\n handleErrorChange('confirm_email', confirmEmailError);\n }\n\n dispatch(backupRegistrationFormBegin({\n ...backedUpFormData,\n emailSuggestion: { ...suggestion },\n }));\n setEmailSuggestion(suggestion);\n\n if (fieldError) {\n handleErrorChange('email', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ email: value }));\n }\n };\n\n const handleOnFocus = () => {\n handleErrorChange('email', '');\n dispatch(clearRegistrationBackendError('email'));\n };\n\n const handleSuggestionClick = (event) => {\n event.preventDefault();\n handleErrorChange('email', '');\n handleChange({ target: { name: 'email', value: emailSuggestion.suggestion } });\n setEmailSuggestion({ suggestion: '', type: '' });\n };\n\n const handleSuggestionClosed = () => setEmailSuggestion({ suggestion: '', type: '' });\n\n const renderEmailFeedback = () => {\n if (emailSuggestion.type === 'error') {\n return (\n \n \n {formatMessage(messages['did.you.mean.alert.text'])}{' '}\n \n {emailSuggestion.suggestion}\n ?\n \n \n \n );\n }\n return (\n \n {formatMessage(messages['did.you.mean.alert.text'])}:{' '}\n \n {emailSuggestion.suggestion}\n ?\n \n );\n };\n\n return (\n \n {emailSuggestion.suggestion ? renderEmailFeedback() : null}\n \n );\n};\n\nEmailField.defaultProps = {\n errorMessage: '',\n confirmEmailValue: null,\n};\n\nEmailField.propTypes = {\n errorMessage: PropTypes.string,\n value: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n confirmEmailValue: PropTypes.string,\n};\n\nexport default EmailField;\n","import messages from '../../messages';\n\nexport const VALID_USERNAME_REGEX = /^[a-zA-Z0-9_-]*$/i;\nexport const usernameRegex = new RegExp(VALID_USERNAME_REGEX, 'i');\n\nconst validateUsername = (value, formatMessage) => {\n let fieldError = '';\n if (!value || value.length <= 1 || value.length > 30) {\n fieldError = formatMessage(messages['username.validation.message']);\n } else if (!usernameRegex.test(value)) {\n fieldError = formatMessage(messages['username.format.validation.message']);\n }\n return fieldError;\n};\n\nexport default validateUsername;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button, Icon, IconButton } from '@edx/paragon';\nimport { Close } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport validateUsername from './validator';\nimport { FormGroup } from '../../../common-components';\nimport {\n clearRegistrationBackendError,\n clearUsernameSuggestions,\n fetchRealtimeValidations,\n} from '../../data/actions';\nimport messages from '../../messages';\n\n/**\n * Username field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Rendering username suggestions\n * - Setting and clearing username suggestions\n * - Performing username field validations\n * - clearing error on focus\n * - setting value on change\n */\nconst UsernameField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const {\n value,\n errorMessage,\n handleChange,\n handleErrorChange,\n } = props;\n\n let className = '';\n let suggestedUsernameDiv = null;\n let iconButton = null;\n const { usernameSuggestions, validationApiRateLimited } = useSelector(state => state.register);\n\n /**\n * We need to remove the placeholder from the field, adding a space will do that.\n * This is needed because we are placing the username suggestions on top of the field.\n */\n useEffect(() => {\n if (usernameSuggestions.length && !value) {\n handleChange({ target: { name: 'username', value: ' ' } });\n }\n }, [handleChange, usernameSuggestions, value]);\n\n const handleOnBlur = (event) => {\n const { value: username } = event.target;\n const fieldError = validateUsername(username, formatMessage);\n if (fieldError) {\n handleErrorChange('username', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ username }));\n }\n };\n\n const handleOnChange = (event) => {\n let username = event.target.value;\n if (username.length > 30) {\n return;\n }\n if (event.target.value.startsWith(' ')) {\n username = username.trim();\n }\n handleChange({ target: { name: 'username', value: username } });\n };\n\n const handleOnFocus = (event) => {\n const username = event.target.value;\n dispatch(clearUsernameSuggestions());\n // If we added a space character to username field to display the suggestion\n // remove it before user enters the input. This is to ensure user doesn't\n // have a space prefixed to the username.\n if (username === ' ') {\n handleChange({ target: { name: 'username', value: '' } });\n }\n handleErrorChange('username', '');\n dispatch(clearRegistrationBackendError('username'));\n };\n\n const handleSuggestionClick = (event, suggestion = '') => {\n event.preventDefault();\n handleErrorChange('username', ''); // clear error\n handleChange({ target: { name: 'username', value: suggestion } }); // to set suggestion as value\n dispatch(clearUsernameSuggestions());\n };\n\n const handleUsernameSuggestionClose = () => {\n handleChange({ target: { name: 'username', value: '' } }); // to remove space in field\n dispatch(clearUsernameSuggestions());\n };\n\n const suggestedUsernames = () => (\n
\n {formatMessage(messages['registration.username.suggestion.label'])}\n
\n {usernameSuggestions.map((username, index) => (\n handleSuggestionClick(e, username)}\n >\n {username}\n \n ))}\n
\n {iconButton}\n
\n );\n\n if (usernameSuggestions.length > 0 && errorMessage && value === ' ') {\n className = 'username-suggestions__error';\n iconButton = handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"username-suggestions__close__button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && value === ' ') {\n className = 'username-suggestions d-flex align-items-center';\n iconButton = handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"username-suggestions__close__button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && errorMessage) {\n suggestedUsernameDiv = suggestedUsernames();\n }\n return (\n \n {suggestedUsernameDiv}\n \n );\n};\n\nUsernameField.defaultProps = {\n errorMessage: '',\n autoComplete: null,\n};\n\nUsernameField.propTypes = {\n handleChange: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n errorMessage: PropTypes.string,\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n};\n\nexport default UsernameField;\n","export const COUNTRY_CODE_KEY = 'code';\nexport const COUNTRY_DISPLAY_KEY = 'name';\n\nconst validateCountryField = (value, countryList, errorMessage) => {\n let countryCode = '';\n let displayValue = value;\n let error = errorMessage;\n\n if (value) {\n const normalizedValue = value.toLowerCase();\n // Handling a case here where user enters a valid country code that needs to be\n // evaluated and set its value as a valid value.\n const selectedCountry = countryList.find(\n (country) => (\n // When translations are applied, extra space added in country value, so we should trim that.\n country[COUNTRY_DISPLAY_KEY].toLowerCase().trim() === normalizedValue\n || country[COUNTRY_CODE_KEY].toLowerCase().trim() === normalizedValue\n ),\n );\n if (selectedCountry) {\n countryCode = selectedCountry[COUNTRY_CODE_KEY];\n displayValue = selectedCountry[COUNTRY_DISPLAY_KEY];\n error = '';\n }\n }\n return { error, countryCode, displayValue };\n};\n\nexport default validateCountryField;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { FormAutosuggest, FormAutosuggestOption, FormControlFeedback } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport validateCountryField, { COUNTRY_CODE_KEY, COUNTRY_DISPLAY_KEY } from './validator';\nimport { clearRegistrationBackendError } from '../../data/actions';\nimport messages from '../../messages';\n\n/**\n * Country field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Auto populating country field if backendCountryCode is available in redux\n * - Performing country field validations\n * - clearing error on focus\n * - setting value on change and selection\n */\nconst CountryField = (props) => {\n const {\n countryList,\n selectedCountry,\n onChangeHandler,\n handleErrorChange,\n onFocusHandler,\n } = props;\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const backendCountryCode = useSelector(state => state.register.backendCountryCode);\n\n useEffect(() => {\n if (backendCountryCode && backendCountryCode !== selectedCountry?.countryCode) {\n let countryCode = '';\n let countryDisplayValue = '';\n\n const countryVal = countryList.find(\n (country) => (country[COUNTRY_CODE_KEY].toLowerCase() === backendCountryCode.toLowerCase()),\n );\n if (countryVal) {\n countryCode = countryVal[COUNTRY_CODE_KEY];\n countryDisplayValue = countryVal[COUNTRY_DISPLAY_KEY];\n }\n onChangeHandler(\n { target: { name: 'country' } },\n { countryCode, displayValue: countryDisplayValue },\n );\n }\n }, [backendCountryCode, countryList]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleOnBlur = (event) => {\n // Do not run validations when drop-down arrow is clicked\n if (event.relatedTarget && event.relatedTarget.className.includes('pgn__form-autosuggest__icon-button')) {\n return;\n }\n\n const { value } = event.target;\n\n const { countryCode, displayValue, error } = validateCountryField(\n value.trim(), countryList, formatMessage(messages['empty.country.field.error']),\n );\n\n onChangeHandler({ target: { name: 'country' } }, { countryCode, displayValue });\n handleErrorChange('country', error);\n };\n\n const handleSelected = (value) => {\n handleOnBlur({ target: { name: 'country', value } });\n };\n\n const handleOnFocus = (event) => {\n handleErrorChange('country', '');\n dispatch(clearRegistrationBackendError('country'));\n onFocusHandler(event);\n };\n\n const handleOnChange = (value) => {\n onChangeHandler({ target: { name: 'country' } }, { countryCode: '', displayValue: value });\n };\n\n const getCountryList = () => countryList.map((country) => (\n \n {country[COUNTRY_DISPLAY_KEY]}\n \n ));\n\n return (\n
\n handleSelected(value)}\n onFocus={(e) => handleOnFocus(e)}\n onBlur={(e) => handleOnBlur(e)}\n onChange={(value) => handleOnChange(value)}\n >\n {getCountryList()}\n \n {props.errorMessage !== '' && (\n \n {props.errorMessage}\n \n )}\n
\n );\n};\n\nCountryField.propTypes = {\n countryList: PropTypes.arrayOf(\n PropTypes.shape({\n code: PropTypes.string,\n name: PropTypes.string,\n }),\n ).isRequired,\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n onFocusHandler: PropTypes.func.isRequired,\n selectedCountry: PropTypes.shape({\n displayValue: PropTypes.string,\n countryCode: PropTypes.string,\n }),\n};\n\nCountryField.defaultProps = {\n errorMessage: null,\n selectedCountry: {\n value: '',\n },\n};\n\nexport default CountryField;\n","import React, { useEffect } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Form, Hyperlink } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from '../../messages';\n\nconst HonorCode = (props) => {\n const { formatMessage } = useIntl();\n const {\n errorMessage, onChangeHandler, fieldType, value,\n } = props;\n\n useEffect(() => {\n if (fieldType === 'tos_and_honor_code' && !value) {\n onChangeHandler({ target: { name: 'honor_code', value: true } });\n }\n }, [fieldType, onChangeHandler, value]);\n\n if (fieldType === 'tos_and_honor_code') {\n return (\n
\n \n {formatMessage(messages['terms.of.service.and.honor.code'])}\n \n ),\n privacyPolicy: (\n \n {formatMessage(messages['privacy.policy'])}\n \n ),\n }}\n />\n
\n );\n }\n\n return (\n
\n \n \n {formatMessage(messages['honor.code'])}\n \n ),\n }}\n />\n \n {errorMessage && (\n \n {errorMessage}\n \n )}\n
\n );\n};\n\nHonorCode.defaultProps = {\n errorMessage: '',\n onChangeHandler: null,\n fieldType: 'honor_code',\n value: false,\n};\n\nHonorCode.propTypes = {\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func,\n fieldType: PropTypes.string,\n value: PropTypes.bool,\n};\n\nexport default HonorCode;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Form, Hyperlink } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from '../../messages';\n\nconst TermsOfService = (props) => {\n const { formatMessage } = useIntl();\n const {\n errorMessage, onChangeHandler, value,\n } = props;\n\n return (\n
\n \n \n {formatMessage(messages['terms.of.service'])}\n \n ),\n }}\n />\n \n {errorMessage && (\n \n {errorMessage}\n \n )}\n
\n );\n};\n\nTermsOfService.defaultProps = {\n errorMessage: '',\n value: false,\n};\n\nTermsOfService.propTypes = {\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func.isRequired,\n value: PropTypes.bool,\n};\n\nexport default TermsOfService;\n","import React, { useEffect, useMemo } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getCountryList, getLocale, useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport { FormFieldRenderer } from '../../field-renderer';\nimport { FIELDS } from '../data/constants';\nimport messages from '../messages';\nimport { CountryField, HonorCode, TermsOfService } from '../RegistrationFields';\n\n/**\n * Fields on registration page that are not the default required fields (name, email, username, password).\n * These configurable required fields are defined on the backend using REGISTRATION_EXTRA_FIELDS setting.\n *\n * Country and Honor Code/Terms of Services (if enabled) will appear at the bottom of the form, even if they\n * appear higher in order returned by backend. This is to make the user experience better.\n *\n * For edX only:\n * Country and honor code fields are required by default, and we will continue to show them on\n * frontend even if the API doesn't return it. The `SHOW_CONFIGURABLE_EDX_FIELDS` flag will enable\n * it for edX.\n * */\nconst ConfigurableRegistrationForm = (props) => {\n const { formatMessage } = useIntl();\n const {\n email,\n fieldDescriptions,\n fieldErrors,\n formFields,\n setFieldErrors,\n setFormFields,\n autoSubmitRegistrationForm,\n } = props;\n\n const countryList = useMemo(() => getCountryList(getLocale()), []);\n\n let showTermsOfServiceAndHonorCode = false;\n let showCountryField = false;\n\n const formFieldDescriptions = [];\n const honorCode = [];\n const flags = {\n showConfigurableRegistrationFields: getConfig().ENABLE_DYNAMIC_REGISTRATION_FIELDS,\n showConfigurableEdxFields: getConfig().SHOW_CONFIGURABLE_EDX_FIELDS,\n showMarketingEmailOptInCheckbox: getConfig().MARKETING_EMAILS_OPT_IN,\n };\n\n useEffect(() => {\n if (!formFields.country) {\n setFormFields(prevState => ({ ...prevState, country: { countryCode: '', displayValue: '' } }));\n }\n });\n\n /**\n * If auto submitting register form, we will check tos and honor code fields if they exist for feature parity.\n */\n useEffect(() => {\n if (autoSubmitRegistrationForm) {\n if (Object.keys(fieldDescriptions).includes(FIELDS.HONOR_CODE)) {\n setFormFields(prevState => ({\n ...prevState,\n [FIELDS.HONOR_CODE]: true,\n }));\n }\n if (Object.keys(fieldDescriptions).includes(FIELDS.TERMS_OF_SERVICE)) {\n setFormFields(prevState => ({\n ...prevState,\n [FIELDS.TERMS_OF_SERVICE]: true,\n }));\n }\n }\n }, [autoSubmitRegistrationForm]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleErrorChange = (fieldName, error) => {\n if (fieldName) {\n setFieldErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n }\n };\n\n const handleOnChange = (event, countryValue = null) => {\n const { name } = event.target;\n let value;\n if (countryValue) {\n value = { ...countryValue };\n } else {\n value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n if (event.target.type === 'checkbox') {\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n }\n }\n setFormFields(prevState => ({ ...prevState, [name]: value }));\n };\n\n const handleOnBlur = (event) => {\n const { name, value } = event.target;\n let error = '';\n if ((!value || !value.trim()) && fieldDescriptions[name]?.error_message) {\n error = fieldDescriptions[name].error_message;\n } else if (name === 'confirm_email' && value !== email) {\n error = formatMessage(messages['email.do.not.match']);\n }\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: error }));\n };\n\n const handleOnFocus = (event) => {\n const { name } = event.target;\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n };\n\n if (flags.showConfigurableRegistrationFields) {\n Object.keys(fieldDescriptions).forEach(fieldName => {\n const fieldData = fieldDescriptions[fieldName];\n switch (fieldData.name) {\n case FIELDS.COUNTRY:\n showCountryField = true;\n break;\n case FIELDS.HONOR_CODE:\n if (fieldData.type === 'tos_and_honor_code') {\n showTermsOfServiceAndHonorCode = true;\n } else {\n honorCode.push(\n \n \n ,\n );\n }\n break;\n case FIELDS.TERMS_OF_SERVICE:\n honorCode.push(\n \n \n ,\n );\n break;\n default:\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n });\n }\n\n if (flags.showConfigurableEdxFields || showCountryField) {\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n\n if (flags.showMarketingEmailOptInCheckbox) {\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n\n if (flags.showConfigurableEdxFields || showTermsOfServiceAndHonorCode) {\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n\n return (\n <>\n {formFieldDescriptions}\n
\n {honorCode}\n
\n \n );\n};\n\nConfigurableRegistrationForm.propTypes = {\n email: PropTypes.string.isRequired,\n fieldDescriptions: PropTypes.shape({}),\n fieldErrors: PropTypes.shape({\n country: PropTypes.string,\n }).isRequired,\n formFields: PropTypes.shape({\n country: PropTypes.shape({\n displayValue: PropTypes.string,\n countryCode: PropTypes.string,\n }),\n honor_code: PropTypes.bool,\n marketingEmailsOptIn: PropTypes.bool,\n }).isRequired,\n setFieldErrors: PropTypes.func.isRequired,\n setFormFields: PropTypes.func.isRequired,\n autoSubmitRegistrationForm: PropTypes.bool,\n};\n\nConfigurableRegistrationForm.defaultProps = {\n fieldDescriptions: {},\n autoSubmitRegistrationForm: false,\n};\n\nexport default ConfigurableRegistrationForm;\n","import React, { useEffect } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@edx/paragon';\nimport { Error } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { windowScrollTo } from '../../data/utils';\nimport {\n FORBIDDEN_REQUEST,\n INTERNAL_SERVER_ERROR,\n TPA_AUTHENTICATION_FAILURE,\n TPA_SESSION_EXPIRED,\n} from '../data/constants';\nimport messages from '../messages';\n\nconst RegistrationFailureMessage = (props) => {\n const { formatMessage } = useIntl();\n const {\n context, errorCode, failureCount,\n } = props;\n\n useEffect(() => {\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n }, [errorCode, failureCount]);\n\n if (!errorCode) {\n return null;\n }\n\n let errorMessage;\n switch (errorCode) {\n case INTERNAL_SERVER_ERROR:\n errorMessage = formatMessage(messages['registration.request.server.error']);\n break;\n case FORBIDDEN_REQUEST:\n errorMessage = formatMessage(messages['registration.rate.limit.error']);\n break;\n case TPA_AUTHENTICATION_FAILURE:\n errorMessage = formatMessage(messages['registration.tpa.authentication.failure'],\n {\n platform_name: getConfig().SITE_NAME,\n lineBreak:
,\n errorMessage: context.errorMessage,\n });\n break;\n case TPA_SESSION_EXPIRED:\n errorMessage = formatMessage(messages['registration.tpa.session.expired'], { provider: context.provider });\n break;\n default:\n errorMessage = formatMessage(messages['registration.empty.form.submission.error']);\n break;\n }\n\n return (\n \n {formatMessage(messages['registration.request.failure.header'])}\n

{errorMessage}

\n
\n );\n};\n\nRegistrationFailureMessage.defaultProps = {\n context: {\n errorMessage: null,\n },\n};\n\nRegistrationFailureMessage.propTypes = {\n context: PropTypes.shape({\n provider: PropTypes.string,\n errorMessage: PropTypes.string,\n }),\n errorCode: PropTypes.string.isRequired,\n failureCount: PropTypes.number.isRequired,\n};\n\nexport default RegistrationFailureMessage;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\nimport Skeleton from 'react-loading-skeleton';\n\nimport {\n RenderInstitutionButton,\n SocialAuthProviders,\n} from '../../common-components';\nimport {\n PENDING_STATE, REGISTER_PAGE,\n} from '../../data/constants';\nimport messages from '../messages';\n\n/**\n * This component renders the Single sign-on (SSO) buttons for the providers passed.\n * */\nconst ThirdPartyAuth = (props) => {\n const { formatMessage } = useIntl();\n const {\n providers, secondaryProviders, currentProvider, handleInstitutionLogin, thirdPartyAuthApiStatus,\n } = props;\n const isInstitutionAuthActive = !!secondaryProviders.length && !currentProvider;\n const isSocialAuthActive = !!providers.length && !currentProvider;\n const isEnterpriseLoginDisabled = getConfig().DISABLE_ENTERPRISE_LOGIN;\n\n return (\n <>\n {((isEnterpriseLoginDisabled && isInstitutionAuthActive) || isSocialAuthActive) && (\n
\n {formatMessage(messages['registration.other.options.heading'])}\n
\n )}\n\n {thirdPartyAuthApiStatus === PENDING_STATE ? (\n \n ) : (\n <>\n {(isEnterpriseLoginDisabled && isInstitutionAuthActive) && (\n \n )}\n {isSocialAuthActive && (\n
\n \n
\n )}\n \n )}\n \n );\n};\n\nThirdPartyAuth.defaultProps = {\n currentProvider: null,\n providers: [],\n secondaryProviders: [],\n thirdPartyAuthApiStatus: 'pending',\n};\n\nThirdPartyAuth.propTypes = {\n currentProvider: PropTypes.string,\n handleInstitutionLogin: PropTypes.func.isRequired,\n providers: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n iconClass: PropTypes.string,\n iconImage: PropTypes.string,\n loginUrl: PropTypes.string,\n registerUrl: PropTypes.string,\n }),\n ),\n secondaryProviders: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n iconClass: PropTypes.string,\n iconImage: PropTypes.string,\n loginUrl: PropTypes.string,\n registerUrl: PropTypes.string,\n }),\n ),\n thirdPartyAuthApiStatus: PropTypes.string,\n};\n\nexport default ThirdPartyAuth;\n","import React, {\n useEffect, useMemo, useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Form, Spinner, StatefulButton } from '@edx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport Skeleton from 'react-loading-skeleton';\n\nimport ConfigurableRegistrationForm from './components/ConfigurableRegistrationForm';\nimport RegistrationFailure from './components/RegistrationFailure';\nimport ThirdPartyAuth from './components/ThirdPartyAuth';\nimport {\n backupRegistrationFormBegin,\n clearRegistrationBackendError,\n registerNewUser,\n setUserPipelineDataLoaded,\n} from './data/actions';\nimport {\n FORM_SUBMISSION_ERROR,\n TPA_AUTHENTICATION_FAILURE,\n} from './data/constants';\nimport { getBackendValidations, isFormValid, prepareRegistrationPayload } from './data/utils';\nimport messages from './messages';\nimport { EmailField, NameField, UsernameField } from './RegistrationFields';\nimport {\n InstitutionLogistration, PasswordField, RedirectLogistration, ThirdPartyAuthAlert,\n} from '../common-components';\nimport { getThirdPartyAuthContext as getRegistrationDataFromBackend } from '../common-components/data/actions';\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\nimport {\n COMPLETE_STATE, PENDING_STATE, REGISTER_PAGE,\n} from '../data/constants';\nimport {\n getAllPossibleQueryParams, getTpaHint, getTpaProvider, isHostAvailableInQueryParams, setCookie,\n} from '../data/utils';\n\n/**\n * Main Registration Page component\n */\nconst RegistrationPage = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const registrationEmbedded = isHostAvailableInQueryParams();\n const platformName = getConfig().SITE_NAME;\n const flags = {\n showConfigurableEdxFields: getConfig().SHOW_CONFIGURABLE_EDX_FIELDS,\n showConfigurableRegistrationFields: getConfig().ENABLE_DYNAMIC_REGISTRATION_FIELDS,\n showMarketingEmailOptInCheckbox: getConfig().MARKETING_EMAILS_OPT_IN,\n };\n const {\n handleInstitutionLogin,\n institutionLogin,\n } = props;\n\n const {\n registrationFormData: backedUpFormData,\n registrationError,\n registrationError: {\n errorCode: registrationErrorCode,\n } = {},\n registrationResult,\n shouldBackupState,\n userPipelineDataLoaded,\n submitState,\n validations,\n } = useSelector(state => state.register);\n\n const {\n fieldDescriptions,\n optionalFields,\n thirdPartyAuthApiStatus,\n thirdPartyAuthContext,\n thirdPartyAuthContext: {\n autoSubmitRegForm,\n errorMessage: thirdPartyAuthErrorMessage,\n finishAuthUrl,\n currentProvider,\n providers,\n secondaryProviders,\n pipelineUserDetails,\n },\n } = useSelector(state => state.commonComponents);\n\n const backendValidations = useMemo(\n () => getBackendValidations(registrationError, validations), [registrationError, validations],\n );\n const queryParams = useMemo(() => getAllPossibleQueryParams(), []);\n const tpaHint = useMemo(() => getTpaHint(), []);\n\n const [formFields, setFormFields] = useState({ ...backedUpFormData.formFields });\n const [configurableFormFields, setConfigurableFormFields] = useState({ ...backedUpFormData.configurableFormFields });\n const [errors, setErrors] = useState({ ...backedUpFormData.errors });\n const [errorCode, setErrorCode] = useState({ type: '', count: 0 });\n const [formStartTime, setFormStartTime] = useState(null);\n // temporary error state for embedded experience because we don't want to show errors on blur\n const [temporaryErrors, setTemporaryErrors] = useState({ ...backedUpFormData.errors });\n\n const { cta, host } = queryParams;\n const buttonLabel = cta\n ? formatMessage(messages['create.account.cta.button'], { label: cta })\n : formatMessage(messages['create.account.for.free.button']);\n\n /**\n * Set the userPipelineDetails data in formFields for only first time\n */\n useEffect(() => {\n if (!userPipelineDataLoaded && thirdPartyAuthApiStatus === COMPLETE_STATE) {\n if (thirdPartyAuthErrorMessage) {\n setErrorCode(prevState => ({ type: TPA_AUTHENTICATION_FAILURE, count: prevState.count + 1 }));\n }\n if (pipelineUserDetails && Object.keys(pipelineUserDetails).length !== 0) {\n const { name = '', username = '', email = '' } = pipelineUserDetails;\n setFormFields(prevState => ({\n ...prevState, name, username, email,\n }));\n dispatch(setUserPipelineDataLoaded(true));\n }\n }\n }, [ // eslint-disable-line react-hooks/exhaustive-deps\n thirdPartyAuthContext,\n userPipelineDataLoaded,\n ]);\n\n useEffect(() => {\n if (!formStartTime) {\n sendPageEvent('login_and_registration', 'register');\n const payload = { ...queryParams, is_register_page: true };\n if (tpaHint) {\n payload.tpa_hint = tpaHint;\n }\n dispatch(getRegistrationDataFromBackend(payload));\n setFormStartTime(Date.now());\n }\n }, [dispatch, formStartTime, queryParams, tpaHint]);\n\n /**\n * Backup the registration form in redux when register page is toggled.\n */\n useEffect(() => {\n if (shouldBackupState) {\n dispatch(backupRegistrationFormBegin({\n ...backedUpFormData,\n configurableFormFields: { ...configurableFormFields },\n formFields: { ...formFields },\n errors: { ...errors },\n }));\n }\n }, [shouldBackupState, configurableFormFields, formFields, errors, dispatch, backedUpFormData]);\n\n useEffect(() => {\n if (backendValidations) {\n if (registrationEmbedded) {\n setTemporaryErrors(prevErrors => ({ ...prevErrors, ...backendValidations }));\n } else {\n setErrors(prevErrors => ({ ...prevErrors, ...backendValidations }));\n }\n }\n }, [backendValidations, registrationEmbedded]);\n\n useEffect(() => {\n if (registrationErrorCode) {\n setErrorCode(prevState => ({ type: registrationErrorCode, count: prevState.count + 1 }));\n }\n }, [registrationErrorCode]);\n\n useEffect(() => {\n if (registrationResult.success) {\n // This event is used by GTM\n sendTrackEvent('edx.bi.user.account.registered.client', {});\n\n // This is used by the \"User Retention Rate Event\" on GTM\n setCookie(getConfig().USER_RETENTION_COOKIE_NAME, true);\n }\n }, [registrationResult]);\n\n const handleOnChange = (event) => {\n const { name } = event.target;\n const value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n if (registrationError[name]) {\n dispatch(clearRegistrationBackendError(name));\n setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n }\n setFormFields(prevState => ({ ...prevState, [name]: value }));\n };\n\n const handleErrorChange = (fieldName, error) => {\n if (registrationEmbedded) {\n setTemporaryErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n if (error === '' && errors[fieldName] !== '') {\n setErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n }\n } else {\n setErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n }\n };\n\n const registerUser = () => {\n const totalRegistrationTime = (Date.now() - formStartTime) / 1000;\n let payload = { ...formFields };\n\n if (currentProvider) {\n delete payload.password;\n payload.social_auth_provider = currentProvider;\n }\n\n // Validating form data before submitting\n const { isValid, fieldErrors } = isFormValid(\n payload,\n registrationEmbedded ? temporaryErrors : errors,\n configurableFormFields,\n fieldDescriptions,\n formatMessage,\n );\n setErrors({ ...fieldErrors });\n\n // returning if not valid\n if (!isValid) {\n setErrorCode(prevState => ({ type: FORM_SUBMISSION_ERROR, count: prevState.count + 1 }));\n return;\n }\n\n // Preparing payload for submission\n payload = prepareRegistrationPayload(\n payload,\n configurableFormFields,\n flags.showMarketingEmailOptInCheckbox,\n totalRegistrationTime,\n queryParams);\n\n // making register call\n dispatch(registerNewUser(payload));\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n registerUser();\n };\n\n useEffect(() => {\n if (autoSubmitRegForm && userPipelineDataLoaded) {\n registerUser();\n }\n }, [autoSubmitRegForm, userPipelineDataLoaded]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const renderForm = () => {\n if (institutionLogin) {\n return (\n \n );\n }\n return (\n <>\n \n {formatMessage(messages['register.page.title'], { siteName: getConfig().SITE_NAME })}\n \n \n {autoSubmitRegForm && !errorCode.type ? (\n
\n \n
\n ) : (\n \n \n \n
\n \n \n \n {!currentProvider && (\n \n )}\n \n e.preventDefault()}\n />\n {!registrationEmbedded && (\n \n )}\n \n
\n )}\n\n \n );\n };\n\n if (tpaHint) {\n if (thirdPartyAuthApiStatus === PENDING_STATE) {\n return ;\n }\n const { provider, skipHintedLogin } = getTpaProvider(tpaHint, providers, secondaryProviders);\n if (skipHintedLogin) {\n window.location.href = getConfig().LMS_BASE_URL + provider.registerUrl;\n return null;\n }\n return provider ? : renderForm();\n }\n return (\n renderForm()\n );\n};\n\nRegistrationPage.propTypes = {\n institutionLogin: PropTypes.bool,\n // Actions\n handleInstitutionLogin: PropTypes.func,\n};\n\nRegistrationPage.defaultProps = {\n handleInstitutionLogin: null,\n institutionLogin: false,\n};\n\nexport default RegistrationPage;\n","import {\n BACKUP_REGISTRATION_DATA,\n REGISTER_CLEAR_USERNAME_SUGGESTIONS,\n REGISTER_FORM_VALIDATIONS,\n REGISTER_NEW_USER,\n REGISTER_SET_COUNTRY_CODE, REGISTER_SET_USER_PIPELINE_DATA_LOADED,\n REGISTRATION_CLEAR_BACKEND_ERROR,\n} from './actions';\nimport {\n DEFAULT_STATE,\n PENDING_STATE,\n} from '../../data/constants';\n\nexport const storeName = 'register';\n\nexport const defaultState = {\n backendCountryCode: '',\n registrationError: {},\n registrationResult: {},\n registrationFormData: {\n configurableFormFields: {\n marketingEmailsOptIn: true,\n },\n formFields: {\n name: '', email: '', username: '', password: '',\n },\n emailSuggestion: {\n suggestion: '', type: '',\n },\n errors: {\n name: '', email: '', username: '', password: '',\n },\n },\n validations: null,\n submitState: DEFAULT_STATE,\n userPipelineDataLoaded: false,\n usernameSuggestions: [],\n validationApiRateLimited: false,\n shouldBackupState: false,\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case BACKUP_REGISTRATION_DATA.BASE:\n return {\n ...state,\n shouldBackupState: true,\n };\n case BACKUP_REGISTRATION_DATA.BEGIN:\n return {\n ...defaultState,\n usernameSuggestions: state.usernameSuggestions,\n registrationFormData: { ...action.payload },\n userPipelineDataLoaded: state.userPipelineDataLoaded,\n };\n case REGISTER_NEW_USER.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n registrationError: {},\n };\n case REGISTER_NEW_USER.SUCCESS: {\n return {\n ...state,\n registrationResult: action.payload,\n };\n }\n case REGISTER_NEW_USER.FAILURE: {\n const { usernameSuggestions } = action.payload;\n return {\n ...state,\n registrationError: { ...action.payload },\n submitState: DEFAULT_STATE,\n validations: null,\n usernameSuggestions: usernameSuggestions || state.usernameSuggestions,\n };\n }\n case REGISTRATION_CLEAR_BACKEND_ERROR: {\n const registrationErrorTemp = state.registrationError;\n delete registrationErrorTemp[action.payload];\n return {\n ...state,\n registrationError: { ...registrationErrorTemp },\n };\n }\n case REGISTER_FORM_VALIDATIONS.SUCCESS: {\n const { usernameSuggestions, ...validationWithoutUsernameSuggestions } = action.payload.validations;\n return {\n ...state,\n validations: validationWithoutUsernameSuggestions,\n usernameSuggestions: usernameSuggestions || state.usernameSuggestions,\n };\n }\n case REGISTER_FORM_VALIDATIONS.FAILURE:\n return {\n ...state,\n validationApiRateLimited: true,\n validations: null,\n };\n case REGISTER_CLEAR_USERNAME_SUGGESTIONS:\n return {\n ...state,\n usernameSuggestions: [],\n };\n case REGISTER_SET_COUNTRY_CODE: {\n const { countryCode } = action.payload;\n if (!state.registrationFormData.configurableFormFields.country) {\n return {\n ...state,\n backendCountryCode: countryCode,\n };\n }\n return state;\n }\n case REGISTER_SET_USER_PIPELINE_DATA_LOADED: {\n const { value } = action.payload;\n return {\n ...state,\n userPipelineDataLoaded: value,\n };\n }\n default:\n return {\n ...state,\n shouldBackupState: false,\n };\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient, getHttpClient } from '@edx/frontend-platform/auth';\nimport * as QueryString from 'query-string';\n\nexport async function registerRequest(registrationInformation) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v2/account/registration/`,\n QueryString.stringify(registrationInformation),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n redirectUrl: data.redirect_url || `${getConfig().LMS_BASE_URL}/dashboard`,\n success: data.success || false,\n authenticatedUser: data.authenticated_user,\n };\n}\n\nexport async function getFieldsValidations(formPayload) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v1/validation/registration`,\n QueryString.stringify(formPayload),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n fieldValidations: data,\n };\n}\n","import { camelCaseObject } from '@edx/frontend-platform';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n fetchRealtimeValidationsBegin,\n fetchRealtimeValidationsFailure,\n fetchRealtimeValidationsSuccess,\n REGISTER_FORM_VALIDATIONS,\n REGISTER_NEW_USER,\n registerNewUserBegin,\n registerNewUserFailure,\n registerNewUserSuccess,\n} from './actions';\nimport { INTERNAL_SERVER_ERROR } from './constants';\nimport { getFieldsValidations, registerRequest } from './service';\n\nexport function* handleNewUserRegistration(action) {\n try {\n yield put(registerNewUserBegin());\n\n const { authenticatedUser, redirectUrl, success } = yield call(registerRequest, action.payload.registrationInfo);\n\n yield put(registerNewUserSuccess(\n camelCaseObject(authenticatedUser),\n redirectUrl,\n success,\n ));\n } catch (e) {\n const statusCodes = [400, 403, 409];\n if (e.response && statusCodes.includes(e.response.status)) {\n yield put(registerNewUserFailure(camelCaseObject(e.response.data)));\n logInfo(e);\n } else {\n yield put(registerNewUserFailure({ errorCode: INTERNAL_SERVER_ERROR }));\n logError(e);\n }\n }\n}\n\nexport function* fetchRealtimeValidations(action) {\n try {\n yield put(fetchRealtimeValidationsBegin());\n const { fieldValidations } = yield call(getFieldsValidations, action.payload.formPayload);\n\n yield put(fetchRealtimeValidationsSuccess(camelCaseObject(fieldValidations)));\n } catch (e) {\n if (e.response && e.response.status === 403) {\n yield put(fetchRealtimeValidationsFailure());\n logInfo(e);\n } else {\n logError(e);\n }\n }\n}\nexport default function* saga() {\n yield takeEvery(REGISTER_NEW_USER.BASE, handleNewUserRegistration);\n yield takeEvery(REGISTER_FORM_VALIDATIONS.BASE, fetchRealtimeValidations);\n}\n","import { all } from 'redux-saga/effects';\n\nimport { saga as commonComponentsSaga } from '../common-components';\nimport { saga as forgotPasswordSaga } from '../forgot-password';\nimport { saga as loginSaga } from '../login';\nimport { saga as authnProgressiveProfilingSaga } from '../progressive-profiling';\nimport { saga as registrationSaga } from '../register';\nimport { saga as resetPasswordSaga } from '../reset-password';\n\nexport default function* rootSaga() {\n yield all([\n loginSaga(),\n registrationSaga(),\n commonComponentsSaga(),\n forgotPasswordSaga(),\n resetPasswordSaga(),\n authnProgressiveProfilingSaga(),\n ]);\n}\n","import { getConfig } from '@edx/frontend-platform';\nimport { composeWithDevTools } from '@redux-devtools/extension';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport { createLogger } from 'redux-logger';\nimport createSagaMiddleware from 'redux-saga';\nimport thunkMiddleware from 'redux-thunk';\n\nimport createRootReducer from './reducers';\nimport rootSaga from './sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nfunction composeMiddleware() {\n if (getConfig().ENVIRONMENT === 'development') {\n const loggerMiddleware = createLogger({\n collapsed: true,\n });\n return composeWithDevTools(applyMiddleware(thunkMiddleware, sagaMiddleware, loggerMiddleware));\n }\n\n return compose(applyMiddleware(thunkMiddleware, sagaMiddleware));\n}\n\nexport default function configureStore(initialState = {}) {\n const store = createStore(\n createRootReducer(),\n initialState,\n composeMiddleware(),\n );\n sagaMiddleware.run(rootSaga);\n\n return store;\n}\n","import { combineReducers } from 'redux';\n\nimport {\n reducer as commonComponentsReducer,\n storeName as commonComponentsStoreName,\n} from '../common-components';\nimport {\n reducer as forgotPasswordReducer,\n storeName as forgotPasswordStoreName,\n} from '../forgot-password';\nimport {\n reducer as loginReducer,\n storeName as loginStoreName,\n} from '../login';\nimport {\n reducer as authnProgressiveProfilingReducers,\n storeName as authnProgressiveProfilingStoreName,\n} from '../progressive-profiling';\nimport {\n reducer as registerReducer,\n storeName as registerStoreName,\n} from '../register';\nimport {\n reducer as resetPasswordReducer,\n storeName as resetPasswordStoreName,\n} from '../reset-password';\n\nconst createRootReducer = () => combineReducers({\n [loginStoreName]: loginReducer,\n [registerStoreName]: registerReducer,\n [commonComponentsStoreName]: commonComponentsReducer,\n [forgotPasswordStoreName]: forgotPasswordReducer,\n [resetPasswordStoreName]: resetPasswordReducer,\n [authnProgressiveProfilingStoreName]: authnProgressiveProfilingReducers,\n});\nexport default createRootReducer;\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { getAuthService } from '@edx/frontend-platform/auth';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Icon,\n Tab,\n Tabs,\n} from '@edx/paragon';\nimport { ChevronLeft } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Navigate, useNavigate } from 'react-router-dom';\n\nimport BaseContainer from '../base-container';\nimport { clearThirdPartyAuthContextErrorMessage } from '../common-components/data/actions';\nimport {\n tpaProvidersSelector,\n} from '../common-components/data/selectors';\nimport messages from '../common-components/messages';\nimport { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\nimport {\n getTpaHint, getTpaProvider, updatePathWithQueryParams,\n} from '../data/utils';\nimport { LoginPage } from '../login';\nimport { RegistrationPage } from '../register';\nimport { backupRegistrationForm } from '../register/data/actions';\n\nconst Logistration = (props) => {\n const { selectedPage, tpaProviders } = props;\n const tpaHint = getTpaHint();\n const {\n providers, secondaryProviders,\n } = tpaProviders;\n const { formatMessage } = useIntl();\n const [institutionLogin, setInstitutionLogin] = useState(false);\n const [key, setKey] = useState('');\n const navigate = useNavigate();\n const disablePublicAccountCreation = getConfig().ALLOW_PUBLIC_ACCOUNT_CREATION === false;\n\n useEffect(() => {\n const authService = getAuthService();\n if (authService) {\n authService.getCsrfTokenService().getCsrfToken(getConfig().LMS_BASE_URL);\n }\n });\n\n useEffect(() => {\n if (disablePublicAccountCreation) {\n navigate(updatePathWithQueryParams(LOGIN_PAGE));\n }\n }, [navigate, disablePublicAccountCreation]);\n\n const handleInstitutionLogin = (e) => {\n sendTrackEvent('edx.bi.institution_login_form.toggled', { category: 'user-engagement' });\n if (typeof e === 'string') {\n sendPageEvent('login_and_registration', e === '/login' ? 'login' : 'register');\n } else {\n sendPageEvent('login_and_registration', e.target.dataset.eventName);\n }\n\n setInstitutionLogin(!institutionLogin);\n };\n\n const handleOnSelect = (tabKey) => {\n sendTrackEvent(`edx.bi.${tabKey.replace('/', '')}_form.toggled`, { category: 'user-engagement' });\n props.clearThirdPartyAuthContextErrorMessage();\n if (tabKey === LOGIN_PAGE) {\n props.backupRegistrationForm();\n }\n setKey(tabKey);\n };\n\n const tabTitle = (\n
\n \n \n {selectedPage === LOGIN_PAGE\n ? formatMessage(messages['logistration.sign.in'])\n : formatMessage(messages['logistration.register'])}\n \n
\n );\n\n const isValidTpaHint = () => {\n const { provider } = getTpaProvider(tpaHint, providers, secondaryProviders);\n return !!provider;\n };\n\n return (\n \n
\n {disablePublicAccountCreation\n ? (\n <>\n {institutionLogin && (\n \n \n \n )}\n
\n {!institutionLogin && (\n

{formatMessage(messages['logistration.sign.in'])}

\n )}\n \n
\n \n )\n : (\n
\n {institutionLogin\n ? (\n \n \n \n )\n : (!isValidTpaHint() && (\n \n \n \n \n ))}\n { key && (\n \n )}\n
\n {selectedPage === LOGIN_PAGE\n ? \n : (\n \n )}\n
\n
\n )}\n
\n
\n );\n};\n\nLogistration.propTypes = {\n selectedPage: PropTypes.string,\n backupRegistrationForm: PropTypes.func.isRequired,\n clearThirdPartyAuthContextErrorMessage: PropTypes.func.isRequired,\n tpaProviders: PropTypes.shape({\n providers: PropTypes.arrayOf(PropTypes.shape({})),\n secondaryProviders: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n};\n\nLogistration.defaultProps = {\n tpaProviders: {\n providers: [],\n secondaryProviders: [],\n },\n};\n\nLogistration.defaultProps = {\n selectedPage: REGISTER_PAGE,\n};\n\nconst mapStateToProps = state => ({\n tpaProviders: tpaProvidersSelector(state),\n});\n\nexport default connect(\n mapStateToProps,\n {\n backupRegistrationForm,\n clearThirdPartyAuthContextErrorMessage,\n },\n)(Logistration);\n","export const RECOMMENDATIONS_COUNT = 4;\n\n// Education difficulty level mapping\nexport const EDUCATION_LEVEL_MAPPING = {\n p: 'Advanced',\n m: 'Advanced',\n b: 'Intermediate',\n a: 'Intermediate',\n hs: 'Introductory',\n jhs: 'Introductory',\n};\n\nexport const PERSONALIZED = 'personalized';\n\nexport const LEVEL_FACET = 'level';\nexport const PRODUCT_FACET = 'product';\nexport const PRODUCT_TYPE_COURSE = 'course';\nexport const MAX_RECOMMENDATIONS = 4;\n","import { getConfig } from '@edx/frontend-platform';\nimport algoliasearch from 'algoliasearch';\n\n// initialize Algolia workers\nconst initializeSearchClient = () => algoliasearch(\n getConfig().ALGOLIA_APP_ID,\n getConfig().ALGOLIA_SEARCH_API_KEY,\n);\n\nconst getLocationRestrictionFilter = (userCountry) => {\n if (userCountry) {\n return `NOT blocked_in:\"${userCountry}\" AND (allowed_in:\"null\" OR allowed_in:\"${userCountry}\")`;\n }\n return '';\n};\n\nexport {\n initializeSearchClient,\n getLocationRestrictionFilter,\n};\n","import { PERSONALIZED } from './constants';\n\nconst { camelCaseObject } = require('@edx/frontend-platform');\n\nconst processCourseSearchResult = (searchResultCourse) => {\n const camelCasedResult = camelCaseObject(searchResultCourse);\n\n return {\n activeCourseRun: {\n key: camelCasedResult.activeRunKey,\n type: camelCasedResult.activeRunType,\n marketingUrl: camelCasedResult.marketingUrl,\n },\n activeRunKey: camelCasedResult.activeRunKey,\n allowedIn: camelCasedResult.allowedIn,\n blockedIn: camelCasedResult.blockedIn,\n cardType: 'course',\n courseType: 'course',\n image: {\n src: camelCasedResult.cardImageUrl,\n },\n owners: camelCasedResult.owners,\n title: camelCasedResult.title,\n uuid: camelCasedResult.uuid,\n objectID: `course-${camelCasedResult.uuid}`,\n productSource: {\n name: camelCasedResult.productSource,\n },\n recommendationType: PERSONALIZED,\n };\n};\n\nexport default processCourseSearchResult;\n","import { useEffect, useState } from 'react';\n\nimport algoliasearchHelper from 'algoliasearch-helper';\n\nimport {\n getLocationRestrictionFilter,\n initializeSearchClient,\n} from '../../../data/algolia';\nimport isOneTrustFunctionalCookieEnabled from '../../../data/oneTrust';\nimport processCourseSearchResult from '../algoliaResultsParser';\nimport {\n LEVEL_FACET, MAX_RECOMMENDATIONS, PRODUCT_FACET, PRODUCT_TYPE_COURSE,\n} from '../constants';\n\nconst INDEX_NAME = process.env.ALGOLIA_AUTHN_RECOMMENDATIONS_INDEX;\n\n/**\n * This hooks returns Algolia recommendations only if functional cookies are enabled. * @param userCountry\n * @param userCountry\n * @param educationLevel\n * @returns {{isLoading: boolean, recommendations: *[]}}\n */\nconst useAlgoliaRecommendations = (userCountry, educationLevel) => {\n const functionalCookiesEnabled = isOneTrustFunctionalCookieEnabled();\n const [recommendations, setRecommendations] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n if (!functionalCookiesEnabled) {\n setIsLoading(false);\n return;\n }\n\n const getSearchFiltersQueryString = () => getLocationRestrictionFilter(userCountry);\n\n const algoliaSearchParams = {\n facets: [LEVEL_FACET, PRODUCT_FACET],\n filters: getSearchFiltersQueryString(),\n aroundLatLngViaIP: true,\n };\n\n const searchClient = initializeSearchClient();\n const searchHelper = algoliasearchHelper(\n searchClient,\n INDEX_NAME,\n algoliaSearchParams,\n );\n\n searchHelper.addFacetRefinement(PRODUCT_FACET, PRODUCT_TYPE_COURSE);\n if (educationLevel) {\n searchHelper.addFacetRefinement(LEVEL_FACET, educationLevel);\n }\n\n const searchIndex = () => {\n searchHelper.search();\n };\n\n searchIndex();\n\n searchHelper.on('result', ({ results }) => {\n const parsedCourses = results.hits.slice(0, MAX_RECOMMENDATIONS).map(\n (course) => processCourseSearchResult(course),\n );\n setRecommendations(parsedCourses);\n setIsLoading(false);\n });\n\n searchHelper.on('error', () => setIsLoading(false));\n }, [educationLevel, functionalCookiesEnabled, userCountry]);\n\n return {\n recommendations,\n isLoading,\n };\n};\n\nexport default useAlgoliaRecommendations;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'recommendation.page.title': {\n id: 'recommendation.page.title',\n defaultMessage: 'Recommendations | {siteName}',\n description: 'recommendation page title',\n },\n 'recommendation.page.heading': {\n id: 'recommendation.page.heading',\n defaultMessage: 'We have a few recommendations to get you started.',\n description: 'recommendation page heading',\n },\n 'recommendation.skip.button': {\n id: 'recommendation.skip.button',\n defaultMessage: 'Skip for now',\n description: 'Skip button text',\n },\n 'recommendation.option.trending': {\n id: 'recommendation.option.trending',\n defaultMessage: 'Trending Now',\n description: 'Title for trending products',\n },\n 'recommendation.option.popular': {\n id: 'recommendation.option.popular',\n defaultMessage: 'Most Popular',\n description: 'Title for popular products',\n },\n 'recommendation.option.recommended.for.you': {\n id: 'recommendation.option.recommended.for.you',\n defaultMessage: 'Recommended For You',\n description: 'Title for personalized products',\n },\n});\n\nexport const cardBadgesMessages = defineMessages({\n 'recommendation.product-card.pill-text.course': {\n id: 'recommendation.product-card.pill-text.course',\n description: 'Text on a product card that describes which product line this item belongs to',\n defaultMessage: 'Course',\n },\n 'recommendation.product-card.pill-text.professional-certificate': {\n id: 'recommendation.product-card.pill-text.professional-certificate',\n description: 'Text on a product card that describes which product line this item belongs to',\n defaultMessage: 'Professional Certificate',\n },\n});\n\nexport const cardFooterMessages = defineMessages({\n 'recommendation.product-card.footer-text.emeritus': {\n id: 'recommendation.product-card.pill-text.emeritus',\n description: 'Text on a product card that describes which product line this item belongs to',\n defaultMessage: 'Offered on Emeritus',\n },\n 'recommendation.product-card.footer-text.shorelight': {\n id: 'recommendation.product-card.pill-text.shorelight',\n description: 'Text on a product card that describes which product line this item belongs to',\n defaultMessage: 'Offered through Shorelight',\n },\n 'recommendation.product-card.footer-text.number-of-courses': {\n id: 'recommendation.product-card.footer-text.number-of-courses',\n description: 'Label in card footer that shows how many courses are in a program',\n defaultMessage: '{length} {label}',\n },\n 'recommendation.product-card.footer-text.subscription': {\n id: 'recommendation.product-card.footer-text.subscription',\n description: 'Label in card footer that describes that it is a subscription program',\n defaultMessage: 'Subscription',\n },\n});\n\nexport const externalLinkIconMessages = defineMessages({\n 'recommendation.product-card.launch-icon.sr-text': {\n id: 'recommendation.product-card.launch-icon.sr-text',\n description: 'Screen reader text for the launch icon on the cards',\n defaultMessage: 'Opens a link in a new tab',\n },\n});\n\nexport default messages;\n","const placeholderCourse = {\n activeCourseRun: {\n key: 'course',\n marketingUrl: '/',\n type: 'Verified and Audit',\n },\n cardType: 'course',\n image: {\n src: './',\n },\n inProspectus: true,\n objectID: 'skeleton',\n owners: [{\n key: 'skeleton',\n logoImageUrl: './',\n name: 'skeleton',\n }],\n position: 0,\n prospectusPath: './',\n queryID: 'skeleton',\n recentEnrollmentCount: 0,\n title: 'skeleton',\n topics: [{\n topic: 'skeleton',\n }],\n uuid: 'skeleton',\n};\n\nconst loadingCoursesPlaceHolders = [\n { ...placeholderCourse, uuid: '294ea4rtn2117', courseType: 'course' },\n { ...placeholderCourse, uuid: '294fga4681117', courseType: 'course' },\n { ...placeholderCourse, uuid: '294ea4278e117', courseType: 'course' },\n { ...placeholderCourse, uuid: '294eax2rtg117', courseType: 'course' },\n];\n\nexport default loadingCoursesPlaceHolders;\n","export const convertCourseRunKeyToCourseKey = (courseRunKey) => {\n if (!courseRunKey) {\n return '';\n }\n const newKeyFormat = courseRunKey.includes('+');\n if (newKeyFormat) {\n const splitCourseRunKey = courseRunKey.split(':').slice(-1)[0];\n const splitCourseKey = splitCourseRunKey.split('+').slice(0, 2);\n return `${splitCourseKey[0]}+${splitCourseKey[1]}`;\n }\n const splitCourseKey = courseRunKey.split('/').slice(0, 2);\n return `${splitCourseKey[0]}+${splitCourseKey[1]}`;\n};\n\nconst courseTypeToProductTypeMap = {\n course: 'Course',\n 'verified-audit': 'Course',\n verified: 'Course',\n audit: 'Course',\n 'credit-verified-audit': 'Course',\n 'spoc-verified-audit': 'Course',\n professional: 'Professional Certificate',\n};\n\nconst programTypeToProductTypeMap = {\n 'professional certificate': 'Professional Certificate',\n certificate: 'Certificate',\n};\n\nexport const useProductType = (courseType, programType) => {\n const courseTypeLowerCase = courseType?.toLowerCase();\n if (courseTypeToProductTypeMap[courseTypeLowerCase]) {\n return courseTypeToProductTypeMap[courseTypeLowerCase];\n }\n\n const programTypeLowerCase = programType?.toLowerCase();\n if (programTypeToProductTypeMap[programTypeLowerCase]) {\n return programTypeToProductTypeMap[programTypeLowerCase];\n }\n\n return undefined;\n};\n\nexport const getVariant = (productType) => (\n ['Boot Camp', 'Executive Education', 'Course'].includes(productType) ? 'light' : 'dark'\n);\n\nexport const createCodeFriendlyProduct = (type) => type?.replace(/\\s+/g, '-').replace(/'/g, '').toLowerCase();\n\nexport const truncateText = (input, textLength) => (\n input?.length > textLength ? `${input.substring(0, textLength)}...` : input\n);\n\nexport const filterLocationRestriction = (products, countryCode) => products.filter((product) => {\n if (product.locationRestriction) {\n if (product.locationRestriction.restrictionType === 'allowlist') {\n return product.locationRestriction.countries.includes(countryCode);\n }\n if (product.locationRestriction.restrictionType === 'blocklist') {\n return !product.locationRestriction.countries.includes(countryCode);\n }\n }\n return true;\n},\n);\n\nexport default convertCourseRunKeyToCourseKey;\n","import React from 'react';\n\nimport { Badge, Card, Hyperlink } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport { truncateText } from '../../data/utils';\n\nconst BaseCard = ({\n customHeaderImage,\n schoolLogo,\n title,\n uuid,\n subtitle,\n variant,\n productTypeCopy,\n footer,\n handleOnClick,\n isLoading,\n}) => (\n
\n \n \n \n \n \n
\n \n {productTypeCopy}\n \n
\n
\n {footer}\n
\n
\n \n \n
\n);\n\nBaseCard.propTypes = {\n title: PropTypes.string.isRequired,\n uuid: PropTypes.string.isRequired,\n footer: PropTypes.element.isRequired,\n productTypeCopy: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n variant: PropTypes.string.isRequired,\n customHeaderImage: PropTypes.string.isRequired,\n schoolLogo: PropTypes.string.isRequired,\n isLoading: PropTypes.bool,\n handleOnClick: PropTypes.func.isRequired,\n};\n\nBaseCard.defaultProps = {\n isLoading: false,\n};\nexport default BaseCard;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport {\n cardFooterMessages,\n} from '../../messages';\n\nconst ProductCardFooter = ({\n factoid,\n quickFacts,\n courseLength,\n cardType,\n}) => {\n const intl = useIntl();\n const courseLengthLabel = courseLength > 1 ? 'Courses' : 'Course';\n\n if (courseLength) {\n return (\n

\n {intl.formatMessage(\n cardFooterMessages[\n 'recommendation.product-card.footer-text.number-of-courses'\n ],\n { length: courseLength, label: courseLengthLabel },\n )}\n

\n );\n }\n\n if (cardType === 'program') {\n if (quickFacts && quickFacts.length > 0) {\n const quickFactsCount = quickFacts.length;\n\n const threeFactsArrangement = [1, 3, 0];\n const twoFactsArrangement = [0, 2];\n return (\n <>\n {(quickFactsCount > 3 ? threeFactsArrangement : twoFactsArrangement)\n .map((index) => quickFacts[index])\n .filter(Boolean)\n .map((fact, idx) => (\n

\n {idx > 0 && }\n {fact && fact.text}\n

\n ))}\n \n );\n }\n }\n\n if (factoid) {\n return

{factoid}

;\n }\n\n return null;\n};\n\nProductCardFooter.propTypes = {\n cardType: PropTypes.string,\n factoid: PropTypes.string,\n quickFacts: PropTypes.arrayOf(PropTypes.shape({})),\n courseLength: PropTypes.number,\n};\n\nProductCardFooter.defaultProps = {\n cardType: '',\n factoid: '',\n quickFacts: [],\n courseLength: undefined,\n};\n\nexport default ProductCardFooter;\n","import { sendTrackEvent } from '@edx/frontend-platform/analytics';\n\nexport const LINK_TIMEOUT = 300;\n\nexport const eventNames = {\n recommendedProductClicked: 'edx.bi.user.recommended.product.clicked',\n recommendationsViewed: 'edx.bi.user.recommendations.viewed',\n skipButtonClicked: 'edx.bi.user.recommendations.skip.btn.clicked',\n};\n\nconst generateProductKey = (product) => (\n product.cardType === 'program' ? `${product.title} [${product.uuid}]` : product.activeRunKey\n);\n\nexport const getProductMapping = (recommendedProducts) => recommendedProducts.map((product) => ({\n product_key: generateProductKey(product),\n product_line: product.cardType,\n product_source: product.productSource.name,\n}));\n\nexport const trackRecommendationClick = (product, position, userId) => {\n sendTrackEvent(eventNames.recommendedProductClicked, {\n page: 'authn_recommendations',\n position,\n recommendation_type: product.recommendationType,\n product_key: generateProductKey(product),\n product_line: product.cardType,\n product_source: product.productSource.name,\n user_id: userId,\n });\n\n const productUrl = product.url || product?.activeCourseRun?.marketingUrl;\n return setTimeout(() => { global.open(productUrl, '_blank'); }, LINK_TIMEOUT);\n};\n\nexport const trackRecommendationsViewed = (recommendedProducts, type, userId) => {\n const viewedProductsList = getProductMapping(recommendedProducts);\n\n if (viewedProductsList && viewedProductsList.length) {\n sendTrackEvent(\n eventNames.recommendationsViewed, {\n page: 'authn_recommendations',\n recommendation_type: type,\n products: viewedProductsList,\n user_id: userId,\n },\n );\n }\n};\n\nexport const trackSkipButtonClicked = (userId) => {\n sendTrackEvent(\n eventNames.skipButtonClicked, {\n page: 'authn_recommendations',\n user_id: userId,\n },\n );\n};\n\nexport default {\n trackRecommendationClick,\n trackRecommendationsViewed,\n trackSkipButtonClicked,\n};\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport BaseCard from './BaseCard';\nimport Footer from './Footer';\nimport { createCodeFriendlyProduct, getVariant, useProductType } from '../data/utils';\nimport {\n cardBadgesMessages,\n} from '../messages';\nimport { trackRecommendationClick } from '../track';\n\nconst ProductCard = ({\n product,\n userId,\n position,\n isLoading,\n}) => {\n const { formatMessage } = useIntl();\n\n const productType = useProductType(product?.courseType, product?.type);\n\n const variant = getVariant(productType);\n\n const headerImage = product?.cardImageUrl || product?.image?.src;\n\n const schoolName = product?.organizationShortCodeOverride\n || product?.owners?.[0]?.name\n || product?.authoringOrganizations?.[0]?.name\n || product?.partner;\n const schoolLogo = product?.organizationLogoOverrideUrl\n || product?.logoFilename\n || product?.authoringOrganizations?.[0]?.logoImageUrl\n || product?.owners?.[0]?.logoImageUrl;\n\n const { owners } = product;\n const multipleSchoolNames = [];\n const isMultipleOwner = owners?.length > 1;\n\n if ((owners?.length > 1)) {\n owners.forEach((owner, index, arr) => {\n let school;\n if (index === arr.length - 1) {\n school = (\n {owner.name}\n );\n } else {\n school = (\n <>\n {owner.name}\n
\n \n );\n }\n\n multipleSchoolNames.push(school);\n });\n }\n\n const productTypeCopy = formatMessage(\n cardBadgesMessages[\n `recommendation.product-card.pill-text.${createCodeFriendlyProduct(productType)}`\n ],\n );\n const handleCardClick = () => {\n trackRecommendationClick(\n product,\n position + 1,\n userId,\n );\n };\n\n return (\n \n )}\n handleOnClick={handleCardClick}\n isSubscriptionView={!!product.subscriptionEligible}\n />\n );\n};\n\nProductCard.propTypes = {\n product: PropTypes.shape([\n PropTypes.shape({}),\n ]).isRequired,\n userId: PropTypes.number.isRequired,\n position: PropTypes.number.isRequired,\n isLoading: PropTypes.bool,\n};\n\nProductCard.defaultProps = {\n isLoading: false,\n};\nexport default ProductCard;\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport ProductCard from './ProductCard';\n\nconst RecommendationsList = (props) => {\n const { recommendations, userId, isLoading } = props;\n\n return (\n
\n {\n recommendations.map((recommendation, idx) => (\n \n ))\n }\n
\n );\n};\n\nRecommendationsList.propTypes = {\n recommendations: PropTypes.arrayOf(PropTypes.shape({\n uuid: PropTypes.string,\n })),\n userId: PropTypes.number,\n isLoading: PropTypes.bool,\n};\n\nRecommendationsList.defaultProps = {\n recommendations: [],\n userId: null,\n isLoading: false,\n};\n\nexport default RecommendationsList;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Skeleton } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport loadingCoursesPlaceholders from '../data/loadingCoursesPlaceholders';\nimport messages from '../messages';\nimport RecommendationsList from '../RecommendationsList';\n\nconst RecommendationsLargeLayout = (props) => {\n const {\n userId,\n isLoading,\n personalizedRecommendations,\n } = props;\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n \n \n \n );\n }\n\n if (personalizedRecommendations.length) {\n return (\n \n

\n {formatMessage(messages['recommendation.page.heading'])}\n

\n\n \n
\n );\n }\n\n return null;\n};\n\nRecommendationsLargeLayout.propTypes = {\n userId: PropTypes.number.isRequired,\n isLoading: PropTypes.bool,\n personalizedRecommendations: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nRecommendationsLargeLayout.defaultProps = {\n isLoading: true,\n personalizedRecommendations: [],\n};\n\nexport default RecommendationsLargeLayout;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Skeleton } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport loadingCoursesPlaceholders from '../data/loadingCoursesPlaceholders';\nimport messages from '../messages';\nimport RecommendationsList from '../RecommendationsList';\n\nconst RecommendationsSmallLayout = (props) => {\n const {\n userId,\n isLoading,\n personalizedRecommendations,\n } = props;\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n \n \n \n );\n }\n\n if (personalizedRecommendations.length) {\n return (\n \n

\n {formatMessage(messages['recommendation.page.heading'])}\n

\n\n \n
\n );\n }\n\n return null;\n};\n\nRecommendationsSmallLayout.propTypes = {\n userId: PropTypes.number.isRequired,\n isLoading: PropTypes.bool,\n personalizedRecommendations: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nRecommendationsSmallLayout.defaultProps = {\n isLoading: true,\n personalizedRecommendations: [],\n};\n\nexport default RecommendationsSmallLayout;\n","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n breakpoints,\n Container,\n Hyperlink,\n Image, Skeleton,\n StatefulButton,\n useMediaQuery,\n} from '@edx/paragon';\nimport { Helmet } from 'react-helmet';\nimport { useLocation } from 'react-router-dom';\n\nimport { EDUCATION_LEVEL_MAPPING, PERSONALIZED } from './data/constants';\nimport useAlgoliaRecommendations from './data/hooks/useAlgoliaRecommendations';\nimport messages from './messages';\nimport RecommendationsLargeLayout from './RecommendationsPageLayouts/LargeLayout';\nimport RecommendationsSmallLayout from './RecommendationsPageLayouts/SmallLayout';\nimport { LINK_TIMEOUT, trackRecommendationsViewed, trackSkipButtonClicked } from './track';\nimport { DEFAULT_REDIRECT_URL } from '../data/constants';\n\nconst RecommendationsPage = () => {\n const { formatMessage } = useIntl();\n const isExtraSmall = useMediaQuery({ maxWidth: breakpoints.extraSmall.maxWidth - 1 });\n const location = useLocation();\n\n const registrationResponse = location.state?.registrationResult;\n const DASHBOARD_URL = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n const educationLevel = EDUCATION_LEVEL_MAPPING[location.state?.educationLevel];\n const userId = location.state?.userId;\n\n const userCountry = useSelector((state) => state.register.backendCountryCode);\n const {\n recommendations: algoliaRecommendations,\n isLoading,\n } = useAlgoliaRecommendations(userCountry, educationLevel);\n\n useEffect(() => {\n if (!isLoading && algoliaRecommendations.length > 0) {\n trackRecommendationsViewed(algoliaRecommendations, PERSONALIZED, userId);\n }\n }, [isLoading, algoliaRecommendations, userId]);\n\n const handleSkipRecommendationPage = () => {\n window.history.replaceState(location.state, null, '');\n if (registrationResponse) {\n window.location.href = registrationResponse.redirectUrl;\n } else {\n window.location.href = DASHBOARD_URL;\n }\n };\n\n const handleSkip = (e) => {\n e.preventDefault();\n trackSkipButtonClicked(userId);\n setTimeout(() => { handleSkipRecommendationPage(); }, LINK_TIMEOUT);\n };\n\n if (!registrationResponse) {\n window.location.href = DASHBOARD_URL;\n return null;\n }\n\n if (!isLoading && !algoliaRecommendations.length) {\n handleSkipRecommendationPage();\n }\n\n return (\n <>\n \n {formatMessage(messages['recommendation.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n
\n
\n
\n \n {getConfig().SITE_NAME}\n \n
\n
\n \n {isExtraSmall ? (\n \n ) : (\n \n )}\n
\n {isLoading && (\n \n )}\n {!isLoading && algoliaRecommendations.length && (\n \n )}\n
\n \n
\n
\n \n );\n};\n\nRecommendationsPage.propTypes = {};\n\nexport default RecommendationsPage;\n","import { library } from '@fortawesome/fontawesome-svg-core';\nimport {\n faApple, faFacebook, faGoogle, faMicrosoft,\n} from '@fortawesome/free-brands-svg-icons';\n\nexport default function registerIcons() {\n library.add(faApple, faFacebook, faGoogle, faMicrosoft);\n}\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { AppProvider } from '@edx/frontend-platform/react';\nimport { Helmet } from 'react-helmet';\nimport { Navigate, Route, Routes } from 'react-router-dom';\n\nimport {\n EmbeddedRegistrationRoute, NotFoundPage, registerIcons, UnAuthOnlyRoute, Zendesk,\n} from './common-components';\nimport configureStore from './data/configureStore';\nimport {\n AUTHN_PROGRESSIVE_PROFILING,\n LOGIN_PAGE,\n PAGE_NOT_FOUND,\n PASSWORD_RESET_CONFIRM,\n RECOMMENDATIONS,\n REGISTER_EMBEDDED_PAGE,\n REGISTER_PAGE,\n RESET_PAGE,\n} from './data/constants';\nimport { updatePathWithQueryParams } from './data/utils';\nimport { ForgotPasswordPage } from './forgot-password';\nimport Logistration from './logistration/Logistration';\nimport { ProgressiveProfiling } from './progressive-profiling';\nimport { RecommendationsPage } from './recommendations';\nimport { RegistrationPage } from './register';\nimport { ResetPasswordPage } from './reset-password';\n\nimport './index.scss';\n\nregisterIcons();\n\nconst MainApp = () => (\n \n \n \n \n {getConfig().ZENDESK_KEY && }\n \n } />\n }\n />\n \n }\n />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n \n);\n\nexport default MainApp;\n","import 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {\n APP_INIT_ERROR, APP_READY, initialize, mergeConfig, subscribe,\n} from '@edx/frontend-platform';\nimport { ErrorPage } from '@edx/frontend-platform/react';\n\nimport configuration from './config';\nimport messages from './i18n';\nimport MainApp from './MainApp';\n\nsubscribe(APP_READY, () => {\n ReactDOM.render(\n ,\n document.getElementById('root'),\n );\n});\n\nsubscribe(APP_INIT_ERROR, (error) => {\n ReactDOM.render(, document.getElementById('root'));\n});\n\ninitialize({\n handlers: {\n config: () => {\n mergeConfig(configuration);\n },\n },\n messages,\n});\n"],"names":["SESSION_COOKIE_DOMAIN","process","USER_RETENTION_COOKIE_NAME","DISABLE_ENTERPRISE_LOGIN","ENABLE_DYNAMIC_REGISTRATION_FIELDS","ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN","ENABLE_POST_REGISTRATION_RECOMMENDATIONS","MARKETING_EMAILS_OPT_IN","SHOW_CONFIGURABLE_EDX_FIELDS","ACTIVATION_EMAIL_SUPPORT_LINK","AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK","LOGIN_ISSUE_SUPPORT_LINK","PASSWORD_RESET_SUPPORT_LINK","POST_REGISTRATION_REDIRECT_URL","PRIVACY_POLICY","SEARCH_CATALOG_URL","TOS_AND_HONOR_CODE","TOS_LINK","BANNER_IMAGE_LARGE","BANNER_IMAGE_MEDIUM","BANNER_IMAGE_SMALL","BANNER_IMAGE_EXTRA_SMALL","GENERAL_RECOMMENDATIONS","INFO_EMAIL","ZENDESK_KEY","ZENDESK_LOGO_URL","ALGOLIA_APP_ID","ALGOLIA_SEARCH_API_KEY","appMessages","ar","de","fr","hi","it","pt","ru","uk","paragonMessages","LOGIN_PAGE","REGISTER_PAGE","REGISTER_EMBEDDED_PAGE","RESET_PAGE","AUTHN_PROGRESSIVE_PROFILING","DEFAULT_REDIRECT_URL","RECOMMENDATIONS","PAGE_NOT_FOUND","SUPPORTED_ICON_CLASSES","FORM_SUBMISSION_ERROR","INTERNAL_SERVER_ERROR","DEFAULT_STATE","PENDING_STATE","COMPLETE_STATE","FAILURE_STATE","LETTER_REGEX","NUMBER_REGEX","VALID_EMAIL_REGEX","AUTH_PARAMS","getTpaProvider","tpaHintProvider","primaryProviders","secondaryProviders","tpaProvider","skipHintedLogin","forEach","provider","id","getTpaHint","params","QueryString","window","location","search","tpaHint","tpa_hint","next","index","indexOf","substring","length","updatePathWithQueryParams","path","queryParams","replace","getAllPossibleQueryParams","locationURl","arguments","undefined","urlParams","query","Object","entries","_ref","key","value","windowScrollTo","options","document","documentElement","style","scrollTo","top","left","isHostAvailableInQueryParams","AsyncActionType","constructor","topic","name","this","BASE","BEGIN","SUCCESS","FAILURE","RESET","FORBIDDEN","setCookie","cookieName","cookieValue","cookieExpiry","cookies","Cookies","domain","getConfig","expires","set","RedirectLogistration","props","authenticatedUser","finishAuthUrl","redirectUrl","redirectToProgressiveProfilingPage","success","optionalFields","redirectToRecommendationsPage","educationLevel","userId","registrationEmbedded","host","finalRedirectUrl","includes","LMS_BASE_URL","parent","postMessage","action","registrationResult","_jsx","Navigate","to","state","href","defaultProps","propTypes","PropTypes","EmbeddedRegistrationRoute","children","isRequired","UnAuthOnlyRoute","authUser","setAuthUser","useState","isReady","setIsReady","useEffect","fetchAuthenticatedUser","forceRefresh","getAuthenticatedUser","then","username","global","concat","NotFoundPage","className","FormattedMessage","defaultMessage","description","defineMessages","supportTitle","selectTicketForm","SocialAuthProviders","formatMessage","useIntl","referrer","socialAuthProviders","handleSubmit","e","preventDefault","url","currentTarget","dataset","providerUrl","socialAuth","map","_jsxs","type","loginUrl","registerUrl","onClick","iconImage","src","alt","iconClass","FontAwesomeIcon","icon","Icon","Login","messages","providerName","_Fragment","skipRegistrationForm","ThirdPartyAuthAlert","currentProvider","platformName","SITE_NAME","message","Alert","Heading","RenderInstitutionButton","onSubmitHandler","buttonTitle","Button","variant","Institution","InstitutionLogistration","lmsBaseUrl","headingTitle","Hyperlink","destination","LogistrationDefaultProps","LogistrationProps","_objectSpread","THIRD_PARTY_AUTH_CONTEXT","THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG","getThirdPartyAuthContext","payload","getThirdPartyAuthContextBegin","getThirdPartyAuthContextSuccess","fieldDescriptions","thirdPartyAuthContext","getThirdPartyAuthContextFailure","defaultState","fields","extended_profile","thirdPartyAuthApiStatus","autoSubmitRegForm","countryCode","providers","pipelineUserDetails","errorMessage","welcomePageRedirectUrl","async","requestConfig","headers","isPublic","data","getAuthenticatedHttpClient","get","catch","registrationFields","contextData","BACKUP_REGISTRATION_DATA","REGISTER_FORM_VALIDATIONS","REGISTER_NEW_USER","REGISTER_CLEAR_USERNAME_SUGGESTIONS","REGISTRATION_CLEAR_BACKEND_ERROR","REGISTER_SET_COUNTRY_CODE","REGISTER_SET_USER_PIPELINE_DATA_LOADED","backupRegistrationFormBegin","fetchRealtimeValidations","formPayload","fetchRealtimeValidationsBegin","fetchRealtimeValidationsSuccess","validations","fetchRealtimeValidationsFailure","registerNewUserBegin","registerNewUserSuccess","registerNewUserFailure","error","clearUsernameSuggestions","clearRegistrationBackendError","fieldName","setCountryFromThirdPartyAuthContext","fetchThirdPartyAuthContext","put","call","logError","saga","takeEvery","storeName","commonComponentsSelector","thirdPartyAuthContextSelector","createSelector","commonComponents","tpaProvidersSelector","FormGroup","hasFocus","setHasFocus","Form","Group","controlId","isInvalid","Control","as","readOnly","autoComplete","spellCheck","onFocus","handleFocus","onBlur","handleBlur","handleClick","onChange","handleChange","controlClassName","borderClass","trailingElement","floatingLabel","TransitionReplace","helpText","Feedback","toString","hasIcon","PasswordField","dispatch","useDispatch","validationApiRateLimited","useSelector","register","isPasswordHidden","setHiddenTrue","setHiddenFalse","useToggle","showTooltip","setShowTooltip","target","relatedTarget","passwordValue","showRequirements","handleErrorChange","fieldError","validatePasswordField","test","password","setTimeout","HideButton","IconButton","VisibilityOff","iconAs","size","ShowButton","Visibility","placement","innerWidth","tooltip","Tooltip","Check","Remove","OverlayTrigger","overlay","show","ZendeskHelp","setting","webWidget","contactOptions","enabled","chat","suppress","departments","contactForm","ticketForms","subject","prefill","attachments","helpCenter","originalArticleButton","answerBot","contactOnlyAfterQuery","title","avatar","pathname","Zendesk","defer","zendeskKey","FORGOT_PASSWORD","FORGOT_PASSWORD_PERSIST_FORM_DATA","forgotPasswordBegin","forgotPasswordSuccess","email","forgotPasswordForbidden","forgotPasswordServerError","forgotPasswordResultSelector","forgotPassword","TOKEN_STATE","PASSWORD_RESET_ERROR","PASSWORD_VALIDATION_ERROR","PASSWORD_RESET","INVALID_TOKEN","FORBIDDEN_REQUEST","ForgotPasswordAlert","emailError","heading","status","values","supportLink","Link","CheckCircle","Error","LargeLayout","MARKETING_SITE_BASE_URL","Image","LOGO_WHITE_URL","classNames","siteName","preserveAspectRatio","transform","x","y","height","width","MediumLayout","SmallLayout","backgroundImage","ExtraSmallLayout","LOGO_URL","BaseContainer","showWelcomeBanner","baseContainerVersion","setBaseContainerVersion","experiments","rebrandExperiment","variation","handleLoaded","MediaQuery","maxWidth","breakpoints","extraSmall","AuthSmallLayout","ImageExtraSmallLayout","minWidth","small","ImageSmallLayout","medium","large","AuthMediumLayout","ImageMediumLayout","extraLarge","AuthLargeLayout","ImageLargeLayout","DefaultSmallLayout","DefaultMediumLayout","DefaultLargeLayout","ForgotPasswordPage","emailRegex","RegExp","submitState","emailValidationError","setEmail","bannerEmail","setBannerEmail","formErrors","setFormErrors","validationError","setValidationError","navigate","useNavigate","sendPageEvent","sendTrackEvent","category","getValidationMessage","tabTitle","ChevronLeft","Helmet","Tabs","activeKey","onSelect","Tab","eventKey","setForgotPasswordFormData","StatefulButton","labels","default","pending","behavior","onMouseDown","showLaunchIcon","isInline","connect","forgotPasswordFormData","RESET_PASSWORD","VALIDATE_TOKEN","PASSWORD_RESET_FAILURE","passwordResetFailure","errorCode","validateTokenBegin","validateTokenSuccess","tokenStatus","token","resetPasswordBegin","resetPasswordSuccess","resetPasswordFailure","errorMsg","post","formurlencoded","handleForgotPassword","response","logInfo","INVALID_FORM","TPA_AUTHENTICATION_FAILURE","ACCOUNT_ACTIVATION_MESSAGE","AccountActivationMessage","messageType","activationOrVerification","activationMessage","iconMapping","LOGIN_REQUEST","LOGIN_PERSIST_FORM_DATA","LOGIN_REMOVE_PASSWORD_RESET_BANNER","loginRequestBegin","loginRequestSuccess","loginRequestFailure","loginError","loginSelector","loginRequestSelector","login","loginResult","loginErrorSelector","loginFormDataSelector","loginFormData","ChangePasswordPrompt","isMobileView","breakpoint","isMobileWindow","setIsMobileWindow","checkForMobile","matchMedia","matches","addEventListener","removeEventListener","useMobileResponsive","redirectToResetPasswordPage","setRedirectToResetPasswordPage","handlers","handleToggleOff","isOpen","open","close","ModalDialog","onClose","hasCloseButton","Header","Title","Body","Footer","ActionRow","CloseButton","LoginFailureMessage","context","authService","getAuthService","errorList","resetLink","lineBreak","tpaLink","allowedDomain","remainingAttempts","failureCount","getCsrfTokenService","clearCsrfTokenCache","platform_name","EnterpriseSSO","disablePublicAccountCreation","ALLOW_PUBLIC_ACCOUNT_CREATION","ResetPasswordSuccess","LoginPage","React","super","_defineProperty","resetPassword","loginRemovePasswordResetBanner","setState","isSubmitted","emailOrUsername","validateEmail","passwordValidationError","validatePassword","setLoginFormData","errors","email_or_username","loginRequest","componentDidMount","loginRequestReset","shouldComponentUpdate","nextProps","nextState","componentWillUnmount","getEnterPriseLoginURL","intl","renderThirdPartyAuth","isInstitutionAuthActive","isSocialAuthActive","isEnterpriseLoginDisabled","Skeleton","count","handleInstitutionLogin","renderForm","activationMsgType","account_activation_status","institutionLogin","tpaAuthenticationError","handleOnFocus","handleOnBlur","handleForgotPasswordLinkClickEvent","render","creds","formData","injectIntl","resetPasswordResultSelector","validateToken","getHttpClient","URL","is_account_recovery","searchParams","append","ResetPasswordFailure","ResetPasswordPage","newPasswordError","newPassword","setNewPassword","confirmPassword","setConfirmPassword","setErrorCode","useParams","validateInput","reset_password_page","validation_decisions","err","validatePasswordFromBackend","some","event","handleConfirmPasswordChange","Spinner","animation","isPasswordValid","isPasswordConfirmed","new_password1","new_password2","handleValidateToken","isValid","is_valid","handleResetPassword","resetStatus","reset_status","resetErrors","err_msg","token_invalid","redirect_url","handleLoginRequest","statusCodes","camelCaseObject","SAVE_USER_PROFILE","saveUserProfileBegin","saveUserProfileSuccess","saveUserProfileFailure","welcomePageContextSelector","nextUrl","ProgressiveProfilingPageModal","isOneTrustFunctionalCookieEnabled","OnetrustActiveGroups","FormFieldRenderer","formField","fieldData","onChangeHandler","Boolean","ExpandMore","label","option","Checkbox","checked","ProgressiveProfiling","getFieldDataFromBackend","showError","welcomePageContext","welcomePageContextApiStatus","useLocation","functionalCookiesConsent","enablePostRegistrationRecommendations","setRegistrationResult","formFieldData","setFormFieldData","extendedProfile","setValues","showModal","setShowModal","showRecommendationsPage","setShowRecommendationsPage","is_welcome_page","configureAuth","AxiosJwtAuthService","loggingService","getLoggingService","config","registrationResponse","keys","identifyAuthenticatedUser","page","DASHBOARD_URL","assign","formFields","shouldRedirect","level_of_education","history","replaceState","push","fieldValue","saveUserProfile","snakeCaseObject","isGenderSelected","gender","isYearOfBirthSelected","year_of_birth","isLevelOfEducationSelected","welcomePageStore","welcomePage","patchAccount","commitValues","patch","saveUserProfileInformation","FIELDS","urlRegex","NameField","shouldFetchUsernameSuggestions","validateName","trim","match","COMMON_EMAIL_PROVIDERS","DEFAULT_SERVICE_PROVIDER_DOMAINS","DEFAULT_TOP_LEVEL_DOMAINS","getLevenshteinSuggestion","word","knownWords","similarityThreshold","minEditDistance","mostSimilar","i","editDistance","distance","toLowerCase","getSuggestionForInvalidEmail","defaultDomains","suggestion","EmailField","confirmEmailValue","registrationFormData","backedUpFormData","emailSuggestion","setEmailSuggestion","handleSuggestionClick","maxLength","confirmEmailError","domainName","split","validateEmailAddress","validation","hasError","hasMultipleSubdomains","serviceLevelDomain","topLevelDomain","tldSuggestion","serviceSuggestion","Close","handleSuggestionClosed","tabIndex","usernameRegex","UsernameField","suggestedUsernameDiv","iconButton","usernameSuggestions","handleUsernameSuggestionClose","suggestedUsernames","startsWith","validateUsername","COUNTRY_CODE_KEY","COUNTRY_DISPLAY_KEY","CountryField","countryList","selectedCountry","onFocusHandler","backendCountryCode","countryDisplayValue","countryVal","find","country","displayValue","validateCountryField","normalizedValue","FormAutosuggest","onSelected","handleSelected","handleOnChange","FormAutosuggestOption","FormControlFeedback","code","HonorCode","fieldType","tosAndHonorCode","privacyPolicy","TermsOfService","termsOfService","ConfigurableRegistrationForm","fieldErrors","setFieldErrors","setFormFields","autoSubmitRegistrationForm","useMemo","getCountryList","getLocale","showTermsOfServiceAndHonorCode","showCountryField","formFieldDescriptions","honorCode","flags","prevState","countryValue","prevErrors","error_message","onBlurHandler","marketingEmailsOptIn","honor_code","RegistrationFailureMessage","ThirdPartyAuth","RegistrationPage","showConfigurableEdxFields","showConfigurableRegistrationFields","showMarketingEmailOptInCheckbox","registrationError","registrationErrorCode","shouldBackupState","userPipelineDataLoaded","thirdPartyAuthErrorMessage","backendValidations","getBackendValidations","validationDecisions","filter","field","userMessage","configurableFormFields","setConfigurableFormFields","setErrors","formStartTime","setFormStartTime","temporaryErrors","setTemporaryErrors","cta","buttonLabel","is_register_page","getRegistrationDataFromBackend","Date","now","registerUser","totalRegistrationTime","social_auth_provider","isFormValid","registrationInfo","prepareRegistrationPayload","initPayload","RegistrationFailure","confirm_email","autoSubmitRegisterForm","registrationErrorTemp","_action$payload$valid","validationWithoutUsernameSuggestions","_objectWithoutProperties","_excluded","registerRequest","registrationInformation","authenticated_user","getFieldsValidations","fieldValidations","handleNewUserRegistration","rootSaga","all","loginSaga","registrationSaga","commonComponentsSaga","forgotPasswordSaga","resetPasswordSaga","authnProgressiveProfilingSaga","sagaMiddleware","createSagaMiddleware","configureStore","initialState","store","createStore","combineReducers","loginStoreName","loginReducer","registerReducer","commonComponentsStoreName","commonComponentsReducer","forgotPasswordStoreName","forgotPasswordReducer","resetPasswordStoreName","resetPasswordReducer","authnProgressiveProfilingReducers","ENVIRONMENT","loggerMiddleware","createLogger","collapsed","composeWithDevTools","applyMiddleware","thunkMiddleware","compose","composeMiddleware","run","Logistration","selectedPage","tpaProviders","setInstitutionLogin","setKey","getCsrfToken","eventName","defaultActiveKey","isValidTpaHint","tabKey","clearThirdPartyAuthContextErrorMessage","backupRegistrationForm","EDUCATION_LEVEL_MAPPING","p","m","b","a","hs","jhs","PERSONALIZED","LEVEL_FACET","PRODUCT_FACET","require","INDEX_NAME","ALGOLIA_AUTHN_RECOMMENDATIONS_INDEX","useAlgoliaRecommendations","userCountry","functionalCookiesEnabled","recommendations","setRecommendations","isLoading","setIsLoading","algoliaSearchParams","facets","filters","getLocationRestrictionFilter","aroundLatLngViaIP","searchClient","algoliasearch","searchHelper","algoliasearchHelper","addFacetRefinement","on","results","parsedCourses","hits","slice","course","searchResultCourse","camelCasedResult","activeCourseRun","activeRunKey","activeRunType","marketingUrl","allowedIn","blockedIn","cardType","courseType","image","cardImageUrl","owners","uuid","objectID","productSource","recommendationType","processCourseSearchResult","cardBadgesMessages","cardFooterMessages","placeholderCourse","inProspectus","logoImageUrl","position","prospectusPath","queryID","recentEnrollmentCount","topics","courseTypeToProductTypeMap","verified","audit","professional","programTypeToProductTypeMap","certificate","truncateText","input","textLength","BaseCard","customHeaderImage","schoolLogo","subtitle","productTypeCopy","footer","handleOnClick","Card","ImageCap","srcAlt","logoSrc","logoAlt","imageLoadingType","Section","Badge","ProductCardFooter","factoid","quickFacts","courseLength","courseLengthLabel","quickFactsCount","threeFactsArrangement","twoFactsArrangement","fact","idx","text","generateProductKey","product","ProductCard","productType","useProductType","programType","courseTypeLowerCase","programTypeLowerCase","getVariant","headerImage","schoolName","organizationShortCodeOverride","authoringOrganizations","partner","organizationLogoOverrideUrl","logoFilename","multipleSchoolNames","isMultipleOwner","owner","arr","school","degree","externalUrl","additionalMetadata","courses","isSubscriptionView","subscriptionEligible","is2UDegreeProgram","handleCardClick","trackRecommendationClick","recommendation_type","product_key","product_line","product_source","user_id","productUrl","RecommendationsList","recommendation","RecommendationsLargeLayout","personalizedRecommendations","loadingCoursesPlaceholders","RecommendationsSmallLayout","RecommendationsPage","isExtraSmall","useMediaQuery","algoliaRecommendations","trackRecommendationsViewed","recommendedProducts","viewedProductsList","getProductMapping","products","handleSkipRecommendationPage","Container","trackSkipButtonClicked","library","add","faApple","faFacebook","faGoogle","faMicrosoft","MainApp","AppProvider","rel","FAVICON_URL","Routes","Route","element","subscribe","APP_READY","ReactDOM","getElementById","APP_INIT_ERROR","ErrorPage","initialize","mergeConfig","configuration"],"sourceRoot":""}