{"version":3,"file":"app.369c7d438f51429a0056.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/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/register/data/actions.js","webpack://@edx/frontend-app-authn/./src/common-components/data/service.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/./public/assets/passwordicon.png","webpack://@edx/frontend-app-authn/./src/common-components/PasswordField.jsx","webpack://@edx/frontend-app-authn/./src/base-component/messages.jsx","webpack://@edx/frontend-app-authn/./src/base-component/AuthLargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/AuthMediumLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/AuthSmallLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/LargeLayout.jsx","webpack://@edx/frontend-app-authn/./src/base-component/BaseComponent.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/./public/assets/carerhaLogoWhite.png","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/./public/assets/usernameicon.png","webpack://@edx/frontend-app-authn/./src/login/LoginPage.jsx","webpack://@edx/frontend-app-authn/./src/reset-password/data/actions.js","webpack://@edx/frontend-app-authn/./src/reset-password/data/constants.js","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/./public/assets/Rectangle 6040.png","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/field-renderer/FieldRenderer.jsx","webpack://@edx/frontend-app-authn/./src/register/data/constants.js","webpack://@edx/frontend-app-authn/./src/register/data/utils.js","webpack://@edx/frontend-app-authn/./src/register/messages.jsx","webpack://@edx/frontend-app-authn/./src/register/registrationFields/EmailField.jsx","webpack://@edx/frontend-app-authn/./src/register/registrationFields/UsernameField.jsx","webpack://@edx/frontend-app-authn/./src/register/registrationFields/CountryField.jsx","webpack://@edx/frontend-app-authn/./src/register/registrationFields/HonorCode.jsx","webpack://@edx/frontend-app-authn/./src/register/registrationFields/TermsOfService.jsx","webpack://@edx/frontend-app-authn/./src/register/ConfigurableRegistrationForm.jsx","webpack://@edx/frontend-app-authn/./public/assets/full name icon.png","webpack://@edx/frontend-app-authn/./public/assets/emailicon.png","webpack://@edx/frontend-app-authn/./src/register/data/selectors.js","webpack://@edx/frontend-app-authn/./src/register/RegistrationFailure.jsx","webpack://@edx/frontend-app-authn/./src/register/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/common-components/Logistration.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/forgot-password/ForgotPasswordAlert.jsx","webpack://@edx/frontend-app-authn/./src/forgot-password/ForgotPasswordPage.jsx","webpack://@edx/frontend-app-authn/./public/assets/password.png","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/data/optimizely.js","webpack://@edx/frontend-app-authn/./src/recommendations/optimizelyExperiment.js","webpack://@edx/frontend-app-authn/./src/recommendations/track.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/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/data/reducers.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/recommendations/data/constants.js","webpack://@edx/frontend-app-authn/./src/recommendations/data/service.js","webpack://@edx/frontend-app-authn/./src/recommendations/data/utils.js","webpack://@edx/frontend-app-authn/./src/recommendations/messages.js","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationCard.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationsList.jsx","webpack://@edx/frontend-app-authn/./src/recommendations/RecommendationsPage.jsx","webpack://@edx/frontend-app-authn/./public/assets/carerha-logo-light.png","webpack://@edx/frontend-app-authn/./public/assets/carbon_course.png","webpack://@edx/frontend-app-authn/./public/assets/home_3_line.png","webpack://@edx/frontend-app-authn/./public/assets/home_3_line (1).png","webpack://@edx/frontend-app-authn/./public/assets/home_3_line (2).png","webpack://@edx/frontend-app-authn/./public/assets/carbon_events.png","webpack://@edx/frontend-app-authn/./src/Navbar/MobileNavbar.jsx","webpack://@edx/frontend-app-authn/./src/Navbar/Navbar.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","webpack://@edx/frontend-app-authn/./node_modules/@edx/paragon/dist/Card/fallback-default.png"],"sourcesContent":["const configuration = {\n // Cookies related configs\n SESSION_COOKIE_DOMAIN: process.env.SESSION_COOKIE_DOMAIN,\n REGISTER_CONVERSION_COOKIE_NAME: process.env.REGISTER_CONVERSION_COOKIE_NAME || null,\n USER_SURVEY_COOKIE_NAME: process.env.USER_SURVEY_COOKIE_NAME || null,\n // Features\n DISABLE_ENTERPRISE_LOGIN: process.env.DISABLE_ENTERPRISE_LOGIN || '',\n ENABLE_COOKIE_POLICY_BANNER: process.env.ENABLE_COOKIE_POLICY_BANNER || false,\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_PERSONALIZED_RECOMMENDATIONS: process.env.ENABLE_PERSONALIZED_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 PRIVACY_POLICY: process.env.PRIVACY_POLICY || null,\n TOS_AND_HONOR_CODE: process.env.TOS_AND_HONOR_CODE || null,\n TOS_LINK: process.env.TOS_LINK || null,\n // Miscellaneous\n GENERAL_RECOMMENDATIONS: process.env.GENERAL_RECOMMENDATIONS || '[]',\n INFO_EMAIL: process.env.INFO_EMAIL || '',\n ZENDESK_KEY: process.env.ZENDESK_KEY,\n ZENDESK_LOGO_URL: process.env.ZENDESK_LOGO_URL,\n};\n\nexport default configuration;\n","import arMessages from './messages/ar.json';\nimport caMessages from './messages/ca.json';\n// no need to import en messages-- they are in the defaultMessage field\nimport dedeMessages from './messages/de_DE.json';\nimport es419Messages from './messages/es_419.json';\nimport frMessages from './messages/fr.json';\nimport heMessages from './messages/he.json';\nimport hiMessages from './messages/hi.json';\nimport idMessages from './messages/id.json';\nimport ititMessages from './messages/it_IT.json';\nimport kokrMessages from './messages/ko_kr.json';\nimport plMessages from './messages/pl.json';\nimport ptbrMessages from './messages/pt_br.json';\nimport ptptMessages from './messages/pt_PT.json';\nimport ruMessages from './messages/ru.json';\nimport thMessages from './messages/th.json';\nimport ukMessages from './messages/uk.json';\nimport zhcnMessages from './messages/zh_CN.json';\n\nconst messages = {\n ar: arMessages,\n es: es419Messages, // Prospectus uses es language code for spanish, added `es` option and pointed to es-419 strings.\n 'es-419': es419Messages,\n fr: frMessages,\n 'zh-cn': zhcnMessages,\n 'it-it': ititMessages,\n 'pt-pt': ptptMessages,\n 'de-de': dedeMessages,\n ca: caMessages,\n he: heMessages,\n id: idMessages,\n 'ko-kr': kokrMessages,\n pl: plMessages,\n 'pt-br': ptbrMessages,\n ru: ruMessages,\n th: thMessages,\n uk: ukMessages,\n hi: hiMessages,\n};\n\nexport default messages;\n","// URL Paths\nexport const LOGIN_PAGE = '/login';\nexport const REGISTER_PAGE = '/register';\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/';\n// export const PASSWORD_RESET_CONFIRM = '/password_reset_confirm';\n\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';\n\n// Regex\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}\\\\]$';\nexport const LETTER_REGEX = /[a-zA-Z]/;\nexport const NUMBER_REGEX = /\\d/;\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\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', 'save_for_later', 'register_for_free', 'track', 'is_account_recovery'];\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","/**\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 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\nexport default function setSurveyCookie(surveyType) {\n const cookieName = getConfig().USER_SURVEY_COOKIE_NAME;\n if (cookieName) {\n const signupTimestamp = (new Date()).getTime();\n // set expiry to exactly 24 hours from now\n const cookieExpiry = new Date(signupTimestamp + 1 * 864e5);\n setCookie(cookieName, surveyType, cookieExpiry);\n }\n}\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport PropTypes from 'prop-types';\nimport { Redirect } from 'react-router-dom';\n\nimport { AUTHN_PROGRESSIVE_PROFILING, RECOMMENDATIONS } from '../data/constants';\nimport { setCookie } from '../data/utils';\n\nconst RedirectLogistration = (props) => {\n const {\n finishAuthUrl,\n redirectUrl,\n redirectToProgressiveProfilingPage,\n success,\n optionalFields,\n redirectToRecommendationsPage,\n educationLevel,\n userId,\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 // finalRedirectUrl = \"https://apps.carerha.com/learning/home\";\n } else {\n finalRedirectUrl = redirectUrl;\n // finalRedirectUrl = \"https://apps.carerha.com/learning/home\";\n // local\n // \"http://apps.local.overhang.io:2000/learning/all-courses\"\n // server\n // \"https://apps.carerha.com/learning/home\"\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 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 educationLevel: null,\n finishAuthUrl: null,\n success: false,\n redirectUrl: '',\n redirectToProgressiveProfilingPage: false,\n optionalFields: {},\n redirectToRecommendationsPage: false,\n userId: null,\n};\n\nRedirectLogistration.propTypes = {\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};\n\nexport default RedirectLogistration;\n","import React, { useEffect, useState } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { fetchAuthenticatedUser, getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { Route } from 'react-router-dom';\n\nimport { DEFAULT_REDIRECT_URL } 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 = (props) => {\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 ;\n }\n\n return null;\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 'phone.validation.message': {\n id: 'phone.validation.message',\n defaultMessage: 'Invalid phone number',\n description: 'Heading of the institutions list',\n },\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 { faSignInAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\n\nimport { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';\nimport messages from './messages';\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 \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 { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\nimport messages from './messages';\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 { COMPLETE_STATE, PENDING_STATE } from '../../data/constants';\nimport { THIRD_PARTY_AUTH_CONTEXT, THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG } from './actions';\n\nexport const defaultState = {\n fieldDescriptions: {},\n optionalFields: {},\n thirdPartyAuthApiStatus: null,\n thirdPartyAuthContext: {\n currentProvider: null,\n finishAuthUrl: null,\n countryCode: null,\n providers: [],\n secondaryProviders: [],\n pipelineUserDetails: null,\n errorMessage: 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: COMPLETE_STATE,\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 { 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 REGISTERATION_CLEAR_BACKEND_ERROR = 'REGISTERATION_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 = (redirectUrl, success) => ({\n type: REGISTER_NEW_USER.SUCCESS,\n payload: { 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 clearRegistertionBackendError = (fieldName) => ({\n type: REGISTERATION_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 { 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 || data.registration_fields,\n optionalFields: data.optionalFields || data.optional_fields,\n thirdPartyAuthContext: data.contextData || data.context_data,\n };\n}\n","import { logError } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport { setCountryFromThirdPartyAuthContext } from '../../register/data/actions';\nimport {\n getThirdPartyAuthContextBegin,\n getThirdPartyAuthContextFailure,\n getThirdPartyAuthContextSuccess,\n THIRD_PARTY_AUTH_CONTEXT,\n} from './actions';\nimport {\n getThirdPartyAuthContext,\n} from './service';\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';\nimport { InputGroup } from 'react-bootstrap';\n\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 {/*
\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","export default __webpack_public_path__ + \"d614fa367bf7416ec92ec79cab865450.png\";","import React, { useState } from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form, Icon, IconButton, OverlayTrigger, Tooltip, useToggle,\n} from '@edx/paragon';\nimport {\n Check, Lock, Remove, Visibility, VisibilityOff,\n} from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';\nimport messages from './messages';\nimport passwordIcon from '../../public/assets/passwordicon.png'\nconst PasswordField = (props) => {\n const { formatMessage } = useIntl();\n const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleBlur = (e) => {\n if (props.handleBlur) { props.handleBlur(e); }\n setShowTooltip(props.showRequirements && false);\n };\n\n const handleFocus = (e) => {\n if (props.handleFocus) {\n props.handleFocus(e);\n }\n setTimeout(() => setShowTooltip(props.showRequirements && true), 150);\n };\n\n const HideButton = (\n \n );\n\n const ShowButton = (\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 passwordicon\n\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 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 name: PropTypes.string.isRequired,\n showRequirements: PropTypes.bool,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n};\n\nexport default PasswordField;\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 // authenticated user base component text\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 '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});\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 AuthLargeLayout = ({ 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\nAuthLargeLayout.propTypes = {\n username: PropTypes.string.isRequired,\n};\n\nexport default AuthLargeLayout;\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 AuthMediumLayout = ({ 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\nAuthMediumLayout.propTypes = {\n username: PropTypes.string.isRequired,\n};\n\nexport default AuthMediumLayout;\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 AuthSmallLayout = ({ 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\nAuthSmallLayout.propTypes = {\n username: PropTypes.string.isRequired,\n};\n\nexport default AuthSmallLayout;\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 {/* background */}\n
\n );\n};\n\nexport default LargeLayout;\n","import React from 'react';\n\nimport CookiePolicyBanner from '@edx/frontend-component-cookie-policy-banner';\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { getLocale } from '@edx/frontend-platform/i18n';\nimport { breakpoints } from '@edx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\n\nimport AuthLargeLayout from './AuthLargeLayout';\nimport AuthMediumLayout from './AuthMediumLayout';\nimport AuthSmallLayout from './AuthSmallLayout';\nimport LargeLayout from './LargeLayout';\nimport MediumLayout from './MediumLayout';\nimport SmallLayout from './SmallLayout';\nimport { useLocation } from 'react-router-dom'\n\n\nconst BaseComponent = ({ children, showWelcomeBanner }) => {\n const authenticatedUser = showWelcomeBanner ? getAuthenticatedUser() : null;\n const username = authenticatedUser ? authenticatedUser.username : null;\n const location = useLocation();\n console.log(location.pathname, \"path\");\n\n return (\n <>\n {getConfig().ENABLE_COOKIE_POLICY_BANNER ? : null}\n
\n
\n {/* \n {authenticatedUser ? : }\n */}\n {/* \n {authenticatedUser ? : }\n */}\n \n {authenticatedUser ? : }\n \n\n
\n {children}\n
\n
\n \n );\n};\n\nBaseComponent.defaultProps = {\n showWelcomeBanner: false,\n};\n\nBaseComponent.propTypes = {\n children: PropTypes.node.isRequired,\n showWelcomeBanner: PropTypes.bool,\n};\n\nexport default BaseComponent;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Button, Form,\n} from '@edx/paragon';\nimport { faSignInAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\n\nimport { LOGIN_PAGE, SUPPORTED_ICON_CLASSES } from '../data/constants';\nimport messages from './messages';\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 \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","export default __webpack_public_path__ + \"b983b7696c126d450280530545b59fec.png\";","// 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 'phone.validation.message': {\n id: 'phone.validation.message',\n defaultMessage: 'Invalid phone number',\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 3 characters.',\n description: 'Validation message that appears when username or email address is less than 3 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, { 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, Redirect } from 'react-router-dom';\n\nimport { DEFAULT_REDIRECT_URL, RESET_PAGE } from '../data/constants';\nimport { updatePathWithQueryParams } from '../data/utils';\nimport useMobileResponsive from '../data/utils/useMobileResponsive';\nimport messages from './messages';\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\n if (redirectToResetPasswordPage) {\n return ;\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, { useEffect, useState } 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';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\n\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 const [showAlert, setShowAlert] = useState(true);\n\n const handleClose = () => {\n setShowAlert(false);\n };\n\n useEffect(() => {\n setShowAlert(true);\n }, [props.loginError]);\n\n return (\n <>\n {showAlert && (\n \n \n {formatMessage(messages['login.failure.header.title'])}\n {errorList}\n )}\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","export default __webpack_public_path__ + \"064de2733dde1f64bbb49d2ae8f2ce2f.png\";","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, Lock, Person } 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 {\n FormGroup, InstitutionLogistration, PasswordField, RedirectLogistration,\n RenderInstitutionButton, SocialAuthProviders, ThirdPartyAuthAlert,\n} from '../common-components';\n\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 setSurveyCookie,\n updatePathWithQueryParams,\n windowScrollTo,\n} from '../data/utils';\nimport ResetPasswordSuccess from '../reset-password/ResetPasswordSuccess';\nimport logo from '../../public/assets/carerhaLogoWhite.png'\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 usernameIcon from '../../public/assets/usernameicon.png'\n\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 < 3) {\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 if (this.props.loginResult.success) {\n setSurveyCookie('login');\n\n // Fire optimizely events\n window.optimizely = window.optimizely || [];\n window.optimizely.push({\n type: 'event',\n eventName: 'authn-login-coversion',\n });\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 \"logo\"\n

Login With

\n
\n \n \n
\n \n \n Log In With Google\n\n \n
\n \n \n
\n \n \n Log In With Facbook\n\n \n
\n \n
\n
\n
\n

Or

\n
\n
\n
\n
\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 placeholder=\"hannah.green@test.com\"\n leadingElement={
\n usernameicon\n
}\n />\n
\n
\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 placeholder=\"Password123@\"\n />\n\n\n
\n \n {intl.formatMessage(messages['forgot.password'])}\n \n e.preventDefault()}\n />\n\n {this.renderThirdPartyAuth(providers, secondaryProviders, currentProvider, thirdPartyAuthApiStatus, intl)}\n \n
\n

