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

\n \n

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

{ message }

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

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

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

\n {headingTitle}\n

\n

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

\n
\n
\n
\n \n \n {secondaryProviders.map(provider => (\n \n \n \n ))}\n \n
\n \n {provider.name}\n \n
\n
\n \n );\n};\n\nconst LogistrationDefaultProps = {\n secondaryProviders: [],\n buttonTitle: '',\n};\nconst LogistrationProps = {\n secondaryProviders: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n loginUrl: PropTypes.string.isRequired,\n })),\n};\n\nRenderInstitutionButton.propTypes = {\n ...LogistrationProps,\n buttonTitle: PropTypes.string,\n onSubmitHandler: PropTypes.func.isRequired,\n\n};\nRenderInstitutionButton.defaultProps = {\n ...LogistrationDefaultProps,\n};\n\nInstitutionLogistration.propTypes = {\n ...LogistrationProps,\n headingTitle: PropTypes.string,\n};\nInstitutionLogistration.defaultProps = {\n ...LogistrationDefaultProps,\n headingTitle: '',\n};\n\nexport default InstitutionLogistration;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const THIRD_PARTY_AUTH_CONTEXT = new AsyncActionType('THIRD_PARTY_AUTH', 'GET_THIRD_PARTY_AUTH_CONTEXT');\nexport const THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG = 'THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG';\n\n// Third party auth context\nexport const getThirdPartyAuthContext = (urlParams) => ({\n type: THIRD_PARTY_AUTH_CONTEXT.BASE,\n payload: { urlParams },\n});\n\nexport const getThirdPartyAuthContextBegin = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT.BEGIN,\n});\n\nexport const getThirdPartyAuthContextSuccess = (fieldDescriptions, optionalFields, thirdPartyAuthContext) => ({\n type: THIRD_PARTY_AUTH_CONTEXT.SUCCESS,\n payload: { fieldDescriptions, optionalFields, thirdPartyAuthContext },\n});\n\nexport const getThirdPartyAuthContextFailure = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT.FAILURE,\n});\n\nexport const clearThirdPartyAuthContextErrorMessage = () => ({\n type: THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG,\n});\n","import { THIRD_PARTY_AUTH_CONTEXT, THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG } from './actions';\nimport { COMPLETE_STATE, FAILURE_STATE, PENDING_STATE } from '../../data/constants';\n\nexport const defaultState = {\n fieldDescriptions: {},\n optionalFields: {\n fields: {},\n extended_profile: [],\n },\n thirdPartyAuthApiStatus: null,\n thirdPartyAuthContext: {\n autoSubmitRegForm: false,\n currentProvider: null,\n finishAuthUrl: null,\n countryCode: null,\n providers: [],\n secondaryProviders: [],\n pipelineUserDetails: null,\n errorMessage: null,\n welcomePageRedirectUrl: null,\n },\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case THIRD_PARTY_AUTH_CONTEXT.BEGIN:\n return {\n ...state,\n thirdPartyAuthApiStatus: PENDING_STATE,\n };\n case THIRD_PARTY_AUTH_CONTEXT.SUCCESS: {\n return {\n ...state,\n fieldDescriptions: action.payload.fieldDescriptions?.fields,\n optionalFields: action.payload.optionalFields,\n thirdPartyAuthContext: action.payload.thirdPartyAuthContext,\n thirdPartyAuthApiStatus: COMPLETE_STATE,\n };\n }\n case THIRD_PARTY_AUTH_CONTEXT.FAILURE:\n return {\n ...state,\n thirdPartyAuthApiStatus: FAILURE_STATE,\n thirdPartyAuthContext: {\n ...state.thirdPartyAuthContext,\n errorMessage: null,\n },\n };\n case THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG:\n return {\n ...state,\n thirdPartyAuthApiStatus: PENDING_STATE,\n thirdPartyAuthContext: {\n ...state.thirdPartyAuthContext,\n errorMessage: null,\n },\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function getThirdPartyAuthContext(urlParams) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n params: urlParams,\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .get(\n `${getConfig().LMS_BASE_URL}/api/mfe_context`,\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n return {\n fieldDescriptions: data.registrationFields || {},\n optionalFields: data.optionalFields || {},\n thirdPartyAuthContext: data.contextData || {},\n };\n}\n","import { AsyncActionType } from '../../data/utils';\n\nexport const BACKUP_REGISTRATION_DATA = new AsyncActionType('REGISTRATION', 'BACKUP_REGISTRATION_DATA');\nexport const REGISTER_FORM_VALIDATIONS = new AsyncActionType('REGISTRATION', 'GET_FORM_VALIDATIONS');\nexport const REGISTER_NEW_USER = new AsyncActionType('REGISTRATION', 'REGISTER_NEW_USER');\nexport const REGISTER_CLEAR_USERNAME_SUGGESTIONS = 'REGISTRATION_CLEAR_USERNAME_SUGGESTIONS';\nexport const REGISTRATION_CLEAR_BACKEND_ERROR = 'REGISTRATION_CLEAR_BACKEND_ERROR';\nexport const REGISTER_SET_COUNTRY_CODE = 'REGISTER_SET_COUNTRY_CODE';\nexport const REGISTER_SET_USER_PIPELINE_DATA_LOADED = 'REGISTER_SET_USER_PIPELINE_DATA_LOADED';\nexport const REGISTER_SET_EMAIL_SUGGESTIONS = 'REGISTER_SET_EMAIL_SUGGESTIONS';\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// Set email field frontend validations\nexport const setEmailSuggestionInStore = (emailSuggestion) => ({\n type: REGISTER_SET_EMAIL_SUGGESTIONS,\n payload: { emailSuggestion },\n});\n\n// Register\nexport const registerNewUser = registrationInfo => ({\n type: REGISTER_NEW_USER.BASE,\n payload: { registrationInfo },\n});\n\nexport const registerNewUserBegin = () => ({\n type: REGISTER_NEW_USER.BEGIN,\n});\n\nexport const registerNewUserSuccess = (authenticatedUser, redirectUrl, success) => ({\n type: REGISTER_NEW_USER.SUCCESS,\n payload: { authenticatedUser, redirectUrl, success },\n\n});\n\nexport const registerNewUserFailure = (error) => ({\n type: REGISTER_NEW_USER.FAILURE,\n payload: { ...error },\n});\n\nexport const clearUsernameSuggestions = () => ({\n type: REGISTER_CLEAR_USERNAME_SUGGESTIONS,\n});\n\nexport const clearRegistrationBackendError = (fieldName) => ({\n type: REGISTRATION_CLEAR_BACKEND_ERROR,\n payload: fieldName,\n});\n\nexport const setCountryFromThirdPartyAuthContext = (countryCode) => ({\n type: REGISTER_SET_COUNTRY_CODE,\n payload: { countryCode },\n});\n\nexport const setUserPipelineDataLoaded = (value) => ({\n type: REGISTER_SET_USER_PIPELINE_DATA_LOADED,\n payload: { value },\n});\n","import { logError } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n getThirdPartyAuthContextBegin,\n getThirdPartyAuthContextFailure,\n getThirdPartyAuthContextSuccess,\n THIRD_PARTY_AUTH_CONTEXT,\n} from './actions';\nimport {\n getThirdPartyAuthContext,\n} from './service';\nimport { setCountryFromThirdPartyAuthContext } from '../../register/data/actions';\n\nexport function* fetchThirdPartyAuthContext(action) {\n try {\n yield put(getThirdPartyAuthContextBegin());\n const {\n fieldDescriptions, optionalFields, thirdPartyAuthContext,\n } = yield call(getThirdPartyAuthContext, action.payload.urlParams);\n\n yield put(setCountryFromThirdPartyAuthContext(thirdPartyAuthContext.countryCode));\n yield put(getThirdPartyAuthContextSuccess(fieldDescriptions, optionalFields, thirdPartyAuthContext));\n } catch (e) {\n yield put(getThirdPartyAuthContextFailure());\n logError(e);\n }\n}\n\nexport default function* saga() {\n yield takeEvery(THIRD_PARTY_AUTH_CONTEXT.BASE, fetchThirdPartyAuthContext);\n}\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'commonComponents';\n\nexport const commonComponentsSelector = state => ({ ...state[storeName] });\n\nexport const thirdPartyAuthContextSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.thirdPartyAuthContext,\n);\n\nexport const fieldDescriptionSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.fieldDescriptions,\n);\n\nexport const optionalFieldsSelector = createSelector(\n commonComponentsSelector,\n commonComponents => commonComponents.optionalFields,\n);\n\nexport const tpaProvidersSelector = createSelector(\n commonComponentsSelector,\n commonComponents => ({\n providers: commonComponents.thirdPartyAuthContext.providers,\n secondaryProviders: commonComponents.thirdPartyAuthContext.secondaryProviders,\n }),\n);\n","import React, { useState } from 'react';\n\nimport {\n Form, TransitionReplace,\n} from '@openedx/paragon';\nimport PropTypes from 'prop-types';\n\nconst FormGroup = (props) => {\n const [hasFocus, setHasFocus] = useState(false);\n\n const handleFocus = (e) => {\n setHasFocus(true);\n if (props.handleFocus) { props.handleFocus(e); }\n };\n const handleClick = (e) => {\n if (props.handleClick) { props.handleClick(e); }\n };\n const handleOnBlur = (e) => {\n setHasFocus(false);\n if (props.handleBlur) { props.handleBlur(e); }\n };\n\n return (\n \n \n {props.options ? props.options() : null}\n \n \n {hasFocus && props.helpText ? (\n \n {props.helpText.map((message, index) => (\n \n {message}\n
\n
\n ))}\n
\n ) :
}\n \n {props.errorMessage !== '' && (\n {props.errorMessage}\n )}\n {props.children}\n \n );\n};\n\nFormGroup.defaultProps = {\n as: 'input',\n autoComplete: null,\n borderClass: '',\n children: null,\n className: '',\n errorMessage: '',\n handleBlur: null,\n handleChange: () => {},\n handleClick: null,\n handleFocus: null,\n helpText: [],\n options: null,\n readOnly: false,\n spellCheck: null,\n trailingElement: null,\n type: 'text',\n};\n\nFormGroup.propTypes = {\n as: PropTypes.string,\n autoComplete: PropTypes.string,\n borderClass: PropTypes.string,\n children: PropTypes.element,\n className: PropTypes.string,\n errorMessage: PropTypes.string,\n floatingLabel: PropTypes.string.isRequired,\n handleBlur: PropTypes.func,\n handleChange: PropTypes.func,\n handleClick: PropTypes.func,\n handleFocus: PropTypes.func,\n helpText: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string.isRequired,\n options: PropTypes.func,\n readOnly: PropTypes.bool,\n spellCheck: PropTypes.string,\n trailingElement: PropTypes.element,\n type: PropTypes.string,\n value: PropTypes.string.isRequired,\n};\n\nexport default FormGroup;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'register.page.title': {\n id: 'register.page.title',\n defaultMessage: 'Register | {siteName}',\n description: 'register page title',\n },\n // Field labels\n 'registration.fullname.label': {\n id: 'registration.fullname.label',\n defaultMessage: 'Full name',\n description: 'Label that appears above fullname field',\n },\n 'registration.email.label': {\n id: 'registration.email.label',\n defaultMessage: 'Email',\n description: 'Label that appears above email field on register page',\n },\n 'registration.username.label': {\n id: 'registration.username.label',\n defaultMessage: 'Public username',\n description: 'Label that appears above username field',\n },\n 'registration.password.label': {\n id: 'registration.password.label',\n defaultMessage: 'Password',\n description: 'Label that appears above password field',\n },\n 'registration.country.label': {\n id: 'registration.country.label',\n defaultMessage: 'Country/Region',\n description: 'Placeholder for the country options dropdown.',\n },\n 'registration.opt.in.label': {\n id: 'registration.opt.in.label',\n defaultMessage: 'I agree that {siteName} may send me marketing messages.',\n description: 'Text for opt in option on register page.',\n },\n // Help text\n 'help.text.name': {\n id: 'help.text.name',\n defaultMessage: 'This name will be used by any certificates that you earn.',\n description: 'Help text for fullname field on registration page',\n },\n 'help.text.username.1': {\n id: 'help.text.username.1',\n defaultMessage: 'The name that will identify you in your courses.',\n description: 'Part of help text for username field on registration page',\n },\n 'help.text.username.2': {\n id: 'help.text.username.2',\n defaultMessage: 'This can not be changed later.',\n description: 'Part of help text for username field on registration page',\n },\n 'help.text.email': {\n id: 'help.text.email',\n defaultMessage: 'For account activation and important updates',\n description: 'Help text for email field on registration page',\n },\n // Form buttons\n 'create.account.for.free.button': {\n id: 'create.account.for.free.button',\n defaultMessage: 'Create an account for free',\n description: 'Label text for registration form submission button',\n },\n 'create.account.cta.button': {\n id: 'create.account.cta.button',\n defaultMessage: '{label}',\n description: 'Label text for registration form submission button for those users who are landing through redirections',\n },\n // Institution login\n 'register.institution.login.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 'invalid.country.field.error': {\n id: 'invalid.country.field.error',\n defaultMessage: 'Country must match with an option available in the dropdown.',\n description: 'Error message when country is invalid',\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","export const COMMON_EMAIL_PROVIDERS = [\n 'hotmail.com', 'yahoo.com', 'outlook.com', 'live.com', 'gmail.com',\n];\n\nexport const DEFAULT_SERVICE_PROVIDER_DOMAINS = ['yahoo', 'hotmail', 'live', 'outlook', 'gmail'];\n\nexport const DEFAULT_TOP_LEVEL_DOMAINS = [\n 'aaa', 'aarp', 'abarth', 'abb', 'abbott', 'abbvie', 'abc', 'able', 'abogado', 'abudhabi', 'ac', 'academy',\n 'accenture', 'accountant', 'accountants', 'aco', 'active', 'actor', 'ad', 'adac', 'ads', 'adult', 'ae', 'aeg', 'aero',\n 'aetna', 'af', 'afamilycompany', 'afl', 'africa', 'ag', 'agakhan', 'agency', 'ai', 'aig', 'aigo', 'airbus', 'airforce',\n 'airtel', 'akdn', 'al', 'alfaromeo', 'alibaba', 'alipay', 'allfinanz', 'allstate', 'ally', 'alsace', 'alstom', 'am',\n 'amazon', 'americanexpress', 'americanfamily', 'amex', 'amfam', 'amica', 'amsterdam', 'an', 'analytics', 'android',\n 'anquan', 'anz', 'ao', 'aol', 'apartments', 'app', 'apple', 'aq', 'aquarelle', 'ar', 'arab', 'aramco', 'archi', 'army',\n 'arpa', 'art', 'arte', 'as', 'asda', 'asia', 'associates', 'at', 'athleta', 'attorney', 'au', 'auction', 'audi',\n 'audible', 'audio', 'auspost', 'author', 'auto', 'autos', 'avianca', 'aw', 'aws', 'ax', 'axa', 'az', 'azure', 'ba',\n 'baby', 'baidu', 'banamex', 'bananarepublic', 'band', 'bank', 'bar', 'barcelona', 'barclaycard', 'barclays',\n 'barefoot', 'bargains', 'baseball', 'basketball', 'bauhaus', 'bayern', 'bb', 'bbc', 'bbt', 'bbva', 'bcg', 'bcn', 'bd',\n 'be', 'beats', 'beauty', 'beer', 'bentley', 'berlin', 'best', 'bestbuy', 'bet', 'bf', 'bg', 'bh', 'bharti', 'bi',\n 'bible', 'bid', 'bike', 'bing', 'bingo', 'bio', 'biz', 'bj', 'bl', 'black', 'blackfriday', 'blanco', 'blockbuster',\n 'blog', 'bloomberg', 'blue', 'bm', 'bms', 'bmw', 'bn', 'bnl', 'bnpparibas', 'bo', 'boats', 'boehringer', 'bofa', 'bom',\n 'bond', 'boo', 'book', 'booking', 'boots', 'bosch', 'bostik', 'boston', 'bot', 'boutique', 'box', 'bq', 'br',\n 'bradesco', 'bridgestone', 'broadway', 'broker', 'brother', 'brussels', 'bs', 'bt', 'budapest', 'bugatti', 'build',\n 'builders', 'business', 'buy', 'buzz', 'bv', 'bw', 'by', 'bz', 'bzh', 'ca', 'cab', 'cafe', 'cal', 'call',\n 'calvinklein', 'cam', 'camera', 'camp', 'cancerresearch', 'canon', 'capetown', 'capital', 'capitalone', 'car',\n 'caravan', 'cards', 'care', 'career', 'careers', 'cars', 'cartier', 'casa', 'case', 'caseih', 'cash', 'casino', 'cat',\n 'catering', 'catholic', 'cba', 'cbn', 'cbre', 'cbs', 'cc', 'cd', 'ceb', 'center', 'ceo', 'cern', 'cf', 'cfa', 'cfd',\n 'cg', 'ch', 'chanel', 'channel', 'charity', 'chase', 'chat', 'cheap', 'chintai', 'chloe', 'christmas', 'chrome',\n 'chrysler', 'church', 'ci', 'cipriani', 'circle', 'cisco', 'citadel', 'citi', 'citic', 'city', 'cityeats', 'ck', 'cl',\n 'claims', 'cleaning', 'click', 'clinic', 'clinique', 'clothing', 'cloud', 'club', 'clubmed', 'cm', 'cn', 'co', 'coach',\n 'codes', 'coffee', 'college', 'cologne', 'com', 'comcast', 'commbank', 'community', 'company', 'compare', 'computer',\n 'comsec', 'condos', 'construction', 'consulting', 'contact', 'contractors', 'cooking', 'cookingchannel', 'cool', 'coop',\n 'corsica', 'country', 'coupon', 'coupons', 'courses', 'cpa', 'cr', 'credit', 'creditcard', 'creditunion', 'cricket',\n 'crown', 'crs', 'cruise', 'cruises', 'csc', 'cu', 'cuisinella', 'cv', 'cw', 'cx', 'cy', 'cymru', 'cyou', 'cz', 'dabur',\n 'dad', 'dance', 'data', 'date', 'dating', 'datsun', 'day', 'dclk', 'dds', 'de', 'deal', 'dealer', 'deals', 'degree',\n 'delivery', 'dell', 'deloitte', 'delta', 'democrat', 'dental', 'dentist', 'desi', 'design', 'dev', 'dhl', 'diamonds',\n 'diet', 'digital', 'direct', 'directory', 'discount', 'discover', 'dish', 'diy', 'dj', 'dk', 'dm', 'dnp', 'do', 'docs',\n 'doctor', 'dodge', 'dog', 'doha', 'domains', 'doosan', 'dot', 'download', 'drive', 'dtv', 'dubai', 'duck', 'dunlop',\n 'duns', 'dupont', 'durban', 'dvag', 'dvr', 'dz', 'earth', 'eat', 'ec', 'eco', 'edeka', 'edu', 'education', 'ee', 'eg',\n 'eh', 'email', 'emerck', 'energy', 'engineer', 'engineering', 'enterprises', 'epost', 'epson', 'equipment', 'er',\n 'ericsson', 'erni', 'es', 'esq', 'estate', 'esurance', 'et', 'etisalat', 'eu', 'eurovision', 'eus', 'events', 'everbank',\n 'exchange', 'expert', 'exposed', 'express', 'extraspace', 'fage', 'fail', 'fairwinds', 'faith', 'family', 'fan', 'fans',\n 'farm', 'farmers', 'fashion', 'fast', 'fedex', 'feedback', 'ferrari', 'ferrero', 'fi', 'fiat', 'fidelity', 'fido', 'film',\n 'final', 'finance', 'financial', 'fire', 'firestone', 'firmdale', 'fish', 'fishing', 'fit', 'fitness', 'fj', 'fk',\n 'flickr', 'flights', 'flir', 'florist', 'flowers', 'flsmidth', 'fly', 'fm', 'fo', 'foo', 'food', 'foodnetwork', 'football',\n 'ford', 'forex', 'forsale', 'forum', 'foundation', 'fox', 'fr', 'free', 'fresenius', 'frl', 'frogans', 'frontdoor',\n 'frontier', 'ftr', 'fujitsu', 'fujixerox', 'fun', 'fund', 'furniture', 'futbol', 'fyi', 'ga', 'gal', 'gallery', 'gallo',\n 'gallup', 'game', 'games', 'gap', 'garden', 'gay', 'gb', 'gbiz', 'gd', 'gdn', 'ge', 'gea', 'gent', 'genting', 'george',\n 'gf', 'gg', 'ggee', 'gh', 'gi', 'gift', 'gifts', 'gives', 'giving', 'gl', 'glade', 'glass', 'gle', 'global', 'globo',\n 'gm', 'gmail', 'gmbh', 'gmo', 'gmx', 'gn', 'godaddy', 'gold', 'goldpoint', 'golf', 'goo', 'goodhands', 'goodyear', 'goog',\n 'google', 'gop', 'got', 'gov', 'gp', 'gq', 'gr', 'grainger', 'graphics', 'gratis', 'green', 'gripe', 'grocery', 'group',\n 'gs', 'gt', 'gu', 'guardian', 'gucci', 'guge', 'guide', 'guitars', 'guru', 'gw', 'gy', 'hair', 'hamburg', 'hangout',\n 'haus', 'hbo', 'hdfc', 'hdfcbank', 'health', 'healthcare', 'help', 'helsinki', 'here', 'hermes', 'hgtv', 'hiphop',\n 'hisamitsu', 'hitachi', 'hiv', 'hk', 'hkt', 'hm', 'hn', 'hockey', 'holdings', 'holiday', 'homedepot', 'homegoods',\n 'homes', 'homesense', 'honda', 'honeywell', 'horse', 'hospital', 'host', 'hosting', 'hot', 'hoteles', 'hotels', 'hotmail',\n 'house', 'how', 'hr', 'hsbc', 'ht', 'htc', 'hu', 'hughes', 'hyatt', 'hyundai', 'ibm', 'icbc', 'ice', 'icu', 'id', 'ie',\n 'ieee', 'ifm', 'iinet', 'ikano', 'il', 'im', 'imamat', 'imdb', 'immo', 'immobilien', 'in', 'inc', 'industries', 'infiniti',\n 'info', 'ing', 'ink', 'institute', 'insurance', 'insure', 'int', 'intel', 'international', 'intuit', 'investments',\n 'io', 'ipiranga', 'iq', 'ir', 'irish', 'is', 'iselect', 'ismaili', 'ist', 'istanbul', 'it', 'itau', 'itv', 'iveco', 'iwc',\n 'jaguar', 'java', 'jcb', 'jcp', 'je', 'jeep', 'jetzt', 'jewelry', 'jio', 'jlc', 'jll', 'jm', 'jmp', 'jnj', 'jo',\n 'jobs', 'joburg', 'jot', 'joy', 'jp', 'jpmorgan', 'jprs', 'juegos', 'juniper', 'kaufen', 'kddi', 'ke', 'kerryhotels',\n 'kerrylogistics', 'kerryproperties', 'kfh', 'kg', 'kh', 'ki', 'kia', 'kim', 'kinder', 'kindle', 'kitchen', 'kiwi', 'km',\n 'kn', 'koeln', 'komatsu', 'kosher', 'kp', 'kpmg', 'kpn', 'kr', 'krd', 'kred', 'kuokgroup', 'kw', 'ky', 'kyoto', 'kz',\n 'la', 'lacaixa', 'ladbrokes', 'lamborghini', 'lamer', 'lancaster', 'lancia', 'lancome', 'land', 'landrover', 'lanxess',\n 'lasalle', 'lat', 'latino', 'latrobe', 'law', 'lawyer', 'lb', 'lc', 'lds', 'lease', 'leclerc', 'lefrak', 'legal',\n 'lego', 'lexus', 'lgbt', 'li', 'liaison', 'lidl', 'life', 'lifeinsurance', 'lifestyle', 'lighting', 'like', 'lilly',\n 'limited', 'limo', 'lincoln', 'linde', 'link', 'lipsy', 'live', 'living', 'lixil', 'lk', 'llc', 'llp', 'loan', 'loans',\n 'locker', 'locus', 'loft', 'lol', 'london', 'lotte', 'lotto', 'love', 'lpl', 'lplfinancial', 'lr', 'ls', 'lt', 'ltd',\n 'ltda', 'lu', 'lundbeck', 'lupin', 'luxe', 'luxury', 'lv', 'ly', 'ma', 'macys', 'madrid', 'maif', 'maison', 'makeup',\n 'man', 'management', 'mango', 'map', 'market', 'marketing', 'markets', 'marriott', 'marshalls', 'maserati', 'mattel',\n 'mba', 'mc', 'mcd', 'mcdonalds', 'mckinsey', 'md', 'me', 'med', 'media', 'meet', 'melbourne', 'meme', 'memorial', 'men',\n 'menu', 'meo', 'merckmsd', 'metlife', 'mf', 'mg', 'mh', 'miami', 'microsoft', 'mil', 'mini', 'mint', 'mit', 'mitsubishi',\n 'mk', 'ml', 'mlb', 'mls', 'mm', 'mma', 'mn', 'mo', 'mobi', 'mobile', 'mobily', 'moda', 'moe', 'moi', 'mom', 'monash',\n 'money', 'monster', 'montblanc', 'mopar', 'mormon', 'mortgage', 'moscow', 'moto', 'motorcycles', 'mov', 'movie', 'movistar',\n 'mp', 'mq', 'mr', 'ms', 'msd', 'mt', 'mtn', 'mtpc', 'mtr', 'mu', 'museum', 'mutual', 'mutuelle', 'mv', 'mw', 'mx', 'my',\n 'mz', 'na', 'nab', 'nadex', 'nagoya', 'name', 'nationwide', 'natura', 'navy', 'nba', 'nc', 'ne', 'nec', 'net', 'netbank',\n 'netflix', 'network', 'neustar', 'new', 'newholland', 'news', 'next', 'nextdirect', 'nexus', 'nf', 'nfl', 'ng', 'ngo', 'nhk',\n 'ni', 'nico', 'nike', 'nikon', 'ninja', 'nissan', 'nissay', 'nl', 'no', 'nokia', 'northwesternmutual', 'norton', 'now',\n 'nowruz', 'nowtv', 'np', 'nr', 'nra', 'nrw', 'ntt', 'nu', 'nyc', 'nz', 'obi', 'observer', 'off', 'office', 'okinawa',\n 'olayan', 'olayangroup', 'oldnavy', 'ollo', 'om', 'omega', 'one', 'ong', 'onl', 'online', 'onyourside', 'ooo', 'open',\n 'oracle', 'orange', 'org', 'organic', 'orientexpress', 'origins', 'osaka', 'otsuka', 'ott', 'ovh', 'pa', 'page',\n 'pamperedchef', 'panasonic', 'panerai', 'paris', 'pars', 'partners', 'parts', 'party', 'passagens', 'pay', 'pccw', 'pe',\n 'pet', 'pf', 'pfizer', 'pg', 'ph', 'pharmacy', 'phd', 'philips', 'phone', 'photo', 'photography', 'photos', 'physio',\n 'piaget', 'pics', 'pictet', 'pictures', 'pid', 'pin', 'ping', 'pink', 'pioneer', 'pizza', 'pk', 'pl', 'place', 'play',\n 'playstation', 'plumbing', 'plus', 'pm', 'pn', 'pnc', 'pohl', 'poker', 'politie', 'porn', 'post', 'pr', 'pramerica',\n 'praxi', 'press', 'prime', 'pro', 'prod', 'productions', 'prof', 'progressive', 'promo', 'properties', 'property',\n 'protection', 'pru', 'prudential', 'ps', 'pt', 'pub', 'pw', 'pwc', 'py', 'qa', 'qpon', 'quebec', 'quest', 'qvc',\n 'racing', 'radio', 'raid', 're', 'read', 'realestate', 'realtor', 'realty', 'recipes', 'red', 'redstone', 'redumbrella',\n 'rehab', 'reise', 'reisen', 'reit', 'reliance', 'ren', 'rent', 'rentals', 'repair', 'report', 'republican', 'rest',\n 'restaurant', 'review', 'reviews', 'rexroth', 'rich', 'richardli', 'ricoh', 'rightathome', 'ril', 'rio', 'rip', 'rmit',\n 'ro', 'rocher', 'rocks', 'rodeo', 'rogers', 'room', 'rs', 'rsvp', 'ru', 'rugby', 'ruhr', 'run', 'rw', 'rwe', 'ryukyu',\n 'sa', 'saarland', 'safe', 'safety', 'sakura', 'sale', 'salon', 'samsclub', 'samsung', 'sandvik', 'sandvikcoromant',\n 'sanofi', 'sap', 'sapo', 'sarl', 'sas', 'save', 'saxo', 'sb', 'sbi', 'sbs', 'sc', 'sca', 'scb', 'schaeffler', 'schmidt',\n 'scholarships', 'school', 'schule', 'schwarz', 'science', 'scjohnson', 'scor', 'scot', 'sd', 'se', 'search', 'seat',\n 'secure', 'security', 'seek', 'select', 'sener', 'services', 'ses', 'seven', 'sew', 'sex', 'sexy', 'sfr', 'sg', 'sh',\n 'shangrila', 'sharp', 'shaw', 'shell', 'shia', 'shiksha', 'shoes', 'shop', 'shopping', 'shouji', 'show', 'showtime',\n 'shriram', 'si', 'silk', 'sina', 'singles', 'site', 'sj', 'sk', 'ski', 'skin', 'sky', 'skype', 'sl', 'sling', 'sm',\n 'smart', 'smile', 'sn', 'sncf', 'so', 'soccer', 'social', 'softbank', 'software', 'sohu', 'solar', 'solutions', 'song',\n 'sony', 'soy', 'spa', 'space', 'spiegel', 'sport', 'spot', 'spreadbetting', 'sr', 'srl', 'srt', 'ss', 'st', 'stada',\n 'staples', 'star', 'starhub', 'statebank', 'statefarm', 'statoil', 'stc', 'stcgroup', 'stockholm', 'storage', 'store',\n 'stream', 'studio', 'study', 'style', 'su', 'sucks', 'supplies', 'supply', 'support', 'surf', 'surgery', 'suzuki', 'sv',\n 'swatch', 'swiftcover', 'swiss', 'sx', 'sy', 'sydney', 'symantec', 'systems', 'sz', 'tab', 'taipei', 'talk', 'taobao',\n 'target', 'tatamotors', 'tatar', 'tattoo', 'tax', 'taxi', 'tc', 'tci', 'td', 'tdk', 'team', 'tech', 'technology', 'tel',\n 'telecity', 'telefonica', 'temasek', 'tennis', 'teva', 'tf', 'tg', 'th', 'thd', 'theater', 'theatre', 'tiaa', 'tickets',\n 'tienda', 'tiffany', 'tips', 'tires', 'tirol', 'tj', 'tjmaxx', 'tjx', 'tk', 'tkmaxx', 'tl', 'tm', 'tmall', 'tn', 'to',\n 'today', 'tokyo', 'tools', 'top', 'toray', 'toshiba', 'total', 'tours', 'town', 'toyota', 'toys', 'tp', 'tr', 'trade',\n 'trading', 'training', 'travel', 'travelchannel', 'travelers', 'travelersinsurance', 'trust', 'trv', 'tt', 'tube', 'tui',\n 'tunes', 'tushu', 'tv', 'tvs', 'tw', 'tz', 'ua', 'ubank', 'ubs', 'uconnect', 'ug', 'uk', 'um', 'unicom', 'university',\n 'uno', 'uol', 'ups', 'us', 'uy', 'uz', 'va', 'vacations', 'vana', 'vanguard', 'vc', 've', 'vegas', 'ventures', 'verisign',\n 'versicherung', 'vet', 'vg', 'vi', 'viajes', 'video', 'vig', 'viking', 'villas', 'vin', 'vip', 'virgin', 'visa', 'vision',\n 'vista', 'vistaprint', 'viva', 'vivo', 'vlaanderen', 'vn', 'vodka', 'volkswagen', 'volvo', 'vote', 'voting', 'voto',\n 'voyage', 'vu', 'vuelos', 'wales', 'walmart', 'walter', 'wang', 'wanggou', 'warman', 'watch', 'watches', 'weather',\n 'weatherchannel', 'webcam', 'weber', 'website', 'wed', 'wedding', 'weibo', 'weir', 'wf', 'whoswho', 'wien', 'wiki',\n 'williamhill', 'win', 'windows', 'wine', 'winners', 'wme', 'wolterskluwer', 'woodside', 'work', 'works', 'world', 'wow',\n 'ws', 'wtc', 'wtf', 'xbox', 'xerox', 'xfinity', 'xihuan', 'xin', '测试', 'कॉम', 'परीक्षा', 'セール', '佛山', 'ಭಾರತ', '慈善',\n '集团', '在线', '한국', 'ଭାରତ', '大众汽车', '点看', 'คอม', 'ভাৰত', 'ভারত', '八卦', 'ישראל\\u200e', 'موقع\\u200e', 'বাংলা', '公益',\n '公司', '香格里拉', '网站', '移动', '我爱你', 'москва', 'испытание', 'қаз', 'католик', 'онлайн', 'сайт', '联通', 'срб', 'бг',\n 'бел', 'קום\\u200e', '时尚', '微博', '테스트', '淡马锡', 'ファッション', 'орг', 'नेट', 'ストア', 'アマゾン', '삼성', 'சிங்கப்பூர்', '商标',\n '商店', '商城', 'дети', 'мкд', 'טעסט\\u200e', 'ею', 'ポイント', '新闻', '工行', '家電', 'كوم\\u200e', '中文网', '中信', '中国',\n '中國', '娱乐', '谷歌', 'భారత్', 'ලංකා', '電訊盈科', '购物', '測試', 'クラウド', 'ભારત', '通販', 'भारतम्', 'भारत', 'भारोत', 'آزمایشی\\u200e',\n 'பரிட்சை', '网店', 'संगठन', '餐厅', '网络', 'ком', 'укр', '香港', '亚马逊', '诺基亚', '食品', 'δοκιμή', '飞利浦', 'إختبار\\u200e',\n '台湾', '台灣', '手表', '手机', 'мон', 'الجزائر\\u200e', 'عمان\\u200e', 'ارامكو\\u200e', 'ایران\\u200e', 'العليان\\u200e',\n 'اتصالات\\u200e', 'امارات\\u200e', 'بازار\\u200e', 'موريتانيا\\u200e', 'پاکستان\\u200e', 'الاردن\\u200e', 'موبايلي\\u200e',\n 'بارت\\u200e', 'بھارت\\u200e', 'المغرب\\u200e', 'ابوظبي\\u200e', 'البحرين\\u200e', 'السعودية\\u200e', 'ڀارت\\u200e',\n 'كاثوليك\\u200e', 'سودان\\u200e', 'همراه\\u200e', 'عراق\\u200e', 'مليسيا\\u200e', '澳門', '닷컴', '政府', 'شبكة\\u200e',\n 'بيتك\\u200e', 'عرب\\u200e', 'გე', '机构', '组织机构', '健康', 'ไทย', 'سورية\\u200e', '招聘', 'рус', 'рф', '珠宝',\n 'تونس\\u200e', '大拿', 'ລາວ', 'みんな', 'グーグル', 'ευ', 'ελ', '世界', '書籍', 'ഭാരതം', 'ਭਾਰਤ', '网址', '닷넷', 'コム',\n '天主教', '游戏', 'vermögensberater', 'vermögensberatung', '企业', '信息', '嘉里大酒店', '嘉里', 'مصر\\u200e',\n 'قطر\\u200e', '广东', 'இலங்கை', 'இந்தியா', 'հայ', '新加坡', 'فلسطين\\u200e', 'テスト', '政务', 'xperia', 'xxx',\n 'xyz', 'yachts', 'yahoo', 'yamaxun', 'yandex', 'ye', 'yodobashi', 'yoga', 'yokohama', 'you', 'youtube', 'yt',\n 'yun', 'za', 'zappos', 'zara', 'zero', 'zip', 'zippo', 'zm', 'zone', 'zuerich', 'zw',\n];\n","import { distance } from 'fastest-levenshtein';\n\nimport {\n COMMON_EMAIL_PROVIDERS,\n DEFAULT_SERVICE_PROVIDER_DOMAINS,\n DEFAULT_TOP_LEVEL_DOMAINS,\n} from './constants';\nimport { VALID_EMAIL_REGEX } from '../../../data/constants';\nimport messages from '../../messages';\n\nexport const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n\nexport const getLevenshteinSuggestion = (word, knownWords, similarityThreshold = 4) => {\n if (!word) {\n return null;\n }\n\n let minEditDistance = 100;\n let mostSimilar = word;\n\n for (let i = 0; i < knownWords.length; i++) {\n const editDistance = distance(knownWords[i].toLowerCase(), word.toLowerCase());\n if (editDistance < minEditDistance) {\n minEditDistance = editDistance;\n mostSimilar = knownWords[i];\n }\n }\n\n return minEditDistance <= similarityThreshold && word !== mostSimilar ? mostSimilar : null;\n};\n\nexport const getSuggestionForInvalidEmail = (domain, username) => {\n if (!domain) {\n return '';\n }\n\n const defaultDomains = ['yahoo', 'aol', 'hotmail', 'live', 'outlook', 'gmail'];\n const suggestion = getLevenshteinSuggestion(domain, COMMON_EMAIL_PROVIDERS);\n\n if (suggestion) {\n return `${username}@${suggestion}`;\n }\n\n for (let i = 0; i < defaultDomains.length; i++) {\n if (domain.includes(defaultDomains[i])) {\n return `${username}@${defaultDomains[i]}.com`;\n }\n }\n\n return '';\n};\n\nexport const validateEmailAddress = (value, username, domainName) => {\n let suggestion = null;\n const validation = {\n hasError: false,\n suggestion: '',\n type: '',\n };\n\n const hasMultipleSubdomains = value.match(/\\./g).length > 1;\n const [serviceLevelDomain, topLevelDomain] = domainName.split('.');\n const tldSuggestion = !DEFAULT_TOP_LEVEL_DOMAINS.includes(topLevelDomain);\n const serviceSuggestion = getLevenshteinSuggestion(serviceLevelDomain, DEFAULT_SERVICE_PROVIDER_DOMAINS, 2);\n\n if (DEFAULT_SERVICE_PROVIDER_DOMAINS.includes(serviceSuggestion || serviceLevelDomain)) {\n suggestion = `${username}@${serviceSuggestion || serviceLevelDomain}.com`;\n }\n\n if (!hasMultipleSubdomains && tldSuggestion) {\n validation.suggestion = suggestion;\n validation.type = 'error';\n } else if (serviceSuggestion) {\n validation.suggestion = suggestion;\n validation.type = 'warning';\n } else {\n suggestion = getLevenshteinSuggestion(domainName, COMMON_EMAIL_PROVIDERS, 3);\n if (suggestion) {\n validation.suggestion = `${username}@${suggestion}`;\n validation.type = 'warning';\n }\n }\n\n if (!hasMultipleSubdomains && tldSuggestion) {\n validation.hasError = true;\n }\n\n return validation;\n};\n\nconst validateEmail = (value, confirmEmailValue, formatMessage) => {\n let fieldError = '';\n let confirmEmailError = '';\n let emailSuggestion = { suggestion: '', type: '' };\n\n if (!value) {\n fieldError = formatMessage(messages['empty.email.field.error']);\n } else if (value.length <= 2) {\n fieldError = formatMessage(messages['email.invalid.format.error']);\n } else {\n const [username, domainName] = value.split('@');\n // Check if email address is invalid. If we have a suggestion for invalid email\n // provide that along with the error message.\n if (!emailRegex.test(value)) {\n fieldError = formatMessage(messages['email.invalid.format.error']);\n emailSuggestion = {\n suggestion: getSuggestionForInvalidEmail(domainName, username),\n type: 'error',\n };\n } else {\n const response = validateEmailAddress(value, username, domainName);\n if (response.hasError) {\n fieldError = formatMessage(messages['email.invalid.format.error']);\n delete response.hasError;\n }\n emailSuggestion = { ...response };\n\n if (confirmEmailValue && value !== confirmEmailValue) {\n confirmEmailError = formatMessage(messages['email.do.not.match']);\n }\n }\n }\n return { fieldError, confirmEmailError, suggestion: emailSuggestion };\n};\n\nexport default validateEmail;\n","import messages from '../../messages';\n\n// regex more focused towards url matching\nexport const URL_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// regex for html tags\nexport const HTML_REGEX = /<|>/u;\n\n// regex from backend\nexport const INVALID_NAME_REGEX = /https?:\\/\\/(?:[-\\w.]|(?:%[\\da-fA-F]{2}))*/g;\n\nconst validateName = (value, formatMessage) => {\n let fieldError = '';\n if (!value.trim()) {\n fieldError = formatMessage(messages['empty.name.field.error']);\n } else if (URL_REGEX.test(value) || HTML_REGEX.test(value) || INVALID_NAME_REGEX.test(value)) {\n fieldError = formatMessage(messages['name.validation.message']);\n }\n return fieldError;\n};\n\nexport default validateName;\n","import messages from '../../messages';\n\nexport const VALID_USERNAME_REGEX = /^[a-zA-Z0-9_-]*$/i;\nexport const usernameRegex = new RegExp(VALID_USERNAME_REGEX, 'i');\n\nconst validateUsername = (value, formatMessage) => {\n let fieldError = '';\n if (!value || value.length <= 1 || value.length > 30) {\n fieldError = formatMessage(messages['username.validation.message']);\n } else if (!usernameRegex.test(value)) {\n fieldError = formatMessage(messages['username.format.validation.message']);\n }\n return fieldError;\n};\n\nexport default validateUsername;\n","import { snakeCaseObject } from '@edx/frontend-platform';\n\nimport { LETTER_REGEX, NUMBER_REGEX } from '../../data/constants';\nimport messages from '../messages';\nimport validateEmail from '../RegistrationFields/EmailField/validator';\nimport validateName from '../RegistrationFields/NameField/validator';\nimport validateUsername from '../RegistrationFields/UsernameField/validator';\n\n/**\n * It validates the password field value\n * @param value\n * @param formatMessage\n * @returns {string}\n */\nexport const validatePasswordField = (value, formatMessage) => {\n let fieldError = '';\n if (!value || !LETTER_REGEX.test(value) || !NUMBER_REGEX.test(value) || value.length < 8) {\n fieldError = formatMessage(messages['password.validation.message']);\n }\n return fieldError;\n};\n\n/**\n * It accepts complete registration data as payload and checks if the form is valid.\n * @param payload\n * @param errors\n * @param configurableFormFields\n * @param fieldDescriptions\n * @param formatMessage\n * @returns {{fieldErrors, isValid: boolean}}\n */\nexport const isFormValid = (\n payload,\n errors,\n configurableFormFields,\n fieldDescriptions,\n formatMessage,\n) => {\n const fieldErrors = { ...errors };\n let isValid = true;\n let emailSuggestion = { suggestion: '', type: '' };\n\n Object.keys(payload).forEach(key => {\n switch (key) {\n case 'name':\n fieldErrors.name = validateName(payload.name, formatMessage);\n if (fieldErrors.name) { isValid = false; }\n break;\n case 'email': {\n const {\n fieldError, confirmEmailError, suggestion,\n } = validateEmail(payload.email, configurableFormFields?.confirm_email, formatMessage);\n if (fieldError) {\n fieldErrors.email = fieldError;\n isValid = false;\n }\n if (confirmEmailError) {\n fieldErrors.confirm_email = confirmEmailError;\n isValid = false;\n }\n emailSuggestion = suggestion;\n break;\n }\n case 'username':\n fieldErrors.username = validateUsername(payload.username, formatMessage);\n if (fieldErrors.username) { isValid = false; }\n break;\n case 'password':\n fieldErrors.password = validatePasswordField(payload.password, formatMessage);\n if (fieldErrors.password) { isValid = false; }\n break;\n default:\n break;\n }\n });\n\n // Don't validate when country field is optional or hidden and not present on registration form\n if (configurableFormFields?.country && !configurableFormFields.country?.displayValue) {\n fieldErrors.country = formatMessage(messages['empty.country.field.error']);\n isValid = false;\n } else if (configurableFormFields?.country && !configurableFormFields.country?.countryCode) {\n fieldErrors.country = formatMessage(messages['invalid.country.field.error']);\n isValid = false;\n }\n\n Object.keys(fieldDescriptions).forEach(key => {\n if (key === 'country' && !configurableFormFields?.country?.displayValue) {\n fieldErrors[key] = formatMessage(messages['empty.country.field.error']);\n } else if (!configurableFormFields[key]) {\n fieldErrors[key] = fieldDescriptions[key].error_message;\n }\n if (fieldErrors[key]) { isValid = false; }\n });\n\n return { isValid, fieldErrors, emailSuggestion };\n};\n\n/**\n * It prepares a payload for registration data that can be passed to registration API endpoint.\n * @param initPayload\n * @param configurableFormFields\n * @param showMarketingEmailOptInCheckbox\n * @param totalRegistrationTime\n * @param queryParams\n * @returns {*}\n */\nexport const prepareRegistrationPayload = (\n initPayload,\n configurableFormFields,\n showMarketingEmailOptInCheckbox,\n totalRegistrationTime,\n queryParams,\n) => {\n let payload = { ...initPayload };\n Object.keys(configurableFormFields).forEach((fieldName) => {\n if (fieldName === 'country') {\n payload[fieldName] = configurableFormFields[fieldName].countryCode;\n } else {\n payload[fieldName] = configurableFormFields[fieldName];\n }\n });\n\n // Don't send the marketing email opt-in value if the flag is turned off\n if (!showMarketingEmailOptInCheckbox) {\n delete payload.marketingEmailsOptIn;\n }\n\n payload = snakeCaseObject(payload);\n payload.totalRegistrationTime = totalRegistrationTime;\n\n // add query params to the payload\n payload = { ...payload, ...queryParams };\n return payload;\n};\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form, Icon, IconButton, OverlayTrigger, Tooltip, useToggle,\n} from '@openedx/paragon';\nimport {\n Check, Remove, Visibility, VisibilityOff,\n} from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport { LETTER_REGEX, NUMBER_REGEX } from '../data/constants';\nimport { clearRegistrationBackendError, fetchRealtimeValidations } from '../register/data/actions';\nimport { validatePasswordField } from '../register/data/utils';\n\nconst PasswordField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n const [isPasswordHidden, setHiddenTrue, setHiddenFalse] = useToggle(true);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const handleBlur = (e) => {\n const { name, value } = e.target;\n if (name === props.name && e.relatedTarget?.name === 'passwordIcon') {\n return; // Do not run validations on password icon click\n }\n\n let passwordValue = value;\n if (name === 'passwordIcon') {\n // To validate actual password value when onBlur is triggered by focusing out the password icon\n passwordValue = props.value;\n }\n\n if (props.handleBlur) {\n props.handleBlur({\n target: {\n name: props.name,\n value: passwordValue,\n },\n });\n }\n\n setShowTooltip(props.showRequirements && false);\n if (props.handleErrorChange) { // If rendering from register page\n const fieldError = validatePasswordField(passwordValue, formatMessage);\n if (fieldError) {\n props.handleErrorChange('password', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ password: passwordValue }));\n }\n }\n };\n\n const handleFocus = (e) => {\n if (e.target?.name === 'passwordIcon') {\n return; // Do not clear error on password icon focus\n }\n\n if (props.handleFocus) {\n props.handleFocus(e);\n }\n if (props.handleErrorChange) {\n props.handleErrorChange('password', '');\n dispatch(clearRegistrationBackendError('password'));\n }\n setTimeout(() => setShowTooltip(props.showRequirements && true), 150);\n };\n\n const HideButton = (\n \n );\n\n const ShowButton = (\n \n );\n\n const placement = window.innerWidth < 768 ? 'top' : 'left';\n const tooltip = (\n \n \n {LETTER_REGEX.test(props.value) ? : }\n {formatMessage(messages['one.letter'])}\n \n \n {NUMBER_REGEX.test(props.value) ? : }\n {formatMessage(messages['one.number'])}\n \n \n {props.value.length >= 8 ? : }\n {formatMessage(messages['eight.characters'])}\n \n \n );\n\n return (\n \n \n \n \n {props.errorMessage !== '' && (\n \n {props.errorMessage}\n {props.showScreenReaderText && {formatMessage(messages['password.sr.only.helping.text'])}}\n \n )}\n \n );\n};\n\nPasswordField.defaultProps = {\n borderClass: '',\n errorMessage: '',\n handleBlur: null,\n handleFocus: null,\n handleChange: () => {},\n handleErrorChange: null,\n showRequirements: true,\n showScreenReaderText: true,\n autoComplete: null,\n};\n\nPasswordField.propTypes = {\n borderClass: PropTypes.string,\n errorMessage: PropTypes.string,\n floatingLabel: PropTypes.string.isRequired,\n handleBlur: PropTypes.func,\n handleFocus: PropTypes.func,\n handleChange: PropTypes.func,\n handleErrorChange: PropTypes.func,\n name: PropTypes.string.isRequired,\n showRequirements: PropTypes.bool,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n showScreenReaderText: PropTypes.bool,\n};\n\nexport default PasswordField;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport Zendesk from 'react-zendesk';\n\nimport messages from './messages';\nimport { REGISTER_EMBEDDED_PAGE } from '../data/constants';\n\nconst ZendeskHelp = () => {\n const { formatMessage } = useIntl();\n const setting = {\n cookies: true,\n webWidget: {\n contactOptions: {\n enabled: false,\n },\n chat: {\n suppress: false,\n departments: {\n enabled: ['account settings', 'billing and payments', 'certificates', 'deadlines', 'errors and technical issues', 'other', 'proctoring'],\n },\n },\n contactForm: {\n ticketForms: [\n {\n id: 360003368814,\n subject: false,\n fields: [{ id: 'description', prefill: { '*': '' } }],\n },\n ],\n selectTicketForm: {\n '*': formatMessage(messages.selectTicketForm),\n },\n attachments: true,\n },\n helpCenter: {\n originalArticleButton: true,\n },\n answerBot: {\n suppress: false,\n contactOnlyAfterQuery: true,\n title: { '*': formatMessage(messages.supportTitle) },\n avatar: {\n url: getConfig().ZENDESK_LOGO_URL,\n name: { '*': formatMessage(messages.supportTitle) },\n },\n },\n },\n };\n\n if (window.location.pathname === REGISTER_EMBEDDED_PAGE) {\n return null;\n }\n\n return (\n \n );\n};\n\nexport default ZendeskHelp;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const FORGOT_PASSWORD = new AsyncActionType('FORGOT', 'PASSWORD');\nexport const FORGOT_PASSWORD_PERSIST_FORM_DATA = 'FORGOT_PASSWORD_PERSIST_FORM_DATA';\n\n// Forgot Password\nexport const forgotPassword = email => ({\n type: FORGOT_PASSWORD.BASE,\n payload: { email },\n});\n\nexport const forgotPasswordBegin = () => ({\n type: FORGOT_PASSWORD.BEGIN,\n});\n\nexport const forgotPasswordSuccess = email => ({\n type: FORGOT_PASSWORD.SUCCESS,\n payload: { email },\n});\n\nexport const forgotPasswordForbidden = () => ({\n type: FORGOT_PASSWORD.FORBIDDEN,\n});\n\nexport const forgotPasswordServerError = () => ({\n type: FORGOT_PASSWORD.FAILURE,\n});\n\nexport const setForgotPasswordFormData = (forgotPasswordFormData) => ({\n type: FORGOT_PASSWORD_PERSIST_FORM_DATA,\n payload: { forgotPasswordFormData },\n});\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'forgotPassword';\n\nexport const forgotPasswordSelector = state => ({ ...state[storeName] });\n\nexport const forgotPasswordResultSelector = createSelector(\n forgotPasswordSelector,\n forgotPassword => forgotPassword,\n);\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'forgot.password.page.title': {\n id: 'forgot.password.page.title',\n defaultMessage: 'Forgot Password | {siteName}',\n description: 'forgot password page title',\n },\n 'forgot.password.page.heading': {\n id: 'forgot.password.page.heading',\n defaultMessage: 'Reset password',\n description: 'The page heading for the forgot password page.',\n },\n 'forgot.password.page.instructions': {\n id: 'forgot.password.page.instructions',\n defaultMessage: 'Доорх талбарт бүртгэлтэй и-мэйл хаягаа оруулна уу? Бид таньд хэрхэн нууц үг солих зааврын хамт и-мэйл илгээх болно.',\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: 'Илгээх',\n description: 'Submit button text for the forgot password page.',\n },\n 'forgot.password.error.alert.title': {\n id: 'forgot.password.error.alert.title.',\n defaultMessage: 'We were unable to contact you.',\n description: 'Failed to send password recovery email.',\n },\n 'forgot.password.error.message.title': {\n id: 'forgot.password.error.message.title',\n defaultMessage: 'An error occurred.',\n description: 'Title for message that appears when error occurs for password assistance page',\n },\n 'forgot.password.request.in.progress.message': {\n id: 'forgot.password.request.in.progress.message',\n defaultMessage: 'Your previous request is in progress, please try again in a few moments.',\n description: 'Message displayed when previous password reset request is still in progress.',\n },\n 'forgot.password.empty.email.field.error': {\n id: 'forgot.password.empty.email.field.error',\n defaultMessage: 'Enter your email',\n description: 'Error message that appears when user tries to submit empty email field',\n },\n 'forgot.password.email.help.text': {\n id: 'forgot.password.email.help.text',\n defaultMessage: 'The email address you used to register with {platformName}',\n description: 'text help for the email',\n },\n // Confirmation Alert Message\n 'confirmation.message.title': {\n id: 'confirmation.message.title',\n defaultMessage: 'Check your email',\n description: 'Forgot password confirmation message title',\n },\n 'confirmation.support.link': {\n id: 'confirmation.support.link',\n defaultMessage: 'contact technical support',\n description: 'Technical support link text',\n },\n 'need.help.sign.in.text': {\n id: 'need.help.sign.in.text',\n defaultMessage: 'Need help signing in?',\n description: 'Sign in help link on forgot password page',\n },\n 'additional.help.text': {\n id: 'additional.help.text',\n defaultMessage: 'For additional help, contact {platformName} support at ',\n description: 'additional help text on forgot password page',\n },\n 'sign.in.text': {\n id: 'sign.in.text',\n defaultMessage: 'Sign in',\n description: 'login page link on password page',\n },\n 'extend.field.errors': {\n id: 'extend.field.errors',\n defaultMessage: '{emailError} below.',\n description: 'extends the field error for alert message',\n },\n // Reset password token validation failure\n 'invalid.token.heading': {\n id: 'invalid.token.heading',\n defaultMessage: 'Invalid password reset link',\n description: 'Alert heading when reset password link is invalid',\n },\n 'invalid.token.error.message': {\n id: 'invalid.token.error.message',\n defaultMessage: 'This password reset link is invalid. It may have been used already. Enter your email below to receive a new link.',\n description: 'Alert message when reset password link has expired or is invalid',\n },\n 'token.validation.rate.limit.error.heading': {\n id: 'token.validation.rate.limit.error.heading',\n defaultMessage: 'Too many requests',\n description: 'Too many request at server end point',\n },\n 'token.validation.rate.limit.error': {\n id: 'token.validation.rate.limit.error',\n defaultMessage: 'An error has occurred because of too many requests. Please try again after some time.',\n description: 'Error message that appears when server responds with 429 error code',\n },\n 'token.validation.internal.sever.error.heading': {\n id: 'token.validation.internal.sever.error.heading',\n defaultMessage: 'Token validation failure',\n description: 'Failed to validate reset password token error message.',\n },\n 'token.validation.internal.sever.error': {\n id: 'token.validation.internal.sever.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n // Error messages\n 'internal.server.error': {\n id: 'internal.server.error',\n defaultMessage: 'An error has occurred. Try refreshing the page, or check your internet connection.',\n description: 'Error message that appears when server responds with 500 error code',\n },\n});\nexport default messages;\n","export const TOKEN_STATE = {\n PENDING: 'token-pending',\n VALID: 'token-valid',\n};\n\n// password reset error codes\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const PASSWORD_RESET_ERROR = 'password-reset-error';\nexport const SUCCESS = 'success';\nexport const PASSWORD_VALIDATION_ERROR = 'password-validation-failure';\n\nexport const PASSWORD_RESET = {\n INVALID_TOKEN: 'invalid-token',\n INTERNAL_SERVER_ERROR: 'password-reset-internal-server-error',\n FORBIDDEN_REQUEST: 'password-reset-rate-limit-error',\n};\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@openedx/paragon';\nimport { CheckCircle, Error } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\nimport {\n COMPLETE_STATE, FORBIDDEN_STATE, FORM_SUBMISSION_ERROR, INTERNAL_SERVER_ERROR,\n} from '../data/constants';\nimport { PASSWORD_RESET } from '../reset-password/data/constants';\n\nconst ForgotPasswordAlert = (props) => {\n const { formatMessage } = useIntl();\n const { email, emailError } = props;\n let message = '';\n let heading = formatMessage(messages['forgot.password.error.alert.title']);\n let { status } = props;\n\n if (emailError) {\n status = FORM_SUBMISSION_ERROR;\n }\n\n switch (status) {\n case COMPLETE_STATE:\n heading = formatMessage(messages['confirmation.message.title']);\n message = (\n {email},\n supportLink: (\n \n {formatMessage(messages['confirmation.support.link'])}\n \n ),\n }}\n />\n );\n break;\n case INTERNAL_SERVER_ERROR:\n message = formatMessage(messages['internal.server.error']);\n break;\n case FORBIDDEN_STATE:\n heading = formatMessage(messages['forgot.password.error.message.title']);\n message = formatMessage(messages['forgot.password.request.in.progress.message']);\n break;\n case FORM_SUBMISSION_ERROR:\n message = formatMessage(messages['extend.field.errors'], { emailError });\n break;\n case PASSWORD_RESET.INVALID_TOKEN:\n heading = formatMessage(messages['invalid.token.heading']);\n message = formatMessage(messages['invalid.token.error.message']);\n break;\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = formatMessage(messages['token.validation.rate.limit.error.heading']);\n message = formatMessage(messages['token.validation.rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n heading = formatMessage(messages['token.validation.internal.sever.error.heading']);\n message = formatMessage(messages['token.validation.internal.sever.error']);\n break;\n default:\n break;\n }\n\n if (message) {\n return (\n \n {heading}\n

