{"version":3,"sources":["../node_modules/@cseofeedback/feedback-lite/dist/esm lazy /^/.*/.entry/.js$/ include: /.entry/.js$/ exclude: /.system/.entry/.js$/ groupOptions: {} namespace object","services/telemetry/TelemetryService.ts","Constants.ts","components/constants.ts","services/config.ts","services/telemetry/TelemetryUtils.ts","components/spinner/SpinnerComponentStyles.ts","components/spinner/SpinnerComponent.tsx","utilities/hooks/useMountedRef.ts","utilities/i18n.helper.ts","utilities/applicationUtils.ts","container/ActionCenter/hooks/useActionCenterTitle.ts","container/ActionCenter/index.tsx","container/Apply/index.tsx","ShellCustomEvents.ts","container/Profile/index.tsx","locales/langResources.ts","i18n.config.ts","services/auth/loginContext/index.tsx","Fre/FreConstants.ts","Fre/Banner/BannerStyle.ts","services/telemetry/analytics/Constants.ts","services/telemetry/analytics/AnalyticsPageEvent.ts","Fre/Banner/GCSRecommendationBanner.tsx","Fre/Banner/BannerWrapper/BannerWrapper.tsx","components/footerTop/FooterTopInbuiltStyle.tsx","services/profile/axiosProfileInstance.ts","services/profile/profileApi.ts","services/auth/utils/CandidateIdManager.ts","services/auth/utils/utilities.ts","components/staticLinks.ts","components/cookieBanner/pixels/constants.ts","components/footerTop/FooterTop.tsx","components/cookieBanner/config.ts","components/cookieBanner/pixels/utils.ts","components/cookieBanner/manager.ts","components/cookieBanner/utils.ts","services/telemetry/AdobeAnalyticsConfig.ts","components/cookieBanner/index.tsx","services/telemetry/AdobeAnalyticsService.ts","components/createProfile/CreateProfileStyle.ts","services/auth/Msal.ts","services/staticdata-fetch/axiosConfig.ts","services/staticdata-fetch/staticdata-api.ts","components/createProfile/ProfileDetails.tsx","components/createProfile/utils/useValidation.ts","utilities/hooks/useAddressTaxonomy.ts","components/login/LoginModal.style.ts","components/createProfile/ConsentPage/China/ChinaConsentConstants.ts","components/createProfile/ConsentPage/China/ChinaConsent.tsx","components/createProfile/ConsentPage/Russia/RussiaConsentConstants.ts","components/createProfile/ConsentPage/Russia/RussiaConsent.tsx","components/createProfile/ConsentPage/ConsentPage.tsx","components/createProfile/ConsentPage/ConsentWrapper.tsx","components/createProfile/CreateProfile.tsx","components/errorcomponent/ErrorBannerComponent.tsx","components/errorcomponent/ErrorComponent.styles.ts","components/errorcomponent/CandidateNotAvailableSvg.tsx","components/errorcomponent/GlobalErrorIconSvg.tsx","components/errorcomponent/ErrorComponent.tsx","services/flighting/index.tsx","components/footer.tsx","components/footervNext/socialIcons.tsx","components/footervNext/config.ts","components/footervNext/footer.styles.ts","assets/californiaprivacy.svg","container/JobSearch/Index.types.ts","components/useWindowWidth.ts","services/survey/campaigns.ts","services/survey/SurveyTelemetrySinkProvider.ts","services/survey/recommendationCampaign.ts","services/survey/FloodgateService.ts","components/footervNext/index.tsx","interfaces/errorPage.ts","components/gcserrorcomponents/GcsErrorBannerComponentStyle.ts","components/gcserrorcomponents/GcsErrorBannerComponent.tsx","components/gcserrorcomponents/GcsGlobalErrorIconSvg.tsx","components/gcserrorcomponents/GcsErrorComponent.tsx","utilities/hooks/useProfile.ts","components/header/header.tsx","services/acServicesApi.ts","services/auth/hooks/featureFlagsUtil.ts","services/feature-flag/index.tsx","container/JobSearch/Index.tsx","components/login/authProvider.ts","container/JobSearch/useJobSearchTranslation.ts","container/JobSearch/useSearchNavigationEvent.ts","container/JobSearch/useNavigateShell.ts","components/login/LoginCard.tsx","components/login/loginIcons.tsx","components/login/separator/VerticalSeparator.tsx","components/login/separator/HorizontalSeparatorStack.tsx","components/login/ProgressIndicator.tsx","components/login/index.tsx","components/login/LoginWrapper.tsx","components/navbar/NavbarInBuiltStyle.tsx","components/navbar/SubNav/config.ts","components/navbar/SubNav/subNav.styles.ts","components/navbar/SubNav/SubNav.tsx","components/navbar/Navbar.tsx","assets/megaphone.svg","components/ocvFeedback/useFeedbackTranslations.tsx","components/ocvFeedback/OCVFeedbackOptions.ts","components/ocvFeedback/OCVFeedback.tsx","utilities/hooks/useQueryParams.ts","components/protectedRoute/ProtectedRoute.tsx","container/Referral/hooks/useReferralPageTitle.ts","container/Referral/index.tsx","container/Support/index.tsx","services/axiosCandidateInstance.ts","services/candidateApi.ts","services/downtime/downtime-service.ts","components/login/hooks/useInactivityTracker.ts","App.tsx","utilities/hooks/useUnplannedMonitoring.ts","index.tsx","register-web-components.ts"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","appInsights","RequestQueryString","ExternalUserType","InternalUserType","ErrorPageType","Activity","BannerType","SpinnerVisibility","SearchLoadingEvent","ApplySpinnerVisibility","ProfileSpinnerVisibility","ReferralSpinnerVisibility","ErrorPageTranslationRoot","ErrorPageTranslationKeys","CustomBannerKeys","GcsBannerKeys","sessionLang","Lang","CountryAndStateTaxonomy","SocialAuthErrorMismatch","SupportLoadingEvent","Close","SignInErrorCode","MicrosoftEmployeeAccount","MicrosoftAccount","recommendedJobCookieConstant","NameUpdateEvent","CheckLoginContext","UHFHeaderHTML","UHFFooterHTML","UHFHeaderHTML_frCA","UHFFooterHTML_frCA","CssIncludes","JavaScriptIncludes","ProfileNameUpdate","RootNavLocale","SubRootNavLocales","SubRootNavLocalesTitles","Footer","FooterItems","OpenInNewTab","UHFHeaderLinksClassName","UHFFooterLinksClassName","Locales","en","en_us","fr_ca","ApplyApplicationLoading","RecommendationExperienceFeature","Loading","CreateProfileItems","Loginitems","RootCreateProfile","RootLogin","RegulatedCountryList","LoginIcons","Live","microsoft","MicrosoftFte","actionCenterPathName","RedirectUri","nameRegex","ChineseLangConstant","RussianLangConstant","LangFooterClickEvent","IsCleanLogout","inactivityKey","AuthSessionId","config","msalConfig","clientId","process","authority","tenant","redirectUri","window","location","origin","postLogoutRedirectUri","loginScopes","internalUserIdps","telemetry","enableHeartMetrics","Boolean","instrumentationKey","serviceOffering","serviceLine","service","componentName","subComponentName","componentId","application","sessionId","uuidv4","environmentName","telemetryConfig","EnvironmentName","ENVIRONMENT_NAME","InstrumentationKey","candidateId","userProfile","careersPortalLink","monitoringEndPointURL","actionCenterApi","baseUrl","flightingApiPath","countryAndStateTaxonomyPath","apiRetryCount","candidateApi","getCandidateInfoApiPath","profileApi","getProfileDetailsApiPath","createProfileApiPath","patchProfileData","staticContentConfig","REACT_APP_STATICCONTENT_BASEURL","FreConfig","FreEndPoint","WcpCookieBannerUrl","privacyStatementUrl","wcpScriptUrl","googlePixels","tagManagerConfig","tagManagerConversionConfig","tagManagerScript","ocv","appId","area","production","supportScriptsUrl","careersSubDomain","wcpSiteContent","undefined","loginRequest","scopes","flatProperties","inputProps","retVal","forEach","key","index","String","commonLogProperties","correlationId","LOG_TELEMETRY_TO_CONSOLE","trackMetric","metric","customProperties","console","log","trackException","exception","trackEvent","featureName","event","email","candidateEmail","btoa","logProperties","candidateType","isExternal","assign","name","properties","spinnerStyles","root","width","height","zIndex","SpinnerComponent","props","t","useTranslation","spinnerLabel","label","Spinner","size","SpinnerSize","large","ariaLive","labelPosition","styles","useMountedRef","mounted","useRef","useEffect","current","languagesConfig","title","lang","route","linkLocale","host","getHrefByLang","url","getQueryText","queryText","sessionStorage","getItem","getCareersPortalURI","extractPathFromPhenomInternalPath","internalPhenomRoutePath","routeParams","matchPath","params","entries","filter","val","join","extractPathFromPhenomPagePath","pagePhenomPath","category","existingPhenomMatchingPaths","phenomToGCSMap","extractCorrectPathFromExistingPhenomPath","existingResultsPath","transformedRouteParams","country","transformPhenomPage","phenompage","changeDocumentTitle","document","getLoginCredential","domain","localStorage","login_hint","createB2CAuthUrl","domain_hint","redirectionUrl","encodeURIComponent","clearLoginCredential","removeItem","triggerSilentLogin","urlRegex","loginRedirectUrl","test","href","clearDomainAndLoginHint","loginCredential","token","Cookies","set","httpOnly","signInUrl","getStateValue","sessionToken","queryParams","push","urlObj","URL","URLSearchParams","search","domainParamOnly","has","getAll","length","loginHintParamOnly","delete","newUrl","pathname","toString","i","value","history","pushState","path","disableGCSCustomBanner","errorBannerEvent","CustomEvent","detail","visibilityFlag","dispatchEvent","checkGPTOptOutPolicy","navigator","globalPrivacyControl","cookieName","cookieValue","cookie","match","getCookie","checkThirdPartyAdsOptOutCookie","handleShellSignOut","instance","isHeaderLogout","setItem","JSON","stringify","currentPage","includes","logoutRedirect","UtmSources","appendToUrl","baseString","paramKey","paramValue","firstAdd","dontEncode","addedString","replace","extractLoginContextForCMSPage","loggedInUserContext","LoggedInUserAuthConext","domainHint","idp","emailparsed","ActionCenterRoutes","ApplyRoutes","ActionCenter","React","ActionCenterURI","mainSrc","setMainSrc","ocvFeedbackSrc","ocvFeedbackStyle","setOcvFeedbackStyle","ocvFeedbackLoaded","cssSrc","scriptsLoaded","isSpinnerVisible","setIsSpinnerVisible","i18n","language","prevTitle","appName","apploadedTimeStamp","Date","logBeforeUnload","unloadTimeStamp","average","toInteger","sampleCount","wait","ms","res","setTimeout","axiosInstance","axios","create","timeout","loadAssetManifest","retryCount","get","response","data","a","error","errorMessage","ex","message","styleTag","createElement","rel","setAttribute","getElementsByTagName","appendChild","scriptTag","src","handleSpinner","addEventListener","removeEventListener","dispatchLang","i18nLangEvent","lng","dispatchLangEvent","deps","querySelectorAll","dep","remove","routeType","reference","travel","expense","ref","ApplyModuleInvocationEvent","showSupportFormEvent","supportFormInvocationEvent","ProfileRoutes","ApplyExperience","useState","isApplySpinnerVisible","setIsApplySpinnerVisible","setScriptsLoaded","manifestAssets","setManifestAssets","applyAppLoadTimeStamp","ApplyExperienceURI","assets","property","asset","applyInvocationEvent","triggerApplyModuleInvocationEvent","addScriptToHeader","scriptSource","logBeforeApplyUnload","runtimeScript","find","vendorsScript","mainScript","element","endsWith","styleSource","type","addStyleToHeader","apply","ProfileExperience","isProfileSpinnerVisible","setIsProfileSpinnerVisible","profileAppLoadTimeStamp","ProfileExperienceURI","profileInvocationEvent","triggerProfileModuleInvocationEvent","logBeforeProfileUnload","profile","langResources","translation","en_US_trans","i18nLang","use","initReactI18next","init","resources","debug","fallbackLng","interpolation","escapeValue","react","LoginContext","createContext","showLoginDialog","setCandidateId","setLoginDialog","setRedirectionUrl","showCreateProfileDialog","showRegulatoryConsentDialog","setShowCreateProfileDialog","setShowRegulatoryConsentDialog","candidateSocialAuthProvider","setCandidateSocialAuthProvider","candidateSocialAuthIssuerId","setCandidateSocialAuthIssuerId","showSocialAuthMismatchError","setShowSocialAuthMismatchError","validSocialAuthDetailsIncaseOfMismatch","setValidSocialAuthDetailsIncaseOfMismatch","showConsentDialog","setShowConsentDialog","setRegulatoryCountry","regulatoryCountry","candidateCountry","setCandidateCountry","LoginContextProvider","children","showModal","setModal","setredirectionUrl","socialAuthProvider","setSocialAuthProvider","issuerId","setIssuerId","isSocialAuthMismatch","setIsSocialAuthMismatch","socialAuthDetail","setSocialAuthDetail","Provider","VisitedFre","StartDate","EndDate","freBannerStyling","content","padding","alignItems","innerText","lineHeight","fontSize","color","background","freBannerLinkStyling","border","textDecoration","AnalyticsConstants","trackPageAction","contentTagKey","contentTagValue","behaviorId","isExternalUser","pageType","currentView","userType","getUserType","overrideValues","isAuto","urlCollectQuery","behavior","pageName","actionType","pageTags","aud","contentTags","callAnalyticsEvent","eventType","trackAnalyticsEvent","GCSRecommendationBanner","isBannerVisible","setIsbannerVisible","bannerText","setBannerText","bannerButton","setBannerButton","cookieData","setCookieData","useContext","bannerLinkUrl","resolvedUrl","CMSPage","prepareCMSUrl","feature","currentDate","cookieObj","parse","isEqual","MessageBar","messageBarType","MessageBarType","info","dismissButtonAriaLabel","onDismiss","expires","className","role","aria-live","Link","onClick","BannerWrappper","containerStackStyles","inner","marginRight","languageLinkStyles","languageSelectedLinkStyles","fontWeight","iconStylesForStacksParent","display","verticalAlign","pointerEvents","paddingBottom","iconStylesForStacks","footerMiddle","float","marginTop","firstStackStyles","margin","selectors","maxWidth","marginLeft","firstStackItemStyles","justifyContent","fontFamily","cursor","stackStyles","itemStyleLeft","itemStyles","marginImgs","marginInsta","languageStyles","englishStyles","borderRight","frenchStyles","fabricRootStyles","axiosProfileInstance","Axios","baseURL","axiosRetry","retries","retryDelay","exponentialDelay","interceptors","request","axiosConfig","reject","headers","accessToken","defaults","Authorization","payload","post","patchProfileDataPath","patch","CandidateIdManager","SetCandidateId","candidateInfo","GetCandidateId","FlushCandidateId","FlushCandidateInfo","GetCandidateDetails","getBasicProfile","configureUserDetails","account","claims","idTokenClaims","fullName","given_name","family_name","split","getUserCountry","isAem","queryString","CandidateCountry","indexOf","envLink","getNavBarLinks","isFrenchSite","siteLangPath","professionalsPath","studentsAndGrads","signOutPageLink","getExternalLinks","getInternalLinks","getFooterLinks","sitePath","completeSitePath","FAQ","InterviewTips","AccessibilityRequest","Comment","LegalPolicies","DPN","Labor","LinkedInMSAccount","LinkedInLogo","TwitterMSAccount","TwitterLogo","FacebookMSAccount","FacebookLogo","InstaMSAccount","InstaLogo","FrenchFlag","contructFooterLinks","CampaignPaths","sectionStackTokens","childrenGap","firstStackTokens","BrandingFooter","useMsal","setProfile","_hrefs","getAllAccounts","isMSEmployee","changeLanguage","locale","scrollTo","top","Stack","horizontal","wrap","FooterTopStyles","tokens","aria-label","style","Icon","iconName","target","alt","BrandingFooterWrapper","Fabric","GCSVNextCookieBannerId","WcpScriptSrc","DataPrivacyNoticeText","CookieSubDomain","WcpCookieConsentNameGCSVnext","WcpInitCallbackEventName","DataPrivacyLink","MaximumAdScriptId","Apply","Home","ThankTou","addBingMuidPixel","divComponent","innerHTML","body","addMaximumAgencyPixel","onload","Krit_Universal_Pixel","up_010ab663_b671_1a01_8dd5_6292320002bb","setkrit_piurl","jobId","candidacyId","setkrit_Param","setAsync","makeAd","_addMaximumAd","async","defer","_addMaximumCampaign","candidacyDetailsStringified","candidacyDetails","_addMaximumCampaignDetailsFromSession","CookieManager","consent","Analytics","scriptElem","getElementById","parentNode","removeChild","removeMaximumAgencyPixel","handleConsent","newConsent","adobeAnalyticsConfig","channelConfiguration","eventsLimitInMem","propertyConfiguration","env","gpcDataSharingOptIn","callback","userConsentDetails","wcpCookieConsentValue","Required","SocialMedia","Advertising","webAnalyticsConfiguration","autoCapture","scroll","pageView","onLoad","onUnload","click","resize","jsError","CookieBanner","isAEM","_onScriptLoaded","cultureParam","canadaRoutePath","localeLang","createCultureParam","culture","placeHolderElement","initCallback","onConsentChanged","WcpConsent","theme","themes","light","_wcpConsentInit","err","_siteConsent","siteConsent","wcpInitEvent","isConsentRequired","getConsent","_consentControl","consentControl","showBanner","forceShowBannerIfConsentIsRequiredButNotHandled","cookieBannerRootComponent","cookieBannerLinkComponents","dataPrivacyNoticeLinkComponent","changePrivacyLinkStatementInBanner","Function","func","initializeAnalytics","intervalChangePopupLink","setInterval","requiredChangeCompleted","cookiePreferenceControlComponent","cookieBannerControlComponent","changePrivacyLinkStatementInPopup","clearInterval","modalStyles","scrollableContent","overflowY","iconStyles","marginBottom","calloutStyle","taxonomyDropdownStyle","optionsContainerWrapper","maxHeight","callout","CreateProfileStyles","mergeStyleSets","containerStyles","fontStyle","createProfileWrapperStyles","minHeight","headerStyle","instructionStyle","consentTextDiv","consentPageDiv","emailLabelStyles","optionalLabelStyles","optionalTextLabelStyles","DetailsStyle","nameColumnItemStyles","flexBasis","creatingButtonSpan","nameColumnFinalItemStyles","consentWrapper","consentHeader","consentSubHeader","emailColumnItemStyles","alreadyHaveAccountStyles","consentWrapperButtonStyles","ConsentWrapperSignInDivStyle","flexDirection","profileSubmitStyle","profileSpinner","consentProfileSpinner","regionItemStyles","columnStyles","flexFlow","emailColumnStyles","SpinnerStyles","ButtonStyles","saveButton","borderRadius","borderColor","creatingButton","creatingConfirmButton","confirmButton","backButton","partialTheme","createTheme","palette","themePrimary","themeDark","linkStyles","getToken","silentProfileRequest","loginHint","username","acquireTokenSilent","resp","staticContentEndpoint","stateTaxonomyEndpoint","ProfileDetails","onSubmit","setCountry","firstName","middleName","lastName","setEmail","setFirstName","setLastName","setMiddleName","createProfileInProgress","createProfileError","getNameErrorMessage","validateName","useCallback","validateLength","newValue","trim","fieldName","requiredField","trimmedValue","useValidation","validationStarted","setValidationStarted","countryValidation","setcountryValidation","countryDropdownData","countryAndStateList","setCountryAndStateList","countryList","setCountryList","setCountryDropdownData","getCountryTaxonomy","countryfromSession","status","obj","ParentSourceId","SourceId","text","useAddressTaxonomy","accounts","labelId","useId","useBoolean","isCalloutVisible","toggleIsCalloutVisible","toggle","descriptionId","iconButtonId","customEmailLabel","IconButton","iconProps","ariaLabel","Callout","ariaDescribedBy","DelayedRender","Text","variant","customMiddleNameLabel","htmlFor","getCustomMiddleNameLabel","useMemo","substring","lastIndexOf","authProviderId","issuerUserId","slice","catch","getCustomLabel","underline","TextField","onChange","ev","onRenderLabel","disabled","placeholder","ComboBox","options","selectedKey","_event","option","selectedCountry","scrollSelectedToTop","allowFreeform","autoComplete","DefaultButton","small","PrimaryButton","getTheme","contentStyles","header","fonts","xLargePlus","FontWeights","semibold","iconButtonStyles","neutralPrimary","rootHovered","neutralDark","stackItemStyles","div","employeeStackItemStyles","itemAlignmentsStackStyles","itemAlignmentsStackTokens","cancelIcon","stackTokens","verticalStyle","mergeStyles","DPNLink","ChinaConsent","One","Two","Three","ForwardLink","LinkText","RussiaConsent","ConsentPage","setRegulatoryConsent","checked","Checkbox","isChecked","ConsentWrapper","onCancel","isReferralFlow","CreateProfile","showProfileDetails","setShowProfileDetails","setCreateProfileInProgress","setcreateProfileError","showConsent","setShowConsent","isConsentReceived","setIsConsentReceived","isModalOpen","setFalse","Number","onProfileSubmit","isSocialAuthPresentForCandidate","onPatchProfileData","onCreateProfileData","profileDetails","CandidateId","Candidate","CandidateEmail","CandidateFirstName","CandidateLastName","CandidateMiddleName","CandidatePreferredFirstName","CandidateRegulatoryConsent","IsConsentReceived","RegulatoryAuditRequestDateTime","toJSON","RegulatoryCountry","link","RegulatoryAuditDateTime","candidateAuthenticationModel","authenticationProviderId","socialAccountUri","authenticationType","Locale","prepareProfilePatchPayload","Modal","titleAriaId","isOpen","isBlocking","containerClassName","ErrorBannerComponent","isBannerEnable","setIsBannerEnable","bannerMessage","setBannerMessage","handleNewMessage","customBannerArgs","requestUrl","statusCode","apiStatus","errorBanner","severeWarning","iconContainer","paddingTop","icon","csActionCenterTitleStyle","gcsNotfoundPageButtonStyles","backgroundColor","rootPressed","rootFocused","CandidateNotAvailableSvg","iconSize","setIconSize","innerWidth","viewBox","fill","xmlns","d","fill-opacity","stroke","stroke-width","stroke-miterlimit","opacity","cx","cy","r","gradientUnits","gradientTransform","offset","stop-color","stop-opacity","x1","y1","x2","y2","GlobalErrorIconSvg","ErrorComponent","serviceName","useHistory","isButtonEnabled","isActionCenterTitleEnabled","headingText","buttonElement","descriptionText","horizontalAlign","computedHtml","FlightingContext","isFlighted","isLoading","isCandidateCallRequired","FlightingProvider","flight","setFlight","setIsLoading","setIsCandidateCallRequired","isNewShell","finally","footerHTML","__html","universalFooterEvent","sender","preventDefault","anchorLink","getAttribute","open","localePicker","footerAnchorElements","getElementsByClassName","ClassNameUsedInCode","dangerouslySetInnerHTML","registerIcons","icons","maskType","maskUnits","x","y","mask","clipPath","stopColor","stopOpacity","clientBaseURL","socialLinks","footerL2CaliforniaPrivacyLink","i18nKeyFooterL1","i18nKeyFooterL2","footerL1","DefaultPalette","neutralLighterAlt","footerL2","neutralLighter","paddingRight","footerLinkCollectionStyles","overflow","_extends","arguments","source","prototype","hasOwnProperty","call","this","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgCaliforniaprivacy","_ref","svgRef","titleId","xmlSpace","fillRule","clipRule","JobSearchRoutes","ForwardRef","useWindowWidth","setWidth","handleWindowResize","campaigns","CampaignId","StartTimeUtc","GovernedChannelType","NominationScheme","Type","PercentageNumerator","PercentageDenominator","NominationPeriod","IntervalSeconds","CooldownPeriod","SurveyTemplate","ActivationEvent","Count","IsAggregate","Content","Prompt","Title","Question","YesLabel","NoLabel","Rating","IsZeroBased","RatingValuesAscending","SurveyTelemetrySinkProvider","sink","createSink","isEUDBUser","persistentDataFields","OTel","getFields","isAnonymous","platform","version","oneDsSink","OneDSSink","endpointUrl","OneDSEndpoint","EUDB","PUBLIC","recommendationCampaigns","FloodgateTriggerIntervalInMilliSeconds","sinkProvider","floodgateService","isRecommendationsPage","anyWindow","OfficeBrowserFeedback","floodgate","initialize","start","getEngine","getActivityListener","logActivity","str","initOptions","stylesUrl","intlUrl","intlFilename","environment","userEmail","userEmailConsentDefault","telemetryGroup","featureArea","telemetrySink","getTelemetrySink","onError","autoDismiss","campaignDefinitions","campaignId","submitted","uIStringGetter","translationKey","i18next","onfocus","onblur","stop","onunload","SystemName","appUsageTime","REACT_APP_SURVEY_APPUSAGE_INSECONDS","FootervNext","isExternalCandidate","currentLang","setIsConsentRequired","isSurveyEnabled","recommendedjobs","floodgateStart","setFloodgateStart","startEngine","triggerAppUsageStartActivity","_handleWcpInitCallback","langRoute","handleLanguageChange","selectedRoute","langButtonEvent","as","values","arr","Item","align","isEnglishSite","footerL1Links","FontIcon","aria-hidden","footerL2Links","manageConsent","getFullYear","GcsErrorBannerStyles","textAlign","flex","order","flexgrow","alignSelf","flexGrow","GcsErrorBannerComponent","GcsGlobalErrorIconSvg","strokeWidth","transform","ErrorCodeText","GcsErrorComponent","Icims","useProfile","isAuthenticated","useIsAuthenticated","legalFirstName","Header","candidateProfile","user","domLocation","useLocation","headerHTML","handleSignOut","shellOptions","preferredFirstName","CandidatePreferredLastName","preferredLastName","meControlOptions","apiGeneration","authProviderConfig","appSignInUrl","appSignInToUrl","appSignOutUrl","appSwitchUrl","appSwitchToUrl","signOutFromApp","signIn","msa","aad","currentAccount","authenticatedState","memberName","displayName","universalHeaderEvent","msCommonShell","load","onShellReadyToLoad","interval","profileLink","querySelector","onclick","profileBtn","profileInnerImage","removeAttribute","focus","allMs","headerAnchorElements","skipToMain","mainContainer","classList","focusableElements","singInButtonClick","redirectUrl","loginEvent","searchBoxIcon","clonedSearchBoxNode","cloneNode","replaceChild","searchUHFHeaderEvent","childNodes","node","textContent","toLocaleLowerCase","signInText","stopImmediatePropagation","searchUrl","callActionCenterAPI","apiPath","Headers","bearer","append","method","apiUrl","fetch","json","getFeatureFlag","featureFlagName","flightsEndpoint","FeatureFlagContext","isRecommendationExperienceFeatureEnabled","isRecommendationLoading","FeatureFlagProvider","setIsRecommendationExperienceFeatureEnabled","result","AuthProvider","JobSearchExperience","texts","SearchExperienceLoading","JobDetailsLoading","SavedJobsLoading","AlertsLoading","RecommendedJobsLoading","useJobSearchTranslation","isJobSearchSpinnerVisible","setIsJobSearchSpinnerVisible","searchWebAppLoadTimeStamp","JobSearchExperienceURI","logBeforeSearchWebAppUnload","callbackRegistered","setCallbackRegistered","unlisten","listen","argLocation","action","searchNavigationTriggerEvent","useSearchNavigationEvent","navigateShell","args","useShellNavigation","job","savedjobs","alerts","SocialAuthProvider","google","facebook","live","microsoftFte","linkedIn","LoginCard","loginHandler","isMicrosoftEmployee","altResponsiveTitle","hiddenFileInput","tabIndex","data-test-id","onKeyDown","keyCode","xmlnsXlink","patternContentUnits","xlinkHref","VerticalSeparatorStack","Children","child","HorizontalSeparatorStack","ProgressIndicatorBasicExample","percentComplete","setPercentComplete","ProgressIndicator","progressBar","SignIn","hideModal","socialAuthMismatch","setSocialAuthMismatch","isSignInProgress","validSocialAuthMismatch","setValidSocialAuthMismatch","setSessionToken","dismissModal","back","severityLevel","loginErrorCode","searchParams","socialAuth","toLowerCase","disableShrink","Separator","vertical","LoginWrapper","firstNavStyles","group","minWidth","transition","transitionProperty","transitionDuration","transitionTimingFunction","transitionDelay","chevronButton","paddingLeft","borderBottom","chevronIcon","right","left","isExpanded","groupContent","navItem","compositeLink","linkText","secondNavStyles","navItems","subNavConfig","isFrench","i18nSubNavMenu","commandBarStyles","primarySet","gap","position","iconHovered","black","getCommandBarButtonStyles","memoizeFunction","originalStyles","concatStyleSets","overflowProps","menuProps","subComponentStyles","menuItem","items","SubNav","item","isActive","menuBarElement","CommandBar","overflowButtonProps","buttonAs","CommandBarButton","_window","getWindow","eventAdded","NavbarCareersComponent","isFlightLoading","isDownTimeVNextDisable","setName","isActionCenterLinkEnabled","setIsActionCenterLinkEnabled","canExpand","setCanExpand","groupExpanded","setGroupExpanded","view","isFlexibleWorkMenuEnabled","setFlexibleWorkMenuFlag","firstLocName","handleApplyModuleEvent","handleMessage","candidatePayload","hiLinkGroupName","onHeaderClick","isCareerHeader","newGroupExpanded","careersLabel","eventTargetElem","keyName","stopPropagation","onRenderGroupHeader","defaultRenderer","links","frenchSiteClass","setFrenchClass","setIsFrenchSite","firstCommonNavLinkGroups","collapseAriaLabel","collapseByDefault","expandAriaLabel","extraHeadersForInternalEmployees","firstNavLinkGroups","concat","secondNavLinkGroups","Constants","logout","Nav","groups","NavbarCareersComponentWrapper","SvgMegaphone","i18nKeyPrefix","sampleFeedbackOptions","FeedbackAuthenticationType","Unauthenticated","isProduction","clientName","feedbackConfig","supportUrl","themeOptions","baseTheme","semanticColors","primaryButtonBackground","primaryButtonBackgroundHovered","primaryButtonBackgroundPressed","primaryButtonBackgroundDisabled","primaryButtonText","messageLink","OCVFeedback","feedbackData","Feedback","sendUsFeedback","close","dataPrivacyNotice","successfulSubmission","thankYou","feedbackSubheading","privacyNotice","useFeedbackTranslation","hostName","inAppFeedbackRef","feedbackInfo","initializeInAppFeedback","openFeedback","titleElement","privacyElement","allowDisabledFocus","useQueryParams","ProtectedRoute","routeProps","inProgress","InteractionStatus","None","silentRequest","loginRedirect","ReferralExperience","isReferralSpinnerVisible","setIsReferralSpinnerVisible","referralAppLoadTimeStamp","ReferralExperienceURI","setCssSrc","referralTitle","useReferralPageTitle","isCss","addScriptToDiv","js","dynamicDep","logBeforeReferralUnload","SupportComponent","isSupportSpinnerVisible","setIsSupportSpinnerVisible","supportWebAppLoadTimeStamp","SupportExperienceURI","common","logBeforeSupportAppUnload","axiosCandidateInstance","downtimeService","getUnplannedMonitoringData","unplannedDownTimeEndPoint","useInactivityTracker","inactivityDuration","onInactive","timerRef","resetTimer","currentTime","now","clearTimeout","checkInactivity","lastActivityTime","parseInt","handleActivity","BroadcastChannel","postMessage","handleBroadcastMessage","initializeIcons","ApplicationInsights","loadAppInsights","initializeTelemetry","uhfAPI","uhfAPIfr_CA","newUHFAPI","newUHFAPIfr_CA","App","cssIncludes","setCssIncludes","initLang","jsIncludesScripts","setJsIncludesScripts","isCssLoaded","setIsCssLoaded","langUrlPath","validateLanguage","unplannedDowntimeServiceInfo","isVNextEnabled","downtimeServiceName","setDowntimeServiceName","downtimeCookieName","downtimeInfo","systemName","statusCodeReceived","Ods","Rpi","useUnplannedMonitoring","isNavbarEnabled","setIsNavbarEnabled","UHFHeader","setUHFHeader","UHFFooter","setUHFFooter","routeMatchCountryLang","useRouteMatch","plannedDownTimeInfo","setPlannedDownTimeInfo","showErrorPage","setShowErrorPage","isBrandingFooterEnabled","setIsBrandingFooterEnabled","setCandidateProfile","displayCustomBanner","csShellElementVisibleFlag","disableCustomBanner","handleOnError","unhandledRejection","reason","removeRecommendationFromSessionCache","handleProfileUpdate","prevState","candidateFirstName","candidateLastName","candidatePreferredFirstName","candidatePreferredLastName","handleRecruitSignOut","globalUrl","frCaUrl","paramToRemove","startsWith","removeParamFromQueryText","param","isExact","validLocale","isValid","langConfigLocale","some","hst","deriveCorrectLocaleForRoute","_handleFooterLangButtonEvent","languageFromEventTriggered","urlLangugageRoute","currentLanguageRoute","afterSecondParam","convertedPathname","retainedSearchParam","reload","operationResult","basicProfileResponse","InteractionRequiredAuthError","redirectStartPage","headerLocal","footerLocal","uhfuri","isvNextSession","jsIncludesLocaleScripts","shell","xmlDoc","DOMParser","parseFromString","cssContent","jsContent","headerHtml","footerHtml","jsScripts","cssScripts","dummyElement","loadjs","isDefined","cssArr","cssList","l","before","scriptEl","head","success","ready","jsArr","jsList","reset","routePath","actionCenterSubPathRegExp","actionCenterSubPathReferenceRegExp","actionCenterSubPathTravelRegExp","actionCenterSubPathExpensesRegExp","invokedPathName","InitialShellLoadingTextKey","Customizer","CoherenceCustomizations","exact","to","Referral","displayGCSCustomBanner","render","component","Fragment","defineCustomElements","configuration","auth","knownAuthorities","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","LocalStorage","storeAuthStateInCookie","pca","PublicClientApplication","addEventCallback","EventType","LOGIN_SUCCESS","setActiveAccount","AppProvider","ReactDOM"],"mappings":"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","file":"static/js/main.7185eb0d.chunk.js","sourcesContent":["var map = {\n\t\"./ocv-feedback-lite_3.entry.js\": [\n\t\t252,\n\t\t4\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__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 243;\nmodule.exports = webpackAsyncContext;","import {\r\n ApplicationInsights,\r\n IExceptionTelemetry,\r\n IMetricTelemetry,\r\n ITraceTelemetry,\r\n} from \"@microsoft/applicationinsights-web\";\r\nimport { ExternalUserType, InternalUserType } from \"../../Constants\";\r\n\r\nimport { ITelemetryConfig } from \"./TelemetryService.types\";\r\nimport { config } from \"../config\";\r\nimport { flatProperties } from \"./TelemetryUtils\";\r\n\r\nlet appInsights: ApplicationInsights;\r\n\r\nconst commonLogProperties = {\r\n environmentName: config.telemetry.environmentName,\r\n serviceOffering: config.telemetry.serviceOffering,\r\n serviceLine: config.telemetry.serviceLine,\r\n service: config.telemetry.service,\r\n componentName: config.telemetry.componentName,\r\n subComponentName: config.telemetry.subComponentName,\r\n componentId: config.telemetry.componentId,\r\n correlationId: config.telemetry.sessionId,\r\n candidateId: config.telemetry.candidateId,\r\n};\r\n// A flag to determin whether or not to send telemetry to dev console\r\nlet LOG_TELEMETRY_TO_CONSOLE = process.env.NODE_ENV === \"development\";\r\n\r\n/**\r\n * Initializes the TelemetryService. Don't call any other TelemetryService functions before this one.\r\n * @param config the config\r\n */\r\nexport function initializeTelemetry(config: ITelemetryConfig): void {\r\n if (!config.InstrumentationKey) {\r\n throw new Error(\"Instrumentation key not provided\");\r\n }\r\n\r\n appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: config.InstrumentationKey,\r\n },\r\n });\r\n\r\n appInsights.loadAppInsights();\r\n}\r\n\r\n/**\r\n * Log metric\r\n * Typically used to send regular reports of performance indicators.\r\n * @param metric A string that identifies the metric.\r\n * @param customProperties additional properties to send with the metric.\r\n */\r\nexport function trackMetric(\r\n metric: IMetricTelemetry,\r\n customProperties?: { [key: string]: unknown }\r\n): void {\r\n if (LOG_TELEMETRY_TO_CONSOLE) {\r\n console.log(\r\n \"[Telemetry] Log Metric: \" + metric,\r\n \", \" + flatProperties({ ...commonLogProperties, ...customProperties })\r\n );\r\n } else {\r\n appInsights.trackMetric(metric, {\r\n ...commonLogProperties,\r\n ...customProperties,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Log an exception you have caught.\r\n * @param exception The exception to log.\r\n */\r\nexport function trackException(exception: IExceptionTelemetry): void {\r\n if (LOG_TELEMETRY_TO_CONSOLE) {\r\n console.log(\"[Telemetry] Log Exception: \", exception);\r\n } else {\r\n appInsights.trackException(exception);\r\n }\r\n}\r\n\r\n/**\r\n * Log a user action or other occurrence.\r\n * @param event the TelemetryEvent to send\r\n * @param customProperties Optional additional properties on the event\r\n */\r\nexport function trackEvent(\r\n featureName: string,\r\n customProperties?: { [key: string]: unknown }\r\n): void {\r\n if (LOG_TELEMETRY_TO_CONSOLE) {\r\n console.log(\r\n \"[Telemetry] Log Event: \" +\r\n event +\r\n \", \" +\r\n flatProperties({ ...commonLogProperties, ...customProperties })\r\n );\r\n } else {\r\n if (!commonLogProperties.candidateId && config.telemetry.candidateId) {\r\n commonLogProperties.candidateId = config.telemetry.candidateId;\r\n } else if (customProperties && config && config.userProfile && config.userProfile.email) {\r\n customProperties.candidateEmail = btoa(config.userProfile.email);\r\n }\r\n\r\n const logProperties = commonLogProperties;\r\n if (customProperties) {\r\n customProperties.candidateType = config.userProfile.isExternal\r\n ? ExternalUserType\r\n : InternalUserType;\r\n Object.assign(logProperties, customProperties);\r\n }\r\n\r\n appInsights.trackEvent({\r\n name: featureName,\r\n properties: logProperties,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Log a diagnostic message.\r\n * @param trace A diagnostic trace to log\r\n * @param customProperties Optional additional properties of form map[string, string] - used to filter traces in the portal.Defaults to empty.\r\n */\r\nexport function trackTrace(\r\n trace: ITraceTelemetry,\r\n customProperties?: { [key: string]: unknown }\r\n): void {\r\n if (LOG_TELEMETRY_TO_CONSOLE) {\r\n console.log(\r\n \"[Telemetry] Log Trace: \" +\r\n trace +\r\n \", \" +\r\n flatProperties({ ...commonLogProperties, ...customProperties })\r\n );\r\n } else {\r\n appInsights.trackTrace(trace, {\r\n ...commonLogProperties,\r\n ...customProperties,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * to see data sent immediately\r\n */\r\nexport function sendTelemetryNow(): void {\r\n appInsights.flush();\r\n}\r\n\r\n//Used for testing to change telemetry logging\r\n\r\nexport function changeLogToTelemetry(isConsoleLoggingActivated: boolean): void {\r\n LOG_TELEMETRY_TO_CONSOLE = isConsoleLoggingActivated;\r\n}\r\n\r\n//Used for testing to change appInsight object\r\nexport function changeAppInsight(newAppInsights: ApplicationInsights): void {\r\n appInsights = newAppInsights;\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport const MicrosoftEmailAddress = \"microsoft.com\";\r\nexport const RedirectInProgress = \"MSGTAActionCenterRedirectInProgress\";\r\nexport const RequestedPath = \"MSGTAActionCenterRequestedPath\";\r\nexport const UserDomain = \"MSGTAActionCenterDomain\";\r\nexport const RequestQueryString = \"MSGTAActionCenterQueryString\";\r\nexport const CandidateCountrySessionKey = \"CandidateCountry\";\r\nexport const Domain = \"domain\";\r\nexport const LoginHint = \"login_hint\";\r\nexport const True = \"true\";\r\nexport const False = \"false\";\r\nexport const Loading = \"Loading\";\r\nexport const ActionCenterTitle = \"Action_Center_Title\";\r\nexport const ExternalUserType = \"External\";\r\nexport const InternalUserType = \"Internal\";\r\nexport const Country = \"country\";\r\nexport const LocalHost = \"localhost\";\r\nexport const India = \"India\";\r\nexport const FrenchLocale = \"fr_ca\";\r\n\r\nexport const ErrorPageType = {\r\n IcimsDownTime: \"icims\",\r\n PhenomDownTime: \"phenom\",\r\n ActionCenterDownTime: \"actioncenter\",\r\n OdsDownTime: \"ods\",\r\n NotFoundErrorPage: \"NotFoundErrorPage\",\r\n InternalServerErrorPage: \"InternalServerErrorPage\",\r\n CustomErrorBanner: \"CustomErrorBanner\",\r\n CandidateNotAvailable: \"candidatenotavailable\",\r\n};\r\n\r\nexport const Activity = {\r\n AppUsage: \"AppUsageTime\",\r\n};\r\n\r\nexport const BannerType = {\r\n CustomBanner: \"customBanner\",\r\n GcsErrorBanner: \"gcsErrorBanner\",\r\n ErrorPage: \"errorPage\",\r\n GcsErrorPage: \"gcsErrorPage\",\r\n};\r\n\r\nexport const SpinnerVisibility = \"SpinnerVisibility\";\r\nexport const SearchLoadingEvent = \"SearchLoading\";\r\nexport const ApplySpinnerVisibility = \"ApplySpinnerVisibility\";\r\nexport const ProfileSpinnerVisibility = \"ProfileSpinnerVisibility\";\r\nexport const CheckLoginInContextEvent = \"CheckLoginContext\";\r\nexport const ReferralSpinnerVisibility = \"ReferralSpinnerVisibility\";\r\n\r\nexport const ErrorPageTranslationRoot = \"ErrorPage\";\r\nexport const ErrorPageTranslationKeys = {\r\n WeWillBeBackSoon: \"We_Will_Be_Back_Soon\",\r\n SomethingWentWrong: \"Something_Went_Wrong\",\r\n ICIMSDownTimeMessagePrefix: \"ICIMS_DownTime_Message_Prefix\",\r\n ICIMSDownTimeMessageSuffix: \"ICIMS_DownTime_Message_Suffix\",\r\n ActionCenterDownTimeMessagePrefix: \"ActionCenter_DownTime_Message_Prefix\",\r\n ActionCenterDownTimeMessageSuffix: \"ActionCenter_DownTime_Message_Suffix\",\r\n PhenomDownTimeMessage: \"Phenom_DownTime_Message\",\r\n ActionCenterTransientIssueHeading: \"ActionCenter_TransientIssue_Heading\",\r\n ActionCenterTransientIssueMessage: \"ActionCenter_TransientIssue_Message\",\r\n PageNotFoundHeading: \"Page_NotFound_Heading\",\r\n PageNotFoundMessage: \"Page_NotFound_Message\",\r\n SearchJobsAriaLabelText: \"Search_Jobs_AriaLabel_Text\",\r\n MicrosoftCareersText: \"Microsoft_Careers_Text\",\r\n ActionCenterPreparation: \"Action_Center_Preparation\",\r\n ActionCenterPreparationPrefixMessage: \"ActionCenter_Preparation_PrefixMessage\",\r\n ActionCenterPreparationSuffixMessage: \"ActionCenter_Preparation_SuffixMessage\",\r\n GotoHomePageText: \"GoTo_HomePage\",\r\n};\r\n\r\nexport const CustomBannerKeysRoot = \"CustomBanner\";\r\nexport const GcsBannerKeysRoot = \"GcsBanner\";\r\nexport const PlannedDowntimeMonitoringEnableOnInitialLoad = \"PlannedDowntimeMonitoringEnableOnInitialLoad\";\r\nexport const CustomBannerKeys = {\r\n DefaultMessage: \"Default_Message\",\r\n};\r\nexport const GcsBannerKeys = {\r\n DefaultMessage: \"Default_Message\",\r\n};\r\nexport const sessionLang = \"sessionLang\";\r\nexport const Lang = \"lang\";\r\nexport const CountryAndStateTaxonomy = \"CountryAndStateTaxonomy\";\r\nexport const SocialAuthErrorMismatch = \"Social_Auth_Provider_Mismatch\";\r\nexport const EmployeeReferral = \"Employee Referral\";\r\n\r\nexport const baseHeader = \"baseHeader\";\r\n\r\nexport const vNextHeader = \"vNextHeader\";\r\n\r\nexport const SearchNavigationTrigger = \"searchNavigationTrigger\";\r\nexport const SupportLoadingEvent = \"SupportLoading\";\r\n\r\nexport const Feedback = \"Feedback\";\r\nexport const Close = \"Close\";\r\nexport const FeedbackSubmitted = \"Feedback_Submitted\";\r\nexport const ThankYou = \"Thank_You\";\r\nexport const SendUsFeedback = \"Send_Us_Feedback\";\r\nexport const DataPrivacyLinkTitle = \"DataPrivacyLinkTitle\";\r\nexport const FeedbackSubheading = \"Feedback_Subheading\";\r\nexport const PrivacyNotice = \"Privacy_Notice\";\r\nexport const TextAreaPlaceholder = \"TextArea_Placeholder\";\r\nexport const SignInErrorCode = {\r\n SocialAuthMismatch: \"1\",\r\n};\r\nexport const MicrosoftEmployeeAccount = \"Microsoft employee account\";\r\nexport const MicrosoftAccount = \"Microsoft account\";\r\nexport const Createprofile = \"createprofile\";\r\nexport const ApplyConversionEventName = \"ApplyConversionEvent\";\r\nexport const EnglishLocale = \"en_us\";\r\n\r\nexport const recommendedJobCookieConstant = {\r\n recommendedJobs: \"recommendedJobsList\",\r\n isJobsRecommendationValidCookieName: \"isJobsRecommendationValid\",\r\n isAEMRecommendationValidCookieName: \"isAEMRecommendationValid\",\r\n removeJobsFromClientCacheEvent: \"RemoveJobsFromClientCacheEvent\",\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport const AllMicrosoftAction = \".c-button-logo.all-ms-nav\";\r\nexport const NameUpdateEvent = \"MSGTAActionCenterNameUpdateEvent\";\r\nexport const CheckLoginContext = \"MSGTAuthCheckEvent\";\r\nexport const FooterLangSelector = \"locale-picker-link\";\r\nexport const UHFHeaderHTML = \"UHFHeader_en_US\";\r\nexport const UHFFooterHTML = \"UHFFooter_en_US\";\r\nexport const UHFHeaderHTML_frCA = \"UHFHeader_fr_CA\";\r\nexport const UHFFooterHTML_frCA = \"UHFFooter_fr_CA\";\r\nexport const CssIncludes = \"CssIncludes\";\r\nexport const JavaScriptIncludes = \"JavaScriptIncludes\";\r\nexport const ProfileNameUpdate = \"profileNameUpdate\";\r\nexport const RootNavLocale = \"NavbarLocale\";\r\nexport const SessionStorageCandidateCountry = \"CandidateCountry\";\r\n\r\nexport const SubRootNavLocales = {\r\n Careers: \"Careers\",\r\n Professionals: \"Professionals\",\r\n Students_and_graduates: \"Students_and_graduates\",\r\n Life_at_Microsoft: \"Life_at_Microsoft\",\r\n How_we_hire: \"How_we_hire\",\r\n Referrals: \"Referrals\",\r\n user: \"user\",\r\n SignedIn: \"SignedIn\",\r\n Saved_jobs: \"Saved_jobs\",\r\n};\r\nexport const SubRootNavLocalesTitles = {\r\n Home: \"Home\",\r\n Locations: \"Locations\",\r\n Professions: \"Professions\",\r\n \"US_Military_&_Veterans\": \"US_Military_&_Veterans\",\r\n Students_and_graduates: \"Students_and_graduates\",\r\n Benefits: \"Benefits\",\r\n Culture: \"Culture\",\r\n Diversity_and_inclusion: \"Diversity_and_inclusion\",\r\n Microsoft_Life: \"Microsoft_Life\",\r\n Hi: \"Hi\",\r\n Profile: \"Profile\",\r\n Job_alerts: \"Job_alerts\",\r\n Action_center: \"Action_center\",\r\n Sign_out: \"Sign_out\",\r\n Flexible_work: \"Flexible_work\",\r\n};\r\n\r\nexport const Footer = {\r\n FooterTop: \"FooterTop\",\r\n FooterBottom: \"FooterBottom\",\r\n};\r\n\r\nexport const FooterItems = {\r\n FAQ: \"FAQ\",\r\n Interview_tips: \"Interview_tips\",\r\n Accessibility_request: \"Accessibility_request\",\r\n Support: \"Support\",\r\n Legal_policies: \"Legal_policies\",\r\n \"Microsoft_Data_Privacy_Notice_(DPN)\": \"Microsoft_Data_Privacy_Notice_(DPN)\",\r\n Labor_Condition_Application_Postings: \"Labor_Condition_Application_Postings\",\r\n Follow_Microsoft_Careers: \"Follow_Microsoft_Careers\",\r\n Follow_us_on_social_media: \"Follow_us_on_social_media\",\r\n Additional_support: \"Additional_support\",\r\n};\r\n\r\nexport const ActionCenterHomeURI = \"actioncenter\";\r\n\r\nexport const ActionCenterLoading = \"Action_Center_Loading\";\r\nexport const ApplicationsLoading = \"Applications_Loading\";\r\nexport const ReferencesLoading = \"References_Loading\";\r\nexport const TravelLoading = \"Travel_Loading\";\r\nexport const ExpenseLoading = \"Expense_Loading\";\r\nexport const ReferralLoading = \"Referral_Loading\";\r\nexport const OpenInNewTab = \"_blank\";\r\nexport const OpenInSameTab = \"_self\";\r\nexport const UHFHeaderLinksClassName = \"c-uhf-nav-link\";\r\nexport const UHFFooterLinksClassName = \"c-uhff-link\";\r\nexport const Locales = {\r\n en: \"en_us\",\r\n en_us: \"en_us\",\r\n fr_ca: \"fr_ca\",\r\n} as const;\r\nexport const FlexibleWorkMenuFeatureFlag = \"FlexibleWorkMenu\";\r\nexport const ApplyExperienceFeatureFlag = \"ApplyExperienceFeature\";\r\nexport const ApplyApplicationLoading = \"Application_Loading\";\r\nexport const ProfileExperienceFeatureFlag = \"ProfileExperienceFeature\";\r\nexport const RecommendationExperienceFeature = \"RecommendationExperienceFeature\";\r\nexport const Loading = \"Loading\";\r\nexport const CreateProfileDateFormat = \"YYYY-MM-DD\";\r\n\r\nexport const CreateProfileItems = {\r\n CreateProfileTitle: \"CreateProfileTitle\",\r\n CreateProfileDescription: \"CreateProfileDescription\",\r\n FirstName: \"FirstName\",\r\n MiddleName: \"MiddleName\",\r\n LastName: \"LastName\",\r\n EmailAddress: \"EmailAddress\",\r\n CountryLabel: \"Country\",\r\n Create: \"Create\",\r\n Already: \"Already\",\r\n SignIn: \"SignIn\",\r\n Select: \"Select\",\r\n EmailNotEditedMessage: \"EmailNotEditedMessage\",\r\n RegulatoryConsentReadMsg: \"RegulatoryConsentReadMsg\",\r\n ConfirmYourConsent: \"ConfirmYourConsent\",\r\n ConsentSubHeading: \"ConsentSubHeading\",\r\n Confirm: \"Confirm\",\r\n Back: \"Back\",\r\n Required: \"Required\",\r\n Optional: \"Optional\",\r\n CreateProfileErrorMsg: \"CreateProfileErrorMsg\",\r\n ContactSupport: \"ContactSupport\",\r\n Creating: \"Creating\",\r\n NameValidation: \"NameValidation\",\r\n LengthValidation: \"LengthValidation\",\r\n};\r\n\r\nexport const Loginitems = {\r\n MicrosoftAccount: \"MicrosoftAccount\",\r\n MicrosoftEmployee: \"MicrosoftEmployee\",\r\n OR: \"Or\",\r\n Microsoft: \"Microsoft\",\r\n LinkedIn: \"LinkedIn\",\r\n Google: \"Google\",\r\n Facebook: \"Facebook\",\r\n SignIn: \"SignIn\",\r\n InvalidSocialAuthErrorMsg: \"InvalidSocialAuthErrorMsg\",\r\n ClosePopUpModal: \"ClosePopUpModal\",\r\n Close: \"Close\",\r\n MicrooftEmployeeSignInCardAriaLabelText: \"MicrooftEmployeeSignInCardAriaLabelText\",\r\n SignInCardAriaLabelText: \"SignInCardAriaLabelText\",\r\n};\r\n\r\nexport const RootCreateProfile = \"CreateProfile\";\r\nexport const RootLogin = \"Login\";\r\nexport const LastActivityTime = \"utp.last.activity.time\";\r\nexport const ProtectedRouteUrl = \"/login\";\r\nexport const RegulatedCountryList = {\r\n Russia: \"Russia\",\r\n China: \"China\",\r\n};\r\nexport const LoginIcons = {\r\n Microsoft: \"microsoft-login-icon\",\r\n Google: \"google-login-icon\",\r\n Facebook: \"facebook-login-icon\",\r\n Linkedin: \"linkedin-login-icon\",\r\n};\r\n\r\nexport const Live = \"live\";\r\nexport const microsoft = \"microsoft\";\r\nexport const MicrosoftLive = \"microsoft-live\";\r\nexport const MicrosoftFte = \"microsoft-azuread\";\r\nexport const actionCenterPathName = \"/actioncenter\";\r\nexport const recommendedJobsPath = \"/recommendedjobs\";\r\nexport const MicrosoftEmployeeAccount = \"Microsoft employee account\";\r\nexport const MicrosoftAccount = \"Microsoft account\";\r\nexport const Search = \"search\";\r\nexport const RedirectUri = \"requesteduri\";\r\nexport const nameRegex = /^[\\p{M}|\\p{Z}|\\p{L}|\\p{N} ,@&.'\\-’‘`()/|®:\\p{Pd}]+$/u;\r\nexport const maxNameLength = 64;\r\nexport const Jobs = \"jobs.careers\";\r\nexport const ChineseLangConstant = \"zh\";\r\nexport const RussianLangConstant = \"ru\";\r\nexport const EnglishLangConstant = \"en\";\r\n\r\nexport const SearchJobsEnglish = \"Search jobs\";\r\nexport const SearchJobsFrench = \"Rechercher des postes\";\r\n\r\nexport const LangFooterClickEvent = \"LangFooterClickEvent\";\r\nexport const IsCleanLogout = \"isCleanLogout\";\r\nexport const inactivityKey = \"lastActivityTime\";\r\n\r\nexport const AuthSessionId = \"auth_session\";\r\nexport const Job = \"global/en/job\";\r\nexport const LangQueryParamName = \"lang\";","import { ITelemetryConfig } from \"./telemetry/TelemetryService.types\";\r\nimport { Person } from \"../interfaces/person\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { GcsVNextWcpConsentCategory } from \"../components/cookieBanner/types\";\r\n\r\ninterface OcvConfig {\r\n appId: string;\r\n area: string;\r\n}\r\n\r\ninterface MsalConfig {\r\n clientId: string;\r\n authority: string;\r\n tenant: string;\r\n redirectUri: string;\r\n loginScopes: string[];\r\n postLogoutRedirectUri: string;\r\n internalUserIdps: string[];\r\n}\r\n\r\ninterface ApplicationConfig {\r\n msalConfig: MsalConfig;\r\n userProfile: Person;\r\n careersPortalLink: string;\r\n monitoringEndPointURL: string;\r\n ocv: OcvConfig;\r\n production: boolean;\r\n telemetry: {\r\n enableHeartMetrics: boolean;\r\n instrumentationKey: string;\r\n service: string;\r\n serviceLine: string;\r\n serviceOffering: string;\r\n componentName: string;\r\n subComponentName: string;\r\n componentId: string;\r\n application: string;\r\n sessionId: string;\r\n environmentName: string;\r\n candidateId: string;\r\n telemetryConfig: ITelemetryConfig;\r\n };\r\n actionCenterApi: {\r\n baseUrl: string;\r\n flightingApiPath: string;\r\n apiRetryCount: number;\r\n countryAndStateTaxonomyPath: string;\r\n };\r\n profileApi: {\r\n baseUrl: string;\r\n getProfileDetailsApiPath: string;\r\n createProfileApiPath: string;\r\n patchProfileData: string;\r\n apiRetryCount: number;\r\n };\r\n candidateApi: {\r\n baseUrl: string;\r\n getCandidateInfoApiPath: string;\r\n apiRetryCount: number;\r\n };\r\n staticContentConfig: {\r\n baseUrl: string;\r\n countryAndStateTaxonomyPath: string;\r\n apiRetryCount: 1;\r\n };\r\n FreConfig: {\r\n baseUrl: string;\r\n FreEndPoint: string;\r\n apiRetryCount: number;\r\n };\r\n WcpCookieBannerUrl: {\r\n wcpScriptUrl: string;\r\n privacyStatementUrl: string;\r\n };\r\n googlePixels: {\r\n tagManagerScript: string;\r\n tagManagerConfig: string;\r\n tagManagerConversionConfig: string;\r\n };\r\n supportScriptsUrl: string;\r\n careersSubDomain: string;\r\n wcpSiteContent:Record |undefined;\r\n}\r\n\r\nexport const config: ApplicationConfig = {\r\n msalConfig: {\r\n clientId: `${process.env.REACT_APP_MSAL_CLIENT_ID}`,\r\n authority: `${process.env.REACT_APP_MSAL_AUTHORITY}`,\r\n tenant: `${process.env.REACT_APP_MSAL_TENANT}`,\r\n redirectUri: `${window.location.origin}`,\r\n postLogoutRedirectUri:\r\n process.env.REACT_APP_ENVIRONMENT_NAME === \"production\"\r\n ? `${process.env.REACT_APP_CAREERS_PORTAL_URI}`\r\n : `${process.env.REACT_APP_SHELL_URI}`,\r\n loginScopes: [\"openid\", `${process.env.REACT_APP_API_SCOPE}`],\r\n internalUserIdps: [\"https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/v2.0\", \"linkedin.com\"],\r\n },\r\n telemetry: {\r\n enableHeartMetrics: Boolean(typeof process.env.REACT_APP_ENABLEHEARTMETRICS) || false,\r\n instrumentationKey: process.env.REACT_APP_APPINSIGHTS_INSTRUMENTATIONKEY || \"\",\r\n\r\n serviceOffering: process.env.REACT_APP_TELEMETRY_SERVICEOFFERING || \"\",\r\n serviceLine: process.env.REACT_APP_TELEMETRY_SERVICELINE || \"\",\r\n service: process.env.REACT_APP_TELEMETRY_SERVICE || \"\",\r\n componentName: process.env.REACT_APP_TELEMETRY_COMPONENTNAME || \"\",\r\n subComponentName: process.env.REACT_APP_TELEMETRY_SUBCOMPONENTNAME || \"\",\r\n componentId: process.env.REACT_APP_TELEMETRY_COMPONENTID || \"\",\r\n application: process.env.REACT_APP_TELEMETRY_COMPONENTNAME || \"\",\r\n sessionId: uuidv4(),\r\n environmentName: process.env.REACT_APP_ENVIRONMENT_NAME || \"\",\r\n telemetryConfig: {\r\n EnvironmentName: `${process.env.ENVIRONMENT_NAME}`,\r\n InstrumentationKey: `${process.env.REACT_APP_APPINSIGHTS_INSTRUMENTATIONKEY}`,\r\n },\r\n candidateId: \"\",\r\n },\r\n userProfile: {},\r\n careersPortalLink: `${process.env.REACT_APP_CAREERS_PORTAL_URI}`,\r\n monitoringEndPointURL: process.env.REACT_APP_MONITORING_SERVICE || \"\",\r\n actionCenterApi: {\r\n baseUrl: `${process.env.REACT_APP_API_BASE_URL}`,\r\n flightingApiPath: \"/v1/flighting/featurestate?featureNames={featureText}&country={country}&type={type}\",\r\n countryAndStateTaxonomyPath: \"/v1/Taxonomy/CountryAndState/taxonomy\",\r\n apiRetryCount: 1,\r\n },\r\n candidateApi: {\r\n baseUrl: `${process.env.REACT_APP_API_BASE_URL}`,\r\n getCandidateInfoApiPath: \"/v1/candidate\",\r\n apiRetryCount: 1,\r\n },\r\n profileApi: {\r\n baseUrl: process.env.REACT_APP_PROFILE_API_BASE_URL || \"\",\r\n getProfileDetailsApiPath: \"v2/Profile/basicProfile\",\r\n createProfileApiPath: \"v1/Profile/profile\",\r\n patchProfileData: \"v1/Profile/{candidateId}/profile\",\r\n apiRetryCount: 1,\r\n },\r\n staticContentConfig: {\r\n baseUrl: process.env.REACT_APP_STATICCONTENT_BASEURL || \"\",\r\n countryAndStateTaxonomyPath: \"/staticdata/countryandstate.json\",\r\n apiRetryCount: 1,\r\n },\r\n FreConfig: {\r\n baseUrl: process.env.REACT_APP_FRE_BASEURL || \"\",\r\n FreEndPoint: \"/fre/fre_schema.json\",\r\n apiRetryCount: 1,\r\n },\r\n WcpCookieBannerUrl: {\r\n privacyStatementUrl: process.env.REACT_APP_WCP_PRIVACY_URL || \"https://go.microsoft.com/fwlink/?LinkId=518021\",\r\n wcpScriptUrl: process.env.REACT_APP_WCP_SCRIPT_URL || \"https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js\",\r\n },\r\n googlePixels: {\r\n tagManagerConfig: process.env.REACT_APP_TAG_MANAGER_CONFIG_ID || \"AW-698248405\",\r\n tagManagerConversionConfig: process.env.REACT_APP_TAG_MANAGER_CONVERSION_ID || \"AW-698248405/P2JfCP6lxMYDENXZ-cwC\",\r\n tagManagerScript:\r\n process.env.REACT_APP_TAG_MANAGER_SRC || \"https://www.googletagmanager.com/gtag/js?id=AW-698248405\",\r\n },\r\n ocv: {\r\n appId: process.env.REACT_APP_OCV_APPID || \"\",\r\n area: process.env.REACT_APP_OCV_AREA || \"Global Careers Site\",\r\n },\r\n production:\r\n process.env.REACT_APP_ENVIRONMENT_NAME && process.env.REACT_APP_ENVIRONMENT_NAME === \"production\" ? true : false,\r\n supportScriptsUrl: process.env.REACT_APP_SUPPORTEXP_URI || \"\",\r\n careersSubDomain: process.env.REACT_APP_CAREERS_SUBDOMAIN || \"\",\r\n wcpSiteContent: undefined,\r\n};\r\n\r\nexport const loginRequest = {\r\n scopes: config.msalConfig.loginScopes,\r\n};\r\n","/**\r\n * Converts input properties of { string : object } pair to flat array\r\n * @param inputProps input properties of { string : object } pair\r\n */\r\nexport function flatProperties(\r\n inputProps: { [key: string]: unknown } | null | undefined\r\n): string[] | null | undefined {\r\n if (!inputProps) {\r\n return inputProps;\r\n }\r\n\r\n const retVal: string[] = [];\r\n Object.keys(inputProps).forEach(function (key: string, index: number) {\r\n retVal[index] = key + ':' + String(inputProps[key]);\r\n });\r\n\r\n return retVal;\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\nISpinnerStyleProps,\r\nISpinnerStyles,\r\nIStyleFunctionOrObject,\r\n} from \"@fluentui/react\";\r\n\r\nexport const spinnerStyles: Partial<\r\n IStyleFunctionOrObject\r\n> = {\r\n root: {\r\n width:\"100%\",\r\n height:\"50vh\",\r\n zIndex:\"9999\"\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { ISpinnerProps, Spinner, SpinnerSize } from \"@fluentui/react\";\r\n\r\nimport { Loading } from \"../../Constants\";\r\nimport React from \"react\";\r\nimport { spinnerStyles } from \"./SpinnerComponentStyles\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const SpinnerComponent: React.FunctionComponent = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const spinnerLabel = props.label ?? Loading;\r\n return (\r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { MutableRefObject, useEffect, useRef } from \"react\";\r\n\r\nexport const useMountedRef = (): MutableRefObject => {\r\n const mounted = useRef(false);\r\n useEffect(() => {\r\n mounted.current = true;\r\n return () => { mounted.current = false };\r\n });\r\n\r\n return mounted;\r\n }","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { Locales } from \"../components/constants\";\r\n\r\nexport interface ICountryLangRouteMatchParams {\r\n country: string;\r\n lang: string;\r\n param1?: string;\r\n param2?: string;\r\n param3?: string;\r\n category?: string;\r\n phenompage?: string;\r\n}\r\n\r\nexport const languagesConfig = {\r\n [Locales.en_us]: {\r\n title: \"English\",\r\n lang: Locales.en_us,\r\n route: \"global/en\",\r\n linkLocale: \"en-US\",\r\n host: [],\r\n },\r\n [Locales.fr_ca]: {\r\n title: \"FR - Canada\",\r\n lang: Locales.fr_ca,\r\n route: \"ca/fr\",\r\n linkLocale: \"fr-CA\",\r\n host: [\"industryquebecfr\", \"internalquebecfr\"],\r\n },\r\n} as const;\r\n\r\nexport const getHrefByLang = (url: URLStringOrFn, route: LangRoutes): string =>\r\n typeof url === \"function\" ? url(route) : url;\r\n\r\nexport const validateLanguage = (lang: string | null): AvailableLangs => {\r\n if (lang && Object.keys(languagesConfig)?.includes(lang)) {\r\n return lang as AvailableLangs;\r\n }\r\n return languagesConfig.en_us.lang;\r\n};\r\n\r\nexport type LangTypes = keyof typeof Locales;\r\n\r\nexport type RemoveEN = T extends \"en\" ? never : T;\r\n\r\nexport type AvailableLangs = RemoveEN;\r\n\r\nexport type LangRoutes = (typeof languagesConfig)[AvailableLangs][\"route\"];\r\n\r\nexport type URLStringOrFn = ((lang: LangRoutes) => string) | string;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { BannerType, RequestQueryString } from \"../Constants\";\r\nimport { ICountryLangRouteMatchParams, languagesConfig } from \"./i18n.helper\";\r\nimport {\r\n AuthSessionId,\r\n IsCleanLogout,\r\n LastActivityTime,\r\n Locales,\r\n} from \"../components/constants\";\r\n\r\nimport { CustomBannerArgs } from \"../interfaces/customBanner\";\r\nimport { config } from \"../services/config\";\r\nimport { matchPath } from \"react-router\";\r\nimport { IPublicClientApplication } from \"@azure/msal-browser\";\r\nimport Cookies from \"js-cookie\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nconst templateString = \"{paramKey}={paramValue}\";\r\n\r\nexport const getQueryText = (): string => {\r\n const queryText = sessionStorage.getItem(RequestQueryString);\r\n return queryText ? queryText : \"\";\r\n};\r\n\r\nexport function getCareersPortalURI(): string {\r\n return `${\r\n process.env.REACT_APP_CAREERS_PORTAL_URI\r\n }${getsuffixforInternal()}us/en/`;\r\n}\r\n\r\nexport function getCareersPortalSupportPageUrl(): string {\r\n return `${getCareersPortalURI()}support` + getQueryText();\r\n}\r\n\r\nexport function getsuffixforInternal(): string {\r\n return config.userProfile.isExternal ? \"/\" : \"/i/\";\r\n}\r\nexport const getQueryParameterValue = (\r\n queryParameter: string\r\n): string | null => {\r\n let queryValue: string | null = null;\r\n const url = new URL(window.location.href);\r\n if (url.search) {\r\n queryValue = url.searchParams.get(queryParameter);\r\n }\r\n\r\n return queryValue;\r\n};\r\n\r\nexport const extractPathFromPhenomInternalPath = (\r\n internalPhenomRoutePath: string\r\n): string => {\r\n const routeParams: ICountryLangRouteMatchParams | undefined =\r\n matchPath(\r\n internalPhenomRoutePath,\r\n \"/i/:country/:lang/:param1?/:param2?/:param3?\"\r\n )?.params;\r\n return `${Object.entries(routeParams || {})\r\n .filter(([_, val]) => val)\r\n .map(([_, val]) => `/${val}`)\r\n .join(\"\")}`;\r\n};\r\n\r\nexport const extractPathFromPhenomPagePath = (pagePhenomPath: string) => {\r\n const routeParams: ICountryLangRouteMatchParams | undefined =\r\n matchPath(\r\n pagePhenomPath,\r\n \"/:category/:country/:lang/:param1?/:param2?/:param3?\"\r\n )?.params;\r\n if (routeParams) {\r\n delete routeParams.category;\r\n }\r\n return `${Object.entries(routeParams || {})\r\n .filter(([_, val]) => val)\r\n .map(([_, val]) => `/${val}`)\r\n .join(\"\")}`;\r\n};\r\n\r\nexport const existingPhenomMatchingPaths = [\"/:country/:lang/search-results\"];\r\n\r\nconst phenomToGCSMap: { [key: string]: string } = {\r\n \"search-results\": \"search\",\r\n};\r\n\r\nexport const extractCorrectPathFromExistingPhenomPath = (\r\n existingResultsPath: string\r\n) => {\r\n const routeParams: ICountryLangRouteMatchParams | undefined =\r\n matchPath(\r\n existingResultsPath,\r\n \"/:country/:lang/:phenompage\"\r\n )?.params;\r\n\r\n let transformedRouteParams: ICountryLangRouteMatchParams = {\r\n country: routeParams?.country || \"global\",\r\n lang: routeParams?.lang || \"en\",\r\n };\r\n\r\n if (routeParams) {\r\n const transformPhenomPage = phenomToGCSMap[routeParams.phenompage || \"\"];\r\n if (transformPhenomPage) {\r\n transformedRouteParams = {\r\n ...transformedRouteParams,\r\n phenompage: transformPhenomPage,\r\n };\r\n }\r\n }\r\n\r\n return `${Object.entries(transformedRouteParams || {})\r\n .filter(([_, val]) => val)\r\n .map(([_, val]) => `/${val}`)\r\n .join(\"\")}`;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-inferrable-types\r\nexport const deriveCorrectLocaleForRoute = (\r\n langRoute: string,\r\n isAEM = false\r\n) => {\r\n const localeValues = Object.entries(Locales).map(([prop]) => prop);\r\n const validLocale = localeValues.find((locale) => {\r\n let isValid = false;\r\n\r\n const host = window.location.host?.toLowerCase();\r\n const langConfigLocale = (languagesConfig as any)[locale];\r\n if (\r\n langConfigLocale &&\r\n (langConfigLocale.route === langRoute ||\r\n (isAEM &&\r\n (langRoute.includes(langConfigLocale.route) ||\r\n langConfigLocale.host.some((hst: string) => host.includes(hst)))))\r\n ) {\r\n isValid = true;\r\n }\r\n\r\n return isValid;\r\n });\r\n return validLocale ?? Locales.en_us;\r\n};\r\n\r\nexport const removeParamFromQueryText = (\r\n queryText: string,\r\n paramToRemove: string\r\n): string => {\r\n if (queryText) {\r\n const queryParams = queryText.substring(1);\r\n return `?${queryParams\r\n .split(\"&\")\r\n .filter(function (params) {\r\n return !params.startsWith(paramToRemove);\r\n })\r\n .join(\"&\")}`;\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const changeDocumentTitle = (lang: string) => {\r\n if (lang === Locales.fr_ca) {\r\n document.title = \"Centre de notifications | Carrières Microsoft\";\r\n } else {\r\n document.title = \"Action Center | Microsoft Careers\";\r\n }\r\n};\r\n\r\nexport const setLoginCredential = (\r\n domain: string | null,\r\n login_hint: string | null\r\n) => {\r\n if (domain && login_hint) {\r\n localStorage.setItem(\"domain\", domain);\r\n localStorage.setItem(\"login_hint\", login_hint);\r\n }\r\n};\r\nexport const getLoginCredential = () => {\r\n const currentLoginCredential = {\r\n domain: localStorage.getItem(\"domain\"),\r\n login_hint: localStorage.getItem(\"login_hint\"),\r\n };\r\n return currentLoginCredential;\r\n};\r\nexport const createB2CAuthUrl = (\r\n domain_hint: string | null,\r\n login_hint: string | null,\r\n redirectionUrl: string | null\r\n) => {\r\n if (domain_hint && login_hint && redirectionUrl) {\r\n return `${\r\n process.env.REACT_APP_MSAL_AUTHORITY\r\n }/oauth2/v2.0/authorize?client_id=${\r\n process.env.REACT_APP_MSAL_CLIENT_ID\r\n }&scope=${config.msalConfig.loginScopes[0]} ${\r\n config.msalConfig.loginScopes[1]\r\n }&redirect_uri=${encodeURIComponent(\r\n `${process.env.REACT_APP_AEM_AUTH_REDIRECTION_URL}`\r\n )}&response_mode=query&response_type=code&code_challenge=${\r\n process.env.REACT_APP_AEM_AUTH_CODE_CHALLENGE\r\n }&domain_hint=${domain_hint}&login_hint=${login_hint}&state=${encodeURIComponent(\r\n redirectionUrl\r\n )}`;\r\n }\r\n};\r\n\r\nexport const getLastActivityTime = () => {\r\n return localStorage.getItem(LastActivityTime);\r\n};\r\nexport const clearLoginCredential = () => {\r\n localStorage.removeItem(\"domain\");\r\n localStorage.removeItem(\"login_hint\");\r\n sessionStorage.removeItem(\"recommendedJobsList\")\r\n};\r\n\r\n// logs in user by getting domain_hint and login_hint from storage\r\nexport const triggerSilentLogin = (redirectUri = \"\") => {\r\n const urlRegex = /\\/(login|createprofile)/;\r\n const loginRedirectUrl = redirectUri\r\n ? redirectUri\r\n : urlRegex.test(window.location.href)\r\n ? \"\"\r\n : window.location.href;\r\n clearDomainAndLoginHint();\r\n const loginCredential = getLoginCredential();\r\n if (loginRedirectUrl) {\r\n const token = uuidv4();\r\n // Set the cookie with httponly:faslse\r\n Cookies.set(AuthSessionId, token, {\r\n httpOnly: false,\r\n domain: `${process.env.REACT_APP_CAREERS_SUBDOMAIN}`,\r\n });\r\n\r\n const signInUrl = createB2CAuthUrl(\r\n loginCredential.domain,\r\n loginCredential.login_hint,\r\n getStateValue(loginRedirectUrl, token)\r\n );\r\n if (signInUrl) {\r\n window.location.href = signInUrl;\r\n }\r\n }\r\n};\r\nconst getStateValue = (redirectionUrl: string, sessionToken: string) => {\r\n const queryParams = [];\r\n\r\n if (redirectionUrl) {\r\n queryParams.push(`${redirectionUrl}`);\r\n }\r\n\r\n queryParams.push(`${AuthSessionId}=${sessionToken}`);\r\n\r\n const url = `${queryParams.join(\"|\")}`;\r\n return url;\r\n};\r\nexport const clearDomainAndLoginHint = () => {\r\n const url = window.location.href;\r\n const urlObj = new URL(url);\r\n const params = new URLSearchParams(urlObj.search);\r\n const domainParamOnly =\r\n params.has(\"domain\") && params.getAll(\"domain\").length === 1;\r\n const loginHintParamOnly =\r\n params.has(\"login_hint\") && params.getAll(\"login_hint\").length === 1;\r\n\r\n params.delete(\"domain\");\r\n params.delete(\"login_hint\");\r\n\r\n let newUrl = urlObj.origin + urlObj.pathname;\r\n\r\n if (params.toString() !== \"\") {\r\n let i = 0;\r\n params.forEach((value, key) => {\r\n newUrl += `${i === 0 ? \"?\" : \"&\"}${key}=${encodeURIComponent(value)}`;\r\n i++;\r\n });\r\n } else if (!domainParamOnly && !loginHintParamOnly) {\r\n newUrl += \"?\";\r\n }\r\n\r\n // Update the URL of the current page using the History API without refreshing the page\r\n window.history.pushState({ path: newUrl }, \"\", newUrl);\r\n};\r\n\r\nexport function disableGCSCustomBanner() {\r\n const customBannerProps: CustomBannerArgs = {\r\n visibilityFlag: false,\r\n };\r\n const errorBannerEvent = new CustomEvent(BannerType.GcsErrorBanner, {\r\n detail: customBannerProps,\r\n });\r\n window.dispatchEvent(errorBannerEvent);\r\n}\r\n\r\nexport const checkGPTOptOutPolicy = () => {\r\n const globalPrivacyControlEnabled = (navigator as any).globalPrivacyControl;\r\n const gpc_dataSharingOptIn = globalPrivacyControlEnabled\r\n ? false\r\n : checkThirdPartyAdsOptOutCookie();\r\n function checkThirdPartyAdsOptOutCookie() {\r\n try {\r\n const ThirdPartyAdsOptOutCookieName = \"3PAdsOptOut\";\r\n const cookieValue = getCookie(ThirdPartyAdsOptOutCookieName);\r\n return cookieValue !== \"1\";\r\n } catch {\r\n return true;\r\n }\r\n }\r\n function getCookie(cookieName: string) {\r\n const cookieValue = document.cookie.match(\r\n \"(^|;)\\\\s*\" + cookieName + \"\\\\s*=\\\\s*([^;]+)\"\r\n );\r\n return cookieValue ? cookieValue[2] : \"\";\r\n }\r\n return gpc_dataSharingOptIn;\r\n};\r\nexport function handleShellSignOut(\r\n instance: IPublicClientApplication,\r\n isHeaderLogout = false\r\n) {\r\n clearLoginCredential();\r\n localStorage.setItem(IsCleanLogout, JSON.stringify(true));\r\n const currentPage = window.location.href;\r\n const redirectUri =\r\n isHeaderLogout && currentPage.includes(\"search\")\r\n ? `${process.env.REACT_APP_AEM_LOGOUT_URL}?redirectUri=${window.location.href}`\r\n : !isHeaderLogout && currentPage.includes(\"jobs\")\r\n ? `${process.env.REACT_APP_AEM_LOGOUT_URL}?redirectUri=${window.location.href}`\r\n : `${process.env.REACT_APP_AEM_LOGOUT_URL}`;\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: redirectUri,\r\n });\r\n}\r\n\r\nfunction getCookie(cookieName: string, cookieCollection: string) {\r\n const cookieValueArray = cookieCollection.match(\r\n new RegExp(`(^| )${cookieName}=([^;]+)`)\r\n );\r\n if (cookieValueArray) {\r\n return cookieValueArray[0];\r\n }\r\n return \"\";\r\n}\r\n\r\nexport const extractAccessTokenInCMSPage = () => {\r\n const cookieCollection = document.cookie;\r\n const accessTokenCookieName = \"access_token\";\r\n const accessToken = getCookie(accessTokenCookieName, cookieCollection);\r\n const accessTokenKeyValue = accessToken.split(\"=\");\r\n const accessTokenValue =\r\n accessTokenKeyValue.length >= 2 ? accessTokenKeyValue[1] : \"\";\r\n\r\n return {\r\n accessToken: accessTokenValue,\r\n };\r\n};\r\nexport const prepareCMSUrl = (baseUrl: string) => {\r\n let firstAdd = true;\r\n let resolvedUrl = baseUrl;\r\n resolvedUrl = appendToUrl(resolvedUrl, \"ref\", UtmSources.CMSPage, firstAdd);\r\n const { email, domainHint } = extractLoginContextForCMSPage();\r\n\r\n resolvedUrl = appendToUrl(resolvedUrl, \"domain\", domainHint, false, true);\r\n firstAdd = resolvedUrl === baseUrl;\r\n\r\n resolvedUrl = appendToUrl(resolvedUrl, \"login_hint\", email, false, true);\r\n firstAdd = resolvedUrl === baseUrl;\r\n return resolvedUrl;\r\n};\r\n\r\nexport const appendToUrl = (\r\n baseString: string,\r\n paramKey: string,\r\n paramValue: string,\r\n firstAdd: boolean,\r\n dontEncode?: boolean\r\n): string => {\r\n if (paramValue && paramKey) {\r\n const addedString = `${firstAdd ? \"?\" : \"&\"}${templateString\r\n .replace(\"{paramKey}\", paramKey)\r\n .replace(\r\n \"{paramValue}\",\r\n dontEncode ? paramValue : encodeURIComponent(paramValue)\r\n )}`;\r\n return `${baseString}${addedString}`;\r\n }\r\n return baseString;\r\n};\r\nexport const extractLoginContextForCMSPage = () => {\r\n const loggedInUserContext = window.LoggedInUserAuthConext;\r\n return {\r\n domainHint:\r\n loggedInUserContext && loggedInUserContext.idp\r\n ? loggedInUserContext.idp\r\n : \"\",\r\n email:\r\n loggedInUserContext && loggedInUserContext.emailparsed\r\n ? loggedInUserContext.emailparsed\r\n : \"\",\r\n };\r\n};\r\nexport enum UtmSources {\r\n CMSPage = \"cms\",\r\n}\r\n\r\nexport function getQueryParam(param: string) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(param);\r\n}\r\nexport function _getWcpUserConsentDetails() {\r\n // //read the cookie value and set the user consent details in adobe analytics configuration\r\n const wcpCookieConsentValue = Cookies.get(\"handleWcpConsentGCSVNext\");\r\n if (wcpCookieConsentValue) {\r\n return JSON.parse(wcpCookieConsentValue);\r\n }\r\n\r\n return {\r\n Required: [true], // Most likely `true`\r\n Analytics: [false],\r\n SocialMedia: [false],\r\n Advertising: [false],\r\n };\r\n}\r\n\r\n ","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\nimport { changeDocumentTitle } from \"../../../utilities/applicationUtils\";\r\n\r\nexport const useActionCenterTitle = (lang: string) => {\r\n React.useEffect(() => {\r\n const prevTitle = document.title;\r\n changeDocumentTitle(lang);\r\n return () => {\r\n document.title = prevTitle;\r\n };\r\n }, [lang]);\r\n};\r\n","import * as React from \"react\";\r\n\r\nimport { ApplicationsLoading, ExpenseLoading, ReferencesLoading, TravelLoading } from \"../../components/constants\";\r\nimport { trackEvent, trackException, trackMetric } from \"./../../services/telemetry/TelemetryService\";\r\n\r\nimport { IElement } from \"../../types/Element\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport { SpinnerComponent } from \"../../components/spinner/SpinnerComponent\";\r\nimport { SpinnerVisibility } from \"../../Constants\";\r\nimport axios from \"axios\";\r\nimport { toInteger } from \"lodash\";\r\nimport { useMountedRef } from \"../../utilities/hooks/useMountedRef\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useActionCenterTitle } from \"./hooks/useActionCenterTitle\";\r\n\r\nexport enum ActionCenterRoutes {\r\n application = \"application\",\r\n reference = \"reference\",\r\n travel = \"travel\",\r\n expense = \"expense\",\r\n}\r\n\r\ninterface ACProps {\r\n routeType: ActionCenterRoutes;\r\n}\r\n\r\nexport const ActionCenter: React.FC = (props) => {\r\n const instance: IElement = React.useRef();\r\n const ActionCenterURI = process.env.REACT_APP_ACTION_CENTER_URI;\r\n const [mainSrc, setMainSrc] = React.useState(\"\");\r\n const [ocvFeedbackSrc, setOcvFeedbackSrc] = React.useState(\"\");\r\n const [ocvFeedbackStyle, setOcvFeedbackStyle] = React.useState(\"\");\r\n const [ocvFeedbackLoaded, setOcvFeedbackLoaded] = React.useState(false);\r\n const [cssSrc, setCssSrc] = React.useState(\"\");\r\n const [scriptsLoaded, setScriptsLoaded] = React.useState(false);\r\n const [isSpinnerVisible, setIsSpinnerVisible] = React.useState(true);\r\n const mounted = useMountedRef();\r\n const { t, i18n } = useTranslation();\r\n useActionCenterTitle(i18n.language);\r\n const HTTP_TIMEOUT = 10000;\r\n const MAX_RETRY_COUNT = 7;\r\n const RETRY_INTERVAL = 5;\r\n const appName = \"action-center\";\r\n let apploadedTimeStamp: any = new Date();\r\n\r\n React.useEffect(() => {\r\n const wait = (ms: any) => new Promise((res) => setTimeout(res, ms));\r\n const axiosInstance = axios.create({\r\n timeout: HTTP_TIMEOUT,\r\n });\r\n function loadAssetManifest(retryCount: number) {\r\n axiosInstance.get(`${ActionCenterURI}/asset-manifest.json`).then(\r\n (response) => {\r\n const data = response.data;\r\n if (mounted.current) {\r\n // const isCss = `${ActionCenterURI}${data[\"main.css\"]}`;\r\n // if (isCss) {\r\n // setCssSrc(isCss);\r\n // }\r\n setMainSrc(`${ActionCenterURI}/${data[\"main.js\"]}`);\r\n setOcvFeedbackStyle(`${ActionCenterURI}/${data[\"static/styles/feedback-lite.css\"]}`);\r\n }\r\n },\r\n async (error) => {\r\n //log only once\r\n trackEvent(`Asset manifest retry attempt ${retryCount}.`);\r\n const errorMessage = `Error occured while loading artifacts:${JSON.stringify(error)}`;\r\n const ex: IExceptionTelemetry = {\r\n exception: {\r\n name: \"Error while Action Center manifest loading\",\r\n message: errorMessage,\r\n },\r\n };\r\n if (retryCount > MAX_RETRY_COUNT) {\r\n trackException(ex);\r\n trackEvent(\"Retry exceeded for asset manifest loading.\");\r\n //set Error Screen here later to stop spinner\r\n throw ex; //in case if we want to show an error page later\r\n }\r\n //exponentially back off at 10,20,30s....50s intervals\r\n retryCount++;\r\n await wait(retryCount * 2 * RETRY_INTERVAL * 1000);\r\n loadAssetManifest(retryCount);\r\n }\r\n );\r\n }\r\n loadAssetManifest(0);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!scriptsLoaded && mainSrc !== \"\") {\r\n // Adding CSS File if available.\r\n if (cssSrc !== \"\") {\r\n const styleTag: any = document.createElement(\"link\");\r\n styleTag.href = cssSrc;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n document.getElementsByTagName(\"head\")[0].appendChild(styleTag);\r\n trackEvent(\"main css file loaded and added to DOM\");\r\n }\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = mainSrc;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n trackEvent(\"main script file loaded and added to DOM\");\r\n }\r\n }, [mainSrc]);\r\n\r\n React.useEffect(() => {\r\n if (!ocvFeedbackLoaded && ocvFeedbackSrc !== \"\") {\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = ocvFeedbackSrc;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n }\r\n }, [ocvFeedbackSrc]);\r\n\r\n React.useEffect(() => {\r\n if (ocvFeedbackStyle !== \"\") {\r\n const styleTag = document.createElement(\"link\");\r\n styleTag.href = ocvFeedbackStyle;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n document.getElementsByTagName(\"body\")[0].appendChild(styleTag);\r\n }\r\n }, [ocvFeedbackStyle]);\r\n\r\n React.useEffect(() => {\r\n const handleSpinner = (event: any) => {\r\n setIsSpinnerVisible(event.detail);\r\n };\r\n window.addEventListener(SpinnerVisibility, handleSpinner);\r\n return () => {\r\n window.removeEventListener(SpinnerVisibility, handleSpinner);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isSpinnerVisible) {\r\n dispatchLangEvent(i18n.language);\r\n //application loded;\r\n RegisterAppLoad();\r\n }\r\n }, [isSpinnerVisible, i18n.language]);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"beforeunload\", logBeforeUnload);\r\n return () => {\r\n window.removeEventListener(\"beforeunload\", logBeforeUnload);\r\n const deps = document.querySelectorAll(`[data-app=${appName}]`);\r\n if (deps.length) {\r\n deps.forEach((dep) => {\r\n dep.remove();\r\n });\r\n }\r\n };\r\n }, []);\r\n\r\n function logBeforeUnload() {\r\n const unloadTimeStamp: any = new Date();\r\n //UTP tracks every activity in the page including mouse movement and udpates the time stamp in local storage !!\r\n // we could use it to accurately measure last user activity even if user leaves seeion open for long.\r\n const lastActivityTime = toInteger(localStorage.getItem(\"utp.last.activity.time\") || unloadTimeStamp);\r\n const timeSpent = (lastActivityTime - apploadedTimeStamp) / 1000;\r\n trackMetric({\r\n name: \"ActionCenterSessionDuration\",\r\n average: timeSpent,\r\n sampleCount: 1,\r\n });\r\n }\r\n\r\n function RegisterAppLoad() {\r\n apploadedTimeStamp = new Date();\r\n }\r\n\r\n function dispatchLangEvent(dispatchLang: string) {\r\n const i18nLangEvent = new CustomEvent(\"language\", {\r\n detail: {\r\n lng: dispatchLang,\r\n },\r\n });\r\n window.dispatchEvent(i18nLangEvent);\r\n }\r\n\r\n return (\r\n
\r\n {props.routeType === ActionCenterRoutes.reference\r\n ? isSpinnerVisible && \r\n : props.routeType === ActionCenterRoutes.travel\r\n ? isSpinnerVisible && \r\n : props.routeType === ActionCenterRoutes.expense\r\n ? isSpinnerVisible && \r\n : isSpinnerVisible && }\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\n trackEvent,\r\n trackException,\r\n trackMetric,\r\n} from \"../../services/telemetry/TelemetryService\";\r\n\r\nimport { ApplyApplicationLoading } from \"../../components/constants\";\r\nimport { ApplySpinnerVisibility } from \"../../Constants\";\r\nimport { IElement } from \"../../types/Element\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport React from \"react\";\r\nimport { SpinnerComponent } from \"../../components/spinner/SpinnerComponent\";\r\nimport axios from \"axios\";\r\nimport { toInteger } from \"lodash\";\r\nimport { useMountedRef } from \"../../utilities/hooks/useMountedRef\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Asset } from \"../JobSearch/Index.types\";\r\nimport { triggerApplyModuleInvocationEvent } from \"../../ShellCustomEvents\";\r\n\r\nexport enum ApplyRoutes {\r\n apply = \"apply\",\r\n}\r\n\r\ninterface ApplyProps {\r\n routeType: ApplyRoutes;\r\n}\r\nconst appName = \"applyexp\";\r\nexport const ApplyExperience: React.FC = (props) => {\r\n const [isApplySpinnerVisible, setIsApplySpinnerVisible] =\r\n React.useState(true);\r\n const [scriptsLoaded, setScriptsLoaded] = React.useState(false);\r\n const [manifestAssets, setManifestAssets] = React.useState();\r\n let applyAppLoadTimeStamp: any = new Date();\r\n const instance: IElement = React.useRef();\r\n const mounted = useMountedRef();\r\n const { t, i18n } = useTranslation();\r\n const HTTP_TIMEOUT = 10000;\r\n const MAX_RETRY_COUNT = 7;\r\n const RETRY_INTERVAL = 5;\r\n const ApplyExperienceURI = process.env.REACT_APP_APPLY_EXPERIENCE_URI;\r\n\r\n React.useEffect(() => {\r\n const wait = (ms: any) => new Promise((res) => setTimeout(res, ms));\r\n const axiosInstance = axios.create({\r\n timeout: HTTP_TIMEOUT,\r\n });\r\n trackEvent(`Apply load started at ${applyAppLoadTimeStamp}`);\r\n function loadAssetManifest(retryCount: number) {\r\n axiosInstance.get(`${ApplyExperienceURI}/asset-manifest.json`).then(\r\n (response: { data: any }) => {\r\n const data = response.data;\r\n if (mounted.current) {\r\n const assets = [];\r\n for (const property in data) {\r\n const asset: Asset = {\r\n name: property,\r\n src: `${ApplyExperienceURI}/${data[property]}`,\r\n };\r\n assets.push(asset);\r\n }\r\n triggerApplyModuleInvocationEvent();\r\n setManifestAssets(assets);\r\n }\r\n },\r\n async (error: any) => {\r\n //log only once\r\n trackEvent(`Asset manifest retry attempt ${retryCount}.`);\r\n const errorMessage = `Error occured while loading artifacts:${JSON.stringify(\r\n error\r\n )}`;\r\n const ex: IExceptionTelemetry = {\r\n exception: {\r\n name: \"Error while Apply manifest loading\",\r\n message: errorMessage,\r\n },\r\n };\r\n if (retryCount > MAX_RETRY_COUNT) {\r\n trackException(ex);\r\n trackEvent(\"Retry exceeded for asset manifest loading.\");\r\n //set Error Screen here later to stop spinner\r\n throw ex; //in case if we want to show an error page later\r\n }\r\n //exponentially back off at 10,20,30s....50s intervals\r\n retryCount++;\r\n await wait(retryCount * 2 * RETRY_INTERVAL * 1000);\r\n loadAssetManifest(retryCount);\r\n }\r\n );\r\n }\r\n loadAssetManifest(0);\r\n }, []);\r\n\r\n const addScriptToHeader = (scriptSource: string) => {\r\n if (scriptSource) {\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = scriptSource;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n }\r\n };\r\n\r\n const addStyleToHeader = (styleSource: string) => {\r\n if (styleSource) {\r\n const styleTag = document.createElement(\"link\");\r\n styleTag.href = styleSource;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.type = \"text/css\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(styleTag);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!scriptsLoaded && manifestAssets) {\r\n // Add these three scripts in the recommended order.\r\n const runtimeScript = manifestAssets.find(\r\n (asset) => asset.name === \"runtime.js\"\r\n );\r\n const vendorsScript = manifestAssets.find(\r\n (asset) => asset.name === \"vendors.js\"\r\n );\r\n const mainScript = manifestAssets.find(\r\n (asset) => asset.name === \"main.js\"\r\n );\r\n if (runtimeScript && vendorsScript && mainScript) {\r\n {\r\n addScriptToHeader(runtimeScript.src);\r\n addScriptToHeader(vendorsScript.src);\r\n addScriptToHeader(mainScript.src);\r\n }\r\n\r\n // Add remaining Scripts and Stylesheets.\r\n manifestAssets.forEach((element) => {\r\n if (\r\n element.name.endsWith(\".js\") &&\r\n element.name !== \"main.js\" &&\r\n element.name !== \"runtime.js\" &&\r\n element.name !== \"vendors.js\"\r\n ) {\r\n addScriptToHeader(element.src);\r\n } else if (element.name.endsWith(\".css\")) {\r\n addStyleToHeader(element.src);\r\n }\r\n });\r\n setScriptsLoaded(true);\r\n trackEvent(\r\n \"ApplyExp scripts and stylesheet files loaded and added to DOM\"\r\n );\r\n } else {\r\n trackEvent(\"ApplyExp scripts and stylesheet not loaded\");\r\n }\r\n }\r\n\r\n return () => {\r\n const deps = document.querySelectorAll(`[data-app=${appName}]`);\r\n if (deps.length) {\r\n deps.forEach((dep) => {\r\n dep.remove();\r\n });\r\n }\r\n };\r\n }, [manifestAssets]);\r\n\r\n React.useEffect(() => {\r\n const handleSpinner = (event: any) => {\r\n setIsApplySpinnerVisible(event.detail);\r\n };\r\n window.addEventListener(ApplySpinnerVisibility, handleSpinner);\r\n return () => {\r\n window.removeEventListener(ApplySpinnerVisibility, handleSpinner);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isApplySpinnerVisible) {\r\n dispatchLangEvent(i18n.language);\r\n //application loded;\r\n RegisterApplyAppLoad();\r\n }\r\n }, [isApplySpinnerVisible, i18n.language]);\r\n\r\n function RegisterApplyAppLoad() {\r\n applyAppLoadTimeStamp = new Date();\r\n }\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"beforeApplyUnload\", logBeforeApplyUnload);\r\n return () => {\r\n window.removeEventListener(\"beforeApplyUnload\", logBeforeApplyUnload);\r\n };\r\n }, []);\r\n\r\n function logBeforeApplyUnload() {\r\n const unloadTimeStamp: any = new Date();\r\n //UTP tracks every activity in the page including mouse movement and udpates the time stamp in local storage !!\r\n // we could use it to accurately measure last user activity even if user leaves seeion open for long.\r\n const lastActivityTime = toInteger(\r\n localStorage.getItem(\"utp.last.activity.time\") || unloadTimeStamp\r\n );\r\n const timeSpent = (lastActivityTime - applyAppLoadTimeStamp) / 1000;\r\n trackMetric({\r\n name: \"ApplyExperienceSessionDuration\",\r\n average: timeSpent,\r\n sampleCount: 1,\r\n });\r\n }\r\n\r\n function dispatchLangEvent(dispatchLang: string) {\r\n const i18nLangEvent = new CustomEvent(\"language\", {\r\n detail: {\r\n lng: dispatchLang,\r\n },\r\n });\r\n window.dispatchEvent(i18nLangEvent);\r\n }\r\n\r\n return (\r\n
\r\n {props.routeType === ApplyRoutes.apply && isApplySpinnerVisible && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport const ApplyModuleInvocationEvent = \"ApplyModuleInvocationEvent\";\r\nexport const ProfileModuleInvocationEvent = \"ProfileModuleInvocationEvent\";\r\n\r\nexport function triggerApplyModuleInvocationEvent() {\r\n const applyInvocationEvent = new CustomEvent(ApplyModuleInvocationEvent, {\r\n detail: true,\r\n });\r\n window.dispatchEvent(applyInvocationEvent);\r\n}\r\n\r\nexport function triggerProfileModuleInvocationEvent() {\r\n const profileInvocationEvent = new CustomEvent(ProfileModuleInvocationEvent, {\r\n detail: true,\r\n });\r\n window.dispatchEvent(profileInvocationEvent);\r\n}\r\n\r\nexport function showSupportFormEvent() {\r\n const supportFormInvocationEvent = new CustomEvent(\"ShowSupportForm\");\r\n window.dispatchEvent(supportFormInvocationEvent);\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\n trackEvent,\r\n trackException,\r\n trackMetric,\r\n} from \"../../services/telemetry/TelemetryService\";\r\n\r\nimport { IElement } from \"../../types/Element\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport React from \"react\";\r\nimport { SpinnerComponent } from \"../../components/spinner/SpinnerComponent\";\r\nimport axios from \"axios\";\r\nimport { toInteger } from \"lodash\";\r\nimport { useMountedRef } from \"../../utilities/hooks/useMountedRef\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Asset } from \"../JobSearch/Index.types\";\r\nimport { triggerProfileModuleInvocationEvent } from \"../../ShellCustomEvents\";\r\nimport { ProfileSpinnerVisibility } from \"../../Constants\";\r\n\r\nexport enum ProfileRoutes {\r\n profile = \"profile\",\r\n}\r\n\r\ninterface ProfileProps {\r\n routeType: ProfileRoutes;\r\n}\r\nconst appName = \"profile_exp\";\r\nexport const ProfileExperience: React.FC = (props) => {\r\n const [isProfileSpinnerVisible, setIsProfileSpinnerVisible] =\r\n React.useState(true);\r\n const [scriptsLoaded, setScriptsLoaded] = React.useState(false);\r\n const [manifestAssets, setManifestAssets] = React.useState();\r\n let profileAppLoadTimeStamp: any = new Date();\r\n const instance: IElement = React.useRef();\r\n const mounted = useMountedRef();\r\n const { t, i18n } = useTranslation();\r\n const HTTP_TIMEOUT = 10000;\r\n const MAX_RETRY_COUNT = 7;\r\n const RETRY_INTERVAL = 5;\r\n const ProfileExperienceURI = process.env.REACT_APP_PROFILE_EXPERIENCE_URI;\r\n const [mainSrc, setMainSrc] = React.useState(\"\");\r\n\r\n React.useEffect(() => {\r\n const wait = (ms: any) => new Promise((res) => setTimeout(res, ms));\r\n const axiosInstance = axios.create({\r\n timeout: HTTP_TIMEOUT,\r\n });\r\n function loadAssetManifest(retryCount: number) {\r\n axiosInstance.get(`${ProfileExperienceURI}/asset-manifest.json`).then(\r\n (response: { data: any }) => {\r\n const data = response.data;\r\n if (mounted.current) {\r\n const assets = [];\r\n for (const property in data) {\r\n const asset: Asset = {\r\n name: property,\r\n src: `${ProfileExperienceURI}/${data[property]}`,\r\n };\r\n assets.push(asset);\r\n }\r\n triggerProfileModuleInvocationEvent();\r\n setManifestAssets(assets);\r\n }\r\n },\r\n async (error: any) => {\r\n //log only once\r\n trackEvent(`Asset manifest retry attempt ${retryCount}.`);\r\n const errorMessage = `Error occured while loading artifacts:${JSON.stringify(\r\n error\r\n )}`;\r\n const ex: IExceptionTelemetry = {\r\n exception: {\r\n name: \"Error while Profile manifest loading\",\r\n message: errorMessage,\r\n },\r\n };\r\n if (retryCount > MAX_RETRY_COUNT) {\r\n trackException(ex);\r\n trackEvent(\"Retry exceeded for asset manifest loading.\");\r\n //set Error Screen here later to stop spinner\r\n throw ex; //in case if we want to show an error page later\r\n }\r\n //exponentially back off at 10,20,30s....50s intervals\r\n retryCount++;\r\n await wait(retryCount * 2 * RETRY_INTERVAL * 1000);\r\n loadAssetManifest(retryCount);\r\n }\r\n );\r\n }\r\n loadAssetManifest(0);\r\n }, []);\r\n\r\n const addScriptToHeader = (scriptSource: string) => {\r\n if (scriptSource) {\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = scriptSource;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n }\r\n };\r\n\r\n const addStyleToHeader = (styleSource: string) => {\r\n if (styleSource) {\r\n const styleTag = document.createElement(\"link\");\r\n styleTag.href = styleSource;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.type = \"text/css\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(styleTag);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!scriptsLoaded && manifestAssets) {\r\n // Add these three scripts in the recommended order.\r\n const runtimeScript = manifestAssets.find(\r\n (asset) => asset.name === \"runtime.js\"\r\n );\r\n const vendorsScript = manifestAssets.find(\r\n (asset) => asset.name === \"vendors.js\"\r\n );\r\n const mainScript = manifestAssets.find(\r\n (asset) => asset.name === \"main.js\"\r\n );\r\n if (runtimeScript && vendorsScript && mainScript) {\r\n {\r\n addScriptToHeader(runtimeScript.src);\r\n addScriptToHeader(vendorsScript.src);\r\n addScriptToHeader(mainScript.src);\r\n }\r\n\r\n // Add remaining Scripts and Stylesheets.\r\n manifestAssets.forEach((element) => {\r\n if (\r\n element.name.endsWith(\".js\") &&\r\n element.name !== \"main.js\" &&\r\n element.name !== \"runtime.js\" &&\r\n element.name !== \"vendors.js\"\r\n ) {\r\n addScriptToHeader(element.src);\r\n } else if (element.name.endsWith(\".css\")) {\r\n addStyleToHeader(element.src);\r\n }\r\n });\r\n setScriptsLoaded(true);\r\n trackEvent(\r\n \"ProfileExp scripts and stylesheet files loaded and added to DOM\"\r\n );\r\n }\r\n }\r\n\r\n return () => {\r\n const deps = document.querySelectorAll(`[data-app=${appName}]`);\r\n if (deps.length) {\r\n deps.forEach((dep) => {\r\n dep.remove();\r\n });\r\n }\r\n };\r\n }, [manifestAssets]);\r\n\r\n React.useEffect(() => {\r\n const handleSpinner = (event: any) => {\r\n setIsProfileSpinnerVisible(event.detail);\r\n };\r\n window.addEventListener(ProfileSpinnerVisibility, handleSpinner);\r\n return () => {\r\n window.removeEventListener(ProfileSpinnerVisibility, handleSpinner);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isProfileSpinnerVisible) {\r\n dispatchLangEvent(i18n.language);\r\n //application loded;\r\n RegisterProfileAppLoad();\r\n }\r\n }, [isProfileSpinnerVisible, i18n.language]);\r\n\r\n function RegisterProfileAppLoad() {\r\n profileAppLoadTimeStamp = new Date();\r\n }\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"beforeProfileUnload\", logBeforeProfileUnload);\r\n return () => {\r\n window.removeEventListener(\"beforeProfileUnload\", logBeforeProfileUnload);\r\n };\r\n }, []);\r\n\r\n function logBeforeProfileUnload() {\r\n const unloadTimeStamp: any = new Date();\r\n //UTP tracks every activity in the page including mouse movement and udpates the time stamp in local storage !!\r\n // we could use it to accurately measure last user activity even if user leaves seeion open for long.\r\n const lastActivityTime = toInteger(\r\n localStorage.getItem(\"utp.last.activity.time\") || unloadTimeStamp\r\n );\r\n const timeSpent = (lastActivityTime - profileAppLoadTimeStamp) / 1000;\r\n trackMetric({\r\n name: \"ProfileExperienceSessionDuration\",\r\n average: timeSpent,\r\n sampleCount: 1,\r\n });\r\n }\r\n\r\n function dispatchLangEvent(dispatchLang: string) {\r\n const i18nLangEvent = new CustomEvent(\"language\", {\r\n detail: {\r\n lng: dispatchLang,\r\n },\r\n });\r\n window.dispatchEvent(i18nLangEvent);\r\n }\r\n\r\n return (\r\n
\r\n {props.routeType === ProfileRoutes.profile && isProfileSpinnerVisible && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import en_US_trans from './en_US/translation.json';\r\nimport en_trans from './en/translation.json';\r\nimport fr_CA_trans from './fr_CA/translation.json'\r\n\r\nexport const langResources = {\r\n en: {\r\n translation: en_trans\r\n },\r\n en_us: {\r\n translation: en_US_trans\r\n },\r\n fr_ca: {\r\n translation: fr_CA_trans\r\n }\r\n};","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\nimport { sessionLang } from \"./Constants\";\r\nimport { langResources } from \"./locales/langResources\";\r\n\r\nconst i18nLang = sessionStorage.getItem(sessionLang) || \"en_us\";\r\n\r\ni18n.use(initReactI18next)\r\n .init({\r\n resources: langResources,\r\n debug: true,\r\n lng: i18nLang,\r\n fallbackLng: \"en_us\",\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n react: {\r\n wait: true,\r\n },\r\n });\r\n\r\nexport default i18n;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { createContext, useState } from \"react\";\r\n\r\nimport { ContextProps, Props } from \"./index.types\";\r\n\r\nexport const LoginContext = createContext({\r\n showLoginDialog: false,\r\n candidateId: 0,\r\n setCandidateId: null,\r\n setLoginDialog: null,\r\n redirectionUrl: \"\",\r\n setRedirectionUrl: null,\r\n showCreateProfileDialog: true,\r\n showRegulatoryConsentDialog: false,\r\n setShowCreateProfileDialog: null,\r\n setShowRegulatoryConsentDialog: null,\r\n candidateSocialAuthProvider: \"\",\r\n setCandidateSocialAuthProvider: null,\r\n candidateSocialAuthIssuerId: \"\",\r\n setCandidateSocialAuthIssuerId: null,\r\n showSocialAuthMismatchError: false,\r\n setShowSocialAuthMismatchError: null,\r\n validSocialAuthDetailsIncaseOfMismatch: \"\",\r\n setValidSocialAuthDetailsIncaseOfMismatch: null,\r\n showConsentDialog: false,\r\n setShowConsentDialog: null,\r\n setRegulatoryCountry: null,\r\n regulatoryCountry: \"\",\r\n candidateCountry: \"\",\r\n setCandidateCountry: null,\r\n});\r\n\r\nexport default function LoginContextProvider({ children }: Props) {\r\n const [showModal, setModal] = useState(false);\r\n const [redirectionUrl, setredirectionUrl] = useState(\"\");\r\n const [showCreateProfileDialog, setShowCreateProfileDialog] = useState(false);\r\n const [showRegulatoryConsentDialog, setShowRegulatoryConsentDialog] = useState(false);\r\n const [candidateId, setCandidateId] = useState(0);\r\n const [socialAuthProvider, setSocialAuthProvider] = useState(\"\");\r\n const [issuerId, setIssuerId] = useState(\"\");\r\n const [isSocialAuthMismatch, setIsSocialAuthMismatch] = useState(false);\r\n const [socialAuthDetail, setSocialAuthDetail] = useState(\"\");\r\n const [showConsentDialog, setShowConsentDialog] = useState(false);\r\n const [regulatoryCountry, setRegulatoryCountry] = useState(\"\");\r\n const [candidateCountry, setCandidateCountry] = useState(\"\");\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport const VisitedFre = \"VisitedFre\";\r\nexport const DispatchType = \"SET_STATE\";\r\nexport const CookieExpiryDays = 400;\r\nexport const FreDialog = \"dialog\";\r\nexport const Fre = \"Fre\";\r\nexport const Previous = \"Previous\";\r\nexport const Next = \"Next\";\r\nexport const Get_Started = \"Get_Started\";\r\nexport const altText = \"altText\";\r\nexport const StartDate = new Date(\"2023-10-15\");\r\nexport const EndDate = new Date(\"2024-10-15\");\r\nexport const BannerButton = \"BannerButton\";\r\nexport const BannerText = \"BannerText\";\r\nexport const JobRecommendation = \"Job recommendation\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport { IMessageBarStyles, ILinkStyles } from \"@fluentui/react\";\r\n\r\nexport const freBannerStyling: IMessageBarStyles = {\r\n content: {\r\n padding: \"8px 16px\",\r\n width: \"auto\",\r\n alignItems: \"center\",\r\n },\r\n innerText: {\r\n height: \"auto\",\r\n lineHeight: 20,\r\n fontSize: 14,\r\n \"@media screen and (-ms-high-contrast: active)\": {\r\n color: \"white\",\r\n },\r\n },\r\n root: {\r\n background: \"#D7EBFF\",\r\n },\r\n};\r\nexport const freBannerLinkStyling: ILinkStyles = {\r\n root: {\r\n border: \"none\",\r\n textDecoration: \"underline\",\r\n },\r\n};\r\n","export const AnalyticsConstants = {\r\n PageView: \"PageView\",\r\n PageAction: \"PageAction\",\r\n BehaviorId: 14,\r\n External: \"External\",\r\n Internal: \"Internal\",\r\n Anonymous: \"Anonymous\",\r\n LeftClick: \"CL\",\r\n LinkClickTag: \"contentName\",\r\n RecommendedJobs: \"RecommendedJobs\",\r\n RecommendedJobsHeaderClick: \"RecommendedJobs header click\",\r\n RecommendedJobsBannerClick: \"RecommendedJobs Banner click\",\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { trackException } from \"../TelemetryService\";\r\nimport { AnalyticsConstants } from \"./Constants\";\r\n\r\n/* eslint-disable */\r\nexport const trackPageView = (currentView: any, isExternalUser?: boolean, pageType?: string) => {\r\n try {\r\n const userType = getUserType(isExternalUser);\r\n const overrideValues = {\r\n isAuto: true,\r\n urlCollectQuery: true,\r\n behavior: AnalyticsConstants.BehaviorId,\r\n pageType: pageType,\r\n pageName: `${currentView}`,\r\n pageTags: {\r\n aud: userType,\r\n },\r\n };\r\n\r\n callAnalyticsEvent(AnalyticsConstants.PageView, userType, overrideValues);\r\n } catch (e: any) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n trackException(e);\r\n }\r\n};\r\n\r\n/* eslint-disable */\r\nexport const trackPageAction = (\r\n contentTagKey: string,\r\n contentTagValue: string,\r\n behaviorId: number,\r\n isExternalUser?: boolean,\r\n pageType?: string,\r\n currentView?: string\r\n) => {\r\n try {\r\n const userType = getUserType(isExternalUser);\r\n const overrideValues = {\r\n isAuto: true,\r\n urlCollectQuery: true,\r\n behavior: behaviorId,\r\n pageName: currentView,\r\n pageType: pageType,\r\n actionType: AnalyticsConstants.LeftClick,\r\n pageTags: {\r\n aud: userType,\r\n },\r\n contentTags: {\r\n [contentTagKey]: contentTagValue,\r\n },\r\n };\r\n\r\n callAnalyticsEvent(AnalyticsConstants.PageAction, userType, overrideValues);\r\n } catch (e: any) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n trackException(e);\r\n }\r\n};\r\n\r\n/* eslint-disable */\r\nexport const callAnalyticsEvent = (eventType: string, userType: string, overrideValues: any) => {\r\n if (typeof (window as any).trackAnalyticsEvent === \"function\") {\r\n (window as any).trackAnalyticsEvent(eventType, userType, overrideValues);\r\n }\r\n};\r\n\r\nexport const getUserType = (isExternalUser?: boolean): string => {\r\n return isExternalUser === null || isExternalUser === undefined\r\n ? AnalyticsConstants.Anonymous\r\n : isExternalUser === false\r\n ? AnalyticsConstants.Internal\r\n : AnalyticsConstants.External;\r\n};\r\n","import { Dispatch, SetStateAction, useContext, useEffect } from \"react\";\r\nimport { MessageBar, MessageBarType, Link } from \"@fluentui/react\";\r\nimport Cookies from \"js-cookie\";\r\nimport { isEqual } from \"lodash\";\r\nimport React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Locales } from \"../../components/constants\";\r\nimport i18n from \"../../i18n.config\";\r\nimport { LoginContext } from \"../../services/auth/loginContext\";\r\nimport { config } from \"../../services/config\";\r\nimport {\r\n CookieExpiryDays,\r\n Fre,\r\n StartDate,\r\n EndDate,\r\n BannerButton,\r\n BannerText,\r\n JobRecommendation,\r\n VisitedFre,\r\n} from \"../FreConstants\";\r\nimport { Close } from \"../../Constants\";\r\nimport { freBannerLinkStyling, freBannerStyling } from \"./BannerStyle\";\r\nimport { prepareCMSUrl } from \"../../utilities/applicationUtils\";\r\nimport { AnalyticsConstants } from \"../../services/telemetry/analytics/Constants\";\r\nimport { trackPageAction } from \"../../services/telemetry/analytics/AnalyticsPageEvent\";\r\n\r\ninterface IBannerProps {\r\n isBannerVisible: boolean;\r\n setIsbannerVisible: Dispatch>;\r\n}\r\n\r\ninterface ICookieData {\r\n candidateId: number;\r\n feature: string;\r\n}\r\nexport const GCSRecommendationBanner: React.FC = (props: IBannerProps) => {\r\n const { isBannerVisible, setIsbannerVisible } = props;\r\n const recommendationURL = process.env.REACT_APP_RECOMMENDATION_URL || \"\";\r\n const { t } = useTranslation();\r\n const [bannerText, setBannerText] = React.useState();\r\n const [bannerButton, setBannerButton] = React.useState();\r\n const [cookieData, setCookieData] = React.useState();\r\n const { candidateId } = useContext(LoginContext);\r\n\r\n const bannerLinkUrl = prepareCMSUrl(recommendationURL);\r\n\r\n useEffect(() => {\r\n if (i18n.language === Locales.en_us) {\r\n setBannerButton(t(`${Fre}.${BannerButton}`));\r\n setBannerText(t(`${Fre}.${BannerText}`));\r\n }\r\n setCookieData({\r\n candidateId: candidateId,\r\n feature: JobRecommendation,\r\n });\r\n }, [i18n.language]);\r\n\r\n const setHideMessageBar = () => {\r\n setIsbannerVisible(false);\r\n Cookies.set(VisitedFre, JSON.stringify(cookieData), {\r\n expires: CookieExpiryDays,\r\n path: \"/\",\r\n domain: config.careersSubDomain,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (cookieData?.feature) {\r\n const currentDate = new Date();\r\n const cookieObj = JSON.parse(Cookies.get(VisitedFre) || \"{}\");\r\n const startDate = StartDate;\r\n const endDate = EndDate;\r\n if (currentDate >= startDate && currentDate <= endDate && !isEqual(cookieObj, cookieData)) {\r\n setIsbannerVisible(true);\r\n }\r\n }\r\n }, [cookieData]);\r\n return (\r\n <>\r\n {isBannerVisible && (\r\n
\r\n \r\n {bannerText}\r\n {\r\n trackPageAction(\r\n AnalyticsConstants.LinkClickTag,\r\n AnalyticsConstants.RecommendedJobsBannerClick,\r\n AnalyticsConstants.BehaviorId,\r\n config?.userProfile?.isExternal,\r\n AnalyticsConstants.RecommendedJobs,\r\n AnalyticsConstants.RecommendedJobs\r\n );\r\n window.location.href = bannerLinkUrl;\r\n }}\r\n styles={freBannerLinkStyling}\r\n >\r\n {bannerButton}\r\n \r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { useState } from \"react\";\r\nimport { GCSRecommendationBanner } from \"../GCSRecommendationBanner\";\r\n\r\nexport const BannerWrappper: React.FC = () => {\r\n const [isBannerVisible, setIsbannerVisible] = useState(false);\r\n return (\r\n (\r\n \r\n ) || null\r\n );\r\n};\r\n","import {\r\n INavStyles,\r\n IStackStyles,\r\n ILinkStyleProps,\r\n ILinkStyles,\r\n IStyleFunctionOrObject,\r\n} from \"@fluentui/react\";\r\n\r\nexport const containerStackStyles: IStackStyles = {\r\n root: {\r\n background: \"#f2f2f2\",\r\n width: \"100%\",\r\n },\r\n inner: {\r\n marginRight: \"unset\",\r\n },\r\n};\r\n\r\nexport const languageLinkStyles: IStyleFunctionOrObject<\r\n ILinkStyleProps,\r\n ILinkStyles\r\n> = {\r\n root: {\r\n \":hover\": {\r\n color: \"#0067b8\",\r\n },\r\n color: \"#0067b8\",\r\n },\r\n};\r\n\r\nexport const languageSelectedLinkStyles: IStyleFunctionOrObject<\r\n ILinkStyleProps,\r\n ILinkStyles\r\n> = {\r\n root: {\r\n \":hover, :focus\": {\r\n color: \"#000000\",\r\n },\r\n color: \"#000000\",\r\n fontWeight: \"bold\",\r\n },\r\n};\r\n\r\nexport const iconStylesForStacksParent: Partial = {\r\n root: {\r\n display: \"inline-flex\",\r\n verticalAlign: \"middle\",\r\n pointerEvents: \"none\",\r\n color: \"#737373\",\r\n marginRight: 6,\r\n paddingBottom: 2,\r\n fontSize: 16,\r\n },\r\n};\r\n\r\nexport const iconStylesForStacks: Partial = {\r\n root: {\r\n fontSize: \".6rem\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n color: \"#000000\",\r\n pointerEvents: \"none\",\r\n },\r\n};\r\n\r\nexport const footerMiddle: React.CSSProperties = {\r\n float: \"left\",\r\n marginTop: 9,\r\n};\r\n\r\nexport const textStyles: React.CSSProperties = {\r\n display: \"inline-block\",\r\n fontSize: \"1rem\",\r\n verticalAlign: \"middle\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: \"rgb(0, 0, 0)\",\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n};\r\n\r\nexport const firstStackStyles: IStackStyles = {\r\n root: {\r\n background: \"#f2f2f2\",\r\n margin: \"0px 7% 0px 7%\",\r\n padding: \"2rem 0px 2rem 0px\",\r\n selectors: {\r\n \"@media screen and (min-width: 320px)\": {\r\n maxWidth: 1920,\r\n width: \"100%\",\r\n marginLeft: 24,\r\n },\r\n \"@media screen and (min-width: 860px)\": {\r\n maxWidth: 1920,\r\n width: \"100%\",\r\n marginLeft: 24,\r\n },\r\n \"@media screen and (min-width: 1084px)\": {\r\n maxWidth: 1920,\r\n width: \"100%\",\r\n marginLeft: \"5%\",\r\n },\r\n \"@media screen and (max-width: 767px)\": {\r\n \"> :first-child\": {\r\n display: \"grid\",\r\n },\r\n },\r\n },\r\n },\r\n inner: {\r\n marginLeft: \"unset\",\r\n },\r\n};\r\n\r\nexport const firstStackItemStyles: React.CSSProperties = {\r\n ...textStyles,\r\n background: \"f2f2f2\",\r\n marginLeft: \"unset\",\r\n marginRight: \"2%\",\r\n cursor: \"pointer\",\r\n textDecoration: \"none\",\r\n};\r\n\r\nexport const stackStyles: IStackStyles = {\r\n root: {\r\n background: \"#e3e3e3\",\r\n width: \"100%\",\r\n height: 50,\r\n marginRight: \"unset\",\r\n \"@media screen and (max-width: 600px)\": {\r\n height: 90,\r\n },\r\n \"@media screen and (max-width: 360px)\": {\r\n height: 125,\r\n },\r\n },\r\n};\r\n\r\nexport const itemStyleLeft: React.CSSProperties = {\r\n fontSize: \"1.2rem\",\r\n lineHeight: \"24px\",\r\n fontFamily: \"Segoe-UI\",\r\n verticalAlign: \"middle\",\r\n color: \"#000000\",\r\n background: \"transparent\",\r\n display: \"block\",\r\n border: \"1px solid #e3e3e3\",\r\n marginLeft: \"unset\",\r\n width: \"auto\",\r\n marginTop: 6,\r\n};\r\n\r\nexport const itemStyles: React.CSSProperties = {\r\n background: \"transparent\",\r\n color: \"#000000\",\r\n height: \"35px\",\r\n padding: \"6px 0\",\r\n border: \"1px solid #e3e3e3\",\r\n marginLeft: \"unset\",\r\n marginRight: \"unset\",\r\n width: 166,\r\n verticalAlign: \"bottom\",\r\n};\r\n\r\nexport const marginImgs: React.CSSProperties = {\r\n marginRight: 12,\r\n};\r\n\r\nexport const marginInsta: React.CSSProperties = {\r\n marginRight: 0,\r\n};\r\n\r\nconst languageStyles: React.CSSProperties = {\r\n fontSize: \"15px\",\r\n textDecoration: \"none\",\r\n marginRight: 4,\r\n background: \"#e3e3e3\",\r\n border: \"2px dashed transparent\",\r\n display: \"inline-block\",\r\n};\r\n\r\nexport const englishStyles: React.CSSProperties = {\r\n ...languageStyles,\r\n marginRight: 4,\r\n borderRight: \"1px solid #000000\",\r\n};\r\n\r\nexport const frenchStyles: React.CSSProperties = {\r\n ...languageStyles,\r\n padding: \"5px 8px 5px 4px\",\r\n};\r\n\r\nexport const fabricRootStyles: React.CSSProperties = {\r\n //marginTop: \"132px\",\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport Axios, { AxiosRequestConfig } from \"axios\";\r\nimport axiosRetry from \"axios-retry\";\r\nimport { config } from \"../config\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { trackException } from \"../telemetry/TelemetryService\";\r\n\r\nconst axiosProfileInstance = Axios.create({\r\n baseURL: config.profileApi.baseUrl,\r\n});\r\n\r\naxiosRetry(axiosProfileInstance, {\r\n retries: config.profileApi.apiRetryCount,\r\n retryDelay: axiosRetry.exponentialDelay,\r\n});\r\naxiosProfileInstance.interceptors.request.use(\r\n (axiosConfig) => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n axiosConfig.headers[\"X-CorrelationId\"] = config.telemetry.sessionId;\r\n axiosConfig.headers[\"X-SubCorrelationId\"] = uuidv4();\r\n resolve(axiosConfig);\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n reject(axiosConfig);\r\n }\r\n }\r\n });\r\n },\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\naxiosProfileInstance.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (error) {\r\n if (!error.response) {\r\n return Promise.reject(\"Error occured\");\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default axiosProfileInstance;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport axiosProfileInstance from \"./axiosProfileInstance\";\r\nimport { config } from \"../config\";\r\nimport { IProfileRequest } from \"./profileRequest\";\r\n\r\nexport const profileApi = {\r\n getProfileDetails: (accessToken: string) => {\r\n // This is called after login and to re-use the tokens. we are passing it at the time of calling the method.\r\n axiosProfileInstance.defaults.headers.Authorization = `Bearer ${accessToken}`;\r\n return axiosProfileInstance.get(config.profileApi.getProfileDetailsApiPath);\r\n },\r\n createProfile: (accessToken: string, payload: IProfileRequest) => {\r\n // This is called after login and to re-use the tokens. we are passing it at the time of calling the method.\r\n axiosProfileInstance.defaults.headers.Authorization = `Bearer ${accessToken}`;\r\n return axiosProfileInstance.post(\r\n config.profileApi.createProfileApiPath,\r\n payload\r\n );\r\n },\r\n updateProfile: (\r\n accessToken: string,\r\n payload: IProfileRequest,\r\n candidateId: string\r\n ) => {\r\n // This is called after login and to re-use the tokens. we are passing it at the time of calling the method.\r\n const patchProfileDataPath = config.profileApi.patchProfileData.replace(\r\n \"{candidateId}\",\r\n candidateId\r\n );\r\n axiosProfileInstance.defaults.headers.Authorization = `Bearer ${accessToken}`;\r\n return axiosProfileInstance.patch(patchProfileDataPath, payload);\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { profileApi } from \"../../profile/profileApi\";\r\nimport { IProfileRequest } from \"../../profile/profileRequest\";\r\n\r\nexport const CandidateIdManager = {\r\n SetCandidateId: async (candidateId: string, candidateInfo: any) => {\r\n sessionStorage.setItem(\"CandidateId\", candidateId);\r\n sessionStorage.setItem(\"CandidateInfo\", candidateInfo);\r\n },\r\n\r\n GetCandidateId: () => {\r\n const candidateId = sessionStorage.getItem(\"CandidateId\");\r\n return candidateId;\r\n },\r\n\r\n FlushCandidateId: () => {\r\n const candidateId = sessionStorage.getItem(\"CandidateId\");\r\n if (candidateId) {\r\n sessionStorage.removeItem(\"CandidateId\");\r\n }\r\n },\r\n FlushCandidateInfo: () => {\r\n const CandidateInfo = sessionStorage.getItem(\"CandidateInfo\");\r\n\r\n if (CandidateInfo) {\r\n sessionStorage.removeItem(\"CandidateInfo\");\r\n }\r\n },\r\n\r\n GetCandidateDetails: () => {\r\n const candidateInfo = sessionStorage.getItem(\"CandidateInfo\");\r\n if (candidateInfo) {\r\n return JSON.parse(candidateInfo);\r\n } else return null;\r\n },\r\n\r\n getBasicProfile: async (accessToken: string) => {\r\n const response = await profileApi.getProfileDetails(accessToken);\r\n return response;\r\n },\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n */\r\n\r\nimport { AccountInfo, AuthenticationResult } from \"@azure/msal-browser\";\r\n\r\nimport {\r\n Country,\r\n ExternalUserType,\r\n India,\r\n InternalUserType,\r\n LocalHost,\r\n RequestQueryString,\r\n MicrosoftEmailAddress,\r\n CandidateCountrySessionKey,\r\n} from \"../../../Constants\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { config } from \"../../config\";\r\nimport { Live, microsoft, MicrosoftFte, MicrosoftLive } from \"../../../components/constants\";\r\nimport { CandidateIdManager } from \"./CandidateIdManager\";\r\n\r\ntype FaaCFunction = (args: T) => React.ReactNode;\r\n\r\nexport function getChildrenOrFunction(children: React.ReactNode | FaaCFunction, args: T): React.ReactNode {\r\n if (typeof children === \"function\") {\r\n return children(args);\r\n }\r\n return children;\r\n}\r\n\r\n/*\r\n * Utility types\r\n * Reference: https://github.com/piotrwitek/utility-types\r\n */\r\ntype SetDifference = A extends B ? never : A;\r\ntype SetComplement = SetDifference;\r\nexport type Subtract = Pick>;\r\n\r\n/**\r\n * Helper function to determine whether 2 arrays are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA\r\n * @param arrayB\r\n */\r\nexport function accountArraysAreEqual(arrayA: Array, arrayB: Array): boolean {\r\n if (arrayA.length !== arrayB.length) {\r\n return false;\r\n }\r\n\r\n const comparisonArray = [...arrayB];\r\n\r\n return arrayA.every((elementA) => {\r\n const elementB = comparisonArray.shift();\r\n if (!elementA || !elementB) {\r\n return false;\r\n }\r\n\r\n return (\r\n elementA.homeAccountId === elementB.homeAccountId &&\r\n elementA.localAccountId === elementB.localAccountId &&\r\n elementA.username === elementB.username\r\n );\r\n });\r\n}\r\n\r\n/**\r\n * Helper function to configure user details in session\r\n * @param account\r\n */\r\nexport function configureUserDetails(account: AccountInfo): void {\r\n const claims = account.idTokenClaims as any;\r\n if (claims) {\r\n const idp = claims.idp;\r\n if (idp === \"linkedin.com\") {\r\n config.userProfile.fullName = claims.given_name + \" \" + claims.family_name;\r\n } else {\r\n config.userProfile.fullName = account.name;\r\n }\r\n config.userProfile.email = claims.email;\r\n\r\n // Logic to detect internal Microsoft users\r\n const domain = claims.email.split(\"@\")[1];\r\n if (domain === MicrosoftEmailAddress && config.msalConfig.internalUserIdps.includes(idp))\r\n config.userProfile.isExternal = false;\r\n else config.userProfile.isExternal = true;\r\n }\r\n}\r\n\r\nexport const getUserCountry = (isAem?: boolean): string | null => {\r\n const candidateInfo = CandidateIdManager.GetCandidateDetails();\r\n\r\n let country: string | null = null;\r\n if (isAem) {\r\n country = sessionStorage.getItem(CandidateCountrySessionKey);\r\n } else {\r\n const queryString = sessionStorage.getItem(RequestQueryString);\r\n if (candidateInfo && candidateInfo.CandidateCountry) {\r\n country = candidateInfo.CandidateCountry;\r\n } else if (queryString !== null) {\r\n country = new URLSearchParams(queryString).get(Country);\r\n } else if (window.location.href.indexOf(LocalHost) > -1) {\r\n country = India;\r\n }\r\n }\r\n return country;\r\n};\r\n\r\nexport const getUserType = (): string => {\r\n return config.userProfile.isExternal ? ExternalUserType : InternalUserType;\r\n};\r\n\r\nexport const getSocialAuthProvider = (response: AuthenticationResult) => {\r\n const claims: any = response.idTokenClaims;\r\n const idp = claims.idp;\r\n const socialAuthProvider = idp.substring(0, idp.lastIndexOf(\".\"));\r\n if (socialAuthProvider.includes(Live)) {\r\n return MicrosoftLive;\r\n } else if (socialAuthProvider.includes(microsoft)) {\r\n return MicrosoftFte;\r\n } else {\r\n return socialAuthProvider;\r\n }\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { config } from \"../services/config\";\r\nimport { getQueryText } from \"../utilities/applicationUtils\";\r\n\r\nconst envLink = config.careersPortalLink;\r\n\r\nexport const getNavBarLinks = (\r\n isFrenchSite: boolean,\r\n isExternal?: boolean\r\n): any[] => {\r\n const links = !isExternal\r\n ? getInternalLinks(isFrenchSite)\r\n : getExternalLinks(isFrenchSite);\r\n return links;\r\n};\r\n\r\nexport const getFooterLinks = (\r\n isFrenchSite: boolean,\r\n isExternal?: boolean\r\n): any => {\r\n return contructFooterLinks(isFrenchSite, isExternal);\r\n};\r\n\r\nfunction getExternalLinks(isFrenchSite: boolean) {\r\n const siteLangPath = isFrenchSite ? \"/ca/fr\" : \"/us/en\";\r\n const professionalsPath = isFrenchSite\r\n ? \"/professionals/ca/fr/search-results\"\r\n : \"/professionals/us/en\";\r\n const studentsAndGrads = isFrenchSite\r\n ? \"/students/ca/fr/search-results\"\r\n : \"/students/us/en\";\r\n const signOutPageLink = isFrenchSite\r\n ? \"/ca/fr/logout?qpage=%2Fus%2Fen%2F&page=home\"\r\n : \"/us/en/logout?qpage=%2Fus%2Fen%2F&page=home\";\r\n const externalStaticLinks = [\r\n {\r\n key: \"careersHome\",\r\n url: envLink + siteLangPath + getQueryText(),\r\n },\r\n {\r\n key: \"professionalsHome\",\r\n url: envLink + professionalsPath + getQueryText(),\r\n },\r\n {\r\n key: \"professionalsLocations\",\r\n url: envLink + \"/professionals/us/en/locations\" + getQueryText(),\r\n },\r\n {\r\n key: \"professionalsProfessions\",\r\n url: envLink + \"/professionals/us/en/professions\" + getQueryText(),\r\n },\r\n {\r\n key: \"professionalsMilitary\",\r\n url: envLink + \"/professionals/us/en/military\" + getQueryText(),\r\n },\r\n {\r\n key: \"students&Grads\",\r\n url: envLink + studentsAndGrads + getQueryText(),\r\n },\r\n {\r\n key: \"lifeAtMSBenefits\",\r\n url: envLink + siteLangPath + \"/benefits\" + getQueryText(),\r\n },\r\n {\r\n key: \"lifeAtMSCulture\",\r\n url: envLink + siteLangPath + \"/culture\" + getQueryText(),\r\n },\r\n {\r\n key: \"lifeAtMSD&I\",\r\n url: envLink + siteLangPath + \"/diversityandinclusion\" + getQueryText(),\r\n },\r\n {\r\n key: \"lifeAtMSLife\",\r\n url: \"https://news.microsoft.com/life/\",\r\n },\r\n {\r\n key: \"profile\",\r\n url: envLink + siteLangPath + \"/profile\" + getQueryText(),\r\n },\r\n {\r\n key: \"jobAlerts\",\r\n url: envLink + siteLangPath + \"/managejobalerts\" + getQueryText(),\r\n },\r\n {\r\n key: \"actionCenter\",\r\n url: window.location.host + \"/actioncenter\" + getQueryText(),\r\n },\r\n {\r\n key: \"savedJobs\",\r\n url: envLink + siteLangPath + \"/savedjobs\" + getQueryText(),\r\n },\r\n {\r\n key: \"signOut\",\r\n url: envLink + signOutPageLink,\r\n },\r\n {\r\n key: \"hybridWorkplace\",\r\n url: envLink + siteLangPath + \"/hybrid-workplace\" + getQueryText(),\r\n },\r\n ];\r\n\r\n return externalStaticLinks;\r\n}\r\n\r\nfunction getInternalLinks(isFrenchSite: boolean) {\r\n const siteLangPath = isFrenchSite ? \"/i/ca/fr\" : \"/i/us/en\";\r\n const professionalsPath = isFrenchSite\r\n ? \"/i/ca/fr/professionals-search-results\"\r\n : \"/i/us/en/professionals\";\r\n const studentsAndGrads = isFrenchSite\r\n ? \"/i/ca/fr/students-search-results\"\r\n : \"/i/us/en/students\";\r\n const signOutPageLink = isFrenchSite\r\n ? \"/i/ca/fr/logout?qpage=%2Fus%2Fen%2F&page=home\"\r\n : \"/i/us/en/logout?qpage=%2Fus%2Fen%2F&page=home\";\r\n const internalStaticLinks = [\r\n {\r\n key: \"careersHome\",\r\n url: envLink,\r\n },\r\n {\r\n key: \"professionalsHome\",\r\n url: envLink + professionalsPath,\r\n },\r\n {\r\n key: \"professionalsLocations\",\r\n url: envLink + \"/i/us/en/locations\",\r\n },\r\n {\r\n key: \"professionalsProfessions\",\r\n url: envLink + \"/i/us/en/professions\",\r\n },\r\n {\r\n key: \"professionalsMilitary\",\r\n url: envLink + \"/i/us/en/military\",\r\n },\r\n {\r\n key: \"students&Grads\",\r\n url: envLink + studentsAndGrads,\r\n },\r\n {\r\n key: \"lifeAtMSBenefits\",\r\n url: envLink + siteLangPath + \"/benefits\",\r\n },\r\n {\r\n key: \"lifeAtMSCulture\",\r\n url: envLink + siteLangPath + \"/culture\",\r\n },\r\n {\r\n key: \"lifeAtMSD&I\",\r\n url: envLink + siteLangPath + \"/diversityandinclusion\",\r\n },\r\n {\r\n key: \"lifeAtMSLife\",\r\n url: \"https://news.microsoft.com/life/\",\r\n },\r\n {\r\n key: \"profile\",\r\n url: envLink + siteLangPath + \"/profile\",\r\n },\r\n {\r\n key: \"jobAlerts\",\r\n url: envLink + siteLangPath + \"/managejobalerts\",\r\n },\r\n {\r\n key: \"actionCenter\",\r\n url: window.location.host + \"/actioncenter\",\r\n },\r\n {\r\n key: \"savedJobs\",\r\n url: envLink + siteLangPath + \"/savedjobs\",\r\n },\r\n {\r\n key: \"howWeHire\",\r\n url: envLink + siteLangPath + \"/how-we-hire\",\r\n },\r\n {\r\n key: \"referrals\",\r\n url: envLink + siteLangPath + \"/referrals\",\r\n },\r\n {\r\n key: \"signOut\",\r\n url: envLink + signOutPageLink,\r\n },\r\n {\r\n key: \"hybridWorkplace\",\r\n url: envLink + siteLangPath + \"/hybrid-workplace\",\r\n },\r\n ];\r\n\r\n return internalStaticLinks;\r\n}\r\n\r\nfunction contructFooterLinks(isFrenchSite: boolean, isExternalUser?: boolean) {\r\n const sitePath = isFrenchSite ? \"/ca/fr\" : \"/us/en\";\r\n const completeSitePath = !isExternalUser ? \"/i\" + sitePath : sitePath;\r\n const footerLinks = {\r\n FAQ: envLink + completeSitePath + \"/faq\" + getQueryText(),\r\n InterviewTips:\r\n envLink + completeSitePath + \"/interviewtips\" + getQueryText(),\r\n AccessibilityRequest:\r\n envLink + completeSitePath + \"/accommodationrequest\" + getQueryText(),\r\n Comment: envLink + completeSitePath + \"/support\" + getQueryText(),\r\n LegalPolicies:\r\n envLink + completeSitePath + \"/legalpolicies\" + getQueryText(),\r\n DPN: \"http://go.microsoft.com/fwlink/?LinkId=518021\",\r\n Labor: \"https://aka.ms/LCANotices\",\r\n LinkedInMSAccount: \"https://www.linkedin.com/company/microsoft\",\r\n LinkedInLogo:\r\n \"https://prodcmscdn.azureedge.net/careerconnectresources/p/MICRUS/en_us/desktop/assets/images/linkedin-icon.svg\",\r\n TwitterMSAccount: isFrenchSite\r\n ? \"https://twitter.com/MicrosoftCaFR\"\r\n : \"https://twitter.com/microsoft\",\r\n TwitterLogo:\r\n \"https://prodcmscdn.azureedge.net/careerconnectresources/p/MICRUS/en_us/desktop/assets/images/twitter-icon.svg\",\r\n FacebookMSAccount: isFrenchSite\r\n ? \"https://www.facebook.com/MicrosoftCanadaEnFrancais/\"\r\n : \"https://www.facebook.com/Microsoft\",\r\n FacebookLogo:\r\n \"https://prodcmscdn.azureedge.net/careerconnectresources/p/MICRUS/en_us/desktop/assets/images/fb-icon.svg\",\r\n InstaMSAccount: \"https://www.instagram.com/microsoft\",\r\n InstaLogo:\r\n \"https://prodcmscdn.azureedge.net/careerconnectresources/p/MICRUS/en_us/desktop/assets/images/Instagram-icon.svg\",\r\n FrenchFlag:\r\n \"https://prodcmscdn.azureedge.net/careerconnectresources/p/MICRUS/en_us/desktop/assets/images/fr_ca.png\",\r\n };\r\n\r\n return footerLinks;\r\n}\r\n\r\nexport const SearchPathName = \"/search\";\r\nexport const ProfilePathName = \"/profile\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { config } from \"../../../services/config\";\r\n\r\nexport const GoogleTagScript = config.googlePixels.tagManagerScript;\r\nexport const GoogleTagScriptId = \"google-tag-script-ms-careers-id\";\r\nexport const GoogleTagConfig = config.googlePixels.tagManagerConfig;\r\nexport const GoogleTagConversionConfig = config.googlePixels.tagManagerConversionConfig;\r\nexport const GoogleTagTransactionId = config.telemetry.sessionId;\r\nexport const MaximumAdScript = \"https://js.aroscop.com/img/up.js\";\r\nexport const MaximumAdScriptId = \"maximum-ad-script-ms-careers-id\";\r\n\r\nexport enum CampaignPaths {\r\n ThankTou = \"apply/thankyou\",\r\n Apply = \"apply\",\r\n Home = \"home.html\",\r\n AIPage = \"careers-in-ai.html\",\r\n DataCenter = \"datacentertechnicians.html\",\r\n}\r\n\r\nexport const PathToTagDictionary = {\r\n [CampaignPaths.Apply]: \"othr_eng\",\r\n [CampaignPaths.Home]: \"lp_std\",\r\n [CampaignPaths.ThankTou]: \"ty_lp\",\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport \"./FooterTop.scss\";\r\n\r\nimport * as FooterTopStyles from \"./FooterTopInbuiltStyle\";\r\n\r\nimport { Fabric, IStackTokens, Icon, Link, Stack } from \"@fluentui/react\";\r\nimport { Footer, FooterItems, Locales, OpenInNewTab } from \"../constants\";\r\nimport React, { useState } from \"react\";\r\n\r\nimport { Person } from \"../../interfaces/person\";\r\nimport { config } from \"../../services/config\";\r\nimport { configureUserDetails } from \"../../services/auth/utils/utilities\";\r\nimport { getFooterLinks } from \"../staticLinks\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { sessionLang } from \"../../Constants\";\r\nimport { changeDocumentTitle } from \"../../utilities/applicationUtils\";\r\n\r\n// import { configureUserDetails } from \"../../services/auth/msal\";\r\n\r\nconst sectionStackTokens: IStackTokens = { childrenGap: 5 };\r\nconst firstStackTokens: IStackTokens = { childrenGap: \"10 30\" };\r\n\r\nconst BrandingFooter: React.FunctionComponent = () => {\r\n const { t, i18n } = useTranslation();\r\n const { instance } = useMsal();\r\n const [profile, setProfile] = useState(null);\r\n\r\n const isFrenchSite = i18n.language === Locales.fr_ca;\r\n const _hrefs = getFooterLinks(isFrenchSite, profile?.isExternal);\r\n\r\n if (instance.getAllAccounts().length > 0) {\r\n configureUserDetails(instance.getAllAccounts()[0]);\r\n }\r\n\r\n React.useEffect(() => {\r\n setProfile(config.userProfile);\r\n }, []);\r\n\r\n let isMSEmployee = false;\r\n if (profile && profile.isExternal === false) {\r\n isMSEmployee = true;\r\n }\r\n const changeLanguage = (locale: string) => {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\",\r\n });\r\n i18n.changeLanguage(locale);\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems.FAQ}`)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems.Interview_tips}`)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems.Accessibility_request}`)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems.Support}`)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems.Legal_policies}`)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems[\"Microsoft_Data_Privacy_Notice_(DPN)\"]}`)}\r\n \r\n \r\n \r\n {isMSEmployee && i18n.language !== Locales.fr_ca && (\r\n \r\n \r\n \r\n {t(`${Footer.FooterTop}.${FooterItems[\"Labor_Condition_Application_Postings\"]}`)}\r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n
\r\n
\r\n

{t(`${Footer.FooterBottom}.${FooterItems.Follow_Microsoft_Careers}`)}

\r\n
\r\n \r\n\r\n
\r\n {\r\n changeLanguage(Locales.en_us);\r\n changeDocumentTitle(Locales.en_us);\r\n sessionStorage.setItem(sessionLang, Locales.en_us);\r\n }}\r\n aria-label=\"Change Language to English\"\r\n >\r\n \r\n EN\r\n \r\n {\r\n changeLanguage(Locales.fr_ca);\r\n changeDocumentTitle(Locales.fr_ca);\r\n sessionStorage.setItem(sessionLang, Locales.fr_ca);\r\n }}\r\n aria-label=\"Change Language to Quebec French\"\r\n >\r\n FR - Canada\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst BrandingFooterWrapper = () => (\r\n \r\n \r\n \r\n);\r\nexport default BrandingFooterWrapper;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { config } from \"../../services/config\";\r\n\r\n// HTML Constants.\r\nexport const GCSVNextCookieBannerId = \"gcsVNextCookieBannerId\";\r\nexport const WcpConsentControlBannerId = \"wcpConsentBannerCtrl\";\r\nexport const WcpPreferencesControl = \"wcpCookiePreferenceCtrl\";\r\nexport const WcpScriptSrc = config.WcpCookieBannerUrl.wcpScriptUrl;\r\nexport const DataPrivacyNoticeText = \"Data Privacy Notice\";\r\n\r\n// Implementation Constants.\r\nexport const WcpPreferencesModalSetupTimeout = 1000;\r\nexport const CookieSubDomain = config.careersSubDomain;\r\nexport const WcpCookieConsentNameGCSVnext = \"handleWcpConsentGCSVNext\";\r\nexport const WcpCookieConsentExpiryDays = 365;\r\nexport const WcpInitCallbackEventName = \"WcpInitCallbackEventName\";\r\n\r\n// Business constants.\r\nexport const DataPrivacyLink = config.WcpCookieBannerUrl.privacyStatementUrl;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { IMaximumAdProps } from \"../types\";\r\nimport {\r\n GoogleTagConfig,\r\n GoogleTagConversionConfig,\r\n GoogleTagScript,\r\n GoogleTagScriptId,\r\n GoogleTagTransactionId,\r\n MaximumAdScript,\r\n MaximumAdScriptId,\r\n} from \"./constants\";\r\n\r\nconst pushGtagArguments = (...args: any) => {\r\n if (window.dataLayer) {\r\n window.dataLayer.push(args);\r\n }\r\n};\r\n\r\nexport const addGoogleTagScript = () => {\r\n const scriptTag = document.createElement(\"script\");\r\n // advised to put script tag in between head elements in the documentation.\r\n document.head.appendChild(scriptTag);\r\n scriptTag.id = GoogleTagScriptId;\r\n scriptTag.onload = () => {\r\n pushGtagArguments(\"js\", new Date());\r\n pushGtagArguments(\"config\", GoogleTagConfig);\r\n };\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.src = GoogleTagScript;\r\n};\r\n\r\nexport const addGoogleCampaign = () => {\r\n pushGtagArguments(\"event\", \"conversion\", {\r\n send_to: GoogleTagConversionConfig,\r\n transaction_id: GoogleTagTransactionId,\r\n });\r\n};\r\n\r\nexport const removeGoogleCampaign = () => {\r\n pushGtagArguments(\"config\", GoogleTagConfig, {\r\n client_storage: \"none\",\r\n });\r\n};\r\n\r\nexport const removeGoogleScript = () => {\r\n const scriptElem = document.getElementById(GoogleTagScriptId);\r\n if (scriptElem) {\r\n if (scriptElem.parentNode) {\r\n scriptElem.parentNode.removeChild(scriptElem);\r\n }\r\n }\r\n};\r\n\r\nexport const addFloodlightCampaign = (catName: string) => {\r\n const locationHref = window.location.href;\r\n\r\n const axel = Math.random();\r\n const num = axel * 10000000000000;\r\n\r\n const extJobId = new URL(locationHref).searchParams.get(\"Job_id\");\r\n const parsedJobId = parseInt(extJobId || \"\");\r\n const [marketName, localeName, referrerName, pageName, jobId, careerSiteName, interactionType, gdpr, gdprConsent] = [\r\n \"\",\r\n \"\",\r\n \"careers.microsoft.com\",\r\n encodeURIComponent(locationHref.split(\"?\")[0]),\r\n parsedJobId,\r\n \"Global%20Careers%20Site\",\r\n \"\",\r\n \"\",\r\n true,\r\n ];\r\n const divComponent = document.createElement(\"div\");\r\n divComponent.innerHTML =\r\n `\"\"';\r\n document.body.appendChild(divComponent);\r\n};\r\n\r\nexport const addBingMuidPixel = () => {\r\n const divComponent = document.createElement(\"div\");\r\n divComponent.innerHTML = `\"\"`;\r\n document.body.appendChild(divComponent);\r\n};\r\n\r\nconst _addMaximumAd = (props?: IMaximumAdProps) => {\r\n if (window.Krit_Universal_Pixel && typeof window.Krit_Universal_Pixel === \"function\") {\r\n const up_010ab663_b671_1a01_8dd5_6292320002bb = new window.Krit_Universal_Pixel();\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_piurl(\"aHR0cHM6Ly9wanAuYXJvc2NvcC5jb20vdW5pdl9waXg\");\r\n if (props && props.jobId && props.candidacyId) {\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_Param(\"JobID\", props.jobId);\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_Param(\"CandidacyID\", props.candidacyId);\r\n }\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_Param(\"uadv\", \"50685\");\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_Param(\"univ_pixel\", \"100\");\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_Param(\"kconsent\", \"1\");\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setkrit_Param(\"kgdpr\", \"0\");\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.setAsync();\r\n up_010ab663_b671_1a01_8dd5_6292320002bb.makeAd();\r\n }\r\n};\r\n\r\nexport const addMaximumAgencyPixel = (props?: IMaximumAdProps) => {\r\n const scriptTag = document.createElement(\"script\");\r\n document.body.appendChild(scriptTag);\r\n scriptTag.id = MaximumAdScriptId;\r\n scriptTag.onload = () => _addMaximumAd(props);\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.src = MaximumAdScript;\r\n};\r\n\r\nexport const removeMaximumAgencyPixel = () => {\r\n const scriptElem = document.getElementById(MaximumAdScriptId);\r\n if (scriptElem) {\r\n if (scriptElem.parentNode) {\r\n scriptElem.parentNode.removeChild(scriptElem);\r\n }\r\n }\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { checkGPTOptOutPolicy } from \"../../utilities/applicationUtils\";\r\nimport { CampaignPaths, PathToTagDictionary } from \"./pixels/constants\";\r\nimport {\r\n addFloodlightCampaign,\r\n addGoogleCampaign,\r\n addGoogleTagScript,\r\n addMaximumAgencyPixel,\r\n removeGoogleCampaign,\r\n removeGoogleScript,\r\n removeMaximumAgencyPixel,\r\n} from \"./pixels/utils\";\r\nimport { GcsVNextWcpConsentCategory } from \"./types\";\r\n\r\nconst _addFloodlightCampaign = () => {\r\n addGoogleTagScript();\r\n if (window.location.pathname.includes(CampaignPaths.ThankTou)) {\r\n addGoogleCampaign();\r\n addFloodlightCampaign(PathToTagDictionary[CampaignPaths.ThankTou]);\r\n } else if (window.location.pathname.includes(CampaignPaths.Apply)) {\r\n addFloodlightCampaign(PathToTagDictionary[CampaignPaths.Apply]);\r\n } else if (\r\n window.location.pathname.includes(CampaignPaths.Home) ||\r\n window.location.pathname.includes(CampaignPaths.AIPage) ||\r\n window.location.pathname.includes(CampaignPaths.DataCenter)\r\n ) {\r\n addFloodlightCampaign(PathToTagDictionary[CampaignPaths.Home]);\r\n }\r\n};\r\n\r\nconst _removeFloodlightCampaign = () => {\r\n removeGoogleCampaign();\r\n removeGoogleScript();\r\n};\r\n\r\nconst _addMaximumCampaignDetailsFromSession = () => {\r\n const candidacyDetailsStringified = sessionStorage.getItem(\"CandidacyDetails\");\r\n if (candidacyDetailsStringified) {\r\n const candidacyDetails = JSON.parse(candidacyDetailsStringified);\r\n if (candidacyDetails.jobId && candidacyDetails.candidacyId) {\r\n addMaximumAgencyPixel({ candidacyId: candidacyDetails.candidacyId, jobId: candidacyDetails.jobId });\r\n }\r\n }\r\n};\r\n\r\nconst _addEventListenerForCandidacyDetails = () => {\r\n window.addEventListener(\"CandidacyEvent\", (event: any) => {\r\n const candidacyDetails = event.detail;\r\n if (candidacyDetails.jobId && candidacyDetails.candidacyId) {\r\n addMaximumAgencyPixel({ candidacyId: candidacyDetails.candidacyId, jobId: candidacyDetails.jobId });\r\n }\r\n });\r\n};\r\n\r\nconst _addMaximumCampaign = () => {\r\n if (window.location.pathname.includes(CampaignPaths.Home)) {\r\n addMaximumAgencyPixel();\r\n } else if (window.location.pathname.includes(CampaignPaths.Apply)) {\r\n if (window.location.pathname.includes(CampaignPaths.ThankTou)) {\r\n _addMaximumCampaignDetailsFromSession();\r\n } else {\r\n _addEventListenerForCandidacyDetails();\r\n }\r\n }\r\n};\r\n\r\nexport const CookieManager = {\r\n handleConsent: (consent: Record) => {\r\n if (process.env.REACT_APP_ENVIRONMENT_NAME === \"development\") {\r\n if (consent.Analytics && checkGPTOptOutPolicy()) {\r\n _addMaximumCampaign();\r\n } else {\r\n removeMaximumAgencyPixel();\r\n }\r\n }\r\n },\r\n getConsent: () => {\r\n let consent: Record | null = null;\r\n const siteConsent = window.siteConsent;\r\n if (siteConsent && siteConsent.getConsent && typeof siteConsent.getConsent === \"function\") {\r\n consent = siteConsent.getConsent();\r\n }\r\n return consent;\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { AvailableLangs, languagesConfig } from \"../../utilities/i18n.helper\";\r\nimport { Locales } from \"../constants\";\r\nimport {\r\n CookieSubDomain,\r\n DataPrivacyLink,\r\n DataPrivacyNoticeText,\r\n GCSVNextCookieBannerId,\r\n WcpConsentControlBannerId,\r\n WcpCookieConsentExpiryDays,\r\n WcpCookieConsentNameGCSVnext,\r\n WcpPreferencesControl,\r\n} from \"./config\";\r\nimport { CookieManager } from \"./manager\";\r\nimport { addBingMuidPixel } from \"./pixels/utils\";\r\nimport { GcsVNextWcpConsentCategory, IGCSVNextSiteConsent } from \"./types\";\r\nimport Cookies from \"js-cookie\";\r\n\r\nexport const addMuidCookieIf3DPSNotExist = () => {\r\n const ThirdPartyAdsOptOutCookieName = \"3PAdsOptOut\";\r\n if (!Cookies.get(ThirdPartyAdsOptOutCookieName)) {\r\n addBingMuidPixel();\r\n }\r\n};\r\n\r\nexport const handleConsent = (newConsent: Record) => {\r\n Cookies.set(WcpCookieConsentNameGCSVnext, JSON.stringify(newConsent), {\r\n domain: CookieSubDomain,\r\n path: \"/\",\r\n expires: WcpCookieConsentExpiryDays,\r\n });\r\n CookieManager.handleConsent(newConsent);\r\n};\r\n\r\nexport const createCultureParam = (): string => {\r\n const canadaRoutePath = languagesConfig[Locales.fr_ca].route;\r\n const localeLang = window.location.href.indexOf(canadaRoutePath) !== -1 ? Locales.fr_ca : Locales.en_us;\r\n return languagesConfig[localeLang].linkLocale;\r\n};\r\n\r\nexport const changePrivacyLinkStatementInBanner = (): void => {\r\n const cookieBannerRootComponent = document.getElementById(GCSVNextCookieBannerId);\r\n if (cookieBannerRootComponent) {\r\n const cookieBannerLinkComponents = cookieBannerRootComponent.querySelectorAll(\"a\");\r\n if (cookieBannerLinkComponents && cookieBannerLinkComponents.length >= 1) {\r\n const dataPrivacyNoticeLinkComponent = cookieBannerLinkComponents[0];\r\n if (dataPrivacyNoticeLinkComponent) {\r\n dataPrivacyNoticeLinkComponent.href = DataPrivacyLink;\r\n dataPrivacyNoticeLinkComponent.innerText = DataPrivacyNoticeText;\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const changePrivacyLinkStatementInPopup = (): boolean => {\r\n let requiredChangeCompleted = false;\r\n const cookieBannerRootComponent = document.getElementById(GCSVNextCookieBannerId);\r\n const cookiePreferenceControlComponent = document.getElementById(WcpPreferencesControl);\r\n const cookieBannerControlComponent = document.getElementById(WcpConsentControlBannerId);\r\n if (cookiePreferenceControlComponent === null) {\r\n requiredChangeCompleted = true;\r\n } else if (cookieBannerRootComponent) {\r\n const cookieBannerLinkComponents = cookieBannerRootComponent.querySelectorAll(\"a\");\r\n if (cookieBannerLinkComponents && cookieBannerLinkComponents.length >= 3) {\r\n const dataPrivacyNoticeLinkComponent = cookieBannerLinkComponents[2];\r\n if (dataPrivacyNoticeLinkComponent) {\r\n dataPrivacyNoticeLinkComponent.href = DataPrivacyLink;\r\n dataPrivacyNoticeLinkComponent.innerText = DataPrivacyNoticeText;\r\n requiredChangeCompleted = true;\r\n }\r\n } else if (cookieBannerControlComponent === null) {\r\n if (cookieBannerLinkComponents && cookieBannerLinkComponents.length === 1) {\r\n const dataPrivacyNoticeLinkComponent = cookieBannerLinkComponents[0];\r\n if (dataPrivacyNoticeLinkComponent) {\r\n dataPrivacyNoticeLinkComponent.href = DataPrivacyLink;\r\n dataPrivacyNoticeLinkComponent.innerText = DataPrivacyNoticeText;\r\n requiredChangeCompleted = true;\r\n }\r\n }\r\n }\r\n }\r\n return requiredChangeCompleted;\r\n};\r\n\r\nexport const forceShowBannerIfConsentIsRequiredButNotHandled = (siteConsent: IGCSVNextSiteConsent) => {\r\n if (siteConsent) {\r\n const isConsentRequired = siteConsent.isConsentRequired;\r\n if (isConsentRequired) {\r\n const cookieValue = Cookies.get(WcpCookieConsentNameGCSVnext);\r\n if (!cookieValue) {\r\n if (siteConsent) {\r\n const _consentControl = siteConsent.consentControl;\r\n if (\r\n _consentControl &&\r\n typeof _consentControl.showBanner === \"function\" &&\r\n siteConsent.getConsent &&\r\n typeof siteConsent.getConsent === \"function\"\r\n ) {\r\n _consentControl.showBanner(siteConsent.getConsent());\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport { _getWcpUserConsentDetails, checkGPTOptOutPolicy } from \"../../utilities/applicationUtils\";\r\nimport { config } from \"../config\";\r\nimport { IAnalyticsConfig } from \"./TelemetryService.types\";\r\n\r\nconst tenantKey = `${process.env.REACT_APP_ADOBEANALYTICS_TENANT_KEY}`;\r\nconst envName = `${process.env.REACT_APP_ADOBEANALYTICS_ENVIRONMENT_NAME}`;\r\n\r\nexport const adobeAnalyticsConfig = {\r\n instrumentationKey: tenantKey,\r\n channelConfiguration: {\r\n // Post channel configuration\r\n eventsLimitInMem: 50, //this is constant as per doc\r\n },\r\n propertyConfiguration: {\r\n // Properties Plugin configuration\r\n env: envName, // Environment can be set to PPE or PROD as needed.\r\n gpcDataSharingOptIn: checkGPTOptOutPolicy(),\r\n callback: {\r\n userConsentDetails: _getWcpUserConsentDetails\r\n},\r\n },\r\n webAnalyticsConfiguration: {\r\n // Web Analytics Plugin configuration\r\n urlCollectQuery: true,\r\n autoCapture: {\r\n scroll: true,\r\n pageView: true,\r\n onLoad: true,\r\n onUnload: true,\r\n click: true,\r\n resize: true,\r\n jsError: true,\r\n },\r\n },\r\n} as IAnalyticsConfig;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport * as React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { GCSVNextCookieBannerId, WcpInitCallbackEventName, WcpScriptSrc } from \"./config\";\r\nimport {\r\n GCSVNextCookieBannerInit,\r\n GcsVNextWcpConsentCategory,\r\n ICookieBannerProps,\r\n IGCSVNextSiteConsent,\r\n} from \"./types\";\r\nimport {\r\n changePrivacyLinkStatementInBanner,\r\n changePrivacyLinkStatementInPopup,\r\n createCultureParam,\r\n forceShowBannerIfConsentIsRequiredButNotHandled,\r\n handleConsent,\r\n} from \"./utils\";\r\nimport { addBingMuidPixel } from \"./pixels/utils\";\r\nimport { config } from \"../../services/config\";\r\nimport { initializeAnalytics } from \"../../services/telemetry/AdobeAnalyticsService\";\r\nimport { adobeAnalyticsConfig } from \"../../services/telemetry/AdobeAnalyticsConfig\";\r\nimport Cookies from \"js-cookie\";\r\n\r\nexport const CookieBanner: React.FunctionComponent = ({ isAEM }) => {\r\n const _onScriptLoaded = () => {\r\n const cultureParam = createCultureParam();\r\n\r\n const placeholderElementId = GCSVNextCookieBannerId;\r\n\r\n const _initCallback = (err?: Error, _siteConsent?: IGCSVNextSiteConsent) => {\r\n if (!err && _siteConsent) {\r\n window.siteConsent = _siteConsent;\r\n const wcpInitEvent = new CustomEvent(WcpInitCallbackEventName, {\r\n detail: { isConsentRequired: _siteConsent.isConsentRequired },\r\n });\r\n window.dispatchEvent(wcpInitEvent);\r\n if (typeof _siteConsent.getConsent === \"function\") {\r\n handleConsent(_siteConsent.getConsent());\r\n config.wcpSiteContent = _siteConsent.getConsent();\r\n forceShowBannerIfConsentIsRequiredButNotHandled(_siteConsent);\r\n changePrivacyLinkStatementInBanner();\r\n addBingMuidPixel();\r\n }\r\n } else {\r\n console.log(\"Error in initialising wcp consent banner\", err);\r\n }\r\n };\r\n\r\n const _onConsentChanged = (newConsent: Record) => {\r\n handleConsent(newConsent);\r\n initializeAnalytics(adobeAnalyticsConfig);\r\n };\r\n\r\n const _wcpConsentInit: GCSVNextCookieBannerInit = (culture, placeHolderElement, initCallback, onConsentChanged) => {\r\n if (window.WcpConsent && typeof window.WcpConsent.init === \"function\") {\r\n const theme = window.WcpConsent && window.WcpConsent.themes ? window.WcpConsent.themes.light : \"light\";\r\n window.WcpConsent.init(culture, placeHolderElement, initCallback, onConsentChanged, theme);\r\n }\r\n };\r\n _wcpConsentInit(cultureParam, placeholderElementId, _initCallback, _onConsentChanged);\r\n };\r\n\r\n React.useEffect(() => {\r\n const scriptTag = document.createElement(\"script\");\r\n document.body.appendChild(scriptTag);\r\n scriptTag.onload = _onScriptLoaded;\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.src = WcpScriptSrc;\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const intervalChangePopupLink = setInterval(() => {\r\n changePrivacyLinkStatementInPopup();\r\n });\r\n\r\n return () => {\r\n clearInterval(intervalChangePopupLink);\r\n };\r\n }, []);\r\n\r\n return !isAEM ?
: <>;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport { IAnalyticsConfig } from \"./TelemetryService.types\";\r\n\r\n\r\nexport function initializeAnalytics(adobeAnalyticsConfig:IAnalyticsConfig): void {\r\n //Initialize SDK\r\n const config = adobeAnalyticsConfig;\r\n try {\r\n //required to call external JS function defined in index file so that react doesnt look for definition.\r\n const body = \"intializeAdobeAnalytics(config);\";\r\n const func = new Function(\"config\", body);\r\n func(config);\r\n } catch(e) {\r\n console.log(\"adobe analytics init failed\");\r\n console.log(e);\r\n }\r\n} \r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\n IButtonStyles,\r\n ICalloutContentStyleProps,\r\n ICalloutContentStyles,\r\n IComboBoxStyles,\r\n ISpinnerStyles,\r\n IStyleFunctionOrObject,\r\n mergeStyleSets,\r\n createTheme,\r\n ITheme,\r\n IModalStyles,\r\n} from \"@fluentui/react\";\r\nimport React from \"react\";\r\n\r\nexport const modalStyles: Partial = {\r\n scrollableContent: {\r\n overflowY: \"unset\",\r\n },\r\n};\r\nexport const iconStyles: Partial = {\r\n root: {\r\n marginBottom: -3,\r\n color: \"#5c1b86 !important\",\r\n },\r\n};\r\n\r\nexport const calloutStyle: IStyleFunctionOrObject<\r\n ICalloutContentStyleProps,\r\n ICalloutContentStyles\r\n> = {\r\n root: {\r\n padding: \"5px 10px\",\r\n width: 310,\r\n },\r\n};\r\n\r\nexport const taxonomyDropdownStyle: Partial = {\r\n optionsContainerWrapper: { maxHeight: 250 },\r\n callout: {\r\n width: \"inherit\",\r\n },\r\n};\r\n\r\nexport const CreateProfileStyles = mergeStyleSets({\r\n containerStyles: {\r\n margin: \"18px 48px 48px 48px\",\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n fontStyle: \"normal\",\r\n color: \"#171717\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 639px)\": {\r\n margin: \"18px 16px 48px 16px\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const createProfileWrapperStyles: React.CSSProperties = {\r\n minHeight: \"400px\",\r\n};\r\n\r\nexport const headerStyle: React.CSSProperties = {\r\n fontWeight: 600,\r\n lineHeight: \"32px\",\r\n fontSize: \"24px\",\r\n marginBottom: \"16px\",\r\n};\r\n\r\nexport const instructionStyle: React.CSSProperties = {\r\n fontWeight: 400,\r\n lineHeight: \"20px\",\r\n fontSize: \"14px\",\r\n marginTop: \"16px\",\r\n marginBottom: \"12px\",\r\n};\r\n\r\nexport const detailsWrapperStyle: React.CSSProperties = {\r\n height: \"332px\",\r\n};\r\n\r\nexport const consentTextDiv: React.CSSProperties = {\r\n margin: \"0px 0px 16px 0px\",\r\n height: \"332px\",\r\n overflowY: \"scroll\",\r\n maxWidth: \"752px\",\r\n border: \"1px solid\",\r\n padding: \"2%\",\r\n};\r\n\r\nexport const consentPageDiv: React.CSSProperties = {\r\n margin: \"24px 0px 24px 0px\",\r\n};\r\n\r\nexport const consentTextBox: React.CSSProperties = {\r\n height: \"286px\",\r\n};\r\n\r\nexport const emailLabelStyles: React.CSSProperties = {\r\n fontWeight: 600,\r\n fontSize: \"14px\",\r\n padding: \"5px 0px\",\r\n color: \"#646464\",\r\n};\r\n\r\nexport const optionalLabelStyles: React.CSSProperties = {\r\n fontWeight: 600,\r\n fontSize: \"14px\",\r\n padding: \"5px 0px\",\r\n};\r\n\r\nexport const optionalTextLabelStyles: React.CSSProperties = {\r\n fontWeight: 400,\r\n fontSize: \"12px\",\r\n padding: \"5px 2px\",\r\n};\r\n\r\nexport const DetailsStyle = mergeStyleSets({\r\n nameColumnItemStyles: {\r\n marginTop: \"12px\",\r\n marginBottom: \"12px\",\r\n selectors: {\r\n \"@media (min-width: 710px)\": {\r\n flexBasis: \"calc((100% - 48px) / 3)\",\r\n marginRight: \"24px\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 709px)\": {\r\n flexBasis: \"100%\",\r\n },\r\n },\r\n },\r\n creatingButtonSpan: {\r\n margin: \"10px\",\r\n },\r\n nameColumnFinalItemStyles: {\r\n marginTop: \"12px\",\r\n marginBottom: \"12px\",\r\n selectors: {\r\n \"@media (min-width: 710px)\": {\r\n flexBasis: \"calc((100% - 48px) / 3)\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 709px)\": {\r\n flexBasis: \"100%\",\r\n },\r\n },\r\n },\r\n consentWrapper: {\r\n margin: \"18px 48px 48px 48px\",\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n fontStyle: \"normal\",\r\n color: \"#171717\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 639px)\": {\r\n margin: \"18px 16px 48px 16px\",\r\n },\r\n },\r\n },\r\n consentHeader: {\r\n padding: \"0px\",\r\n marginTop: \"0px\",\r\n marginBottom: \"16px\",\r\n color: \"#171717\",\r\n fontWeight: \"600\",\r\n lineHeight: \"32px\",\r\n fontSize: \"24px\",\r\n },\r\n consentSubHeader: {\r\n padding: \"0px\",\r\n marginTop: \"0px\",\r\n marginBottom: \"0px\",\r\n },\r\n emailColumnItemStyles: {\r\n marginTop: \"12px\",\r\n selectors: {\r\n \"@media (min-width: 551px)\": {\r\n flexBasis: \"calc((100% - 24px) / 2)\",\r\n marginRight: \"24px\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n flexBasis: \"100%\",\r\n },\r\n },\r\n },\r\n alreadyHaveAccountStyles: {\r\n height: \"32px\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n selectors: {\r\n \"@media (min-width: 551px)\": {\r\n flexBasis: \"calc((100% - 24px) / 2)\",\r\n marginRight: \"24px\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n flexBasis: \"100%\",\r\n },\r\n },\r\n },\r\n consentWrapperButtonStyles: {\r\n display: \"flex\",\r\n flexBasis: \"50%\",\r\n alignItems: \"center\",\r\n justifyContent: \"end\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 480px)\": {\r\n marginTop: \"2px\",\r\n },\r\n },\r\n },\r\n ConsentWrapperSignInDivStyle: {\r\n display: \"flex\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 480px)\": {\r\n flexDirection: \"column\",\r\n },\r\n },\r\n },\r\n profileSubmitStyle: {\r\n display: \"flex\",\r\n marginLeft: \"auto\",\r\n alignItems: \"center\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n width: \"100%\",\r\n marginTop: \"8px\",\r\n marginLeft: \"0px\",\r\n marginBottom: \"10px\",\r\n },\r\n },\r\n },\r\n profileSpinner: {\r\n width: \"112px\",\r\n },\r\n consentProfileSpinner: {\r\n width: \"72px\",\r\n },\r\n regionItemStyles: {\r\n marginTop: \"12px\",\r\n selectors: {\r\n \"@media (min-width: 551px)\": {\r\n flexBasis: \"calc((100% - 24px) / 2)\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n flexBasis: \"100%\",\r\n },\r\n },\r\n },\r\n columnStyles: {\r\n margin: \"0px 0px\",\r\n display: \"flex\",\r\n flexFlow: \"row wrap\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 1024px)\": {\r\n display: \"flex\",\r\n flexFlow: \"row wrap\",\r\n },\r\n },\r\n },\r\n emailColumnStyles: {\r\n margin: \"30px 0px 0px 0px\",\r\n display: \"flex\",\r\n flexFlow: \"row wrap\",\r\n selectors: {\r\n \"@media (min-width: 320px) and (max-width: 1024px)\": {\r\n display: \"flex\",\r\n flexFlow: \"row wrap\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const SpinnerStyles: ISpinnerStyles = {\r\n root: {\r\n marginLeft: \"10px\",\r\n },\r\n};\r\n\r\nexport const ButtonStyles = mergeStyleSets({\r\n saveButton: {\r\n borderRadius: 2,\r\n borderColor: \"#5C1B86\",\r\n padding: \"11px 15px\",\r\n height: 32,\r\n fontWeight: 600,\r\n fontSize: 14,\r\n justifyContent: \"center\",\r\n background: \"#5C1B86\",\r\n border: \"#5C1B86\",\r\n width: \"87px\",\r\n selectors: {\r\n \":hover\": {\r\n background: \"#5C1B86\",\r\n border: \"#5C1B86\",\r\n },\r\n \":visited\": {\r\n background: \"#5C1B86\",\r\n },\r\n \":active\": {\r\n background: \"#5C1B86\",\r\n },\r\n \":disabled\": {\r\n background: \"#f2f2f2 !important\",\r\n borderColor: \"#f2f2f2 !important\",\r\n color: \"#c6c6c6 !important\",\r\n },\r\n },\r\n label: {\r\n margin: \"0px\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n creatingButton: {\r\n border: \"1px solid #646464\",\r\n padding: \"11px 15px\",\r\n height: \"32px\",\r\n fontWeight: 600,\r\n fontSize: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"end\",\r\n width: \"110px\",\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n width: \"100%\",\r\n },\r\n },\r\n creatingConfirmButton: {\r\n border: \"1px solid #646464\",\r\n padding: \"11px 15px\",\r\n height: \"32px\",\r\n fontWeight: 600,\r\n fontSize: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"end\",\r\n width: \"110px\",\r\n \"@media (min-width: 320px) and (max-width: 550px)\": {\r\n width: \"calc(50% - 8px)\",\r\n },\r\n },\r\n confirmButton: {\r\n borderRadius: 2,\r\n borderColor: \"#5C1B86\",\r\n padding: \"11px 15px\",\r\n height: 32,\r\n fontWeight: 600,\r\n fontSize: 14,\r\n justifyContent: \"center\",\r\n background: \"#5C1B86\",\r\n border: \"#5C1B86\",\r\n width: \"87px\",\r\n selectors: {\r\n \":hover\": {\r\n background: \"#5C1B86\",\r\n border: \"#5C1B86\",\r\n },\r\n \":visited\": {\r\n background: \"#5C1B86\",\r\n },\r\n \":active\": {\r\n background: \"#5C1B86\",\r\n },\r\n \":disabled\": {\r\n background: \"#f2f2f2 !important\",\r\n borderColor: \"#f2f2f2 !important\",\r\n color: \"#c6c6c6 !important\",\r\n },\r\n },\r\n label: {\r\n margin: \"0px\",\r\n },\r\n \"@media (min-width: 320px) and (max-width: 480px)\": {\r\n width: \"calc(50% - 8px)\",\r\n },\r\n },\r\n backButton: {\r\n border: \"1px solid #646464\",\r\n padding: \"11px 15px\",\r\n height: \"32px\",\r\n fontWeight: 600,\r\n color: \"#171717\",\r\n fontSize: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"end\",\r\n background: \"#FFFFFF\",\r\n marginRight: \"8px\",\r\n width: \"87px\",\r\n \"@media (min-width: 320px) and (max-width: 480px)\": {\r\n width: \"calc(50% - 8px)\",\r\n marginRight: \"16px\",\r\n },\r\n },\r\n});\r\n\r\nexport const partialTheme: ITheme = createTheme({\r\n palette: {\r\n themePrimary: \"#5C1B86\",\r\n themeDark: \"#520d7f\",\r\n },\r\n});\r\n\r\nexport const linkStyles: React.CSSProperties = {\r\n color: \"#5C1B86\",\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n */\r\n\r\nimport { IPublicClientApplication } from \"@azure/msal-browser\";\r\nimport { config } from \"../config\";\r\n\r\nexport async function getToken(instance: IPublicClientApplication): Promise {\r\n const account = instance.getAllAccounts();\r\n if (account.length > 0) {\r\n const silentProfileRequest = {\r\n scopes: config.msalConfig.loginScopes,\r\n account: account[0],\r\n loginHint: account[0].username,\r\n };\r\n const resp = await instance.acquireTokenSilent(silentProfileRequest);\r\n return resp != null ? resp.accessToken : \"\";\r\n }\r\n\r\n return \"\";\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport Axios from \"axios\";\r\nimport axiosRetry from \"axios-retry\";\r\nimport { config } from \"../config\";\r\n\r\nconst axiosInstance = Axios.create({\r\n baseURL: config.staticContentConfig.baseUrl,\r\n});\r\n\r\naxiosRetry(axiosInstance, {\r\n retries: config.staticContentConfig.apiRetryCount,\r\n retryDelay: axiosRetry.exponentialDelay,\r\n});\r\n\r\naxiosInstance.interceptors.request.use(\r\n (axiosConfig) => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n if (axiosConfig.headers) {\r\n resolve(axiosConfig);\r\n }\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n reject(axiosConfig);\r\n }\r\n }\r\n });\r\n },\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default axiosInstance;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport axiosInstance from \"./axiosConfig\";\r\nimport { config } from \"../config\";\r\n\r\nexport const staticContentEndpoint = {\r\n getcountryAndStateTaxonomy: () => {\r\n const stateTaxonomyEndpoint =\r\n config.staticContentConfig.countryAndStateTaxonomyPath;\r\n return axiosInstance.get(stateTaxonomyEndpoint);\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\n ButtonStyles,\r\n CreateProfileStyles,\r\n DetailsStyle,\r\n SpinnerStyles,\r\n calloutStyle,\r\n emailLabelStyles,\r\n headerStyle,\r\n iconStyles,\r\n instructionStyle,\r\n optionalLabelStyles,\r\n optionalTextLabelStyles,\r\n partialTheme,\r\n taxonomyDropdownStyle,\r\n linkStyles,\r\n} from \"./CreateProfileStyle\";\r\nimport {\r\n Callout,\r\n ComboBox,\r\n DefaultButton,\r\n DelayedRender,\r\n IComboBox,\r\n IDropdownOption,\r\n IIconProps,\r\n IStackTokens,\r\n IconButton,\r\n Link,\r\n MessageBar,\r\n MessageBarType,\r\n PrimaryButton,\r\n Spinner,\r\n SpinnerSize,\r\n Stack,\r\n Text,\r\n TextField,\r\n} from \"@fluentui/react\";\r\nimport {\r\n CreateProfileItems,\r\n Live,\r\n Loginitems,\r\n MicrosoftFte,\r\n RootCreateProfile,\r\n RootLogin,\r\n microsoft,\r\n} from \"../constants\";\r\nimport {\r\n ICandidateProfile,\r\n IProfileCountryDropdown,\r\n IProfileDetailsProps,\r\n} from \"./ProfileDetails.types\";\r\nimport React, { FormEvent, useContext, useMemo, useState } from \"react\";\r\nimport { useBoolean, useId } from \"@fluentui/react-hooks\";\r\n\r\nimport { AuthenticationResult } from \"@azure/msal-browser\";\r\nimport { LoginContext } from \"../../services/auth/loginContext\";\r\nimport { config } from \"../../services/config\";\r\nimport { showSupportFormEvent } from \"../../ShellCustomEvents\";\r\nimport { useAddressTaxonomy } from \"../../utilities/hooks/useAddressTaxonomy\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useValidation } from \"./utils/useValidation\";\r\nimport { trackException } from \"../../services/telemetry/TelemetryService\";\r\n\r\nexport const ProfileDetails: React.FC = (\r\n props: IProfileDetailsProps\r\n) => {\r\n const {\r\n onSubmit,\r\n country,\r\n setCountry,\r\n firstName,\r\n middleName,\r\n lastName,\r\n email,\r\n setEmail,\r\n setFirstName,\r\n setLastName,\r\n setMiddleName,\r\n createProfileInProgress,\r\n createProfileError,\r\n } = props;\r\n\r\n const { getNameErrorMessage } = useValidation();\r\n const [validationStarted, setValidationStarted] = useState(false);\r\n const [countryValidation, setcountryValidation] = useState(false);\r\n const { countryDropdownData } = useAddressTaxonomy();\r\n const { instance, accounts } = useMsal();\r\n const { setCandidateSocialAuthIssuerId, setCandidateSocialAuthProvider } =\r\n useContext(LoginContext);\r\n const { t } = useTranslation();\r\n const loginRequest = {\r\n scopes: config.msalConfig.loginScopes,\r\n };\r\n const labelId: string = useId(\"label\");\r\n const [isCalloutVisible, { toggle: toggleIsCalloutVisible }] =\r\n useBoolean(false);\r\n const descriptionId: string = useId(\"description\");\r\n const iconButtonId: string = useId(\"iconButton\");\r\n const customEmailLabel = (): JSX.Element => {\r\n const stackTokens: IStackTokens = {\r\n childrenGap: 2,\r\n };\r\n const infoIcon: IIconProps = { iconName: \"Info\" };\r\n const infoSolidIcon: IIconProps = { iconName: \"InfoSolid\" };\r\n return (\r\n <>\r\n \r\n \r\n {t(`${RootCreateProfile}.${CreateProfileItems.EmailAddress}`)}\r\n \r\n \r\n \r\n {isCalloutVisible && (\r\n \r\n \r\n \r\n {t(\r\n `${RootCreateProfile}.${CreateProfileItems.EmailNotEditedMessage}`\r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n const customMiddleNameLabel = (): JSX.Element => {\r\n const stackTokens: IStackTokens = {\r\n childrenGap: 2,\r\n };\r\n return (\r\n <>\r\n \r\n \r\n );\r\n };\r\n const getCustomMiddleNameLabel = useMemo(() => customMiddleNameLabel, []);\r\n\r\n React.useEffect(() => {\r\n if (accounts.length > 0) {\r\n instance\r\n .acquireTokenSilent({\r\n ...loginRequest,\r\n account: instance.getAllAccounts()[0],\r\n })\r\n .then((response: AuthenticationResult) => {\r\n const claims: any = response.idTokenClaims;\r\n setFirstName(claims.name.split(\" \")[0]);\r\n setEmail(claims.email);\r\n\r\n setLastName(claims.name.split(\" \")[1]);\r\n\r\n const idp = claims.idp;\r\n const socialAuthProvider = idp.substring(0, idp.lastIndexOf(\".\"));\r\n if (socialAuthProvider.includes(Live)) {\r\n setCandidateSocialAuthProvider &&\r\n setCandidateSocialAuthProvider(microsoft);\r\n let authProviderId: string = claims.issuerUserId;\r\n //do necessary formatting incase of live\r\n authProviderId = authProviderId.replace(/-/g, \"\");\r\n //take only last 16 character\r\n authProviderId = authProviderId.slice(-16);\r\n setCandidateSocialAuthIssuerId &&\r\n setCandidateSocialAuthIssuerId(authProviderId);\r\n } else if (socialAuthProvider.includes(microsoft)) {\r\n setCandidateSocialAuthProvider &&\r\n setCandidateSocialAuthProvider(MicrosoftFte);\r\n setCandidateSocialAuthIssuerId &&\r\n setCandidateSocialAuthIssuerId(claims.issuerUserId);\r\n } else {\r\n setCandidateSocialAuthProvider &&\r\n setCandidateSocialAuthProvider(socialAuthProvider);\r\n setCandidateSocialAuthIssuerId &&\r\n setCandidateSocialAuthIssuerId(claims.issuerUserId);\r\n }\r\n })\r\n .catch((err) => {\r\n trackException(err);\r\n });\r\n }\r\n }, []);\r\n const getCustomLabel = useMemo(() => customEmailLabel, [isCalloutVisible]);\r\n const validateForm = () => {\r\n setValidationStarted(true);\r\n setcountryValidation(!country.id);\r\n return (\r\n getNameErrorMessage(firstName, \"\", true) === \"\" &&\r\n getNameErrorMessage(lastName, \"\", true) === \"\" &&\r\n getNameErrorMessage(middleName, \"\", false) === \"\" &&\r\n email !== \"\" &&\r\n country.id\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n {t(`${RootCreateProfile}.${CreateProfileItems.CreateProfileTitle}`)}\r\n

\r\n
\r\n {t(\r\n `${RootCreateProfile}.${CreateProfileItems.CreateProfileDescription}`\r\n )}\r\n
\r\n {createProfileError && (\r\n \r\n {`${t(\r\n `${RootCreateProfile}.${CreateProfileItems.CreateProfileErrorMsg}`\r\n )} `}\r\n showSupportFormEvent()}\r\n style={linkStyles}\r\n underline\r\n >\r\n {t(`${RootCreateProfile}.${CreateProfileItems.ContactSupport}`)}\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n ) => {\r\n setFirstName((ev.target as HTMLInputElement).value);\r\n }}\r\n errorMessage={\r\n validationStarted\r\n ? getNameErrorMessage(\r\n firstName,\r\n t(\r\n `${RootCreateProfile}.${CreateProfileItems.FirstName}`\r\n ),\r\n true\r\n )\r\n : \"\"\r\n }\r\n />\r\n
\r\n
\r\n \r\n ) => {\r\n setMiddleName((ev.target as HTMLInputElement).value);\r\n }}\r\n errorMessage={getNameErrorMessage(\r\n middleName,\r\n t(`${RootCreateProfile}.${CreateProfileItems.MiddleName}`),\r\n false\r\n )}\r\n />\r\n
\r\n
\r\n \r\n ) => {\r\n setLastName((ev.target as HTMLInputElement).value);\r\n }}\r\n errorMessage={\r\n validationStarted\r\n ? getNameErrorMessage(\r\n lastName,\r\n t(\r\n `${RootCreateProfile}.${CreateProfileItems.LastName}`\r\n ),\r\n true\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 option?: IDropdownOption | undefined\r\n ) => {\r\n setcountryValidation(false);\r\n const selectedCountry: IProfileCountryDropdown = {\r\n id: option?.key,\r\n value: option?.text,\r\n };\r\n setCountry(selectedCountry);\r\n }}\r\n scrollSelectedToTop={true}\r\n allowFreeform={true}\r\n autoComplete=\"on\"\r\n errorMessage={\r\n countryValidation\r\n ? t(\r\n `${RootCreateProfile}.${CreateProfileItems.Required}`\r\n ).replace(\r\n \"{fieldName}\",\r\n t(\r\n `${RootCreateProfile}.${CreateProfileItems.CountryLabel}`\r\n )\r\n )\r\n : \"\"\r\n }\r\n />\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {`${t(`${RootCreateProfile}.${CreateProfileItems.Already}`)}`}\r\n  \r\n

\r\n {\r\n instance.logoutRedirect({ postLogoutRedirectUri: \"/login\" });\r\n }}\r\n >\r\n {t(`${RootCreateProfile}.${CreateProfileItems.SignIn}`)}\r\n \r\n
\r\n
\r\n {createProfileInProgress ? (\r\n \r\n \r\n \r\n {` ${t(\r\n `${RootCreateProfile}.${CreateProfileItems.Creating}`\r\n )}...`}\r\n \r\n \r\n ) : (\r\n {\r\n if (validateForm()) {\r\n const candidate: ICandidateProfile = {\r\n firstName: firstName,\r\n middleName: middleName,\r\n lastName: lastName,\r\n email: email,\r\n country: country,\r\n };\r\n onSubmit(candidate);\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 * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport { useCallback } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n CreateProfileItems,\r\n maxNameLength,\r\n nameRegex,\r\n RootCreateProfile,\r\n} from \"../../constants\";\r\n\r\nexport const useValidation = () => {\r\n const { t } = useTranslation();\r\n const validateName = useCallback((value: string) => {\r\n return nameRegex.test(value);\r\n }, []);\r\n const validateLength = useCallback((value: string) => {\r\n const newValue = value ? value.trim() : \"\";\r\n return !newValue || maxNameLength > newValue.length;\r\n }, []);\r\n const getNameErrorMessage = useCallback(\r\n (value: string, fieldName: string, requiredField: boolean): string => {\r\n const trimmedValue = value ? value.trim() : \"\";\r\n if (requiredField) {\r\n if (trimmedValue.length === 0) {\r\n return `${t(\r\n `${RootCreateProfile}.${CreateProfileItems.Required}`\r\n )}`.replace(\"{fieldName}\", fieldName.toString());\r\n } else if (!validateLength(value)) {\r\n return `${t(\r\n `${RootCreateProfile}.${CreateProfileItems.LengthValidation}`\r\n )}`\r\n .replace(\"{currentLength}\", value.length.toString())\r\n .replace(\"{maxLength}\", maxNameLength.toString());\r\n } else if (!validateName(value)) {\r\n return `${t(\r\n `${RootCreateProfile}.${CreateProfileItems.NameValidation}`\r\n )}`\r\n .replace(\"{fieldName}\", fieldName.toString())\r\n .replace(\"{quotes}\", `\"`);\r\n } else {\r\n return \"\";\r\n }\r\n } else {\r\n if (!validateLength(value)) {\r\n return `${t(\r\n `${RootCreateProfile}.${CreateProfileItems.LengthValidation}`\r\n )}`\r\n .replace(\"{currentLength}\", value.length.toString())\r\n .replace(\"{maxLength}\", maxNameLength.toString());\r\n } else if (!validateName(value) && trimmedValue.length) {\r\n return `${t(\r\n `${RootCreateProfile}.${CreateProfileItems.NameValidation}`\r\n )}`\r\n .replace(\"{fieldName}\", fieldName.toString())\r\n .replace(\"{quotes}\", `\"`);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n },\r\n []\r\n );\r\n return {\r\n getNameErrorMessage: getNameErrorMessage,\r\n };\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { IDropdownOption } from \"@fluentui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { getToken } from \"../../services/auth/Msal\";\r\nimport { CountryAndStateTaxonomy } from \"../../Constants\";\r\nimport { staticContentEndpoint } from \"../../services/staticdata-fetch/staticdata-api\";\r\n\r\ninterface IUseAddressTaxonomy {\r\n countryDropdownData: IDropdownOption[];\r\n}\r\ninterface ICountryAndStateTaxonomy {\r\n id: string;\r\n value: string;\r\n SourceId?: string;\r\n ParentSourceId?: string;\r\n}\r\nexport const useAddressTaxonomy = (): IUseAddressTaxonomy => {\r\n const [countryAndStateList, setCountryAndStateList] = useState<\r\n ICountryAndStateTaxonomy[]\r\n >([]);\r\n const [countryList, setCountryList] = useState(\r\n []\r\n );\r\n const [countryDropdownData, setCountryDropdownData] = useState<\r\n IDropdownOption[]\r\n >([]);\r\n const { instance } = useMsal();\r\n const getCountryTaxonomy = async () => {\r\n const countryfromSession = sessionStorage.getItem(CountryAndStateTaxonomy);\r\n //Getting the Country Taxonomy from session storage\r\n if (!countryfromSession) {\r\n getToken(instance).then((response) => {\r\n staticContentEndpoint\r\n .getcountryAndStateTaxonomy()\r\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setCountryAndStateList(response.data);\r\n sessionStorage.setItem(\r\n CountryAndStateTaxonomy,\r\n JSON.stringify(response.data)\r\n );\r\n }\r\n });\r\n });\r\n } else {\r\n // if found in session assign it to state variable\r\n setCountryAndStateList(JSON.parse(countryfromSession));\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n getCountryTaxonomy();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n setCountryList(\r\n countryAndStateList.filter(\r\n (obj: ICountryAndStateTaxonomy) => obj.ParentSourceId === null\r\n )\r\n );\r\n }, [countryAndStateList]);\r\n\r\n React.useEffect(() => {\r\n setCountryDropdownData(\r\n countryList.map((obj: ICountryAndStateTaxonomy) => {\r\n const countryData = {\r\n key: obj.SourceId as string,\r\n text: obj.value,\r\n };\r\n return countryData;\r\n })\r\n );\r\n }, [countryList]);\r\n\r\n return { countryDropdownData };\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport {\r\n FontWeights,\r\n getTheme,\r\n IButtonStyles,\r\n IIconProps,\r\n IStackItemStyles,\r\n IStackStyles,\r\n IStackTokens,\r\n mergeStyles,\r\n mergeStyleSets,\r\n} from \"@fluentui/react\";\r\nconst theme = getTheme();\r\nexport const contentStyles = mergeStyleSets({\r\n header: [\r\n theme.fonts.xLargePlus,\r\n {\r\n display: \"flex\",\r\n justifyContent: \"end\",\r\n fontWeight: FontWeights.semibold,\r\n margin: \"14px 14px 0px 0px\",\r\n },\r\n ],\r\n});\r\nexport const iconButtonStyles: Partial = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n height: \"16px\",\r\n width: \"16px\",\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n};\r\n\r\nexport const stackItemStyles: IStackItemStyles = {\r\n root: {\r\n padding: 5,\r\n width: \"45%\",\r\n selectors: {\r\n div: {\r\n \"@media only screen and (min-width: 320px) and (max-width:639px)\": {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-evenly\",\r\n height: \"66px\",\r\n },\r\n },\r\n \"@media only screen and (min-width: 320px) and (max-width:639px)\": {\r\n width: \"100%\",\r\n marginBottom: \"18%\",\r\n padding: \"0px\",\r\n },\r\n },\r\n },\r\n};\r\nexport const employeeStackItemStyles: IStackItemStyles = {\r\n root: {\r\n padding: 10,\r\n width: \"45%\",\r\n selectors: {\r\n \"@media only screen and (min-width: 320px) and (max-width:639px)\": {\r\n width: \"94%\",\r\n },\r\n },\r\n },\r\n};\r\nexport const itemAlignmentsStackStyles: IStackStyles = {\r\n root: {\r\n margin: \"16px auto\",\r\n height: \"99%\",\r\n selectors: {\r\n \"@media only screen and (min-width: 320px) and (max-width:639px)\": {\r\n flexDirection: \"column\",\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const itemAlignmentsStackTokens: IStackTokens = {\r\n padding: 10,\r\n};\r\nexport const cancelIcon: IIconProps = { iconName: \"Cancel\" };\r\nexport const stackTokens: IStackTokens = { childrenGap: 12 };\r\nexport const verticalStyle = mergeStyles({\r\n height: \"350px\",\r\n color: \"red\",\r\n});\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport const DPNLink =\r\n \"https://privacy.microsoft.com/en-US/data-privacy-notice\";\r\nexport const One = \"1. \";\r\nexport const Two = \"2. \";\r\nexport const Three = \"3. \";\r\n\r\n// English\r\nexport const Pipl =\r\n 'China\\'s Personal Information Protection Law (\"PIPL\") took effect on November 1, 2021. To comply with the requirements under PIPL and to support the protection of your personal information collected and processed by Microsoft, we have prepared a Candidate Declaration of Consent and the China Notice to the Microsoft Global Data Privacy Notice. In order to process your personal information, you are required to sign the Declaration of Consent as soon as possible.​';\r\nexport const Declaration = \"Declaration of Consent\";\r\nexport const SelfDeclaration =\r\n \"I, as a candidate of Microsoft (hereinafter “the Company”), have thoroughly and carefully read the Microsoft Global Data Privacy Notice for Employees, External Staff, Candidates and Guests \";\r\nexport const SelfDeclarationCont =\r\n \"(hereinafter “DPN”), and fully acknowledge the content, purposes, sharing, rights, securities, storage and preservation of the processing of my personal information by the Company.​\";\r\nexport const Confirmation =\r\n \"I hereby confirm that the information I provide to the Company is true, accurate and complete to the best of my knowledge.​\";\r\nexport const Acknowledgement =\r\n \"I acknowledge and consent that the Company may process my personal information according to the DPN.\";\r\nexport const Agreement =\r\n \"Based on the processing purposes stated in the DPN, in accordance with applicable laws and regulations, I specifically agree the Company may:​\";\r\nexport const PointOne = \"Process my sensitive personal information;​\";\r\nexport const PointTwo =\r\n \"Share my personal information with Microsoft’s headquarters, affiliated companies and other third parties (including but not limited to service providers); and​\";\r\nexport const PointThree =\r\n \"Transfer my personal information to destinations outside China’s borders, such as Microsoft’s headquarters and locations of affiliated companies. My personal information may also be visited by Microsoft’s related entities, beyond China’s borders.​\";\r\nexport const ConsentAcknowledgement =\r\n \"I acknowledge that the content of the DPN may periodically be updated due to business and operational needs, human resource management, and changes in laws and regulations. I commit to periodically reviewing the updated DPN incorporated by reference into this Declaration of Consent.\";\r\n\r\n//Chinese\r\nexport const PiplChinese =\r\n \"中国《个人信息保护法》已经于2021年11月1日生效。为遵守《个人信息保护法》下的规定以保护微软所收集并处理的您的个人信息,我们针对Microsoft 全球数据隐私声明起草了应聘者《知情同意书》和《中国声明》。为处理您的个人信息,请您尽快签署《知情同意书》。\";\r\nexport const DeclarationChinese = \"知情同意书​\";\r\nexport const SelfDeclarationChinese =\r\n \"本人系微软(以下简称“公司”)应聘者,已经全面、仔细阅读了针对员工、外聘人员、应聘者和来宾的Microsoft 全球数据隐私声明​\";\r\nexport const SelfDeclarationContChinese =\r\n \"以及中国隐私声明(统称“DPN”),充分了解公司处理我个人信息的内容、处理目的、个人信息共享、主体权利、个人信息安全、个人信息存储、保留等的相关内容。\";\r\nexport const ConfirmationChinese =\r\n \"本人确认已尽数向公司提供了真实、准确、完整的信息。​\";\r\nexport const AcknowledgementChinese =\r\n \"本人知悉并同意,公司可以按照DPN对我的个人信息进行处理。\";\r\nexport const AgreementChinese =\r\n \"基于DPN所述处理目的,在遵守所适用的法律法规的前提下,本人同意公司可以:\";\r\nexport const PointOneChinese = \"处理我的敏感个人信息; \";\r\nexport const PointTwoChinese =\r\n \"将我的个人信息与Microsoft总部、关联公司、其他第三方(包括但不限于服务提供商等)共享;\";\r\nexport const PointThreeChinese =\r\n \"将我的个人信息传输至中国境外,如Microsoft总部、关联公司所在地。我的个人信息也可能受到境外Microsoft相关实体的访问。\";\r\nexport const ConsentAcknowledgementChinese =\r\n \"本人知悉,根据开展业务经营、人力资源管理的需要、法律法规的更新等,DPN的相关内容可能会定期更新。本人承诺将定期查阅更新后的本知情同意书所引用的DPN。\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\nimport { ChineseLangConstant } from \"../../../constants\";\r\nimport \"./ChinaConsent.styles.css\";\r\nimport {\r\n Pipl,\r\n Declaration,\r\n SelfDeclaration,\r\n SelfDeclarationCont,\r\n Confirmation,\r\n Acknowledgement,\r\n Agreement,\r\n PointOne,\r\n PointTwo,\r\n PointThree,\r\n ConsentAcknowledgement,\r\n PiplChinese,\r\n DeclarationChinese,\r\n SelfDeclarationChinese,\r\n SelfDeclarationContChinese,\r\n ConfirmationChinese,\r\n AcknowledgementChinese,\r\n AgreementChinese,\r\n PointOneChinese,\r\n PointTwoChinese,\r\n PointThreeChinese,\r\n ConsentAcknowledgementChinese,\r\n DPNLink,\r\n One,\r\n Two,\r\n Three,\r\n} from \"./ChinaConsentConstants\";\r\n\r\nexport const ChinaConsent: React.FC = () => {\r\n return (\r\n
\r\n

{PiplChinese}

\r\n

{Pipl}

\r\n
\r\n

{DeclarationChinese}

\r\n

\r\n {Declaration}\r\n

\r\n

\r\n {SelfDeclarationChinese}\r\n \r\n {\" (\" + DPNLink + \")\"}\r\n \r\n {SelfDeclarationContChinese}\r\n

\r\n

\r\n {SelfDeclaration}\r\n \r\n {\" (\" + DPNLink + \")\"}\r\n \r\n {SelfDeclarationCont}\r\n

\r\n

{ConfirmationChinese}

\r\n

{Confirmation}

\r\n

{AcknowledgementChinese}

\r\n

{Acknowledgement}

\r\n

{AgreementChinese}

\r\n

{Agreement}

\r\n

{One + PointOneChinese}

\r\n

{PointOne}

\r\n

{Two + PointTwoChinese}

\r\n

{PointTwo}

\r\n

{Three + PointThreeChinese}

\r\n

{PointThree}

\r\n

{ConsentAcknowledgementChinese}

\r\n

{ConsentAcknowledgement}

\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport const ForwardLink = \"http://go.microsoft.com/fwlink/?LinkId=518021 \";\r\nexport const LinkText = \"Microsoft Data Privacy Notice\";\r\n\r\n// English\r\nexport const BySubmitting = \"BY SUBMITTING this page, I confirm \";\r\nexport const ProvideConsent =\r\n \"that I provide consent to the operator Microsoft Corporation, located at the address 1 Microsoft Way, Redmond, WA 98052, United States, for processing (collecting, recording, systematization, accumulation, storage, updated, modified, retrieval, use, transmission (provision, access), blocking, erasure, destruction, using automated means and without the use of such means) my personal data in order to make a decision to hire or refuse to hire and to form a candidate pool. \";\r\nexport const PersonalData =\r\n \"My personal data in respect of which the consent is given, include: surname, name, patronymic, sex, year, month, date of birth, profession, position, foreign language skills, address, information on education, qualification, academic degree, information on professional experience and work activities, contact details (including phone numbers and e-mail addresses), other information specified by me.\";\r\nexport const Acknowledgement =\r\n \"I acknowledge that Microsoft Corporation will only process the data as long as necessary for the particular purpose indicated above and might ask me to renew my consent for the processing after 10 years to ensure it follows my intent. \";\r\nexport const PleaseRead = \"Please read the \";\r\n\r\n// Russian\r\nexport const BySubmittingRussian = \"ОТПРАВЛЯЯ эту страницу, я подтверждаю, \";\r\nexport const ProvideConsentRussian =\r\n \"что даю согласие оператору Microsoft Corporation (Корпорация Майкрософт), расположенному по адресу 1 Майкрософт Вэй, Редмонд, WA 98052,США, на обработку (получение, запись, систематизацию, накопление, хранение, обновление, изменение, извлечение, использование, передачу (предоставление, доступ), блокирование, удаление, уничтожение, с использованием средств автоматизации и без использования таких средств) моих персональных данных в целях принятия решения о приеме на работу или об отказе в приеме на работу и формирования кадрового резерва.\";\r\nexport const PersonalDataRussian =\r\n \"Мои персональные данные, в отношении которых дано согласие, включают: фамилию, имя, отчество, пол, год, месяц, дату рождения, профессию, должность, знание иностранных языков, адрес, сведения об образовании, квалификацию, ученую степень, сведения о опыте работы и трудовой деятельности, контактные данные (в том числе, номера телефона и адреса электронной почты), иные указанные мной сведения.\";\r\nexport const AcknowledgementRussian =\r\n \"Я признаю, что Корпорация Майкрософт будет обрабатывать персональные данные только до тех пор, пока это необходимо для конкретной цели, указанной выше, и может попросить меня обновить мое согласие на обработку через 10 лет, чтобы убедиться, что оно соответствует моему намерению.\";\r\nexport const PleaseReadRussian = \"Пожалуйста, ознакомьтесь с \";\r\nexport const PleaseReadContRussian =\r\n \" (Уведомлением о конфиденциальности данных Microsoft).\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\nimport { EnglishLangConstant, RussianLangConstant } from \"../../../constants\";\r\nimport {\r\n Acknowledgement,\r\n AcknowledgementRussian,\r\n BySubmitting,\r\n BySubmittingRussian,\r\n ForwardLink,\r\n LinkText,\r\n PersonalData,\r\n PersonalDataRussian,\r\n PleaseRead,\r\n PleaseReadContRussian,\r\n PleaseReadRussian,\r\n ProvideConsent,\r\n ProvideConsentRussian,\r\n} from \"./RussiaConsentConstants\";\r\n\r\nexport const RussiaConsent: React.FC = () => {\r\n return (\r\n <>\r\n

\r\n {BySubmittingRussian}\r\n {ProvideConsentRussian}\r\n

\r\n

{PersonalDataRussian}

\r\n

{AcknowledgementRussian}

\r\n

\r\n {PleaseReadRussian}\r\n \r\n {LinkText}\r\n \r\n {PleaseReadContRussian}\r\n

\r\n
\r\n

\r\n {BySubmitting}\r\n {ProvideConsent}\r\n

\r\n

{PersonalData}

\r\n

{Acknowledgement}

\r\n

\r\n {PleaseRead}{\" \"}\r\n \r\n {LinkText}\r\n \r\n {\".\"}\r\n

\r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { Checkbox } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n CreateProfileItems,\r\n RegulatedCountryList,\r\n RootCreateProfile,\r\n} from \"../../constants\";\r\nimport {\r\n consentPageDiv,\r\n consentTextDiv,\r\n partialTheme,\r\n} from \"../CreateProfileStyle\";\r\nimport { ChinaConsent } from \"./China/ChinaConsent\";\r\nimport { RussiaConsent } from \"./Russia/RussiaConsent\";\r\n\r\nexport type IConsentPageProps = {\r\n checked: boolean;\r\n setRegulatoryConsent: React.Dispatch>;\r\n country?: string;\r\n};\r\n\r\nexport const ConsentPage: React.FC = ({\r\n setRegulatoryConsent,\r\n checked,\r\n country,\r\n}) => {\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n {country && (\r\n
\r\n
\r\n {country === RegulatedCountryList.Russia ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n {\r\n setRegulatoryConsent(isChecked ? isChecked : false);\r\n }}\r\n label={t(\r\n `${RootCreateProfile}.${CreateProfileItems.RegulatoryConsentReadMsg}`\r\n )}\r\n checked={checked}\r\n />\r\n
\r\n )}\r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport {\r\n DefaultButton,\r\n Link,\r\n PrimaryButton,\r\n Spinner,\r\n SpinnerSize,\r\n} from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { CreateProfileItems, RootCreateProfile } from \"../../constants\";\r\nimport {\r\n ButtonStyles,\r\n DetailsStyle,\r\n linkStyles,\r\n partialTheme,\r\n SpinnerStyles,\r\n} from \"../CreateProfileStyle\";\r\nimport { ConsentPage } from \"./ConsentPage\";\r\nimport { IConsentWrapperProps } from \"./ConsentPage.types\";\r\n\r\nexport const ConsentWrapper: React.FC = ({\r\n onSubmit,\r\n onCancel,\r\n checked,\r\n setRegulatoryConsent,\r\n country,\r\n createProfileInProgress,\r\n isReferralFlow,\r\n}) => {\r\n const { t } = useTranslation();\r\n const { instance } = useMsal();\r\n return (\r\n
\r\n

\r\n {\" \"}\r\n {t(`${RootCreateProfile}.${CreateProfileItems.ConfirmYourConsent}`)}\r\n

\r\n

\r\n {\" \"}\r\n {t(`${RootCreateProfile}.${CreateProfileItems.ConsentSubHeading}`)}\r\n

\r\n \r\n\r\n
\r\n {!isReferralFlow && (\r\n
\r\n

\r\n {`${t(`${RootCreateProfile}.${CreateProfileItems.Already}`)}`}\r\n  \r\n

\r\n {\r\n instance.logoutRedirect({ postLogoutRedirectUri: \"/login\" });\r\n }}\r\n >\r\n {t(`${RootCreateProfile}.${CreateProfileItems.SignIn}`)}\r\n \r\n
\r\n )}\r\n
\r\n {!isReferralFlow && (\r\n {\r\n onCancel && onCancel();\r\n }}\r\n />\r\n )}\r\n {createProfileInProgress ? (\r\n \r\n \r\n \r\n {` ${t(\r\n `${RootCreateProfile}.${CreateProfileItems.Creating}`\r\n )}...`}\r\n \r\n \r\n ) : (\r\n {\r\n onSubmit();\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport \"./CreateProfileStyles.scss\";\r\nimport React, { useState, useContext, useEffect } from \"react\";\r\nimport { ProfileDetails } from \"./ProfileDetails\";\r\nimport { ICandidateProfile, IProfileCountryDropdown } from \"./ProfileDetails.types\";\r\nimport { IconButton, Modal } from \"@fluentui/react\";\r\nimport { useBoolean } from \"@fluentui/react-hooks\";\r\nimport { cancelIcon, contentStyles, iconButtonStyles } from \"../login/LoginModal.style\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { IProfileRequest } from \"../../services/profile/profileRequest\";\r\nimport { LoginContext } from \"../../services/auth/loginContext\";\r\nimport { Loginitems, RedirectUri, RegulatedCountryList, RootLogin } from \"../constants\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ConsentWrapper } from \"./ConsentPage/ConsentWrapper\";\r\nimport { getToken } from \"../../services/auth/Msal\";\r\nimport { profileApi } from \"../../services/profile/profileApi\";\r\nimport { createProfileWrapperStyles, modalStyles } from \"./CreateProfileStyle\";\r\nimport { triggerSilentLogin } from \"../../utilities/applicationUtils\";\r\nimport { CandidateIdManager } from \"../../services/auth/utils/CandidateIdManager\";\r\nimport { trackEvent, trackException } from \"../../services/telemetry/TelemetryService\";\r\nimport { sessionLang } from \"../../Constants\";\r\nimport { languagesConfig } from \"../../utilities/i18n.helper\";\r\n\r\nexport const CreateProfile: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [country, setCountry] = useState({\r\n id: \"\",\r\n value: \"\",\r\n });\r\n const {\r\n showCreateProfileDialog,\r\n candidateSocialAuthProvider,\r\n candidateSocialAuthIssuerId,\r\n setShowCreateProfileDialog,\r\n } = useContext(LoginContext);\r\n const [showProfileDetails, setShowProfileDetails] = useState(true);\r\n const [createProfileInProgress, setCreateProfileInProgress] = useState(false);\r\n const [createProfileError, setcreateProfileError] = useState(false);\r\n const [showConsent, setShowConsent] = useState(false);\r\n const [isConsentReceived, setIsConsentReceived] = useState(false);\r\n const [firstName, setFirstName] = useState(\"\");\r\n const [middleName, setMiddleName] = useState(\"\");\r\n const [lastName, setLastName] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n\r\n const { instance } = useMsal();\r\n useEffect(() => {\r\n trackEvent(\r\n \"Create profile page loaded for candidate id- \" +\r\n CandidateIdManager.GetCandidateId() +\r\n \" and social auth provider- \" +\r\n candidateSocialAuthProvider +\r\n \" )\"\r\n );\r\n }, []);\r\n\r\n const onFormSubmit = (payload: ICandidateProfile) => {\r\n if (\r\n payload.country?.value === RegulatedCountryList.Russia ||\r\n payload.country?.value === RegulatedCountryList.China\r\n ) {\r\n setFirstName(payload.firstName);\r\n setMiddleName(payload.middleName);\r\n setLastName(payload.lastName);\r\n setCountry(payload.country);\r\n setEmail(payload.email);\r\n setShowConsent(true);\r\n setShowProfileDetails(false);\r\n trackEvent(`Show create profile consent page for candidate:-${payload.email}`);\r\n } else {\r\n onProfileSubmit();\r\n }\r\n };\r\n const [isModalOpen, { setFalse: hideModal }] = useBoolean(showCreateProfileDialog);\r\n const candidateInfo = CandidateIdManager.GetCandidateDetails();\r\n const candidateId = Number(CandidateIdManager.GetCandidateId());\r\n const onProfileSubmit = () => {\r\n setCreateProfileInProgress(true);\r\n\r\n const isSocialAuthPresentForCandidate = candidateInfo?.socialAuthProvider === \"None\" ? false : true;\r\n\r\n if (candidateId && !isSocialAuthPresentForCandidate) {\r\n onPatchProfileData();\r\n trackEvent(`patch profile submit event for candidateId-:-${candidateId} and email ${email}`);\r\n } else {\r\n trackEvent(`create profile submit event for candidate :-${email}`);\r\n onCreateProfileData();\r\n }\r\n };\r\n const prepareProfilePayload = () => {\r\n const profileDetails: IProfileRequest = {\r\n CandidateId: null,\r\n Candidate: {\r\n CandidateEmail: email,\r\n CandidateFirstName: firstName,\r\n CandidateId: 0,\r\n CandidateLastName: lastName,\r\n CandidateMiddleName: middleName,\r\n CandidatePreferredFirstName: \"\",\r\n },\r\n CandidateRegulatoryConsent: {\r\n IsConsentReceived: \"false\",\r\n RegulatoryAuditRequestDateTime: new Date().toJSON(),\r\n RegulatoryCountry: {\r\n id: country.id,\r\n value: country.value,\r\n link: \"\",\r\n },\r\n RegulatoryAuditDateTime: isConsentReceived ? new Date().toJSON() : \"\",\r\n CandidateId: 0,\r\n },\r\n candidateAuthenticationModel: {\r\n candidateId: 0,\r\n authenticationProviderId: candidateSocialAuthIssuerId,\r\n socialAccountUri: \"\",\r\n authenticationType: candidateSocialAuthProvider,\r\n },\r\n Locale:\r\n process.env.REACT_APP_CREATE_PROFILE_FRENCH_ENABLED === \"true\"\r\n ? sessionStorage.getItem(sessionLang) === languagesConfig.fr_ca.lang\r\n ? languagesConfig.fr_ca.linkLocale\r\n : languagesConfig.en_us.linkLocale\r\n : languagesConfig.en_us.linkLocale,\r\n };\r\n return profileDetails;\r\n };\r\n const onConsentSubmit = () => {\r\n trackEvent(`onConsentsubmit wvent triggered with consent for candidate:-${email}`);\r\n onProfileSubmit();\r\n };\r\n const onConsentCancel = () => {\r\n trackEvent(`Create profile consent page cancel triggered for candidate:-${email}`);\r\n setShowConsent(false);\r\n setShowProfileDetails(true);\r\n };\r\n const onCreateProfileData = () => {\r\n const profileDetails = prepareProfilePayload();\r\n getToken(instance).then((response) => {\r\n profileApi\r\n .createProfile(response, profileDetails)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n const redirectUri = sessionStorage.getItem(RedirectUri);\r\n if (redirectUri) triggerSilentLogin(redirectUri);\r\n }\r\n })\r\n .catch((error) => {\r\n trackException(error);\r\n setCreateProfileInProgress(false);\r\n setcreateProfileError(true);\r\n });\r\n });\r\n };\r\n const onPatchProfileData = () => {\r\n const profileDetails = prepareProfilePatchPayload();\r\n getToken(instance).then((response) => {\r\n profileApi\r\n .updateProfile(response, profileDetails, candidateId.toString())\r\n .then((res) => {\r\n if (res.status === 200) {\r\n const redirectUri = sessionStorage.getItem(RedirectUri);\r\n if (redirectUri) triggerSilentLogin(redirectUri);\r\n }\r\n })\r\n .catch((error) => {\r\n trackException(error);\r\n setCreateProfileInProgress(false);\r\n setcreateProfileError(true);\r\n });\r\n });\r\n };\r\n const prepareProfilePatchPayload = () => {\r\n const profileDetails: IProfileRequest = {\r\n CandidateId: candidateId,\r\n Candidate: {\r\n CandidateEmail: email,\r\n CandidateFirstName: firstName,\r\n CandidateId: candidateId,\r\n CandidateLastName: lastName,\r\n CandidateMiddleName: middleName,\r\n CandidatePreferredFirstName: \"\",\r\n },\r\n CandidateRegulatoryConsent: {\r\n IsConsentReceived: \"false\",\r\n RegulatoryAuditRequestDateTime: new Date().toJSON(),\r\n RegulatoryAuditDateTime: isConsentReceived ? new Date().toJSON() : \"\",\r\n RegulatoryCountry: {\r\n id: country.id,\r\n value: country.value,\r\n link: \"\",\r\n },\r\n CandidateId: candidateId,\r\n },\r\n candidateAuthenticationModel: {\r\n candidateId: candidateId,\r\n authenticationProviderId: candidateSocialAuthIssuerId,\r\n socialAccountUri: \"\",\r\n authenticationType: candidateSocialAuthProvider,\r\n },\r\n };\r\n return profileDetails;\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n {\r\n trackEvent(`Create profile modal dismiss event for candidate email:-${candidateInfo.email}`);\r\n setShowCreateProfileDialog && setShowCreateProfileDialog(false);\r\n }}\r\n isBlocking={true}\r\n containerClassName=\"login-modal\"\r\n styles={modalStyles}\r\n >\r\n
\r\n {\r\n trackEvent(`Create profile modal close event triggered for candidate email:-${candidateInfo.email}`);\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: sessionStorage.getItem(RedirectUri),\r\n });\r\n }}\r\n />\r\n
\r\n
\r\n {showProfileDetails && (\r\n \r\n )}\r\n {showConsent && (\r\n \r\n )}\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\n BannerType,\r\n CustomBannerKeys,\r\n CustomBannerKeysRoot,\r\n} from \"../../Constants\";\r\nimport { IMessageBarStyles, MessageBar, MessageBarType } from \"@fluentui/react\";\r\nimport React, { useState } from \"react\";\r\n\r\nimport { CustomBannerArgs } from \"../../interfaces/customBanner\";\r\nimport { trackEvent } from \"../../services/telemetry/TelemetryService\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const ErrorBannerComponent: React.FunctionComponent = () => {\r\n const { t } = useTranslation();\r\n const [isBannerEnable, setIsBannerEnable] = useState(false);\r\n const [bannerMessage, setBannerMessage] = useState(\r\n t(`${CustomBannerKeysRoot}.${CustomBannerKeys.DefaultMessage}`) as string\r\n );\r\n\r\n React.useEffect(() => {\r\n const handleNewMessage = (event: any) => {\r\n const customBannerArgs: CustomBannerArgs = event.detail;\r\n setIsBannerEnable(customBannerArgs.visibilityFlag);\r\n if (customBannerArgs.bannerMessage) {\r\n setBannerMessage(customBannerArgs.bannerMessage);\r\n }\r\n if (customBannerArgs.visibilityFlag) {\r\n const logProperties: any = {\r\n BannerType: BannerType.CustomBanner,\r\n requestUrl: customBannerArgs.requestUrl,\r\n statusCode: customBannerArgs.statusCode,\r\n apiStatus: customBannerArgs.apiStatus,\r\n };\r\n trackEvent(BannerType.CustomBanner, logProperties);\r\n }\r\n };\r\n\r\n window.addEventListener(BannerType.CustomBanner, handleNewMessage);\r\n\r\n return () => {\r\n window.removeEventListener(BannerType.CustomBanner, handleNewMessage);\r\n };\r\n }, [isBannerEnable]);\r\n\r\n const iconStyles: IMessageBarStyles = {\r\n iconContainer: {\r\n paddingTop: 10,\r\n fontSize: 18,\r\n },\r\n icon: {\r\n color: \"#000000\",\r\n },\r\n };\r\n\r\n const errorBanner = (\r\n \r\n
{bannerMessage}
\r\n \r\n );\r\n\r\n return
{isBannerEnable && errorBanner}
;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { IButtonStyles } from \"@fluentui/react\";\r\nimport { IStackStyles } from \"@fluentui/react/lib/Stack\";\r\n\r\nexport const csActionCenterTitleStyle: IStackStyles = {\r\n root: {\r\n background: \"#FFFFFF\",\r\n height: \"118px\",\r\n },\r\n inner: {\r\n paddingTop: \"24px\",\r\n selectors: {\r\n \"@media screen and (max-width: 860px)\": {\r\n marginLeft: \"14px\",\r\n },\r\n \"@media screen and (min-width: 860px) and (max-width: 1084px)\": {\r\n marginLeft: \"32px\",\r\n },\r\n \"@media screen and (min-width: 1084px)\": {\r\n marginLeft: \"5.8%\",\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const csActionCenterContentStyle: React.CSSProperties = {\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n fontSize: \"42px\",\r\n lineHeight: \"52px\",\r\n fontWeight: 376,\r\n color: \"#171717\",\r\n};\r\n\r\nexport const gcsNotfoundPageButtonStyles: IButtonStyles = {\r\n root: {\r\n backgroundColor: \"#5C1B86\",\r\n border: \"1px solid #5C1B86\",\r\n },\r\n rootHovered: {\r\n backgroundColor: \"#461D61\",\r\n border: \"1px solid #461D61\",\r\n },\r\n rootPressed: {\r\n backgroundColor: \"#2B143B\",\r\n border: \"1px solid #2B143B\",\r\n },\r\n rootFocused: {\r\n backgroundColor: \"#5C1B86\",\r\n border: \"1px solid #5C1B86\",\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\n// eslint-disable-next-line no-empty-pattern\r\nexport const CandidateNotAvailableSvg: React.FC = () => {\r\n const [iconSize, setIconSize] = useState({\r\n width: \"\",\r\n height: \"\",\r\n });\r\n\r\n useEffect(() => {\r\n if (window.innerWidth < 768) {\r\n setIconSize({\r\n width: \"120\",\r\n height: \"105\",\r\n });\r\n } else {\r\n setIconSize({\r\n width: \"152\",\r\n height: \"158\",\r\n });\r\n }\r\n }, []);\r\n\r\n const CandidateNotAvailableIcon = (width: string, height: string) => {\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 \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 const iconElement =\r\n iconSize.width === \"\"\r\n ? null\r\n : CandidateNotAvailableIcon(iconSize.width, iconSize.height);\r\n return iconElement;\r\n};\r\n\r\nexport default CandidateNotAvailableSvg;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\n// eslint-disable-next-line no-empty-pattern\r\nexport const GlobalErrorIconSvg: React.FC = () => {\r\n const [iconSize, setIconSize] = useState({\r\n width: \"\",\r\n height: \"\",\r\n });\r\n \r\n useEffect(() => {\r\n if (window.innerWidth < 768) {\r\n setIconSize({\r\n width: \"120\",\r\n height: \"105\"\r\n });\r\n }\r\n else {\r\n setIconSize({\r\n width: \"195\",\r\n height: \"167\"\r\n });\r\n }\r\n }, []);\r\n\r\n const GlobalErrorIcon = (width: string, height: string) => {\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 \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 const iconElement = iconSize.width ===\"\" ? null : GlobalErrorIcon(iconSize.width, iconSize.height);\r\n return iconElement;\r\n}\r\n\r\nexport default GlobalErrorIconSvg","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport \"./ErrorComponent.scss\";\r\n\r\nimport {\r\n ActionCenterTitle,\r\n BannerType,\r\n ErrorPageTranslationKeys,\r\n ErrorPageTranslationRoot,\r\n ErrorPageType,\r\n} from \"../../Constants\";\r\nimport { Link, Stack } from \"@fluentui/react\";\r\nimport {\r\n csActionCenterTitleStyle,\r\n gcsNotfoundPageButtonStyles,\r\n} from \"./ErrorComponent.styles\";\r\n\r\nimport CandidateNotAvailableSvg from \"./CandidateNotAvailableSvg\";\r\nimport { GlobalErrorIconSvg } from \"./GlobalErrorIconSvg\";\r\nimport { IDownTimeInfo } from \"../../interfaces/errorComponentProps\";\r\nimport { PrimaryButton } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { config } from \"../../services/config\";\r\nimport { getCareersPortalURI } from \"../../utilities/applicationUtils\";\r\nimport { trackEvent } from \"../../services/telemetry/TelemetryService\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const ErrorComponent: React.FunctionComponent = ({\r\n serviceName,\r\n}) => {\r\n const history = useHistory();\r\n const { t } = useTranslation();\r\n let isButtonEnabled = false;\r\n let isActionCenterTitleEnabled = true;\r\n let headingText = \"\",\r\n buttonElement: JSX.Element = <>;\r\n let descriptionText = <>;\r\n\r\n switch (serviceName) {\r\n case ErrorPageType.OdsDownTime:\r\n case ErrorPageType.ActionCenterDownTime:\r\n headingText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.WeWillBeBackSoon}`\r\n );\r\n descriptionText = (\r\n <>\r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ActionCenterDownTimeMessagePrefix}`\r\n )}\r\n \r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.MicrosoftCareersText}`\r\n )}\r\n \r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ActionCenterDownTimeMessageSuffix}`\r\n )}\r\n \r\n );\r\n break;\r\n /* 403 case starts for Candidate API only */\r\n case ErrorPageType.CandidateNotAvailable:\r\n headingText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ActionCenterPreparation}`\r\n );\r\n descriptionText = (\r\n <>\r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ActionCenterPreparationPrefixMessage}`\r\n )}\r\n \r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.MicrosoftCareersText}`\r\n )}\r\n \r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ActionCenterPreparationSuffixMessage}`\r\n )}\r\n \r\n );\r\n break;\r\n /* 403 case ends */\r\n case ErrorPageType.IcimsDownTime:\r\n headingText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.WeWillBeBackSoon}`\r\n );\r\n descriptionText = (\r\n <>\r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ICIMSDownTimeMessagePrefix}`\r\n )}\r\n \r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.MicrosoftCareersText}`\r\n )}\r\n \r\n {t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.ICIMSDownTimeMessageSuffix}`\r\n )}\r\n \r\n );\r\n break;\r\n case ErrorPageType.PhenomDownTime:\r\n headingText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.WeWillBeBackSoon}`\r\n );\r\n descriptionText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.PhenomDownTimeMessage}`\r\n );\r\n isActionCenterTitleEnabled = false;\r\n break;\r\n case ErrorPageType.NotFoundErrorPage:\r\n headingText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.PageNotFoundHeading}`\r\n );\r\n descriptionText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.PageNotFoundMessage}`\r\n );\r\n isButtonEnabled = true;\r\n isActionCenterTitleEnabled = false;\r\n buttonElement = (\r\n \r\n (window.location.href = config.careersPortalLink)}\r\n styles={gcsNotfoundPageButtonStyles}\r\n />\r\n \r\n );\r\n break;\r\n }\r\n let computedHtml = (\r\n <>\r\n {isActionCenterTitleEnabled && (\r\n \r\n

\r\n {t(ActionCenterTitle)}\r\n

\r\n
\r\n )}\r\n \r\n {serviceName === ErrorPageType.CandidateNotAvailable ? (\r\n \r\n ) : (\r\n \r\n )}\r\n

\r\n {headingText}\r\n

\r\n
\r\n {descriptionText}\r\n {isButtonEnabled && buttonElement}\r\n
\r\n
\r\n \r\n );\r\n\r\n if (serviceName) {\r\n const logProperties = {\r\n BannerType: BannerType.ErrorPage,\r\n serviceName: serviceName,\r\n };\r\n trackEvent(BannerType.ErrorPage, logProperties);\r\n } else {\r\n computedHtml = <>;\r\n }\r\n\r\n return computedHtml;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { createContext, useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nimport { ContextProps, Props } from \"./index.types\";\r\n\r\nexport const FlightingContext = createContext({\r\n isFlighted: false,\r\n isLoading: true,\r\n isCandidateCallRequired: false,\r\n});\r\n\r\nconst isFlightingContextEnabled = !!(\r\n process.env.REACT_APP_ENABLE_FLIGHTING_CONTEXT && process.env.REACT_APP_ENABLE_FLIGHTING_CONTEXT === \"true\"\r\n);\r\n\r\nexport default function FlightingProvider({ children }: Props) {\r\n const [flight, setFlight] = useState(false);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isCandidateCallRequired, setIsCandidateCallRequired] = useState(false);\r\n\r\n if (flight && window) {\r\n window.isNewShell = true;\r\n }\r\n\r\n useEffect(() => {\r\n if (isFlightingContextEnabled) {\r\n axios\r\n .get(`${process.env.REACT_APP_FLIGHTING_API}/flighting`)\r\n .then(() => setFlight(true))\r\n .catch(() => {\r\n setFlight(false);\r\n setIsCandidateCallRequired(true);\r\n })\r\n .finally(() => setIsLoading(false));\r\n } else {\r\n setIsLoading(false);\r\n }\r\n }, []);\r\n\r\n return {children};\r\n}\r\n","import { FooterLangSelector, OpenInNewTab, OpenInSameTab, UHFFooterLinksClassName } from \"./constants\";\r\n\r\nimport React from \"react\";\r\nimport { trackEvent } from \"../services/telemetry/TelemetryService\";\r\n\r\ninterface FooterProps {\r\n body: string;\r\n}\r\nexport const Footer: React.FC = ({ body }) => {\r\n let footerHTML = { __html: body };\r\n //To Hide the Locale Picker\r\n React.useEffect(() => {\r\n footerHTML = { __html: body };\r\n const localePicker: any = document.getElementById(FooterLangSelector);\r\n if (localePicker) {\r\n localePicker.style.display = \"none\";\r\n }\r\n const footerAnchorElements = document.getElementsByClassName(\r\n UHFFooterLinksClassName\r\n );\r\n for (let i = 0; i < footerAnchorElements.length; i++) {\r\n footerAnchorElements[i].addEventListener(\"click\", universalFooterEvent);\r\n }\r\n if (footerAnchorElements.length === 0) {\r\n const logProperties = {\r\n ClassNameUsedInCode: UHFFooterLinksClassName,\r\n };\r\n trackEvent(\"UHF Footer links class name change alert\", logProperties);\r\n }\r\n }, [body]);\r\n\r\n /**\r\n * universalFooterEvent enables UHF footer links to open in new tab when particular UHF\r\n * Link is clicked, It is introduced as uhf is not enabling us to open links in new tab\r\n * Bug ID : 7065933\r\n */\r\n function universalFooterEvent(sender: any) {\r\n sender.preventDefault();\r\n const anchorLink = sender.target.getAttribute(\"href\");\r\n const target = sender.target.innerText === \"Careers\" ? OpenInSameTab : OpenInNewTab;\r\n window.open(anchorLink, target);\r\n }\r\n\r\n return
;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from 'react';\r\nimport { registerIcons } from '@fluentui/react/lib/Styling';\r\n\r\nregisterIcons({\r\n icons: {\r\n 'facebook-icon': (\r\n \r\n \r\n \r\n ),\r\n 'linkedin-icon': (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n 'twitter-icon': (\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 'instagram-icon': (\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 * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { URLStringOrFn } from \"../../utilities/i18n.helper\";\r\n\r\nexport interface IFooterLinks {\r\n title: string;\r\n icon?: string;\r\n isExternal: boolean;\r\n url: T;\r\n}\r\n\r\nexport const clientBaseURL = process.env.REACT_APP_CAREERS_PORTAL_URI;\r\n\r\nexport const socialLinks: IFooterLinks[] = [\r\n {\r\n title: \"Facebook\",\r\n icon: \"facebook-icon\",\r\n isExternal: true,\r\n url: \"https://www.facebook.com/MicrosoftLife\",\r\n },\r\n {\r\n title: \"Linkedin\",\r\n icon: \"linkedin-icon\",\r\n isExternal: true,\r\n url: \"https://www.linkedin.com/company/microsoft\",\r\n },\r\n {\r\n title: \"Instagram\",\r\n icon: \"instagram-icon\",\r\n isExternal: true,\r\n url: \"https://www.instagram.com/microsoftlife\",\r\n },\r\n {\r\n title: \"Twitter\",\r\n icon: \"twitter-icon\",\r\n isExternal: true,\r\n url: \"https://twitter.com/MicrosoftLife\",\r\n },\r\n];\r\n\r\nexport const footerL1Links = (isExternalCandidate: boolean, isEnglishSite: boolean): IFooterLinks[] => [\r\n {\r\n title: \"Accessibility\",\r\n isExternal: false,\r\n url: (lang) => `${clientBaseURL}/v2/${lang}/accessibility.html`,\r\n },\r\n {\r\n title: \"Microsoft_Data_Privacy_Notice\",\r\n isExternal: true,\r\n url: \"http://go.microsoft.com/fwlink/?LinkId=518021\",\r\n },\r\n {\r\n title: \"Legal_policies\",\r\n isExternal: true,\r\n url: (lang) => `${clientBaseURL}/v2/${lang}/legal-policies.html`,\r\n },\r\n ...(!isExternalCandidate\r\n ? [\r\n {\r\n title: \"Labor_Condition_Application_Postings\",\r\n isExternal: true,\r\n url: \"https://aka.ms/LCANotices\",\r\n },\r\n ]\r\n : []),\r\n ...(isEnglishSite\r\n ? [\r\n {\r\n title: \"Contractor_Roles\",\r\n isExternal: false,\r\n url: `${clientBaseURL}/v2/global/en/contractor-roles.html`,\r\n },\r\n ]\r\n : []),\r\n];\r\n\r\nexport const footerL2Links = (isConsentRequired: boolean): IFooterLinks[] => [\r\n {\r\n title: \"Privacy\",\r\n isExternal: true,\r\n url: \"https://go.microsoft.com/fwlink/?LinkId=521839\",\r\n },\r\n ...(isConsentRequired\r\n ? [\r\n {\r\n title: \"Manage_cookies\",\r\n isExternal: true,\r\n url: \"\",\r\n },\r\n ]\r\n : []),\r\n {\r\n title: \"Trademarks\",\r\n isExternal: true,\r\n url: \"https://www.microsoft.com/trademarks\",\r\n },\r\n {\r\n title: \"Terms_of_use\",\r\n isExternal: true,\r\n url: \"https://go.microsoft.com/fwlink/?LinkID=206977\",\r\n },\r\n];\r\n\r\nexport const footerL2CaliforniaPrivacyLink: IFooterLinks = {\r\n title: \"California_Privacy_Notice\",\r\n isExternal: true,\r\n url: \"https://aka.ms/yourcaliforniaprivacychoices\",\r\n};\r\n\r\nexport const i18nKeyFooterL1 = \"FootervNext.Level1\";\r\nexport const i18nKeyFooterL2 = \"FootervNext.Level2\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { DefaultPalette, IStackStyles } from \"@fluentui/react\";\r\nimport { CSSProperties } from \"react\";\r\n\r\nexport type IFooterType = \"footerL1\" | \"footerL2\";\r\n\r\nexport const stackStyles: Record = {\r\n footerL1: {\r\n root: {\r\n background: DefaultPalette.neutralLighterAlt,\r\n },\r\n },\r\n footerL2: {\r\n root: {\r\n background: DefaultPalette.neutralLighter,\r\n height: \"68px\",\r\n paddingRight: \"40px\",\r\n },\r\n inner: {\r\n height: \"100%\",\r\n margin: \"0px\",\r\n },\r\n },\r\n};\r\n\r\nexport const footerLinkCollectionStyles: CSSProperties = {\r\n overflow: \"hidden\",\r\n marginTop: 10,\r\n marginBottom: 10,\r\n};\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCaliforniaprivacy(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n role: \"img\",\n \"aria-hidden\": \"true\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 30 14\",\n xmlSpace: \"preserve\",\n height: 16,\n width: 43,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"#06f\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z\",\n style: {\n fill: \"#06f\"\n }\n }));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCaliforniaprivacy);\nexport default __webpack_public_path__ + \"static/media/californiaprivacy.005c6832.svg\";\nexport { ForwardRef as ReactComponent };","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport enum JobSearchRoutes {\r\n search = \"/search\",\r\n job = \"/job\",\r\n savedjobs = \"/savedjobs\",\r\n alerts = \"/alerts\",\r\n recommendedjobs = \"/recommendedjobs\",\r\n}\r\n\r\nexport interface JobSearchProps {\r\n routeType: string;\r\n}\r\n\r\nexport interface Asset {\r\n name: string;\r\n src: string;\r\n}\r\n\r\nexport interface IJobSearchTranslation {\r\n texts: {\r\n SearchExperienceLoading: string;\r\n JobDetailsLoading: string;\r\n SavedJobsLoading: string;\r\n AlertsLoading: string;\r\n RecommendedJobsLoading: string;\r\n };\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\n\r\nexport const useWindowWidth = () => {\r\n const [width, setWidth] = React.useState(window.innerWidth);\r\n React.useEffect(() => {\r\n const handleWindowResize = () => setWidth(window.innerWidth);\r\n window.addEventListener(\"resize\", handleWindowResize);\r\n return () => window.removeEventListener(\"resize\", handleWindowResize);\r\n }, []);\r\n return { width };\r\n};","/* eslint-disable @typescript-eslint/ban-types */\r\n\r\n/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { Activity } from \"../../Constants\";\r\nimport { config } from \"../config\";\r\n\r\n/**\r\n * Campaign definitions define a survey campaign to run\r\n * For building your own survey, see https://petrolapi.azurewebsites.net/docson/index.html#../schemas/CampaignDefinitionsSchema.json\r\n * (you may have to click the link twice due to authentication issues)\r\n */\r\nconst campaigns: object[] = [\r\n {\r\n CampaignId: process.env.REACT_APP_OCV_SURVEY_CAMPAIGNID, // Assigned by OCV, please use the actual value for your app. \r\n StartTimeUtc: process.env.REACT_APP_OCV_SURVEY_CAMPAIGN_STARTDATE, // If null, the campaign is inactive\r\n // EndTimeUtc: '2021-03-31T00:00:00Z', // Please uncomment and set date to disable survey.\r\n GovernedChannelType: config.production ? 0 : 1, // 1: Urgent Channel(No channel cooldown and NOT recommended for Production use as user can be bombarded with surveys each time); 0 - Recommended for Production as it has channel cooldown\r\n NominationScheme:\r\n {\r\n Type: 0, // Default\r\n PercentageNumerator: Number(process.env.REACT_APP_OCV_SURVEY_CAMPAIGN_NOMINATIONPERCENTAGE), // Ratio of users to be nominated to be a candidate numerator...After demo, please change to 25.\r\n PercentageDenominator: 100, // Ratio of users to be nominated to be a candidate denominator\r\n NominationPeriod:\r\n {\r\n Type: 0, // Default\r\n IntervalSeconds: process.env.REACT_APP_OCV_SURVEY_CAMPAIGN_NOMINATIONPERIODSECONDS // NOT used when ratio is 100%. Please change to 2592000 after demo.\r\n },\r\n CooldownPeriod:\r\n {\r\n Type: 0, // Default\r\n IntervalSeconds: process.env.REACT_APP_OCV_SURVEY_CAMPAIGN_COOLDOWNSECONDS // Change to 7776000 after demo\r\n },\r\n // FallbackSurveyDurationSeconds: 5 // This will be used only if nomination period is non-time based. e.g. build based\r\n },\r\n SurveyTemplate:\r\n {\r\n Type: 2, // NPS Template, can be NPS 5pts (0), NPS 11pts (1), FPS (2), NLQs (3), NPS (4), or GenericMessaging Survey (22)\r\n ActivationEvent:\r\n {\r\n Type: 0, // 0 For one event, 1 for multiple events (array of events)\r\n Activity: Activity.AppUsage,\r\n Count: 1, \r\n IsAggregate: true\r\n },\r\n Content: {\r\n Prompt: {\r\n Title: 'FPS_Prompt_Title',\r\n Question: 'FPS_Prompt_Question',\r\n YesLabel: 'FPS_Prompt_YesLabel',\r\n NoLabel: 'FPS_Prompt_NoLabel'\r\n },\r\n Rating: {\r\n IsZeroBased: false,\r\n Question: \"FPS_Rating_Question\", // No asterisk (*) supported for marking required input.\r\n RatingValuesAscending: [\r\n 'FPS_Rating_Values_5',\r\n 'FPS_Rating_Values_4',\r\n 'FPS_Rating_Values_3',\r\n 'FPS_Rating_Values_2',\r\n 'FPS_Rating_Values_1'\r\n ]\r\n },\r\n Question: { Question: 'FPS_Question_Question' }\r\n }\r\n }\r\n }\r\n];\r\n\r\nexport default campaigns;","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport * as OTel from \"@microsoft/oteljs\";\r\nimport { OneDSSink, OneDSEndpoint } from \"@microsoft/oteljs-1ds\";\r\n\r\nexport class SurveyTelemetrySinkProvider {\r\n private sink: OTel.TelemetrySink | undefined;\r\n\r\n // This is the callback that the Floodgate SDK will call to get the TelemetrySink.\r\n public getTelemetrySink(): OTel.TelemetrySink {\r\n if (!this.sink) {\r\n this.sink = this.createSink();\r\n }\r\n\r\n return this.sink;\r\n }\r\n\r\n // Reference this wiki page for OneDSSink creation, the TelemetryLogger is not needed because FG SDK implements it internally: https://www.owiki.ms/wiki/Telemetry/OTelJS#1DS_sink\r\n private createSink(isEUDBUser = false): OTel.TelemetrySink {\r\n // Setting the required persistent data fields. Host sets User, App and Session fields for themselves.\r\n const persistentDataFields: OTel.DataField[] = [\r\n ...OTel.User.getFields({\r\n // Not required so commented below lines. These exists for future reference.\r\n // primaryIdentityHash: \"11111111-2222-2222-2222-333333333333\", // should be a real GUID or identifier\r\n // primaryIdentitySpace: \"UserObjectId\", // UserObjectId, MSACID, OrgIdPuid, OrgIdCID, MsaPuid, WopiAuth, or ThirdParty,\r\n // tenantId: \"33333333-2222-2222-2222-111111111111\", // should be a real GUID\r\n isAnonymous: true,\r\n }),\r\n ...OTel.App.getFields({\r\n name: \"Career Site Shell\",\r\n platform: \"Web\",\r\n version: \"0.1.0\",\r\n }),\r\n ...OTel.Session.getFields({\r\n id: \"5AD38A03-2660-4B9D-83B0-64E1A446E7B2\",\r\n }),\r\n ];\r\n\r\n // For EUDB users, use OneDSEndpoint.EUDB. The host app has the context on which to use and has to set it appropriately.\r\n const oneDsSink = isEUDBUser\r\n ? new OneDSSink(persistentDataFields, { endpointUrl: OneDSEndpoint.EUDB })\r\n : new OneDSSink(persistentDataFields, {\r\n endpointUrl: OneDSEndpoint.PUBLIC,\r\n });\r\n\r\n return oneDsSink;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\n\r\n/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { Activity } from \"../../Constants\";\r\nimport { config } from \"../config\";\r\n\r\n/**\r\n * Campaign definitions define a survey campaign to run\r\n * For building your own survey, see https://petrolapi.azurewebsites.net/docson/index.html#../schemas/CampaignDefinitionsSchema.json\r\n * (you may have to click the link twice due to authentication issues)\r\n */\r\nconst recommendationCampaigns: object[] = [\r\n {\r\n CampaignId: process.env.REACT_APP_RECOMMENDATIONS_OCV_SURVEY_CAMPAIGNID, // Assigned by OCV, please use the actual value for your app.\r\n StartTimeUtc: process.env.REACT_APP_RECOMMENDATIONS_OCV_SURVEY_CAMPAIGN_STARTDATE, // If null, the campaign is inactive\r\n // EndTimeUtc: '2021-03-31T00:00:00Z', // Please uncomment and set date to disable survey.\r\n GovernedChannelType: config.production ? 0 : 1, // 1: Urgent Channel(No channel cooldown and NOT recommended for Production use as user can be bombarded with surveys each time); 0 - Recommended for Production as it has channel cooldown\r\n FloodgateTriggerIntervalInMilliSeconds: 60000,\r\n NominationScheme: {\r\n Type: 0, // Default\r\n PercentageNumerator: Number(process.env.REACT_APP_RECOMMENDATIONS_OCV_SURVEY_CAMPAIGN_NOMINATIONPERCENTAGE), // Ratio of users to be nominated to be a candidate numerator...After demo, please change to 25.\r\n PercentageDenominator: 100, // Ratio of users to be nominated to be a candidate denominator\r\n NominationPeriod: {\r\n Type: 0, // Default\r\n IntervalSeconds: process.env.REACT_APP_RECOMMENDATIONS_OCV_SURVEY_CAMPAIGN_NOMINATIONPERIODSECONDS, // NOT used when ratio is 100%. Please change to 2592000 after demo.\r\n },\r\n CooldownPeriod: {\r\n Type: 0, // Default\r\n IntervalSeconds: process.env.REACT_APP_RECOMMENDATIONS_OCV_SURVEY_CAMPAIGN_COOLDOWNSECONDS, // Change to 7776000 after demo\r\n },\r\n // FallbackSurveyDurationSeconds: 5 // This will be used only if nomination period is non-time based. e.g. build based\r\n },\r\n SurveyTemplate: {\r\n Type: 2, // NPS Template, can be NPS 5pts (0), NPS 11pts (1), FPS (2), NLQs (3), NPS (4), or GenericMessaging Survey (22)\r\n ActivationEvent: {\r\n Type: 0, // 0 For one event, 1 for multiple events (array of events)\r\n Activity: Activity.AppUsage,\r\n Count: 1,\r\n IsAggregate: true,\r\n },\r\n Content: {\r\n Prompt: {\r\n Title: \"FPS_Recommendations_Prompt_Title\",\r\n Question: \"FPS_Recommendations_Prompt_Question\",\r\n YesLabel: \"FPS_Prompt_YesLabel\",\r\n NoLabel: \"FPS_Prompt_NoLabel\",\r\n },\r\n Rating: {\r\n IsZeroBased: false,\r\n Question: \"FPS_Recommendations_Rating_Question\", // No asterisk (*) supported for marking required input.\r\n RatingValuesAscending: [\r\n \"FPS_Rating_Values_5\",\r\n \"FPS_Rating_Values_4\",\r\n \"FPS_Rating_Values_3\",\r\n \"FPS_Rating_Values_2\",\r\n \"FPS_Rating_Values_1\",\r\n ],\r\n },\r\n Question: { Question: \"FPS_Recommendations_Rating_Question\" },\r\n },\r\n },\r\n },\r\n];\r\n\r\nexport default recommendationCampaigns;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\n// \r\n\r\nimport campaigns from \"./campaigns\";\r\nimport { config } from \"../config\";\r\nimport i18next from \"i18next\";\r\nimport { SurveyTelemetrySinkProvider } from \"./SurveyTelemetrySinkProvider\";\r\nimport { trackEvent } from \"../telemetry/TelemetryService\";\r\nimport { Activity } from \"../../Constants\";\r\nimport recommendationCampaigns from \"./recommendationCampaign\";\r\n\r\nconst sinkProvider = new SurveyTelemetrySinkProvider();\r\nclass FloodgateService {\r\n public async init(lang: string, isRecommendationsPage: boolean): Promise {\r\n const anyWindow = window as any;\r\n anyWindow.OfficeBrowserFeedback = anyWindow.OfficeBrowserFeedback || {};\r\n anyWindow.OfficeBrowserFeedback.floodgate = anyWindow.OfficeBrowserFeedback.floodgate || {\r\n initialize: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\r\n start: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\r\n getEngine: () => {\r\n return {\r\n getActivityListener: () => {\r\n return { logActivity: (str: string) => {} }; // eslint-disable-line\r\n },\r\n };\r\n },\r\n };\r\n anyWindow.OfficeBrowserFeedback.initOptions = {\r\n locale: lang === \"fr_ca\" ? \"fr-CA\" : \"en-US\",\r\n appId: Number(config.ocv.appId), // -> Please use this value after testing.\r\n stylesUrl: `${process.env.REACT_APP_CHILDAPP_URI}/static/styles/survey.css`,\r\n intlUrl: `${process.env.REACT_APP_CHILDAPP_URI}/static/intl/`,\r\n intlFilename: \"officebrowserfeedbackstrings.js\",\r\n environment: config.production ? 0 : 1,\r\n userEmail: \"\",\r\n userEmailConsentDefault: false,\r\n sessionId: \"\",\r\n telemetryGroup: {\r\n featureArea: process.env.REACT_APP_OCV_SURVEY_CAMPAIGN_FEATUREAREA,\r\n },\r\n telemetrySink: sinkProvider.getTelemetrySink(),\r\n onError: (err: any) => {\r\n const logProperties = {\r\n error: err,\r\n };\r\n trackEvent(\"SubmitSurvey: Survey failed to launch \", logProperties);\r\n },\r\n };\r\n anyWindow.OfficeBrowserFeedback.floodgate.initOptions = {\r\n autoDismiss: 2, // 0: No auto-dismiss (default), 1: 7s, 2: 14s, 3: 21s, 4: 28s\r\n campaignDefinitions: isRecommendationsPage == true ? recommendationCampaigns : campaigns,\r\n onDismiss: (campaignId: string, submitted: boolean) => {\r\n if (submitted) {\r\n //store.dispatch(submitSurvey(campaignId)); //check Later\r\n\r\n const logProperties = {\r\n submitted: submitted,\r\n campaignId: campaignId,\r\n };\r\n trackEvent(\"SubmitSurvey: Survey submitted \", logProperties);\r\n }\r\n },\r\n uIStringGetter: (translationKey: string) => i18next.t(translationKey),\r\n };\r\n\r\n await anyWindow.OfficeBrowserFeedback.floodgate.initialize();\r\n\r\n anyWindow.onfocus = () => {\r\n if ((window as any).OfficeBrowserFeedback.floodgate) {\r\n anyWindow.OfficeBrowserFeedback.floodgate.start();\r\n }\r\n };\r\n\r\n anyWindow.onblur = () => {\r\n if ((window as any).OfficeBrowserFeedback.floodgate) {\r\n anyWindow.OfficeBrowserFeedback.floodgate.stop();\r\n }\r\n };\r\n\r\n anyWindow.onunload = () => {\r\n if ((window as any).OfficeBrowserFeedback.floodgate) {\r\n anyWindow.OfficeBrowserFeedback.floodgate.stop();\r\n }\r\n };\r\n }\r\n\r\n public async startEngine() {\r\n await (window as any).OfficeBrowserFeedback.floodgate.start();\r\n }\r\n\r\n public async stopEngine() {\r\n await (window as any).OfficeBrowserFeedback.floodgate.stop();\r\n }\r\n\r\n public triggerAppUsageStartActivity() {\r\n (window as any).OfficeBrowserFeedback.floodgate.getEngine().getActivityListener().logActivity(Activity.AppUsage);\r\n }\r\n}\r\n\r\nexport const floodgateService = new FloodgateService();\r\nexport default floodgateService;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport \"./socialIcons\";\r\nimport \"./footer.scss\";\r\n\r\nimport { AvailableLangs, getHrefByLang, languagesConfig } from \"../../utilities/i18n.helper\";\r\nimport { FontIcon, Icon, Link, Stack } from \"@fluentui/react\";\r\nimport {\r\n clientBaseURL,\r\n footerL1Links,\r\n footerL2CaliforniaPrivacyLink,\r\n footerL2Links,\r\n i18nKeyFooterL1,\r\n i18nKeyFooterL2,\r\n socialLinks,\r\n} from \"./config\";\r\n\r\nimport React from \"react\";\r\nimport { sessionLang } from \"../../Constants\";\r\nimport { showSupportFormEvent } from \"../../ShellCustomEvents\";\r\nimport { footerLinkCollectionStyles, stackStyles } from \"./footer.styles\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { WcpInitCallbackEventName } from \"../cookieBanner/config\";\r\nimport { LangFooterClickEvent, Locales } from \"../constants\";\r\nimport { ReactComponent as CaliforniaPrivacyIcon } from \"../../assets/californiaprivacy.svg\";\r\nimport { useWindowWidth } from \"../useWindowWidth\";\r\nimport floodgateService from \"../../services/survey/FloodgateService\";\r\nimport { useHistory } from \"react-router\";\r\nimport { JobSearchRoutes } from \"../../container/JobSearch/Index.types\";\r\n\r\nconst appUsageTime =\r\n Number(process.env.REACT_APP_SURVEY_APPUSAGE_INSECONDS ? process.env.REACT_APP_SURVEY_APPUSAGE_INSECONDS : 10) * 1000;\r\n\r\nexport const FootervNext: React.FC<{\r\n isExternalCandidate: boolean;\r\n isAEM?: boolean;\r\n}> = ({ isExternalCandidate, isAEM = false }) => {\r\n const { t, i18n } = useTranslation();\r\n\r\n const currentLang =\r\n sessionStorage.getItem(sessionLang) == languagesConfig.fr_ca.lang\r\n ? languagesConfig.fr_ca.lang\r\n : languagesConfig.en_us.lang;\r\n\r\n const [isConsentRequired, setIsConsentRequired] = React.useState(\r\n window.siteConsent && window.siteConsent.isConsentRequired\r\n );\r\n\r\n const isSurveyEnabled = true;\r\n const history = useHistory();\r\n const isRecommendationsPage = history?.location?.pathname.includes(JobSearchRoutes.recommendedjobs);\r\n\r\n const _onScriptLoaded = () => {\r\n floodgateService.init(i18n.language, isRecommendationsPage);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (isAEM) {\r\n const scriptTag = document.createElement(\"script\");\r\n document.body.appendChild(scriptTag);\r\n scriptTag.onload = _onScriptLoaded;\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.src = `${process.env.REACT_APP_CHILDAPP_URI}/static/scripts/officebrowserfeedback_floodgate.min.js`;\r\n } else {\r\n floodgateService.init(i18n.language, isRecommendationsPage);\r\n }\r\n }, [i18n.language]);\r\n\r\n const [floodgateStart, setFloodgateStart] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n if (!isSurveyEnabled) {\r\n if (floodgateStart) clearTimeout(floodgateStart);\r\n floodgateService.stopEngine();\r\n }\r\n }, [isSurveyEnabled, floodgateStart]);\r\n\r\n React.useEffect(() => {\r\n if (isSurveyEnabled) {\r\n setFloodgateStart(\r\n window.setTimeout(async () => {\r\n await floodgateService.startEngine();\r\n floodgateService.triggerAppUsageStartActivity();\r\n }, appUsageTime)\r\n );\r\n }\r\n }, [isSurveyEnabled]);\r\n\r\n React.useEffect(() => {\r\n const _handleWcpInitCallback = (event: any) => {\r\n if (event && event.detail) {\r\n setIsConsentRequired(event.detail.isConsentRequired);\r\n }\r\n };\r\n window.addEventListener(WcpInitCallbackEventName, _handleWcpInitCallback);\r\n\r\n return () => {\r\n window.removeEventListener(WcpInitCallbackEventName, _handleWcpInitCallback);\r\n };\r\n }, []);\r\n\r\n const { route: langRoute } = languagesConfig[currentLang];\r\n\r\n function handleLanguageChange(lang: AvailableLangs) {\r\n return (): void => {\r\n sessionStorage.setItem(sessionLang, lang);\r\n const selectedRoute = languagesConfig[lang];\r\n if (isAEM) {\r\n window.location.href = `${clientBaseURL}/bin/msft/switchlang?lang=${selectedRoute?.route?.replace(\"/\", \"_\")}`;\r\n } else {\r\n const langButtonEvent = new CustomEvent(LangFooterClickEvent, {\r\n detail: { language: lang },\r\n });\r\n window.dispatchEvent(langButtonEvent);\r\n }\r\n };\r\n }\r\n const width = useWindowWidth().width;\r\n return (\r\n \r\n 1024 ? true : false}\r\n horizontalAlign=\"space-between\"\r\n wrap={false}\r\n verticalAlign=\"center\"\r\n tokens={{ childrenGap: \"10\" }}\r\n className=\"base-container\"\r\n >\r\n 1024 ? true : false}\r\n as=\"div\"\r\n tokens={{ childrenGap: \"4 20\" }}\r\n verticalAlign=\"center\"\r\n wrap={false}\r\n >\r\n
\r\n \r\n {Object.values(languagesConfig)?.map(({ title, lang }, index, arr) => (\r\n \r\n \r\n {title}\r\n \r\n {index !== arr.length - 1 && | }\r\n \r\n ))}\r\n
\r\n\r\n \r\n \r\n showSupportFormEvent()}\r\n >\r\n {t(`${i18nKeyFooterL1}.Support`)}\r\n \r\n \r\n {footerL1Links(isExternalCandidate, langRoute === \"global/en\").map(({ title, isExternal, url }) => (\r\n \r\n \r\n {t(`${i18nKeyFooterL1}.${title}`)}\r\n \r\n \r\n ))}\r\n
\r\n \r\n \r\n {socialLinks.map(({ title, icon, isExternal, url }) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {i18n.language !== Locales.fr_ca && (\r\n \r\n \r\n \r\n {t(`${i18nKeyFooterL2}.${footerL2CaliforniaPrivacyLink.title}`)}\r\n \r\n \r\n )}\r\n {footerL2Links(isConsentRequired).map(({ title, isExternal, url }) => (\r\n {\r\n if (window.siteConsent && typeof window.siteConsent.manageConsent === \"function\") {\r\n window.siteConsent.manageConsent();\r\n }\r\n },\r\n })}\r\n className=\"footer-link\"\r\n {...(isExternal && {\r\n target: \"_blank\",\r\n rel: \"noreferrer noopener\",\r\n })}\r\n >\r\n {t(`${i18nKeyFooterL2}.${title}`)}\r\n \r\n ))}\r\n © Microsoft {new Date().getFullYear()}\r\n \r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport interface ErrorPageProps {\r\n serviceName: string;\r\n statusCode?: number;\r\n}\r\n\r\nexport enum SystemName {\r\n Icims = \"icims\",\r\n Ods = \"ods\",\r\n ActionCenter = \"actioncenter\",\r\n Rpi = \"rpi\",\r\n Referral = \"referral\"\r\n}\r\n\r\nexport const BannerType = {\r\n CustomBanner: \"customBanner\",\r\n ErrorPage: \"errorPage\",\r\n};\r\n\r\nexport const ErrorCodeText = {\r\n InternalServerError: 500,\r\n Forbidden: 403,\r\n};\r\n\r\nexport const MonitoringActiveFlag = \"active\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { IMessageBarStyles } from \"@fluentui/react\";\r\n\r\nexport const GcsErrorBannerStyles: IMessageBarStyles = {\r\n icon: {\r\n width: 16,\r\n height: 18,\r\n\r\n fontStyle: \"normal\",\r\n fontWeight: 400,\r\n fontSize: 16,\r\n lineHeight: 16,\r\n\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n textAlign: \"center\",\r\n\r\n color: \"#A80000\",\r\n\r\n flex: \"none\",\r\n order: 0,\r\n flexgrow: 0,\r\n },\r\n innerText: {\r\n height: \"auto\",\r\n width: \"100%\",\r\n fontFamily:\r\n \"Segoe UI, Segoe UI Web (West European), Segoe UI, -apple-system, BlinkMacSystemFont, Roboto,Helvetica Neue, sans-serif\",\r\n\r\n fontStyle: \"normal\",\r\n fontWeight: 400,\r\n fontSize: 14,\r\n lineHeight: 20,\r\n\r\n color: \"#171717\",\r\n\r\n flex: \" none\",\r\n order: \"0\",\r\n alignSelf: \"stretch\",\r\n flexGrow: \"0\",\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport \"./GcsErrorBannerComponent.scss\";\r\n\r\nimport { BannerType, GcsBannerKeys, GcsBannerKeysRoot } from \"../../Constants\";\r\nimport { MessageBar, MessageBarType } from \"@fluentui/react\";\r\nimport React, { useState } from \"react\";\r\n\r\nimport { CustomBannerArgs } from \"../../interfaces/customBanner\";\r\nimport { GcsErrorBannerStyles } from \"./GcsErrorBannerComponentStyle\";\r\nimport { trackEvent } from \"../../services/telemetry/TelemetryService\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const GcsErrorBannerComponent: React.FunctionComponent = () => {\r\n const { t } = useTranslation();\r\n const [isBannerEnable, setIsBannerEnable] = useState(false);\r\n const [bannerMessage, setBannerMessage] = useState(\r\n t(`${GcsBannerKeysRoot}.${GcsBannerKeys.DefaultMessage}`) as string\r\n );\r\n\r\n const handleNewMessage = (event: any) => {\r\n const customBannerArgs: CustomBannerArgs = event.detail;\r\n setIsBannerEnable(customBannerArgs.visibilityFlag);\r\n\r\n if (customBannerArgs.bannerMessage) {\r\n setBannerMessage(customBannerArgs.bannerMessage);\r\n }\r\n\r\n if (customBannerArgs.visibilityFlag) {\r\n const logProperties: any = {\r\n BannerType: BannerType.GcsErrorBanner,\r\n requestUrl: customBannerArgs.requestUrl,\r\n statusCode: customBannerArgs.statusCode,\r\n apiStatus: customBannerArgs.apiStatus,\r\n };\r\n trackEvent(BannerType.GcsErrorBanner, logProperties);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(BannerType.GcsErrorBanner, handleNewMessage);\r\n\r\n return () => {\r\n window.removeEventListener(BannerType.GcsErrorBanner, handleNewMessage);\r\n };\r\n }, []);\r\n\r\n const errorBanner = (\r\n \r\n \r\n \r\n );\r\n\r\n return
{isBannerEnable && errorBanner}
;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\nexport const GcsGlobalErrorIconSvg: React.FC = () => {\r\n const [iconSize, setIconSize] = useState({\r\n width: \"\",\r\n height: \"\",\r\n });\r\n\r\n useEffect(() => {\r\n if (window.innerWidth < 768) {\r\n setIconSize({\r\n width: \"120\",\r\n height: \"105\",\r\n });\r\n } else {\r\n setIconSize({\r\n width: \"195\",\r\n height: \"167\",\r\n });\r\n }\r\n }, []);\r\n\r\n const GlobalErrorIcon = (width: string, height: string) => {\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 \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 const iconElement = iconSize.width === \"\" ? null : GlobalErrorIcon(iconSize.width, iconSize.height);\r\n return iconElement;\r\n};\r\n\r\nexport default GcsGlobalErrorIconSvg;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport \"./GcsErrorComponent.scss\";\r\n\r\nimport {\r\n BannerType,\r\n ErrorPageTranslationKeys,\r\n ErrorPageTranslationRoot,\r\n} from \"../../Constants\";\r\n\r\nimport GcsGlobalErrorIconSvg from \"./GcsGlobalErrorIconSvg\";\r\nimport { IDownTimeInfo } from \"../../interfaces/errorComponentProps\";\r\nimport React from \"react\";\r\nimport { SystemName } from \"../../interfaces/errorPage\";\r\nimport { disableGCSCustomBanner } from \"../../utilities/applicationUtils\";\r\nimport { trackEvent } from \"../../services/telemetry/TelemetryService\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const GcsErrorComponent: React.FunctionComponent = ({\r\n serviceName,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const headingText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.WeWillBeBackSoon}`\r\n ) as string;\r\n\r\n const descriptionText = t(\r\n `${ErrorPageTranslationRoot}.${ErrorPageTranslationKeys.SomethingWentWrong}`\r\n );\r\n\r\n if (serviceName) {\r\n const logProperties = {\r\n BannerType: BannerType.GcsErrorPage,\r\n serviceName: serviceName,\r\n };\r\n trackEvent(BannerType.GcsErrorPage, logProperties);\r\n\r\n if (serviceName === SystemName.Icims) {\r\n disableGCSCustomBanner();\r\n }\r\n }\r\n\r\n return serviceName ? (\r\n
\r\n \r\n

\r\n {headingText}\r\n

\r\n
{descriptionText}
\r\n
\r\n ) : null;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\nimport { useMemo } from \"react\";\r\nimport { CandidateIdManager } from \"../../services/auth/utils/CandidateIdManager\";\r\nimport { configureUserDetails } from \"../../services/auth/utils/utilities\";\r\nimport { config } from \"../../services/config\";\r\n\r\n\r\nexport const useProfile = () => {\r\n const isAuthenticated = useIsAuthenticated();\r\n const { accounts } = useMsal();\r\n\r\n if (accounts.length > 0) {\r\n configureUserDetails(accounts[0])\r\n }\r\n\r\n const user = useMemo(() => {\r\n if (isAuthenticated) {\r\n const candidateInfo = CandidateIdManager.GetCandidateDetails();\r\n return {\r\n email: config?.userProfile?.email,\r\n isExternal: config?.userProfile?.isExternal,\r\n firstName: candidateInfo?.CandidateFirstName,\r\n lastName: candidateInfo?.CandidateLastName,\r\n legalFirstName: candidateInfo?.CandidatePreferredFirstName\r\n }\r\n }\r\n }, [isAuthenticated, config.userProfile])\r\n\r\n return user;\r\n\r\n}","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { useEffect, useContext, useMemo } from \"react\";\r\nimport { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\nimport { useHistory, useLocation } from \"react-router\";\r\n\r\nimport {\r\n AllMicrosoftAction,\r\n CheckLoginContext,\r\n IsCleanLogout,\r\n Locales,\r\n OpenInNewTab,\r\n SearchJobsEnglish,\r\n SearchJobsFrench,\r\n UHFHeaderLinksClassName,\r\n} from \"../constants\";\r\nimport {\r\n trackEvent,\r\n trackException,\r\n} from \"../../services/telemetry/TelemetryService\";\r\nimport { FlightingContext } from \"../../services/flighting\";\r\nimport { useProfile } from \"../../utilities/hooks/useProfile\";\r\n\r\nimport \"./header.scss\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { AvailableLangs, languagesConfig } from \"../../utilities/i18n.helper\";\r\nimport { ProfilePathName, SearchPathName } from \"../staticLinks\";\r\nimport { baseHeader, vNextHeader } from \"../../Constants\";\r\nimport { handleShellSignOut } from \"../../utilities/applicationUtils\";\r\n\r\ninterface HeaderProps {\r\n body: string;\r\n candidateProfile: Record | undefined;\r\n}\r\n\r\nexport const Header: React.FC = ({ body, candidateProfile }) => {\r\n const isAuthenticated = useIsAuthenticated();\r\n const { instance } = useMsal();\r\n const { isFlighted } = useContext(FlightingContext);\r\n const user = useProfile();\r\n const history = useHistory();\r\n const { i18n } = useTranslation();\r\n const domLocation = useLocation();\r\n\r\n const headerHTML = useMemo(() => {\r\n return {\r\n __html: body,\r\n };\r\n }, [body]);\r\n\r\n function handleSignOut(): void {\r\n try {\r\n handleShellSignOut(instance, true)\r\n } catch (error: any) {\r\n trackException(error);\r\n }\r\n }\r\n\r\n const shellOptions = useMemo(() => {\r\n if (isFlighted && isAuthenticated && candidateProfile?.CandidateFirstName) {\r\n const {\r\n CandidateFirstName: firstName = \"\",\r\n CandidateLastName: lastName = \"\",\r\n CandidatePreferredFirstName: preferredFirstName = \"\",\r\n CandidatePreferredLastName: preferredLastName = \"\",\r\n } = candidateProfile;\r\n return {\r\n meControlOptions: {\r\n apiGeneration: \"GEN2\",\r\n authProviderConfig: {\r\n type: \"partnerManaged\",\r\n appSignInUrl: \"\",\r\n appSignInToUrl: \"\",\r\n appSignOutUrl: \"\",\r\n appSwitchUrl: \"\",\r\n appSwitchToUrl: \"\",\r\n signOutFromApp: handleSignOut,\r\n signIn: \"signIn\",\r\n msa: {},\r\n aad: {},\r\n },\r\n currentAccount: {\r\n type: \"msa\",\r\n authenticatedState: \"signedIn\",\r\n memberName: candidateProfile?.CandidateEmail,\r\n firstName: preferredFirstName || firstName,\r\n lastName: preferredLastName || lastName,\r\n displayName: `${firstName} ${lastName}`,\r\n },\r\n },\r\n };\r\n }\r\n }, [isAuthenticated, isFlighted, user, candidateProfile]);\r\n\r\n useEffect(() => {\r\n if (shellOptions?.meControlOptions?.currentAccount?.memberName) {\r\n if (window && window?.msCommonShell) {\r\n window.msCommonShell?.load(shellOptions);\r\n } else {\r\n window.onShellReadyToLoad = function () {\r\n window.onShellReadyToLoad = null;\r\n window?.msCommonShell?.load(shellOptions);\r\n };\r\n }\r\n const interval = setInterval(() => {\r\n const profileLink = document.querySelector(\r\n \"a#mectrl_\"\r\n ) as HTMLAnchorElement;\r\n if (profileLink) {\r\n clearInterval(interval);\r\n profileLink.setAttribute(\"target\", \"_self\");\r\n profileLink.setAttribute(\"href\", \"#\");\r\n profileLink.onclick = (event) => {\r\n event.preventDefault();\r\n history.push(\r\n `/${\r\n languagesConfig[i18n.language as AvailableLangs].route\r\n }${ProfilePathName}`\r\n );\r\n };\r\n /* set focus on My profile button instead of me control image */\r\n const profileBtn = document.querySelector(\r\n \"#mectrl_main_trigger\"\r\n ) as HTMLAnchorElement;\r\n const profileInnerImage = document.querySelector(\r\n \"#mectrl_currentAccount_picture\"\r\n );\r\n profileBtn.addEventListener(\"click\", () => {\r\n profileInnerImage?.setAttribute(\"tabindex\", \"-1\");\r\n profileInnerImage?.removeAttribute(\"aria-label\");\r\n profileInnerImage?.removeAttribute(\"href\");\r\n setTimeout(() => profileLink.focus(), 200);\r\n });\r\n }\r\n }, 500);\r\n }\r\n }, [shellOptions, headerHTML]);\r\n\r\n useEffect(() => {\r\n const allMs: any = document.querySelectorAll(AllMicrosoftAction);\r\n if (allMs && allMs.length !== 0) {\r\n allMs[0].style.display = \"none\";\r\n }\r\n\r\n if (!isFlighted) {\r\n const headerAnchorElements = document.getElementsByClassName(\r\n UHFHeaderLinksClassName\r\n );\r\n for (let i = 0; i < headerAnchorElements.length; i++) {\r\n headerAnchorElements[i].addEventListener(\"click\", universalHeaderEvent);\r\n }\r\n if (headerAnchorElements.length === 0) {\r\n const logProperties = {\r\n ClassNameUsedInCode: UHFHeaderLinksClassName,\r\n };\r\n trackEvent(\"UHF Header links class name change alert\", logProperties);\r\n }\r\n }\r\n\r\n const skipToMain = document?.getElementById(\"uhfSkipToMain\");\r\n const mainContainer = document?.querySelector(\"main#main-content\");\r\n if (skipToMain) {\r\n skipToMain?.setAttribute(\"data-href\", \"#main-content\");\r\n /* x-hidden class hiding the skip to main from uhf */\r\n skipToMain?.classList?.remove(\"x-hidden\");\r\n skipToMain.onclick = () => {\r\n const focusableElements: NodeListOf | undefined =\r\n mainContainer?.querySelectorAll(\r\n 'button, a[href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n if (focusableElements && focusableElements.length) {\r\n (focusableElements[0] as HTMLElement)?.focus();\r\n }\r\n };\r\n }\r\n\r\n /* handle signin click */\r\n const singInButtonClick = () => {\r\n const isCleanlogout = JSON.parse(\r\n localStorage.getItem(IsCleanLogout) ?? \"false\"\r\n );\r\n if (isCleanlogout) {\r\n const redirectUrl = domLocation.search\r\n ? `${window.location.origin}${domLocation.pathname}${domLocation.search}`\r\n : `${window.location.href}`;\r\n\r\n const loginEvent = new CustomEvent(CheckLoginContext, {\r\n detail: { url: redirectUrl },\r\n });\r\n window.dispatchEvent(loginEvent);\r\n }else{\r\n handleSignOut()\r\n }\r\n };\r\n\r\n const signIn = document.querySelector(\r\n \"div.msame_Header\"\r\n ) as HTMLButtonElement;\r\n if (signIn) {\r\n signIn.onclick = () => {\r\n singInButtonClick();\r\n };\r\n signIn.addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Enter\") {\r\n singInButtonClick();\r\n }\r\n });\r\n }\r\n\r\n /*override default search behaviour of search box provided by UHF */\r\n const searchBoxIcon = document.getElementById(\"search\");\r\n if (searchBoxIcon) {\r\n const parentNode = searchBoxIcon.parentNode;\r\n const clonedSearchBoxNode = searchBoxIcon.cloneNode(true);\r\n if (parentNode) {\r\n parentNode.replaceChild(clonedSearchBoxNode, searchBoxIcon);\r\n clonedSearchBoxNode.addEventListener(\"click\", searchUHFHeaderEvent);\r\n }\r\n\r\n const childNodes = clonedSearchBoxNode.childNodes;\r\n childNodes.forEach((node) => {\r\n if (\r\n i18n.language === Locales.fr_ca &&\r\n node.textContent &&\r\n node.textContent.toLocaleLowerCase() ===\r\n SearchJobsEnglish.toLocaleLowerCase()\r\n ) {\r\n node.textContent = SearchJobsFrench;\r\n }\r\n });\r\n }\r\n\r\n /*To add role for sign in button. Remove it once the role is added iby UHF.*/\r\n\r\n const signInText = document.querySelector(\r\n \"div.msame_Header\"\r\n ) as HTMLDivElement;\r\n signInText?.setAttribute(\"role\", \"button\");\r\n }, [body]);\r\n\r\n /**\r\n * universalHeaderEvent enables UHF Header links to open in new tab when particular UHF\r\n * Link is clicked, It is introduced as uhf is not enabling us to open links in new tab\r\n * Bug ID : 7065933\r\n */\r\n function universalHeaderEvent(sender: any) {\r\n sender.preventDefault();\r\n const anchorLink = sender.target.getAttribute(\"href\");\r\n window.open(anchorLink, OpenInNewTab);\r\n }\r\n\r\n const searchUHFHeaderEvent = (event: Event) => {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n const searchUrl = `/${\r\n languagesConfig[i18n.language as AvailableLangs].route\r\n }${SearchPathName}`;\r\n if (\r\n searchUrl !== history.location.pathname ||\r\n (searchUrl === history.location.pathname && window.location.search !== \"\")\r\n ) {\r\n history.push(searchUrl);\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 * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { config } from \"./config\";\r\nimport { trackException } from \"./telemetry/TelemetryService\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nexport async function callActionCenterAPI(apiPath: string, accessToken: string) {\r\n const headers = new Headers();\r\n const bearer = `Bearer ${accessToken}`;\r\n headers.append(\"Authorization\", bearer);\r\n headers.append(\"X-CorrelationId\", config.telemetry.sessionId);\r\n headers.append(\"X-SubCorrelationId\", uuidv4());\r\n const options = {\r\n method: \"GET\",\r\n headers: headers,\r\n };\r\n const apiUrl = config.actionCenterApi.baseUrl + apiPath;\r\n\r\n return await fetch(apiUrl, options)\r\n .then((response) => response.json())\r\n .catch((error) => trackException(error));\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n */\r\n\r\nimport { getUserCountry, getUserType } from \"../utils/utilities\";\r\n\r\nimport { callActionCenterAPI } from \"../../acServicesApi\";\r\nimport { config } from \"../../config\";\r\n\r\nexport const getFeatureFlag = async (featureFlagName: string, accessToken: string, isAem?: boolean): Promise => {\r\n const flightsEndpoint = config.actionCenterApi.flightingApiPath\r\n .replace(\"{featureText}\", featureFlagName)\r\n .replace(\"{country}\", getUserCountry(isAem) || \"NA\")\r\n .replace(\"{type}\", getUserType());\r\n const response = await callActionCenterAPI(flightsEndpoint, accessToken);\r\n return response;\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { createContext, useContext, useEffect, useState } from \"react\";\r\n\r\nimport { ContextProps, Props } from \"./index.types\";\r\nimport { getFeatureFlag } from \"../auth/hooks/featureFlagsUtil\";\r\nimport { RecommendationExperienceFeature } from \"../../components/constants\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { AuthenticationResult } from \"@azure/msal-browser\";\r\nimport { loginRequest } from \"../config\";\r\nimport { LoginContext } from \"../auth/loginContext\";\r\n\r\nexport const FeatureFlagContext = createContext({\r\n isRecommendationExperienceFeatureEnabled: false,\r\n isRecommendationLoading: true,\r\n});\r\n\r\nexport default function FeatureFlagProvider({ children }: Props) {\r\n const [isRecommendationExperienceFeatureEnabled, setIsRecommendationExperienceFeatureEnabled] =\r\n useState(false);\r\n const [isLoading] = useState(true);\r\n const { instance, accounts } = useMsal();\r\n const { candidateCountry } = useContext(LoginContext);\r\n\r\n useEffect(() => {\r\n if (accounts.length > 0 && candidateCountry) {\r\n instance\r\n .acquireTokenSilent({\r\n ...loginRequest,\r\n account: instance.getAllAccounts()[0],\r\n })\r\n .then((response: AuthenticationResult) => {\r\n getFeatureFlag(`${RecommendationExperienceFeature}`, response.accessToken).then((response) => {\r\n if (response && response?.result) {\r\n const { result } = response;\r\n\r\n if (result[RecommendationExperienceFeature]) {\r\n setIsRecommendationExperienceFeatureEnabled(result[RecommendationExperienceFeature]);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }, [accounts, candidateCountry]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { trackEvent, trackException, trackMetric } from \"../../services/telemetry/TelemetryService\";\r\n\r\nimport { SearchLoadingEvent } from \"../../Constants\";\r\nimport { IElement } from \"../../types/Element\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport React, { useContext } from \"react\";\r\nimport { SpinnerComponent } from \"../../components/spinner/SpinnerComponent\";\r\nimport axios from \"axios\";\r\nimport { toInteger } from \"lodash\";\r\nimport { useMountedRef } from \"../../utilities/hooks/useMountedRef\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useJobSearchTranslation } from \"./useJobSearchTranslation\";\r\nimport { JobSearchRoutes, JobSearchProps, Asset } from \"./Index.types\";\r\nimport { useSearchNavigationEvent } from \"./useSearchNavigationEvent\";\r\nimport { useShellNavigation } from \"./useNavigateShell\";\r\nimport { FeatureFlagContext } from \"../../services/feature-flag\";\r\n\r\nconst appName = \"search\";\r\nexport const JobSearchExperience: React.FC = (props) => {\r\n const { texts } = useJobSearchTranslation();\r\n const [isJobSearchSpinnerVisible, setIsJobSearchSpinnerVisible] = React.useState(true);\r\n const [manifestAssets, setManifestAssets] = React.useState();\r\n const [scriptsLoaded, setScriptsLoaded] = React.useState(false);\r\n let searchWebAppLoadTimeStamp: any = new Date();\r\n const instance: IElement = React.useRef();\r\n const mounted = useMountedRef();\r\n const { i18n } = useTranslation();\r\n const HTTP_TIMEOUT = 10000;\r\n const MAX_RETRY_COUNT = 7;\r\n const RETRY_INTERVAL = 5;\r\n const JobSearchExperienceURI = process.env.REACT_APP_JOBSEARCH_EXPERIENCE_URI;\r\n const { isRecommendationExperienceFeatureEnabled } =\r\n useContext(FeatureFlagContext);\r\n React.useEffect(() => {\r\n const wait = (ms: any) => new Promise((res) => setTimeout(res, ms));\r\n const axiosInstance = axios.create({\r\n timeout: HTTP_TIMEOUT,\r\n });\r\n function loadAssetManifest(retryCount: number) {\r\n axiosInstance.get(`${JobSearchExperienceURI}/asset-manifest.json`).then(\r\n (response: { data: any }) => {\r\n const data = response.data;\r\n if (mounted.current) {\r\n const assets = [];\r\n for (const property in data) {\r\n const asset: Asset = {\r\n name: property,\r\n src: `${JobSearchExperienceURI}/${data[property]}`,\r\n };\r\n assets.push(asset);\r\n }\r\n setManifestAssets(assets);\r\n }\r\n },\r\n async (error: any) => {\r\n //log only once\r\n trackEvent(`Asset manifest retry attempt ${retryCount}.`);\r\n const errorMessage = `Error occured while loading artifacts:${JSON.stringify(error)}`;\r\n const ex: IExceptionTelemetry = {\r\n exception: {\r\n name: \"Error while Search Web App manifest loading\",\r\n message: errorMessage,\r\n },\r\n };\r\n if (retryCount > MAX_RETRY_COUNT) {\r\n trackException(ex);\r\n trackEvent(\"Retry exceeded for asset manifest loading.\");\r\n //set Error Screen here later to stop spinner\r\n throw ex; //in case if we want to show an error page later\r\n }\r\n //exponentially back off at 10,20,30s....50s intervals\r\n retryCount++;\r\n await wait(retryCount * 2 * RETRY_INTERVAL * 1000);\r\n loadAssetManifest(retryCount);\r\n }\r\n );\r\n }\r\n loadAssetManifest(0);\r\n }, []);\r\n\r\n const addScriptToHeader = (scriptSource: string) => {\r\n if (scriptSource) {\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = scriptSource;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n }\r\n };\r\n\r\n const addStyleToHeader = (styleSource: string) => {\r\n if (styleSource) {\r\n const styleTag = document.createElement(\"link\");\r\n styleTag.href = styleSource;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.type = \"text/css\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(styleTag);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!scriptsLoaded && manifestAssets) {\r\n // Add these three scripts in the recommended order.\r\n const runtimeScript = manifestAssets.find((asset) => asset.name === \"runtime.js\");\r\n const vendorsScript = manifestAssets.find((asset) => asset.name === \"vendors.js\");\r\n const mainScript = manifestAssets.find((asset) => asset.name === \"main.js\");\r\n if (runtimeScript && vendorsScript && mainScript) {\r\n {\r\n addScriptToHeader(runtimeScript.src);\r\n addScriptToHeader(vendorsScript.src);\r\n addScriptToHeader(mainScript.src);\r\n }\r\n\r\n // Add remaining Scripts and Stylesheets.\r\n manifestAssets.forEach((element) => {\r\n if (\r\n element.name.endsWith(\".js\") &&\r\n element.name !== \"main.js\" &&\r\n element.name !== \"runtime.js\" &&\r\n element.name !== \"vendors.js\"\r\n ) {\r\n addScriptToHeader(element.src);\r\n } else if (element.name.endsWith(\".css\")) {\r\n addStyleToHeader(element.src);\r\n }\r\n });\r\n setScriptsLoaded(true);\r\n trackEvent(\"SearchWebApp scripts and stylesheet files loaded and added to DOM\");\r\n }\r\n }\r\n\r\n return () => {\r\n const deps = document.querySelectorAll(`[data-app=${appName}]`);\r\n if (deps.length) {\r\n deps.forEach((dep) => {\r\n dep.remove();\r\n });\r\n }\r\n };\r\n }, [manifestAssets]);\r\n\r\n React.useEffect(() => {\r\n const handleSpinner = (event: any) => {\r\n setIsJobSearchSpinnerVisible(event.detail);\r\n };\r\n window.addEventListener(SearchLoadingEvent, handleSpinner);\r\n return () => {\r\n window.removeEventListener(SearchLoadingEvent, handleSpinner);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isJobSearchSpinnerVisible) {\r\n dispatchLangEvent(i18n.language);\r\n //application loded;\r\n RegisterSearchWebAppAppLoad();\r\n }\r\n }, [isJobSearchSpinnerVisible, i18n.language]);\r\n\r\n function RegisterSearchWebAppAppLoad() {\r\n searchWebAppLoadTimeStamp = new Date();\r\n }\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"beforeSearchWebAppUnload\", logBeforeSearchWebAppUnload);\r\n return () => {\r\n window.removeEventListener(\"beforeSearchWebAppUnload\", logBeforeSearchWebAppUnload);\r\n };\r\n }, []);\r\n\r\n function logBeforeSearchWebAppUnload() {\r\n const unloadTimeStamp: any = new Date();\r\n //UTP tracks every activity in the page including mouse movement and udpates the time stamp in local storage !!\r\n // we could use it to accurately measure last user activity even if user leaves seeion open for long.\r\n const lastActivityTime = toInteger(localStorage.getItem(\"utp.last.activity.time\") || unloadTimeStamp);\r\n const timeSpent = (lastActivityTime - searchWebAppLoadTimeStamp) / 1000;\r\n trackMetric({\r\n name: \"JobSearchExperienceSessionDuration\",\r\n average: timeSpent,\r\n sampleCount: 1,\r\n });\r\n }\r\n\r\n function dispatchLangEvent(dispatchLang: string) {\r\n const i18nLangEvent = new CustomEvent(\"changeSearchLanguage\", {\r\n detail: {\r\n lng: dispatchLang,\r\n },\r\n });\r\n window.dispatchEvent(i18nLangEvent);\r\n }\r\n useSearchNavigationEvent();\r\n useShellNavigation();\r\n return (\r\n
\r\n {props.routeType.includes(JobSearchRoutes.search) && isJobSearchSpinnerVisible && (\r\n \r\n )}\r\n {props.routeType.includes(JobSearchRoutes.job) && isJobSearchSpinnerVisible && (\r\n \r\n )}\r\n {props.routeType.includes(JobSearchRoutes.savedjobs) && isJobSearchSpinnerVisible && (\r\n \r\n )}\r\n {props.routeType.includes(JobSearchRoutes.alerts) && isJobSearchSpinnerVisible && (\r\n \r\n )}\r\n { isRecommendationExperienceFeatureEnabled && props.routeType.includes(JobSearchRoutes.recommendedjobs) && isJobSearchSpinnerVisible && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nexport enum AuthProvider {\r\n google = \"google.com\",\r\n facebook = \"facebook.com\",\r\n live = \"live.com\",\r\n microsoftFte = \"microsoft.onmicrosoft.com\",\r\n linkedIn = \"linkedin.com\",\r\n}\r\n\r\nexport const SocialAuthProvider = {\r\n [AuthProvider.google]: \"google\",\r\n [AuthProvider.facebook]: \"facebook\",\r\n [AuthProvider.live]: \"microsoft-live\",\r\n [AuthProvider.microsoftFte]: \"microsoft-azuread\",\r\n [AuthProvider.linkedIn]: \"linkedin\",\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { IJobSearchTranslation } from \"./Index.types\";\r\n\r\nexport const useJobSearchTranslation = (): IJobSearchTranslation => {\r\n const { t } = useTranslation();\r\n return {\r\n texts: {\r\n SearchExperienceLoading: t(\"SearchWebApp.SearchExperienceLoading\"),\r\n JobDetailsLoading: t(\"SearchWebApp.JobDetailsLoading\"),\r\n SavedJobsLoading: t(\"SearchWebApp.SavedJobsLoading\"),\r\n AlertsLoading: t(\"SearchWebApp.AlertsLoading\"),\r\n RecommendedJobsLoading:t(\"SearchWebApp.RecommendedJobsLoading\")\r\n },\r\n };\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\nimport { SearchNavigationTrigger } from \"../../Constants\";\r\nimport { JobSearchRoutes } from \"./Index.types\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\n\r\nexport const isSearchRoute = (routeType: string): boolean =>\r\n routeType.includes(JobSearchRoutes.search) ||\r\n routeType.includes(JobSearchRoutes.job) ||\r\n routeType.includes(JobSearchRoutes.savedjobs) ||\r\n routeType.includes(JobSearchRoutes.alerts) ;\r\n\r\nexport const useSearchNavigationEvent = (): void => {\r\n const [callbackRegistered, setCallbackRegistered] = React.useState(false);\r\n const history = useHistory();\r\n React.useEffect(() => {\r\n if (!callbackRegistered) {\r\n const unlisten = history.listen((argLocation) => {\r\n if (history.action !== \"POP\") {\r\n const searchNavigationTriggerEvent = new CustomEvent(SearchNavigationTrigger, {\r\n detail: `${argLocation.pathname}${argLocation.search}`,\r\n });\r\n window.dispatchEvent(searchNavigationTriggerEvent);\r\n }\r\n });\r\n setCallbackRegistered(true);\r\n return () => {\r\n unlisten();\r\n };\r\n }\r\n }, [history]);\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport * as React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport const useShellNavigation = () => {\r\n const history = useHistory();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const navigateShell = (args: any) => {\r\n const fullPathName = `${history.location.pathname}${history.location.search}`;\r\n if (fullPathName !== args.detail) {\r\n history.replace(args.detail);\r\n }\r\n };\r\n React.useEffect(() => {\r\n window.addEventListener(\"NavigateShell\", navigateShell);\r\n return () => {\r\n window.removeEventListener(\"NavigateShell\", navigateShell);\r\n };\r\n }, []);\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport React, { useRef } from \"react\";\r\n\r\nimport \"./login.scss\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { LoginCardProps } from \"./login.types\";\r\nimport { FontIcon } from \"@fluentui/react\";\r\n\r\nimport { Loginitems, RootLogin } from \"../constants\";\r\n\r\nexport const LoginCard: React.FunctionComponent = ({\r\n loginHandler,\r\n isMicrosoftEmployee,\r\n title,\r\n altResponsiveTitle,\r\n icon,\r\n domainHint,\r\n}) => {\r\n const hiddenFileInput = useRef(null);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const onKeyDownHandler = (event: any) => {\r\n if (event.keyCode === 13) {\r\n hiddenFileInput.current && hiddenFileInput.current?.click();\r\n }\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n
\r\n loginHandler(domainHint)}\r\n ref={hiddenFileInput}\r\n data-test-id=\"custom-element\"\r\n role=\"button\"\r\n onKeyDown={onKeyDownHandler}\r\n >\r\n \r\n
{title}
\r\n
\r\n \r\n {altResponsiveTitle}\r\n
\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\nimport { registerIcons } from \"@fluentui/react/lib/Styling\";\r\n\r\nregisterIcons({\r\n icons: {\r\n \"facebook-login-icon\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"linkedin-login-icon\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"google-login-icon\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"microsoft-login-icon\": (\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 { Stack } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { stackTokens } from \"../LoginModal.style\";\r\n\r\nexport const VerticalSeparatorStack = (props: { children: JSX.Element }) => (\r\n \r\n {React.Children.map(props.children, (child) => {\r\n return (\r\n \r\n {child}\r\n \r\n );\r\n })}\r\n \r\n);\r\n","import { Stack } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { stackTokens } from \"../LoginModal.style\";\r\n\r\nexport const HorizontalSeparatorStack = (props: { children: JSX.Element }) => (\r\n <>\r\n {React.Children.map(props.children, (child) => {\r\n return (\r\n \r\n {child}\r\n \r\n );\r\n })}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { ProgressIndicator } from \"@fluentui/react/lib/ProgressIndicator\";\r\nimport \"./login.scss\";\r\n\r\nconst intervalDelay = 100;\r\nconst intervalIncrement = 0.05;\r\n\r\nexport const ProgressIndicatorBasicExample: React.FunctionComponent = () => {\r\n const [percentComplete, setPercentComplete] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n const id = setInterval(() => {\r\n setPercentComplete((intervalIncrement + percentComplete) % 1);\r\n }, intervalDelay);\r\n return () => {\r\n clearInterval(id);\r\n };\r\n });\r\n\r\n return (\r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\nimport React, { useContext, useEffect, useState } from \"react\";\r\n\r\nimport {\r\n Modal,\r\n Stack,\r\n MessageBar,\r\n MessageBarType,\r\n Separator,\r\n} from \"@fluentui/react\";\r\nimport { IconButton } from \"@fluentui/react\";\r\nimport {\r\n cancelIcon,\r\n contentStyles,\r\n employeeStackItemStyles,\r\n iconButtonStyles,\r\n itemAlignmentsStackStyles,\r\n itemAlignmentsStackTokens,\r\n stackItemStyles,\r\n verticalStyle,\r\n} from \"./LoginModal.style\";\r\nimport \"./login.scss\";\r\nimport { config } from \"../../services/config\";\r\nimport { AuthProvider, SocialAuthProvider } from \"./authProvider\";\r\nimport { LoginContext } from \"../../services/auth/loginContext\";\r\nimport { useBoolean } from \"@fluentui/react-hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n AuthSessionId,\r\n Job,\r\n Jobs,\r\n Live,\r\n LoginIcons,\r\n Loginitems,\r\n microsoft,\r\n RootLogin,\r\n Search,\r\n} from \"../constants\";\r\nimport { LoginCard } from \"./LoginCard\";\r\nimport \"./loginIcons\";\r\nimport { VerticalSeparatorStack } from \"./separator/VerticalSeparator\";\r\nimport { HorizontalSeparatorStack } from \"./separator/HorizontalSeparatorStack\";\r\nimport {\r\n MicrosoftAccount,\r\n MicrosoftEmployeeAccount,\r\n SignInErrorCode,\r\n SocialAuthErrorMismatch,\r\n} from \"../../Constants\";\r\nimport { ProgressIndicatorBasicExample } from \"./ProgressIndicator\";\r\nimport { clearLoginCredential } from \"../../utilities/applicationUtils\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { trackEvent, trackException } from \"../../services/telemetry/TelemetryService\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport Cookies from 'js-cookie';\r\n\r\nexport const SignIn: React.FunctionComponent = () => {\r\n const { showLoginDialog, setLoginDialog, redirectionUrl } =\r\n useContext(LoginContext);\r\n const { instance } = useMsal();\r\n const [isModalOpen, { setFalse: hideModal }] = useBoolean(showLoginDialog);\r\n const [socialAuthMismatch, setSocialAuthMismatch] = useState(false);\r\n const [isSignInProgress, setIsSignInProgress] = useState(false);\r\n const [validSocialAuthMismatch, setValidSocialAuthMismatch] = useState(\"\");\r\n const [sessionToken, setSessionToken] = useState('');\r\n const { t } = useTranslation();\r\n const dismissModal = () => {\r\n setLoginDialog && setLoginDialog(false);\r\n hideModal();\r\n if (!redirectionUrl.includes(Search) && !redirectionUrl.includes(Job)) {\r\n if (redirectionUrl.includes(Jobs)) {\r\n window.location.href = `${process.env.REACT_APP_AEM_HOMEPAGE_URL}`;\r\n } else {\r\n history.back();\r\n }\r\n }\r\n };\r\n useEffect(()=>{\r\n trackEvent(\"Login page loaded\");\r\n const token = uuidv4();\r\n // Update the state with the generated token\r\n setSessionToken(token);\r\n // Set the cookie with httponly:faslse\r\n Cookies.set(AuthSessionId, token, { httpOnly: false ,domain:`${process.env.REACT_APP_CAREERS_SUBDOMAIN}`});\r\n },[])\r\n\r\n const getStateValue=()=>{\r\n const queryParams = [];\r\n\r\n if (redirectionUrl) {\r\n queryParams.push(`${redirectionUrl}`);\r\n }\r\n\r\n queryParams.push(`${AuthSessionId}=${sessionToken}`);\r\n\r\n const url = `${queryParams.join('|')}`;\r\n return url;\r\n }\r\n\r\n const createB2CAuthUrl = (domain_hint: string) => {\r\n return `${\r\n process.env.REACT_APP_MSAL_AUTHORITY\r\n }/oauth2/v2.0/authorize?client_id=${\r\n process.env.REACT_APP_MSAL_CLIENT_ID\r\n }&scope=${config.msalConfig.loginScopes[0]} ${\r\n config.msalConfig.loginScopes[1]\r\n }&redirect_uri=${encodeURIComponent(\r\n `${process.env.REACT_APP_AEM_AUTH_REDIRECTION_URL}`\r\n )}&response_mode=query&response_type=code&code_challenge=${\r\n process.env.REACT_APP_AEM_AUTH_CODE_CHALLENGE\r\n }&domain_hint=${domain_hint}&state=${encodeURIComponent(getStateValue())}`;\r\n };\r\n\r\n const loginHandler = (domainHint: string) => {\r\n trackEvent(\"login social auth click event\")\r\n try {\r\n switch (domainHint) {\r\n case SocialAuthProvider[AuthProvider.facebook]: \r\n trackEvent(\"Social auth provider selection \", { \r\n domain_hint: AuthProvider.facebook,\r\n })\r\n window.location.href = createB2CAuthUrl(AuthProvider.facebook);\r\n // window.location.href = process.env.REACT_APP_CAREERS_FB_AUTH_URL ||\"\" // uncomment to show banner for fb login issue.\r\n break;\r\n case SocialAuthProvider[AuthProvider.google]:\r\n trackEvent(\"Social auth provider selection \", { \r\n domain_hint: AuthProvider.google,\r\n })\r\n window.location.href = createB2CAuthUrl(AuthProvider.google);\r\n break;\r\n case SocialAuthProvider[AuthProvider.linkedIn]:\r\n trackEvent(\"Social auth provider selection \", { \r\n domain_hint: AuthProvider.linkedIn,\r\n })\r\n window.location.href = createB2CAuthUrl(AuthProvider.linkedIn);\r\n break;\r\n case SocialAuthProvider[AuthProvider.live]:\r\n trackEvent(\"Social auth provider selection \", { \r\n domain_hint: AuthProvider.live,\r\n })\r\n window.location.href = createB2CAuthUrl(AuthProvider.live);\r\n break;\r\n case SocialAuthProvider[AuthProvider.microsoftFte]:\r\n trackEvent(\"Social auth provider selection \", { \r\n domain_hint: AuthProvider.microsoftFte,\r\n })\r\n window.location.href = createB2CAuthUrl(AuthProvider.microsoftFte);\r\n break;\r\n default:\r\n break;\r\n }\r\n } catch (error: any) {\r\n const loginException: IExceptionTelemetry = {\r\n exception: new Error(\"Failure in login: \" + error?.message),\r\n severityLevel: 3, \r\n };\r\n trackException(loginException);\r\n \r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const loginErrorCode = new URL(window.location.href).searchParams.get(\r\n \"error_code\"\r\n ) as string;\r\n const socialAuth = new URL(window.location.href).searchParams.get(\r\n \"social_auth\"\r\n ) as string;\r\n if (\r\n loginErrorCode &&\r\n socialAuth &&\r\n loginErrorCode === SocialAuthErrorMismatch\r\n ) {\r\n clearLoginCredential();\r\n\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: `${\r\n window.location.href.split(\"?\")[0]\r\n }?error_code=1&social_auth=${socialAuth}`,\r\n });\r\n } else if (\r\n loginErrorCode &&\r\n socialAuth &&\r\n loginErrorCode === SignInErrorCode.SocialAuthMismatch\r\n ) {\r\n setSocialAuthMismatch(true);\r\n socialAuth.toLowerCase().includes(Live)\r\n ? setValidSocialAuthMismatch(MicrosoftAccount)\r\n : socialAuth.toLowerCase().includes(microsoft)\r\n ? setValidSocialAuthMismatch(MicrosoftEmployeeAccount)\r\n : setValidSocialAuthMismatch(socialAuth);\r\n }\r\n }, []);\r\n useEffect(() => {\r\n const loginErrorCode = new URL(window.location.href).searchParams.get(\r\n \"error_code\"\r\n ) as string;\r\n const socialAuth = new URL(window.location.href).searchParams.get(\r\n \"social_auth\"\r\n ) as string;\r\n if (\r\n loginErrorCode &&\r\n socialAuth &&\r\n loginErrorCode === SocialAuthErrorMismatch\r\n ) {\r\n clearLoginCredential();\r\n\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: `${\r\n window.location.href.split(\"?\")[0]\r\n }?error_code=1&social_auth=${socialAuth}`,\r\n });\r\n } else if (\r\n loginErrorCode &&\r\n socialAuth &&\r\n loginErrorCode === SignInErrorCode.SocialAuthMismatch\r\n ) {\r\n setSocialAuthMismatch(true);\r\n socialAuth.toLowerCase().includes(Live)\r\n ? setValidSocialAuthMismatch(MicrosoftAccount)\r\n : socialAuth.toLowerCase().includes(microsoft)\r\n ? setValidSocialAuthMismatch(MicrosoftEmployeeAccount)\r\n : setValidSocialAuthMismatch(socialAuth);\r\n }\r\n }, []);\r\n return (\r\n
\r\n \r\n {isSignInProgress && }\r\n
\r\n {\r\n trackEvent(\"Login modal close button click\")\r\n dismissModal();\r\n }}\r\n />\r\n
\r\n\r\n
\r\n {t(`${RootLogin}.${Loginitems.SignIn}`)}\r\n
\r\n {socialAuthMismatch && (\r\n \r\n {t(`${RootLogin}.${Loginitems.InvalidSocialAuthErrorMsg}`, {\r\n socialAuthProvider: validSocialAuthMismatch,\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 {t(`${RootLogin}.${Loginitems.OR}`)}\r\n \r\n \r\n \r\n \r\n \r\n <>\r\n {t(`${RootLogin}.${Loginitems.OR}`)}\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 * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport * as React from \"react\";\r\nimport { Stack } from \"@fluentui/react\";\r\n\r\nimport { SignIn } from \"./index\";\r\nimport { LoginProps } from \"./login.types\";\r\n\r\nexport const LoginWrapper: React.FunctionComponent = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import {\r\n INavStyleProps,\r\n INavStyles,\r\n IStyleFunctionOrObject,\r\n} from \"@fluentui/react\";\r\n\r\nexport const firstNavStyles: IStyleFunctionOrObject<\r\n INavStyleProps,\r\n INavStyles\r\n> = (props: INavStyleProps) => ({\r\n root: {\r\n display: \"flex\",\r\n width: \"70%\",\r\n overflowY: \"unset\",\r\n float: \"left\",\r\n minHeight: 70,\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n },\r\n group: {\r\n minWidth: 0,\r\n selectors: {\r\n \"@media screen and (min-width: 1120px)\": {\r\n transition: \"background-color ease-out .5s\",\r\n transitionProperty: \"background-color\",\r\n transitionDuration: \"0.5s\",\r\n transitionTimingFunction: \"ease-out\",\r\n transitionDelay: \"0s\",\r\n },\r\n \":hover\": {\r\n background: \"#464646\",\r\n color: \"#FFFFFF\",\r\n },\r\n },\r\n },\r\n chevronButton: {\r\n paddingLeft: 6,\r\n paddingRight: 28,\r\n borderBottom: \"none\",\r\n fontSize: 14,\r\n padding: \"unset\",\r\n margin: \"unset\",\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n fontFamily: \"inherit\",\r\n },\r\n chevronIcon: {\r\n right: 8,\r\n left: \"unset\",\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n paddingTop: 4,\r\n transform: props.isExpanded ? \"rotate(-180deg)\" : \"unset\",\r\n pointerEvents: \"none\",\r\n },\r\n groupContent: {\r\n display: \"block\",\r\n marginTop: 28,\r\n },\r\n navItem: {\r\n background: \"#2F2F2F\",\r\n },\r\n compositeLink: {\r\n selectors: {\r\n \":hover\": {\r\n background: \"#464646\",\r\n },\r\n },\r\n },\r\n link: {\r\n padding: \"16px 20px 16px 20px\",\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n backgroundColor: \"#464646\",\r\n selectors: {\r\n \":hover\": {\r\n backgroundColor: \"#464646 !important\",\r\n },\r\n },\r\n },\r\n linkText: {\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n fontSize: 14,\r\n margin: \"unset\",\r\n color: \"#FFFFFF\",\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n },\r\n});\r\n\r\nexport const secondNavStyles: IStyleFunctionOrObject<\r\n INavStyleProps,\r\n INavStyles\r\n> = (props: INavStyleProps) => ({\r\n root: {\r\n display: \"flex\",\r\n width: \"30%\",\r\n justifyContent: \"flex-end\",\r\n overflowY: \"unset\",\r\n minHeight: 70,\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n },\r\n group: {\r\n padding: \"24px 0px 24px 36px\",\r\n transition: \"background-color ease-out .5s\",\r\n transitionProperty: \"background-color\",\r\n transitionDuration: \"0.5s\",\r\n transitionTimingFunction: \"ease-out\",\r\n transitionDelay: \"0s\",\r\n selectors: {\r\n \":hover\": {\r\n background: \"#464646\",\r\n color: \"#FFFFFF\",\r\n },\r\n },\r\n },\r\n chevronButton: {\r\n paddingLeft: 6,\r\n paddingRight: 28,\r\n borderBottom: \"none\",\r\n fontSize: 14,\r\n padding: \"unset\",\r\n margin: \"unset\",\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n fontFamily: \"inherit\",\r\n },\r\n chevronIcon: {\r\n right: 8,\r\n left: \"unset\",\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n paddingTop: 4,\r\n transform: props.isExpanded ? \"rotate(-180deg)\" : \"unset\",\r\n pointerEvents: \"none\",\r\n },\r\n groupContent: {\r\n display: \"block\",\r\n marginTop: 27,\r\n minWidth: 100,\r\n width: 230,\r\n },\r\n navItems: {\r\n border: \"1px solid #f6f6f6\",\r\n },\r\n navItem: {\r\n background: \"#2F2F2F\",\r\n },\r\n compositeLink: {\r\n selectors: {\r\n \":hover\": {\r\n background: \"#f6f6f6\",\r\n },\r\n },\r\n },\r\n link: {\r\n padding: \"16px 20px 16px 20px\",\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: \"unset\",\r\n selectors: {\r\n \":hover\": {\r\n backgroundColor: \"#f6f6f6 !important\",\r\n },\r\n },\r\n },\r\n linkText: {\r\n height: \"unset\",\r\n lineHeight: \"unset\",\r\n fontSize: 14,\r\n margin: \"unset\",\r\n color: \"#2F2F2F\",\r\n fontFamily:\r\n \"'Segoe UI', 'Segoe UI Web (West European)', 'Segoe UI', '-apple-system', 'BlinkMacSystemFont', 'Roboto', 'Helvetica Neue', 'sans-serif'\",\r\n },\r\n});\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { useContext } from \"react\";\r\nimport { RouteConfig } from \"./SubNav.types\";\r\nimport { FeatureFlagContext } from \"../../../services/feature-flag\";\r\n\r\nexport const subNavConfig = (isExternal: boolean, isFrench: boolean): RouteConfig[] => {\r\n const { isRecommendationExperienceFeatureEnabled } = useContext(FeatureFlagContext);\r\n return [\r\n ...(!isExternal && isRecommendationExperienceFeatureEnabled && !isFrench\r\n ? [\r\n {\r\n path: \"/recommendedjobs\",\r\n text: \"recommendedjobs\",\r\n key: \"recommendedjobs\",\r\n icon: \"FavoriteStar\",\r\n },\r\n ]\r\n : []),\r\n ...(!isExternal\r\n ? [\r\n {\r\n path: \"/referrals\",\r\n text: \"Referrals\",\r\n key: \"referrals\",\r\n icon: \"TeamFavorite\",\r\n },\r\n ]\r\n : []),\r\n {\r\n path: \"/actioncenter\",\r\n text: \"ActionCenter\",\r\n key: \"actioncenter\",\r\n icon: \"FolderOpen\",\r\n },\r\n {\r\n path: \"/alerts\",\r\n text: \"JobAlerts\",\r\n key: \"jobalerts\",\r\n icon: \"Lightbulb\",\r\n },\r\n {\r\n path: \"/savedjobs\",\r\n text: \"SavedJobs\",\r\n key: \"savedjobs\",\r\n icon: \"DoubleBookmark\",\r\n },\r\n ];\r\n};\r\n\r\nexport const i18nSubNavMenu = \"SubNav\";\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { ICommandBarStyles } from \"@fluentui/react/lib/CommandBar\";\r\nimport { IContextualMenuItemStyles } from \"@fluentui/react/lib/ContextualMenu\";\r\nimport { IButtonProps, IButtonStyles } from \"@fluentui/react/lib/Button\";\r\nimport { concatStyleSets, getTheme } from \"@fluentui/react/lib/Styling\";\r\nimport { memoizeFunction } from \"@fluentui/react/lib/Utilities\";\r\n\r\nconst theme = getTheme();\r\n\r\nexport const commandBarStyles: ICommandBarStyles = {\r\n root: {\r\n height: \"40px\",\r\n paddingRight: \"0px\",\r\n },\r\n primarySet: {\r\n gap: \"16px\",\r\n },\r\n};\r\n\r\nconst itemStyles: Partial = {\r\n root: {\r\n height: \"38px\",\r\n position: \"relative\",\r\n zIndex: 1,\r\n },\r\n label: {\r\n fontSize: 13,\r\n },\r\n icon: { color: theme.palette.neutralDark },\r\n iconHovered: { color: theme.palette.black },\r\n};\r\n\r\nexport const getCommandBarButtonStyles = memoizeFunction(\r\n (originalStyles: IButtonStyles | undefined): Partial => {\r\n return !originalStyles ? itemStyles : concatStyleSets(originalStyles, itemStyles);\r\n }\r\n);\r\n\r\nexport const overflowProps: IButtonProps = {\r\n ariaLabel: \"More options\",\r\n menuProps: {\r\n styles: {\r\n subComponentStyles: { menuItem: itemStyles },\r\n },\r\n items: [],\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport * as React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport { CommandBar, ICommandBarItemProps } from \"@fluentui/react/lib/CommandBar\";\r\nimport { CommandBarButton } from \"@fluentui/react/lib/Button\";\r\n\r\nimport { i18nSubNavMenu } from \"./config\";\r\nimport { RouteConfig } from \"./SubNav.types\";\r\nimport { commandBarStyles, overflowProps, getCommandBarButtonStyles } from \"./subNav.styles\";\r\n\r\nimport \"./SubNav.scss\";\r\nimport { AvailableLangs, languagesConfig } from \"../../../utilities/i18n.helper\";\r\nimport { actionCenterPathName, recommendedJobsPath } from \"../../constants\";\r\nimport { trackPageAction } from \"../../../services/telemetry/analytics/AnalyticsPageEvent\";\r\nimport { AnalyticsConstants } from \"../../../services/telemetry/analytics/Constants\";\r\nimport { config } from \"../../../services/config\";\r\n\r\nconst SubNav: React.FC<{ data: RouteConfig[]; isAEM?: boolean }> = ({ data, isAEM = false }) => {\r\n const history = useHistory();\r\n const {\r\n location: { pathname = \"\" },\r\n } = history;\r\n const { t, i18n } = useTranslation();\r\n\r\n const items: ICommandBarItemProps[] = React.useMemo(() => {\r\n const langRoute = languagesConfig[i18n.language as AvailableLangs].route;\r\n return data?.map((item) => ({\r\n ...item,\r\n role: \"link\",\r\n text: t(`${i18nSubNavMenu}.${item.text}`),\r\n title: t(`${i18nSubNavMenu}.${item.text}`),\r\n iconProps: { iconName: item.icon },\r\n data: {\r\n isActive: pathname.includes(item.path),\r\n },\r\n /* Not appending country/lang params to actioncenter, if added it will break in ppe */\r\n onClick: () => {\r\n if (!isAEM) {\r\n if (item.path === recommendedJobsPath) {\r\n trackPageAction(\r\n AnalyticsConstants.LinkClickTag,\r\n AnalyticsConstants.RecommendedJobsHeaderClick,\r\n AnalyticsConstants.BehaviorId,\r\n config?.userProfile?.isExternal,\r\n AnalyticsConstants.RecommendedJobs,\r\n AnalyticsConstants.RecommendedJobs\r\n );\r\n }\r\n return history.push(`${item.path === actionCenterPathName ? item.path : `/${langRoute}${item.path}`}`);\r\n }\r\n return history.push(item.path);\r\n },\r\n }));\r\n }, [data, i18n.language, pathname]);\r\n React.useEffect(() => {\r\n const menuBarElement = document.getElementsByClassName(\"ms-FocusZone\")[0];\r\n if (menuBarElement) {\r\n menuBarElement.setAttribute(\"role\", \"group\");\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n
\r\n {\r\n props.role = \"link\";\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default SubNav;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport \"./Navbar.scss\";\r\n\r\nimport * as Constants from \"../../Constants\";\r\n\r\nimport {\r\n ActionCenterHomeURI,\r\n FlexibleWorkMenuFeatureFlag,\r\n Locales,\r\n NameUpdateEvent,\r\n OpenInNewTab,\r\n RootNavLocale,\r\n SubRootNavLocales,\r\n SubRootNavLocalesTitles,\r\n} from \"../constants\";\r\nimport { Fabric, INavLinkGroup, Nav, getWindow } from \"@fluentui/react\";\r\nimport { firstNavStyles, secondNavStyles } from \"./NavbarInBuiltStyle\";\r\nimport { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\n\r\nimport { ApplyModuleInvocationEvent } from \"../../ShellCustomEvents\";\r\nimport { Person } from \"../../interfaces/person\";\r\nimport React, { useContext } from \"react\";\r\nimport SubNav from \"./SubNav/SubNav\";\r\nimport { config } from \"../../services/config\";\r\nimport { configureUserDetails } from \"../../services/auth/utils/utilities\";\r\nimport { getFeatureFlag } from \"../../services/auth/hooks/featureFlagsUtil\";\r\nimport { getNavBarLinks } from \"../staticLinks\";\r\nimport { getQueryText } from \"../../utilities/applicationUtils\";\r\nimport { getToken } from \"../../services/auth/Msal\";\r\nimport { subNavConfig } from \"./SubNav/config\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useWindowWidth } from \"../useWindowWidth\";\r\nimport { LoginContext } from \"../../services/auth/loginContext\";\r\n\r\nconst isFlightCall = process.env.REACT_APP_IS_FLIGHT_CALL === \"true\";\r\n\r\nconst _window = getWindow();\r\nlet eventAdded = false;\r\n\r\nexport interface NavbarProps {\r\n isFlighted: boolean;\r\n isFlightLoading: boolean;\r\n isDownTimeVNextDisable: boolean;\r\n}\r\n\r\nconst NavbarCareersComponent: React.FunctionComponent = ({\r\n isFlightLoading,\r\n isFlighted,\r\n isDownTimeVNextDisable,\r\n}) => {\r\n const { t, i18n } = useTranslation();\r\n const { instance } = useMsal();\r\n const [profile, setProfile] = React.useState(null);\r\n const [name, setName] = React.useState(\"\");\r\n const [isActionCenterLinkEnabled, setIsActionCenterLinkEnabled] = React.useState(false);\r\n const [canExpand, setCanExpand] = React.useState(false);\r\n const [groupExpanded, setGroupExpanded] = React.useState({} as keyValuePair);\r\n const view = useWindowWidth();\r\n const [isFlexibleWorkMenuEnabled, setFlexibleWorkMenuFlag] = React.useState(false);\r\n const isAuthenticated = useIsAuthenticated();\r\n const { candidateId, candidateSocialAuthProvider } = useContext(LoginContext);\r\n\r\n if (instance.getAllAccounts().length > 0) {\r\n configureUserDetails(instance.getAllAccounts()[0]);\r\n }\r\n\r\n interface keyValuePair {\r\n [key: string]: string | boolean;\r\n }\r\n\r\n if (!eventAdded) {\r\n eventAdded = true;\r\n if (_window) {\r\n _window.addEventListener(\"click\", () => {\r\n setCanExpand(false);\r\n if (document.getElementsByClassName(\"responsive\").length > 0) {\r\n document.getElementsByClassName(\"ms-Nav\")[0].classList.toggle(\"responsive\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n let firstLocName = \"There\";\r\n if (profile) {\r\n firstLocName = name !== \"\" ? name : \"There\";\r\n }\r\n\r\n React.useEffect(() => {\r\n setProfile(config.userProfile);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handleApplyModuleEvent = (event: any) => {\r\n setIsActionCenterLinkEnabled(event.detail);\r\n };\r\n window.addEventListener(ApplyModuleInvocationEvent, handleApplyModuleEvent);\r\n\r\n return () => {\r\n window.removeEventListener(ApplyModuleInvocationEvent, handleApplyModuleEvent);\r\n };\r\n }, []);\r\n\r\n // Event handler to listen to candidate API success call\r\n React.useEffect(() => {\r\n const handleMessage = (event: any) => {\r\n const candidatePayload = event.detail;\r\n if (candidatePayload && candidatePayload.candidateId) {\r\n config.telemetry.candidateId = candidatePayload.candidateId;\r\n }\r\n setName(`${candidatePayload.firstName}`);\r\n };\r\n\r\n window.addEventListener(NameUpdateEvent, handleMessage);\r\n\r\n return () => {\r\n window.removeEventListener(NameUpdateEvent, handleMessage);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (isAuthenticated) {\r\n if (isFlightCall) {\r\n getToken(instance).then((token) => {\r\n getFeatureFlag(FlexibleWorkMenuFeatureFlag, token).then((response) => {\r\n const { result } = response;\r\n if (result && result[FlexibleWorkMenuFeatureFlag]) {\r\n setFlexibleWorkMenuFlag(result[FlexibleWorkMenuFeatureFlag]);\r\n }\r\n });\r\n });\r\n } else {\r\n setFlexibleWorkMenuFlag(true);\r\n }\r\n }\r\n }, [isAuthenticated]);\r\n\r\n const hiLinkGroupName =\r\n t(`${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Hi}`) +\r\n \", \" +\r\n firstLocName +\r\n \"!\";\r\n\r\n const shouldShowSubHeader = () => {\r\n return candidateId && candidateSocialAuthProvider !== \"None\";\r\n };\r\n\r\n /*\r\n * Handling expansion and collapse of the dropdowns in the Careers Header.\r\n * The \"Careers\" option becomes a drop-down in mobile view.\r\n */\r\n const onHeaderClick = (isCareerHeader: boolean, ev?: React.MouseEvent) => {\r\n const newGroupExpanded: keyValuePair = {};\r\n for (const key of Object.keys(groupExpanded)) {\r\n newGroupExpanded[key] = canExpand && groupExpanded[key] ? groupExpanded[key] : false;\r\n }\r\n\r\n // Keeping track of the careers header element value for english and french sites to enable proper toggling in mobile view.\r\n const careersLabel = document.getElementsByClassName(\"ms-Nav-chevronButton\")[0]?.textContent?.substring(1);\r\n\r\n if (isCareerHeader) {\r\n if (view.width > 1096) {\r\n window.open(_hrefs[0].url, \"_self\");\r\n } else {\r\n document.getElementsByClassName(\"ms-Nav\")[0].classList.toggle(\"responsive\");\r\n }\r\n }\r\n if (ev) {\r\n // Finding the target element that was clicked to expand/collapse.\r\n const eventTargetElem = ev.target as HTMLElement;\r\n let keyName = \"\";\r\n if (eventTargetElem.childNodes.length > 1) {\r\n keyName = eventTargetElem.childNodes[1].textContent!;\r\n } else {\r\n keyName = eventTargetElem.textContent!;\r\n }\r\n\r\n /*\r\n * Setting default value for indicating initial collapsed state of the clicked element.\r\n * This usually happens on the first click of the elements after page load.\r\n */\r\n if (typeof groupExpanded[keyName] === \"undefined\") {\r\n newGroupExpanded[keyName] = false;\r\n }\r\n\r\n /**\r\n * Collapsing Careers drop-down in mobile-view if the salutation element is clicked and the Careers dropdown is expanded\r\n * newGroupExpanded controls every dropdown state of things which have been clicked.\r\n * canExpand controls the expansion for every dropdown\r\n */\r\n if (keyName === hiLinkGroupName && !isCareerHeader && newGroupExpanded[careersLabel!]) {\r\n document.getElementsByClassName(\"ms-Nav\")[0].classList.toggle(\"responsive\");\r\n newGroupExpanded[careersLabel!] = false;\r\n }\r\n\r\n // Toggling expanded state of clicked element and collapsing all other elements.\r\n for (const key of Object.keys(newGroupExpanded)) {\r\n if (keyName === key) {\r\n newGroupExpanded[key] = !newGroupExpanded[key];\r\n } else {\r\n if (key !== careersLabel || careersLabel === `${SubRootNavLocales.Professionals}`) {\r\n newGroupExpanded[key] = false;\r\n }\r\n }\r\n }\r\n\r\n setGroupExpanded(newGroupExpanded);\r\n setCanExpand(true);\r\n ev.stopPropagation();\r\n }\r\n };\r\n const onRenderGroupHeader = (props: any, defaultRenderer: any) => {\r\n const links = canExpand && props.isExpanded && groupExpanded[props.name] ? props.links : [];\r\n return defaultRenderer({\r\n ...props,\r\n isExpanded: canExpand && groupExpanded[props.name],\r\n links: links,\r\n });\r\n };\r\n const queryString = getQueryText();\r\n const [frenchSiteClass, setFrenchClass] = React.useState(\"\");\r\n const [isFrenchSite, setIsFrenchSite] = React.useState(i18n.language === Locales.fr_ca);\r\n const _hrefs = getNavBarLinks(isFrenchSite, profile?.isExternal);\r\n /* -------------------------------------------------------------------------------------------------------\r\n * Note: Under some of the Keys, Names and URLs dummy name is kept which just acts as a placeholder *\r\n * but has no impact on the application or code since they are mandatory fields and could not be *\r\n * skipped *\r\n * ------------------------------------------------------------------------------------------------------*/\r\n const firstCommonNavLinkGroups: INavLinkGroup[] = [\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Careers}`),\r\n collapseAriaLabel: \"Careers\",\r\n links: [],\r\n collapseByDefault: true,\r\n onHeaderClick: (ev) => {\r\n onHeaderClick(true, ev);\r\n },\r\n },\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocalesTitles.Home}`),\r\n collapseAriaLabel: t(`${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocalesTitles.Home}`),\r\n collapseByDefault: true,\r\n links: [],\r\n onHeaderClick: () => {\r\n window.open(_hrefs[0].url, \"_self\");\r\n },\r\n },\r\n ...(!isFrenchSite\r\n ? [\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocales.Professionals}`),\r\n expandAriaLabel: \"Professionals Dropdown\",\r\n collapseAriaLabel: \"Professionals\",\r\n collapseByDefault: true,\r\n links:\r\n canExpand &&\r\n groupExpanded[t(`${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocales.Professionals}`)]\r\n ? [\r\n {\r\n key: \"label21\",\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocalesTitles.Home}`),\r\n ariaLabel: \"Home\",\r\n url: _hrefs[1].url,\r\n },\r\n {\r\n key: \"label22\",\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocalesTitles.Locations}`\r\n ),\r\n ariaLabel: \"Locations\",\r\n url: _hrefs[2].url,\r\n },\r\n {\r\n key: \"label23\",\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocalesTitles.Professions}`\r\n ),\r\n ariaLabel: \"Professions\",\r\n url: _hrefs[3].url,\r\n },\r\n {\r\n key: \"label24\",\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocalesTitles[\"US_Military_&_Veterans\"]}`\r\n ),\r\n ariaLabel: \"US Military and Veterans\",\r\n url: _hrefs[4].url,\r\n },\r\n ]\r\n : [],\r\n onHeaderClick: (ev: React.MouseEvent | undefined) => {\r\n onHeaderClick(false, ev);\r\n },\r\n },\r\n ]\r\n : [\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Professionals}.${SubRootNavLocales.Professionals}`),\r\n collapseAriaLabel: \"Professionals\",\r\n collapseByDefault: true,\r\n links: [],\r\n onHeaderClick: () => {\r\n window.open(_hrefs[1].url, \"_self\");\r\n },\r\n },\r\n ]),\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Students_and_graduates}`),\r\n collapseAriaLabel: \"Students & graduates\",\r\n collapseByDefault: true,\r\n links: [],\r\n onHeaderClick: () => {\r\n window.open(_hrefs[5].url, \"_self\");\r\n },\r\n },\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocales.Life_at_Microsoft}`),\r\n expandAriaLabel: \"Life at Microsoft Dropdown\",\r\n collapseAriaLabel: \"Life at Microsoft\",\r\n collapseByDefault: true,\r\n links:\r\n canExpand &&\r\n groupExpanded[\r\n t(`${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocales.Life_at_Microsoft}`)\r\n ]\r\n ? [\r\n {\r\n key: \"label41\",\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocalesTitles.Benefits}`),\r\n ariaLabel: \"Benefits\",\r\n url: _hrefs[6].url,\r\n },\r\n {\r\n key: \"label42\",\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocalesTitles.Culture}`),\r\n ariaLabel: \"Culture\",\r\n url: _hrefs[7].url,\r\n },\r\n {\r\n key: \"label43\",\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocalesTitles.Diversity_and_inclusion}`\r\n ),\r\n ariaLabel: \"Diversity and inclusion\",\r\n url: _hrefs[8].url,\r\n },\r\n ...(!isFrenchSite\r\n ? [\r\n {\r\n key: \"label44\",\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocalesTitles.Microsoft_Life}`\r\n ),\r\n ariaLabel: \"Microsoft Life\",\r\n url: _hrefs[9].url,\r\n target: OpenInNewTab,\r\n },\r\n ]\r\n : []),\r\n ...(isFlexibleWorkMenuEnabled\r\n ? [\r\n {\r\n key: \"label45\",\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.Life_at_Microsoft}.${SubRootNavLocalesTitles.Flexible_work}`\r\n ),\r\n ariaLabel: \"Flexible work\",\r\n url: profile?.isExternal ? _hrefs[15].url : _hrefs[17].url,\r\n },\r\n ]\r\n : []),\r\n ]\r\n : [],\r\n onHeaderClick: (ev) => {\r\n onHeaderClick(false, ev);\r\n },\r\n },\r\n ];\r\n\r\n React.useEffect(() => {\r\n setProfile(config.userProfile);\r\n }, []);\r\n //To prevent errors between toggling languages.\r\n React.useEffect(() => {\r\n if (i18n.language === Locales.fr_ca) {\r\n setCanExpand(false);\r\n setGroupExpanded({} as keyValuePair);\r\n setFrenchClass(\"frenchsite\");\r\n setIsFrenchSite(true);\r\n } else {\r\n setCanExpand(false);\r\n setGroupExpanded({} as keyValuePair);\r\n setFrenchClass(\"\");\r\n setIsFrenchSite(false);\r\n }\r\n }, [i18n.language]);\r\n\r\n const getHeadersForInternalEmployees = () => {\r\n if (!isFrenchSite || view.width < 1044 || (view.width > 1500 && isFrenchSite)) {\r\n return extraHeadersForInternalEmployees;\r\n } else {\r\n return [\r\n {\r\n name: `. . .`,\r\n expandAriaLabel: \"More Options\",\r\n collapseAriaLabel: \"More Options\",\r\n collapseByDefault: true,\r\n links:\r\n canExpand && groupExpanded[`. . .`]\r\n ? [\r\n {\r\n key: \"label41\",\r\n name: t(`${t(`${RootNavLocale}.${SubRootNavLocales.How_we_hire}`)}`),\r\n ariaLabel: `${t(`${RootNavLocale}.${SubRootNavLocales.How_we_hire}`)}`,\r\n url: _hrefs[14].url,\r\n },\r\n {\r\n key: \"label42\",\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Referrals}`),\r\n ariaLabel: t(`${RootNavLocale}.${SubRootNavLocales.Referrals}`),\r\n url: _hrefs[15].url,\r\n },\r\n ]\r\n : [],\r\n onHeaderClick: (ev: React.MouseEvent | undefined) => {\r\n onHeaderClick(false, ev);\r\n },\r\n },\r\n ];\r\n }\r\n };\r\n const extraHeadersForInternalEmployees = [\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.How_we_hire}`),\r\n collapseAriaLabel: \"How we hire\",\r\n collapseByDefault: true,\r\n links: [],\r\n onHeaderClick: () => {\r\n window.open(_hrefs[14].url, \"_self\");\r\n },\r\n },\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Referrals}`),\r\n collapseAriaLabel: \"Referrals\",\r\n collapseByDefault: true,\r\n links: [],\r\n onHeaderClick: () => {\r\n window.open(_hrefs[15].url, \"_self\");\r\n },\r\n },\r\n ];\r\n\r\n //Updating the logic for Nav internal links rendering due to async issue\r\n let firstNavLinkGroups = firstCommonNavLinkGroups;\r\n if (profile && profile.isExternal === false) {\r\n firstNavLinkGroups = firstCommonNavLinkGroups.concat(getHeadersForInternalEmployees());\r\n }\r\n\r\n const secondNavLinkGroups: INavLinkGroup[] = [\r\n {\r\n name: hiLinkGroupName,\r\n expandAriaLabel: \"Hi, \" + firstLocName + \" DropDown\",\r\n collapseAriaLabel: \"Hi, \" + firstLocName,\r\n collapseByDefault: true,\r\n links:\r\n canExpand && groupExpanded[hiLinkGroupName]\r\n ? [\r\n {\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Profile}`\r\n ),\r\n url: _hrefs[10].url,\r\n key: \"labeln11\",\r\n ariaLabel: \"Profile\",\r\n target: \"_self\",\r\n },\r\n {\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Job_alerts}`\r\n ),\r\n url: _hrefs[11].url,\r\n key: \"labeln12\",\r\n ariaLabel:\r\n \"2\" +\r\n t(\"of\") +\r\n \"3\" +\r\n t(\r\n `${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Job_alerts}`\r\n ),\r\n target: \"_self\",\r\n },\r\n {\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Action_center}`\r\n ),\r\n url: \"/\" + ActionCenterHomeURI + queryString,\r\n key: \"labeln13\",\r\n ariaLabel:\r\n \"1\" +\r\n t(\"of\") +\r\n \"3\" +\r\n t(\r\n `${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Action_center}`\r\n ),\r\n target: \"_self\",\r\n disabled: !isActionCenterLinkEnabled,\r\n },\r\n {\r\n name: t(\r\n `${RootNavLocale}.${SubRootNavLocales.user}.${SubRootNavLocales.SignedIn}.${SubRootNavLocalesTitles.Sign_out}`\r\n ),\r\n url: \"#/signout\",\r\n key: \"labeln14\",\r\n ariaLabel: \"Sign out\",\r\n onClick: (e: any) => {\r\n e.preventDefault();\r\n sessionStorage.removeItem(Constants.RequestQueryString);\r\n if (profile && profile.isExternal) {\r\n instance.logout({ postLogoutRedirectUri: _hrefs[14].url });\r\n } else if (profile && !profile.isExternal) {\r\n instance.logout({ postLogoutRedirectUri: _hrefs[16].url });\r\n }\r\n },\r\n },\r\n ]\r\n : [],\r\n onHeaderClick: (ev) => {\r\n onHeaderClick(false, ev);\r\n },\r\n },\r\n {\r\n name: t(`${RootNavLocale}.${SubRootNavLocales.Saved_jobs}`),\r\n expandAriaLabel: \"3\" + t(\"of\") + \"3\" + t(`${RootNavLocale}.${SubRootNavLocales.Saved_jobs}`),\r\n collapseAriaLabel: \"3\" + t(\"of\") + \"3\" + t(`${RootNavLocale}.${SubRootNavLocales.Saved_jobs}`),\r\n collapseByDefault: true,\r\n links: [],\r\n onHeaderClick: () => {\r\n window.open(_hrefs[13].url, \"_self\");\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {!isFlighted && !isFlightLoading ? (\r\n
\r\n \r\n \r\n
\r\n ) : isAuthenticated && !isFlightLoading && !isDownTimeVNextDisable && shouldShowSubHeader() ? (\r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst NavbarCareersComponentWrapper: React.FC = ({ ...props }) => (\r\n \r\n \r\n \r\n);\r\nexport default NavbarCareersComponentWrapper;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 3.50312C15 2.47681 13.9924 1.75361 13.0201 2.08197L2.02008 5.7966C1.41043 6.00248 1 6.57427 1 7.21776V8.78323C1 9.42595 1.40947 9.99725 2.01813 10.2037L4 10.876V12C4 13.6568 5.34315 15 7 15C8.35497 15 9.50014 14.1017 9.87246 12.8681L13.0181 13.9353C13.9909 14.2652 15 13.5419 15 12.5148V3.50312ZM13.34 3.02941C13.6641 2.91995 14 3.16102 14 3.50312V12.5148C14 12.8572 13.6636 13.0983 13.3394 12.9883L2.33938 9.25673C2.13649 9.1879 2 8.99747 2 8.78323V7.21776C2 7.00326 2.13681 6.81266 2.34003 6.74404L13.34 3.02941ZM8.9244 12.5465C8.68661 13.3854 7.91507 14 7 14C5.89543 14 5 13.1045 5 12V11.2153L8.9244 12.5465Z\",\n fill: \"#5c1b86\"\n});\n\nfunction SvgMegaphone(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMegaphone);\nexport default __webpack_public_path__ + \"static/media/megaphone.21de67b6.svg\";\nexport { ForwardRef as ReactComponent };","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport {\r\n Close,\r\n DataPrivacyLinkTitle,\r\n FeedbackSubmitted,\r\n SendUsFeedback,\r\n ThankYou,\r\n FeedbackSubheading,\r\n Feedback,\r\n PrivacyNotice,\r\n TextAreaPlaceholder,\r\n} from \"../../Constants\";\r\n\r\nconst i18nKeyPrefix = \"OCVFeedback\";\r\n\r\nexport const useFeedbackTranslation = () => {\r\n const { t, i18n } = useTranslation();\r\n\r\n return {\r\n Feedback: t(`${i18nKeyPrefix}.${Feedback}`),\r\n sendUsFeedback: t(`${i18nKeyPrefix}.${SendUsFeedback}`),\r\n close: t(`${i18nKeyPrefix}.${Close}`),\r\n dataPrivacyNotice: t(`${i18nKeyPrefix}.${DataPrivacyLinkTitle}`),\r\n successfulSubmission: t(`${i18nKeyPrefix}.${FeedbackSubmitted}`),\r\n thankYou: t(`${i18nKeyPrefix}.${ThankYou}`),\r\n feedbackSubheading: t(`${i18nKeyPrefix}.${FeedbackSubheading}`),\r\n privacyNotice: t(`${i18nKeyPrefix}.${PrivacyNotice}`),\r\n placeholder: t(`${i18nKeyPrefix}.${TextAreaPlaceholder}`),\r\n lang: i18n.language,\r\n i18n: i18n,\r\n };\r\n};\r\n","import { IFeedbackInitOptions, FeedbackAuthenticationType, InitializationResult } from \"@ms/inapp-feedback-loader\";\r\nimport { createTheme } from \"@fluentui/react\";\r\nimport { config } from \"../../services/config\";\r\nimport { toInteger } from \"lodash\";\r\n\r\nexport const sampleFeedbackOptions: IFeedbackInitOptions = {\r\n appId: toInteger(config.ocv.appId),\r\n authenticationType: FeedbackAuthenticationType.Unauthenticated,\r\n isProduction: config.production,\r\n clientName: \"OcvFeedbackDemoHostingApp\", // config.ocv.area\r\n\r\n feedbackConfig: {\r\n supportUrl: \"https://careersppe.microsoft.com/v2/global/en/home.html?flighted=true&gcsPageView=support\",\r\n },\r\n\r\n themeOptions: {\r\n baseTheme: createTheme({\r\n palette: {\r\n themePrimary: \"#5C1B86\",\r\n },\r\n semanticColors: {\r\n primaryButtonBackground: \"#F3F2F1\",\r\n primaryButtonBackgroundHovered: \"#5C1B86\",\r\n primaryButtonBackgroundPressed: \"#5C1B86\",\r\n primaryButtonBackgroundDisabled: \"white\",\r\n primaryButtonText: \"black\",\r\n messageLink: \"#5C1B86\",\r\n },\r\n }),\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\n\r\nimport { DefaultButton } from \"@fluentui/react\";\r\nimport { ReactComponent as MegaPhoneIcon } from \"../../assets/megaphone.svg\";\r\n\r\nimport \"./OCVFeedback.scss\";\r\nimport { useFeedbackTranslation } from \"./useFeedbackTranslations\";\r\nimport { FeedbackInitData, initializeInAppFeedback, openFeedback } from \"@ms/inapp-feedback-loader\";\r\nimport { sampleFeedbackOptions } from \"./OCVFeedbackOptions\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Locales } from \"../constants\";\r\n\r\nexport const OCVFeedback: React.FC = () => {\r\n const { i18n } = useTranslation();\r\n const feedbackData = sampleFeedbackOptions;\r\n const { sendUsFeedback, privacyNotice, Feedback } = useFeedbackTranslation();\r\n\r\n React.useEffect(() => {\r\n const hostName = sampleFeedbackOptions.clientName;\r\n const language = i18n.language === Locales.fr_ca ? \"fr\" : \"en\";\r\n const inAppFeedbackRef = document.getElementById(\"inAppFeedbackRef-id\");\r\n\r\n if (inAppFeedbackRef && hostName && language) {\r\n const feedbackInfo: FeedbackInitData = {\r\n hostName: hostName,\r\n locale: language,\r\n inAppFeedbackRef: inAppFeedbackRef,\r\n };\r\n initializeInAppFeedback(feedbackInfo);\r\n }\r\n }, []);\r\n\r\n function openDefaultFeedback() {\r\n openFeedback(feedbackData);\r\n }\r\n\r\n function changeTexts() {\r\n setTimeout(() => {\r\n const titleElement = document.getElementById(\"feedback-title\");\r\n if (titleElement) {\r\n titleElement.innerHTML = sendUsFeedback;\r\n }\r\n\r\n const privacyElement = document.querySelector('[data-testid=\"privacy-statement-label\"]');\r\n if (privacyElement) {\r\n privacyElement.innerHTML = privacyNotice;\r\n }\r\n }, 10);\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n openDefaultFeedback();\r\n changeTexts();\r\n }}\r\n ariaLabel={Feedback}\r\n title={Feedback}\r\n allowDisabledFocus\r\n >\r\n \r\n {Feedback}\r\n
\r\n \r\n \r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { useMemo } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nexport function useQueryParams(): URLSearchParams {\r\n const { search } = useLocation();\r\n return useMemo(() => new URLSearchParams(search), [search]);\r\n}","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React, { useContext, useEffect } from \"react\";\r\nimport { Route, RouteProps, useHistory } from \"react-router\";\r\nimport { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\nimport { InteractionStatus, SilentRequest } from \"@azure/msal-browser\";\r\n\r\nimport { SpinnerComponent } from \"../spinner/SpinnerComponent\";\r\nimport { config, loginRequest } from \"../../services/config\";\r\nimport { Loading, ProtectedRouteUrl } from \"../constants\";\r\nimport { useQueryParams } from \"../../utilities/hooks/useQueryParams\";\r\nimport { LoginContext } from \"../../services/auth/loginContext\";\r\nimport { FlightingContext } from \"../../services/flighting\";\r\nimport { clearDomainAndLoginHint } from \"../../utilities/applicationUtils\";\r\n\r\nexport default function ProtectedRoute({\r\n children,\r\n ...routeProps\r\n}: RouteProps) {\r\n const { inProgress, instance } = useMsal();\r\n const isAuthenticated = useIsAuthenticated();\r\n const queryParams = useQueryParams();\r\n const history = useHistory();\r\n const { isFlighted } = useContext(FlightingContext);\r\n const { setRedirectionUrl } = useContext(LoginContext);\r\n\r\n useEffect(() => {\r\n if (!isAuthenticated && inProgress === InteractionStatus.None) {\r\n if (queryParams.get(\"domain\")) {\r\n const silentRequest: SilentRequest = {\r\n ...loginRequest,\r\n ...(queryParams?.get(\"domain\") && {\r\n domainHint: queryParams.get(\"domain\") || \"\",\r\n loginHint: queryParams.get(\"login_hint\") || \"\",\r\n }),\r\n };\r\n\r\n /* silently acquiring the token if login already present */\r\n instance\r\n .acquireTokenSilent(silentRequest)\r\n .then(() => {\r\n clearDomainAndLoginHint();\r\n })\r\n .catch(() => {\r\n instance.loginRedirect(silentRequest);\r\n });\r\n } else {\r\n if (isFlighted) {\r\n setRedirectionUrl && setRedirectionUrl(window.location.href);\r\n history.push(ProtectedRouteUrl);\r\n } else {\r\n instance.loginRedirect({\r\n ...config.msalConfig,\r\n scopes: config.msalConfig.loginScopes,\r\n });\r\n }\r\n }\r\n }\r\n }, [inProgress, isAuthenticated, isFlighted]);\r\n\r\n return (\r\n <>\r\n {isAuthenticated ? (\r\n {children}\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const useReferralPageTitle = () => {\r\n const { t } = useTranslation();\r\n const referralTitle = {\r\n text: t(\"Referral_Title\"),\r\n };\r\n React.useEffect(() => {\r\n const prevTitle = document.title;\r\n document.title = referralTitle.text;\r\n return () => {\r\n document.title = prevTitle;\r\n };\r\n }, [referralTitle.text]);\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport { IElement } from \"../../types/Element\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport React from \"react\";\r\nimport axios from \"axios\";\r\nimport { trackEvent, trackException, trackMetric } from \"./../../services/telemetry/TelemetryService\";\r\nimport { useMountedRef } from \"../../utilities/hooks/useMountedRef\";\r\nimport { toInteger } from \"lodash\";\r\nimport { SpinnerComponent } from \"../../components/spinner/SpinnerComponent\";\r\nimport { ReferralSpinnerVisibility } from \"../../Constants\";\r\nimport { ReferralLoading } from \"../../components/constants\";\r\nimport { useReferralPageTitle } from \"./hooks/useReferralPageTitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport const ReferralExperience: React.FC = () => {\r\n const [isReferralSpinnerVisible, setIsReferralSpinnerVisible] = React.useState(true);\r\n const [scriptsLoaded, setScriptsLoaded] = React.useState(false);\r\n let referralAppLoadTimeStamp: any = new Date();\r\n const instance: IElement = React.useRef();\r\n const mounted = useMountedRef();\r\n const HTTP_TIMEOUT = 10000;\r\n const MAX_RETRY_COUNT = 7;\r\n const RETRY_INTERVAL = 5;\r\n const ReferralExperienceURI = process.env.REACT_APP_REFERRAL_URI;\r\n const [mainSrc, setMainSrc] = React.useState(\"\");\r\n const [cssSrc, setCssSrc] = React.useState(\"\");\r\n const appName = \"referral\";\r\n const { i18n } = useTranslation();\r\n\r\n useReferralPageTitle();\r\n\r\n React.useEffect(() => {\r\n const wait = (ms: any) => new Promise((res) => setTimeout(res, ms));\r\n const axiosInstance = axios.create({\r\n timeout: HTTP_TIMEOUT,\r\n });\r\n function loadAssetManifest(retryCount: number) {\r\n axiosInstance.get(`${ReferralExperienceURI}/asset-manifest.json?v=1`).then(\r\n (response) => {\r\n const data = response.data;\r\n if (mounted.current) {\r\n const isCss = `${ReferralExperienceURI}${data[\"main.css\"]}`;\r\n if (isCss) {\r\n setCssSrc(isCss);\r\n }\r\n addScriptToDiv(`${ReferralExperienceURI}${data[\"runtime~main.js\"]}`);\r\n const [dynamicDep] = Object.keys(data).filter((js) => js.match(/^static\\/js\\/\\d.*.chunk.js$/));\r\n addScriptToDiv(`${ReferralExperienceURI}${data[dynamicDep]}`);\r\n setMainSrc(`${ReferralExperienceURI}${data[\"main.js\"]}`);\r\n }\r\n },\r\n async (error) => {\r\n //log only once\r\n trackEvent(`Asset manifest retry attempt ${retryCount}.`);\r\n const errorMessage = `Error occured while loading artifacts:${JSON.stringify(error)}`;\r\n const ex: IExceptionTelemetry = {\r\n exception: {\r\n name: \"Error while Referral manifest loading\",\r\n message: errorMessage,\r\n },\r\n };\r\n if (retryCount > MAX_RETRY_COUNT) {\r\n trackException(ex);\r\n trackEvent(\"Retry exceeded for asset manifest loading.\");\r\n //set Error Screen here later to stop spinner\r\n throw ex; //in case if we want to show an error page later\r\n }\r\n //exponentially back off at 10,20,30s....50s intervals\r\n retryCount++;\r\n await wait(retryCount * 2 * RETRY_INTERVAL * 1000);\r\n loadAssetManifest(retryCount);\r\n }\r\n );\r\n }\r\n loadAssetManifest(0);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!scriptsLoaded && mainSrc !== \"\") {\r\n // Adding CSS File if available.\r\n if (cssSrc !== \"\") {\r\n const styleTag: any = document.createElement(\"link\");\r\n styleTag.href = cssSrc;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n document.getElementsByTagName(\"head\")[0].appendChild(styleTag);\r\n trackEvent(\"referral main css file loaded and added to DOM\");\r\n }\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = mainSrc;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n setScriptsLoaded(true);\r\n trackEvent(\"referral main script file loaded and added to DOM\");\r\n }\r\n }, [mainSrc]);\r\n\r\n React.useEffect(() => {\r\n const handleSpinner = (event: any) => {\r\n setIsReferralSpinnerVisible(event.detail);\r\n };\r\n window.addEventListener(ReferralSpinnerVisibility, handleSpinner);\r\n return () => {\r\n window.removeEventListener(ReferralSpinnerVisibility, handleSpinner);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"beforeReferralUnload\", logBeforeReferralUnload);\r\n return () => {\r\n window.removeEventListener(\"beforeReferralUnload\", logBeforeReferralUnload);\r\n };\r\n }, []);\r\n\r\n function dispatchLangEvent(dispatchLang: string) {\r\n const i18nLangEvent = new CustomEvent(\"referralLanguage\", {\r\n detail: {\r\n lang: dispatchLang,\r\n },\r\n });\r\n window.dispatchEvent(i18nLangEvent);\r\n }\r\n\r\n React.useEffect(() => {\r\n if (!isReferralSpinnerVisible) {\r\n dispatchLangEvent(i18n.language);\r\n //application loded;\r\n RegisterReferralWebAppUpload();\r\n }\r\n }, [isReferralSpinnerVisible, i18n.language]);\r\n\r\n function RegisterReferralWebAppUpload() {\r\n referralAppLoadTimeStamp = new Date();\r\n }\r\n\r\n const addScriptToDiv = (scriptSource: string) => {\r\n if (scriptSource) {\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = scriptSource;\r\n scriptTag.setAttribute(\"data-app\", \"referral\");\r\n instance.current.appendChild(scriptTag);\r\n }\r\n };\r\n\r\n function logBeforeReferralUnload() {\r\n const unloadTimeStamp: any = new Date();\r\n //UTP tracks every activity in the page including mouse movement and udpates the time stamp in local storage !!\r\n // we could use it to accurately measure last user activity even if user leaves seeion open for long.\r\n const lastActivityTime = toInteger(localStorage.getItem(\"utp.last.activity.time\") || unloadTimeStamp);\r\n const timeSpent = (lastActivityTime - referralAppLoadTimeStamp) / 1000;\r\n trackMetric({\r\n name: \"ReferralExperienceSessionDuration\",\r\n average: timeSpent,\r\n sampleCount: 1,\r\n });\r\n }\r\n\r\n return (\r\n
\r\n {isReferralSpinnerVisible && }\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport {\r\n trackEvent,\r\n trackException,\r\n trackMetric,\r\n} from \"../../services/telemetry/TelemetryService\";\r\n\r\nimport { Asset } from \"./SupportComponent.types\";\r\nimport { IElement } from \"../../types/Element\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport React from \"react\";\r\nimport { SupportLoadingEvent } from \"../../Constants\";\r\nimport axios from \"axios\";\r\nimport { config } from \"../../services/config\";\r\nimport { toInteger } from \"lodash\";\r\nimport { useMountedRef } from \"../../utilities/hooks/useMountedRef\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst appName = \"support\";\r\nexport const SupportComponent: React.FC = () => {\r\n const [isSupportSpinnerVisible, setIsSupportSpinnerVisible] =\r\n React.useState(true);\r\n const [manifestAssets, setManifestAssets] = React.useState();\r\n const [scriptsLoaded, setScriptsLoaded] = React.useState(false);\r\n let supportWebAppLoadTimeStamp: any = new Date();\r\n const instance: IElement = React.useRef();\r\n const mounted = useMountedRef();\r\n const { i18n } = useTranslation();\r\n const HTTP_TIMEOUT = 10000;\r\n const MAX_RETRY_COUNT = 7;\r\n const RETRY_INTERVAL = 5;\r\n const SupportExperienceURI = config.supportScriptsUrl;\r\n\r\n React.useEffect(() => {\r\n const wait = (ms: any) => new Promise((res) => setTimeout(res, ms));\r\n const axiosInstance = axios.create({\r\n timeout: HTTP_TIMEOUT,\r\n headers: {\r\n common: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n });\r\n function loadAssetManifest(retryCount: number) {\r\n axiosInstance.get(`${SupportExperienceURI}/asset-manifest.json`).then(\r\n (response: { data: any }) => {\r\n const data = response.data;\r\n if (mounted.current) {\r\n const assets = [];\r\n for (const property in data) {\r\n const asset: Asset = {\r\n name: property,\r\n src: `${SupportExperienceURI}/${data[property]}`,\r\n };\r\n assets.push(asset);\r\n }\r\n setManifestAssets(assets);\r\n }\r\n },\r\n async (error: any) => {\r\n //log only once\r\n trackEvent(`Asset manifest retry attempt ${retryCount}.`);\r\n const errorMessage = `Error occured while loading artifacts:${JSON.stringify(\r\n error\r\n )}`;\r\n const ex: IExceptionTelemetry = {\r\n exception: {\r\n name: \"Error while Support Web App manifest loading\",\r\n message: errorMessage,\r\n },\r\n };\r\n if (retryCount > MAX_RETRY_COUNT) {\r\n trackException(ex);\r\n trackEvent(\"Retry exceeded for asset manifest loading.\");\r\n //set Error Screen here later to stop spinner\r\n throw ex; //in case if we want to show an error page later\r\n }\r\n //exponentially back off at 10,20,30s....50s intervals\r\n retryCount++;\r\n await wait(retryCount * 2 * RETRY_INTERVAL * 1000);\r\n loadAssetManifest(retryCount);\r\n }\r\n );\r\n }\r\n loadAssetManifest(0);\r\n }, []);\r\n\r\n const addScriptToHeader = (scriptSource: string) => {\r\n if (scriptSource) {\r\n const scriptTag = document.createElement(\"script\");\r\n scriptTag.src = scriptSource;\r\n scriptTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(scriptTag);\r\n }\r\n };\r\n\r\n const addStyleToHeader = (styleSource: string) => {\r\n if (styleSource) {\r\n const styleTag = document.createElement(\"link\");\r\n styleTag.href = styleSource;\r\n styleTag.rel = \"stylesheet\";\r\n styleTag.type = \"text/css\";\r\n styleTag.setAttribute(\"data-app\", appName);\r\n instance.current.appendChild(styleTag);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!scriptsLoaded && manifestAssets) {\r\n // Add these three scripts in the recommended order.\r\n const runtimeScript = manifestAssets.find(\r\n (asset) => asset.name === \"runtime.js\"\r\n );\r\n const vendorsScript = manifestAssets.find(\r\n (asset) => asset.name === \"vendors.js\"\r\n );\r\n const mainScript = manifestAssets.find(\r\n (asset) => asset.name === \"main.js\"\r\n );\r\n if (runtimeScript && vendorsScript && mainScript) {\r\n {\r\n addScriptToHeader(runtimeScript.src);\r\n addScriptToHeader(vendorsScript.src);\r\n addScriptToHeader(mainScript.src);\r\n }\r\n\r\n // Add remaining Scripts and Stylesheets.\r\n manifestAssets.forEach((element) => {\r\n if (\r\n element.name.endsWith(\".js\") &&\r\n element.name !== \"main.js\" &&\r\n element.name !== \"runtime.js\" &&\r\n element.name !== \"vendors.js\"\r\n ) {\r\n addScriptToHeader(element.src);\r\n } else if (element.name.endsWith(\".css\")) {\r\n addStyleToHeader(element.src);\r\n }\r\n });\r\n setScriptsLoaded(true);\r\n trackEvent(\r\n \"SupportWebApp scripts and stylesheet files loaded and added to DOM\"\r\n );\r\n }\r\n }\r\n\r\n return () => {\r\n const deps = document.querySelectorAll(`[data-app=${appName}]`);\r\n if (deps.length) {\r\n deps.forEach((dep) => {\r\n dep.remove();\r\n });\r\n }\r\n };\r\n }, [manifestAssets]);\r\n\r\n React.useEffect(() => {\r\n const handleSpinner = (event: any) => {\r\n setIsSupportSpinnerVisible(event.detail);\r\n };\r\n window.addEventListener(SupportLoadingEvent, handleSpinner);\r\n return () => {\r\n window.removeEventListener(SupportLoadingEvent, handleSpinner);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isSupportSpinnerVisible) {\r\n dispatchLangEvent(i18n.language);\r\n //application loded;\r\n RegisterSupportWebAppAppLoad();\r\n }\r\n }, [isSupportSpinnerVisible, i18n.language]);\r\n\r\n function RegisterSupportWebAppAppLoad() {\r\n supportWebAppLoadTimeStamp = new Date();\r\n }\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\r\n \"beforeSupportWebAppUnload\",\r\n logBeforeSupportAppUnload\r\n );\r\n return () => {\r\n window.removeEventListener(\r\n \"beforeSupportWebAppUnload\",\r\n logBeforeSupportAppUnload\r\n );\r\n };\r\n }, []);\r\n\r\n function logBeforeSupportAppUnload() {\r\n const unloadTimeStamp: any = new Date();\r\n //UTP tracks every activity in the page including mouse movement and udpates the time stamp in local storage !!\r\n // we could use it to accurately measure last user activity even if user leaves seeion open for long.\r\n const lastActivityTime = toInteger(\r\n localStorage.getItem(\"utp.last.activity.time\") || unloadTimeStamp\r\n );\r\n const timeSpent = (lastActivityTime - supportWebAppLoadTimeStamp) / 1000;\r\n trackMetric({\r\n name: \"SupportExperienceSessionDuration\",\r\n average: timeSpent,\r\n sampleCount: 1,\r\n });\r\n }\r\n\r\n function dispatchLangEvent(dispatchLang: string) {\r\n const i18nLangEvent = new CustomEvent(\"language\", {\r\n detail: {\r\n lng: dispatchLang,\r\n },\r\n });\r\n window.dispatchEvent(i18nLangEvent);\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 * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport Axios, { AxiosRequestConfig } from \"axios\";\r\nimport axiosRetry from \"axios-retry\";\r\nimport { config } from \"./config\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { trackException } from \"./telemetry/TelemetryService\";\r\n\r\nconst axiosCandidateInstance = Axios.create({\r\n baseURL: config.candidateApi.baseUrl,\r\n});\r\n//TODO-need to merge with profileInstance\r\naxiosRetry(axiosCandidateInstance, {\r\n retries: config.candidateApi.apiRetryCount,\r\n retryDelay: axiosRetry.exponentialDelay,\r\n});\r\nconst axiosConfig: AxiosRequestConfig = {};\r\naxiosCandidateInstance.interceptors.request.use(\r\n (axiosConfig) => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n axiosConfig.headers[\"X-CorrelationId\"] = config.telemetry.sessionId;\r\n axiosConfig.headers[\"X-SubCorrelationId\"] = uuidv4();\r\n resolve(axiosConfig);\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n reject(axiosConfig);\r\n }\r\n }\r\n });\r\n },\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\naxiosCandidateInstance.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (error) {\r\n trackException(error);\r\n }\r\n);\r\n\r\nexport default axiosCandidateInstance;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport axiosCandidateInstance from \"./axiosCandidateInstance\";\r\nimport { config } from \"./config\";\r\n\r\nexport const candidateApi = {\r\n getCandidateInfo: (accessToken: string) => {\r\n const apiPath = config.candidateApi.getCandidateInfoApiPath;\r\n // This is called after login and to re-use the tokens. we are passing it at the time of calling the method.\r\n axiosCandidateInstance.defaults.headers.Authorization = `Bearer ${accessToken}`;\r\n return axiosCandidateInstance.get(apiPath);\r\n },\r\n};\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport axios from \"axios\";\r\nimport { config } from \"../config\";\r\n\r\nexport const downtimeService = {\r\n getUnplannedMonitoringData: async () => {\r\n const unplannedDownTimeEndPoint =\r\n config.monitoringEndPointURL + \"?category=unplanned\";\r\n return await axios.get(unplannedDownTimeEndPoint);\r\n },\r\n};\r\n","import { useEffect, useRef } from 'react';\r\nimport { inactivityKey } from '../../constants';\r\n\r\nconst useInactivityTracker = (\r\n inactivityDuration: number,\r\n onInactive: () => void\r\n): void => {\r\n \r\n const timerRef = useRef(null);\r\n\r\n \r\n const resetTimer = (): void => {\r\n const currentTime = Date.now();\r\n localStorage.setItem(inactivityKey, currentTime.toString());\r\n if (timerRef.current) clearTimeout(timerRef.current);\r\n timerRef.current = window.setTimeout(checkInactivity, inactivityDuration);\r\n };\r\n\r\n const checkInactivity = (): void => {\r\n const lastActivityTime = parseInt(localStorage.getItem(inactivityKey) || '0', 10);\r\n const currentTime = Date.now();\r\n if (currentTime - lastActivityTime >= inactivityDuration) {\r\n onInactive();\r\n } else {\r\n resetTimer();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n checkInactivity()\r\n const handleActivity = (): void => {\r\n resetTimer();\r\n\r\n // Broadcast user activity event to other tabs\r\n if (window.BroadcastChannel) {\r\n const bc = new BroadcastChannel('user_activity_channel');\r\n bc.postMessage({ type: 'activity' });\r\n }\r\n };\r\n\r\n window.addEventListener('mousemove', handleActivity);\r\n window.addEventListener('keydown', handleActivity);\r\n window.addEventListener('touchstart', handleActivity);\r\n\r\n resetTimer();\r\n return () => {\r\n window.removeEventListener('mousemove', handleActivity);\r\n window.removeEventListener('keydown', handleActivity);\r\n window.removeEventListener('touchstart', handleActivity);\r\n if (timerRef.current) clearTimeout(timerRef.current);\r\n };\r\n }, [inactivityDuration, onInactive]);\r\n\r\n useEffect(() => {\r\n const handleBroadcastMessage = (event: MessageEvent): void => {\r\n if (event.data && event.data.type === 'activity') {\r\n resetTimer();\r\n }\r\n };\r\n if (window.BroadcastChannel) {\r\n const bc = new BroadcastChannel('user_activity_channel');\r\n bc.addEventListener('message', handleBroadcastMessage);\r\n }\r\n\r\n // Cleanup the BroadcastChannel listener on unmount\r\n return () => {\r\n if (window.BroadcastChannel) {\r\n const bc = new BroadcastChannel('user_activity_channel');\r\n bc.removeEventListener('message', handleBroadcastMessage);\r\n }\r\n };\r\n }, [resetTimer]);\r\n};\r\n\r\nexport default useInactivityTracker;\r\n","/* -----------------------------------------------------------------------\r\n * \r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * \r\n * ----------------------------------------------------------------------- */\r\n\r\nimport * as Constants from \"./Constants\";\r\n\r\nimport { ActionCenter, ActionCenterRoutes } from \"./container/ActionCenter\";\r\nimport {\r\n ActionCenterLoading,\r\n ApplyApplicationLoading,\r\n ApplyExperienceFeatureFlag,\r\n CheckLoginContext,\r\n CssIncludes,\r\n IsCleanLogout,\r\n JavaScriptIncludes,\r\n LangFooterClickEvent,\r\n LangQueryParamName,\r\n Loading,\r\n Locales,\r\n ProfileExperienceFeatureFlag,\r\n ProfileNameUpdate,\r\n RecommendationExperienceFeature,\r\n RedirectUri,\r\n UHFFooterHTML,\r\n UHFFooterHTML_frCA,\r\n UHFHeaderHTML,\r\n UHFHeaderHTML_frCA,\r\n actionCenterPathName,\r\n inactivityKey,\r\n} from \"./components/constants\";\r\nimport { ApplyExperience, ApplyRoutes } from \"./container/Apply\";\r\nimport { AuthenticationResult, InteractionRequiredAuthError, InteractionStatus } from \"@azure/msal-browser\";\r\nimport {\r\n AvailableLangs,\r\n ICountryLangRouteMatchParams,\r\n languagesConfig,\r\n validateLanguage,\r\n} from \"./utilities/i18n.helper\";\r\nimport { BannerType, ErrorPageType, PlannedDowntimeMonitoringEnableOnInitialLoad } from \"./Constants\";\r\nimport { ProfileExperience, ProfileRoutes } from \"./container/Profile\";\r\nimport React, { useContext, useState } from \"react\";\r\nimport { Redirect, Route, Switch, matchPath, useHistory, useRouteMatch } from \"react-router-dom\";\r\nimport {\r\n clearDomainAndLoginHint,\r\n clearLoginCredential,\r\n deriveCorrectLocaleForRoute,\r\n disableGCSCustomBanner,\r\n existingPhenomMatchingPaths,\r\n extractCorrectPathFromExistingPhenomPath,\r\n extractPathFromPhenomInternalPath,\r\n extractPathFromPhenomPagePath,\r\n getLastActivityTime,\r\n getQueryParam,\r\n getQueryText,\r\n handleShellSignOut,\r\n removeParamFromQueryText,\r\n setLoginCredential,\r\n triggerSilentLogin,\r\n} from \"./utilities/applicationUtils\";\r\nimport { config , loginRequest } from \"./services/config\";\r\nimport { initializeTelemetry, trackEvent, trackException } from \"./services/telemetry/TelemetryService\";\r\nimport { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\n\r\nimport { BannerWrappper } from \"./Fre/Banner/BannerWrapper/BannerWrapper\";\r\nimport BrandingFooterWrapper from \"./components/footerTop/FooterTop\";\r\nimport { CandidateIdManager } from \"./services/auth/utils/CandidateIdManager\";\r\nimport { CoherenceCustomizations } from \"@cseo/styles\";\r\nimport { CookieBanner } from \"./components/cookieBanner\";\r\nimport { CreateProfile } from \"./components/createProfile/CreateProfile\";\r\nimport { CustomBannerArgs } from \"./interfaces/customBanner\";\r\nimport { Customizer } from \"office-ui-fabric-react\";\r\nimport { ErrorBannerComponent } from \"./components/errorcomponent/ErrorBannerComponent\";\r\nimport { ErrorComponent } from \"./components/errorcomponent/ErrorComponent\";\r\nimport { FlightingContext } from \"./services/flighting\";\r\nimport { Footer } from \"./components/footer\";\r\nimport { FootervNext } from \"./components/footervNext\";\r\nimport { GcsErrorBannerComponent } from \"./components/gcserrorcomponents/GcsErrorBannerComponent\";\r\nimport { GcsErrorComponent } from \"./components/gcserrorcomponents/GcsErrorComponent\";\r\nimport { Header } from \"./components/header/header\";\r\nimport { JobSearchExperience } from \"./container/JobSearch/Index\";\r\nimport { LoginContext } from \"./services/auth/loginContext\";\r\nimport { LoginWrapper } from \"./components/login/LoginWrapper\";\r\nimport NavbarCareersComponentWrapper from \"./components/navbar/Navbar\";\r\nimport { OCVFeedback } from \"./components/ocvFeedback/OCVFeedback\";\r\nimport ProtectedRoute from \"./components/protectedRoute/ProtectedRoute\";\r\nimport { ReferralExperience } from \"./container/Referral\";\r\nimport { SignIn } from \"./components/login\";\r\nimport { SpinnerComponent } from \"./components/spinner/SpinnerComponent\";\r\nimport { SupportComponent } from \"./container/Support\";\r\nimport { SystemName } from \"./interfaces/errorPage\";\r\nimport { adobeAnalyticsConfig } from \"./services/telemetry/AdobeAnalyticsConfig\";\r\nimport axios from \"axios\";\r\nimport { candidateApi } from \"./services/candidateApi\";\r\nimport { getFeatureFlag } from \"./services/auth/hooks/featureFlagsUtil\";\r\nimport { initializeIcons } from \"@fluentui/react\";\r\nimport loadjs from \"loadjs\";\r\nimport moment from \"moment\";\r\nimport { useProfile } from \"./utilities/hooks/useProfile\";\r\nimport { useQueryParams } from \"./utilities/hooks/useQueryParams\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useUnplannedMonitoring } from \"./utilities/hooks/useUnplannedMonitoring\";\r\nimport floodgateService from \"./services/survey/FloodgateService\";\r\nimport useInactivityTracker from \"./components/login/hooks/useInactivityTracker\";\r\nimport { IExceptionTelemetry } from \"@microsoft/applicationinsights-web\";\r\nimport { FeatureFlagContext } from \"./services/feature-flag\";\r\nimport Cookies from \"js-cookie\";\r\nimport { initializeAnalytics } from \"./services/telemetry/AdobeAnalyticsService\";\r\n\r\nconst isFlightCall = process.env.REACT_APP_IS_FLIGHT_CALL === \"true\";\r\n\r\ninitializeIcons();\r\ninitializeTelemetry(config.telemetry.telemetryConfig);\r\n\r\ninterface IProps {\r\n domain?: string | null;\r\n loginHint?: string | null;\r\n}\r\ninterface IBasicProfile {\r\n CandidateCountry: string;\r\n CandidateEmail: string;\r\n CandidateFirstName: string;\r\n CandidateId: number;\r\n CandidateLastName: string;\r\n CandidateMiddleName: string;\r\n CandidatePreferredFirstName: string;\r\n CandidatePreferredLastName: string;\r\n PartnerAccessAllowedAsFte: true;\r\n RegulatoryAuditDateTime: string;\r\n SourceChannel: string;\r\n socialAuthProvider: string;\r\n}\r\n\r\nconst uhfAPI = `${process.env.REACT_APP_UHF_API}`;\r\nconst uhfAPIfr_CA = `${process.env.REACT_APP_UHF_API_Fr}`;\r\n\r\nconst newUHFAPI = `${process.env.REACT_APP_NEW_UHF_API}`;\r\nconst newUHFAPIfr_CA = `${process.env.REACT_APP_NEW_UHF_API_Fr}`;\r\nconst appUsageTime =\r\n Number(process.env.REACT_APP_SURVEY_APPUSAGE_INSECONDS ? process.env.REACT_APP_SURVEY_APPUSAGE_INSECONDS : 10) * 1000;\r\n\r\nexport const App: React.FunctionComponent = () => {\r\n const { i18n } = useTranslation();\r\n const user = useProfile();\r\n const [cssIncludes, setCssIncludes] = useState(() => {\r\n return sessionStorage.getItem(CssIncludes) || \"\";\r\n });\r\n const [jsIncludesScripts, setJsIncludesScripts] = useState(() => {\r\n const initLang = i18n.language;\r\n return sessionStorage.getItem(`${JavaScriptIncludes}_${initLang}`) || \"\";\r\n });\r\n\r\n const [isCssLoaded, setIsCssLoaded] = useState(false);\r\n const lang = i18n.language;\r\n const langUrlPath = languagesConfig[validateLanguage(i18n.language) as AvailableLangs].route;\r\n\r\n const { isFlighted, isLoading, isCandidateCallRequired } = useContext(FlightingContext);\r\n const { isRecommendationExperienceFeatureEnabled } = useContext(FeatureFlagContext);\r\n //dummy commit to test CI build\r\n const unplannedDowntimeServiceInfo = useUnplannedMonitoring(isFlighted);\r\n const { instance, accounts, inProgress } = useMsal();\r\n const [isNavbarEnabled, setIsNavbarEnabled] = useState(true);\r\n const [scriptsLoaded, setScriptsLoaded] = useState(false);\r\n const [UHFHeader, setUHFHeader] = useState(\"\");\r\n const [UHFFooter, setUHFFooter] = useState(\"\");\r\n const history = useHistory();\r\n const queryParams = useQueryParams();\r\n const routeMatchCountryLang = useRouteMatch([\r\n \"/:country/:lang/search\",\r\n \"/:country/:lang/job/:id/:title?\",\r\n \"/:country/:lang/savedjobs/archived\",\r\n \"/:country/:lang/savedjobs\",\r\n \"/:country/:lang/recommendedjobs/:id?\",\r\n \"/:country/:lang/alerts\",\r\n \"/:country/:lang/referrals\",\r\n \"/:country/:lang/apply/thankyou\",\r\n \"/:country/:lang/apply/abortapply\",\r\n \"/:country/:lang/apply\",\r\n \"/:country/:lang/profile\",\r\n \"/:country/:lang/login\",\r\n \"/:country/:lang/createprofile\",\r\n ]);\r\n const isAuthenticated = useIsAuthenticated();\r\n const {\r\n showLoginDialog,\r\n setLoginDialog,\r\n setRedirectionUrl,\r\n setShowCreateProfileDialog,\r\n showCreateProfileDialog,\r\n setCandidateId,\r\n setCandidateSocialAuthProvider,\r\n setCandidateCountry,\r\n } = useContext(LoginContext);\r\n\r\n const [plannedDownTimeInfo, setPlannedDownTimeInfo] = useState({\r\n serviceName: \"\",\r\n status: \"\",\r\n message: \"\",\r\n });\r\n const [showErrorPage, setShowErrorPage] = useState(false);\r\n const [isBrandingFooterEnabled, setIsBrandingFooterEnabled] = useState(true);\r\n\r\n const [candidateProfile, setCandidateProfile] = useState();\r\n\r\n const isExternalCandidate = user?.isExternal === undefined || user?.isExternal;\r\n\r\n React.useEffect(() => {\r\n if (\r\n plannedDownTimeInfo &&\r\n plannedDownTimeInfo.serviceName &&\r\n plannedDownTimeInfo.serviceName.toLowerCase() === \"custombanner\" &&\r\n plannedDownTimeInfo.status === \"active\"\r\n ) {\r\n const customBannerArgs: CustomBannerArgs = {\r\n visibilityFlag: true,\r\n apiStatus: \"active\",\r\n bannerMessage: plannedDownTimeInfo.message,\r\n };\r\n displayCustomBanner(customBannerArgs);\r\n } else if (plannedDownTimeInfo && plannedDownTimeInfo.serviceName && plannedDownTimeInfo.status === \"active\") {\r\n const csShellElementVisibleFlag = !(\r\n plannedDownTimeInfo.serviceName.toLowerCase() === ErrorPageType.PhenomDownTime\r\n );\r\n disableCustomBanner();\r\n setIsNavbarEnabled(csShellElementVisibleFlag);\r\n setIsBrandingFooterEnabled(csShellElementVisibleFlag);\r\n setShowErrorPage(true);\r\n } else {\r\n setIsNavbarEnabled(true);\r\n setIsBrandingFooterEnabled(true);\r\n setShowErrorPage(false);\r\n }\r\n }, [plannedDownTimeInfo, plannedDownTimeInfo.serviceName]);\r\n\r\n React.useEffect(() => {\r\n const handleNewMessage = (event: any) => {\r\n if (event.detail) {\r\n setPlannedDownTimeInfo(event.detail);\r\n }\r\n };\r\n\r\n const handleOnError = (e: ErrorEvent) => {\r\n console.log(\"Error occurred: \" + e.error.message, e);\r\n trackException(e);\r\n };\r\n\r\n const unhandledRejection = (e: PromiseRejectionEvent) => {\r\n console.log(\"Unhandledrejection occurred: \" + e.reason.message, e);\r\n trackException(e.reason);\r\n };\r\n\r\n window.addEventListener(Constants.BannerType.ErrorPage, handleNewMessage);\r\n window.addEventListener(\"error\", handleOnError);\r\n window.addEventListener(\"unhandledrejection\", unhandledRejection);\r\n\r\n return () => {\r\n window.removeEventListener(Constants.BannerType.ErrorPage, handleNewMessage);\r\n window.removeEventListener(\"error\", handleOnError);\r\n window.removeEventListener(\"unhandledrejection\", unhandledRejection);\r\n };\r\n }, []);\r\n React.useEffect(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const removeRecommendationFromSessionCache = (event: any) => {\r\n if (!event.detail[Constants.recommendedJobCookieConstant.isJobsRecommendationValidCookieName]) {\r\n Cookies.remove(Constants.recommendedJobCookieConstant.isJobsRecommendationValidCookieName, {\r\n path: \"/\",\r\n domain: config.careersSubDomain,\r\n });\r\n }\r\n if (!event.detail[Constants.recommendedJobCookieConstant.isAEMRecommendationValidCookieName]) {\r\n Cookies.remove(Constants.recommendedJobCookieConstant.isAEMRecommendationValidCookieName, {\r\n path: \"/\",\r\n domain: config.careersSubDomain,\r\n });\r\n }\r\n sessionStorage.removeItem(Constants.recommendedJobCookieConstant.recommendedJobs);\r\n };\r\n window.addEventListener(\r\n Constants.recommendedJobCookieConstant.removeJobsFromClientCacheEvent,\r\n removeRecommendationFromSessionCache\r\n );\r\n return () => {\r\n window.removeEventListener(\r\n Constants.recommendedJobCookieConstant.removeJobsFromClientCacheEvent,\r\n removeRecommendationFromSessionCache\r\n );\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handleProfileUpdate = (event: any) => {\r\n if (event.detail) {\r\n setCandidateProfile((prevState) => {\r\n if (prevState) {\r\n return {\r\n ...prevState,\r\n CandidateFirstName: event.detail.candidateFirstName,\r\n CandidateLastName: event.detail.candidateLastName,\r\n CandidatePreferredFirstName: event.detail.candidatePreferredFirstName,\r\n CandidatePreferredLastName:event.detail.candidatePreferredLastName\r\n };\r\n } else {\r\n return prevState;\r\n }\r\n \r\n });\r\n }\r\n };\r\n window.addEventListener(ProfileNameUpdate, handleProfileUpdate);\r\n\r\n return () => {\r\n window.removeEventListener(ProfileNameUpdate, handleProfileUpdate);\r\n };\r\n }, []);\r\n\r\n const handleRecruitSignOut = () => {\r\n try {\r\n clearLoginCredential();\r\n localStorage.setItem(\"isCleanLogout\", JSON.stringify(true));\r\n const currentLang = queryParams?.get(\"lang\");\r\n const globalUrl = `${process.env.REACT_APP_AEM_HOMEPAGE_URL}/global/en/home.html`;\r\n const frCaUrl = `${process.env.REACT_APP_AEM_HOMEPAGE_URL}/ca/fr/home.html`;\r\n if (currentLang && currentLang === \"fr_ca\") {\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: frCaUrl,\r\n });\r\n } else {\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: globalUrl,\r\n });\r\n }\r\n } catch (error: any) {\r\n const loginException: IExceptionTelemetry = {\r\n exception: new Error(\"Failure in logout: \" + error?.message),\r\n severityLevel: 3,\r\n };\r\n trackException(loginException);\r\n }\r\n };\r\n\r\n const handleRecruitSignInRedirection = () => {\r\n const isCleanlogout = JSON.parse(localStorage.getItem(IsCleanLogout) ?? \"false\");\r\n if (isCleanlogout) {\r\n if (accounts.length === 0) {\r\n setLoginDialog && setLoginDialog(true);\r\n return ;\r\n } else {\r\n triggerSilentLogin(`${process.env.REACT_APP_AEM_HOMEPAGE_URL}`);\r\n }\r\n } else {\r\n handleShellSignOut(instance);\r\n }\r\n };\r\n\r\n const plannedDownTimeInformation = () => {\r\n const plannedDownTimeEndpoint = config.monitoringEndPointURL + \"?category=planned\";\r\n axios\r\n .get(plannedDownTimeEndpoint)\r\n .then((response) => {\r\n if (response.data) {\r\n setPlannedDownTimeInfo(response.data);\r\n }\r\n })\r\n .catch((error) => {\r\n trackException(error);\r\n });\r\n };\r\n\r\n /* ensures login when redirected from already loggedin user from AEM */\r\n React.useEffect(() => {\r\n if (\r\n queryParams?.get(\"domain\") &&\r\n queryParams?.get(\"login_hint\") &&\r\n inProgress === InteractionStatus.None &&\r\n !isAuthenticated\r\n ) {\r\n const redirectUri = queryParams?.get(RedirectUri);\r\n trackEvent(`Redirected from AEM to login page with email ${queryParams?.get(\"login_hint\")} and domain ${queryParams?.get(\"domain\")} and redirectUri ${redirectUri}`)\r\n if (redirectUri) {\r\n sessionStorage.setItem(RedirectUri, redirectUri);\r\n }\r\n setLoginCredential(queryParams.get(\"domain\"), queryParams.get(\"login_hint\"));\r\n instance.loginRedirect({\r\n ...loginRequest,\r\n domainHint: queryParams.get(\"domain\") || \"\",\r\n loginHint: queryParams.get(\"login_hint\") || \"\",\r\n });\r\n clearDomainAndLoginHint();\r\n }\r\n }, [isAuthenticated, inProgress]);\r\n\r\n React.useEffect(() => {\r\n const query = getQueryText();\r\n if (query === \"\" && window.location.search) {\r\n sessionStorage.setItem(\r\n Constants.RequestQueryString,\r\n removeParamFromQueryText(window.location.search, Constants.Lang)\r\n );\r\n }\r\n }, []);\r\n\r\n //initlaize adobe analytics object\r\n React.useEffect(() => {\r\n\r\n const config = adobeAnalyticsConfig;\r\n try {\r\n //required to call external JS function defined in index file so that react doesnt look for definition.\r\n const body = \"intializeAdobeAnalytics(config);\";\r\n const func = new Function(\"config\", body);\r\n func(config);\r\n } catch(e) {\r\n console.log(\"adobe analytics init failed\");\r\n console.log(e);\r\n }\r\n }, []);\r\n\r\n // change language when directly hit.\r\n React.useEffect(() => {\r\n if (routeMatchCountryLang?.isExact) {\r\n const langRoute = `${routeMatchCountryLang.params.country}/${routeMatchCountryLang.params.lang}`;\r\n const validLocale = deriveCorrectLocaleForRoute(langRoute);\r\n sessionStorage.setItem(Constants.sessionLang, validLocale);\r\n i18n.changeLanguage(validLocale);\r\n } else if (window.location.pathname.startsWith(actionCenterPathName) && getQueryParam(LangQueryParamName)?.toLowerCase() === Locales.fr_ca) {\r\n i18n.changeLanguage(Locales.fr_ca);\r\n }\r\n }, []);\r\n\r\n // reload page on click on language option in the footer.\r\n React.useEffect(() => {\r\n const _handleFooterLangButtonEvent = (e: any) => {\r\n const languageFromEventTriggered = e.detail.language;\r\n const routeMatchCountryLang = matchPath(window.location.pathname, [\r\n \"/actioncenter\",\r\n \"/:country/:lang/search\",\r\n \"/:country/:lang/job/:id/:title?\",\r\n \"/:country/:lang/savedjobs/archived\",\r\n \"/:country/:lang/savedjobs\",\r\n \"/:country/:lang/recommendedjobs/:id?\",\r\n \"/:country/:lang/alerts\",\r\n \"/:country/:lang/referrals\",\r\n \"/:country/:lang/apply/thankyou\",\r\n \"/:country/:lang/apply/abortapply\",\r\n \"/:country/:lang/apply\",\r\n \"/:country/:lang/profile\",\r\n \"/:country/:lang/login\",\r\n \"/:country/:lang/createprofile\",\r\n ]);\r\n if (languageFromEventTriggered) {\r\n if (routeMatchCountryLang?.isExact && routeMatchCountryLang.path !== \"/actioncenter\") {\r\n const urlLangugageRoute = `${routeMatchCountryLang.params.country}/${routeMatchCountryLang.params.lang}`;\r\n const currentLanguageRoute = languagesConfig[languageFromEventTriggered as AvailableLangs].route;\r\n const afterSecondParam = routeMatchCountryLang.url.split(\"/\").slice(3);\r\n if (currentLanguageRoute !== urlLangugageRoute) {\r\n const convertedPathname =\r\n afterSecondParam &&\r\n afterSecondParam.length > 0 &&\r\n (afterSecondParam[0] === \"job\" || afterSecondParam[0].startsWith(\"search\"))\r\n ? `/${currentLanguageRoute}/search`\r\n : `/${currentLanguageRoute}/${afterSecondParam.join(\"/\")}`;\r\n const retainedSearchParam =\r\n afterSecondParam &&\r\n afterSecondParam.length > 0 &&\r\n (afterSecondParam[0] === \"apply\" || afterSecondParam[0] === \"referrals\")\r\n ? window.location.search\r\n : \"\";\r\n window.location.href = `${window.location.origin}${convertedPathname}${retainedSearchParam}`;\r\n }\r\n } else if (routeMatchCountryLang?.path === \"/actioncenter\") {\r\n window.location.reload();\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener(LangFooterClickEvent, _handleFooterLangButtonEvent);\r\n\r\n return () => {\r\n window.removeEventListener(LangFooterClickEvent, _handleFooterLangButtonEvent);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (accounts.length > 0) {\r\n instance\r\n .acquireTokenSilent({\r\n ...loginRequest,\r\n account: instance.getAllAccounts()[0],\r\n })\r\n .then((response: AuthenticationResult) => {\r\n if (isFlighted) {\r\n trackEvent(`Acquiring token succesful for candudate email:-${response?.account?.idTokenClaims?.email}`);\r\n CandidateIdManager.getBasicProfile(response.accessToken)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n\r\n const candidateId = res?.data.operationResult.result.CandidateId;\r\n const socialAuthProvider = res?.data.operationResult.result.socialAuthProvider;\r\n trackEvent(`Basic profile call succesful for candidateID:-${candidateId} and social auth provider:-${socialAuthProvider}`);\r\n const candidateInfo = JSON.stringify(res?.data.operationResult.result);\r\n const basicProfileResponse = res?.data.operationResult.result;\r\n setCandidateProfile(res?.data?.operationResult?.result);\r\n if (basicProfileResponse) {\r\n setCandidateCountry && setCandidateCountry(basicProfileResponse.CandidateCountry);\r\n }\r\n\r\n setCandidateId && setCandidateId(candidateId);\r\n setCandidateSocialAuthProvider && setCandidateSocialAuthProvider(socialAuthProvider);\r\n\r\n CandidateIdManager.SetCandidateId(candidateId, candidateInfo);\r\n if (socialAuthProvider === \"None\" && candidateId) {\r\n setShowCreateProfileDialog && setShowCreateProfileDialog(true);\r\n }\r\n } else if (res.status === 204) {\r\n setShowCreateProfileDialog && setShowCreateProfileDialog(true);\r\n }\r\n })\r\n .catch((error: any) => {\r\n trackException(error);\r\n });\r\n } else {\r\n if (isCandidateCallRequired) {\r\n candidateApi\r\n .getCandidateInfo(response.accessToken)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n const candidateId = response?.data.operationResult.result.candidateId;\r\n CandidateIdManager.SetCandidateId(\r\n candidateId,\r\n JSON.stringify(response?.data?.operationResult?.result)\r\n );\r\n }\r\n })\r\n .catch((error) => trackException(error));\r\n }\r\n }\r\n if (isFlightCall) {\r\n getFeatureFlag(\r\n `${PlannedDowntimeMonitoringEnableOnInitialLoad},${ApplyExperienceFeatureFlag},${ProfileExperienceFeatureFlag},${RecommendationExperienceFeature}`,\r\n response.accessToken\r\n ).then((response) => {\r\n if (response && response?.result) {\r\n const { result } = response;\r\n if (result[PlannedDowntimeMonitoringEnableOnInitialLoad]) {\r\n plannedDownTimeInformation();\r\n }\r\n }\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n const loginException: IExceptionTelemetry = {\r\n exception: new Error(\"Failure in silent token access: \" + error?.message),\r\n severityLevel: 3,\r\n };\r\n trackException(loginException);\r\n if (error instanceof InteractionRequiredAuthError) {\r\n const scopes = [config.msalConfig.loginScopes[0]];\r\n instance.loginRedirect({\r\n scopes,\r\n redirectStartPage: window.location.href,\r\n });\r\n }\r\n });\r\n } else {\r\n CandidateIdManager.FlushCandidateId();\r\n CandidateIdManager.FlushCandidateInfo();\r\n }\r\n }, [accounts, isFlighted, isCandidateCallRequired]);\r\n\r\n React.useEffect(() => {\r\n if (!isLoading) {\r\n let headerLocal: string;\r\n let footerLocal: string;\r\n let uhfuri: string;\r\n const isvNextSession = isFlighted ? \"_vNext\" : \"\";\r\n if (lang === undefined) {\r\n return;\r\n }\r\n\r\n if (lang === Locales.fr_ca) {\r\n headerLocal = sessionStorage.getItem(UHFHeaderHTML_frCA) || \"\";\r\n footerLocal = sessionStorage.getItem(UHFFooterHTML_frCA) || \"\";\r\n uhfuri = isFlighted ? newUHFAPIfr_CA : uhfAPIfr_CA;\r\n } else {\r\n headerLocal = sessionStorage.getItem(UHFHeaderHTML) || \"\";\r\n footerLocal = sessionStorage.getItem(UHFFooterHTML) || \"\";\r\n uhfuri = isFlighted ? newUHFAPI : uhfAPI;\r\n }\r\n\r\n const jsIncludesLocaleScripts = sessionStorage.getItem(`${JavaScriptIncludes}_${lang}${isvNextSession}`);\r\n\r\n if (!cssIncludes || !jsIncludesScripts || !jsIncludesLocaleScripts || !headerLocal || !footerLocal) {\r\n axios.get(uhfuri).then((shell) => {\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(shell.data, \"text/xml\");\r\n\r\n const cssContent = xmlDoc.getElementsByTagName(\"cssIncludes\")[0].textContent || \"\";\r\n const jsContent = xmlDoc.getElementsByTagName(\"javascriptIncludes\")[0].textContent || \"\";\r\n\r\n const headerHtml = xmlDoc.getElementsByTagName(\"headerHtml\")[0].textContent || \"\";\r\n const footerHtml = xmlDoc.getElementsByTagName(\"footerHtml\")[0].textContent || \"\";\r\n\r\n setCssIncludes(cssContent);\r\n setJsIncludesScripts(jsContent);\r\n\r\n sessionStorage.setItem(CssIncludes, cssContent);\r\n sessionStorage.setItem(`${JavaScriptIncludes}_${lang}`, jsContent);\r\n if (lang === Locales.fr_ca) {\r\n sessionStorage.setItem(UHFHeaderHTML_frCA, headerHtml);\r\n sessionStorage.setItem(UHFFooterHTML_frCA, footerHtml);\r\n } else {\r\n sessionStorage.setItem(UHFHeaderHTML, headerHtml);\r\n sessionStorage.setItem(UHFFooterHTML, footerHtml);\r\n }\r\n setUHFHeader(headerHtml);\r\n setUHFFooter(footerHtml);\r\n setScriptsLoaded(true);\r\n });\r\n } else {\r\n setUHFHeader(headerLocal);\r\n setUHFFooter(footerLocal);\r\n setScriptsLoaded(true);\r\n }\r\n }\r\n }, [lang, isLoading]);\r\n\r\n React.useEffect(() => {\r\n if (scriptsLoaded) {\r\n const jsScripts = sessionStorage.getItem(`${JavaScriptIncludes}_${lang}`) || jsIncludesScripts;\r\n const cssScripts = sessionStorage.getItem(CssIncludes) || cssIncludes;\r\n\r\n const dummyElement = document.createElement(\"div\");\r\n dummyElement.innerHTML = `${jsScripts}${cssScripts}`;\r\n\r\n if (!loadjs.isDefined(\"uhf-css\")) {\r\n const cssArr = dummyElement.getElementsByTagName(\"link\");\r\n const cssList = [...cssArr].map((l) => `css!${l.getAttribute(\"href\")}`) as string[];\r\n loadjs(cssList, \"uhf-css\", {\r\n before: (path, scriptEl) => {\r\n document.head.appendChild(scriptEl);\r\n return false;\r\n },\r\n success: () => {\r\n setIsCssLoaded(true);\r\n },\r\n });\r\n }\r\n\r\n loadjs.ready(\"uhf-css\", () => {\r\n const jsArr = dummyElement.getElementsByTagName(\"script\");\r\n const jsList = [...jsArr].map((l) => `${l.getAttribute(\"src\")}`) as string[];\r\n loadjs(jsList, \"uhf-js\", {\r\n async: true,\r\n before: (path, scriptEl) => {\r\n scriptEl.setAttribute(\"data-script\", \"uhf-js\");\r\n document.body.appendChild(scriptEl);\r\n return false;\r\n },\r\n });\r\n });\r\n }\r\n return () => {\r\n document.querySelectorAll('script[data-script=\"uhf-js\"]')?.forEach((scriptEl) => scriptEl?.remove());\r\n loadjs.reset();\r\n };\r\n }, [scriptsLoaded, lang]);\r\n\r\n // this function sets the timer that logs out the user after 1800 secs\r\n const handleSilentLoginOnInactivity = () => {\r\n const interval = setInterval(() => {\r\n const lastActivityTimeStamp = getLastActivityTime();\r\n if (lastActivityTimeStamp) {\r\n const lastActiveDateTime = moment(new Date(Number(lastActivityTimeStamp)));\r\n const currentDateTime = moment(new Date());\r\n const timeDiff = Math.round(moment.duration(currentDateTime.diff(lastActiveDateTime)).asMinutes());\r\n if (timeDiff > Number(process.env.REACT_APP_CHECK_ACTIVITY_LIMIT)) {\r\n triggerSilentLogin();\r\n }\r\n }\r\n }, Number(process.env.REACT_APP_CHECK_ACTIVITY_DURATION));\r\n\r\n return () => clearInterval(interval);\r\n };\r\n\r\n // Event handler to listen to check login context\r\n React.useEffect(() => {\r\n const handleMessage = (event: any): void => {\r\n const redirectionUrl = event.detail.url;\r\n if (redirectionUrl && accounts.length === 0) {\r\n setRedirectionUrl && setRedirectionUrl(redirectionUrl);\r\n setLoginDialog && setLoginDialog(true);\r\n }\r\n };\r\n\r\n window.addEventListener(CheckLoginContext, handleMessage);\r\n\r\n return () => {\r\n window.removeEventListener(CheckLoginContext, handleMessage);\r\n };\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (accounts.length > 0) {\r\n setLoginDialog && setLoginDialog(false);\r\n }\r\n }, [accounts]);\r\n\r\n useInactivityTracker(\r\n Number(process.env.REACT_APP_SHELL_INACTIVITY_LIMIT_FOR_LOGOUT) * 60 * 1000,\r\n () => accounts.length > 0 && handleShellSignOut(instance)\r\n );\r\n\r\n const routePath = history?.location?.pathname;\r\n\r\n const actionCenterRegEx = \"(incomplete|submitted|interview|offer|preonboard|hired|inactive|resources)\";\r\n const actionCenterSubPathRegExp = `/actioncenter/:viewType${actionCenterRegEx}`;\r\n const actionCenterReferenceRegEx = \"(reference)\";\r\n const actionCenterTravelRegEx = \"(travel)\";\r\n const actionCenterExpensesRegEx = \"(expense)\";\r\n const actionCenterSubPathReferenceRegExp = `/actioncenter/:viewType${actionCenterReferenceRegEx}`;\r\n const actionCenterSubPathTravelRegExp = `/actioncenter/:viewType${actionCenterTravelRegEx}`;\r\n const actionCenterSubPathExpensesRegExp = `/actioncenter/:viewType${actionCenterExpensesRegEx}`;\r\n const referralRoutes = `/:country?/:lang?/referrals`;\r\n const invokedPathName = window.location.pathname;\r\n const InitialShellLoadingTextKey = invokedPathName.startsWith(\"/actioncenter\")\r\n ? ActionCenterLoading\r\n : invokedPathName.startsWith(\"/apply\")\r\n ? ApplyApplicationLoading\r\n : invokedPathName.startsWith(\"/profile\")\r\n ? Loading\r\n : Loading;\r\n\r\n return (\r\n \r\n {isFlighted && }\r\n {isCssLoaded &&
}\r\n {(isLoading && !scriptsLoaded) || inProgress !== InteractionStatus.None ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {isNavbarEnabled && (\r\n \r\n )}\r\n {isFlighted && }\r\n {isFlighted && showLoginDialog && }\r\n {isFlighted && showCreateProfileDialog && }\r\n {isFlighted &&\r\n !showLoginDialog &&\r\n !showCreateProfileDialog &&\r\n isAuthenticated &&\r\n isRecommendationExperienceFeatureEnabled &&\r\n !isExternalCandidate && }\r\n\r\n \r\n {isFlighted && (\r\n \r\n {unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi) ? (\r\n \r\n ) : (\r\n handleRecruitSignInRedirection\r\n )}\r\n \r\n )}\r\n {isFlighted && (\r\n \r\n {handleRecruitSignOut}\r\n \r\n )}\r\n {isFlighted && accounts.length > 0 && (\r\n \r\n {unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Icims ||\r\n unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi) ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {isFlighted && (\r\n \r\n \r\n \r\n )}\r\n \r\n {!showErrorPage ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {isFlighted && (\r\n \r\n {unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Icims ||\r\n unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi) ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {isFlighted && (\r\n \r\n \r\n \r\n )}\r\n {isFlighted && (\r\n \r\n \r\n \r\n )}\r\n {isFlighted && (\r\n \r\n {unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Icims ||\r\n unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi) ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {isFlighted && (\r\n \r\n {!isExternalCandidate ? (\r\n unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi || unplannedDowntimeServiceInfo === SystemName.Referral) ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n displayGCSCustomBanner({\r\n visibilityFlag: true,\r\n apiStatus: \"active\",\r\n })}\r\n \r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {isFlighted && (\r\n \r\n {unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi) ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n displayGCSCustomBanner({\r\n visibilityFlag: true,\r\n apiStatus: \"active\",\r\n })}\r\n \r\n \r\n )}\r\n \r\n )}\r\n {isFlighted && (\r\n \r\n {unplannedDowntimeServiceInfo &&\r\n (unplannedDowntimeServiceInfo === SystemName.Ods ||\r\n unplannedDowntimeServiceInfo === SystemName.Rpi) ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n displayGCSCustomBanner({\r\n visibilityFlag: true,\r\n apiStatus: \"active\",\r\n })}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n {!showErrorPage ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n disableGCSCustomBanner()}\r\n \r\n \r\n )}\r\n \r\n \r\n {!showErrorPage ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n disableGCSCustomBanner()}\r\n \r\n \r\n )}\r\n \r\n \r\n {!showErrorPage ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n disableGCSCustomBanner()}\r\n \r\n \r\n )}\r\n \r\n \r\n {!showErrorPage ? (\r\n \r\n ) : (\r\n <>\r\n {unplannedDowntimeServiceInfo &&\r\n unplannedDowntimeServiceInfo === SystemName.Icims &&\r\n disableGCSCustomBanner()}\r\n \r\n \r\n )}\r\n \r\n\r\n {isFlighted && (\r\n \r\n \r\n \r\n )}\r\n {isFlighted && (\r\n \r\n \r\n \r\n )}\r\n {isFlighted && } />}\r\n }\r\n />\r\n \r\n \r\n {isBrandingFooterEnabled && !isLoading && !isFlighted && }\r\n {!isFlighted && isCssLoaded ?