Don’t have an account ?\n \n Signup\n \n

\n\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 { 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","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 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 { 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","export default __webpack_public_path__ + \"0d8f20375f1ebecece4d8bf1c8191364.png\";","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 { Redirect } from 'react-router-dom';\n\nimport { BaseComponent } from '../base-component';\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';\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 Rectangle from '../../public/assets/Rectangle 6040.png'\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 [key, setKey] = useState('');\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 let { name, value } = event.target;\n\n // Do not validate when focus out from 'newPassword' and focus on 'passwordValidation' icon\n // for better user experience.\n if (event.relatedTarget\n && event.relatedTarget.name === 'password'\n && name === 'newPassword'\n ) {\n return;\n }\n if (name === 'password') {\n name = 'newPassword';\n value = newPassword;\n }\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 const { token } = props.match.params;\n if (token) {\n props.validateToken(token);\n return ;\n }\n } else if (props.status === PASSWORD_RESET_ERROR) {\n return ;\n } else if (props.status === 'success') {\n return ;\n } else {\n return (\n\n \n
\n {/*
\n

Important Information

\n

\n Please read the information below.\n

\n
    \n
  • Do not reveal your password to anybody
  • \n
  • Do not reuse passwords
  • \n
  • Use Alphanumeric passwords
  • \n
\n
*/}\n\n
\n
\n \n \n {formatMessage(messages['reset.password.page.title'], { siteName: getConfig().SITE_NAME })}\n \n \n {/* setKey(k)}>\n \n */}\n {key && (\n \n )}\n\n\n
\n
\n \n

New Password

\n

Set the new password for your account so you can login and access all featuress.

\n
\n
\n\n\n setNewPassword(e.target.value)}\n handleBlur={handleOnBlur}\n handleFocus={handleOnFocus}\n errorMessage={formErrors.newPassword}\n // floatingLabel={formatMessage(messages['new.password.label'])}\n placeholder=\"New Password\"\n\n />\n
\n
\n \n
\n
\n handleSubmit(e)}\n onMouseDown={(e) => e.preventDefault()}\n />\n
\n\n
\n
\n
\n
\n
\n );\n }\n return null;\n};\n\nResetPasswordPage.defaultProps = {\n status: null,\n token: null,\n match: null,\n errorMsg: null,\n};\n\nResetPasswordPage.propTypes = {\n resetPassword: PropTypes.func.isRequired,\n validateToken: PropTypes.func.isRequired,\n token: PropTypes.string,\n match: PropTypes.shape({\n params: PropTypes.shape({\n token: PropTypes.string,\n }),\n }),\n status: PropTypes.string,\n errorMsg: PropTypes.string,\n};\n\nexport default connect(\n resetPasswordResultSelector,\n {\n resetPassword,\n validateToken,\n },\n)(ResetPasswordPage);","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 { DEFAULT_STATE, PENDING_STATE } from '../../data/constants';\nimport { RESET_PASSWORD } from '../../reset-password';\nimport { LOGIN_PERSIST_FORM_DATA, LOGIN_REMOVE_PASSWORD_RESET_BANNER, LOGIN_REQUEST } from './actions';\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 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","// 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\nexport const YEAR_OF_BIRTH_OPTIONS = (() => {\n const currentYear = new Date().getFullYear();\n const years = [];\n let startYear = currentYear - 120;\n while (startYear < currentYear) {\n startYear += 1;\n\n years.push({ value: startYear.toString(), label: startYear });\n }\n return years.reverse();\n})();\n\nexport const EDUCATION_LEVELS = [\n '',\n 'p',\n 'm',\n 'b',\n 'a',\n 'hs',\n 'jhs',\n 'el',\n 'none',\n 'other',\n];\n\nexport const GENDER_OPTIONS = ['', 'f', 'm', 'o'];\n\nexport 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\nexport const COUNTRY_CODE_KEY = 'code';\nexport const COUNTRY_DISPLAY_KEY = 'name';\n","import { distance } from 'fastest-levenshtein';\n\nimport {\n COMMON_EMAIL_PROVIDERS,\n COUNTRY_CODE_KEY,\n COUNTRY_DISPLAY_KEY,\n DEFAULT_SERVICE_PROVIDER_DOMAINS,\n DEFAULT_TOP_LEVEL_DOMAINS,\n} from './constants';\n\nfunction 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 function 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 function 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\nexport function 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 apply extra space added in country value so we should\n // 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","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 defaultMessage: 'Sign Up',\n\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 // 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 React from 'react';\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 { FormGroup } from '../../common-components';\nimport messages from '../messages';\n\nconst EmailField = (props) => {\n const { formatMessage } = useIntl();\n const {\n emailSuggestion,\n handleSuggestionClick,\n handleOnClose,\n } = props;\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 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 emailSuggestion: {\n suggestion: '',\n type: '',\n },\n errorMessage: '',\n};\n\nEmailField.propTypes = {\n errorMessage: PropTypes.string,\n emailSuggestion: PropTypes.shape({\n suggestion: PropTypes.string,\n type: PropTypes.string,\n }),\n value: PropTypes.string.isRequired,\n handleOnClose: PropTypes.func.isRequired,\n handleSuggestionClick: PropTypes.func.isRequired,\n};\n\nexport default EmailField;\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button, Icon, IconButton } from '@edx/paragon';\nimport { Close } from '@edx/paragon/icons';\nimport PropTypes, { string } from 'prop-types';\n\nimport { FormGroup } from '../../common-components';\nimport messages from '../messages';\n\nconst UsernameField = (props) => {\n const { formatMessage } = useIntl();\n const {\n handleSuggestionClick, handleUsernameSuggestionClose, usernameSuggestions, errorMessage,\n } = props;\n let className = '';\n let suggestedUsernameDiv = null;\n let iconButton = null;\n const suggestedUsernames = () => (\n
\n {formatMessage(messages['registration.username.suggestion.label'])}\n
\n {usernameSuggestions.map((username, index) => (\n handleSuggestionClick(e, 'username', username)}\n >\n {username}\n \n ))}\n
\n {iconButton}\n
\n );\n if (usernameSuggestions.length > 0 && errorMessage && props.value === ' ') {\n className = 'suggested-username-with-error';\n iconButton = handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"suggested-username-close-button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && props.value === ' ') {\n // className = 'username-suggestions d-flex align-items-center';\n className = 'username-suggestions d-none';\n\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 usernameSuggestions: [],\n errorMessage: '',\n autoComplete: null,\n};\n\nUsernameField.propTypes = {\n usernameSuggestions: PropTypes.arrayOf(string),\n handleSuggestionClick: PropTypes.func.isRequired,\n handleUsernameSuggestionClose: 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","import React, { useEffect, useRef, useState } from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Icon, IconButton } from '@edx/paragon';\nimport { ExpandLess, ExpandMore } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { FormGroup } from '../../common-components';\nimport { COUNTRY_CODE_KEY, COUNTRY_DISPLAY_KEY } from '../data/constants';\nimport messages from '../messages';\n\nconst CountryField = (props) => {\n const { countryList, selectedCountry } = props;\n\n const dropdownRef = useRef(null);\n const { formatMessage } = useIntl();\n const [errorMessage, setErrorMessage] = useState(props.errorMessage);\n const [dropDownItems, setDropDownItems] = useState([]);\n const [displayValue, setDisplayValue] = useState('');\n const [trailingIcon, setTrailingIcon] = useState(null);\n\n const onBlurHandler = (event, itemClicked = false, countryName = '') => {\n const { name } = event.target;\n const relatedName = event.relatedTarget ? event.relatedTarget.name : '';\n // For a better user experience, do not validate when focus out from 'country' field\n // and focus on 'countryItem' or 'countryExpand' button.\n if ((relatedName === 'countryItem' || relatedName === 'countryExpand') && name === 'country') {\n return;\n }\n const countryValue = itemClicked ? countryName : displayValue;\n if (props.onBlurHandler) {\n props.onBlurHandler({ target: { name: 'country', value: countryValue } });\n }\n setTrailingIcon();\n setDropDownItems([]);\n };\n\n const getDropdownItems = (countryToFind = null) => {\n let updatedCountryList = countryList;\n if (countryToFind) {\n updatedCountryList = countryList.filter(\n (option) => (option.name.toLowerCase().includes(countryToFind.toLowerCase())),\n );\n }\n\n return updatedCountryList.map((country) => {\n const countryName = country[COUNTRY_DISPLAY_KEY];\n return (\n onBlurHandler(event, true, countryName)}\n /* This event will prevent the blur event to be fired,\n as blur event is having higher priority than click event and restricts the click event.\n */\n onMouseDown={(event) => event.preventDefault()}\n >\n {countryName.length > 30 ? countryName.substring(0, 30).concat('...') : countryName}\n \n );\n });\n };\n\n const onFocusHandler = (event) => {\n const { name, value } = event.target;\n setDropDownItems(getDropdownItems(name === 'country' ? value : displayValue));\n setTrailingIcon();\n setErrorMessage('');\n if (props.onFocusHandler) { props.onFocusHandler(event); }\n };\n\n const onChangeHandler = (event) => {\n const filteredItems = getDropdownItems(event.target.value);\n setDropDownItems(filteredItems);\n setDisplayValue(event.target.value);\n if (props.onChangeHandler) { props.onChangeHandler(event, { countryCode: '', displayValue: event.target.value }); }\n };\n\n const handleOnClickOutside = () => {\n setTrailingIcon();\n setDropDownItems([]);\n };\n\n const handleExpandMore = () => {\n setTrailingIcon();\n setDropDownItems(getDropdownItems());\n };\n\n const handleExpandLess = () => {\n setTrailingIcon();\n setDropDownItems([]);\n };\n\n const ExpandMoreButton = () => (\n {}}\n onClick={handleExpandMore}\n onFocus={() => {}}\n />\n );\n\n const ExpandLessButton = () => (\n {}}\n onClick={handleExpandLess}\n onFocus={() => {}}\n />\n );\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n handleOnClickOutside();\n }\n };\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n useEffect(() => {\n if (!trailingIcon) {\n setTrailingIcon();\n }\n }, [trailingIcon]);\n\n useEffect(() => {\n if (selectedCountry.displayValue) {\n setDisplayValue(selectedCountry.displayValue);\n }\n }, [selectedCountry]);\n\n useEffect(() => {\n setErrorMessage(props.errorMessage);\n }, [props.errorMessage]);\n\n return (\n
\n \n
\n { dropDownItems?.length > 0 ? dropDownItems : null }\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 onBlurHandler: PropTypes.func.isRequired,\n onChangeHandler: 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 } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport { FormFieldRenderer } from '../field-renderer';\nimport { FIELDS } from './data/constants';\nimport { validateCountryField } from './data/utils';\nimport messages from './messages';\nimport { HonorCode, TermsOfService } from './registrationFields';\nimport CountryField from './registrationFields/CountryField';\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 countryList,\n email,\n fieldDescriptions,\n fieldErrors,\n formFields,\n setFieldErrors,\n setFocusedField,\n setFormFields,\n } = props;\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 const handleOnChange = (event, countryValue = null) => {\n const { name, type } = 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 (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 (name === 'country') {\n const countryValidation = validateCountryField(\n value.trim(), countryList, formatMessage(messages['empty.country.field.error']),\n );\n const { countryCode, displayValue } = countryValidation;\n error = countryValidation.error;\n setFormFields(prevState => ({ ...prevState, country: { countryCode, displayValue } }));\n } else if (!value || !value.trim()) {\n error = fieldDescriptions[name].error_message;\n } else if (name === 'confirm_email' && value !== email) {\n error = formatMessage(messages['email.do.not.match']);\n }\n setFocusedField(null);\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: error }));\n };\n\n const handleOnFocus = (event) => {\n const { name } = event.target;\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n // Since we are removing the form errors from the focused field, we will\n // need to rerun the validation for focused field on form submission.\n setFocusedField(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 countryList: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\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 setFocusedField: PropTypes.func.isRequired,\n setFormFields: PropTypes.func.isRequired,\n};\n\nConfigurableRegistrationForm.defaultProps = {\n fieldDescriptions: {},\n};\n\nexport default ConfigurableRegistrationForm;\n","export default __webpack_public_path__ + \"bf0c1fc4db959a14abc30fdc0d88699a.png\";","export default __webpack_public_path__ + \"49f7e15a20fd65f16a2f40288fb4b544.png\";","import { createSelector } from 'reselect';\n\nexport const storeName = 'register';\n\nexport const registerSelector = state => ({ ...state[storeName] });\n\nexport const registrationErrorSelector = createSelector(\n registerSelector,\n register => register.registrationError.errorCode,\n);\n\nexport const validationsSelector = createSelector(\n registerSelector,\n (register) => {\n const { registrationError, validations } = register;\n\n if (validations) {\n return validations.validationDecisions;\n }\n\n if (Object.keys(registrationError).length > 0) {\n const fields = Object.keys(registrationError).filter((fieldName) => !(fieldName in ['errorCode', 'usernameSuggestions']));\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);\n","import React, { useEffect, useState } 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';\nimport CloseIcon from '@mui/icons-material/Close';\n\n\nconst RegistrationFailureMessage = (props) => {\n const [showAlert, setShowAlert] = useState(true);\n\n\n\n\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 const handleClose = () => {\n setShowAlert(false);\n };\n\n useEffect(() => {\n setShowAlert(true);\n console.log('test')\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\n return (\n <>\n\n {showAlert && (\n \n \n {formatMessage(messages['registration.request.failure.header'])}\n

{errorMessage}

\n
\n )}\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 { connect } from 'react-redux';\n\nimport { getConfig, snakeCaseObject } from '@edx/frontend-platform';\nimport { sendPageEvent } from '@edx/frontend-platform/analytics';\nimport {\n getCountryList, getLocale, useIntl,\n} from '@edx/frontend-platform/i18n';\nimport { CheckBox } from '@edx/paragon';\n\nimport {\n FormGroup, InstitutionLogistration, PasswordField, RedirectLogistration, ThirdPartyAuthAlert,\n} from '../common-components';\nimport { getThirdPartyAuthContext } from '../common-components/data/actions';\n\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\n\nimport {\n getAllPossibleQueryParams, getTpaHint, getTpaProvider, setCookie, setSurveyCookie,\n} from '../data/utils';\nimport ConfigurableRegistrationForm from './ConfigurableRegistrationForm';\n\nimport {\n COUNTRY_CODE_KEY,\n COUNTRY_DISPLAY_KEY,\n FIELDS,\n FORM_SUBMISSION_ERROR,\n TPA_AUTHENTICATION_FAILURE,\n} from './data/constants';\n\nimport messages from './messages';\nimport { EmailField, UsernameField } from './registrationFields';\n// import { Group, Mail, Person, Person3 } from '@edx/paragon/icons';\nimport logo from '../../public/assets/carerhaLogoWhite.png'\nimport { Link } from 'react-router-dom';\nimport fullNameIcon from '../../public/assets/full name icon.png'\nimport usernameIcon from '../../public/assets/usernameicon.png'\nimport emailIcon from '../../public/assets/emailicon.png'\n\nimport { Form, Spinner, StatefulButton } from '@edx/paragon';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport Skeleton from 'react-loading-skeleton';\n\n\nimport {\n fieldDescriptionSelector, optionalFieldsSelector, thirdPartyAuthContextSelector,\n} from '../common-components/data/selectors';\nimport {\n COMPLETE_STATE,\n DEFAULT_STATE, INVALID_NAME_REGEX, LETTER_REGEX, NUMBER_REGEX, PENDING_STATE, REGISTER_PAGE, VALID_EMAIL_REGEX,\n} from '../data/constants';\n\nimport {\n backupRegistrationFormBegin,\n clearRegistertionBackendError,\n clearUsernameSuggestions,\n fetchRealtimeValidations,\n registerNewUser,\n setUserPipelineDataLoaded,\n} from './data/actions';\n\nimport { registrationErrorSelector, validationsSelector } from './data/selectors';\nimport {\n getSuggestionForInvalidEmail, validateCountryField, validateEmailAddress,\n} from './data/utils';\nimport RegistrationFailure from './RegistrationFailure';\nimport ThirdPartyAuth from './ThirdPartyAuth';\n\nconst emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\nconst urlRegex = new RegExp(INVALID_NAME_REGEX);\n\nconst RegistrationPage = (props) => {\n const {\n backedUpFormData,\n backendCountryCode,\n backendValidations,\n fieldDescriptions,\n handleInstitutionLogin,\n institutionLogin,\n optionalFields,\n registrationError,\n registrationErrorCode,\n registrationResult,\n shouldBackupState,\n submitState,\n thirdPartyAuthApiStatus,\n thirdPartyAuthContext,\n usernameSuggestions,\n validationApiRateLimited,\n // Actions\n backupFormState,\n setUserPipelineDetailsLoaded,\n getRegistrationDataFromBackend,\n userPipelineDataLoaded,\n validateFromBackend,\n clearBackendError,\n } = props;\n\n const { formatMessage } = useIntl();\n const countryList = useMemo(() => getCountryList(getLocale()), []);\n const queryParams = useMemo(() => getAllPossibleQueryParams(), []);\n const tpaHint = useMemo(() => getTpaHint(), []);\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\n const [formFields, setFormFields] = useState({ ...backedUpFormData.formFields });\n const [configurableFormFields, setConfigurableFormFields] = useState({ ...backedUpFormData.configurableFormFields });\n const [errors, setErrors] = useState({ ...backedUpFormData.errors });\n const [emailSuggestion, setEmailSuggestion] = useState({ ...backedUpFormData.emailSuggestion });\n const [autoSubmitRegisterForm, setAutoSubmitRegisterForm] = useState(false);\n const [errorCode, setErrorCode] = useState({ type: '', count: 0 });\n const [formStartTime, setFormStartTime] = useState(null);\n const [focusedField, setFocusedField] = useState(null);\n\n const {\n providers, currentProvider, secondaryProviders, finishAuthUrl,\n } = thirdPartyAuthContext;\n const platformName = getConfig().SITE_NAME;\n\n /**\n * If auto submitting register form, we will check tos and honor code fields if they exist for feature parity.\n */\n const checkTOSandHonorCodeFields = () => {\n if (Object.keys(fieldDescriptions).includes(FIELDS.HONOR_CODE)) {\n setConfigurableFormFields(prevState => ({\n ...prevState,\n [FIELDS.HONOR_CODE]: true,\n }));\n }\n if (Object.keys(fieldDescriptions).includes(FIELDS.TERMS_OF_SERVICE)) {\n setConfigurableFormFields(prevState => ({\n ...prevState,\n [FIELDS.TERMS_OF_SERVICE]: true,\n }));\n }\n };\n\n /**\n * Set the userPipelineDetails data in formFields for only first time\n */\n useEffect(() => {\n if (!userPipelineDataLoaded && thirdPartyAuthApiStatus === COMPLETE_STATE) {\n const { autoSubmitRegForm, pipelineUserDetails, errorMessage } = thirdPartyAuthContext;\n if (errorMessage) {\n setErrorCode(prevState => ({ type: TPA_AUTHENTICATION_FAILURE, count: prevState.count + 1 }));\n } else if (autoSubmitRegForm) {\n checkTOSandHonorCodeFields();\n setAutoSubmitRegisterForm(true);\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 setUserPipelineDetailsLoaded(true);\n }\n }\n }, [ // eslint-disable-line react-hooks/exhaustive-deps\n thirdPartyAuthContext,\n userPipelineDataLoaded,\n setUserPipelineDetailsLoaded,\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 getRegistrationDataFromBackend(payload);\n setFormStartTime(Date.now());\n }\n }, [formStartTime, getRegistrationDataFromBackend, queryParams, tpaHint]);\n\n /**\n * Backup the registration form in redux when register page is toggled.\n */\n useEffect(() => {\n if (shouldBackupState) {\n backupFormState({\n configurableFormFields: { ...configurableFormFields },\n formFields: { ...formFields },\n emailSuggestion: { ...emailSuggestion },\n errors: { ...errors },\n });\n }\n }, [shouldBackupState, configurableFormFields, formFields, errors, emailSuggestion, backupFormState]);\n\n useEffect(() => {\n if (backendValidations) {\n setErrors(prevErrors => ({ ...prevErrors, ...backendValidations }));\n }\n }, [backendValidations]);\n\n useEffect(() => {\n if (registrationErrorCode) {\n setErrorCode(prevState => ({ type: registrationErrorCode, count: prevState.count + 1 }));\n }\n }, [registrationErrorCode]);\n\n useEffect(() => {\n let countryCode = '';\n let countryDisplayValue = '';\n\n const selectedCountry = countryList.find(\n (country) => (country[COUNTRY_CODE_KEY].toLowerCase() === backendCountryCode.toLowerCase()),\n );\n if (selectedCountry) {\n countryCode = selectedCountry[COUNTRY_CODE_KEY];\n countryDisplayValue = selectedCountry[COUNTRY_DISPLAY_KEY];\n }\n setConfigurableFormFields(prevState => (\n {\n ...prevState,\n country: {\n countryCode, displayValue: countryDisplayValue,\n },\n }\n ));\n }, [backendCountryCode, countryList]);\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 && !formFields.username) {\n setFormFields(prevState => ({ ...prevState, username: ' ' }));\n }\n }, [usernameSuggestions, formFields]);\n\n useEffect(() => {\n if (registrationResult.success) {\n // TODO: Do we still need this cookie?\n setSurveyCookie('register');\n setCookie(getConfig().REGISTER_CONVERSION_COOKIE_NAME, true);\n setCookie('authn-returning-user');\n\n // Fire optimizely events\n window.optimizely = window.optimizely || [];\n window.optimizely.push({\n type: 'event',\n eventName: 'authn-register-conversion',\n });\n\n // Fire GTM event used for integration with impact.com\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'ImpactRegistrationEvent',\n });\n }\n }, [registrationResult]);\n\n const validateInput = (fieldName, value, payload, shouldValidateFromBackend, setError = true) => {\n let fieldError = '';\n let confirmEmailError = ''; // This is to handle the use case where the form contains \"confirm email\" field\n let countryFieldCode = '';\n\n switch (fieldName) {\n case 'name':\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 } else if (value && !payload.username.trim() && shouldValidateFromBackend) {\n validateFromBackend(payload);\n }\n break;\n case 'email':\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 setEmailSuggestion({\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 } else if (shouldValidateFromBackend) {\n validateFromBackend(payload);\n }\n setEmailSuggestion({ ...response });\n\n if (configurableFormFields.confirm_email && value !== configurableFormFields.confirm_email) {\n confirmEmailError = formatMessage(messages['email.do.not.match']);\n }\n }\n }\n break;\n case 'username':\n if (!value || value.length <= 1 || value.length > 30) {\n fieldError = formatMessage(messages['username.validation.message']);\n } else if (!value.match(/^[a-zA-Z0-9_-]*$/i)) {\n fieldError = formatMessage(messages['username.format.validation.message']);\n } else if (shouldValidateFromBackend) {\n validateFromBackend(payload);\n }\n break;\n case 'password':\n if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n fieldError = formatMessage(messages['password.validation.message']);\n } else if (shouldValidateFromBackend) {\n validateFromBackend(payload);\n }\n break;\n case 'country':\n if (flags.showConfigurableEdxFields || flags.showConfigurableRegistrationFields) {\n const {\n countryCode, displayValue, error,\n } = validateCountryField(value.displayValue.trim(), countryList, formatMessage(messages['empty.country.field.error']));\n fieldError = error;\n countryFieldCode = countryCode;\n setConfigurableFormFields(prevState => ({ ...prevState, country: { countryCode, displayValue } }));\n }\n break;\n default:\n if (flags.showConfigurableRegistrationFields) {\n if (!value && fieldDescriptions[fieldName].error_message) {\n fieldError = fieldDescriptions[fieldName].error_message;\n } else if (fieldName === 'confirm_email' && formFields.email && value !== formFields.email) {\n fieldError = formatMessage(messages['email.do.not.match']);\n }\n }\n break;\n }\n if (setError) {\n setErrors(prevErrors => ({\n ...prevErrors,\n confirm_email: flags.showConfigurableRegistrationFields ? confirmEmailError : '',\n [fieldName]: fieldError,\n }));\n }\n return { fieldError, countryFieldCode };\n };\n\n const isFormValid = (payload, focusedFieldError) => {\n const fieldErrors = { ...errors };\n let isValid = !focusedFieldError;\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 (flags.showConfigurableEdxFields) {\n if (!configurableFormFields.country.displayValue) {\n fieldErrors.country = formatMessage(messages['empty.country.field.error']);\n }\n if (fieldErrors.country) {\n isValid = false;\n }\n }\n\n if (flags.showConfigurableRegistrationFields) {\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\n if (focusedField) {\n fieldErrors[focusedField] = focusedFieldError;\n }\n setErrors({ ...fieldErrors });\n return isValid;\n };\n\n const handleSuggestionClick = (event, fieldName, suggestion = '') => {\n event.preventDefault();\n setErrors(prevErrors => ({ ...prevErrors, [fieldName]: '' }));\n switch (fieldName) {\n case 'email':\n setFormFields(prevState => ({ ...prevState, email: emailSuggestion.suggestion }));\n setEmailSuggestion({ suggestion: '', type: '' });\n break;\n case 'username':\n setFormFields(prevState => ({ ...prevState, username: suggestion }));\n props.resetUsernameSuggestions();\n break;\n default:\n break;\n }\n };\n\n const handleEmailSuggestionClosed = () => setEmailSuggestion({ suggestion: '', type: '' });\n\n const handleUsernameSuggestionClosed = () => props.resetUsernameSuggestions();\n\n const handleOnChange = (event) => {\n const { name } = event.target;\n let value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n if (registrationError[name]) {\n clearBackendError(name);\n setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n }\n if (name === 'username') {\n if (value.length > 30) {\n return;\n }\n if (value.startsWith(' ')) {\n value = value.trim();\n }\n }\n\n setFormFields(prevState => ({ ...prevState, [name]: value }));\n };\n\n const handleOnBlur = (event) => {\n const { name, value } = event.target;\n const payload = {\n name: formFields.name,\n email: formFields.email,\n username: formFields.username,\n password: formFields.password,\n form_field_key: name,\n };\n\n setFocusedField(null);\n validateInput(name, name === 'password' ? formFields.password : value, payload, !validationApiRateLimited);\n };\n\n const handleOnFocus = (event) => {\n const { name, value } = event.target;\n setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n clearBackendError(name);\n // Since we are removing the form errors from the focused field, we will\n // need to rerun the validation for focused field on form submission.\n setFocusedField(name);\n\n if (name === 'username') {\n props.resetUsernameSuggestions();\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 (value === ' ') {\n setFormFields(prevState => ({ ...prevState, [name]: '' }));\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 const { fieldError: focusedFieldError, countryFieldCode } = focusedField ? (\n validateInput(\n focusedField,\n (focusedField in fieldDescriptions || focusedField === 'country') ? (\n configurableFormFields[focusedField]\n ) : formFields[focusedField],\n payload,\n false,\n false,\n )\n ) : '';\n\n if (!isFormValid(payload, focusedFieldError)) {\n setErrorCode(prevState => ({ type: FORM_SUBMISSION_ERROR, count: prevState.count + 1 }));\n return;\n }\n\n Object.keys(configurableFormFields).forEach((fieldName) => {\n if (fieldName === 'country') {\n payload[fieldName] = focusedField === 'country' ? countryFieldCode : 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 (!flags.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 props.registerNewUser(payload);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n registerUser();\n };\n\n useEffect(() => {\n if (autoSubmitRegisterForm && userPipelineDataLoaded) {\n registerUser();\n }\n }, [autoSubmitRegisterForm, 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 {autoSubmitRegisterForm && !errorCode.type ? (\n
\n \n
\n ) : (\n
\n \n \n
\n \"logo\"\n

Sign Up With

\n
\n \n \n
\n \n \n Sign Up With Google\n\n \n
\n \n \n
\n \n \n Sign Up With Facbook\n\n \n
\n \n
\n
\n
\n

Or

\n
\n
\n

Create Account

\n {/* */}\n {/* < Person2Icon />Candidate }\n > */}\n
\n \n\n \n {/* */}\n fullnameicon\n
}\n />\n \n handleSuggestionClick(e, 'email')}\n handleOnClose={handleEmailSuggestionClosed}\n emailSuggestion={emailSuggestion}\n errorMessage={errors.email}\n // helpText={[formatMessage(messages['help.text.email'])]}\n // floatingLabel={formatMessage(messages['registration.email.label'])}\n placeholder=\"hannah.green@test.com\"\n leadingElement={
\n usernameicon\n
}\n />\n \n \n usernameicon\n
}\n />\n {/* */}\n {/* */}\n {!currentProvider && (\n <>\n \n \n \n\n )}\n {/*
\n\n \n setConfirmPassword(e.target.value)}\n handleBlur={handleOnBlur}\n handleFocus={handleOnFocus}\n errorMessage={errors.confirmPassword}\n placeholder=\"Confirm Password\"\n />\n
*/}\n \n\n \n e.preventDefault()}\n />\n\n
\n