{message}

\n \n );\n }\n return null;\n};\n\nForgotPasswordAlert.defaultProps = {\n email: '',\n emailError: '',\n};\n\nForgotPasswordAlert.propTypes = {\n status: PropTypes.string.isRequired,\n email: PropTypes.string,\n emailError: PropTypes.string,\n};\n\nexport default ForgotPasswordAlert;\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'your.career.turning.point': {\n id: 'your.career.turning.point',\n defaultMessage: 'Your career turning point',\n description: 'Part of the heading \"Your career turning point is here.\" shown on Authn MFE',\n },\n 'is.here': {\n id: 'is.here',\n defaultMessage: 'is here.',\n description: 'Part of the heading \"Your career turning point is here.\" shown on Authn MFE',\n },\n});\n\nexport default messages;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@openedx/paragon';\n\nimport './index.scss';\nimport messages from './messages';\n\nconst LargeLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {getConfig().SITE_NAME}\n \n
\n

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

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

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

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

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

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

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

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

\n

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

\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nLargeLayout.propTypes = {\n fullName: PropTypes.string.isRequired,\n};\n\nexport default LargeLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@openedx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\nconst MediumLayout = ({ fullName }) => {\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, fullName })}\n

\n

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

\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n );\n};\n\nMediumLayout.propTypes = {\n fullName: PropTypes.string.isRequired,\n};\n\nexport default MediumLayout;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Hyperlink, Image } from '@openedx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from './messages';\n\nconst SmallLayout = ({ fullName }) => {\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, fullName })}\n

