{"version":3,"sources":["utilities/Helper.ts","components/ApplicationInsightsProvider/LearnRedirectTelemetryService.ts","store/stores/user/sagas.ts","store/stores/user/index.ts","components/LocalizationProvider/LocalizationProvider.tsx","hooks/useAuthenticatedUser.ts","store/stores/additionalTokens/actions.ts","Settings.ts","store/endpoint/EndpointActions.ts","components/ApplicationLoadingSpinner/ApplicationLoadingSpinner.tsx","locales.ts","store/stores/featureFlag/sagas.ts","store/stores/featureFlag/index.ts","store/stores/user/actions.ts","hooks/useAuthority.ts","pages/ConditionalRenderer/ConditionalRenderer.tsx","store/api/BaseApi.ts","store/api/Api.ts","components/Loading/LoaderSection.tsx","store/stores/learningPath/sagas.ts","store/stores/learningPath/index.ts","utilities/SearchHelper.ts","utilities/TokenHandler.ts","hooks/useAccessToken.ts","components/ApplicationInsightsProvider/ApplicationInsightsService.ts","assets/images/Task_List_Contrast.svg","utilities/imagesSVG.ts","store/stores/learningPath/actions.ts","store/stores/enrollmentPlan/actions.ts","store/stores/enrollmentPlan/sagas.ts","store/stores/enrollmentPlan/index.ts","pages/Preference/constants.js","store/stores/eventRegistration/actions.ts","store/stores/eventRegistration/sagas.ts","store/stores/eventRegistration/index.ts","store/endpoint/useEndpointActions.ts","components/SideBarNavigation/stepsToSuccessPages.tsx","store/stores/msDelivery/actions.ts","store/stores/msDelivery/sagas.ts","store/stores/msDelivery/index.ts","utilities/QueryStrings.ts","utilities/OAuthHelper.js","utilities/getVisitLog.tsx","assets/images/Main_OneDayMSIconNav.svg","store/stores/accountLinking/actions.ts","store/stores/accountLinking/sagas.ts","store/stores/accountLinking/index.ts","components/SSOProvider/SSOProvider.tsx","components/ApplicationInsightsProvider/SSOTelemetryService.ts","utilities/Constants.ts","utilities/LearningPathContent.ts","utilities/isIE.ts","utilities/ErrorMessageMapper.ts","utilities/OneDayClassesContent.ts","store/endpoint/EndpointConfiguration.ts","store/endpoint/EndpointReductor.ts","store/endpoint/EndpointSaga.ts","store/endpoint/EndpointStore.ts","store/endpoint/ReducerRegistry.ts","store/endpoint/SagaRegistry.ts","store/endpoint/EndpointState.ts","store/stores/certification/actions.ts","store/stores/certification/sagas.ts","store/stores/certification/index.ts","store/stores/updateAccount/actions.ts","store/stores/updateAccount/sagas.ts","store/stores/updateAccount/index.ts","store/endpoint/index.ts","assets/images/ESILearningAssistant.svg","assets/images/microsoft-logo-light.png","assets/images/MS_logo_Contrast.png","assets/images/User.svg","assets/images/User_Contrast.svg","assets/images/Info.svg","assets/images/Info_Contrast.svg","assets/images/Profile.svg","assets/images/Profile_Contrast.svg","assets/images/Task_List.svg","assets/images/Infomenu.svg","assets/images/Main_ChatSparkleNav.svg","assets/images/Profilemenu.svg","assets/images/SearchBubbleIcon.png","assets/images/Main_GetMSCertsIconNav.svg","assets/images/Main_FindMoreClassesIconNav.svg","assets/images/Main_LearnYourOwnIconNav.svg","assets/images/Main_MultidayMSClassIconNav.svg","assets/images/Main_GameLearningIconNav.svg","assets/images/Main_CopilotIconNav.svg","assets/images/Main_CourseVideosIconNav.svg","assets/fonts/fabric-icons/fabric-icons-5692869f.woff","utilities/featureFlagValues.ts","hooks/useDisclosure.ts","hooks/useTitle.ts","hooks/useLogout.ts","hooks/useAuthenticator.ts","utilities/index.ts","i18n/translated lazy /^/.*/strings/.json$/ groupOptions: {} namespace object","components/EulaProtection/EulaProtection.tsx","components/CopilotLogo/CopilotLogo.tsx","components/CopilotBot/CopilotBotConst.ts","components/CopilotBot/CopilotBot.tsx","components/ApplicationInsightsProvider/CopilotTelemetryService.ts","components/Loading/Loading.tsx","Routes.ts","components/Footer/Footer.tsx","components/PopupCallout/PopupCallout.tsx","components/Header/CopilotButton/CopilotButton.tsx","components/GlobalSearch/GlobalResults.tsx","components/GlobalSearch/SearchTextBox.tsx","components/SideBarNavigation/RightSideBarNavigation.tsx","components/Header/HamburgerMenu/RightNavMenu.tsx","components/Header/HamburgerMenu/BurgerMenu.tsx","components/Header/HamburgerMenu/NavbarMenu.tsx","components/Header/HamburgerMenu/BackoutBurgerMenu.tsx","components/Header/Header.tsx","components/SessionTimeout/SessionTimeout.tsx","components/SkipNav/SkipNavContent.tsx","components/SkipNav/SkipNavLink.tsx","components/App/App.tsx","components/App/AuthenticatedApp.tsx","components/App/UnauthenticatedApp.tsx","components/ApplicationInsightsProvider/ApplicationInsightsProvider.tsx","serviceWorker.ts","store/stores/copilot/actions.ts","store/stores/copilot/sagas.ts","store/stores/copilot/index.ts","store/stores/additionalTokens/sagas.ts","store/stores/additionalTokens/index.ts","store/index.ts","utilities/fabric-icons/src/fabric-icons.ts","utilities/fabric-icons/src/iconAliases.ts","utilities/fabric-icons/src/IconNames.ts","utilities/fabric-icons/src/index.ts","components/App/LocalizedApp.tsx","wcpConsent.ts","index.tsx","store/stores/featureFlag/actions.ts"],"names":["Helper","locale","localStorage","getItem","toLowerCase","flexTimeZone","flexDate","_flexTimeZone$substri","date","Date","getTimeZone","substring","split","offset","getMinutesSplit","parseInt","toString","getTime","parseFloat","pageName","emailAddress","learnerId","ai","appInsights","trackTrace","message","properties","dateOfVisit","getDate","getMonth","getFullYear","timeOfVisit","getHours","getMinutes","getSeconds","cardDetails","profileRole","_cardDetails$cardtitl","_profileRole","cardtitleid","cardlink","urlToParse","replace","url","URL","queryStringParts","decodeURIComponent","search","roles","mappedRoleIndex","indexOf","filteredQueryString","roleFilteredUrl","encodeURI","concat","slice","join","protocol","hostname","pathname","eventStartDate","eventEndDate","currentDateTimeNow","currentWeekNumber","addDaysToDate","days","updatedDate","setDate","profile","TPID","skillingId","tpid","filter","tpId","delSearch","eventSession","orgObj","prof","this","hasProfileContainTpid","filterInput","hasFilterContainTpid","delSearchInput","hasDelSearchContainTpid","eventSessionInput","hasEventSessionContainTpid","_class","learnUrlPatterns","_process$env$REACT_AP","process","map","pattern","RegExp","setLocalStatusForDelivery","deliveryId","deliveriesInprogress","deliveryList","JSON","parse","deliverIdInProgress","expiry","deliverObj","push","setItem","stringify","getLocalStatusFordelivery","deliveriesList","deliveriesInProgress","delivery","find","now","filteredDelivery","setClarityCustomTag","key","value","undefined","window","handleLearnRedirect","disabled","openTarget","openFeatures","isLearnURL","open","ssoURL","appendLearnSSO","learnUrl","trackEvent","name","handleLearnRedirectEvent","e","preventDefault","getDomain","workEmail","pop","test","urlBuilder","host","includes","searchParams","append","sagas","CheckUserIsSupportUserOrNotSaga","EndpointSaga","CheckUserIsSupportUserOrNotActions","Api","GET_USER_PARTOF","takeLeading","GetProfileSaga","GetProfileActions","GET_PROFILE","CreateProfileSaga","CreateProfileActions","CREATE_PROFILE","UpdateProfileSaga","UpdateProfileActions","UPDATE_PROFILE","EmailValidationSaga","EmailValidationActions","EMAIL_VALIDATION","GETTokensAvailableSaga","GETTokensAvailableActions","TOKENS_AVAILABLE","EmailVerificationSaga","EmailVerificationActions","EMAIL_VERIFICATION","VerificationCodeSega","VerificationCodeActions","VERIFIY_CODE","EmailServiceStatusSaga","EmailServiceStatusActions","EMAIL_SERVICE_STATUS","DeleteAccountSaga","DeleteAccountActions","DELETE_ACCOUNT","VerifyWorkEmailAddressSaga","VerifyWorkEmailAddressActions","VERIFY_WORKEMAILADDRESS","VerifyCleanupUserSaga","VerifyCleanupUserActions","VERIFY_CLEANUP_USERS","UnlinkEmailAddressErrorSaga","UnlinkEmailAddressErrorActions","Unlink_EmailAddress_Error","UpdateWorkEmailAddressSaga","UpdateWorkEmailAddressActions","UPDATE_WORKEMAILADDRESS","GetSSOStatusSaga","GetSSOStatusActions","GET_SSO_STATUS","GetSSOLinkedAccountsSaga","GetSSOLinkedAccountsActions","GET_SSO_LINKED_ACCOUNTS","initialUserState","EndpointStateFactory","getInitialState","associationId","displayName","activeLearningPlanId","isTOSAccepted","id","oid","programs","hasLinkedAccount","role","roleName","timezone","language","firstName","lastName","country","preferredEmailAddress","isKoreaPrivacyAccepted","esiTerms","isESITermsAccepted","acceptedDateTime","emailprofile","domain","companyName","ESIIndicator","ESIMember","enableCopilot","esi","isAad","lpId","isMSA","authority","isMigrateCandidate","ssoprofile","isDomainEligibleForSso","linkedAccounts","isProfileExists","isEmailSend","isEmailSendForWorkEmail","isWorkEmailUpdate","isVerified","isVerificationError","isSSOError","isIncomingSSOError","isAccountLinkingSuccess","customErrorMessage","accountUnlinkingResponse","verifyCleanupUserResponse","unlinkEmailAddressErrorResponse","isUnlinked","isEmailServiceAvailable","tokensAvailable","availableTokens","displayRequestForm","lxpPuid","tokenRegenerationDate","maximumTokens","additionalTokenRequestStatus","EndpointStore","_action$meta$data","state","arguments","length","action","type","ActionTypes","ExecuteError","meta","status","isError","ErrorMessageMapper","GET_ERROR","ExecuteSuccess","statusCode","isSupportUserOrNot","payload","data","Clear","email","DEFAULT_LOCALE","englishName","rtl","visible","defaultLocaleContext","defaultLocale","locales","setLocale","forceReload","setDefaultLocale","LocaleContext","createContext","LocalizationProvider","props","children","storage","localeLoader","providerProps","featureFlags","useSelector","_state$FeatureFlagSto","FeatureFlagStore","history","useHistory","useEffect","_featureFlags$filter","d","flagName","disableTermsAndConditions","m","isEnabledFlag","sessionStorage","QueryStringParam","WorkEmailAddress","IsESITermsAccepted","pathName","location","cachedLocale","URLSearchParams","get","DeliveryId","query","q","languageQuery","SelectedLanguages","timezoneQuery","SelectedTimezones","modalityQuery","SelectedModalities","rolesQuery","SelectedRoles","learningOptionQuery","SelectedLearningOPtion","seatAvailabilityQuery","SelectedAvailability","_setLocale","useState","messages","setMessages","useCallback","async","loc","l","Error","prev","reload","localeData","document","documentElement","lang","dir","localeMemo","useMemo","React","createElement","Provider","IntlProvider","_extends","useLocale","useContext","useAuthenticatedUser","inProgress","useMsal","user","setUser","account","appSettings","config","msal","getAllAccounts","claims","idTokenClaims","isAuthenticated","isAuthenticationInProgress","InteractionStatus","None","homeAccountId","environment","tenantId","username","localAccountId","tid","authenticationState","SendRequestForAdditonalTokensActions","EndpointActions","applicationConfig","services","accessCode","apiKey","base","endpoints","sendAccessCode","verifyAccessCode","offerDiscount","offerTransactionHistory","enrollmentServices","_localStorage$getItem","learningPlan","learningPlanId","getLocale","learningPlanCard","myDeliveries","certification","checkUserPartOf","emailValidationClaims","readFeatureFlag","emailVerificationClaims","verificationCodeClaims","accountLinking","languages","modalities","notifications","timezones","esiAgreement","langCode","measureUpLTISettings","emailServiceStatus","mscatalog","learningPartner","orgId","deliverydetails","eventRegistration","cancelRegistration","cancelWaitlist","confirmRegistration","deleteAccount","updateWorkEmailAddress","verifyWorkEmailAddress","updateAccountWorkEmailOnly","verifyCleanupUser","unlinkEmailAddressError","updateAccountOIDEmailAddressOnly","updateAccount","multipleProfiles","deleteDuplicateProfile","emailCodeVerificationStatus","sendRequestForAdditonalTokens","learningPathGroups","searchDeliveriesStatus","eventSessions","resendInvite","ssoStatus","ssoLinkedAccounts","copilotTokensRequest","PublicClientApplication","auth","useAuthority","knownAuthorities","clientId","redirectUri","origin","postLogoutRedirectUri","navigateToLoginRequestUrl","system","loggerOptions","loggerCallback","level","containsPii","LogLevel","exception","trackException","console","log","piiLoggingEnabled","asyncPopups","cache","cacheLocation","storeAuthStateInCookie","isIE","defaultAuthScopes","constructor","_appSettings$config$m","silentRequest","scopes","extraQueryParameters","instance_aware","redirectRequestAAD","loginHint","domain_hint","redirectRequestNONAAD","prompt","redirectRequestSelectAccount","EndpointActionSuffix","EndpointActionTypes","Execute","_namesList","parameters","response","errorMessage","ApplicationLoadingSpinner","Fragment","LoaderSection","loadLocaleData","default","error","GetFeatureFlagSaga","GetFeatureFlagAction","GET_FEATURE_FLAG","initialFeatureFlagState","Authority","IsAad","referrer","ConditionalRenderer","condition","http","Axios","create","baseURL","RequestMethod","BaseApi","endpoint","isAnonymous","combinedHeaders","service","request","accessToken","TokenHandler","getToken","Authorization","Locale","headers","REQUEST","getEndpointUrl","workEmailAddress","endpointConfig","EndpointConfiguration","requestConfig","method","GET","super","REQUEST_WITH_CONFIG","params","POST","PUT","certificationRequest","copilotTokenRequest","encodeURIComponent","userId","requestId","unlinkables","applicationName","_localStorage$getItem2","returnEventSessionOrgObject","cacheBuster","PATCH","documentId","docsId","customText","defaultText","useIntl","formatMessage","textToDisplay","className","Spinner","size","SpinnerSize","large","label","ariaLabel","GetLearningPathSaga","GetLearningPathActions","GET_LEARNING_PATH","GetLearningPathCardSaga","GetLearningPathCardActions","GET_DEFAULT_LEARNING_PATH","GetLearningPathGroupsSaga","GetLearningPathGroupsActions","GET_LEARNING_PATH_GROUPS","MSCatalogActionsSaga","MSCatalogActions","MSCATALOG","takeLatest","MSSingleCatalogActionsSaga","MSSingleCatalogActions","GetLearningParnerSaga","GetLearningPartnersActions","GET_DEFAULT_LEARNING_PARTNER","GetMyDeliveriesSaga","GetMyDeliveriesActions","GET_MyDeliveries","GetSearchDeliveriesStatusSaga","GetSearchDeliveriesStatusActions","GET_SearchDeliveriesStatus","initialLearningPathState","learningPath","pathwayIdentifier","versionNumber","isCurrent","customerRole","title","groupedItems","learningPathCards","learningPartners","msCatalog","currentMSCatalog","deliveryIndex","findIndex","catalog","deliveryStatus","SearchIndex","SearchHelper","index","API_ENDPOINT","API_KEY","API_VERSION","SearchClient","AzureKeyCredential","apiVersion","filters","_filters$locale","top","skip","Search","Certification","isDisabledMultiRoleAndFiltersInUrl","ignoreLearningOptions","isExtraSearchODataFiltersEnabled","disableProjectReadiness","learningContentType","twoDaysFromNow","twoDaysFromNowVTD","vtdLookAheadDays","otherLookAheadDays","oDataFilter","businessRules","toISOString","languageList","oDataLanguageFilter","languageCode","escapedLanguageCode","replaceAll","targetedRole","allreadyadded","oDataRoleFilter","RoleOptionVTD","some","r","timezoneList","hasValidTimezoneCode","oDataTimezoneFilter","isNaN","Number","seatsAvailability","oDataSeatAvailibilityFilter","availabilty","escapedAvailability","targetedModality","oDataModalityFilter","modality","escapedModality","deliveryStartTime","deliveryEndTime","startDateTime","endDateTime","oDeliveryTimeRangeFilter","facetsSend","getQueryFilterColumns","trim","Delivery","text","selectColumns","_searchResults$data$","facets","orderBy","scoringParam","searchFilter","queryType","searchMode","searchFields","select","orderby","count","scoringParameters","scoringStatistics","searchResults","GetSearchResult","records","result","searchId","searchUrl","baseUrl","axios","post","searchTerm","suggesterName","DeliveryCatalogID","BlockedUsers","searchIdHeader","defaultScopes","_msal$getAllAccounts","defaultParams","acquireTokenSilent","_ai$appInsights","severityLevel","SeverityLevel","loginToRefreshToken","loginRequest","handleRedirectPromise","then","loginRedirect","catch","_ai$appInsights2","_ai$appInsights3","InteractionRequiredAuthError","acquireTokenRedirect","_ai$appInsights4","Promise","resolve","_ai$appInsights5","useAccessToken","isUserLoggedIn","setAccessToken","timeOutDuration","setTimeOutDuration","intervalId","setTimeout","_response$expiresOn","expiresOn","oneMinuteBeforeExpires","fetchData","clearTimeout","reactPlugin","ReactPlugin","initialize","instrumentationKey","browserHistory","ApplicationInsights","enableAutoRouteTracking","isCookieUseDisabled","maxBatchInterval","enableCorsCorrelation","disableFetchTracking","extensions","extensionConfig","identifier","loadAppInsights","module","exports","imagesSVG","Main_Copilot","mainCopilot","Main_CourseVideos","mainCourseVideos","Main_LearnYourOwn","mainLearnYourOwn","Main_OneDayMSClass","mainOneDayMSClass","Main_GetMSCerts","mainGetMSCerts","Main_MultidayMSClass","mainMultidayMSClass","Main_FindMoreClasses","mainFindMoreClasses","Main_GameLearning","mainGameLearning","GetLanguagesActions","GetTimeZonesActions","GetModalitiesActions","GetRolesActions","GetCountryActions","GetMeasureUpLTISettingsActions","GetNotificationsActions","GetESIAgreementActions","GetEmailCodeVerificationStatusActions","GetLanguagesSaga","GET_LANGUAGES","GetNotificationsSaga","GET_NOTIFICATIONS","GetESIAgreementSaga","GET_ESIAgreement","GetTimezonesSaga","GET_TIMEZONES","GetModalitiesSaga","GET_MODALITIES","GetRolesSaga","GET_ROLES","GetCountrySaga","GET_COUNTRY","GetMeasureUpLTISettingsSaga","GET_MEASUREUP_LTI_SETTINGS","GetEmailCodeVerificationStatus","EMAILCODE_VERIFICATION_STATUS","initialEnrollmentPlanState","countries","isEmailCodeVerified","KEY_TO_CHINA","KEY_TO_KOREA_SOUTH","NO_LEARNER_INFO_ERROR","NOT_LINKED_ACCOUNT_ERROR","EMAIL_NOT_ASSOCIATED_ERROR","NOT_LINKED_ACCOUNT_ERROR_AAD","AAD_ACCOUNT","NON_AAD_ACCOUNT","GetCreateRegistrationActions","GetCancelRegistrationActions","GetCancelWaitlistActions","GetConfirmRegistrationActions","GetEventSessionsActions","PatchEventSessionsActions","PostResendInviteActions","GetEventRegistrationSaga","CREATE_EVENT_REGISTRATION","GetcancelEventRegistrationSaga","CANCEL_REGISTRATION","GetcancelWaitlistSaga","CANCEL_WAITLIST","GetconfirmEventRegistrationSaga","CONFIRM_REGISTRATION","GetEventSessionsSaga","GET_EventSessions","PatchEventSessionsSaga","PATCH_EventSessions","PostResendInviteSaga","POST_ResendInvite","initialEventRegistrationState","attendees","eventRegistrationRequest","eventId","eventregistrations","cancelRegistrationRequest","regId","isDeliveryConfirmed","cancelRegistrationResponse","errorCode","cancelWaitlistRequest","waitlistId","cancelWaitlistResponse","isSuccess","confirmRegistrationRequest","registrationId","confirmRegistrationResponse","patchEventSessionsRequest","sessionRegId","sendInvite","patchEventSessionsResponse","postResendInviteRequest","msgroupid","eventregistrationid","postResendInviteResponse","eventRegistrationResponse","sessions","session","checked","useEndpointActions","endpointActions","dispatch","useDispatch","actionMap","reduce","boundActions","bindActionCreators","Object","values","useStepsToSuccessPages","intl","stepName","stepPath","DeliveryDescActions","DeliveryDescSaga","DELIVERYDESC","initialDeliveryState","deliverydesc","QueryStringHelper","param","generateNewQueryString","existingSearchParams","paramKey","paramValue","_newQueryStringmap$ge","newQueryStringmap","Map","has","delete","searchQuery","allQueryParamsMap","_existingSearchParams","val","entries","set","sort","sortedAscQueryParamsMap","newURLSearchParams","hmacsign","require","GetHmacSign","httpMethod","base_uri","consumer_secret","getVisitLog","GetLinkedAccountsActions","LinkAccountActions","UnlinkAccountActions","LinkAccountEndpointSaga","put","LinkAccountsSaga","LINK_ACCOUNTS","UnlinkAccountsSaga","UNLINK_ACCOUNTS","GetLinkedAccountsSaga","GET_LINKED_ACCOUNTS","initialAccountLinkingState","SSOStatus","SSOFailureReason","SSOProvider","_ref","getFeatureFlag","shallowEqual","disableLxpSSO","FeatureFlagValues","disableTpd","disableTPID","SSOProviderImpl","_ref2","useLocation","ssoState","setSSOState","Pending","profileLoaded","profileLoading","profileExists","customError","responseStatus","_state$UserStore$resp","UserStore","isFetched","isFetching","getProfile","getLinkedAccounts","hasSSOQueryParams","userHasNoProfile","useReferrerLocalization","SSOReferrer","extractedLocale","supportedLocale","localeObject","newLocale","removeItem","_ssoState$email","IsSessionExpired","Failed","failureReason","SafelistedWithNoLinkedAccounts","clear","EligibleWithNoLinkedAccounts","friendlyError","richDescription","ssoFailureReason","linkedAccount","page","showLoginButton","Success","SSORedirect","useRedirect","Skipped","_URLSearchParams$get","trackSSOSignIn","source","_linkedAccounts$find$","_linkedAccounts$find","description","NoLinkedAccounts","OneLinkedAccount","MultipleLinkedAccounts","isSigninDisableFlag","isMaintenanceModeFlag","isSearchFeatureEnabled","showNewTimezoneFlag","disableSessionTimeout","sessionTimeout","sessionExpireCountdownTime","disableMultiRoleAndFiltersInUrl","hideULJPhase2Flag","extraSearchODataFilters","disableResendInvitationLink","disableBLTeamsJoinLink","disableProjectReadinessFlag","disableFrenchEpicFlag","disableGermanEpicFlag","lxpTermsConditions","lxpProgramGuidelines","lxpTermsConditionsTitle","lxpProgramGuidelinesTitle","disableMSLearnSSOForLandingPageAndNavs","disableMSLearnSSOForCertificationPage","disableMSLearnSSOForDeliveriesPage","enableCopilotV2","disableLxpSSOFlag","microsoftLearnLink","examZoneLink","virtualTrainingLink","esiTrainingLink","profileLxpLink","esiSupportLink","esiSupcaseLink","disableELAUnAuthFlowFlag","toolTipClose","LearningPathContentType","LearningPathContent","eventType","contentType","_learningPathItemContent","itemMeta","items","uniqueModalities","Set","item","colors","RESOLVE","Color","itemWidth","gradientValue","idx","color","ilt","modalityLabel","iconName","actionLabel","workshop","hackathon","ua","navigator","userAgent","msie","msie11","isEdge","errorPayload","responseErrorCode","responseDescription","localizeStringForError","TRACK_UNKNOWN_ERROR","OneDayClassesContentType","OneDayClassesContent","_MsclassesItemContent","GET_BORDER_IMAGE_VALUE_FINDMORE","GET_BORDER_IMAGE_VALUE_GAMES","GET_BORDER_IMAGE_VALUE_CERTIFICATE","borderTopColorValue","textColor","vilt","main_multidaymsclass","main_deliveryonlymsclass","main_onedaymsclass","EndpointReductor","initialState","_this","_initialState","_endpointActionNames","suffix","getEndpointActionNameParts","typeValue","suffixes","endsWith","actions","apiFunction","effectCreator","_apiFunction","_effectCreator","handleExecution","bind","watcher","onSuccessExecuted","onErrorExecuted","apiFunctionWithBody","call","apiFunctionWithoutBody","responseMeta","err","stack","unknownErrorMsg","reducer","_reductor","_reducer","reducerRegistry","register","sagaRegistry","registerAnthology","_emitChange","_reducers","getReducers","setChangeListener","listener","_anthologies","registerSaga","saga","isRegistered","endpointSagas","getAnthologySaga","all","fork","forEach","initialEndpointState","GetCertificationActions","GetCertificationSaga","GET_CERTIFICATIONS","initialCertificationState","certifications","GetUpdateAccountWorkEmailOnlyActions","GetUpdateAccountActions","GetUpdateAccountOidEmailAddressOnlyActions","GetMultipleProfiles","DeleteDuplicateProfile","OfferTransHistoryActions","UpdateAccountWorkEmailOnlySaga","UPDATE_ACCOUNT_WorkEmailOnly","UpdateAccountSaga","UPDATE_ACCOUNT","UpdateAccountOidEmailAddressOnlySaga","UPDATE_ACCOUNT_OID_EmailAddressOnly","GetProfilesSaga","GET_MULTIPLE_PROFILES","DeleteDuplicateProfileSaga","DELETE_DUPLICATE_PROFILE","OfferTransactionSaga","Get_OfferTransactionHistory","initialUpdateAccountState","updateAccountRequest","newWorkEmail","oldWorkEmail","updateAccountResponse","multipleProfileRequest","multipleProfileResponse","deleteDuplicateProfileRequest","deleteDuplicateProfileResponse","offerTransactionResponse","_featureflaglist$filt","_featureflaglist$filt2","_featureflaglist$filt3","_featureflaglist$filt4","_featureflaglist$filt5","_featureflaglist$filt6","_featureflaglist$filt7","_featureflaglist$filt8","_featureflaglist$filt9","_featureflaglist$filt10","_featureflaglist$filt11","_featureflaglist$filt12","_featureflaglist$filt13","_featureflaglist$filt14","_featureflaglist$filt15","_featureflaglist$filt16","_featureflaglist$filt17","_featureflaglist$filt18","_featureflaglist$filt19","_featureflaglist$filt20","featureflaglist","isSigninDisable","isMaintenanceMode","searchFeature","showNewTimezone","hideSessionTimeout","isMultiRoleAndFiltersInURLDisabled","hideULJPhase2","isResendInvitationLink","hideBLSessions","isBLTeamsJoinLink","disableEsiTerms","disableLearnSSOForCertificationPage","disableLearnSSOForDeliveriesPage","disableLearnSSOForLandingPageAndNavs","disableFrenchEpic","disableGermanEpic","disableELAUnAuthFlow","disableTpid","useDisclosure","isDefaultOpen","isOpen","setIsOpen","onOpen","onClose","onToggle","useTitle","oldTitle","useLogout","silent","logoutRedirect","onRedirectNavigate","_","enabledHosts","validReferrer","shouldAttemptSSO","updateSSOParams","_searchParams$get","ssoSource","useAuthenticator","seterror","authorityurl","useIsAuthenticated","loading","pendingDisableLxpSSO","useDisableLxpSSO","flagFetching","flagsFetched","context","shouldRemoveSSO","removeSSOParams","hasSSO","hasSSOContext","ssoActive","ssoSilent","msalSSO","requestredirect","webpackAsyncContext","req","__webpack_require__","o","code","ids","t","keys","EulaProtection","isProfileFetched","userEmail","isFeatureFlagLoaded","setFeatureFlagLoaded","CopilotLogo","Image","src","CopilotSvg","alt","COPILOT_BOT_CONST","lxpText","elaText","currentTime","Math","floor","random","CopilotBot","isCopilotVisible","emailProfile","tooltipId","useId","copilotHeader","ref","useRef","iframeLoad","setIframeLoad","setLearnerId","copilotBotEnable","chatBotSrc","_loadIframe","iframe","current","iWindow","contentWindow","dataToPass","sourceName","userDetail","accountDetail","telemetryData","sessionId","sessionManager","automaticSession","additionalProps","postMessage","handlePostMessage","event","link","isAccessToken","addEventListener","removeEventListener","Popup","ariaLabelledBy","aria-level","FormattedMessage","defaultMessage","TooltipHost","content","calloutProps","gapSpace","styles","root","display","directionalHint","DirectionalHint","leftCenter","Dismiss24Regular","data-testid","onClick","closeCopilot","changeCopilotVisibility","milliseconds","minutes","Information","EmailAddress","duration","aria-describedby","onLoad","Loading","pastDelay","routeConfig","path","component","Loadable","loader","exact","Footer","year","siteConsent","footerAnalytics","Cookies","WcpConsent","init","_siteConsent","_siteConsent2","alert","isConsentRequired","NavLink","to","FontIcon","aria-label","Link","href","target","_managecookie","cookies","cookie","remove","manageConsent","supportLinkLogging","supportLinkVisitLog","theme","getTheme","mergeStyleSets","buttonArea","margin","callout","width","height","header","padding","borderBottom","close","float","fontWeight","FontWeights","bold","fontSize","buttonheader","fonts","medium","regular","opacity","inner","position","marginTop","whiteSpace","subtext","small","semilight","PopupCallout","_displayName$trim","userName","signout","labelId","headerDisplayName","DefaultButton","tabIndex","onKeyDown","keyCode","which","User","UserContrast","b","chunks","Callout","aria-hidden","onDismiss","setInitialFocus","Icon","Text","onSignOutClick","isSessionExpired","onBlur","persist","relatedTarget","CopilotButton","GlobalResults","onResults","addSuggestion","hideSuggestions","escape","setEscape","list","suggestionId","onListBlur","onEscapeKeyPress","htmlFor","aria-labelledby","onKeyUp","SearchTextBox","searchValue","setSearchValue","shouldSearch","setShouldSearch","teachingBubbleVisible","setTeachingBubbleVisible","searchBoxId","setItems","showSuggestions","setShowSuggestions","showSearchIcon","setShowSearchIcon","teachingBubbleClose","setTeachingBubbleClose","searchBox","getElementById","showBubble","exampleImageProps","SearchBubbleIcon","imageFit","bubbleStyles","flexDirection","footer","backgroundColor","imageContent","right","background","borderRadius","animationFillMode","animationDuration","body","bodyContent","minHeight","minWidth","overflowWrap","subComponentStyles","beak","doSearch","onContinue","finalSearchValue","defaultUrl","headline","bodyText","exOption0","exOption1","exOption2","exOption3","exOption4","searchPlaceholder","gotIt","inputRef","examplePrimaryButtonProps","_inputRef$current","focus","suggestions","getElementsByClassName","suggestionIndex","currentLi","prevId","nextId","_suggestions$nextId","_suggestions$prevId","innerHTML","handleSearchArrow","firstLi","clickHandler","timeout","onSubmit","autoComplete","onChange","_event$target$value","_event$target","GetDeliverySuggestions","getSuggestions","placeholder","onFocus","handleOnFocus","handleFocusOut","resetVal","notGlobal","PrimaryButton","aria-live","targetId","TeachingBubble","hasCondensedHeadline","hasCloseButton","isWide","bottomCenter","closeButtonAriaLabel","illustrationImage","primaryButtonProps","RightSideBarNavigation","ULJPhase2","_FeatureFlagValues","toggleCopilotVisibility","enableCopilotForAccount","onCopilotClick","carditemlist","profileIsSSOEnabled","isSSOServerError","serverErrorMessage","LearningPathStore","disableSSOFeatureFlag","disableSSO","getLearningPathCards","getSSOStatus","userDomain","hascarditemlist","Array","isArray","stepsToSuccessPages","searchTextBoxVisible","setSearchTextBoxVisible","hideUljPhase2","showSearchDialog","learningAssistantNavItem","searchIcon","onCompletionClose","isHamburger","data-is-focusable","FocusZone","carditem","GetUrlWithRole","rel","imagename","cardtitle","TaskListContrast","Profile","Info","ChatSparkle","style","stepsItem","RightNavMenu","dialogContentProps","DialogType","Dialog","hidden","modalProps","isBlocking","containerClassName","onsignOutLinkClick","BurgerMenu","setisOpen","toggle","Navigation24Regular","data-id","NavbarMenu","BackoutBurgerMenu","Header","showPersona","siteName","esiIndicator","profileWorkEmailAddress","profileEmailAddress","customerInfo","eSITerms","setInitialLocale","_featureFlags$filter2","IsAuthenticated","signOutPrompt","onSiteNameClick","msLogo","msLogoContrast","TaskList","ProfileContrast","InfoContrast","SessionTimeout","subText","normal","showCloseButton","s","setTime","handleContinueSession","showSessionExpired","timerID","setInterval","clearInterval","padStart","staySignedIn","memo","SkipNavContent","SkipNavLink","data-skip-link","initializeIcons","App","showHeader","showFooter","setCopilotVisible","isEnableCopilotForUserFlag","Boolean","isIdle","setIsIdle","openSessionTimeout","setOpenSessionTimeout","getPathName","reset","start","useIdleTimer","onAction","handleAction","onIdle","handleIdle","isDisableELAUnAuthFlow","isCopilotVisibleForUnauthFlag","renderRoutes","defaultProps","AuthenticatedApp","AuthenticatedTemplate","UnauthenticatedTemplate","UnauthenticatedApp","appProps","ApplicationInsightsProvider","Component","initialized","componentDidMount","setState","render","withRouter","withAITracking","match","GetCopilotActions","GET_COPILOTTOKENS","initialCopilotState","copilot","token","SEND_REQUEST_AdditionalTokens","initialRequestAdditionalTokensState","requestAdditionalTokensRequest","LxpPuid","FirstName","LastName","Organization","BusinessJustification","requestAdditionalTokensResponse","resultMessage","initialAppState","isFormSubmitted","CertificationStore","EnrollmentPlanStore","AccountLinkingStore","DeliveryStore","EventRegistrationStore","UpdateAccountStore","RequestAdditionalTokensStore","CopilotStore","store","configureStore","sagaMiddleware","createSagaMiddleware","defaultMiddleware","rootReducer","combineReducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","reduxStore","createStore","applyMiddleware","reducers","replaceReducer","run","options","subset","MozOsxFontSmoothing","WebkitFontSmoothing","fontStyle","speak","fontFace","fontFamily","icons","Add","AlertSolid","AcceptMedium","Back","Calendar","Cancel","Certificate","CheckMark","ChevronDown","ChevronLeft","ChevronRight","ChevronUp","Completed","CompletedSolid","Contact","ContactCard","D365TalentLearn","Devices3","DoubleChevronDown","DoubleChevronLeft","DoubleChevronRight","DoubleChevronUp","eDiscovery","ErrorBadge","Event","EventInfo","Forward","Group","LearningTools","Message","MiniExpand","More","MoreVertical","NavigateExternalInline","PageRight","PDF","Pin","PublishCourse","TextDocumentEdit","Main_ProductivityWorkshop","Wheelchair","World","Warning","SearchCampaigns","registerIcons","registerIconAliases","registerIconAlias","IconNames","DEFAULT_BASE_URL","LocalizedApp","currentAnalytics","allowForClarity","removeAnalyticCookies","checkForAnalytics","isAnalytics","getConsentFor","consentCategories","Analytics","newConsent","i","iconSubset","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","staleTime","retry","Fabric","MsalProvider","instance","QueryClientProvider","client","ReactQueryDevtools","initialIsOpen","BrowserRouter","Switch","Route","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e03bd863.chunk.js","sourcesContent":["import { IDeliverySearchRecord, IFilterInputs, IUserEmailProfile, IUserProfile } from '../models';\r\nimport { ai } from '../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { trackLearnUrlRedirect } from '../components/ApplicationInsightsProvider/LearnRedirectTelemetryService';\r\nimport { IGetEventSessionsRequest } from '../models/EventManagement/EventSessions';\r\nexport class Helper {\r\n static learnUrlPatterns = process.env.REACT_APP_LEARN_URL_PATTERNS?.split(',').map(pattern => new RegExp(pattern)) || [];\r\n\r\n /**\r\n * return the locale.\r\n *\r\n * @returns {string}\r\n */\r\n public static getLocale(): string {\r\n let locale = localStorage.getItem('locale');\r\n if (locale === '' || locale === null) {\r\n //default value\r\n locale = 'en-us';\r\n } else {\r\n locale = locale.toLowerCase();\r\n }\r\n return locale;\r\n }\r\n\r\n public static getUtcToLocalConvertedDate(flexTimeZone: string, flexDate: string) {\r\n const date = new Date(flexDate);\r\n const getTimeZone = flexTimeZone?.substring(4, 10)?.split(':');\r\n let offset = getTimeZone[0];\r\n if (getTimeZone[1] !== '00') {\r\n const getMinutes = parseInt(getTimeZone[1]) / 60;\r\n const getMinutesSplit = getMinutes.toString().split('.');\r\n offset = getTimeZone[0] + '.' + getMinutesSplit[1];\r\n }\r\n const itemDisplayDate = new Date(date.getTime() + 3600000 * parseFloat(offset));\r\n return itemDisplayDate;\r\n }\r\n\r\n public static supportLinkVisitLog(pageName: string, emailAddress?: string, learnerId?: string) {\r\n const date = new Date();\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Action: Support link has been vistied on this page-' + pageName,\r\n properties: {\r\n emailAddress: emailAddress,\r\n learnerId: learnerId,\r\n dateOfVisit: date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear(),\r\n timeOfVisit: date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds()\r\n }\r\n });\r\n }\r\n }\r\n\r\n public static GetUrlWithRole(cardDetails: any, profileRole: string): string {\r\n if (cardDetails.cardtitleid?.toLowerCase() === 'productivity workshops') {\r\n return cardDetails.cardlink;\r\n }\r\n\r\n const urlToParse = cardDetails.cardlink;\r\n profileRole = profileRole?.toLowerCase().replace(' ', '-');\r\n\r\n const url: URL = new URL(urlToParse);\r\n const queryStringParts: string[] = decodeURIComponent(url.search).split('&');\r\n const ignoreRoles: string[] = ['fundamental-skills', 'technology-educator'];\r\n const roles: string[] = queryStringParts[0].replace('?roles=', '').split(',');\r\n const mappedRoleIndex = roles.indexOf(profileRole);\r\n let filteredQueryString = '';\r\n let roleFilteredUrl = '';\r\n\r\n if (ignoreRoles.indexOf(profileRole) > -1) {\r\n filteredQueryString = encodeURI(`&${queryStringParts.slice(1).join('&')}`);\r\n roleFilteredUrl = `${url.protocol}//${url.hostname}${url.pathname}?${filteredQueryString}`;\r\n return roleFilteredUrl;\r\n }\r\n\r\n if (mappedRoleIndex > -1) {\r\n filteredQueryString = encodeURI(`roles=${roles[mappedRoleIndex]}&${queryStringParts.slice(1).join('&')}`);\r\n roleFilteredUrl = `${url.protocol}//${url.hostname}${url.pathname}?${filteredQueryString}`;\r\n return roleFilteredUrl;\r\n }\r\n return urlToParse;\r\n }\r\n\r\n public static setLocalStatusForDelivery = (deliveryId: string) => {\r\n if (deliveryId) {\r\n let deliveriesInprogress = [];\r\n const deliveryList = localStorage.getItem('deliveriesInprogress');\r\n\r\n if (deliveryList) {\r\n deliveriesInprogress = JSON.parse(deliveryList);\r\n }\r\n const deliverIdInProgress = { deliveryId: deliveryId, expiry: new Date().getTime() + 300000 };\r\n deliveriesInprogress.filter((deliverObj: { deliveryId: string; expiry: Date }) => deliverObj.deliveryId === deliveryId);\r\n deliveriesInprogress.push(deliverIdInProgress);\r\n localStorage.setItem('deliveriesInprogress', JSON.stringify(deliveriesInprogress));\r\n }\r\n };\r\n\r\n public static getLocalStatusFordelivery = (deliveryId: string) => {\r\n if (deliveryId) {\r\n const deliveriesList = localStorage.getItem('deliveriesInprogress');\r\n if (deliveriesList) {\r\n const deliveriesInProgress = JSON.parse(deliveriesList);\r\n\r\n const delivery = deliveriesInProgress.find(\r\n (deliverObj: { deliveryId: string; expiry: Date }) => deliverObj.deliveryId === deliveryId\r\n );\r\n\r\n if (!delivery) {\r\n return false;\r\n }\r\n if (delivery.expiry < Date.now()) {\r\n const filteredDelivery = deliveriesInProgress.filter(\r\n (deliverObj: { deliveryId: string; expiry: Date }) => deliverObj.deliveryId !== deliveryId\r\n );\r\n localStorage.setItem('deliveriesInprogress', JSON.stringify(filteredDelivery));\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n };\r\n\r\n public static setClarityCustomTag = (key: string, value: string) => {\r\n if (typeof window !== undefined) {\r\n const wnd = window as any;\r\n wnd['clarity']('set', key, value);\r\n }\r\n };\r\n\r\n public static handleLearnRedirect = (disabled: boolean, url: string | undefined, openTarget?: string, openFeatures?: string) => {\r\n if (disabled || url === undefined || !Helper.isLearnURL(url)) {\r\n window.open(url, openTarget, openFeatures);\r\n return;\r\n }\r\n const ssoURL = Helper.appendLearnSSO(url);\r\n Helper.setClarityCustomTag('LearnRedirect', ssoURL ?? '');\r\n Helper.setClarityCustomTag('EventLearnRedirect', 'LearnRedirected');\r\n trackLearnUrlRedirect(ssoURL);\r\n return window.open(ssoURL, openTarget, openFeatures);\r\n };\r\n\r\n /**\r\n * returns mouse event handler\r\n *\r\n * @returns {(e: React.MouseEvent | MouseEvent) => void}\r\n * @param disabled\r\n * @param url\r\n * @param openTarget\r\n * @param openFeatures\r\n */\r\n public static handleLearnRedirectEvent = (disabled: boolean, url: string, openTarget?: string, openFeatures?: string) => (\r\n e: React.MouseEvent | MouseEvent\r\n ) => {\r\n e.preventDefault();\r\n Helper.handleLearnRedirect(disabled, url, openTarget, openFeatures);\r\n };\r\n\r\n public static getDomain = (workEmail: string | null): string | undefined | null => {\r\n return workEmail !== null ? workEmail.split('@').pop() : null;\r\n };\r\n\r\n private static isLearnURL = (url: string): boolean => {\r\n for (const pattern of Helper.learnUrlPatterns) {\r\n if (pattern.test(url)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private static appendLearnSSO = (url: string): string => {\r\n const urlBuilder = new URL(url);\r\n if (urlBuilder.host.includes('safelinks.protection.outlook.com') || !urlBuilder.protocol.includes('https')) {\r\n return url;\r\n }\r\n urlBuilder.searchParams.append('sso', 'esi');\r\n return urlBuilder.toString();\r\n };\r\n\r\n public static getCurrentWeekForBL(eventStartDate: Date, eventEndDate: Date, currentDateTimeNow: Date) {\r\n let currentWeekNumber = 0;\r\n\r\n if (currentDateTimeNow < eventStartDate) {\r\n currentWeekNumber = 0;\r\n } else if (currentDateTimeNow <= Helper.addDaysToDate(eventStartDate, 6)) {\r\n currentWeekNumber = 1;\r\n } else if (\r\n currentDateTimeNow > Helper.addDaysToDate(eventStartDate, 6) &&\r\n currentDateTimeNow <= Helper.addDaysToDate(eventStartDate, 13)\r\n ) {\r\n currentWeekNumber = 2;\r\n } else if (\r\n currentDateTimeNow > Helper.addDaysToDate(eventStartDate, 13) &&\r\n currentDateTimeNow <= Helper.addDaysToDate(eventStartDate, 20)\r\n ) {\r\n currentWeekNumber = 3;\r\n } else if (currentDateTimeNow > Helper.addDaysToDate(eventStartDate, 20) && currentDateTimeNow < eventEndDate) {\r\n currentWeekNumber = 4;\r\n } else if (currentDateTimeNow >= eventEndDate) {\r\n currentWeekNumber = 5;\r\n }\r\n return currentWeekNumber;\r\n }\r\n\r\n public static addDaysToDate(date: Date, days: number) {\r\n const updatedDate = new Date(date);\r\n updatedDate.setDate(date.getDate() + days);\r\n return updatedDate;\r\n }\r\n\r\n public static getProfileOrgId(profile: IUserProfile) {\r\n return 'TPID' in profile ? profile.TPID : 'skillingId' in profile ? profile.skillingId : '';\r\n }\r\n\r\n public static getEmailProfileOrgId(profile: IUserEmailProfile) {\r\n return 'tpid' in profile ? profile.tpid : 'skillingId' in profile ? profile.skillingId : '';\r\n }\r\n\r\n public static getFilterOrgId(filter: IFilterInputs) {\r\n return 'tpId' in filter ? filter.tpId : 'skillingId' in filter ? filter.skillingId : '';\r\n }\r\n\r\n public static hasProfileContainTpid(profile: IUserProfile) {\r\n if ('TPID' in profile) {\r\n return true;\r\n } else if ('skillingId' in profile) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n public static hasFilterContainTpid(filter: IFilterInputs) {\r\n if ('tpId' in filter) {\r\n return true;\r\n } else if ('skillingId' in filter) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n public static hasDelSearchContainTpid(delSearch: IDeliverySearchRecord) {\r\n if ('tpId' in delSearch) {\r\n return true;\r\n } else if ('skillingId' in delSearch) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n public static hasEventSessionContainTpid(eventSession: IGetEventSessionsRequest) {\r\n if ('tpId' in eventSession) {\r\n return true;\r\n } else if ('skillingId' in eventSession) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n public static returnOrgObject(profile: IUserProfile) {\r\n let orgObj = {};\r\n const prof = profile;\r\n if (this.hasProfileContainTpid(profile)) {\r\n orgObj = {\r\n tpId: 'TPID' in prof ? prof.TPID : ''\r\n };\r\n } else if (!Helper.hasProfileContainTpid(profile)) {\r\n orgObj = {\r\n skillingId: 'skillingId' in prof ? prof.skillingId : ''\r\n };\r\n }\r\n return orgObj;\r\n }\r\n\r\n public static returnFilterOrgObject(filterInput: IFilterInputs) {\r\n let orgObj = {};\r\n const filter = filterInput;\r\n if (this.hasFilterContainTpid(filterInput)) {\r\n orgObj = {\r\n tpId: 'tpId' in filter ? filter.tpId : ''\r\n };\r\n } else if (!Helper.hasFilterContainTpid(filterInput)) {\r\n orgObj = {\r\n skillingId: 'skillingId' in filter ? filter.skillingId : ''\r\n };\r\n }\r\n return orgObj;\r\n }\r\n\r\n public static returnDelSearchOrgObject(delSearchInput: IDeliverySearchRecord) {\r\n let orgObj = {};\r\n const delSearch = delSearchInput;\r\n if (this.hasDelSearchContainTpid(delSearchInput)) {\r\n orgObj = {\r\n tpId: 'TPID' in delSearch ? delSearch.TPID : ''\r\n };\r\n } else if (!Helper.hasDelSearchContainTpid(delSearchInput)) {\r\n orgObj = {\r\n skillingId: 'skillingId' in delSearch ? delSearch.skillingId : ''\r\n };\r\n }\r\n return orgObj;\r\n }\r\n\r\n public static returnEventSessionOrgObject(eventSessionInput: IGetEventSessionsRequest) {\r\n let orgObj = {};\r\n const eventSession = eventSessionInput;\r\n if (this.hasEventSessionContainTpid(eventSessionInput)) {\r\n orgObj = {\r\n tpId: 'tpId' in eventSession ? eventSession.tpId : ''\r\n };\r\n } else if (!Helper.hasEventSessionContainTpid(eventSessionInput)) {\r\n orgObj = {\r\n skillingId: 'skillingId' in eventSession ? eventSession.skillingId : ''\r\n };\r\n }\r\n return orgObj;\r\n }\r\n}\r\n","import { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\n\r\nconst redirectEventName = 'LearnUrlRedirect';\r\n\r\n/**\r\n * Tracks Learn Url redirect event\r\n *\r\n * @param {string} learnUrl Search ID from the response header 'x-ms-azs-searchid'\r\n */\r\nconst trackLearnUrlRedirect = (learnUrl: string | undefined) => {\r\n ai.appInsights!.trackEvent(\r\n {\r\n name: redirectEventName\r\n },\r\n {\r\n learnUrl\r\n }\r\n );\r\n};\r\n\r\nexport { trackLearnUrlRedirect };\r\n","import { takeLeading } from 'redux-saga/effects';\r\n\r\nimport {\r\n ICreateProfileRequest,\r\n IUpdateProfileRequest,\r\n IUserProfile,\r\n IEmailValidationRequest,\r\n IUserEmailProfile,\r\n IEmailVerificationRequest,\r\n IVerificationCodeRequest,\r\n IWorkEmailVerificationCodeRequest,\r\n IUpdateEmailVerificationRequest,\r\n ITokensAvailable,\r\n ILearnerIdRequest,\r\n IUserSSOEligibility,\r\n IVerifyCleanupUserRequest,\r\n IUnlinkEmailAddressErrorRequest\r\n} from '../../../models';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport {\r\n CreateProfileActions,\r\n GetProfileActions,\r\n UpdateProfileActions,\r\n EmailVerificationActions,\r\n EmailValidationActions,\r\n EmailServiceStatusActions,\r\n VerificationCodeActions,\r\n DeleteAccountActions,\r\n UpdateWorkEmailAddressActions,\r\n VerifyWorkEmailAddressActions,\r\n CheckUserIsSupportUserOrNotActions,\r\n GETTokensAvailableActions,\r\n GetSSOStatusActions,\r\n VerifyCleanupUserActions,\r\n UnlinkEmailAddressErrorActions,\r\n GetSSOLinkedAccountsActions\r\n} from './actions';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n CheckUserIsSupportUserOrNotSaga: new EndpointSaga(CheckUserIsSupportUserOrNotActions, Api.GET_USER_PARTOF, takeLeading),\r\n GetProfileSaga: new EndpointSaga(GetProfileActions, Api.GET_PROFILE, takeLeading),\r\n CreateProfileSaga: new EndpointSaga(CreateProfileActions, Api.CREATE_PROFILE, takeLeading),\r\n UpdateProfileSaga: new EndpointSaga(UpdateProfileActions, Api.UPDATE_PROFILE, takeLeading),\r\n EmailValidationSaga: new EndpointSaga(\r\n EmailValidationActions,\r\n Api.EMAIL_VALIDATION,\r\n takeLeading\r\n ),\r\n GETTokensAvailableSaga: new EndpointSaga(\r\n GETTokensAvailableActions,\r\n Api.TOKENS_AVAILABLE,\r\n takeLeading\r\n ),\r\n EmailVerificationSaga: new EndpointSaga(EmailVerificationActions, Api.EMAIL_VERIFICATION, takeLeading),\r\n VerificationCodeSega: new EndpointSaga(VerificationCodeActions, Api.VERIFIY_CODE, takeLeading),\r\n EmailServiceStatusSaga: new EndpointSaga(EmailServiceStatusActions, Api.EMAIL_SERVICE_STATUS, takeLeading),\r\n DeleteAccountSaga: new EndpointSaga(DeleteAccountActions, Api.DELETE_ACCOUNT, takeLeading),\r\n VerifyWorkEmailAddressSaga: new EndpointSaga(\r\n VerifyWorkEmailAddressActions,\r\n Api.VERIFY_WORKEMAILADDRESS,\r\n takeLeading\r\n ),\r\n VerifyCleanupUserSaga: new EndpointSaga(VerifyCleanupUserActions, Api.VERIFY_CLEANUP_USERS, takeLeading),\r\n\r\n UnlinkEmailAddressErrorSaga: new EndpointSaga(\r\n UnlinkEmailAddressErrorActions,\r\n Api.Unlink_EmailAddress_Error,\r\n takeLeading\r\n ),\r\n\r\n UpdateWorkEmailAddressSaga: new EndpointSaga(\r\n UpdateWorkEmailAddressActions,\r\n Api.UPDATE_WORKEMAILADDRESS,\r\n takeLeading\r\n ),\r\n GetSSOStatusSaga: new EndpointSaga(GetSSOStatusActions, Api.GET_SSO_STATUS, takeLeading),\r\n GetSSOLinkedAccountsSaga: new EndpointSaga(GetSSOLinkedAccountsActions, Api.GET_SSO_LINKED_ACCOUNTS, takeLeading)\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport {\r\n IRequestResponse,\r\n IUserProfile,\r\n IUserEmailProfile,\r\n ICustomErrorMessage,\r\n ITokensAvailable,\r\n ILearnerIdRequest,\r\n IUserSSOProfile\r\n} from '../../../models';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport {\r\n CreateProfileActions,\r\n GetProfileActions,\r\n UpdateProfileActions,\r\n EmailValidationActions,\r\n EmailVerificationActions,\r\n VerificationCodeActions,\r\n EmailServiceStatusActions,\r\n DeleteAccountActions,\r\n UpdateWorkEmailAddressActions,\r\n VerifyWorkEmailAddressActions,\r\n CheckUserIsSupportUserOrNotActions,\r\n GETTokensAvailableActions,\r\n GetSSOStatusActions,\r\n VerifyCleanupUserActions,\r\n UnlinkEmailAddressErrorActions,\r\n GetSSOLinkedAccountsActions\r\n} from './actions';\r\nimport { sagas } from './sagas';\r\nimport { ErrorMessageMapper } from './../../../utilities';\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'UserStore';\r\n\r\nexport interface IUserState extends IEndpointState {\r\n /** The user profile state */\r\n readonly profile: IUserProfile;\r\n readonly isSupportUserOrNot: boolean | null;\r\n readonly emailprofile: IUserEmailProfile;\r\n readonly ssoprofile: IUserSSOProfile;\r\n readonly isProfileExists: boolean | null;\r\n readonly isEmailSend: boolean | null;\r\n readonly isUnlinked: boolean | null;\r\n readonly isEmailSendForWorkEmail: boolean | null;\r\n readonly isWorkEmailUpdate: boolean | null;\r\n readonly isVerified: boolean | null;\r\n readonly isSSOError: boolean | null;\r\n readonly isIncomingSSOError: boolean | null;\r\n readonly isVerificationError: boolean | null;\r\n readonly isAccountLinkingSuccess: boolean | null;\r\n readonly response: IRequestResponse;\r\n readonly learnerId: ILearnerIdRequest;\r\n readonly verifyCleanupUserResponse: ICustomErrorMessage | null;\r\n readonly unlinkEmailAddressErrorResponse: ICustomErrorMessage | null;\r\n readonly accountUnlinkingResponse: ICustomErrorMessage | null;\r\n readonly customErrorMessage: ICustomErrorMessage | null;\r\n readonly isEmailServiceAvailable: boolean | true;\r\n readonly tokensAvailable: ITokensAvailable;\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = IUserState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialUserState: IState = new EndpointStateFactory().getInitialState({\r\n profile: {\r\n associationId: '',\r\n displayName: '',\r\n emailAddress: '',\r\n activeLearningPlanId: '',\r\n isTOSAccepted: false,\r\n id: '',\r\n oid: '',\r\n programs: [],\r\n hasLinkedAccount: false,\r\n role: '',\r\n roleName: '',\r\n timezone: '',\r\n language: '',\r\n workEmail: '',\r\n firstName: '',\r\n lastName: '',\r\n country: '',\r\n preferredEmailAddress: '',\r\n isKoreaPrivacyAccepted: false,\r\n esiTerms: { id: '', isESITermsAccepted: false, acceptedDateTime: undefined }\r\n },\r\n emailprofile: {\r\n domain: '',\r\n companyName: '',\r\n ESIIndicator: '',\r\n ESIMember: false,\r\n enableCopilot: false,\r\n esi: false,\r\n isAad: null,\r\n lpId: '',\r\n isMSA: false,\r\n authority: '',\r\n isMigrateCandidate: false\r\n },\r\n ssoprofile: {\r\n isDomainEligibleForSso: false,\r\n linkedAccounts: null\r\n },\r\n isProfileExists: null,\r\n isEmailSend: null,\r\n isEmailSendForWorkEmail: null,\r\n isWorkEmailUpdate: null,\r\n isVerified: null,\r\n isVerificationError: null,\r\n isSSOError: null,\r\n isIncomingSSOError: null,\r\n isAccountLinkingSuccess: null,\r\n customErrorMessage: null,\r\n accountUnlinkingResponse: null,\r\n verifyCleanupUserResponse: null,\r\n unlinkEmailAddressErrorResponse: null,\r\n isUnlinked: false,\r\n isEmailServiceAvailable: undefined,\r\n tokensAvailable: {\r\n availableTokens: undefined,\r\n displayRequestForm: false,\r\n lxpPuid: '',\r\n tokenRegenerationDate: '',\r\n maximumTokens: undefined,\r\n additionalTokenRequestStatus: ''\r\n }\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial user state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialUserState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetProfileActions.ActionTypes.ExecuteError:\r\n if (action.meta && action.meta.status === 404) {\r\n return {\r\n ...state,\r\n isProfileExists: false\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n isProfileExists: false,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n }\r\n case CreateProfileActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isProfileExists: false,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case UpdateProfileActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case DeleteAccountActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: false,\r\n accountUnlinkingResponse: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case DeleteAccountActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n accountUnlinkingResponse: {\r\n statusCode: 200\r\n },\r\n profile: {\r\n ...state.profile\r\n }\r\n };\r\n case CheckUserIsSupportUserOrNotActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isSupportUserOrNot: action.payload\r\n };\r\n case CheckUserIsSupportUserOrNotActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isSupportUserOrNot: false,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetProfileActions.ActionTypes.ExecuteSuccess:\r\n case CreateProfileActions.ActionTypes.ExecuteSuccess:\r\n case UpdateProfileActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isProfileExists: true,\r\n profile: action.payload as IUserProfile\r\n };\r\n case EmailValidationActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n emailprofile: action.payload\r\n };\r\n case EmailValidationActions.ActionTypes.ExecuteError:\r\n if (action.meta) {\r\n return {\r\n ...state,\r\n emailprofile: action.meta.data,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n } else {\r\n return state;\r\n }\r\n case GETTokensAvailableActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n tokensAvailable: action.payload\r\n };\r\n case GETTokensAvailableActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case VerifyCleanupUserActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isUnlinked: true,\r\n verifyCleanupUserResponse: {\r\n statusCode: 200\r\n }\r\n };\r\n case VerifyCleanupUserActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n verifyCleanupUserResponse: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case VerifyCleanupUserActions.ActionTypes.Clear:\r\n return {\r\n ...state,\r\n isError: false,\r\n verifyCleanupUserResponse: null\r\n };\r\n case UnlinkEmailAddressErrorActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isUnlinked: true,\r\n unlinkEmailAddressErrorResponse: {\r\n statusCode: 200\r\n }\r\n };\r\n case UnlinkEmailAddressErrorActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n unlinkEmailAddressErrorResponse: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case EmailVerificationActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isEmailSend: true\r\n };\r\n case EmailVerificationActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isEmailSend: false,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case EmailVerificationActions.ActionTypes.Clear:\r\n return {\r\n ...state,\r\n isEmailSend: null,\r\n isError: action.payload || false,\r\n customErrorMessage: null,\r\n isVerified: null,\r\n isVerificationError: null\r\n };\r\n case VerifyWorkEmailAddressActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isEmailSendForWorkEmail: true,\r\n isVerified: null,\r\n isVerificationError: null\r\n };\r\n case VerifyWorkEmailAddressActions.ActionTypes.Clear:\r\n return {\r\n ...state,\r\n isEmailSendForWorkEmail: null,\r\n isVerified: null,\r\n isVerificationError: null\r\n };\r\n case UpdateWorkEmailAddressActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isWorkEmailUpdate: true,\r\n isEmailSendForWorkEmail: false,\r\n isVerified: true,\r\n isVerificationError: false\r\n };\r\n case UpdateWorkEmailAddressActions.ActionTypes.ExecuteError:\r\n if (action.meta.status === 400) {\r\n return {\r\n ...state,\r\n isVerified: false,\r\n isVerificationError: true\r\n };\r\n } else {\r\n return { ...state, isError: true, customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta) };\r\n }\r\n case VerifyWorkEmailAddressActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isEmailSendForWorkEmail: false,\r\n isError: true,\r\n isVerificationError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case EmailServiceStatusActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isEmailServiceAvailable: action.payload\r\n };\r\n case EmailServiceStatusActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true\r\n };\r\n case VerificationCodeActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isVerified: true,\r\n isVerificationError: false\r\n };\r\n case VerificationCodeActions.ActionTypes.ExecuteError:\r\n if (action.meta.status === 400 || action.meta.status === 404) {\r\n return {\r\n ...state,\r\n isVerified: false,\r\n isVerificationError: true\r\n };\r\n } else {\r\n return { ...state, isError: true, customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta) };\r\n }\r\n case GetSSOStatusActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isSSOError: false,\r\n ssoprofile: { ...state.ssoprofile, isDomainEligibleForSso: action.payload.isDomainEligibleForSso }\r\n };\r\n case GetSSOStatusActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n ssoprofile: {\r\n ...state.ssoprofile,\r\n isDomainEligibleForSso: false\r\n },\r\n isSSOError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetSSOLinkedAccountsActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isIncomingSSOError: false,\r\n ssoprofile: {\r\n ...state.ssoprofile,\r\n linkedAccounts: action.payload.map((profile: IUserProfile) => {\r\n return { workEmail: profile.workEmail, email: profile.emailAddress };\r\n })\r\n }\r\n };\r\n case GetSSOLinkedAccountsActions.ActionTypes.ExecuteError:\r\n if (action.meta && action.meta.status === 500 && action.meta.data?.statusCode === 404) {\r\n return { ...state, isIncomingSSOError: false, ssoprofile: { ...state.ssoprofile, linkedAccounts: [] } };\r\n }\r\n return { ...state, customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta), isIncomingSSOError: true };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const UserStore = new EndpointStore(storeName, initialUserState, reducer, sagas, [\r\n GetProfileActions,\r\n CreateProfileActions,\r\n UpdateProfileActions,\r\n EmailValidationActions,\r\n GetSSOStatusActions,\r\n DeleteAccountActions\r\n]);\r\n","import React, { createContext, useState, useMemo, useContext, useCallback, useEffect } from 'react';\r\nimport { IntlProvider } from 'react-intl';\r\nimport { OptionalIntlConfig } from 'react-intl/src/components/provider';\r\nimport { useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport { IApplicationState } from '../../store';\r\nimport { disableTermsAndConditions, QueryStringParam } from '../../utilities';\r\n\r\nconst LOCALE_CACHE_KEY = 'locale';\r\nconst DEFAULT_LOCALE = {\r\n locale: 'en-US',\r\n englishName: 'English (US)',\r\n displayName: 'English (US)',\r\n rtl: false,\r\n visible: true\r\n};\r\n\r\nexport interface ILocale {\r\n locale: string;\r\n englishName: string;\r\n displayName: string;\r\n rtl: boolean;\r\n visible: boolean;\r\n}\r\n\r\ninterface ILocaleContext {\r\n locale: string;\r\n locales: ILocale[];\r\n defaultLocale: string;\r\n setLocale: (locale: string, forceReload?: boolean) => void;\r\n setDefaultLocale: (locale: string) => void;\r\n}\r\n\r\nconst defaultLocaleContext: ILocaleContext = {\r\n locale: DEFAULT_LOCALE.locale,\r\n defaultLocale: DEFAULT_LOCALE.locale,\r\n locales: [DEFAULT_LOCALE],\r\n setLocale: (locale: string, forceReload?: boolean) => {},\r\n setDefaultLocale: (locale: string) => {}\r\n};\r\n\r\nexport const LocaleContext = createContext(defaultLocaleContext);\r\nexport type LocalizedMessages = OptionalIntlConfig['messages'];\r\n\r\ntype LocalizationProviderConfig = OptionalIntlConfig & {\r\n locales: ILocale[];\r\n storage?: Storage;\r\n localeLoader?: (locale: string) => Promise;\r\n};\r\n\r\nexport const LocalizationProvider: React.FunctionComponent = props => {\r\n const { children, locales, storage, localeLoader, ...providerProps } = props;\r\n const [featureFlags] = useSelector((state: IApplicationState) => [state.FeatureFlagStore?.featureFlags]);\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n if (featureFlags.length > 0) {\r\n const disableEsiTerms = featureFlags?.filter(d => d?.flagName === disableTermsAndConditions)?.map(m => m?.isEnabledFlag)[0];\r\n if (!disableEsiTerms) {\r\n if (sessionStorage.getItem(QueryStringParam.WorkEmailAddress)) {\r\n if (!sessionStorage.getItem(QueryStringParam.IsESITermsAccepted)) {\r\n const pathName = window.location.pathname.split('/');\r\n if (\r\n pathName &&\r\n pathName[1] &&\r\n pathName[1] !== '' &&\r\n pathName[1].toLowerCase() !== 'esiagreement' &&\r\n pathName[1].toLowerCase() !== 'aadlogin' &&\r\n pathName[1].toLowerCase() !== 'about' &&\r\n pathName[1].toLowerCase() !== 'locale'\r\n ) {\r\n history.push({\r\n pathname: '/esiAgreement/',\r\n state: {\r\n pathName: window.location.pathname,\r\n search: window.location.search\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }, [featureFlags, featureFlags.length, history]);\r\n\r\n useEffect(() => {\r\n if (storage) {\r\n const cachedLocale = storage.getItem(LOCALE_CACHE_KEY);\r\n if (cachedLocale) {\r\n setLocale(cachedLocale);\r\n } else {\r\n storage.setItem(LOCALE_CACHE_KEY, locale);\r\n }\r\n }\r\n\r\n const deliveryId = new URLSearchParams(window.location.search.toLowerCase()).get(QueryStringParam.DeliveryId);\r\n if (deliveryId) {\r\n sessionStorage.setItem(QueryStringParam.DeliveryId, deliveryId ?? '');\r\n }\r\n\r\n const query = new URLSearchParams(window.location.search.toLowerCase()).get(QueryStringParam.q);\r\n if (query) {\r\n sessionStorage.setItem(QueryStringParam.q, query ?? '');\r\n }\r\n const languageQuery = new URLSearchParams(window.location.search.toLowerCase()).get(QueryStringParam.SelectedLanguages);\r\n if (languageQuery) {\r\n sessionStorage.setItem(QueryStringParam.SelectedLanguages, languageQuery ?? '');\r\n }\r\n\r\n const timezoneQuery = new URLSearchParams(window.location.search.toLowerCase()).get(QueryStringParam.SelectedTimezones);\r\n if (timezoneQuery) {\r\n sessionStorage.setItem(QueryStringParam.SelectedTimezones, timezoneQuery ?? '');\r\n }\r\n\r\n const modalityQuery = new URLSearchParams(window.location.search).get(QueryStringParam.SelectedModalities);\r\n if (modalityQuery) {\r\n sessionStorage.setItem(QueryStringParam.SelectedModalities, modalityQuery ?? '');\r\n }\r\n\r\n const rolesQuery = new URLSearchParams(window.location.search).get(QueryStringParam.SelectedRoles);\r\n if (rolesQuery) {\r\n sessionStorage.setItem(QueryStringParam.SelectedRoles, rolesQuery ?? '');\r\n }\r\n const learningOptionQuery = new URLSearchParams(window.location.search).get(QueryStringParam.SelectedLearningOPtion);\r\n if (learningOptionQuery) {\r\n sessionStorage.setItem(QueryStringParam.SelectedLearningOPtion, learningOptionQuery ?? '');\r\n }\r\n const seatAvailabilityQuery = new URLSearchParams(window.location.search).get(QueryStringParam.SelectedAvailability);\r\n if (seatAvailabilityQuery) {\r\n sessionStorage.setItem(QueryStringParam.SelectedAvailability, seatAvailabilityQuery ?? '');\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const [locale, _setLocale] = useState(providerProps.locale || defaultLocaleContext.locale);\r\n const [defaultLocale, setDefaultLocale] = useState(providerProps.locale || defaultLocaleContext.locale);\r\n const [messages, setMessages] = useState(providerProps.messages);\r\n\r\n const setLocale = useCallback(\r\n async (locale: string, forceReload?: boolean) => {\r\n const loc = locales.find(l => l.locale === locale) || locales.find(l => l.locale === defaultLocale);\r\n if (loc) {\r\n if (storage) {\r\n storage.setItem(LOCALE_CACHE_KEY, loc.locale);\r\n }\r\n\r\n if (forceReload) {\r\n _setLocale(prev => loc.locale);\r\n window.location.reload();\r\n } else if (localeLoader) {\r\n const localeData = await localeLoader(loc.locale);\r\n setMessages(localeData);\r\n _setLocale(loc.locale);\r\n\r\n document.documentElement.lang = loc.locale;\r\n document.documentElement.dir = loc.rtl ? 'rtl' : 'ltr';\r\n } else {\r\n throw new Error('Attempted to load a locale without registering a localeLoader handler');\r\n }\r\n } else {\r\n throw new Error(`Attempted to set an unregistered locale \"${locale}\"`);\r\n }\r\n },\r\n [defaultLocale, localeLoader, locales, storage]\r\n );\r\n\r\n const localeMemo = useMemo(\r\n () => ({\r\n locale,\r\n locales,\r\n defaultLocale,\r\n setLocale,\r\n setDefaultLocale\r\n }),\r\n [defaultLocale, locale, locales, setLocale]\r\n );\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const useLocale = () => useContext(LocaleContext);\r\n","import { InteractionStatus } from '@azure/msal-browser';\r\nimport { useMsal } from '@azure/msal-react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport { IUser } from '../models';\r\nimport { appSettings } from '../Settings';\r\n\r\nexport const useAuthenticatedUser = (): IUser | null => {\r\n const { inProgress } = useMsal();\r\n const [user, setUser] = useState(null);\r\n\r\n useEffect(() => {\r\n const account = appSettings.config.msal.getAllAccounts()[0];\r\n const claims = account?.idTokenClaims || ({} as any);\r\n const isAuthenticated = !!account;\r\n const isAuthenticationInProgress = inProgress !== InteractionStatus.None;\r\n setUser({\r\n homeAccountId: account?.homeAccountId || '',\r\n environment: account?.environment || '',\r\n tenantId: account?.tenantId || '',\r\n username: account?.username || '',\r\n localAccountId: account?.localAccountId || '',\r\n name: account?.name || '',\r\n firstName: claims['given_name'] || '',\r\n lastName: claims['family_name'] || '',\r\n oid: claims['oid'] || '',\r\n tid: claims['tid'] || '',\r\n authenticationState: isAuthenticated,\r\n isAuthenticationInProgress: isAuthenticationInProgress\r\n });\r\n }, [inProgress]);\r\n\r\n return user;\r\n};\r\n","import { IRequestAdditionalTokensRequest, IRequestAdditionalTokensResponse } from '../../../models/RequestAdditionalTokens';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const SendRequestForAdditonalTokensActions = new EndpointActions<\r\n IRequestAdditionalTokensRequest[],\r\n IRequestAdditionalTokensResponse[]\r\n>('sendRequestForAdditonalTokens');\r\n","/**\r\n * Application level settings\r\n * Use .env, .env.development, .env.test, .env.production variables to inject environment\r\n * specific values into the settings\r\n */\r\nimport { AccountInfo, LogLevel, PublicClientApplication, RedirectRequest, SilentRequest } from '@azure/msal-browser';\r\n\r\nimport { ai } from './components/ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { useAuthority } from './hooks';\r\nimport { IServiceConfiguration } from './store/endpoint';\r\nimport { QueryStringParam, Helper, isIE } from './utilities';\r\n\r\nexport interface IApplicationConfig {\r\n services: {\r\n [key: string]: IServiceConfiguration;\r\n };\r\n msal: PublicClientApplication;\r\n defaultAuthScopes: string[];\r\n}\r\n\r\nexport const applicationConfig: IApplicationConfig = {\r\n services: {\r\n accessCode: {\r\n apiKey: process.env.REACT_APP_API_ENROLLMENTSERVICES_Apim_Subscription_Key ?? '',\r\n base: process.env.REACT_APP_API_ACCESSCODE_URL + '/accesscode/v1',\r\n endpoints: {\r\n sendAccessCode: '/AccessCode/GetAccessCode',\r\n verifyAccessCode: '/AccessCode/ValidateAccessCode'\r\n }\r\n },\r\n offerDiscount: {\r\n apiKey: process.env.REACT_APP_API_ENROLLMENTSERVICES_Apim_Subscription_Key ?? '',\r\n base: process.env.REACT_APP_API_DISCOUNTOFFER_URL ?? '',\r\n endpoints: {\r\n offerTransactionHistory: '/Offers/GetOfferTransactionHistory'\r\n }\r\n },\r\n enrollmentServices: {\r\n apiKey: process.env.REACT_APP_API_ENROLLMENTSERVICES_Apim_Subscription_Key ?? '',\r\n base: localStorage.getItem('apiVersionUrl') ?? process.env.REACT_APP_API_ENROLLMENTSERVICES_URL + '/api/',\r\n endpoints: {\r\n learningPlan: (learningPlanId: string) => `LearningPlan/${Helper.getLocale()}/${learningPlanId}`,\r\n learningPlanCard: (learningPlanId: string) => `LearningPlan/default/${Helper.getLocale()}/${learningPlanId}`,\r\n myDeliveries: `LearningPlan/myDeliveries`,\r\n certification: 'Certification/certifications',\r\n profile: 'profile',\r\n checkUserPartOf: 'profile/checkUserPartOf',\r\n emailValidationClaims: 'profile/customerinfo',\r\n readFeatureFlag: 'profile/ReadFeatureFlag',\r\n emailVerificationClaims: 'EmailVerification/SendVerificationEmail',\r\n verificationCodeClaims: 'EmailVerification/VerifyEmailAccessCode',\r\n accountLinking: 'AccountLinking',\r\n languages: () => `DomainData/language/${Helper.getLocale()}`,\r\n modalities: () => `DomainData/modality/${Helper.getLocale()}`,\r\n notifications: (pageName: string) => `DomainData/notifications/${Helper.getLocale()}/${pageName}`,\r\n timezones: () => `DomainData/timezone/${Helper.getLocale()}`,\r\n esiAgreement: (langCode: string) => `DomainData/esiterms/${langCode}`,\r\n roles: () => `DomainData/role/${Helper.getLocale()}`,\r\n measureUpLTISettings: 'DomainData/measureupLTISettings',\r\n emailServiceStatus: 'DomainData/emailServiceStatus',\r\n mscatalog: 'LearningPlan/deliverycatalog',\r\n learningPartner: (orgId: string) => `LearningPlan/learningpartners/${Helper.getLocale()}/${orgId}`,\r\n deliverydetails: 'LearningPlan/deliverydetails',\r\n eventRegistration: `EventManagement/eventregistration`,\r\n cancelRegistration: 'EventManagement/eventcancellation',\r\n cancelWaitlist: 'EventManagement/eventcancellationWaitlist',\r\n confirmRegistration: 'EventManagement/confirmRegistration',\r\n country: () => `DomainData/country/${Helper.getLocale()}`,\r\n deleteAccount: 'Profile/deleteAccount',\r\n updateWorkEmailAddress: 'Profile/updateWorkEmailAddress',\r\n verifyWorkEmailAddress: 'Profile/verifyWorkEmailAddress',\r\n updateAccountWorkEmailOnly: 'profile/updateAccountWorkEmailOnly',\r\n verifyCleanupUser: 'profile/verifyCleanupUser',\r\n unlinkEmailAddressError: 'profile/unlinkEmailAddressError',\r\n updateAccountOIDEmailAddressOnly: 'profile/updateAccountOIDEmailAddressOnly',\r\n updateAccount: 'profile/updateAccount',\r\n multipleProfiles: 'profile/support',\r\n deleteDuplicateProfile: 'Profile/delete',\r\n emailCodeVerificationStatus: 'DomainData/codeverificationstatus',\r\n tokensAvailable: `profile/tokensAvailable`,\r\n sendRequestForAdditonalTokens: 'profile/sendRequestForAdditonalTokens',\r\n learningPathGroups: () => `LearningPlan/learningPathGroups/${Helper.getLocale()}`,\r\n searchDeliveriesStatus: `LearningPlan/searchDeliveriesStatus`,\r\n eventSessions: `EventManagement/eventSessions`,\r\n resendInvite: `EventManagement/resendInvite`,\r\n ssoStatus: (domain: string) => `profile/getlfossodomainstatus/${domain}`,\r\n ssoLinkedAccounts: `profile/getaccountbylearnlinkedaccount`,\r\n copilotTokensRequest: (learnerId: string) => `LfoService/directLineToken/${learnerId}`\r\n }\r\n }\r\n },\r\n msal: new PublicClientApplication({\r\n auth: {\r\n authority: useAuthority(),\r\n knownAuthorities: [],\r\n clientId: process.env.REACT_APP_AUTHENTICATION_CLIENT_ID || '',\r\n redirectUri: window.location.origin,\r\n postLogoutRedirectUri: window.location.origin,\r\n navigateToLoginRequestUrl: true\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level: LogLevel, message: string, containsPii: boolean): void => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n if (ai.appInsights) {\r\n const exception = new Error(message);\r\n exception.name = 'MSAL Logger Error';\r\n ai.appInsights.trackException({ exception });\r\n }\r\n // eslint-disable-next-line no-console\r\n console.log('[MSAL]', message);\r\n return;\r\n }\r\n },\r\n piiLoggingEnabled: true\r\n },\r\n asyncPopups: false\r\n },\r\n cache: {\r\n cacheLocation: 'sessionStorage',\r\n storeAuthStateInCookie: isIE()\r\n }\r\n }),\r\n defaultAuthScopes: ['api://' + process.env.REACT_APP_AUTHENTICATION_CLIENT_ID + '/user_impersonation']\r\n};\r\nclass ApplicationSettings {\r\n public config: IApplicationConfig;\r\n constructor() {\r\n this.config = applicationConfig;\r\n }\r\n}\r\nexport const appSettings = new ApplicationSettings();\r\nconst account = appSettings.config.msal.getAllAccounts()?.[0] || ({} as AccountInfo);\r\nexport const silentRequest: SilentRequest = {\r\n account: account,\r\n scopes: ['api://' + process.env.REACT_APP_AUTHENTICATION_CLIENT_ID + '/user_impersonation'],\r\n redirectUri: window.location.origin,\r\n extraQueryParameters: {\r\n // eslint-disable-next-line camelcase\r\n instance_aware: 'true'\r\n }\r\n};\r\n\r\nexport const redirectRequestAAD: RedirectRequest = {\r\n account: account,\r\n scopes: ['api://' + process.env.REACT_APP_AUTHENTICATION_CLIENT_ID + '/user_impersonation'],\r\n loginHint: sessionStorage.getItem(QueryStringParam.WorkEmailAddress) || '',\r\n redirectUri: window.location.origin,\r\n authority: useAuthority(),\r\n // eslint-disable-next-line camelcase\r\n extraQueryParameters: { domain_hint: 'organizations' }\r\n};\r\n\r\nexport const redirectRequestNONAAD: RedirectRequest = {\r\n account: account,\r\n scopes: ['api://' + process.env.REACT_APP_AUTHENTICATION_CLIENT_ID + '/user_impersonation'],\r\n redirectUri: window.location.origin,\r\n authority: process.env.REACT_APP_AUTHENTICATION_MSA_AUTHORITY,\r\n prompt: 'login',\r\n // eslint-disable-next-line camelcase\r\n extraQueryParameters: { domain_hint: 'consumers' }\r\n};\r\n\r\nexport const redirectRequestSelectAccount: RedirectRequest = {\r\n scopes: ['api://' + process.env.REACT_APP_AUTHENTICATION_CLIENT_ID + '/user_impersonation'],\r\n redirectUri: window.location.origin,\r\n prompt: 'select_account'\r\n};\r\n","import { AnyAction } from 'redux';\r\nimport { action } from 'typesafe-actions';\r\n\r\nimport { IRequestResponse } from '../../models';\r\n\r\ntype SuccessResponse = Omit, 'data' | 'config'>;\r\n\r\nexport enum EndpointActionSuffix {\r\n Execute = '/Execute',\r\n ExecuteSuccess = '/ExecuteSuccess',\r\n ExecuteError = '/ExecuteError',\r\n Clear = '/Clear'\r\n}\r\n\r\n/**\r\n * Identifies the primary Actions that can occur against an endpoint.\r\n * This may be extended to add additional actions when needed.\r\n */\r\nexport class EndpointActionTypes {\r\n /** A collection of all the names given to the instantiated classes, used for validation of name uniqueness */\r\n private static _namesList: string[] = [];\r\n\r\n /** Executes the action against an endpoint */\r\n public readonly Execute: string;\r\n\r\n /** Signals a successful execution against the endpoint */\r\n public readonly ExecuteSuccess: string;\r\n\r\n /** Signals an unusuccessful execution against the endpoint */\r\n public readonly ExecuteError: string;\r\n\r\n /** Signals that the data stored from an execution should be cleared from the client */\r\n public readonly Clear: string;\r\n\r\n constructor(name: string) {\r\n if (!name) {\r\n throw Error('EndpointActionType names must be a valid string.');\r\n }\r\n\r\n if (EndpointActionTypes._namesList.includes(name)) {\r\n throw Error(`EndpointActionType names must be unique. The name \"${name}\" already exists.`);\r\n } else {\r\n EndpointActionTypes._namesList.push(name);\r\n }\r\n\r\n this.Execute = name + EndpointActionSuffix.Execute;\r\n this.ExecuteSuccess = name + EndpointActionSuffix.ExecuteSuccess;\r\n this.ExecuteError = name + EndpointActionSuffix.ExecuteError;\r\n this.Clear = name + EndpointActionSuffix.Clear;\r\n }\r\n}\r\n\r\n/**\r\n * The default contract of a created action object\r\n */\r\nexport interface IAction {\r\n /** Identifies the type of action */\r\n type: string;\r\n\r\n /** Represents the payload to be sent with the http request */\r\n payload?: RequestBody;\r\n\r\n /** Represents the meta data */\r\n meta?: any;\r\n\r\n /** Represents the error data */\r\n error?: any;\r\n}\r\n\r\n/**\r\n * Interface to enforce the basic Actions that can occur against an endpoint\r\n *\r\n * @typeparam RequestBody The request body to be sent when executing the request\r\n * @typeparam ResponseBody The model of the response body expected from the request response\r\n */\r\nexport interface IEndpointActions {\r\n /** The name of the valid and unique name of the endpoint */\r\n readonly name: string;\r\n\r\n /** Represents the names of each Action type */\r\n readonly ActionTypes: EndpointActionTypes;\r\n\r\n /** Should create the Action to execute the endpoint */\r\n Execute(parameters?: RequestBody): AnyAction;\r\n\r\n /** Should create the Action signaling a successful execution against the endpoint */\r\n ExecuteSuccess(data: ResponseBody, response?: Omit, 'data' | 'config'>): AnyAction;\r\n\r\n /** Should create the Action signaling an unsuccessful execution against the endpoint */\r\n ExecuteError(errorMessage: string, response?: IRequestResponse): AnyAction;\r\n\r\n /** Should create the Action to signal the need to clear all data store from an execution */\r\n Clear(data?: boolean): AnyAction;\r\n}\r\n\r\n/**\r\n * Creates the Actions that can occur against an endpoint\r\n *\r\n * @typeparam RequestBody The request body to be sent when executing the request\r\n * @typeparam ResponseBody The model of the response body expected from the request response\r\n */\r\nexport class EndpointActions implements IEndpointActions {\r\n /** A collection of all the names given to the instantiated classes, used for validation of name uniqueness */\r\n private static _namesList: string[] = [];\r\n\r\n /** The name of the the endpoint */\r\n public readonly name: string;\r\n\r\n /** Represents the names of each Action type */\r\n public readonly ActionTypes: EndpointActionTypes;\r\n\r\n constructor(name: string) {\r\n if (!name) {\r\n throw Error('EndpointActions names must be a valid string.');\r\n }\r\n\r\n if (EndpointActions._namesList.includes(name)) {\r\n throw Error(`EndpointActions names must be unique. The name \"${name}\" already exists.`);\r\n } else {\r\n EndpointActions._namesList.push(name);\r\n }\r\n\r\n this.name = name;\r\n this.ActionTypes = new EndpointActionTypes(name);\r\n }\r\n\r\n /**\r\n * Creates the Action to execute against the endpoint\r\n *\r\n * @param parameters Parameters to be passed to the endpoint in the requet body\r\n */\r\n public Execute = (parameters?: RequestBody) => action(this.ActionTypes.Execute, parameters);\r\n\r\n /**\r\n * Creates the Action to signal a successful execution against the endpoint\r\n *\r\n * @param data The response body from the endpoint\r\n * @param response The response object\r\n */\r\n public ExecuteSuccess = (data: ResponseBody, response?: SuccessResponse) => action(this.ActionTypes.ExecuteSuccess, data, response);\r\n\r\n /**\r\n * Creates the Action to signal an unsuccessful execution against the endpoint\r\n *\r\n * @param errorMessage The message that describes the error\r\n * @param response The response object\r\n */\r\n public ExecuteError = (errorMessage: string, response?: IRequestResponse) =>\r\n action(this.ActionTypes.ExecuteError, errorMessage, response);\r\n\r\n /**\r\n * Creates the Action to signal that all data from an execution should be cleared from the client\r\n *\r\n * @param data\r\n */\r\n public Clear = (data?: boolean) => action(this.ActionTypes.Clear, data);\r\n}\r\n","import React from 'react';\r\n\r\nimport { LoaderSection } from '../Loading/LoaderSection';\r\n\r\nexport const ApplicationLoadingSpinner: React.FunctionComponent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ApplicationLoadingSpinner;\r\n","import { ILocale, LocalizedMessages } from './components/LocalizationProvider/LocalizationProvider';\r\n\r\nexport const locales: ILocale[] = [\r\n {\r\n locale: 'en-US',\r\n englishName: 'English (United States)',\r\n displayName: 'English (United States)',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'ja-JP',\r\n englishName: 'Japanese',\r\n displayName: '日本語',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'ko-KR',\r\n englishName: 'Korean',\r\n displayName: '한국어',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'zh-CN',\r\n englishName: 'Chinese (Simplified)',\r\n displayName: '中文 (简体)',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'es-ES',\r\n englishName: 'Spanish',\r\n displayName: 'Español',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'fr-FR',\r\n englishName: 'French',\r\n displayName: 'Français',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'pt-BR',\r\n englishName: 'Brazilian Portuguese',\r\n displayName: 'Portugues do Brasil',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'de-DE',\r\n englishName: 'German',\r\n displayName: 'Deutsch',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'it-IT',\r\n englishName: 'Italian',\r\n displayName: 'Italiani',\r\n rtl: false,\r\n visible: true\r\n },\r\n {\r\n locale: 'id-ID',\r\n englishName: 'Indonesian',\r\n displayName: 'Indonesian',\r\n rtl: false,\r\n visible: true\r\n }\r\n // {\r\n // locale: 'ru-RU',\r\n // englishName: 'Russian',\r\n // displayName: 'русский',\r\n // rtl: false\r\n // },\r\n // {\r\n // locale: 'ar-SA',\r\n // englishName: 'Arabic',\r\n // displayName: 'عربى',\r\n // rtl: true\r\n // },\r\n // {\r\n // locale: 'zh-TW',\r\n // englishName: 'Traditional Chinese',\r\n // displayName: '繁體中文',\r\n // rtl: false\r\n // },\r\n];\r\n\r\nexport const loadLocaleData = async (locale: string): Promise => {\r\n if (locale === 'en-US' || locale === 'ko-KR') {\r\n locale = locale.toLowerCase();\r\n }\r\n try {\r\n return (await import(`./i18n/translated/${locale}/strings.json`)).default;\r\n } catch (error) {\r\n // eslint-disable-next-line no-console\r\n console.error(`Locale data for ${locale} not found, falling back to default locale.`);\r\n return (await import('./i18n/translated/en-us/strings.json')).default;\r\n }\r\n};\r\n","import { takeLeading } from 'redux-saga/effects';\r\n\r\nimport { IFeatureFlag } from '../../../models/FeatureFlag';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport { GetFeatureFlagAction } from './actions';\r\nexport const sagas: IEndpointSagaDictionary = {\r\n GetFeatureFlagSaga: new EndpointSaga(GetFeatureFlagAction, Api.GET_FEATURE_FLAG, takeLeading)\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { ICustomErrorMessage } from '../../../models';\r\nimport { IFeatureFlag } from '../../../models/FeatureFlag';\r\nimport { ErrorMessageMapper } from '../../../utilities';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport { GetFeatureFlagAction } from './actions';\r\nimport { sagas } from './sagas';\r\n\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'FeatureFlagStore';\r\n\r\nexport interface IFeatureFlagState extends IEndpointState {\r\n /** The Feature Flag state */\r\n readonly featureFlags: IFeatureFlag[];\r\n readonly customErrorMessage: ICustomErrorMessage | null;\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = IFeatureFlagState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialFeatureFlagState: IState = new EndpointStateFactory().getInitialState({\r\n featureFlags: [],\r\n customErrorMessage: null\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state\r\n * @param action\r\n */\r\nconst reducer: Reducer = (state: IState = initialFeatureFlagState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetFeatureFlagAction.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n featureFlags: action.payload\r\n };\r\n case GetFeatureFlagAction.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const FeatureFlagStore = new EndpointStore(storeName, initialFeatureFlagState, reducer, sagas, [GetFeatureFlagAction]);\r\n","import {\r\n ICreateProfileRequest,\r\n IUpdateProfileRequest,\r\n IUserProfile,\r\n IEmailVerificationRequest,\r\n IEmailValidationRequest,\r\n IUserEmailProfile,\r\n IVerificationCodeRequest,\r\n IWorkEmailVerificationCodeRequest,\r\n IUpdateEmailVerificationRequest,\r\n ITokensAvailable,\r\n ILearnerIdRequest,\r\n IUserSSOEligibility,\r\n IVerifyCleanupUserRequest,\r\n IUnlinkEmailAddressErrorRequest\r\n} from '../../../models';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const CheckUserIsSupportUserOrNotActions = new EndpointActions('CheckUserPartOf');\r\nexport const GetProfileActions = new EndpointActions('GetProfile');\r\nexport const CreateProfileActions = new EndpointActions('CreateProfile');\r\nexport const UpdateProfileActions = new EndpointActions('UpdateProfile');\r\nexport const EmailValidationActions = new EndpointActions('EmailValidation');\r\nexport const EmailVerificationActions = new EndpointActions('EmailVerification');\r\nexport const VerificationCodeActions = new EndpointActions('VerificatonCode');\r\nexport const EmailServiceStatusActions = new EndpointActions('GetEmailServiceStatus');\r\nexport const DeleteAccountActions = new EndpointActions('DeleteAccount');\r\nexport const UpdateWorkEmailAddressActions = new EndpointActions('UpdateWorkEmailAddress');\r\nexport const VerifyWorkEmailAddressActions = new EndpointActions('VerifyWorkEmailAddress');\r\nexport const GETTokensAvailableActions = new EndpointActions('GETTokensAvailableActions');\r\nexport const GetSSOStatusActions = new EndpointActions('GetSSOStatus');\r\nexport const VerifyCleanupUserActions = new EndpointActions('VerifyCleanupUser');\r\nexport const UnlinkEmailAddressErrorActions = new EndpointActions('UnlinkEmailAddressError');\r\nexport const GetSSOLinkedAccountsActions = new EndpointActions('GetSSOLinkedAccounts');\r\n","import { QueryStringParam } from '../utilities';\r\n\r\nexport const useAuthority = () => {\r\n let authority = sessionStorage.getItem(QueryStringParam.Authority) || 'https://login.microsoftonline.com/common/';\r\n const isAad = sessionStorage.getItem(QueryStringParam.IsAad);\r\n if (isAad === 'true') {\r\n authority = sessionStorage.getItem(QueryStringParam.Authority) || process.env.REACT_APP_AUTHENTICATION_AUTHORITY || '';\r\n } else if (isAad === 'false') {\r\n authority = sessionStorage.getItem(QueryStringParam.Authority) || process.env.REACT_APP_AUTHENTICATION_MSA_AUTHORITY || '';\r\n } else if (document.referrer.indexOf('login.microsoftonline') > -1) {\r\n authority = document.referrer + 'common/';\r\n sessionStorage.setItem(QueryStringParam.Authority, authority);\r\n }\r\n return authority;\r\n};\r\n","const ConditionalRenderer = (props: { condition: boolean; children: JSX.Element }) => (props.condition ? props.children : null);\r\nexport default ConditionalRenderer;\r\n","import Axios, { AxiosRequestConfig, AxiosRequestHeaders } from 'axios';\r\n\r\nimport { Helper } from '../../utilities';\r\nimport { EndpointConfiguration } from '../endpoint';\r\nimport { TokenHandler } from '../../utilities/TokenHandler';\r\nimport { silentRequest } from '../../Settings';\r\nimport { useAuthority } from '../../hooks';\r\n\r\n// Configure an instance of Axios for web requests\r\nconst http = Axios.create({\r\n baseURL: '/'\r\n});\r\n\r\nexport enum RequestMethod {\r\n GET = 'GET',\r\n POST = 'POST',\r\n DELETE = 'DELETE',\r\n PUT = 'PUT',\r\n PATCH = 'PATCH'\r\n}\r\n\r\n/**\r\n * Class to handle calls to server which becomes a base for any API classes\r\n */\r\nexport default class BaseApi {\r\n /**\r\n * Asynchronously execute a request\r\n *\r\n * @param {AxiosRequestConfig} config configuration of the web request\r\n */\r\n public static async REQUEST(config: AxiosRequestConfig): Promise {\r\n return http(config);\r\n }\r\n\r\n /**\r\n * Takes configuration settings and determines how to execute the web request\r\n *\r\n * Takes configuration settings and determines how to execute the web request\r\n *\r\n * @param {EndpointConfiguration} endpoint The configuration for the service being called\r\n * @param {AxiosRequestConfig} config The configuration properties of the web request\r\n * @param isAnonymous If the call is Anonmous\r\n */\r\n public static async REQUEST_WITH_CONFIG(endpoint: EndpointConfiguration, config: AxiosRequestConfig, isAnonymous = false): Promise {\r\n let combinedHeaders: AxiosRequestHeaders = {\r\n 'Content-Type': 'application/json',\r\n 'Ocp-Apim-Subscription-Key': endpoint.config.service.apiKey\r\n };\r\n\r\n if (!isAnonymous) {\r\n const request = { ...silentRequest };\r\n request.authority = useAuthority();\r\n const response = await TokenHandler.getToken(request);\r\n\r\n const accessToken = response.accessToken;\r\n if (accessToken) {\r\n combinedHeaders.Authorization = `Bearer ${accessToken}`;\r\n combinedHeaders.Locale = Helper.getLocale();\r\n }\r\n }\r\n\r\n combinedHeaders = {\r\n ...config.headers,\r\n ...combinedHeaders\r\n };\r\n\r\n return BaseApi.REQUEST({ ...config, url: endpoint.getEndpointUrl(), headers: combinedHeaders });\r\n }\r\n}\r\n","import { AxiosRequestConfig } from 'axios';\r\n\r\nimport {\r\n IAccountUnlinkRequest,\r\n ICertification,\r\n ICreateProfileRequest,\r\n ILearningPath,\r\n ILinkedAccount,\r\n IRequestResponse,\r\n IUnlinkedAccountResult,\r\n IUpdateProfileRequest,\r\n IUserProfile,\r\n IEmailVerificationRequest,\r\n IUserEmailProfile,\r\n ILearningPathCard,\r\n IEmailValidationRequest,\r\n IVerificationCodeRequest,\r\n ILanguage,\r\n ITimezone,\r\n IModality,\r\n IRole,\r\n IFilterInputs,\r\n IMSClassesCatalog,\r\n ILearningPartners,\r\n IDeliveryInput,\r\n IDeliveryDesc,\r\n IEventRegistrationRequest,\r\n IEventRegistrationResponse,\r\n ICancelRegistrationRequest,\r\n ICancelRegistrationResponse,\r\n ICountry,\r\n ICertificationRequest,\r\n IWorkEmailVerificationCodeRequest,\r\n IFilterInputMyDeliveries,\r\n IUpdateEmailVerificationRequest,\r\n INotifications,\r\n IESIAgreement,\r\n ICancelWaitlistRegistrationResponse,\r\n ICancelWaitlistRegistrationRequest,\r\n IConfirmRegistrationRequest,\r\n IConfirmRegistrationResponse,\r\n ITokensAvailable,\r\n ILearnerIdRequest,\r\n ILearningPathGroups,\r\n IUserSSOEligibility,\r\n IVerifyCleanupUserRequest,\r\n IUnlinkEmailAddressErrorRequest,\r\n ICopilotTokenRequest,\r\n ICopilotTokenResponse,\r\n IVerificationEmailRequest\r\n} from '../../models';\r\nimport { IUpdateAccountRequest, IUpdateAccountRequestResponse } from '../../models/UpdateAccountRequest';\r\nimport { IMeasureUpLTISettings } from '../../models/MeasureUpLTISettings';\r\nimport { applicationConfig } from '../../Settings';\r\nimport { EndpointConfiguration, EndpointFunction, EndpointFunctionParameterless } from '../endpoint';\r\nimport { default as BaseApi, RequestMethod } from './BaseApi';\r\nimport { IFeatureFlag } from '../../models/FeatureFlag';\r\nimport { IRequestAdditionalTokensRequest, IRequestAdditionalTokensResponse } from '../../models/RequestAdditionalTokens';\r\nimport { IMultipleProfileRequest, IMultipleProfileResponse } from '../../models/multipleProfileRequest';\r\nimport { IDeleteDuplicateProfileRequest, IDeleteDuplicateProfileResponse } from '../../models/deleteDuplicateProfileRequest';\r\nimport {\r\n IGetEventSessionsRequest,\r\n IGetEventSessionsResponse,\r\n IPatchEventSessionsRequest,\r\n IPatchEventSessionsResponse\r\n} from '../../models/EventManagement/EventSessions';\r\nimport { IPostResendInviteRequest, IPostResendInviteResponse } from '../../models/EventManagement/PostResendInvite';\r\nimport { IOfferTransactionHistory } from '../../models/IOfferTransactionHistory';\r\nimport { Helper } from '../../utilities';\r\n\r\n/**\r\n * A class containing static methods to request resources from the APIs\r\n */\r\nexport default class Api extends BaseApi {\r\n /**\r\n * Fetch the user profile if it exists\r\n *\r\n * @param workEmailAddress - Work email address passed in the header\r\n */\r\n public static async GET_PROFILE(workEmailAddress: string): Promise> {\r\n applicationConfig.services.enrollmentServices.base =\r\n localStorage.getItem('apiVersionUrl') ?? process.env.REACT_APP_API_ENROLLMENTSERVICES_URL + '/api/';\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.profile as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET,\r\n headers: { 'Esi-Customer-Email': workEmailAddress === undefined || null ? '' : workEmailAddress }\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Get Feature flag value and Alert message\r\n */\r\n\r\n public static async GET_FEATURE_FLAG(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.readFeatureFlag as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n\r\n /**\r\n * Fetch the user is part of support security or distributor group.\r\n *\r\n */\r\n public static async GET_USER_PARTOF(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.checkUserPartOf as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Create or update the user profile\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async CREATE_PROFILE(params: ICreateProfileRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.profile as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Create or update the user profile\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async UPDATE_PROFILE(params: IUpdateProfileRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.profile as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.PUT,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * delete the linked user email Address\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async DELETE_ACCOUNT(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.deleteAccount as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the Learning Paths based on an Id\r\n *\r\n * @param learningPlanId Learning plan Id\r\n */\r\n public static async GET_LEARNING_PATH(learningPlanId: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.learningPlan as EndpointFunction;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(learningPlanId) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the Learning Paths based on an Id\r\n *\r\n * @param learningPlanId Learning plan Id\r\n */\r\n public static async GET_DEFAULT_LEARNING_PATH(learningPlanId: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.learningPlanCard as EndpointFunction;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(learningPlanId) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the Learning Partners based on an orgId\r\n *\r\n * @param orgId Top Parent company Id\r\n */\r\n public static async GET_DEFAULT_LEARNING_PARTNER(orgId: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.learningPartner as EndpointFunction;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(orgId) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the certifications\r\n *\r\n * @function\r\n * @param certificationRequest\r\n * @param enrollmentPlanId - Enrollment plan Id\r\n */\r\n public static async GET_CERTIFICATIONS(certificationRequest: ICertificationRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.certification as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: certificationRequest\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the token for copliot\r\n *\r\n * @function\r\n * @param copilotTokenRequest\r\n */\r\n public static async GET_COPILOTTOKENS(copilotTokenRequest: ICopilotTokenRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.copilotTokensRequest as EndpointFunction;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(encodeURIComponent(copilotTokenRequest.userId)) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Get and array of accounts linked to the current user's account\r\n *\r\n * @param workEmailAddress\r\n */\r\n public static async GET_LINKED_ACCOUNTS(workEmailAddress = ''): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.accountLinking as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET,\r\n headers: { 'Esi-Customer-Email': workEmailAddress }\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Link multiple accounts together by creating an association between two linking objects\r\n *\r\n * @param requestId - Request Id\r\n */\r\n public static async LINK_ACCOUNTS(requestId: string): Promise {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.accountLinking as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: JSON.stringify({ emailAddress: requestId })\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Unlink two accounts from each other\r\n *\r\n * @param unlinkables - Unlinking request\r\n */\r\n public static async UNLINK_ACCOUNTS(unlinkables: IAccountUnlinkRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.accountLinking as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.PUT,\r\n data: unlinkables\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Send the verification email with access code.\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async EMAIL_VERIFICATION(params: IEmailVerificationRequest): Promise> {\r\n const service = applicationConfig.services.accessCode;\r\n const endpoint = service.endpoints.sendAccessCode as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n\r\n /**\r\n * Send the workemail address for update and verification.\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async UPDATE_WORKEMAILADDRESS(params: IWorkEmailVerificationCodeRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.updateWorkEmailAddress as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Send the workemail address for update and verification.\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async VERIFY_WORKEMAILADDRESS(params: IUpdateEmailVerificationRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.verifyWorkEmailAddress as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Send the verification email with access code.\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async VERIFIY_CODE(params: IVerificationCodeRequest): Promise> {\r\n const service = applicationConfig.services.accessCode;\r\n const endpoint = service.endpoints.verifyAccessCode as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET,\r\n params: {\r\n email: params.email,\r\n accessCode: params.accessCode,\r\n applicationName: params.applicationName\r\n }\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n\r\n /**\r\n * Check the Email Verification Service Status\r\n */\r\n public static async EMAIL_SERVICE_STATUS(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.emailServiceStatus as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n\r\n /**\r\n * Create or update the user profile\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async EMAIL_VALIDATION(params: IEmailValidationRequest): Promise> {\r\n applicationConfig.services.enrollmentServices.base =\r\n localStorage.getItem('apiVersionUrl') ?? process.env.REACT_APP_API_ENROLLMENTSERVICES_URL + '/api/';\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.emailValidationClaims as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n\r\n /**\r\n * Fetch the languages\r\n */\r\n public static async GET_LANGUAGES(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.languages as EndpointFunctionParameterless;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint() });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the notifications\r\n *\r\n * @param pageName\r\n */\r\n public static async GET_NOTIFICATIONS(pageName: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.notifications as EndpointFunction;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(pageName) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Fetch the esiAgreement\r\n *\r\n * @param locale\r\n * @param local\r\n */\r\n public static async GET_ESIAgreement(locale: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.esiAgreement as EndpointFunction;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(locale) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n /**\r\n * Fetch the timezones\r\n */\r\n public static async GET_TIMEZONES(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.timezones as EndpointFunctionParameterless;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint() });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n /**\r\n * Fetch the modalities\r\n */\r\n public static async GET_MODALITIES(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.modalities as EndpointFunctionParameterless;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint() });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Fetch the roles\r\n */\r\n public static async GET_ROLES(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.roles as EndpointFunctionParameterless;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint() });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the MeasureUp LTI Settings\r\n */\r\n public static async GET_MEASUREUP_LTI_SETTINGS(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.measureUpLTISettings as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Post Filter Inputs\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async MSCATALOG(params: IFilterInputs): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.mscatalog as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Post DeliveryDesc Inputs\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async DELIVERYDESC(params: IDeliveryInput): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.deliverydetails as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Event Registration\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async CREATE_EVENT_REGISTRATION(params: IEventRegistrationRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.eventRegistration as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Post cancel registrations\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async CANCEL_REGISTRATION(params: ICancelRegistrationRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.cancelRegistration as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Post cancel Waitlist\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async CANCEL_WAITLIST(\r\n params: ICancelWaitlistRegistrationRequest\r\n ): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.cancelWaitlist as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Post confirm registrations\r\n *\r\n * @param params - Parameters\r\n */\r\n public static async CONFIRM_REGISTRATION(params: IConfirmRegistrationRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.confirmRegistration as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n * Fetch the Country\r\n */\r\n public static async GET_COUNTRY(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.country as EndpointFunctionParameterless;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint() });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * get registered and waitlisted course for a learner ID\r\n *\r\n * @param params\r\n */\r\n public static async GET_MyDeliveries(params: IFilterInputMyDeliveries): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.myDeliveries as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * get DELIVERY STATUS on search tile for a learner ID\r\n *\r\n * @param params\r\n */\r\n public static async GET_SearchDeliveriesStatus(params: IFilterInputMyDeliveries): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.searchDeliveriesStatus as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /*\r\n * Check the CODE_VERIFICATION_STATUS\r\n * @param params\r\n */\r\n public static async EMAILCODE_VERIFICATION_STATUS(params: IVerificationEmailRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.emailCodeVerificationStatus as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n\r\n /**\r\n * workEmail updated, no change to OID + emailAddress\r\n *\r\n * @param params\r\n */\r\n public static async UPDATE_ACCOUNT_WorkEmailOnly(\r\n params: IUpdateAccountRequest[]\r\n ): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.updateAccountWorkEmailOnly as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n *workEmail updated, OID + emailAddress nullified\r\n *\r\n * @param params\r\n */\r\n public static async UPDATE_ACCOUNT(params: IUpdateAccountRequest[]): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.updateAccount as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n *Duplicate profiles deletions\r\n *\r\n * @param params\r\n */\r\n public static async DELETE_DUPLICATE_PROFILE(\r\n params: IDeleteDuplicateProfileRequest[]\r\n ): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.deleteDuplicateProfile as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n /**\r\n *Multiple profiles search\r\n *\r\n * @param params\r\n */\r\n public static async GET_MULTIPLE_PROFILES(params: IMultipleProfileRequest[]): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.multipleProfiles as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n *No change to workEmail, OID + emailAddress nullified\r\n *\r\n * @param params\r\n */\r\n public static async UPDATE_ACCOUNT_OID_EmailAddressOnly(\r\n params: IUpdateAccountRequest[]\r\n ): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.updateAccountOIDEmailAddressOnly as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * get number of available tokens for a learner ID\r\n *\r\n * @param params\r\n */\r\n public static async TOKENS_AVAILABLE(params: ILearnerIdRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.tokensAvailable as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * get learning path details data\r\n *\r\n * @param params\r\n */\r\n public static async GET_LEARNING_PATH_GROUPS(params: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.learningPathGroups as EndpointFunctionParameterless;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint() });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Sending request for Additonal Tokens\r\n *\r\n * @param params\r\n */\r\n public static async SEND_REQUEST_AdditionalTokens(\r\n params: IRequestAdditionalTokensRequest[]\r\n ): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.sendRequestForAdditonalTokens as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Gets event sessions for the given event ID\r\n *\r\n * @param params\r\n */\r\n public static async GET_EventSessions(params: IGetEventSessionsRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.eventSessions as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET,\r\n params: {\r\n deliveryId: params.deliveryId,\r\n learnerId: params.learnerId,\r\n ...Helper.returnEventSessionOrgObject(params),\r\n cacheBuster: Date.now()\r\n }\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Requests to send/cancel session invites\r\n *\r\n * @param params\r\n */\r\n public static async PATCH_EventSessions(params: IPatchEventSessionsRequest[]): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.eventSessions as string;\r\n\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.PATCH,\r\n data: params\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Requests to resend invites\r\n *\r\n * @param params\r\n */\r\n public static async POST_ResendInvite(params: IPostResendInviteRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.resendInvite as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch if the domain is enabled for SSO\r\n *\r\n * @param domain - Work domain address passed in the request body\r\n */\r\n public static async GET_SSO_STATUS(domain: string): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.ssoStatus as EndpointFunction;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint: endpoint(encodeURIComponent(domain)) });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /** Requests to verify and profile clenaup of users\r\n *\r\n * @param params\r\n */\r\n public static async VERIFY_CLEANUP_USERS(params: IVerifyCleanupUserRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.verifyCleanupUser as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Requests to unlink the users link account\r\n *\r\n * @param params\r\n */\r\n public static async Unlink_EmailAddress_Error(params: IUnlinkEmailAddressErrorRequest): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.unlinkEmailAddressError as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.POST,\r\n data: params\r\n };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch the linked accounts for a given email\r\n */\r\n public static async GET_SSO_LINKED_ACCOUNTS(): Promise> {\r\n const service = applicationConfig.services.enrollmentServices;\r\n const endpoint = service.endpoints.ssoLinkedAccounts as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = { method: RequestMethod.GET };\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig);\r\n }\r\n\r\n /**\r\n * Fetch Offer Transaction History.\r\n *\r\n * @param documentId\r\n * @param params - Parameters\r\n */\r\n public static async Get_OfferTransactionHistory(documentId: string): Promise> {\r\n const service = applicationConfig.services.offerDiscount;\r\n const endpoint = service.endpoints.offerTransactionHistory as string;\r\n const endpointConfig = new EndpointConfiguration({ service, endpoint });\r\n const requestConfig: AxiosRequestConfig = {\r\n method: RequestMethod.GET,\r\n params: {\r\n docsId: documentId\r\n }\r\n };\r\n\r\n return super.REQUEST_WITH_CONFIG(endpointConfig, requestConfig, true);\r\n }\r\n}\r\n","import { Spinner, SpinnerSize } from '@fluentui/react';\r\nimport React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport './LoaderSection.scss';\r\n\r\ninterface IComponentProps {\r\n customText?: string;\r\n}\r\n\r\nexport const LoaderSection: React.FunctionComponent = props => {\r\n const { customText } = props;\r\n const intl = useIntl();\r\n const defaultText = intl.formatMessage({ defaultMessage: 'Loading the learning experience...' });\r\n const textToDisplay = customText || defaultText;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import { takeLeading, takeLatest } from 'redux-saga/effects';\r\n\r\nimport {\r\n ILearningPath,\r\n ILearningPathCard,\r\n ILearningPathGroups,\r\n IFilterInputs,\r\n IMSClassesCatalog,\r\n ILearningPartners,\r\n IFilterInputMyDeliveries\r\n} from '../../../models';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport {\r\n GetLearningPathActions,\r\n GetLearningPathCardActions,\r\n GetLearningPathGroupsActions,\r\n MSCatalogActions,\r\n GetLearningPartnersActions,\r\n MSSingleCatalogActions,\r\n GetMyDeliveriesActions,\r\n GetSearchDeliveriesStatusActions\r\n} from './actions';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n GetLearningPathSaga: new EndpointSaga(GetLearningPathActions, Api.GET_LEARNING_PATH, takeLeading),\r\n GetLearningPathCardSaga: new EndpointSaga(\r\n GetLearningPathCardActions,\r\n Api.GET_DEFAULT_LEARNING_PATH,\r\n takeLeading\r\n ),\r\n GetLearningPathGroupsSaga: new EndpointSaga(\r\n GetLearningPathGroupsActions,\r\n Api.GET_LEARNING_PATH_GROUPS,\r\n takeLeading\r\n ),\r\n MSCatalogActionsSaga: new EndpointSaga(MSCatalogActions, Api.MSCATALOG, takeLatest),\r\n MSSingleCatalogActionsSaga: new EndpointSaga(MSSingleCatalogActions, Api.MSCATALOG, takeLatest),\r\n GetLearningParnerSaga: new EndpointSaga(\r\n GetLearningPartnersActions,\r\n Api.GET_DEFAULT_LEARNING_PARTNER,\r\n takeLeading\r\n ),\r\n GetMyDeliveriesSaga: new EndpointSaga(\r\n GetMyDeliveriesActions,\r\n Api.GET_MyDeliveries,\r\n takeLatest\r\n ),\r\n GetSearchDeliveriesStatusSaga: new EndpointSaga(\r\n GetSearchDeliveriesStatusActions,\r\n Api.GET_SearchDeliveriesStatus,\r\n takeLatest\r\n )\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport {\r\n ILearningPath,\r\n ILearningPathCard,\r\n ILearningPathGroups,\r\n IMSClassesCatalog,\r\n ILearningPartners,\r\n ICustomErrorMessage\r\n} from '../../../models';\r\nimport { ErrorMessageMapper } from '../../../utilities';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport {\r\n GetLearningPathActions,\r\n GetLearningPathCardActions,\r\n GetLearningPathGroupsActions,\r\n MSCatalogActions,\r\n GetLearningPartnersActions,\r\n MSSingleCatalogActions,\r\n GetMyDeliveriesActions,\r\n GetSearchDeliveriesStatusActions\r\n} from './actions';\r\nimport { sagas } from './sagas';\r\n\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'LearningPathStore';\r\n\r\nexport interface ILearningPathState extends IEndpointState {\r\n /** The certification state */\r\n readonly learningPath: ILearningPath;\r\n readonly learningPathCards: ILearningPathCard[];\r\n readonly learningPathGroups: ILearningPathGroups[];\r\n readonly msCatalog: IMSClassesCatalog[];\r\n readonly learningPartners: ILearningPartners[];\r\n readonly customErrorMessage: ICustomErrorMessage | null;\r\n readonly myDeliveries: IMSClassesCatalog[];\r\n readonly searchDeliveriesStatus: IMSClassesCatalog[];\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = ILearningPathState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialLearningPathState: IState = new EndpointStateFactory().getInitialState({\r\n learningPath: {\r\n id: '',\r\n pathwayIdentifier: '',\r\n versionNumber: 0,\r\n isCurrent: false,\r\n customerRole: '',\r\n title: '',\r\n status: 0,\r\n groupedItems: []\r\n },\r\n learningPathCards: [],\r\n learningPathGroups: [],\r\n learningPartners: [],\r\n msCatalog: [],\r\n customErrorMessage: null,\r\n myDeliveries: [],\r\n searchDeliveriesStatus: []\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial Learning Path state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialLearningPathState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetLearningPartnersActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n learningPartners: action.payload\r\n };\r\n case GetLearningPartnersActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetLearningPathActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n learningPath: action.payload\r\n };\r\n case GetLearningPathActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetLearningPathGroupsActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n learningPathGroups: action.payload\r\n };\r\n case GetLearningPathGroupsActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetLearningPathCardActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n learningPathCards: action.payload\r\n };\r\n case GetLearningPathCardActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case MSCatalogActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n msCatalog: action.payload\r\n };\r\n case MSCatalogActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case MSSingleCatalogActions.ActionTypes.ExecuteSuccess:\r\n const currentMSCatalog = [...state.msCatalog];\r\n const deliveryIndex = state.msCatalog.findIndex(catalog => catalog.deliveryId === action.payload[0].deliveryId);\r\n if (deliveryIndex > -1) {\r\n currentMSCatalog[deliveryIndex] = { ...currentMSCatalog[deliveryIndex], deliveryStatus: action.payload[0].deliveryStatus };\r\n }\r\n return {\r\n ...state,\r\n msCatalog: currentMSCatalog\r\n };\r\n case MSSingleCatalogActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetMyDeliveriesActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n myDeliveries: action.payload\r\n };\r\n case GetMyDeliveriesActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetSearchDeliveriesStatusActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n searchDeliveriesStatus: action.payload\r\n };\r\n case GetSearchDeliveriesStatusActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const LearningPathStore = new EndpointStore(storeName, initialLearningPathState, reducer, sagas, [\r\n GetLearningPathActions,\r\n GetLearningPathCardActions,\r\n GetLearningPathGroupsActions,\r\n MSCatalogActions,\r\n GetLearningPartnersActions,\r\n MSSingleCatalogActions,\r\n GetMyDeliveriesActions,\r\n GetSearchDeliveriesStatusActions\r\n]);\r\n","import { AzureKeyCredential, SearchClient } from '@azure/search-documents';\r\nimport { isNaN } from 'lodash';\r\nimport axios from 'axios';\r\n\r\nimport { ICertificationSearchRecord, IDeliverySearchRecord, IFilterInputs, IUserProfile } from '../models';\r\n\r\nexport enum SearchIndex {\r\n Delivery = 'deliveries',\r\n Certification = 'certifications',\r\n BlockedUsers = 'blocked-users'\r\n}\r\n\r\nexport interface ISearchResult {\r\n searchId: string;\r\n records: T[];\r\n count: number;\r\n facets: any;\r\n}\r\n\r\nexport interface IBlockedUserResponse {\r\n records: string[];\r\n}\r\n\r\nexport class SearchHelper {\r\n static readonly searchIdHeader = 'x-ms-azs-searchid';\r\n static readonly API_ENDPOINT: string = process.env.REACT_APP_SEARCH_API_ENDPOINT ?? '';\r\n static readonly API_KEY: string = process.env.REACT_APP_SEARCH_API_KEY ?? '';\r\n static readonly API_VERSION = process.env.REACT_APP_SEARCH_API_VERSION ?? '';\r\n\r\n private static GetClient(index: SearchIndex): SearchClient {\r\n if (this.API_ENDPOINT === '') throw 'Search API endpoint missing.';\r\n if (this.API_KEY === '') throw 'Search API key missing';\r\n if (this.API_VERSION === '') throw 'Search API version missing';\r\n\r\n return new SearchClient(this.API_ENDPOINT, index as string, new AzureKeyCredential(this.API_KEY), {\r\n apiVersion: this.API_VERSION\r\n });\r\n }\r\n\r\n static async GetCertifications(query: string, filters: IFilterInputs, top = 0, skip = 0, accessToken: string) {\r\n return await SearchHelper.Search(\r\n query,\r\n [\r\n 'catalogId',\r\n 'certId',\r\n 'certification',\r\n 'certificationRole',\r\n 'description',\r\n 'id',\r\n 'image',\r\n 'platform',\r\n 'url',\r\n 'learntvurl',\r\n 'mslearnurl'\r\n ],\r\n `locale eq '${filters.locale?.toLowerCase()}'`,\r\n [],\r\n [],\r\n SearchIndex.Certification,\r\n top,\r\n [],\r\n skip,\r\n accessToken\r\n );\r\n }\r\n\r\n static async GetDeliveries(\r\n query: string,\r\n filters: IFilterInputs,\r\n isDisabledMultiRoleAndFiltersInUrl = false,\r\n ignoreLearningOptions = false,\r\n isExtraSearchODataFiltersEnabled: boolean,\r\n top = 0,\r\n skip = 0,\r\n disableProjectReadiness: boolean,\r\n accessToken: string\r\n ) {\r\n const learningContentType = filters.learningContentType;\r\n const twoDaysFromNow = new Date();\r\n const twoDaysFromNowVTD = new Date();\r\n const now = new Date();\r\n if (disableProjectReadiness) {\r\n twoDaysFromNow.setDate(twoDaysFromNow.getDate() + 2);\r\n } else {\r\n twoDaysFromNow.setDate(twoDaysFromNow.getDate());\r\n twoDaysFromNowVTD.setDate(twoDaysFromNow.getDate() + 2);\r\n }\r\n\r\n const vtdLookAheadDays = new Date();\r\n vtdLookAheadDays.setDate(vtdLookAheadDays.getDate() + 365);\r\n\r\n const otherLookAheadDays = new Date();\r\n otherLookAheadDays.setDate(vtdLookAheadDays.getDate() + 180);\r\n\r\n let oDataFilter = '';\r\n if ('tpId' in filters && filters) {\r\n oDataFilter = `(TPID eq '${filters.tpId}') and languageCode eq '${filters.locale}' `;\r\n } else if ('skillingId' in filters && filters) {\r\n oDataFilter = `(SkillingId eq '${filters.skillingId}') and languageCode eq '${filters.locale}' `;\r\n }\r\n\r\n let businessRules = isExtraSearchODataFiltersEnabled\r\n ? `and CatalogClassificationDesc ne 'Exam Prep' and (DeliveryOffcialStartDateTime ge ${twoDaysFromNow.toISOString()})`\r\n : `and esi_name eq 'Confirmed & Available'and LxPDisplayDate le ${now.toISOString()} and ((DeliveryOffcialStartDateTime le ${otherLookAheadDays.toISOString()} and CatalogClassificationDesc ne 'Virtual Training Days') or (DeliveryOffcialStartDateTime le ${vtdLookAheadDays.toISOString()} and CatalogClassificationDesc eq 'Virtual Training Days') ) and ((msevtmgt_stopwebsiteregistrationson ge ${now.toISOString()}) or (msevtmgt_stopwebsiteregistrationson eq null and DeliveryOffcialStartDateTime ge ${twoDaysFromNow.toISOString()}))`;\r\n\r\n if (!disableProjectReadiness) {\r\n businessRules = isExtraSearchODataFiltersEnabled\r\n ? `and CatalogClassificationDesc ne 'Exam Prep' and (DeliveryOffcialStartDateTime ge ${twoDaysFromNow.toISOString()})`\r\n : `and esi_name eq 'Confirmed & Available'and LxPDisplayDate le ${now.toISOString()} and ((DeliveryOffcialStartDateTime le ${otherLookAheadDays.toISOString()} and CatalogClassificationDesc ne 'Virtual Training Days') or (DeliveryOffcialStartDateTime le ${vtdLookAheadDays.toISOString()} and CatalogClassificationDesc eq 'Virtual Training Days') ) and ((msevtmgt_stopwebsiteregistrationson ge ${now.toISOString()}) or (msevtmgt_stopwebsiteregistrationson eq null and CatalogClassificationDesc eq 'Virtual Training Days' and DeliveryOffcialStartDateTime ge ${twoDaysFromNowVTD.toISOString()}))`;\r\n }\r\n\r\n oDataFilter += ` ${businessRules}`;\r\n\r\n // learning options\r\n if (!ignoreLearningOptions && learningContentType !== 'all' && learningContentType !== '')\r\n oDataFilter += ` and CatalogClassificationDesc eq '${learningContentType}' `;\r\n\r\n // languages\r\n if (filters.languageList.length > 0 && filters.languageList[0] !== '') {\r\n let oDataLanguageFilter = '(';\r\n for (const languageCode of filters.languageList) {\r\n if (languageCode.includes(\"'\") && !isDisabledMultiRoleAndFiltersInUrl) {\r\n const escapedLanguageCode = languageCode.replaceAll(\"'\", \"''\");\r\n oDataLanguageFilter += `DeliveryLanguageDesc eq '${escapedLanguageCode}' or `;\r\n } else oDataLanguageFilter += `DeliveryLanguageDesc eq '${languageCode}' or `;\r\n }\r\n oDataLanguageFilter = `${oDataLanguageFilter.substring(0, oDataLanguageFilter.length - ' or '.length)})`;\r\n\r\n oDataFilter += ` and ${oDataLanguageFilter}`;\r\n }\r\n\r\n // roles\r\n if (filters.targetedRole.length > 0 && filters.targetedRole[0] !== '') {\r\n let allreadyadded = false;\r\n let oDataRoleFilter = '(';\r\n\r\n const RoleOptionVTD = ['Business Owner', 'Business User', 'Technology Manager', 'Technology Educator'];\r\n if (learningContentType === 'Virtual Training Days') {\r\n if (!filters.targetedRole.includes('Fundamental Skills')) {\r\n //eslint-disable-next-line\r\n oDataRoleFilter += `search.ismatch('\\\"Fundamental Skills\\\"','TargetedRole') or `;\r\n allreadyadded = true;\r\n }\r\n }\r\n if (\r\n !allreadyadded &&\r\n !filters.targetedRole.includes('Fundamental Skills') &&\r\n filters.targetedRole.some(r => RoleOptionVTD.includes(r))\r\n ) {\r\n //eslint-disable-next-line\r\n oDataRoleFilter += `search.ismatch('\\\"Fundamental Skills\\\"','TargetedRole') or `;\r\n }\r\n if (!isDisabledMultiRoleAndFiltersInUrl) {\r\n //eslint-disable-next-line\r\n for (let role of filters.targetedRole) {\r\n role = role.replaceAll(\"'\", \"''\");\r\n oDataRoleFilter += `search.ismatch('\"${role}\"','TargetedRole') or `;\r\n }\r\n } else {\r\n for (const role of filters.targetedRole) oDataRoleFilter += `TargetedRole eq '${role}' or `;\r\n }\r\n oDataRoleFilter = `${oDataRoleFilter.substring(0, oDataRoleFilter.length - ' or '.length)})`;\r\n oDataFilter += ` and ${oDataRoleFilter}`;\r\n }\r\n\r\n // timezones\r\n if (filters.timezoneList.length > 0 && filters.timezoneList[0] !== '') {\r\n let hasValidTimezoneCode = false;\r\n let oDataTimezoneFilter = '(';\r\n for (const timezone of filters.timezoneList) {\r\n if (!isNaN(Number(timezone))) {\r\n hasValidTimezoneCode = true;\r\n oDataTimezoneFilter += `TimeZoneCode eq ${timezone} or `;\r\n }\r\n }\r\n oDataTimezoneFilter = `${oDataTimezoneFilter.substring(0, oDataTimezoneFilter.length - ' or '.length)})`;\r\n\r\n oDataFilter += hasValidTimezoneCode ? ` and ${oDataTimezoneFilter}` : '';\r\n }\r\n\r\n // seat availibility\r\n if (filters.seatsAvailability.length > 0 && filters.seatsAvailability[0] !== '') {\r\n let oDataSeatAvailibilityFilter = '(';\r\n for (const availabilty of filters.seatsAvailability) {\r\n if (!isDisabledMultiRoleAndFiltersInUrl) {\r\n const escapedAvailability = availabilty.replaceAll(\"'\", \"''\");\r\n oDataSeatAvailibilityFilter += `SeatAvailability eq '${escapedAvailability}' or `;\r\n } else oDataSeatAvailibilityFilter += `SeatAvailability eq '${availabilty}' or `;\r\n }\r\n oDataSeatAvailibilityFilter = `${oDataSeatAvailibilityFilter.substring(0, oDataSeatAvailibilityFilter.length - ' or '.length)})`;\r\n\r\n oDataFilter += ` and ${oDataSeatAvailibilityFilter}`;\r\n }\r\n\r\n //Modality\r\n if (filters.targetedModality.length > 0 && filters.targetedModality[0] !== '') {\r\n let oDataModalityFilter = '(';\r\n for (const modality of filters.targetedModality) {\r\n if (!isDisabledMultiRoleAndFiltersInUrl) {\r\n const escapedModality = modality.replaceAll(\"'\", \"''\");\r\n oDataModalityFilter += `LearningExperience eq '${escapedModality}' or `;\r\n } else oDataModalityFilter += `LearningExperience eq '${modality}' or `;\r\n }\r\n oDataModalityFilter = `${oDataModalityFilter.substring(0, oDataModalityFilter.length - ' or '.length)})`;\r\n\r\n oDataFilter += ` and ${oDataModalityFilter}`;\r\n }\r\n\r\n //delivery Start Time\r\n if (filters.deliveryStartTime && filters.deliveryEndTime) {\r\n const startDateTime = new Date('1900-01-01T' + filters.deliveryStartTime + ':00Z').toISOString().split('.')[0] + 'Z';\r\n const endDateTime = new Date('1900-01-01T' + filters.deliveryEndTime + ':00Z').toISOString().split('.')[0] + 'Z';\r\n let oDeliveryTimeRangeFilter = '(';\r\n oDeliveryTimeRangeFilter += `DeliveryStartTime ge ${startDateTime} and DeliveryStartTime le ${endDateTime}`;\r\n oDataFilter += ` and ${oDeliveryTimeRangeFilter})`;\r\n }\r\n\r\n const maxFacetCount = 50;\r\n\r\n const facetsSend = !isDisabledMultiRoleAndFiltersInUrl\r\n ? [\r\n 'CatalogClassificationDesc',\r\n `TargetedRole,count:${maxFacetCount}`,\r\n 'SeatAvailability',\r\n `DeliveryLanguageDesc,count:${maxFacetCount}`,\r\n `TimeZone,count:${maxFacetCount}`,\r\n `FormattedTimeZones,count:${maxFacetCount}`,\r\n 'LearningExperience'\r\n ]\r\n : [\r\n 'CatalogClassificationDesc',\r\n `TargetedRole,count:${maxFacetCount}`,\r\n 'SeatAvailability',\r\n `DeliveryLanguageDesc,count:${maxFacetCount}`,\r\n `TimeZone,count:${maxFacetCount}`,\r\n 'LearningExperience'\r\n ];\r\n\r\n const scoringParam = ['Modality:BLXP', 'Availability:Register'];\r\n return await SearchHelper.Search(\r\n query,\r\n SearchHelper.getQueryFilterColumns(filters) as (keyof IDeliverySearchRecord)[],\r\n oDataFilter.trim(),\r\n facetsSend,\r\n [],\r\n SearchIndex.Delivery,\r\n top,\r\n scoringParam,\r\n skip,\r\n accessToken\r\n );\r\n }\r\n\r\n static getQueryFilterColumns(filter: IFilterInputs) {\r\n const query: string[] = [\r\n 'Id',\r\n 'AvailableSeats',\r\n 'CatalogClassificationDesc',\r\n 'CatalogDesc',\r\n 'CatalogPrerequisiteAttestment',\r\n 'CourseCapacity',\r\n 'DeliveryCatalogID',\r\n 'DeliveryCatalogTitle',\r\n 'DeliveryCountry',\r\n 'DeliveryDuration',\r\n 'DeliveryID',\r\n 'DeliveryLanguageDesc',\r\n 'DeliveryLocation',\r\n 'DeliveryModality',\r\n 'DeliveryModalityDesc',\r\n 'DeliveryOffcialStartDateTime',\r\n 'DeliveryRegFormURL',\r\n 'DeliveryTypeDesc',\r\n 'EventId',\r\n 'LxPDisplayDate',\r\n 'LXPTitle',\r\n 'ReadableEventId',\r\n 'RegistrationCount',\r\n 'TargetedRole',\r\n 'TimeRangeCalc',\r\n 'TimeZone',\r\n 'TimeZoneCode',\r\n 'DateRangeCalc',\r\n 'DeliveryStartTime',\r\n 'CatalogPrerequisite',\r\n 'DeliveryStatus',\r\n 'TeamsConsent',\r\n 'BlendedLearningScheduleUrl',\r\n 'MicrosoftTeamsUrl',\r\n 'MicrosoftTeamsGroupId',\r\n 'session_count'\r\n ];\r\n if ('tpId' in filter && filter) {\r\n query.push('TPID');\r\n } else if ('skillingId' in filter && filter) {\r\n query.push('SkillingId');\r\n }\r\n return query;\r\n }\r\n\r\n static async Search(\r\n text: string,\r\n selectColumns: (keyof TModel)[],\r\n filter = '',\r\n facets: string[] = [],\r\n orderBy: string[] = [],\r\n index: SearchIndex,\r\n top = 1000,\r\n scoringParam: string[] = [],\r\n skip = 0,\r\n accessToken: string\r\n ): Promise> {\r\n let searchId: string | undefined;\r\n\r\n let searchFilter: any = {};\r\n\r\n searchFilter = {\r\n queryType: 'simple',\r\n searchMode: 'any',\r\n searchFields: '',\r\n select: selectColumns.toString(),\r\n filter: filter,\r\n facets: facets,\r\n top: top,\r\n skip: skip,\r\n orderby: orderBy.length == 0 ? '' : orderBy,\r\n count: true,\r\n scoringParameters: scoringParam,\r\n scoringStatistics: 'global',\r\n search: text\r\n };\r\n const searchUrl = 'search.post.search';\r\n const searchResults: any = await SearchHelper.GetSearchResult(searchUrl, index, searchFilter, accessToken);\r\n const records: TModel[] = [];\r\n if (searchResults && searchResults.data.value && searchResults.data.value.length > 0)\r\n for await (const result of searchResults.data.value) records.push(result);\r\n\r\n return {\r\n searchId,\r\n count: searchResults.data['@odata.count'] ?? 0,\r\n records: records,\r\n facets: searchResults.data['@search.facets']\r\n } as ISearchResult;\r\n }\r\n\r\n private static async GetSearchResult(searchUrl: string, index: SearchIndex, searchFilter: any, accessToken: string) {\r\n const url = `${searchUrl}?api-version=` + this.API_VERSION;\r\n const baseUrl = localStorage.getItem('apiVersionUrl') ?? `${process.env.REACT_APP_API_ENROLLMENTSERVICES_URL}/api/`;\r\n const searchResults: any = await axios.post(`${baseUrl}search/indexes('${index}')/docs/${url}`, searchFilter, {\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n 'Content-Type': 'application/json',\r\n 'Ocp-Apim-Subscription-Key': process.env.REACT_APP_API_ENROLLMENTSERVICES_Apim_Subscription_Key ?? ''\r\n }\r\n });\r\n return searchResults;\r\n }\r\n\r\n static async GetDeliverySuggestions(searchTerm: string, profile: IUserProfile, locale: string, accessToken: string): Promise {\r\n const suggesterName = 'deliverysuggestions';\r\n let filter = '';\r\n if ('TPID' in profile && profile.TPID) {\r\n filter = `TPID eq '${profile.TPID}' and languageCode eq '${locale}' and CatalogClassificationDesc ne 'Exam Prep'`;\r\n } else if ('skillingId' in profile && profile.skillingId) {\r\n filter = `SkillingId eq '${profile.skillingId}' and languageCode eq '${locale}' and CatalogClassificationDesc ne 'Exam Prep'`;\r\n }\r\n\r\n let searchFilter: any = {};\r\n\r\n searchFilter = {\r\n filter: filter,\r\n search: searchTerm,\r\n select: 'DeliveryCatalogID',\r\n suggesterName: suggesterName,\r\n top: 20\r\n };\r\n\r\n const searchUrl = 'search.post.suggest';\r\n const suggestions: any = await SearchHelper.GetSearchResult(searchUrl, SearchIndex.Delivery, searchFilter, accessToken);\r\n return suggestions.data.value.map(\r\n (result: { [x: string]: any; DeliveryCatalogID: any }) => `${result.DeliveryCatalogID} | ${result['@search.text']}`\r\n );\r\n }\r\n\r\n static async BlockedUsers(learnerId: string, top = 0, accessToken: string) {\r\n return await SearchHelper.Search(\r\n `\"${learnerId}\"`,\r\n [],\r\n '',\r\n [],\r\n [],\r\n SearchIndex.BlockedUsers,\r\n top,\r\n [],\r\n 0,\r\n accessToken\r\n );\r\n }\r\n}\r\n","import {\r\n AccountInfo,\r\n AuthenticationResult,\r\n AuthError,\r\n InteractionRequiredAuthError,\r\n RedirectRequest,\r\n SilentRequest\r\n} from '@azure/msal-browser';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\n\r\nimport { appSettings } from '../Settings';\r\nimport { ai } from '../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\n\r\nconst defaultScopes = appSettings.config.defaultAuthScopes;\r\nconst msal = appSettings.config.msal;\r\n\r\nexport class TokenHandler {\r\n public static getToken = async (parameters?: SilentRequest): Promise => {\r\n // The parameters to be used when silently refreshing the token\r\n\r\n const defaultParams = {\r\n scopes: defaultScopes,\r\n account: msal.getAllAccounts()?.[0] || ({} as AccountInfo),\r\n ...parameters\r\n };\r\n try {\r\n return await msal.acquireTokenSilent(defaultParams);\r\n } catch (error) {\r\n ai.appInsights?.trackException({\r\n exception: new Error('ESIUI - AcquireTokenSilent'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }})\r\n return await TokenHandler.loginToRefreshToken(error, defaultParams);\r\n }\r\n };\r\n\r\n public static loginRequest = (parameters: RedirectRequest): void => {\r\n // The parameters to be used when silently refreshing the token\r\n const defaultParams = {\r\n ...parameters\r\n };\r\n msal.handleRedirectPromise().then(response => {\r\n msal.loginRedirect(defaultParams).catch((error)=>{\r\n ai.appInsights?.trackException({\r\n exception: new Error('ESIUI - Login Redirect'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }\r\n });\r\n })\r\n }).catch((error:any)=>{\r\n ai.appInsights?.trackException({\r\n exception: new Error('ESIUI- HandleRedirectPromise'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }\r\n });\r\n });\r\n };\r\n\r\n private static loginToRefreshToken = async (error: AuthError, parameters: RedirectRequest): Promise => {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n await msal.acquireTokenRedirect(parameters).catch(()=>{\r\n ai.appInsights?.trackException({\r\n exception: new Error('ESIUI-LoginToRefreshToken-AcquireTokenRedirect'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }\r\n });\r\n });\r\n // Nothing will return here, the page will be redirected away from the app\r\n return new Promise(resolve => resolve(null));\r\n } else {\r\n ai.appInsights?.trackException({\r\n exception: new Error('ESIUI-LoginToRefreshToken'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }\r\n });\r\n return new Promise(resolve => resolve(null));\r\n }\r\n };\r\n}\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport { silentRequest } from '../Settings';\r\nimport { TokenHandler } from '../utilities/TokenHandler';\r\nimport { useAuthority } from './useAuthority';\r\nimport { ai } from '../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\n\r\nexport const useAccessToken = (isUserLoggedIn?: boolean) => {\r\n const authority = useAuthority();\r\n const [accessToken, setAccessToken] = useState('');\r\n const [timeOutDuration, setTimeOutDuration] = useState(0);\r\n\r\n useEffect(() => {\r\n const request = { ...silentRequest, authority };\r\n\r\n /**\r\n *\r\n */\r\n async function fetchData() {\r\n const response = await TokenHandler.getToken(request);\r\n ai.appInsights?.trackEvent({\r\n name: 'LXP.UseAccessToken',\r\n properties: { expiresOn: response?.expiresOn?.getTime() }\r\n });\r\n if (response?.expiresOn) {\r\n const oneMinuteBeforeExpires: number = response?.expiresOn.getTime() - 60000; // Subtract 1 minute (60000 milliseconds)\r\n setTimeOutDuration(oneMinuteBeforeExpires - Date.now());\r\n }\r\n setAccessToken(response.accessToken);\r\n }\r\n const intervalId = setTimeout(() => {\r\n if (!isUserLoggedIn) {\r\n fetchData();\r\n }\r\n }, timeOutDuration);\r\n\r\n return () => clearTimeout(intervalId); // Cleanup interval on unmount\r\n }, [authority, timeOutDuration, isUserLoggedIn]);\r\n\r\n return accessToken;\r\n};\r\n","import { ReactPlugin } from '@microsoft/applicationinsights-react-js';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport * as H from 'history';\r\n\r\n/**\r\n * A service that initializes a single instance of the Application Insights API and exposes it for use\r\n */\r\nclass ApplicationInsightsService {\r\n /** Reference to the Application Insights React Plugin instance */\r\n public reactPlugin = new ReactPlugin();\r\n\r\n /** Reference to an instance of the Application Insights API */\r\n public appInsights?: ApplicationInsights;\r\n\r\n /**\r\n * Initialize the Application Insights class\r\n *\r\n * @param {string} instrumentationKey - Application Insights Instrumentation Key\r\n * @param {History} browserHistory - client's browser history, supplied by the withRouter HOC\r\n */\r\n public initialize = (instrumentationKey: string, browserHistory: H.History) => {\r\n if (!instrumentationKey) {\r\n throw new Error('Could not initialize Telemetry Service. No instrumentation key has been specified.');\r\n }\r\n\r\n if (!browserHistory) {\r\n throw new Error('Could not initialize Telemetry Service. No browser history has been provided.');\r\n }\r\n\r\n this.appInsights = new ApplicationInsights({\r\n config: {\r\n enableAutoRouteTracking: true,\r\n isCookieUseDisabled: true,\r\n instrumentationKey,\r\n maxBatchInterval: 5000,\r\n enableCorsCorrelation: true,\r\n disableFetchTracking: false,\r\n extensions: [this.reactPlugin],\r\n extensionConfig: {\r\n [this.reactPlugin.identifier]: {\r\n history: browserHistory\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.appInsights.loadAppInsights();\r\n };\r\n}\r\n\r\nconst ai = new ApplicationInsightsService();\r\n\r\nexport { ai };\r\n","module.exports = __webpack_public_path__ + \"static/media/Task_List_Contrast.7163ea11.svg\";","import mainGetMSCerts from '../assets/images/Main_GetMSCertsIconNav.svg';\r\nimport mainFindMoreClasses from '../assets/images/Main_FindMoreClassesIconNav.svg';\r\nimport mainLearnYourOwn from '../assets/images/Main_LearnYourOwnIconNav.svg';\r\nimport mainMultidayMSClass from '../assets/images/Main_MultidayMSClassIconNav.svg';\r\nimport mainOneDayMSClass from '../assets/images/Main_OneDayMSIconNav.svg';\r\nimport mainGameLearning from '../assets/images/Main_GameLearningIconNav.svg';\r\nimport mainCopilot from '../assets/images/Main_CopilotIconNav.svg';\r\nimport mainCourseVideos from '../assets/images/Main_CourseVideosIconNav.svg';\r\n\r\ntype Dictionary = { [key: string]: T };\r\n\r\n/* eslint-disable camelcase */\r\nexport const imagesSVG: Dictionary = {\r\n Main_Copilot: mainCopilot,\r\n Main_CourseVideos: mainCourseVideos,\r\n Main_LearnYourOwn: mainLearnYourOwn,\r\n Main_OneDayMSClass: mainOneDayMSClass,\r\n Main_GetMSCerts: mainGetMSCerts,\r\n Main_MultidayMSClass: mainMultidayMSClass,\r\n Main_FindMoreClasses: mainFindMoreClasses,\r\n Main_GameLearning: mainGameLearning\r\n};\r\n","import {\r\n ILearningPath,\r\n ILearningPathCard,\r\n ILearningPathGroups,\r\n IFilterInputs,\r\n IMSClassesCatalog,\r\n ILearningPartners,\r\n IFilterInputMyDeliveries\r\n} from '../../../models';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const GetLearningPathActions = new EndpointActions('GetLearningPath');\r\nexport const GetLearningPathGroupsActions = new EndpointActions('GetLearningPathGroups');\r\nexport const GetMyDeliveriesActions = new EndpointActions('GetMyDeliveries');\r\nexport const GetLearningPathCardActions = new EndpointActions('GetLearningPathCards');\r\nexport const MSCatalogActions = new EndpointActions('MSCatalog');\r\nexport const MSSingleCatalogActions = new EndpointActions('MSSingleCatalog');\r\nexport const GetLearningPartnersActions = new EndpointActions('GetLearningParners');\r\nexport const GetSearchDeliveriesStatusActions = new EndpointActions(\r\n 'GetSearchDeliveriesStatus'\r\n);\r\n","import {\r\n ICountry,\r\n ILanguage,\r\n IRole,\r\n ITimezone,\r\n IModality,\r\n INotifications,\r\n IESIAgreement,\r\n IVerificationEmailRequest\r\n} from '../../../models';\r\nimport { IMeasureUpLTISettings } from '../../../models/MeasureUpLTISettings';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const GetLanguagesActions = new EndpointActions('GetLanguages');\r\nexport const GetTimeZonesActions = new EndpointActions('GetTimezones');\r\nexport const GetModalitiesActions = new EndpointActions('GetModalities');\r\nexport const GetRolesActions = new EndpointActions('GetRoles');\r\nexport const GetCountryActions = new EndpointActions('GetCountry');\r\nexport const GetMeasureUpLTISettingsActions = new EndpointActions('GetMeasureUpLTISettings');\r\nexport const GetNotificationsActions = new EndpointActions('GetNotificationsActions');\r\nexport const GetESIAgreementActions = new EndpointActions('GetESIAgreementActions');\r\nexport const GetEmailCodeVerificationStatusActions = new EndpointActions(\r\n 'GetEmailCodeVerificationStatus'\r\n);\r\n","import { takeLatest, takeLeading } from 'redux-saga/effects';\r\n\r\nimport {\r\n ILanguage,\r\n ITimezone,\r\n IRole,\r\n IModality,\r\n ICountry,\r\n INotifications,\r\n IESIAgreement,\r\n IVerificationEmailRequest\r\n} from '../../../models';\r\nimport { IMeasureUpLTISettings } from '../../../models/MeasureUpLTISettings';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport {\r\n GetLanguagesActions,\r\n GetTimeZonesActions,\r\n GetModalitiesActions,\r\n GetRolesActions,\r\n GetNotificationsActions,\r\n GetCountryActions,\r\n GetMeasureUpLTISettingsActions,\r\n GetESIAgreementActions,\r\n GetEmailCodeVerificationStatusActions\r\n} from './actions';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n GetLanguagesSaga: new EndpointSaga(GetLanguagesActions, Api.GET_LANGUAGES, takeLeading),\r\n GetNotificationsSaga: new EndpointSaga(GetNotificationsActions, Api.GET_NOTIFICATIONS, takeLeading),\r\n GetESIAgreementSaga: new EndpointSaga(GetESIAgreementActions, Api.GET_ESIAgreement, takeLeading),\r\n GetTimezonesSaga: new EndpointSaga(GetTimeZonesActions, Api.GET_TIMEZONES, takeLeading),\r\n GetModalitiesSaga: new EndpointSaga(GetModalitiesActions, Api.GET_MODALITIES, takeLeading),\r\n GetRolesSaga: new EndpointSaga(GetRolesActions, Api.GET_ROLES, takeLeading),\r\n GetCountrySaga: new EndpointSaga(GetCountryActions, Api.GET_COUNTRY, takeLeading),\r\n GetMeasureUpLTISettingsSaga: new EndpointSaga(\r\n GetMeasureUpLTISettingsActions,\r\n Api.GET_MEASUREUP_LTI_SETTINGS,\r\n takeLeading\r\n ),\r\n GetEmailCodeVerificationStatus: new EndpointSaga(\r\n GetEmailCodeVerificationStatusActions,\r\n Api.EMAILCODE_VERIFICATION_STATUS,\r\n takeLatest\r\n )\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { ILanguage, IModality, ITimezone, IRole, ICountry, IMeasureUpLTISettings, INotifications, IESIAgreement } from '../../../models';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport {\r\n GetLanguagesActions,\r\n GetTimeZonesActions,\r\n GetModalitiesActions,\r\n GetRolesActions,\r\n GetCountryActions,\r\n GetMeasureUpLTISettingsActions,\r\n GetNotificationsActions,\r\n GetESIAgreementActions,\r\n GetEmailCodeVerificationStatusActions\r\n} from './actions';\r\nimport { sagas } from './sagas';\r\n\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'EnrollmentPlanStore';\r\n\r\nexport interface IEnrollmentPlanState extends IEndpointState {\r\n /** The enrollment plan state */\r\n readonly languages: ILanguage[];\r\n readonly timezones: ITimezone[];\r\n readonly modalities: IModality[];\r\n readonly roles: IRole[];\r\n readonly countries: ICountry[];\r\n readonly notifications: INotifications[];\r\n readonly measureUpLTISettings: IMeasureUpLTISettings;\r\n esiAgreement: IESIAgreement[];\r\n readonly isEmailCodeVerified: boolean | false;\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = IEnrollmentPlanState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialEnrollmentPlanState: IState = new EndpointStateFactory().getInitialState({\r\n timezones: [],\r\n languages: [],\r\n modalities: [],\r\n roles: [],\r\n countries: [],\r\n notifications: [],\r\n measureUpLTISettings: undefined,\r\n esiAgreement: [],\r\n isEmailCodeVerified: undefined\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial enrollment plan state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialEnrollmentPlanState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetLanguagesActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n languages: action.payload\r\n };\r\n case GetModalitiesActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n modalities: action.payload\r\n };\r\n case GetTimeZonesActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n timezones: action.payload\r\n };\r\n case GetRolesActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n roles: action.payload\r\n };\r\n case GetCountryActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n countries: action.payload\r\n };\r\n case GetMeasureUpLTISettingsActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n measureUpLTISettings: action.payload\r\n };\r\n case GetEmailCodeVerificationStatusActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isEmailCodeVerified: action.payload\r\n };\r\n case GetNotificationsActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n notifications: action.payload\r\n };\r\n case GetNotificationsActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n notifications: []\r\n };\r\n case GetESIAgreementActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n esiAgreement: action.payload\r\n };\r\n case GetESIAgreementActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n esiAgreement: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const EnrollmentPlanStore = new EndpointStore(storeName, initialEnrollmentPlanState, reducer, sagas, [\r\n GetLanguagesActions,\r\n GetModalitiesActions,\r\n GetCountryActions,\r\n GetMeasureUpLTISettingsActions,\r\n GetTimeZonesActions,\r\n GetRolesActions,\r\n GetEmailCodeVerificationStatusActions,\r\n GetESIAgreementActions,\r\n GetNotificationsActions\r\n]);\r\n","export const KEY_TO_CHINA = '48F81B00-C0F9-E911-A9A7-000D3A314C2B';\r\nexport const KEY_TO_KOREA_SOUTH = 'D2F81B00-C0F9-E911-A9A7-000D3A314C2B';\r\nexport const NO_LEARNER_INFO_ERROR = 'ERR-540';\r\nexport const NOT_LINKED_ACCOUNT_ERROR = 'ERR-105';\r\nexport const EMAIL_NOT_ASSOCIATED_ERROR = 'ERR-556';\r\nexport const NOT_LINKED_ACCOUNT_ERROR_AAD = 'ERR-103';\r\nexport const DOMAIN_NOT_SAFELISTED = 'ERR-111';\r\nexport const AAD_ACCOUNT = 'Aad';\r\nexport const NON_AAD_ACCOUNT = 'NonAad';\r\n","import {\r\n IEventRegistrationRequest,\r\n IEventRegistrationResponse,\r\n ICancelRegistrationRequest,\r\n ICancelRegistrationResponse,\r\n ICancelWaitlistRegistrationRequest,\r\n ICancelWaitlistRegistrationResponse,\r\n IConfirmRegistrationRequest,\r\n IConfirmRegistrationResponse\r\n} from '../../../models';\r\nimport {\r\n IGetEventSessionsRequest,\r\n IGetEventSessionsResponse,\r\n IPatchEventSessionsRequest,\r\n IPatchEventSessionsResponse\r\n} from '../../../models/EventManagement/EventSessions';\r\nimport { IPostResendInviteRequest, IPostResendInviteResponse } from '../../../models/EventManagement/PostResendInvite';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const GetCreateRegistrationActions = new EndpointActions('EventRegistration');\r\nexport const GetCancelRegistrationActions = new EndpointActions(\r\n 'CancelRegistration'\r\n);\r\nexport const GetCancelWaitlistActions = new EndpointActions(\r\n 'CancelWaitlist'\r\n);\r\nexport const GetConfirmRegistrationActions = new EndpointActions(\r\n 'ConfirmRegistration'\r\n);\r\n\r\nexport const GetEventSessionsActions = new EndpointActions('GetEventSessions');\r\n\r\nexport const PatchEventSessionsActions = new EndpointActions(\r\n 'PatchEventSessions'\r\n);\r\nexport const PostResendInviteActions = new EndpointActions('PostResendInvite');\r\n","import { takeLeading } from 'redux-saga/effects';\r\n\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport {\r\n IEventRegistrationRequest,\r\n IEventRegistrationResponse,\r\n ICancelRegistrationRequest,\r\n ICancelRegistrationResponse,\r\n ICancelWaitlistRegistrationResponse,\r\n ICancelWaitlistRegistrationRequest,\r\n IConfirmRegistrationRequest,\r\n IConfirmRegistrationResponse\r\n} from '../../../models';\r\nimport {\r\n GetCreateRegistrationActions,\r\n GetCancelRegistrationActions,\r\n GetCancelWaitlistActions,\r\n GetConfirmRegistrationActions,\r\n GetEventSessionsActions,\r\n PatchEventSessionsActions,\r\n PostResendInviteActions\r\n} from './actions';\r\nimport {\r\n IGetEventSessionsRequest,\r\n IGetEventSessionsResponse,\r\n IPatchEventSessionsRequest,\r\n IPatchEventSessionsResponse\r\n} from '../../../models/EventManagement/EventSessions';\r\nimport { IPostResendInviteRequest, IPostResendInviteResponse } from '../../../models/EventManagement/PostResendInvite';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n GetEventRegistrationSaga: new EndpointSaga(\r\n GetCreateRegistrationActions,\r\n Api.CREATE_EVENT_REGISTRATION,\r\n takeLeading\r\n ),\r\n GetcancelEventRegistrationSaga: new EndpointSaga(\r\n GetCancelRegistrationActions,\r\n Api.CANCEL_REGISTRATION,\r\n takeLeading\r\n ),\r\n GetcancelWaitlistSaga: new EndpointSaga(\r\n GetCancelWaitlistActions,\r\n Api.CANCEL_WAITLIST,\r\n takeLeading\r\n ),\r\n GetconfirmEventRegistrationSaga: new EndpointSaga(\r\n GetConfirmRegistrationActions,\r\n Api.CONFIRM_REGISTRATION,\r\n takeLeading\r\n ),\r\n GetEventSessionsSaga: new EndpointSaga(\r\n GetEventSessionsActions,\r\n Api.GET_EventSessions,\r\n takeLeading\r\n ),\r\n PatchEventSessionsSaga: new EndpointSaga(\r\n PatchEventSessionsActions,\r\n Api.PATCH_EventSessions,\r\n takeLeading\r\n ),\r\n PostResendInviteSaga: new EndpointSaga(\r\n PostResendInviteActions,\r\n Api.POST_ResendInvite,\r\n takeLeading\r\n )\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport {\r\n IEventRegistrationRequest,\r\n IEventRegistrationResponse,\r\n ICancelRegistrationRequest,\r\n ICancelRegistrationResponse,\r\n IEventRegistrations,\r\n ICustomErrorMessage,\r\n ICancelWaitlistRegistrationRequest,\r\n ICancelWaitlistRegistrationResponse,\r\n IConfirmRegistrationRequest,\r\n IConfirmRegistrationResponse\r\n} from '../../../models';\r\nimport {\r\n IGetEventSessionsResponse,\r\n IPatchEventSessionsRequest,\r\n IPatchEventSessionsResponse\r\n} from '../../../models/EventManagement/EventSessions';\r\nimport { IPostResendInviteRequest, IPostResendInviteResponse } from '../../../models/EventManagement/PostResendInvite';\r\nimport { ErrorMessageMapper } from '../../../utilities';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport {\r\n GetCreateRegistrationActions,\r\n GetCancelRegistrationActions,\r\n GetCancelWaitlistActions,\r\n GetConfirmRegistrationActions,\r\n GetEventSessionsActions,\r\n PatchEventSessionsActions,\r\n PostResendInviteActions\r\n} from './actions';\r\nimport { sagas } from './sagas';\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'EventRegistrationStore';\r\n\r\nexport interface IEventRegistrationState extends IEndpointState {\r\n /** The event registration state */\r\n readonly eventRegistration: IEventRegistrations;\r\n readonly eventRegistrationRequest: IEventRegistrationRequest;\r\n readonly eventRegistrationResponse: IEventRegistrationResponse;\r\n readonly cancelRegistrationRequest: ICancelRegistrationRequest;\r\n readonly cancelRegistrationResponse: ICancelRegistrationResponse;\r\n readonly cancelWaitlistRequest: ICancelWaitlistRegistrationRequest;\r\n readonly cancelWaitlistResponse: ICancelWaitlistRegistrationResponse;\r\n readonly confirmRegistrationRequest: IConfirmRegistrationRequest;\r\n readonly confirmRegistrationResponse: IConfirmRegistrationResponse;\r\n readonly customErrorMessage: ICustomErrorMessage | null;\r\n readonly eventSessions: Record;\r\n readonly patchEventSessionsRequest: IPatchEventSessionsRequest[];\r\n readonly patchEventSessionsResponse: IPatchEventSessionsResponse;\r\n readonly postResendInviteRequest: IPostResendInviteRequest;\r\n readonly postResendInviteResponse: IPostResendInviteResponse;\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = IEventRegistrationState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialEventRegistrationState: IState = new EndpointStateFactory().getInitialState({\r\n eventRegistration: { attendees: [] },\r\n eventRegistrationRequest: {\r\n eventId: '',\r\n deliveryId: '',\r\n learnerId: '',\r\n eventregistrations: { attendees: [] }\r\n },\r\n cancelRegistrationRequest: {\r\n regId: '',\r\n deliveryId: '',\r\n learnerId: '',\r\n isDeliveryConfirmed: false\r\n },\r\n cancelRegistrationResponse: {\r\n errorCode: '',\r\n message: '',\r\n status: ''\r\n },\r\n cancelWaitlistRequest: {\r\n waitlistId: '',\r\n deliveryId: '',\r\n learnerId: ''\r\n },\r\n cancelWaitlistResponse: {\r\n isSuccess: false\r\n },\r\n confirmRegistrationRequest: {\r\n registrationId: '',\r\n deliveryId: '',\r\n learnerId: ''\r\n },\r\n confirmRegistrationResponse: {\r\n isSuccess: false\r\n },\r\n customErrorMessage: null,\r\n eventSessions: {},\r\n patchEventSessionsRequest: [{ sessionRegId: '', sendInvite: false }],\r\n patchEventSessionsResponse: { isSuccess: false },\r\n postResendInviteRequest: { email: '', msgroupid: '', eventregistrationid: '' },\r\n postResendInviteResponse: { status: '', message: '' }\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial event registration state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialEventRegistrationState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetCancelRegistrationActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n cancelRegistrationResponse: action.payload\r\n };\r\n case GetCancelRegistrationActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetCancelWaitlistActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n cancelWaitlistResponse: {\r\n isSuccess: true\r\n }\r\n };\r\n case GetCancelWaitlistActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetConfirmRegistrationActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n confirmRegistrationResponse: {\r\n isSuccess: true\r\n }\r\n };\r\n case GetConfirmRegistrationActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case GetCreateRegistrationActions.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n eventRegistrationResponse: action.payload\r\n };\r\n }\r\n case GetCreateRegistrationActions.ActionTypes.ExecuteError:\r\n case PatchEventSessionsActions.ActionTypes.ExecuteError:\r\n case PostResendInviteActions.ActionTypes.ExecuteError: {\r\n if (action.meta) {\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n } else {\r\n return state;\r\n }\r\n }\r\n case GetEventSessionsActions.ActionTypes.ExecuteSuccess: {\r\n const { deliveryId, sessions } = action.payload;\r\n return {\r\n ...state,\r\n eventSessions: {\r\n ...state.eventSessions,\r\n [deliveryId]: sessions.map((session: any) => ({ ...session, checked: false }))\r\n }\r\n };\r\n }\r\n case PatchEventSessionsActions.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n patchEventSessionsResponse: { isSuccess: action.payload.statusCode === 200 }\r\n };\r\n }\r\n case PostResendInviteActions.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n postResendInviteResponse: action.payload\r\n };\r\n }\r\n case PostResendInviteActions.ActionTypes.Clear: {\r\n return {\r\n ...state,\r\n postResendInviteResponse: { status: '', message: '' }\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const EventRegistrationStore = new EndpointStore(storeName, initialEventRegistrationState, reducer, sagas, [\r\n GetCreateRegistrationActions,\r\n GetCancelRegistrationActions,\r\n GetCancelWaitlistActions,\r\n GetConfirmRegistrationActions,\r\n GetEventSessionsActions,\r\n PatchEventSessionsActions,\r\n PostResendInviteActions\r\n]);\r\n","import { useDispatch } from 'react-redux';\r\nimport { ActionCreator, bindActionCreators } from 'redux';\r\n\r\nimport { EndpointActions } from './';\r\n\r\nexport const useEndpointActions = (endpointActions: Array> = []): Array> => {\r\n const dispatch = useDispatch();\r\n\r\n if (endpointActions.length) {\r\n const actionMap = endpointActions.reduce((map: any, action: EndpointActions) => {\r\n map[action.name] = action.Execute;\r\n return map;\r\n }, {});\r\n\r\n const boundActions = bindActionCreators(actionMap, dispatch);\r\n return Object.values(boundActions);\r\n } else {\r\n return [];\r\n }\r\n};\r\n","import { useIntl } from 'react-intl';\r\n\r\nexport const useStepsToSuccessPages = () => {\r\n const intl = useIntl();\r\n\r\n return [\r\n {\r\n title: 'reviewYourCourseDetails',\r\n stepName: intl.formatMessage({\r\n defaultMessage: 'Review your course details'\r\n }),\r\n stepPath: '/coursedetails'\r\n },\r\n {\r\n title: 'bePrepared',\r\n stepName: intl.formatMessage({\r\n defaultMessage: 'Be prepared'\r\n }),\r\n stepPath: '/beprepared'\r\n },\r\n {\r\n title: 'buildConfidenceInYourSkills',\r\n stepName: intl.formatMessage({\r\n defaultMessage: 'Build confidence in your skills'\r\n }),\r\n stepPath: '/buildconfidence'\r\n },\r\n {\r\n title: 'celebrateYourMSSkills',\r\n stepName: intl.formatMessage({\r\n defaultMessage: 'Celebrate your Microsoft skills'\r\n }),\r\n stepPath: '/celebrateskills'\r\n },\r\n {\r\n title: 'reviewYourLearningPath',\r\n stepName: intl.formatMessage({\r\n defaultMessage: 'Review your learning path'\r\n }),\r\n stepPath: '/reviewpath'\r\n }\r\n ];\r\n};\r\n","import { IDeliveryInput, IDeliveryDesc } from '../../../models';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const DeliveryDescActions = new EndpointActions('DeliveryDesc');\r\n","import { takeLeading } from 'redux-saga/effects';\r\n\r\nimport { IDeliveryInput, IDeliveryDesc } from '../../../models';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport { DeliveryDescActions } from './actions';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n DeliveryDescSaga: new EndpointSaga(DeliveryDescActions, Api.DELIVERYDESC, takeLeading)\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { IRequestResponse, IDeliveryInput, IDeliveryDesc, ICustomErrorMessage } from '../../../models';\r\nimport { ErrorMessageMapper } from '../../../utilities';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport { DeliveryDescActions } from './actions';\r\nimport { sagas } from './sagas';\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'DeliveryStore';\r\n\r\nexport interface IDeliverySate extends IEndpointState {\r\n /** The user profile state */\r\n readonly deliveryinput: IDeliveryInput;\r\n readonly deliverydesc: IDeliveryDesc[];\r\n readonly response: IRequestResponse;\r\n readonly customErrorMessage: ICustomErrorMessage | null;\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = IDeliverySate;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialDeliveryState: IState = new EndpointStateFactory().getInitialState({\r\n deliverydesc: [],\r\n customErrorMessage: null\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial user state\r\n * @param action - The action\r\n */\r\n\r\nconst reducer: Reducer = (state: IState = initialDeliveryState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case DeliveryDescActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n deliverydesc: action.payload\r\n };\r\n case DeliveryDescActions.ActionTypes.ExecuteError:\r\n if (action.meta) {\r\n return {\r\n ...state,\r\n deliverydesc: action.meta.data,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n } else {\r\n return state;\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const DeliveryStore = new EndpointStore(storeName, initialDeliveryState, reducer, sagas, [DeliveryDescActions]);\r\n","export enum QueryStringParam {\r\n EnrollmentPlanID = 'lpid',\r\n AccountLinking = 'accountLinking',\r\n LinkingRequestId = 'requestId',\r\n LinkingErrorFlag = 'isError',\r\n DomainHint = 'hint',\r\n WorkEmailAddress = 'workEmailAddress',\r\n loginEmail = 'loginemail',\r\n DeliveryId = 'delid',\r\n q = 'q',\r\n IsAad = 'isAad',\r\n IsAuthenticated = 'isAuthenticated',\r\n Authority = 'authority',\r\n NewWorkEmailUpdate = 'newWorkEmailUpdate',\r\n PreferredEmailUpdate = 'PreferredEmailUpdate',\r\n SelectedRoles = 'roles',\r\n SelectedAvailability = 'avail',\r\n SelectedTimezones = 'tz',\r\n SelectedLanguages = 'lang',\r\n SelectedModalities = 'exp',\r\n SelectedLearningOPtion = 'learningoption',\r\n IsESITermsAccepted = 'isESITermsAccepted',\r\n SSORedirect = 'SSORedirect',\r\n IsSessionExpired = 'isSessionExpired',\r\n SSOReferrer = 'SSOReferrer'\r\n}\r\n/**\r\n * A helper class to perform operations against the query string parameters in the URL\r\n *\r\n * @param url\r\n * @param key\r\n * @param paramKey\r\n * @param paramValue\r\n * @param existingSearchParams\r\n * @param value\r\n */\r\nexport abstract class QueryStringHelper {\r\n /**\r\n * Gets a query string parameter given the parameter name\r\n *\r\n * @param {string} param The name of the parameter to get\r\n * @returns {string | null} A string representing the parameter value or null if the parameter doesn't exist\r\n */\r\n public static get = (param: string): string | null => {\r\n const { search } = window.location;\r\n const urlParams = new URLSearchParams(search);\r\n\r\n return urlParams.get(param);\r\n };\r\n\r\n /**\r\n * Generates a new querystring based on existing search params and newly changed params\r\n *\r\n * @param {URLSearchParams} existingSearchParams URLSearchParams Existing UrlSearchParams of the url\r\n * @param {string} paramKey string Querystring parameter key that changed\r\n * @param {string} paramValue string Querystring parameter value that changed\r\n * @returns {string | null} A string representing the new queystring part of the url or null if the parameters dont exist\r\n */\r\n public static generateNewQueryString = (existingSearchParams: URLSearchParams, paramKey: string, paramValue: string[]): string => {\r\n const newQueryStringmap = new Map();\r\n if (existingSearchParams.has(paramKey)) existingSearchParams.delete(paramKey);\r\n let searchQuery = '';\r\n const searchQueryKey = 'q';\r\n const allQueryParamsMap = new Map();\r\n if (existingSearchParams.has('q')) {\r\n searchQuery = existingSearchParams.get('q') ?? '';\r\n }\r\n\r\n for (const [key, val] of existingSearchParams.entries()) {\r\n if (key !== searchQueryKey && key !== paramKey) allQueryParamsMap.set(key, val);\r\n }\r\n paramValue = paramValue.sort();\r\n if (paramValue.length > 0) {\r\n switch (paramKey) {\r\n case QueryStringParam.SelectedAvailability:\r\n newQueryStringmap.set(QueryStringParam.SelectedAvailability, paramValue.toString());\r\n break;\r\n case QueryStringParam.SelectedLanguages:\r\n newQueryStringmap.set(QueryStringParam.SelectedLanguages, paramValue.toString());\r\n break;\r\n case QueryStringParam.SelectedModalities:\r\n newQueryStringmap.set(QueryStringParam.SelectedModalities, paramValue.toString());\r\n break;\r\n case QueryStringParam.SelectedRoles:\r\n newQueryStringmap.set(QueryStringParam.SelectedRoles, paramValue.toString());\r\n break;\r\n case QueryStringParam.SelectedLearningOPtion:\r\n newQueryStringmap.set(QueryStringParam.SelectedLearningOPtion, paramValue.toString());\r\n break;\r\n case QueryStringParam.SelectedTimezones:\r\n newQueryStringmap.set(QueryStringParam.SelectedTimezones, paramValue.toString());\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (newQueryStringmap.size === 1) allQueryParamsMap.set(paramKey, newQueryStringmap.get(paramKey) ?? '');\r\n const sortedAscQueryParamsMap = new Map([...allQueryParamsMap].sort());\r\n const newURLSearchParams = new URLSearchParams([[searchQueryKey, searchQuery]]);\r\n for (const [key, value] of sortedAscQueryParamsMap) {\r\n newURLSearchParams.append(key, value);\r\n }\r\n return newURLSearchParams.toString();\r\n };\r\n}\r\n","const { hmacsign } = require('oauth-sign');\r\n\r\nexport function GetHmacSign(httpMethod, base_uri, params, consumer_secret) {\r\n const signature = hmacsign(httpMethod, base_uri, params, consumer_secret);\r\n return signature;\r\n}\r\n","import { ai } from '../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\n\r\nexport const getVisitLog = (message: string, pageName: string, emailAddress?: string, learnerId?: string) => {\r\n const date = new Date();\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: message + pageName,\r\n properties: {\r\n emailAddress: emailAddress,\r\n learnerId: learnerId,\r\n dateOfVisit: date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear(),\r\n timeOfVisit: date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds()\r\n }\r\n });\r\n }\r\n};\r\n","module.exports = __webpack_public_path__ + \"static/media/Main_OneDayMSIconNav.836d6a7c.svg\";","import { IAccountUnlinkRequest, ILinkedAccount, IUnlinkedAccountResult } from '../../../models';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const GetLinkedAccountsActions = new EndpointActions('GetLinkedAccounts');\r\nexport const LinkAccountActions = new EndpointActions('LinkAccount');\r\nexport const UnlinkAccountActions = new EndpointActions('UnlinkAccount');\r\n","import { put, takeLeading } from 'redux-saga/effects';\r\n\r\nimport { IAccountUnlinkRequest, ILinkedAccount, IUnlinkedAccountResult } from '../../../models';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport { GetLinkedAccountsActions, LinkAccountActions, UnlinkAccountActions } from './actions';\r\n\r\n/**\r\n * Custom EndpointSaga class for Account Linking which overrides the success hook\r\n * to request the user's linked accounts after successfully linking a new account\r\n *\r\n * @augments {EndpointSaga}\r\n */\r\nclass LinkAccountEndpointSaga extends EndpointSaga {\r\n /** Fetches the users linked accounts after successfully linking a new account */\r\n protected *onSuccessExecuted(): IterableIterator {\r\n yield put(GetLinkedAccountsActions.Execute());\r\n }\r\n}\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n LinkAccountsSaga: new LinkAccountEndpointSaga(LinkAccountActions, Api.LINK_ACCOUNTS, takeLeading),\r\n UnlinkAccountsSaga: new EndpointSaga(\r\n UnlinkAccountActions,\r\n Api.UNLINK_ACCOUNTS,\r\n takeLeading\r\n ),\r\n GetLinkedAccountsSaga: new EndpointSaga(GetLinkedAccountsActions, Api.GET_LINKED_ACCOUNTS, takeLeading)\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { ICustomErrorMessage, ILinkedAccount } from '../../../models';\r\nimport { ErrorMessageMapper } from '../../../utilities';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport { GetLinkedAccountsActions, UnlinkAccountActions, LinkAccountActions } from './actions';\r\nimport { sagas } from './sagas';\r\n\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'AccountLinkingStore';\r\n\r\nexport interface IAccountLinkingState extends IEndpointState {\r\n /** The user's linked accounts state */\r\n readonly linkedAccounts: ILinkedAccount[];\r\n readonly customErrorMessage: ICustomErrorMessage | null;\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = IAccountLinkingState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialAccountLinkingState: IState = new EndpointStateFactory().getInitialState({\r\n linkedAccounts: [],\r\n customErrorMessage: null\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial account linking state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialAccountLinkingState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetLinkedAccountsActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n linkedAccounts: action.payload\r\n };\r\n case GetLinkedAccountsActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case LinkAccountActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n case UnlinkAccountActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n linkedAccounts: action.payload.linkedAccounts\r\n };\r\n case UnlinkAccountActions.ActionTypes.ExecuteError:\r\n return {\r\n ...state,\r\n isError: true,\r\n customErrorMessage: ErrorMessageMapper.GET_ERROR(action.meta)\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const AccountLinkingStore = new EndpointStore(storeName, initialAccountLinkingState, reducer, sagas, [\r\n GetLinkedAccountsActions,\r\n UnlinkAccountActions\r\n]);\r\n","import { useLocation, useHistory } from 'react-router-dom';\r\nimport React, { useEffect } from 'react';\r\nimport { shallowEqual, useSelector, useDispatch } from 'react-redux';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\n\r\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser';\r\nimport { IApplicationState } from '../../store';\r\nimport { disableTPID, QueryStringParam } from '../../utilities';\r\nimport { ICustomErrorMessage, RouteErrorState, RouteEmailState, IUserSSOLinkedAccount } from '../../models/';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { GetProfileActions, GetSSOLinkedAccountsActions } from '../../store/stores/user/actions';\r\nimport ApplicationLoadingSpinner from '../ApplicationLoadingSpinner/ApplicationLoadingSpinner';\r\nimport { EmailVerificationActions } from '../../store/stores/user';\r\nimport { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport { GetFeatureFlagAction } from '../../store/stores/featureFlag';\r\nimport { NOT_LINKED_ACCOUNT_ERROR } from '../../pages/Preference/constants';\r\nimport { locales } from '../../locales';\r\nimport { useLocale } from '../LocalizationProvider/LocalizationProvider';\r\nimport { trackSSOSignIn } from '../ApplicationInsightsProvider/SSOTelemetryService';\r\n\r\nexport enum SSOStatus {\r\n Pending = 'pending',\r\n Success = 'success',\r\n Failed = 'failed',\r\n Skipped = 'skipped'\r\n}\r\n\r\nexport enum SSOFailureReason {\r\n SafelistedWithNoLinkedAccounts = 'safelisted-with-no-linked-account',\r\n EligibleWithNoLinkedAccounts = 'eligible-with-no-linked-account',\r\n NoLinkedAccounts = 'no-linked-accounts',\r\n OneLinkedAccount = 'one-linked-account',\r\n MultipleLinkedAccounts = 'multiple-linked-accounts'\r\n}\r\n\r\ntype SSOState = {\r\n status: SSOStatus;\r\n failureReason?: SSOFailureReason;\r\n linkedAccount?: string;\r\n email?: string;\r\n};\r\n\r\nconst useReferrerLocalization = () => {\r\n const { setLocale, locale } = useLocale();\r\n useEffect(() => {\r\n const referrer = sessionStorage.getItem(QueryStringParam.SSOReferrer);\r\n if (!referrer) {\r\n return;\r\n }\r\n const referrerPath = new URL(referrer).pathname;\r\n const extractedLocale = referrerPath.split('/')[1] as string | undefined; // expected format: //\r\n const supportedLocale = locales.find(localeObject => localeObject.locale.toLowerCase() === extractedLocale && localeObject.visible);\r\n const newLocale = supportedLocale?.locale;\r\n if (newLocale && newLocale !== locale) {\r\n localStorage.setItem('initLocale', newLocale);\r\n setLocale(newLocale);\r\n sessionStorage.setItem('locale', newLocale);\r\n sessionStorage.removeItem(QueryStringParam.SSOReferrer);\r\n }\r\n }, [locale, setLocale]);\r\n};\r\n\r\nconst useRedirect = (ssoState: SSOState) => {\r\n const history = useHistory();\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n if (ssoState.status !== SSOStatus.Pending) {\r\n //on finished SSO, the user's session should be reset\r\n localStorage.setItem(QueryStringParam.IsSessionExpired, 'no');\r\n }\r\n\r\n if (ssoState.status === SSOStatus.Failed) {\r\n switch (ssoState.failureReason) {\r\n case SSOFailureReason.SafelistedWithNoLinkedAccounts:\r\n //clear any existing errors / login info before traveling to the page\r\n dispatch(EmailVerificationActions.Clear(false));\r\n dispatch(GetProfileActions.Clear());\r\n sessionStorage.clear();\r\n history.push('/emailvalidation/', {\r\n emailAddress: ssoState.email\r\n } as RouteEmailState);\r\n break;\r\n case SSOFailureReason.EligibleWithNoLinkedAccounts:\r\n dispatch(EmailVerificationActions.Clear(false));\r\n sessionStorage.setItem(QueryStringParam.WorkEmailAddress, ssoState.email ?? '');\r\n history.push('/AadLogin/');\r\n break;\r\n default:\r\n const friendlyError: ICustomErrorMessage = {\r\n richDescription: { ssoFailureReason: ssoState.failureReason, linkedAccount: ssoState.linkedAccount },\r\n method: 'UseEffect-SSOCompleteTemplate',\r\n page: 'SSOProvider'\r\n };\r\n history.push('/about/', {\r\n error: friendlyError,\r\n showLoginButton: true\r\n } as RouteErrorState);\r\n }\r\n } else if (ssoState.status === SSOStatus.Success) {\r\n const search = new URLSearchParams(location.search);\r\n search.delete('sso');\r\n search.delete('context');\r\n search.delete('source');\r\n sessionStorage.setItem(\r\n QueryStringParam.SSORedirect,\r\n JSON.stringify({\r\n pathname: location.pathname,\r\n search: `?${search.toString()}`\r\n })\r\n );\r\n history.push('/AadLogin/');\r\n }\r\n }, [ssoState, history, location.pathname, location.search, dispatch]);\r\n};\r\n\r\nexport const SSOProvider: React.FC = ({ children }) => {\r\n const [getFeatureFlag] = useEndpointActions([GetFeatureFlagAction]);\r\n const [featureFlags] = useSelector((state: IApplicationState) => [state.FeatureFlagStore?.featureFlags], shallowEqual);\r\n\r\n const { disableLxpSSO } = FeatureFlagValues();\r\n\r\n useEffect(() => {\r\n if (featureFlags.length === 0) {\r\n getFeatureFlag();\r\n }\r\n }, [getFeatureFlag, featureFlags.length]);\r\n\r\n useEffect(() => {\r\n if (featureFlags.length > 0) {\r\n const disableTpd = featureFlags?.filter(d => d?.flagName === disableTPID)?.map(m => m?.isEnabledFlag)[0];\r\n if (disableTpd != undefined && disableTpd) {\r\n if (\r\n process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL != null &&\r\n process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL + '/api/' != localStorage.getItem('apiVersionUrl')\r\n ) {\r\n localStorage.setItem('apiVersionUrl', process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL + '/api/');\r\n }\r\n }\r\n }\r\n }, [featureFlags, featureFlags.length]);\r\n\r\n switch (disableLxpSSO) {\r\n case null:\r\n return ;\r\n case true:\r\n return <>{children};\r\n default:\r\n return {children};\r\n }\r\n};\r\n\r\nconst SSOProviderImpl: React.FC = ({ children }) => {\r\n const location = useLocation();\r\n const user = useAuthenticatedUser();\r\n const [ssoState, setSSOState] = React.useState({ status: SSOStatus.Pending });\r\n const [profileLoaded, profileLoading, profileExists, linkedAccounts, customError, isIncomingSSOError, responseStatus] = useSelector(\r\n (state: IApplicationState) => [\r\n state.UserStore.isFetched,\r\n state.UserStore.isFetching,\r\n state.UserStore.isProfileExists,\r\n state.UserStore.ssoprofile.linkedAccounts,\r\n state.UserStore.customErrorMessage,\r\n state.UserStore.isIncomingSSOError,\r\n state.UserStore.response?.status\r\n ],\r\n shallowEqual\r\n ) as [boolean, boolean, boolean | null, IUserSSOLinkedAccount[] | null, ICustomErrorMessage | null, boolean, number | null];\r\n const [getProfile, getLinkedAccounts] = useEndpointActions([GetProfileActions, GetSSOLinkedAccountsActions]);\r\n const params = new URLSearchParams(location.search);\r\n const hasSSOQueryParams = (params.has('context') && params.get('context') === 'sso') || params.has('sso');\r\n const userHasNoProfile = responseStatus === 404;\r\n\r\n useReferrerLocalization();\r\n useRedirect(ssoState);\r\n\r\n useEffect(() => {\r\n if (ssoState.status !== SSOStatus.Pending && ssoState.status !== SSOStatus.Skipped) {\r\n const source = new URLSearchParams(location.search).get('source') ?? 'invalid';\r\n trackSSOSignIn(source, ssoState.status, ssoState.failureReason);\r\n }\r\n }, [hasSSOQueryParams, location.search, ssoState]);\r\n\r\n useEffect(() => {\r\n const linkedAccountsLoaded = isIncomingSSOError || linkedAccounts != null;\r\n if (user != null && !profileLoaded && !profileLoading && hasSSOQueryParams && linkedAccountsLoaded) {\r\n const workEmail = linkedAccounts?.find(account => account.email === user.username)?.workEmail ?? user.username;\r\n getProfile(workEmail);\r\n }\r\n }, [getProfile, hasSSOQueryParams, isIncomingSSOError, linkedAccounts, profileLoaded, profileLoading, user]);\r\n\r\n useEffect(() => {\r\n if (user != null && linkedAccounts === null && !isIncomingSSOError && hasSSOQueryParams) {\r\n getLinkedAccounts({ oid: user?.oid, tid: user?.tid });\r\n }\r\n }, [getLinkedAccounts, linkedAccounts, user, isIncomingSSOError, hasSSOQueryParams]);\r\n\r\n useEffect(() => {\r\n if (ai.appInsights && isIncomingSSOError) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: 'Error while processing incoming SSO request',\r\n method: 'UseEffect-SSOProvider',\r\n page: 'SSOProvider'\r\n };\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { isIncomingSSOError, friendlyError, customError }\r\n });\r\n }\r\n }, [customError, isIncomingSSOError]);\r\n\r\n useEffect(() => {\r\n if (ssoState.status !== SSOStatus.Pending) {\r\n return;\r\n }\r\n const searchParams = new URLSearchParams(location.search);\r\n if (searchParams.has('context') && searchParams.get('context') === 'sso') {\r\n if (profileExists) {\r\n setSSOState({ status: SSOStatus.Success });\r\n } else if (profileExists === false && linkedAccounts !== null) {\r\n switch (linkedAccounts.length) {\r\n case 0:\r\n if (userHasNoProfile) {\r\n setSSOState({\r\n status: SSOStatus.Failed,\r\n failureReason: SSOFailureReason.EligibleWithNoLinkedAccounts,\r\n email: user?.username\r\n });\r\n // this custom behavior is exclusively for AAD profiles backed by an MSA account\r\n } else if (customError?.errorCode === NOT_LINKED_ACCOUNT_ERROR) {\r\n setSSOState({\r\n status: SSOStatus.Failed,\r\n failureReason: SSOFailureReason.SafelistedWithNoLinkedAccounts,\r\n email: user?.username\r\n });\r\n } else {\r\n setSSOState({ status: SSOStatus.Failed, failureReason: SSOFailureReason.NoLinkedAccounts });\r\n }\r\n break;\r\n case 1:\r\n setSSOState({\r\n status: SSOStatus.Failed,\r\n failureReason: SSOFailureReason.OneLinkedAccount,\r\n linkedAccount: linkedAccounts[0].workEmail\r\n });\r\n break;\r\n default:\r\n setSSOState({ status: SSOStatus.Failed, failureReason: SSOFailureReason.MultipleLinkedAccounts });\r\n }\r\n } else if (isIncomingSSOError) {\r\n setSSOState({ status: SSOStatus.Skipped });\r\n }\r\n } else if (!searchParams.has('sso')) {\r\n setSSOState({ status: SSOStatus.Skipped });\r\n }\r\n }, [\r\n profileExists,\r\n location.search,\r\n linkedAccounts,\r\n ssoState.status,\r\n setSSOState,\r\n customError,\r\n user,\r\n isIncomingSSOError,\r\n userHasNoProfile\r\n ]);\r\n\r\n if (ssoState.status !== SSOStatus.Skipped) {\r\n return ;\r\n }\r\n\r\n return <>{children};\r\n};\r\n","import { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\n\r\nconst redirectEventName = 'SSOSignIn';\r\n\r\n/**\r\n * Tracks SSO sign in events\r\n *\r\n * @param {string} source The source the SSO is coming from\r\n * @param {string} result The type of resolution for the SSO\r\n * @param {string} failureReason The reason for the SSO failure if it has occurred\r\n */\r\nconst trackSSOSignIn = (source: string | undefined, result: string | undefined, failureReason: string | undefined) => {\r\n ai.appInsights!.trackEvent(\r\n {\r\n name: redirectEventName\r\n },\r\n {\r\n source,\r\n result,\r\n failureReason\r\n }\r\n );\r\n};\r\n\r\nexport { trackSSOSignIn };\r\n","export const isSigninDisableFlag = 'FeatureManagement:WelcomeSigninDisable';\r\nexport const isWelcomePageNofification = `Welcome_${localStorage.getItem('locale')}`;\r\nexport const isMaintenanceModeFlag = 'FeatureManagement:isMaintenanceMode';\r\nexport const isSearchFeatureEnabled = 'FeatureManagement:isSearchFeatureEnabled';\r\nexport const showNewTimezoneFlag = 'FeatureManagement:showNewTimezone';\r\nexport const disableSessionTimeout = 'FeatureManagement:disableSessionTimeout';\r\nexport const sessionTimeout = 30 * 60 * 1000;\r\nexport const sessionExpireCountdownTime = 30;\r\nexport const disableMultiRoleAndFiltersInUrl = 'FeatureManagement:disableMultiRoleAndFiltersInUrl';\r\nexport const hideULJPhase2Flag = 'FeatureManagement:disableUljPhase-2';\r\nexport const extraSearchODataFilters = 'FeatureManagement:extraSearchODataFilters';\r\nexport const hideBLSessionsFlag = 'FeatureManagement:hideBLSessions';\r\nexport const disableResendInvitationLink = 'FeatureManagement:disableResendInvitationLink';\r\nexport const disableBLTeamsJoinLink = 'FeatureManagement:disableBLTeamsJoinLink';\r\nexport const disableTermsAndConditions = 'FeatureManagement:disableTermsAndConditions';\r\nexport const disableProjectReadinessFlag = 'FeatureManagement:disableProjectReadiness';\r\nexport const disableFrenchEpicFlag = 'FeatureManagement:disableFrenchEpic';\r\nexport const disableGermanEpicFlag = 'FeatureManagement:disableGermanEpic';\r\nexport const disableTPID = 'FeatureManagement:disabletpid';\r\nexport const lxpTermsConditions = 'LxP - Terms and Conditions';\r\nexport const lxpProgramGuidelines = 'LXP - ESI Program Guidelines';\r\nexport const lxpTermsConditionsTitle = 'ESI Learning Opportunities Agreement';\r\nexport const lxpProgramGuidelinesTitle = 'ESI Program Guidelines';\r\nexport const disableMSLearnSSOForLandingPageAndNavs = 'FeatureManagement:disableMSLearnSSOForLandingPageAndNavs';\r\nexport const disableMSLearnSSOForCertificationPage = 'FeatureManagement:disableMSLearnSSOForCertificationPage';\r\nexport const disableMSLearnSSOForDeliveriesPage = 'FeatureManagement:disableMSLearnSSOForDeliveriesPage';\r\nexport const enableCopilotV2 = 'FeatureManagement:enableCopilotV2';\r\nexport const disableLxpSSOFlag = 'FeatureManagement:disableLxpSSO';\r\nexport const microsoftLearnLink = 'https://aka.ms/MicrosoftLearnOverview';\r\nexport const examZoneLink = 'https://aka.ms/ExamReadinessZoneOverview';\r\nexport const virtualTrainingLink = 'https://aka.ms/RegisterMicrosoftVirtualTrainingDays';\r\nexport const esiTrainingLink = 'https://aka.ms/ESITrainingJourneysOverview';\r\nexport const profileLxpLink = 'https://aka.ms/ProfileCreationLxP';\r\nexport const esiSupportLink = 'https://aka.ms/ESISupportOverview';\r\nexport const esiSupcaseLink = 'https://aka.ms/ESISupportCaseOverview';\r\nexport const disableELAUnAuthFlowFlag = 'FeatureManagement:disableELAUnAuthFlowFlag';\r\nexport const toolTipClose = 'Learning Assistant';\r\n","import { ILearningPathItem } from '../models';\r\n\r\ninterface ILearningPathItemTypeDictionary {\r\n /** The title of the learning modality */\r\n modalityLabel: string;\r\n\r\n /** The name of the icon to use */\r\n iconName: string;\r\n\r\n /** The label text for the action button */\r\n actionLabel: string;\r\n\r\n /** The color that represents the modality type */\r\n color: string;\r\n}\r\n\r\n/**\r\n * The ContentType enum represents the types of configurable content to be displayed in a\r\n * learning path item template\r\n */\r\nexport enum LearningPathContentType {\r\n ModalityLabel = 'modalityLabel',\r\n IconName = 'iconName',\r\n ActionLabel = 'actionLabel',\r\n Color = 'color'\r\n}\r\n\r\n/** A class to resolve configurable content for a Learning Path Item */\r\nexport abstract class LearningPathContent {\r\n /**\r\n * The learning path types.\r\n * Note: These should be lowercased since the methods below convert\r\n * the event type to a lower-cased string.\r\n */\r\n private static readonly _learningPathItemContent: { [key: string]: ILearningPathItemTypeDictionary } = {\r\n ilt: {\r\n modalityLabel: 'Instructor-Led',\r\n iconName: 'Group',\r\n actionLabel: 'Register',\r\n color: '#8661C5'\r\n },\r\n 'self-paced': {\r\n modalityLabel: 'Online, Self-Paced',\r\n iconName: 'PublishCourse',\r\n actionLabel: 'Launch',\r\n color: '#008575'\r\n },\r\n workshop: {\r\n modalityLabel: 'Facilitated Workshop',\r\n iconName: 'Event',\r\n actionLabel: 'Register',\r\n color: '#FFB900'\r\n },\r\n hackathon: {\r\n modalityLabel: 'Hackathon',\r\n iconName: 'Event',\r\n actionLabel: 'Register',\r\n color: '#FFB900'\r\n },\r\n default: {\r\n modalityLabel: 'Learning Content',\r\n iconName: 'PublishCourse',\r\n actionLabel: 'Register',\r\n color: '#8661C5'\r\n }\r\n };\r\n\r\n /**\r\n * Resolves the learning path content for a particular item by mapping an event type\r\n * and the type of content to the content itself\r\n *\r\n * @param {string} eventType The learning path item event type\r\n * @param {LearningPathContentType} contentType The type of content to be resolved\r\n * @returns {string} The content mapped to the modality and content type\r\n */\r\n public static RESOLVE(eventType: string, contentType: LearningPathContentType): string {\r\n if (!eventType) {\r\n return this._learningPathItemContent.default[contentType];\r\n }\r\n\r\n eventType = eventType.toLowerCase();\r\n const itemMeta = this._learningPathItemContent[eventType];\r\n\r\n if (!itemMeta) {\r\n return this._learningPathItemContent.default[contentType];\r\n }\r\n\r\n return itemMeta[contentType];\r\n }\r\n\r\n /**\r\n * Given a list of learning path content items, produce a CSS linear gradient with the proper modality theme colors\r\n *\r\n * @param {ILearningPathItem[]} items The array of items the gradient should represent\r\n * @returns {string} The string gradient value that can be set to a CSS property such as \"border-image\"\r\n */\r\n public static GET_BORDER_IMAGE_VALUE(items: ILearningPathItem[]): string {\r\n if (items.length === 0) {\r\n return 'none';\r\n }\r\n\r\n const uniqueModalities = [...new Set(items.map((item: ILearningPathItem) => item.modality))];\r\n const colors: string[] = uniqueModalities.map((modality: string) =>\r\n LearningPathContent.RESOLVE(modality, LearningPathContentType.Color)\r\n );\r\n const itemWidth = 80 / colors.length;\r\n let gradientValue = '';\r\n\r\n for (const [idx, color] of colors.entries()) {\r\n if (idx === 0) {\r\n gradientValue = `${color} ${itemWidth}px`;\r\n } else {\r\n gradientValue += `, ${color} ${itemWidth * idx}px, ${color} ${itemWidth * (idx + 1)}px`;\r\n }\r\n }\r\n\r\n return `linear-gradient(to right, ${gradientValue}, transparent ${itemWidth * uniqueModalities.length}px, transparent 100%) 1`;\r\n }\r\n}\r\n","export const isIE = () => {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.includes('MSIE ');\r\n const msie11 = ua.includes('Trident/');\r\n const isEdge = ua.includes('Edge/');\r\n\r\n return msie || msie11 || isEdge;\r\n};\r\n","import { useIntl } from 'react-intl';\r\n\r\nimport { ICustomErrorMessage, IRequestResponse } from '../models';\r\nimport { ai } from '../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\n\r\nexport class ErrorMessageMapper {\r\n /**\r\n * Takes a request reponse and determines the best friendly message to show the user.\r\n *\r\n * @param response The error response from the service\r\n */\r\n public static GET_ERROR(response?: IRequestResponse): ICustomErrorMessage {\r\n const defaultMsg = 'An unexpected error occured with your profile.';\r\n let errorPayload: ICustomErrorMessage = {\r\n description: defaultMsg\r\n };\r\n if (response) {\r\n const method = response.config.method;\r\n errorPayload = response.data || errorPayload;\r\n errorPayload.errorCode = response.data.customError;\r\n errorPayload.method = method;\r\n errorPayload.description = response.data.description;\r\n }\r\n\r\n return errorPayload;\r\n }\r\n\r\n /**\r\n * Track in App Insights a service response error that is not yet mapped to a friendly message.\r\n *\r\n * @param response The response from the service\r\n * @param errorCode The custom error code recieved from the service if one was provided\r\n */\r\n private static TRACK_UNKNOWN_ERROR(errorCode?: string): void {\r\n if (ai.appInsights) {\r\n const code = errorCode || 'no code provided';\r\n const exception = new Error(`A user encountered an error which had no friendly description (${code}).`);\r\n exception.name = 'Unknown Error Message';\r\n ai.appInsights.trackException({ exception });\r\n } else {\r\n throw new Error(\r\n 'Unable to track unknown error. Application Insights has not been initialized. Application Insights can only be utilized in children of the ApplicationInsightsProvider component'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n * Get the localization string and localization id based on error code from service.\r\n * @param responseErrorCode The response error code from the service\r\n */\r\n public static LOCALIZATION_ERRORDESCRIPTION(responseErrorCode?: string, responseDescription?: string): [any?, any?] {\r\n const intl = useIntl();\r\n let localizeStringForError = null;\r\n switch (responseErrorCode) {\r\n case 'ERR-102':\r\n localizeStringForError = `${responseDescription} You may also try to clear your browser cache and cookies, close and then start a new browser session to see if this helps.`;\r\n break;\r\n case 'ERR-103':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-105':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-111':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-200':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'No email provided'\r\n });\r\n break;\r\n case 'ERR-201':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'No verification code provided'\r\n });\r\n break;\r\n case 'ERR-240':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Learning Partners not found'\r\n });\r\n break;\r\n case 'ERR-241':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Delivery Classes Catalog not found'\r\n });\r\n break;\r\n case 'ERR-242':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Delivery Details not found'\r\n });\r\n break;\r\n case 'ERR-300':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'No id provided'\r\n });\r\n break;\r\n case 'ERR-301':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Delivery Learner Registration cancellation Status Service Call failure'\r\n });\r\n break;\r\n case 'ERR-331':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Certificate was not found'\r\n });\r\n break;\r\n case 'ERR-330':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Enrollment was not found'\r\n });\r\n break;\r\n case 'ERR-340':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Learning Path not found'\r\n });\r\n break;\r\n case 'ERR-104':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage:\r\n 'Invalid Login email specified: Its looks like you have used wrong email to sign in to LxP. Please enter the correct email and try again'\r\n });\r\n break;\r\n case 'ERR-520':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Account linking service failed'\r\n });\r\n break;\r\n case 'ERR-540':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'No learner info'\r\n });\r\n break;\r\n case 'ERR-552':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Event id or Attendees details unavailable'\r\n });\r\n break;\r\n case 'ERR-553':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Requested Event Registration Details not found'\r\n });\r\n break;\r\n case 'ERR-554':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Delivery Learner Registration cancellation Status Service Call failure'\r\n });\r\n break;\r\n case 'ERR-555':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Delivery Learner Event Registration Status Service Call failure'\r\n });\r\n break;\r\n case 'ERR-556':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-557':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-558':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-622':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: 'Certification Failure'\r\n });\r\n break;\r\n case 'ERR-101':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-543':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: `The verification code entered is incorrect. Please try again`\r\n });\r\n break;\r\n case 'ERR-521':\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: `It looks like you have exceeded the maximum number of linked accounts. To sign in to the Learner Experience Portal, select Sign out and then try using one of the accounts that you previously linked`\r\n });\r\n break;\r\n case 'ERR-565':\r\n localizeStringForError = responseDescription;\r\n break;\r\n case 'ERR-566':\r\n localizeStringForError = responseDescription;\r\n break;\r\n default:\r\n localizeStringForError = intl.formatMessage({\r\n defaultMessage: `Unknown Error. Please try signing out and signing back into LxP.\r\n You may also try to clear your browser cache and cookies, close\r\n and then start a new browser session to see if this helps.`\r\n });\r\n ErrorMessageMapper.TRACK_UNKNOWN_ERROR(responseErrorCode);\r\n break;\r\n }\r\n return [localizeStringForError];\r\n }\r\n}\r\n","interface IMSclassesItemTypeDictionary {\r\n /** The title of the learning modality */\r\n modalityLabel: string;\r\n\r\n /** The name of the icon to use */\r\n iconName: string;\r\n\r\n /** The label text for the action button */\r\n actionLabel: string;\r\n\r\n /** The color that represents the modality type */\r\n color: string;\r\n\r\n /** The color for the text of the modality type */\r\n textColor: string;\r\n}\r\n\r\n/**\r\n * The ContentType enum represents the types of configurable content to be displayed in a\r\n * learning path item template\r\n */\r\nexport enum OneDayClassesContentType {\r\n ModalityLabel = 'modalityLabel',\r\n IconName = 'iconName',\r\n ActionLabel = 'actionLabel',\r\n Color = 'color',\r\n TextColor = 'textColor'\r\n}\r\n\r\n/** A class to resolve configurable content for a Learning Path Item */\r\nexport abstract class OneDayClassesContent {\r\n /**\r\n * The learning path types.\r\n * Note: These should be lowercased since the methods below convert\r\n * the event type to a lower-cased string.\r\n */\r\n private static readonly _MsclassesItemContent: { [key: string]: IMSclassesItemTypeDictionary } = {\r\n ilt: {\r\n modalityLabel: 'Instructor-Led',\r\n iconName: 'Group',\r\n actionLabel: 'Register',\r\n color: '#C73ECC',\r\n textColor: '#BD3AC1'\r\n },\r\n 'self-paced': {\r\n modalityLabel: 'Online, Self-Paced',\r\n iconName: 'PublishCourse',\r\n actionLabel: 'Register',\r\n color: '#008575',\r\n textColor: '#008575'\r\n },\r\n vilt: {\r\n modalityLabel: 'Online, Self-Paced',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#008575',\r\n textColor: '#008575'\r\n },\r\n workshop: {\r\n modalityLabel: 'Facilitated Workshop',\r\n iconName: 'Event',\r\n actionLabel: 'Register',\r\n color: '#FFB900',\r\n textColor: '#FFB900'\r\n },\r\n hackathon: {\r\n modalityLabel: 'Hackathon',\r\n iconName: 'Event',\r\n actionLabel: 'Register',\r\n color: '#FFB900',\r\n textColor: '#FFB900'\r\n },\r\n 'virtual training days': {\r\n modalityLabel: 'virtual training days',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#702573',\r\n textColor: '#702573'\r\n },\r\n 'advanced role based': {\r\n modalityLabel: 'advanced role based',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#C73ECC',\r\n textColor: '#BD3AC1'\r\n },\r\n 'game learning': {\r\n modalityLabel: 'game learning',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#9B0F62',\r\n textColor: '#9B0F62'\r\n },\r\n main_multidaymsclass: {\r\n modalityLabel: 'microsoft-delivered courses',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#C73ECC',\r\n textColor: '#BD3AC1'\r\n },\r\n 'exam prep': {\r\n modalityLabel: 'exam prep',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#ffb934',\r\n textColor: '#6A4B16'\r\n },\r\n main_deliveryonlymsclass: {\r\n modalityLabel: 'courses shared with you',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#0065B3',\r\n textColor: '#0065B3'\r\n },\r\n 'courses shared with you': {\r\n modalityLabel: 'courses shared with you',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#0065B3',\r\n textColor: '#0065B3'\r\n },\r\n 'delivery only': {\r\n modalityLabel: 'courses shared with you',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#0065B3',\r\n textColor: '#0065B3'\r\n },\r\n main_onedaymsclass: {\r\n modalityLabel: 'microsoft training days',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#008575',\r\n textColor: '#008575'\r\n },\r\n 'microsoft learn cloud games': {\r\n modalityLabel: 'microsoft learn cloud games',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#9B0F62',\r\n textColor: '#9B0F62'\r\n },\r\n default: {\r\n modalityLabel: 'Learning Content',\r\n iconName: 'NavigateExternalInline',\r\n actionLabel: 'Register',\r\n color: '#C73ECC',\r\n textColor: '#BD3AC1'\r\n }\r\n };\r\n\r\n /**\r\n * Resolves the learning path content for a particular item by mapping an event type\r\n * and the type of content to the content itself\r\n *\r\n * @param {string} eventType The learning path item event type\r\n * @param {OneDayClassesContentType} contentType The type of content to be resolved\r\n * @returns {string} The content mapped to the modality and content type\r\n */\r\n public static RESOLVE(eventType: string, contentType: OneDayClassesContentType): string {\r\n if (!eventType) {\r\n return this._MsclassesItemContent.default[contentType];\r\n }\r\n\r\n eventType = eventType.toLowerCase();\r\n const itemMeta = this._MsclassesItemContent[eventType];\r\n\r\n if (!itemMeta) {\r\n return this._MsclassesItemContent.default[contentType];\r\n }\r\n\r\n return itemMeta[contentType];\r\n }\r\n\r\n /**\r\n * Given a list of learning path content items, produce a CSS linear gradient with the proper modality theme colors\r\n *\r\n * @param {string} modality The array of items the gradient should represent\r\n * @returns {string} The string gradient value that can be set to a CSS property such as \"border-image\"\r\n */\r\n public static GET_BORDER_IMAGE_VALUE(modality: string): string {\r\n if (modality.length === 0) {\r\n return 'none';\r\n }\r\n if (modality === 'findmore') {\r\n return OneDayClassesContent.GET_BORDER_IMAGE_VALUE_FINDMORE(modality);\r\n }\r\n if (modality === 'microsoft learn cloud games') {\r\n return OneDayClassesContent.GET_BORDER_IMAGE_VALUE_GAMES(modality);\r\n }\r\n if (modality === 'getcertification') {\r\n return OneDayClassesContent.GET_BORDER_IMAGE_VALUE_CERTIFICATE(modality);\r\n } else {\r\n const color = OneDayClassesContent.RESOLVE(modality, OneDayClassesContentType.Color);\r\n let borderTopColorValue = '';\r\n borderTopColorValue = `${color}`;\r\n return `${borderTopColorValue}`;\r\n }\r\n }\r\n /**\r\n * Given a list of learning path content items, produce a CSS linear gradient with the proper modality theme colors\r\n *\r\n * @param {string} modality The array of items the gradient should represent\r\n * @returns {string} The string gradient value that can be set to a CSS property such as \"border-image\"\r\n */\r\n public static GET_BORDER_IMAGE_VALUE_FINDMORE(modality: string): string {\r\n if (!modality.length) {\r\n return 'none';\r\n }\r\n\r\n let borderTopColorValue = '';\r\n borderTopColorValue = `${'#000000'}`;\r\n return `${borderTopColorValue}`;\r\n }\r\n\r\n /**\r\n * Given a list of learning path content items, produce a CSS linear gradient with the proper modality theme colors\r\n *\r\n * @param {string} modality The array of items the gradient should represent\r\n * @returns {string} The string gradient value that can be set to a CSS property such as \"border-image\"\r\n */\r\n public static GET_BORDER_IMAGE_VALUE_GAMES(modality: string): string {\r\n if (!modality.length) {\r\n return 'none';\r\n }\r\n\r\n let borderTopColorValue = '';\r\n borderTopColorValue = `${'#9B0F62'}`;\r\n return `${borderTopColorValue}`;\r\n }\r\n /**\r\n * Given a list of learning path content items, produce a CSS linear gradient with the proper modality theme colors\r\n *\r\n * @param {string} modality The array of items the gradient should represent\r\n * @returns {string} The string gradient value that can be set to a CSS property such as \"border-image\"\r\n */\r\n public static GET_BORDER_IMAGE_VALUE_CERTIFICATE(modality: string): string {\r\n if (modality.length === 0) {\r\n return 'none';\r\n }\r\n\r\n let borderTopColorValue = '';\r\n borderTopColorValue = `${'#0078D7'}`;\r\n return `${borderTopColorValue}`;\r\n }\r\n}\r\n","import { IServiceConfiguration } from './';\r\n\r\n/** Interface to enforce the contract for what is required to construct an endpoint path */\r\nexport interface IEndpointConfiguration {\r\n /** The configurations for the service */\r\n service: IServiceConfiguration;\r\n\r\n /** The path of the endpoint relative to the service */\r\n endpoint: string;\r\n}\r\n\r\n/** Responsible for owning endpoint path configurations and constructing the path Url */\r\nexport class EndpointConfiguration {\r\n /** The configuration values of the endpoint */\r\n public readonly config: IEndpointConfiguration;\r\n\r\n constructor(config: IEndpointConfiguration) {\r\n this.config = config;\r\n }\r\n\r\n /** Constructs a full url to the endpoint using the confiugration values provided when the class was created */\r\n public getEndpointUrl = () => {\r\n const { endpoint, service } = this.config;\r\n return `${service.base + endpoint}`;\r\n };\r\n}\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { EndpointActions, EndpointActionSuffix } from './EndpointActions';\r\nimport { IEndpointState } from './EndpointState';\r\n\r\n/**\r\n * An apparatus that provides a base reducer and state to automatically augment the current store's state\r\n * with common flags related to an Api endpoint's behaviors (ex: loading, errors, etc)\r\n */\r\nexport class EndpointReductor {\r\n /** Represents the initial state for all data in the slice */\r\n private readonly _initialState: State;\r\n\r\n /** A list of endpoint action names to filter on */\r\n private readonly _endpointActionNames: string[];\r\n\r\n /**\r\n * @class\r\n * @param initialState The initial state for this slice of the store\r\n * @param endpointActions A list of endpoint actions tht should be intercepted. All others endpoints will be ignored.\r\n */\r\n constructor(initialState: State, endpointActions: Array>) {\r\n this._initialState = initialState;\r\n this._endpointActionNames = endpointActions.map((actions: EndpointActions) => actions.name);\r\n }\r\n\r\n /**\r\n * The base reducer to process the state\r\n *\r\n * @param state - Initial state\r\n * @param action - Action to process the state\r\n */\r\n public reduce: Reducer = (state: State = this._initialState, action: AnyAction): State => {\r\n const [name, suffix] = this.getEndpointActionNameParts(action);\r\n\r\n if (name && this._endpointActionNames.includes(name)) {\r\n switch (suffix) {\r\n case EndpointActionSuffix.Execute:\r\n return {\r\n ...state,\r\n isFetching: true\r\n } as State;\r\n case EndpointActionSuffix.ExecuteSuccess:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n isFetched: true,\r\n isError: false,\r\n response: action.meta\r\n } as State;\r\n case EndpointActionSuffix.ExecuteError:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n // TODO: The isFetched should be set to false, but the app logic should be updated to handle the differentiation\r\n // between isFetched and isError\r\n isFetched: true,\r\n isError: true,\r\n response: action.meta,\r\n errorMessage: action.payload\r\n } as State;\r\n case EndpointActionSuffix.Clear:\r\n return {\r\n ...this._initialState\r\n };\r\n default:\r\n return state;\r\n }\r\n } else {\r\n return state;\r\n }\r\n };\r\n\r\n /**\r\n * Gets the name of the EndpointAction, and the action suffix given the action itself.\r\n * Ex: GetProfile/ExecuteError => [GetProfile, /ExecuteError]\r\n *\r\n * @param {AnyAction} action The action to determine the name and suffix\r\n * @returns {string | null} The suffix if it is valid, otherwise null\r\n */\r\n private getEndpointActionNameParts = (action: AnyAction): [string | null, string | null] => {\r\n const { type } = action;\r\n\r\n if (type && isNaN(Number(type))) {\r\n const typeValue = type as string;\r\n\r\n const suffixes = Object.values(EndpointActionSuffix);\r\n for (const suffix of suffixes) {\r\n if (suffix && typeValue.endsWith(suffix)) {\r\n const name = type.replace(suffix, '');\r\n return [name, suffix];\r\n }\r\n }\r\n }\r\n\r\n return [null, null];\r\n };\r\n}\r\n","// eslint-disable-next-line import/no-unresolved\r\nimport { ActionMatchingPattern } from '@redux-saga/types';\r\n\r\nimport { ActionPattern, call, ForkEffect, put } from 'redux-saga/effects';\r\n\r\nimport { IRequestResponse } from '../../models';\r\nimport { EndpointActions, IAction } from './EndpointActions';\r\n\r\ntype EffectCreator =

(pattern: P, worker: (action: ActionMatchingPattern

) => any) => ForkEffect;\r\ntype ApiFunction = (parameters: RequestBody) => Promise>;\r\ntype ApiFunctionWithoutRequestBody = () => Promise>;\r\n\r\nexport interface IEndpointSagaDictionary {\r\n [key: string]: EndpointSaga;\r\n}\r\n\r\n/**\r\n * A class that implements a default saga against an endpoint.\r\n * Pieces of the default behavior can be overriden by creating a new class and extending from this class.\r\n */\r\nexport class EndpointSaga {\r\n /** The endpoint actions the saga will act on */\r\n protected endpointActions: EndpointActions;\r\n\r\n /** The Api function that will be executed */\r\n private _apiFunction: Function;\r\n\r\n /** The effect creator to apply when watching for the endpoint actions to occur */\r\n private _effectCreator: EffectCreator;\r\n\r\n constructor(\r\n endpointActions: EndpointActions,\r\n apiFunction: ApiFunction,\r\n effectCreator: EffectCreator\r\n ) {\r\n this.endpointActions = endpointActions;\r\n this._apiFunction = apiFunction;\r\n this._effectCreator = effectCreator;\r\n\r\n // Generator functions have a context that is not bound to the 'this' keyword\r\n this.handleExecution = this.handleExecution.bind(this);\r\n this.watcher = this.watcher.bind(this);\r\n this.onSuccessExecuted = this.onSuccessExecuted.bind(this);\r\n this.onErrorExecuted = this.onErrorExecuted.bind(this);\r\n }\r\n\r\n /**\r\n * Determine how to watch the execution scenario\r\n */\r\n public *watcher() {\r\n yield this._effectCreator(this.endpointActions.ActionTypes.Execute, this.handleExecution);\r\n }\r\n\r\n /**\r\n * Default implementation of the saga to handle the Execution action workflow.\r\n *\r\n * @param action The action being evaluated\r\n */\r\n protected *handleExecution(action: IAction): IterableIterator {\r\n try {\r\n let response: IRequestResponse | any;\r\n if (action.payload) {\r\n const apiFunctionWithBody = this._apiFunction as ApiFunction;\r\n response = yield call(apiFunctionWithBody, action.payload);\r\n } else {\r\n const apiFunctionWithoutBody = this._apiFunction as ApiFunctionWithoutRequestBody;\r\n response = yield call(apiFunctionWithoutBody);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { config, data, ...responseMeta } = response;\r\n yield put(this.endpointActions.ExecuteSuccess(response.data, responseMeta));\r\n yield* this.onSuccessExecuted(action, response);\r\n } catch (err) {\r\n if (err.response) {\r\n // The request was made and the server responded with a\r\n // status code that falls out of the range of 2xx\r\n yield put(this.endpointActions.ExecuteError(err.stack!, err.response));\r\n yield* this.onErrorExecuted(action, err.stack!, err.response);\r\n } else {\r\n // Something happened in setting up the request and triggered an Error\r\n const unknownErrorMsg = 'An unknown error occured.';\r\n yield put(this.endpointActions.ExecuteError(unknownErrorMsg));\r\n yield* this.onErrorExecuted(action, unknownErrorMsg);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * A hook meant to be overridden by a subclass to extend the default behavior of the EndpointSaga.\r\n * This function is executed by the Saga after a ExecuteSuccess action has been dispatched.\r\n *\r\n * @param action The action that was successful\r\n * @param response The response from the Api method\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n protected *onSuccessExecuted(action: IAction, response: IRequestResponse): IterableIterator {\r\n // Left intentionally blank.\r\n // This hook should be overridden by a subclass to get custom behavior integrated with the default Saga\r\n }\r\n\r\n /**\r\n * A hook meant to be overridden by a subclass to extend the default behavior of the EndpointSaga.\r\n * This function is executed by the Saga after a ExecuteError action has been dispatched.\r\n *\r\n * @param action The action that was unsuccessful\r\n */\r\n /* eslint-disable @typescript-eslint/no-unused-vars */\r\n protected *onErrorExecuted(\r\n action: IAction,\r\n errorMessage: string,\r\n response?: IRequestResponse\r\n ): IterableIterator {\r\n // Left intentionally blank.\r\n // This hook should be overridden by a subclass to get custom behavior integrated with the default Saga\r\n }\r\n /* eslint-enable @typescript-eslint/no-unused-vars */\r\n}\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { EndpointActions, EndpointReductor, IEndpointSagaDictionary, IEndpointState, reducerRegistry, sagaRegistry } from './';\r\n\r\nexport interface IStore {\r\n /** Represents the initial state of the store that extends this class */\r\n readonly initialState: State;\r\n\r\n /** The sagas that handles the actions for the store */\r\n readonly sagas?: IEndpointSagaDictionary;\r\n\r\n /** The reducer responsible for handling state */\r\n reducer: Reducer;\r\n}\r\n\r\n/** Represents a contract for all stores that manage data from an endpoint */\r\nexport class EndpointStore implements IStore {\r\n /** A collection of all the names given to the instantiated classes, used for validation of name uniqueness */\r\n private static _namesList: string[] = [];\r\n\r\n /** Represents the initial state of the store that extends this class */\r\n public readonly initialState: State;\r\n\r\n /** The root saga that handles the actions for the store */\r\n public readonly sagas: IEndpointSagaDictionary;\r\n\r\n /**\r\n * The reductor will augment the state with useful flags (loading, errors, etc) commonly related to handling Api endpoints.\r\n * These defaults for each action type can be overriden in the reducer.\r\n */\r\n private _reductor: EndpointReductor | null;\r\n\r\n /** The reducer responsible for handling state */\r\n private readonly _reducer: Reducer;\r\n\r\n constructor(\r\n name: string,\r\n initialState: State,\r\n reducer: Reducer,\r\n sagas: IEndpointSagaDictionary,\r\n endpointActions?: Array>\r\n ) {\r\n if (!name) {\r\n throw Error('EndpointStore names must be a valid string.');\r\n }\r\n\r\n if (EndpointStore._namesList.includes(name)) {\r\n throw Error(`EndpointStore names must be unique. The name \"${name}\" already exists.`);\r\n } else {\r\n EndpointStore._namesList.push(name);\r\n }\r\n\r\n this.initialState = initialState;\r\n this._reducer = reducer;\r\n this.sagas = sagas;\r\n\r\n if (endpointActions && endpointActions.length) {\r\n this._reductor = new EndpointReductor(initialState, endpointActions);\r\n } else {\r\n this._reductor = null;\r\n }\r\n\r\n reducerRegistry.register(name, this.reducer);\r\n sagaRegistry.registerAnthology(name, this.sagas);\r\n }\r\n\r\n /**\r\n * A reducer that is chained with a base reducer to first process all actions through an endpoint reducer\r\n *\r\n * @param state - Initial state\r\n * @param action - The action\r\n */\r\n public reducer: Reducer = (state = this.initialState, action: AnyAction): State => {\r\n if (this._reductor) {\r\n state = this._reductor.reduce(state, action);\r\n }\r\n\r\n return this._reducer(state, action);\r\n };\r\n}\r\n","import { AnyAction, Reducer, ReducersMapObject } from 'redux';\r\n\r\n/**\r\n * A registry that allows you to dynamically add reducers and notify a listener\r\n */\r\nclass ReducerRegistry {\r\n /** A listener to notify when changes occur to the reducer list */\r\n private _emitChange: any;\r\n\r\n /** A map of all registered reducers */\r\n private _reducers: ReducersMapObject;\r\n\r\n constructor() {\r\n this._reducers = {};\r\n }\r\n\r\n /** Get the current map of all reducers */\r\n public getReducers(): ReducersMapObject {\r\n return this._reducers;\r\n }\r\n\r\n /**\r\n * Register a new reducer\r\n *\r\n * @param {string} name The name of the reducer\r\n * @param reducer The reducer object\r\n */\r\n public register(name: string, reducer: Reducer): void {\r\n this._reducers = { ...this._reducers, [name]: reducer };\r\n if (this._emitChange) {\r\n this._emitChange(this.getReducers());\r\n }\r\n }\r\n\r\n /**\r\n * Set the listener to notify when there are changes to the list of reducers\r\n *\r\n * @param listener - The listener\r\n */\r\n public setChangeListener(listener: any): void {\r\n this._emitChange = listener;\r\n this._emitChange(this.getReducers());\r\n }\r\n}\r\n\r\nexport const reducerRegistry = new ReducerRegistry();\r\n","import { Saga } from 'redux-saga';\r\nimport { all, fork } from 'redux-saga/effects';\r\n\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '.';\r\n\r\nexport interface IAnthology {\r\n /** The name of the anthology */\r\n name: string;\r\n\r\n /** The root saga of the anthology */\r\n saga: Saga;\r\n}\r\n\r\n/**\r\n * SagaRegistry enables dynamic sagas.\r\n * It enables sagas to be added to the store after the store is created.\r\n * See more: https://manukyan.dev/posts/2019-04-15-code-splitting-for-redux-and-optional-redux-saga/\r\n */\r\nclass SagaRegistry {\r\n /** A listener to notify when changes occur to the saga map */\r\n private _emitChange: any;\r\n\r\n /** A map of all registered sagas */\r\n private _anthologies: Map = new Map();\r\n\r\n /**\r\n * Registers a saga against the middleware\r\n *\r\n * @param name - The name of the anthology\r\n * @param saga - The root saga of the anthology\r\n */\r\n public registerSaga = (name: string, saga: Saga): void => {\r\n if (this.isRegistered(name)) {\r\n return;\r\n }\r\n\r\n this._anthologies.set(name, saga);\r\n\r\n if (this._emitChange) {\r\n this._emitChange(saga);\r\n }\r\n };\r\n\r\n /**\r\n * Take a dictionary of EndpointSagas and registers a new root saga\r\n *\r\n * @param name - The name of the anthology\r\n * @param endpointSagas - endpoint sagas\r\n */\r\n public registerAnthology = (name: string, endpointSagas: IEndpointSagaDictionary): IAnthology => {\r\n const saga = this.getAnthologySaga(endpointSagas);\r\n this.registerSaga(name, saga);\r\n\r\n return {\r\n name,\r\n saga\r\n };\r\n };\r\n\r\n /**\r\n * Set the listener to notify when there are changes to the map of sagas\r\n *\r\n * @param listener - the listener\r\n */\r\n public setChangeListener(listener: any): void {\r\n this._emitChange = listener;\r\n this._anthologies.forEach((saga: Saga) => this._emitChange(saga));\r\n }\r\n\r\n /**\r\n * Takes a dictionary of EndpointSagas and returns a root Saga\r\n *\r\n * @param sagas - The root saga of the anthology\r\n */\r\n private getAnthologySaga = (sagas: IEndpointSagaDictionary): Saga => {\r\n return function*(): IterableIterator {\r\n yield all(Object.values(sagas).map((saga: EndpointSaga) => fork(saga.watcher)));\r\n };\r\n };\r\n\r\n /**\r\n * Determines if a saga is registered given it's name\r\n *\r\n * @param name - The name of the anthology\r\n */\r\n private isRegistered = (name: string): boolean => this._anthologies.has(name);\r\n}\r\n\r\nexport const sagaRegistry = new SagaRegistry();\r\n","import { IRequestResponse } from '../../models';\r\n\r\nexport interface IEndpointState {\r\n /** Indicates whether the data is currently being fetched */\r\n readonly isFetching: boolean;\r\n\r\n /** Indicates whether the data has been fetched already */\r\n readonly isFetched: boolean;\r\n\r\n /** Indicates whether an error occured during fetch */\r\n readonly isError: boolean;\r\n\r\n /** Represents the response recieved from the endpoint */\r\n readonly response?: IRequestResponse;\r\n\r\n /** Represents error text that resulted from the fetch operation */\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/** Represents the initial state that will be augmented onto the existing model for all endpoints */\r\nexport class EndpointStateFactory {\r\n /** The default initial state of an endpoint */\r\n private static initialEndpointState: IEndpointState = {\r\n isFetched: false,\r\n isFetching: false,\r\n isError: false,\r\n response: undefined,\r\n errorMessage: undefined\r\n };\r\n\r\n /**\r\n * Takes a state object and adds the default endpoint state values\r\n *\r\n * @param initialState - The initial state\r\n */\r\n public getInitialState = (initialState: Partial): State => {\r\n return {\r\n ...EndpointStateFactory.initialEndpointState,\r\n ...initialState\r\n } as State;\r\n };\r\n}\r\n","import { ICertification, ICertificationRequest } from '../../../models';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const GetCertificationActions = new EndpointActions('GetCertification');\r\n","import { takeLeading } from 'redux-saga/effects';\r\n\r\nimport { ICertification, ICertificationRequest } from '../../../models';\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport { GetCertificationActions } from './actions';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n GetCertificationSaga: new EndpointSaga(\r\n GetCertificationActions,\r\n Api.GET_CERTIFICATIONS,\r\n takeLeading\r\n )\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { ICertification } from '../../../models';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport { GetCertificationActions } from './actions';\r\nimport { sagas } from './sagas';\r\n\r\nexport * from './actions';\r\n\r\n/** The name of the state, this will be the Redux property that data is stored under */\r\nconst storeName = 'CertificationStore';\r\n\r\nexport interface ICertificationState extends IEndpointState {\r\n /** The certification state */\r\n readonly certifications: ICertification[];\r\n}\r\n\r\n/** IState acts only as a helper type to make store logic easier to copy and paste */\r\ntype IState = ICertificationState;\r\n\r\n/**\r\n * The initial state of the endpoint store. Endpoint stores have base states (ex: isFetching, isFetched, etc.).\r\n * We use the EndointStateFactory to make sure to populate these values with the correct defaults\r\n */\r\nexport const initialCertificationState: IState = new EndpointStateFactory().getInitialState({\r\n certifications: []\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial certification state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialCertificationState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetCertificationActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n certifications: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const CertificationStore = new EndpointStore(storeName, initialCertificationState, reducer, sagas, [\r\n GetCertificationActions\r\n]);\r\n","import { IDeleteDuplicateProfileRequest, IDeleteDuplicateProfileResponse } from '../../../models/deleteDuplicateProfileRequest';\r\nimport { IMultipleProfileRequest, IMultipleProfileResponse } from '../../../models/multipleProfileRequest';\r\nimport { IUpdateAccountRequest, IUpdateAccountRequestResponse } from '../../../models/UpdateAccountRequest';\r\nimport { EndpointActions } from '../../endpoint';\r\n\r\nexport const GetUpdateAccountWorkEmailOnlyActions = new EndpointActions(\r\n 'UpdateAccountWorkEmailOnly'\r\n);\r\nexport const GetUpdateAccountActions = new EndpointActions('UpdateAccount');\r\nexport const GetUpdateAccountOidEmailAddressOnlyActions = new EndpointActions(\r\n 'UpdateAccountOidEmailAddressOnly'\r\n);\r\nexport const GetMultipleProfiles = new EndpointActions('multipleProfiles');\r\nexport const DeleteDuplicateProfile = new EndpointActions(\r\n 'deleteDuplicateProfile'\r\n);\r\nexport const OfferTransHistoryActions = new EndpointActions('OfferTransaction');\r\n","import { takeLeading } from 'redux-saga/effects';\r\n\r\nimport Api from '../../api/Api';\r\nimport { EndpointSaga, IEndpointSagaDictionary } from '../../endpoint';\r\nimport { IUpdateAccountRequest, IUpdateAccountRequestResponse } from '../../../models/UpdateAccountRequest';\r\nimport {\r\n GetUpdateAccountWorkEmailOnlyActions,\r\n GetUpdateAccountActions,\r\n GetUpdateAccountOidEmailAddressOnlyActions,\r\n GetMultipleProfiles,\r\n DeleteDuplicateProfile,\r\n OfferTransHistoryActions\r\n} from './actions';\r\nimport { IMultipleProfileRequest, IMultipleProfileResponse } from '../../../models/multipleProfileRequest';\r\nimport { IDeleteDuplicateProfileRequest, IDeleteDuplicateProfileResponse } from '../../../models/deleteDuplicateProfileRequest';\r\n\r\nexport const sagas: IEndpointSagaDictionary = {\r\n UpdateAccountWorkEmailOnlySaga: new EndpointSaga(\r\n GetUpdateAccountWorkEmailOnlyActions,\r\n Api.UPDATE_ACCOUNT_WorkEmailOnly,\r\n takeLeading\r\n ),\r\n UpdateAccountSaga: new EndpointSaga(\r\n GetUpdateAccountActions,\r\n Api.UPDATE_ACCOUNT,\r\n takeLeading\r\n ),\r\n UpdateAccountOidEmailAddressOnlySaga: new EndpointSaga(\r\n GetUpdateAccountOidEmailAddressOnlyActions,\r\n Api.UPDATE_ACCOUNT_OID_EmailAddressOnly,\r\n takeLeading\r\n ),\r\n GetProfilesSaga: new EndpointSaga(\r\n GetMultipleProfiles,\r\n Api.GET_MULTIPLE_PROFILES,\r\n takeLeading\r\n ),\r\n DeleteDuplicateProfileSaga: new EndpointSaga(\r\n DeleteDuplicateProfile,\r\n Api.DELETE_DUPLICATE_PROFILE,\r\n takeLeading\r\n ),\r\n OfferTransactionSaga: new EndpointSaga(OfferTransHistoryActions, Api.Get_OfferTransactionHistory, takeLeading)\r\n};\r\n","import { AnyAction, Reducer } from 'redux';\r\n\r\nimport { IDeleteDuplicateProfileRequest, IDeleteDuplicateProfileResponse } from '../../../models/deleteDuplicateProfileRequest';\r\nimport { IMultipleProfileRequest, IMultipleProfileResponse } from '../../../models/multipleProfileRequest';\r\nimport { IUpdateAccountRequest, IUpdateAccountRequestResponse } from '../../../models/UpdateAccountRequest';\r\nimport { EndpointStateFactory, EndpointStore, IEndpointState } from '../../endpoint';\r\nimport {\r\n GetUpdateAccountWorkEmailOnlyActions,\r\n GetUpdateAccountActions,\r\n GetUpdateAccountOidEmailAddressOnlyActions,\r\n GetMultipleProfiles,\r\n DeleteDuplicateProfile,\r\n OfferTransHistoryActions\r\n} from './actions';\r\nimport { sagas } from './sagas';\r\nexport * from './actions';\r\n\r\nconst storeName = 'UpdateAccountStore';\r\n\r\nexport interface IUpdateAccountState extends IEndpointState {\r\n /** The account update request here */\r\n readonly updateAccountRequest: IUpdateAccountRequest[];\r\n readonly updateAccountResponse: IUpdateAccountRequestResponse[];\r\n readonly multipleProfileRequest: IMultipleProfileRequest[];\r\n readonly multipleProfileResponse: IMultipleProfileResponse[];\r\n readonly deleteDuplicateProfileRequest: IDeleteDuplicateProfileRequest[];\r\n readonly deleteDuplicateProfileResponse: IDeleteDuplicateProfileResponse[];\r\n readonly offerTransactionResponse: any;\r\n}\r\n\r\ntype IState = IUpdateAccountState;\r\n\r\nexport const initialUpdateAccountState: IState = new EndpointStateFactory().getInitialState({\r\n updateAccountRequest: [\r\n {\r\n IsAad: false,\r\n newWorkEmail: '',\r\n oldWorkEmail: ''\r\n }\r\n ],\r\n updateAccountResponse: [\r\n {\r\n IsAad: false,\r\n newWorkEmail: '',\r\n oldWorkEmail: '',\r\n result: ''\r\n }\r\n ],\r\n multipleProfileRequest: [\r\n {\r\n workEmail: ''\r\n }\r\n ],\r\n multipleProfileResponse: [\r\n {\r\n id: '',\r\n workEmail: '',\r\n emailAddress: ''\r\n }\r\n ],\r\n deleteDuplicateProfileRequest: [\r\n {\r\n learnerId: ''\r\n }\r\n ],\r\n deleteDuplicateProfileResponse: [\r\n {\r\n result: ''\r\n }\r\n ],\r\n offerTransactionResponse: {}\r\n});\r\n\r\n/**\r\n * Reducer responsible for managing the slice of state that belongs to the store\r\n *\r\n * @param state - Initial account update state\r\n * @param action - The action\r\n */\r\nconst reducer: Reducer = (state: IState = initialUpdateAccountState, action: AnyAction): IState => {\r\n switch (action.type) {\r\n case GetUpdateAccountWorkEmailOnlyActions.ActionTypes.ExecuteSuccess:\r\n return {\r\n ...state,\r\n updateAccountResponse: action.payload\r\n };\r\n\r\n case GetUpdateAccountActions.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n updateAccountResponse: action.payload\r\n };\r\n }\r\n case GetUpdateAccountOidEmailAddressOnlyActions.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n updateAccountResponse: action.payload\r\n };\r\n }\r\n case GetMultipleProfiles.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n multipleProfileResponse: action.payload\r\n };\r\n }\r\n case DeleteDuplicateProfile.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n deleteDuplicateProfileResponse: action.payload\r\n };\r\n }\r\n case OfferTransHistoryActions.ActionTypes.ExecuteSuccess: {\r\n return {\r\n ...state,\r\n isError: false,\r\n offerTransactionResponse: action.payload\r\n };\r\n }\r\n case OfferTransHistoryActions.ActionTypes.ExecuteError: {\r\n return {\r\n ...state,\r\n isError: true\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n/** Responsible for handling the related state in the Redux store */\r\nexport const UpdateAccountStore = new EndpointStore(storeName, initialUpdateAccountState, reducer, sagas, [\r\n GetUpdateAccountWorkEmailOnlyActions,\r\n GetUpdateAccountActions,\r\n GetUpdateAccountOidEmailAddressOnlyActions,\r\n GetMultipleProfiles,\r\n DeleteDuplicateProfile,\r\n OfferTransHistoryActions\r\n]);\r\n","export * from './EndpointActions';\r\nexport * from './EndpointConfiguration';\r\nexport * from './EndpointReductor';\r\nexport * from './EndpointSaga';\r\nexport * from './EndpointStore';\r\nexport * from './useEndpointActions';\r\nexport * from './ReducerRegistry';\r\nexport * from './SagaRegistry';\r\nexport * from './ServiceConfiguration';\r\nexport * from './EndpointState';\r\n","module.exports = __webpack_public_path__ + \"static/media/ESILearningAssistant.71971133.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANgAAAAuCAYAAABK69fpAAAJk0lEQVR4AezTgQWAYBBA4aMm+cdoikZqrdNWF6BQaII4wvfxRnhxrOPsKF7bPl0dZc5LwM8ZDAxmMAxmMDAYGMxgGMxgYLBPoKrG093OPQBLrnRxAK9rrG3bNp9t27a9tm3btm3v3rVtW/n+X9XZqtSp0z2dwb2LTtXvvd3N6e5B/pOkk5mH4GV4Bh6FHDZg99abGAcRd9WDssHKCb3gIDhMdxsw9QuXBV6D1wWPQXgAb0okvKDouxaEs/rKMAVOwCJ4+q7Yumy4KsFucBQG2oApFgqAo5E3gDfmGU2/yyHGVZsZjrCay1AqSbcuG65CunCRAeoebMCehpvgKNTx840JhxGafmexgL2vqKuXZFuXDVc49NJ8QI6DtdBdaBsNNSCLDZg+YBshuZ+ffBc9BOwVRd3vSbaF2YBlhJPgMPUhJdWkhaz05/RQG7rDejgLj9mA6QN2A570o98/wfEQsJQwj9VsoRmqpFlswKqBw6zV1PMjlpvwEK22AdPo7bHPFLDVS8CoXRr4D0ZDc8hjN/MkDdhj4DDtFLVhMIXVXrUBMwvYOcjioc9X4ZZ5wOxylwbsUXCYRpqATbIB8x2wa3BICMh3hv2FwSjWdhtcSYyA0XlAFsgI0QH2FeFxQiAdZIXkQboWmAUyB9If2sZARuonxmPbquAwdTX144SAVXSV2IBRsDrCPnBcFkKsQX+F4RILbF045eMcLBq+gH/hb/r/FxBtsGE/Cx1gCmygQCfAXOgFr0Es23g/gTo01n/wDdsDD4KZMIHWSWNngy+gH8yA9bAdlsF4aA1VIcxDqD6gsRfR89gKS2EU1IO8Bv0Uo+c0HOZDAvUzn/6tDhRXtH2S1v8JvcFh5tG6v13+ov9vFc7fe7nq/4OP7SEipsyhn3BNqqJBfy1ZuzVQm9rrApYC9rCa3ZBcM9ZTsEjY20oGsb0c3xj2Q0oYIrRdxsZNDc2kGTbBNZgOZQ0Ox9Yb9NdG00d+GMpfawnVdIMcrI+e4ITQJgTMBoxC4TCtDQ7PdgpTugXghkHAtrGarVLAqP4fIVg6UyGM2qaDDWz9TmilaDvHNW4BPttp6Cy8onguTwAWo346ag7nDoLj0UYo6Oqna4gDtsYGDIdPEAUJ0qe8bnKD1V+H3FDCMGBbhWn65MI4P4Hj0SQWsPXC4cxVRdt51C4VrAHHHxSi6uy5ZILDivozxHHpILwepeAQOH7aAJmpr14hDtjmBz5g8BWtqwsO845qQgCmstqxtK5MMAJGdRXhHDjMTQrRe1CTvAsTKThz5YCJ9sMMej4HYA6EQSdF/Tr4BWrTuB/APM3GnNr1fL4Uao7B81CE1IBmcAK6CpdEVijGmuh6PWrDLzS+I+jq+pDsCK1gtFC3gta1dWlD/98tvCejXPXt4ZcHaypWH7DcwqHLBIgU+inB+rkNb9O68sEIGN08PEVx+PWmj3O1OhBhELDekMHVNhXUgCpwRajvBsk9Xmz/0FUjnfN9r7mjne8BP1WM8aeij7QwXnEppjCrrSnUNdC8zhOEWcRqinIbMFo/jK27AsWEftqyuh2QKsgBq6A473rP5Lka7MHmQJSibQtp8gPifIw5WGg33bV+mrD+JQ/fVlgstO/so10GSBDa/W1wHaxJwNfBIgafvRUKd/p3pkdcD4VgHyJq7oj/V5jc2MVqmtLqYAaskTR54f05iwG7Dq8q6uNhtTD22wZj1RBm9fZCVs05zybDGdtSwuHyKShk0PZv6bWESBuwxA1YKuG4PQGiXTUfCFPTJUIQsJngMG8EKWDHIZPmE58fHl6AdAZjpRGe11WoQetfd69j/feHhyBa0ffzQrulhq9BebglvN4pbcASMWBUU0d1AzCtX8APgSAqmAHD/2Nho3DeUDpIAdujqS8ODpMAsYbjLWRtb8Gjrue1CByN2fCy0K/0FZ/+Hl6Da8IsZwYbsMQPWF64wGp60brScJ1NbnxOTYMZsJSwma0/CPmDFLC9mvpHFLOBcYbjzRZm1x5xrS8KK8HRuA29Id7V7g/z8y9hzypflshqA5bIAaO6AcLeIzW0Yf9+GFKFIGApIEEYq0AiBOwhcJj1HvZgc4Q92GPC7F5DOAuORh8I11wP7BpAwC5ARhuwpAnY08IxezPYwf6tLTUJdsCSQYL8faOQB6wQOMw+iDW82XYta3sJqirq88DfbG/NPaw5RBxv/OtQ7D2hMVPYgCVNwJIJG8oVYYOvFKKAhcFCeUYz5AFLAyeEsSsbjFUCTgv3WGb20S4T/MnPk0h31/W9W8I3F1IZPK6PhX4nQLgNWOIGjN//52jMg+hQBIxqmghjHoIMIQ5YlOJ6VReDsX4X2s0M8JvhM117uyP+XBdEzeQQXAebLM+W2oCZBiyP/nc2aHIjdAErqbjQPBLSap5jUXgPIv0JGLX5Shj3CjyvaVMBjutuN6P7Psv5OP+7zW+BonXhMFpxq1cRTZ/fCu/H/5dSngOmP0+/DV/agJkHLAz6gyM4AelCHLAIGKQYfz18Cnlde51q0BjOyvciegpYetiruF7VhJ5jlOtrI98pbsBdwa4hzqeNuw1UYxd6U/ONljRgF7JvK/bs30F+1+tRHlop6ntSl4EErJ1Qvw0ecn0T4VUEzAZMU/841ctvUAgDRnU5fUwAHIddsIftbScFEjBq97p8TgRYaMydmu+JXeL35rEbpC9S+2kwFw4q9prF5Nu4RCepzz2ar8RshWxBCNjbiv6vuF6XjfqA2YDFwTrhNqOHEiNgVFuE1xqYHmjAqO33fA9g6CK8J/Q33WM/9RS/QdgDHD9s44eTAQQsOfXnaKx50AL2HDjMdz7a/CIc9sRp6isKYywSfrZtH9/oIYVm6nwyOIYGuQKWHrbzr4h4eM1eh00exl7I74L3I2Bn4S8I1xy+/wZHwTE0CrJrnucTQptWPl6bZ318eTThQQtYKegPg8hgeMRHm8yuNkPgNR/1eVz1A6nNn+x8IxZawGCqGUx/j9X0GwbPQG/YD5fgGrkMp2AKfAU52SdtExjiGqutHzORn8NUGueya+xLcJD6fx2iNP2UhX9gLhyHK65+LsBGaKP7yQFh714HVsAZuEru9LeT+nsUwnz+tge9H2QYvG74e4qj74zvej8OQON7P2AP4EIBzQNlSSGIT4RxwyAeCtO45SA3xPrxM9VxUMzVT0YxnOZfZUkJpaEM9ZkRYhLxPUnlGrsgxIV4FtEGzC52sQGzi11swGzA7GIDZgNmF7vYgNnFLjZgejZgdrEBswGzi13+B1lu/FjL7JRSAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/User.867ebc70.svg\";","module.exports = __webpack_public_path__ + \"static/media/User_Contrast.293fc5f5.svg\";","module.exports = __webpack_public_path__ + \"static/media/Info.90c02088.svg\";","module.exports = __webpack_public_path__ + \"static/media/Info_Contrast.7440bcc6.svg\";","module.exports = __webpack_public_path__ + \"static/media/Profile.c9471177.svg\";","module.exports = __webpack_public_path__ + \"static/media/Profile_Contrast.2352e325.svg\";","module.exports = __webpack_public_path__ + \"static/media/Task_List.62d75b25.svg\";","module.exports = __webpack_public_path__ + \"static/media/Infomenu.790eb395.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_ChatSparkleNav.76699126.svg\";","module.exports = __webpack_public_path__ + \"static/media/Profilemenu.fb77920c.svg\";","module.exports = __webpack_public_path__ + \"static/media/SearchBubbleIcon.f10beed6.png\";","module.exports = __webpack_public_path__ + \"static/media/Main_GetMSCertsIconNav.74ac1aaa.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_FindMoreClassesIconNav.5a3039a2.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_LearnYourOwnIconNav.0433703f.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_MultidayMSClassIconNav.d11210bd.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_GameLearningIconNav.c2964fc8.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_CopilotIconNav.c851a775.svg\";","module.exports = __webpack_public_path__ + \"static/media/Main_CourseVideosIconNav.a644ca06.svg\";","module.exports = __webpack_public_path__ + \"static/media/fabric-icons-5692869f.dec8e4bd.woff\";","import { shallowEqual, useSelector } from 'react-redux';\r\n\r\nimport { IApplicationState } from '../store';\r\nimport {\r\n // hideBLSessionsFlag,\r\n hideULJPhase2Flag,\r\n isMaintenanceModeFlag,\r\n isSearchFeatureEnabled,\r\n isSigninDisableFlag,\r\n showNewTimezoneFlag,\r\n disableSessionTimeout,\r\n disableMultiRoleAndFiltersInUrl,\r\n extraSearchODataFilters,\r\n disableResendInvitationLink,\r\n disableBLTeamsJoinLink,\r\n disableTermsAndConditions,\r\n disableMSLearnSSOForCertificationPage,\r\n disableMSLearnSSOForDeliveriesPage,\r\n disableMSLearnSSOForLandingPageAndNavs,\r\n disableLxpSSOFlag,\r\n disableProjectReadinessFlag,\r\n disableFrenchEpicFlag,\r\n disableGermanEpicFlag,\r\n enableCopilotV2,\r\n disableELAUnAuthFlowFlag,\r\n disableTPID\r\n} from './Constants';\r\n\r\nconst FeatureFlagValues = () => {\r\n const [featureflaglist] = useSelector((state: IApplicationState) => [state.FeatureFlagStore?.featureFlags], shallowEqual);\r\n\r\n const isSigninDisable =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === isSigninDisableFlag)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const isMaintenanceMode = featureflaglist && featureflaglist?.filter(d => d?.flagName === isMaintenanceModeFlag);\r\n\r\n const searchFeature =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === isSearchFeatureEnabled)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const showNewTimezone =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === showNewTimezoneFlag)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const hideSessionTimeout =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableSessionTimeout)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const isMultiRoleAndFiltersInURLDisabled =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableMultiRoleAndFiltersInUrl)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const hideULJPhase2 = featureflaglist && featureflaglist?.filter(d => d?.flagName === hideULJPhase2Flag)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const isExtraSearchODataFiltersEnabled =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === extraSearchODataFilters)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n // const hideBLSessions = featureflaglist && featureflaglist?.filter(d => d?.flagName === hideBLSessionsFlag)?.map(m => m?.isEnabledFlag)[0];\r\n const hideBLSessions = false;\r\n const isResendInvitationLink =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableResendInvitationLink)?.map(m => m?.isEnabledFlag)[0];\r\n const isBLTeamsJoinLink =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableBLTeamsJoinLink)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableEsiTerms =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableTermsAndConditions)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableLearnSSOForCertificationPage =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableMSLearnSSOForCertificationPage)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableLearnSSOForDeliveriesPage =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableMSLearnSSOForDeliveriesPage)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableLearnSSOForLandingPageAndNavs =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableMSLearnSSOForLandingPageAndNavs)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableLxpSSO =\r\n featureflaglist &&\r\n (featureflaglist?.filter(d => d?.flagName === disableLxpSSOFlag)?.map(m => m?.isEnabledFlag)[0] as Readonly | undefined);\r\n\r\n const disableProjectReadiness =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableProjectReadinessFlag)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableFrenchEpic =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableFrenchEpicFlag)?.map(m => m?.isEnabledFlag)[0];\r\n const disableGermanEpic =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableGermanEpicFlag)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const enableCopilot = featureflaglist && featureflaglist?.filter(d => d?.flagName === enableCopilotV2)?.map(m => m?.isEnabledFlag)[0];\r\n const disableELAUnAuthFlow =\r\n featureflaglist && featureflaglist?.filter(d => d?.flagName === disableELAUnAuthFlowFlag)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n const disableTpid = featureflaglist && featureflaglist?.filter(d => d?.flagName === disableTPID)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n return {\r\n isSigninDisable,\r\n isMaintenanceMode,\r\n searchFeature,\r\n showNewTimezone,\r\n hideSessionTimeout,\r\n isMultiRoleAndFiltersInURLDisabled,\r\n hideULJPhase2,\r\n isExtraSearchODataFiltersEnabled,\r\n hideBLSessions,\r\n isBLTeamsJoinLink,\r\n isResendInvitationLink,\r\n disableEsiTerms,\r\n disableLearnSSOForCertificationPage,\r\n disableLearnSSOForDeliveriesPage,\r\n disableLearnSSOForLandingPageAndNavs,\r\n disableLxpSSO,\r\n disableProjectReadiness,\r\n disableFrenchEpic,\r\n disableGermanEpic,\r\n enableCopilot,\r\n disableELAUnAuthFlow,\r\n disableTpid\r\n };\r\n};\r\n\r\nexport default FeatureFlagValues;\r\n","import { useState } from 'react';\r\n\r\n/**\r\n * Use a disclosure to help with UI elements that need visibility to toggle open and closed.\r\n * The disclosure will manage the boolean states and expose the state setters in a convenient way.\r\n * See more: https://github.com/chakra-ui/chakra-ui/blob/master/packages/chakra-ui/src/useDisclosure/index.js\r\n *\r\n * @param isDefaultOpen - Boolean is default open\r\n */\r\nexport const useDisclosure = (isDefaultOpen?: boolean) => {\r\n const [isOpen, setIsOpen] = useState(isDefaultOpen || false);\r\n const onClose = () => setIsOpen(false);\r\n const onOpen = () => setIsOpen(true);\r\n const onToggle = () => setIsOpen(!isOpen);\r\n return { isOpen, onOpen, onClose, onToggle };\r\n};\r\n","import { useEffect } from 'react';\r\n\r\n/**\r\n * React hook to set the document title.\r\n *\r\n * @param title - The document title\r\n */\r\nexport const useTitle = (title: string | null | undefined) => {\r\n useEffect(() => {\r\n if (title == null) {\r\n return;\r\n }\r\n const oldTitle = document.title;\r\n document.title = title;\r\n return () => {\r\n document.title = oldTitle;\r\n };\r\n }, [title]);\r\n};\r\n","import { appSettings } from '../Settings';\r\n\r\nexport const useLogout = (silent = false) => {\r\n if (silent) {\r\n return async () => {\r\n sessionStorage.clear();\r\n await appSettings.config.msal.logoutRedirect({ onRedirectNavigate: _ => false });\r\n };\r\n }\r\n return async () => {\r\n sessionStorage.clear();\r\n await appSettings.config.msal.logoutRedirect();\r\n };\r\n};\r\n","import {\r\n InteractionStatus,\r\n RedirectRequest,\r\n SilentRequest,\r\n InteractionRequiredAuthError,\r\n IPublicClientApplication\r\n} from '@azure/msal-browser';\r\nimport { useIsAuthenticated, useMsal } from '@azure/msal-react';\r\nimport { useIntl } from 'react-intl';\r\nimport { useEffect, useState } from 'react';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\nimport { History, Location } from 'history';\r\nimport { useSelector, shallowEqual } from 'react-redux';\r\n\r\nimport { IApplicationState } from '../store';\r\nimport { Helper, QueryStringParam } from '../utilities';\r\nimport { appSettings, redirectRequestSelectAccount } from '../Settings';\r\nimport { useAuthority } from './useAuthority';\r\nimport { useEndpointActions } from '../store/endpoint';\r\nimport { ai } from '../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { ICustomErrorMessage } from '../models';\r\nimport FeatureFlagValues from '../utilities/featureFlagValues';\r\nimport { GetFeatureFlagAction } from '../store/stores/featureFlag/actions';\r\n\r\nconst enabledHosts = new Set((process.env.REACT_APP_SSO_ENABLED_HOSTS ?? '').split(',').filter(item => item !== ''));\r\n\r\nconst shouldRemoveSSO = (location: Location): boolean => {\r\n const searchParams = new URLSearchParams(location.search);\r\n return searchParams.get('sso') != null && !validReferrer();\r\n};\r\n\r\nconst removeSSOParams = (location: Location, history: History) => {\r\n const searchParams = new URLSearchParams(location.search);\r\n if (searchParams.get('context') == null && searchParams.get('source') == null && searchParams.get('sso') == null) {\r\n return;\r\n }\r\n searchParams.delete('context');\r\n searchParams.delete('source');\r\n searchParams.delete('sso');\r\n history.replace(`${location.pathname}?${searchParams.toString()}`);\r\n};\r\n\r\nconst validReferrer = (): boolean => {\r\n if (document.referrer.trim() === '') {\r\n return false;\r\n }\r\n const referrer = new URL(document.referrer).host;\r\n for (const domain of enabledHosts) {\r\n if (referrer.endsWith(`.${domain}`) || referrer === domain) {\r\n sessionStorage.setItem(QueryStringParam.SSOReferrer, document.referrer);\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst shouldAttemptSSO = (location: Location): boolean => {\r\n const searchParams = new URLSearchParams(location.search);\r\n const sso = searchParams.get('sso');\r\n return sso != null && validReferrer();\r\n};\r\n\r\nconst ssoActive = (location: Location): boolean => {\r\n const searchParams = new URLSearchParams(location.search);\r\n const hasSSO = searchParams.get('sso') != null;\r\n const hasSSOContext = searchParams.get('context') === 'sso';\r\n return (hasSSO || hasSSOContext) && validReferrer();\r\n};\r\n\r\nconst updateSSOParams = (location: Location, history: History) => {\r\n const searchParams = new URLSearchParams(location.search);\r\n const ssoSource = searchParams.get('sso') ?? 'unknown';\r\n if (searchParams.get('context') === 'sso' && searchParams.get('source') === ssoSource && searchParams.get('sso') == null) {\r\n return;\r\n }\r\n\r\n searchParams.set('context', 'sso');\r\n searchParams.set('source', ssoSource);\r\n searchParams.delete('sso');\r\n history.replace(`${location.pathname}?${searchParams.toString()}`);\r\n Helper.setClarityCustomTag('SSOSignIn', ssoSource);\r\n Helper.setClarityCustomTag('EventSSOSignIn', 'SSOSignedIn');\r\n};\r\n\r\nconst msalSSO = async (msal: IPublicClientApplication, history: History) => {\r\n try {\r\n await msal.ssoSilent({\r\n scopes: appSettings.config.defaultAuthScopes,\r\n redirectUri: `${window.location.origin}/auth.html`\r\n });\r\n } catch (error) {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n await msal.logoutRedirect({ onRedirectNavigate: _ => false });\r\n await msal.acquireTokenRedirect(redirectRequestSelectAccount);\r\n } else {\r\n history.push('/');\r\n }\r\n }\r\n};\r\n\r\nconst useDisableLxpSSO = () => {\r\n const [getFeatureFlag] = useEndpointActions([GetFeatureFlagAction]);\r\n const [flagFetching, flagsFetched] = useSelector(\r\n (state: IApplicationState) => [state.FeatureFlagStore.isFetching, state.FeatureFlagStore.isFetched],\r\n shallowEqual\r\n );\r\n const { disableLxpSSO } = FeatureFlagValues();\r\n\r\n useEffect(() => {\r\n if (!flagFetching && !flagsFetched) {\r\n getFeatureFlag();\r\n }\r\n }, [flagFetching, flagsFetched, getFeatureFlag]);\r\n\r\n return { disableLxpSSO, loading: disableLxpSSO == null };\r\n};\r\n\r\nexport const useAuthenticator = () => {\r\n const friendlyError: ICustomErrorMessage = { description: '' };\r\n const [error, seterror] = useState(friendlyError);\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const authorityurl = useAuthority();\r\n const location = useLocation();\r\n const msal = appSettings.config.msal;\r\n const request: SilentRequest = {\r\n scopes: appSettings.config.defaultAuthScopes,\r\n authority: authorityurl,\r\n account: msal.getAllAccounts()[0]\r\n };\r\n const isAuthenticated = useIsAuthenticated();\r\n const { disableLxpSSO, loading: pendingDisableLxpSSO } = useDisableLxpSSO();\r\n const context = useMsal();\r\n\r\n useEffect(() => {\r\n if (isAuthenticated && !disableLxpSSO && !pendingDisableLxpSSO && shouldAttemptSSO(location)) {\r\n updateSSOParams(location, history);\r\n }\r\n if ((shouldRemoveSSO(location) || disableLxpSSO) && !pendingDisableLxpSSO) {\r\n removeSSOParams(location, history);\r\n }\r\n if (!isAuthenticated && context.inProgress === InteractionStatus.None) {\r\n if (ssoActive(location) || pendingDisableLxpSSO) {\r\n if (shouldAttemptSSO(location) && !disableLxpSSO && !pendingDisableLxpSSO) {\r\n updateSSOParams(location, history);\r\n msalSSO(msal, history);\r\n }\r\n } else {\r\n msal.acquireTokenSilent(request).catch(error => {\r\n if (error?.errorCode === 'no_account_error') {\r\n const requestredirect: RedirectRequest = {\r\n scopes: appSettings.config.defaultAuthScopes,\r\n authority: authorityurl,\r\n redirectUri: window.location.origin\r\n };\r\n msal.acquireTokenRedirect(requestredirect).catch(error => {\r\n ai.appInsights?.trackException({\r\n exception: new Error('ESIUI -useAuthenticator-acquireTokenRedirect'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }\r\n });\r\n });\r\n } else {\r\n if (error) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI -useAuthenticator-acquireTokenSilent'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { error }\r\n });\r\n }\r\n }\r\n switch (error?.errorCode) {\r\n case 'login_progress_error':\r\n friendlyError.description = intl.formatMessage({\r\n defaultMessage:\r\n 'There was a problem logging you in. Another login is already in progress. Please close all tabs or windows and try again.'\r\n });\r\n break;\r\n default:\r\n friendlyError.description = `There was an unexpected error while logging in. ${error?.errorCode}`;\r\n break;\r\n }\r\n seterror(friendlyError);\r\n }\r\n });\r\n }\r\n }\r\n if (error.description !== '') {\r\n history.push('/about/', {\r\n error: error\r\n });\r\n }\r\n }, [\r\n authorityurl,\r\n context.inProgress,\r\n disableLxpSSO,\r\n error,\r\n friendlyError,\r\n history,\r\n intl,\r\n isAuthenticated,\r\n location,\r\n msal,\r\n pendingDisableLxpSSO,\r\n request\r\n ]);\r\n};\r\n","export * from './QueryStrings';\r\nexport * from './AuthParamsHelper';\r\nexport * from './ExtractPromiseType';\r\nexport * from './LearningPathContent';\r\nexport * from './isIE';\r\nexport * from './ErrorMessageMapper';\r\nexport * from './OneDayClassesContent';\r\nexport * from './OAuthHelper';\r\nexport * from './Helper';\r\nexport * from './Constants';\r\nexport * from './SearchHelper';\r\nexport * from './getVisitLog';\r\n","var map = {\n\t\"./de-DE/strings.json\": [\n\t\t877,\n\t\t40\n\t],\n\t\"./en-us/strings.json\": [\n\t\t573,\n\t\t9\n\t],\n\t\"./es-ES/strings.json\": [\n\t\t878,\n\t\t41\n\t],\n\t\"./fr-FR/strings.json\": [\n\t\t879,\n\t\t42\n\t],\n\t\"./id-ID/strings.json\": [\n\t\t880,\n\t\t43\n\t],\n\t\"./it-IT/strings.json\": [\n\t\t881,\n\t\t44\n\t],\n\t\"./ja-JP/strings.json\": [\n\t\t882,\n\t\t45\n\t],\n\t\"./ko-kr/strings.json\": [\n\t\t883,\n\t\t46\n\t],\n\t\"./pt-BR/strings.json\": [\n\t\t884,\n\t\t47\n\t],\n\t\"./zh-CN/strings.json\": [\n\t\t885,\n\t\t48\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 832;\nmodule.exports = webpackAsyncContext;","import React from 'react';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\n\r\nimport { IApplicationState } from '../../store';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { GetProfileActions } from '../../store/stores/user/actions';\r\nimport ApplicationLoadingSpinner from '../ApplicationLoadingSpinner/ApplicationLoadingSpinner';\r\nimport { disableTPID, QueryStringParam } from '../../utilities';\r\nimport { GetFeatureFlagAction } from '../../store/stores/featureFlag/actions';\r\n\r\n/**\r\n * Component to verifiy the user has accepted the Eula before showing the children components\r\n *\r\n * @param props The properties\r\n */\r\nconst EulaProtection: React.FunctionComponent = props => {\r\n const [isProfileFetched] = useSelector(\r\n (state: IApplicationState) => [state.UserStore.isFetched, state.UserStore.isError, state.UserStore.response],\r\n shallowEqual\r\n );\r\n const [getFeatureFlag] = useEndpointActions([GetFeatureFlagAction]);\r\n const [featureFlags] = useSelector((state: IApplicationState) => [state.FeatureFlagStore?.featureFlags], shallowEqual);\r\n\r\n const [getProfile] = useEndpointActions([GetProfileActions]);\r\n const userEmail = sessionStorage.getItem(QueryStringParam.WorkEmailAddress);\r\n const [isFeatureFlagLoaded, setFeatureFlagLoaded] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (featureFlags.length === 0) {\r\n getFeatureFlag();\r\n }\r\n }, [getFeatureFlag, featureFlags.length]);\r\n\r\n React.useEffect(() => {\r\n if (featureFlags.length > 0) {\r\n const disableTpd = featureFlags?.filter(d => d?.flagName === disableTPID)?.map(m => m?.isEnabledFlag)[0];\r\n if (disableTpd != undefined && disableTpd) {\r\n if (\r\n process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL != null &&\r\n process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL + '/api/' != localStorage.getItem('apiVersionUrl')\r\n ) {\r\n localStorage.setItem('apiVersionUrl', process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL + '/api/');\r\n }\r\n }\r\n setFeatureFlagLoaded(true);\r\n }\r\n }, [featureFlags, featureFlags.length, setFeatureFlagLoaded]);\r\n\r\n React.useEffect(() => {\r\n if (isFeatureFlagLoaded) {\r\n getProfile(userEmail);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isFeatureFlagLoaded]);\r\n\r\n if (isProfileFetched) {\r\n // If the profile doesn't exist, redirect the user to the Registration page\r\n return {props.children};\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nexport default EulaProtection;\r\n","import React from 'react';\r\nimport { Image } from '@fluentui/react';\r\n\r\nimport CopilotSvg from '../../assets/images/ESILearningAssistant.svg';\r\n\r\nconst CopilotLogo = () => {\r\n return (\r\n <>\r\n \"click\r\n \r\n );\r\n};\r\n\r\nexport default CopilotLogo;\r\n","export const COPILOT_BOT_CONST = {\r\n lxpText: 'lxp',\r\n elaText: 'ELA'\r\n};\r\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { TooltipHost, DirectionalHint, Popup } from '@fluentui/react';\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Dismiss24Regular } from '@fluentui/react-icons';\r\n\r\nimport { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { IApplicationState } from '../../store';\r\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser';\r\nimport { useAccessToken } from '../../hooks/useAccessToken';\r\nimport { Helper } from '../../utilities';\r\nimport { trackCopilotChatOpened } from '../ApplicationInsightsProvider/CopilotTelemetryService';\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport CopilotLogo from '../CopilotLogo/CopilotLogo';\r\nimport { COPILOT_BOT_CONST } from './CopilotBotConst';\r\n\r\nimport './CopilotBot.scss';\r\n\r\ninterface ICopilotBot {\r\n isCopilotVisible?: boolean;\r\n changeCopilotVisibility: (val: any) => void;\r\n isUserLoggedIn?: boolean;\r\n}\r\n\r\nconst currentTime = new Date().getTime() + Math.floor(Math.random() * 1000000);\r\n\r\n/**\r\n * Component to verify the user has accepted the Eula before showing the children components\r\n *\r\n * @param props The properties\r\n */\r\nconst CopilotBot: React.FunctionComponent = props => {\r\n const { isCopilotVisible, isUserLoggedIn } = props;\r\n const accessToken = useAccessToken(isUserLoggedIn);\r\n const history = useHistory();\r\n const [profile] = useSelector((state: IApplicationState) => [state.UserStore.profile], shallowEqual);\r\n const [emailProfile] = useSelector((state: IApplicationState) => [state.UserStore.emailprofile], shallowEqual);\r\n const tooltipId = useId('tooltip');\r\n const copilotHeader = useId('copilot-header');\r\n const ref = useRef(null);\r\n const [iframeLoad, setIframeLoad] = useState(false);\r\n\r\n const [learnerId, setLearnerId] = useState(profile.id);\r\n\r\n const account = useAuthenticatedUser();\r\n const copilotBotEnable = FeatureFlagValues().enableCopilot;\r\n\r\n const chatBotSrc = process.env.REACT_APP_COPILOT_URL ? process.env.REACT_APP_COPILOT_URL : '';\r\n const { lxpText, elaText } = COPILOT_BOT_CONST;\r\n\r\n const _loadIframe = useCallback(() => {\r\n setIframeLoad(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (account && account.oid) {\r\n //setOid(account.oid);\r\n setLearnerId(profile.id);\r\n }\r\n }, [account, profile.id]);\r\n\r\n useEffect(() => {\r\n if (iframeLoad && ai.appInsights) {\r\n const iframe = ref.current;\r\n if (iframe !== null) {\r\n const iWindow = iframe.contentWindow;\r\n if (iWindow !== null) {\r\n const dataToPass = {\r\n sourceName: lxpText,\r\n userDetail: {\r\n accountDetail: account || '',\r\n emailProfile: emailProfile || ''\r\n },\r\n locale: Helper.getLocale(),\r\n telemetryData: {\r\n sessionId: ai?.appInsights?.context?.sessionManager?.automaticSession?.id,\r\n additionalProps: {\r\n learnerId: learnerId,\r\n userId: account?.oid\r\n }\r\n },\r\n isUserLoggedIn\r\n };\r\n iWindow.postMessage(dataToPass, chatBotSrc);\r\n }\r\n }\r\n }\r\n }, [iframeLoad, learnerId, ref, chatBotSrc, account, emailProfile, lxpText, isUserLoggedIn]);\r\n\r\n useEffect(() => {\r\n const handlePostMessage = (event: { data: { link: string; isAccessToken: boolean; sourceName: string } }) => {\r\n const { data } = event;\r\n if (data) {\r\n const { link, isAccessToken, sourceName } = data;\r\n if (sourceName === elaText) {\r\n if (link) {\r\n history.push('/' + event.data.link);\r\n }\r\n if (isAccessToken) {\r\n const iframe = ref.current;\r\n if (iframe !== null) {\r\n const iWindow = iframe.contentWindow;\r\n if (iWindow !== null) {\r\n const dataToPass = {\r\n accessToken: accessToken,\r\n sourceName: lxpText,\r\n isUserLoggedIn\r\n };\r\n iWindow.postMessage(dataToPass, chatBotSrc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener('message', handlePostMessage);\r\n\r\n return () => {\r\n window.removeEventListener('message', handlePostMessage);\r\n };\r\n }, [accessToken, chatBotSrc, elaText, history, isUserLoggedIn, lxpText]);\r\n\r\n if ((!account || !account.oid) && !isUserLoggedIn) {\r\n return

;\r\n }\r\n\r\n const closeCopilot = () => {\r\n const { changeCopilotVisibility } = props;\r\n Helper.setClarityCustomTag('CopilotChatAction', 'ChatClosed');\r\n const milliseconds = Date.now() - parseInt(localStorage.getItem('copilotChatOpened') || '0');\r\n const minutes = Math.floor(milliseconds / 60000);\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Page :Lxp Assist Chat Closed Durations',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n learnerId: profile.id,\r\n EmailAddress: profile.emailAddress,\r\n duration: minutes\r\n }\r\n });\r\n }\r\n changeCopilotVisibility(false);\r\n localStorage.removeItem('copilotChatOpened');\r\n sessionStorage.setItem('copilotChatPopup', 'close');\r\n };\r\n\r\n if (isCopilotVisible && ai.appInsights) {\r\n Helper.setClarityCustomTag('CopilotChatAction', 'ChatOpened');\r\n trackCopilotChatOpened();\r\n localStorage.setItem('copilotChatOpened', Date.now().toString());\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {(isUserLoggedIn || accessToken) && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CopilotBot;\r\n","import { ai } from './ApplicationInsightsService';\r\n\r\nconst redirectEventName = 'CopilotSSOFailure';\r\nconst openEventName = 'CopilotChatOpened';\r\nconst disconnectEventName = 'CopilotConnectionRejected';\r\n\r\n/**\r\n * Tracks Copilot SSO Failure events\r\n *\r\n * @param connectionName The OAuth connection name being used for Copilot SSO\r\n */\r\nconst trackCopilotSSOFailure = (connectionName: string | undefined) => {\r\n ai.appInsights!.trackEvent(\r\n {\r\n name: redirectEventName\r\n },\r\n {\r\n connectionName\r\n }\r\n );\r\n};\r\n\r\n/**\r\n * Tracks Copilot Chat open events\r\n */\r\nconst trackCopilotChatOpened = () => {\r\n ai.appInsights!.trackEvent({\r\n name: openEventName\r\n });\r\n};\r\n\r\n/**\r\n * Tracks Copilot Chat connection failure events\r\n */\r\nconst trackCopilotChatConnectionRejected = () => {\r\n ai.appInsights!.trackEvent({\r\n name: disconnectEventName\r\n });\r\n};\r\n\r\nexport { trackCopilotSSOFailure, trackCopilotChatOpened, trackCopilotChatConnectionRejected };\r\n","import * as React from 'react';\r\nimport * as Loadable from 'react-loadable';\r\n\r\nimport { LoaderSection } from './LoaderSection';\r\n\r\n/**\r\n * Default loading component to display a loading message\r\n *\r\n * @param props - The properties\r\n */\r\n\r\nexport const Loading: React.FunctionComponent = props => {\r\n const { error, pastDelay } = props;\r\n\r\n if (error) {\r\n return
Error!
;\r\n } else if (pastDelay) {\r\n return ;\r\n }\r\n return null;\r\n};\r\n\r\nexport default Loading;\r\n","import Loadable from 'react-loadable';\r\nimport { RouteConfig } from 'react-router-config';\r\n\r\nimport Loading from './components/Loading/Loading';\r\n\r\nexport const routeConfig: RouteConfig[] = [\r\n {\r\n path: '/deliveryonly',\r\n component: Loadable({\r\n loader: () => import('./pages/Delivery/DeliveryOnly'),\r\n loading: Loading\r\n }),\r\n exact: true\r\n },\r\n {\r\n path: '/Delivery',\r\n component: Loadable({\r\n loader: () => import('./pages/Delivery/Delivery'),\r\n loading: Loading\r\n }),\r\n exact: true\r\n },\r\n {\r\n path: '/deliverymultiday',\r\n component: Loadable({\r\n loader: () => import('./pages/Delivery/Delivery'),\r\n loading: Loading\r\n }),\r\n exact: true\r\n },\r\n {\r\n path: '/gamelearning',\r\n component: Loadable({\r\n loader: () => import('./pages/Delivery/Delivery'),\r\n loading: Loading\r\n }),\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/AccountLinking/AccountModal'),\r\n loading: Loading\r\n }),\r\n path: '/accountlinking/accountmodal',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Onboarding/Step1'),\r\n loading: Loading\r\n }),\r\n path: '/onboarding/step1',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Onboarding/Step2'),\r\n loading: Loading\r\n }),\r\n path: '/onboarding/step2',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Onboarding/Step3'),\r\n loading: Loading\r\n }),\r\n path: '/onboarding/step3',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Welcome/Welcome'),\r\n loading: Loading\r\n }),\r\n path: '/register/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Welcome/Welcome'),\r\n loading: Loading\r\n }),\r\n path: '/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Preference/UpdatePreferences'),\r\n loading: Loading\r\n }),\r\n path: '/settings/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Locale/Locale'),\r\n loading: Loading\r\n }),\r\n path: '/locale/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Registrations/Registrations'),\r\n loading: Loading\r\n }),\r\n path: '/registrations',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Registrations/Registrations'),\r\n loading: Loading\r\n }),\r\n path: '/coursedetails',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/StepsSuccess/BePrepared'),\r\n loading: Loading\r\n }),\r\n path: '/beprepared',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/StepsSuccess/BuildConfidence'),\r\n loading: Loading\r\n }),\r\n path: '/buildconfidence',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/StepsSuccess/ReviewPath'),\r\n loading: Loading\r\n }),\r\n path: '/reviewpath',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/StepsSuccess/CelebrateSkills'),\r\n loading: Loading\r\n }),\r\n path: '/celebrateskills',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Register/Register'),\r\n loading: Loading\r\n }),\r\n path: '/register/agree/'\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/EmailConfirmation/EmailValidation'),\r\n loading: Loading\r\n }),\r\n path: '/emailvalidation/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/EmailConfirmation/AadLogin'),\r\n loading: Loading\r\n }),\r\n path: '/AadLogin/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Onboarding/ESIAgreement'),\r\n loading: Loading\r\n }),\r\n path: '/esiAgreement/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Landing/Landing'),\r\n loading: Loading\r\n }),\r\n path: '/landing/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/FindMoreClasses/FindMoreClasses'),\r\n loading: Loading\r\n }),\r\n path: '/findmoreclasses/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/GetCertification/GetCertification'),\r\n loading: Loading\r\n }),\r\n path: '/getcertification/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/About/About'),\r\n loading: Loading\r\n }),\r\n path: '/about/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Support/UpdateAccount'),\r\n loading: Loading\r\n }),\r\n path: '/support/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Help/Help'),\r\n loading: Loading\r\n }),\r\n path: '/help/',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/Search/Search'),\r\n loading: Loading\r\n }),\r\n path: '/search',\r\n exact: true\r\n },\r\n {\r\n component: Loadable({\r\n loader: () => import('./pages/NotFound/NotFound'),\r\n loading: Loading\r\n })\r\n }\r\n];\r\n","import { FontIcon, Link } from '@fluentui/react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport React from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport Cookies from 'universal-cookie';\r\n\r\nimport { locales } from '../../locales';\r\nimport { useLocale } from '../LocalizationProvider/LocalizationProvider';\r\nimport './Footer.scss';\r\nimport ConditionalRenderer from '../../pages/ConditionalRenderer/ConditionalRenderer';\r\nimport { Helper } from '../../utilities';\r\nimport { IApplicationState } from '../../store';\r\n\r\n/**\r\n * Footer component\r\n */\r\n\r\nexport const Footer: React.FunctionComponent = () => {\r\n const year = new Date().getFullYear();\r\n const intl = useIntl();\r\n const { locale } = useLocale();\r\n const localeObject = locales.find(localeObject => localeObject.locale === locale);\r\n const language = localeObject ? localeObject.displayName : undefined;\r\n let siteConsent!: WcpConsent.SiteConsent;\r\n let footerAnalytics = new Cookies().get('footer-Analytics');\r\n const [profile] = useSelector((state: IApplicationState) => [state.UserStore.profile], shallowEqual);\r\n\r\n const supportLinkLogging = () => {\r\n Helper.supportLinkVisitLog('Footer', profile.workEmail, profile.id);\r\n };\r\n localStorage.getItem('isWcpConsent') != 'false' &&\r\n WcpConsent &&\r\n WcpConsent.init(Helper.getLocale(), 'cookie-banner', (err, _siteConsent) => {\r\n if (err) {\r\n alert(err);\r\n } else {\r\n siteConsent = _siteConsent!;\r\n footerAnalytics = siteConsent?.isConsentRequired;\r\n }\r\n });\r\n\r\n const _managecookie = () => {\r\n // allow for Clarity\r\n WcpConsent &&\r\n WcpConsent.init(Helper.getLocale(), 'cookie-banner', (err, _siteConsent) => {\r\n if (err) {\r\n alert(err);\r\n } else {\r\n siteConsent = _siteConsent!;\r\n if (footerAnalytics) {\r\n setTimeout(() => {\r\n const analyticCookies: string[] = ['_clck', '_clsk', 'MUID', 'CLID', 'ANONCHK', 'SM'];\r\n const cookies = new Cookies();\r\n\r\n analyticCookies.forEach(cookie => {\r\n cookies.remove(cookie);\r\n });\r\n siteConsent.manageConsent();\r\n }, 30);\r\n }\r\n }\r\n });\r\n };\r\n return (\r\n
\r\n
\r\n \r\n \r\n {language}\r\n \r\n \r\n
    \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n {footerAnalytics && (\r\n
  • \r\n \r\n \r\n \r\n
  • \r\n )}\r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n \r\n © {year}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(Footer);\r\n","import * as React from 'react';\r\nimport { Callout, Icon, Image, Text, Link, getTheme, FontWeights, mergeStyleSets, DefaultButton } from '@fluentui/react';\r\nimport { useId } from '@uifabric/react-hooks';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\n\r\nimport { useDisclosure, useLogout } from '../../hooks';\r\nimport User from '../../assets/images/User.svg';\r\nimport UserContrast from '../../assets/images/User_Contrast.svg';\r\n\r\nimport '../../buttons.scss';\r\n\r\nconst theme = getTheme();\r\nconst styles = mergeStyleSets({\r\n buttonArea: {\r\n margin: '0 0 0 10px'\r\n },\r\n callout: {\r\n width: '290px',\r\n height: '149px'\r\n },\r\n header: {\r\n padding: '50px 24px 12px',\r\n borderBottom: '1px solid #d3d3d3',\r\n margin: '0 1.5em'\r\n },\r\n close: {\r\n float: 'right',\r\n padding: '18px 34px 14px 0px',\r\n height: '19px',\r\n width: '18px',\r\n fontWeight: FontWeights.bold,\r\n fontSize: '18px',\r\n color: '#000 !important'\r\n },\r\n buttonheader: {\r\n padding: '18px 24px 12px'\r\n },\r\n title: [\r\n theme.fonts.medium,\r\n {\r\n margin: 0,\r\n fontWeight: FontWeights.regular,\r\n color: '#000',\r\n opacity: '1',\r\n height: '20px',\r\n fontSize: '15px'\r\n }\r\n ],\r\n inner: {\r\n padding: '0 24px 20px',\r\n height: '100%'\r\n },\r\n actions: {\r\n position: 'relative',\r\n marginTop: 20,\r\n width: '100%',\r\n whiteSpace: 'nowrap'\r\n },\r\n subtext: [\r\n theme.fonts.small,\r\n {\r\n margin: 0,\r\n fontWeight: FontWeights.semilight\r\n }\r\n ],\r\n link: [\r\n theme.fonts.medium,\r\n {\r\n color: '#0065B3',\r\n fontWeight: FontWeights.bold\r\n }\r\n ]\r\n});\r\ninterface IComponentProps {\r\n displayName: string;\r\n userName: string;\r\n}\r\nexport const PopupCallout: React.FunctionComponent = props => {\r\n const intl = useIntl();\r\n const { displayName, userName } = props;\r\n const signout = useLogout();\r\n const { isOpen, onClose, onToggle } = useDisclosure(false);\r\n const labelId: string = useId('calloutLabel');\r\n\r\n const enterPressed = (event: any) => {\r\n const code = event.keyCode || event.which;\r\n if (code === 13) {\r\n setTimeout(function() {\r\n onToggle();\r\n }, 100);\r\n }\r\n };\r\n\r\n const onLinkBlur = (e: any) => {\r\n e.persist();\r\n if (!e.relatedTarget) {\r\n onClose();\r\n }\r\n };\r\n\r\n const onSignOutClick = () => {\r\n const isSessionExpired = localStorage.getItem('isSessionExpired');\r\n if (isSessionExpired && isSessionExpired.toLowerCase() === 'yes') {\r\n localStorage.setItem('isSessionExpired', 'no');\r\n }\r\n signout();\r\n };\r\n\r\n const headerDisplayName =\r\n displayName !== 'undefined' && displayName !== undefined && displayName !== null && displayName?.trim()?.substring(0, 9);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \"\"\r\n \"\"\r\n \r\n {headerDisplayName}!\"\r\n values={{\r\n b: (chunks: React.ReactNode) => {chunks},\r\n headerDisplayName\r\n }}\r\n />\r\n \r\n \r\n
\r\n
\r\n {isOpen && (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {userName}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { DefaultButton, TooltipHost, ITooltipHostStyles } from '@fluentui/react';\r\nimport React from 'react';\r\nimport { useId } from '@fluentui/react-hooks';\r\n\r\nimport { toolTipClose } from '../../../utilities/Constants';\r\nimport CopilotLogo from '../../CopilotLogo/CopilotLogo';\r\n\r\nimport './CopilotButton.scss';\r\n\r\nconst CopilotButton = ({ onClick }: { onClick: () => void }) => {\r\n const tooltipId = useId('tooltip');\r\n const calloutProps = { gapSpace: 0 };\r\n const hostStyles: Partial = { root: { display: 'flex' } };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CopilotButton;\r\n","import React, { useCallback, useState } from 'react';\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { FormattedMessage } from 'react-intl';\r\n\r\nimport './SearchTextBox.scss';\r\n\r\ninterface ISuggestionsProp {\r\n data: string[];\r\n onResults: (value: string) => void;\r\n targetId: string;\r\n addSuggestion: (event: any) => void;\r\n hideSuggestions: (event: any) => void;\r\n}\r\n\r\nexport const GlobalResults: React.FunctionComponent = props => {\r\n const { onResults, addSuggestion, hideSuggestions } = props;\r\n const [escape, setEscape] = useState(false);\r\n let list = props.data;\r\n list = [...new Set(list)];\r\n const suggestionId = useId('suggestions');\r\n\r\n const onListBlur = useCallback(\r\n (event: any) => {\r\n event.persist();\r\n if (event.relatedTarget) {\r\n const { className } = event.relatedTarget;\r\n if (className !== 'item') {\r\n hideSuggestions(event);\r\n }\r\n }\r\n },\r\n [hideSuggestions]\r\n );\r\n\r\n const onEscapeKeyPress = (event: any) => {\r\n const code = event.keyCode || event.which;\r\n if (code === 27) {\r\n setEscape(true);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n
    \r\n {list.map((item, index) => (\r\n //eslint-disable-next-line\r\n onResults(item)}\r\n onKeyUp={onEscapeKeyPress}\r\n >\r\n {item}\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\nexport default GlobalResults;\r\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport {\r\n TeachingBubble,\r\n PrimaryButton,\r\n DirectionalHint,\r\n IButtonProps,\r\n ITeachingBubbleStyles,\r\n IImageProps,\r\n FontIcon\r\n} from '@fluentui/react';\r\nimport { useHistory, useLocation } from 'react-router';\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport { ICalloutProps } from 'office-ui-fabric-react';\r\n\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport { SearchHelper } from '../../utilities/SearchHelper';\r\nimport { GlobalResults } from './GlobalResults';\r\nimport './SearchTextBox.scss';\r\nimport { RouteErrorState } from '../../models';\r\nimport { IApplicationState } from '../../store';\r\nimport { useLocale } from '../LocalizationProvider/LocalizationProvider';\r\nimport { Helper } from '../../utilities/Helper';\r\nimport SearchBubbleIcon from '../../assets/images/SearchBubbleIcon.png';\r\nimport { useAccessToken } from '../../hooks/useAccessToken';\r\nimport '../../styles/variables.scss';\r\n\r\ninterface IGlobalSearchProps {\r\n defaultUrl: string;\r\n searchIcon?: string;\r\n notGlobal?: boolean;\r\n onContinue?: any;\r\n isHamburger?: boolean;\r\n}\r\n\r\n/**\r\n * Search component\r\n *\r\n * @param props - The properties\r\n */\r\nexport const SearchTextBox: React.FunctionComponent = props => {\r\n const searchFeature = FeatureFlagValues().searchFeature;\r\n const [searchValue, setSearchValue] = useState('');\r\n const history = useHistory();\r\n const [shouldSearch, setShouldSearch] = useState(false);\r\n const [teachingBubbleVisible, setTeachingBubbleVisible] = useState(false);\r\n\r\n const locale = useLocale();\r\n const [profile] = useSelector((state: IApplicationState) => [state.UserStore.profile], shallowEqual);\r\n const searchBoxId = useId('searchId');\r\n const [items, setItems] = useState(['']);\r\n const [showSuggestions, setShowSuggestions] = useState(false);\r\n const [showSearchIcon, setShowSearchIcon] = useState(true);\r\n const [teachingBubbleClose, setTeachingBubbleClose] = useState(false);\r\n const searchBox = document.getElementById(searchBoxId);\r\n const location = useLocation();\r\n const currentPage = location.pathname;\r\n const showBubble = currentPage === '/landing';\r\n const exampleImageProps: IImageProps = { src: SearchBubbleIcon, alt: 'Search Bubble Icon', imageFit: 1 };\r\n const intl = useIntl();\r\n const accessToken = useAccessToken();\r\n const calloutStyles: ICalloutProps['styles'] = {\r\n beak: {\r\n background: '#243b5d'\r\n }\r\n };\r\n\r\n const bubbleStyles: Partial = {\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'right',\r\n top: '5.5em',\r\n margin: '1.5em'\r\n },\r\n footer: {\r\n [`& > .ms-StackItem`]: {\r\n display: 'flex',\r\n flexDirection: 'row-reverse'\r\n },\r\n [`& > .ms-StackItem > .ms-Button`]: {\r\n margin: '0 15em 0 0',\r\n ':focus': {\r\n color: '#ffffff',\r\n backgroundColor: '#0069D9'\r\n }\r\n }\r\n },\r\n\r\n imageContent: {\r\n [`& > .ms-Image`]: {\r\n position: 'absolute',\r\n top: '6.8em',\r\n right: '1.8em',\r\n width: '7.8em',\r\n height: '7.8em',\r\n background: 'white',\r\n padding: '1.25em',\r\n borderRadius: '0.75em'\r\n }\r\n },\r\n content: {\r\n animationFillMode: 'none',\r\n animationDuration: '0',\r\n backgroundColor: '#243b5d'\r\n },\r\n\r\n body: {\r\n [`& > .ms-TeachingBubble-subText`]: {\r\n width: '18em'\r\n }\r\n },\r\n bodyContent: {\r\n minHeight: 'max-content',\r\n minWidth: 'max-content',\r\n overflowWrap: 'anywhere'\r\n },\r\n subComponentStyles: {\r\n callout: calloutStyles\r\n }\r\n };\r\n\r\n let searchQuery = new URLSearchParams(location.search).get('q') ?? '*';\r\n\r\n if (searchQuery === '*') {\r\n searchQuery = '';\r\n }\r\n\r\n useEffect(() => {\r\n setSearchValue(searchQuery);\r\n }, [searchQuery]);\r\n\r\n const doSearch = useCallback(() => {\r\n if (props?.onContinue) {\r\n props?.onContinue(true);\r\n }\r\n setShowSuggestions(false);\r\n const split = searchValue?.split('|');\r\n const finalSearchValue = split[0].trim();\r\n const loc = props.defaultUrl;\r\n if (finalSearchValue !== null && finalSearchValue !== '') {\r\n setShouldSearch(false);\r\n Helper.setClarityCustomTag('Search', finalSearchValue);\r\n setSearchValue(finalSearchValue);\r\n history.push(`${loc}?q=${finalSearchValue}`);\r\n } else {\r\n alert('Cannot search for empty string!');\r\n }\r\n }, [history, props, searchValue]);\r\n\r\n const headline = intl.formatMessage({ defaultMessage: 'Try LxP search!' });\r\n const bodyText = intl.formatMessage({ defaultMessage: 'Simply enter a course or certification name or code! Search examples:' });\r\n const exOption0 = intl.formatMessage({ defaultMessage: 'Blended' });\r\n const exOption1 = intl.formatMessage({ defaultMessage: 'Azure Administrator' });\r\n const exOption2 = intl.formatMessage({ defaultMessage: 'AZ-104' });\r\n const exOption3 = intl.formatMessage({ defaultMessage: 'Security Administrator' });\r\n const exOption4 = intl.formatMessage({ defaultMessage: 'AZ-900' });\r\n const searchPlaceholder = intl.formatMessage({ defaultMessage: 'Search' });\r\n const gotIt = intl.formatMessage({ defaultMessage: 'Got It!' });\r\n\r\n const inputRef = useRef(null);\r\n\r\n const onDismiss = useCallback(event => {\r\n setTeachingBubbleVisible(false);\r\n setTeachingBubbleClose(true);\r\n }, []);\r\n\r\n const examplePrimaryButtonProps: IButtonProps = React.useMemo(\r\n () => ({\r\n children: { gotIt },\r\n onClick: onDismiss\r\n }),\r\n [onDismiss, gotIt]\r\n );\r\n\r\n const getSuggestions = async (query: string) => {\r\n const suggestions = await SearchHelper.GetDeliverySuggestions(query, profile, locale.locale, accessToken);\r\n setItems(suggestions);\r\n setShowSuggestions(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (shouldSearch) {\r\n doSearch();\r\n }\r\n }, [doSearch, shouldSearch]);\r\n\r\n useEffect(() => {\r\n if (teachingBubbleClose) {\r\n inputRef.current?.focus();\r\n }\r\n }, [teachingBubbleClose]);\r\n\r\n const onResults = useCallback(\r\n (item: string) => {\r\n setSearchValue(item);\r\n searchBox?.focus();\r\n setShowSuggestions(false);\r\n setShouldSearch(true);\r\n },\r\n [searchBox]\r\n );\r\n\r\n const addSuggestion = useCallback(\r\n event => {\r\n const suggestions = document.getElementsByClassName('item');\r\n const suggestionIndex = suggestions && suggestions.length - 1;\r\n const currentLi = event.target as HTMLLIElement;\r\n const prevId = currentLi.id === '0' ? suggestionIndex : parseInt(currentLi.id) - 1;\r\n const nextId = currentLi.id === suggestionIndex.toString() ? 0 : parseInt(currentLi.id) + 1;\r\n const { key } = event;\r\n if (key === 'ArrowDown') {\r\n event.preventDefault();\r\n (suggestions[nextId] as HTMLLIElement)?.focus();\r\n }\r\n if (key === 'ArrowUp') {\r\n event.preventDefault();\r\n (suggestions[prevId] as HTMLLIElement)?.focus();\r\n }\r\n if (key === 'Enter') {\r\n onResults(currentLi.innerHTML);\r\n }\r\n },\r\n [onResults]\r\n );\r\n\r\n const handleSearchArrow = useCallback(event => {\r\n const { key } = event;\r\n if (key === 'ArrowDown') {\r\n event.preventDefault();\r\n const search = event.target as HTMLInputElement;\r\n const firstLi = document.getElementsByClassName('item')[0] as HTMLLIElement;\r\n if (search) {\r\n firstLi?.focus();\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const search = document.getElementById(searchBoxId) as HTMLInputElement;\r\n if (search) {\r\n search.addEventListener('keydown', handleSearchArrow);\r\n }\r\n\r\n return () => {\r\n search?.removeEventListener('keydown', handleSearchArrow);\r\n };\r\n }, [handleSearchArrow, searchBoxId]);\r\n\r\n const clickHandler = useCallback(event => {\r\n setShowSuggestions(false);\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', clickHandler);\r\n\r\n return () => {\r\n document.removeEventListener('click', clickHandler);\r\n };\r\n });\r\n const handleKeyDown = (event?: React.KeyboardEvent) => {\r\n if (event?.key === 'Enter') {\r\n doSearch();\r\n } else if (event?.key === 'ArrowDown') {\r\n event.preventDefault();\r\n const search = event.target as HTMLInputElement;\r\n const firstLi = document.getElementsByClassName('item')[0] as HTMLLIElement;\r\n if (search) {\r\n firstLi?.focus();\r\n }\r\n }\r\n };\r\n\r\n let timeout: NodeJS.Timeout;\r\n const onChangeSearchField = (event?: React.ChangeEvent) => {\r\n const value = event?.target?.value ?? '';\r\n setSearchValue(value);\r\n clearTimeout(timeout);\r\n if (value.length < 1) {\r\n setShowSuggestions(false);\r\n return;\r\n }\r\n setTeachingBubbleVisible(false);\r\n timeout = setTimeout(() => {\r\n getSuggestions(value);\r\n }, 500);\r\n };\r\n\r\n const handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n };\r\n\r\n const handleOnFocus = () => {\r\n setShowSearchIcon(false);\r\n };\r\n\r\n const handleFocusOut = () => {\r\n setShowSearchIcon(true);\r\n };\r\n\r\n const resetVal = () => {\r\n setSearchValue('');\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n };\r\n\r\n const onEscapeKeyPress = (event: any) => {\r\n const code = event.keyCode || event.which;\r\n if (code === 27) {\r\n setShowSuggestions(false);\r\n }\r\n };\r\n\r\n // const isActiveSearchBox = document.querySelector('input') === document.activeElement;\r\n\r\n return (\r\n \r\n {searchFeature && (\r\n
\r\n
\r\n {showSearchIcon && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n {searchValue.length >= 1 && }\r\n \r\n\r\n {props.notGlobal && }\r\n
\r\n {showSuggestions && (\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n\r\n {teachingBubbleVisible && showBubble && (\r\n
\r\n \r\n

{headline}

\r\n
    \r\n
  • {bodyText}
  • \r\n
  •  
  • \r\n
  • {exOption0}
  • \r\n
  • {exOption1}
  • \r\n
  • {exOption2}
  • \r\n
  • {exOption3}
  • \r\n
  • {exOption4}
  • \r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SearchTextBox;\r\n","import { FocusZone, FontIcon, Icon, Image, Link } from '@fluentui/react';\r\nimport React, { useEffect, useCallback } from 'react';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\n\r\nimport { QueryStringParam } from '../../utilities';\r\nimport { ai } from '../../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { ILearningPathCard, IStepToSuccessItem, ICustomErrorMessage } from '../../models';\r\nimport { IApplicationState } from '../../store';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { GetProfileActions, GetSSOStatusActions } from '../../store/stores/user';\r\nimport { GetLearningPathCardActions } from '../../store/stores/learningPath';\r\nimport TaskListContrast from '../../assets/images/Task_List_Contrast.svg';\r\nimport Info from '../../assets/images/Infomenu.svg';\r\nimport ChatSparkle from '../../assets/images/Main_ChatSparkleNav.svg';\r\nimport Profile from '../../assets/images/Profilemenu.svg';\r\nimport { Helper } from '../../utilities/Helper';\r\nimport SearchTextBox from '../GlobalSearch/SearchTextBox';\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport { useStepsToSuccessPages } from './stepsToSuccessPages';\r\nimport { imagesSVG } from '../../utilities/imagesSVG';\r\n\r\nimport './SideBarNavigation.scss';\r\nimport './RightSideBarNavigation.scss';\r\n\r\nexport interface IComponentProps {\r\n /** showPersona - general info page */\r\n onDismiss?: () => void;\r\n toggleCopilotVisibility: () => void;\r\n enableCopilotForAccount: boolean;\r\n isOpen: boolean;\r\n}\r\n\r\nexport const RightSideBarNavigation: React.FunctionComponent = props => {\r\n let searchFeature = {};\r\n let ULJPhase2 = {};\r\n try {\r\n searchFeature = FeatureFlagValues().searchFeature;\r\n ULJPhase2 = FeatureFlagValues()?.hideULJPhase2;\r\n } catch (error) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { searchFeature }\r\n });\r\n }\r\n } finally {\r\n // how do we want to set the flag?\r\n }\r\n\r\n const { onDismiss, toggleCopilotVisibility, enableCopilotForAccount } = props;\r\n const onClose = useCallback(() => {\r\n if (onDismiss) {\r\n onDismiss();\r\n }\r\n }, [onDismiss]);\r\n\r\n const onCopilotClick = useCallback(() => {\r\n toggleCopilotVisibility();\r\n onClose();\r\n }, [onClose, toggleCopilotVisibility]);\r\n\r\n const [carditemlist, activeLearningPlanId, profile, profileIsSSOEnabled, isSSOServerError, serverErrorMessage] = useSelector(\r\n (state: IApplicationState) => [\r\n state.LearningPathStore.learningPathCards,\r\n state.UserStore.profile.activeLearningPlanId,\r\n state.UserStore.profile,\r\n state.UserStore.ssoprofile.isDomainEligibleForSso,\r\n state.UserStore.isSSOError,\r\n state.UserStore.customErrorMessage\r\n ],\r\n shallowEqual\r\n );\r\n const disableSSOFeatureFlag = FeatureFlagValues().disableLearnSSOForLandingPageAndNavs;\r\n const disableSSO = !profileIsSSOEnabled || disableSSOFeatureFlag;\r\n\r\n useEffect(() => {\r\n if (isSSOServerError) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: serverErrorMessage?.toString(),\r\n errorCode: serverErrorMessage?.toString(),\r\n method: 'UseEffect-Servererror',\r\n page: 'RightSideBarNavigation'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, isSSOServerError }\r\n });\r\n }\r\n }\r\n }, [isSSOServerError, serverErrorMessage]);\r\n\r\n const [getProfile, getLearningPathCards, getSSOStatus] = useEndpointActions([\r\n GetProfileActions,\r\n GetLearningPathCardActions,\r\n GetSSOStatusActions\r\n ]);\r\n const userEmail = sessionStorage.getItem(QueryStringParam.WorkEmailAddress);\r\n\r\n useEffect(() => {\r\n getProfile(userEmail);\r\n const userDomain = Helper.getDomain(userEmail);\r\n if (userDomain != null) {\r\n getSSOStatus(userDomain);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (activeLearningPlanId) {\r\n getLearningPathCards(activeLearningPlanId);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activeLearningPlanId]);\r\n const hascarditemlist = Array.isArray(carditemlist);\r\n\r\n const stepsToSuccessPages = useStepsToSuccessPages();\r\n\r\n const [searchTextBoxVisible, setSearchTextBoxVisible] = React.useState(false);\r\n const hideUljPhase2 = ULJPhase2 ? 2 : stepsToSuccessPages.length;\r\n\r\n const showSearchDialogEnterPressed = (event: any) => {\r\n const code = event.keyCode || event.which;\r\n if (code === 13) {\r\n showSearchDialog();\r\n }\r\n };\r\n\r\n const showSearchDialog = () => {\r\n setSearchTextBoxVisible(true);\r\n };\r\n\r\n const onContinueClose = (onCompletionClose: boolean) => {\r\n if (onCompletionClose) {\r\n onClose();\r\n }\r\n };\r\n\r\n const onCloseEnterPressed = (event: any) => {\r\n const code = event.keyCode || event.which;\r\n if (code === 13) {\r\n onClose();\r\n }\r\n };\r\n\r\n const intl = useIntl();\r\n const learningAssistantNavItem = intl.formatMessage({ defaultMessage: 'Open Learning Assistant' });\r\n\r\n return (\r\n \r\n {hascarditemlist && (\r\n
    \r\n {!searchTextBoxVisible ? (\r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n \r\n \r\n \r\n

    \r\n
    \r\n
    \r\n {searchFeature && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n ) : (\r\n
  • \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Cancel \r\n
    \r\n
    \r\n
    \r\n
  • \r\n )}\r\n {carditemlist !== null &&\r\n carditemlist.map((carditem: ILearningPathCard, index: number) => (\r\n
  • \r\n \r\n
    \r\n {carditem.cardlink.includes('http') && (\r\n \r\n
    \r\n
    \r\n
    \r\n \"Navigation\r\n
    \r\n
    \r\n
    \r\n {carditem.cardtitle}  \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n {!carditem.cardlink.includes('http') && (\r\n \r\n
    \r\n
    \r\n
    \r\n \"Navigation\r\n
    \r\n
    \r\n
    {carditem.cardtitle}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
  • \r\n ))}\r\n
  • \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n {enableCopilotForAccount && (\r\n
  • \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n )}\r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n
  • \r\n
      \r\n {stepsToSuccessPages !== null &&\r\n stepsToSuccessPages?.slice(0, hideUljPhase2).map((stepsItem: IStepToSuccessItem, index: number) => (\r\n
    1. \r\n \r\n
      \r\n \r\n {stepsItem.stepName}\r\n \r\n
      \r\n
      \r\n
    2. \r\n ))}\r\n
    \r\n
  • \r\n
\r\n )}\r\n
\r\n );\r\n};\r\nexport default React.memo(RightSideBarNavigation);\r\n","import React from 'react';\r\nimport { Dialog, DialogType, Link } from '@fluentui/react';\r\nimport { FormattedMessage } from 'react-intl';\r\n\r\nimport { useDisclosure, useLogout } from '../../../hooks';\r\nimport { RightSideBarNavigation } from '../../SideBarNavigation/RightSideBarNavigation';\r\nimport './RightNavMenu.scss';\r\nimport { useAuthenticatedUser } from '../../../hooks/useAuthenticatedUser';\r\n\r\ninterface IComponentProps {\r\n isOpen: boolean;\r\n /** showPersona - general info page */\r\n onClose?: () => void;\r\n toggleCopilotVisibility: () => void;\r\n enableCopilotForAccount: boolean;\r\n}\r\n\r\nexport const RightNavMenu: React.FunctionComponent = props => {\r\n const { isOpen, onClose, toggleCopilotVisibility, enableCopilotForAccount } = props;\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close\r\n };\r\n\r\n const modalProps = {\r\n isBlocking: true,\r\n containerClassName: 'rightNavDialog'\r\n };\r\n const account = useAuthenticatedUser();\r\n const signout = useLogout();\r\n\r\n const displayName = account?.firstName || '';\r\n\r\n const { onToggle } = useDisclosure(false);\r\n\r\n const enterPressed = (event: any) => {\r\n const code = event.keyCode || event.which;\r\n if (code === 13) {\r\n setTimeout(function() {\r\n onToggle();\r\n }, 100);\r\n }\r\n };\r\n\r\n const onsignOutLinkClick = () => {\r\n const isSessionExpired = localStorage.getItem('isSessionExpired');\r\n if (isSessionExpired && isSessionExpired.toLowerCase() === 'yes') {\r\n localStorage.setItem('isSessionExpired', 'no');\r\n }\r\n signout();\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default RightNavMenu;\r\n","import React, { useState, useCallback } from 'react';\r\nimport { FocusZone } from '@fluentui/react';\r\nimport { Navigation24Regular } from '@fluentui/react-icons';\r\n\r\nimport RightNavMenu from './RightNavMenu';\r\n\r\nimport './BurgerMenu.scss';\r\n\r\nconst BurgerMenu = ({\r\n toggleCopilotVisibility,\r\n enableCopilotForAccount\r\n}: {\r\n toggleCopilotVisibility: () => void;\r\n enableCopilotForAccount: boolean;\r\n}) => {\r\n const [isOpen, setisOpen] = useState(false);\r\n const toggle = useCallback(() => {\r\n setisOpen(!isOpen);\r\n }, [isOpen]);\r\n\r\n const escapePressed = (event: any) => {\r\n if (event.key === 'Escape') {\r\n setTimeout(function() {\r\n if (isOpen) {\r\n toggle();\r\n }\r\n }, 100);\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.body.addEventListener('keydown', function(e) {\r\n if (e.key === 'Escape') {\r\n toggle();\r\n }\r\n });\r\n }\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\nexport default BurgerMenu;\r\n","import React from 'react';\r\n\r\nimport BurgerMenu from './BurgerMenu';\r\nimport './NavbarMenu.scss';\r\n\r\nconst NavbarMenu = ({\r\n toggleCopilotVisibility,\r\n enableCopilotForAccount\r\n}: {\r\n toggleCopilotVisibility: () => void;\r\n enableCopilotForAccount: boolean;\r\n}) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default NavbarMenu;\r\n","import React from 'react';\r\nimport './BackoutburgerMenu.scss';\r\n\r\nconst BackoutBurgerMenu = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default BackoutBurgerMenu;\r\n","import { Image, Link } from '@fluentui/react';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { NavLink, useHistory } from 'react-router-dom';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\n\r\nimport { IApplicationState } from '../../store';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { GetProfileActions, GetSSOStatusActions } from '../../store/stores/user/actions';\r\nimport { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport msLogo from '../../assets/images/microsoft-logo-light.png';\r\nimport msLogoContrast from '../../assets/images/MS_logo_Contrast.png';\r\nimport { EmailValidationActions } from '../../store/stores/user';\r\nimport { disableTermsAndConditions, QueryStringParam, Helper, disableTPID } from '../../utilities';\r\nimport { PopupCallout } from '../PopupCallout/PopupCallout';\r\nimport Info from '../../assets/images/Info.svg';\r\nimport InfoContrast from '../../assets/images/Info_Contrast.svg';\r\nimport Profile from '../../assets/images/Profile.svg';\r\nimport ProfileContrast from '../../assets/images/Profile_Contrast.svg';\r\nimport TaskList from '../../assets/images/Task_List.svg';\r\nimport TaskListContrast from '../../assets/images/Task_List_Contrast.svg';\r\nimport CopilotButton from './CopilotButton/CopilotButton';\r\nimport { ICustomErrorMessage } from '../../models';\r\nimport NavbarMenu from './HamburgerMenu/NavbarMenu';\r\nimport BackoutBurgerMenu from './HamburgerMenu/BackoutBurgerMenu';\r\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser';\r\nimport { GetFeatureFlagAction } from '../../store/stores/featureFlag';\r\nimport SearchTextBox from '../GlobalSearch/SearchTextBox';\r\nimport { IESITerms } from '../../models/ESITerms';\r\nimport { useLocale } from '../../components/LocalizationProvider/LocalizationProvider';\r\n\r\nimport './Header.scss';\r\n\r\nexport interface IComponentProps {\r\n /** showPersona - general info page */\r\n showPersona: boolean;\r\n toggleCopilotVisibility: () => void;\r\n enableCopilotForAccount: boolean;\r\n}\r\n\r\n/**\r\n * Header component\r\n *\r\n * @param props - The properties\r\n */\r\nexport const Header: React.FunctionComponent = props => {\r\n const intl = useIntl();\r\n const { showPersona, enableCopilotForAccount, toggleCopilotVisibility } = props;\r\n const history = useHistory();\r\n const account = useAuthenticatedUser();\r\n const tenantId = account?.tenantId;\r\n const authenticationState = !!account?.authenticationState;\r\n const siteName = process.env.REACT_APP_SITE_NAME || '';\r\n const displayName = account?.firstName || '';\r\n const userName = account?.username || '';\r\n const [\r\n companyName,\r\n esiIndicator,\r\n isProfileFetched,\r\n isProfileExists,\r\n profileWorkEmailAddress,\r\n profileEmailAddress,\r\n isAad,\r\n authority,\r\n isMigrateCandidate\r\n ] = useSelector(\r\n (state: IApplicationState) => [\r\n state.UserStore.emailprofile.companyName,\r\n state.UserStore.emailprofile.ESIIndicator,\r\n state.UserStore.isFetched,\r\n state.UserStore.isProfileExists,\r\n state.UserStore.profile.workEmail,\r\n state.UserStore.profile.emailAddress,\r\n state.UserStore.emailprofile.isAad,\r\n state.UserStore.emailprofile.authority,\r\n state.UserStore.emailprofile.isMigrateCandidate\r\n ],\r\n shallowEqual\r\n );\r\n\r\n //eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n //const [enableCopilot, setEnableCopilot] = React.useState(false);\r\n const [getProfile] = useEndpointActions([GetProfileActions]);\r\n const [customerInfo] = useEndpointActions([EmailValidationActions]);\r\n const userEmail = sessionStorage.getItem(QueryStringParam.WorkEmailAddress);\r\n const [getFeatureFlag] = useEndpointActions([GetFeatureFlagAction]);\r\n const eSITerms: IESITerms = useSelector((state: IApplicationState) => state.UserStore.profile.esiTerms);\r\n const [featureFlags] = useSelector((state: IApplicationState) => [state.FeatureFlagStore?.featureFlags]);\r\n const [getSSOStatus] = useEndpointActions([GetSSOStatusActions]);\r\n const { setLocale, setDefaultLocale } = useLocale();\r\n const [isFeatureFlagLoaded, setFeatureFlagLoaded] = React.useState(false);\r\n\r\n useEffect(() => {\r\n if (showPersona && isFeatureFlagLoaded) {\r\n getProfile(userEmail);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [showPersona, isFeatureFlagLoaded]);\r\n\r\n useEffect(() => {\r\n if (featureFlags.length === 0) {\r\n getFeatureFlag();\r\n }\r\n }, [getFeatureFlag, featureFlags.length]);\r\n\r\n const setInitialLocale = () => {\r\n const loc = localStorage.getItem('initLocale') ?? localStorage.getItem('locale') ?? 'en-US';\r\n if (loc !== localStorage.getItem('locale') && loc !== sessionStorage.getItem('locale')) {\r\n localStorage.setItem('locale', loc);\r\n sessionStorage.setItem('locale', loc);\r\n setDefaultLocale(loc);\r\n setLocale(loc, true);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (featureFlags.length > 0) {\r\n const disableTpd = featureFlags?.filter(d => d?.flagName === disableTPID)?.map(m => m?.isEnabledFlag)[0];\r\n if (disableTpd != undefined && disableTpd) {\r\n if (\r\n process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL != null &&\r\n process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL + '/api/' != localStorage.getItem('apiVersionUrl')\r\n ) {\r\n localStorage.setItem('apiVersionUrl', process.env.REACT_APP_API_ENROLLMENTSERVICES_APIVER_URL + '/api/');\r\n }\r\n }\r\n setFeatureFlagLoaded(true);\r\n }\r\n }, [featureFlags, featureFlags.length, setFeatureFlagLoaded]);\r\n\r\n useEffect(() => {\r\n if (isProfileFetched && featureFlags.length > 0) {\r\n const disableEsiTerms = featureFlags?.filter(d => d?.flagName === disableTermsAndConditions)?.map(m => m?.isEnabledFlag)[0];\r\n\r\n if (!disableEsiTerms) {\r\n if (eSITerms && eSITerms.isESITermsAccepted) {\r\n sessionStorage.setItem(QueryStringParam.IsESITermsAccepted, 'yes');\r\n setInitialLocale();\r\n } else {\r\n if (!sessionStorage.getItem(QueryStringParam.IsESITermsAccepted)) {\r\n const pathName = window.location.pathname.split('/');\r\n if (\r\n pathName &&\r\n pathName[1] &&\r\n pathName[1] !== '' &&\r\n pathName[1].toLowerCase() !== 'esiagreement' &&\r\n pathName[1].toLowerCase() !== 'aadlogin' &&\r\n pathName[1].toLowerCase() !== 'about' &&\r\n pathName[1].toLowerCase() !== 'locale'\r\n ) {\r\n history.push({\r\n pathname: '/esiAgreement/',\r\n state: {\r\n pathName: window.location.pathname,\r\n search: window.location.search\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }, [isProfileFetched, eSITerms, history, featureFlags, setInitialLocale]);\r\n\r\n // Get customer information using work email address\r\n useEffect(() => {\r\n if (isProfileFetched && profileWorkEmailAddress !== '' && companyName === '' && isFeatureFlagLoaded) {\r\n sessionStorage.setItem(QueryStringParam.WorkEmailAddress, profileWorkEmailAddress);\r\n customerInfo({ emailAddress: profileWorkEmailAddress });\r\n const userDomain = Helper.getDomain(profileWorkEmailAddress as string);\r\n if (userDomain != null) {\r\n getSSOStatus(userDomain);\r\n }\r\n }\r\n\r\n if (isAad === true) {\r\n sessionStorage.setItem(QueryStringParam.IsAad, 'true');\r\n }\r\n if (isAad === false) {\r\n sessionStorage.setItem(QueryStringParam.IsAad, 'false');\r\n }\r\n if (authenticationState) {\r\n sessionStorage.setItem(QueryStringParam.IsAuthenticated, 'true');\r\n }\r\n\r\n if (authority !== null && authority !== '') {\r\n sessionStorage.setItem(QueryStringParam.Authority, authority);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isProfileFetched, companyName, authenticationState, isFeatureFlagLoaded]);\r\n\r\n // Real edge case where AAD or non-Aad active session exists and prompted to singout.\r\n useEffect(() => {\r\n if (isProfileFetched && isProfileExists && esiIndicator && profileEmailAddress && !isMigrateCandidate) {\r\n if (esiIndicator !== profileEmailAddress) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description:\r\n intl.formatMessage({\r\n defaultMessage: 'It looks like you already have an active LxP account with'\r\n }) +\r\n ' ' +\r\n esiIndicator +\r\n '.',\r\n signOutPrompt: true,\r\n method: 'UseEffect-ActiveSession',\r\n page: 'Header'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, isProfileFetched, isProfileExists, esiIndicator, profileEmailAddress, tenantId }\r\n });\r\n }\r\n history.push('/about/', {\r\n error: friendlyError\r\n });\r\n return;\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n isAad,\r\n isProfileFetched,\r\n isProfileExists,\r\n userEmail,\r\n profileEmailAddress,\r\n profileWorkEmailAddress,\r\n esiIndicator,\r\n history,\r\n intl,\r\n isMigrateCandidate\r\n ]);\r\n\r\n const onSiteNameClick = useCallback(\r\n e => {\r\n e.preventDefault();\r\n history.push('/landing');\r\n },\r\n [history]\r\n );\r\n\r\n return (\r\n \r\n <>\r\n {isFeatureFlagLoaded && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {companyName && (\r\n \r\n \r\n {companyName}\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {showPersona && (\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n \"\"\r\n \"\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n \"\"\r\n \"\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n \"\"\r\n \"\"\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {enableCopilotForAccount && }\r\n \r\n )}\r\n {showPersona && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n {showPersona && }\r\n
\r\n
\r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(Header);\r\n","import { PrimaryButton } from '@fluentui/react';\r\nimport { DefaultButton, Dialog, DialogType, FontIcon } from 'office-ui-fabric-react';\r\nimport React from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\n\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport { useLogout } from '../../hooks';\r\nimport { sessionExpireCountdownTime } from '../../utilities/Constants';\r\n\r\nimport './SessionTimeout.scss';\r\n\r\ninterface IComponentProps {\r\n onContinue?: any;\r\n isOpen: boolean;\r\n onDismiss?: () => void;\r\n subText?: string;\r\n}\r\n\r\nconst SessionTimeout: React.FunctionComponent = props => {\r\n const { isOpen, subText, onContinue } = props;\r\n const intl = useIntl();\r\n const signout = useLogout();\r\n const hideSessionTimeout = FeatureFlagValues()?.hideSessionTimeout;\r\n\r\n const staySignedIn = () => {\r\n handleContinueSession(true);\r\n setTime([sessionExpireCountdownTime]);\r\n };\r\n\r\n const dialogContentProps = {\r\n type: DialogType.normal,\r\n closeButtonAriaLabel: 'Close',\r\n showCloseButton: false,\r\n subText: subText\r\n };\r\n\r\n const modalProps = React.useMemo(\r\n () => ({\r\n isBlocking: true,\r\n containerClassName: 'dialogContent'\r\n }),\r\n []\r\n );\r\n\r\n const [[s], setTime] = React.useState([sessionExpireCountdownTime]);\r\n\r\n const tick = () => {\r\n if (s === 0) {\r\n handleContinueSession(false);\r\n } else {\r\n setTime([s - 1]);\r\n }\r\n };\r\n\r\n const handleContinueSession = (showSessionExpired: boolean) => {\r\n if (showSessionExpired === false && !hideSessionTimeout) {\r\n localStorage.setItem('isSessionExpired', 'yes');\r\n signout();\r\n } else {\r\n localStorage.setItem('isSessionExpired', 'no');\r\n onContinue();\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!isOpen && !hideSessionTimeout) {\r\n const timerID = setInterval(() => tick(), 1000);\r\n return () => clearInterval(timerID);\r\n }\r\n });\r\n\r\n return (\r\n <>\r\n {!hideSessionTimeout && (\r\n