Already have an account ?\n \n Log in\n \n

\n\n
\n \n \n {/* */}\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\nconst mapStateToProps = state => {\n const registerPageState = state.register;\n return {\n backedUpFormData: registerPageState.registrationFormData,\n backendCountryCode: registerPageState.backendCountryCode,\n backendValidations: validationsSelector(state),\n fieldDescriptions: fieldDescriptionSelector(state),\n optionalFields: optionalFieldsSelector(state),\n registrationError: registerPageState.registrationError,\n registrationErrorCode: registrationErrorSelector(state),\n registrationResult: registerPageState.registrationResult,\n shouldBackupState: registerPageState.shouldBackupState,\n userPipelineDataLoaded: registerPageState.userPipelineDataLoaded,\n submitState: registerPageState.submitState,\n thirdPartyAuthApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n thirdPartyAuthContext: thirdPartyAuthContextSelector(state),\n validationApiRateLimited: registerPageState.validationApiRateLimited,\n usernameSuggestions: registerPageState.usernameSuggestions,\n };\n};\n\nRegistrationPage.propTypes = {\n backedUpFormData: PropTypes.shape({\n configurableFormFields: PropTypes.shape({}),\n formFields: PropTypes.shape({}),\n errors: PropTypes.shape({}),\n emailSuggestion: PropTypes.shape({}),\n }),\n backendCountryCode: PropTypes.string,\n backendValidations: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n username: PropTypes.string,\n password: PropTypes.string,\n }),\n fieldDescriptions: PropTypes.shape({}),\n institutionLogin: PropTypes.bool.isRequired,\n optionalFields: PropTypes.shape({}),\n registrationError: PropTypes.shape({}),\n registrationErrorCode: PropTypes.string,\n registrationResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n success: PropTypes.bool,\n }),\n shouldBackupState: PropTypes.bool,\n submitState: PropTypes.string,\n thirdPartyAuthApiStatus: PropTypes.string,\n thirdPartyAuthContext: PropTypes.shape({\n autoSubmitRegForm: PropTypes.bool,\n countryCode: PropTypes.string,\n currentProvider: PropTypes.string,\n errorMessage: PropTypes.string,\n finishAuthUrl: PropTypes.string,\n pipelineUserDetails: PropTypes.shape({\n email: PropTypes.string,\n name: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n username: PropTypes.string,\n }),\n platformName: PropTypes.string,\n providers: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n secondaryProviders: PropTypes.arrayOf(\n PropTypes.shape({}),\n ),\n }),\n usernameSuggestions: PropTypes.arrayOf(PropTypes.string),\n userPipelineDataLoaded: PropTypes.bool,\n validationApiRateLimited: PropTypes.bool,\n // Actions\n backupFormState: PropTypes.func.isRequired,\n clearBackendError: PropTypes.func.isRequired,\n getRegistrationDataFromBackend: PropTypes.func.isRequired,\n handleInstitutionLogin: PropTypes.func.isRequired,\n registerNewUser: PropTypes.func.isRequired,\n resetUsernameSuggestions: PropTypes.func.isRequired,\n setUserPipelineDetailsLoaded: PropTypes.func.isRequired,\n validateFromBackend: PropTypes.func.isRequired,\n};\n\nRegistrationPage.defaultProps = {\n backedUpFormData: {\n configurableFormFields: {\n marketingEmailsOptIn: true,\n },\n formFields: {\n name: '', email: '', username: '', password: '',\n },\n errors: {\n name: '', email: '', username: '', password: '',\n },\n emailSuggestion: {\n suggestion: '', type: '',\n },\n },\n backendCountryCode: '',\n backendValidations: null,\n fieldDescriptions: {},\n optionalFields: {},\n registrationError: {},\n registrationErrorCode: '',\n registrationResult: null,\n shouldBackupState: false,\n submitState: DEFAULT_STATE,\n thirdPartyAuthApiStatus: PENDING_STATE,\n thirdPartyAuthContext: {\n autoSubmitRegForm: false,\n countryCode: null,\n currentProvider: null,\n errorMessage: null,\n finishAuthUrl: null,\n pipelineUserDetails: null,\n providers: [],\n secondaryProviders: [],\n },\n usernameSuggestions: [],\n userPipelineDataLoaded: false,\n validationApiRateLimited: false,\n};\n\nexport default connect(\n mapStateToProps,\n {\n backupFormState: backupRegistrationFormBegin,\n clearBackendError: clearRegistertionBackendError,\n getRegistrationDataFromBackend: getThirdPartyAuthContext,\n resetUsernameSuggestions: clearUsernameSuggestions,\n validateFromBackend: fetchRealtimeValidations,\n registerNewUser,\n setUserPipelineDetailsLoaded: setUserPipelineDataLoaded,\n },\n)(RegistrationPage);\n\n\n// // old component try 1\n\n// import React, {\n// useEffect, useMemo, useState,\n// } from 'react';\n// import { connect } from 'react-redux';\n\n// import { getConfig, snakeCaseObject } from '@edx/frontend-platform';\n// import { sendPageEvent } from '@edx/frontend-platform/analytics';\n// import {\n// getCountryList, getLocale, useIntl,\n// } from '@edx/frontend-platform/i18n';\n// import { Form, Spinner, StatefulButton } from '@edx/paragon';\n// import PropTypes from 'prop-types';\n// import { Helmet } from 'react-helmet';\n// import Skeleton from 'react-loading-skeleton';\n\n// import {\n// FormGroup, InstitutionLogistration, PasswordField, RedirectLogistration, ThirdPartyAuthAlert,\n// } from '../common-components';\n// import { getThirdPartyAuthContext } from '../common-components/data/actions';\n// import {\n// fieldDescriptionSelector, optionalFieldsSelector, thirdPartyAuthContextSelector,\n// } from '../common-components/data/selectors';\n// import EnterpriseSSO from '../common-components/EnterpriseSSO';\n// import {\n// COMPLETE_STATE,\n// DEFAULT_STATE, INVALID_NAME_REGEX, LETTER_REGEX, NUMBER_REGEX, PENDING_STATE, REGISTER_PAGE, VALID_EMAIL_REGEX,\n// } from '../data/constants';\n// import {\n// getAllPossibleQueryParams, getTpaHint, getTpaProvider, setCookie, setSurveyCookie,\n// } from '../data/utils';\n// import ConfigurableRegistrationForm from './ConfigurableRegistrationForm';\n// import {\n// backupRegistrationFormBegin,\n// clearRegistertionBackendError,\n// clearUsernameSuggestions,\n// fetchRealtimeValidations,\n// registerNewUser,\n// setUserPipelineDataLoaded,\n// } from './data/actions';\n// import {\n// COUNTRY_CODE_KEY,\n// COUNTRY_DISPLAY_KEY,\n// FIELDS,\n// FORM_SUBMISSION_ERROR,\n// TPA_AUTHENTICATION_FAILURE,\n// } from './data/constants';\n// import { registrationErrorSelector, validationsSelector } from './data/selectors';\n// import {\n// getSuggestionForInvalidEmail, validateCountryField, validateEmailAddress,\n// } from './data/utils';\n// import messages from './messages';\n// import RegistrationFailure from './RegistrationFailure';\n// import { EmailField, UsernameField } from './registrationFields';\n// import ThirdPartyAuth from './ThirdPartyAuth';\n\n// const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n// const urlRegex = new RegExp(INVALID_NAME_REGEX);\n\n// const RegistrationPage = (props) => {\n// const {\n// backedUpFormData,\n// backendCountryCode,\n// backendValidations,\n// fieldDescriptions,\n// handleInstitutionLogin,\n// institutionLogin,\n// optionalFields,\n// registrationError,\n// registrationErrorCode,\n// registrationResult,\n// shouldBackupState,\n// submitState,\n// thirdPartyAuthApiStatus,\n// thirdPartyAuthContext,\n// usernameSuggestions,\n// validationApiRateLimited,\n// // Actions\n// backupFormState,\n// setUserPipelineDetailsLoaded,\n// getRegistrationDataFromBackend,\n// userPipelineDataLoaded,\n// validateFromBackend,\n// clearBackendError,\n// } = props;\n\n// const { formatMessage } = useIntl();\n// const countryList = useMemo(() => getCountryList(getLocale()), []);\n// const queryParams = useMemo(() => getAllPossibleQueryParams(), []);\n// const tpaHint = useMemo(() => getTpaHint(), []);\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\n// const [formFields, setFormFields] = useState({ ...backedUpFormData.formFields });\n// const [configurableFormFields, setConfigurableFormFields] = useState({ ...backedUpFormData.configurableFormFields });\n// const [errors, setErrors] = useState({ ...backedUpFormData.errors });\n// const [emailSuggestion, setEmailSuggestion] = useState({ ...backedUpFormData.emailSuggestion });\n// const [autoSubmitRegisterForm, setAutoSubmitRegisterForm] = useState(false);\n// const [errorCode, setErrorCode] = useState({ type: '', count: 0 });\n// const [formStartTime, setFormStartTime] = useState(null);\n// const [focusedField, setFocusedField] = useState(null);\n\n// const {\n// providers, currentProvider, secondaryProviders, finishAuthUrl,\n// } = thirdPartyAuthContext;\n// const platformName = getConfig().SITE_NAME;\n\n// /**\n// * If auto submitting register form, we will check tos and honor code fields if they exist for feature parity.\n// */\n// const checkTOSandHonorCodeFields = () => {\n// if (Object.keys(fieldDescriptions).includes(FIELDS.HONOR_CODE)) {\n// setConfigurableFormFields(prevState => ({\n// ...prevState,\n// [FIELDS.HONOR_CODE]: true,\n// }));\n// }\n// if (Object.keys(fieldDescriptions).includes(FIELDS.TERMS_OF_SERVICE)) {\n// setConfigurableFormFields(prevState => ({\n// ...prevState,\n// [FIELDS.TERMS_OF_SERVICE]: true,\n// }));\n// }\n// };\n\n// /**\n// * Set the userPipelineDetails data in formFields for only first time\n// */\n// useEffect(() => {\n// if (!userPipelineDataLoaded && thirdPartyAuthApiStatus === COMPLETE_STATE) {\n// const { autoSubmitRegForm, pipelineUserDetails, errorMessage } = thirdPartyAuthContext;\n// if (errorMessage) {\n// setErrorCode(prevState => ({ type: TPA_AUTHENTICATION_FAILURE, count: prevState.count + 1 }));\n// } else if (autoSubmitRegForm) {\n// checkTOSandHonorCodeFields();\n// setAutoSubmitRegisterForm(true);\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// setUserPipelineDetailsLoaded(true);\n// }\n// }\n// }, [ // eslint-disable-line react-hooks/exhaustive-deps\n// thirdPartyAuthContext,\n// userPipelineDataLoaded,\n// setUserPipelineDetailsLoaded,\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// getRegistrationDataFromBackend(payload);\n// setFormStartTime(Date.now());\n// }\n// }, [formStartTime, getRegistrationDataFromBackend, queryParams, tpaHint]);\n\n// /**\n// * Backup the registration form in redux when register page is toggled.\n// */\n// useEffect(() => {\n// if (shouldBackupState) {\n// backupFormState({\n// configurableFormFields: { ...configurableFormFields },\n// formFields: { ...formFields },\n// emailSuggestion: { ...emailSuggestion },\n// errors: { ...errors },\n// });\n// }\n// }, [shouldBackupState, configurableFormFields, formFields, errors, emailSuggestion, backupFormState]);\n\n// useEffect(() => {\n// if (backendValidations) {\n// setErrors(prevErrors => ({ ...prevErrors, ...backendValidations }));\n// }\n// }, [backendValidations]);\n\n// useEffect(() => {\n// if (registrationErrorCode) {\n// setErrorCode(prevState => ({ type: registrationErrorCode, count: prevState.count + 1 }));\n// }\n// }, [registrationErrorCode]);\n\n// useEffect(() => {\n// let countryCode = '';\n// let countryDisplayValue = '';\n\n// const selectedCountry = countryList.find(\n// (country) => (country[COUNTRY_CODE_KEY].toLowerCase() === backendCountryCode.toLowerCase()),\n// );\n// if (selectedCountry) {\n// countryCode = selectedCountry[COUNTRY_CODE_KEY];\n// countryDisplayValue = selectedCountry[COUNTRY_DISPLAY_KEY];\n// }\n// setConfigurableFormFields(prevState => (\n// {\n// ...prevState,\n// country: {\n// countryCode, displayValue: countryDisplayValue,\n// },\n// }\n// ));\n// }, [backendCountryCode, countryList]);\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 && !formFields.username) {\n// setFormFields(prevState => ({ ...prevState, username: ' ' }));\n// }\n// }, [usernameSuggestions, formFields]);\n\n// useEffect(() => {\n// if (registrationResult.success) {\n// // TODO: Do we still need this cookie?\n// setSurveyCookie('register');\n// setCookie(getConfig().REGISTER_CONVERSION_COOKIE_NAME, true);\n// setCookie('authn-returning-user');\n\n// // Fire optimizely events\n// window.optimizely = window.optimizely || [];\n// window.optimizely.push({\n// type: 'event',\n// eventName: 'authn-register-conversion',\n// });\n\n// // Fire GTM event used for integration with impact.com\n// window.dataLayer = window.dataLayer || [];\n// window.dataLayer.push({\n// event: 'ImpactRegistrationEvent',\n// });\n// }\n// }, [registrationResult]);\n\n// const validateInput = (fieldName, value, payload, shouldValidateFromBackend, setError = true) => {\n// let fieldError = '';\n// let confirmEmailError = ''; // This is to handle the use case where the form contains \"confirm email\" field\n// let countryFieldCode = '';\n\n// switch (fieldName) {\n// case 'name':\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// } else if (value && !payload.username.trim() && shouldValidateFromBackend) {\n// validateFromBackend(payload);\n// }\n// break;\n// case 'email':\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// setEmailSuggestion({\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// } else if (shouldValidateFromBackend) {\n// validateFromBackend(payload);\n// }\n// setEmailSuggestion({ ...response });\n\n// if (configurableFormFields.confirm_email && value !== configurableFormFields.confirm_email) {\n// confirmEmailError = formatMessage(messages['email.do.not.match']);\n// }\n// }\n// }\n// break;\n// case 'username':\n// if (!value || value.length <= 1 || value.length > 30) {\n// fieldError = formatMessage(messages['username.validation.message']);\n// } else if (!value.match(/^[a-zA-Z0-9_-]*$/i)) {\n// fieldError = formatMessage(messages['username.format.validation.message']);\n// } else if (shouldValidateFromBackend) {\n// validateFromBackend(payload);\n// }\n// break;\n// case 'password':\n// if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n// fieldError = formatMessage(messages['password.validation.message']);\n// } else if (shouldValidateFromBackend) {\n// validateFromBackend(payload);\n// }\n// break;\n// case 'country':\n// if (flags.showConfigurableEdxFields || flags.showConfigurableRegistrationFields) {\n// const {\n// countryCode, displayValue, error,\n// } = validateCountryField(value.displayValue.trim(), countryList, formatMessage(messages['empty.country.field.error']));\n// fieldError = error;\n// countryFieldCode = countryCode;\n// setConfigurableFormFields(prevState => ({ ...prevState, country: { countryCode, displayValue } }));\n// }\n// break;\n// default:\n// if (flags.showConfigurableRegistrationFields) {\n// if (!value && fieldDescriptions[fieldName].error_message) {\n// fieldError = fieldDescriptions[fieldName].error_message;\n// } else if (fieldName === 'confirm_email' && formFields.email && value !== formFields.email) {\n// fieldError = formatMessage(messages['email.do.not.match']);\n// }\n// }\n// break;\n// }\n// if (setError) {\n// setErrors(prevErrors => ({\n// ...prevErrors,\n// confirm_email: flags.showConfigurableRegistrationFields ? confirmEmailError : '',\n// [fieldName]: fieldError,\n// }));\n// }\n// return { fieldError, countryFieldCode };\n// };\n\n// const isFormValid = (payload, focusedFieldError) => {\n// const fieldErrors = { ...errors };\n// let isValid = !focusedFieldError;\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 (flags.showConfigurableEdxFields) {\n// if (!configurableFormFields.country.displayValue) {\n// fieldErrors.country = formatMessage(messages['empty.country.field.error']);\n// }\n// if (fieldErrors.country) {\n// isValid = false;\n// }\n// }\n\n// if (flags.showConfigurableRegistrationFields) {\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\n// if (focusedField) {\n// fieldErrors[focusedField] = focusedFieldError;\n// }\n// setErrors({ ...fieldErrors });\n// return isValid;\n// };\n\n// const handleSuggestionClick = (event, fieldName, suggestion = '') => {\n// event.preventDefault();\n// setErrors(prevErrors => ({ ...prevErrors, [fieldName]: '' }));\n// switch (fieldName) {\n// case 'email':\n// setFormFields(prevState => ({ ...prevState, email: emailSuggestion.suggestion }));\n// setEmailSuggestion({ suggestion: '', type: '' });\n// break;\n// case 'username':\n// setFormFields(prevState => ({ ...prevState, username: suggestion }));\n// props.resetUsernameSuggestions();\n// break;\n// default:\n// break;\n// }\n// };\n\n// const handleEmailSuggestionClosed = () => setEmailSuggestion({ suggestion: '', type: '' });\n\n// const handleUsernameSuggestionClosed = () => props.resetUsernameSuggestions();\n\n// const handleOnChange = (event) => {\n// const { name } = event.target;\n// let value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n// if (registrationError[name]) {\n// clearBackendError(name);\n// setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n// }\n// if (name === 'username') {\n// if (value.length > 30) {\n// return;\n// }\n// if (value.startsWith(' ')) {\n// value = value.trim();\n// }\n// }\n\n// setFormFields(prevState => ({ ...prevState, [name]: value }));\n// };\n\n// const handleOnBlur = (event) => {\n// const { name, value } = event.target;\n// const payload = {\n// name: formFields.name,\n// email: formFields.email,\n// username: formFields.username,\n// password: formFields.password,\n// form_field_key: name,\n// };\n\n// setFocusedField(null);\n// validateInput(name, name === 'password' ? formFields.password : value, payload, !validationApiRateLimited);\n// };\n\n// const handleOnFocus = (event) => {\n// const { name, value } = event.target;\n// setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n// clearBackendError(name);\n// // Since we are removing the form errors from the focused field, we will\n// // need to rerun the validation for focused field on form submission.\n// setFocusedField(name);\n\n// if (name === 'username') {\n// props.resetUsernameSuggestions();\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 (value === ' ') {\n// setFormFields(prevState => ({ ...prevState, [name]: '' }));\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// const { fieldError: focusedFieldError, countryFieldCode } = focusedField ? (\n// validateInput(\n// focusedField,\n// (focusedField in fieldDescriptions || focusedField === 'country') ? (\n// configurableFormFields[focusedField]\n// ) : formFields[focusedField],\n// payload,\n// false,\n// false,\n// )\n// ) : '';\n\n// if (!isFormValid(payload, focusedFieldError)) {\n// setErrorCode(prevState => ({ type: FORM_SUBMISSION_ERROR, count: prevState.count + 1 }));\n// return;\n// }\n\n// Object.keys(configurableFormFields).forEach((fieldName) => {\n// if (fieldName === 'country') {\n// payload[fieldName] = focusedField === 'country' ? countryFieldCode : 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 (!flags.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// props.registerNewUser(payload);\n// };\n\n// const handleSubmit = (e) => {\n// e.preventDefault();\n// registerUser();\n// };\n\n// useEffect(() => {\n// if (autoSubmitRegisterForm && userPipelineDataLoaded) {\n// registerUser();\n// }\n// }, [autoSubmitRegisterForm, 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// {autoSubmitRegisterForm && !errorCode.type ? (\n//
\n// \n//
\n// ) : (\n//
\n// \n// \n//
\n// \n// handleSuggestionClick(e, 'email')}\n// handleOnClose={handleEmailSuggestionClosed}\n// emailSuggestion={emailSuggestion}\n// errorMessage={errors.email}\n// helpText={[formatMessage(messages['help.text.email'])]}\n// floatingLabel={formatMessage(messages['registration.email.label'])}\n// />\n// \n// {!currentProvider && (\n// \n// )}\n// \n// e.preventDefault()}\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\n// const mapStateToProps = state => {\n// const registerPageState = state.register;\n// return {\n// backedUpFormData: registerPageState.registrationFormData,\n// backendCountryCode: registerPageState.backendCountryCode,\n// backendValidations: validationsSelector(state),\n// fieldDescriptions: fieldDescriptionSelector(state),\n// optionalFields: optionalFieldsSelector(state),\n// registrationError: registerPageState.registrationError,\n// registrationErrorCode: registrationErrorSelector(state),\n// registrationResult: registerPageState.registrationResult,\n// shouldBackupState: registerPageState.shouldBackupState,\n// userPipelineDataLoaded: registerPageState.userPipelineDataLoaded,\n// submitState: registerPageState.submitState,\n// thirdPartyAuthApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n// thirdPartyAuthContext: thirdPartyAuthContextSelector(state),\n// validationApiRateLimited: registerPageState.validationApiRateLimited,\n// usernameSuggestions: registerPageState.usernameSuggestions,\n// };\n// };\n\n// RegistrationPage.propTypes = {\n// backedUpFormData: PropTypes.shape({\n// configurableFormFields: PropTypes.shape({}),\n// formFields: PropTypes.shape({}),\n// errors: PropTypes.shape({}),\n// emailSuggestion: PropTypes.shape({}),\n// }),\n// backendCountryCode: PropTypes.string,\n// backendValidations: PropTypes.shape({\n// name: PropTypes.string,\n// email: PropTypes.string,\n// username: PropTypes.string,\n// password: PropTypes.string,\n// }),\n// fieldDescriptions: PropTypes.shape({}),\n// institutionLogin: PropTypes.bool.isRequired,\n// optionalFields: PropTypes.shape({}),\n// registrationError: PropTypes.shape({}),\n// registrationErrorCode: PropTypes.string,\n// registrationResult: PropTypes.shape({\n// redirectUrl: PropTypes.string,\n// success: PropTypes.bool,\n// }),\n// shouldBackupState: PropTypes.bool,\n// submitState: PropTypes.string,\n// thirdPartyAuthApiStatus: PropTypes.string,\n// thirdPartyAuthContext: PropTypes.shape({\n// autoSubmitRegForm: PropTypes.bool,\n// countryCode: PropTypes.string,\n// currentProvider: PropTypes.string,\n// errorMessage: PropTypes.string,\n// finishAuthUrl: PropTypes.string,\n// pipelineUserDetails: PropTypes.shape({\n// email: PropTypes.string,\n// name: PropTypes.string,\n// firstName: PropTypes.string,\n// lastName: PropTypes.string,\n// username: PropTypes.string,\n// }),\n// platformName: PropTypes.string,\n// providers: PropTypes.arrayOf(\n// PropTypes.shape({}),\n// ),\n// secondaryProviders: PropTypes.arrayOf(\n// PropTypes.shape({}),\n// ),\n// }),\n// usernameSuggestions: PropTypes.arrayOf(PropTypes.string),\n// userPipelineDataLoaded: PropTypes.bool,\n// validationApiRateLimited: PropTypes.bool,\n// // Actions\n// backupFormState: PropTypes.func.isRequired,\n// clearBackendError: PropTypes.func.isRequired,\n// getRegistrationDataFromBackend: PropTypes.func.isRequired,\n// handleInstitutionLogin: PropTypes.func.isRequired,\n// registerNewUser: PropTypes.func.isRequired,\n// resetUsernameSuggestions: PropTypes.func.isRequired,\n// setUserPipelineDetailsLoaded: PropTypes.func.isRequired,\n// validateFromBackend: PropTypes.func.isRequired,\n// };\n\n// RegistrationPage.defaultProps = {\n// backedUpFormData: {\n// configurableFormFields: {\n// marketingEmailsOptIn: true,\n// },\n// formFields: {\n// name: '', email: '', username: '', password: '',\n// },\n// errors: {\n// name: '', email: '', username: '', password: '',\n// },\n// emailSuggestion: {\n// suggestion: '', type: '',\n// },\n// },\n// backendCountryCode: '',\n// backendValidations: null,\n// fieldDescriptions: {},\n// optionalFields: {},\n// registrationError: {},\n// registrationErrorCode: '',\n// registrationResult: null,\n// shouldBackupState: false,\n// submitState: DEFAULT_STATE,\n// thirdPartyAuthApiStatus: PENDING_STATE,\n// thirdPartyAuthContext: {\n// autoSubmitRegForm: false,\n// countryCode: null,\n// currentProvider: null,\n// errorMessage: null,\n// finishAuthUrl: null,\n// pipelineUserDetails: null,\n// providers: [],\n// secondaryProviders: [],\n// },\n// usernameSuggestions: [],\n// userPipelineDataLoaded: false,\n// validationApiRateLimited: false,\n// };\n\n// export default connect(\n// mapStateToProps,\n// {\n// backupFormState: backupRegistrationFormBegin,\n// clearBackendError: clearRegistertionBackendError,\n// getRegistrationDataFromBackend: getThirdPartyAuthContext,\n// resetUsernameSuggestions: clearUsernameSuggestions,\n// validateFromBackend: fetchRealtimeValidations,\n// registerNewUser,\n// setUserPipelineDetailsLoaded: setUserPipelineDataLoaded,\n// },\n// )(RegistrationPage);\n","import {\n DEFAULT_STATE,\n PENDING_STATE,\n} from '../../data/constants';\nimport {\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 REGISTERATION_CLEAR_BACKEND_ERROR,\n} from './actions';\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 REGISTERATION_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 `https://carerha.com/api/user/v1/account/registration/`,\n // https://carerha.com/api/user/v1/account/registration/\n // `${getConfig().LMS_BASE_URL}/api/user/v2/account/registration/`,\n\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 };\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 { redirectUrl, success } = yield call(registerRequest, action.payload.registrationInfo);\n\n yield put(registerNewUserSuccess(\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 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 { Redirect } from 'react-router-dom';\n\nimport { BaseComponent } from '../base-component';\nimport { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\nimport { getTpaHint, getTpaProvider, updatePathWithQueryParams } from '../data/utils';\nimport { LoginPage } from '../login';\nimport { RegistrationPage } from '../register';\nimport { backupRegistrationForm } from '../register/data/actions';\nimport { clearThirdPartyAuthContextErrorMessage } from './data/actions';\nimport {\n tpaProvidersSelector,\n} from './data/selectors';\nimport messages from './messages';\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 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 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 \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","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';\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 },\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 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","import React, { useEffect, useState } 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 {\n COMPLETE_STATE, FORBIDDEN_STATE, FORM_SUBMISSION_ERROR, INTERNAL_SERVER_ERROR,\n} from '../data/constants';\nimport { PASSWORD_RESET } from '../reset-password/data/constants';\nimport messages from './messages';\nimport CloseIcon from '@mui/icons-material/Close';\n\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 const [showAlert, setShowAlert] = useState(true);\n\n const handleClose = () => {\n setShowAlert(false);\n };\n\n useEffect(() => {\n setShowAlert(true);\n }, [status]);\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 && showAlert) {\n return (\n \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 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 NavLink,\n StatefulButton,\n Tab,\n Tabs,\n} from '@edx/paragon';\nimport { ChevronLeft, Email, Person } from '@edx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { Redirect } from 'react-router-dom';\n\nimport { BaseComponent } from '../base-component';\nimport { FormGroup } from '../common-components';\nimport { DEFAULT_STATE, LOGIN_PAGE, VALID_EMAIL_REGEX } from '../data/constants';\nimport { updatePathWithQueryParams, windowScrollTo } from '../data/utils';\nimport { forgotPassword, setForgotPasswordFormData } from './data/actions';\nimport { forgotPasswordResultSelector } from './data/selectors';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\n// import Navbar from '../Navbar/Navbar';\nimport Rectangle from '../../public/assets/Rectangle 6040.png'\nimport passwordImage from '../../public/assets/password.png'\n// import { Link } from 'react-router-dom/cjs/react-router-dom.min';\nimport { Link } from 'react-router-dom';\nimport emailIcon from '../../public/assets/emailicon.png'\n\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 [key, setKey] = useState('');\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 \n {formatMessage(messages['forgot.password.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n
\n
\n
\n
\n {/*
\n

Important Information

\n

\n Please read the information below.\n

\n
    \n
  • Do not reveal your password to anybody
  • \n
  • Do not reuse passwords
  • \n
  • Use Alphanumeric passwords
  • \n
\n
*/}\n\n
\n
\n\n\n {/* */}\n
\n {/* navigate(updatePathWithQueryParams(key))}>\n \n */}\n
\n
\n \n
\n