\n

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

\n
\n
\n
\n );\n};\n\nSmallLayout.propTypes = {\n fullName: PropTypes.string.isRequired,\n};\n\nexport default SmallLayout;\n","export default __webpack_public_path__ + \"74d76c14726b66106a6412d33fe392ce.png\";","import logo from '../images/logo.png';\n\nconst Footer = () => (\n
\n
\n \"Company\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n Сүхбаатар дүүрэг, 11 хороо, Ж.Батмөнхийн гудамж, Велокс төвийн 3-р\n давхар, 39-2, Улаанбаатар хот - 14192, Монгол улс\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n Утас: +976 77071797\n
\n
\n \n \n \n \n info@gurun.edu.mn\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n);\n\nexport default Footer;\n","import { useState } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { Link } from 'react-router-dom';\n\nimport logo from '../images/logo.png';\n\nconst Header = () => {\n const [showMobileMenu, setShowMobileMenu] = useState(false);\n\n return (\n
\n
\n \n \"logo\"\n \n\n \n
\n\n
\n
\n \n Миний хичээл\n \n \n Хичээлүүд\n \n \n Бүртгүүлэх\n \n \n Нэвтрэх\n \n
\n
\n
\n );\n};\n\nexport default Header;\n","import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { breakpoints } from '@openedx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\n\n// import { DefaultLargeLayout, DefaultMediumLayout, DefaultSmallLayout } from './components/default-layout';\nimport {\n ImageExtraSmallLayout, ImageLargeLayout, ImageMediumLayout, ImageSmallLayout,\n} from './components/image-layout';\nimport { AuthLargeLayout, AuthMediumLayout, AuthSmallLayout } from './components/welcome-page-layout';\nimport Footer from './footer';\nimport Header from './header';\n\nconst BaseContainer = ({ children, showWelcomeBanner, fullName }) => {\n const enableImageLayout = getConfig().ENABLE_IMAGE_LAYOUT;\n\n if (enableImageLayout) {\n return (\n
\n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n \n {showWelcomeBanner ? : }\n \n
\n {children}\n
\n
\n );\n }\n\n return (\n
\n
\n
\n
\n
\n {children}\n
\n {/*
\n \"\"\n
*/}\n
\n
\n
\n
\n // <>\n //
\n //
\n // \n // {showWelcomeBanner ? : }\n // \n // \n // {showWelcomeBanner ? : }\n // \n // \n // {showWelcomeBanner ? : }\n // \n //
\n // {children}\n //
\n //
\n // \n );\n};\n\nBaseContainer.defaultProps = {\n showWelcomeBanner: false,\n fullName: null,\n};\n\nBaseContainer.propTypes = {\n children: PropTypes.node.isRequired,\n showWelcomeBanner: PropTypes.bool,\n fullName: PropTypes.string,\n};\n\nexport default BaseContainer;\n","/* eslint-disable max-len */\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form,\n Hyperlink,\n // Icon,\n StatefulButton,\n // Tab,\n // Tabs,\n} from '@openedx/paragon';\n// import { ChevronLeft } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport {\n Link,\n // , useNavigate\n} from 'react-router-dom';\n\nimport { forgotPassword, setForgotPasswordFormData } from './data/actions';\nimport { forgotPasswordResultSelector } from './data/selectors';\nimport ForgotPasswordAlert from './ForgotPasswordAlert';\nimport messages from './messages';\nimport BaseContainer from '../base-container';\nimport { FormGroup } from '../common-components';\nimport {\n DEFAULT_STATE,\n // LOGIN_PAGE,\n VALID_EMAIL_REGEX,\n} from '../data/constants';\nimport {\n // updatePathWithQueryParams,\n windowScrollTo,\n} from '../data/utils';\n\nconst ForgotPasswordPage = (props) => {\n const platformName = getConfig().SITE_NAME;\n const emailRegex = new RegExp(VALID_EMAIL_REGEX, 'i');\n const {\n status, submitState, emailValidationError,\n } = props;\n\n const { formatMessage } = useIntl();\n const [email, setEmail] = useState(props.email);\n const [bannerEmail, setBannerEmail] = useState('');\n const [formErrors, setFormErrors] = useState('');\n const [validationError, setValidationError] = useState(emailValidationError);\n // const navigate = useNavigate();\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'reset');\n sendTrackEvent('edx.bi.password_reset_form.viewed', { category: 'user-engagement' });\n }, []);\n\n useEffect(() => {\n setValidationError(emailValidationError);\n }, [emailValidationError]);\n\n useEffect(() => {\n if (status === 'complete') {\n setEmail('');\n }\n }, [status]);\n\n const getValidationMessage = (value) => {\n let error = '';\n\n if (value === '') {\n error = formatMessage(messages['forgot.password.empty.email.field.error']);\n } else if (!emailRegex.test(value)) {\n error = formatMessage(messages['forgot.password.page.invalid.email.message']);\n }\n\n return error;\n };\n\n const handleBlur = () => {\n props.setForgotPasswordFormData({ email, emailValidationError: getValidationMessage(email) });\n };\n\n const handleFocus = () => props.setForgotPasswordFormData({ emailValidationError: '' });\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setBannerEmail(email);\n\n const error = getValidationMessage(email);\n if (error) {\n setFormErrors(error);\n props.setForgotPasswordFormData({ email, emailValidationError: error });\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n } else {\n props.forgotPassword(email);\n }\n };\n\n // const tabTitle = (\n //
\n // \n // {formatMessage(messages['sign.in.text'])}\n //
\n // );\n\n return (\n \n \n {formatMessage(messages['forgot.password.page.title'],\n { siteName: getConfig().SITE_NAME })}\n \n \n
\n {/* navigate(updatePathWithQueryParams(key))}>\n \n */}\n
\n

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

\n

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

\n\n
\n \n\n
{formatMessage(messages['forgot.password.page.email.field.label'])}
\n setEmail(e.target.value)}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n // helpText={[formatMessage(messages['forgot.password.email.help.text'], { platformName })]}\n />\n e.preventDefault()}\n />\n \n Нэвтрэх\n \n {/* {(getConfig().LOGIN_ISSUE_SUPPORT_LINK) && (\n \n {formatMessage(messages['need.help.sign.in.text'])}\n \n )} */}\n

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