Forgot Your password ?

\n {/*

Don't worry, we can help you

*/}\n {/*
\n \n
*/}\n \n Enter your email for the verification process. We willl send you an email\n with a link where you can reset your password. \n
\n\n {/*

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

\n

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

*/}\n
\n\n setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n placeholder=\"Ex: hannah.green@test.com\"\n leadingElement={
\n usernameicon\n\n
}\n className=\"custom-help-text\" // Add your custom class\n\n helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\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 {/*

I remembered the password

*/}\n Return to login\n \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","export default __webpack_public_path__ + \"76c476323a503d5dfb698ee83fe7f2f5.png\";","import { INTERNAL_SERVER_ERROR, PENDING_STATE } from '../../data/constants';\nimport { PASSWORD_RESET_FAILURE } from '../../reset-password/data/actions';\nimport { FORGOT_PASSWORD, FORGOT_PASSWORD_PERSIST_FORM_DATA } from './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","import {\n createInstance,\n} from '@optimizely/react-sdk';\n\nconst OPTIMIZELY_SDK_KEY = process.env.OPTIMIZELY_FULL_STACK_SDK_KEY;\n\nconst optimizely = createInstance({\n sdkKey: OPTIMIZELY_SDK_KEY,\n});\n\nexport default optimizely;\n","import optimizelyInstance from '../data/optimizely';\n\nconst RECOMMENDATIONS_EXP_KEY = 'welcome_page_recommendations_exp';\nconst RECOMMENDATIONS_EXP_VARIATION = 'welcome_page_recommendations_enabled';\n\nexport const eventNames = {\n recommendedCourseClicked: 'welcome_page_recommendation_card_click',\n recommendationsViewed: 'welcome_page_recommendations_viewed',\n};\n\n/**\n * Activate the post registration recommendations optimizely experiment\n * and return the true if the user is in variation else false.\n * @param {String} userId user id of authenticated user.\n * @return {string} true if the user is in variation else false\n*/\nconst activateRecommendationsExperiment = (userId) => optimizelyInstance.activate(RECOMMENDATIONS_EXP_KEY, userId);\n\n/**\n * Fire an optimizely track event for post registration recommended course card clicked.\n * @param {String} userId user id of authenticated user.\n * @param {Object} userAttributes Dictionary of user attributes (optional).\n*/\nconst trackRecommendationCardClickOptimizely = (userId, userAttributes = {}) => {\n optimizelyInstance.track(eventNames.recommendedCourseClicked, userId, userAttributes);\n};\n\n/**\n * Fire an optimizely track event for post registration recommendation viewed.\n * @param {String} userId user id of authenticated user.\n * @param {Object} userAttributes Dictionary of user attributes (optional).\n*/\nconst trackRecommendationViewedOptimizely = (userId, userAttributes = {}) => {\n optimizelyInstance.track(eventNames.recommendationsViewed, userId, userAttributes);\n};\n\nexport {\n RECOMMENDATIONS_EXP_VARIATION,\n activateRecommendationsExperiment,\n trackRecommendationCardClickOptimizely,\n trackRecommendationViewedOptimizely,\n};\n","import { sendTrackEvent } from '@edx/frontend-platform/analytics';\n\nexport const LINK_TIMEOUT = 300;\n\nexport const eventNames = {\n recommendedCourseClicked: 'edx.bi.user.recommended.course.click',\n recommendationsGroup: 'edx.bi.user.recommendations.group',\n recommendationsViewed: 'edx.bi.user.recommendations.viewed',\n};\n\nexport const createLinkTracker = (tracker, href, openInNewTab = false) => (e) => {\n e.preventDefault();\n tracker();\n if (openInNewTab) {\n return setTimeout(() => { global.open(href, '_blank'); }, LINK_TIMEOUT);\n }\n return setTimeout(() => { global.location.href = href; }, LINK_TIMEOUT);\n};\n\nexport const trackRecommendationsClicked = (courseKey, isControl, position, userId, href, recommendationType) => {\n createLinkTracker(\n sendTrackEvent(eventNames.recommendedCourseClicked, {\n page: 'authn_recommendations',\n position,\n recommendation_type: recommendationType,\n course_key: courseKey,\n is_control: isControl,\n user_id: userId,\n }),\n href,\n true,\n );\n};\n\nexport const trackRecommendationsViewed = (recommendedCourseKeys, isControl, userId) => {\n sendTrackEvent(\n eventNames.recommendationsViewed, {\n page: 'authn_recommendations',\n course_key_array: recommendedCourseKeys,\n amplitude_recommendations: false,\n is_control: isControl,\n user_id: userId,\n },\n );\n};\n\nexport const trackRecommendationsGroup = (variation, userId) => {\n sendTrackEvent(\n eventNames.recommendationsGroup, {\n variation,\n page: 'authn_recommendations',\n user_id: userId,\n },\n );\n};\n\nexport default {\n trackRecommendationsClicked,\n trackRecommendationsGroup,\n trackRecommendationsViewed,\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","export const storeName = 'welcomePage';\n\nexport const welcomePageSelector = state => ({ ...state[storeName] });\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","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 ensureAuthenticatedUser,\n getAuthenticatedUser,\n hydrateAuthenticatedUser,\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';\n\nimport { BaseComponent } from '../base-component';\nimport { RedirectLogistration } from '../common-components';\nimport {\n DEFAULT_REDIRECT_URL, DEFAULT_STATE, FAILURE_STATE,\n} from '../data/constants';\nimport { getAllPossibleQueryParams } from '../data/utils';\nimport { FormFieldRenderer } from '../field-renderer';\nimport {\n activateRecommendationsExperiment, RECOMMENDATIONS_EXP_VARIATION, trackRecommendationViewedOptimizely,\n} from '../recommendations/optimizelyExperiment';\nimport { trackRecommendationsGroup, trackRecommendationsViewed } from '../recommendations/track';\nimport { saveUserProfile } from './data/actions';\nimport { welcomePageSelector } from './data/selectors';\nimport messages from './messages';\nimport ProgressiveProfilingPageModal from './ProgressiveProfilingPageModal';\n\nconst ProgressiveProfiling = (props) => {\n const {\n formRenderState, submitState, showError, location,\n } = props;\n const enablePersonalizedRecommendations = getConfig().ENABLE_PERSONALIZED_RECOMMENDATIONS;\n const registrationResponse = location.state?.registrationResult;\n\n const { formatMessage } = useIntl();\n const [ready, setReady] = useState(false);\n const [registrationResult, setRegistrationResult] = useState({ redirectUrl: '' });\n const [values, setValues] = useState({});\n const [openDialog, setOpenDialog] = useState(false);\n const [showRecommendationsPage, setShowRecommendationsPage] = useState(false);\n const authenticatedUser = getAuthenticatedUser();\n const DASHBOARD_URL = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n\n useEffect(() => {\n configureAuth(AxiosJwtAuthService, { loggingService: getLoggingService(), config: getConfig() });\n ensureAuthenticatedUser(DASHBOARD_URL)\n .then(() => {\n hydrateAuthenticatedUser().then(() => {\n setReady(true);\n });\n })\n .catch(() => {});\n\n if (registrationResponse) {\n setRegistrationResult(registrationResponse);\n }\n }, [DASHBOARD_URL, registrationResponse]);\n\n useEffect(() => {\n if (ready && authenticatedUser?.userId) {\n identifyAuthenticatedUser(authenticatedUser.userId);\n sendPageEvent('login_and_registration', 'welcome');\n }\n }, [authenticatedUser, ready]);\n\n useEffect(() => {\n if (registrationResponse && authenticatedUser?.userId) {\n const queryParams = getAllPossibleQueryParams(registrationResponse.redirectUrl);\n if (enablePersonalizedRecommendations && !('enrollment_action' in queryParams)) {\n const userIdStr = authenticatedUser.userId.toString();\n const variation = activateRecommendationsExperiment(userIdStr);\n const showRecommendations = variation === RECOMMENDATIONS_EXP_VARIATION;\n\n trackRecommendationsGroup(variation, authenticatedUser.userId);\n trackRecommendationViewedOptimizely(userIdStr);\n setShowRecommendationsPage(showRecommendations);\n if (!showRecommendations) {\n trackRecommendationsViewed([], true, authenticatedUser.userId);\n }\n }\n }\n }, [authenticatedUser, enablePersonalizedRecommendations, registrationResponse]);\n\n if (!location.state || !location.state.registrationResult || formRenderState === FAILURE_STATE) {\n global.location.assign(DASHBOARD_URL);\n return null;\n }\n\n if (!ready) {\n return null;\n }\n\n const optionalFields = location.state.optionalFields.fields;\n const extendedProfile = location.state.optionalFields.extended_profile;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n window.history.replaceState(location.state, null, '');\n const payload = { ...values, extendedProfile: [] };\n if (Object.keys(extendedProfile).length > 0) {\n 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 },\n );\n };\n\n const handleSkip = (e) => {\n e.preventDefault();\n window.history.replaceState(props.location.state, null, '');\n setOpenDialog(true);\n sendTrackEvent('edx.bi.welcome.page.skip.link.clicked');\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(optionalFields).map((fieldName) => {\n const fieldData = optionalFields[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 ? (\n \n ) : null}\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 formRenderState: PropTypes.string.isRequired,\n location: PropTypes.shape({\n state: PropTypes.shape({\n registrationResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n }),\n optionalFields: PropTypes.shape({\n extended_profile: PropTypes.arrayOf(PropTypes.string),\n fields: PropTypes.shape({}),\n }),\n }),\n }),\n saveUserProfile: PropTypes.func.isRequired,\n showError: PropTypes.bool,\n shouldRedirect: PropTypes.bool,\n submitState: PropTypes.string,\n};\n\nProgressiveProfiling.defaultProps = {\n location: { state: {} },\n shouldRedirect: false,\n showError: false,\n submitState: DEFAULT_STATE,\n};\n\nconst mapStateToProps = state => ({\n formRenderState: welcomePageSelector(state).formRenderState,\n shouldRedirect: welcomePageSelector(state).success,\n submitState: welcomePageSelector(state).submitState,\n showError: welcomePageSelector(state).showError,\n});\n\nexport default connect(\n mapStateToProps,\n {\n saveUserProfile,\n },\n)(ProgressiveProfiling);\n","import {\n DEFAULT_STATE, PENDING_STATE,\n} from '../../data/constants';\nimport { SAVE_USER_PROFILE } from './actions';\n\nexport const defaultState = {\n extendedProfile: [],\n fieldDescriptions: {},\n formRenderState: DEFAULT_STATE,\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","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 { 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","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","import { camelCaseObject } from '@edx/frontend-platform';\nimport algoliasearch from 'algoliasearch/lite';\n\nconst INDEX_NAME = process.env.ALGOLIA_AUTHN_RECOMMENDATIONS_INDEX;\n\nconst getPersonalizedRecommendations = async (educationLevel) => {\n const facetFilters = ['product:Course', 'availability:Available now'];\n\n if (educationLevel) {\n facetFilters.push(`level:${educationLevel}`);\n }\n const client = algoliasearch(process.env.ALGOLIA_APP_ID, process.env.ALGOLIA_SEARCH_KEY);\n const index = client.initIndex(INDEX_NAME);\n const { hits } = await index.search('', {\n aroundLatLngViaIP: true,\n facetFilters,\n });\n\n return camelCaseObject(hits);\n};\n\nexport default getPersonalizedRecommendations;\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\nexport default {\n convertCourseRunKeytoCourseKey,\n};\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\n});\nexport default messages;\n","import React from 'react';\n\nimport { Card, Hyperlink } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport { trackRecommendationCardClickOptimizely } from './optimizelyExperiment';\nimport { trackRecommendationsClicked } from './track';\n\nconst RecommendationCard = (props) => {\n const { recommendation, position, userId } = props;\n const showPartnerLogo = recommendation.owners.length === 1;\n\n const getOwners = () => {\n if (recommendation.owners.length === 1) {\n return recommendation.owners[0].key;\n }\n\n let keys = '';\n recommendation.owners.forEach((owner) => {\n keys += `${owner.key }, `;\n });\n return keys.slice(0, -2);\n };\n\n const handleCardClick = () => {\n trackRecommendationCardClickOptimizely(userId?.toString());\n trackRecommendationsClicked(\n recommendation.courseKey,\n false,\n position + 1,\n userId,\n recommendation.marketingUrl,\n recommendation.recommendationType || 'algolia',\n );\n };\n\n return (\n
\n \n \n \n \n \n Course} />\n \n \n
\n );\n};\n\nRecommendationCard.propTypes = {\n recommendation: PropTypes.shape({\n courseKey: PropTypes.string.isRequired,\n activeRunKey: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n cardImageUrl: PropTypes.string.isRequired,\n owners: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n logoImageUrl: PropTypes.string.isRequired,\n })),\n marketingUrl: PropTypes.string.isRequired,\n recommendationType: PropTypes.string,\n }).isRequired,\n position: PropTypes.number.isRequired,\n userId: PropTypes.number,\n};\n\nRecommendationCard.defaultProps = {\n userId: null,\n};\n\nexport default RecommendationCard;\n","import React from 'react';\n\nimport { Container } from '@edx/paragon';\nimport PropTypes from 'prop-types';\n\nimport RecommendationCard from './RecommendationCard';\n\nconst RecommendationsList = (props) => {\n const { title, recommendations, userId } = props;\n\n return (\n \n

\n {title}\n

\n
\n {\n recommendations.map((recommendation, idx) => (\n \n ))\n }\n
\n
\n );\n};\n\nRecommendationsList.propTypes = {\n title: PropTypes.string.isRequired,\n recommendations: PropTypes.arrayOf(PropTypes.shape({\n courseKey: PropTypes.string.isRequired,\n activeRunKey: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n cardImageUrl: PropTypes.string.isRequired,\n owners: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n logoImageUrl: PropTypes.string.isRequired,\n })),\n marketingUrl: PropTypes.string.isRequired,\n recommendationType: PropTypes.string,\n })),\n userId: PropTypes.number,\n};\n\nRecommendationsList.defaultProps = {\n recommendations: [],\n userId: null,\n};\n\nexport default RecommendationsList;\n","import React, { useEffect, useState } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Hyperlink, Image, Spinner, StatefulButton,\n} from '@edx/paragon';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\n\nimport { DEFAULT_REDIRECT_URL } from '../data/constants';\nimport { EDUCATION_LEVEL_MAPPING, RECOMMENDATIONS_COUNT } from './data/constants';\nimport getPersonalizedRecommendations from './data/service';\nimport { convertCourseRunKeytoCourseKey } from './data/utils';\nimport messages from './messages';\nimport RecommendationsList from './RecommendationsList';\nimport { trackRecommendationsViewed } from './track';\n\nconst RecommendationsPage = (props) => {\n const { location } = props;\n const registrationResponse = location.state?.registrationResult;\n const userId = location.state?.userId;\n const DASHBOARD_URL = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n\n const { formatMessage } = useIntl();\n const [isLoading, setIsLoading] = useState(true);\n const [recommendations, setRecommendations] = useState([]);\n const [algoliaRecommendations, setAlgoliaRecommendations] = useState([]);\n const educationLevel = EDUCATION_LEVEL_MAPPING[location.state?.educationLevel];\n\n useEffect(() => {\n if (registrationResponse) {\n const generalRecommendations = JSON.parse(getConfig().GENERAL_RECOMMENDATIONS);\n let coursesWithKeys = [];\n getPersonalizedRecommendations(educationLevel).then((response) => {\n coursesWithKeys = response.map(course => ({\n ...course,\n courseKey: convertCourseRunKeytoCourseKey(course.activeRunKey),\n }));\n setAlgoliaRecommendations(coursesWithKeys.slice(0, RECOMMENDATIONS_COUNT));\n\n if (coursesWithKeys.length >= RECOMMENDATIONS_COUNT) {\n setRecommendations(coursesWithKeys.slice(0, RECOMMENDATIONS_COUNT));\n } else {\n const courseRecommendations = coursesWithKeys.concat(generalRecommendations);\n // Remove duplicate recommendations\n const uniqueRecommendations = courseRecommendations.filter(\n (recommendation, index, self) => index === self.findIndex((existingRecommendation) => (\n existingRecommendation.courseKey === recommendation.courseKey\n )),\n );\n setRecommendations(uniqueRecommendations.slice(0, RECOMMENDATIONS_COUNT));\n }\n\n setIsLoading(false);\n })\n .catch(() => {\n setRecommendations(generalRecommendations.slice(0, RECOMMENDATIONS_COUNT));\n setIsLoading(false);\n });\n }\n }, [registrationResponse, DASHBOARD_URL, educationLevel, userId]);\n\n useEffect(() => {\n if (!isLoading) {\n // We only want to track the recommendations returned by Algolia\n const courseKeys = algoliaRecommendations.map(course => course.courseKey);\n trackRecommendationsViewed(courseKeys, false, userId);\n }\n }, [isLoading, algoliaRecommendations, userId]);\n\n if (!registrationResponse) {\n global.location.assign(DASHBOARD_URL);\n return null;\n }\n\n const handleRedirection = () => {\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 if (!isLoading && recommendations.length < RECOMMENDATIONS_COUNT) {\n handleRedirection();\n }\n\n const handleSkip = (e) => {\n e.preventDefault();\n handleRedirection();\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 {(!isLoading && recommendations.length === RECOMMENDATIONS_COUNT) ? (\n
\n \n
\n \n
\n
\n )\n : (\n \n )}\n
\n \n );\n};\n\nRecommendationsPage.propTypes = {\n location: PropTypes.shape({\n state: PropTypes.shape({\n registrationResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n }),\n userId: PropTypes.number,\n educationLevel: PropTypes.string,\n }),\n }),\n\n};\n\nRecommendationsPage.defaultProps = {\n location: { state: {} },\n};\n\nexport default RecommendationsPage;\n","export default __webpack_public_path__ + \"a3b04c4b587422e1ba0a4ae88a1c5ee8.png\";","export default __webpack_public_path__ + \"fc384c72147d609d170efcc12e2e104d.png\";","export default __webpack_public_path__ + \"ef947f393077c4f611cc7afa42a92caf.png\";","export default __webpack_public_path__ + \"b1156c3f33743c6586a00d7fbbeeb16f.png\";","export default __webpack_public_path__ + \"d33dadffaa079b102502ae8ecc97b230.png\";","export default __webpack_public_path__ + \"21e8c991fb800ba8ed29691bdfe6a13e.png\";","import React, { useContext, useEffect, useState } from 'react';\nimport logo from '../../public/assets/carerha-logo-light.png'\nimport CourseImage from '../../public/assets/carbon_course.png'\nimport HomeImage from '../../public/assets/home_3_line.png'\nimport programImage from '../../public/assets/home_3_line (1).png'\nimport EventsImage from '../../public/assets/home_3_line (2).png'\nimport CommunityImage from '../../public/assets/carbon_events.png'\nimport PermMediaIcon from '@mui/icons-material/PermMedia';\nimport { Link } from 'react-router-dom';\nimport { Button } from '@edx/paragon'\nimport {\n Menu,\n MenuItem,\n IconButton,\n} from '@mui/material';\nimport {\n Menu as MenuIcon,\n} from '@mui/icons-material';\nfunction MobileHeader() {\n const [anchorEl, setAnchorEl] = useState(null);\n const [subMenuOpen, setSubMenuOpen] = useState([false, false, false, false, false]); // Array to track submenu open/close state\n const [scrollBackground, setScrollBackground] = useState(false);\n // var _useContext = useContext(AppContext),\n // authenticatedUser = _useContext?.authenticatedUser;\n\n const handleMenuClick = (event, index) => {\n setAnchorEl(event.currentTarget);\n setSubMenuOpen(prevState => prevState.map((value, idx) => idx === index ? !value : false)); // Toggle the state of the clicked submenu\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n setSubMenuOpen(prevState => prevState.map(() => false)); // Close all submenus when menu is closed\n };\n\n const handleScroll = () => {\n const scrollPosition = window.scrollY;\n // Change the threshold as needed\n const threshold = 100;\n\n if (scrollPosition > threshold) {\n setScrollBackground(true);\n } else {\n setScrollBackground(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n return (\n
\n
\n handleMenuClick(event, 0)} // Pass the index of the submenu to handleMenuClick\n >\n \n \n \n \n \n
\n
\n logo\n
\n {/* {authenticatedUser != null ?\n
\n
\n handleMenuClick(event, 1)} // Pass the index of the submenu to handleMenuClick\n className=\"dropdown-btn\"\n >\n \"profile\"\n {_useContext?.authenticatedUser?.username.legnth > 7 ? _useContext?.authenticatedUser?.username.legnth.slice(0.7) : _useContext?.authenticatedUser?.username}\n \"down-arrow\"\n \n \n \n \n My Courses\n \n \n \n \n Profile\n \n \n \n \n Account\n \n \n \n Logout\n \n \n
\n {authenticatedUser != null && \"icon\"}\n
:\n \n } */}\n \n\n
\n );\n\n}\n\nexport default MobileHeader;","import React, { useEffect, useState } from 'react'\nimport logo from '../../public/assets/carerha-logo-light.png'\nimport './Navbar.module.css'\nimport { Link, useLocation } from 'react-router-dom'\nimport { Button, SearchField } from '@edx/paragon'\n// import Searchbar from './Search/Search'\nimport MobileHeader from './MobileNavbar'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\nfunction Navbar() {\n const location = useLocation();\n const [navbarBackground, setNavbarBackground] = useState('transparent');\n\n useEffect(() => {\n const handleScroll = () => {\n const scrollY = window.scrollY;\n const threshold = 100;\n\n if (scrollY > threshold) {\n setNavbarBackground('white');\n } else {\n setNavbarBackground('transparent');\n }\n };\n\n window.addEventListener('scroll', handleScroll);\n\n // Cleanup the event listener on component unmount\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, []);\n // console.log('location', location.pathname)\n return (\n <>\n \n \n \n\n )\n}\n\nexport default Navbar\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 { Redirect, Route, Switch } from 'react-router-dom';\n\nimport {\n Logistration, 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_PAGE,\n RESET_PAGE,\n} from './data/constants';\nimport { updatePathWithQueryParams } from './data/utils';\nimport { ForgotPasswordPage } from './forgot-password';\nimport { ProgressiveProfiling } from './progressive-profiling';\nimport { RecommendationsPage } from './recommendations';\nimport { ResetPasswordPage } from './reset-password';\nimport './index.scss';\nimport Navbar from './Navbar/Navbar';\n\nregisterIcons();\n\nconst MainApp = () => (\n \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';\nimport { messages as paragonMessages } from '@edx/paragon';\n\nimport configuration from './config';\nimport appMessages 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 appMessages,\n paragonMessages,\n ],\n});\n","export default __webpack_public_path__ + \"440b1fd39e91e51e7522b7475338e338.png\";"],"names":["SESSION_COOKIE_DOMAIN","process","REGISTER_CONVERSION_COOKIE_NAME","USER_SURVEY_COOKIE_NAME","DISABLE_ENTERPRISE_LOGIN","ENABLE_COOKIE_POLICY_BANNER","ENABLE_DYNAMIC_REGISTRATION_FIELDS","ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN","ENABLE_PERSONALIZED_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","PRIVACY_POLICY","TOS_AND_HONOR_CODE","TOS_LINK","GENERAL_RECOMMENDATIONS","INFO_EMAIL","ZENDESK_KEY","ZENDESK_LOGO_URL","ar","arMessages","es","es419Messages","fr","frMessages","ititMessages","ptptMessages","dedeMessages","ca","he","id","pl","ru","ruMessages","th","uk","ukMessages","hi","hiMessages","LOGIN_PAGE","REGISTER_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","VALID_EMAIL_REGEX","LETTER_REGEX","NUMBER_REGEX","AUTH_PARAMS","getTpaProvider","tpaHintProvider","primaryProviders","secondaryProviders","tpaProvider","skipHintedLogin","forEach","provider","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","AsyncActionType","constructor","topic","name","this","BASE","BEGIN","SUCCESS","FAILURE","RESET","FORBIDDEN","setCookie","cookieName","cookieValue","cookieExpiry","cookies","Cookies","domain","getConfig","expires","set","setSurveyCookie","surveyType","signupTimestamp","Date","getTime","RedirectLogistration","props","finishAuthUrl","redirectUrl","redirectToProgressiveProfilingPage","success","optionalFields","redirectToRecommendationsPage","educationLevel","userId","finalRedirectUrl","includes","LMS_BASE_URL","registrationResult","_jsx","Redirect","to","pathname","state","href","defaultProps","propTypes","PropTypes","authUser","setAuthUser","useState","isReady","setIsReady","useEffect","fetchAuthenticatedUser","forceRefresh","getAuthenticatedUser","then","authenticatedUser","username","global","concat","Route","_objectSpread","NotFoundPage","className","children","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","FontAwesomeIcon","icon","iconClass","faSignInAlt","messages","providerName","_Fragment","skipRegistrationForm","ThirdPartyAuthAlert","currentProvider","platformName","SITE_NAME","message","Alert","RenderInstitutionButton","onSubmitHandler","buttonTitle","Button","variant","Icon","Institution","InstitutionLogistration","lmsBaseUrl","headingTitle","Hyperlink","destination","LogistrationDefaultProps","LogistrationProps","THIRD_PARTY_AUTH_CONTEXT","THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG","getThirdPartyAuthContext","payload","defaultState","fieldDescriptions","thirdPartyAuthApiStatus","thirdPartyAuthContext","countryCode","providers","pipelineUserDetails","errorMessage","action","fields","BACKUP_REGISTRATION_DATA","REGISTER_FORM_VALIDATIONS","REGISTER_NEW_USER","REGISTER_CLEAR_USERNAME_SUGGESTIONS","REGISTERATION_CLEAR_BACKEND_ERROR","REGISTER_SET_COUNTRY_CODE","REGISTER_SET_USER_PIPELINE_DATA_LOADED","registerNewUserFailure","error","async","requestConfig","headers","isPublic","data","getAuthenticatedHttpClient","get","catch","registrationFields","registration_fields","optional_fields","contextData","context_data","fetchThirdPartyAuthContext","put","call","getThirdPartyAuthContextSuccess","logError","saga","takeEvery","storeName","commonComponentsSelector","thirdPartyAuthContextSelector","createSelector","commonComponents","fieldDescriptionSelector","optionalFieldsSelector","tpaProvidersSelector","FormGroup","hasFocus","setHasFocus","Form","controlId","isInvalid","as","readOnly","autoComplete","spellCheck","onFocus","handleFocus","onBlur","handleBlur","handleClick","onChange","handleChange","controlClassName","borderClass","trailingElement","floatingLabel","placeholder","leadingElement","TransitionReplace","helpText","toString","hasIcon","PasswordField","isPasswordHidden","setHiddenTrue","setHiddenFalse","useToggle","showTooltip","setShowTooltip","showRequirements","setTimeout","HideButton","IconButton","VisibilityOff","iconAs","size","ShowButton","Visibility","placement","innerWidth","tooltip","Tooltip","test","Check","Remove","OverlayTrigger","overlay","show","backgroundColor","width","height","borderRadius","display","justifyContent","alignItems","passwordIcon","AuthLargeLayout","MARKETING_SITE_BASE_URL","Image","LOGO_URL","siteName","preserveAspectRatio","transform","x","y","LargeLayout","LOGO_WHITE_URL","classNames","BaseComponent","showWelcomeBanner","useLocation","console","log","CookiePolicyBanner","languageCode","getLocale","MediaQuery","minWidth","breakpoints","maxWidth","EnterpriseSSO","disablePublicAccountCreation","ALLOW_PUBLIC_ACCOUNT_CREATION","ResetPasswordSuccess","INVALID_FORM","FORBIDDEN_REQUEST","TPA_AUTHENTICATION_FAILURE","ACCOUNT_ACTIVATION_MESSAGE","AccountActivationMessage","messageType","activationOrVerification","activationMessage","heading","iconMapping","CheckCircle","Error","supportLink","values","LOGIN_REQUEST","LOGIN_PERSIST_FORM_DATA","LOGIN_REMOVE_PASSWORD_RESET_BANNER","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","title","onClose","hasCloseButton","ActionRow","Link","LoginFailureMessage","context","errorCode","authService","getAuthService","errorList","resetLink","isInline","lineBreak","email","tpaLink","allowedDomain","remainingAttempts","failureCount","getCsrfTokenService","clearCsrfTokenCache","platform_name","showAlert","setShowAlert","handleClose","severity","CloseIcon","LoginPage","React","super","_defineProperty","resetPassword","loginRemovePasswordResetBanner","setState","isSubmitted","emailOrUsername","password","emailValidationError","validateEmail","passwordValidationError","validatePassword","setLoginFormData","errors","email_or_username","loginRequest","target","sendTrackEvent","category","componentDidMount","sendPageEvent","loginRequestReset","shouldComponentUpdate","nextProps","nextState","componentWillUnmount","getEnterPriseLoginURL","intl","renderThirdPartyAuth","isInstitutionAuthActive","isSocialAuthActive","isEnterpriseLoginDisabled","Skeleton","count","handleInstitutionLogin","renderForm","submitState","activationMsgType","account_activation_status","institutionLogin","tpaAuthenticationError","optimizely","push","eventName","Helmet","behavior","logo","fontSize","fontWeight","background","rel","color","handleOnFocus","handleOnBlur","usernameIcon","handleForgotPasswordLinkClickEvent","StatefulButton","labels","default","pending","onMouseDown","textDecoration","marginLeft","render","isRequired","connect","creds","formData","injectIntl","RESET_PASSWORD","VALIDATE_TOKEN","PASSWORD_RESET_FAILURE","passwordResetFailure","resetPasswordFailure","errorMsg","TOKEN_STATE","PASSWORD_RESET_ERROR","PASSWORD_VALIDATION_ERROR","PASSWORD_RESET","resetPasswordResultSelector","validateToken","token","getHttpClient","post","formurlencoded","URL","is_account_recovery","searchParams","append","ResetPasswordFailure","ResetPasswordPage","newPasswordError","newPassword","setNewPassword","confirmPassword","setConfirmPassword","formErrors","setFormErrors","setErrorCode","setKey","status","validateInput","reset_password_page","validation_decisions","err","validatePasswordFromBackend","some","ChevronLeft","padding","boxShadow","event","relatedTarget","isPasswordValid","isPasswordConfirmed","formPayload","new_password1","new_password2","match","Spinner","animation","handleValidateToken","isValid","is_valid","tokenStatus","response","logInfo","validateTokenSuccess","handleResetPassword","resetStatus","reset_status","resetErrors","err_msg","resetPasswordSuccess","token_invalid","redirect_url","handleLoginRequest","loginRequestSuccess","statusCodes","camelCaseObject","FormFieldRenderer","formField","fieldData","onChangeHandler","Boolean","ExpandMore","label","option","checked","FIELDS","COMMON_EMAIL_PROVIDERS","currentYear","getFullYear","years","startYear","reverse","DEFAULT_SERVICE_PROVIDER_DOMAINS","DEFAULT_TOP_LEVEL_DOMAINS","getLevenshteinSuggestion","word","knownWords","similarityThreshold","minEditDistance","mostSimilar","i","editDistance","distance","toLowerCase","getSuggestionForInvalidEmail","defaultDomains","suggestion","validateEmailAddress","domainName","validation","hasError","hasMultipleSubdomains","serviceLevelDomain","topLevelDomain","split","tldSuggestion","serviceSuggestion","validateCountryField","countryList","displayValue","normalizedValue","selectedCountry","find","country","trim","EmailField","emailSuggestion","handleSuggestionClick","handleOnClose","maxLength","Close","tabIndex","UsernameField","handleUsernameSuggestionClose","usernameSuggestions","suggestedUsernameDiv","iconButton","suggestedUsernames","string","CountryField","dropdownRef","useRef","setErrorMessage","dropDownItems","setDropDownItems","setDisplayValue","trailingIcon","setTrailingIcon","onBlurHandler","itemClicked","countryName","relatedName","countryValue","ExpandMoreButton","getDropdownItems","countryToFind","updatedCountryList","filter","handleExpandMore","ExpandLessButton","handleExpandLess","ExpandLess","handleClickOutside","current","contains","ref","filteredItems","onFocusHandler","code","HonorCode","fieldType","tosAndHonorCode","privacyPolicy","TermsOfService","termsOfService","ConfigurableRegistrationForm","fieldErrors","formFields","setFieldErrors","setFocusedField","setFormFields","showTermsOfServiceAndHonorCode","showCountryField","formFieldDescriptions","honorCode","flags","prevState","handleOnChange","prevErrors","countryValidation","error_message","keys","fieldName","marketingEmailsOptIn","honor_code","registerSelector","registrationErrorSelector","register","registrationError","validationsSelector","validations","validationDecisions","field","userMessage","RegistrationFailureMessage","ThirdPartyAuth","emailRegex","RegExp","urlRegex","RegistrationPage","backedUpFormData","backendCountryCode","backendValidations","registrationErrorCode","shouldBackupState","validationApiRateLimited","backupFormState","setUserPipelineDetailsLoaded","getRegistrationDataFromBackend","userPipelineDataLoaded","validateFromBackend","clearBackendError","useMemo","getCountryList","configurableFormFields","setConfigurableFormFields","setErrors","setEmailSuggestion","autoSubmitRegisterForm","setAutoSubmitRegisterForm","formStartTime","setFormStartTime","focusedField","autoSubmitRegForm","is_register_page","now","countryDisplayValue","dataLayer","shouldValidateFromBackend","setError","fieldError","confirmEmailError","countryFieldCode","confirm_email","resetUsernameSuggestions","handleEmailSuggestionClosed","handleUsernameSuggestionClosed","startsWith","form_field_key","registerUser","totalRegistrationTime","social_auth_provider","focusedFieldError","isFormValid","snakeCaseObject","registerNewUser","RegistrationFailure","textAlign","fullNameIcon","emailIcon","CheckBox","firstName","lastName","registerPageState","registrationFormData","clearUsernameSuggestions","registrationInfo","registrationErrorTemp","_action$payload$valid","validationWithoutUsernameSuggestions","_objectWithoutProperties","_excluded","registerRequest","registrationInformation","getFieldsValidations","fieldValidations","handleNewUserRegistration","registerNewUserSuccess","fetchRealtimeValidations","Logistration","selectedPage","tpaProviders","setInstitutionLogin","getCsrfToken","backupRegistrationForm","clearThirdPartyAuthContextErrorMessage","ZendeskHelp","setting","webWidget","contactOptions","enabled","chat","suppress","contactForm","ticketForms","subject","prefill","attachments","helpCenter","originalArticleButton","answerBot","contactOnlyAfterQuery","avatar","Zendesk","defer","zendeskKey","FORGOT_PASSWORD","FORGOT_PASSWORD_PERSIST_FORM_DATA","forgotPasswordResultSelector","forgotPassword","ForgotPasswordAlert","emailError","ForgotPasswordPage","setEmail","bannerEmail","setBannerEmail","validationError","setValidationError","getValidationMessage","setForgotPasswordFormData","forgotPasswordFormData","handleForgotPassword","OPTIMIZELY_SDK_KEY","OPTIMIZELY_FULL_STACK_SDK_KEY","createInstance","sdkKey","eventNames","trackRecommendationsViewed","recommendedCourseKeys","isControl","page","course_key_array","amplitude_recommendations","is_control","user_id","SAVE_USER_PROFILE","welcomePageSelector","ProgressiveProfilingPageModal","ProgressiveProfiling","formRenderState","showError","enablePersonalizedRecommendations","registrationResponse","ready","setReady","setRegistrationResult","setValues","openDialog","setOpenDialog","showRecommendationsPage","setShowRecommendationsPage","DASHBOARD_URL","configureAuth","AxiosJwtAuthService","loggingService","getLoggingService","config","ensureAuthenticatedUser","hydrateAuthenticatedUser","identifyAuthenticatedUser","userIdStr","variation","optimizelyInstance","showRecommendations","trackRecommendationsGroup","userAttributes","trackRecommendationViewedOptimizely","assign","extendedProfile","extended_profile","shouldRedirect","level_of_education","showLaunchIcon","history","replaceState","fieldValue","saveUserProfile","isGenderSelected","gender","isYearOfBirthSelected","year_of_birth","isLevelOfEducationSelected","patchAccount","commitValues","patch","saveUserProfileInformation","createRootReducer","combineReducers","loginReducer","registerReducer","commonComponentsStoreName","commonComponentsReducer","forgotPasswordReducer","resetPasswordReducer","authnProgressiveProfilingReducers","rootSaga","all","loginSaga","registrationSaga","commonComponentsSaga","forgotPasswordSaga","resetPasswordSaga","authnProgressiveProfilingSaga","sagaMiddleware","createSagaMiddleware","composeMiddleware","ENVIRONMENT","loggerMiddleware","createLogger","collapsed","composeWithDevTools","applyMiddleware","thunkMiddleware","compose","configureStore","initialState","store","createStore","run","EDUCATION_LEVEL_MAPPING","p","m","b","a","hs","jhs","INDEX_NAME","ALGOLIA_AUTHN_RECOMMENDATIONS_INDEX","convertCourseRunKeytoCourseKey","courseRunKey","splitCourseKey","slice","RecommendationCard","recommendation","position","showPartnerLogo","owners","marketingUrl","handleCardClick","trackRecommendationCardClickOptimizely","trackRecommendationsClicked","courseKey","recommendationType","recommendation_type","course_key","Card","isClickable","cardImageUrl","srcAlt","logoSrc","logoImageUrl","logoAlt","subtitle","getOwners","owner","textElement","activeRunKey","RecommendationsList","recommendations","Container","idx","RecommendationsPage","isLoading","setIsLoading","setRecommendations","algoliaRecommendations","setAlgoliaRecommendations","generalRecommendations","JSON","parse","coursesWithKeys","facetFilters","algoliasearch","ALGOLIA_APP_ID","ALGOLIA_SEARCH_KEY","initIndex","hits","aroundLatLngViaIP","getPersonalizedRecommendations","course","uniqueRecommendations","self","findIndex","existingRecommendation","courseKeys","handleRedirection","anchorEl","setAnchorEl","subMenuOpen","setSubMenuOpen","scrollBackground","setScrollBackground","handleScroll","scrollPosition","scrollY","marginTop","handleMenuClick","MenuIcon","Menu","margin","flexDirection","MenuItem","gap","marginBottom","CourseImage","programImage","EventsImage","HomeImage","navbarBackground","setNavbarBackground","MobileHeader","library","faApple","faFacebook","faGoogle","faMicrosoft","MainApp","AppProvider","Navbar","Switch","exact","UnAuthOnlyRoute","component","subscribe","APP_READY","ReactDOM","getElementById","APP_INIT_ERROR","ErrorPage","initialize","mergeConfig","configuration","appMessages","paragonMessages"],"sourceRoot":""}