\n \n
\n
\n
\n );\n};\n\nForgotPasswordPage.propTypes = {\n email: PropTypes.string,\n emailValidationError: PropTypes.string,\n forgotPassword: PropTypes.func.isRequired,\n setForgotPasswordFormData: PropTypes.func.isRequired,\n status: PropTypes.string,\n submitState: PropTypes.string,\n};\n\nForgotPasswordPage.defaultProps = {\n email: '',\n emailValidationError: '',\n status: null,\n submitState: DEFAULT_STATE,\n};\n\nexport default connect(\n forgotPasswordResultSelector,\n {\n forgotPassword,\n setForgotPasswordFormData,\n },\n)(ForgotPasswordPage);\n","import { AsyncActionType } from '../../data/utils';\n\nexport const RESET_PASSWORD = new AsyncActionType('RESET', 'PASSWORD');\nexport const VALIDATE_TOKEN = new AsyncActionType('VALIDATE', 'TOKEN');\nexport const PASSWORD_RESET_FAILURE = 'PASSWORD_RESET_FAILURE';\n\nexport const passwordResetFailure = (errorCode) => ({\n type: PASSWORD_RESET_FAILURE,\n payload: { errorCode },\n});\n\n// Validate confirmation token\nexport const validateToken = (token) => ({\n type: VALIDATE_TOKEN.BASE,\n payload: { token },\n});\n\nexport const validateTokenBegin = () => ({\n type: VALIDATE_TOKEN.BEGIN,\n});\n\nexport const validateTokenSuccess = (tokenStatus, token) => ({\n type: VALIDATE_TOKEN.SUCCESS,\n payload: { tokenStatus, token },\n});\n\nexport const validateTokenFailure = errorCode => ({\n type: VALIDATE_TOKEN.FAILURE,\n payload: { errorCode },\n});\n\n// Reset Password\nexport const resetPassword = (formPayload, token, params) => ({\n type: RESET_PASSWORD.BASE,\n payload: { formPayload, token, params },\n});\n\nexport const resetPasswordBegin = () => ({\n type: RESET_PASSWORD.BEGIN,\n});\n\nexport const resetPasswordSuccess = data => ({\n type: RESET_PASSWORD.SUCCESS,\n payload: { data },\n});\n\nexport const resetPasswordFailure = (errorCode, errorMsg = null) => ({\n type: RESET_PASSWORD.FAILURE,\n payload: { errorCode, errorMsg: errorMsg || errorCode },\n});\n","import { FORGOT_PASSWORD, FORGOT_PASSWORD_PERSIST_FORM_DATA } from './actions';\nimport { INTERNAL_SERVER_ERROR, PENDING_STATE } from '../../data/constants';\nimport { PASSWORD_RESET_FAILURE } from '../../reset-password/data/actions';\n\nexport const defaultState = {\n status: '',\n submitState: '',\n email: '',\n emailValidationError: '',\n};\n\nconst reducer = (state = defaultState, action = null) => {\n if (action !== null) {\n switch (action.type) {\n case FORGOT_PASSWORD.BEGIN:\n return {\n email: state.email,\n status: 'pending',\n submitState: PENDING_STATE,\n };\n case FORGOT_PASSWORD.SUCCESS:\n return {\n ...defaultState,\n status: 'complete',\n };\n case FORGOT_PASSWORD.FORBIDDEN:\n return {\n email: state.email,\n status: 'forbidden',\n };\n case FORGOT_PASSWORD.FAILURE:\n return {\n email: state.email,\n status: INTERNAL_SERVER_ERROR,\n };\n case PASSWORD_RESET_FAILURE:\n return {\n status: action.payload.errorCode,\n };\n case FORGOT_PASSWORD_PERSIST_FORM_DATA: {\n const { forgotPasswordFormData } = action.payload;\n return {\n ...state,\n ...forgotPasswordFormData,\n };\n }\n default:\n return {\n ...defaultState,\n email: state.email,\n emailValidationError: state.emailValidationError,\n };\n }\n }\n return state;\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport formurlencoded from 'form-urlencoded';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function forgotPassword(email) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/account/password`,\n formurlencoded({ email }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return data;\n}\n","import { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\n// Actions\nimport {\n FORGOT_PASSWORD,\n forgotPasswordBegin,\n forgotPasswordForbidden,\n forgotPasswordServerError,\n forgotPasswordSuccess,\n} from './actions';\nimport { forgotPassword } from './service';\n\n// Services\nexport function* handleForgotPassword(action) {\n try {\n yield put(forgotPasswordBegin());\n\n yield call(forgotPassword, action.payload.email);\n\n yield put(forgotPasswordSuccess(action.payload.email));\n } catch (e) {\n if (e.response && e.response.status === 403) {\n yield put(forgotPasswordForbidden());\n logInfo(e);\n } else {\n yield put(forgotPasswordServerError());\n logError(e);\n }\n }\n}\n\nexport default function* saga() {\n yield takeEvery(FORGOT_PASSWORD.BASE, handleForgotPassword);\n}\n","// Login Error Codes\nexport const INACTIVE_USER = 'inactive-user';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const INVALID_FORM = 'invalid-form';\nexport const NON_COMPLIANT_PASSWORD_EXCEPTION = 'NonCompliantPasswordException';\nexport const FORBIDDEN_REQUEST = 'forbidden-request';\nexport const FAILED_LOGIN_ATTEMPT = 'failed-login-attempt';\nexport const ACCOUNT_LOCKED_OUT = 'account-locked-out';\nexport const INCORRECT_EMAIL_PASSWORD = 'incorrect-email-or-password';\nexport const NUDGE_PASSWORD_CHANGE = 'nudge-password-change';\nexport const REQUIRE_PASSWORD_CHANGE = 'require-password-change';\nexport const ALLOWED_DOMAIN_LOGIN_ERROR = 'allowed-domain-login-error';\nexport const TPA_AUTHENTICATION_FAILURE = 'tpa-authentication-failure';\n\n// Account Activation Message\nexport const ACCOUNT_ACTIVATION_MESSAGE = {\n INFO: 'info',\n SUCCESS: 'success',\n ERROR: 'error',\n};\n","import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'login.page.title': {\n id: 'login.page.title',\n defaultMessage: 'Login | {siteName}',\n description: 'login page title',\n },\n // Login labels\n 'login.user.identity.label': {\n id: 'login.user.identity.label',\n defaultMessage: 'Нэвтрэх нэр эсвэл и-мэйл',\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: 'Нууц үг',\n description: 'Label for password field',\n },\n 'sign.in.button': {\n id: 'sign.in.button',\n defaultMessage: 'Нэвтрэх ',\n description: 'Sign in button label that appears on login page',\n },\n 'forgot.password': {\n id: 'forgot.password',\n defaultMessage: 'Нууц үг мартсан?',\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 '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 'username.or.email.format.validation.less.chars.message': {\n id: 'username.or.email.format.validation.less.chars.message',\n defaultMessage: 'Username or email must have at least 2 characters.',\n description: 'Validation message that appears when username or email address is less than 2 characters',\n },\n 'email.validation.message': {\n id: 'email.validation.message',\n defaultMessage: 'Enter your username or email',\n description: 'Validation message that appears when email is empty',\n },\n 'password.validation.message': {\n id: 'password.validation.message',\n defaultMessage: 'Enter your password',\n description: 'Validation message that appears when password is empty',\n },\n // Account Activation Strings\n 'account.activation.success.message.title': {\n id: 'account.activation.success.message.title',\n defaultMessage: 'Таны хаяг амжилттай идэвхжилээ.',\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 '@openedx/paragon';\nimport { CheckCircle, Error } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { ACCOUNT_ACTIVATION_MESSAGE } from './data/constants';\nimport messages from './messages';\n\nconst AccountActivationMessage = ({ messageType }) => {\n const { formatMessage } = useIntl();\n\n if (!messageType) {\n return null;\n }\n\n const variant = messageType === ACCOUNT_ACTIVATION_MESSAGE.ERROR ? 'danger' : messageType;\n const activationOrConfirmation = getConfig().MARKETING_EMAILS_OPT_IN ? 'confirmation' : 'activation';\n const iconMapping = {\n [ACCOUNT_ACTIVATION_MESSAGE.SUCCESS]: CheckCircle,\n [ACCOUNT_ACTIVATION_MESSAGE.ERROR]: Error,\n };\n\n let activationMessage;\n let heading;\n switch (messageType) {\n case ACCOUNT_ACTIVATION_MESSAGE.SUCCESS: {\n heading = formatMessage(messages[`account.${activationOrConfirmation}.success.message.title`]);\n activationMessage = {formatMessage(messages[`account.${activationOrConfirmation}.success.message`])};\n break;\n }\n case ACCOUNT_ACTIVATION_MESSAGE.INFO: {\n activationMessage = formatMessage(messages[`account.${activationOrConfirmation}.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.${activationOrConfirmation}.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,\n};\n\nAccountActivationMessage.defaultProps = {\n messageType: null,\n};\n\nexport default AccountActivationMessage;\n","import { AsyncActionType } from '../../data/utils';\n\nexport const BACKUP_LOGIN_DATA = new AsyncActionType('LOGIN', 'BACKUP_LOGIN_DATA');\nexport const LOGIN_REQUEST = new AsyncActionType('LOGIN', 'REQUEST');\nexport const DISMISS_PASSWORD_RESET_BANNER = 'DISMISS_PASSWORD_RESET_BANNER';\n\n// Backup login form data\nexport const backupLoginForm = () => ({\n type: BACKUP_LOGIN_DATA.BASE,\n});\n\nexport const backupLoginFormBegin = (data) => ({\n type: BACKUP_LOGIN_DATA.BEGIN,\n payload: { ...data },\n});\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 dismissPasswordResetBanner = () => ({\n type: DISMISS_PASSWORD_RESET_BANNER,\n});\n","import { useEffect, useState } from 'react';\n\nimport { breakpoints } from '@openedx/paragon';\n\n/**\n * A react hook used to determine if the current window is mobile or not.\n * returns true if the window is of mobile size.\n * Code source: https://github.com/edx/prospectus/blob/master/src/utils/useMobileResponsive.js\n */\nconst useMobileResponsive = (breakpoint) => {\n const [isMobileWindow, setIsMobileWindow] = useState();\n const checkForMobile = () => {\n setIsMobileWindow(window.matchMedia(`(max-width: ${breakpoint || breakpoints.small.maxWidth}px)`).matches);\n };\n useEffect(() => {\n checkForMobile();\n window.addEventListener('resize', checkForMobile);\n // return this function here to clean up the event listener\n return () => window.removeEventListener('resize', checkForMobile);\n });\n return isMobileWindow;\n};\n\nexport default useMobileResponsive;\n","import React, { useEffect, useState } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, ModalDialog, useToggle,\n} from '@openedx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport messages from './messages';\nimport { DEFAULT_REDIRECT_URL, RESET_PAGE } from '../data/constants';\nimport { updatePathWithQueryParams } from '../data/utils';\nimport useMobileResponsive from '../data/utils/useMobileResponsive';\n\nconst ChangePasswordPrompt = ({ variant, redirectUrl }) => {\n const isMobileView = useMobileResponsive();\n const [redirectToResetPasswordPage, setRedirectToResetPasswordPage] = useState(false);\n const handlers = {\n handleToggleOff: () => {\n if (variant === 'block') {\n setRedirectToResetPasswordPage(true);\n } else {\n window.location.href = redirectUrl || getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);\n }\n },\n };\n // eslint-disable-next-line no-unused-vars\n const [isOpen, open, close] = useToggle(true, handlers);\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (redirectToResetPasswordPage) {\n navigate(updatePathWithQueryParams(RESET_PAGE));\n }\n }, [redirectToResetPasswordPage, navigate]);\n\n return (\n \n \n \n {formatMessage(messages[`password.security.${variant}.title`])}\n \n \n \n {formatMessage(messages[`password.security.${variant}.body`])}\n \n \n \n {variant === 'nudge' ? (\n \n {formatMessage(messages['password.security.close.button'])}\n \n ) : null}\n \n {formatMessage(messages['password.security.redirect.to.reset.password.button'])}\n \n \n \n \n );\n};\n\nChangePasswordPrompt.defaultProps = {\n variant: 'block',\n redirectUrl: null,\n};\n\nChangePasswordPrompt.propTypes = {\n variant: PropTypes.oneOf(['nudge', 'block']),\n redirectUrl: PropTypes.string,\n};\n\nexport default ChangePasswordPrompt;\n","import React, { useEffect } 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 '@openedx/paragon';\nimport { Error } from '@openedx/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 { windowScrollTo } from '../data/utils';\n\nconst LoginFailureMessage = (props) => {\n const { formatMessage } = useIntl();\n const authService = getAuthService();\n const {\n context,\n errorCode,\n errorCount, // This is used to trigger the useEffect, facilitating the scrolling to the top.\n } = props;\n\n useEffect(() => {\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n }, [errorCode, errorCount]);\n\n if (!errorCode) {\n return null;\n }\n\n let resetLink = (\n \n {formatMessage(messages['login.incorrect.credentials.error.reset.link.text'])}\n \n );\n\n let errorMessage;\n switch (errorCode) {\n case NON_COMPLIANT_PASSWORD_EXCEPTION: {\n errorMessage = (\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 errorMessage =

{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 errorMessage = (\n

\n ,\n email: {context.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 errorMessage = (\n

\n \n

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

{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 errorMessage = (\n <>\n

\n \n

\n

\n \n

\n \n );\n break;\n }\n case ACCOUNT_LOCKED_OUT: {\n errorMessage = (\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 errorMessage =

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

;\n } else if (context.failureCount === 2) {\n errorMessage = (\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 errorMessage = (\n

\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 errorMessage =

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

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

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

\n handleSubmit(e, tpaProvider.loginUrl)}\n >\n {tpaProvider.iconImage ? (\n
\n {`icon\n { tpaProvider.name }\n
\n )\n : (\n <>\n
\n {SUPPORTED_ICON_CLASSES.includes(tpaProvider.iconClass) ? (\n )\n : (\n \n )}\n
\n { tpaProvider.name }\n \n )}\n \n
\n handleClick(e)}\n >\n {hideRegistrationLink\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 React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Hyperlink, Icon,\n} from '@openedx/paragon';\nimport { Institution } from '@openedx/paragon/icons';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Skeleton from 'react-loading-skeleton';\n\nimport messages from './messages';\nimport {\n ENTERPRISE_LOGIN_URL, LOGIN_PAGE, PENDING_STATE, REGISTER_PAGE,\n} from '../data/constants';\n\nimport {\n RenderInstitutionButton,\n SocialAuthProviders,\n} from './index';\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,\n secondaryProviders,\n currentProvider,\n handleInstitutionLogin,\n thirdPartyAuthApiStatus,\n isLoginPage,\n } = props;\n const isInstitutionAuthActive = !!secondaryProviders.length && !currentProvider;\n const isSocialAuthActive = !!providers.length && !currentProvider;\n const isEnterpriseLoginDisabled = getConfig().DISABLE_ENTERPRISE_LOGIN;\n const enterpriseLoginURL = getConfig().LMS_BASE_URL + ENTERPRISE_LOGIN_URL;\n\n return (\n <>\n {((isEnterpriseLoginDisabled && isInstitutionAuthActive) || isSocialAuthActive) && (\n
\n {isLoginPage\n ? formatMessage(messages['login.other.options.heading'])\n : formatMessage(messages['registration.other.options.heading'])}\n
\n )}\n {(isLoginPage && !isEnterpriseLoginDisabled && isSocialAuthActive) && (\n \n \n {formatMessage(messages['enterprise.login.btn.text'])}\n \n )}\n\n {thirdPartyAuthApiStatus === PENDING_STATE ? (\n
\n \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_STATE,\n isLoginPage: false,\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 isLoginPage: PropTypes.bool,\n};\n\nexport default ThirdPartyAuth;\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 '@openedx/paragon';\n\nimport messages from './messages';\n\nconst ResetPasswordSuccess = () => {\n const { formatMessage } = useIntl();\n\n return (\n \n \n {formatMessage(messages['reset.password.success.heading'])}\n \n

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

\n
\n );\n};\n\nexport default ResetPasswordSuccess;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { injectIntl, useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Form, StatefulButton,\n} from '@openedx/paragon';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport Skeleton from 'react-loading-skeleton';\nimport { Link } from 'react-router-dom';\n\nimport AccountActivationMessage from './AccountActivationMessage';\nimport {\n backupLoginFormBegin,\n dismissPasswordResetBanner,\n loginRequest,\n} from './data/actions';\nimport { INVALID_FORM, TPA_AUTHENTICATION_FAILURE } from './data/constants';\nimport LoginFailureMessage from './LoginFailure';\nimport messages from './messages';\nimport {\n FormGroup,\n InstitutionLogistration,\n PasswordField,\n RedirectLogistration,\n ThirdPartyAuthAlert,\n} from '../common-components';\nimport { getThirdPartyAuthContext } from '../common-components/data/actions';\nimport { thirdPartyAuthContextSelector } from '../common-components/data/selectors';\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\nimport ThirdPartyAuth from '../common-components/ThirdPartyAuth';\nimport {\n DEFAULT_STATE, PENDING_STATE, RESET_PAGE,\n} from '../data/constants';\nimport {\n getActivationStatus,\n getAllPossibleQueryParams,\n getTpaHint,\n getTpaProvider,\n updatePathWithQueryParams,\n} from '../data/utils';\nimport ResetPasswordSuccess from '../reset-password/ResetPasswordSuccess';\n\nconst LoginPage = (props) => {\n const {\n backedUpFormData,\n loginErrorCode,\n loginErrorContext,\n loginResult,\n shouldBackupState,\n thirdPartyAuthContext: {\n providers,\n currentProvider,\n secondaryProviders,\n finishAuthUrl,\n platformName,\n errorMessage: thirdPartyErrorMessage,\n },\n thirdPartyAuthApiStatus,\n institutionLogin,\n showResetPasswordSuccessBanner,\n submitState,\n // Actions\n backupFormState,\n handleInstitutionLogin,\n getTPADataFromBackend,\n } = props;\n const { formatMessage } = useIntl();\n const activationMsgType = getActivationStatus();\n const queryParams = useMemo(() => getAllPossibleQueryParams(), []);\n\n const [formFields, setFormFields] = useState({ ...backedUpFormData.formFields });\n const [errorCode, setErrorCode] = useState({ type: '', count: 0, context: {} });\n const [errors, setErrors] = useState({ ...backedUpFormData.errors });\n const tpaHint = getTpaHint();\n\n useEffect(() => {\n sendPageEvent('login_and_registration', 'login');\n }, []);\n\n useEffect(() => {\n const payload = { ...queryParams };\n if (tpaHint) {\n payload.tpa_hint = tpaHint;\n }\n getTPADataFromBackend(payload);\n }, [getTPADataFromBackend, queryParams, tpaHint]);\n /**\n * Backup the login form in redux when login page is toggled.\n */\n useEffect(() => {\n if (shouldBackupState) {\n backupFormState({\n formFields: { ...formFields },\n errors: { ...errors },\n });\n }\n }, [shouldBackupState, formFields, errors, backupFormState]);\n\n useEffect(() => {\n if (loginErrorCode) {\n setErrorCode(prevState => ({\n type: loginErrorCode,\n count: prevState.count + 1,\n context: { ...loginErrorContext },\n }));\n }\n }, [loginErrorCode, loginErrorContext]);\n\n useEffect(() => {\n if (thirdPartyErrorMessage) {\n setErrorCode((prevState) => ({\n type: TPA_AUTHENTICATION_FAILURE,\n count: prevState.count + 1,\n context: {\n errorMessage: thirdPartyErrorMessage,\n },\n }));\n }\n }, [thirdPartyErrorMessage]);\n\n const validateFormFields = (payload) => {\n const { emailOrUsername, password } = payload;\n const fieldErrors = { ...errors };\n\n if (emailOrUsername === '') {\n fieldErrors.emailOrUsername = formatMessage(messages['email.validation.message']);\n } else if (emailOrUsername.length < 2) {\n fieldErrors.emailOrUsername = formatMessage(messages['username.or.email.format.validation.less.chars.message']);\n }\n if (password === '') {\n fieldErrors.password = formatMessage(messages['password.validation.message']);\n }\n\n return { ...fieldErrors };\n };\n\n const handleSubmit = (event) => {\n event.preventDefault();\n if (showResetPasswordSuccessBanner) {\n props.dismissPasswordResetBanner();\n }\n\n const formData = { ...formFields };\n const validationErrors = validateFormFields(formData);\n if (validationErrors.emailOrUsername || validationErrors.password) {\n setErrors({ ...validationErrors });\n setErrorCode(prevState => ({ type: INVALID_FORM, count: prevState.count + 1, context: {} }));\n return;\n }\n\n // add query params to the payload\n const payload = {\n email_or_username: formData.emailOrUsername,\n password: formData.password,\n ...queryParams,\n };\n props.loginRequest(payload);\n };\n\n const handleOnChange = (event) => {\n const { name, value } = event.target;\n setFormFields(prevState => ({ ...prevState, [name]: value }));\n };\n\n const handleOnFocus = (event) => {\n const { name } = event.target;\n setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n };\n const trackForgotPasswordLinkClick = () => {\n sendTrackEvent('edx.bi.password-reset_form.toggled', { category: 'user-engagement' });\n };\n\n const { provider, skipHintedLogin } = getTpaProvider(tpaHint, providers, secondaryProviders);\n\n if (tpaHint) {\n if (thirdPartyAuthApiStatus === PENDING_STATE) {\n return ;\n }\n\n if (skipHintedLogin) {\n window.location.href = getConfig().LMS_BASE_URL + provider.loginUrl;\n return null;\n }\n\n if (provider) {\n return ;\n }\n }\n\n if (institutionLogin) {\n return (\n \n );\n }\n return (\n
\n

Нэвтрэх

\n

Тавтай морилно уу, Та өөрийн хаягаар нэвтрэн орно уу

\n\n \n {formatMessage(messages['login.page.title'], { siteName: getConfig().SITE_NAME })}\n \n \n
\n \n \n \n {showResetPasswordSuccessBanner && }\n
\n
{formatMessage(messages['login.user.identity.label'])}
\n \n
{formatMessage(messages['login.password.label'])}
\n \n \n {/* {formatMessage(messages['forgot.password'])} */}\n \n event.preventDefault()}\n />\n \n Бүртгэл үүсгэх\n \n \n {formatMessage(messages['forgot.password'])}\n \n \n \n
\n
\n );\n};\n\nconst mapStateToProps = state => {\n const loginPageState = state.login;\n return {\n backedUpFormData: loginPageState.loginFormData,\n loginErrorCode: loginPageState.loginErrorCode,\n loginErrorContext: loginPageState.loginErrorContext,\n loginResult: loginPageState.loginResult,\n shouldBackupState: loginPageState.shouldBackupState,\n showResetPasswordSuccessBanner: loginPageState.showResetPasswordSuccessBanner,\n submitState: loginPageState.submitState,\n thirdPartyAuthContext: thirdPartyAuthContextSelector(state),\n thirdPartyAuthApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n };\n};\n\nLoginPage.propTypes = {\n backedUpFormData: PropTypes.shape({\n formFields: PropTypes.shape({}),\n errors: PropTypes.shape({}),\n }),\n loginErrorCode: PropTypes.string,\n loginErrorContext: PropTypes.shape({\n email: PropTypes.string,\n redirectUrl: PropTypes.string,\n context: PropTypes.shape({}),\n }),\n loginResult: PropTypes.shape({\n redirectUrl: PropTypes.string,\n success: PropTypes.bool,\n }),\n shouldBackupState: PropTypes.bool,\n showResetPasswordSuccessBanner: PropTypes.bool,\n submitState: PropTypes.string,\n thirdPartyAuthApiStatus: PropTypes.string,\n institutionLogin: PropTypes.bool.isRequired,\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 // Actions\n backupFormState: PropTypes.func.isRequired,\n dismissPasswordResetBanner: PropTypes.func.isRequired,\n loginRequest: PropTypes.func.isRequired,\n getTPADataFromBackend: PropTypes.func.isRequired,\n handleInstitutionLogin: PropTypes.func.isRequired,\n};\n\nLoginPage.defaultProps = {\n backedUpFormData: {\n formFields: {\n emailOrUsername: '', password: '',\n },\n errors: {\n emailOrUsername: '', password: '',\n },\n },\n loginErrorCode: null,\n loginErrorContext: {},\n loginResult: {},\n shouldBackupState: false,\n showResetPasswordSuccessBanner: false,\n submitState: DEFAULT_STATE,\n thirdPartyAuthApiStatus: PENDING_STATE,\n thirdPartyAuthContext: {\n currentProvider: null,\n errorMessage: null,\n finishAuthUrl: null,\n providers: [],\n secondaryProviders: [],\n },\n};\n\nexport default connect(\n mapStateToProps,\n {\n backupFormState: backupLoginFormBegin,\n dismissPasswordResetBanner,\n loginRequest,\n getTPADataFromBackend: getThirdPartyAuthContext,\n },\n)(injectIntl(LoginPage));\n","import { createSelector } from 'reselect';\n\nexport const storeName = 'resetPassword';\n\nexport const resetPasswordSelector = state => ({ ...state[storeName] });\n\nexport const resetPasswordResultSelector = createSelector(\n resetPasswordSelector,\n resetPassword => resetPassword,\n);\n","import { getConfig } from '@edx/frontend-platform';\nimport { getHttpClient } from '@edx/frontend-platform/auth';\nimport formurlencoded from 'form-urlencoded';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function validateToken(token) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/user_api/v1/account/password_reset/token/validate/`,\n formurlencoded({ token }),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n return data;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function resetPassword(payload, token, queryParams) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n const url = new URL(`${getConfig().LMS_BASE_URL}/password/reset/${token}/`);\n\n if (queryParams.is_account_recovery) {\n url.searchParams.append('is_account_recovery', true);\n }\n\n const { data } = await getHttpClient()\n .post(url.href, formurlencoded(payload), requestConfig)\n .catch((e) => {\n throw (e);\n });\n return data;\n}\n\nexport async function validatePassword(payload) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v1/validation/registration`,\n formurlencoded(payload),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n let errorMessage = '';\n // Be careful about grabbing this message, since we could have received an HTTP error or the\n // endpoint didn't give us what we expect. We only care if we get a clear error message.\n if (data.validation_decisions && data.validation_decisions.password) {\n errorMessage = data.validation_decisions.password;\n }\n\n return errorMessage;\n}\n","import React from 'react';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@openedx/paragon';\nimport { Error } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { FORM_SUBMISSION_ERROR, PASSWORD_RESET, PASSWORD_VALIDATION_ERROR } from './data/constants';\nimport messages from './messages';\n\nconst ResetPasswordFailure = (props) => {\n const { formatMessage } = useIntl();\n const { errorCode, errorMsg } = props;\n\n let errorMessage = null;\n let heading = formatMessage(messages['reset.password.failure.heading']);\n switch (errorCode) {\n case PASSWORD_RESET.FORBIDDEN_REQUEST:\n heading = formatMessage(messages['reset.server.rate.limit.error']);\n errorMessage = formatMessage(messages['rate.limit.error']);\n break;\n case PASSWORD_RESET.INTERNAL_SERVER_ERROR:\n errorMessage = formatMessage(messages['internal.server.error']);\n break;\n case PASSWORD_VALIDATION_ERROR:\n errorMessage = errorMsg;\n break;\n case FORM_SUBMISSION_ERROR:\n errorMessage = formatMessage(messages['reset.password.form.submission.error']);\n break;\n default:\n break;\n }\n\n if (errorMessage) {\n return (\n \n {heading}\n

{errorMessage}

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

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

\n

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

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

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

\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
\n );\n};\n\nProgressiveProfiling.propTypes = {\n authenticatedUser: PropTypes.shape({\n username: PropTypes.string,\n userId: PropTypes.number,\n fullName: PropTypes.string,\n }),\n showError: PropTypes.bool,\n shouldRedirect: PropTypes.bool,\n submitState: PropTypes.string,\n welcomePageContext: PropTypes.shape({\n extended_profile: PropTypes.arrayOf(PropTypes.string),\n fields: PropTypes.shape({}),\n nextUrl: PropTypes.string,\n }),\n welcomePageContextApiStatus: PropTypes.string,\n // Actions\n getFieldDataFromBackend: PropTypes.func.isRequired,\n saveUserProfile: PropTypes.func.isRequired,\n};\n\nProgressiveProfiling.defaultProps = {\n authenticatedUser: {},\n shouldRedirect: false,\n showError: false,\n submitState: DEFAULT_STATE,\n welcomePageContext: {},\n welcomePageContextApiStatus: PENDING_STATE,\n};\n\nconst mapStateToProps = state => {\n const welcomePageStore = state.welcomePage;\n\n return {\n shouldRedirect: welcomePageStore.success,\n showError: welcomePageStore.showError,\n submitState: welcomePageStore.submitState,\n welcomePageContext: welcomePageContextSelector(state),\n welcomePageContextApiStatus: state.commonComponents.thirdPartyAuthApiStatus,\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n saveUserProfile,\n getFieldDataFromBackend: getThirdPartyAuthContext,\n },\n)(ProgressiveProfiling);\n","import { SAVE_USER_PROFILE } from './actions';\nimport {\n DEFAULT_STATE, PENDING_STATE,\n} from '../../data/constants';\n\nexport const defaultState = {\n extendedProfile: [],\n fieldDescriptions: {},\n success: false,\n submitState: DEFAULT_STATE,\n showError: false,\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case SAVE_USER_PROFILE.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n };\n case SAVE_USER_PROFILE.SUCCESS:\n return {\n ...state,\n success: true,\n showError: false,\n };\n case SAVE_USER_PROFILE.FAILURE:\n return {\n ...state,\n submitState: DEFAULT_STATE,\n showError: true,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function patchAccount(username, commitValues) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/merge-patch+json' },\n };\n\n await getAuthenticatedHttpClient()\n .patch(\n `${getConfig().LMS_BASE_URL}/api/user/v1/accounts/${username}`,\n commitValues,\n requestConfig,\n )\n .catch((error) => {\n throw (error);\n });\n}\n","import { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n SAVE_USER_PROFILE,\n saveUserProfileBegin,\n saveUserProfileFailure,\n saveUserProfileSuccess,\n} from './actions';\nimport { patchAccount } from './service';\n\nexport function* saveUserProfileInformation(action) {\n try {\n yield put(saveUserProfileBegin());\n yield call(patchAccount, action.payload.username, action.payload.data);\n\n yield put(saveUserProfileSuccess());\n } catch (e) {\n yield put(saveUserProfileFailure());\n }\n}\n\nexport default function* saga() {\n yield takeEvery(SAVE_USER_PROFILE.BASE, saveUserProfileInformation);\n}\n","// Registration Fields\nexport const FIELDS = {\n COUNTRY: 'country',\n HONOR_CODE: 'honor_code',\n TERMS_OF_SERVICE: 'terms_of_service',\n};\n\n// Registration Error Codes\nexport const FORBIDDEN_REQUEST = 'forbidden-request';\nexport const FORM_SUBMISSION_ERROR = 'form-submission-error';\nexport const INTERNAL_SERVER_ERROR = 'internal-server-error';\nexport const TPA_AUTHENTICATION_FAILURE = 'tpa-authentication-failure';\nexport const TPA_SESSION_EXPIRED = 'tpa-session-expired';\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport validateName from './validator';\nimport { FormGroup } from '../../../common-components';\nimport { clearRegistrationBackendError, fetchRealtimeValidations } from '../../data/actions';\n\n/**\n * Name field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Making backend call for generating username suggestions\n * - Performing name field validations\n * - Clearing error on focus\n * - Setting value on change\n */\nconst NameField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n\n const {\n handleErrorChange,\n shouldFetchUsernameSuggestions,\n } = props;\n\n const handleOnBlur = (e) => {\n const { value } = e.target;\n const fieldError = validateName(value, formatMessage);\n if (fieldError) {\n handleErrorChange('name', fieldError);\n } else if (shouldFetchUsernameSuggestions && !validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ name: value }));\n }\n };\n\n const handleOnFocus = () => {\n handleErrorChange('name', '');\n dispatch(clearRegistrationBackendError('name'));\n };\n\n return (\n \n );\n};\n\nNameField.defaultProps = {\n errorMessage: '',\n shouldFetchUsernameSuggestions: false,\n};\n\nNameField.propTypes = {\n errorMessage: PropTypes.string,\n shouldFetchUsernameSuggestions: PropTypes.bool,\n value: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n};\n\nexport default NameField;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert, Icon } from '@openedx/paragon';\nimport { Close, Error } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport validateEmail from './validator';\nimport { FormGroup } from '../../../common-components';\nimport {\n clearRegistrationBackendError,\n fetchRealtimeValidations,\n setEmailSuggestionInStore,\n} from '../../data/actions';\nimport messages from '../../messages';\n\n/**\n * Email field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Generating email warning and error suggestions\n * - Setting and clearing email suggestions\n * - Performing email field validations\n * - clearing error on focus\n * - setting value on change\n */\nconst EmailField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const {\n handleChange,\n handleErrorChange,\n confirmEmailValue,\n } = props;\n\n const backedUpFormData = useSelector(state => state.register.registrationFormData);\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n\n const [emailSuggestion, setEmailSuggestion] = useState({ ...backedUpFormData?.emailSuggestion });\n\n useEffect(() => {\n setEmailSuggestion(backedUpFormData.emailSuggestion);\n }, [backedUpFormData.emailSuggestion]);\n\n const handleOnBlur = (e) => {\n const { value } = e.target;\n const { fieldError, confirmEmailError, suggestion } = validateEmail(value, confirmEmailValue, formatMessage);\n\n if (confirmEmailError) {\n handleErrorChange('confirm_email', confirmEmailError);\n }\n\n dispatch(setEmailSuggestionInStore(suggestion));\n setEmailSuggestion(suggestion);\n\n if (fieldError) {\n handleErrorChange('email', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ email: value }));\n }\n };\n\n const handleOnFocus = () => {\n handleErrorChange('email', '');\n dispatch(clearRegistrationBackendError('email'));\n };\n\n const handleSuggestionClick = (event) => {\n event.preventDefault();\n handleErrorChange('email', '');\n handleChange({ target: { name: 'email', value: emailSuggestion.suggestion } });\n setEmailSuggestion({ suggestion: '', type: '' });\n };\n\n const handleSuggestionClosed = () => setEmailSuggestion({ suggestion: '', type: '' });\n\n const renderEmailFeedback = () => {\n if (emailSuggestion.type === 'error') {\n return (\n \n \n {formatMessage(messages['did.you.mean.alert.text'])}{' '}\n \n {emailSuggestion.suggestion}\n ?\n \n \n \n );\n }\n return (\n \n {formatMessage(messages['did.you.mean.alert.text'])}:{' '}\n \n {emailSuggestion.suggestion}\n ?\n \n );\n };\n\n return (\n \n {emailSuggestion.suggestion ? renderEmailFeedback() : null}\n \n );\n};\n\nEmailField.defaultProps = {\n errorMessage: '',\n confirmEmailValue: null,\n};\n\nEmailField.propTypes = {\n errorMessage: PropTypes.string,\n value: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n confirmEmailValue: PropTypes.string,\n};\n\nexport default EmailField;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport validateUsername from './validator';\nimport { FormGroup } from '../../../common-components';\nimport {\n clearRegistrationBackendError,\n clearUsernameSuggestions,\n fetchRealtimeValidations,\n} from '../../data/actions';\nimport messages from '../../messages';\n\n/**\n * Username field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Rendering username suggestions\n * - Setting and clearing username suggestions\n * - Performing username field validations\n * - clearing error on focus\n * - setting value on change\n */\nconst UsernameField = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const {\n value,\n errorMessage,\n handleChange,\n handleErrorChange,\n } = props;\n\n let className = '';\n let suggestedUsernameDiv = null;\n let iconButton = null;\n const usernameSuggestions = useSelector(state => state.register.usernameSuggestions);\n const validationApiRateLimited = useSelector(state => state.register.validationApiRateLimited);\n\n /**\n * We need to remove the placeholder from the field, adding a space will do that.\n * This is needed because we are placing the username suggestions on top of the field.\n */\n useEffect(() => {\n if (usernameSuggestions.length && !value) {\n handleChange({ target: { name: 'username', value: ' ' } });\n }\n }, [handleChange, usernameSuggestions, value]);\n\n const handleOnBlur = (event) => {\n const { value: username } = event.target;\n const fieldError = validateUsername(username, formatMessage);\n if (fieldError) {\n handleErrorChange('username', fieldError);\n } else if (!validationApiRateLimited) {\n dispatch(fetchRealtimeValidations({ username }));\n }\n };\n\n const handleOnChange = (event) => {\n let username = event.target.value;\n if (username.length > 30) {\n return;\n }\n if (event.target.value.startsWith(' ')) {\n username = username.trim();\n }\n handleChange({ target: { name: 'username', value: username } });\n };\n\n const handleOnFocus = (event) => {\n const username = event.target.value;\n dispatch(clearUsernameSuggestions());\n // If we added a space character to username field to display the suggestion\n // remove it before user enters the input. This is to ensure user doesn't\n // have a space prefixed to the username.\n if (username === ' ') {\n handleChange({ target: { name: 'username', value: '' } });\n }\n handleErrorChange('username', '');\n dispatch(clearRegistrationBackendError('username'));\n };\n\n const handleSuggestionClick = (event, suggestion = '') => {\n event.preventDefault();\n handleErrorChange('username', ''); // clear error\n handleChange({ target: { name: 'username', value: suggestion } }); // to set suggestion as value\n dispatch(clearUsernameSuggestions());\n };\n\n const handleUsernameSuggestionClose = () => {\n handleChange({ target: { name: 'username', value: '' } }); // to remove space in field\n dispatch(clearUsernameSuggestions());\n };\n\n const suggestedUsernames = () => (\n
\n {formatMessage(messages['registration.username.suggestion.label'])}\n
\n {usernameSuggestions.map((username, index) => (\n handleSuggestionClick(e, username)}\n >\n {username}\n \n ))}\n
\n {iconButton}\n
\n );\n\n if (usernameSuggestions.length > 0 && errorMessage && value === ' ') {\n className = 'username-suggestions__error';\n iconButton = handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"username-suggestions__close__button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && value === ' ') {\n className = 'username-suggestions d-flex align-items-center';\n iconButton = handleUsernameSuggestionClose()} variant=\"black\" size=\"sm\" className=\"username-suggestions__close__button\" />;\n suggestedUsernameDiv = suggestedUsernames();\n } else if (usernameSuggestions.length > 0 && errorMessage) {\n suggestedUsernameDiv = suggestedUsernames();\n }\n return (\n \n {suggestedUsernameDiv}\n \n );\n};\n\nUsernameField.defaultProps = {\n errorMessage: '',\n autoComplete: null,\n};\n\nUsernameField.propTypes = {\n handleChange: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n errorMessage: PropTypes.string,\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n autoComplete: PropTypes.string,\n};\n\nexport default UsernameField;\n","export const COUNTRY_CODE_KEY = 'code';\nexport const COUNTRY_DISPLAY_KEY = 'name';\n\nconst validateCountryField = (value, countryList, emptyErrorMessage, invalidCountryErrorMessage) => {\n let countryCode = '';\n let displayValue = value;\n let error = '';\n\n if (value) {\n const normalizedValue = value.toLowerCase();\n // Handling a case here where user enters a valid country code that needs to be\n // evaluated and set its value as a valid value.\n const selectedCountry = countryList.find(\n (country) => (\n // When translations are applied, extra space added in country value, so we should trim that.\n country[COUNTRY_DISPLAY_KEY].toLowerCase().trim() === normalizedValue\n || country[COUNTRY_CODE_KEY].toLowerCase().trim() === normalizedValue\n ),\n );\n if (selectedCountry) {\n countryCode = selectedCountry[COUNTRY_CODE_KEY];\n displayValue = selectedCountry[COUNTRY_DISPLAY_KEY];\n } else {\n error = invalidCountryErrorMessage;\n }\n } else {\n error = emptyErrorMessage;\n }\n return { error, countryCode, displayValue };\n};\n\nexport default validateCountryField;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { FormAutosuggest, FormAutosuggestOption, FormControlFeedback } from '@openedx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport validateCountryField, { COUNTRY_CODE_KEY, COUNTRY_DISPLAY_KEY } from './validator';\nimport { clearRegistrationBackendError } from '../../data/actions';\nimport messages from '../../messages';\n\n/**\n * Country field wrapper. It accepts following handlers\n * - handleChange for setting value change and\n * - handleErrorChange for setting error\n *\n * It is responsible for\n * - Auto populating country field if backendCountryCode is available in redux\n * - Performing country field validations\n * - clearing error on focus\n * - setting value on change and selection\n */\nconst CountryField = (props) => {\n const {\n countryList,\n selectedCountry,\n onChangeHandler,\n handleErrorChange,\n onFocusHandler,\n } = props;\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const countryFieldValue = {\n userProvidedText: selectedCountry.displayValue,\n selectionValue: selectedCountry.displayValue,\n selectionId: selectedCountry.countryCode,\n };\n\n const backendCountryCode = useSelector(state => state.register.backendCountryCode);\n\n useEffect(() => {\n if (backendCountryCode && backendCountryCode !== selectedCountry?.countryCode) {\n let countryCode = '';\n let countryDisplayValue = '';\n\n const countryVal = countryList.find(\n (country) => (country[COUNTRY_CODE_KEY].toLowerCase() === backendCountryCode.toLowerCase()),\n );\n if (countryVal) {\n countryCode = countryVal[COUNTRY_CODE_KEY];\n countryDisplayValue = countryVal[COUNTRY_DISPLAY_KEY];\n }\n onChangeHandler(\n { target: { name: 'country' } },\n { countryCode, displayValue: countryDisplayValue },\n );\n } else if (!selectedCountry.displayValue) {\n onChangeHandler(\n { target: { name: 'country' } },\n { countryCode: '', displayValue: '' },\n );\n }\n }, [backendCountryCode, countryList]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleOnBlur = (event) => {\n // Do not run validations when drop-down arrow is clicked\n if (event.relatedTarget && event.relatedTarget.className.includes('pgn__form-autosuggest__icon-button')) {\n return;\n }\n\n const { value } = event.target;\n\n const { error } = validateCountryField(\n value.trim(), countryList, formatMessage(messages['empty.country.field.error']), formatMessage(messages['invalid.country.field.error']),\n );\n handleErrorChange('country', error);\n };\n\n const handleOnFocus = (event) => {\n handleErrorChange('country', '');\n dispatch(clearRegistrationBackendError('country'));\n onFocusHandler(event);\n };\n\n const handleOnChange = (value) => {\n onChangeHandler({ target: { name: 'country' } }, { countryCode: value.selectionId, displayValue: value.userProvidedText });\n\n // We have put this check because proviously we also had onSelected event handler and we call\n // the onBlur on that event handler but now there is no such handler and we only have\n // onChange so we check the is there is proper sectionId which only be\n // proper one when we select it from dropdown's item otherwise its null.\n if (value.selectionId !== '') {\n handleOnBlur({ target: { name: 'country', value: value.userProvidedText } });\n }\n };\n\n const getCountryList = () => countryList.map((country) => (\n \n {country[COUNTRY_DISPLAY_KEY]}\n \n ));\n\n return (\n
\n
{formatMessage(messages['registration.country.label'])}
\n handleOnFocus(e)}\n onBlur={(e) => handleOnBlur(e)}\n onChange={(value) => handleOnChange(value)}\n >\n {getCountryList()}\n \n {props.errorMessage !== '' && (\n \n {props.errorMessage}\n \n )}\n
\n );\n};\n\nCountryField.propTypes = {\n countryList: PropTypes.arrayOf(\n PropTypes.shape({\n code: PropTypes.string,\n name: PropTypes.string,\n }),\n ).isRequired,\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func.isRequired,\n handleErrorChange: PropTypes.func.isRequired,\n onFocusHandler: PropTypes.func.isRequired,\n selectedCountry: PropTypes.shape({\n displayValue: PropTypes.string,\n countryCode: PropTypes.string,\n }),\n};\n\nCountryField.defaultProps = {\n errorMessage: null,\n selectedCountry: {\n value: '',\n },\n};\n\nexport default CountryField;\n","import React, { useEffect } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';\nimport { Form, Hyperlink } from '@openedx/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 '@openedx/paragon';\nimport PropTypes from 'prop-types';\n\nimport messages from '../../messages';\n\nconst TermsOfService = (props) => {\n const { formatMessage } = useIntl();\n const {\n errorMessage, onChangeHandler, value,\n } = props;\n\n return (\n
\n \n \n {formatMessage(messages['terms.of.service'])}\n \n ),\n }}\n />\n \n {errorMessage && (\n \n {errorMessage}\n \n )}\n
\n );\n};\n\nTermsOfService.defaultProps = {\n errorMessage: '',\n value: false,\n};\n\nTermsOfService.propTypes = {\n errorMessage: PropTypes.string,\n onChangeHandler: PropTypes.func.isRequired,\n value: PropTypes.bool,\n};\n\nexport default TermsOfService;\n","import React, { useEffect, useMemo } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getCountryList, getLocale, useIntl } from '@edx/frontend-platform/i18n';\nimport PropTypes from 'prop-types';\n\nimport { FormFieldRenderer } from '../../field-renderer';\nimport { FIELDS } from '../data/constants';\nimport messages from '../messages';\nimport { CountryField, HonorCode, TermsOfService } from '../RegistrationFields';\n\n/**\n * Fields on registration page that are not the default required fields (name, email, username, password).\n * These configurable required fields are defined on the backend using REGISTRATION_EXTRA_FIELDS setting.\n *\n * Country and Honor Code/Terms of Services (if enabled) will appear at the bottom of the form, even if they\n * appear higher in order returned by backend. This is to make the user experience better.\n *\n * For edX only:\n * Country and honor code fields are required by default, and we will continue to show them on\n * frontend even if the API doesn't return it. The `SHOW_CONFIGURABLE_EDX_FIELDS` flag will enable\n * it for edX.\n * */\nconst ConfigurableRegistrationForm = (props) => {\n const { formatMessage } = useIntl();\n const {\n email,\n fieldDescriptions,\n fieldErrors,\n formFields,\n setFieldErrors,\n setFormFields,\n autoSubmitRegistrationForm,\n } = props;\n\n const countryList = useMemo(() => getCountryList(getLocale()), []);\n\n // let showTermsOfServiceAndHonorCode = false;\n let showCountryField = false;\n\n const formFieldDescriptions = [];\n const honorCode = [];\n const flags = {\n showConfigurableRegistrationFields: getConfig().ENABLE_DYNAMIC_REGISTRATION_FIELDS,\n showConfigurableEdxFields: getConfig().SHOW_CONFIGURABLE_EDX_FIELDS,\n showMarketingEmailOptInCheckbox: getConfig().MARKETING_EMAILS_OPT_IN,\n };\n\n /**\n * If auto submitting register form, we will check tos and honor code fields if they exist for feature parity.\n */\n useEffect(() => {\n if (autoSubmitRegistrationForm) {\n if (Object.keys(fieldDescriptions).includes(FIELDS.HONOR_CODE)) {\n setFormFields(prevState => ({\n ...prevState,\n [FIELDS.HONOR_CODE]: true,\n }));\n }\n if (Object.keys(fieldDescriptions).includes(FIELDS.TERMS_OF_SERVICE)) {\n setFormFields(prevState => ({\n ...prevState,\n [FIELDS.TERMS_OF_SERVICE]: true,\n }));\n }\n }\n }, [autoSubmitRegistrationForm]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleErrorChange = (fieldName, error) => {\n if (fieldName) {\n setFieldErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n }\n };\n\n const handleOnChange = (event, countryValue = null) => {\n const { name } = event.target;\n let value;\n if (countryValue) {\n value = { ...countryValue };\n } else {\n value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n if (event.target.type === 'checkbox') {\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n }\n }\n setFormFields(prevState => ({ ...prevState, [name]: value }));\n };\n\n const handleOnBlur = (event) => {\n const { name, value } = event.target;\n let error = '';\n if ((!value || !value.trim()) && fieldDescriptions[name]?.error_message) {\n error = fieldDescriptions[name].error_message;\n } else if (name === 'confirm_email' && value !== email) {\n error = formatMessage(messages['email.do.not.match']);\n }\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: error }));\n };\n\n const handleOnFocus = (event) => {\n const { name } = event.target;\n setFieldErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n };\n\n if (flags.showConfigurableRegistrationFields) {\n Object.keys(fieldDescriptions).forEach(fieldName => {\n const fieldData = fieldDescriptions[fieldName];\n switch (fieldData.name) {\n case FIELDS.COUNTRY:\n showCountryField = true;\n break;\n case FIELDS.HONOR_CODE:\n if (fieldData.type === 'tos_and_honor_code') {\n // showTermsOfServiceAndHonorCode = true;\n } else {\n honorCode.push(\n \n \n ,\n );\n }\n break;\n case FIELDS.TERMS_OF_SERVICE:\n honorCode.push(\n \n \n ,\n );\n break;\n default:\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n });\n }\n\n if (flags.showConfigurableEdxFields || showCountryField) {\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n\n if (flags.showMarketingEmailOptInCheckbox) {\n formFieldDescriptions.push(\n \n \n ,\n );\n }\n\n // if (flags.showConfigurableEdxFields || showTermsOfServiceAndHonorCode) {\n // formFieldDescriptions.push(\n // \n // \n // ,\n // );\n // }\n\n return (\n <>\n {formFieldDescriptions}\n
\n {honorCode}\n
\n \n );\n};\n\nConfigurableRegistrationForm.propTypes = {\n email: PropTypes.string.isRequired,\n fieldDescriptions: PropTypes.shape({}),\n fieldErrors: PropTypes.shape({\n country: PropTypes.string,\n }).isRequired,\n formFields: PropTypes.shape({\n country: PropTypes.shape({\n displayValue: PropTypes.string,\n countryCode: PropTypes.string,\n }),\n honor_code: PropTypes.bool,\n marketingEmailsOptIn: PropTypes.bool,\n }).isRequired,\n setFieldErrors: PropTypes.func.isRequired,\n setFormFields: PropTypes.func.isRequired,\n autoSubmitRegistrationForm: PropTypes.bool,\n};\n\nConfigurableRegistrationForm.defaultProps = {\n fieldDescriptions: {},\n autoSubmitRegistrationForm: false,\n};\n\nexport default ConfigurableRegistrationForm;\n","import React, { useEffect } from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Alert } from '@openedx/paragon';\nimport { Error } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\nimport { windowScrollTo } from '../../data/utils';\nimport {\n FORBIDDEN_REQUEST,\n INTERNAL_SERVER_ERROR,\n TPA_AUTHENTICATION_FAILURE,\n TPA_SESSION_EXPIRED,\n} from '../data/constants';\nimport messages from '../messages';\n\nconst RegistrationFailureMessage = (props) => {\n const { formatMessage } = useIntl();\n const {\n context, errorCode, failureCount,\n } = props;\n\n useEffect(() => {\n windowScrollTo({ left: 0, top: 0, behavior: 'smooth' });\n }, [errorCode, failureCount]);\n\n if (!errorCode) {\n return null;\n }\n\n let errorMessage;\n switch (errorCode) {\n case INTERNAL_SERVER_ERROR:\n errorMessage = formatMessage(messages['registration.request.server.error']);\n break;\n case FORBIDDEN_REQUEST:\n errorMessage = formatMessage(messages['registration.rate.limit.error']);\n break;\n case TPA_AUTHENTICATION_FAILURE:\n errorMessage = formatMessage(messages['registration.tpa.authentication.failure'],\n {\n platform_name: getConfig().SITE_NAME,\n lineBreak:
,\n errorMessage: context.errorMessage,\n });\n break;\n case TPA_SESSION_EXPIRED:\n errorMessage = formatMessage(messages['registration.tpa.session.expired'], { provider: context.provider });\n break;\n default:\n errorMessage = formatMessage(messages['registration.empty.form.submission.error']);\n break;\n }\n\n return (\n \n {formatMessage(messages['registration.request.failure.header'])}\n

{errorMessage}

\n
\n );\n};\n\nRegistrationFailureMessage.defaultProps = {\n context: {\n errorMessage: null,\n },\n};\n\nRegistrationFailureMessage.propTypes = {\n context: PropTypes.shape({\n provider: PropTypes.string,\n errorMessage: PropTypes.string,\n }),\n errorCode: PropTypes.string.isRequired,\n failureCount: PropTypes.number.isRequired,\n};\n\nexport default RegistrationFailureMessage;\n","import { createSelector } from 'reselect';\n\n/**\n * Selector for backend validations which processes the api output and generates a\n * key value dict for field errors.\n * @returns {{username: string}|{name: string}|*|{}|null}\n */\nconst getRegistrationError = state => state.register.registrationError;\nconst getValidations = state => state.register.validations;\n\nconst getBackendValidations = createSelector(\n [getRegistrationError, getValidations],\n (registrationError, validations) => {\n if (validations) {\n return validations.validationDecisions;\n }\n\n if (Object.keys(registrationError).length > 0) {\n const fields = Object.keys(registrationError).filter(\n (fieldName) => !(fieldName in ['errorCode', 'usernameSuggestions']),\n );\n\n const validationDecisions = {};\n fields.forEach(field => {\n validationDecisions[field] = registrationError[field][0].userMessage || '';\n });\n return validationDecisions;\n }\n\n return null;\n });\n\nexport default getBackendValidations;\n","import React, {\n useEffect, useMemo, useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendPageEvent, sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Form, Spinner, StatefulButton } from '@openedx/paragon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport Skeleton from 'react-loading-skeleton';\nimport { Link } from 'react-router-dom';\n\nimport ConfigurableRegistrationForm from './components/ConfigurableRegistrationForm';\nimport RegistrationFailure from './components/RegistrationFailure';\nimport {\n backupRegistrationFormBegin,\n clearRegistrationBackendError,\n registerNewUser,\n setEmailSuggestionInStore,\n setUserPipelineDataLoaded,\n} from './data/actions';\nimport {\n FORM_SUBMISSION_ERROR,\n TPA_AUTHENTICATION_FAILURE,\n} from './data/constants';\nimport getBackendValidations from './data/selectors';\nimport {\n isFormValid, prepareRegistrationPayload,\n} from './data/utils';\nimport messages from './messages';\nimport { EmailField, NameField, UsernameField } from './RegistrationFields';\nimport {\n InstitutionLogistration,\n PasswordField,\n RedirectLogistration,\n ThirdPartyAuthAlert,\n} from '../common-components';\nimport { getThirdPartyAuthContext as getRegistrationDataFromBackend } from '../common-components/data/actions';\nimport EnterpriseSSO from '../common-components/EnterpriseSSO';\nimport ThirdPartyAuth from '../common-components/ThirdPartyAuth';\nimport {\n COMPLETE_STATE, PENDING_STATE, REGISTER_PAGE,\n} from '../data/constants';\nimport {\n getAllPossibleQueryParams, getTpaHint, getTpaProvider, isHostAvailableInQueryParams, setCookie,\n} from '../data/utils';\n\n/**\n * Main Registration Page component\n */\nconst RegistrationPage = (props) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const registrationEmbedded = isHostAvailableInQueryParams();\n const platformName = getConfig().SITE_NAME;\n const flags = {\n showConfigurableEdxFields: getConfig().SHOW_CONFIGURABLE_EDX_FIELDS,\n showConfigurableRegistrationFields: getConfig().ENABLE_DYNAMIC_REGISTRATION_FIELDS,\n showMarketingEmailOptInCheckbox: getConfig().MARKETING_EMAILS_OPT_IN,\n };\n const {\n handleInstitutionLogin,\n institutionLogin,\n } = props;\n\n const backedUpFormData = useSelector(state => state.register.registrationFormData);\n const registrationError = useSelector(state => state.register.registrationError);\n const registrationErrorCode = registrationError?.errorCode;\n const registrationResult = useSelector(state => state.register.registrationResult);\n const shouldBackupState = useSelector(state => state.register.shouldBackupState);\n const userPipelineDataLoaded = useSelector(state => state.register.userPipelineDataLoaded);\n const submitState = useSelector(state => state.register.submitState);\n\n const fieldDescriptions = useSelector(state => state.commonComponents.fieldDescriptions);\n const optionalFields = useSelector(state => state.commonComponents.optionalFields);\n const thirdPartyAuthApiStatus = useSelector(state => state.commonComponents.thirdPartyAuthApiStatus);\n const autoSubmitRegForm = useSelector(state => state.commonComponents.thirdPartyAuthContext.autoSubmitRegForm);\n const thirdPartyAuthErrorMessage = useSelector(state => state.commonComponents.thirdPartyAuthContext.errorMessage);\n const finishAuthUrl = useSelector(state => state.commonComponents.thirdPartyAuthContext.finishAuthUrl);\n const currentProvider = useSelector(state => state.commonComponents.thirdPartyAuthContext.currentProvider);\n const providers = useSelector(state => state.commonComponents.thirdPartyAuthContext.providers);\n const secondaryProviders = useSelector(state => state.commonComponents.thirdPartyAuthContext.secondaryProviders);\n const pipelineUserDetails = useSelector(state => state.commonComponents.thirdPartyAuthContext.pipelineUserDetails);\n\n const backendValidations = useSelector(getBackendValidations);\n const queryParams = useMemo(() => getAllPossibleQueryParams(), []);\n const tpaHint = useMemo(() => getTpaHint(), []);\n\n const [formFields, setFormFields] = useState({ ...backedUpFormData.formFields });\n const [configurableFormFields, setConfigurableFormFields] = useState({ ...backedUpFormData.configurableFormFields });\n const [errors, setErrors] = useState({ ...backedUpFormData.errors });\n const [errorCode, setErrorCode] = useState({ type: '', count: 0 });\n const [formStartTime, setFormStartTime] = useState(null);\n // temporary error state for embedded experience because we don't want to show errors on blur\n const [temporaryErrors, setTemporaryErrors] = useState({ ...backedUpFormData.errors });\n\n const { cta, host } = queryParams;\n const buttonLabel = cta\n ? formatMessage(messages['create.account.cta.button'], { label: cta })\n : formatMessage(messages['create.account.for.free.button']);\n\n /**\n * Set the userPipelineDetails data in formFields for only first time\n */\n useEffect(() => {\n if (!userPipelineDataLoaded && thirdPartyAuthApiStatus === COMPLETE_STATE) {\n if (thirdPartyAuthErrorMessage) {\n setErrorCode(prevState => ({ type: TPA_AUTHENTICATION_FAILURE, count: prevState.count + 1 }));\n }\n if (pipelineUserDetails && Object.keys(pipelineUserDetails).length !== 0) {\n const { name = '', username = '', email = '' } = pipelineUserDetails;\n setFormFields(prevState => ({\n ...prevState, name, username, email,\n }));\n dispatch(setUserPipelineDataLoaded(true));\n }\n }\n }, [ // eslint-disable-line react-hooks/exhaustive-deps\n thirdPartyAuthApiStatus,\n thirdPartyAuthErrorMessage,\n pipelineUserDetails,\n userPipelineDataLoaded,\n ]);\n\n useEffect(() => {\n if (!formStartTime) {\n sendPageEvent('login_and_registration', 'register');\n const payload = { ...queryParams, is_register_page: true };\n if (tpaHint) {\n payload.tpa_hint = tpaHint;\n }\n dispatch(getRegistrationDataFromBackend(payload));\n setFormStartTime(Date.now());\n }\n }, [dispatch, formStartTime, queryParams, tpaHint]);\n\n /**\n * Backup the registration form in redux when register page is toggled.\n */\n useEffect(() => {\n if (shouldBackupState) {\n dispatch(backupRegistrationFormBegin({\n ...backedUpFormData,\n configurableFormFields: { ...configurableFormFields },\n formFields: { ...formFields },\n errors: { ...errors },\n }));\n }\n }, [shouldBackupState, configurableFormFields, formFields, errors, dispatch, backedUpFormData]);\n\n useEffect(() => {\n if (backendValidations) {\n if (registrationEmbedded) {\n setTemporaryErrors(prevErrors => ({ ...prevErrors, ...backendValidations }));\n } else {\n setErrors(prevErrors => ({ ...prevErrors, ...backendValidations }));\n }\n }\n }, [backendValidations, registrationEmbedded]);\n\n useEffect(() => {\n if (registrationErrorCode) {\n setErrorCode(prevState => ({ type: registrationErrorCode, count: prevState.count + 1 }));\n }\n }, [registrationErrorCode]);\n\n useEffect(() => {\n if (registrationResult.success) {\n // This event is used by GTM\n sendTrackEvent('edx.bi.user.account.registered.client', {});\n\n // This is used by the \"User Retention Rate Event\" on GTM\n setCookie(getConfig().USER_RETENTION_COOKIE_NAME, true);\n }\n }, [registrationResult]);\n\n const handleOnChange = (event) => {\n const { name } = event.target;\n const value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n if (registrationError[name]) {\n dispatch(clearRegistrationBackendError(name));\n }\n setErrors(prevErrors => ({ ...prevErrors, [name]: '' }));\n setFormFields(prevState => ({ ...prevState, [name]: value }));\n };\n\n const handleErrorChange = (fieldName, error) => {\n if (registrationEmbedded) {\n setTemporaryErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n if (error === '' && errors[fieldName] !== '') {\n setErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n }\n } else {\n setErrors(prevErrors => ({\n ...prevErrors,\n [fieldName]: error,\n }));\n }\n };\n\n const registerUser = () => {\n const totalRegistrationTime = (Date.now() - formStartTime) / 1000;\n let payload = { ...formFields };\n\n if (currentProvider) {\n delete payload.password;\n payload.social_auth_provider = currentProvider;\n }\n\n // Validating form data before submitting\n const { isValid, fieldErrors, emailSuggestion } = isFormValid(\n payload,\n registrationEmbedded ? temporaryErrors : errors,\n configurableFormFields,\n fieldDescriptions,\n formatMessage,\n );\n setErrors({ ...fieldErrors });\n dispatch(setEmailSuggestionInStore(emailSuggestion));\n\n // returning if not valid\n if (!isValid) {\n setErrorCode(prevState => ({ type: FORM_SUBMISSION_ERROR, count: prevState.count + 1 }));\n return;\n }\n\n // Preparing payload for submission\n payload = prepareRegistrationPayload(\n payload,\n configurableFormFields,\n flags.showMarketingEmailOptInCheckbox,\n totalRegistrationTime,\n queryParams);\n\n // making register call\n dispatch(registerNewUser(payload));\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n registerUser();\n };\n\n useEffect(() => {\n if (autoSubmitRegForm && userPipelineDataLoaded) {\n registerUser();\n }\n }, [autoSubmitRegForm, userPipelineDataLoaded]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const renderForm = () => {\n if (institutionLogin) {\n return (\n \n );\n }\n return (\n
\n

Бүртгүүлэх

\n\n \n {formatMessage(messages['register.page.title'], { siteName: getConfig().SITE_NAME })}\n \n \n {autoSubmitRegForm && !errorCode.type ? (\n
\n \n
\n ) : (\n \n \n \n
\n
{formatMessage(messages['registration.fullname.label'])}
\n \n
{formatMessage(messages['registration.email.label'])}
\n \n
{formatMessage(messages['registration.username.label'])}
\n \n {!currentProvider && (\n <>\n
{formatMessage(messages['registration.password.label'])}
\n \n \n )}\n \n e.preventDefault()}\n />\n \n Нэвтрэх\n \n {!registrationEmbedded && (\n \n )}\n \n
\n )}\n
\n );\n };\n\n if (tpaHint) {\n if (thirdPartyAuthApiStatus === PENDING_STATE) {\n return ;\n }\n const { provider, skipHintedLogin } = getTpaProvider(tpaHint, providers, secondaryProviders);\n if (skipHintedLogin) {\n window.location.href = getConfig().LMS_BASE_URL + provider.registerUrl;\n return null;\n }\n return provider ? : renderForm();\n }\n return (\n renderForm()\n );\n};\n\nRegistrationPage.propTypes = {\n institutionLogin: PropTypes.bool,\n // Actions\n handleInstitutionLogin: PropTypes.func,\n};\n\nRegistrationPage.defaultProps = {\n handleInstitutionLogin: null,\n institutionLogin: false,\n};\n\nexport default RegistrationPage;\n","import {\n BACKUP_REGISTRATION_DATA,\n REGISTER_CLEAR_USERNAME_SUGGESTIONS,\n REGISTER_FORM_VALIDATIONS,\n REGISTER_NEW_USER,\n REGISTER_SET_COUNTRY_CODE,\n REGISTER_SET_EMAIL_SUGGESTIONS,\n REGISTER_SET_USER_PIPELINE_DATA_LOADED,\n REGISTRATION_CLEAR_BACKEND_ERROR,\n} from './actions';\nimport {\n DEFAULT_STATE,\n PENDING_STATE,\n} from '../../data/constants';\n\nexport const storeName = 'register';\n\nexport const defaultState = {\n backendCountryCode: '',\n registrationError: {},\n registrationResult: {},\n registrationFormData: {\n configurableFormFields: {\n marketingEmailsOptIn: true,\n },\n formFields: {\n name: '', email: '', username: '', password: '',\n },\n emailSuggestion: {\n suggestion: '', type: '',\n },\n errors: {\n name: '', email: '', username: '', password: '',\n },\n },\n validations: null,\n submitState: DEFAULT_STATE,\n userPipelineDataLoaded: false,\n usernameSuggestions: [],\n validationApiRateLimited: false,\n shouldBackupState: false,\n};\n\nconst reducer = (state = defaultState, action = {}) => {\n switch (action.type) {\n case BACKUP_REGISTRATION_DATA.BASE:\n return {\n ...state,\n shouldBackupState: true,\n };\n case BACKUP_REGISTRATION_DATA.BEGIN:\n return {\n ...state,\n usernameSuggestions: state.usernameSuggestions,\n registrationFormData: { ...action.payload },\n userPipelineDataLoaded: state.userPipelineDataLoaded,\n };\n case REGISTER_NEW_USER.BEGIN:\n return {\n ...state,\n submitState: PENDING_STATE,\n registrationError: {},\n };\n case REGISTER_NEW_USER.SUCCESS: {\n return {\n ...state,\n registrationResult: action.payload,\n };\n }\n case REGISTER_NEW_USER.FAILURE: {\n const { usernameSuggestions } = action.payload;\n return {\n ...state,\n registrationError: { ...action.payload },\n submitState: DEFAULT_STATE,\n validations: null,\n usernameSuggestions: usernameSuggestions || state.usernameSuggestions,\n };\n }\n case REGISTRATION_CLEAR_BACKEND_ERROR: {\n const registrationErrorTemp = state.registrationError;\n delete registrationErrorTemp[action.payload];\n return {\n ...state,\n registrationError: { ...registrationErrorTemp },\n };\n }\n case REGISTER_FORM_VALIDATIONS.SUCCESS: {\n const { usernameSuggestions, ...validationWithoutUsernameSuggestions } = action.payload.validations;\n return {\n ...state,\n validations: validationWithoutUsernameSuggestions,\n usernameSuggestions: usernameSuggestions || state.usernameSuggestions,\n };\n }\n case REGISTER_FORM_VALIDATIONS.FAILURE:\n return {\n ...state,\n validationApiRateLimited: true,\n validations: null,\n };\n case REGISTER_CLEAR_USERNAME_SUGGESTIONS:\n return {\n ...state,\n usernameSuggestions: [],\n };\n case REGISTER_SET_COUNTRY_CODE: {\n const { countryCode } = action.payload;\n if (!state.registrationFormData.configurableFormFields.country) {\n return {\n ...state,\n backendCountryCode: countryCode,\n };\n }\n return state;\n }\n case REGISTER_SET_USER_PIPELINE_DATA_LOADED: {\n const { value } = action.payload;\n return {\n ...state,\n userPipelineDataLoaded: value,\n };\n }\n case REGISTER_SET_EMAIL_SUGGESTIONS:\n return {\n ...state,\n registrationFormData: {\n ...state.registrationFormData,\n emailSuggestion: action.payload.emailSuggestion,\n },\n };\n default:\n return {\n ...state,\n shouldBackupState: false,\n };\n }\n};\n\nexport default reducer;\n","import { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient, getHttpClient } from '@edx/frontend-platform/auth';\nimport * as QueryString from 'query-string';\n\nexport async function registerRequest(registrationInformation) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n isPublic: true,\n };\n\n const { data } = await getAuthenticatedHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v2/account/registration/`,\n QueryString.stringify(registrationInformation),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n redirectUrl: data.redirect_url || `${getConfig().LMS_BASE_URL}/dashboard`,\n success: data.success || false,\n authenticatedUser: data.authenticated_user,\n };\n}\n\nexport async function getFieldsValidations(formPayload) {\n const requestConfig = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n };\n\n const { data } = await getHttpClient()\n .post(\n `${getConfig().LMS_BASE_URL}/api/user/v1/validation/registration`,\n QueryString.stringify(formPayload),\n requestConfig,\n )\n .catch((e) => {\n throw (e);\n });\n\n return {\n fieldValidations: data,\n };\n}\n","import { camelCaseObject } from '@edx/frontend-platform';\nimport { logError, logInfo } from '@edx/frontend-platform/logging';\nimport { call, put, takeEvery } from 'redux-saga/effects';\n\nimport {\n fetchRealtimeValidationsBegin,\n fetchRealtimeValidationsFailure,\n fetchRealtimeValidationsSuccess,\n REGISTER_FORM_VALIDATIONS,\n REGISTER_NEW_USER,\n registerNewUserBegin,\n registerNewUserFailure,\n registerNewUserSuccess,\n} from './actions';\nimport { INTERNAL_SERVER_ERROR } from './constants';\nimport { getFieldsValidations, registerRequest } from './service';\n\nexport function* handleNewUserRegistration(action) {\n try {\n yield put(registerNewUserBegin());\n\n const { authenticatedUser, redirectUrl, success } = yield call(registerRequest, action.payload.registrationInfo);\n\n yield put(registerNewUserSuccess(\n camelCaseObject(authenticatedUser),\n redirectUrl,\n success,\n ));\n } catch (e) {\n const statusCodes = [400, 403, 409];\n if (e.response && statusCodes.includes(e.response.status)) {\n yield put(registerNewUserFailure(camelCaseObject(e.response.data)));\n logInfo(e);\n } else {\n yield put(registerNewUserFailure({ errorCode: INTERNAL_SERVER_ERROR }));\n logError(e);\n }\n }\n}\n\nexport function* fetchRealtimeValidations(action) {\n try {\n yield put(fetchRealtimeValidationsBegin());\n const { fieldValidations } = yield call(getFieldsValidations, action.payload.formPayload);\n\n yield put(fetchRealtimeValidationsSuccess(camelCaseObject(fieldValidations)));\n } catch (e) {\n if (e.response && e.response.status === 403) {\n yield put(fetchRealtimeValidationsFailure());\n logInfo(e);\n } else {\n logError(e);\n }\n }\n}\nexport default function* saga() {\n yield takeEvery(REGISTER_NEW_USER.BASE, handleNewUserRegistration);\n yield takeEvery(REGISTER_FORM_VALIDATIONS.BASE, fetchRealtimeValidations);\n}\n","import { all } from 'redux-saga/effects';\n\nimport { saga as commonComponentsSaga } from '../common-components';\nimport { saga as forgotPasswordSaga } from '../forgot-password';\nimport { saga as loginSaga } from '../login';\nimport { saga as authnProgressiveProfilingSaga } from '../progressive-profiling';\nimport { saga as registrationSaga } from '../register';\nimport { saga as resetPasswordSaga } from '../reset-password';\n\nexport default function* rootSaga() {\n yield all([\n loginSaga(),\n registrationSaga(),\n commonComponentsSaga(),\n forgotPasswordSaga(),\n resetPasswordSaga(),\n authnProgressiveProfilingSaga(),\n ]);\n}\n","import { getConfig } from '@edx/frontend-platform';\nimport { composeWithDevTools } from '@redux-devtools/extension';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport { createLogger } from 'redux-logger';\nimport createSagaMiddleware from 'redux-saga';\nimport thunkMiddleware from 'redux-thunk';\n\nimport createRootReducer from './reducers';\nimport rootSaga from './sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nfunction composeMiddleware() {\n if (getConfig().ENVIRONMENT === 'development') {\n const loggerMiddleware = createLogger({\n collapsed: true,\n });\n return composeWithDevTools(applyMiddleware(thunkMiddleware, sagaMiddleware, loggerMiddleware));\n }\n\n return compose(applyMiddleware(thunkMiddleware, sagaMiddleware));\n}\n\nexport default function configureStore(initialState = {}) {\n const store = createStore(\n createRootReducer(),\n initialState,\n composeMiddleware(),\n );\n sagaMiddleware.run(rootSaga);\n\n return store;\n}\n","import { combineReducers } from 'redux';\n\nimport {\n reducer as commonComponentsReducer,\n storeName as commonComponentsStoreName,\n} from '../common-components';\nimport {\n reducer as forgotPasswordReducer,\n storeName as forgotPasswordStoreName,\n} from '../forgot-password';\nimport {\n reducer as loginReducer,\n storeName as loginStoreName,\n} from '../login';\nimport {\n reducer as authnProgressiveProfilingReducers,\n storeName as authnProgressiveProfilingStoreName,\n} from '../progressive-profiling';\nimport {\n reducer as registerReducer,\n storeName as registerStoreName,\n} from '../register';\nimport {\n reducer as resetPasswordReducer,\n storeName as resetPasswordStoreName,\n} from '../reset-password';\n\nconst createRootReducer = () => combineReducers({\n [loginStoreName]: loginReducer,\n [registerStoreName]: registerReducer,\n [commonComponentsStoreName]: commonComponentsReducer,\n [forgotPasswordStoreName]: forgotPasswordReducer,\n [resetPasswordStoreName]: resetPasswordReducer,\n [authnProgressiveProfilingStoreName]: authnProgressiveProfilingReducers,\n});\nexport default createRootReducer;\n","/* eslint-disable max-len */\nimport 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';\n// import { useIntl } from '@edx/frontend-platform/i18n';\n// import {\n// Icon,\n// Tab,\n// Tabs,\n// } from '@openedx/paragon';\n// import { ChevronLeft } from '@openedx/paragon/icons';\nimport PropTypes from 'prop-types';\n\n// import { Navigate, useNavigate } from 'react-router-dom';\nimport Footer from '../base-container/footer';\nimport Header from '../base-container/header';\n// import BaseContainer from '../base-container';\nimport { clearThirdPartyAuthContextErrorMessage } from '../common-components/data/actions';\nimport {\n tpaProvidersSelector,\n} from '../common-components/data/selectors';\n// import messages from '../common-components/messages';\nimport { LOGIN_PAGE, REGISTER_PAGE } from '../data/constants';\n// import {\n// // getTpaHint,\n// // getTpaProvider,\n// // updatePathWithQueryParams,\n// } from '../data/utils';\nimport { LoginPage } from '../login';\nimport { backupLoginForm } from '../login/data/actions';\nimport { RegistrationPage } from '../register';\nimport { backupRegistrationForm } from '../register/data/actions';\n\nconst Logistration = (props) => {\n const {\n selectedPage,\n // , tpaProviders\n } = props;\n // const tpaHint = getTpaHint();\n // const {\n // providers, secondaryProviders,\n // } = tpaProviders;\n // const { formatMessage } = useIntl();\n const [institutionLogin, setInstitutionLogin] = useState(false);\n // const [key, setKey] = useState('');\n // const navigate = useNavigate();\n // const disablePublicAccountCreation = getConfig().ALLOW_PUBLIC_ACCOUNT_CREATION === false;\n // const hideRegistrationLink = getConfig().SHOW_REGISTRATION_LINKS === false;\n\n useEffect(() => {\n const authService = getAuthService();\n if (authService) {\n authService.getCsrfTokenService().getCsrfToken(getConfig().LMS_BASE_URL);\n }\n });\n\n // useEffect(() => {\n // if (disablePublicAccountCreation) {\n // navigate(updatePathWithQueryParams(LOGIN_PAGE));\n // }\n // }, [navigate, disablePublicAccountCreation]);\n\n const handleInstitutionLogin = (e) => {\n sendTrackEvent('edx.bi.institution_login_form.toggled', { category: 'user-engagement' });\n if (typeof e === 'string') {\n sendPageEvent('login_and_registration', e === '/login' ? 'login' : 'register');\n } else {\n sendPageEvent('login_and_registration', e.target.dataset.eventName);\n }\n\n setInstitutionLogin(!institutionLogin);\n };\n\n // const handleOnSelect = (tabKey, currentTab) => {\n // if (tabKey === currentTab) {\n // return;\n // }\n // sendTrackEvent(`edx.bi.${tabKey.replace('/', '')}_form.toggled`, { category: 'user-engagement' });\n // props.clearThirdPartyAuthContextErrorMessage();\n // if (tabKey === LOGIN_PAGE) {\n // props.backupRegistrationForm();\n // } else if (tabKey === REGISTER_PAGE) {\n // props.backupLoginForm();\n // }\n // setKey(tabKey);\n // };\n\n // const tabTitle = (\n //
\n // \n // \n // {selectedPage === LOGIN_PAGE\n // ? formatMessage(messages['logistration.sign.in'])\n // : formatMessage(messages['logistration.register'])}\n // \n //
\n // );\n\n // const isValidTpaHint = () => {\n // const { provider } = getTpaProvider(tpaHint, providers, secondaryProviders);\n // return !!provider;\n // };\n\n return (\n // \n //
\n // {disablePublicAccountCreation\n // ? (\n // <>\n // {institutionLogin && (\n // \n // \n // \n // )}\n //
\n // {!institutionLogin && (\n //

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

\n // )}\n // \n //
\n // \n // )\n // : (\n //
\n // {/* {institutionLogin\n // ? (\n // \n // \n // \n // )\n // : (!isValidTpaHint() && !hideRegistrationLink && (\n // handleOnSelect(tabKey, selectedPage)}>\n // \n // \n // \n // ))}\n // { key && (\n // \n // )} */}\n //
\n // {!institutionLogin && !isValidTpaHint() && hideRegistrationLink && (\n //

\n // {formatMessage(messages[selectedPage === LOGIN_PAGE ? 'logistration.sign.in' : 'logistration.register'])}\n //

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

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

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

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

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

{factoid}

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

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

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

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

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