{"version":3,"sources":["helpers/createPictureUrlFromColor.js","helpers/storage.ts","styles/palette.js","styles/theme.ts","store/theme.js","pages/Onboarding/helpers/useSlideInfo.ts","prependPolyfill.js","store/support.js","helpers/getIsInMsTeams.ts","store/bigSearch.js","helpers/consts.js","styles/skipper/skipperDefaultPalette.ts","components/skipper/ErrorBoundary/ErrorBoundary.tsx","helpers/wootricCustomAnalyticsIntegration.js","store/core.js","store/app.js","store/configurations.js","store/timezoneAndWorkHours.ts","store/reducers.ts","components/msTeams/consts.ts","helpers/getIsInMsTeamsEmbed.ts","store/dataServiceActionHandlers.js","store/dataServiceMiddleware.js","store/sideEffects.js","components/AnalyticsProvider/AnalyticsProvider.tsx","components/AnalyticsProvider/index.ts","components/ThemeProvider/ThemeProvider.tsx","components/skipper/PortalProvider/PortalProvider.tsx","components/Icons/Checked.tsx","components/skipper/SnackbarProvider.tsx","components/AppProvider/AppProvider.tsx","store/createStore.js","fetches/getAppVersionStatus.ts","components/AppFetcher/AppFetcher.tsx","components/AppFetcher/helpers/useFetchSiftBotEffect.ts","components/AppFetcher/helpers/useConfigureSentryEffect.ts","components/AppFetcher/helpers/useSendThemeBridgeEffect.ts","components/AppFetcher/helpers/useRemoveLoaderEffect.ts","components/AppFetcher/helpers/useRedirectEffect.ts","components/AppFetcher/helpers/useUpdateApp.ts","components/Router/helpers/routes.js","helpers/useOnboardingRedirectEffect.tsx","helpers/useExploreEnabled.ts","helpers/useCustomNavLinkSettings.ts","components/Navigation/helpers/useNavDropdownRoutes.ts","helpers/useSupportEnabled.ts","helpers/useSettingsEnabled.ts","styles/skipper/isWhitish.ts","components/SubdomainConditional/SubdomainConditional.tsx","components/Navigation/NavigationSearchInput/NavSearchInput.tsx","components/skipper/appBar/helpers/apps.ts","components/skipper/appBar/helpers/getAppFromLinkPathname.ts","components/skipper/appBar/AppLink/AppLink.tsx","components/skipper/appBar/helpers/getCurrentApplication.ts","components/skipper/appBar/ExternalMenuLink/ExternalMenuLink.tsx","components/skipper/appBar/MenuItems/MenuItems.tsx","styles/getBackgroundColor.ts","components/skipper/appBar/PersonMenu/PersonMenu.tsx","components/Navigation/NavPersonMenu/NavPersonMenu.tsx","components/skipper/AvatarOld/AvatarOld.tsx","components/skipper/AvatarOld/index.tsx","components/skipper/appBar/Drawer/Drawer.tsx","components/Navigation/NavHamburgerMenu/NavHamburgerMenu.tsx","components/Navigation/consts.ts","components/Navigation/NavBackAndForwardButtons/NavBackAndForwardButtons.js","components/Navigation/NavButton/NavButton.tsx","components/Navigation/NavigationLink/NavigationLink.tsx","components/Navigation/CustomNavLink/CustomNavLink.tsx","pages/Notifications/components/BellIcon/bell.lottie.js","components/LottieAnimation/LottieAnimation.tsx","pages/Notifications/components/BellIcon/BellIcon.tsx","components/Navigation/NotificationBell/NotificationBell.tsx","components/Icons/Admin.tsx","components/Navigation/AdminNavLink/AdminNavLink.tsx","components/Navigation/DefaultNavigation/DefaultNavigation.tsx","fetches/getClearAuthToken.ts","components/msTeams/MsTeamsNavigation/MsTeamsNavMenu/MsTeamsNavMenu.tsx","components/msTeams/MsTeamsNavigation/MsTeamsNavigation.tsx","components/Navigation/Navigation.tsx","components/Navigation/index.js","components/CoreSnackbar/CoreSnackbar.js","components/CoreSnackbar/index.js","components/Support/Drawer/Form.js","components/Icons/Success.js","components/Support/Drawer/CompletedForm.js","components/Support/Drawer/index.js","components/Support/Support.js","components/Support/index.js","components/MobileAppGetter/MobileAppGetter.js","components/ThemeSnackbar/ThemeSnackbar.js","components/ThemeSnackbar/index.js","components/UpdateBanner/UpdateBanner.tsx","components/FreeTrialBanner/consts.jsx","components/FreeTrialBanner/FreeTrialBanner.tsx","components/CoreLayout.js","components/BigSearch/SearchOverlay/SearchOverlayChildren.js","components/BigSearch/SearchOverlay/SearchOverlay.js","components/BigSearch/SearchOverlay/index.js","components/msTeams/fetches/makeGetMeetingAttendeesFetch.ts","components/msTeams/MsTeamsMainTheme/MsTeamsMainTheme.tsx","helpers/getPathDepth.ts","components/msTeams/embed/ParticipantsList/ParticipantsList.tsx","components/msTeams/embed/ParticipantsList/index.tsx","components/msTeams/embed/molecules/ProfileHeaderItem/ProfileHeaderItem.tsx","components/msTeams/embed/profile/Tenure/Tenure.tsx","components/msTeams/embed/profile/Pronouns/Pronouns.tsx","components/msTeams/embed/profile/WorkSchedule/WorkSchedule.tsx","components/msTeams/embed/atoms/ToggleTruncateButton/ToggleTruncateButton.tsx","components/msTeams/embed/molecules/ProfileSection/ProfileSection.tsx","components/msTeams/embed/profile/Bio/Bio.tsx","components/msTeams/embed/atoms/Chip/Chip.tsx","components/msTeams/embed/profile/Interests/Interests.tsx","components/msTeams/embed/profile/Skills/SkillLevel/SkillLevel.tsx","components/msTeams/embed/profile/Skills/SkillCard/SkillCard.tsx","components/msTeams/embed/profile/Skills/Skills.tsx","components/msTeams/embed/profile/componentRegistry.ts","components/msTeams/embed/profile/NamePronunciation/NamePronunciation.tsx","components/msTeams/embed/profile/Headings/Headings.tsx","components/msTeams/embed/profile/PersonProfile/PersonProfile.tsx","helpers/makeMsTeamsDeepLinkUrl.ts","components/msTeams/embed/profile/PersonProfile/index.tsx","components/msTeams/embed/MsTeamsMain/MsTeamsMain.tsx","components/msTeams/embed/icons/SiftLogo.tsx","components/msTeams/embed/molecules/InfoPageLayout/InfoPageLayout.tsx","components/msTeams/embed/InsufficientPermission/InsufficientPermission.tsx","components/msTeams/embed/MsTeamsMain/index.tsx","components/Router/Router.js","components/App/App.tsx","components/msTeams/MsTeamsThemeWrapper/MsTeamsThemeWrapper.tsx","components/msTeams/MsTeamsLogin/MsTeamsLogin.tsx","components/msTeams/MsTeamsLoginSuccess/MsTeamsLoginSuccess.tsx","components/msTeams/embed/TeamsLogin/TeamsLogin.tsx","index.tsx","styles/skipper/createSkipperTheme.js","store/entities.js","pages/Onboarding/components/AppBarPortal/AppBarPortal.tsx","styles/createPaletteColor.ts","components/skipper/Loader/helpers/isLoading.ts","components/skipper/Loader/helpers/isNormal.ts","components/skipper/Loader/helpers/isError.ts","components/skipper/Loader/Loader.tsx","helpers/typography.ts","store/siftBot.js","styles/skipper/skipperDefaultTheme.ts","pages/Onboarding/pages/Start/Start.tsx","helpers/useLinkedInImportEnabled.ts","pages/Onboarding/pages/Start/index.tsx","pages/Onboarding/pages/LinkedInFork/LinkedInFork.tsx","pages/Onboarding/fetches/updateLinkedInFetch.ts","pages/Onboarding/components/ContrastButton/index.tsx","pages/Onboarding/pages/LinkedInUploader/LinkedInUploader.tsx","pages/Onboarding/pages/LinkedInUploader/index.tsx","pages/Onboarding/helpers/useLinkedIn.ts","components/Icons/WarningIcon.js","pages/Onboarding/pages/LinkedInResults/LinkedInResults.tsx","pages/Onboarding/pages/LinkedInResults/index.tsx","pages/Onboarding/helpers/useIsLastSlide.ts","pages/Onboarding/fetches/updateCompletedSlidesFetch.ts","pages/Onboarding/components/AccordionItem/AccordionItem.tsx","pages/Onboarding/components/AttributeAccordion/AttributeAccordion.tsx","pages/Onboarding/fetches/examplePeopleFetch.ts","pages/Onboarding/components/AttributeAccordion/index.tsx","pages/Onboarding/components/Header/Header.tsx","pages/Onboarding/components/SkipDialog/SkipDialog.tsx","pages/Onboarding/pages/FieldTemplate/FieldTemplate.tsx","pages/Onboarding/pages/FieldTemplate/index.tsx","pages/Onboarding/pages/ObjectCollectionTemplate/ObjectCollectionTemplate.tsx","pages/Onboarding/pages/ObjectCollectionTemplate/index.tsx","pages/Onboarding/pages/PhotoUploader/PhotoUploader.tsx","pages/Onboarding/pages/PhotoUploader/index.tsx","pages/Onboarding/pages/Assistants/PeopleListEditor/PeopleListEditor.tsx","pages/Onboarding/pages/Assistants/Assistants.tsx","pages/Onboarding/pages/Assistants/index.tsx","pages/Onboarding/pages/ConfettiPage/ConfettiPage.tsx","pages/Onboarding/helpers/slides.ts","helpers/getSubdomain.ts","components/atoms/Avatar/Avatar.tsx","components/atoms/Avatar/index.tsx","components/atoms/Avatar/helpers/usePictureUrlFromPerson.ts","components/atoms/Avatar/helpers/ensurePictureUrl.ts","pages/SearchResults/_helpers/parseDate.js","store/searchResults/_helpers/transformToQueryParams.js","store/searchResults/searchResults.js","helpers/useInterval.ts","helpers/useWrap/useWrap.ts","components/skipper/SiftLogo/SiftLogo.tsx","store/settings.js","pages/Onboarding/helpers/fieldMap.ts","pages/Onboarding/fetches/updateOnboardingStateFetch.ts","helpers/removeKeys.ts","helpers/removeFalsyKeys.ts","styles/isValidColor.ts","styles/normalizeColor.ts","styles/skipper/ensureColors.js","styles/skipper/typography.ts","components/Page/usePageTrackingEffect.js","styles/skipper/ThemeOverrideComponent.tsx","helpers/useIsAdmin.ts","components/AnalyticsProvider/AnalyticsContext.ts","helpers/getPictureUrl.ts","store/advancedSearch.js","components/skipper/PortalProvider/context.ts","helpers/analyticsOptions.ts","helpers/useWidth.ts","components/Highlighter/Highlighter.tsx","styles/skipper/brandColors.ts","helpers/typings.ts","components/skipper/Chip.tsx","store/search.js","fetches/settingsFetch.ts","pages/Profile/fetches/updateProfileFetch.ts","components/Icons/CheckMarkIcon.js","components/Icons/Org.tsx","pages/Notifications/fetches/getTasks.tsx","helpers/getHostDomain.ts","styles/skipper/readableColorForWhite.ts","pages/SearchResults/_helpers/getDerivedLocationFromProps.js","components/skipper/views/Error/Error.tsx","components/Icons/ErrorFace.js","fetches/getClientOrgChart.ts","pages/SearchResults/_helpers/hashDate.js","pages/SearchResults/_helpers/getAttributeValuesFromObject.js","store/smsApp.js","pages/Onboarding/helpers/useValidSlides.ts","components/TimezoneAndWorkHours/helpers/getTimezoneDisplayNames.ts","helpers/createPortal.ts","components/People/Separated/Copy.js","styles/skipper/readableColor.ts","helpers/useAnalytics.tsx","components/atoms/SkipTranslate.tsx","components/TimezoneAndWorkHours/constants/timezoneMappings.ts","components/molecules/OutlinedTextField.tsx","helpers/useEntityTypeTypeKeyFromUrl.ts","helpers/useLocationProps.ts","helpers/stringifyLocationProps.ts","store/profile.ts","helpers/useTerminology.ts","components/Loader/index.js","components/Skills/skillLevelDescriptions.ts","helpers/useEntityTypeConfig.ts","components/skipper/PersonAutocomplete/PersonSuggestion/PersonSuggestion.tsx","components/skipper/PersonAutocomplete/index.tsx","components/TimezoneAndWorkHours/constants/index.ts","fetches/makeGetConfiguration.ts","components/skipper/Autocomplete/Popper/Popper.tsx","components/skipper/Autocomplete/Autocomplete.tsx","pages/Profile/fetches/profileFetch.ts","helpers/getBase64.ts","components/Avatar/helpers/ensurePictureUrl.ts","components/Avatar/helpers/usePictureUrlFromPerson.ts","components/atoms/NewTabLink.tsx","store/listSearch.ts","pages/OrgChart/fetches/orgChartSettingsFetch.ts","pages/Profile/fetches/uploadPictureFetch.ts","components/skipper/Autocomplete/fetches/autocompleteFetch.ts","components/atoms/NewTabDiv.tsx","components/skipper/Autosuggest/DefaultTextField.tsx","components/skipper/Autosuggest/DefaultSuggestion.tsx","components/skipper/Autosuggest/DefaultSuggestionContainer.tsx","components/skipper/Autosuggest/Autosuggest.tsx","styles/skipper/createReadablePalette.js","styles/skipper/ReadableThemedComponent.tsx","pages/OrgChart/helpers/useOrgChartSettingsFetch.ts","pages/Profile/fetches/assistantsFetch.ts","pages/Profile/fetches/assistantOfFetch.ts","pages/Profile/components/Header/helpers/getAnniversaryDateContent.ts","components/People/Separated/DetailedCopy.js","components/People/Separated/DetailDialog.js","components/People/Separated/styles.js","components/People/Separated/Chip.js","components/BannerPortal/BannerPortal.tsx","components/profile/AvatarCropper/AvatarCropper.js","config.js","store/orgChart.ts","helpers/createEntityPictureUrlFromColor.js","helpers/subdomainIs.ts","helpers/skipper/usePortalPlaceholder.tsx","helpers/useFullscreen.ts","components/Loader/ErrorView.js","components/Icons/Apple2.js","components/Icons/AddressBook.tsx","components/AdvancedSearch/AdvancedSearchForm/DatePicker.js","components/AdvancedSearch/AdvancedSearchForm/DateRangePicker.js","components/AdvancedSearch/AdvancedSearchForm/AutoSuggestTextField.tsx","components/AdvancedSearch/AdvancedSearchForm/Autosuggest.js","components/AdvancedSearch/AdvancedSearchForm/TextField.js","components/AdvancedSearch/AdvancedSearchForm/AdvancedSearchForm.js","components/AdvancedSearch/AdvancedSearchForm/index.js","components/AdvancedSearch/SearchFooter/index.js","components/AdvancedSearch/AdvancedSearch.js","components/AdvancedSearch/index.js","components/BigSearch/Results/LayoutContext.ts","components/BigSearch/Results/Columns/Column.js","components/BigSearch/styles.js","components/BigSearch/Results/Items/Item.js","components/BigSearch/Results/Items/ResultItemPropTypes.js","components/Link/SearchLink.js","components/BigSearch/Results/Items/Highlighter.js","components/BigSearch/Results/Items/AggregateItem.js","components/BigSearch/Results/Columns/AggregatesColumn/AggregatesColumn.js","components/BigSearch/Results/Columns/AggregatesColumn/index.js","components/BigSearch/Results/Items/ItemInfo.js","components/BigSearch/Results/Items/EntityItem.tsx","components/BigSearch/Results/Columns/EntitiesColumn.js","components/BigSearch/Results/Items/PersonItemInfo.js","components/People/Separated/Icon.js","components/People/Avatar/Avatar.js","components/Link/PersonLink.js","components/BigSearch/Results/Items/PersonItem.js","components/Link/FieldLink.js","components/Icons/Email.js","components/Icons/OfficePhone.js","components/Icons/SmartPhone.js","components/BigSearch/Results/Items/PersonCardItem/PersonCardItem.js","components/BigSearch/Results/Items/PersonCardItem/index.js","components/BigSearch/Results/Columns/PeopleColumn.js","components/Link/EntityLink.js","components/BigSearch/Results/Items/RecentSearchItem.js","components/BigSearch/Results/Columns/RecentSearchesColumn/RecentSearchesColumn.js","components/BigSearch/Results/Columns/RecentSearchesColumn/index.js","components/BigSearch/Results/index.js","components/BigSearch/Results/createLayout.js","components/BigSearch/Results/Columns/columnForResult.js","components/Icons/MagnifyingGlass.js","components/BigSearch/NoResults.js","components/Icons/AdvancedSearchIcon.js","components/BigSearch/SearchInput.js","components/BigSearch/SearchRow.js","components/BigSearch/BigSearch.js","styles/skipper/useOriginalTheme.ts","components/BigSearch/index.js","components/skipper/VerticalScrollHinter/VerticalScrollHinter.tsx","components/skipper/PersonList/PersonList.tsx","pages/OrgChart/components/IeSucksBanner/IeSucksBanner.tsx","components/skipper/Random/Random.tsx","components/PoweredBySift/PoweredBySift.js","components/Terminology/Terminology.js","components/Terminology/index.js","styles/skipper/hasBadContrast.ts","components/search/consts.ts"],"names":["createPictureUrlFromColor","primaryColor","lineColor","readableColor","encodeURIComponent","oneLine","key","localStorage","getItem","e","value","setItem","removeItem","palette","brandColors","siftBot","main","secondaryPalette","cobalt","action","infoHover","separated","border","divider","info","success","indicatorColors","parakeet","error","fire","contrastText","warning","gold","outline","opacity","transparentizeAmount","navItem","fourPercent","eightPercent","twelvePercent","thirtyEightPercent","seventyEightPercent","eightySevenPercent","ensureColors","deepmerge","skipperDefaultPalette","createTheme","skipperDefaultTheme","presence","online","busy","away","offline","unknown","page","width","pageMaxWidth","navWidth","customSpacing","dialog","sectionMargin","sectionDividerMargin","profile","position","marginTop","components","MuiAccordion","styleOverrides","root","boxShadow","shadows","MuiButton","contained","text","padding","defaultProps","color","MuiLink","underline","MuiButtonGroup","MuiCard","MuiCheckbox","primary","MuiDialogActions","MuiDialogContent","MuiDialogContentText","marginBottom","typography","subtitle2","gray1","MuiDialogTitle","h5","display","body1","MuiFormLabel","MuiFormHelperText","MuiListItemText","secondary","MuiMenu","paper","MuiTooltip","tooltip","subtitle1","MuiTable","caption","createSkillsInterestsColors","defaultAccentColor","hasBadContrastWithWhite","hasBadContrast","mainColor","dark","skills","createPaletteColor","interests","theme","createSkipperTheme","defaultTheme","createThemeFromPrimarySecondary","logoUrl","vanillaTheme","createThemeFromApi","apiResponse","settings","backgroundUrl","pictureUrl","vanillaPrimary","vanillaSecondary","THEME_FETCH","THEME_FETCH_ERROR","activeUserTheme","type","payload","removeUserTheme","fetchTheme","dispatch","getState","themeId","previewThemeId","pathParts","window","location","pathname","split","length","identifier","setTheme","removePreviewTheme","ACTION_HANDLERS","state","userThemeActive","user","undefined","DATA_SERVICE_ACTION_HANDLERS","CLIENT_FETCH_SUCCESS","clientTheme","_get","client","mergeLoading","afterMergeSuccess","mergeSuccess","preview","getFetchedTheme","data","afterMergeError","mergeError","mapThemeChangesToStorageSaves","store","observableStore","pipe","map","getThemeToUse","getContrastText","distinctUntilChanged","_isEqual","subscribe","storage","memoizeLast","resiftFetch","getFetch","object","status","isUnknown","Status","States","LOADING","initialState","includes","getInitialPreviewThemeId","fetches","objects","createReducer","useSlideInfo","contextValue","useContext","RunnerContext","match","useRouter","path","Error","config","currentSlideIndex","slides","findIndex","slide","toLowerCase","firstSlide","displayName","fieldKey","field","nextSlideLink","currentSlide","_nextSlideLink","fieldMap","displayNameFromSlides","displayNameFromField","Element","prototype","Document","DocumentFragment","forEach","item","hasOwnProperty","Object","defineProperty","configurable","enumerable","writable","argArr","Array","slice","call","arguments","docFrag","document","createDocumentFragment","argItem","isNode","Node","appendChild","createTextNode","String","this","insertBefore","firstChild","SUPPORT_MESSAGE_CREATE","SUPPORT_MESSAGE_UPDATE","SUPPORT_MESSAGE_ATTACHMENTS_ADD","toggleSupportDrawer","createSupportMessage","body","query","updateSupportMessage","messageId","addAttachments","name","supportDrawerIsOpen","supportTicket","sent","ERROR","NORMAL","supportDrawerReducer","handler","getIsInMsTeams","microsoftTeams","parent","self","nativeInterface","FETCH_AUTOCOMPLETE","fetchAutocomplete","requestResolve","RequestResolve","CANCEL","updateQuery","clearQuery","toggleBigSearch","forceSetState","closeBigSearch","searchStatus","results","totalLength","EMPTY","suggestions","firstLoad","FETCH_TEAM","fetchTeamStatus","FETCH_TEAM_SUCCESS","teamBucket","items","header","team","FETCH_TEAM_ERROR","open","FETCH_RECENT_SEARCHES","fetchRecentSearchesStatus","FETCH_RECENT_SEARCHES_SUCCESS","recentSearchBucket","recentSearches","FETCH_RECENT_SEARCHES_ERROR","UPDATE_RECENT_SEARCHES","UPDATE_RECENT_SEARCHES_SUCCESS","UPDATE_RECENT_SEARCHES_ERROR","DELETE_RECENT_SEARCHES","DELETE_RECENT_SEARCHES_SUCCESS","DELETE_RECENT_SEARCHES_ERROR","DELETE_RECENT_SEARCH","DELETE_RECENT_SEARCH_SUCCESS","DELETE_RECENT_SEARCH_ERROR","SIFT_MARKETING_SITE","ATTRIBUTE_PATH","SKIP_TRANSLATE_FIELDS","SKIP_TRANSLATE_FIELD_NAMES","primaryPalette","violet","matched","logomarkDotColors","grayScale","iron","gray2","hint","background","canvas","appCanvasColor","lightBlueCanvas","borderColor","grey","common","black","cloud","infoActive","darken","tiger","quaternaryPalette","watermelon","Transition","React","forwardRef","props","ref","Slide","direction","ErrorBoundary","hadError","errorCode","onRefresh","reload","handleClose","setState","message","str","hash","i","charCodeAt","Sentry","scope","setTag","toString","onError","className","children","fullScreen","errorView","subtitle","href","Button","sx","variant","onClick","Dialog","TransitionComponent","Box","flex","justifyContent","IconButton","Component","withStyles","showSurveyCallback","declineSubmittedCallback","responseSubmittedCallback","score","comment","Intercom","last_wootric_score","last_wootric_comment","date","Date","last_wootric_declined_at","Math","round","getTime","last_wootric_surveyed_at","wootricSettings","email","external_id","id","account_token","survey_callback","decline_callback","response_callback","delay","wootric","currentSnackbar","snackbarText","UPDATE_SETTINGS_SUCCESS","UPDATE_ENTITY_SUCCESS","UPDATE_ENTITY_RELATIONSHIP_SUCCESS","SIFT_BOT_FETCH_ERROR","SIFT_BOT_OPT_OUT_ERROR","APP_NAME","version","APP_VERSION","platform","nextFetchInterval","moment","add","Fetch","timezoneDisplayNames","getTimezoneDisplayNames","tz","guess","rootReducer","combineReducers","advancedSearch","app","authentication","bigSearch","configurations","core","entities","search","support","page_smsapp","searchResults","dataService","listSearch","timezoneAndWorkHours","orgChart","PROFILE_HEADER_LAYOUT_KEYS","PROFILE_CONTENT_LAYOUT_KEYS","getIsInMsTeamsEmbed","unauthorizedHandler","isInMsTeams","isInMsTeamsEmbed","url","subdomain","getSubdomain","variable","vars","substring","pair","decodeURIComponent","getQueryVariable","LOGIN","DataServiceActionHandlers","dataServiceActionHandlers","FETCH_ME","httpMethod","HTTPVerb","GET","route","configType","FETCH_SEARCH","UPDATE_SETTINGS","PUT","person","FETCH_FIELD_AUTOCOMPLETE","fieldId","POST","DELETE","index","FETCH_ENTITY","entityId","FETCH_ENTITY_TYPES","FETCH_TAGS","objectKey","UPDATE_ENTITY","UPDATE_ENTITY_RELATIONSHIP","relationship","APP_SMS_SEND","upload","FIELD_AUTOSUGGEST_ITEM_FETCH","targetId","FIELD_AUTOSUGGEST_FETCH","searchTerm","SIFT_BOT_FETCH","userId","SIFT_BOT_READ","SIFT_BOT_OPT_OUT","_","getAuthToken","prefix","urlParse","hostname","cookie","get","http","createHttpService","getHeaders","Authorization","createDataService","services","compose","AnalyticsProvider","identify","analytics","clientId","clientName","clientSubdomain","firstName","lastName","title","company","company_id","withScope","captureException","track","event","properties","previousProps","Provider","connect","ownProps","muiCache","createCache","prepend","ThemeProvider","themeState","useSelector","themeToUse","useMemo","PortalProvider","useState","contentEls","setContentEls","setContentEl","useCallback","portalId","contentEl","previousContentEls","removeContentEl","entries","filter","reduce","acc","Checked","height","fill","fillRule","clipRule","d","maskUnits","x","y","mask","useStyles","makeStyles","minWidth","variantSuccess","backgroundColor","iconVariantSuccess","marginRight","SnackbarProvider","classes","iconVariant","windowAppState","appState","api","bridge","getInitialState","DataService","middleware","thunk","dataServiceMiddleware","composeEnhancers","withSideEffects","createStore","applyMiddleware","asyncReducers","setStore","customIntegrations","isMobileView","AppProvider","forceRefresh","LocalizationProvider","dateAdapter","AdapterMoment","maxSnack","style","anchorOrigin","vertical","horizontal","makeGetAppVersionStatus","defineFetch","make","request","method","req","set","STATIC_AUTH_TOKEN","ok","AppFetcher","useDispatch","shortId","intervalKey","setIntervalKey","updateKey","setUpdateKey","useInterval","getAppVersionStatus","getIntervalKey","useWrap","useEffect","clientSettings","hasUserConfig","_has","hasEntityTypes","hasSiftBotFieldsNotCompleted","products","shouldFetchSiftBot","siftBotLoaded","loaded","getClientOrgChart","fetchMe","fetchEntityTypes","fetchClient","expand","getTasks","fetchSiftBot","useFetchSiftBotEffect","configureScope","setUser","useConfigureSentryEffect","bridgeGetTheme","useSendThemeBridgeEffect","loadingContainer","querySelector","classList","setTimeout","parentNode","removeChild","useRemoveLoaderEffect","queryString","parse","acfwc","__hippo","replace","directory","useRedirectEffect","history","useData","isCompatible","recommendUpdate","listen","useUpdateApp","EntityPage","lazy","LandingPage","SettingsPage","ListsPage","ListPage","ProfilePage","PersonPage","OrgChartPage","NotificationsPage","NoRoutePage","OnboardingPage","SmsFormPage","ThemeLoaderPage","SearchPage","AttributePage","Landing","component","exact","Search","Attribute","Lists","Entity","EntityMembers","SmsForm","Settings","Profile","Person","OrgChart","Notifications","ThemeLoader","Onboarding","NoRoute","empty","useExploreEnabled","exploreIsEnabled","personIsAdmin","useCustomNavLinkSettings","customNavLinkSettings","customNavLinkEnabled","customNavLinkDisplayName","customNavLinkUrl","useNavDropdownRoutes","personId","orgChartEnabled","onToggleSupportDrawer","hostDomain","getHostDomain","exploreEnabled","supportEnabled","settingsEnabled","isAdmin","useIsAdmin","additionalRouteItems","secondaryNavigationItems","settingsRoute","supportRoute","customNavRoute","externalUrl","adminRoute","navBarRoutes","SEARCH_PATH","ENTITY_TYPE_USER","accountRoutes","additionalRoutes","routeProps","join","msTeamsRoutes","isWhitish","getContrast","evaluateSubdomainMapValue","element","SubdomainConditional","subdomainMap","subdomainOnTest","exec","getTestSubdomain","maybeElement","real","test","default","propTypes","PropTypes","isRequired","searchBarContainer","searchIcon","left","readableColorForWhite","topNavIcon","spacing","placeholderText","whiteSpace","overflow","textOverflow","NavSearchInput","searchBarClass","defaultPlaceholderText","meridian","to","directoryApp","apps","find","getAppFromLinkPathname","base","trim","AppLink","activeClassName","restOfProps","origin","ExternalMenuLink","target","rel","MenuItem","menuItem","sectionTitle","body2","fontWeight","fontWeightBold","textTransform","menuItemLink","textDecoration","MenuItems","_classes","onClose","onMsTeamsLogout","allClasses","assign","classNames","Divider","_isEmpty","getBackgroundColor","light","marginLeft","alignItems","cursor","link","borderRadius","originalPrimary","linkActive","linkPrimary","alpha","active","hoverOpacity","linkSecondary","originalSecondary","icon","iconPrimary","iconSecondary","avatarContainer","avatarNew","container","flexDirection","maxWidth","menuPaper","top","PersonMenu","avatarFromProps","avatar","onProfileClick","useTheme","openPopover","setOpenPopover","anchorEl","setAnchorEl","handleOpen","currentTarget","accountOnly","_alternateFieldValues","altDisplayName","primaryDark","defaultPictureUrl","Avatar","alt","personClasses","classnames","iconClasses","rootClasses","hasProfile","menu","Menu","renderDisplayName","SkipTranslate","Typography","aria-label","NavPersonMenu","_pictureUrl","preferOfficialPhotos","officialPictureUrl","getPictureUrl","WebkitMaskImage","bowser","safari","img","textAlign","objectFit","msie","transform","AvatarOld","_src","src","rootRef","useRef","setWidth","setHeight","setHadError","updateSizing","rootEl","current","rect","getBoundingClientRect","sizedSrc","stringify","role","Container","pictureUrlFromProps","pictureUrlFromPerson","usePictureUrlFromPerson","ensurePictureUrl","minHeight","headerLink","headerAvatar","headerArrowContainer","headerArrow","drawerPaper","copyEllipsis","AppDrawer","avatarContent","Drawer","navIcons","hamburgerIcon","NavHamburgerMenu","setOpen","handleToggleDrawerOpen","NavBackAndForwardButtons","useHistory","canGoForward","setCanGoForward","canGoBack","setCanGoBack","setNavigationChangedHandler","changedHandler","goBack","size","goForward","NavButton","toPath","notToPath","useLocation","routeActive","boxSizing","fontFamily","lineHeight","letterSpacing","transition","NavigationLink","useAnalytics","category","CustomNavLink","NewTabDiv","v","fr","ip","op","w","h","nm","ddd","assets","layers","ind","ty","sr","ks","o","a","k","ix","r","p","s","ao","shapes","it","c","mn","hd","sk","sa","np","cix","st","bm","n","t","markers","LottieAnimation","loop","autoplay","animationData","stop","pause","options","defaultOptions","rendererSettings","preserveAspectRatio","isStopped","isPaused","BellIcon","lottieRef","el","querySelectorAll","Bell","visibility","bellContainer","zIndex","surface","hoverBackground","badge","fontSize","right","NotificationBell","tasks","numberOfUnseenActivityItems","seenAt","notificationCountToShow","label","AdminIcon","SvgIcon","viewBox","iconButton","AdminNavLink","Tooltip","placement","Admin","logo","tabletDownOnlyIconsContainer","personMenuRootClasses","transparentize","personMenuName","DefaultNavigation","dropdownRoutes","responsiveClasses","onClickSearch","useWidth","isOnDesktopApp","handleProfileClick","tabletContainer","routeContainer","EXPLORE_PATH","getClearAuthToken","makeGetClearAuthToken","MsTeamsNavMenu","routes","onCloseMenu","navAndSearchInputWrapper","menuItems","MsTeamsNavigation","searchTextColor","rootBoxShadow","modal","searchBar","white","hide","bigSearchOverrides","bigSearchIcon","Navigation","fullscreen","useFullscreen","isOnHomePage","clientOrgChart","isOnboarding","matchPath","isOnSettingsPageOnMobile","isFullscreen","mapDispatchToProps","openFilterDrawer","withRouter","currentTheme","q","CoreSnackbar","Snackbar","currentSnackbarOpen","expireSnackbar","autoHideDuration","PureComponent","drawerSection","headerRow","borderBottom","headerSubtitle","headerIcon","inputSpacing","buttonsRow","dropzoneOverlay","bottom","dragAndDropMessage","margin","attachmentRow","filesContainer","clearFiles","alignSelf","fileName","attachments","SupportDrawerForm","userEmail","onSubmit","subject","setSubject","setMessage","setAttachments","showFileError","setShowFileError","onDrop","files","addedFiles","file","fileHasSameName","count","push","handleChangeSubject","handleChangeMessage","onClearFilesUploaded","handleSubmit","submitButtonCopy","isLoading","noClick","getRootProps","getInputProps","isDragActive","isErrorView","TextField","fullWidth","onChange","maxLength","multiline","maxRows","rows","disabled","supportTicketFiles","splice","removeAttachmentByIndex","Success","stroke","strokeWidth","points","button","CompletedForm","SupportDrawer","openDrawer","completedForm","setCompletedForm","previousOpenDrawer","usePrevious","anchor","max","ModalProps","disableEnforceFocus","Support","mobilePlatforms","android","displayText","ios","banner","spacer","deviceIcon","MobileAppGetter","mobile","tablet","deviceDisplay","Paper","elevation","ThemeSnackbar","ThemeOverrideComponent","handleRefresh","breakpoints","down","rootButton","UpdateBanner","enqueueSnackbar","useSnackbar","queryParams","inactiveTime","setInactiveTime","resetTimer","_throttle","addEventListener","versionUpdate","_queryParams","removeEventListener","secondsFromLastReset","diff","square","BANNER_TEXT","trialBanner","leftSide","flexWrap","bannerInfo","bannerText","buttonContainer","up","reachOut","sky","closeContainer","paddingTop","closeButton","closeIcon","FreeTrialBanner","trialDaysRemaining","over14DaysRemainingMessage","orientation","flexItem","childrenRoot","ieBanner","textDecorationColor","bannerContentMargin","CoreLayout","bannerOpen","setBannerOpen","trialEndDate","assignedAt","currentDay","then","scrollTo","BannerPlaceholder","usePortalPlaceholder","BannerPortal","isTrial","IeSucksBanner","useSecondaryColor","content","Link","ReadableThemedComponent","overflowY","SearchOverlay","toggle","escFunction","Portal","Fade","in","unmountOnExit","BigSearch","originalTheme","SearchOverlayChildren","chatId","teamsDarkTheme","siteVariables","unit","colors","270","colorScheme","sift","backgroundPurple","labelGrey","TeamsThemeContext","createContext","overflowX","MsTeamsMainTheme","styles","getPathDepth","Boolean","list","listItem","ParticipantsList","attendeeList","personListItems","media","Image","endMedia","ChevronEndIcon","Text","List","navigable","themeContext","AttendeesDataContext","ProfileHeaderItem","Flex","gap","vAlign","Tenure","anniversaryDate","tenure","getAnniversaryDateContent","CalendarIcon","Pronouns","pronounsDisplay","isOther","_keyBy","validation","postChildren","_selectOptions","code","SpeakerPersonIcon","WorkSchedule","timezone","currentTime","format","AM_PM_FORMAT","ShiftActivityIcon","ToggleTruncateButton","truncated","ProfileSection","sectionHeader","onToggleMore","column","Header","as","hAlign","Bio","needTruncation","setTruncated","displayValue","paddingLeft","paddingRight","fontWeightSemibold","Chip","chip","Interests","interestItems","displayInterestItems","wrap","interest","data-testid","levelSquare","filledLevelSquare","brand","foregroundHover","SkillLevel","level","aria-hidden","borderWidth","borderStyle","levelName","levelRow","SkillCard","skill","levelDisplayName","LEVEL_DESCRIPTIONS","space","Skills","componentRegistry","inclusivePronouns","bio","skillItems","_partition","isFeatured","featuredSkills","restOfSkills","orderedSkills","skillsToDisplay","NamePronunciation","audio","Audio","play","VolumeUpIcon","iconOnly","h1","Headings","hasNamePronunciation","Layout","nav","backArrow","PersonProfile","fields","usePassiveRedux","fieldKeys","keys","headerKeys","_intersection","contentKeys","fullProfileUrl","siftAppPath","context","JSON","subEntityId","MICROSOFT_APP_ID","makeMsTeamsDeepLinkUrl","ChevronStartIcon","OpenOutsideIcon","image","pop","attendee","MsTeamsMain","prevLocation","flipToChildPage","TransitionGroup","CSSTransition","timeout","enter","mountOnEnter","SiftLogo","xmlns","section","InfoPageLayout","InsufficientPermission","isFetching","meetingAttendeesFetch","makeGetMeetingAttendeesFetch","attendeesFetchData","fetchStatus","useStatus","participantFetchStatus","SiftRouter","settingsFetch","makeSettingsFetch","hasSomeFields","values","isTruthy","some","onboardingMatch","completedSlides","usePreserveReference","lastSlide","next","nextSlide","subdomainIs","isNormal","useOnboardingRedirectEffect","WrapperComponent","Fragment","fallback","Loader","App","Router","MsTeamsThemeWrapper","aside","workBetter","together","paragraph","buttons","signupInfo","MsTeamsLogin","authenticate","successCallback","redirectTo","failureCallback","startIcon","WrappedComponent","MsTeamsLoginSuccess","intro","footer","consent","TeamsLogin","iconPosition","getElementById","createRoot","render","close","SENTRY","init","dsn","environment","ENV","ignoreErrors","_captureException","hj","_hjSettings","hjid","hjsv","getElementsByTagName","createElement","async","catch","types","PERSON_ENTITY_TYPE_KEY","objectsAndIds","cur","ids","EntityReducer","createPortal","paletteColorName","augmentColor","getLoading","getNormal","statuses","every","getError","hasError","overlay","loader","overlayTransparent","appear","appearActive","enterActive","exit","exitActive","classesFromProps","transitionTimeout","isLoadingView","isEmptyView","rest","transitionClasses","stateView","CircularProgress","isEmpty","isError","visible","fontKey","optOutSiftBot","reason","setEditField","actionHandlers","readAt","editFieldObjectKey","fieldsNotCompleted","fieldsCompleted","MuiChip","copyContainer","copy","subtitleBold","fontWeightRegular","startButton","imageContainer","StartPage","companyName","usePageTrackingEffect","linkedInImportEnabled","backgroundSize","backgroundPosition","backgroundRepeat","Start","outerButtonsContainer","buttonsContainer","linkedinButton","buttonText","or","LinkedInFork","share","namespace","linkedInFile","formData","FormData","append","linkedInData","userOnboarding","settingsWithLinkedIn","_merge","removeKeys","contrastButtonTheme","paperAccept","tertiaryPalette","lime","paperReject","dropCopy","fileUploadDisplay","fileDisplay","fileDisplayContinue","iconAndName","waitButtonContainer","continueButton","checkMarkIcon","snackbarRoot","buttonDisabled","LinkedInUploader","onAcceptFile","onContinue","onDeleteFile","useDropzone","acceptFiles","firstFile","accept","isDragAccept","isDragReject","rootProps","AppBarPortal","ContrastButton","CheckMarkIcon","setFile","updateLinkedInFetch","makeUpdateLinkedInFetch","handleContinue","analyticsOptions","CLICKED","feature","USER_ONBOARDING","useLinkedIn","WarningIcon","backContainer","linkedinField","fieldTextContainer","iconAndField","LinkedInResults","useValidSlides","getValidation","isArray","toLocaleString","pluralize","isValid","useIsLastSlide","validSlides","currentSlidePath","newSlide","linkedInFieldToRemove","settingsWithCompletedSlides","expanded","panelDetails","AccordionSummary","AccordionItem","autoOpen","setExpanded","Accordion","expandIcon","AccordionDetails","exampleCopy","AttributeAccordion","people","term","requiredFieldKeys","terminology","useTerminology","examplePeopleFetch","makeExamplePeopleFetch","response","result","node","_noop","disableLinks","noReadMore","topContainer","description","fontWeightSemiBold","fromLinkedIn","dialogContent","SkipDialog","onSkip","DialogTitle","DialogContent","DialogContentText","DialogActions","inputContainer","skipButton","FieldTemplate","isLastSlide","input","showSkipConfirmation","showNavigationConfirmation","skipDialogOpen","setSkipDialogOpen","when","FieldTemplateContainer","linkedIn","okayToNavigate","setOkayToNavigate","linkedInValue","initialValue","updateProfileFetch","makeUpdateProfileFetch","updateCompletedSlidesFetch","makeUpdateCompletedSlidesFetch","editValue","setEditValue","useValidation","getHistory","updateOnboardingStateFetch","handleSkip","fieldDescription","skillCount","mode","currentValue","onCurrentChange","defaultTouched","ObjectCollectionTemplate","replacePlaceholderPhoto","columns","officialPhoto","customPictureContainer","customPictureContainerEmpty","editingPhotosOverlayCenter","changeYourProfilePhoto","customPicture","controls","fileInputButton","PhotoUploader","clientDisplayName","customPictureUrl","initValue","editValueDataUri","setEditValueDataUri","cropping","setCropping","areYouSureOpen","setAreYouSureOpen","showPrompt","setShowPrompt","handleCancelAreYouSure","handleDrop","acceptedFiles","acceptedFile","getBase64","base64","preventDropOnDocument","AvatarCropper","onCrop","croppedDataUri","reader","FileReader","readAsDataURL","onload","slideInfo","uploadPictureFetch","makeUploadPictureFetch","dataUri","startsWith","autocomplete","personList","PeopleListEditor","currentPersonId","inputRef","personValue","setPersonValue","errorHelperText","setErrorHelperText","handleSelectPerson","PersonAutocomplete","newValue","onSelectPerson","helperText","PersonList","formControl","radioGroup","peopleEditor","transitions","create","duration","complex","maxHeight","peopleEditorHidden","pointerEvents","Assistants","assistantsFromProps","assistants","assistantOfFromProps","assistantOf","setAssistants","setAssistantOf","hasAssistants","setHasAssistants","hasAssistantOf","setHasAssistantOf","assistantsInputRef","assistantOfInputRef","assistantsUpdated","assistantsInputEl","focus","assistantOfInputEl","FormControl","FormLabel","indefinite","RadioGroup","FormControlLabel","control","Radio","assistantsFetch","makeAssistantsFetch","assistantOfFetch","makeAssistantOfFetch","profileFetch","makeProfileFetch","newData","Promise","all","confetti","ConfettiPage","useWindowSize","process","REACT_APP_SUBDOMAIN_MOCK","whiteStroke","avatarStroke","strokeOpacity","shortIdForClipPath","clipMaskId","cx","cy","clipPath","xlinkHref","isEntity","specialPictureUrl","pictureUrlFromColor","createEntityPictureUrlFromColor","generate","parseDate","maybeDateAttributeValue","from","fromString","toDate","transformToQueryParams","selectedAttributeValues","attributeKey","upperKey","toUpperCase","arr","pageSizeOptions","searchExploreAction","entityTypeTypeKey","clear","pageSize","sortBy","mergeAdditionalFilters","sortDirection","filterCounts","filters","removeFalsyKeys","searchResultsByEntityTypeAction","makeSearchExploreFetch","makeSearchResultsByEntityTypeFetch","makeGroupMessageFetch","openFilters","closeFilters","openGroupEmail","closeGroupEmail","openGroupMessage","closeGroupMessage","openExportDialog","closeExportDialog","filtersOpen","groupEmailOpen","groupMessageOpen","exportOpen","callback","savedCallback","setInterval","clearInterval","useLayoutEffect","bgColor","shouldUseColoredDots","shouldUseBlack","getLuminance","returnColor","bubbleGumDot","salmonDot","tigerDot","goldDot","whiteOrBlack","Sift","_backgroundColor","updateSettings","objectNotation","AUTH_PERSON_FETCH_SUCCESS","tour","customColumns","education","experience","languages","onboardingState","makeOnboardingStateFetch","obj","keysToRemove","ret","isValidColor","parseToRgb","normalizeColor","toColorString","defaultPalette","ensureLightMainDark","defaultPaletteMain","derivedLightDark","ensureRequiredPaletteKeys","ensuredColors","fontWeightExtraLight","fontWeightLight","fontWeightMedium","fontWeightBlack","h2","h3","h4","h6","overline","special","h4InBar","h5SemiBold","body1Bold","body2Bold","_properties","skipTranslation","AnalyticsContext","setAttribute","overrideTheme","previousTheme","getOrCalculateOverrideTheme","personPictureUrl","fetchFieldAutocomplete","aggSearchTerm","createActionHandlers","landingReducer","reverse","output","matches","useMediaQuery","highlight","Highlighter","highlightClassName","searchText","chunks","findAll","autoEscape","searchWords","textToHighlight","elements","chunk","substr","start","end","bubblegum","salmon","amethyst","eggplant","lavender","navy","artic","moss","pine","merlot","rose","banana","gray3","paperCardsColor","arg","fetchTeam","fetchRecentSearches","updateRecentSearches","deleteRecentSearches","deleteRecentSearch","searches","lastTagSearch","acItem","originalPayload","suggestionMappings","searchReducer","merge","previous","additionalProperties","_pickBy","partialPerson","Org","makeGetTasks","compareColor","getDerivedLocationFromProps","_location","defaultTitle","Random","oneOf","defaultSubtitle","ErrorView","ErrorFace","rx","ry","makeGetClientOrgChart","hashDate","utc","isDate","createDisplayNameFromCamelCase","camelCase","letters","almostNormalCase","letter","firstLetter","getAttributeValuesFromObject","params","flattened","attributeValue","_value","attributeDisplayName","sendSmsApp","phoneNumber","operatingSystem","resetSms","settingsReducer","assistantsEnabled","socialPhotosEnabled","timezoneGuess","_tzNames","timezoneDisplayNameMappings","timezones","utcOffset","_sortBy","tzItem","displayNames","portalContext","PortalContext","ReactDOM","SeparatedCopy","separationText","separationImplicit","separationDate","translate","OutlinedTextField","labelVisuallyHidden","labelContainer","screenReaderOnly","inputProps","useEntityTypeTypeKeyFromUrl","regex","RegExp","parseOrDefault","_str","defaultValue","parsed","parseInt","isNaN","useLocationProps","typeKey","useEntityTypeConfig","graphType","locationProps","stringifyLocationProps","setPictureUrlIndex","pictureUrlIndex","setEditingPhotos","editingPhotos","toggleOpenGeneralSettingsModal","toggleOpenViewProfilePicturesModal","toggleAudioEditorModal","editAudioEditor","audioEditor","generalSettingsModalOpen","viewProfilePicturesModal","audioEditorModalOpen","defaultTerminology","teamMember","teamMember_plural","singular","plural","descriptions","you","thirdPerson","levelNameLookup","typeKeyFromUrl","getConfiguration","makeGetConfiguration","userConfig","shape","rootHighlight","PersonSuggestion","isHighlighted","getPeopleFromResults","peopleResult","_flatten","renderSuggestionFromProps","renderSuggestion","getEndpointFromProps","getEndpoint","getSuggestionsFromResult","getSuggestionValue","AutosuggestProps","onSuggestionSelected","suggestion","highlightFirstSuggestion","WEEK_DAY_NAMES","WEEK_DAY_ABBREVIATIONS","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","DEFAULT_WORK_HOURS","startTime","hour","minute","endTime","DEFAULT_WORK_HOURS_AND_LOCATION_BY_DAY","day","INITIAL_WEEK_DAY_EDIT_ERRORS","workSchedule","LOCATION_LOOKUP","REMOTE","HomeIcon","OFFICE","ApartmentIcon","FLEXIBLE","FlexibleWorkIcon","Popper","externalRootRef","popperEl","setPopperEl","setTop","setLeft","handleInterval","popper","suggestionsPaper","suggestionsContainer","suggestionsContainerOpen","suggestionsList","listStyleType","identity","Autocomplete","fetchDefaultSuggestions","Suggestion","onFocus","postSuggestions","filterSuggestions","textFieldProps","useClearFetch","instanceId","autocompleteFetch","makeAutocompleteFetch","_suggestions","suggestionsFilter","shouldRenderSuggestions","renderInputComponent","onBlur","onKeyDown","restOfInputProps","onSuggestionsFetchRequested","onSuggestionsClearRequested","autocompleteResult","autosuggestParams","renderSuggestionsContainer","containerProps","restOfContainerProps","autosuggestOnSuggestionSelected","relationships","configuration","resolve","reject","err","NewTabLink","handleListSearchType","handleSelectSearchType","handleSelectMenuItem","searchValue","currentSearchOption","selectedItems","makeOrgChartSettingsFetch","orgChartSettingsFetch","typedFetchFactory","typedMakeOrgChartSettingsFetch","dataUrl","httpParams","renderDefaultTextInput","placeholder","autoFocus","otherInputProps","renderDefaultSuggestion","parts","selected","part","DefaultSuggestionsContainer","paperProps","Autosuggest","DefaultTextField","DefaultSuggestion","other","createReadablePalette","onColor","fixedTheme","_getOrCalculateFixedTheme","createContextFetch","useOrgChartSettings","useContextFetch","OrgChartSettingsProvider","ContextFetchProvider","_entityRelationships","assistantIds","parsedDate","now","years","months","yearsPart","_monthsPart","startedDate","tenureWithStartDate","SeparatedDetailedCopy","SeparatedDetailDialog","handleClickOpen","aria-labelledby","aria-describedby","separatedBackground","SeparatedChip","scale","setScale","cropperElement","rotate","min","step","getImage","toDataURL","module","exports","setPrevHighlightColorsLookupArray","prevHighlightColorsLookupArray","setExcludedNodeIds","excludedNodeIds","inputSubdomain","normalized","__portalId","setIsFullscreen","getIsFullscreen","handleFullscreenChange","toggleFullscreen","exitFullscreen","requestFullscreen","defaultCopy","Apple2","AddressBook","CustomTextField","styled","borderBottomColor","DatePicker","setHelperText","hasBadContrastWithPaper","hasBasContrast","contrastColorForPaper","inputFormat","leftArrowIcon","rightArrowIcon","views","renderDay","_date","_selectedDates","pickersDayProps","PickersDay","pickersDayClasses","today","renderInput","DateRangePicker","fromProps","toProps","onFieldChange","maxDate","disableFuture","AutoSuggestTextField","InputProps","InputLabelProps","FormHelperTextProps","otherProps","handleChange","suggestionValue","msFlexFlow","gridItem","textField","AdvancedSearchForm","autocompleteResults","fieldValue","nextFormValue","layout","layouts","Grid","layoutItem","fieldView","autoComplete","md","xs","disabledBackgroundColor","clearButton","searchButton","searchButtonDisabled","SearchFooter","clearSearch","onSearch","AdvancedSearch","formValue","setFormValue","handleSearch","preventDefault","memo","useAction","LayoutContext","itemsHeight","maxColumnHeight","primaryMainColor","skillsMainColor","interestsMainColor","shouldApplySkillsBorder","shouldApplyInterestsBorder","topMatch","chipMargin","flexFlow","Column","itemsStyle","isTopMatch","isSkillOrInterest","titleContent","card","standard","bigSearchStyles","analyticsCardObject","analyticsIconObject","recentSearchObject","iconRecentSearchObject","itemStyle","heightForRows","string","SearchLink","linkRoot","highlighter","bottomRow","AggregateItem","ValueComponent","Terminology","casing","AggregatesColumn","total","subOverflow","ItemInfo","topRightIcon","highlighterProps","EntityItem","analyticsLabel","isFieldKeyQuery","handleViewMembersInDirectory","directoryPathname","peopleCount","EntitiesColumn","altName","withAltName","SeparatedIcon","showBorder","avatarClasses","textColor","accent1Color","PersonLink","staticContext","rightIcon","PersonItem","routeToOrgChart","PersonItemInfo","separatedIcon","fieldContent","copyIcon","themedCopyIcon","FieldLink","fieldType","themed","closeSnackbar","handleClickChildren","handleClickCopyIcon","onCopy","EmailIcon","OfficePhone","SmartPhone","isCategoryBlackListed","blackListKey","user_messengers","_params","contentDivider","lighten","headerContent","headerContentName","headerContentAltName","headerContentTitle","headerContentSubtitle","separatedArea","contentItem","contentItemLabels","contentItemIcon","directReportcontentItem","contentItemTitle","contentItemValue","cardContainer","iconAndLabelContainer","orgIcon","goToOrgIcon","ProfileCard","matchedFields","directReports","cardContent","flattenFields","categoryKey","categories","child","concat","displayType","Email","unshift","division","routeToProfile","PersonCardItem","PeopleColumn","peopleToDisplay","personItemWidth","innerWidth","itemPadding","showMargin","nextClasses","EntityLink","entity","RecentSearchItem","deleteSearch","LinkElem","linkText","linkProps","handleDeleteSearch","_last","console","warn","LinkTextComponent","RecentSearchesColumn","buttonRowIcon","buttonRowContent","defaultColumn","marginBottomSpace","removeGridMargin","Results","baseItemHeight","interItemSpacing","numberOfColumnsInResult","createLayout","renderView","widthCalc","columnForResult","renderColumns","MagnifyingGlass","showEllipsis","subheader","clearSearchButton","NoResults","onShowAdvancedSearch","onClearSearch","AdvancedSearchIcon","inputBackground","isIE","inputContainerFocused","caretColor","searchIconContainer","advancedSearchButtonContainer","clearIconContainer","clearIcon","hideClearIcon","advancedSearchIconContainer","advancedSearchButtonContainerAnimate","advancedSearchIcon","SearchInput","handleClear","handleShowAdvancedSearchClick","isFocused","setFocus","select","buttonSize","sm","lg","autoCapitalize","spellCheck","inputEl","titleRow","inputRow","subtitleRow","fontWeightNormal","suggestionChip","userSelect","SearchRow","useAggregateCounts","filterAggregate","handleEnter","searchSuggestions","suggestionsElems","handleSuggestionClick","data-cy","statusRoot","statusContent","searchStatusRoot","loaderEmpty","loaderOverlaytransparent","decomposeColor","paddingBottom","whiteLinkCopy","poweredBySift","footerLine","useOriginalTheme","showAdvancedSearch","setShowAdvancedSearch","teamLeader","teamLeaderEmail","toggleAdvancedSearch","PoweredBySift","withCloseEffect","hocify","first","initialStatus","renderToLayer","ScrollHinter","scrollToTop","showMore","_color","iosScroll","onScrolledToTop","interval","setBottom","setScrollHinters","scrollTop","scrollHeight","newTop","newBottom","clientHeight","startAnchor","scrollIntoView","behavior","textShadow","scroll","onScroll","scrollBottom","scrollEl","endAnchorEl","WebkitOverflowScrolling","enteringScreen","personItem","sortableHelperClass","reorderButton","sortableList","emptyContainer","emptyTitle","emptyDescription","sorting","onDragEnd","destination","oldIndex","source","newIndex","currentItem","withoutOldIndex","withNewIndex","droppableId","provided","VerticalScrollHinter","innerRef","droppableProps","draggableId","draggableProps","dragHandleProps","personIdToDelete","contactLink","browsers","browser","browserImage","browserLabel","dialogOpen","setDialogOpen","dismissed","setDismissed","randomIndex","_random","poweredBy","isEasterEgg","withSpace","teamLeaderSelector","createSelector","teamLeader_plural","colorA","colorB","luminanceA","luminanceB","ENTITIES_PATH","MEMBERS_PATH","LIST_PATH","TABLE_PATH","MATCHED_FIELDS_IN_HEADER","ENTITY_TYPE_PERSON","PERSON_TABLE_START_COLUMNS","PAGE_TABLE_START_COLUMNS","PERSON_TABLE_NAME_COLUMN","PAGE_TABLE_NAME_COLUMN","COLUMN_WIDTH","NAME_COLUMN_WIDTH","MAX_NUM_OF_GROUP_MSG_RECIPIENTS"],"mappings":"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","file":"static/js/main.0bbd52e7.chunk.js","sourcesContent":["import readableColor from 'styles/skipper/readableColor';\nimport { oneLine } from 'common-tags';\n\nexport default function createPictureUrlFromColor(primaryColor) {\n const lineColor = readableColor(primaryColor);\n\n return `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(oneLine`\n \n \n \n \n \n \n \n \n \n `)}`;\n}\n","/*\n * `storage` exists because of a bug with IE in certain environments. specifically, IE would throw\n * an error and crash our app if `localStorage` was accessed. it would give error messages like:\n * \"Access is denied\" or \"The file cannot be accessed by the system.\"\n */\nexport default {\n getItem: (key: string) => {\n try {\n return localStorage.getItem(key);\n } catch (e) {\n return undefined;\n }\n },\n setItem: (key: string, value: string) => {\n try {\n return localStorage.setItem(key, value);\n } catch (e) {\n // eslint wanted something here\n }\n },\n removeItem: (key: string) => {\n try {\n return localStorage.removeItem(key);\n } catch (e) {\n // eslint wanted something here\n }\n },\n};\n","import { deepmerge } from '@mui/utils';\nimport brandColors from 'styles/skipper/brandColors';\nimport ensureColors from './skipper/ensureColors';\nimport skipperDefaultPalette from './skipper/skipperDefaultPalette';\n\nconst palette = {\n brandColors,\n siftBot: {\n main: brandColors.secondaryPalette.cobalt,\n },\n action: {\n infoHover: '#f3f5f9',\n },\n separated: {\n main: '#ed6000',\n },\n border: {\n main: '#e0e6ef',\n },\n divider: '#e5e5e5',\n info: {\n main: brandColors.secondaryPalette.cobalt,\n },\n success: {\n main: brandColors.indicatorColors.parakeet,\n },\n error: {\n main: brandColors.indicatorColors.fire,\n contrastText: '#fff',\n },\n warning: {\n main: brandColors.indicatorColors.gold,\n },\n outline: (opacity = 1) => {\n return `rgba(185, 192, 226, ${opacity})`;\n },\n transparentizeAmount: {\n navItem: 0.49,\n },\n opacity: {\n fourPercent: 0.04,\n eightPercent: 0.08,\n twelvePercent: 0.12,\n thirtyEightPercent: 0.38,\n seventyEightPercent: 0.78,\n eightySevenPercent: 0.87,\n },\n};\n\nexport default ensureColors(deepmerge(skipperDefaultPalette, palette));\n","import palette from './palette';\nimport { createTheme } from '@mui/material/styles';\nimport { deepmerge } from '@mui/utils';\nimport typography from 'styles/skipper/typography';\nimport skipperDefaultTheme from 'styles/skipper/skipperDefaultTheme';\nimport skipperDefaultPalette from 'styles/skipper/skipperDefaultPalette';\n\nexport default createTheme(\n deepmerge(skipperDefaultTheme, {\n presence: {\n online: '#26d368',\n busy: '#e12f04',\n away: '#ffd200',\n offline: '#b6ced2',\n unknown: '#b6ced2',\n },\n page: {\n width: '76rem',\n pageMaxWidth: 1280,\n navWidth: 250,\n },\n palette,\n customSpacing: {\n dialog: {\n sectionMargin: 24,\n sectionDividerMargin: 16,\n },\n profile: {\n position: 44,\n marginTop: 69,\n },\n },\n components: {\n MuiAccordion: {\n styleOverrides: {\n root: {\n boxShadow: skipperDefaultTheme.shadows[2],\n },\n },\n },\n MuiButton: {\n styleOverrides: {\n contained: {\n boxShadow: skipperDefaultTheme.shadows[0],\n },\n text: {\n padding: '6px 12px',\n },\n },\n defaultProps: {\n color: 'inherit',\n },\n },\n MuiLink: {\n defaultProps: {\n underline: 'hover',\n },\n },\n MuiButtonGroup: {\n styleOverrides: {\n contained: {\n boxShadow: skipperDefaultTheme.shadows[0],\n },\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n boxShadow: skipperDefaultTheme.shadows[2],\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n root: {\n color: skipperDefaultPalette.text.primary,\n },\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: {\n padding: 24,\n },\n },\n },\n MuiDialogContent: {\n styleOverrides: {\n root: {\n padding: '0 24px',\n },\n },\n },\n MuiDialogContentText: {\n styleOverrides: {\n root: {\n marginBottom: 0,\n ...skipperDefaultTheme.typography.subtitle2,\n color: skipperDefaultPalette.text.gray1,\n },\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: {\n ...typography.h5,\n padding: 24,\n '& span': {\n display: 'block',\n ...typography.body1,\n },\n },\n },\n },\n MuiFormLabel: {\n styleOverrides: {\n root: {\n color: skipperDefaultPalette.text.gray1,\n },\n },\n },\n MuiFormHelperText: {\n styleOverrides: {\n root: {\n color: skipperDefaultPalette.text.gray1,\n },\n },\n },\n MuiListItemText: {\n styleOverrides: {\n secondary: {\n color: skipperDefaultPalette.text.gray1,\n },\n },\n },\n MuiMenu: {\n styleOverrides: {\n paper: {\n boxShadow: skipperDefaultTheme.shadows[3],\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n ...typography.subtitle1,\n },\n },\n },\n MuiTable: {\n styleOverrides: {\n root: {\n '& caption': {\n ...typography.caption,\n color: skipperDefaultPalette.text.gray1,\n },\n },\n },\n },\n },\n }),\n);\n","import createReducer from '@sift/resift/redux/createReducer';\nimport memoizeLast from '@sift/resift/memoizeLast';\nimport observableStore from '@sift/resift/observableStore';\nimport { getFetch, mergeLoading, mergeSuccess, mergeError } from '@sift/resift/redux/FetchUtils';\nimport { Status, States } from '@sift/resift/models/Status';\nimport { CLIENT_FETCH_SUCCESS } from '@sift/resift/redux/reducers/client';\nimport { map, distinctUntilChanged } from 'rxjs/operators';\nimport { deepmerge } from '@mui/utils';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport storage from 'helpers/storage';\n\nimport defaultTheme from 'styles/theme';\nimport createPaletteColor from 'styles/createPaletteColor';\nimport createSkipperTheme from 'styles/skipper/createSkipperTheme';\nimport hasBadContrast from 'styles/skipper/hasBadContrast';\nimport ensureColors from 'styles/skipper/ensureColors';\n\nfunction createSkillsInterestsColors(palette) {\n const { primary, secondary, defaultAccentColor } = palette;\n const hasBadContrastWithWhite = color => hasBadContrast(color, '#fff');\n\n const mainColor = !hasBadContrastWithWhite(primary.main)\n ? primary.main\n : !hasBadContrastWithWhite(primary.dark)\n ? primary.dark\n : !hasBadContrastWithWhite(secondary.main)\n ? secondary.main\n : defaultAccentColor.main;\n\n return {\n skills: createPaletteColor('skills', mainColor),\n interests: createPaletteColor('interests', mainColor),\n };\n}\n\nfunction createTheme(theme = {}) {\n if (theme.shadows) {\n delete theme.shadows;\n }\n\n return createSkipperTheme(deepmerge(defaultTheme, theme));\n}\n\nfunction createUserThemeFromStorage() {\n const primary = storage.getItem('THEME_COLOR_PRIMARY') || vanillaTheme.palette.primary.main;\n const secondary = storage.getItem('THEME_COLOR_SECONDARY') || vanillaTheme.palette.secondary.main;\n const logoUrl = storage.getItem('THEME_LOGO_URL') || null;\n return createThemeFromPrimarySecondary(primary, secondary, logoUrl);\n}\n\nfunction createThemeFromPrimarySecondary(primary, secondary, logoUrl) {\n const palette = {\n ...vanillaTheme.palette,\n ...ensureColors({\n primary: { main: primary },\n secondary: { main: secondary },\n }),\n };\n\n return createTheme({\n ...vanillaTheme,\n logoUrl: logoUrl || null,\n palette: {\n ...palette,\n ...createSkillsInterestsColors(palette),\n },\n components: {\n ...vanillaTheme.components,\n },\n });\n}\n\nfunction createThemeFromApi(apiResponse) {\n if (!apiResponse) return undefined;\n\n const theme = apiResponse.settings;\n const logoUrl = apiResponse.logoUrl;\n const backgroundUrl = apiResponse.backgroundUrl;\n const pictureUrl = apiResponse.pictureUrl;\n if (!theme) return undefined;\n const palette = ensureColors(deepmerge(theme.palette, {}));\n\n return createTheme({\n ...theme,\n logoUrl,\n backgroundUrl,\n pictureUrl,\n palette: {\n ...palette,\n ...createSkillsInterestsColors(palette),\n },\n });\n}\n\n/**\n * tests whether the backgroundUrl is a placeholder\n * @param {string | undefined} backgroundUrl\n * @return {string | undefined}\n */\nexport function backgroundUrlOrUndefined(backgroundUrl) {\n if (!backgroundUrl) return undefined;\n if (/backgroundImages.*placeholders/i.test(backgroundUrl)) return undefined;\n return backgroundUrl;\n}\n\n/**\n * tests whether a pictureUrl is a placeholder\n * @param {string | undefined} pictureUrl\n * @return {string | undefined}\n */\nexport function pictureUrlOrUndefined(pictureUrl) {\n if (!pictureUrl) return undefined;\n if (/profile-images.*placeholders/i.test(pictureUrl)) return undefined;\n return pictureUrl;\n}\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nconst vanillaTheme = createTheme();\nconst vanillaPrimary = vanillaTheme.palette.primary.main;\nconst vanillaSecondary = vanillaTheme.palette.secondary.main;\n\nexport const THEME_ACTIVATE_USER_THEME = 'THEME_ACTIVATE_USER_THEME';\nexport const THEME_REMOVE_USER_THEME = 'THEME_REMOVE_USER_THEME';\nexport const THEME_REMOVE_PREVIEW_THEME = 'THEME_REMOVE_PREVIEW_THEME';\nexport const THEME_SET_THEME_ID = 'THEME_SET_THEME_ID';\n// local storage keys\nexport const THEME_USER_THEME_ACTIVE = 'THEME_USER_THEME_ACTIVE';\nexport const THEME_PREVIEW_THEME_ID = 'THEME_PREVIEW_THEME_ID';\nexport const THEME_COLOR_PRIMARY = 'THEME_COLOR_PRIMARY';\nexport const THEME_COLOR_SECONDARY = 'THEME_COLOR_SECONDARY';\nexport const THEME_COLOR_CONTRAST_TEXT = 'THEME_COLOR_CONTRAST_TEXT';\nexport const THEME_LOGO_URL = 'THEME_LOGO_URL';\n// fetches (for previewing themes only, the main theme is fetched from the client fetch)\nexport const THEME_IDENTIFIER = 'THEME_IDENTIFIER';\nexport const THEME_FETCH = 'THEME_FETCH';\nexport const THEME_FETCH_SUCCESS = 'THEME_FETCH_SUCCESS';\nexport const THEME_FETCH_ERROR = 'THEME_FETCH_ERROR';\n\n// ------------------------------------\n// Action Creators\n// ------------------------------------\nexport function activeUserTheme(primary, secondary, logoUrl) {\n return {\n type: THEME_ACTIVATE_USER_THEME,\n payload: {\n primary,\n secondary,\n logoUrl,\n },\n };\n}\nexport function removeUserTheme() {\n return { type: THEME_REMOVE_USER_THEME };\n}\n\n/**\n * @param {string} themeId\n */\nexport function fetchTheme() {\n return (dispatch, getState) => {\n let themeId = getState().theme.previewThemeId;\n\n const pathParts = window.location.pathname.split('/');\n if (pathParts.length > 2 && pathParts[1] === 'preview-theme' && pathParts[2]) {\n themeId = pathParts[2];\n }\n\n if (!themeId) return;\n\n dispatch({\n type: THEME_FETCH,\n identifier: THEME_IDENTIFIER,\n payload: {\n themeId,\n },\n });\n };\n}\n\nexport function setTheme(themeId) {\n return {\n type: THEME_SET_THEME_ID,\n payload: { themeId },\n };\n}\n\nexport function removePreviewTheme() {\n return { type: THEME_REMOVE_PREVIEW_THEME };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [THEME_SET_THEME_ID]: (state, action) => {\n return {\n ...state,\n previewThemeId: action.payload.themeId,\n };\n },\n [THEME_REMOVE_USER_THEME]: state => {\n return {\n ...state,\n userThemeActive: false,\n };\n },\n [THEME_ACTIVATE_USER_THEME]: (state, action) => {\n const { payload } = action;\n const primary = payload.primary || vanillaTheme.primary.main;\n const secondary = payload.secondary || vanillaTheme.secondary.main;\n const logoUrl = payload.logoUrl || null;\n\n return {\n ...state,\n userThemeActive: true,\n user: createThemeFromPrimarySecondary(primary, secondary, logoUrl),\n };\n },\n [THEME_REMOVE_PREVIEW_THEME]: state => {\n return {\n ...state,\n previewThemeId: undefined,\n };\n },\n};\n\nconst DATA_SERVICE_ACTION_HANDLERS = {\n [CLIENT_FETCH_SUCCESS]: (state, action) => {\n const clientTheme = createThemeFromApi(_get(action, 'payload.data.theme'));\n if (!clientTheme) return state;\n\n return {\n ...state,\n client: clientTheme,\n };\n },\n [THEME_FETCH]: mergeLoading,\n [THEME_FETCH_SUCCESS]: (state, action) => {\n const afterMergeSuccess = mergeSuccess(state, action);\n const fetchedTheme = getFetchedTheme(afterMergeSuccess);\n const preview = createThemeFromApi(fetchedTheme.data);\n\n return {\n ...afterMergeSuccess,\n preview,\n };\n },\n [THEME_FETCH_ERROR]: (state, action) => {\n const afterMergeError = mergeError(state, action);\n\n return {\n ...afterMergeError,\n previewThemeId: undefined,\n };\n },\n};\n\n// ------------------------------------\n// Side effects\n// ------------------------------------\nexport function mapThemeChangesToStorageSaves(store) {\n const state$ = observableStore(store);\n\n const themeChanges$ = state$.pipe(\n map(state => {\n const theme = getThemeToUse(state.theme);\n const primary = _get(theme, 'palette.primary.main', vanillaPrimary);\n const contrastText = theme.palette.getContrastText(primary);\n\n return {\n userThemeActive: state.theme.userThemeActive,\n previewThemeId: state.theme.previewThemeId,\n primary,\n secondary: _get(theme, 'palette.secondary.main', vanillaSecondary),\n contrastText,\n logoUrl: _get(theme, 'logoUrl', null),\n };\n }),\n distinctUntilChanged(_isEqual),\n );\n themeChanges$.subscribe(\n ({ userThemeActive, previewThemeId, primary, secondary, contrastText, logoUrl }) => {\n if (userThemeActive) {\n storage.setItem(THEME_USER_THEME_ACTIVE, 'true');\n } else {\n storage.removeItem(THEME_USER_THEME_ACTIVE);\n }\n\n if (previewThemeId) {\n storage.setItem(THEME_PREVIEW_THEME_ID, previewThemeId);\n } else {\n storage.removeItem(THEME_PREVIEW_THEME_ID);\n }\n\n storage.setItem(THEME_COLOR_PRIMARY, primary);\n storage.setItem(THEME_COLOR_SECONDARY, secondary);\n storage.setItem(THEME_COLOR_CONTRAST_TEXT, contrastText);\n\n if (logoUrl) {\n storage.setItem(THEME_LOGO_URL, logoUrl);\n } else {\n storage.removeItem(THEME_LOGO_URL);\n }\n },\n );\n\n return store;\n}\n\n// ------------------------------------\n// Accessors\n// ------------------------------------\nexport const getFetchedTheme = memoizeLast(state => {\n const resiftFetch = getFetch(THEME_IDENTIFIER, state);\n\n const data = resiftFetch.object();\n const status = resiftFetch.status;\n if (status.isUnknown()) return { data, status: new Status(States.LOADING) };\n return { data, status };\n});\n\nexport function getThemeToUse(state) {\n if (state.previewThemeId) return state.preview || vanillaTheme;\n if (state.userThemeActive) return state.user;\n return state.client || vanillaTheme;\n}\n\nfunction getInitialPreviewThemeId() {\n if (window.location.pathname.includes('preview-theme')) return undefined;\n return storage.getItem(THEME_PREVIEW_THEME_ID);\n}\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n previewThemeId: getInitialPreviewThemeId(),\n userThemeActive: !!storage.getItem(THEME_USER_THEME_ACTIVE),\n user: createUserThemeFromStorage(),\n preview: undefined,\n client: undefined,\n fetches: {},\n objects: {},\n};\n\nexport default createReducer(initialState, {\n ...ACTION_HANDLERS,\n ...DATA_SERVICE_ACTION_HANDLERS,\n});\n","import { useContext } from 'react';\nimport * as Sift from '@sift/types';\nimport RunnerContext from '@sift/runner/Context';\nimport _get from 'lodash/get';\nimport useRouter from '@sift/resift/useRouter';\nimport slides from './slides';\nimport fieldMap from './fieldMap';\n\nexport default function useSlideInfo() {\n const contextValue = useContext(RunnerContext);\n const { match } = useRouter({ path: '/onboarding/:page?' });\n\n if (!match) {\n throw new Error('[useSlideInfo] could not find \"/onboarding\" path match');\n }\n\n if (!contextValue) {\n throw new Error('[useSlideInfo] could not find runner context');\n }\n\n const page = _get(match, ['params', 'page']);\n const { config } = contextValue;\n\n const currentSlideIndex = slides.findIndex(slide => slide.path === `/${page}`.toLowerCase());\n if (currentSlideIndex === -1) {\n const firstSlide = slides[0];\n return {\n displayName: undefined,\n fieldKey: undefined,\n field: undefined,\n nextSlideLink: `/onboarding${firstSlide.path}`,\n currentSlide: undefined,\n };\n }\n const _nextSlideLink = _get(slides, [currentSlideIndex + 1, 'path']);\n const nextSlideLink = _nextSlideLink ? `/onboarding${_nextSlideLink}` : null;\n\n const fieldKey = fieldMap[page];\n const field = _get(config, ['fields', fieldKey || '']) as Sift.Field | undefined;\n\n const displayNameFromSlides = _get(slides, [currentSlideIndex, 'displayName']) as\n | string\n | undefined;\n const displayNameFromField = _get(field, ['displayName']) as string | undefined;\n const displayName = displayNameFromSlides || displayNameFromField;\n\n return {\n displayName,\n fieldKey,\n field,\n nextSlideLink,\n currentSlide: `/${page}`,\n };\n}\n","// https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/prepend#Polyfill\n// did you know that IE doesn't support `prepend`? I didn't\n(function(arr) {\n arr.forEach(function(item) {\n if (item.hasOwnProperty('prepend')) {\n return;\n }\n Object.defineProperty(item, 'prepend', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function prepend() {\n var argArr = Array.prototype.slice.call(arguments),\n docFrag = document.createDocumentFragment();\n\n argArr.forEach(function(argItem) {\n var isNode = argItem instanceof Node;\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\n });\n\n this.insertBefore(docFrag, this.firstChild);\n },\n });\n });\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\n","import { Status, States } from '@sift/resift/models/Status';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SUPPORT_DRAWER_TOGGLE = 'SUPPORT_DRAWER_TOGGLE';\n\nexport const SUPPORT_MESSAGE_CREATE = 'SUPPORT_MESSAGE_CREATE';\nexport const SUPPORT_MESSAGE_CREATE_SUCCESS = 'SUPPORT_MESSAGE_CREATE_SUCCESS';\nexport const SUPPORT_MESSAGE_CREATE_ERROR = 'SUPPORT_MESSAGE_CREATE_ERROR';\n\nexport const SUPPORT_MESSAGE_UPDATE = 'SUPPORT_MESSAGE_UPDATE';\nexport const SUPPORT_MESSAGE_UPDATE_SUCCESS = 'SUPPORT_MESSAGE_UPDATE_SUCCESS';\nexport const SUPPORT_MESSAGE_UPDATE_ERROR = 'SUPPORT_MESSAGE_UPDATE_ERROR';\n\nexport const SUPPORT_MESSAGE_ATTACHMENTS_ADD = 'SUPPORT_MESSAGE_ATTACHMENTS_ADD';\nexport const SUPPORT_MESSAGE_ATTACHMENTS_ADD_SUCCESS = 'SUPPORT_MESSAGE_ATTACHMENTS_ADD_SUCCESS';\nexport const SUPPORT_MESSAGE_ATTACHMENTS_ADD_ERROR = 'SUPPORT_MESSAGE_ATTACHMENTS_ADD_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const toggleSupportDrawer = () => ({\n type: SUPPORT_DRAWER_TOGGLE,\n});\n\nexport const createSupportMessage = (body, query) => {\n return {\n type: SUPPORT_MESSAGE_CREATE,\n identifier: 'create-support-message',\n payload: {\n query,\n data: body,\n },\n };\n};\n\nexport const updateSupportMessage = (body, messageId, query) => {\n return {\n type: SUPPORT_MESSAGE_UPDATE,\n identifier: 'update-support-message',\n payload: {\n data: body,\n messageId,\n query,\n },\n };\n};\n\nexport const addAttachments = (body, messageId) => {\n return {\n type: SUPPORT_MESSAGE_ATTACHMENTS_ADD,\n identifier: body.name,\n payload: {\n data: body,\n messageId,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SUPPORT_DRAWER_TOGGLE]: (state, action) => {\n return {\n ...state,\n supportDrawerIsOpen: !state.supportDrawerIsOpen,\n };\n },\n\n [SUPPORT_MESSAGE_CREATE_SUCCESS]: (state, action) => {\n // if supportTicket is undefined, then the state will refresh\n const supportTicket = action.payload.data.sent ? undefined : { ...action.payload.data };\n return {\n ...state,\n supportTicket,\n };\n },\n [SUPPORT_MESSAGE_CREATE_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n\n [SUPPORT_MESSAGE_UPDATE]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [SUPPORT_MESSAGE_UPDATE_SUCCESS]: (state, action) => {\n let supportTicket = {\n ...state.supportTicket,\n ...action.payload.data,\n };\n\n if (action.payload.data.sent) {\n supportTicket = undefined;\n }\n\n return {\n ...state,\n supportTicket,\n status: new Status(States.NORMAL),\n };\n },\n [SUPPORT_MESSAGE_UPDATE_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n\n [SUPPORT_MESSAGE_ATTACHMENTS_ADD]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [SUPPORT_MESSAGE_ATTACHMENTS_ADD_SUCCESS]: (state, action) => {\n return {\n ...state,\n supportTicket: {\n ...state.supportTicket,\n ...action.payload.data,\n },\n status: new Status(States.NORMAL),\n };\n },\n [SUPPORT_MESSAGE_ATTACHMENTS_ADD_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n};\n\nconst initialState = {\n status: new Status(States.NORMAL),\n supportDrawerIsOpen: false,\n supportTicket: undefined,\n};\n\nexport default function supportDrawerReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import * as microsoftTeams from '@microsoft/teams-js';\n\nexport default function getIsInMsTeams() {\n const microsoftTeamsLib = microsoftTeams || window['microsoftTeams'];\n\n if (!microsoftTeamsLib) {\n // The Microsoft Teams library is not loaded\n return false;\n }\n\n if (\n (window.parent === window.self && (window as any).nativeInterface) ||\n window.name === 'embedded-page-container' ||\n window.name === 'extension-tab-frame'\n ) {\n return true;\n }\n\n return false;\n}\n","import _get from 'lodash/get';\n\n// Models\nimport { Status, States } from '@sift/resift/models/Status';\nimport {\n FETCH_TEAM,\n FETCH_TEAM_SUCCESS,\n FETCH_TEAM_ERROR,\n FETCH_RECENT_SEARCHES,\n FETCH_RECENT_SEARCHES_SUCCESS,\n FETCH_RECENT_SEARCHES_ERROR,\n UPDATE_RECENT_SEARCHES,\n UPDATE_RECENT_SEARCHES_SUCCESS,\n UPDATE_RECENT_SEARCHES_ERROR,\n DELETE_RECENT_SEARCHES,\n DELETE_RECENT_SEARCHES_SUCCESS,\n DELETE_RECENT_SEARCHES_ERROR,\n DELETE_RECENT_SEARCH,\n DELETE_RECENT_SEARCH_SUCCESS,\n DELETE_RECENT_SEARCH_ERROR,\n} from 'store/search';\n\nimport { RequestResolve } from '@sift/resift/redux/DataService';\nimport createReducer from '@sift/resift/createReducer';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const FETCH_AUTOCOMPLETE = 'FETCH_AUTOCOMPLETE';\nexport const FETCH_AUTOCOMPLETE_ERROR = 'FETCH_AUTOCOMPLETE_ERROR';\nexport const FETCH_AUTOCOMPLETE_SUCCESS = 'FETCH_AUTOCOMPLETE_SUCCESS';\n\nexport const UPDATE_QUERY = 'UPDATE_QUERY';\nexport const CLEAR_QUERY = 'CLEAR_QUERY';\nexport const TOGGLE_BIG_SEARCH = 'TOGGLE_BIG_SEARCH';\nexport const BIG_SEARCH_CLOSE = 'BIG_SEARCH_CLOSE';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n/**\n * Fetch a search query\n *\n * @param {object} params The params of the search query.\n * {\n * q: string,\n * ...filters,\n * ...pagination\n * }\n *\n */\nexport const fetchAutocomplete = query => {\n return {\n type: FETCH_AUTOCOMPLETE,\n identifier: 'search',\n payload: {\n query: query,\n requestResolve: RequestResolve.CANCEL,\n },\n };\n};\n\n/**\n * Update Query\n *\n * @param {string} [query] updates query\n *\n */\nexport const updateQuery = query => {\n return {\n type: UPDATE_QUERY,\n identifier: 'search',\n payload: {\n query: query,\n },\n };\n};\n\n/**\n * Clear Query\n *\n * @param {string} [query] clears query\n *\n */\nexport const clearQuery = () => {\n return {\n type: CLEAR_QUERY,\n identifier: 'search',\n payload: {},\n };\n};\n\n/**\n * Toggle Open Status of Big Search\n *\n * @param {bool} [query] clears query\n *\n */\nexport const toggleBigSearch = forceSetState => {\n return {\n type: TOGGLE_BIG_SEARCH,\n identifier: 'bigSearch',\n payload: {\n forceSetState: forceSetState === true || forceSetState === false ? forceSetState : undefined,\n },\n };\n};\n\nexport const closeBigSearch = () => ({\n type: BIG_SEARCH_CLOSE,\n});\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [FETCH_AUTOCOMPLETE]: (state, action) => {\n return {\n ...state,\n searchStatus: new Status(States.NORMAL | States.LOADING),\n };\n },\n [FETCH_AUTOCOMPLETE_SUCCESS]: (state, action) => {\n let results = action.payload.data ? action.payload.data.results : [];\n let status = new Status(States.NORMAL);\n if (results && results[0] && results.length === 1 && results[0].totalLength === 0) {\n status = new Status(States.EMPTY);\n }\n\n return {\n ...state,\n results: results,\n suggestions: action.payload.data ? action.payload.data.suggestions : state.suggestions,\n searchStatus: status,\n firstLoad: false,\n };\n },\n [FETCH_AUTOCOMPLETE_ERROR]: (state, action) => {\n return {\n ...state,\n searchStatus: new Status(States.NORMAL),\n firstLoad: false,\n };\n },\n [FETCH_TEAM]: (state, action) => {\n return {\n ...state,\n fetchTeamStatus: new Status(States.LOADING),\n };\n },\n [FETCH_TEAM_SUCCESS]: (state, action) => {\n let teamBucket = {};\n if (action.payload.data) {\n teamBucket = {\n items: action.payload.data.results,\n totalLength: action.payload.data.results.length,\n type: 'people',\n display: {\n header: 'My Team',\n },\n };\n }\n\n return {\n ...state,\n team: teamBucket,\n fetchTeamStatus: new Status(States.NORMAL),\n };\n },\n [FETCH_TEAM_ERROR]: (state, action) => {\n return {\n ...state,\n team: {},\n fetchTeamStatus: new Status(States.NORMAL),\n };\n },\n [UPDATE_QUERY]: (state, action) => {\n return {\n ...state,\n query: action.payload.query,\n };\n },\n [CLEAR_QUERY]: (state, action) => {\n return {\n ...state,\n query: '',\n suggestions: [],\n searchStatus: new Status(States.NORMAL),\n results: [],\n };\n },\n [TOGGLE_BIG_SEARCH]: (state, action) => {\n let open = action.payload.forceSetState;\n if (action.payload.forceSetState === undefined) {\n open = !state.open;\n }\n\n return {\n ...state,\n open: open,\n };\n },\n [FETCH_RECENT_SEARCHES]: (state, action) => {\n return {\n ...state,\n fetchRecentSearchesStatus: new Status(States.LOADING),\n };\n },\n [FETCH_RECENT_SEARCHES_SUCCESS]: (state, action) => {\n let recentSearchBucket = {};\n if (_get(action, 'payload.data', false)) {\n recentSearchBucket = {\n items: action.payload.data.results,\n totalLength: _get(action, 'payload.data.results.length', 0),\n type: 'recentSearches',\n display: {\n header: 'Recent Searches',\n },\n };\n\n recentSearchBucket = _get(action, 'payload.data.results.length') ? recentSearchBucket : {};\n }\n\n return {\n ...state,\n recentSearches: recentSearchBucket,\n fetchRecentSearchesStatus: new Status(States.NORMAL),\n };\n },\n [FETCH_RECENT_SEARCHES_ERROR]: (state, action) => {\n return {\n ...state,\n recentSearches: {},\n fetchRecentSearchesStatus: new Status(States.NORMAL),\n };\n },\n [UPDATE_RECENT_SEARCHES]: (state, action) => {\n return {\n ...state,\n };\n },\n [UPDATE_RECENT_SEARCHES_SUCCESS]: (state, action) => {\n let recentSearchBucket = {};\n\n if (action.payload.data) {\n recentSearchBucket = {\n items: action.payload.data.results,\n totalLength: action.payload.data.results.length,\n type: 'recentSearches',\n display: {\n header: 'Recent Searches',\n },\n };\n\n recentSearchBucket = action.payload.data.results.length ? recentSearchBucket : {};\n }\n\n return {\n ...state,\n recentSearches: recentSearchBucket,\n };\n },\n [UPDATE_RECENT_SEARCHES_ERROR]: (state, action) => {\n return {\n ...state,\n };\n },\n [DELETE_RECENT_SEARCHES]: (state, action) => {\n return {\n ...state,\n };\n },\n [DELETE_RECENT_SEARCHES_SUCCESS]: (state, action) => {\n return {\n ...state,\n recentSearches: {},\n };\n },\n [DELETE_RECENT_SEARCHES_ERROR]: (state, action) => {\n return {\n ...state,\n };\n },\n [DELETE_RECENT_SEARCH]: (state, action) => {\n return {\n ...state,\n };\n },\n [DELETE_RECENT_SEARCH_SUCCESS]: (state, action) => {\n let recentSearchBucket = {};\n if (action.payload.data) {\n recentSearchBucket = {\n items: action.payload.data.results,\n totalLength: action.payload.data.results.length,\n type: 'recentSearches',\n display: {\n header: 'Recent Searches',\n },\n };\n recentSearchBucket = action.payload.data.results.length ? recentSearchBucket : {};\n }\n\n return {\n ...state,\n recentSearches: recentSearchBucket,\n };\n },\n [DELETE_RECENT_SEARCH_ERROR]: (state, action) => {\n return {\n ...state,\n };\n },\n [BIG_SEARCH_CLOSE]: state => ({\n ...state,\n open: false,\n }),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n open: false,\n results: [],\n team: undefined,\n suggestions: [],\n recentSearches: undefined,\n query: '',\n fetchRecentSearchesStatus: new Status(States.LOADING),\n fetchTeamStatus: new Status(States.NORMAL),\n searchStatus: new Status(States.NORMAL),\n firstLoad: false,\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\n","export const SIFT_MARKETING_SITE = 'https://www.justsift.com/';\nexport const ATTRIBUTE_PATH = '/attribute';\nexport const SKIP_TRANSLATE_FIELDS = ['displayName', 'firstName', 'lastName'];\nexport const SKIP_TRANSLATE_FIELD_NAMES = ['Display Name', 'First Name', 'Last Name'];\n","// https://www.lingoapp.com/space/86663/k/B2DE4BDF-3C89-44EF-9D84-E833AEB7FE02/DE9D9C25-B9C4-41BA-A7E4-C14B64C64EA8/?tkn=covARoOwR4m_6_U8zowW36a_qrMaql0bmEcfIpfVgwI\nimport brandColors from './brandColors';\nimport { grey } from '@mui/material/colors';\nimport { darken } from 'polished';\nimport createPaletteColor from 'styles/createPaletteColor';\n\nexport default {\n primary: {\n main: brandColors.primaryPalette.violet,\n },\n secondary: {\n main: brandColors.secondaryPalette.cobalt,\n },\n matched: createPaletteColor('matched', brandColors.logomarkDotColors.gold),\n defaultAccentColor: createPaletteColor('defaultAccentColor', brandColors.secondaryPalette.cobalt),\n text: {\n primary: brandColors.grayScale.iron,\n secondary: brandColors.secondaryPalette.cobalt,\n gray1: brandColors.grayScale.gray1,\n gray2: brandColors.grayScale.gray2,\n hint: 'rgba(0, 0, 0, 0.38)',\n },\n background: {\n canvas: brandColors.grayScale.appCanvasColor,\n lightBlueCanvas: '#F9FBFD',\n },\n borderColor: grey[300],\n common: {\n black: brandColors.grayScale.iron,\n },\n action: {\n infoHover: brandColors.grayScale.cloud,\n infoActive: darken(0.04, brandColors.grayScale.cloud),\n },\n skills: createPaletteColor('skills', brandColors.logomarkDotColors.tiger),\n interests: createPaletteColor('interests', brandColors.quaternaryPalette.watermelon),\n};\n","import React from 'react';\nimport * as Sentry from '@sentry/browser';\n\n// Components\nimport { TransitionProps } from '@mui/material/transitions';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Dialog from '@mui/material/Dialog';\nimport Slide from '@mui/material/Slide';\nimport ErrorView from 'components/skipper/views/Error';\nimport Box from '@mui/material/Box';\n\n// Styles\nimport { withStyles } from 'tss-react/mui';\n\nconst Transition = React.forwardRef(function Transition(\n props: TransitionProps & {\n children: React.ReactElement;\n },\n ref: React.Ref,\n) {\n return ;\n});\n\n/**\n * used to create an error code: https://github.com/darkskyapp/string-hash/blob/master/index.js\n */\nfunction hash(str: string) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n return hash >>> 0;\n}\n\ninterface Props {\n className?: string;\n fullScreen: boolean;\n onError?: (error: Error) => void;\n children: React.ReactNode;\n}\n\ninterface State {\n hadError: boolean;\n errorCode: undefined | number;\n}\n\nclass ErrorBoundary extends React.Component {\n state: State = {\n hadError: false,\n errorCode: undefined,\n };\n\n componentDidCatch(error: Error) {\n const errorCode = (error.message && hash(error.message)) || undefined;\n\n Sentry.withScope(scope => {\n errorCode && scope.setTag('errorCode', errorCode.toString());\n Sentry.captureException(error);\n });\n\n this.setState({ hadError: true, errorCode });\n\n const { onError } = this.props;\n if (onError) {\n onError(error);\n }\n }\n\n onRefresh = () => {\n window.location.reload(); // true enables force-get from server\n };\n\n handleClose = () => {\n this.setState({ hadError: false });\n };\n\n render() {\n const { className, children, fullScreen } = this.props;\n const { hadError } = this.state;\n\n if (hadError) {\n const errorView = (\n \n <>\n Something went wrong. Try refreshing the page and if this error persists, contact\n support.\n \n
\n
\n Support@justsift.com{' '}\n {this.state.errorCode && <>| Error code: {this.state.errorCode}}\n
\n \n Refresh Page\n \n \n }\n />\n );\n\n return fullScreen ? (\n \n \n \n \n \n \n {errorView}\n \n ) : (\n <>\n \n \n \n \n \n {errorView}\n \n );\n }\n\n return children;\n }\n}\n\nexport default withStyles(ErrorBoundary, () => ({\n root: {\n flex: '1 1 auto',\n },\n}));\n","import delay from 'delay';\n\nexport default async function wootric(user) {\n function showSurveyCallback() {\n const date = new Date();\n window.Intercom('update', {\n last_wootric_surveyed_at: Math.round(date.getTime() / 1000),\n });\n }\n\n function declineSubmittedCallback() {\n const date = new Date();\n window.Intercom('update', {\n last_wootric_declined_at: Math.round(date.getTime() / 1000),\n });\n }\n\n function responseSubmittedCallback(score, comment) {\n window.Intercom('update', { last_wootric_score: score });\n window.Intercom('update', { last_wootric_comment: comment });\n }\n\n window.wootricSettings = {\n email: user.email,\n external_id: user.id,\n account_token: 'NPS-5ca1f1da', // This is your unique account token.\n survey_callback: showSurveyCallback,\n decline_callback: declineSubmittedCallback,\n response_callback: responseSubmittedCallback,\n };\n\n await delay(0);\n if (!window.wootric) return;\n window.wootric('run');\n}\n","import _get from 'lodash/get';\n\nimport { UPDATE_ENTITY_SUCCESS, UPDATE_ENTITY_RELATIONSHIP_SUCCESS } from 'store/entities';\n\nimport { UPDATE_SETTINGS_SUCCESS } from 'store/settings';\nimport { THEME_FETCH_ERROR } from 'store/theme';\nimport { SIFT_BOT_FETCH_ERROR, SIFT_BOT_OPT_OUT_ERROR } from 'store/siftBot';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const PROFILE_SAVED_SUCCESS = 'PROFILE_SAVED_SUCCESS';\nexport const SNACKBAR_EXPIRED = 'SNACKBAR_EXPIRED';\nexport const SNACKBAR_ACTIVATE = 'SNACKBAR_ACTIVATE';\n\nexport const expireSnackbar = () => {\n return {\n type: SNACKBAR_EXPIRED,\n };\n};\n\nexport const activateSnackbar = snackbarText => {\n return {\n type: SNACKBAR_ACTIVATE,\n payload: {\n snackbarText,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SNACKBAR_ACTIVATE]: (state, action) => {\n return {\n ...state,\n currentSnackbar: action.payload.snackbarText,\n };\n },\n [PROFILE_SAVED_SUCCESS]: (state, action) => {\n return {\n ...state,\n currentSnackbar: 'Profile Saved!',\n };\n },\n [SNACKBAR_EXPIRED]: (state, action) => {\n return {\n ...state,\n currentSnackbar: null,\n };\n },\n [UPDATE_SETTINGS_SUCCESS]: (state, action) => {\n // Ignore snackbar update\n if (_get(action, 'originalPayload.data.directory.personLists')) {\n return {\n ...state,\n };\n }\n\n return {\n ...state,\n currentSnackbar: 'Your settings have been updated!',\n };\n },\n [UPDATE_ENTITY_SUCCESS]: (state, action) => {\n return {\n ...state,\n currentSnackbar: 'This page has been updated!',\n };\n },\n [UPDATE_ENTITY_RELATIONSHIP_SUCCESS]: (state, action) => {\n return {\n ...state,\n currentSnackbar: 'This page has been updated!',\n };\n },\n [THEME_FETCH_ERROR]: state => {\n return {\n ...state,\n currentSnackbar:\n 'There was an error fetching your preview theme. The default theme has been restored.',\n };\n },\n [SIFT_BOT_FETCH_ERROR]: state => {\n return {\n ...state,\n currentSnackbar: 'There was an error fetching SiftBot data.',\n };\n },\n [SIFT_BOT_OPT_OUT_ERROR]: state => {\n return {\n ...state,\n currentSnackbar: 'There was an error opting out of this SiftBot field.',\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n currentSnackbar: null,\n};\n\nexport default function coreReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import config from 'config';\nimport moment from 'moment';\n\nconst APP_INTERVAL = 'APP_INTERVAL';\n\nexport const initialState = {\n name: config.APP_NAME,\n version: config.APP_VERSION,\n platform: 'browser',\n nextFetchInterval: moment().add(10, 'minutes'),\n};\n\nexport const setFetchInterval = () => {\n return {\n type: APP_INTERVAL,\n };\n};\n\nconst ACTION_HANDLERS = {\n [APP_INTERVAL]: state => {\n return {\n ...state,\n nextFetchInterval: moment().add(10, 'minutes'),\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport default function appReducer(state = initialState, action = {}) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","// Models\nimport Fetch from '@sift/resift/models/Fetch';\nimport { mergeLoading, mergeError } from '@sift/resift/redux/FetchUtils';\nimport { Status, States } from '@sift/resift/models/Status';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const FETCH_CONFIG = 'FETCH_CONFIG';\nexport const FETCH_CONFIG_SUCCESS = 'FETCH_CONFIG_SUCCESS';\nexport const FETCH_CONFIG_ERROR = 'FETCH_CONFIG_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\n/**\n * Get a Config\n *\n * @param {string} configType\n */\nexport const fetchConfig = configType => {\n return {\n type: FETCH_CONFIG,\n identifier: configType,\n payload: {\n configType: configType,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [FETCH_CONFIG]: mergeLoading,\n [FETCH_CONFIG_SUCCESS]: (state, action) => {\n let identifier = action.identifier;\n\n return {\n ...state,\n [identifier]: action.payload.data,\n fetches: {\n ...state.fetches,\n [identifier]: new Fetch(\n identifier,\n [identifier],\n [],\n action.payload.data,\n new Status(States.NORMAL),\n ),\n },\n };\n },\n [FETCH_CONFIG_ERROR]: mergeError,\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n fetches: {},\n};\n\nexport default function ConfigurationReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import createReducer from '@sift/resift/createReducer';\nimport moment from 'moment-timezone';\nimport getTimezoneDisplayNames from 'components/TimezoneAndWorkHours/helpers/getTimezoneDisplayNames';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const TOGGLE_TIMEZONE_AND_WORK_HOURS_MODAL = 'TOGGLE_TIMEZONE_AND_WORK_HOURS_MODAL';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const toggleOpenTimezoneAndWorkHoursModal = (open: boolean) => {\n return {\n type: TOGGLE_TIMEZONE_AND_WORK_HOURS_MODAL,\n identifier: 'timezoneAndWorkHours',\n payload: {\n open,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [TOGGLE_TIMEZONE_AND_WORK_HOURS_MODAL]: (state: any, action: any) => {\n return {\n ...state,\n open: !action.payload.open,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n open: false,\n timezoneDisplayNames: getTimezoneDisplayNames(moment.tz.guess()),\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\n","import { combineReducers } from 'redux';\nimport { dataServiceReducer as dataService } from 'resift';\nimport core from './core';\nimport app from './app';\n\n// @ts-ignore\nimport authentication from '@sift/resift/redux/reducers/authentication.web';\n// @ts-ignore\nimport client from '@sift/resift/redux/reducers/client';\nimport entities from './entities';\nimport search from './search';\nimport configurations from './configurations';\nimport settings from './settings';\nimport bigSearch from './bigSearch';\nimport advancedSearch from './advancedSearch';\nimport support from './support';\nimport page_smsapp from './smsApp';\nimport siftBot from './siftBot';\nimport theme from './theme';\nimport searchResults from './searchResults';\nimport profile from './profile';\nimport listSearch from './listSearch';\nimport timezoneAndWorkHours from './timezoneAndWorkHours';\nimport orgChart from './orgChart';\n\nconst rootReducer = combineReducers({\n advancedSearch,\n app,\n authentication,\n bigSearch,\n client,\n configurations,\n core,\n entities,\n search,\n settings,\n support,\n page_smsapp,\n siftBot,\n theme,\n searchResults,\n dataService,\n profile,\n listSearch,\n timezoneAndWorkHours,\n orgChart,\n});\n\nexport type RootState = ReturnType;\n\nexport default rootReducer;\n","export const MS_TEAMS_START_URL = '/integrations/ms-teams-start';\n\nexport const MS_TEAMS_LOGIN_URL = '/integrations/ms-teams-login';\n\nexport const MS_TEAMS_LOGIN_DONE_URL = '/integrations/ms-teams-done';\n\nexport const MS_TEAMS_MEETING_MAIN_URL = '/integrations/ms-teams';\n\nexport const MS_TEAMS_MEETING_LOGIN_URL = '/integrations/ms-teams/login';\n\nexport const MS_TEAMS_PARTICIPANTS_URL = '/meetings-panel';\n\nexport const PROFILE_HEADER_LAYOUT_KEYS = [\n 'anniversaryDate',\n 'inclusivePronouns',\n 'timezoneAndWorkHours',\n];\n\nexport const PROFILE_CONTENT_LAYOUT_KEYS = ['bio', 'interests', 'skills'];\n\nexport const MAX_LEN_BIO = 175;\nexport const MAX_LEN_INTERESTS = 5;\nexport const MAX_LEN_SKILLS = 5;\n","import getIsInMsTeams from './getIsInMsTeams';\nimport { MS_TEAMS_MEETING_MAIN_URL } from 'components/msTeams/consts';\n\n/**\n * (pearl) Notes: isInMsTeams implies our app is being opened inside of Teams,\n * whether it be a tab inside the Teams app, or in the browser.\n *\n * isInMsTeamsEmbed on the other hand, specifically means our app is being opened inside of Teams\n * meeting integration panel or tabs.\n */\nexport default function getIsInMsTeamsEmbed() {\n const isInMsTeams = getIsInMsTeams();\n\n if (!isInMsTeams) {\n return false;\n }\n\n return window.location.href.includes(MS_TEAMS_MEETING_MAIN_URL);\n}\n","// Libs\nimport { HTTPVerb } from '@sift/resift/redux/DataService';\nimport dataServiceActionHandlers from '@sift/resift/redux/reducers/dataServiceActionHandlers';\nimport config from 'config';\nimport getSubdomain from 'helpers/getSubdomain';\n\n// Actions\nimport { AUTH_PERSON_FETCH as FETCH_ME } from '@sift/resift/redux/reducers/authentication';\n\nimport { FETCH_CONFIG } from 'store/configurations';\nimport { UPDATE_SETTINGS } from 'store/settings';\nimport { FETCH_AUTOCOMPLETE } from 'store/bigSearch';\nimport { FETCH_FIELD_AUTOCOMPLETE } from 'store/advancedSearch';\nimport { THEME_FETCH } from 'store/theme';\n\nimport {\n FETCH_SEARCH,\n FETCH_TAGS,\n FETCH_TEAM,\n FETCH_RECENT_SEARCHES,\n UPDATE_RECENT_SEARCHES,\n DELETE_RECENT_SEARCHES,\n DELETE_RECENT_SEARCH,\n FIELD_AUTOSUGGEST_FETCH,\n FIELD_AUTOSUGGEST_ITEM_FETCH,\n} from 'store/search';\n\nimport {\n SUPPORT_MESSAGE_CREATE,\n SUPPORT_MESSAGE_UPDATE,\n SUPPORT_MESSAGE_ATTACHMENTS_ADD,\n} from 'store/support';\n\n// Routes\nimport { APP_SMS_SEND } from 'store/smsApp';\n\nimport {\n FETCH_ENTITY_TYPES,\n FETCH_ENTITY,\n UPDATE_ENTITY,\n UPDATE_ENTITY_RELATIONSHIP,\n} from 'store/entities';\n\nimport { SIFT_BOT_FETCH, SIFT_BOT_READ, SIFT_BOT_OPT_OUT } from 'store/siftBot';\nimport { MS_TEAMS_LOGIN_URL, MS_TEAMS_MEETING_LOGIN_URL } from 'components/msTeams/consts';\n\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\nimport getIsInMsTeamsEmbed from 'helpers/getIsInMsTeamsEmbed';\n\nexport const unauthorizedHandler = () => {\n const isInMsTeams = getIsInMsTeams();\n const isInMsTeamsEmbed = getIsInMsTeamsEmbed();\n const url = window.location.pathname + window.location.search;\n\n if (process.env.NODE_ENV === 'development') {\n if (isInMsTeamsEmbed) {\n window.location.href = MS_TEAMS_MEETING_LOGIN_URL;\n return true;\n }\n\n if (isInMsTeams) {\n window.location.href = `${MS_TEAMS_LOGIN_URL}?redirectTo=${encodeURIComponent(url)}`;\n return true;\n }\n\n return false;\n }\n\n if (isInMsTeamsEmbed) {\n window.location.href = MS_TEAMS_MEETING_LOGIN_URL;\n return true;\n }\n\n if (isInMsTeams) {\n window.location.href = `${MS_TEAMS_LOGIN_URL}?redirectTo=${encodeURIComponent(url)}`;\n return true;\n }\n\n const subdomain = getSubdomain();\n\n if (getQueryVariable('samlRedirect') === 'true') {\n window.location.href = `${\n config.LOGIN\n }/api/login/${subdomain}/saml?redirectTo=${encodeURIComponent(url)}`;\n } else {\n window.location.href = `${config.LOGIN}/login?redirectTo=${encodeURIComponent(url)}`;\n }\n\n return true;\n};\n\nfunction getQueryVariable(variable) {\n var query = window.location.search.substring(1);\n var vars = query.split('&');\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) === variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n}\n\nexport const DataServiceActionHandlers = {\n ...dataServiceActionHandlers,\n [FETCH_ME]: {\n httpMethod: HTTPVerb.GET,\n route: 'people/me',\n },\n [FETCH_CONFIG]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return `configurations/${action.payload.configType}`;\n },\n },\n [FETCH_SEARCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'search/people',\n },\n [FETCH_TEAM]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `people/${action.payload.id}/org/team`;\n },\n },\n [FETCH_AUTOCOMPLETE]: {\n httpMethod: HTTPVerb.GET,\n route: 'search',\n },\n [UPDATE_SETTINGS]: {\n httpMethod: HTTPVerb.PUT,\n route: (state, action) => {\n return `people/${state.person.id}/settings`;\n },\n },\n [FETCH_FIELD_AUTOCOMPLETE]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `metadata/${action.payload.fieldId}`;\n },\n },\n [FETCH_RECENT_SEARCHES]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `people/${action.payload.id}/searches`;\n },\n },\n [UPDATE_RECENT_SEARCHES]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `people/${action.payload.id}/searches`;\n },\n },\n [DELETE_RECENT_SEARCHES]: {\n httpMethod: HTTPVerb.DELETE,\n route: (state, action) => {\n return `people/${action.payload.id}/searches`;\n },\n },\n [DELETE_RECENT_SEARCH]: {\n httpMethod: HTTPVerb.DELETE,\n route: (state, action) => {\n return `people/${action.payload.id}/searches?index=${action.payload.index}`;\n },\n },\n [FETCH_ENTITY]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `entities/${action.payload.entityId}`;\n },\n },\n [FETCH_ENTITY_TYPES]: {\n httpMethod: HTTPVerb.GET,\n route: 'entity-types',\n },\n [FETCH_TAGS]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n const { query, field } = action.payload;\n return `itemcollections/${field.objectKey}?q=${query.value}&n=5`;\n },\n },\n [UPDATE_ENTITY]: {\n httpMethod: HTTPVerb.PUT,\n route: (state, action) => {\n return `entities/${action.payload.data.id}`;\n },\n },\n [UPDATE_ENTITY_RELATIONSHIP]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `entities/${action.identifier}/${action.payload.relationship}`;\n },\n },\n [APP_SMS_SEND]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `communications/sms/mobile-app-link`;\n },\n },\n [SUPPORT_MESSAGE_CREATE]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `communications/email/support-messages${action.payload.query || ''}`;\n },\n },\n [SUPPORT_MESSAGE_UPDATE]: {\n httpMethod: HTTPVerb.PUT,\n route: (state, action) => {\n return `communications/email/support-messages/${action.payload.messageId}${action.payload\n .query || ''}`;\n },\n },\n [SUPPORT_MESSAGE_ATTACHMENTS_ADD]: {\n httpMethod: HTTPVerb.POST,\n upload: 'attachments',\n route: (state, action) => {\n return `communications/email/support-messages/${action.payload.messageId}/attachments`;\n },\n },\n [FIELD_AUTOSUGGEST_ITEM_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `fields/${action.payload.fieldId}/autocomplete?targetId=${action.payload.targetId}`;\n },\n },\n [FIELD_AUTOSUGGEST_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `fields/${action.payload.fieldId}/autocomplete?q=${action.payload.searchTerm}`;\n },\n },\n [SIFT_BOT_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `sift-bot/${action.payload.userId}`;\n },\n },\n [SIFT_BOT_READ]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `sift-bot/${action.payload.userId}/read`;\n },\n },\n [SIFT_BOT_OPT_OUT]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `sift-bot/${action.payload.userId}/opt-out`;\n },\n },\n [THEME_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (_, action) => {\n return `themes/${action.payload.themeId}`;\n },\n },\n};\n\nexport default DataServiceActionHandlers;\n","import * as Sentry from '@sentry/browser';\nimport { createDataService, createHttpService } from 'resift';\nimport { unauthorizedHandler } from 'store/dataServiceActionHandlers';\nimport urlParse from 'url-parse';\nimport cookie from 'js-cookie';\nimport config from '../config';\n\nfunction getAuthToken(prefix) {\n const { hostname } = urlParse(prefix || window.location.href);\n const subdomain = hostname.split('.')[0];\n const token = cookie.get(`auth_token_${subdomain}`) || cookie.get('auth_token');\n\n return token;\n}\n\nconst http = createHttpService({\n getHeaders: () => ({\n Authorization: getAuthToken() ? `Bearer ${getAuthToken()}` : undefined,\n 'X-Sift-App': `Directory-Web/${config.APP_VERSION} Browser`,\n }),\n prefix: `/api`,\n});\n\nexport default createDataService({\n services: { http },\n onError: error => {\n if (error.status === 401) {\n unauthorizedHandler();\n } else {\n if (process.env.NODE_ENV !== 'production') {\n throw error;\n } else {\n Sentry.captureException(error);\n }\n }\n },\n});\n","import compose from 'recompose/compose';\n\nimport { mapThemeChangesToStorageSaves } from './theme';\n\nexport default compose(mapThemeChangesToStorageSaves);\n","import React from 'react';\nimport Analytics from './AnalyticsContext';\nimport { captureException, withScope } from '@sentry/browser';\n\ninterface Props {\n children: React.ReactNode;\n userId: string;\n user: any;\n clientId: string;\n clientName: string;\n clientSubdomain: string;\n}\n\n/**\n * A provider for accessing Segment's analytics object from the window.\n *\n *\n * Segments Docs\n * https://segment.com/docs/sources/website/analytics.js\n *\n * Segments React Setup\n * https://github.com/segmentio/analytics-react\n *\n */\nclass AnalyticsProvider extends React.Component {\n componentDidMount() {\n this.identify();\n }\n\n componentDidUpdate(previousProps: Props) {\n if (previousProps.user !== this.props.user || previousProps.clientId !== this.props.clientId) {\n this.identify();\n }\n }\n\n identify = () => {\n // @ts-ignore\n const analytics = window.analytics;\n\n const { userId, user, clientId, clientName, clientSubdomain } = this.props;\n\n if (!user || !clientId) {\n return;\n }\n\n try {\n analytics.identify(userId, {\n id: user.id,\n email: user.email,\n name: `${user.firstName} ${user.lastName}`,\n firstName: user.firstName,\n lastName: user.lastName,\n title: user.title,\n company: {\n id: clientSubdomain,\n company_id: clientSubdomain,\n name: clientName,\n subdomain: clientSubdomain,\n },\n });\n } catch (e) {\n withScope(scope => {\n scope.setTag('Non-fatal', 'true');\n captureException(e);\n });\n }\n };\n\n track = (event: any, properties: any) => {\n const { clientId, clientName, clientSubdomain } = this.props;\n\n try {\n // @ts-ignore\n window.analytics.track(event, {\n ...properties,\n company: {\n id: clientId,\n company_id: clientId,\n name: clientName,\n subdomain: clientSubdomain,\n },\n });\n } catch (e) {\n withScope(scope => {\n scope.setTag('Non-fatal', 'true');\n captureException(e);\n });\n }\n };\n\n page = (name: any, properties: any) => {\n const { clientId, clientName, clientSubdomain } = this.props;\n\n try {\n // @ts-ignore\n window.analytics.page(name, {\n ...properties,\n company: {\n id: clientId,\n company_id: clientId,\n name: clientName,\n subdomain: clientSubdomain,\n },\n });\n } catch (e) {\n withScope(scope => {\n scope.setTag('Non-fatal', 'true');\n captureException(e);\n });\n }\n };\n\n render() {\n // @ts-ignore\n return {this.props.children};\n }\n}\n\nexport default AnalyticsProvider;\n","import { connect } from 'react-redux';\nimport _get from 'lodash/get';\nimport AnalyticsProvider from './AnalyticsProvider';\n\ninterface Props {\n userId?: string;\n client?: any;\n clientId?: string;\n clientName?: string;\n clientSubdomain?: string;\n children?: React.ReactNode;\n config: any;\n customIntegrations: any;\n}\n\nconst mapStateToProps = (state: any, ownProps: Props) => {\n const user = _get(state, 'authentication.person');\n const userId = ownProps.userId || _get(user, 'id');\n const client = ownProps.client || _get(state, 'client');\n const clientId = ownProps.clientId || _get(client, 'clientId');\n const clientSubdomain = ownProps.clientId || _get(client, 'subdomain');\n const clientName = ownProps.clientName || _get(client, 'displayName');\n\n return { userId, user, clientId, clientName, clientSubdomain };\n};\n\nexport default connect(\n mapStateToProps,\n null,\n)(AnalyticsProvider) as any;\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getThemeToUse } from 'store/theme';\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\n\n// Components\nimport { ThemeProvider as MuiThemeProvider } from '@mui/material/styles';\n\ndeclare module '@mui/material/styles' {\n interface DefaultTheme extends Theme {}\n}\n\nexport const muiCache = createCache({\n key: 'mui',\n prepend: true,\n});\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction ThemeProvider({ children }: Props) {\n const themeState = useSelector((state: any) => state.theme);\n const themeToUse = useMemo(() => {\n return getThemeToUse(themeState);\n }, [themeState]);\n\n return (\n \n {children}\n \n );\n}\n\nexport default ThemeProvider;\n","import React, { useState, useCallback } from 'react';\nimport PortalContext from './context';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction PortalProvider({ children }: Props) {\n const [contentEls, setContentEls] = useState<{ [key: string]: HTMLElement }>({});\n\n const setContentEl = useCallback((portalId: string, contentEl: HTMLElement) => {\n setContentEls(previousContentEls => ({\n ...previousContentEls,\n [portalId]: contentEl,\n }));\n }, []);\n\n const removeContentEl = useCallback((portalId: string) => {\n setContentEls(previousContentEls => {\n const entries = Object.entries(previousContentEls);\n\n const newContentEls = entries\n .filter(([key]) => key !== portalId)\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {} as typeof previousContentEls);\n\n return newContentEls;\n });\n }, []);\n\n return (\n \n {children}\n \n );\n}\n\nexport default PortalProvider;\n","import React from 'react';\nimport { SvgIconProps } from '@mui/material/SvgIcon';\n\nfunction Checked(props: SvgIconProps) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Checked;\n","import React from 'react';\n\n// Components\nimport { SnackbarProvider as NotistackSnackbarProvider, SnackbarProviderProps } from 'notistack';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport CheckedIcon from 'components/Icons/Checked';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n minWidth: 'auto !important',\n },\n variantSuccess: {\n backgroundColor: `${theme.palette.common.black} !important`,\n },\n iconVariantSuccess: {\n marginRight: 10,\n },\n };\n});\n\nfunction SnackbarProvider(props: SnackbarProviderProps) {\n const { classes } = useStyles();\n\n return (\n ,\n }}\n {...props}\n />\n );\n}\n\nexport default SnackbarProvider;\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport config from 'config';\nimport wootric from 'helpers/wootricCustomAnalyticsIntegration';\nimport createStore from 'store/createStore';\n\n// Components\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport AnalyticsProvider from 'components/AnalyticsProvider';\nimport ThemeProvider from 'components/ThemeProvider';\nimport PortalProvider from 'components/skipper/PortalProvider';\nimport SnackbarProvider from 'components/skipper/SnackbarProvider';\nimport { OrgChartSettingsProvider } from 'pages/OrgChart/helpers/useOrgChartSettingsFetch';\nimport { BrowserRouter } from 'react-router-dom';\nimport { LastLocationProvider } from 'react-router-last-location';\n\nconst store = createStore() as any;\nconst customIntegrations = { wootric };\nconst isMobileView = window.location.href.includes('mobileView=true');\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction AppProvider({ children }: Props) {\n return (\n \n \n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n \n \n );\n}\n\nexport default AppProvider;\n","import { applyMiddleware, compose, createStore } from 'redux';\nimport config from '../config';\n\n// Reducers\nimport rootReducer from './reducers';\n\n// Middleware\nimport thunk from 'redux-thunk';\nimport DataService from '@sift/resift/redux/DataService';\nimport DataServiceActionHandlers, { unauthorizedHandler } from './dataServiceActionHandlers';\nimport dataServiceMiddleware from './dataServiceMiddleware';\n\nimport withSideEffects from './sideEffects';\n\nexport default () => {\n // ======================================================\n // Initial State setup\n // ======================================================\n let initialState = rootReducer({}, {});\n\n const windowAppState = window.appState ? window.appState : {};\n\n initialState = {\n ...initialState,\n ...windowAppState,\n authentication: {\n ...initialState.authentication,\n ...windowAppState.authentication,\n api: {\n ...initialState.authentication.api,\n path: '',\n authentication: config.LOGIN,\n },\n },\n };\n\n // ======================================================\n // Desktop Hook\n // ======================================================\n if (window.bridge) {\n initialState = window.bridge.getInitialState(initialState);\n }\n\n // ======================================================\n // Middleware Configuration\n // ======================================================\n let dataService = new DataService(DataServiceActionHandlers, unauthorizedHandler);\n const middleware = [thunk, dataService.middleware, dataServiceMiddleware];\n\n // ======================================================\n // Store Enhancers\n // ======================================================\n const enhancers = [];\n\n let composeEnhancers = compose;\n\n if (process.env.NODE_ENV === 'development') {\n const composeWithDevToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;\n if (typeof composeWithDevToolsExtension === 'function') {\n composeEnhancers = composeWithDevToolsExtension;\n }\n }\n\n // ======================================================\n // Store Instantiation and HMR Setup\n // ======================================================\n const store = withSideEffects(\n createStore(\n rootReducer,\n initialState,\n composeEnhancers(applyMiddleware(...middleware), ...enhancers),\n ),\n );\n store.asyncReducers = {};\n\n if (module.hot) {\n module.hot.accept('./reducers', () => {\n const reducers = require('./reducers').default;\n store.replaceReducer(reducers(store.asyncReducers));\n });\n }\n\n if (window.bridge) {\n window.bridge.setStore(store);\n }\n\n return store;\n};\n","import { defineFetch } from 'resift';\nimport config from '../config';\n\nconst makeGetAppVersionStatus = defineFetch({\n displayName:\n 'Gets the current status on how the application should update if the client is on an old version.',\n make: () => ({\n request: () => ({ http }) => {\n return http({\n method: 'POST',\n route: `/products/directory-web/compatible`,\n data: { platform: 'browser', version: config.APP_VERSION },\n req: (req: any) => {\n req.set({ Authorization: `Bearer ${config.STATIC_AUTH_TOKEN}` });\n },\n ok: () => true,\n });\n },\n }),\n});\n\nexport default makeGetAppVersionStatus();\n","import { useEffect, useState, useMemo } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport shortId from 'shortid';\nimport _get from 'lodash/get';\nimport _has from 'lodash/has';\nimport useRouter from '@sift/resift/useRouter';\nimport useInterval from 'helpers/useInterval';\nimport useFetchSiftBotEffect from './helpers/useFetchSiftBotEffect';\nimport useConfigureSentryEffect from './helpers/useConfigureSentryEffect';\nimport useSendThemeBridgeEffect from './helpers/useSendThemeBridgeEffect';\nimport useRemoveLoaderEffect from './helpers/useRemoveLoaderEffect';\nimport useRedirectEffect from './helpers/useRedirectEffect';\nimport useUpdateApp from './helpers/useUpdateApp';\nimport getTasks from 'pages/Notifications/fetches/getTasks';\nimport useWrap from 'helpers/useWrap';\n\n// Stores / Actions\nimport getAppVersionStatus from 'fetches/getAppVersionStatus';\n// @ts-ignore\nimport { fetchPerson as fetchMe } from '@sift/resift/redux/reducers/authentication';\nimport { fetchConfig } from 'store/configurations';\nimport { fetchEntityTypes } from 'store/entities';\n// @ts-ignore\nimport { fetchClient } from '@sift/resift/redux/reducers/client';\nimport { getThemeToUse } from 'store/theme';\nimport getClientOrgChart from 'fetches/getClientOrgChart';\n\nconst second = 1000;\nconst minute = 60 * second;\nconst fiveMinutes = 5 * minute;\n\ninterface Props {\n children: () => JSX.Element;\n}\n\nfunction AppFetcher({ children }: Props) {\n const dispatch = useDispatch();\n const { pathname } = useRouter().location;\n\n const [intervalKey, setIntervalKey] = useState(shortId());\n const [updateKey, setUpdateKey] = useState(intervalKey);\n\n // this `useInterval` will set the `intervalKey` with a brand new id every 5 minutes\n useInterval(() => {\n setIntervalKey(shortId());\n dispatch(getAppVersionStatus());\n }, fiveMinutes);\n\n const getIntervalKey = useWrap(intervalKey);\n\n // that `intervalKey` will be used in combination with the pathname\n // this effect is purposefully only watching the `pathname`\n // when the `pathname` changes, this will cause the `updateKey` to change if the `intervalKey` changed\n useEffect(() => {\n const intervalKey = getIntervalKey();\n setUpdateKey(intervalKey);\n }, [pathname, getIntervalKey]);\n\n const person = useSelector(state => _get(state, ['authentication', 'person']));\n const themeState = useSelector((state: any) => state.theme);\n const clientSettings = useSelector(state => _get(state, ['client', 'settings']));\n const hasUserConfig = useSelector(state => _has(state, ['configurations', 'user']));\n const hasEntityTypes = useSelector(state => _has(state, ['entities', 'types']));\n const hasSiftBotFieldsNotCompleted = useSelector(state =>\n _has(state, ['siftBot', 'fieldsNotCompleted']),\n );\n const products = useSelector(state => _get(state, ['client', 'products']));\n\n const themeToUse = useMemo(() => getThemeToUse(themeState), [themeState]);\n\n /**\n * determines whether or not `siftBot` is required to be loaded in order for `loaded` to be true\n */\n const shouldFetchSiftBot = useMemo(() => {\n if (!person) {\n // return true until `person` finishes loading\n return true;\n }\n\n if (!clientSettings) {\n // return true until `clientSettings` finishes loading\n return true;\n }\n\n if (_get(person, ['accountOnly'])) {\n return false;\n }\n\n if (!_get(clientSettings, ['siftBot', 'enabled'])) {\n return false;\n }\n\n return true;\n }, [person, clientSettings]);\n\n const siftBotLoaded = useMemo(() => {\n // if we shouldn't fetch siftbot, then siftbot is loaded as far as the app is concerned\n if (!shouldFetchSiftBot) {\n return true;\n }\n\n return hasSiftBotFieldsNotCompleted;\n }, [shouldFetchSiftBot, hasSiftBotFieldsNotCompleted]);\n\n const loaded = !!person && hasUserConfig && hasEntityTypes && !!clientSettings && siftBotLoaded;\n\n useEffect(() => {\n // (notes - Pearl) these fetches happen on app load\n dispatch(getAppVersionStatus());\n dispatch(getClientOrgChart());\n }, [dispatch]);\n\n // these fetches occur only on route change\n useEffect(() => {\n dispatch(fetchMe());\n dispatch(fetchConfig('user'));\n dispatch(fetchEntityTypes());\n dispatch(fetchClient({ expand: ['theme'] }));\n dispatch(getTasks());\n }, [dispatch, updateKey]);\n\n // other effects\n useFetchSiftBotEffect({ updateKey, shouldFetchSiftBot, person, clientSettings });\n useConfigureSentryEffect({ person });\n useSendThemeBridgeEffect({ themeToUse, loaded });\n useRemoveLoaderEffect({ loaded });\n useRedirectEffect({ products });\n useUpdateApp();\n\n if (!loaded) {\n return null;\n }\n\n return children();\n}\n\nexport default AppFetcher;\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport _get from 'lodash/get';\nimport { fetchSiftBot } from 'store/siftBot';\n\ninterface Params {\n clientSettings: any;\n person: any;\n shouldFetchSiftBot: boolean;\n updateKey: string;\n}\n\nexport default function useFetchSiftBotEffect({\n clientSettings,\n person,\n updateKey,\n shouldFetchSiftBot,\n}: Params) {\n const dispatch = useDispatch();\n\n // siftbot fetch\n useEffect(() => {\n if (!clientSettings) {\n return;\n }\n\n if (!person) {\n return;\n }\n\n if (!_get(person, 'accountOnly') && _get(clientSettings, 'siftBot.enabled')) {\n dispatch(fetchSiftBot(person.id));\n }\n }, [updateKey, shouldFetchSiftBot, person, clientSettings, dispatch]);\n}\n","import { useEffect } from 'react';\nimport { configureScope } from '@sentry/browser';\n\ninterface Params {\n person: any;\n}\n\nexport default function useConfigureSentryEffect({ person }: Params) {\n useEffect(() => {\n if (!person) {\n return;\n }\n\n configureScope(scope => {\n scope.setUser({\n id: person.id,\n email: person.email,\n });\n });\n }, [person]);\n}\n","import { useEffect } from 'react';\nimport _get from 'lodash/get';\n\ninterface Params {\n loaded: boolean;\n themeToUse: any;\n}\n\nexport default function useSendThemeBridgeEffect({ loaded, themeToUse }: Params) {\n useEffect(() => {\n if (!loaded) {\n return;\n }\n\n const bridgeGetTheme = _get(window, 'bridge.getTheme');\n if (!bridgeGetTheme) {\n return;\n }\n\n bridgeGetTheme(themeToUse);\n }, [themeToUse, loaded]);\n}\n","import { useEffect } from 'react';\n\ninterface Params {\n loaded: boolean;\n}\n\nexport default function useRemoveLoaderEffect({ loaded }: Params) {\n useEffect(() => {\n if (!loaded) {\n return;\n }\n\n const loadingContainer = document.querySelector('.loading_container');\n if (!loadingContainer) {\n return;\n }\n\n loadingContainer.classList.add('loaded');\n setTimeout(() => {\n if (!loadingContainer.parentNode) {\n return;\n }\n\n loadingContainer.parentNode.removeChild(loadingContainer);\n }, 200);\n }, [loaded]);\n}\n","import { useEffect } from 'react';\nimport getSubdomain from 'helpers/getSubdomain';\nimport queryString from 'query-string';\n\ninterface Params {\n products: any;\n}\n\n// TODO: delete this in 2020 when wellcare's contract is up\nexport default function useRedirectEffect({ products }: Params) {\n useEffect(() => {\n const subdomain = getSubdomain();\n const apps = ['pulse', 'retain', 'admin'];\n\n // wellcare hack\n if (subdomain === 'test-wellcare' || subdomain === 'wellcare') {\n const { acfwc } = queryString.parse(window.location.search);\n\n if (acfwc !== 'hippo' && !(window as any).__hippo) {\n window.location.replace(`https://${subdomain}.justsift.com/understand/diversity`);\n return;\n }\n\n (window as any).__hippo = true;\n }\n\n // skip this effect until the products become defined\n if (!products) {\n return;\n }\n\n // if `directory` is a product then, no need to redirect\n if (products.directory) {\n return;\n }\n\n // otherwise redirect to the other app\n for (const app of apps) {\n if (products[app]) {\n window.location.replace(`https://${subdomain}.justsift.com/${app}`);\n return;\n }\n }\n\n // if no apps available\n window.location.replace(`https://login.justsift.com`);\n }, [products]);\n}\n","import { useEffect } from 'react';\nimport useRouter from '@sift/resift/useRouter';\nimport { useData } from 'resift';\nimport getAppVersionStatus from 'fetches/getAppVersionStatus';\n\nexport default function useUpdateApp() {\n const { history } = useRouter();\n const { isCompatible, recommendUpdate } = useData(getAppVersionStatus) || {};\n\n useEffect(() => {\n history.listen(({ pathname }) => {\n if (isCompatible === false || recommendUpdate) {\n window.location.reload(true);\n }\n });\n }, [history, isCompatible, recommendUpdate]);\n}\n","import React, { lazy } from 'react';\nimport _get from 'lodash/get';\n// Pages\nconst EntityPage = lazy(() => import('pages/Entity'));\nconst LandingPage = lazy(() => import('pages/Landing'));\nconst SettingsPage = lazy(() => import('pages/Settings'));\nconst ListsPage = lazy(() => import('pages/Lists'));\nconst ListPage = lazy(() => import('pages/List'));\nconst ProfilePage = lazy(() => import('pages/Profile'));\nconst PersonPage = lazy(() => import('pages/Person'));\nconst OrgChartPage = lazy(() => import('pages/OrgChart'));\nconst NotificationsPage = lazy(() => import('pages/Notifications'));\nconst NoRoutePage = lazy(() => import('pages/NoRoute'));\nconst OnboardingPage = lazy(() => import('pages/Onboarding'));\nconst SmsFormPage = lazy(() => import('pages/SmsForm'));\nconst ThemeLoaderPage = lazy(() => import('pages/ThemeLoader'));\nconst SearchPage = lazy(() => import('pages/Search'));\nconst AttributePage = lazy(() => import('pages/Attribute'));\n\nconst Landing = {\n path: '/',\n component: props => ,\n exact: true,\n};\n\nconst Search = {\n title: 'Search',\n path: '/search',\n component: props => ,\n};\n\nconst Attribute = {\n title: 'Attribute',\n path: '/attribute/:entityTypeTypeKey/:field/:fieldValue',\n component: props => ,\n};\n\nconst Lists = [\n {\n title: 'Lists',\n path: ['/lists', '/lists/shared'],\n component: props => ,\n exact: true,\n },\n {\n title: 'List',\n path: '/lists/:listId',\n component: props => ,\n },\n];\n\nconst Entity = {\n title: 'Entity',\n path: '/entities/:entityId',\n component: props => ,\n};\n\nconst EntityMembers = {\n title: 'Members',\n path: '/entities/:entityId/members',\n component: props => ,\n};\n\nconst SmsForm = {\n title: 'Get the App',\n path: '/get-the-app',\n component: props => ,\n exact: true,\n};\n\nconst Settings = {\n title: 'Settings',\n path: '/settings',\n component: props => ,\n exact: true,\n};\n\nconst Profile = {\n title: 'Profile',\n path: '/profile/:id?',\n component: props => ,\n};\n\nconst Person = {\n title: 'Person',\n path: '/person/:objectKey/:value',\n component: props => ,\n};\n\nconst OrgChart = {\n title: 'OrgChart',\n path: '/orgchart',\n component: OrgChartPage,\n};\n\nconst Notifications = {\n title: 'Notifications',\n path: '/notifications',\n component: props => ,\n exact: true,\n};\n\nconst ThemeLoader = {\n title: 'Preview Theme',\n path: '/preview-theme/:themeId',\n component: props => ,\n};\n\nconst Onboarding = {\n title: 'Social Onboarding',\n path: '/onboarding',\n component: OnboardingPage,\n};\n\nconst NoRoute = {\n title: 'Not found',\n path: '/404',\n component: NoRoutePage,\n};\n\nexport default (client, user) => {\n const routes = [\n Landing,\n SmsForm,\n Entity,\n EntityMembers,\n Settings,\n Profile,\n Person,\n OrgChart,\n Notifications,\n ...Lists,\n ThemeLoader,\n Onboarding,\n NoRoute,\n Search,\n ];\n\n if (_get(client, 'settings.explore.enabled', false) || _get(user, 'account.isAdmin', false)) {\n routes.push(Attribute);\n }\n\n return routes;\n};\n","import { useMemo, useEffect } from 'react';\nimport { useData, useStatus, isNormal } from 'resift';\nimport { useSelector, useDispatch } from 'react-redux';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport fieldMap from 'pages/Onboarding/helpers/fieldMap';\nimport _get from 'lodash/get';\nimport _has from 'lodash/has';\nimport { isTruthy } from 'helpers/typings';\nimport useRouter from '@sift/resift/useRouter';\nimport slides from 'pages/Onboarding/helpers/slides';\nimport subdomainIs from 'helpers/subdomainIs';\nimport usePreserveReference from 'use-preserve-reference';\n\nimport makeSettingsFetch from 'fetches/settingsFetch';\n\nconst empty = [] as string[];\n\nexport default function useOnboardingRedirectEffect() {\n const dispatch = useDispatch();\n const { match, history } = useRouter({ path: '/onboarding' });\n const config = useSelector(state => _get(state, ['configurations', 'user']));\n const accountOnly = usePassiveRedux(state =>\n _get(state, ['authentication', 'person', 'accountOnly'], false),\n ) as boolean;\n const settingsFetch = makeSettingsFetch();\n const settings = useData(settingsFetch);\n const status = useStatus(settingsFetch);\n\n const hasSomeFields = useMemo(() => {\n const fieldKeys = Object.values(fieldMap).filter(isTruthy);\n return fieldKeys.some(key => _has(config, ['fields', key]));\n }, [config]);\n\n const state = _get(settings, ['directory', 'userOnboarding', 'state']);\n\n // TODO: this will cause two settings fetches to happen on app start\n useEffect(() => {\n dispatch(settingsFetch());\n }, [dispatch, settingsFetch]);\n\n const onboardingMatch = !!match;\n\n const completedSlides = usePreserveReference(\n _get(settings, ['directory', 'userOnboarding', 'completedSlides'], empty) as string[],\n );\n\n const lastSlide = useMemo(() => {\n const { max } = completedSlides.reduce(\n ({ max, lastSlide }, next) => {\n const index = slides.findIndex(slide => slide.path === next);\n if (index > max) {\n return { max: index, lastSlide: next };\n }\n\n return { max, lastSlide };\n },\n { max: 0, lastSlide: '' },\n );\n\n const nextSlide = slides[max + 1];\n\n if (!nextSlide) {\n return '';\n }\n\n return nextSlide.path;\n }, [completedSlides]);\n\n useEffect(() => {\n if (subdomainIs('rainforestqa')) return;\n if (accountOnly) return;\n if (!isNormal(status)) return;\n if (!hasSomeFields) return;\n if (state !== 'to-do') return;\n if (onboardingMatch) return;\n if (window.location.href.includes('mobileView=true')) return;\n\n if (!completedSlides.length) {\n history.replace('/onboarding');\n } else {\n history.replace(`/onboarding${lastSlide}`);\n }\n }, [\n hasSomeFields,\n status,\n state,\n onboardingMatch,\n accountOnly,\n completedSlides.length,\n history,\n lastSlide,\n ]);\n}\n","import { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nexport default function useExploreEnabled() {\n const exploreIsEnabled = useSelector(state =>\n _get(state, 'client.settings.explore.enabled', false),\n );\n\n const personIsAdmin = useSelector(state =>\n _get(state, 'authentication.person.account.isAdmin', false),\n );\n\n return exploreIsEnabled || personIsAdmin;\n}\n","import { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nfunction useCustomNavLinkSettings() {\n const customNavLinkSettings = useSelector(state =>\n _get(state, 'client.settings.customNavLink', {}),\n );\n\n const customNavLinkEnabled = _get(customNavLinkSettings, 'enabled', false);\n\n const customNavLinkDisplayName = _get(customNavLinkSettings, 'displayName', null);\n\n const customNavLinkUrl = _get(customNavLinkSettings, 'url', null);\n\n return { customNavLinkEnabled, customNavLinkDisplayName, customNavLinkUrl };\n}\n\nexport default useCustomNavLinkSettings;\n","import { useSelector } from 'react-redux';\nimport useExploreEnabled from 'helpers/useExploreEnabled';\nimport useSupportEnabled from 'helpers/useSupportEnabled';\nimport useSettingsEnabled from 'helpers/useSettingsEnabled';\nimport useCustomNavLinkSettings from 'helpers/useCustomNavLinkSettings';\nimport useIsAdmin from 'helpers/useIsAdmin';\nimport getHostDomain from 'helpers/getHostDomain';\nimport { SEARCH_PATH, ENTITY_TYPE_USER } from 'components/search/consts';\nimport * as Types from 'components/Navigation/typings';\n\ninterface Args {\n personId: string;\n orgChartEnabled: boolean;\n hasProfile: boolean;\n onToggleSupportDrawer: () => void;\n}\n\nfunction useNavDropdownRoutes({\n personId,\n orgChartEnabled,\n onToggleSupportDrawer,\n}: Args): {\n adminRoute?: Types.Route;\n navBarRoutes: Types.Routes;\n accountRoutes: Types.Routes;\n additionalRoutes: Types.Routes;\n msTeamsRoutes: Types.Routes;\n} {\n const hostDomain = getHostDomain();\n const exploreEnabled = useExploreEnabled();\n const supportEnabled = useSupportEnabled();\n const settingsEnabled = useSettingsEnabled();\n const {\n customNavLinkEnabled,\n customNavLinkDisplayName,\n customNavLinkUrl,\n } = useCustomNavLinkSettings();\n const isAdmin = useIsAdmin();\n const client = useSelector((state: any) => state.client);\n const additionalRouteItems: Array<{ displayName: string; url: string }> =\n client.settings.secondaryNavigationItems;\n\n const adminRoute = isAdmin && {\n name: 'Admin Dashboard',\n key: 'admin-dashboard',\n externalUrl: `http://${client.subdomain}.${hostDomain}.com/admin`,\n };\n\n const settingsRoute = settingsEnabled\n ? {\n name: 'Settings',\n key: 'settings-page',\n url: '/settings',\n }\n : null;\n\n const supportRoute = supportEnabled\n ? {\n name: 'Support',\n key: 'support',\n onClick: () => {\n onToggleSupportDrawer();\n },\n }\n : null;\n\n const directorySearchRoute = {\n name: 'Directory',\n key: 'company-directory',\n url: `${SEARCH_PATH}/${ENTITY_TYPE_USER}/`,\n };\n\n const exploreRoute = exploreEnabled\n ? {\n name: 'Analytics',\n key: 'analytics',\n url: `/search/${ENTITY_TYPE_USER}/explore`,\n }\n : null;\n\n const listRoute = {\n name: 'Lists',\n key: 'lists',\n url: '/lists',\n };\n\n const orgChartRoute = orgChartEnabled\n ? {\n name: 'Org Chart',\n key: 'org-chart',\n url: '/orgchart',\n }\n : null;\n\n const customNavRoute = customNavLinkEnabled\n ? {\n name: customNavLinkDisplayName,\n key: 'client-custom-nav-link',\n externalUrl: customNavLinkUrl,\n }\n : null;\n\n const navBarRoutes = [\n directorySearchRoute,\n exploreRoute,\n listRoute,\n orgChartRoute,\n customNavRoute,\n ].filter(route => !!route) as Types.Routes;\n\n const accountRoutes = [settingsRoute, supportRoute].filter(route => !!route) as Types.Routes;\n\n const additionalRoutes = additionalRouteItems.map(item => {\n const { displayName, url } = item;\n const routeProps = {\n name: displayName,\n key: displayName\n .toLowerCase()\n .replace(/[^a-z ]/g, '')\n .split(' ')\n .join('-'),\n };\n\n if (url.includes('http')) {\n return {\n ...routeProps,\n externalUrl: url,\n };\n }\n\n return {\n ...routeProps,\n url,\n };\n });\n\n const msTeamsRoutes = [customNavRoute, settingsRoute, supportRoute].filter(\n route => !!route,\n ) as Types.Routes;\n\n return {\n adminRoute,\n navBarRoutes,\n accountRoutes,\n additionalRoutes,\n msTeamsRoutes,\n };\n}\n\nexport default useNavDropdownRoutes;\n","import { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nexport default function useSupportEnabled() {\n const supportIsEnabled = useSelector(state =>\n _get(state, 'client.settings.support.enabled', false),\n );\n\n return supportIsEnabled;\n}\n","import { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nexport default function useSettingsEnabled() {\n const settingsEnabled = useSelector(state =>\n _get(state, 'client.settings.settingsNavigationItem.enabled', true),\n );\n\n return settingsEnabled;\n}\n","import { getContrast } from 'polished';\n\nexport default function isWhitish(color: string) {\n return getContrast(color, '#fff') < 1.2;\n}\n","import PropTypes from 'prop-types';\nimport getSubdomain from 'helpers/getSubdomain';\n\n// the subdomain map values can either be a function or a value. this will evaluate it if it's a\n// function\nfunction evaluateSubdomainMapValue(element: () => React.ReactNode | React.ReactNode) {\n if (typeof element === 'function') {\n return element();\n }\n\n return element;\n}\n\nfunction getTestSubdomain() {\n const subdomain = getSubdomain();\n if (!subdomain) {\n return undefined;\n }\n\n const match = /test-(.*)/i.exec(subdomain);\n if (!match) {\n return undefined;\n }\n\n return match[1].toLowerCase();\n}\n\ninterface Props {\n subdomainMap: {\n [key: string]: React.ReactNode | (() => React.ReactNode);\n };\n}\n\n/**\n * very simple component that handles subdomain conditionals with components\n */\nfunction SubdomainConditional({ subdomainMap }: Props): React.ReactElement | null {\n const subdomain = getSubdomain();\n const subdomainOnTest = getTestSubdomain();\n\n if (process.env.NODE_ENV !== 'production') {\n if (subdomainMap.default === undefined) {\n throw new Error('subdomainMap must have a `default` key');\n }\n }\n\n const maybeElement = (() => {\n const real = subdomainMap[subdomain as any];\n const test = subdomainMap[subdomainOnTest as any];\n if (real !== undefined) return real;\n return test;\n })();\n\n // the sub-domain conditional could be intentionally set to `null`\n // so we'll explicitly check if `undefined`\n if (maybeElement === undefined) {\n return evaluateSubdomainMapValue(subdomainMap.default as any) as React.ReactElement | null;\n }\n\n return evaluateSubdomainMapValue(maybeElement as any) as React.ReactElement | null;\n}\n\nSubdomainConditional.propTypes = {\n subdomainMap: PropTypes.object.isRequired,\n};\n\nexport default SubdomainConditional;\n","import React from 'react';\nimport readableColorForWhite from 'styles/skipper/readableColorForWhite';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport Search from '@mui/icons-material/Search';\nimport SubdomainConditional from 'components/SubdomainConditional';\n\ninterface Props {\n searchBarClass: string;\n query?: string;\n onClick: () => void;\n defaultPlaceholderText: string;\n}\n\nfunction NavSearchInput({ searchBarClass, query, onClick, defaultPlaceholderText }: Props) {\n const { classes } = useStyles();\n\n return (\n
\n
\n \n
\n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n const searchTextColor = readableColorForWhite(theme.palette.primary.main);\n\n return {\n root: {},\n searchBarContainer: {\n flex: '1 1 auto',\n minWidth: 0,\n },\n searchIcon: {\n position: 'absolute',\n left: 11,\n color: searchTextColor,\n },\n topNavIcon: {\n marginRight: theme.spacing(1),\n },\n placeholderText: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n };\n});\n\nexport default NavSearchInput;\n","/**\n * use the following array to configure the apps in the app links. this\n * configuration is used in the `MenuItems` component to map `person.products`\n * to their titles and paths\n *\n * `key` is *must* be the same key in `person.products` from `/api/people/me`\n */\nexport default [\n { key: 'directory', to: '/', title: 'Connect' },\n { key: 'pulse', to: '/pulse', title: 'Pulse' },\n { key: 'insights', to: '/insights', title: 'Insights' },\n { key: 'admin', to: '/admin', title: 'Admin' },\n];\n","import apps from './apps';\n\nconst directoryApp = apps.find(app => app.key === 'directory')!;\nif (!directoryApp) throw new Error('could not find directory key in apps in skipper');\n\nexport default function getAppFromLinkPathname(pathname: string) {\n const base = pathname\n .toLowerCase()\n .split('/')[1]\n .trim();\n\n const app = apps.find(app => app.to.split('/')[1].toLowerCase() === base);\n\n if (app) {\n return app;\n }\n\n return directoryApp;\n}\n","import React from 'react';\nimport currentApplication from '../helpers/getCurrentApplication';\nimport getAppFromLinkPathname from '../helpers/getAppFromLinkPathname';\n\n// Components\nimport { NavLink, LinkProps } from 'react-router-dom';\n\ninterface Props extends LinkProps {\n to: string;\n activeClassName?: string;\n}\n\n/**\n * simple component that determines whether or not to use `react-router` or\n * a normal ``\n */\nfunction AppLink({ className, to, children, activeClassName, ...restOfProps }: Props) {\n if (getAppFromLinkPathname(to) === currentApplication()) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport default AppLink;\n","import getAppFromLinkPathname from './getAppFromLinkPathname';\n\nexport default function currentApplication() {\n return getAppFromLinkPathname(window.location.pathname);\n}\n","import React from 'react';\nimport MenuItem from '@mui/material/MenuItem';\n\ninterface Props {\n href?: string;\n name: string;\n className: string;\n onClick?: () => void;\n}\n\nfunction ExternalMenuLink({ href, name, className, onClick }: Props) {\n return (\n \n {name}\n \n );\n}\n\nexport default ExternalMenuLink;\n","import React from 'react';\nimport _isEmpty from 'lodash/isEmpty';\nimport { AppBarRoute } from 'components/skipper/appBar/models';\n\n// Components\nimport { Link } from 'react-router-dom';\nimport MenuItem from '@mui/material/MenuItem';\nimport Divider from '@mui/material/Divider';\nimport ExternalMenuLink from 'components/skipper/appBar/ExternalMenuLink';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { CSSObject } from '@emotion/react';\n\nconst useStyles = makeStyles({ name: 'SkpAppBarMenuItem' })((theme: any) => {\n return {\n root: {},\n menuItem: {},\n sectionTitle: {\n ...theme.typography.body2,\n fontWeight: theme.typography.fontWeightBold as CSSObject,\n padding: theme.spacing(1.25, 2, 1, 2),\n textTransform: 'capitalize',\n },\n menuItemLink: {\n ...theme.typography.body1,\n textDecoration: 'none',\n },\n };\n});\n\ninterface Props {\n className?: string;\n classes?: any;\n onClose?: () => void;\n adminRoute?: AppBarRoute;\n navBarRoutes?: AppBarRoute[];\n accountRoutes?: AppBarRoute[];\n additionalRoutes?: AppBarRoute[];\n msTeamsRoutes?: AppBarRoute[];\n person: {\n products: any;\n };\n onMsTeamsLogout?: () => void;\n}\n\nfunction MenuItems({\n className,\n classes: _classes,\n onClose,\n adminRoute,\n navBarRoutes,\n accountRoutes,\n additionalRoutes,\n msTeamsRoutes,\n onMsTeamsLogout,\n}: Props) {\n const { classes } = useStyles();\n const allClasses = { ...classes, _classes };\n async function handleLogout() {\n (window as any).Intercom && (window as any).Intercom('shutdown');\n if (!!onMsTeamsLogout) {\n onMsTeamsLogout();\n } else {\n window.location.assign(\n `${window.location.origin}/api/auth/logout?redirect=true&setCookies=true`,\n );\n }\n }\n\n return (\n
\n {adminRoute && (\n \n )}\n {adminRoute && }\n\n {navBarRoutes &&\n navBarRoutes.map(route => {\n if (route.onClick) {\n return (\n
\n {route.name}\n
\n );\n }\n\n if (route.url) {\n return (\n \n {route.name}\n \n );\n }\n\n if (route.externalUrl) {\n return (\n \n );\n }\n\n return null;\n })}\n\n {navBarRoutes && }\n\n {accountRoutes &&\n accountRoutes.map(route => {\n if (route.onClick) {\n return (\n
\n {route.name}\n
\n );\n }\n\n if (route.url) {\n return (\n \n {route.name}\n \n );\n }\n\n return null;\n })}\n\n {!_isEmpty(accountRoutes) && }\n\n {additionalRoutes &&\n additionalRoutes.map(route => {\n const { name, key, externalUrl, url } = route;\n\n return (\n \n {name}\n \n );\n })}\n\n {additionalRoutes && }\n\n {msTeamsRoutes &&\n msTeamsRoutes.map(route => {\n if (route.onClick) {\n return (\n
\n {route.name}\n
\n );\n }\n\n if (route.url) {\n return (\n \n {route.name}\n \n );\n }\n\n if (route.externalUrl) {\n return (\n \n );\n }\n\n return null;\n })}\n\n {msTeamsRoutes && }\n\n \n Log Out\n \n
\n );\n}\n\nexport default MenuItems;\n","export default function getBackgroundColor(theme: any) {\n return theme.palette.primary.contrastText === '#fff'\n ? theme.palette.primary.dark\n : theme.palette.primary.light;\n}\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\nimport { AppBarRoute } from 'components/skipper/appBar/models';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport _get from 'lodash/get';\n\n// Components\nimport Avatar from 'components/atoms/Avatar';\nimport Typography from '@mui/material/Typography';\nimport Menu from '@mui/material/Menu';\nimport IconButton from '@mui/material/IconButton';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport { alpha } from '@mui/material/styles';\n\nimport AppLink from 'components/skipper/appBar/AppLink';\nimport MenuItems from 'components/skipper/appBar/MenuItems';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { useTheme, Theme } from '@mui/material/styles';\nimport brandColors from 'styles/skipper/brandColors';\nimport getBackgroundColor from 'styles/getBackgroundColor';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n textDecoration: 'none',\n position: 'relative',\n marginLeft: theme.spacing(0.75),\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n minWidth: '150px',\n },\n link: {\n display: 'flex',\n flex: '1 1 auto',\n alignItems: 'center',\n borderRadius: 999,\n color: theme.palette.originalPrimary.contrastText,\n padding: theme.spacing(0.5, 0.75),\n '&:hover': {\n backgroundColor: getBackgroundColor(theme),\n '& #person-menu-display-name': {\n color: theme.palette.primary.contrastText,\n },\n },\n },\n linkActive: {\n backgroundColor: getBackgroundColor(theme),\n },\n linkPrimary: {\n color: theme.palette.originalPrimary.contrastText,\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent',\n },\n },\n },\n linkSecondary: {\n color: theme.palette.originalSecondary.contrastText,\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent',\n },\n },\n },\n icon: {\n color: theme.palette.primary.contrastText,\n flex: '0 0 auto',\n marginLeft: theme.spacing(1),\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n },\n },\n iconPrimary: {\n color: theme.palette.originalPrimary.contrastText,\n },\n iconSecondary: {\n color: theme.palette.originalSecondary.contrastText,\n },\n avatarContainer: {},\n avatarNew: {\n marginRight: theme.spacing(1),\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n marginRight: theme.spacing(),\n },\n name: {\n minWidth: '100px',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '180px',\n padding: 2,\n },\n menuPaper: {\n minWidth: 200,\n top: '65px !important',\n },\n menuItemLink: {\n color: theme.palette.text.primary,\n },\n };\n});\n\nexport interface Props {\n className?: string;\n avatar?: React.ReactNode;\n color?: 'default' | 'inherit' | 'primary' | 'secondary';\n navBarRoutes?: AppBarRoute[];\n accountRoutes?: AppBarRoute[];\n additionalRoutes?: AppBarRoute[];\n msTeamsRoutes?: AppBarRoute[];\n person: {\n id: string;\n displayName: string;\n accountOnly: boolean;\n products: { [key: string]: boolean | undefined };\n };\n pictureUrl?: string;\n onProfileClick?: () => void;\n}\n\n/**\n * A Person/Profile dropdown to easily give user access to a list of\n * available routes (applications, settings, admin, etc.).\n *\n * Overrides for styling are provided via `color` and `classes`.\n */\nfunction PersonMenu({\n avatar: avatarFromProps,\n pictureUrl,\n person,\n navBarRoutes,\n accountRoutes,\n additionalRoutes,\n msTeamsRoutes,\n color,\n className,\n onProfileClick,\n}: Props) {\n const theme = useTheme();\n let { classes } = useStyles();\n const [openPopover, setOpenPopover] = useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleOpen = (event: React.MouseEvent) => {\n setOpenPopover(true);\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setOpenPopover(false);\n };\n\n const { displayName, accountOnly, _alternateFieldValues } = person;\n const altDisplayName = _get(_alternateFieldValues, 'displayName');\n const primaryDark = _get(theme, ['palette', 'primary', 'dark'], brandColors.common.black);\n const defaultPictureUrl = createPictureUrlFromColor(primaryDark);\n\n const avatar = avatarFromProps || (\n \n );\n\n const personClasses = classnames(classes.link, {\n [classes.linkPrimary]: color === 'primary',\n [classes.linkSecondary]: color === 'secondary',\n });\n const iconClasses = classnames(classes.icon, {\n [classes.iconPrimary]: color === 'primary',\n [classes.iconSecondary]: color === 'secondary',\n });\n const rootClasses = classnames(classes.root, className);\n\n const hasProfile = person.products.directory && !accountOnly;\n\n const menu = (\n \n \n \n );\n\n const renderDisplayName = () => {\n return (\n \n
\n {displayName}\n
\n {altDisplayName && {`(${altDisplayName})`}}\n
\n );\n };\n\n if (!hasProfile) {\n return (\n
\n
\n {avatar}\n {renderDisplayName()}\n \n
\n {menu}\n
\n );\n }\n\n return (\n
\n \n {avatar}\n {renderDisplayName()}\n \n \n \n \n {menu}\n
\n );\n}\n\nexport default PersonMenu;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\nimport { useTheme } from '@mui/material/styles';\nimport getPictureUrl from 'helpers/getPictureUrl';\nimport * as Types from 'components/Navigation/typings';\nimport * as Sift from '@sift/types';\n\nimport PersonMenu from 'components/skipper/appBar/PersonMenu';\n\ninterface Props {\n className?: string;\n classes?: any;\n avatar?: React.ReactNode;\n color?: 'default' | 'inherit' | 'primary' | 'secondary';\n navBarRoutes?: Types.Routes;\n accountRoutes?: Types.Routes;\n additionalRoutes?: Types.Routes;\n msTeamsRoutes?: Types.Routes;\n person: Sift.Person;\n pictureUrl?: string;\n onProfileClick?: () => void;\n}\n\nfunction NavPersonMenu({\n accountRoutes,\n additionalRoutes,\n className,\n classes,\n person,\n pictureUrl: _pictureUrl,\n}: Props) {\n const theme = useTheme();\n\n const preferOfficialPhotos = useSelector(state =>\n _get(state, 'settings.directory.preferOfficialPhotos', false),\n );\n const officialPictureUrl = person.officialPictureUrl;\n const pictureUrl = getPictureUrl(\n _pictureUrl || person.pictureUrl,\n officialPictureUrl,\n preferOfficialPhotos,\n theme,\n );\n\n return (\n \n );\n}\n\nexport default NavPersonMenu;\n","/**\n * Notes (Pearl): This unfortunately has to exist because svg clip path is not working in material\n * ui drawer in appBar/Drawer component in chrome.\n */\n\nimport React, { useRef, useState, useEffect } from 'react';\nimport bowser from 'bowser';\nimport urlParse from 'url-parse';\nimport queryString from 'query-string';\nimport useInterval from 'helpers/useInterval';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\n\nconst useStyles = makeStyles()(() => {\n return {\n root: {\n flex: '0 0 auto',\n width: 40,\n height: 40,\n borderRadius: 99999,\n overflow: 'hidden',\n '@media print': {\n WebkitMaskImage: '-webkit-radial-gradient(white, black)',\n },\n ...(bowser.safari\n ? {\n overflow: 'hidden',\n }\n : undefined),\n },\n img: {\n width: '100%',\n height: '100%',\n textAlign: 'center',\n // Handle non-square image. The property isn't supported by IE 11.\n objectFit: 'cover',\n // IE fix\n ...(bowser.msie\n ? {\n height: 'auto',\n top: '50%',\n transform: 'translateY(-50%)',\n position: 'relative',\n }\n : undefined),\n },\n };\n});\n\ninterface Props {\n className?: string;\n src: string;\n alt: string;\n ignoreOfficialPhotos?: boolean;\n}\n\nfunction AvatarOld({ className, src: _src, alt }: Props) {\n const { classes } = useStyles();\n // ensures it's always a string\n const src = _src || '';\n\n const rootRef = useRef(null);\n\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [hadError, setHadError] = useState(false);\n\n const updateSizing = () => {\n const rootEl = rootRef.current;\n if (!rootEl) {\n return;\n }\n\n const rect = rootEl.getBoundingClientRect();\n if (rect.width > width && rect.height > height) {\n setWidth(rect.width);\n setHeight(rect.height);\n }\n };\n\n useInterval(updateSizing, 1000);\n useEffect(updateSizing, []);\n\n const sizedSrc = (() => {\n if (!src.includes('people-media') && !src.includes('profileImages')) {\n return src;\n }\n\n if (hadError) {\n return src;\n }\n\n if (!width || !height) {\n return '';\n }\n\n const url = urlParse(src);\n url.set(\n 'query',\n queryString.stringify({\n // @ts-ignore\n ...queryString.parse(url.query),\n width: width * 2,\n height: height * 2,\n }),\n );\n\n return url.toString();\n })();\n\n const handleError = () => {\n setHadError(true);\n };\n\n return (\n \n {sizedSrc && (\n \n )}\n \n );\n}\n\nexport default AvatarOld;\n","/**\n * Notes (Pearl): This unfortunately has to exist because svg clip path is not working in material\n * ui drawer in appBar/Drawer component in chrome.\n */\n\nimport React from 'react';\nimport ensurePictureUrl from 'components/Avatar/helpers/ensurePictureUrl';\nimport usePictureUrlFromPerson from 'components/Avatar/helpers/usePictureUrlFromPerson';\nimport _get from 'lodash/get';\nimport { useTheme } from '@mui/material/styles';\n\nimport AvatarOld from './AvatarOld';\n\ninterface Person {\n displayName: string;\n pictureUrl: string;\n officialPictureUrl?: string;\n}\n\n// prettier-ignore\ntype Props = {\n className?: string;\n } & (\n | { person: Person; }\n | { pictureUrl: string; alt: string; }\n );\n\nfunction Container({ className, person, pictureUrl: pictureUrlFromProps, alt }: any) {\n const theme = useTheme();\n const displayName = _get(person, ['displayName']) as string | undefined;\n\n const pictureUrlFromPerson = usePictureUrlFromPerson(person);\n\n const _pictureUrl = pictureUrlFromProps || pictureUrlFromPerson;\n const pictureUrl = ensurePictureUrl(_pictureUrl, theme);\n\n return ;\n}\n\n// @ts-ignore\nexport default Container as React.ComponentType;\n","import React from 'react';\nimport { AppBarRoute } from 'components/skipper/appBar/models';\nimport _get from 'lodash/get';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\n\n// Components\nimport AvatarOld from 'components/skipper/AvatarOld';\nimport Drawer from '@mui/material/Drawer';\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';\nimport MenuItems from 'components/skipper/appBar/MenuItems';\nimport AppLink from 'components/skipper/appBar/AppLink';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport brandColors from 'styles/skipper/brandColors';\n\nconst useStyles = makeStyles()((theme: any) => {\n return {\n header: {\n display: 'flex',\n alignItems: 'center',\n height: 130,\n minHeight: 130,\n background: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n headerLink: {\n marginRight: theme.spacing(1),\n textDecoration: 'none',\n color: theme.palette.primary.contrastText,\n },\n headerAvatar: {\n marginLeft: theme.spacing(1),\n marginBottom: theme.spacing(1),\n border: `1px solid ${theme.palette.primary.contrastText}`,\n width: 46,\n height: 46,\n },\n headerArrowContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n cursor: 'pointer',\n },\n headerArrow: {\n padding: 10,\n height: 50,\n width: 50,\n cursor: 'pointer',\n },\n drawerPaper: {\n minWidth: 260,\n },\n copyEllipsis: {\n width: 200,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n };\n});\n\ninterface Props {\n className?: string;\n onClose?: () => void;\n open: boolean;\n adminRoute?: AppBarRoute;\n navBarRoutes?: AppBarRoute[];\n accountRoutes?: AppBarRoute[];\n additionalRoutes?: AppBarRoute[];\n person: {\n id: string;\n displayName: string;\n title: string;\n accountOnly: boolean;\n products: { [key: string]: boolean | undefined };\n };\n pictureUrl?: string;\n theme?: any;\n}\nfunction AppDrawer({\n className,\n pictureUrl,\n adminRoute,\n navBarRoutes,\n accountRoutes,\n additionalRoutes,\n person,\n open,\n onClose,\n theme,\n}: Props) {\n const { classes } = useStyles();\n const primaryDark = _get(theme, ['palette', 'primary', 'dark'], brandColors.common.black);\n const defaultPictureUrl = createPictureUrlFromColor(primaryDark);\n\n const avatarContent = (\n <>\n \n\n {person.displayName}\n
{person.title}
\n \n );\n\n return (\n \n
\n
\n \n
\n\n {person.products.directory && !person.accountOnly ? (\n \n {avatarContent}\n \n ) : (\n
{avatarContent}
\n )}\n
\n \n \n );\n}\n\nexport default AppDrawer;\n","import React, { useState } from 'react';\nimport getPictureUrl from 'helpers/getPictureUrl';\nimport { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport classNames from 'classnames';\nimport { HAMBURGER_BREAK_POINT } from '../consts';\n\nimport ReorderIcon from '@mui/icons-material/Reorder';\nimport AppDrawer from 'components/skipper/appBar/Drawer';\n\nimport * as Types from 'components/Navigation/typings';\n\ninterface Props {\n person: any;\n pictureUrl?: string;\n adminRoute?: Types.Route;\n navBarRoutes?: Types.Route[];\n accountRoutes?: Types.Route[];\n additionalRoutes?: Types.Route[];\n}\n\nfunction NavHamburgerMenu({\n person,\n pictureUrl,\n adminRoute,\n navBarRoutes,\n accountRoutes,\n additionalRoutes,\n}: Props) {\n const { classes, theme } = useStyles();\n const [open, setOpen] = useState(false);\n const preferOfficialPhotos = useSelector(state =>\n _get(state, 'settings.directory.preferOfficialPhotos', false),\n );\n const officialPictureUrl = person.officialPictureUrl;\n const _pictureUrl = getPictureUrl(\n pictureUrl || person.pictureUrl,\n officialPictureUrl,\n preferOfficialPhotos,\n theme,\n );\n\n const handleToggleDrawerOpen = () => {\n setOpen(!open);\n };\n\n return (\n <>\n \n \n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n navIcons: {\n flex: '0 0 auto',\n color: theme.palette.primary.contrastText,\n width: 36,\n height: 36,\n cursor: 'pointer',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1),\n },\n hamburgerIcon: {\n display: 'none',\n [HAMBURGER_BREAK_POINT]: {\n display: 'block',\n },\n },\n}));\n\nexport default NavHamburgerMenu;\n","export const HAMBURGER_BREAK_POINT = '@media (max-width:1148px)';\n\nexport const HIDE_SEARCH_BREAK_POINT = '@media (max-width:312px)';\n","import React, { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router';\n\nimport IconButton from '@mui/material/IconButton';\n\nimport NavigateBefore from '@mui/icons-material/NavigateBefore';\nimport NavigateAfter from '@mui/icons-material/NavigateNext';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction NavBackAndForwardButtons() {\n const { classes } = useStyles();\n const history = useHistory();\n const [canGoForward, setCanGoForward] = useState(false);\n const [canGoBack, setCanGoBack] = useState(false);\n\n useEffect(() => {\n if (window.bridge) {\n window.bridge.setNavigationChangedHandler(changedHandler);\n }\n }, []);\n\n const changedHandler = (canGoBack, canGoForward) => {\n setCanGoForward(canGoForward);\n setCanGoBack(canGoBack);\n };\n\n const goBack = () => {\n history.goBack();\n };\n\n const goForward = () => {\n history.goForward();\n };\n\n return (\n
\n \n \n \n \n \n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => ({\n root: {\n display: 'flex',\n // TODO: Transfer this up to the parent in MUI Next\n marginRight: '16px',\n },\n icon: {\n color: theme.palette.primary.contrastText,\n },\n}));\n\nexport default NavBackAndForwardButtons;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { useLocation } from 'react-router-dom';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport getBackgroundColor from 'styles/getBackgroundColor';\nimport { alpha } from '@mui/material/styles';\n\ninterface Props {\n children: React.ReactNode;\n onClick?: () => void;\n toPath?: string;\n notToPath?: string;\n}\n\nexport default function NavButton({\n children,\n onClick,\n toPath = 'randomToPath',\n notToPath = 'randomNotToPath',\n}: Props) {\n const { classes } = useStyles();\n const location = useLocation();\n const routeActive = location.pathname.includes(toPath) && !location.pathname.includes(notToPath);\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n marginLeft: theme.spacing(1.25),\n whiteSpace: 'nowrap',\n padding: theme.spacing(0.25, 2),\n backgroundColor: 'inherit',\n borderRadius: '16px',\n border: 'none',\n color: alpha(theme.palette.getContrastText(theme.palette.primary.main), 0.7),\n cursor: 'pointer',\n textTransform: 'uppercase',\n minWidth: 64,\n boxSizing: 'border-box',\n fontFamily: \"'Source Sans Pro', sans-serif\",\n fontWeight: 700,\n lineHeight: 1.75,\n letterSpacing: '1.25px',\n transition: 'all .25s',\n '&:hover': {\n color: theme.palette.getContrastText(theme.palette.primary.main),\n backgroundColor: getBackgroundColor(theme),\n },\n },\n active: {\n backgroundColor: getBackgroundColor(theme),\n },\n };\n});\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\n\nimport { NavLink } from 'react-router-dom';\nimport NavButton from '../NavButton';\n\ninterface Props {\n toPath: string;\n displayName: string;\n exact?: boolean;\n}\n\nfunction NavigationLink({ toPath, displayName, exact = true }: Props) {\n const analytics = useAnalytics();\n\n return (\n {\n analytics.track(`${displayName} Tab Clicked`, { category: 'Navigation' });\n }}\n >\n {displayName}\n \n );\n}\n\nexport default NavigationLink;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport useCustomNavLinkSettings from 'helpers/useCustomNavLinkSettings';\nimport NewTabDiv from 'components/atoms/NewTabDiv';\nimport NavButton from '../NavButton';\n\nfunction CustomNavLink() {\n const analytics = useAnalytics();\n const { customNavLinkUrl, customNavLinkDisplayName } = useCustomNavLinkSettings();\n\n if (!customNavLinkUrl || !customNavLinkDisplayName) {\n return null;\n }\n\n return (\n {\n analytics.track(`Custom nav link ${customNavLinkDisplayName} Tab Clicked`, {\n category: 'Navigation',\n });\n }}\n >\n \n \n \n \n );\n}\n\nexport default CustomNavLink;\n","export default {\n v: '5.3.4',\n fr: 24,\n ip: 0,\n op: 43,\n w: 500,\n h: 500,\n nm: 'Bell Animation',\n ddd: 0,\n assets: [],\n layers: [\n {\n ddd: 0,\n ind: 1,\n ty: 4,\n nm: 'Bell_Loop',\n parent: 2,\n sr: 1,\n ks: {\n o: { a: 0, k: 100, ix: 11 },\n r: { a: 0, k: 0, ix: 10 },\n p: { a: 0, k: [28.355, -2.847, 0], ix: 2 },\n a: { a: 0, k: [5.16, 4.094, 0], ix: 1 },\n s: { a: 0, k: [100, 100, 100], ix: 6 },\n },\n ao: 0,\n shapes: [\n {\n ty: 'gr',\n it: [\n {\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-1.63, 0], [0, 2.07], [2.14, 0], [0, -2.22]],\n o: [[1.63, 0], [0, -2.06], [-2.14, 0], [0, 2.23]],\n v: [[3.66, 5.94], [7.74, 4.66], [3.87, 0], [0, 4.66]],\n c: true,\n },\n ix: 2,\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false,\n },\n {\n ty: 'fl',\n c: { a: 0, k: [1, 1, 1, 1], ix: 4 },\n o: { a: 0, k: 100, ix: 5 },\n r: 1,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false,\n },\n {\n ty: 'tr',\n p: { a: 0, k: [0, 0], ix: 2 },\n a: { a: 0, k: [0, 0], ix: 1 },\n s: { a: 0, k: [133.333, 133.333], ix: 3 },\n r: { a: 0, k: 0, ix: 6 },\n o: { a: 0, k: 100, ix: 7 },\n sk: { a: 0, k: 0, ix: 4 },\n sa: { a: 0, k: 0, ix: 5 },\n nm: 'Transform',\n },\n ],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false,\n },\n ],\n ip: 0,\n op: 43,\n st: 0,\n bm: 0,\n },\n {\n ddd: 0,\n ind: 2,\n ty: 4,\n nm: 'Bell_Body',\n sr: 1,\n ks: {\n o: { a: 0, k: 100, ix: 11 },\n r: {\n a: 1,\n k: [\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 16,\n s: [0],\n e: [-8],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 19,\n s: [-8],\n e: [28],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 23,\n s: [28],\n e: [-25],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 26,\n s: [-25],\n e: [9],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 29,\n s: [9],\n e: [-5],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 32,\n s: [-5],\n e: [1],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 35,\n s: [1],\n e: [-2],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 38,\n s: [-2],\n e: [0],\n },\n { t: 40 },\n ],\n ix: 10,\n },\n p: {\n s: true,\n x: { a: 0, k: 255.5, ix: 3 },\n y: { a: 0, k: 94.939, ix: 4 },\n },\n a: { a: 0, k: [28.355, -2.82, 0], ix: 1 },\n s: { a: 0, k: [550, 550, 100], ix: 6 },\n },\n ao: 0,\n shapes: [\n {\n ty: 'gr',\n it: [\n {\n ty: 'gr',\n it: [\n {\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [\n [2.34, 0],\n [0, 0],\n [0, 0],\n [8.19, 0],\n [0, -8.46],\n [0, 0],\n [0, 0],\n [0, -2.42],\n [-2.34, 0],\n [0, 0],\n [0, 2.41],\n ],\n o: [\n [0, 0],\n [0, 0],\n [0, -8.46],\n [-8.19, 0],\n [0, 0],\n [0, 0],\n [-2.34, 0],\n [0, 2.41],\n [0, 0],\n [2.34, 0],\n [0, -2.42],\n ],\n v: [\n [38.12, 24.06],\n [36, 24.06],\n [36, 15.31],\n [21.18, 0],\n [6.35, 15.31],\n [6.35, 24.06],\n [4.24, 24.06],\n [0, 28.43],\n [4.24, 32.8],\n [38.12, 32.8],\n [42.36, 28.43],\n ],\n c: true,\n },\n ix: 2,\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false,\n },\n {\n ty: 'tr',\n p: { a: 0, k: [0, 0], ix: 2 },\n a: { a: 0, k: [0, 0], ix: 1 },\n s: { a: 0, k: [100, 100], ix: 3 },\n r: { a: 0, k: 0, ix: 6 },\n o: { a: 0, k: 100, ix: 7 },\n sk: { a: 0, k: 0, ix: 4 },\n sa: { a: 0, k: 0, ix: 5 },\n nm: 'Transform',\n },\n ],\n nm: 'Path',\n np: 1,\n cix: 2,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false,\n },\n {\n ty: 'fl',\n c: { a: 0, k: [1, 1, 1, 1], ix: 4 },\n o: { a: 0, k: 100, ix: 5 },\n r: 1,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false,\n },\n {\n ty: 'tr',\n p: { a: 0, k: [0, 0], ix: 2 },\n a: { a: 0, k: [0, 0], ix: 1 },\n s: { a: 0, k: [133.333, 133.333], ix: 3 },\n r: { a: 0, k: 0, ix: 6 },\n o: { a: 0, k: 100, ix: 7 },\n sk: { a: 0, k: 0, ix: 4 },\n sa: { a: 0, k: 0, ix: 5 },\n nm: 'Transform',\n },\n ],\n nm: 'Page 1',\n np: 2,\n cix: 2,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false,\n },\n ],\n ip: 0,\n op: 43,\n st: 0,\n bm: 0,\n },\n {\n ddd: 0,\n ind: 3,\n ty: 4,\n nm: 'MASK',\n parent: 2,\n sr: 1,\n ks: {\n o: { a: 0, k: 100, ix: 11 },\n r: { a: 0, k: 0, ix: 10 },\n p: {\n s: true,\n x: { a: 0, k: 28.355, ix: 3 },\n y: { a: 0, k: 37.412, ix: 4 },\n },\n a: { a: 0, k: [26.067, 4.107, 0], ix: 1 },\n s: { a: 0, k: [100, 100, 100], ix: 6 },\n },\n ao: 0,\n shapes: [\n {\n ty: 'gr',\n it: [\n {\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0], [0, 0], [0, 0]],\n o: [[0, 0], [0, 0], [0, 0], [0, 0]],\n v: [[0, 0.24], [39.1, 0], [39.1, 6.16], [0.97, 5.87]],\n c: true,\n },\n ix: 2,\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false,\n },\n {\n ty: 'fl',\n c: { a: 0, k: [1, 1, 1, 1], ix: 4 },\n o: { a: 0, k: 100, ix: 5 },\n r: 1,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false,\n },\n {\n ty: 'tr',\n p: { a: 0, k: [0, 0], ix: 2 },\n a: { a: 0, k: [0, 0], ix: 1 },\n s: { a: 0, k: [133.333, 133.333], ix: 3 },\n r: { a: 0, k: 0, ix: 6 },\n o: { a: 0, k: 100, ix: 7 },\n sk: { a: 0, k: 0, ix: 4 },\n sa: { a: 0, k: 0, ix: 5 },\n nm: 'Transform',\n },\n ],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false,\n },\n ],\n ip: 0,\n op: 43,\n st: 0,\n bm: 0,\n },\n {\n ddd: 0,\n ind: 4,\n ty: 4,\n nm: 'Bell_Pendulum',\n parent: 2,\n sr: 1,\n ks: {\n o: { a: 0, k: 100, ix: 11 },\n r: { a: 0, k: 0, ix: 10 },\n p: {\n s: true,\n x: {\n a: 1,\n k: [\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 16,\n s: [28.356],\n e: [11.24],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 24,\n s: [11.24],\n e: [42.999],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 28,\n s: [42.999],\n e: [14.921],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 31,\n s: [14.921],\n e: [38.548],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 35,\n s: [38.548],\n e: [19.43],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 38,\n s: [19.43],\n e: [28.356],\n },\n { t: 42 },\n ],\n ix: 3,\n },\n y: {\n a: 1,\n k: [\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 16,\n s: [42.897],\n e: [42.999],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 24,\n s: [42.999],\n e: [42.897],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 28,\n s: [42.897],\n e: [42.999],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 31,\n s: [42.999],\n e: [42.922],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [0.333], y: [0] },\n n: ['0p667_1_0p333_0'],\n t: 35,\n s: [42.922],\n e: [42.945],\n },\n {\n i: { x: [0.667], y: [1] },\n o: { x: [1], y: [0] },\n n: ['0p667_1_1_0'],\n t: 38,\n s: [42.945],\n e: [42.897],\n },\n { t: 42 },\n ],\n ix: 4,\n },\n },\n a: { a: 0, k: [0, 0, 0], ix: 1 },\n s: { a: 0, k: [100, 100, 100], ix: 6 },\n },\n ao: 0,\n shapes: [\n {\n ty: 'gr',\n it: [\n {\n d: 1,\n ty: 'el',\n s: { a: 0, k: [9, 9], ix: 2 },\n p: { a: 0, k: [0, 0], ix: 3 },\n nm: 'Ellipse Path 1',\n mn: 'ADBE Vector Shape - Ellipse',\n hd: false,\n },\n {\n ty: 'fl',\n c: { a: 0, k: [1, 1, 1, 1], ix: 4 },\n o: { a: 0, k: 100, ix: 5 },\n r: 1,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false,\n },\n {\n ty: 'tr',\n p: { a: 0, k: [0, 0], ix: 2 },\n a: { a: 0, k: [0, 0], ix: 1 },\n s: { a: 0, k: [133.333, 133.333], ix: 3 },\n r: { a: 0, k: 0, ix: 6 },\n o: { a: 0, k: 100, ix: 7 },\n sk: { a: 0, k: 0, ix: 4 },\n sa: { a: 0, k: 0, ix: 5 },\n nm: 'Transform',\n },\n ],\n nm: 'Oval 4',\n np: 2,\n cix: 2,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false,\n },\n ],\n ip: 0,\n op: 43,\n st: 0,\n bm: 0,\n },\n ],\n markers: [],\n};\n","import React, { forwardRef } from 'react';\n// import PropTypes from 'prop-types';\nimport Lottie from 'react-lottie';\n\ninterface Props {\n loop?: boolean;\n autoplay?: boolean;\n animationData: any;\n stop?: boolean;\n pause?: boolean;\n height?: number;\n width?: number;\n options?: any;\n eventListeners?: any[];\n}\n\nconst LottieAnimation = forwardRef(\n (\n {\n loop = true,\n autoplay = true,\n animationData,\n stop,\n pause,\n height = 40,\n width = 40,\n options,\n ...restOfProps\n }: Props,\n ref: any,\n ) => {\n const defaultOptions = {\n loop,\n autoplay: autoplay,\n animationData: animationData,\n rendererSettings: {\n preserveAspectRatio: 'xMidYMid slice',\n },\n ...options,\n };\n\n return (\n \n );\n },\n);\n\n// LottieAnimation.propTypes = {\n// animationData: PropTypes.any,\n// stop: PropTypes.bool,\n// pause: PropTypes.bool,\n// loop: PropTypes.bool,\n// autoplay: PropTypes.bool,\n// height: PropTypes.number,\n// width: PropTypes.number,\n// };\n\nexport default LottieAnimation;\n","import React, { useRef, useEffect } from 'react';\n// Components\nimport Bell from './bell.lottie';\nimport LottieAnimation from 'components/LottieAnimation';\nimport { useTheme } from '@mui/material/styles';\n\nfunction BellIcon() {\n const theme = useTheme();\n const lottieRef = useRef();\n\n useEffect(() => {\n if (lottieRef) {\n const allPathNodes = lottieRef.current.el.querySelectorAll('path') || [];\n allPathNodes.forEach((el: any) => {\n el.style.fill = theme.palette.primary.contrastText;\n });\n }\n }, [lottieRef, theme]);\n\n return (\n \n );\n}\n\nexport default BellIcon;\n","import React from 'react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport getBackgroundColor from 'styles/getBackgroundColor';\n\nimport _get from 'lodash/get';\nimport getTasks from 'pages/Notifications/fetches/getTasks';\nimport { useData } from 'resift';\nimport useAnalytics from 'helpers/useAnalytics';\n\nimport { NavLink } from 'react-router-dom';\nimport IconButton from '@mui/material/IconButton';\nimport BellIcon from 'pages/Notifications/components/BellIcon';\n\nfunction NotificationBell() {\n const { classes } = useStyles();\n const analytics = useAnalytics();\n\n const tasks = useData(getTasks);\n const unseenActivityItems = _get(tasks, 'other.results', []).filter((item: any) => !item.seenAt);\n const numberOfUnseenActivityItems = unseenActivityItems.length;\n const numberOfTasks = _get(tasks, 'required.results.length', 0);\n const notificationCountToShow = numberOfTasks + numberOfUnseenActivityItems;\n\n const handleClick = () => {\n const label = notificationCountToShow > 0 ? 'with count red dot' : 'no count red dot';\n analytics.track('Notification Bell Clicked', {\n category: 'Navigation',\n label,\n });\n };\n\n return (\n \n \n \n {notificationCountToShow > 0 && (\n
{notificationCountToShow}
\n )}\n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n marginLeft: theme.spacing(1.25),\n position: 'relative',\n '&:hover': {\n '& #hover-container': {\n visibility: 'visible',\n },\n },\n },\n bellContainer: {\n display: 'flex',\n alignItems: 'end',\n padding: theme.spacing(0.25),\n marginRight: '9px !important',\n marginTop: '8px !important',\n '& > div > svg': {\n width: '36px !important',\n height: '36px !important',\n },\n zIndex: theme.zIndex.surface,\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n hoverBackground: {\n position: 'absolute',\n backgroundColor: getBackgroundColor(theme),\n width: 48,\n height: 48,\n borderRadius: '50%',\n top: 3,\n left: -theme.spacing(0.25),\n visibility: 'hidden',\n transition: 'visibility 0.1s linear',\n },\n badge: {\n backgroundColor: theme.palette.error.main,\n color: 'white',\n fontSize: 12,\n padding: '1px 4px',\n fontWeight: 'bold',\n borderRadius: '50%',\n marginLeft: -theme.spacing(1),\n zIndex: theme.zIndex.tooltip,\n top: 0,\n right: 0,\n position: 'absolute',\n },\n}));\n\nexport default NotificationBell;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon';\n\nfunction AdminIcon(props: SvgIconProps) {\n return (\n \n \n \n \n );\n}\n\nexport default AdminIcon;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport useIsAdmin from 'helpers/useIsAdmin';\nimport getHostDomain from 'helpers/getHostDomain';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport getBackgroundColor from 'styles/getBackgroundColor';\n\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport AdminIcon from 'components/Icons/Admin';\n\nfunction AdminNavLink() {\n const { classes } = useStyles();\n const isAdmin = useIsAdmin();\n const client = useSelector((state: any) => state.client);\n const hostDomain = getHostDomain();\n\n if (!isAdmin) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n icon: {\n color: theme.palette.primary.contrastText,\n },\n iconButton: {\n '&:hover': {\n backgroundColor: getBackgroundColor(theme),\n },\n },\n}));\n\nexport default AdminNavLink;\n","import React from 'react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport classNames from 'classnames';\nimport { transparentize } from 'polished';\nimport useExploreEnabled from 'helpers/useExploreEnabled';\nimport useCustomNavLinkSettings from 'helpers/useCustomNavLinkSettings';\nimport useWidth from 'helpers/useWidth';\nimport useAnalytics from 'helpers/useAnalytics';\nimport * as Types from 'components/Navigation/typings';\n\nimport { Link } from 'react-router-dom';\nimport { Route } from 'react-router';\nimport SiftLogo from 'components/skipper/SiftLogo';\nimport NavSearchInput from 'components/Navigation/NavigationSearchInput';\nimport NavPersonMenu from 'components/Navigation/NavPersonMenu';\nimport NavHamburgerMenu from 'components/Navigation/NavHamburgerMenu';\nimport NavBackAndForwardButtons from 'components/Navigation/NavBackAndForwardButtons';\nimport NavigationLink from 'components/Navigation/NavigationLink';\nimport NavButton from 'components/Navigation/NavButton';\nimport CustomNavLink from 'components/Navigation/CustomNavLink';\nimport NotificationBell from 'components/Navigation/NotificationBell';\nimport AdminNavLink from 'components/Navigation/AdminNavLink';\nimport { SEARCH_PATH, EXPLORE_PATH, ENTITY_TYPE_USER } from 'components/search/consts';\n\ninterface Props {\n person: any;\n pictureUrl?: string;\n logoUrl?: string;\n query?: string;\n dropdownRoutes: {\n adminRoute?: Types.Route;\n navBarRoutes: Types.Routes;\n accountRoutes: Types.Routes;\n additionalRoutes: Types.Routes;\n msTeamsRoutes: Types.Routes;\n };\n searchIcon: React.ReactElement | null;\n searchBarClass: string;\n responsiveClasses: {\n tabletContainer: string;\n routeContainer: string;\n };\n orgChartEnabled: boolean;\n onClickSearch: () => void;\n}\n\nfunction DefaultNavigation({\n person,\n pictureUrl,\n logoUrl,\n query,\n dropdownRoutes,\n searchIcon,\n searchBarClass,\n responsiveClasses,\n orgChartEnabled,\n onClickSearch,\n}: Props) {\n const { classes } = useStyles();\n const width = useWidth();\n const exploreEnabled = useExploreEnabled();\n const { customNavLinkEnabled } = useCustomNavLinkSettings();\n const analytics = useAnalytics();\n // @ts-ignore\n const isOnDesktopApp = !!window.bridge;\n\n const handleProfileClick = () => {\n analytics.track('User Own Profile Clicked', {\n category: 'Navigation',\n });\n };\n\n return (\n <>\n \n \n {logoUrl ? (\n \"Logo\"\n ) : (\n \n )}\n \n {isOnDesktopApp && }\n \n
{searchIcon}
\n
\n \n
\n\n
\n {\n window.location.assign(`${SEARCH_PATH}/${ENTITY_TYPE_USER}/`);\n }}\n toPath={`${SEARCH_PATH}/${ENTITY_TYPE_USER}/`}\n notToPath={EXPLORE_PATH}\n >\n Directory\n \n {exploreEnabled && (\n {\n window.location.assign(`${SEARCH_PATH}/${ENTITY_TYPE_USER}${EXPLORE_PATH}`);\n }}\n toPath={`${SEARCH_PATH}/${ENTITY_TYPE_USER}${EXPLORE_PATH}`}\n >\n Analytics\n \n )}\n \n {orgChartEnabled && (\n \n )}\n {customNavLinkEnabled && }\n \n \n\n \n {({ match }) => (\n \n )}\n \n
\n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {},\n logo: {\n padding: theme.spacing(0, 2),\n marginRight: theme.spacing(1),\n height: 32,\n '& *': {\n height: '100%',\n width: 'auto',\n },\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n tabletDownOnlyIconsContainer: {\n display: 'none',\n alignItems: 'flex-end',\n },\n // Skipper's Dropdown Menu / Drawer\n personMenuRootClasses: {\n flex: '0 0 auto',\n marginLeft: `${theme.spacing(2)} !important`,\n color: transparentize(\n theme.palette.transparentizeAmount.navItem,\n theme.palette.primary.contrastText,\n ),\n borderColor: transparentize(\n theme.palette.transparentizeAmount.navItem,\n theme.palette.primary.contrastText,\n ),\n },\n personMenuName: {\n color: transparentize(\n theme.palette.transparentizeAmount.navItem,\n theme.palette.primary.contrastText,\n ),\n '&:hover': {\n color: theme.palette.primary.contrastText,\n },\n },\n routeActive: {\n color: `${theme.palette.primary.contrastText} !important`,\n '& *': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.dark,\n },\n },\n };\n});\n\nexport default DefaultNavigation;\n","import { defineFetch } from 'resift';\n\nconst makeGetClearAuthToken = defineFetch({\n displayName: 'Get Clear Auth Token',\n make: () => ({\n request: () => ({ http }) =>\n http({\n method: 'GET', \n route: '/auth/logout?setCookies=true',\n }),\n }),\n});\n\nconst getClearAuthToken = makeGetClearAuthToken();\n\nexport default getClearAuthToken;","import React from 'react';\nimport * as Types from 'components/Navigation/typings';\nimport getClearAuthToken from 'fetches/getClearAuthToken';\nimport { useDispatch } from 'resift';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport Menu from '@mui/material/Menu';\nimport MenuItems from 'components/skipper/appBar/MenuItems';\n\ninterface Props {\n open: boolean;\n routes: Types.Routes;\n person: any;\n anchorEl: HTMLElement | null;\n onCloseMenu: () => void;\n}\n\nfunction MsTeamsNavMenu({ open, routes, person, anchorEl, onCloseMenu }: Props) {\n const { classes } = useStyles();\n const dispatch = useDispatch();\n\n const handleMsTeamsLogout = () => {\n dispatch(getClearAuthToken());\n window.location.reload();\n };\n\n return (\n \n \n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n menuPaper: {\n minWidth: 200,\n top: '65px !important',\n },\n menuItemLink: {\n color: theme.palette.text.primary,\n },\n}));\n\nexport default MsTeamsNavMenu;\n","import React from 'react';\nimport * as Types from 'components/Navigation/typings';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport IconButton from '@mui/material/IconButton';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport NavBackAndForwardButtons from 'components/Navigation/NavBackAndForwardButtons';\nimport NavSearchInput from 'components/Navigation/NavigationSearchInput';\nimport NotificationBell from 'components/Navigation/NotificationBell';\nimport AdminNavLink from 'components/Navigation/AdminNavLink';\nimport MsTeamsNavMenu from 'components/msTeams/MsTeamsNavigation/MsTeamsNavMenu';\n\ninterface Props {\n person: any;\n searchBarClass: string;\n query?: string;\n routes: Types.Routes;\n onClickSearch: () => void;\n}\n\nfunction MsTeamsNavigation({ person, searchBarClass, query, routes, onClickSearch }: Props) {\n const { classes } = useStyles();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = !!anchorEl;\n\n const handleOpenMenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleCloseMenu = () => {\n setAnchorEl(null);\n };\n\n return (\n <>\n
\n
\n \n \n
\n
\n \n \n \n \n \n
\n
\n\n \n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n },\n navAndSearchInputWrapper: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n },\n menuItems: {\n marginLeft: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n color: theme.palette.primary.contrastText,\n },\n}));\n\nexport default MsTeamsNavigation;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport { useData } from 'resift';\nimport { oneLine } from 'common-tags';\nimport { matchPath } from 'react-router';\nimport typography from 'helpers/typography';\nimport useIsAdmin from 'helpers/useIsAdmin';\nimport useFullscreen from 'helpers/useFullscreen';\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\nimport useNavDropdownRoutes from 'components/Navigation/helpers/useNavDropdownRoutes';\nimport getClientOrgChart from 'fetches/getClientOrgChart';\nimport { HAMBURGER_BREAK_POINT, HIDE_SEARCH_BREAK_POINT } from './consts';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport classNames from 'classnames';\nimport readableColorForWhite from 'styles/skipper/readableColorForWhite';\nimport isWhitish from 'styles/skipper/isWhitish';\n\n// Components\nimport { Link } from 'react-router-dom';\nimport SearchIcon from '@mui/icons-material/Search';\nimport DefaultNavigation from 'components/Navigation/DefaultNavigation';\nimport MsTeamsNavigation from 'components/msTeams/MsTeamsNavigation';\n\nimport * as Sift from '@sift/types';\n\ninterface Props {\n person: Sift.Person;\n client: any;\n pathname: string;\n pictureUrl?: string;\n logoUrl?: string;\n query?: string;\n location: any;\n toggleBigSearch: () => void;\n toggleSupportDrawer: () => void;\n}\n\nfunction Navigation({\n person,\n client,\n pathname,\n pictureUrl,\n logoUrl,\n query,\n location,\n toggleBigSearch,\n toggleSupportDrawer,\n}: Props) {\n const { classes } = useStyles();\n const fullscreen = useFullscreen();\n const isInMsTeams = getIsInMsTeams();\n const isAdmin = useIsAdmin();\n const isOnHomePage = pathname === '/';\n const clientOrgChart = useData(getClientOrgChart);\n\n const isOnboarding = !!matchPath(pathname, {\n path: '/onboarding',\n });\n const isOnSettingsPageOnMobile =\n !!matchPath(pathname, {\n path: '/settings',\n }) && location.search.includes('mobile=true');\n\n const shouldHideOrgChartNav =\n person.accountOnly && !_get(clientOrgChart, 'rootNodes.length') && !isAdmin;\n const orgChartEnabled = !shouldHideOrgChartNav;\n\n const dropdownRoutes = useNavDropdownRoutes({\n personId: person.id,\n orgChartEnabled,\n hasProfile: !person.accountOnly,\n onToggleSupportDrawer: toggleSupportDrawer,\n });\n\n const searchBarClass = classNames({ [classes.hide]: isOnHomePage }, classes.searchBar);\n\n if (fullscreen.isFullscreen || isOnboarding || isOnSettingsPageOnMobile) {\n return null;\n }\n\n return (\n \n {isInMsTeams ? (\n \n ) : (\n \n \n \n )\n }\n searchBarClass={searchBarClass}\n responsiveClasses={{\n tabletContainer: classes.tabletContainer,\n routeContainer: classes.routeContainer,\n }}\n orgChartEnabled={orgChartEnabled}\n onClickSearch={toggleBigSearch}\n />\n )}\n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n const { primary, common } = theme.palette;\n const searchTextColor = readableColorForWhite(primary.main);\n\n return {\n root: {\n flex: '0 0 auto',\n display: 'flex',\n alignItems: 'center',\n background: primary.main,\n padding: theme.spacing(0, 3),\n minHeight: 65,\n [HAMBURGER_BREAK_POINT]: {\n padding: theme.spacing(1.25, 3, 1.25, 0),\n },\n },\n rootBoxShadow: {\n zIndex: theme.zIndex.modal,\n boxShadow: theme.shadows[4],\n },\n\n // Search Bar\n searchBar: {\n ...typography(theme, 'body1'),\n lineHeight: '24px',\n display: 'flex',\n alignItems: 'center',\n opacity: 1,\n transition: 'opacity 200ms',\n position: 'relative',\n cursor: 'pointer',\n boxShadow: isWhitish(primary.main)\n ? 'none'\n : oneLine`\n 0px 1px 3px 0px rgba(0,0,0,0.2),\n 0px 1px 1px 0px rgba(0,0,0,0.14),\n 0px 2px 1px -1px rgba(0,0,0,0.12)\n `,\n backgroundColor: isWhitish(primary.main) ? 'rgba(0, 0, 0, 0.09)' : common.white,\n padding: theme.spacing(1, 1, 1, 5),\n borderRadius: 2,\n color: searchTextColor,\n '&:hover': {\n backgroundColor: isWhitish(primary.main) ? 'rgba(0, 0, 0, 0.13)' : undefined,\n },\n [HIDE_SEARCH_BREAK_POINT]: {\n display: 'none',\n },\n },\n\n // Routes\n routeContainer: {\n flex: '1 1 auto',\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n [HAMBURGER_BREAK_POINT]: {\n display: 'none',\n },\n },\n\n // Misc\n hide: {\n opacity: 0,\n display: 'none',\n },\n bigSearchOverrides: {\n background: primary.main,\n boxShadow: 'none',\n },\n\n // Hamburger Menu\n navIcons: {\n flex: '0 0 auto',\n color: primary.contrastText,\n width: 36,\n height: 36,\n cursor: 'pointer',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1),\n },\n bigSearchIcon: {\n display: 'none',\n [HIDE_SEARCH_BREAK_POINT]: {\n display: 'block',\n },\n },\n tabletContainer: {\n display: 'none',\n [HAMBURGER_BREAK_POINT]: {\n display: 'flex',\n },\n },\n };\n});\n\nexport default Navigation;\n","import { connect } from 'react-redux';\nimport compose from 'recompose/compose';\nimport { toggleSupportDrawer } from 'store/support';\nimport { toggleBigSearch } from 'store/bigSearch';\nimport { openFilterDrawer } from 'store/search';\nimport { getThemeToUse } from 'store/theme';\nimport Navigation from './Navigation';\nimport { withRouter } from 'react-router';\nimport queryString from 'query-string';\n\nconst mapDispatchToProps = {\n toggleBigSearch,\n openFilterDrawer,\n toggleSupportDrawer,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const person = state.authentication.person;\n const currentTheme = getThemeToUse(state.theme);\n const preferOfficialPhotos =\n state.settings && state.settings.directory\n ? state.settings.directory.preferOfficialPhotos\n : false;\n\n const { q } = queryString.parse(ownProps.location.search);\n\n return {\n logoUrl: currentTheme.logoUrl,\n person,\n pictureUrl: preferOfficialPhotos ? person.officialPictureUrl : person.pictureUrl,\n pathname: ownProps.location.pathname,\n client: state.client,\n query: q,\n config: state.configurations,\n };\n};\n\nexport default compose(withRouter, connect(mapStateToProps, mapDispatchToProps))(Navigation);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Snackbar from '@mui/material/Snackbar';\n\nclass CoreSnackbar extends React.PureComponent {\n static propTypes = {\n currentSnackbarOpen: PropTypes.bool.isRequired,\n currentSnackbar: PropTypes.string,\n expireSnackbar: PropTypes.func.isRequired,\n };\n\n render() {\n return (\n \n );\n }\n}\n\nexport default CoreSnackbar;\n","import Component from './CoreSnackbar';\n\n// Libs\nimport { connect } from 'react-redux';\n\n// Actions\nimport { expireSnackbar } from 'store/core';\n\n/* This is a container component. Notice it does not contain any JSX,\n nor does it import React. This component is **only** responsible for\n wiring in the actions and state necessary to render a presentational\n component - in this case, the counter: */\n\nconst mapDispatchToProps = {\n expireSnackbar,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n currentSnackbar: state.core.currentSnackbar,\n currentSnackbarOpen: !!state.core.currentSnackbar,\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(Component);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Status } from '@sift/resift/models/Status';\nimport _get from 'lodash/get';\nimport useAnalytics from 'helpers/useAnalytics';\nimport typography from 'helpers/typography';\n\n// Components\nimport TextField from '@mui/material/TextField';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport Dropzone from 'react-dropzone';\nimport Loader from 'components/Loader';\n\nimport { makeStyles } from 'tss-react/mui';\n\n// Component\nfunction SupportDrawerForm({\n supportTicket,\n userEmail,\n status,\n addAttachments,\n onSubmit,\n createSupportMessage,\n updateSupportMessage,\n toggleSupportDrawer,\n}) {\n const analytics = useAnalytics();\n const { classes } = useStyles();\n const [subject, setSubject] = useState('');\n const [message, setMessage] = useState('');\n const [attachments, setAttachments] = useState('');\n const [showFileError, setShowFileError] = useState(false);\n\n const onDrop = files => {\n if (!supportTicket) {\n createSupportMessage({\n subject: subject,\n message: message,\n });\n }\n\n let addedFiles = [];\n let showFileError = false;\n for (let i = 0; files.length > i; i++) {\n let file = files[i];\n if (file.type === 'image/gif' || file.type === 'image/jpeg' || file.type === 'image/png') {\n if (addedFiles.length < 5) {\n let fileHasSameName = false;\n if (_get(supportTicket, 'attachments.length')) {\n for (let count = 0; supportTicket.attachments.length > count; count++) {\n if (supportTicket.attachments[count].name === file.name) {\n fileHasSameName = true;\n }\n }\n }\n\n if (!fileHasSameName) {\n addedFiles.push(file);\n }\n } else {\n showFileError =\n 'Only five files can be uploaded at once. You may now add more files to be uploaded.';\n }\n } else {\n showFileError = 'An unsupported file was uploaded. Please only upload PNG, JPEG or GIFs.';\n }\n }\n\n if (supportTicket && addedFiles.length) {\n addAttachments(addedFiles, supportTicket.id);\n }\n\n setAttachments([...attachments, ...addedFiles]);\n setShowFileError(showFileError);\n };\n\n const handleChangeSubject = e => {\n setSubject(e.target.value);\n };\n\n const handleChangeMessage = e => {\n setMessage(e.target.value);\n };\n\n const onClearFilesUploaded = () => {\n updateSupportMessage(\n {\n subject: subject,\n message: message,\n attachments: [],\n },\n supportTicket.id,\n );\n };\n\n const removeAttachmentByIndex = index => {\n const supportTicketFiles = supportTicket.attachments.slice();\n supportTicketFiles.splice(index, 1);\n updateSupportMessage(\n {\n subject: subject,\n message: message,\n attachments: supportTicketFiles,\n },\n supportTicket.id,\n );\n };\n\n const onClose = () => {\n toggleSupportDrawer();\n };\n\n const handleSubmit = () => {\n if (!supportTicket) {\n createSupportMessage({ subject: subject, message: message }, '?send=true');\n } else {\n updateSupportMessage(\n {\n subject: subject,\n message: message,\n attachments: supportTicket.attachments,\n },\n supportTicket.id,\n '?send=true',\n );\n }\n\n analytics.track('Submited Support Ticket', {\n category: 'Support',\n });\n\n setSubject('');\n setMessage('');\n setShowFileError(false);\n\n onSubmit();\n };\n\n let submitButtonCopy = 'SEND';\n if (status.isLoading()) {\n submitButtonCopy = 'LOADING';\n }\n\n return (\n \n {({ getRootProps, getInputProps, isDragActive }) => (\n There was an error. Please refresh the page.}\n >\n
\n \n {isDragActive &&
Drop files...
}\n
\n
\n
Support
\n
\n Complete the form below to send your system administrator a message.\n
\n
\n \n
\n
\n \n \n \n \n {({ getRootProps, getInputProps }) => (\n
\n \n \n
Drag and drop files on this drawer.
\n
\n )}\n
\n {supportTicket && supportTicket.attachments && supportTicket.attachments.length ? (\n
\n
\n {supportTicket.attachments.length} Uploaded:{' '}\n
\n
\n {supportTicket.attachments.map((file, index) => (\n
\n {file}\n removeAttachmentByIndex(index)}\n size=\"large\"\n >\n \n \n
\n ))}\n
\n \n
\n ) : null}\n {showFileError ?
{showFileError}
: null}\n
\n \n \n {submitButtonCopy}\n \n
\n
\n
\n \n )}\n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n drawerSection: {\n padding: 16,\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'column',\n },\n title: {\n ...typography(theme, 'h6'),\n },\n headerRow: {\n borderBottom: '1px solid ' + theme.palette.borderColor,\n marginBottom: 16,\n },\n headerSubtitle: {\n ...typography(theme, 'subtitle1'),\n marginTop: 8,\n color: '#8a8a8a',\n width: 350,\n },\n headerIcon: {\n cursor: 'pointer',\n borderRadius: '50%',\n position: 'absolute',\n minWidth: 24,\n right: 8,\n top: 8,\n transition: 'background-color 200ms',\n\n '&:hover': {\n backgroundColor: theme.palette.borderColor,\n },\n },\n inputSpacing: {\n marginBottom: theme.spacing(2),\n },\n buttonsRow: {\n marginTop: 32,\n display: 'flex',\n width: '100%',\n justifyContent: 'flex-end',\n position: 'relative',\n },\n dropzoneOverlay: {\n ...typography(theme, 'h6'),\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n padding: '2.5em 0',\n background: '#84B1FF',\n opacity: '.8',\n textAlign: 'center',\n color: theme.palette.common.white,\n zIndex: theme.zIndex.surface,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '100vh',\n },\n dragAndDropMessage: {\n ...typography(theme, 'subtitle1'),\n boxSizing: 'border-box',\n margin: '8px auto',\n color: '#8a8a8a',\n border: '1px dashed',\n padding: 10,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'relative',\n width: '100%',\n },\n attachmentRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing(0.5),\n },\n filesContainer: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n clearFiles: {\n ...typography(theme, 'caption'),\n marginTop: theme.spacing(1),\n alignSelf: 'flex-end',\n cursor: 'pointer',\n },\n error: {\n ...typography(theme, 'caption'),\n color: theme.palette.error.main,\n marginBottom: theme.spacing(1),\n },\n fileName: {\n width: 335,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n attachments: {\n ...typography(theme, 'body2'),\n },\n };\n});\n\nSupportDrawerForm.propTypes = {\n status: PropTypes.object.isRequired,\n supportTicket: PropTypes.object,\n userEmail: PropTypes.string.isRequired,\n onSubmit: PropTypes.func.isRequired,\n toggleSupportDrawer: PropTypes.func.isRequired,\n createSupportMessage: PropTypes.func.isRequired,\n updateSupportMessage: PropTypes.func.isRequired,\n addAttachments: PropTypes.func.isRequired,\n};\n\nexport default SupportDrawerForm;\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst Success = props => (\n \n icon\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default Success;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\n\n// Components\nimport Button from '@mui/material/Button';\nimport Success from 'components/Icons/Success';\n\nimport { makeStyles } from 'tss-react/mui';\n\n// Component\nfunction CompletedForm(props) {\n const { clientName, toggleSupportDrawer } = props;\n const { classes } = useStyles();\n\n return (\n
\n \n
\n The {clientName}\n
\n system administrator is on the case!\n
\n
\n This message has been sent to your {`company's`} support team.\n
\n
\n Someone will be in touch shortly regarding your submission.\n
\n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n drawerSection: {\n marginTop: 50,\n padding: 16,\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n },\n title: {\n ...typography(theme, 'h6'),\n marginBottom: 16,\n maxWidth: 350,\n },\n text: {\n ...typography(theme, 'subtitle1'),\n marginBottom: 32,\n maxWidth: 350,\n },\n button: {\n marginTop: 32,\n },\n };\n});\n\nCompletedForm.propTypes = {\n clientName: PropTypes.string,\n toggleSupportDrawer: PropTypes.func.isRequired,\n};\n\nexport default CompletedForm;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport usePrevious from '@sift/resift/usePrevious';\n\n// Components\nimport Drawer from '@mui/material/Drawer';\nimport SupportDrawerForm from './Form';\nimport SupportDrawerCompletedForm from './CompletedForm';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { useTheme } from '@mui/material/styles';\n\n// Component\nfunction SupportDrawer(props) {\n const {\n supportTicket,\n clientName,\n userEmail,\n openDrawer,\n toggleSupportDrawer,\n createSupportMessage,\n updateSupportMessage,\n addAttachments,\n status,\n } = props;\n const { classes } = useStyles();\n const theme = useTheme();\n const [completedForm, setCompletedForm] = useState(false);\n const previousOpenDrawer = usePrevious(openDrawer);\n\n useEffect(() => {\n if (!previousOpenDrawer && openDrawer) {\n setCompletedForm(false);\n }\n }, [previousOpenDrawer, openDrawer]);\n\n const handleSubmit = () => {\n setCompletedForm(true);\n };\n\n return (\n \n {completedForm ? (\n \n ) : (\n \n )}\n \n );\n}\n\nconst useStyles = makeStyles()(() => {\n return {\n paper: {\n maxWidth: 400,\n },\n };\n});\n\nSupportDrawer.propTypes = {\n status: PropTypes.object.isRequired,\n supportTicket: PropTypes.object,\n openDrawer: PropTypes.bool.isRequired,\n userEmail: PropTypes.string.isRequired,\n clientName: PropTypes.string,\n toggleSupportDrawer: PropTypes.func.isRequired,\n createSupportMessage: PropTypes.func.isRequired,\n updateSupportMessage: PropTypes.func.isRequired,\n addAttachments: PropTypes.func.isRequired,\n};\n\nexport default SupportDrawer;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport SupportDrawer from './Drawer';\n\n// Component\nclass Support extends PureComponent {\n static propTypes = {\n status: PropTypes.object.isRequired,\n supportTicket: PropTypes.object,\n supportEnabled: PropTypes.bool.isRequired,\n openDrawer: PropTypes.bool.isRequired,\n clientName: PropTypes.string,\n userEmail: PropTypes.string.isRequired,\n toggleSupportDrawer: PropTypes.func.isRequired,\n createSupportMessage: PropTypes.func.isRequired,\n updateSupportMessage: PropTypes.func.isRequired,\n addAttachments: PropTypes.func.isRequired,\n };\n\n render() {\n const {\n supportTicket,\n supportEnabled,\n clientName,\n userEmail,\n openDrawer,\n toggleSupportDrawer,\n createSupportMessage,\n updateSupportMessage,\n addAttachments,\n status,\n } = this.props;\n\n if (!supportEnabled) {\n return null;\n }\n\n return (\n
\n \n
\n );\n }\n}\n\nexport default Support;\n","// Component\nimport Support from './Support';\nimport { connect } from 'react-redux';\nimport _get from 'lodash/get';\n\nimport {\n toggleSupportDrawer,\n createSupportMessage,\n updateSupportMessage,\n addAttachments,\n} from 'store/support';\n\nconst mapDispatchToProps = {\n toggleSupportDrawer,\n createSupportMessage,\n updateSupportMessage,\n addAttachments,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n status: state.support.status,\n supportTicket: state.support.supportTicket,\n clientName: state.client.displayName,\n userEmail: state.authentication.person.email,\n openDrawer: state.support.supportDrawerIsOpen,\n supportEnabled: _get(state.client.settings, 'support.enabled', false),\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(Support);\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\nimport bowser from 'bowser';\nimport Button from '@mui/material/Button';\nimport Paper from '@mui/material/Paper';\nimport Android from '@mui/icons-material/Android';\nimport Apple from 'components/Icons/Apple2';\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\n\nimport { makeStyles } from 'tss-react/mui';\n\nconst mobilePlatforms = {\n android: {\n displayText: 'Android',\n icon: ,\n href:\n 'https://play.google.com/store/apps/details?id=com.justsift.connect&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1',\n },\n ios: {\n displayName: 'iOS',\n icon: ,\n href:\n 'https://itunes.apple.com/app/apple-store/id1213640928?pt=118583916&ct=Sift-Connect-Nav&mt=8',\n },\n};\n\nconst useStyles = makeStyles()(theme => {\n return {\n banner: {\n display: 'flex',\n height: 50,\n alignItems: 'center',\n padding: '0 18px',\n flex: '0 0 auto',\n },\n spacer: {\n flex: '1 1 auto',\n },\n logo: {\n width: 27,\n height: 27,\n marginRight: theme.spacing(2),\n },\n deviceIcon: {\n marginLeft: 10,\n display: 'inline-flex',\n alignItems: 'center',\n },\n text: {\n flex: '1 1 auto',\n textAlign: 'center',\n display: 'inline-flex',\n alignItems: 'center',\n },\n };\n});\n\nfunction MobileAppGetter() {\n const { classes } = useStyles();\n const location = useLocation();\n const queryParams = queryString.parse(location.search);\n const isMobileView = !!queryParams['mobileView'];\n const isInMsTeams = getIsInMsTeams();\n\n if (isMobileView || isInMsTeams) {\n return null;\n }\n\n if (!bowser.mobile && !bowser.tablet) {\n return null;\n }\n\n let mobDevice = null;\n\n if (bowser.android) {\n mobDevice = 'android';\n } else {\n return null;\n }\n\n const deviceDisplay = mobilePlatforms[mobDevice];\n\n return (\n \n \n \n Get Sift for  {deviceDisplay.displayText}\n {deviceDisplay.icon}\n \n
\n \n \n );\n}\nexport default MobileAppGetter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Snackbar from '@mui/material/Snackbar';\nimport Button from '@mui/material/Button';\n\n// Styles\nimport ThemeOverrideComponent from 'styles/skipper/ThemeOverrideComponent';\nimport createPaletteColor from 'styles/createPaletteColor';\n\nexport default class ThemeSnackbar extends React.PureComponent {\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n };\n\n render() {\n const { open, onClose } = this.props;\n const primary = createPaletteColor('primary', '#F5A800');\n\n return (\n \n \n \n }\n />\n );\n }\n}\n","import { connect } from 'react-redux';\nimport ThemeSnackbar from './ThemeSnackbar';\nimport { removePreviewTheme } from 'store/theme';\n\nconst mapDispatchToProps = dispatch => ({\n onClose: () => {\n dispatch(removePreviewTheme());\n setTimeout(() => {\n window.location.reload();\n }, 1000);\n },\n});\n\nconst mapStateToProps = state => {\n return {\n open: !!state.theme.previewThemeId,\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(ThemeSnackbar);\n","import React, { useCallback, useState, useEffect } from 'react';\nimport moment from 'moment';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\nimport _throttle from 'lodash/throttle';\nimport Button from '@mui/material/Button';\nimport Paper from '@mui/material/Paper';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport { useSnackbar } from 'notistack';\nimport { useData } from 'resift';\nimport getAppVersionStatus from 'fetches/getAppVersionStatus';\nimport typography from 'helpers/typography';\n\nexport const VERSION_UPDATE_QUERY = 'versionUpdate';\n\nfunction UpdateBanner() {\n const { classes } = useStyles();\n const { enqueueSnackbar } = useSnackbar();\n const location = useLocation();\n const history = useHistory();\n const queryParams = queryString.parse(location.search);\n const { isCompatible, recommendUpdate } = useData(getAppVersionStatus) || {};\n const [inactiveTime, setInactiveTime] = useState(moment());\n\n const resetTimer = useCallback(\n () =>\n _throttle(function() {\n setInactiveTime(moment());\n }, 5000),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('mousemove', resetTimer, false);\n document.addEventListener('keypress', resetTimer, false);\n document.addEventListener('touchmove', resetTimer, false);\n\n if (queryParams.versionUpdate) {\n const _queryParams = { ...queryParams } as any;\n delete _queryParams[VERSION_UPDATE_QUERY];\n\n history.push({\n search: queryString.stringify(_queryParams),\n });\n\n enqueueSnackbar(`You've updated to the latest version of Sift!`, {\n variant: 'success',\n });\n }\n\n return () => {\n document.removeEventListener('mousemove', resetTimer, false);\n document.removeEventListener('keypress', resetTimer, false);\n document.removeEventListener('touchmove', resetTimer, false);\n };\n }, [resetTimer]); // eslint-disable-line\n // Jules: to prevent the use effect from re-running, history, location, enqueueSnackbar and queryParams are not passed into this useEffect\n\n useEffect(() => {\n const secondsFromLastReset = moment().diff(inactiveTime, 'seconds');\n if (isCompatible === false && secondsFromLastReset >= 30) {\n handleRefresh(history);\n }\n }, [isCompatible, inactiveTime, history]);\n\n return (\n \n \n 🎉\n \n There is a new version of Sift available!\n handleRefresh(history)}\n variant=\"outlined\"\n classes={{ root: classes.rootButton }}\n size=\"small\"\n >\n Click to refresh\n \n \n 🎉\n \n \n );\n}\n\nfunction handleRefresh(history: any) {\n history.push({\n search: `?${VERSION_UPDATE_QUERY}=true`,\n });\n window.location.reload();\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n background: theme.palette.originalSecondary.main,\n color: theme.palette.originalSecondary.contrastText,\n display: 'flex',\n height: 50,\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0 18px',\n flex: '0 0 auto',\n overflow: 'hidden',\n transition: 'height .4s',\n ...typography(theme, 'h6'),\n '& > span': {\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n },\n [theme.breakpoints.down('md')]: {\n ...typography(theme, 'subtitle2'),\n height: 70,\n '& > span': {\n display: 'none',\n },\n },\n },\n button: {\n marginLeft: theme.spacing(3),\n },\n rootButton: {\n color: theme.palette.common.white,\n borderColor: theme.palette.common.white,\n },\n };\n});\n\nexport default UpdateBanner;\n","import React from 'react';\n\nexport const BANNER_TEXT = [\n <>\n Today's the day!  Final hours of your trial—join us!\n ,\n <>\n Last chance!  1 day  left in your trial. Get started now!\n ,\n <>\n Hurry! Just  2 days  left in your trial. Sign up and thrive with us.\n ,\n <>\n 3 days  left in your trial to discover what we offer. Click to begin.\n ,\n <>\n 4 days  left in your trial. Don't delay, subscribe now!\n ,\n <>\n 5 days  remaining in your trial. Start now to make the most of it.\n ,\n <>\n Only  6 days  left in your trial. Maximize your trial by signing up\n today.\n ,\n <>\n One week in! You still have  7 days  left in your trial to seize the\n opportunity.\n ,\n <>\n 8 days  left to go in your trial. Unlock the full potential of Sift now!\n ,\n <>\n Just  9 days  to go in your trial. Sign up today.\n ,\n <>\n 10 days  left in your trial. Join us and elevate your productivity.\n ,\n <>\n 11 days  remaining in your trial. Sign up now and supercharge your work.\n ,\n <>\n 12 days  left in your trial to experience all our tools. Start today!\n ,\n <>\n 13 days  left in your trial! Don't miss out on exploring our features.\n ,\n <>\n You have  14 days  left in your trial. Begin your journey now!\n ,\n];\n","import React from 'react';\nimport brandColors from 'styles/skipper/brandColors';\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\n\nimport ErrorRoundedIcon from '@mui/icons-material/ErrorRounded';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\n\nimport { BANNER_TEXT } from './consts';\n\ninterface Props {\n onClose: () => void;\n trialDaysRemaining: number;\n}\n\nfunction FreeTrialBanner({ onClose, trialDaysRemaining }: Props) {\n const { classes } = useStyles();\n const over14DaysRemainingMessage = (\n <>\n There are {trialDaysRemaining} days left in your trial. Contact our sales\n team to purchase Sift or learn more.\n \n );\n\n return (\n
\n
\n
\n \n \n {trialDaysRemaining > 14 ? over14DaysRemainingMessage : BANNER_TEXT[trialDaysRemaining]}\n \n
\n
\n \n reach out to sales\n \n
\n
\n \n
\n \n \n \n
\n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n trialBanner: {\n display: 'flex',\n alignItems: 'center',\n minHeight: 60,\n color: brandColors.common.white,\n backgroundColor: brandColors.secondaryPalette.cobalt,\n [theme.breakpoints.down('md')]: {\n minHeight: 106,\n },\n [theme.breakpoints.down('sm')]: {\n minHeight: 147,\n },\n },\n leftSide: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n },\n bannerInfo: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(2.375),\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n [theme.breakpoints.down('sm')]: {\n alignItems: 'flex-start',\n },\n },\n bannerText: {\n [theme.breakpoints.down('sm')]: {\n maxWidth: 300,\n },\n },\n buttonContainer: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n width: 'fit-content',\n },\n icon: {\n margin: theme.spacing(0, 1),\n color: brandColors.common.white,\n [theme.breakpoints.up('sm')]: {\n margin: theme.spacing(0, 3),\n },\n },\n reachOut: {\n minWidth: 164,\n marginBottom: 'auto',\n marginRight: theme.spacing(3),\n },\n divider: {\n borderColor: brandColors.secondaryPalette.sky,\n },\n closeContainer: {\n height: '100%',\n paddingTop: theme.spacing(2.375),\n },\n closeButton: {\n padding: 0,\n maxWidth: 24,\n margin: theme.spacing('auto', 3, 0, 3),\n },\n closeIcon: {\n width: '100%',\n [theme.breakpoints.down('md')]: {\n width: 16,\n },\n },\n };\n});\n\nexport default FreeTrialBanner;\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport moment from 'moment';\nimport queryString from 'query-string';\nimport PropTypes from 'prop-types';\nimport delay from 'delay';\nimport usePortalPlaceholder from 'helpers/skipper/usePortalPlaceholder';\nimport readableColor from 'styles/skipper/readableColor';\n\n// Component\nimport InfoIcon from '@mui/icons-material/Info';\nimport Link from '@mui/material/Link';\nimport Navigation from 'components/Navigation';\nimport CoreSnackbar from 'components/CoreSnackbar';\nimport SupportTab from 'components/Support';\nimport MobileAppGetter from 'components/MobileAppGetter/MobileAppGetter';\nimport ThemeSnackbar from 'components/ThemeSnackbar';\nimport BannerPortal from 'components/BannerPortal';\nimport UpdateBanner from 'components/UpdateBanner';\nimport IeSucksBanner from 'pages/OrgChart/components/IeSucksBanner';\nimport ReadableThemedComponent from 'styles/skipper/ReadableThemedComponent';\nimport FreeTrialBanner from 'components/FreeTrialBanner';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\n\nimport { MS_TEAMS_START_URL, MS_TEAMS_LOGIN_URL } from 'components/msTeams/consts';\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n childrenRoot: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flex: '1 1 auto',\n background: theme.palette.background.paper,\n position: 'relative',\n },\n ieBanner: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(0.5),\n },\n link: {\n color: readableColor(theme.palette.secondary.main),\n textDecorationColor: readableColor(theme.palette.secondary.main),\n },\n bannerContentMargin: {\n marginRight: theme.spacing(0.5),\n },\n };\n});\n\nfunction CoreLayout({ children }) {\n const { classes } = useStyles();\n const location = useLocation();\n const queryParams = queryString.parse(location.search);\n const isMobileView = useState(!!queryParams['mobileView'])[0];\n const [bannerOpen, setBannerOpen] = useState(true);\n const client = useSelector(state => state.client);\n\n const trialEndDate = client.trialEndDate\n ? moment(client.trialEndDate)\n : moment(client.assignedAt).add(14, 'days');\n\n const currentDay = moment(new Date());\n\n const trialDaysRemaining = trialEndDate.diff(currentDay, 'days');\n\n const handleClose = () => {\n setBannerOpen(false);\n };\n\n useEffect(() => {\n delay(1000).then(() => {\n window.scrollTo(0, 1);\n });\n }, []);\n\n const BannerPlaceholder = usePortalPlaceholder(BannerPortal);\n\n return (\n
\n \n \n\n {client.isTrial && bannerOpen && trialDaysRemaining >= 0 && (\n \n )}\n \n \n IE11 users will experience\n \n partial loss of functionality\n \n after September 29, 2022.\n
\n }\n />\n {!isMobileView &&\n // Pearl TODO: this can be deleted once our new app is approved by the store\n (location.pathname !== MS_TEAMS_START_URL || location.pathname !== MS_TEAMS_LOGIN_URL) && (\n \n )}\n \n
\n {children}\n \n \n \n
\n
\n );\n}\n\nCoreLayout.propTypes = {\n children: PropTypes.node,\n};\n\nexport default CoreLayout;\n","import React, { useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\nimport Portal from '@mui/material/Portal';\nimport BigSearch from 'components/BigSearch';\nimport Fade from '@mui/material/Fade';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { transparentize } from 'polished';\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: transparentize(0.02, theme.palette.primary.main),\n zIndex: theme.zIndex.modal,\n display: 'flex',\n flex: '1 1 auto',\n justifyContent: 'center',\n overflowY: 'auto',\n opacity: '0',\n },\n button: {\n ...typography(theme, 'h6'),\n position: 'absolute',\n top: 10,\n right: 10,\n fontSize: 30,\n cursor: 'pointer',\n color: theme.palette.primary.contrastText,\n },\n };\n});\n\nfunction SearchOverlay(props) {\n const { open, toggle } = props;\n const { classes } = useStyles();\n\n const escFunction = useCallback(\n event => {\n if (event.key === 'Escape') {\n toggle();\n }\n },\n [toggle],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', escFunction, false);\n\n return () => {\n document.removeEventListener('keydown', escFunction, false);\n };\n }, [escFunction]);\n\n return (\n \n \n
\n \n \n
\n
\n
\n );\n}\n\nSearchOverlay.propTypes = {\n open: PropTypes.bool,\n toggle: PropTypes.func.isRequired,\n};\n\nexport default SearchOverlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme } from '@mui/material/styles';\nimport { ThemeProvider } from '@mui/material/styles';\nimport SearchOverlayChildren from './SearchOverlayChildren';\n\nfunction SearchOverlay(props) {\n const theme = useTheme();\n const originalTheme = {\n ...theme,\n palette: {\n ...theme.palette,\n primary: theme.palette.originalPrimary,\n secondary: theme.palette.originalSecondary,\n },\n };\n\n /**\n * (notes - pearl) All components within router (components/Router)\n * uses CoreLayout when not in MSTeams.\n * CoreLayout uses ReadableThemedComponent to ensure our components look good against white background,\n * because most of our pages have a white background. Except:\n * BigSearch needs original palettes.\n * There are two places where the BigSearch (components/BigSearch) is being used.\n * One in pages/Landing, the other is here in SearchOverlay.\n * The BigSearch component itself uses ThemeOverrideComponent to force the original theme to be used. This works great in pages/Landing. But here in search overlay, the ThemeOverrideComponent in BigSearch is being overriden by ReadableThemedComponent.\n * I think this has something to do with our memo/component tree, which I can look further into. For now, I am adding a ThemeProvider with original palettes for SearchOverlay.\n * This might not be the most elegant solution, but it only impacts this component and won't cause other ripple effects.\n */\n return (\n \n \n \n );\n}\n\nSearchOverlay.propTypes = {\n open: PropTypes.bool,\n toggle: PropTypes.func.isRequired,\n};\n\nexport default SearchOverlay;\n","// Libs\nimport { connect } from 'react-redux';\n\n// Actions\nimport { toggleBigSearch } from 'store/bigSearch';\n\n// Component\nimport SearchOverlay from './SearchOverlay';\n\nconst mapDispatchToProps = {\n toggle: toggleBigSearch,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n open: state.bigSearch.open || false,\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(SearchOverlay);\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'meeting attendees fetch',\n make: () => ({\n request: (chatId: string) => ({ http }: any) =>\n http({\n method: 'get',\n route: `/ms-teams/meetings/${chatId}/attendees`,\n }),\n }),\n});\n","import React, { createContext } from 'react';\nimport { deepmerge } from '@mui/utils';\nimport {\n Provider as ThemeProvider,\n teamsDarkTheme,\n ThemePrepared,\n} from '@fluentui/react-northstar';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nexport interface Theme extends Omit {\n siteVariables: {\n spacing: {\n unit: number;\n };\n colorScheme: {\n brand: {\n [key: string]: string;\n };\n sift: {\n [key: string]: string;\n };\n [key: string]: any;\n };\n [key: string]: any;\n };\n}\n\nconst customTheme = {\n siteVariables: {\n spacing: {\n unit: 8,\n },\n colors: {\n // Based on color palette: https://fluentsite.z22.web.core.windows.net/0.62.0/color-palette\n grey: {\n 270: '#BDBDBD',\n },\n },\n colorScheme: {\n sift: {\n backgroundPurple: '#6264A7',\n labelGrey: 'rgba(255, 255, 255, 0.6)',\n },\n },\n },\n};\n\n// @ts-ignore\nexport const theme: Theme = deepmerge(teamsDarkTheme, customTheme);\n\nexport const TeamsThemeContext = createContext(theme);\n\nfunction MsTeamsMainTheme({ children }: Props) {\n const styles = useStyles(theme);\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {\n height: '100%',\n overflowX: 'hidden',\n overflowY: 'auto',\n padding: theme.siteVariables.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n});\n\nexport default MsTeamsMainTheme;\n","export default function getPathDepth(pathname: string) {\n const pathSegments = pathname.split('/').filter(Boolean);\n\n return pathSegments.length;\n}\n","import React from 'react';\nimport _get from 'lodash/get';\nimport { useHistory } from 'react-router';\nimport { List, Image, Text } from '@fluentui/react-northstar';\nimport { ChevronEndIcon } from '@fluentui/react-icons-northstar';\nimport { Theme } from 'components/msTeams/MsTeamsMainTheme';\nimport { MS_TEAMS_MEETING_MAIN_URL, MS_TEAMS_PARTICIPANTS_URL } from 'components/msTeams/consts';\nimport { Person } from '@sift/types';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\ninterface Props {\n attendeeList: Person[];\n theme: Theme;\n}\n\nfunction ParticipantsList({ attendeeList, theme }: Props) {\n const styles = useStyles(theme);\n const history = useHistory();\n\n const personListItems = attendeeList.map(item => {\n const { displayName, pictureUrl, title, id, _alternateFieldValues } = item;\n const altDisplayName = _get(_alternateFieldValues, 'displayName');\n\n const handleClick = () => {\n history.push(`${MS_TEAMS_MEETING_MAIN_URL}${MS_TEAMS_PARTICIPANTS_URL}/${id}`);\n };\n\n return {\n key: displayName,\n media: {`avatar,\n header: (\n \n {displayName}\n {altDisplayName &&
({altDisplayName})
}\n
\n ),\n content: title ? {title} : null,\n endMedia: ,\n onClick: handleClick,\n };\n });\n\n return (\n <>\n Learn more about participants in this meeting by viewing their profile.\n \n \n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {},\n list: {\n marginTop: theme.siteVariables.spacing.unit * 3,\n },\n listItem: {\n color: theme.siteVariables.colorScheme.sift.labelGrey,\n },\n});\n\nexport default ParticipantsList;\n","import React, { useContext } from 'react';\nimport ParticipantsList from './ParticipantsList';\nimport { TeamsThemeContext } from 'components/msTeams/MsTeamsMainTheme';\nimport { AttendeesDataContext } from 'components/msTeams/embed/MsTeamsMain';\n\nfunction Container() {\n const themeContext = useContext(TeamsThemeContext);\n const attendeeList = useContext(AttendeesDataContext);\n\n return ;\n}\n\nexport default Container;\n","import React, { useContext } from 'react';\nimport { Flex, Text } from '@fluentui/react-northstar';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\n\ninterface Props extends React.ComponentProps<'div'> {\n icon: React.ReactNode;\n content: string;\n}\n\nfunction ProfileHeaderItem({ icon, content, style, ref, ...restOfProps }: Props) {\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n\n return (\n \n {icon}\n {content}\n \n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {\n marginBottom: theme.siteVariables.spacing.unit * 0.5,\n },\n});\n\nexport default ProfileHeaderItem;\n","import React from 'react';\nimport { CalendarIcon } from '@fluentui/react-icons-northstar';\nimport ProfileHeaderItem from 'components/msTeams/embed/molecules/ProfileHeaderItem';\nimport getAnniversaryDateContent from 'pages/Profile/components/Header/helpers/getAnniversaryDateContent';\n\ninterface Props {\n value: string;\n}\n\nfunction Tenure({ value: anniversaryDate }: Props) {\n const tenure = getAnniversaryDateContent(anniversaryDate)?.tenure;\n return } content={`Worked here for ${tenure}`} />;\n}\n\nexport default Tenure;\n","import React from 'react';\nimport _keyBy from 'lodash/keyBy';\nimport { SpeakerPersonIcon } from '@fluentui/react-icons-northstar';\nimport ProfileHeaderItem from 'components/msTeams/embed/molecules/ProfileHeaderItem';\n\ninterface Props {\n value: {\n code?: 'FEMALE' | 'MALE' | 'NEUTRAL' | 'OPTOUT';\n value?: string;\n isOther: boolean;\n };\n field: any;\n}\n\nfunction Pronouns({ value, field }: Props) {\n const pronounsDisplay = value.isOther\n ? value.value\n : _keyBy(field.validation.postChildren._selectOptions, 'code')[value.code!].label;\n\n return } content={pronounsDisplay} />;\n}\n\nexport default Pronouns;\n","import React from 'react';\nimport moment from 'moment-timezone';\nimport ProfileHeaderItem from 'components/msTeams/embed/molecules/ProfileHeaderItem';\nimport { ShiftActivityIcon } from '@fluentui/react-icons-northstar';\nimport { AM_PM_FORMAT } from 'components/TimezoneAndWorkHours/constants';\nimport { ProfileComponentProps } from 'components/msTeams/embed/typing';\n\nfunction WorkSchedule({ value }: ProfileComponentProps) {\n const { timezone } = value;\n\n if (!timezone) {\n return null;\n }\n\n const currentTime = moment()\n .tz(timezone)\n .format(AM_PM_FORMAT);\n\n return (\n } content={`${currentTime} (${timezone} time)`} />\n );\n}\n\nexport default WorkSchedule;\n","import React, { forwardRef } from 'react';\nimport { Button, ButtonProps } from '@fluentui/react-northstar';\n\ninterface Props extends ButtonProps {\n truncated?: boolean;\n}\n\nconst ToggleTruncateButton = forwardRef((props: Props, ref: React.Ref) => {\n const { truncated, text, content, ...restOfProps } = props;\n\n return (\n \n );\n});\n\nexport default ToggleTruncateButton;\n","import React, { useContext } from 'react';\nimport { Flex, Header } from '@fluentui/react-northstar';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\nimport ToggleTruncateButton from 'components/msTeams/embed/atoms/ToggleTruncateButton';\n\ninterface Props {\n sectionHeader: string;\n content: React.ReactNode;\n onToggleMore?: () => void;\n truncated?: boolean;\n}\n\nfunction ProfileSection({ sectionHeader, content, onToggleMore, truncated }: Props) {\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n\n return (\n \n
\n {sectionHeader}\n
\n {content}\n {onToggleMore && (\n \n \n \n )}\n
\n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {\n marginTop: theme.siteVariables.spacing.unit * 2,\n },\n header: {\n marginBottom: theme.siteVariables.spacing.unit,\n },\n});\n\nexport default ProfileSection;\n","import React, { useState } from 'react';\nimport ProfileSection from 'components/msTeams/embed/molecules/ProfileSection';\nimport { MAX_LEN_BIO } from 'components/msTeams/consts';\nimport { ProfileComponentProps } from 'components/msTeams/embed/typing';\n\nfunction Bio({ value, field }: ProfileComponentProps) {\n const needTruncation = value.length > MAX_LEN_BIO;\n const [truncated, setTruncated] = useState(needTruncation);\n\n const handleToggleMore = () => {\n setTruncated(!truncated);\n };\n\n const displayValue = !needTruncation\n ? value\n : truncated\n ? `${value.substring(0, MAX_LEN_BIO)}...`\n : value;\n\n return (\n \n );\n}\n\nexport default Bio;\n","import React, { useContext } from 'react';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\n\ninterface Props extends React.ComponentProps<'div'> {\n content: string;\n style?: any;\n}\n\nconst Chip = (props: Props) => {\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n const { content, style, ...restOfProps } = props;\n\n return (\n
\n {content}\n
\n );\n};\n\nconst useStyles = (theme: Theme) => ({\n root: {\n maxWidth: 200,\n height: 32,\n display: 'inline-flex',\n backgroundColor: theme.siteVariables.colorScheme.sift.backgroundPurple,\n padding: theme.siteVariables.spacing.unit * 0.5,\n paddingLeft: theme.siteVariables.spacing.unit,\n paddingRight: theme.siteVariables.spacing.unit,\n whiteSpace: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 99,\n fontWeight: theme.siteVariables.fontWeightSemibold,\n },\n content: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n});\n\nexport default Chip;\n","import React, { useContext, useState } from 'react';\nimport { Flex } from '@fluentui/react-northstar';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\nimport Chip from 'components/msTeams/embed/atoms/Chip';\nimport ProfileSection from 'components/msTeams/embed/molecules/ProfileSection';\nimport { MAX_LEN_INTERESTS } from 'components/msTeams/consts';\n\ninterface Props {\n value: string[];\n field: any;\n}\n\nfunction Interests({ value: interestItems, field }: Props) {\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n const needTruncation = interestItems.length > MAX_LEN_INTERESTS;\n const [truncated, setTruncated] = useState(needTruncation);\n\n if (!interestItems.length) {\n return null;\n }\n\n const handleToggleMore = () => {\n setTruncated(!truncated);\n };\n\n const displayInterestItems = !needTruncation\n ? interestItems\n : truncated\n ? interestItems.slice(0, MAX_LEN_INTERESTS)\n : interestItems;\n\n return (\n \n {displayInterestItems.map((interest, i) => (\n \n ))}\n \n }\n onToggleMore={needTruncation ? handleToggleMore : undefined}\n truncated={truncated}\n />\n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {},\n chip: {\n marginBottom: theme.siteVariables.spacing.unit,\n '& > div': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n },\n});\n\nexport default Interests;\n","import React, { useContext } from 'react';\nimport { Flex } from '@fluentui/react-northstar';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\n\ninterface Props {\n level: 100 | 200 | 300 | 400;\n}\n\nfunction SkillLevel({ level }: Props) {\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n const { levelSquare, filledLevelSquare } = styles;\n\n return (\n \n
\n  \n
\n \n  \n \n \n  \n \n \n  \n \n
\n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {},\n levelSquare: {\n backgroundColor: theme.siteVariables.colors.white,\n height: 14,\n width: 14,\n marginRight: 2,\n borderRadius: 2,\n },\n filledLevelSquare: {\n backgroundColor: theme.siteVariables.colorScheme.brand.foregroundHover,\n },\n});\n\nexport default SkillLevel;\n","import React, { useContext } from 'react';\nimport { Flex, Text } from '@fluentui/react-northstar';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\nimport LEVEL_DESCRIPTIONS from 'components/Skills/skillLevelDescriptions';\nimport SkillLevel from 'components/msTeams/embed/profile/Skills/SkillLevel';\nimport { Skill } from 'components/msTeams/embed/typing';\n\ninterface Props {\n skill: Skill;\n}\n\nfunction SkillCard({ skill }: Props) {\n const { name, level } = skill;\n const levelDisplayName = LEVEL_DESCRIPTIONS[level].name;\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n\n return (\n
\n \n {name}\n
\n \n \n {levelDisplayName}\n \n \n \n \n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {\n width: 180,\n height: 56,\n borderWidth: 1,\n borderColor: theme.siteVariables.colorScheme.brand.border,\n borderStyle: 'solid',\n borderRadius: 4,\n padding: theme.siteVariables.spacing.unit,\n marginBottom: theme.siteVariables.spacing.unit,\n backgroundColor: theme.siteVariables.colors.grey[550],\n },\n name: {\n maxWidth: 160,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n levelName: {\n color: theme.siteVariables.colors.grey[270],\n },\n levelRow: {\n marginTop: theme.siteVariables.spacing.unit * 0.25,\n },\n});\n\nexport default SkillCard;\n","import React, { useState } from 'react';\nimport _partition from 'lodash/partition';\nimport ProfileSection from 'components/msTeams/embed/molecules/ProfileSection';\nimport SkillCard from 'components/msTeams/embed/profile/Skills/SkillCard';\nimport { Skill } from 'components/msTeams/embed/typing';\nimport { MAX_LEN_SKILLS } from 'components/msTeams/consts';\n\ninterface Props {\n value: Skill[];\n field: any;\n}\n\nfunction Skills({ value: skillItems, field }: Props) {\n const needTruncation = skillItems.length > MAX_LEN_SKILLS;\n const [truncated, setTruncated] = useState(needTruncation);\n\n if (!skillItems.length) {\n return null;\n }\n\n const handleToggleMore = () => {\n setTruncated(!truncated);\n };\n\n const [featuredSkills, restOfSkills] = _partition(skillItems, { isFeatured: true });\n const orderedSkills = [...featuredSkills, ...restOfSkills];\n\n const skillsToDisplay = !needTruncation\n ? orderedSkills\n : truncated\n ? orderedSkills.slice(0, MAX_LEN_SKILLS)\n : orderedSkills;\n\n return (\n (\n \n ))}\n onToggleMore={needTruncation ? handleToggleMore : undefined}\n truncated={truncated}\n />\n );\n}\n\nexport default Skills;\n","import Tenure from './Tenure';\nimport Pronouns from './Pronouns';\nimport WorkSchedule from './WorkSchedule';\nimport Bio from './Bio';\nimport Interests from './Interests';\nimport Skills from './Skills';\n\nconst componentRegistry = {\n anniversaryDate: Tenure,\n inclusivePronouns: Pronouns,\n timezoneAndWorkHours: WorkSchedule,\n bio: Bio,\n interests: Interests,\n skills: Skills,\n};\n\nexport default componentRegistry;\n","import React from 'react';\nimport { Button } from '@fluentui/react-northstar';\nimport { VolumeUpIcon } from '@fluentui/react-icons-northstar';\n\ninterface Props {\n id: string;\n}\n\nfunction NamePronunciation({ id }: Props) {\n const audio = new Audio(`/api/people/${id}/media/name-pronunciation`);\n const handleClick = () => {\n audio.play();\n };\n\n return (\n \n \n \n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {},\n info: {\n marginBottom: theme.siteVariables.spacing.unit * 4,\n },\n});\n\nexport default InsufficientPermission;\n","import React, { useEffect, createContext } from 'react';\nimport { useData, useDispatch, useStatus, isLoading } from 'resift';\nimport useInterval from 'helpers/useInterval';\nimport { Loader } from '@fluentui/react-northstar';\nimport getIsInMsTeamsEmbed from 'helpers/getIsInMsTeamsEmbed';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport makeGetMeetingAttendeesFetch from 'components/msTeams/fetches/makeGetMeetingAttendeesFetch';\nimport MsTeamsMainTheme from 'components/msTeams/MsTeamsMainTheme';\nimport MsTeamsMain from './MsTeamsMain';\nimport InsufficientPermission from 'components/msTeams/embed/InsufficientPermission';\nimport { Person, meetingAttendee } from 'components/msTeams/embed/typing';\n\nconst attendeeData: Array = [];\n\nexport const AttendeesDataContext = createContext(attendeeData);\n\nfunction Container() {\n const isInMsTeamsEmbed = getIsInMsTeamsEmbed();\n const meetingAttendeesFetch = makeGetMeetingAttendeesFetch();\n const dispatch = useDispatch();\n const attendeesFetchData = useData(meetingAttendeesFetch);\n const oneMinute = 60000;\n const fetchStatus = useStatus(meetingAttendeesFetch);\n\n useEffect(() => {\n if (isInMsTeamsEmbed) {\n microsoftTeams.initialize();\n\n microsoftTeams.getContext(context => {\n dispatch(meetingAttendeesFetch(context.chatId!));\n });\n }\n }, [dispatch, isInMsTeamsEmbed, meetingAttendeesFetch]);\n\n useInterval(() => {\n if (isInMsTeamsEmbed) {\n microsoftTeams.getContext(context => {\n dispatch(meetingAttendeesFetch(context.chatId!));\n });\n }\n }, oneMinute);\n\n const handleRefresh = () => {\n microsoftTeams.getContext(context => {\n dispatch(meetingAttendeesFetch(context.chatId!));\n });\n };\n\n if (!isInMsTeamsEmbed) {\n return (\n \n This page is only available in Microsoft Teams panel.\n \n );\n }\n\n if (!attendeesFetchData) {\n return (\n \n \n \n );\n }\n\n const { participantFetchStatus } = attendeesFetchData;\n\n if (participantFetchStatus !== 'SUCCESS') {\n return ;\n }\n\n const attendeeList = attendeesFetchData.results.map(\n (attendee: meetingAttendee) => attendee.profile,\n );\n\n return (\n \n \n \n \n \n );\n}\n\nexport default Container;\n","import React, { useEffect, Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { LOADING } from 'resift';\nimport useRouter from '@sift/resift/useRouter';\nimport useAnalytics from 'helpers/useAnalytics';\nimport routes from './helpers/routes';\nimport useOnboardingRedirectEffect from 'helpers/useOnboardingRedirectEffect';\nimport Loader from 'components/skipper/Loader';\n\n// Components\nimport CoreLayout from 'components/CoreLayout';\nimport SearchOverlay from 'components/BigSearch/SearchOverlay';\nimport MsTeamsMain from 'components/msTeams/embed/MsTeamsMain';\nimport { Route, Switch, Redirect } from 'react-router';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\n\nimport { MS_TEAMS_MEETING_MAIN_URL } from 'components/msTeams/consts';\n\nfunction SiftRouter() {\n const client = useSelector(state => state.client);\n const user = useSelector(state => state.authentication.person);\n const analytics = useAnalytics();\n const { history } = useRouter();\n const isInMsTeams = getIsInMsTeams();\n\n useEffect(() => {\n history.listen(({ pathname }) => {\n // TODO: this causes the analytics/segment to have the wrong page title\n // because the `document.title` is usually set after the router history event\n analytics.page(pathname);\n });\n\n if (isInMsTeams) {\n microsoftTeams.initialize();\n microsoftTeams.getContext(context => {\n /** This is for deep linking in ms teams apps from the url that has subEntityId encoded\n * e.g. https://teams.microsoft.com/l/entity/19cdebca-d354-45a6-a701-a7cde03457a8/search?context=%7B%22subEntityId%22%3A%22%2Fprofile%2FxM0uI0Dh5xRr%22%7D\n * The above url gets interpreted by getContext and returns\n * context.subEntityId = \"/profile/xM0uI0Dh5xRr\"\n */\n if (context.subEntityId) {\n history.push(context.subEntityId);\n }\n });\n }\n }, [analytics, history, isInMsTeams]);\n\n useOnboardingRedirectEffect();\n\n const WrapperComponent = window.location.href.includes(MS_TEAMS_MEETING_MAIN_URL)\n ? React.Fragment\n : CoreLayout;\n\n return (\n \n }>\n \n {routes(client, user).map((route, index) => (\n \n ))}\n \n \n \n \n \n \n );\n}\n\nexport default SiftRouter;\n","import React from 'react';\n\nimport ErrorBoundary from 'components/skipper/ErrorBoundary';\nimport AppProvider from 'components/AppProvider';\nimport AppFetcher from 'components/AppFetcher';\nimport Router from 'components/Router';\n\nfunction App() {\n return (\n \n \n {() => }\n \n \n );\n}\n\nexport default App;\n","import React from 'react';\nimport createTheme from 'styles/skipper/createSkipperTheme';\nimport { ThemeProvider } from '@mui/material/styles';\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\n\nconst theme = createTheme({\n palette: {\n secondary: {\n main: '#F88D2B',\n contrastText: '#fff',\n },\n },\n});\n\nexport const muiCache = createCache({\n key: 'mui',\n prepend: true,\n});\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction MsTeamsThemeWrapper({ children }: Props) {\n return (\n \n {children}\n \n );\n}\n\nexport default MsTeamsThemeWrapper;\n","import React, { useEffect } from 'react';\nimport typography from 'helpers/typography';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport config from 'config';\nimport queryString from 'query-string';\nimport classNames from 'classnames';\n\n// Components\nimport SiftLogo from 'components/skipper/SiftLogo';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport LaunchIcon from '@mui/icons-material/Launch';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport MsTeamsThemeWrapper from '../MsTeamsThemeWrapper';\n\nimport { SIFT_MARKETING_SITE } from 'helpers/consts';\nimport { MS_TEAMS_LOGIN_DONE_URL } from 'components/msTeams/consts';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n height: '100%',\n width: '100%',\n overflow: 'auto',\n backgroundColor: theme.palette.background.paper,\n },\n content: {\n display: 'flex',\n minHeight: '100%',\n maxWidth: '100%',\n },\n aside: {\n flex: '0 0 auto',\n width: '40%',\n background: 'linear-gradient(180deg, rgba(61, 0, 145, 0) 0%, #3D0091 100%), #7512FF',\n overflow: 'hidden',\n display: 'flex',\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n img: {\n display: 'block',\n margin: 'auto',\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n maxWidth: 640,\n padding: theme.spacing(4),\n },\n body: {\n flex: '1 1 auto',\n padding: theme.spacing(2),\n margin: theme.spacing(0, 6),\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n marginBottom: theme.spacing(6),\n [theme.breakpoints.down('md')]: {\n margin: 0,\n },\n },\n logo: {\n marginBottom: theme.spacing(3),\n },\n title: {\n display: 'flex',\n flexDirection: 'column',\n color: '#7512FF',\n marginBottom: theme.spacing(2),\n },\n workBetter: {\n ...typography(theme, 'h4'),\n lineHeight: 1,\n },\n together: {\n ...typography(theme, 'h2'),\n fontWeight: theme.typography.fontWeightBold,\n },\n main: {\n margin: 'auto 0',\n maxWidth: '100%',\n [theme.breakpoints.down('md')]: {\n margin: 'auto',\n },\n },\n paragraph: {\n marginBottom: theme.spacing(2),\n maxWidth: 330,\n [theme.breakpoints.down('md')]: {\n maxWidth: 400,\n },\n },\n buttons: {\n display: 'flex',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(2),\n },\n marginBottom: theme.spacing(2),\n },\n button: {\n width: 150,\n marginTop: theme.spacing(2),\n },\n signupInfo: {\n ...typography(theme, 'caption'),\n },\n}));\n\nfunction MsTeamsLogin() {\n const { classes } = useStyles();\n\n useEffect(() => {\n microsoftTeams.initialize();\n }, []);\n\n const handleSignIn = () => {\n microsoftTeams.authentication.authenticate({\n successCallback: () => {\n // (pearl) Note: Console log showed that this never fires, but putting it here in case it is needed.\n const parsed = queryString.parse(window.location.search);\n const path = (parsed.redirectTo as string) || '/';\n window.location.href = path;\n },\n failureCallback: () => {\n /** This failure callback fires when the login window is closed.\n * We don't have a way of calling the successCallback because we're not following the\n * microsoft teams login flow. Instead, we have our own cookie authentication system.\n * Therefore, we always redirect people to where they came from, and auth checking is always\n * handled in `dataServiceActionHandlers`*/\n const parsed = queryString.parse(window.location.search);\n const path = (parsed.redirectTo as string) || '/';\n window.location.href = path;\n },\n height: 700,\n width: 400,\n url: `${config.LOGIN}?inTeams=true&redirectTo=${encodeURIComponent(MS_TEAMS_LOGIN_DONE_URL)}`,\n });\n };\n\n return (\n
\n
\n \n
\n \n
\n

\n \n Work Better,\n \n \n Together\n \n

\n \n Sift is the fastest way to find and connect with anyone in your company.\n \n \n Empowering everyone with the ability to discover and leverage the expertise of all\n your colleagues.\n \n
\n \n Sign In\n \n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Learn More\n \n
\n \n Note: A Sift account is required to sign in. To get your company\n started with Sift, please click “Learn More” or try our 30-day trial through the store\n page.\n \n
\n
\n
\n
\n );\n}\n\nfunction WrappedComponent() {\n return (\n \n \n \n );\n}\n\nexport default WrappedComponent;\n","// This screen shows up after the user successfully logged in to Sift\n// in ms teams mobile app\nimport React from 'react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport SiftLogo from 'components/skipper/SiftLogo';\nimport Typography from '@mui/material/Typography';\nimport MsTeamsThemeWrapper from '../MsTeamsThemeWrapper';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n height: '100%',\n width: '100%',\n overflow: 'auto',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(2),\n },\n body: {\n margin: '0 auto',\n maxWidth: 600,\n },\n logo: {\n marginBottom: theme.spacing(3),\n marginTop: theme.spacing(3),\n },\n text: {\n margin: '0 auto',\n },\n}));\n\nfunction MsTeamsLoginSuccess() {\n const { classes } = useStyles();\n\n return (\n
\n
\n \n \n You have been signed in. You may close this window.\n \n
\n
\n );\n}\n\nfunction WrappedComponent() {\n return (\n \n \n \n );\n}\n\nexport default WrappedComponent;\n","import React, { useEffect, useContext } from 'react';\nimport * as microsoftTeams from '@microsoft/teams-js';\nimport { Text, Button, Flex } from '@fluentui/react-northstar';\nimport { OpenOutsideIcon } from '@fluentui/react-icons-northstar';\nimport config from 'config';\nimport { SIFT_MARKETING_SITE } from 'helpers/consts';\nimport { TeamsThemeContext, Theme } from 'components/msTeams/MsTeamsMainTheme';\nimport InfoPageLayout from 'components/msTeams/embed/molecules/InfoPageLayout';\nimport { MS_TEAMS_MEETING_MAIN_URL, MS_TEAMS_LOGIN_DONE_URL } from 'components/msTeams/consts';\n\nfunction TeamsLogin() {\n const themeContext = useContext(TeamsThemeContext);\n const styles = useStyles(themeContext);\n\n useEffect(() => {\n microsoftTeams.initialize();\n }, []);\n\n const handleSignIn = () => {\n microsoftTeams.authentication.authenticate({\n successCallback: () => {\n // (pearl) Note: Console log showed that this never fires, but putting it here in case it is needed.\n const path = MS_TEAMS_MEETING_MAIN_URL;\n window.location.assign(path);\n },\n failureCallback: () => {\n /** This failure callback fires when the login window is closed.\n * We don't have a way of calling the successCallback because we're not following the\n * microsoft teams login flow. Instead, we have our own cookie authentication system.\n * Therefore, we always load the MS_TEAMS_MEETING_MAIN_URL, and auth checking is always handled in `dataServiceActionHandlers`\n */\n const path = MS_TEAMS_MEETING_MAIN_URL;\n window.location.assign(path);\n },\n height: 700,\n width: 400,\n url: `${config.LOGIN}?initAzureADLogin=true&inTeams=true&redirectTo=${encodeURIComponent(\n MS_TEAMS_LOGIN_DONE_URL,\n )}`,\n });\n };\n\n return (\n \n \n Sift is the fastest way to find and connect with anyone in your company.\n \n \n \n }\n iconPosition=\"before\"\n data-testid=\"learn-more-button\"\n />\n \n \n Note: A Sift account is required. To get your company started with Sift,{' '}\n \n learn more\n \n {' '}\n or try our 30-day trial through the store page.\n \n Consent to access meeting information through your Microsoft account is required. If you\n have trouble granting these permissions during sign-in, please contact your administrator.\n \n \n \n );\n}\n\nconst useStyles = (theme: Theme) => ({\n root: {},\n intro: {\n marginBottom: theme.siteVariables.spacing.unit * 4,\n },\n footer: {\n marginTop: theme.siteVariables.spacing.unit * 4,\n },\n link: {\n color: 'inherit',\n textDecoration: 'underline',\n display: 'inline-flex',\n },\n consent: {\n display: 'block',\n marginTop: theme.siteVariables.spacing.unit * 2,\n },\n});\n\nexport default TeamsLogin;\n","import 'core-js';\nimport 'react-app-polyfill/ie11';\nimport 'fullscreen-api-polyfill';\nimport './prependPolyfill';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport config from './config';\nimport { init, captureException } from '@sentry/browser';\n\n// Styles\nimport 'styles/core.css';\nimport 'styles/bodyFullscreen.css';\n\n// Components\nimport App from 'components/App';\nimport MsTeamsLogin from 'components/msTeams/MsTeamsLogin';\nimport MsTeamsLoginSuccess from 'components/msTeams/MsTeamsLoginSuccess';\nimport TeamsLogin from 'components/msTeams/embed/TeamsLogin';\nimport {\n MS_TEAMS_LOGIN_URL,\n MS_TEAMS_MEETING_LOGIN_URL,\n MS_TEAMS_LOGIN_DONE_URL,\n} from 'components/msTeams/consts';\n\n(window as any)._captureException = captureException;\n\nif (config.ENV === 'production') {\n // Hotjar Tracking Code for https://foc.justsift.com/\n (function(h: any, o: any, t: any, j: any, a?: any, r?: any) {\n h.hj =\n h.hj ||\n function() {\n (h.hj.q = h.hj.q || []).push(arguments);\n };\n h._hjSettings = { hjid: 2029747, hjsv: 6 };\n a = o.getElementsByTagName('head')[0];\n r = o.createElement('script');\n r.async = 1;\n r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n a.appendChild(r);\n })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=');\n}\n\nasync function main() {\n if (window.location.href.includes(MS_TEAMS_LOGIN_URL)) {\n const loadingContainer = document.querySelector('.loading_container');\n loadingContainer?.parentNode?.removeChild(loadingContainer);\n const container = document.getElementById('root');\n const root = createRoot(container!);\n root.render();\n return;\n }\n\n if (window.location.href.includes(MS_TEAMS_MEETING_LOGIN_URL)) {\n const loadingContainer = document.querySelector('.loading_container');\n loadingContainer?.parentNode?.removeChild(loadingContainer);\n const container = document.getElementById('root');\n const root = createRoot(container!);\n root.render();\n return;\n }\n\n if (window.location.href.includes(MS_TEAMS_LOGIN_DONE_URL)) {\n const loadingContainer = document.querySelector('.loading_container');\n loadingContainer?.parentNode?.removeChild(loadingContainer);\n const container = document.getElementById('root');\n const root = createRoot(container!);\n root.render();\n window.close();\n return;\n }\n\n if (config.SENTRY) {\n init({\n dsn: config.SENTRY,\n environment: config.ENV,\n ignoreErrors: ['ResizeObserver loop limit exceeded'],\n });\n }\n const container = document.getElementById('root');\n const root = createRoot(container!);\n root.render();\n}\n\nmain().catch(e => {\n return captureException(e);\n});\n","import { deepmerge } from '@mui/utils';\nimport { createTheme } from '@mui/material/styles';\nimport skipperDefaultTheme from './skipperDefaultTheme';\n\n// removes a warning. this is just to resolve a TS thing\nexport const Theme = undefined;\n\nexport default function createSkipperTheme(theme = {}) {\n return createTheme(deepmerge(skipperDefaultTheme, theme));\n}\n","// Models\nimport Fetch from '@sift/resift/models/Fetch';\nimport { mergeLoading, mergeError } from '@sift/resift/redux/FetchUtils';\nimport { Status, States } from '@sift/resift/models/Status';\n\nconst initialState = {\n objects: {},\n fetches: {},\n types: {},\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const FETCH_ENTITY = 'FETCH_ENTITY';\nexport const FETCH_ENTITY_SUCCESS = 'FETCH_ENTITY_SUCCESS';\nexport const FETCH_ENTITY_ERROR = 'FETCH_ENTITY_ERROR';\n\nexport const FETCH_ENTITY_TYPES = 'FETCH_ENTITY_TYPES';\nexport const FETCH_ENTITY_TYPES_SUCCESS = 'FETCH_ENTITY_TYPES_SUCCESS';\nexport const FETCH_ENTITY_TYPES_ERROR = 'FETCH_ENTITY_TYPES_SUCCESS_ERROR';\n\nexport const UPDATE_ENTITY = 'UPDATE_ENTITY';\nexport const UPDATE_ENTITY_SUCCESS = 'UPDATE_ENTITY_SUCCESS';\nexport const UPDATE_ENTITY_ERROR = 'UPDATE_ENTITY_ERROR';\n\nexport const UPDATE_ENTITY_RELATIONSHIP = 'UPDATE_ENTITY_RELATIONSHIP';\nexport const UPDATE_ENTITY_RELATIONSHIP_SUCCESS = 'UPDATE_ENTITY_RELATIONSHIP_SUCCESS';\nexport const UPDATE_ENTITY_RELATIONSHIP_ERROR = 'UPDATE_ENTITY_RELATIONSHIP_ERROR';\n\nexport const PERSON_ENTITY_TYPE_KEY = 'user';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\n/**\n * Get a set of entity types\n *\n * @param {string} status\n */\nexport const fetchEntityTypes = () => {\n return {\n type: FETCH_ENTITY_TYPES,\n identifier: 'entityTypes',\n payload: {},\n };\n};\n\nexport const fetchEntity = entityId => {\n return {\n type: FETCH_ENTITY,\n identifier: 'entity',\n payload: {\n entityId,\n },\n };\n};\n\nexport const updateEntity = (entity, fields, { retainDialogState }) => {\n return {\n type: UPDATE_ENTITY,\n identifier: 'entity',\n payload: {\n retainDialogState,\n data: {\n id: entity.id,\n entityField: entity.entityField,\n ...fields,\n },\n },\n };\n};\n\nexport const updateEntityRelationship = (\n entity,\n relationships,\n { relationship, retainDialogState },\n) => {\n return {\n type: UPDATE_ENTITY_RELATIONSHIP,\n identifier: entity.id,\n payload: {\n data: relationships,\n relationship,\n retainDialogState,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [FETCH_ENTITY_TYPES]: mergeLoading,\n [FETCH_ENTITY_TYPES_SUCCESS]: (state, action) => {\n const identifier = action.identifier;\n const objectsAndIds = action.payload.data.results.reduce(\n (acc, cur, index) => {\n const id = cur.id;\n acc.objects[id] = cur;\n acc.ids.push(id);\n return acc;\n },\n {\n objects: {},\n ids: [],\n },\n );\n return {\n ...state,\n types: {\n ...state.types,\n ...objectsAndIds.objects,\n },\n fetches: {\n ...state.fetches,\n [identifier]: new Fetch(\n identifier,\n objectsAndIds.ids,\n [],\n action.payload.data,\n new Status(States.NORMAL),\n ),\n },\n };\n },\n [FETCH_ENTITY_TYPES_ERROR]: mergeError,\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport default function EntityReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import createPortal from 'helpers/createPortal';\n\nexport default createPortal('OnboardingAppBarPortal') as any;\n","import { createTheme } from '@mui/material/styles';\n\nconst defaultTheme = createTheme();\n\nexport default function createPaletteColor(paletteColorName: string, mainColor: string) {\n return defaultTheme.palette.augmentColor({\n color: { main: mainColor },\n name: paletteColorName,\n });\n}\n","import { LOADING } from 'resift';\nimport { LegacyStatus } from '@sift/resift/models/Status';\n\nfunction getLoading(status: number | LegacyStatus) {\n if (typeof status === 'number') return (status & LOADING) !== 0;\n return status.isLoading();\n}\n\nexport default function isLoading(...statuses: (number | LegacyStatus)[]) {\n return statuses.some(getLoading);\n}\n","import { NORMAL } from 'resift';\nimport { LegacyStatus } from '@sift/resift/models/Status';\n\nfunction getNormal(status: number | LegacyStatus) {\n if (typeof status === 'number') return (status & NORMAL) !== 0;\n return status.isNormal();\n}\n\nexport default function isNormal(...statuses: (number | LegacyStatus)[]) {\n return statuses.every(getNormal);\n}\n","import { ERROR } from 'resift';\nimport { LegacyStatus } from '@sift/resift/models/Status';\n\nfunction getError(status: number | LegacyStatus) {\n if (typeof status === 'number') return (status & ERROR) !== 0;\n return status.hasError();\n}\n\nexport default function isError(...statuses: (number | LegacyStatus)[]) {\n return statuses.some(getError);\n}\n","import React, { forwardRef, useMemo } from 'react';\nimport { DivProps } from 'helpers/typings';\nimport { CSSTransition } from 'react-transition-group';\n\n// these are different because they support the legacy status\nimport isLoading from './helpers/isLoading';\nimport isNormal from './helpers/isNormal';\nimport isError from './helpers/isError';\n\n// Components\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ErrorView from '../views/Error';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst TRANSITION_TIMING = 250;\n\nfunction isEmpty(status: any) {\n if (typeof status === 'number') return false;\n return status.isEmpty();\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {},\n overlay: {\n backgroundColor: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: `opacity ${TRANSITION_TIMING}ms`,\n zIndex: theme.zIndex.loader,\n },\n overlayTransparent: {\n backgroundColor: 'rgba(255, 255, 255, 0.7)',\n },\n appear: {\n opacity: 0,\n },\n appearActive: {\n opacity: 1,\n },\n enter: {\n opacity: 0,\n },\n enterActive: {\n opacity: 1,\n },\n exit: {\n opacity: 1,\n },\n exitActive: {\n opacity: 0,\n },\n };\n});\n\ninterface Props extends DivProps {\n /**\n * Classnames for each of the three components.\n */\n classes?: Partial['classes']>;\n className?: string;\n /**\n * Transition timeouts.\n */\n transitionTimeout?: {\n enter?: number;\n exit?: number;\n };\n /**\n * The content to be rendered when normal.\n */\n children?: React.ReactNode;\n /**\n * Loading State Model\n */\n status: any;\n /**\n * Loading indicator view\n */\n isLoadingView?: React.ReactNode;\n /**\n * Empty View\n */\n isEmptyView?: React.ReactNode;\n /**\n * Error View\n */\n isErrorView?: React.ReactNode;\n /**\n * pass in a `ref` to the inner `div` element\n */\n}\n\nexport default forwardRef((props: Props, ref: React.Ref) => {\n const {\n classes: classesFromProps,\n className,\n transitionTimeout,\n children,\n status,\n isLoadingView,\n isEmptyView,\n isErrorView,\n ...rest\n } = props;\n const { classes } = useStyles(undefined, { props: { classes: classesFromProps } });\n\n const transitionClasses = {\n appear: classes.appear,\n appearActive: classes.appearActive,\n enter: classes.enter,\n enterActive: classes.enterActive,\n exit: classes.exit,\n exitActive: classes.exitActive,\n };\n\n const getTransitionTimeout = () => {\n return (\n transitionTimeout || {\n enter: TRANSITION_TIMING,\n exit: TRANSITION_TIMING,\n active: TRANSITION_TIMING,\n }\n );\n };\n\n /**\n * Renders the proper state view from the current status. See contents of function to\n * determine priority order of each state.\n */\n\n const stateView = useMemo(() => {\n if (isLoading(status)) return isLoadingView || ;\n if (isEmpty(status)) return isEmptyView || null;\n if (isError(status)) return isErrorView || ;\n\n return null;\n }, [isEmptyView, isErrorView, isLoadingView, status]);\n\n const visible = !!stateView;\n\n return (\n
\n \n \n {stateView}\n
\n \n {isNormal(status) && <>{children}}\n \n );\n});\n","import { CSSObject } from '@emotion/react';\nimport { Theme } from '@mui/material/styles';\nimport _get from 'lodash/get';\n\nexport default function typography(\n theme: Theme,\n key: keyof Theme['typography'],\n fontKey?: string,\n): CSSObject {\n if (fontKey) {\n return _get(theme, ['typography', key, fontKey]) as CSSObject;\n } else {\n return theme.typography[key] as CSSObject;\n }\n}\n","import _get from 'lodash/get';\nimport createReducer from '@sift/resift/createReducer';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SIFT_BOT_DISPLAY = 'SIFT_BOT_DISPLAY';\n\nexport const SIFT_BOT_FETCH = 'SIFT_BOT_FETCH';\nexport const SIFT_BOT_FETCH_SUCCESS = 'SIFT_BOT_FETCH_SUCCESS';\nexport const SIFT_BOT_FETCH_ERROR = 'SIFT_BOT_FETCH_ERROR';\n\nexport const SIFT_BOT_READ = 'SIFT_BOT_READ';\nexport const SIFT_BOT_READ_SUCCESS = 'SIFT_BOT_READ_SUCCESS';\nexport const SIFT_BOT_READ_ERROR = 'SIFT_BOT_READ_ERROR';\n\nexport const SIFT_BOT_OPT_OUT = 'SIFT_BOT_OPT_OUT';\nexport const SIFT_BOT_OPT_OUT_SUCCESS = 'SIFT_BOT_OPT_OUT_SUCCESS';\nexport const SIFT_BOT_OPT_OUT_ERROR = 'SIFT_BOT_OPT_OUT_ERROR';\n\nconst SIFT_BOT_SET_EDIT_FIELD = 'SIFT_BOT_SET_EDIT_FIELD';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport function fetchSiftBot(userId) {\n return {\n type: SIFT_BOT_FETCH,\n payload: {\n userId,\n },\n };\n}\n\nexport function readSiftBot(userId) {\n return {\n type: SIFT_BOT_READ,\n payload: {\n userId,\n },\n };\n}\n\nexport function optOutSiftBot(userId, objectKey, reason) {\n return {\n type: SIFT_BOT_OPT_OUT,\n payload: {\n userId,\n data: {\n fields: [{ objectKey, reason }],\n },\n },\n };\n}\n\nexport function toggleSiftBotDisplay() {\n return {\n type: SIFT_BOT_DISPLAY,\n };\n}\n\n/**\n * @param {string | undefined} objectKey\n */\nexport function setEditField(objectKey) {\n return {\n type: SIFT_BOT_SET_EDIT_FIELD,\n payload: objectKey,\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst actionHandlers = {\n [SIFT_BOT_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n ...action.payload.data,\n readAt: state.readAt ? state.readAt : _get(action.payload.data, 'readAt'),\n open: _get(action.payload.data, 'autoOpen') ? true : !!state.open,\n };\n },\n [SIFT_BOT_READ_SUCCESS]: (state, action) => {\n return {\n ...state,\n ...action.payload.data,\n readAt: state.readAt,\n open: _get(action.payload.data, 'autoOpen') ? true : !!state.open,\n };\n },\n [SIFT_BOT_OPT_OUT_SUCCESS]: (state, action) => {\n return {\n ...state,\n ...action.payload.data,\n readAt: state.readAt,\n open: _get(action.payload.data, 'autoOpen') ? true : !!state.open,\n };\n },\n [SIFT_BOT_DISPLAY]: state => {\n return {\n ...state,\n open: !state.open,\n };\n },\n [SIFT_BOT_SET_EDIT_FIELD]: (state, action) => {\n return {\n ...state,\n editFieldObjectKey: action.payload,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {\n fieldsNotCompleted: [],\n fieldsCompleted: [],\n editFieldObjectKey: undefined,\n};\n\nexport default createReducer(initialState, actionHandlers);\n","import typography from './typography';\nimport { Shadows } from '@mui/material/styles/shadows';\n\nexport default {\n typography,\n shadows: [\n 'none', // MUI default [0]\n '0px 2px 4px rgba(33, 33, 33, 0.07)', // [1]\n '0px 2px 2px rgba(33, 33, 33, 0.05), 0px 0px 2px rgba(33, 33, 33, 0.2)', // [2]\n '0px 4px 10px rgba(0, 0, 0, 0.1), 0px 0px 2px rgba(0, 0, 0, 0.2)', // [3]\n '0px 6px 12px -6px rgba(33, 33, 33, 0.08), 0px 8px 24px -4px rgba(33, 33, 33, 0.08)', // [4]\n '0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)', // MUI default [5]\n '0px 6px 14px -6px rgba(33, 33, 33, 0.12), 0px 10px 32px -4px rgba(33, 33, 33, 0.1)', // [6]\n '0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)', // MUI default [7]\n '0px 8px 18px -6px rgba(33, 33, 33, 0.12), 0px 12px 42px -4px rgba(33, 33, 33, 0.12)', // [8]\n '0px 8px 18px -6px rgba(33, 33, 33, 0.12), 0px 12px 42px -4px rgba(33, 33, 33, 0.12)', // [9]\n '0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)', // MUI default [10]\n '0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)', // MUI default [11]\n '0px 8px 22px -6px rgba(33, 33, 33, 0.12), 0px 14px 64px -4px rgba(33, 33, 33, 0.12)', // [12]\n '0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)', // MUI default [13]\n '0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)', // MUI default [14]\n '0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)', // MUI default [15]\n '0px 8px 22px -6px rgba(33, 33, 33, 0.12), 0px 14px 64px -4px rgba(33, 33, 33, 0.12)', // [16]\n '0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)', // MUI default [17]\n '0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)', // MUI default [18]\n '0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)', // MUI default [19]\n '0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)', // MUI default [20]\n '0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)', // MUI default [21]\n '0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)', // MUI default [22]\n '0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)', // MUI default [23]\n '0px 8px 28px -6px rgba(33, 33, 33, 0.12), 0px 18px 88px -4px rgba(33, 33, 33, 0.14)', // [24]\n ] as Shadows,\n components: {\n MuiChip: {\n styleOverrides: {\n root: {\n height: 34,\n },\n avatar: {\n marginLeft: 1,\n marginTop: 2,\n marginBottom: 2,\n },\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: {\n padding: 8, // the default material ui spacing unit\n margin: 0,\n },\n },\n },\n },\n zIndex: {\n surface: 1,\n loader: 1150,\n max: 1600,\n },\n};\n","import React from 'react';\nimport typography from 'helpers/typography';\nimport usePageTrackingEffect from 'components/Page/usePageTrackingEffect';\nimport useLinkedInImportEnabled from 'helpers/useLinkedInImportEnabled';\n\n// Components\nimport Button from '@mui/material/Button';\nimport { Link } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n display: 'flex',\n flex: '1 1 auto',\n width: 1280,\n maxWidth: '100%',\n marginTop: theme.spacing(10),\n marginBottom: theme.spacing(10),\n marginLeft: 'auto',\n marginRight: 'auto',\n padding: theme.spacing(0, 4),\n alignSelf: 'center',\n [theme.breakpoints.down('md')]: {\n justifyContent: 'center',\n },\n },\n copyContainer: {\n width: '50%',\n display: 'flex',\n flexDirection: 'column',\n paddingTop: theme.spacing(8),\n [theme.breakpoints.down('md')]: {\n paddingTop: theme.spacing(4),\n width: 600,\n maxWidth: '100%',\n },\n },\n copy: {\n width: '90%',\n flex: '0 0 auto',\n },\n title: {\n ...typography(theme, 'h4'),\n color: theme.palette.primary.main,\n marginBottom: theme.spacing(4),\n },\n subtitleBold: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightBold,\n },\n subtitle: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightRegular,\n marginBottom: theme.spacing(4),\n },\n startButton: {\n alignSelf: 'flex-start',\n },\n imageContainer: {\n width: '50%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n };\n});\n\ninterface Props {\n companyName: string;\n}\n\nconst StartPage = ({ companyName }: Props) => {\n const { classes } = useStyles();\n\n usePageTrackingEffect('Welcome to Sift', 'New User Onboarding');\n const linkedInImportEnabled = useLinkedInImportEnabled();\n\n return (\n
\n
\n
\n
Take a few moments to complete your profile.
\n
\n Find the right people in the moment you need them.\n
\n
\n The next time you need to find someone at {companyName}, easily seek them out with\n simple search by job title, location, or even skillset!\n
\n
Grow your career.
\n
\n Showcase your skills and unique interests to advance your career with exposure to more\n teams.\n
\n
\n \n Get Started\n \n
\n \n
\n );\n};\n\nexport default StartPage;\n","import { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nexport default function useLinkedInImportEnabled() {\n return useSelector(state => _get(state, 'client.settings.onboarding.linkedIn.enabled', true));\n}\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\n// Helpers\nimport _get from 'lodash/get';\n\n// Component\nimport Start from './Start';\n\nconst Container = () => {\n const companyName = useSelector(state => _get(state, ['client', 'displayName']));\n\n return ;\n};\n\nexport default Container;\n","import React from 'react';\nimport typography from 'helpers/typography';\nimport usePageTrackingEffect from 'components/Page/usePageTrackingEffect';\n\n// Components\nimport Button from '@mui/material/Button';\nimport { Link } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n display: 'flex',\n flex: '1 0 auto',\n width: 1280,\n maxWidth: '100%',\n marginTop: theme.spacing(10),\n marginBottom: theme.spacing(10),\n marginLeft: 'auto',\n marginRight: 'auto',\n padding: theme.spacing(0, 4),\n alignSelf: 'center',\n [theme.breakpoints.down('md')]: {\n justifyContent: 'center',\n },\n },\n copyContainer: {\n width: '50%',\n display: 'flex',\n flexDirection: 'column',\n paddingTop: theme.spacing(8),\n [theme.breakpoints.down('md')]: {\n paddingTop: theme.spacing(4),\n width: 600,\n maxWidth: '100%',\n },\n '& > *': {\n flex: '0 0 auto',\n },\n },\n title: {\n ...typography(theme, 'h4'),\n marginBottom: theme.spacing(4),\n },\n subtitle: {\n ...typography(theme, 'body1'),\n marginBottom: theme.spacing(4),\n },\n outerButtonsContainer: {\n display: 'flex',\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n linkedinButton: {\n marginBottom: theme.spacing(1),\n },\n buttonText: {\n ...typography(theme, 'subtitle2'),\n fontWeight: theme.typography.fontWeightRegular,\n marginBottom: theme.spacing(4),\n },\n or: {\n ...typography(theme, 'body1'),\n marginBottom: theme.spacing(4),\n },\n imageContainer: {\n width: '50%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n margin: theme.spacing(0, 2),\n marginTop: theme.spacing(10),\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n };\n});\n\nconst LinkedInFork = () => {\n const { classes } = useStyles();\n usePageTrackingEffect('Upload LinkedIn resume', 'New User Onboarding');\n\n return (\n
\n
\n
Want to reduce the steps?
\n
\n We recommend uploading your LinkedIn resume to make this process easier. You’ll have full\n control over what information you add and can always change it later.\n
\n
\n
\n \n Upload LinkedIn resume\n \n
We'll show you how in the next step
\n
or
\n \n
\n
\n
\n
\n \n );\n};\n\nexport default LinkedInFork;\n","import { defineFetch } from 'resift';\nimport removeKeys from 'helpers/removeKeys';\nimport _get from 'lodash/get';\nimport _merge from 'lodash/merge';\n\nexport default defineFetch({\n displayName: 'update linkedin',\n share: { namespace: 'settings' },\n make: () => ({\n request: (linkedInFile: File) => async ({ http, getState }: any) => {\n const state = getState();\n const personId = _get(state, ['authentication', 'person', 'id']) as string | undefined;\n\n if (!personId) {\n throw new Error('[updateLinkedInFetch] could not find person id');\n }\n\n const formData = new FormData();\n formData.append('linkedin-pdf', linkedInFile);\n\n // step 1: send linkedin PDF to parser on backend\n const linkedInData = await http({\n method: 'POST',\n route: '/people/parse-linkedin-pdf',\n data: formData,\n });\n\n // step 2: get fetch settings\n const settings = await http({\n method: 'GET',\n route: `/people/${personId}/settings`,\n });\n\n const userOnboarding = _get(settings, ['directory', 'userOnboarding']);\n\n // step 3: merge results from linkedin parser to fresh settings\n const settingsWithLinkedIn = _merge(\n {},\n {\n directory: { userOnboarding: removeKeys(userOnboarding, ['linkedInData']) },\n },\n {\n directory: { userOnboarding: { linkedInData } },\n },\n );\n\n // step 4: post to settings endpoint\n return http({\n method: 'PUT',\n route: `/people/${personId}/settings`,\n data: settingsWithLinkedIn,\n });\n },\n }),\n});\n","import React from 'react';\n\n// Components\nimport ContrastButton from './ContrastButton';\nimport { ButtonProps } from '@mui/material/Button';\n\n// Styles\nimport ThemeOverrideComponent from 'styles/skipper/ThemeOverrideComponent';\nimport createTheme from 'styles/skipper/createSkipperTheme';\nimport { useTheme } from '@mui/material/styles';\n\nfunction Container(props: ButtonProps) {\n const theme = useTheme();\n const contrastButtonTheme = createTheme({\n palette: { primary: { main: theme.palette.originalPrimary.contrastText } },\n });\n\n return (\n \n \n \n );\n}\n\nexport default Container;\n","import React, { useEffect } from 'react';\nimport typography from 'helpers/typography';\nimport { isLoading } from 'resift';\nimport { useDropzone } from 'react-dropzone';\nimport usePageTrackingEffect from 'components/Page/usePageTrackingEffect';\n\n// Components\nimport ContrastButton from 'pages/Onboarding/components/ContrastButton';\nimport Button from '@mui/material/Button';\nimport { Link } from 'react-router-dom';\nimport AppBarPortal from 'pages/Onboarding/components/AppBarPortal';\nimport Paper from '@mui/material/Paper';\nimport Delete from '@mui/icons-material/Delete';\nimport IconButton from '@mui/material/IconButton';\nimport CheckMarkIcon from 'components/Icons/CheckMarkIcon';\nimport { useSnackbar } from 'notistack';\n\n// Helpers\nimport classNames from 'classnames';\nimport { transparentize } from 'polished';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport brandColors from 'styles/skipper/brandColors';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n display: 'flex',\n flex: '1 1 auto',\n width: 1280,\n maxWidth: '100%',\n marginTop: theme.spacing(10),\n marginBottom: 0,\n marginLeft: 'auto',\n marginRight: 'auto',\n padding: theme.spacing(0, 4),\n\n alignSelf: 'center',\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(6),\n justifyContent: 'center',\n },\n },\n copyContainer: {\n width: '50%',\n display: 'flex',\n flexDirection: 'column',\n margin: theme.spacing(8, 0),\n [theme.breakpoints.down('md')]: {\n paddingTop: theme.spacing(4),\n width: 600,\n maxWidth: '100%',\n },\n '& > *': {\n flex: '0 0 auto',\n },\n },\n title: {\n ...typography(theme, 'h4'),\n marginBottom: theme.spacing(4),\n [theme.breakpoints.down('md')]: {\n textAlign: 'center',\n },\n },\n subtitle: {\n ...typography(theme, 'body1'),\n marginBottom: theme.spacing(4),\n [theme.breakpoints.down('md')]: {\n textAlign: 'center',\n },\n },\n paper: {\n width: '100%',\n minHeight: 200,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n padding: theme.spacing(0, 4),\n marginBottom: theme.spacing(8),\n },\n paperAccept: {\n backgroundColor: transparentize(0.7, brandColors.tertiaryPalette.lime),\n },\n paperReject: {\n backgroundColor: transparentize(0.7, theme.palette.error.main),\n },\n dropCopy: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n marginBottom: theme.spacing(2),\n },\n or: {\n ...typography(theme, 'body1'),\n marginBottom: theme.spacing(2),\n },\n fileUploadDisplay: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n width: '100%',\n },\n fileDisplay: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n padding: theme.spacing(0, 4),\n },\n fileDisplayContinue: {\n marginTop: theme.spacing(2),\n },\n iconAndName: {\n display: 'flex',\n alignItems: 'center',\n },\n fileName: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n paddingLeft: theme.spacing(1),\n },\n imageContainer: {\n width: '50%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n marginLeft: theme.spacing(4),\n marginTop: theme.spacing(10),\n [theme.breakpoints.down('md')]: {\n // TODO: we should probably still show the illustration\n display: 'none',\n },\n },\n waitButtonContainer: {\n display: 'flex',\n justifyContent: 'center',\n },\n continueButton: {\n marginLeft: theme.spacing(2),\n },\n checkMarkIcon: {\n width: 42,\n height: 42,\n },\n snackbarRoot: {\n border: '1px solid red',\n },\n buttonDisabled: {\n color: `${theme.palette.grey['300']} !important`,\n backgroundColor: `${theme.palette.grey['600']} !important`,\n },\n };\n});\n\ninterface Props {\n onAcceptFile: (file: File) => void;\n onDeleteFile: () => void;\n fileName: string;\n status: number;\n onContinue: () => void;\n}\n\nfunction LinkedInUploader({ onAcceptFile, fileName, status, onContinue, onDeleteFile }: Props) {\n const { classes } = useStyles();\n const { enqueueSnackbar } = useSnackbar();\n\n usePageTrackingEffect('Upload LinkedIn Resume', 'New User Onboarding');\n\n useEffect(() => {\n if (!fileName) {\n return;\n }\n\n enqueueSnackbar('Great! Your resume was successfully imported.', {\n variant: 'success',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center',\n },\n style: {\n marginTop: 80, // 80 is the size of the app bar\n width: '100%',\n },\n });\n }, [fileName, enqueueSnackbar]);\n\n const handleDrop = (acceptFiles: File[]) => {\n const firstFile = acceptFiles[0];\n\n if (!firstFile) {\n return;\n }\n\n onAcceptFile(firstFile);\n };\n\n const { getRootProps, getInputProps, isDragAccept, isDragReject } = useDropzone({\n onDrop: handleDrop,\n accept: 'application/pdf',\n });\n\n const { ref, ...rootProps } = getRootProps();\n\n return (\n <>\n \n {/*\n // @ts-ignore */}\n \n Back\n \n \n Continue\n \n \n
\n
\n
Let’s get your LinkedIn info in
\n
\n

\n To download your resume, go to your LinkedIn profile and click\n
\n \"More…\", then click \"Save to PDF\".\n

\n

After doing so, upload your resume file below!

\n
\n \n {!fileName.length && }\n {fileName.length ? (\n
\n
\n
\n \n
{fileName}
\n
\n \n \n \n
\n
\n \n Continue\n \n
\n
\n ) : (\n <>\n
Drop LinkedIn Resume
\n
or
\n \n \n )}\n \n
\n \n
\n \n );\n}\n\nexport default LinkedInUploader;\n","import React, { useState } from 'react';\nimport { useStatus, useDispatch } from 'resift';\nimport _get from 'lodash/get';\nimport useRouter from '@sift/resift/useRouter';\nimport makeUpdateLinkedInFetch from 'pages/Onboarding/fetches/updateLinkedInFetch';\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\nimport useAnalytics from 'helpers/useAnalytics';\nimport analyticsOptions from 'helpers/analyticsOptions';\n\nimport LinkedInUploader from './LinkedInUploader';\n\nfunction Container() {\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n const { history } = useRouter();\n const [file, setFile] = useState(null);\n\n const { nextSlideLink } = useSlideInfo();\n const updateLinkedInFetch = makeUpdateLinkedInFetch();\n const status = useStatus(updateLinkedInFetch);\n\n const handleFile = (file: File) => {\n setFile(file);\n };\n\n const handleDeleteFile = () => {\n setFile(null);\n };\n\n const handleContinue = async () => {\n if (!file) {\n return;\n }\n\n await dispatch(updateLinkedInFetch(file));\n\n if (!nextSlideLink) {\n return;\n }\n\n analytics.track(analyticsOptions.action.CLICKED, {\n feature: analyticsOptions.feature.USER_ONBOARDING,\n action: 'User uploaded LinkedIn profile',\n });\n\n history.push(nextSlideLink);\n };\n\n const fileName = _get(file, ['name'], '');\n\n return (\n \n );\n}\n\nexport default Container;\n","import _get from 'lodash/get';\nimport { useData } from 'resift';\nimport makeSettingsFetch from 'fetches/settingsFetch';\n\nexport default function useLinkedIn() {\n const settingsFetch = makeSettingsFetch();\n const settings = useData(settingsFetch);\n const linkedInData = _get(settings, ['directory', 'userOnboarding', 'linkedInData'], null);\n return linkedInData;\n}\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst WarningIcon = props => (\n \n \n \n \n);\n\nexport default WarningIcon;\n","import React from 'react';\nimport typography from 'helpers/typography';\n\n// Components\nimport AppBarPortal from 'pages/Onboarding/components/AppBarPortal';\nimport Button from '@mui/material/Button';\nimport { Link } from 'react-router-dom';\nimport Paper from '@mui/material/Paper';\nimport CheckMarkIcon from 'components/Icons/CheckMarkIcon';\nimport WarningIcon from 'components/Icons/WarningIcon';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n width: 1280,\n maxWidth: '100%',\n marginTop: theme.spacing(10),\n marginBottom: 0,\n marginLeft: 'auto',\n marginRight: 'auto',\n padding: theme.spacing(0, 4),\n alignSelf: 'center',\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(6),\n },\n },\n content: {\n display: 'flex',\n paddingTop: theme.spacing(4),\n [theme.breakpoints.down('md')]: {\n justifyContent: 'center',\n },\n },\n backContainer: {\n paddingTop: theme.spacing(4),\n [theme.breakpoints.down('md')]: {\n justifyContent: 'center',\n },\n },\n copyContainer: {\n width: '50%',\n display: 'flex',\n flexDirection: 'column',\n [theme.breakpoints.down('md')]: {\n width: 'auto',\n },\n },\n title: {\n ...typography(theme, 'h4'),\n },\n subtitle: {\n ...typography(theme, 'body1'),\n marginBottom: theme.spacing(4),\n },\n paper: {\n width: '100%',\n height: 'auto',\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'center',\n flexDirection: 'column',\n padding: theme.spacing(4),\n marginBottom: theme.spacing(8),\n },\n linkedinField: {\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(1, 0),\n },\n fieldTextContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n iconAndField: {\n display: 'flex',\n },\n field: {\n ...typography(theme, 'body1'),\n lineHeight: theme.spacing(3),\n paddingLeft: theme.spacing(1),\n },\n warning: {\n ...typography(theme, 'caption'),\n color: theme.palette.grey[700],\n },\n imageContainer: {\n width: '40%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n marginLeft: theme.spacing(6),\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n}));\n\ninterface Props {\n info: Array<{ displayName: string; status: 'success' | 'warning' }>;\n onContinue: () => void;\n}\n\nfunction LinkedInResults({ info, onContinue }: Props) {\n const { classes } = useStyles();\n\n return (\n <>\n \n \n \n
\n
\n \n Back\n \n
\n
\n
\n
Great we added your LinkedIn info
\n
\n You have the opportunity to make changes and add additional info in the next steps.\n
\n \n {info.map(item => (\n
\n
\n {item.status === 'success' ? : }\n
\n
\n {item.displayName}\n {item.status === 'warning' && (\n
Need additional info
\n )}\n
\n
\n
\n
\n ))}\n
\n
\n\n \n
\n
\n \n );\n}\n\nexport default LinkedInResults;\n","import React, { useContext } from 'react';\nimport * as Sift from '@sift/types';\nimport { isTruthy } from 'helpers/typings';\nimport pluralize from 'pluralize';\nimport _get from 'lodash/get';\nimport getValidation from '@sift/runner/getValidation';\nimport useRouter from '@sift/resift/useRouter';\nimport RunnerContext from '@sift/runner/Context';\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\nimport useLinkedIn from 'pages/Onboarding/helpers/useLinkedIn';\nimport useValidSlides from 'pages/Onboarding/helpers/useValidSlides';\nimport fieldMap from 'pages/Onboarding/helpers/fieldMap';\n\nimport { Redirect } from 'react-router';\nimport LinkedInResults from './LinkedInResults';\n\nfunction Container() {\n const contextValue = useContext(RunnerContext);\n const { history } = useRouter();\n\n if (!contextValue) {\n throw new Error('[LinkedInResults Container] could not find runner context');\n }\n const { nextSlideLink } = useSlideInfo();\n\n const { config } = contextValue;\n\n const linkedInData = useLinkedIn();\n\n const slides = useValidSlides();\n\n const info = slides\n .map((slide: any) => {\n const fieldKey = fieldMap[slide.path.substring(1)];\n if (!fieldKey) {\n return null;\n }\n\n const field = _get(config, ['fields', fieldKey]) as Sift.Field | undefined;\n if (!field) {\n return null;\n }\n\n const value = linkedInData[fieldKey];\n if (!value) {\n return null;\n }\n\n const validation = getValidation(value, field, config);\n\n if (Array.isArray(value) && value.length <= 0) {\n return null;\n }\n\n const displayName = Array.isArray(value)\n ? `${value.length.toLocaleString()} ${pluralize(field.displayName, value.length)}`\n : field.displayName;\n\n const status = validation.isValid ? 'success' : 'warning';\n\n return { displayName, status: status as typeof status };\n })\n .filter(isTruthy);\n\n const handleContinue = () => {\n if (!nextSlideLink) {\n return;\n }\n\n history.push(nextSlideLink);\n };\n\n // the data should be normal at this state\n // otherwise take them to the beginning of the onboarding flow\n if (!linkedInData) {\n if (nextSlideLink) {\n return ;\n }\n return ;\n }\n\n return ;\n}\n\nexport default Container;\n","import useValidSlides from './useValidSlides';\nimport useSlideInfo from './useSlideInfo';\n\nexport default function useIsLastSlide() {\n const validSlides = useValidSlides();\n\n const { currentSlide: currentSlidePath } = useSlideInfo();\n\n const currentSlide = validSlides.find((slide: any) => slide.path === currentSlidePath);\n\n if (!currentSlide) {\n return false;\n }\n\n const currentSlideIndex = validSlides.findIndex((slide: any) => slide === currentSlide);\n\n const nextSlide = validSlides[currentSlideIndex + 1];\n\n if (!nextSlide) {\n return true;\n }\n\n return nextSlide.path === '/done';\n}\n","import { defineFetch } from 'resift';\nimport _get from 'lodash/get';\nimport _merge from 'lodash/merge';\nimport removeKeys from 'helpers/removeKeys';\n\nexport default defineFetch({\n displayName: 'update completed slides',\n share: { namespace: 'settings' },\n make: () => ({\n request: (newSlide: string, linkedInFieldToRemove = '') => async ({ http, getState }) => {\n const state = getState();\n const personId = _get(state, ['authentication', 'person', 'id']) as string | undefined;\n if (!personId) {\n throw new Error('[updateCompletedSlidesFetch] could not find personId');\n }\n\n const settings = await http({\n method: 'GET',\n route: `/people/${personId}/settings`,\n });\n const userOnboarding = _get(settings, ['directory', 'userOnboarding']);\n\n const completedSlides = _get(\n settings,\n ['directory', 'userOnboarding', 'completedSlides'],\n [],\n ) as string[];\n\n const linkedInData = _get(settings, ['directory', 'userOnboarding', 'linkedInData'], {});\n const settingsWithCompletedSlides = _merge(\n {},\n {\n directory: {\n userOnboarding: removeKeys(userOnboarding, ['completedSlides', 'linkedInData']),\n },\n },\n {\n directory: {\n userOnboarding: {\n completedSlides: [...completedSlides.filter(slide => slide !== newSlide), newSlide],\n linkedInData: removeKeys(linkedInData, [linkedInFieldToRemove]),\n },\n },\n },\n );\n\n return http({\n method: 'PUT',\n route: `/people/${personId}/settings`,\n data: settingsWithCompletedSlides,\n });\n },\n }),\n});\n","import React, { useState } from 'react';\nimport typography from 'helpers/typography';\n\n// Components\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport Avatar from '@mui/material/Avatar';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\n// Helpers\nimport classNames from 'classnames';\nimport useAnalytics from 'helpers/useAnalytics';\nimport analyticsOptions from 'helpers/analyticsOptions';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n boxShadow: 'none',\n '&::before': {\n display: 'none',\n },\n },\n name: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n paddingLeft: theme.spacing(4),\n\n '&:hover': {\n color: theme.palette.primary.main,\n },\n },\n content: {\n display: 'flex',\n alignItems: 'center',\n },\n expanded: {\n color: theme.palette.primary.main,\n },\n panelDetails: {\n '& > *': {\n maxWidth: '100%',\n },\n },\n // don't delete\n AccordionSummary: {},\n}));\n\ninterface Props {\n person: {\n pictureUrl: string;\n displayName: string;\n content: React.ReactNode;\n };\n autoOpen: boolean;\n}\n\nfunction AccordionItem({ person, autoOpen }: Props) {\n const { classes } = useStyles();\n const analytics = useAnalytics();\n const [expanded, setExpanded] = useState(autoOpen);\n\n function handleClick(e: any, expanded: boolean) {\n if (expanded) {\n analytics.track(analyticsOptions.action.CLICKED, {\n feature: analyticsOptions.feature.USER_ONBOARDING,\n action: 'Example user data viewed',\n });\n }\n\n setExpanded(expanded);\n }\n\n return (\n \n }\n classes={{\n content: classes.content,\n }}\n >\n \n \n {person.displayName}\n \n \n {person.content}\n \n );\n}\n\nexport default AccordionItem;\n","import React from 'react';\nimport typography from 'helpers/typography';\nimport _get from 'lodash/get';\n\n// Components\nimport Loader from 'components/skipper/Loader';\nimport AccordionItem from 'pages/Onboarding/components/AccordionItem';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n '& > *:not(:last-child) .expansion-panel-summary': {\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n },\n exampleCopy: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n marginBottom: theme.spacing(2),\n },\n}));\n\ninterface Props {\n className?: string;\n status: number;\n term: string;\n people: Array<{\n pictureUrl: string;\n displayName: string;\n content: React.ReactNode;\n }>;\n}\n\nfunction AttributeAccordion({ className, status, people, term }: Props) {\n const { classes } = useStyles();\n\n return (\n \n
See examples from your {term}
\n {people.map((person, index) => (\n \n ))}\n
\n );\n}\n\nexport default AttributeAccordion;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'example people',\n make: (fieldKey: string) => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: '/sample-people',\n query: { requiredFieldKeys: fieldKey },\n }),\n }),\n});\n","import React, { useEffect } from 'react';\nimport { useDispatch, useData, useStatus } from 'resift';\n\n// Hooks\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\nimport useTerminology from 'helpers/useTerminology';\n\n// Helpers\nimport _get from 'lodash/get';\nimport _noop from 'lodash/noop';\n\n// Components\nimport Runner from '@sift/runner/Runner';\nimport AttributeAccordion from './AttributeAccordion';\n\n// Fetch\nimport makeExamplePeopleFetch from 'pages/Onboarding/fetches/examplePeopleFetch';\n\ninterface Props {\n className?: string;\n}\n\nfunction Container(props: Props) {\n const { fieldKey, field } = useSlideInfo();\n const dispatch = useDispatch();\n const terminology = useTerminology();\n\n if (!fieldKey) {\n throw new Error('[AttributeAccordion] fieldKey not found');\n }\n\n const examplePeopleFetch = makeExamplePeopleFetch(fieldKey);\n\n useEffect(() => {\n dispatch(examplePeopleFetch());\n }, [dispatch, examplePeopleFetch]);\n\n const response = useData(examplePeopleFetch);\n const status = useStatus(examplePeopleFetch);\n\n const results = _get(response, ['results'], []);\n const people = results.map((result: any) => ({\n displayName: result.person.displayName,\n pictureUrl: result.person.pictureUrl,\n content: ,\n }));\n const term = terminology.pluralize(results.length);\n\n return ;\n}\n\nexport default Container;\n","import React from 'react';\nimport typography from 'helpers/typography';\nimport { DivProps } from 'helpers/typings';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: theme.spacing(2),\n },\n topContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n displayName: {\n ...typography(theme, 'h4'),\n },\n description: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightSemiBold,\n },\n badge: {\n alignSelf: 'center',\n },\n}));\n\ninterface Props extends DivProps {\n displayName: React.ReactNode;\n description: React.ReactNode;\n fromLinkedIn: boolean;\n}\n\nfunction Header({ className, displayName, description, fromLinkedIn, ...restOfProps }: Props) {\n const { classes } = useStyles();\n\n return (\n
\n
\n
{displayName}
\n {fromLinkedIn && (\n \n )}\n
\n
{description}
\n
\n );\n}\n\nexport default Header;\n","import React from 'react';\n\n// Components\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n dialogContent: {\n marginBottom: theme.spacing(2),\n },\n}));\n\ninterface Props {\n open: boolean;\n onSkip: () => void;\n onClose: () => void;\n}\n\nfunction SkipDialog({ open, onClose, onSkip }: Props) {\n const { classes } = useStyles();\n\n return (\n \n Are you sure you want to skip?\n \n \n Your information has not been saved to your profile yet.\n \n \n \n \n \n \n \n );\n}\n\nexport default SkipDialog;\n","import React, { useState } from 'react';\nimport { isLoading } from 'resift';\n\n// Components\nimport Button from '@mui/material/Button';\nimport AppBarPortal from 'pages/Onboarding/components/AppBarPortal';\nimport AttributeAccordion from 'pages/Onboarding/components/AttributeAccordion';\nimport ContrastButton from 'pages/Onboarding/components/ContrastButton';\nimport Header from 'pages/Onboarding/components/Header';\nimport SkipDialog from 'pages/Onboarding/components/SkipDialog';\nimport { Prompt } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n inputContainer: {\n marginBottom: theme.spacing(4),\n },\n skipButton: {\n marginRight: theme.spacing(2),\n },\n buttonDisabled: {\n color: `${theme.palette.grey['300']} !important`,\n backgroundColor: `${theme.palette.grey['600']} !important`,\n },\n}));\n\ninterface Props {\n displayName: string;\n description: string;\n input: React.ReactNode;\n isValid: boolean;\n fromLinkedIn: boolean;\n isLastSlide: boolean;\n status: number;\n onContinue: () => void;\n onSkip: () => void;\n showSkipConfirmation: boolean;\n showNavigationConfirmation: boolean;\n}\n\nfunction FieldTemplate({\n onContinue,\n isLastSlide,\n isValid,\n status,\n input,\n displayName,\n description,\n onSkip,\n fromLinkedIn,\n showSkipConfirmation,\n showNavigationConfirmation,\n}: Props) {\n const { classes } = useStyles();\n const [skipDialogOpen, setSkipDialogOpen] = useState(false);\n\n const handleSkip = () => {\n if (showSkipConfirmation) {\n setSkipDialogOpen(true);\n } else {\n onSkip();\n }\n };\n\n const handleSkipDialogClose = () => {\n setSkipDialogOpen(false);\n };\n\n return (\n <>\n \n \n Skip\n \n \n {isLastSlide ? 'Finish' : 'Continue'}\n \n \n \n \n\n
\n
\n
{input}
\n \n
\n \n );\n}\n\nexport default FieldTemplate;\n","import React, { useContext, useState, useMemo } from 'react';\nimport { useStatus, useDispatch } from 'resift';\nimport useRouter from '@sift/resift/useRouter';\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\nimport useLinkedIn from 'pages/Onboarding/helpers/useLinkedIn';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport _isEmpty from 'lodash/isEmpty';\nimport useValidation from '@sift/runner/useValidation';\nimport RunnerContext from '@sift/runner/Context';\nimport useIsLastSlide from 'pages/Onboarding/helpers/useIsLastSlide';\nimport pluralize from 'pluralize';\nimport useWrap from 'helpers/useWrap';\n\nimport makeUpdateProfileFetch from 'pages/Profile/fetches/updateProfileFetch';\nimport makeUpdateCompletedSlidesFetch from 'pages/Onboarding/fetches/updateCompletedSlidesFetch';\nimport updateOnboardingStateFetch from 'pages/Onboarding/fetches/updateOnboardingStateFetch';\n\n// Components\nimport { Redirect } from 'react-router';\nimport Runner from '@sift/runner/Runner';\nimport FieldTemplate from './FieldTemplate';\n\nfunction FieldTemplateContainer() {\n const { history } = useRouter();\n const dispatch = useDispatch();\n const linkedIn = useLinkedIn();\n const contextValue = useContext(RunnerContext);\n const { field, nextSlideLink, currentSlide } = useSlideInfo();\n const [okayToNavigate, setOkayToNavigate] = useState(false);\n\n if (!nextSlideLink) {\n throw new Error('[FieldTemplate Container] expected `nextSlideLink` to be truthy');\n }\n if (!contextValue) {\n throw new Error('[FieldTemplate Container] could not find runner context');\n }\n if (!currentSlide) {\n throw new Error('[FieldTemplate Container] expected `currentSlide` to be truthy');\n }\n\n const { root } = contextValue;\n const personId = _get(root, ['id']) as string;\n const objectKey = _get(field, ['objectKey'], '');\n const displayName = _get(field, ['displayName'], '');\n const linkedInValue = _get(linkedIn, [objectKey]);\n\n const initialValue = useMemo(() => {\n return !_isEmpty(linkedInValue) ? linkedInValue : _get(root, [objectKey]);\n }, [linkedInValue, root, objectKey]);\n\n const updateProfileFetch = makeUpdateProfileFetch(personId);\n const updateCompletedSlidesFetch = makeUpdateCompletedSlidesFetch();\n\n const [editValue, setEditValue] = useState(initialValue);\n const status = useStatus(updateProfileFetch);\n\n const { isValid: isValidFromValidationLibrary } = useValidation(editValue, field);\n const isValid = isValidFromValidationLibrary && !_isEmpty(editValue);\n\n const isLastSlide = useIsLastSlide();\n const getHistory = useWrap(history);\n\n const handleContinue = async () => {\n setOkayToNavigate(true);\n await dispatch(updateProfileFetch({ [objectKey]: editValue }));\n await dispatch(updateCompletedSlidesFetch(currentSlide, objectKey));\n if (isLastSlide) {\n await dispatch(updateOnboardingStateFetch('completed'));\n }\n const history = getHistory();\n history.push(nextSlideLink);\n };\n\n const handleSkip = async () => {\n await dispatch(updateCompletedSlidesFetch(currentSlide));\n if (isLastSlide) {\n await dispatch(updateOnboardingStateFetch('completed'));\n }\n setOkayToNavigate(true);\n history.push(nextSlideLink);\n };\n\n const fromLinkedIn = !_isEmpty(linkedInValue);\n const showNavigationConfirmation = !_isEqual(editValue, initialValue);\n const showSkipConfirmation = fromLinkedIn || showNavigationConfirmation;\n\n const fieldDescription = _get(field, ['display', 'description'], '');\n const description = useMemo(() => {\n if (objectKey === 'skills' && fromLinkedIn) {\n const skillCount = _get(linkedInValue, ['length']);\n\n if (typeof skillCount !== 'number') {\n return (\n <>\n {fieldDescription}\n
\n We retrieved your top skills from LinkedIn.\n \n );\n }\n\n return (\n <>\n {fieldDescription}\n
\n We retrieved your top {skillCount} {pluralize('skills')} from LinkedIn.\n \n );\n }\n\n return fieldDescription;\n }, [fieldDescription, objectKey, fromLinkedIn, linkedInValue]);\n\n if (!field) {\n return ;\n }\n\n return (\n \n }\n isValid={isValid}\n status={status}\n onContinue={handleContinue}\n onSkip={handleSkip}\n showSkipConfirmation={showSkipConfirmation}\n showNavigationConfirmation={okayToNavigate ? false : showNavigationConfirmation}\n />\n );\n}\n\nexport default FieldTemplateContainer;\n","import React, { useState } from 'react';\nimport { isLoading } from 'resift';\n\n// Components\nimport Button from '@mui/material/Button';\nimport AppBarPortal from 'pages/Onboarding/components/AppBarPortal';\nimport Header from 'pages/Onboarding/components/Header';\nimport SkipDialog from 'pages/Onboarding/components/SkipDialog';\nimport ContrastButton from 'pages/Onboarding/components/ContrastButton';\nimport { Prompt } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n skipButton: {\n marginRight: theme.spacing(2),\n },\n content: {},\n buttonDisabled: {\n color: `${theme.palette.grey['300']} !important`,\n backgroundColor: `${theme.palette.grey['600']} !important`,\n },\n}));\n\ninterface Props {\n displayName: string;\n description: string;\n fromLinkedIn: boolean;\n content: React.ReactNode;\n status: number;\n onContinue: () => void;\n onSkip: () => void;\n isValid: boolean;\n showSkipConfirmation: boolean;\n isLastSlide: boolean;\n showNavigationConfirmation: boolean;\n}\n\nfunction ObjectCollectionTemplate({\n isValid,\n status,\n content,\n onContinue,\n displayName,\n description,\n onSkip,\n fromLinkedIn,\n showSkipConfirmation,\n isLastSlide,\n showNavigationConfirmation,\n}: Props) {\n const { classes } = useStyles();\n const [skipDialogOpen, setSkipDialogOpen] = useState(false);\n\n const handleSkip = () => {\n if (showSkipConfirmation) {\n setSkipDialogOpen(true);\n } else {\n onSkip();\n }\n };\n\n const handleSkipDialogClose = () => {\n setSkipDialogOpen(false);\n };\n\n return (\n <>\n \n \n Skip\n \n \n {isLastSlide ? 'Finish' : 'Continue'}\n \n \n \n \n
\n
\n
{content}
\n
\n \n );\n}\n\nexport default ObjectCollectionTemplate;\n","import React, { useContext, useState, useEffect } from 'react';\nimport { useStatus, useDispatch } from 'resift';\nimport useRouter from '@sift/resift/useRouter';\nimport useValidation from '@sift/runner/useValidation';\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\nimport useLinkedIn from 'pages/Onboarding/helpers/useLinkedIn';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport _isEmpty from 'lodash/isEmpty';\nimport RunnerContext from '@sift/runner/Context';\nimport useIsLastSlide from 'pages/Onboarding/helpers/useIsLastSlide';\nimport useWrap from 'helpers/useWrap';\n\nimport makeUpdateProfileFetch from 'pages/Profile/fetches/updateProfileFetch';\nimport makeUpdateCompletedSlidesFetch from 'pages/Onboarding/fetches/updateCompletedSlidesFetch';\nimport updateOnboardingStateFetch from 'pages/Onboarding/fetches/updateOnboardingStateFetch';\n\n// Components\nimport { Redirect } from 'react-router';\nimport Runner from '@sift/runner/Runner';\n\nimport ObjectCollectionTemplate from './ObjectCollectionTemplate';\n\nfunction Container() {\n const { history } = useRouter();\n const getHistory = useWrap(history);\n const dispatch = useDispatch();\n const linkedIn = useLinkedIn();\n const contextValue = useContext(RunnerContext);\n const { field, nextSlideLink, currentSlide } = useSlideInfo();\n const [okayToNavigate, setOkayToNavigate] = useState(false);\n\n if (!nextSlideLink) {\n throw new Error('[FieldTemplate Container] expected `nextSlideLink` to be truthy');\n }\n if (!contextValue) {\n throw new Error('[FieldTemplate Container] could not find runner context');\n }\n\n if (!currentSlide) {\n throw new Error('[FieldTemplate Container] expected `currentSlide` to be truthy');\n }\n\n const { root } = contextValue;\n const personId = _get(root, ['id']) as string;\n const objectKey = _get(field, ['objectKey'], '');\n const displayName = _get(field, ['displayName'], '');\n const linkedInValue = objectKey && _get(linkedIn, [objectKey]);\n\n const updateProfileFetch = makeUpdateProfileFetch(personId);\n const updateCompletedSlidesFetch = makeUpdateCompletedSlidesFetch();\n\n const initialValue = !_isEmpty(linkedInValue) ? linkedInValue : _get(root, [objectKey]);\n\n const [editValue, setEditValue] = useState(initialValue);\n const status = useStatus(updateProfileFetch);\n\n useEffect(() => {\n setEditValue(initialValue);\n }, [initialValue]);\n\n const description = _get(field, ['display', 'description'], '');\n const { isValid: isValidFromValidationLibrary } = useValidation(editValue, field);\n const isValid = isValidFromValidationLibrary && !_isEmpty(editValue);\n\n const isLastSlide = useIsLastSlide();\n\n const handleContinue = async () => {\n setOkayToNavigate(true);\n await dispatch(updateProfileFetch({ [objectKey]: editValue }));\n await dispatch(updateCompletedSlidesFetch(currentSlide, objectKey));\n if (isLastSlide) {\n await dispatch(updateOnboardingStateFetch('completed'));\n }\n const history = getHistory();\n history.push(nextSlideLink);\n };\n\n const handleSkip = async () => {\n await dispatch(updateCompletedSlidesFetch(currentSlide));\n if (isLastSlide) {\n await dispatch(updateOnboardingStateFetch('completed'));\n }\n const history = getHistory();\n setOkayToNavigate(true);\n history.push(nextSlideLink);\n };\n\n const fromLinkedIn = !_isEmpty(linkedInValue);\n const showNavigationConfirmation = !_isEqual(editValue, initialValue);\n const showSkipConfirmation = fromLinkedIn || showNavigationConfirmation;\n\n if (!field) {\n return ;\n }\n\n return (\n }\n isLastSlide={isLastSlide}\n showNavigationConfirmation={okayToNavigate ? false : showNavigationConfirmation}\n />\n );\n}\n\nexport default Container;\n","import React, { useState } from 'react';\nimport typography from 'helpers/typography';\nimport { NORMAL, isLoading } from 'resift';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport bowser from 'bowser';\nimport getBase64 from 'helpers/getBase64';\nimport { useDropzone } from 'react-dropzone';\n\n// Components\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Loader from 'components/skipper/Loader';\nimport AvatarCropper from 'components/profile/AvatarCropper';\nimport AppBarPortal from 'pages/Onboarding/components/AppBarPortal';\nimport SkipDialog from 'pages/Onboarding/components/SkipDialog';\nimport Header from 'pages/Onboarding/components/Header';\nimport ContrastButton from 'pages/Onboarding/components/ContrastButton';\nimport { Prompt } from 'react-router-dom';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport { transparentize } from 'polished';\n\nfunction replacePlaceholderPhoto(pictureUrl: string, theme: Theme) {\n if (!pictureUrl) return undefined;\n\n if (pictureUrl.includes('placeholders')) {\n return theme.pictureUrl || createPictureUrlFromColor(theme.palette.primary.dark);\n }\n\n return pictureUrl;\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n loader: {\n position: 'relative',\n },\n columns: {\n flex: '1 1 auto',\n display: 'flex',\n width: 640,\n maxWidth: '100%',\n '& > *:not(:last-child)': {\n paddingRight: theme.spacing(2),\n },\n },\n column: {\n width: '50%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n officialPhoto: {\n flex: '0 0 auto',\n width: 196,\n height: 196,\n borderRadius: 99999,\n overflow: 'hidden',\n boxShadow: theme.shadows[3],\n },\n label: {\n ...typography(theme, 'body2'),\n marginTop: theme.spacing(2),\n },\n customPictureContainer: {\n flex: '0 0 auto',\n width: 196,\n height: 196,\n position: 'relative',\n borderRadius: 99999,\n overflow: 'hidden',\n boxShadow: theme.shadows[1],\n ...(bowser.safari\n ? {\n WebkitMaskImage: '-webkit-radial-gradient(white, black)',\n overflow: 'hidden',\n }\n : undefined),\n },\n customPictureContainerEmpty: {\n backgroundColor: transparentize(0.3, 'black'),\n color: transparentize(0.4, theme.palette.common.white),\n '&:hover': {\n color: transparentize(0.2, theme.palette.common.white),\n },\n '&:active': {\n color: theme.palette.common.white,\n },\n },\n editingPhotosOverlayCenter: {\n display: 'flex',\n flexDirection: 'column',\n textAlign: 'center',\n alignItems: 'center',\n maxWidth: 100,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n changeYourProfilePhoto: {\n ...typography(theme, 'body2'),\n color: 'inherit',\n fontWeight: theme.typography.fontWeightSemiBold,\n },\n customPicture: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n ...(bowser.safari\n ? {\n WebkitMaskImage: '-webkit-radial-gradient(white, black)',\n overflow: 'hidden',\n }\n : undefined),\n },\n controls: {\n display: 'flex',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(1),\n },\n },\n fileInputButton: {\n ...typography(theme, 'h3'),\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n opacity: 0,\n cursor: 'pointer',\n width: '100%',\n height: '100%',\n zIndex: theme.zIndex.surface,\n overflow: 'hidden',\n paddingTop: 48,\n },\n skipButton: {\n marginRight: theme.spacing(2),\n },\n buttonDisabled: {\n color: `${theme.palette.grey['300']} !important`,\n backgroundColor: `${theme.palette.grey['600']} !important`,\n },\n}));\n\ninterface Props {\n clientDisplayName: string;\n officialPictureUrl: string;\n customPictureUrl: string | undefined;\n /**\n * when the user presses the continue button, this event will fire\n *\n * the container will do the fetch\n */\n onContinue: (dataUri: string) => void;\n onSkip: () => void;\n status: number;\n}\n\nfunction PhotoUploader({\n onContinue,\n clientDisplayName,\n officialPictureUrl,\n customPictureUrl,\n status,\n onSkip,\n}: Props) {\n const { classes, theme } = useStyles();\n const initValue = customPictureUrl || '';\n const [editValueDataUri, setEditValueDataUri] = useState(initValue);\n const [skipDialogOpen, setSkipDialogOpen] = useState(false);\n const [cropping, setCropping] = useState(false);\n const [areYouSureOpen, setAreYouSureOpen] = useState(false);\n const [showPrompt, setShowPrompt] = useState(true);\n\n const handleDeleteClick = () => {\n setAreYouSureOpen(true);\n };\n\n const handleCancelAreYouSure = () => {\n setAreYouSureOpen(false);\n };\n\n const handleDeleteConfirm = () => {\n setEditValueDataUri('');\n setAreYouSureOpen(false);\n };\n\n const handleImage = (e: any) => {\n const file = e.target.files[0];\n\n if (!file) {\n return false;\n }\n\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n const { result } = reader;\n if (!result) {\n return;\n }\n setEditValueDataUri(result as string);\n setCropping(true);\n };\n };\n const handleDrop = async (acceptedFiles: File[]) => {\n const acceptedFile = acceptedFiles[0];\n if (!acceptedFile) {\n return;\n }\n\n const base64 = await getBase64(acceptedFile);\n setEditValueDataUri(base64);\n setCropping(true);\n };\n\n const { getInputProps, getRootProps, isDragActive } = useDropzone({\n onDrop: handleDrop,\n accept: 'image/jpeg, image/png',\n preventDropOnDocument: true,\n });\n\n const showSkipConfirmation = initValue !== editValueDataUri;\n\n const handleCropperClose = () => {\n setCropping(false);\n };\n\n const handleCrop = (croppedDataUri: string) => {\n setEditValueDataUri(croppedDataUri);\n setCropping(false);\n };\n\n const handleContinue = () => {\n onContinue(editValueDataUri);\n setShowPrompt(false);\n };\n\n const handleSkip = () => {\n if (showSkipConfirmation) {\n setSkipDialogOpen(true);\n } else {\n onSkip();\n }\n };\n\n const handleSkipDialogClose = () => {\n setSkipDialogOpen(false);\n };\n\n return (\n <>\n \n \n Skip\n \n \n Continue\n \n \n\n \n \n\n \n\n \n Are you sure you want to delete your profile photo?\n \n \n \n \n \n\n
\n \n {clientDisplayName} encourages you to add a personalized photo. Do you want to do that\n now?\n \n }\n fromLinkedIn={false}\n />\n \n
\n
\n \n
Official photo
\n
\n
\n \n {!editValueDataUri && (\n
\n \n
\n {isDragActive ? 'Incoming!' : 'Add profile photo.'}\n
\n
\n )}\n \n \n
\n
Custom photo
\n {!!editValueDataUri && (\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n )}\n
\n
\n \n \n \n );\n}\n\nexport default PhotoUploader;\n","import React, { useContext } from 'react';\nimport { useDispatch, useStatus } from 'resift';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport { useTheme } from '@mui/material/styles';\nimport RunnerContext from '@sift/runner/Context';\nimport useRouter from '@sift/resift/useRouter';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport _get from 'lodash/get';\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\n\nimport makeUploadPictureFetch from 'pages/Profile/fetches/uploadPictureFetch';\nimport makeUpdateCompletedSlidesFetch from 'pages/Onboarding/fetches/updateCompletedSlidesFetch';\n\nimport { Redirect } from 'react-router';\nimport PhotoUploader from './PhotoUploader';\n\nfunction Container() {\n const theme = useTheme();\n const { history } = useRouter();\n const dispatch = useDispatch();\n const slideInfo = useSlideInfo();\n const { nextSlideLink, currentSlide } = slideInfo;\n\n if (!nextSlideLink) {\n throw new Error('[PhotoUploader Container] expected nextSlideLink to be truthy');\n }\n if (!currentSlide) {\n throw new Error('[PhotoUploader Container] expected currentSlide to be truthy');\n }\n\n const contextValue = useContext(RunnerContext);\n\n if (!contextValue) {\n throw new Error('[PhotoUploader Container] could not find runner context');\n }\n\n const { root } = contextValue;\n\n const personId = _get(root, ['id']) as string | undefined;\n if (!personId) {\n throw new Error('[PhotoUploader Container] could not find person id');\n }\n\n const uploadPictureFetch = makeUploadPictureFetch(personId);\n const updateCompletedSlidesFetch = makeUpdateCompletedSlidesFetch();\n\n const status = useStatus(uploadPictureFetch);\n\n const handleContinue = async (dataUri: string) => {\n if (dataUri.startsWith('data')) {\n await dispatch(uploadPictureFetch(dataUri));\n }\n await dispatch(updateCompletedSlidesFetch(currentSlide));\n history.push(nextSlideLink);\n };\n\n const handleSkip = async () => {\n await dispatch(updateCompletedSlidesFetch(currentSlide));\n history.push(nextSlideLink);\n };\n\n const clientDisplayName = usePassiveRedux(\n state => _get(state, ['client', 'displayName']) as string,\n );\n\n const customPictureUrl = _get(root, ['customPictureUrl']) as string | undefined;\n const officialPictureUrl = _get(\n root,\n ['officialPictureUrl'],\n theme.pictureUrl || createPictureUrlFromColor(theme.palette.primary.dark),\n ) as string;\n\n const socialPhotosEnabled = _get(root, ['_directorySettings', 'socialPhotos', 'enabled'], true);\n\n if (!socialPhotosEnabled) {\n return ;\n }\n\n return (\n \n );\n}\n\nexport default Container;\n","import React, { useState } from 'react';\nimport delay from 'delay';\n\n// Components\nimport PersonAutocomplete from 'components/skipper/PersonAutocomplete';\nimport PersonList from 'components/skipper/PersonList';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst danGilbert = '7LGLly9h5O5C5PHlqWO20b';\nconst carolDanvers = '4CLmP5TLcGWQzyV1eWslbk';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n autocomplete: {\n paddingTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n },\n personList: {\n flex: '1 1 auto',\n height: 400,\n },\n}));\n\ninterface Person {\n id: string;\n displayName: string;\n title: string;\n pictureUrl: string;\n}\n\ninterface Props {\n className?: string;\n people: Person[];\n currentPersonId: string;\n onChange: (people: Person[]) => void;\n label: string;\n inputRef?: React.RefObject;\n}\n\nfunction PeopleListEditor({\n className,\n people,\n currentPersonId,\n onChange,\n label,\n inputRef,\n}: Props) {\n const { classes } = useStyles();\n const [personValue, setPersonValue] = useState('');\n const [errorHelperText, setErrorHelperText] = useState('');\n\n const handleAutocompleteChange = (_: any, { newValue }: { newValue: string }) => {\n setPersonValue(newValue);\n };\n const handleSelectPerson = async (person: Person) => {\n if (person.id === currentPersonId) {\n setErrorHelperText('You cannot add yourself to this list.');\n // TODO: use durations from material-ui theme when we refactor to use the hooks\n // version of getting the theme\n await delay(3000);\n setErrorHelperText('');\n return;\n }\n\n if (person.id === danGilbert || person.id === carolDanvers) {\n setErrorHelperText('You cannot add that person to this list.');\n // same comment as above\n await delay(3000);\n setErrorHelperText('');\n return;\n }\n\n onChange([...people.filter(p => p.id !== person.id), person]);\n setPersonValue('');\n };\n\n return (\n
\n \n \n
\n );\n}\n\nexport default PeopleListEditor;\n","import React, { useState, useEffect, useRef } from 'react';\nimport typography from 'helpers/typography';\nimport { isLoading } from 'resift';\nimport delay from 'delay';\nimport indefinite from 'indefinite';\nimport pluralize from 'pluralize';\nimport _isEqual from 'lodash/isEqual';\n\n// Components\nimport Button from '@mui/material/Button';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport Radio from '@mui/material/Radio';\nimport AppBarPortal from 'pages/Onboarding/components/AppBarPortal';\nimport Header from 'pages/Onboarding/components/Header';\nimport PeopleListEditor from './PeopleListEditor';\nimport { Prompt } from 'react-router-dom';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nfunction capitalize(str: string) {\n return str.substring(0, 1) + str.substring(1);\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n formControl: {\n marginBottom: theme.spacing(2),\n },\n radioGroup: {\n display: 'flex',\n flexDirection: 'row',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(6),\n },\n },\n label: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightSemiBold,\n marginBottom: theme.spacing(1),\n },\n peopleEditor: {\n width: 550,\n transition: theme.transitions.create('all', { duration: theme.transitions.duration.complex }),\n maxHeight: 1000,\n },\n peopleEditorHidden: {\n opacity: 0,\n maxHeight: 0,\n pointerEvents: 'none',\n },\n spacer: {\n height: 32,\n },\n buttonDisabled: {\n color: `${theme.palette.grey['300']} !important`,\n backgroundColor: `${theme.palette.grey['600']} !important`,\n },\n}));\n\ninterface Person {\n id: string;\n displayName: string;\n title: string;\n pictureUrl: string;\n}\n\ninterface Props {\n assistants: Person[];\n assistantOf: Person[];\n onContinue: (newData: { assistants: Person[]; assistantOf: Person[] }) => void;\n status: number;\n currentPersonId: string;\n displayName: string;\n isLastSlide: boolean;\n}\n\nfunction Assistants({\n onContinue,\n status,\n assistants: assistantsFromProps,\n assistantOf: assistantOfFromProps,\n currentPersonId,\n displayName,\n isLastSlide,\n}: Props) {\n const { classes } = useStyles();\n const [assistants, setAssistants] = useState(assistantsFromProps);\n const [assistantOf, setAssistantOf] = useState(assistantOfFromProps);\n\n const [hasAssistants, setHasAssistants] = useState(!!assistants.length);\n const [hasAssistantOf, setHasAssistantOf] = useState(!!assistantOf.length);\n\n const [showPrompt, setShowPrompt] = useState(true);\n\n const assistantsInputRef = useRef(null);\n const assistantOfInputRef = useRef(null);\n\n const assistantsUpdated =\n !_isEqual(assistants, assistantsFromProps) || !_isEqual(assistantOf, assistantOfFromProps);\n\n const handleContinue = () => {\n setShowPrompt(false);\n onContinue({\n assistants,\n assistantOf,\n });\n };\n\n const handleHasAssistantsChange = () => {\n setHasAssistants(!hasAssistants);\n };\n\n const handleHasAssistantOfChange = () => {\n setHasAssistantOf(!hasAssistantOf);\n };\n\n const handleAssistantsChange = (assistants: Person[]) => {\n setAssistants(assistants);\n };\n\n const handleAssistantOfChange = (assistantOf: Person[]) => {\n setAssistantOf(assistantOf);\n };\n\n useEffect(() => {\n if (hasAssistants) {\n delay(300).then(() => {\n // focus the input element when they select \"yes'\"\n const assistantsInputEl = assistantsInputRef.current;\n if (!assistantsInputEl) {\n return;\n }\n assistantsInputEl.focus();\n });\n } else {\n // clear the state when they select \"no\"\n delay(500).then(() => {\n setAssistants([]);\n });\n }\n }, [hasAssistants]);\n\n useEffect(() => {\n if (hasAssistantOf) {\n // focus the input element when they select \"yes'\"\n delay(300).then(() => {\n const assistantOfInputEl = assistantOfInputRef.current;\n if (!assistantOfInputEl) {\n return;\n }\n assistantOfInputEl.focus();\n });\n } else {\n // clear the state when they select \"no\"\n delay(500).then(() => {\n setAssistantOf([]);\n });\n }\n }, [hasAssistantOf]);\n\n return (\n <>\n \n \n {isLastSlide ? 'Finish' : 'Continue'}\n \n \n\n \n
\n \n\n \n \n {/*\n // @ts-ignore */}\n Do you have {pluralize(indefinite(displayName), 1).toLowerCase()}?\n \n \n } label=\"No\" />\n } label=\"Yes\" />\n \n \n \n\n
\n\n \n \n {/*\n // @ts-ignore */}\n Are you {indefinite(pluralize(displayName, 1)).toLowerCase()} to anyone else?\n \n \n } label=\"No\" />\n } label=\"Yes\" />\n \n \n \n
\n \n );\n}\n\nexport default Assistants;\n","import React, { useContext } from 'react';\nimport { useData, useStatus } from 'resift';\nimport { useDispatch } from 'react-redux';\nimport useRouter from '@sift/resift/useRouter';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport RunnerContext from '@sift/runner/Context';\nimport _get from 'lodash/get';\nimport useSlideInfo from 'pages/Onboarding/helpers/useSlideInfo';\nimport useIsLastSlide from 'pages/Onboarding/helpers/useIsLastSlide';\n\nimport makeAssistantsFetch from 'pages/Profile/fetches/assistantsFetch';\nimport makeAssistantOfFetch from 'pages/Profile/fetches/assistantOfFetch';\nimport makeProfileFetch from 'pages/Profile/fetches/profileFetch';\nimport makeUpdateCompletedSlidesFetch from 'pages/Onboarding/fetches/updateCompletedSlidesFetch';\nimport updateOnboardingStateFetch from 'pages/Onboarding/fetches/updateOnboardingStateFetch';\n\nimport { Redirect } from 'react-router';\nimport Assistants from './Assistants';\n\ninterface Person {\n id: string;\n displayName: string;\n title: string;\n pictureUrl: string;\n}\n\nfunction Container() {\n const { history } = useRouter();\n const dispatch = useDispatch();\n const contextValue = useContext(RunnerContext);\n const slideInfo = useSlideInfo();\n const { nextSlideLink, currentSlide } = slideInfo;\n\n if (!nextSlideLink) {\n throw new Error('[Assistants Container] expected nextSlideLink to bt truthy');\n }\n\n if (!contextValue) {\n throw new Error('[Assistants Container] could not find runner context');\n }\n\n if (!currentSlide) {\n throw new Error('[Assistants Container] expected currentSlide to be truthy');\n }\n\n const { root, config } = contextValue;\n const personId = _get(root, ['id']) as string | undefined;\n\n if (!personId) {\n throw new Error('[Assistants Container] did not find person id');\n }\n\n const assistantsFetch = makeAssistantsFetch(personId);\n const assistantOfFetch = makeAssistantOfFetch(personId);\n const profileFetch = makeProfileFetch(personId);\n const updateCompletedSlidesFetch = makeUpdateCompletedSlidesFetch();\n\n const displayName = _get(\n config,\n ['categories', 'user_assistants', 'displayName'],\n 'assistant',\n ) as string;\n\n const isLastSlide = useIsLastSlide();\n\n const handleContinue = async (newData: { assistants: Person[]; assistantOf: Person[] }) => {\n const { assistants, assistantOf } = newData;\n\n await Promise.all([\n dispatch(assistantsFetch(assistants.map(a => a.id))),\n dispatch(assistantOfFetch(assistantOf.map(a => a.id))),\n ]);\n\n await dispatch(updateCompletedSlidesFetch(currentSlide));\n\n if (isLastSlide) {\n await dispatch(updateOnboardingStateFetch('completed'));\n }\n\n if (!nextSlideLink) {\n return;\n }\n\n history.push(nextSlideLink);\n };\n\n const person = useData(profileFetch);\n const status = useStatus(profileFetch);\n\n const assistants = _get(person, ['_entityRelationships', 'assistants'], []).map(\n (n: any) => n.person,\n );\n const assistantOf = _get(person, ['_entityRelationships', 'assistantOf'], []).map(\n (n: any) => n.person,\n );\n\n const assistantsEnabled = usePassiveRedux((state: any) =>\n _get(state, ['client', 'features', 'connect', 'assistants'], false),\n ) as boolean;\n\n if (!assistantsEnabled) {\n return ;\n }\n\n return (\n \n );\n}\n\nexport default Container;\n","import React from 'react';\nimport typography from 'helpers/typography';\n\n// Components\nimport Confetti from 'react-confetti';\nimport Button from '@mui/material/Button';\nimport { Link } from 'react-router-dom';\n\n// Helpers\nimport useWindowSize from 'react-use/lib/useWindowSize';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flex: '1 1 auto',\n padding: theme.spacing(0, 4),\n },\n confetti: {\n top: '60px !important',\n pointerEvents: 'none',\n },\n copyContainer: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n width: 800,\n maxWidth: '100%',\n },\n title: {\n ...typography(theme, 'h4'),\n marginBottom: theme.spacing(6),\n maxWidth: '100%',\n },\n description: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightSemiBold,\n marginBottom: theme.spacing(6),\n maxWidth: '100%',\n },\n}));\n\nfunction ConfettiPage() {\n const { classes } = useStyles();\n const { width, height } = useWindowSize();\n\n return (\n
\n {/*\n // @ts-ignore */}\n \n
\n
Thank you for filling out your profile!
\n
\n To make any changes, you can click on your name in the top right corner to edit and change\n this information at any time.\n
\n \n Go to Sift\n \n
\n
\n );\n}\n\nexport default ConfettiPage;\n","import Start from 'pages/Onboarding/pages/Start';\nimport LinkedInFork from 'pages/Onboarding/pages/LinkedInFork';\nimport LinkedInUploader from 'pages/Onboarding/pages/LinkedInUploader';\nimport LinkedInResults from 'pages/Onboarding/pages/LinkedInResults';\nimport FieldTemplate from 'pages/Onboarding/pages/FieldTemplate';\nimport ObjectCollectionTemplate from 'pages/Onboarding/pages/ObjectCollectionTemplate';\nimport PhotoUploader from 'pages/Onboarding/pages/PhotoUploader';\nimport Assistants from 'pages/Onboarding/pages/Assistants';\nimport ConfettiPage from 'pages/Onboarding/pages/ConfettiPage';\n\ninterface Slide {\n /**\n * this displayName isn't required for some paths. this is used in the nav\n */\n displayName?: string;\n path: string;\n type: 'fullscreen' | 'nav';\n component: React.ComponentType>>;\n}\n\n// NOTE: there are some hardcoded links in the app e.g. the LinkedInFork and the FieldTemplate\n// when updating this slides array, please ensure that those pages are checked\nconst slides: Slide[] = [\n { path: '/start', type: 'fullscreen', component: Start },\n { path: '/linkedin', type: 'fullscreen', component: LinkedInFork },\n { path: '/linkedin-uploader', type: 'fullscreen', component: LinkedInUploader },\n { path: '/linkedin-results', type: 'fullscreen', component: LinkedInResults },\n { path: '/photos', type: 'nav', component: PhotoUploader, displayName: 'Photo Uploader' },\n { path: '/about-me', type: 'nav', component: FieldTemplate },\n { path: '/what-i-do-here', type: 'nav', component: FieldTemplate },\n { path: '/skills', type: 'nav', component: ObjectCollectionTemplate },\n { path: '/education', type: 'nav', component: ObjectCollectionTemplate },\n { path: '/experience', type: 'nav', component: ObjectCollectionTemplate },\n { path: '/languages', type: 'nav', component: ObjectCollectionTemplate },\n { path: '/assistants', type: 'nav', component: Assistants },\n { path: '/interests', type: 'nav', component: FieldTemplate },\n { path: '/done', type: 'fullscreen', component: ConfettiPage },\n];\n\nexport default slides;\n","export default function getSubdomain() {\n if (process.env.REACT_APP_SUBDOMAIN_MOCK) {\n return process.env.REACT_APP_SUBDOMAIN_MOCK;\n }\n\n const hostname = window.location.hostname;\n if (!hostname) {\n return undefined;\n }\n\n const subdomain = (hostname.split('.')[0] || '').trim().toLowerCase();\n if (!subdomain) {\n return undefined;\n }\n\n return subdomain;\n}\n","import React, { useState } from 'react';\nimport urlParse from 'url-parse';\nimport queryString from 'query-string';\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nexport type AvatarSize = 196 | 140 | 120 | 72 | 64 | 56 | 50 | 40 | 32 | 24;\n\ninterface Props {\n src: string;\n alt: string;\n className?: string;\n size?: AvatarSize;\n whiteStroke?: boolean;\n shortIdForClipPath: string;\n}\n\nfunction Avatar({ className, src: _src, alt, size = 40, whiteStroke, shortIdForClipPath }: Props) {\n const { classes } = useStyles({ whiteStroke });\n const strokeWidth = size === 196 || size === 140 || size === 120 ? 2 : size === 24 ? 0 : 1;\n const src = _src || '';\n const [hadError, setHadError] = useState(false);\n const clipMaskId = `avatarMask-size-${size}-${shortIdForClipPath}`;\n\n const sizedSrc = (() => {\n if (!src.includes('people-media') && !src.includes('profileImages')) {\n return src;\n }\n\n if (hadError) {\n return src;\n }\n\n const url = urlParse(src);\n url.set(\n 'query',\n queryString.stringify({\n // @ts-ignore\n ...queryString.parse(url.query),\n width: size * 2,\n height: size * 2,\n }),\n );\n\n return url.toString();\n })();\n\n const handleError = () => {\n setHadError(true);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles<{ whiteStroke?: boolean }>()((theme: Theme, { whiteStroke }) => ({\n root: {\n overflow: 'visible !important',\n },\n avatarStroke: {\n stroke: whiteStroke ? theme.palette.common.white : theme.palette.common.black,\n strokeOpacity: whiteStroke\n ? theme.palette.opacity.thirtyEightPercent\n : theme.palette.opacity.eightPercent,\n fill: 'none',\n },\n}));\n\nexport default Avatar;\n","import React from 'react';\nimport ensurePictureUrl from './helpers/ensurePictureUrl';\nimport usePictureUrlFromPerson from './helpers/usePictureUrlFromPerson';\nimport _get from 'lodash/get';\nimport shortId from 'shortid';\nimport { useTheme } from '@mui/material/styles';\n\nimport Avatar, { AvatarSize } from './Avatar';\n\ninterface Person {\n displayName: string;\n pictureUrl: string;\n officialPictureUrl?: string;\n}\n\n// prettier-ignore\ntype Props = {\n className?: string;\n isEntity?: boolean; \n size?: AvatarSize;\n whiteStroke?: boolean;\n} & (\n | { person: Person; }\n | { pictureUrl?: string; alt: string; }\n);\n\nfunction Container({\n className,\n isEntity = false,\n size,\n whiteStroke,\n person,\n pictureUrl: pictureUrlFromProps,\n alt,\n}: any) {\n const theme = useTheme();\n const displayName = _get(person, ['displayName']) as string | undefined;\n\n const pictureUrlFromPerson = usePictureUrlFromPerson(person, theme);\n\n const _pictureUrl = pictureUrlFromProps || pictureUrlFromPerson;\n const pictureUrl = ensurePictureUrl(_pictureUrl, theme, isEntity);\n const shortIdForClipPath = shortId.generate();\n\n return (\n \n );\n}\n\n// @ts-ignore\nexport default Container as React.ComponentType>;\n","import _get from 'lodash/get';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport { Theme } from '@mui/material/styles';\n\ninterface Person {\n pictureUrl: string;\n officialPictureUrl: string;\n customPictureUrl?: string;\n}\n\nexport default function usePictureUrlFromPerson(person: Person | undefined | null, theme: Theme) {\n const preferOfficialPhotos = usePassiveRedux(state =>\n _get(state, ['settings', 'directory', 'preferOfficialPhotos'], false),\n );\n\n if (!person) {\n return '';\n }\n\n const { pictureUrl, officialPictureUrl = '', customPictureUrl } = person;\n const specialPictureUrl = officialPictureUrl.includes('/placeholders')\n ? theme.pictureUrl ||\n createPictureUrlFromColor(theme.palette.primary.dark) ||\n officialPictureUrl\n : officialPictureUrl || theme.pictureUrl;\n\n if (preferOfficialPhotos) {\n return specialPictureUrl || pictureUrl;\n }\n\n // if customPictureUrl exists, then user has uploaded their own picture and it should default to pictureUrl\n // if not, pictureUrl is not defined and themePictureUrl needs to have priority\n\n return customPictureUrl || specialPictureUrl || pictureUrl;\n}\n","import { Theme } from '@mui/material/styles';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport createEntityPictureUrlFromColor from 'helpers/createEntityPictureUrlFromColor';\n\nexport default function ensurePictureUrl(src: string, theme: Theme, isEntity?: boolean) {\n if (!src || src.includes('/placeholders')) {\n const pictureUrlFromColor = isEntity\n ? createEntityPictureUrlFromColor(theme.palette.primary.dark)\n : createPictureUrlFromColor(theme.palette.primary.dark);\n return theme.pictureUrl || pictureUrlFromColor;\n }\n\n return src;\n}\n","import moment from 'moment';\n\nexport default function parseDate(maybeDateAttributeValue) {\n if (typeof maybeDateAttributeValue !== 'string') {\n return {\n from: undefined,\n to: undefined,\n };\n }\n\n const match = /^(\\d+\\/\\d+\\/\\d+)*-(\\d+\\/\\d+\\/\\d+)*$/.exec(maybeDateAttributeValue);\n if (!match) return undefined;\n\n const fromString = match[1];\n const toString = match[2];\n\n const from = fromString && moment(fromString, 'MM/DD/YYYY').toDate();\n const to = toString && moment(toString, 'MM/DD/YYYY').toDate();\n\n return { from, to };\n}\n","import moment from 'moment';\nimport parseDate from 'pages/SearchResults/_helpers/parseDate';\n\nexport default function transformToQueryParams(selectedAttributeValues = []) {\n return selectedAttributeValues.reduce((acc, { attributeKey, value }) => {\n const date = parseDate(value);\n\n if (date) {\n const upperKey = `${attributeKey.substring(0, 1).toUpperCase()}${attributeKey.substring(1)}`;\n\n if (date.from) {\n acc[`from${upperKey}`] = moment(date.from).format('MM/DD/YYYY');\n }\n\n if (date.to) {\n acc[`to${upperKey}`] = moment(date.to).format('MM/DD/YYYY');\n }\n\n return acc;\n }\n\n const arr = acc[attributeKey] || [];\n arr.push(value);\n acc[attributeKey] = arr;\n return acc;\n }, {});\n}\n","import createReducer from '@sift/resift/createReducer';\nimport { defineFetch } from 'resift';\n\nimport removeFalsyKeys from 'helpers/removeFalsyKeys';\nimport transformToQueryParams from 'store/searchResults/_helpers/transformToQueryParams';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const pageSizeOptions = [30, 50, 100];\n\n// filters\nconst SEARCH_RESULTS_OPEN_FILTERS = 'SEARCH_RESULTS_OPEN_FILTERS';\nconst SEARCH_RESULTS_CLOSE_FILTERS = 'SEARCH_RESULTS_CLOSE_FILTERS';\n// group email\nconst SEARCH_RESULTS_OPEN_GROUP_EMAIL = 'SEARCH_RESULTS_OPEN_GROUP_EMAIL';\nconst SEARCH_RESULTS_CLOSE_GROUP_EMAIL = 'SEARCH_RESULTS_CLOSE_GROUP_EMAIL';\n// group message\nconst SEARCH_RESULTS_OPEN_GROUP_MESSAGE = 'SEARCH_RESULTS_OPEN_GROUP_MESSAGE';\nconst SEARCH_RESULTS_CLOSE_GROUP_MESSAGE = 'SEARCH_RESULTS_CLOSE_GROUP_MESSAGE';\n// export\nconst SEARCH_RESULTS_OPEN_EXPORT = 'SEARCH_RESULT_OPEN_EXPORT';\nconst SEARCH_RESULTS_CLOSE_EXPORT = 'SEARCH_RESULTS_CLOSE_EXPORT';\n\nconst searchExploreAction = entityTypeTypeKey => ({\n clear,\n q,\n page,\n pageSize,\n selectedAttributeValues,\n sortBy,\n advancedSearch,\n mergeAdditionalFilters,\n sortDirection,\n}) => async ({ http }) => {\n // if `clear` then return a dummy empty object to replace the previously cached value\n if (clear) {\n return {\n filterCounts: {},\n filters: {},\n results: [],\n totalLength: 0,\n };\n }\n\n return http({\n method: 'GET',\n route: `/search/${entityTypeTypeKey}`,\n query: removeFalsyKeys({\n page,\n q,\n pageSize,\n sortBy,\n sortDirection,\n mergeAdditionalFilters,\n advancedSearch: advancedSearch ? 'true' : undefined,\n ...transformToQueryParams(selectedAttributeValues),\n }),\n });\n};\n\nconst searchResultsByEntityTypeAction = entityTypeTypeKey => ({\n clear,\n q,\n page,\n pageSize,\n selectedAttributeValues,\n sortBy,\n advancedSearch,\n mergeAdditionalFilters,\n sortDirection,\n}) => async ({ http }) => {\n // if `clear` then return a dummy empty object to replace the previously cached value\n if (clear) {\n return {\n filterCounts: {},\n filters: {},\n results: [],\n totalLength: 0,\n };\n }\n\n return http({\n method: 'GET',\n route: `/search/${entityTypeTypeKey}`,\n query: removeFalsyKeys({\n page,\n q,\n pageSize,\n sortBy,\n sortDirection,\n mergeAdditionalFilters,\n advancedSearch: advancedSearch ? 'true' : undefined,\n ...transformToQueryParams(selectedAttributeValues),\n }),\n });\n};\n// ------------------------------------\n// Actions\n// ------------------------------------\n\n// TODO: these fetches could be combine into a single fetch taking in an extra parameter like `page`\n// and then the `key` would be a function of that page\nexport const makeSearchResultsFetch = defineFetch({\n displayName: 'fetch search results',\n make: key => ({\n key: [key],\n request: searchExploreAction,\n }),\n});\n\nexport const makeSearchExploreFetch = defineFetch({\n displayName: 'fetch search explore',\n make: entityTypeTypeKey => ({\n key: [entityTypeTypeKey],\n request: searchExploreAction(entityTypeTypeKey),\n }),\n});\n\nexport const makeSearchResultsByEntityTypeFetch = defineFetch({\n displayName: 'fetch search results by entity type',\n make: entityTypeTypeKey => ({\n key: [entityTypeTypeKey],\n request: searchResultsByEntityTypeAction(entityTypeTypeKey),\n }),\n});\n\nexport const makeGroupMessageFetch = defineFetch({\n displayName: 'fetch group message',\n make: () => ({\n request: searchResultsByEntityTypeAction('user'),\n }),\n});\n\n// filters\nexport const openFilters = () => ({\n type: SEARCH_RESULTS_OPEN_FILTERS,\n});\nexport const closeFilters = () => ({\n type: SEARCH_RESULTS_CLOSE_FILTERS,\n});\n// group email\nexport const openGroupEmail = () => ({\n type: SEARCH_RESULTS_OPEN_GROUP_EMAIL,\n});\nexport const closeGroupEmail = () => ({\n type: SEARCH_RESULTS_CLOSE_GROUP_EMAIL,\n});\n// group message\nexport const openGroupMessage = () => ({\n type: SEARCH_RESULTS_OPEN_GROUP_MESSAGE,\n});\nexport const closeGroupMessage = () => ({\n type: SEARCH_RESULTS_CLOSE_GROUP_MESSAGE,\n});\n// export\nexport const openExportDialog = () => ({\n type: SEARCH_RESULTS_OPEN_EXPORT,\n});\nexport const closeExportDialog = () => ({\n type: SEARCH_RESULTS_CLOSE_EXPORT,\n});\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst actionHandlers = {\n [SEARCH_RESULTS_OPEN_FILTERS]: state => ({\n ...state,\n filtersOpen: true,\n }),\n [SEARCH_RESULTS_CLOSE_FILTERS]: state => ({\n ...state,\n filtersOpen: false,\n }),\n [SEARCH_RESULTS_OPEN_GROUP_EMAIL]: state => ({\n ...state,\n groupEmailOpen: true,\n }),\n [SEARCH_RESULTS_CLOSE_GROUP_EMAIL]: state => ({\n ...state,\n groupEmailOpen: false,\n }),\n [SEARCH_RESULTS_OPEN_GROUP_MESSAGE]: state => ({\n ...state,\n groupMessageOpen: true,\n }),\n [SEARCH_RESULTS_CLOSE_GROUP_MESSAGE]: state => ({\n ...state,\n groupMessageOpen: false,\n }),\n [SEARCH_RESULTS_OPEN_EXPORT]: state => ({\n ...state,\n exportOpen: true,\n }),\n [SEARCH_RESULTS_CLOSE_EXPORT]: state => ({\n ...state,\n exportOpen: false,\n }),\n};\n\nconst initialState = {\n filtersOpen: false,\n groupEmailOpen: false,\n groupMessageOpen: false,\n exportOpen: false,\n};\n\nexport default createReducer(initialState, actionHandlers);\n","import { useRef, useEffect } from 'react';\nimport _noop from 'lodash/noop';\n\n// https://overreacted.io/making-setinterval-declarative-with-react-hooks/\nexport default function useInterval(callback: Function, delay: number) {\n const savedCallback = useRef(_noop);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n","import { useRef, useLayoutEffect, useCallback } from 'react';\n\nfunction useWrap(t: T) {\n const ref = useRef(t);\n\n useLayoutEffect(() => {\n ref.current = t;\n }, [t]);\n\n return useCallback(() => ref.current, []);\n}\n\nexport default useWrap;\n","import React from 'react';\nimport { getLuminance } from 'polished';\n\n// Components\nimport SvgIcon from '@mui/material/SvgIcon';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport hasBadContrast from 'styles/skipper/hasBadContrast';\nimport brandColors from 'styles/skipper/brandColors';\n\nconst aspectRatio = 308 / 93;\n\nconst bubbleGum = '#F25497';\nconst salmon = '#FF7276';\nconst tiger = '#F88D2B';\nconst gold = '#F5A800';\n\ninterface Props {\n className?: string;\n backgroundColor?: string;\n color?: string;\n height: number;\n}\n\nfunction Sift({\n className,\n height,\n backgroundColor: _backgroundColor,\n color,\n ...restOfProps\n}: Props) {\n const { classes } = useStyles({ backgroundColor: _backgroundColor || '#ffffff' });\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles<{ backgroundColor: string }>()((theme: any, { backgroundColor }) => {\n const { common, primary, secondary } = theme.palette;\n\n const bgColor: string =\n backgroundColor === 'primary'\n ? primary.main\n : backgroundColor === 'secondary'\n ? secondary.main\n : '#ffffff';\n\n const shouldUseColoredDots = () => {\n if (\n theme.palette.primary.main.toLowerCase() === brandColors.primaryPalette.violet.toLowerCase()\n )\n return true;\n\n if (hasBadContrast(bgColor, bubbleGum)) return false;\n if (hasBadContrast(bgColor, salmon)) return false;\n if (hasBadContrast(bgColor, tiger)) return false;\n if (hasBadContrast(bgColor, gold)) return false;\n return true;\n };\n\n const shouldUseBlack = getLuminance(bgColor) > 0.3;\n\n const returnColor = (color: string) => {\n if (shouldUseColoredDots()) {\n return color;\n } else if (!shouldUseColoredDots() && shouldUseBlack) {\n return common.black;\n } else {\n return common.white;\n }\n };\n\n return {\n root: {},\n bubbleGumDot: { fill: returnColor(bubbleGum) },\n salmonDot: {\n fill: returnColor(salmon),\n },\n tigerDot: {\n fill: returnColor(tiger),\n },\n goldDot: {\n fill: returnColor(gold),\n },\n whiteOrBlack: {\n fill: shouldUseBlack ? common.black : common.white,\n },\n };\n});\n\nexport default Sift;\n","import { Status, States } from '@sift/resift/models/Status';\nimport createReducer from '@sift/resift/createReducer';\n\n// Auth Actions to Watch For\nimport { AUTH_PERSON_FETCH_SUCCESS } from '@sift/resift/redux/reducers/authentication';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const UPDATE_SETTINGS = 'UPDATE_SETTINGS';\nexport const UPDATE_SETTINGS_SUCCESS = 'UPDATE_SETTINGS_SUCCESS';\nexport const UPDATE_SETTINGS_ERROR = 'UPDATE_SETTINGS_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const updateSettings = (objectNotation, status) => {\n return {\n type: UPDATE_SETTINGS,\n payload: {\n data: {\n directory: {\n [objectNotation]: status,\n },\n },\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [AUTH_PERSON_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n ...action.payload.data.settings,\n };\n },\n [UPDATE_SETTINGS]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [UPDATE_SETTINGS_SUCCESS]: (state, action) => {\n return {\n ...state,\n directory: action.payload.data.directory,\n status: new Status(States.NORMAL),\n };\n },\n [UPDATE_SETTINGS_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {\n directory: {\n tour: {},\n preferOfficialPhotos: true,\n customColumns: ['team', 'subTeam'],\n },\n status: new Status(States.NORMAL),\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\n","/**\n * this maps the `path` from `slides.ts` to a field name from the config.\n */\nexport default {\n 'about-me': 'bio',\n 'what-i-do-here': 'whatIDoHere',\n skills: 'skills',\n education: 'education',\n experience: 'experience',\n languages: 'languages',\n interests: 'interests',\n assistants: 'assistants',\n} as { [key: string]: string | undefined };\n","import { defineFetch } from 'resift';\nimport _get from 'lodash/get';\nimport * as Types from 'pages/Onboarding/typings';\n\nconst makeOnboardingStateFetch = defineFetch({\n displayName: 'update onboarding state',\n share: { namespace: 'settings' },\n make: () => ({\n request: (onboardingState: Types.OnboardingState) => async ({ http, getState }) => {\n const state = getState();\n const personId = _get(state, ['authentication', 'person', 'id']) as string | undefined;\n if (!personId) {\n throw new Error('[completedOnboardingFetch] could not find personId');\n }\n\n const settings = await http({\n method: 'GET',\n route: `/people/${personId}/settings`,\n });\n\n const completedSlides = _get(\n settings,\n ['directory', 'userOnboarding', 'completedSlides'],\n [],\n );\n\n return http({\n method: 'PUT',\n route: `/people/${personId}/settings`,\n data: {\n directory: {\n userOnboarding: {\n state: onboardingState,\n linkedInData: {},\n completedSlides,\n },\n },\n },\n });\n },\n }),\n});\n\nconst updateOnboardingStateFetch = makeOnboardingStateFetch();\n\nexport default updateOnboardingStateFetch;\n","export default function removeKeys(obj: any, keysToRemove: string[]): any {\n return Object.entries(obj || {}).reduce(\n (next, [key, value]) => {\n if (keysToRemove.includes(key)) {\n return next;\n }\n next[key] = value;\n return next;\n },\n {} as any,\n );\n}\n","export default function removeFalsyKeys(obj: T): { [P in keyof T]: NonNullable } {\n return Object.entries(obj)\n .filter(([_, value]) => !!value || _ === 'mergeAdditionalFilters')\n .reduce(\n (ret, [key, value]) => {\n ret[key] = value;\n return ret;\n },\n {} as any,\n );\n}\n","import { parseToRgb } from 'polished';\n\nexport default function isValidColor(color: any) {\n if (!color) return false;\n try {\n parseToRgb(color);\n return true;\n } catch (e) {\n return false;\n }\n}\n","import { toColorString, parseToRgb } from 'polished';\n\nexport default function normalizeColor(color: string) {\n return toColorString(parseToRgb(color));\n}\n","import _get from 'lodash/get';\nimport { getContrast } from 'polished';\nimport skipperDefaultPalette from './skipperDefaultPalette';\nimport createPaletteColor from 'styles/createPaletteColor';\nimport isValidColor from 'styles/isValidColor';\nimport normalizeColor from 'styles/normalizeColor';\nimport brandColors from 'styles/skipper/brandColors';\n\nconst defaultPalette = ensureLightMainDark(skipperDefaultPalette);\n\nfunction ensureLightMainDark(palette) {\n if (!palette) throw new Error(`palette was ${palette}`);\n return Object.entries(palette)\n .map(([key, value]) => {\n // if `value.main` is present, it will tack on the props `light`, `dark`, and `contrastText`\n if (value.main !== undefined) {\n const defaultPaletteMain = _get(skipperDefaultPalette, [key, 'main']);\n\n const main = isValidColor(value.main)\n ? normalizeColor(value.main)\n : isValidColor(defaultPaletteMain)\n ? normalizeColor(defaultPaletteMain)\n : skipperDefaultPalette.defaultAccentColor.main;\n\n const derivedLightDark = createPaletteColor(key, main);\n\n return {\n key,\n value: {\n light: isValidColor(value.light) ? normalizeColor(value.light) : derivedLightDark.light,\n main,\n dark: isValidColor(value.dark) ? normalizeColor(value.dark) : derivedLightDark.dark,\n contrastText:\n getContrast(main, brandColors.common.white) >\n getContrast(main, brandColors.common.black)\n ? brandColors.common.white\n : brandColors.common.black,\n },\n };\n }\n\n return { key, value };\n })\n .reduce((palette, { key, value }) => {\n palette[key] = value;\n return palette;\n }, {});\n}\n\nfunction ensureRequiredPaletteKeys(palette) {\n return {\n ...palette,\n primary: palette.primary || defaultPalette.primary,\n secondary: palette.secondary || defaultPalette.secondary,\n matched: palette.matched || defaultPalette.matched,\n originalPrimary: palette.originalPrimary || palette.primary || defaultPalette.primary,\n originalSecondary: palette.originalSecondary || palette.secondary || defaultPalette.secondary,\n defaultAccentColor: palette.defaultAccentColor || defaultPalette.defaultAccentColor,\n };\n}\n\nexport default function ensureColors(palette = {}) {\n const ensuredColors = ensureLightMainDark(palette);\n return ensureRequiredPaletteKeys(ensuredColors);\n}\n","/**\n * Typography\n */\n\nimport React from 'react';\n\nconst fontWeight = {\n fontWeightExtraLight: 200,\n fontWeightLight: 300,\n fontWeightRegular: 400,\n fontWeightMedium: 500,\n fontWeightSemiBold: 600,\n fontWeightBold: 700,\n fontWeightBlack: 900,\n};\n\nexport default {\n ...fontWeight,\n fontFamily: \"'Source Sans Pro', sans-serif\",\n h1: {\n fontWeight: fontWeight.fontWeightLight,\n fontSize: 96,\n letterSpacing: -1.5,\n lineHeight: '112px',\n },\n h2: {\n fontWeight: fontWeight.fontWeightLight,\n size: 60,\n letterSpacing: -0.5,\n lineHeight: '72px',\n },\n h3: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 48,\n lineHeight: '56px',\n },\n h4: {\n fontWeight: fontWeight.fontWeightBold,\n fontSize: 34,\n letterSpacing: 0.25,\n lineHeight: '42px',\n },\n h5: {\n fontWeight: fontWeight.fontWeightBold,\n fontSize: 20,\n lineHeight: '27px',\n },\n h6: {\n fontWeight: fontWeight.fontWeightSemiBold,\n fontSize: 18,\n letterSpacing: 0.15,\n lineHeight: '29px',\n },\n body1: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 16,\n letterSpacing: 0.15,\n lineHeight: '24px',\n },\n body2: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 14,\n letterSpacing: 0.15,\n lineHeight: '20px',\n },\n subtitle1: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 16,\n letterSpacing: 0.15,\n lineHeight: '28px',\n },\n subtitle2: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 14,\n letterSpacing: 0.1,\n lineHeight: '22px',\n },\n caption: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 12,\n letterSpacing: 0.4,\n lineHeight: '20px',\n },\n overline: {\n fontWeight: fontWeight.fontWeightRegular,\n fontSize: 12,\n letterSpacing: 1,\n lineHeight: '32px',\n textTransform: 'uppercase' as React.CSSProperties['textTransform'],\n },\n button: {\n fontWeight: fontWeight.fontWeightBold,\n fontSize: 14,\n letterSpacing: 0.4,\n lineHeight: '24px',\n textTransform: 'uppercase' as React.CSSProperties['textTransform'],\n },\n special: {\n h4InBar: {\n fontWeight: fontWeight.fontWeightBold,\n fontSize: 24,\n letterSpacing: 0.25,\n lineHeight: '30px',\n },\n h5SemiBold: {\n fontWeight: fontWeight.fontWeightSemiBold,\n fontSize: 20,\n lineHeight: '27px',\n },\n body1Bold: {\n fontWeight: fontWeight.fontWeightBold,\n fontSize: 16,\n letterSpacing: 0.15,\n lineHeight: '24px',\n },\n body2Bold: {\n fontWeight: fontWeight.fontWeightBold,\n fontSize: 14,\n letterSpacing: 0.15,\n lineHeight: '20px',\n },\n },\n};\n","import { useContext, useEffect } from 'react';\n\nimport AnalyticsContext from 'components/AnalyticsProvider/AnalyticsContext';\nimport useRouter from '@sift/resift/useRouter';\nimport usePreserveReference from 'use-preserve-reference';\n\nfunction usePageTrackingEffect(title, name, _properties, skipTranslation) {\n const { location } = useRouter();\n const analytics = useContext(AnalyticsContext);\n\n const properties = usePreserveReference(_properties);\n\n useEffect(() => {\n if (!title) return;\n\n document.title = title;\n\n analytics.page(name || title, properties);\n\n skipTranslation && document.querySelector('title').setAttribute('translate', 'no');\n }, [location, title, name, analytics, properties, skipTranslation]);\n}\n\nexport default usePageTrackingEffect;\n","import React from 'react';\nimport { Theme } from '@mui/material';\nimport createTheme from './createSkipperTheme';\nimport memoizeLast from '@sift/resift/memoizeLast';\nimport { deepmerge } from '@mui/utils';\nimport { ThemeProvider } from '@mui/material/styles';\n\ninterface Props {\n children: React.ReactNode;\n theme?: Theme;\n}\n\nexport default function ThemeOverrideComponent({ children, theme }: Props) {\n const getOrCalculateOverrideTheme = memoizeLast((previousTheme?: Theme) => {\n return createTheme(deepmerge(previousTheme || {}, theme || {}));\n });\n\n const overrideTheme = getOrCalculateOverrideTheme(theme);\n\n return {children};\n}\n","import { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nexport default function useIsAdmin() {\n return useSelector(state => _get(state, 'authentication.person.account.isAdmin', false));\n}\n","import { createContext } from 'react';\n\n// @ts-ignore\nconst AnalyticsContext = createContext(null);\nAnalyticsContext.displayName = 'Analytics';\n\nexport default AnalyticsContext;\n","import createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport { Theme } from '@mui/material/styles';\n\nexport default function getPictureUrl(\n pictureUrl: string,\n officialPictureUrl: string,\n preferOfficialPhotos: boolean,\n theme: Theme,\n) {\n const personPictureUrl = preferOfficialPhotos ? officialPictureUrl : pictureUrl;\n\n if (personPictureUrl && !personPictureUrl.includes('profile-images/placeholders')) {\n return personPictureUrl;\n }\n\n if (theme.pictureUrl) return theme.pictureUrl;\n\n return createPictureUrlFromColor(theme.palette.primary.dark);\n}\n","// Libs\nimport { RequestResolve } from '@sift/resift/redux/DataService';\nimport Fetch from '@sift/resift/models/Fetch';\nimport { Status, States } from '@sift/resift/models/Status';\nimport createActionHandlers from '@sift/resift/redux/FetchUtils/createActionHandlers';\n\n// Models\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const FETCH_FIELD_AUTOCOMPLETE = 'FETCH_FIELD_AUTOCOMPLETE';\nexport const FETCH_FIELD_AUTOCOMPLETE_SUCCESS = 'FETCH_FIELD_AUTOCOMPLETE_SUCCESS';\nexport const FETCH_FIELD_AUTOCOMPLETE_ERROR = 'FETCH_FIELD_AUTOCOMPLETE_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const fetchFieldAutocomplete = (fieldId, value) => {\n return {\n type: FETCH_FIELD_AUTOCOMPLETE,\n identifier: fieldId,\n payload: {\n requestResolve: RequestResolve.CANCEL,\n fieldId: fieldId,\n query: {\n aggSearchTerm: value,\n sortBy: 'popularity',\n },\n },\n };\n};\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n ...createActionHandlers(FETCH_FIELD_AUTOCOMPLETE),\n [FETCH_FIELD_AUTOCOMPLETE_SUCCESS]: (state, action) => {\n return {\n ...state,\n objects: {\n [action.identifier]: action.payload.data.results.map(i => i.value).slice(0, 5),\n },\n fetches: {\n ...state.fetches,\n [action.identifier]: new Fetch(\n action.identifier,\n [action.identifier],\n [],\n action.payload.data,\n new Status(States.NORMAL),\n ),\n },\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n objects: {},\n fetches: {},\n};\n\nexport default function landingReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import { createContext } from 'react';\n\ninterface ContextValue {\n setContentEl: (portalId: string, contentEl: HTMLElement) => void;\n removeContentEl: (portalId: string) => void;\n contentEls: { [portalId: string]: HTMLElement | null };\n}\n\nexport default createContext(null);\n","export default {\n feature: {\n USER_ONBOARDING: 'User Onboarding',\n },\n action: {\n CLICKED: 'clicked',\n },\n};\n","// MUI official suggestion of replacement of `withWidth`\n// https://material-ui.com/components/use-media-query/#migrating-from-withwidth\n\nimport { Theme, useTheme, Breakpoint, useMediaQuery } from '@mui/material';\n\nfunction useWidth() {\n const theme: Theme = useTheme();\n const keys: Breakpoint[] = [...theme.breakpoints.keys].reverse();\n return (\n keys.reduce((output: Breakpoint | null, key: Breakpoint) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const matches = useMediaQuery(theme.breakpoints.up(key));\n return !output && matches ? key : output;\n }, null) || 'xs'\n );\n}\n\nexport default useWidth;\n","import React from 'react';\n// @ts-ignore\nimport { findAll } from 'highlight-words-core';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {},\n highlight: {\n color: theme.palette.matched.main,\n },\n };\n});\n\ninterface Props {\n className?: string;\n find: string[];\n children: React.ReactNode;\n element?: any;\n highlightClassName?: string;\n}\n\n/**\n * Highlights all occurrences of child text.\n *\n * see https://github.com/bvaughn/react-highlight-words for\n * original implementation.\n */\nfunction Highlighter({\n className,\n find,\n children,\n element = 'span',\n highlightClassName = '',\n}: Props) {\n const { classes } = useStyles();\n if (!children) return null;\n if (find.length === 0) return {children};\n\n const searchText = Array.isArray(children) ? children.join(' ') : children.toString();\n\n const chunks = findAll({\n autoEscape: true,\n searchWords: find,\n textToHighlight: searchText,\n });\n\n const Element = element;\n\n const elements = chunks.map((chunk: any, index: number) => {\n const text = searchText.substr(chunk.start, chunk.end - chunk.start);\n\n if (chunk.highlight) {\n return (\n \n {text}\n \n );\n }\n\n return {text};\n });\n\n return {elements};\n}\n\nexport default Highlighter;\n","// https://www.lingoapp.com/space/86663/k/B2DE4BDF-3C89-44EF-9D84-E833AEB7FE02/DE9D9C25-B9C4-41BA-A7E4-C14B64C64EA8/?tkn=covARoOwR4m_6_U8zowW36a_qrMaql0bmEcfIpfVgwI\nexport default {\n logomarkDotColors: {\n bubblegum: '#F25497',\n salmon: '#FF7276',\n tiger: '#F88D2B',\n gold: '#F5A800',\n },\n primaryPalette: {\n violet: '#60269E',\n amethyst: '#773DBD',\n eggplant: '#431A6E',\n lavender: '#D8C4E5',\n },\n secondaryPalette: {\n cobalt: '#2962FF',\n sky: '#6EA8FF',\n navy: '#001E70',\n artic: '#B1E4FF',\n },\n tertiaryPalette: {\n moss: '#4A7F1F',\n parakeet: '#61A60E',\n pine: '#00482F',\n lime: '#70D44B',\n },\n quaternaryPalette: {\n watermelon: '#D50057',\n bubblegum: '#F45197',\n merlot: '#960048',\n rose: '#F89ABA',\n },\n indicatorColors: {\n fire: '#FF342C',\n tiger: '#F88D2B',\n gold: '#F5A800',\n banana: '#FFDE03',\n parakeet: '#61A60E',\n },\n grayScale: {\n iron: '#212121',\n gray1: '#666666',\n gray2: '#979797',\n gray3: '#BDBDBD',\n appCanvasColor: '#FAFAFA',\n paperCardsColor: '#FFFFFF',\n cloud: '#F3F5F9',\n },\n // (pearl) note: `common` colors were added in addition to lingo colors\n common: {\n white: '#fff',\n black: '#212121',\n },\n};\n","import React from 'react';\n\nexport type ValueOf = T[keyof T];\nexport type TypeIn = ValueOf>;\nexport type PropsOf = T extends React.ComponentClass ? P : never;\nexport type RemoveProps = Pick>;\nexport type MakeOptional = Pick> & Partial>;\n\nexport type DivProps = React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLDivElement\n>;\n\nexport function isDefined(arg: T | undefined): arg is T {\n return arg !== undefined;\n}\n\nexport function isTruthy(arg: T | undefined | null): arg is T {\n return !!arg;\n}\n","import React from 'react';\nimport { RemoveProps } from 'helpers/typings';\nimport { makeStyles } from 'tss-react/mui';\nimport classNames from 'classnames';\nimport { Theme } from '@mui/material/styles';\n\n// Components\nimport { default as MuiChip, ChipProps } from '@mui/material/Chip';\nimport { ChipColor } from 'components/fields/input/ChipsInput/ChipsInput';\n\ninterface Props extends RemoveProps {\n color?: string;\n textColor?: string;\n component?: React.ElementType;\n onClick?: () => void;\n clickable?: boolean;\n onDelete?: () => void;\n to?: string;\n}\n\nfunction Chip(props: Props) {\n const { color, className, ...restOfProps } = props;\n const { classes } = useStyles();\n\n return (\n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n '@media print': {\n backgroundColor: theme.palette.common.white,\n border: `solid 1px ${theme.palette.common.black}`,\n color: theme.palette.common.black,\n },\n },\n}));\n\nexport default Chip;\n","// TODO: (rico) this file probably isn't used so it should be audited to be deleted\n\n// Libs\nimport { Status, States } from '@sift/resift/models/Status';\nimport { RequestResolve } from '@sift/resift/redux/DataService';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const FETCH_SEARCH = 'FETCH_SEARCH';\nexport const FETCH_SEARCH_ERROR = 'FETCH_SEARCH_ERROR';\nexport const FETCH_SEARCH_SUCCESS = 'FETCH_SEARCH_SUCCESS';\n\nexport const FETCH_TEAM = 'FETCH_TEAM';\nexport const FETCH_TEAM_ERROR = 'FETCH_TEAM_ERROR';\nexport const FETCH_TEAM_SUCCESS = 'FETCH_TEAM_SUCCESS';\n\nexport const FETCH_RECENT_SEARCHES = 'FETCH_RECENT_SEARCHES';\nexport const FETCH_RECENT_SEARCHES_ERROR = 'FETCH_RECENT_SEARCHES_ERROR';\nexport const FETCH_RECENT_SEARCHES_SUCCESS = 'FETCH_RECENT_SEARCHES_SUCCESS';\n\nexport const UPDATE_RECENT_SEARCHES = 'UPDATE_RECENT_SEARCHES';\nexport const UPDATE_RECENT_SEARCHES_ERROR = 'UPDATE_RECENT_SEARCHES_ERROR';\nexport const UPDATE_RECENT_SEARCHES_SUCCESS = 'UPDATE_RECENT_SEARCHES_SUCCESS';\n\nexport const DELETE_RECENT_SEARCHES = 'DELETE_RECENT_SEARCHES';\nexport const DELETE_RECENT_SEARCHES_ERROR = 'DELETE_RECENT_SEARCHES_ERROR';\nexport const DELETE_RECENT_SEARCHES_SUCCESS = 'DELETE_RECENT_SEARCHES_SUCCESS';\n\nexport const DELETE_RECENT_SEARCH = 'DELETE_RECENT_SEARCH';\nexport const DELETE_RECENT_SEARCH_ERROR = 'DELETE_RECENT_SEARCH_ERROR';\nexport const DELETE_RECENT_SEARCH_SUCCESS = 'DELETE_RECENT_SEARCH_SUCCESS';\n\nexport const FIELD_AUTOSUGGEST_FETCH = 'FIELD_AUTOSUGGEST_FETCH';\nexport const FIELD_AUTOSUGGEST_FETCH_SUCCESS = 'FIELD_AUTOSUGGEST_FETCH_SUCCESS';\nexport const FIELD_AUTOSUGGEST_FETCH_ERROR = 'FIELD_AUTOSUGGEST_FETCH_ERROR';\n\nexport const OPEN_FILTER_DRAWER = 'OPEN_FILTER_DRAWER';\n\nexport const FETCH_TAGS = 'FETCH_TAGS';\nexport const FETCH_TAGS_SUCCESS = 'FETCH_TAGS_SUCCESS';\nexport const FETCH_TAGS_ERROR = 'FETCH_TAGS_ERROR';\n\nexport const FIELD_AUTOSUGGEST_ITEM_FETCH = 'FIELD_AUTOSUGGEST_ITEM_FETCH';\nexport const FIELD_AUTOSUGGEST_ITEM_FETCH_SUCCESS = 'FIELD_AUTOSUGGEST_ITEM_FETCH_SUCCESS';\nexport const FIELD_AUTOSUGGEST_ITEM_FETCH_ERROR = 'FIELD_AUTOSUGGEST_ITEM_FETCH_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\n/**\n * Fetch a search query\n *\n * @param {object} params The params of the search query.\n * {\n * q: string,\n * ...filters,\n * ...pagination\n * }\n *\n */\nexport const fetchSearch = (query, identifier) => {\n return {\n type: FETCH_SEARCH,\n identifier: identifier || 'search/people',\n payload: {\n query: query,\n requestResolve: RequestResolve.CANCEL,\n },\n };\n};\n\n/**\n * Get Team\n *\n */\nexport const fetchTeam = () => {\n return (dispatch, getState) => {\n let state = getState();\n dispatch({\n type: FETCH_TEAM,\n identifier: 'search',\n payload: {\n id: state.authentication.person.id,\n },\n });\n };\n};\n\n/**\n * Fetch recent searches\n *\n */\nexport const fetchRecentSearches = () => {\n return (dispatch, getState) => {\n let state = getState();\n dispatch({\n type: FETCH_RECENT_SEARCHES,\n identifier: 'search',\n payload: {\n id: state.authentication.person.id,\n },\n });\n };\n};\n\n/**\n * Fetch recent searches\n *\n */\nexport const updateRecentSearches = search => {\n return (dispatch, getState) => {\n let state = getState();\n dispatch({\n type: UPDATE_RECENT_SEARCHES,\n identifier: 'search',\n payload: {\n id: state.authentication.person.id,\n data: search,\n requestResolve: null,\n },\n });\n };\n};\n\n/**\n * Delete recent searches\n *\n */\nexport const deleteRecentSearches = () => {\n return (dispatch, getState) => {\n let state = getState();\n dispatch({\n type: DELETE_RECENT_SEARCHES,\n identifier: 'search',\n payload: {\n id: state.authentication.person.id,\n },\n });\n };\n};\n\n/**\n * Delete recent search\n *\n */\nexport const deleteRecentSearch = index => {\n return (dispatch, getState) => {\n let state = getState();\n dispatch({\n type: DELETE_RECENT_SEARCH,\n identifier: 'search',\n payload: {\n id: state.authentication.person.id,\n index: index,\n },\n });\n };\n};\n\n/**\n * Open Filter Drawer\n */\nexport const openFilterDrawer = open => {\n return (dispatch, getState) => {\n dispatch({\n type: OPEN_FILTER_DRAWER,\n identifier: 'search',\n payload: {\n open,\n },\n });\n };\n};\n\n/**\n * Search Skills\n */\nexport const fetchTags = (query, field) => {\n return {\n type: FETCH_TAGS,\n identifier: 'search/tags',\n payload: {\n query,\n field,\n requestResolve: RequestResolve.CANCEL,\n },\n };\n};\n\n/**\n * Search Autosuggest\n */\nexport const fetchSuggestions = (field, searchTerm) => {\n return {\n type: FIELD_AUTOSUGGEST_FETCH,\n identifier: field.objectKey,\n payload: {\n searchTerm,\n fieldId: field.id,\n requestResolve: RequestResolve.CANCEL,\n },\n };\n};\n\n/**\n * Fetch Autosuggest suggestion to item schema\n */\nexport const fetchMappingsForSuggestionItem = (fieldId, suggestionItem) => {\n return {\n type: FIELD_AUTOSUGGEST_ITEM_FETCH,\n identifier: fieldId,\n payload: {\n targetId: suggestionItem.id,\n name: suggestionItem.name,\n fieldId,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [FETCH_SEARCH]: (state, action) => {\n return {\n ...state,\n searches: {\n ...state.searches,\n [action.identifier]: {\n ...state.searches[action.identifier],\n status: new Status(States.LOADING),\n },\n },\n };\n },\n [FETCH_SEARCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n searches: {\n ...state.searches,\n [action.identifier]: {\n result: action.payload.data,\n status: new Status(States.NORMAL),\n },\n },\n };\n },\n [FETCH_TAGS]: (state, action) => {\n return {\n ...state,\n };\n },\n [FETCH_TAGS_SUCCESS]: (state, action) => {\n return {\n ...state,\n lastTagSearch: action.payload.data.results,\n };\n },\n [FIELD_AUTOSUGGEST_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n suggestions: {\n ...state.suggestions,\n [action.identifier]: action.payload.data.results,\n },\n };\n },\n [FIELD_AUTOSUGGEST_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n suggestions: {\n ...state.suggestions,\n [action.identifier]: [],\n },\n };\n },\n [FIELD_AUTOSUGGEST_ITEM_FETCH_SUCCESS]: (state, action) => {\n // This payload.data is returned as an array to mimic the search endpoint\n // There will only be one item returned each time. If there isn't an acItem,\n // then the suggestion item is created by the user.\n\n const acItem = action.payload.data.results[0];\n const targetId = action.originalPayload.targetId;\n const name = action.originalPayload.name;\n\n return {\n ...state,\n suggestionMappings: {\n ...state.suggestionMappings,\n [targetId]: acItem || {\n title: name,\n targetId,\n },\n },\n };\n },\n [FIELD_AUTOSUGGEST_ITEM_FETCH_ERROR]: (state, action) => {\n // TODO: This is currenlty not being used.\n const targetId = action.originalPayload.targetId;\n return {\n ...state,\n suggestionMappings: {\n ...state.suggestionMappings,\n [targetId]: {\n hasError: true,\n },\n },\n };\n },\n};\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n searches: {},\n suggestions: {},\n suggestionMappings: {},\n};\n\nexport default function searchReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import { defineFetch } from 'resift';\nimport _get from 'lodash/get';\n\nexport default defineFetch({\n displayName: 'settings fetch',\n share: { namespace: 'settings' },\n make: () => ({\n request: () => ({ http, getState }: any) => {\n const state = getState();\n const personId = _get(state, ['authentication', 'person', 'id']) as string | undefined;\n\n if (!personId) {\n throw new Error('[settingsFetch] could not find personId');\n }\n\n return http({\n method: 'GET',\n route: `/people/${personId}/settings`,\n });\n },\n }),\n});\n","import { defineFetch } from 'resift';\nimport _pickBy from 'lodash/pickBy';\n\nexport default defineFetch({\n displayName: 'update profile fetch',\n share: {\n namespace: 'person',\n merge: (previous, current) => {\n if (!previous) {\n return current;\n }\n\n const additionalProperties = _pickBy(previous, (v, k) => k.startsWith('_'));\n\n return { ...current, ...additionalProperties };\n },\n },\n make: (personId: string) => ({\n request: (partialPerson: any) => ({ http }: any) =>\n http({\n method: 'PUT',\n route: `/people/${personId}`,\n data: partialPerson,\n }),\n }),\n});\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst CheckMarkIcon = props => (\n \n \n \n \n \n \n \n);\n\nexport default CheckMarkIcon;\n","import React from 'react';\n\nimport SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon';\n\nfunction Org(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n\nexport default Org;\n","import { defineFetch } from 'resift';\n\nconst makeGetTasks = defineFetch({\n displayName: 'Get Tasks',\n make: () => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: '/notifications',\n }),\n }),\n});\n\nconst getTasks = makeGetTasks();\n\nexport default getTasks;\n","export default function getHostDomain() {\n if (process.env.REACT_APP_SUBDOMAIN_MOCK) {\n return process.env.REACT_APP_SUBDOMAIN_MOCK;\n }\n\n const hostname = window.location.hostname;\n if (!hostname) {\n return 'siftstaging';\n }\n\n const hostDomain = (hostname.split('.')[1] || '').trim().toLowerCase();\n if (!hostDomain) {\n return 'siftstaging';\n }\n\n return hostDomain;\n}\n","import { darken } from 'polished';\nimport hasBadContrast from './hasBadContrast';\n\nexport default function readableColorForWhite(color: string) {\n let compareColor = color;\n\n while (hasBadContrast('#fff', compareColor)) {\n compareColor = darken(0.05, compareColor);\n }\n\n return compareColor;\n}\n","// NOTICE: this file is deprecated in favor of `/src/helpers/stringifyLocationProps`\nimport queryString from 'query-string';\nimport removeFalsyKeys from 'helpers/removeFalsyKeys';\nimport { pageSizeOptions } from 'store/searchResults';\n\n/**\n * creates a location from the given params\n */\nexport default function getDerivedLocationFromProps({\n q,\n page,\n pageSize,\n selectedAttributeValues,\n sortBy,\n sortDirection = undefined,\n advancedSearch,\n location,\n}) {\n const _location = location && location[0] === '/' ? location.substr(1) : location;\n\n return `/${_location || 'search'}?${queryString.stringify(\n removeFalsyKeys({\n q,\n page: page === 1 ? undefined : page,\n pageSize: pageSize && pageSize === pageSizeOptions[0] ? undefined : pageSize,\n sortBy,\n sortDirection,\n advancedSearch: advancedSearch ? 'true' : undefined,\n ...selectedAttributeValues.reduce((acc, { value, attributeKey }) => {\n const values = acc[attributeKey] || [];\n values.push(value);\n acc[attributeKey] = values;\n return acc;\n }, {}),\n }),\n )}`;\n}\n","import React from 'react';\nimport typography from 'helpers/typography';\n\n// Components\nimport ErrorFaceIcon from 'components/Icons/ErrorFace';\nimport Random from 'components/skipper/Random';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n title: {\n ...typography(theme, 'h6'),\n margin: theme.spacing(0, 4),\n marginTop: theme.spacing(2),\n textAlign: 'center',\n },\n subtitle: {\n textAlign: 'center',\n fontSize: 14,\n margin: theme.spacing(0, 4),\n marginTop: theme.spacing(1),\n },\n icon: {\n marginRight: 14,\n },\n };\n});\n\ninterface Props {\n className?: string;\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nconst defaultTitle = ;\nconst defaultSubtitle = (\n <>\n Something went wrong. Try refreshing the page and if this error persists, contact support.\n
\n Support@justsift.com\n \n);\n\nfunction ErrorView({\n className,\n title = defaultTitle,\n subtitle = defaultSubtitle,\n children,\n}: Props) {\n const { classes } = useStyles();\n\n return (\n
\n \n
{title}
\n
{subtitle}
\n {children}\n
\n );\n}\n\nexport default ErrorView;\n","import React from 'react';\n\nexport default props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import { defineFetch } from 'resift';\n\nconst makeGetClientOrgChart = defineFetch({\n displayName: 'Get Client Org Chart',\n make: () => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: '/client/org-chart',\n }),\n }),\n});\n\nconst getClientOrgChart = makeGetClientOrgChart();\n\nexport default getClientOrgChart;\n","import moment from 'moment';\n\nexport default function hashDate(value) {\n const from = value.from\n ? moment(value.from)\n .utc()\n .format('MM/DD/YYYY')\n : '';\n const to = value.to\n ? moment(value.to)\n .utc()\n .format('MM/DD/YYYY')\n : '';\n\n return `${from}-${to}`;\n}\n","import _get from 'lodash/get';\nimport hashDate from './hashDate';\n\nfunction isDate(value) {\n if (!value) return false;\n if (typeof value !== 'object') return false;\n if (value.to) return true;\n if (value.from) return true;\n return false;\n}\n\n/**\n * @param {string} camelCase\n */\n\nexport function createDisplayNameFromCamelCase(camelCase) {\n if (camelCase.length <= 1) return camelCase;\n\n const letters = camelCase.split('');\n\n const almostNormalCase = letters\n .map(letter => {\n // if uppercase letter\n if (/[A-Z]/.test(letter)) return ' ' + letter;\n return letter;\n })\n .join('');\n\n const firstLetter = letters[0];\n\n return `${firstLetter.toUpperCase()}${almostNormalCase.substring(1)}`;\n}\n\nexport default function getAttributeValuesFromObject(params, fields) {\n const attributeKeyValueTuples = Object.entries(params)\n .map(([attributeKey, values]) => ({\n attributeKey,\n values: Array.isArray(values) ? values : [values],\n }))\n .map(({ attributeKey, values }) =>\n values.map(value => ({\n attributeKey,\n value,\n })),\n )\n .reduce((flattened, next) => [...flattened, ...next], [])\n .map(({ attributeKey, value }) => ({\n attributeKey,\n value: isDate(value) ? hashDate(value) : value,\n }));\n\n return attributeKeyValueTuples\n .filter(({ attributeKey }) => {\n if (attributeKey === 'q') return true;\n if (fields[attributeKey]) return true;\n if (attributeKey.includes('_exists')) return true;\n if (attributeKey === 'separated') return true;\n return false;\n })\n .map(attributeValue => {\n const { attributeKey } = attributeValue;\n if (attributeKey === 'q') {\n return { ...attributeValue, attributeKey: 'searched' };\n }\n\n return attributeValue;\n })\n .map(({ attributeKey, value }) => {\n const _value = attributeKey === 'searched' ? `\"${value}\"` : value;\n return {\n key: `${attributeKey}__${value}`,\n attributeKey,\n value: _value,\n title: _value === 'true' ? 'Yes' : _value === 'false' ? 'No' : undefined,\n attributeDisplayName: _get(\n fields,\n [attributeKey, 'displayName'],\n createDisplayNameFromCamelCase(attributeKey),\n ),\n };\n });\n}\n","import { Status, States } from '@sift/resift/models/Status';\n\n// Models\n\nexport const APP_SMS_SEND = 'APP_SMS_SEND';\nexport const APP_SMS_SEND_SUCCESS = 'APP_SMS_SEND_SUCCESS';\nexport const APP_SMS_SEND_ERROR = 'APP_SMS_SEND_ERROR';\nexport const APP_SMS_RESET = 'APP_SMS_RESET';\n\nexport const sendSmsApp = (phoneNumber, operatingSystem) => {\n return {\n type: APP_SMS_SEND,\n payload: {\n data: {\n phoneNumber,\n operatingSystem,\n },\n },\n };\n};\n\nexport const resetSms = () => {\n return {\n type: APP_SMS_RESET,\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [APP_SMS_SEND]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [APP_SMS_SEND_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n [APP_SMS_SEND_SUCCESS]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL),\n };\n },\n [APP_SMS_RESET]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL),\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n status: new Status(States.NORMAL),\n};\n\nexport default function settingsReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import { useContext, useMemo } from 'react';\nimport _get from 'lodash/get';\nimport RunnerContext from '@sift/runner/Context';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport slides from './slides';\nimport fieldMap from './fieldMap';\n\nexport default function useValidSlides(): any {\n const contextValue = useContext(RunnerContext);\n if (!contextValue) {\n throw new Error('[useValidSlides] could not find runner context');\n }\n\n const { root, config } = contextValue;\n\n const assistantsEnabled = usePassiveRedux((state: any) =>\n _get(state, ['client', 'features', 'connect', 'assistants'], false),\n ) as boolean;\n\n const socialPhotosEnabled = _get(root, ['_directorySettings', 'socialPhotos', 'enabled'], true);\n\n return useMemo(() => {\n const consideredSlides = slides\n .filter(slide => slide.type === 'nav')\n .filter(slide => {\n if (slide.path !== '/photos') {\n return true;\n }\n\n return socialPhotosEnabled;\n })\n // filter out the assistants tab if assistants is not abled\n .filter(slide => {\n if (slide.path !== '/assistants') {\n return true;\n }\n\n return assistantsEnabled;\n })\n .filter(slide => {\n const fieldKey = fieldMap[slide.path.substring(1)];\n\n // @ts-ignore\n const field = _get(config, ['fields', fieldKey]) as Sift.Field | undefined;\n\n // if there is a fieldKey but no field that means that the field is not available in the\n // instance\n if (fieldKey && !field) {\n return false;\n }\n return true;\n });\n\n return consideredSlides;\n }, [socialPhotosEnabled, assistantsEnabled, config]);\n}\n","import moment from 'moment-timezone';\nimport _sortBy from 'lodash/sortBy';\nimport timezoneDisplayNameMappings from 'components/TimezoneAndWorkHours/constants/timezoneMappings';\n\nfunction getTimezoneDisplayNames(timezoneGuess: string) {\n const _tzNames = Object.keys(timezoneDisplayNameMappings);\n\n // Add timezoneGuess to the list if it's not already there\n const tzNames = _tzNames.includes(timezoneGuess) ? _tzNames : [..._tzNames, timezoneGuess];\n\n const timezones = tzNames.reduce((timezones: any, name) => {\n const utcOffset = moment.tz(name).format('Z');\n // @ts-ignore\n const displayName = timezoneDisplayNameMappings[name] || name;\n timezones[name] = {\n name,\n displayName,\n utcOffset,\n };\n return timezones;\n }, {});\n\n const orderedTimezones = _sortBy(Object.values(timezones), [\n (tzItem: any) => moment.tz(tzItem.name).utcOffset(),\n 'displayName',\n ]);\n\n const timezoneDisplayNamesByName = orderedTimezones.reduce((displayNames: any, item: any) => {\n const { name, displayName, utcOffset } = item;\n displayNames[name] = `(UTC${utcOffset}) ${displayName}`;\n return displayNames;\n }, {} as any);\n\n return timezoneDisplayNamesByName as any;\n}\n\nexport default getTimezoneDisplayNames;\n","import React, { useContext } from 'react';\nimport PortalContext from 'components/skipper/PortalProvider/context';\nimport ReactDOM from 'react-dom';\nimport shortId from 'shortid';\n\ninterface PortalProps {\n children: React.ReactNode;\n}\n\nexport default function createPortal(name: string) {\n const portalId = shortId();\n\n function Portal({ children }: PortalProps) {\n const portalContext = useContext(PortalContext);\n\n if (!portalContext) {\n throw new Error(`[${name}Portal] could not find portal context`);\n }\n\n const { contentEls } = portalContext;\n\n const contentEl = contentEls[portalId];\n\n if (!contentEl) {\n return null;\n }\n\n return ReactDOM.createPortal(children, contentEl);\n }\n\n Portal.displayName = `${name}Portal`;\n Object.defineProperty(Portal, '__portalId', {\n get: () => portalId,\n });\n\n const PortalFixedTypings = Portal as typeof Portal & { __portalId: string };\n\n return PortalFixedTypings;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\nclass SeparatedCopy extends React.PureComponent {\n static propTypes = {\n person: PropTypes.object.isRequired,\n variant: PropTypes.string,\n };\n\n render() {\n const { variant, person } = this.props;\n\n const separationText = person.separationImplicit ? 'was removed on: ' : 'was separated on: ';\n\n if (variant === 'long') {\n return (\n <>\n {person.firstName} {separationText}{' '}\n {person.separationDate}\n \n );\n }\n\n if (person.separationImplicit) {\n return `Removed from Sift on : ${person.separationDate}`;\n } else {\n return `Separated on : ${person.separationDate}`;\n }\n }\n}\n\nexport default SeparatedCopy;\n","import { getContrast } from 'polished';\nimport brandColors from './brandColors';\n\nexport default function readableColor(color: string) {\n return getContrast(color, brandColors.common.white) > getContrast(color, brandColors.common.black)\n ? brandColors.common.white\n : brandColors.common.black;\n}\n","import { useContext } from 'react';\nimport AnalyticsContext from 'components/AnalyticsProvider/AnalyticsContext';\nimport _has from 'lodash/get';\nimport _noop from 'lodash/noop';\n\ninterface AnalyticsObject {\n identify: () => void;\n track: (event: string, properties?: any) => void;\n page: (name: string, properties?: any) => void;\n}\n\nexport default function useAnalytics(): AnalyticsObject {\n if (_has(window, ['appState'])) {\n return {\n identify: _noop,\n track: _noop,\n page: _noop,\n };\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const contextValue = useContext(AnalyticsContext);\n\n if (!contextValue) {\n throw new Error(\n '[useAnalytics] could not find analytics context. is this component wrapped in the AnalyticsProvider?',\n );\n }\n\n return contextValue;\n}\n","import React, { forwardRef } from 'react';\n\n/**\n * (notes - Pearl)\n * This is a wrapper component for elements we would like to skip browser translation.\n *\n * Usage example references:\n * ** Apply SkipTranslate to div elements - see `profile/StickyHeader`\n * ** Apply SkipTranslate to non-div elements - see `ProfileInformation`\n * ** Apply SkipTranslate to broken down elements - see `search/PersonCard`\n * ** Apply SkipTranslate to MUI5+ styled-components - see `NameColumn`\n */\ninterface Props {\n Component: any;\n [key: string]: any;\n}\n\nconst SkipTranslate = forwardRef((props: Props, ref: React.Ref) => {\n const { Component = 'div', ...restOfProps } = props;\n\n return ;\n});\n\nexport default SkipTranslate;\n","export default {\n 'Africa/Cairo': 'Cairo',\n 'Africa/Casablanca': 'Casablanca',\n 'Africa/Harare': 'Harare, Pretoria',\n 'Africa/Lagos': 'West Central Africa',\n 'Africa/Nairobi': 'Nairobi',\n 'Africa/Tripoli': 'Tripoli',\n 'Africa/Windhoek': 'Windhoek',\n 'America/Argentina/Buenos_Aires': 'City of Buenos Aires',\n 'America/Asuncion': 'Asuncion',\n 'America/Cancun': 'Chetumal',\n 'America/Caracas': 'Caracas',\n 'America/Chicago': 'Central Time (US and Canada)',\n 'America/Chihuahua': 'Chihuahua, La Paz, Mazatlan',\n 'America/Cuiaba': 'Cuiaba',\n 'America/Denver': 'Mountain Time (US and Canada), Navajo Nation',\n 'America/Fortaleza': 'Cayenne, Fortaleza',\n 'America/Halifax': 'Atlantic Time (Canada)',\n 'America/Havana': 'Havana',\n 'America/Indiana/Indianapolis': 'Indiana (East)',\n 'America/Lima': 'Bogota, Lima, Quito',\n 'America/Los_Angeles': 'Pacific Time (US and Canada)',\n 'America/Manaus': 'Georgetown, La Paz, Manaus, San Juan',\n 'America/Mexico_City': 'Guadalajara, Mexico City, Monterrey',\n 'America/Miquelon': 'Saint Pierre and Miquelon',\n 'America/Montevideo': 'Montevideo',\n 'America/New_York': 'Eastern Time (US and Canada)',\n 'America/Noronha': 'Fernando de Noronha',\n 'America/Phoenix': 'Arizona',\n 'America/Regina': 'Saskatchewan',\n 'America/Santiago': 'Santiago',\n 'America/Sao_Paulo': 'Brasilia',\n 'America/St_Johns': 'Newfoundland',\n 'Asia/Almaty': 'Astana/Nur-Sultan',\n 'Asia/Anadyr': 'Anadyr, Petropavlovsk-Kamchatsky',\n 'Asia/Ashgabat': 'Tashkent, Ashgabat',\n 'Asia/Baghdad': 'Baghdad',\n 'Asia/Baku': 'Baku',\n 'Asia/Bangkok': 'Bangkok, Hanoi, Jakarta',\n 'Asia/Barnaul': 'Barnaul, Gorno-Altaysk',\n 'Asia/Beirut': 'Beirut',\n 'Asia/Chita': 'Chita',\n 'Asia/Colombo': 'Sri Jayawardenepura',\n 'Asia/Damascus': 'Damascus',\n 'Asia/Dhaka': 'Dhaka',\n 'Asia/Dubai': 'Abu Dhabi, Muscat',\n 'Asia/Gaza': 'Gaza, Hebron',\n 'Asia/Hong_Kong': 'Beijing, Chongqing, Hong Kong SAR, Urumqi',\n 'Asia/Hovd': 'Hovd',\n 'Asia/Irkutsk': 'Irkutsk',\n 'Asia/Istanbul': 'Istanbul',\n 'Asia/Jerusalem': 'Jerusalem',\n 'Asia/Kabul': 'Kabul',\n 'Asia/Karachi': 'Chennai, Kolkata, Mumbai, New Delhi',\n 'Asia/Kathmandu': 'Kathmandu',\n 'Asia/Krasnoyarsk': 'Krasnoyarsk',\n 'Asia/Kuala_Lumpur': 'Kuala Lumpur, Singapore',\n 'Asia/Kuwait': 'Kuwait, Riyadh',\n 'Asia/Magadan': 'Magadan',\n 'Asia/Novosibirsk': 'Novosibirsk',\n 'Asia/Pyongyang': 'Pyongyang',\n 'Asia/Seoul': 'Seoul',\n 'Asia/Taipei': 'Taipei',\n 'Asia/Tbilisi': 'Tbilisi',\n 'Asia/Tehran': 'Tehran',\n 'Asia/Tokyo': 'Osaka, Sapporo, Tokyo',\n 'Asia/Tomsk': 'Tomsk',\n 'Asia/Ulaanbaatar': 'Ulaanbaatar',\n 'Asia/Vladivostok': 'Vladivostok',\n 'Asia/Yakutsk': 'Yakutsk',\n 'Asia/Yangon': 'Yangon (Rangoon)',\n 'Asia/Yekaterinburg': 'Islamabad, Karachi',\n 'Asia/Yerevan': 'Yerevan',\n 'Atlantic/Azores': 'Azores',\n 'Atlantic/Cape_Verde': 'Cabo Verde Islands',\n 'Atlantic/Reykjavik': 'Monrovia, Reykjavik',\n 'Australia/Adelaide': 'Adelaide',\n 'Australia/Brisbane': 'Brisbane',\n 'Australia/Darwin': 'Darwin',\n 'Australia/Eucla': 'Eucla',\n 'Australia/Hobart': 'Hobart',\n 'Australia/Lord_Howe': 'Lord Howe Island',\n 'Australia/Perth': 'Perth',\n 'Australia/Sydney': 'Canberra, Melbourne, Sydney',\n 'Europe/Amsterdam': 'Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna',\n 'Europe/Brussels': 'Brussels, Copenhagen, Madrid, Paris',\n 'Europe/Bucharest': 'Athens, Bucharest',\n 'Europe/Helsinki': 'Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius',\n 'Europe/Kaliningrad': 'Kaliningrad',\n 'Europe/London': 'Dublin, Edinburgh, Lisbon, London',\n 'Europe/Minsk': 'Minsk',\n 'Europe/Moscow': 'Moscow, St. Petersburg',\n 'Europe/Prague': 'Belgrade, Bratislava, Budapest, Ljubljana, Prague',\n 'Europe/Samara': 'Izhevsk, Samara',\n 'Europe/Volgograd': 'Astrakhan, Ulyanovsk, Volgograd',\n 'Europe/Warsaw': 'Sarajevo, Skopje, Warsaw, Zagreb',\n 'Indian/Mauritius': 'Port Louis',\n 'Mexico/BajaNorte': 'Baja California',\n 'Pacific/Auckland': 'Auckland, Wellington',\n 'Pacific/Bougainville': 'Bougainville Island',\n 'Pacific/Chatham': 'Chatham Islands',\n 'Pacific/Easter': 'Easter Island',\n 'Pacific/Fiji': 'Fiji Islands',\n 'Pacific/Guam': 'Guam, Port Moresby',\n 'Pacific/Honolulu': 'Hawaii',\n 'Pacific/Kiritimati': 'Kiritimati Island',\n 'Pacific/Marquesas': 'Marquesas Islands',\n 'Pacific/Midway': 'Midway Island, American Samoa',\n 'Pacific/Norfolk': 'Norfolk Island',\n 'Pacific/Pago_Pago': 'Samoa',\n 'US/Alaska': 'Alaska',\n 'US/Aleutian': 'Aleutian Islands',\n};\n","import React, { forwardRef } from 'react';\nimport typography from 'helpers/typography';\n\nimport TextField, {\n OutlinedTextFieldProps as MuiOutlinedTextFieldProps,\n} from '@mui/material/TextField';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\ntype SelectedOutlinedTextFieldProps = Omit;\nexport interface OutlinedTextFieldProps extends SelectedOutlinedTextFieldProps {\n description?: string;\n labelVisuallyHidden?: boolean;\n}\n\nconst OutlinedTextField = forwardRef((props: OutlinedTextFieldProps, ref: React.Ref) => {\n const { label, description, labelVisuallyHidden, ...restOfProps } = props;\n const { classes } = useStyles();\n\n if (!label && !description) {\n return ;\n }\n\n return (\n
\n \n
\n );\n});\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {},\n label: {\n ...typography(theme, 'h6'),\n display: 'block',\n textTransform: 'capitalize',\n },\n description: {\n ...typography(theme, 'body2'),\n },\n labelContainer: {\n display: 'block',\n marginBottom: theme.spacing(),\n },\n screenReaderOnly: {\n position: 'absolute',\n left: -10000,\n top: 'auto',\n width: 1,\n height: 1,\n overflow: 'hidden',\n },\n}));\n\nexport default OutlinedTextField;\n","import { useLocation } from 'react-router';\nimport { ATTRIBUTE_PATH } from 'helpers/consts';\nimport { SEARCH_PATH } from 'components/search/consts';\n\nfunction useEntityTypeTypeKeyFromUrl() {\n const location = useLocation();\n const path = location.pathname;\n\n if (!path.includes(SEARCH_PATH) && !path.includes(ATTRIBUTE_PATH)) {\n return null;\n }\n\n const regex = path.includes(ATTRIBUTE_PATH)\n ? new RegExp(`${ATTRIBUTE_PATH}/.*/`)\n : new RegExp(`${SEARCH_PATH}/.*/`);\n const match = path.match(regex);\n\n if (!match) {\n return null;\n }\n\n return match[0].split('/')[2];\n}\n\nexport default useEntityTypeTypeKeyFromUrl;\n","import { useMemo } from 'react';\nimport useRouter from '@sift/resift/useRouter';\nimport queryString from 'query-string';\nimport _get from 'lodash/get';\nimport _has from 'lodash/has';\nimport { pageSizeOptions } from 'store/searchResults';\nimport usePreserveReference from 'use-preserve-reference';\nimport useEntityTypeConfig from 'helpers/useEntityTypeConfig';\nimport getAttributeValuesFromObject from 'pages/SearchResults/_helpers/getAttributeValuesFromObject';\n\nfunction parseOrDefault(_str: undefined | string | string[], defaultValue: number) {\n if (_str === undefined) {\n return defaultValue;\n }\n\n const str = Array.isArray(_str) ? _str[0] : _str;\n const parsed = parseInt(str, 10);\n\n if (isNaN(parsed)) {\n return defaultValue;\n }\n return parsed;\n}\n\nexport default function useLocationProps(typeKey?: string) {\n const { location } = useRouter();\n const config = useEntityTypeConfig(typeKey);\n\n const query = usePreserveReference(queryString.parse(location.search));\n\n const page = parseOrDefault(query.page, 1);\n const pageSize = parseOrDefault(query.pageSize, pageSizeOptions[0]);\n const q = Array.isArray(query.q) ? query.q[0] : query.q;\n const sortBy = Array.isArray(query.sortBy) ? query.sortBy[0] : query.sortBy;\n const sortDirection = Array.isArray(query.sortDirection)\n ? query.sortDirection[0]\n : query.sortDirection;\n const advancedSearch = query.advancedSearch === 'true';\n const queryParams = queryString.parse(location.search);\n const graphType = queryParams.graphType;\n\n const fields = _get(config, 'fields');\n\n const filters = useMemo(() => {\n return (\n Object.entries(query)\n // (notes - pearl) 'separated' is an arbitrary value that doesn't exist on config fields\n .filter(([key]) => _has(config, ['fields', key]) || key === 'separated')\n .reduce((acc, [fieldKey, _value]) => {\n const value = _value as string | string[];\n const values = Array.isArray(value) ? value : [value];\n\n for (const v of values) {\n acc.push({ fieldKey, value: v });\n }\n\n return acc;\n }, [] as Array<{ fieldKey: string; value: string }>)\n );\n }, [config, query]);\n\n const selectedAttributeValues = getAttributeValuesFromObject(query, fields || {});\n\n const locationProps = {\n q,\n sortBy,\n sortDirection,\n advancedSearch,\n page,\n pageSize,\n filters,\n graphType,\n selectedAttributeValues,\n };\n\n return usePreserveReference(locationProps);\n}\n\nexport type LocationProps = ReturnType;\n","import queryString from 'query-string';\nimport removeFalsyKeys from 'helpers/removeFalsyKeys';\nimport { LocationProps } from 'helpers/useLocationProps';\nimport { pageSizeOptions } from 'store/searchResults';\n\nexport default function stringifyLocationProps({\n q,\n page,\n pageSize,\n sortBy,\n sortDirection,\n advancedSearch,\n filters,\n graphType,\n}: LocationProps) {\n return queryString.stringify(\n removeFalsyKeys({\n q,\n page: page === 1 ? undefined : page,\n pageSize: pageSize && pageSize === pageSizeOptions[0] ? undefined : pageSize,\n sortBy,\n sortDirection,\n advancedSearch: advancedSearch ? 'true' : undefined,\n graphType,\n ...filters.reduce(\n (acc, { value, fieldKey }) => {\n const values = acc[fieldKey] || [];\n values.push(value);\n acc[fieldKey] = values;\n\n return acc;\n },\n {} as { [key: string]: string[] },\n ),\n }),\n );\n}\n","import createReducer from '@sift/resift/createReducer';\nimport moment from 'moment-timezone';\nimport getTimezoneDisplayNames from 'components/TimezoneAndWorkHours/helpers/getTimezoneDisplayNames';\n\nconst PROFILE_SET_PICTURE_INDEX = 'PROFILE_SET_PICTURE_INDEX';\nconst PROFILE_SET_EDITING_PHOTOS = 'PROFILE_SET_EDITING_PHOTOS';\nconst TOGGLE_GENERAL_SETTINGS_MODAL = 'TOGGLE_GENERAL_SETTINGS_MODAL';\nconst TOGGLE_OPEN_VIEW_PROFILE_PICTURES_MODAL = 'TOGGLE_OPEN_VIEW_PROFILE_PICTURES_MODAL';\nconst TOGGLE_AUDIO_EDITOR_MODAL = 'TOGGLE_AUDIO_EDITOR_MODAL';\nconst EDIT_AUDIO_EDITOR = 'EDIT_AUDIO_EDITOR';\n\ninterface AudioEditor {\n base64: any | 'DELETE' | undefined;\n url?: string;\n}\n\nexport interface ProfileState {\n pictureUrlIndex: number;\n editingPhotos: boolean; // this is for BOTH the people profile and entity profiles\n generalSettingsModalOpen: boolean;\n viewProfilePicturesModal: boolean;\n audioEditorModalOpen: boolean;\n timezoneDisplayNames: any;\n audioEditor?: AudioEditor;\n}\n\nexport function setPictureUrlIndex(pictureUrlIndex: number) {\n return {\n type: PROFILE_SET_PICTURE_INDEX,\n payload: pictureUrlIndex,\n };\n}\n\nexport function setEditingPhotos(editingPhotos: boolean) {\n return {\n type: PROFILE_SET_EDITING_PHOTOS,\n payload: editingPhotos,\n };\n}\n\nexport const toggleOpenGeneralSettingsModal = () => {\n return {\n type: TOGGLE_GENERAL_SETTINGS_MODAL,\n };\n};\n\nexport const toggleOpenViewProfilePicturesModal = () => {\n return {\n type: TOGGLE_OPEN_VIEW_PROFILE_PICTURES_MODAL,\n };\n};\n\nexport const toggleAudioEditorModal = () => {\n return {\n type: TOGGLE_AUDIO_EDITOR_MODAL,\n };\n};\n\nexport const editAudioEditor = (audioEditor?: AudioEditor) => {\n return {\n type: EDIT_AUDIO_EDITOR,\n payload: {\n audioEditor,\n },\n };\n};\n\nconst actionHandlers = {\n [PROFILE_SET_PICTURE_INDEX]: (\n state: ProfileState,\n action: ReturnType,\n ) => ({\n ...state,\n pictureUrlIndex: action.payload,\n }),\n [PROFILE_SET_EDITING_PHOTOS]: (\n state: ProfileState,\n action: ReturnType,\n ) => ({\n ...state,\n editingPhotos: action.payload,\n }),\n [TOGGLE_GENERAL_SETTINGS_MODAL]: (state: any) => {\n return {\n ...state,\n generalSettingsModalOpen: !state.generalSettingsModalOpen,\n };\n },\n [TOGGLE_OPEN_VIEW_PROFILE_PICTURES_MODAL]: (state: any) => {\n return {\n ...state,\n viewProfilePicturesModal: !state.viewProfilePicturesModal,\n };\n },\n [TOGGLE_AUDIO_EDITOR_MODAL]: (state: any) => {\n return {\n ...state,\n audioEditorModalOpen: !state.audioEditorModalOpen,\n };\n },\n [EDIT_AUDIO_EDITOR]: (state: any, action: any) => {\n return {\n ...state,\n audioEditor: action.payload.audioEditor,\n };\n },\n};\n\nconst initialState: ProfileState = {\n pictureUrlIndex: 0,\n editingPhotos: false,\n generalSettingsModalOpen: false,\n viewProfilePicturesModal: false,\n audioEditorModalOpen: false,\n audioEditor: undefined,\n timezoneDisplayNames: getTimezoneDisplayNames(moment.tz.guess()),\n};\n\nexport default createReducer(initialState, actionHandlers);\n","import { useMemo, useCallback } from 'react';\nimport _get from 'lodash/get';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\n\nconst defaultTerminology = {\n teamMember: 'team member',\n teamMember_plural: 'team members',\n};\n\nexport default function useTerminology() {\n const terminology = usePassiveRedux((state: any) =>\n _get(state, ['client', 'terminology'], defaultTerminology),\n );\n\n const singular = terminology.teamMember as string;\n const plural = terminology.teamMember_plural as string;\n\n const pluralize = useCallback((count: number) => (count === 1 ? singular : plural), [\n singular,\n plural,\n ]);\n\n return useMemo(\n () => ({\n singular,\n plural,\n pluralize,\n }),\n [singular, plural, pluralize],\n );\n}\n","import React from 'react';\n\n// UI\nimport Loader from 'components/skipper/Loader';\nimport ErrorView from './ErrorView';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { makeStyles } from 'tss-react/mui';\n\nconst useStyles = makeStyles()(() => ({\n root: {\n position: 'relative',\n minHeight: '100px',\n },\n overlay: {},\n overlayTransparent: {},\n}));\n\nexport default ({ ...props }) => {\n const { classes } = useStyles();\n\n return (\n }\n isErrorView={}\n {...props}\n />\n );\n};\n","import * as Types from 'components/Skills/typings';\n\nexport default {\n '100': {\n name: 'Beginner',\n descriptions: {\n you: \"You've started to learn this skill, or have some initial experience.\",\n thirdPerson: ' has started to learn this skill, or has some initial experience.',\n },\n value: 100 as Types.SkillLevel,\n },\n '200': {\n name: 'Intermediate',\n descriptions: {\n you: 'You have a working knowledge, but refer to materials to back you up.',\n thirdPerson: ' has a working knowledge, but refers to materials to back them up.',\n },\n value: 200 as Types.SkillLevel,\n },\n '300': {\n name: 'Advanced',\n descriptions: {\n you: \"You've developed a depth of understanding, and frequently use it to a high standard.\",\n thirdPerson:\n ' has developed a depth of understanding, and frequently uses it to a high standard.',\n },\n value: 300 as Types.SkillLevel,\n },\n '400': {\n name: 'Expert',\n descriptions: {\n you: 'You have authoritative knowledge on the subject, and can act as a reference to others.',\n thirdPerson:\n ' has authoritative knowledge on the subject, and can act as a reference to others.',\n },\n value: 400 as Types.SkillLevel,\n },\n};\n\nexport const levelNameLookup = {\n '100': 'Beginner',\n '200': 'Intermediate',\n '300': 'Advanced',\n '400': 'Expert',\n};\n","import { useData } from 'resift';\nimport * as Sift from '@sift/types';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport useEntityTypeTypeKeyFromUrl from 'helpers/useEntityTypeTypeKeyFromUrl';\nimport makeGetConfiguration from 'fetches/makeGetConfiguration';\n\nfunction useEntityTypeConfig(typeKey?: string): Sift.Configuration {\n const typeKeyFromUrl = useEntityTypeTypeKeyFromUrl();\n const entityTypeTypeKey = typeKey || typeKeyFromUrl;\n const getConfiguration = makeGetConfiguration(entityTypeTypeKey);\n const config = useData(getConfiguration);\n // (notes - Pearl) user config is needed for Big Search\n const userConfig = usePassiveRedux((state: any) => state.configurations.user) as any;\n\n return typeKey === 'user' ? userConfig : config;\n}\n\nexport default useEntityTypeConfig;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport typography from 'helpers/typography';\n\n// Components\nimport Avatar from 'components/atoms/Avatar';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n transition: theme.transitions.create('all'),\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.palette.action.infoHover,\n },\n '&:active': {\n backgroundColor: theme.palette.action.infoActive,\n },\n },\n rootHighlight: {\n backgroundColor: theme.palette.action.infoHover,\n },\n avatar: {\n flex: '0 0 auto',\n width: 40,\n height: 40,\n borderRadius: 99999,\n marginRight: theme.spacing(1),\n },\n name: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: 'initial',\n flex: '0 0 auto',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 200,\n transition: theme.transitions.create('all'),\n },\n title: {\n ...typography(theme, 'body2'),\n flex: '0 0 auto',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 200,\n },\n info: {\n display: 'flex',\n flexDirection: 'column',\n },\n };\n});\n\ninterface Props {\n className?: string;\n pictureUrl: string;\n officialPictureUrl?: string;\n displayName: string;\n title: string;\n isHighlighted: boolean;\n _alternateFieldValues: any;\n}\n\nfunction PersonSuggestion(props: Props) {\n const { className, title, displayName, isHighlighted, _alternateFieldValues } = props;\n const altDisplayName = _get(_alternateFieldValues, 'displayName');\n const { classes } = useStyles();\n\n return (\n \n \n
\n {displayName}\n {altDisplayName && (\n ({altDisplayName})\n )}\n
{title}
\n
\n
\n );\n}\n\nexport default PersonSuggestion;\n","import React, { useCallback } from 'react';\nimport { RemoveProps, MakeOptional } from 'helpers/typings';\nimport { HttpParams } from 'resift';\nimport Autosuggest from 'react-autosuggest';\nimport { TextFieldProps } from '@mui/material/TextField';\nimport PersonAutocomplete from './PersonAutocomplete';\nimport PersonSuggestion from './PersonSuggestion';\nimport _get from 'lodash/get';\nimport _flatten from 'lodash/flatten';\n\ninterface Props\n extends MakeOptional<\n RemoveProps,\n 'classes' | 'className' | 'defaultValue' | 'style' | 'InputProps' | 'inputRef'\n > {\n value: string;\n pageSize?: number;\n renderSuggestion?: React.ComponentType>;\n onChange: (event: React.FormEvent, params: Autosuggest.ChangeEvent) => void;\n onSelectPerson: (person: any) => void;\n filterSuggestions?: (suggestions: any[]) => any[];\n getEndpoint?: (value: string) => HttpParams;\n labelVisuallyHidden?: boolean;\n}\n\nfunction getPeopleFromResults(peopleResult: any) {\n const results = _get(peopleResult, ['results'], []);\n return _flatten(results.map((result: any) => _get(result, ['items'], [])));\n}\n\nfunction Container({\n onSelectPerson,\n pageSize,\n renderSuggestion: renderSuggestionFromProps,\n onChange,\n getEndpoint: getEndpointFromProps,\n ...restOfProps\n}: Props) {\n const getEndpoint = useCallback(\n (value: string) => ({\n method: 'GET' as 'GET',\n route: '/search/people',\n query: {\n q: value,\n pageSize: pageSize ? pageSize.toString() : '5',\n separated: 'false',\n },\n }),\n [pageSize],\n );\n\n const handleChange = (e: any, params: Autosuggest.ChangeEvent) => {\n onChange(e, params);\n };\n\n const handleSuggestionSelected = (_: any, data: any) => {\n const person = data.suggestion;\n onSelectPerson(person);\n };\n\n return (\n person.displayName}\n onChange={handleChange}\n AutosuggestProps={{\n onSuggestionSelected: handleSuggestionSelected,\n highlightFirstSuggestion: true,\n ..._get(restOfProps, ['AutosuggestProps']),\n }}\n {...restOfProps}\n />\n );\n}\n\nexport default Container;\n","import * as Types from 'components/TimezoneAndWorkHours/typings';\n\nimport HomeIcon from '@mui/icons-material/HomeOutlined';\nimport ApartmentIcon from '@mui/icons-material/Apartment';\nimport FlexibleWorkIcon from '@mui/icons-material/MapsHomeWorkOutlined';\n\nexport const AM_PM_FORMAT = 'h:mm A';\n\nexport const WEEK_DAY_NAMES = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n] as Types.WeekDay[];\n\nexport const WEEK_DAY_ABBREVIATIONS = {\n Sunday: 'S',\n Monday: 'M',\n Tuesday: 'T',\n Wednesday: 'W',\n Thursday: 'T',\n Friday: 'F',\n Saturday: 'S',\n};\n\nexport const DEFAULT_WORK_HOURS = {\n startTime: {\n hour: 9,\n minute: 0,\n }, // 9AM\n endTime: {\n hour: 17,\n minute: 0,\n }, // 5PM\n location: 'FLEXIBLE',\n} as Types.WorkHours;\n\nconst DEFAULT_WORK_HOURS_AND_LOCATION_BY_DAY = {\n Sunday: null,\n Monday: {\n day: 1,\n ...DEFAULT_WORK_HOURS,\n },\n Tuesday: {\n day: 2,\n ...DEFAULT_WORK_HOURS,\n },\n Wednesday: {\n day: 3,\n ...DEFAULT_WORK_HOURS,\n },\n Thursday: {\n day: 4,\n ...DEFAULT_WORK_HOURS,\n },\n Friday: {\n day: 5,\n ...DEFAULT_WORK_HOURS,\n },\n Saturday: null,\n} as Types.WorkHoursAndLocationByDay;\n\nexport default DEFAULT_WORK_HOURS_AND_LOCATION_BY_DAY;\n\nexport const INITIAL_WEEK_DAY_EDIT_ERRORS = {\n Sunday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n Monday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n Tuesday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n Wednesday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n Thursday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n Friday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n Saturday: {\n startTime: 0,\n endTime: 0,\n location: 0,\n workSchedule: 0,\n },\n} as Types.WorkHoursEditErrors;\n\nexport const LOCATION_LOOKUP = {\n REMOTE: { icon: HomeIcon, copy: 'Working From Home' },\n OFFICE: { icon: ApartmentIcon, copy: 'In the Office' },\n FLEXIBLE: { icon: FlexibleWorkIcon, copy: 'Flexible' },\n};\n","import { defineFetch } from 'resift';\n\nconst makeGetConfiguration = defineFetch({\n displayName: 'Get entity type configuration',\n // @ts-ignore\n make: (entityTypeTypeKey: string) => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/configurations/${entityTypeTypeKey}`,\n }),\n }),\n});\n\nexport default makeGetConfiguration;\n","// material-ui's popper was buggy and didn't update when elements moved so this Popper was made\nimport React, { useRef, useEffect, useState } from 'react';\nimport { DivProps } from 'helpers/typings';\nimport { createPortal } from 'react-dom';\nimport useInterval from 'helpers/useInterval';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { useTheme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()(() => {\n return {\n root: {\n visibility: 'hidden',\n },\n };\n});\n\ninterface Props extends DivProps {\n className?: string;\n children: React.ReactNode;\n rootRef?: any;\n}\n\nfunction Popper({ className, children, rootRef: externalRootRef, ...restOfProps }: Props) {\n const theme = useTheme();\n const { classes } = useStyles();\n const rootRef = useRef(null);\n const [popperEl, setPopperEl] = useState(null);\n const [top, setTop] = useState(0);\n const [left, setLeft] = useState(0);\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n\n useEffect(() => {\n const popperEl = document.createElement('div');\n document.body.appendChild(popperEl);\n setPopperEl(popperEl);\n\n return () => {\n document.body.removeChild(popperEl);\n };\n }, []);\n\n const handleInterval = () => {\n const rootEl = rootRef.current;\n\n if (!rootEl) {\n return;\n }\n\n const { top, left, width, height } = rootEl.getBoundingClientRect();\n setTop(top);\n setLeft(left);\n setWidth(width);\n setHeight(height);\n };\n\n useInterval(handleInterval, 200);\n\n useEffect(handleInterval, []);\n\n useEffect(() => {\n if (!popperEl) {\n return;\n }\n\n popperEl.style.position = 'fixed';\n popperEl.style.top = `${top.toString()}px`;\n popperEl.style.left = `${left.toString()}px`;\n popperEl.style.width = `${width.toString()}px`;\n popperEl.style.height = `${height.toString()}px`;\n popperEl.style.zIndex = (theme.zIndex.modal + 10).toString();\n }, [top, left, width, height, popperEl, theme]);\n\n const handleRef = (ref: any) => {\n rootRef.current = ref;\n\n if (typeof externalRootRef === 'function') {\n externalRootRef(ref);\n } else if (typeof externalRootRef === 'object') {\n externalRootRef.current = ref;\n }\n };\n\n return (\n <>\n
\n {children}\n
\n {popperEl && createPortal(children, popperEl)}\n \n );\n}\n\nexport default Popper;\n","import React, { useEffect, useMemo } from 'react';\nimport { RemoveProps } from 'helpers/typings';\nimport { HttpParams, useData, useClearFetch, useDispatch } from 'resift';\nimport shortId from 'shortid';\nimport makeAutocompleteFetch from './fetches/autocompleteFetch';\nimport _get from 'lodash/get';\n\n// Components\nimport Autosuggest from 'react-autosuggest'; // 👈 the community typings for this thing are awesome\nimport OutlinedTextField, { OutlinedTextFieldProps } from 'components/molecules/OutlinedTextField';\nimport Paper from '@mui/material/Paper';\nimport Popper from './Popper';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {},\n popper: {\n position: 'relative',\n height: 1,\n },\n suggestionsPaper: {\n position: 'absolute',\n width: '100%',\n minWidth: 200,\n zIndex: theme.zIndex.max,\n },\n suggestionsContainer: {\n width: '100%',\n maxWidth: 350,\n },\n suggestionsContainerOpen: {},\n suggestionsList: {\n margin: 0,\n padding: 0,\n listStyleType: 'none',\n },\n suggestion: {\n display: 'block',\n },\n };\n});\n\n// couldn't use an interface due to typescript limitation\ntype Props = RemoveProps & {\n className?: string;\n fetchDefaultSuggestions?: boolean;\n value: string;\n onChange: (event: React.FormEvent, params: Autosuggest.ChangeEvent) => void;\n getEndpoint: (value: string) => HttpParams;\n getSuggestionsFromResult?: (result: any) => any[];\n getSuggestionValue: (t: any) => string;\n renderSuggestion: React.ComponentType>;\n /**\n * it's possible to override default behavior so don't add the props `onChange`\n * `getSuggestionValue`, or `renderSuggestion`\n */\n // @ts-ignore\n AutosuggestProps?: Partial>;\n postSuggestions?: React.ReactNode;\n onSuggestionSelected?: Autosuggest.OnSuggestionSelected;\n filterSuggestions?: (suggestions: any[]) => any[];\n description?: string;\n labelVisuallyHidden?: boolean;\n};\n\nconst identity = (x: any) => x;\n\nfunction Autocomplete({\n className,\n fetchDefaultSuggestions = false,\n value,\n onChange,\n renderSuggestion: Suggestion,\n getSuggestionsFromResult = identity,\n getEndpoint,\n getSuggestionValue,\n onFocus,\n AutosuggestProps,\n postSuggestions,\n onSuggestionSelected,\n inputProps,\n filterSuggestions,\n description,\n labelVisuallyHidden,\n ...textFieldProps\n}: Props) {\n const { classes } = useStyles();\n const dispatch = useDispatch();\n const clear = useClearFetch();\n\n const instanceId = useMemo(shortId, []);\n const autocompleteFetch = makeAutocompleteFetch(instanceId);\n const result = useData(autocompleteFetch);\n const _suggestions = getSuggestionsFromResult(result) || [];\n const suggestionsFilter = filterSuggestions ? filterSuggestions(_suggestions) : _suggestions;\n const suggestions = [...suggestionsFilter];\n\n if (postSuggestions) {\n suggestions.push('POST_SUGGESTION');\n }\n\n const handleClear = () => {\n clear(autocompleteFetch);\n };\n\n const handleFetch = (e: Autosuggest.SuggestionsFetchRequestedParams) => {\n dispatch(autocompleteFetch(getEndpoint(e.value)));\n };\n\n useEffect(() => {\n if (fetchDefaultSuggestions) {\n dispatch(autocompleteFetch(getEndpoint('')));\n }\n }, [fetchDefaultSuggestions, dispatch, autocompleteFetch, getEndpoint]);\n\n const handleSuggestionSelection = (\n e: any,\n data: Autosuggest.SuggestionSelectedEventData,\n ) => {\n if (data.suggestion === 'POST_SUGGESTION') {\n return;\n }\n\n const autosuggestOnSuggestionSelected = _get(AutosuggestProps, ['onSuggestionSelected']);\n\n if (autosuggestOnSuggestionSelected) {\n autosuggestOnSuggestionSelected(e, data);\n return;\n }\n\n if (onSuggestionSelected) {\n onSuggestionSelected(e, data);\n }\n };\n\n const shimmedGetSuggestionValue = (suggestion: any) => {\n if (suggestion === 'POST_SUGGESTION') {\n return value;\n }\n\n return getSuggestionValue(suggestion);\n };\n\n return (\n fetchDefaultSuggestions || (value || '').trim().length > 0}\n inputProps={{\n value: value || '',\n onChange,\n onFocus,\n }}\n getSuggestionValue={shimmedGetSuggestionValue}\n renderInputComponent={({\n value,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n ...restOfInputProps\n }) => (\n onChange(e, { method: 'type', newValue: e.currentTarget.value })}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n description={description}\n labelVisuallyHidden={labelVisuallyHidden}\n inputProps={{\n 'aria-label': 'autocomplete-input',\n ...restOfInputProps,\n ...inputProps,\n }}\n {...(textFieldProps as any)}\n />\n )}\n onSuggestionsFetchRequested={handleFetch}\n onSuggestionsClearRequested={handleClear}\n renderSuggestion={(autocompleteResult, autosuggestParams) => {\n if (autocompleteResult === 'POST_SUGGESTION') {\n return postSuggestions;\n }\n\n return ;\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n const { ref, ...restOfContainerProps } = containerProps;\n\n return (\n
\n \n {children}\n \n
\n );\n }}\n theme={{\n container: classNames(classes.root, className),\n suggestionsContainer: classes.suggestionsContainer,\n suggestionsContainerOpen: classes.suggestionsContainerOpen,\n suggestionsList: classes.suggestionsList,\n suggestion: classes.suggestion,\n }}\n {...AutosuggestProps}\n onSuggestionSelected={handleSuggestionSelection}\n />\n );\n}\n\nexport default Autocomplete;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'profile fetch',\n share: {\n namespace: 'person',\n merge: (previous, next) => ({\n ...previous,\n ...next,\n }),\n },\n make: (personId: string) => ({\n request: () => ({ http }: any) =>\n http({\n method: 'GET',\n route: `/people/${personId}`,\n query: {\n relationships: true,\n configuration: true,\n pageSize: 1,\n },\n }),\n }),\n});\n","/**\n * takes in a file and returns a base 64 string\n */\nexport default function getBase64(file: File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.addEventListener('load', () => {\n resolve(reader.result as string);\n });\n reader.addEventListener('error', err => {\n reject(err);\n });\n });\n}\n","import { Theme } from '@mui/material/styles';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\n\nexport default function ensurePictureUrl(src: string, theme: Theme) {\n if (!src || src.includes('/placeholders')) {\n return theme.pictureUrl || createPictureUrlFromColor(theme.palette.primary.dark);\n }\n\n return src;\n}\n","import _get from 'lodash/get';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport createPictureUrlFromColor from 'helpers/createPictureUrlFromColor';\nimport { Theme } from '@mui/material/styles';\n\ninterface Person {\n pictureUrl: string;\n officialPictureUrl: string;\n customPictureUrl?: string;\n}\n\nexport default function usePictureUrlFromPerson(person: Person | undefined | null, theme: Theme) {\n const preferOfficialPhotos = usePassiveRedux(state =>\n _get(state, ['settings', 'directory', 'preferOfficialPhotos'], false),\n );\n\n if (!person) {\n return '';\n }\n\n const { pictureUrl, officialPictureUrl = '', customPictureUrl } = person;\n const specialPictureUrl = officialPictureUrl.includes('/placeholders')\n ? theme.pictureUrl ||\n createPictureUrlFromColor(theme.palette.primary.dark) ||\n officialPictureUrl\n : officialPictureUrl || theme.pictureUrl;\n\n if (preferOfficialPhotos) {\n return specialPictureUrl || pictureUrl;\n }\n\n // if customPictureUrl exists, then user has uploaded their own picture and it should default to pictureUrl\n // if not, pictureUrl is not defined and themePictureUrl needs to have priority\n\n return customPictureUrl || specialPictureUrl || pictureUrl;\n}\n","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\nimport Link, { LinkProps } from '@mui/material/Link';\nimport LaunchIcon from '@mui/icons-material/Launch';\n\ninterface Props extends LinkProps {\n href: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst NewTabLink = forwardRef((props: Props, ref: React.Ref) => {\n const isInMsTeams = getIsInMsTeams();\n const { children, className, ...restOfProps } = props;\n const { classes } = useStyles();\n\n return (\n \n {children}\n {isInMsTeams && }\n \n );\n});\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n display: 'inline-flex',\n },\n}));\n\nexport default NewTabLink;\n","import createReducer from '@sift/resift/createReducer';\n\nconst ON_TYPE_LIST_SEARCH = 'ON_TYPE_LIST_SEARCH';\nconst SELECT_LIST_SEARCH_TYPE = 'SELECT_LIST_SEARCH_TYPE';\nconst SELECT_MENU_ITEM = 'SELECT_MENU_ITEM';\n\ninterface State {\n searchValue: string;\n currentSearchOption: string;\n selectedItems: any[];\n}\n\nconst initialState = {\n searchValue: '',\n currentSearchOption: 'List Name',\n selectedItems: [],\n} as State;\n\nexport function handleListSearchType(value: any) {\n return {\n type: ON_TYPE_LIST_SEARCH,\n payload: {\n value,\n },\n };\n}\n\nexport function handleSelectSearchType(value: string) {\n return {\n type: SELECT_LIST_SEARCH_TYPE,\n payload: {\n value,\n },\n };\n}\n\nexport function handleSelectMenuItem(value: any) {\n return {\n type: SELECT_MENU_ITEM,\n payload: {\n value,\n },\n };\n}\n\nconst actionHandlers = {\n [ON_TYPE_LIST_SEARCH]: (state: any, action: any) => {\n return {\n ...state,\n searchValue: action.payload.value,\n };\n },\n [SELECT_LIST_SEARCH_TYPE]: (state: any, action: any) => {\n return {\n ...state,\n currentSearchOption: action.payload.value,\n searchValue: '',\n selectedItems: [],\n };\n },\n [SELECT_MENU_ITEM]: (state: any, action: any) => {\n return {\n ...state,\n searchValue: '',\n selectedItems: action.payload.value,\n };\n },\n};\n\nexport default createReducer(initialState, actionHandlers);\n","import { defineFetch, typedFetchFactory } from 'resift';\nimport _get from 'lodash/get';\nimport * as Sift from '@sift/types';\n\nconst makeOrgChartSettingsFetch = defineFetch({\n displayName: 'Get Org Chart Settings',\n share: { namespace: 'orgChartSettings' },\n make: () => ({\n request: () => async ({ http, getState }) => {\n const state = getState();\n const personId = _get(state, ['authentication', 'person', 'id']);\n\n if (!personId) {\n throw new Error('[orgChartSettingsFetch] could not get logged in user id');\n }\n\n const settings = await http({\n method: 'GET',\n route: `/people/${personId}/settings`,\n });\n\n const { orgChart } = settings.directory;\n\n return orgChart;\n },\n }),\n});\n\nconst typedMakeOrgChartSettingsFetch = typedFetchFactory()(\n makeOrgChartSettingsFetch,\n);\nconst orgChartSettingsFetch = typedMakeOrgChartSettingsFetch();\nexport default orgChartSettingsFetch;\n","import { defineFetch } from 'resift';\nimport removeKeys from 'helpers/removeKeys';\n\nexport default defineFetch({\n displayName: 'upload picture fetch',\n share: {\n namespace: 'person',\n merge: (previous, next) => ({\n ...removeKeys(previous, ['customPictureUrl']),\n ...next,\n }),\n },\n make: (personId: string) => ({\n request: (dataUrl: string) => ({ http }: any) => {\n if (!dataUrl) {\n // delete\n return http({\n method: 'DELETE',\n route: `/people/${personId}/upload?imageType=pictureUrl`,\n });\n } else {\n // post\n const formData = new FormData();\n\n formData.append('file[pictureUrl]', dataUrl);\n\n return http({\n method: 'POST',\n route: `/people/${personId}/upload`,\n data: formData,\n });\n }\n },\n }),\n});\n","import { HttpParams, defineFetch } from 'resift';\n\ninterface FetcherParams {\n http: (httpParams: HttpParams) => Promise;\n}\n\nexport default defineFetch({\n displayName: 'autocomplete fetch',\n make: (instanceId: string) => ({\n key: [instanceId],\n request: (httpParams: HttpParams) => ({ http }: FetcherParams) => http(httpParams),\n }),\n});\n","import React from 'react';\nimport { makeStyles } from 'tss-react/mui';\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\n\nimport LaunchIcon from '@mui/icons-material/Launch';\n\ninterface Props {\n text: string;\n}\n\nfunction NewTabDiv({ text }: Props) {\n const isInMsTeams = getIsInMsTeams();\n const classes = useStyles();\n\n return (\n
\n {text}\n {isInMsTeams && }\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'inline-flex',\n },\n}));\n\nexport default NewTabDiv;\n","import React from 'react';\nimport TextField from '@mui/material/TextField';\n\n/**\n * react-autosuggest/whatever assumes that `inputProps` will be applied\n * to a standard input element. We need to pick off and apply certain props\n * to the root `TextField` component and pass the rest down through the\n * `InputProps` of the `TextField`.\n *\n * To make sure we remain in control of the props available on `TextField`\n * use the `textField` key when creating `inputProps`.\n */\nexport default function renderDefaultTextInput(inputProps: any) {\n const { value, placeholder, autoFocus, textFieldProps, ...otherInputProps } = inputProps;\n\n return (\n \n );\n}\n","import React from 'react';\nimport MenuItem from '@mui/material/MenuItem';\nimport match from 'autosuggest-highlight/match';\nimport parse from 'autosuggest-highlight/parse';\n\nexport default function renderDefaultSuggestion(\n suggestion: string,\n { query, isHighlighted }: { query: string; isHighlighted: boolean },\n) {\n const matches = match(suggestion, query);\n const parts = parse(suggestion, matches);\n\n return (\n \n {parts.map((part, index) => {\n return part.highlight ? (\n \n {part.text}\n \n ) : (\n \n {part.text}\n \n );\n })}\n \n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Paper, { PaperProps } from '@mui/material/Paper';\n\nconst DefaultSuggestionsContainer = ({ containerProps, children }: any, paperProps: PaperProps) => {\n return (\n \n
{children}
\n
\n );\n};\n\nDefaultSuggestionsContainer.propTypes = {\n containerProps: PropTypes.object,\n children: PropTypes.node,\n};\n\nexport default DefaultSuggestionsContainer;\n","import React from 'react';\nimport classnames from 'classnames';\n\n// Components\nimport ReactAutosuggest, { AutosuggestProps as ReactAutosuggestProps } from 'react-autosuggest';\nimport DefaultTextField from './DefaultTextField';\nimport DefaultSuggestion from './DefaultSuggestion';\nimport DefaultSuggestionsContainer from './DefaultSuggestionContainer';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme, useTheme } from '@mui/material/styles';\n\n// @ts-ignore\ninterface Props extends ReactAutosuggestProps {\n className?: string;\n suggestions: any[];\n inputProps: any;\n renderInputComponent?: any;\n renderSuggestion: any;\n onSuggestionsClearRequested: () => void;\n}\n\n/**\n * Skippers Autosuggest is derived from react-autosuggest. This is\n * a convenience wrapper that gives us some simple defaults.\n *\n * For more details on input / component overrides...\n * Look here https://github.com/moroshko/react-autosuggest#inputPropsProp\n */\nconst Autosuggest = (props: Props) => {\n const theme = useTheme();\n const {\n className,\n inputProps = {\n value: '',\n onChange: () => {},\n placeholder: 'Enter a value',\n },\n suggestions = [],\n renderInputComponent = DefaultTextField,\n renderSuggestion = DefaultSuggestion,\n ...other\n } = props;\n const { classes } = useStyles();\n\n const handleSuggestionsClearRequested = () => {\n if (props.onSuggestionsClearRequested) {\n props.onSuggestionsClearRequested();\n }\n };\n\n const getSuggestionValue = (suggestion: T) => {\n return suggestion;\n };\n\n const renderSuggestionsContainer = (containerProps: any) => {\n return DefaultSuggestionsContainer(containerProps, {\n classes: {\n root: classes.suggestionsPaper,\n },\n });\n };\n\n return (\n \n );\n};\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n width: '100%',\n position: 'relative',\n },\n suggestionsPaper: {\n position: 'absolute',\n width: '100%',\n minWidth: 200,\n zIndex: theme.zIndex.max,\n },\n suggestionsContainer: {\n width: '100%',\n },\n suggestionsContainerOpen: {},\n suggestionsList: {\n margin: 0,\n padding: 0,\n listStyleType: 'none',\n },\n suggestion: {\n display: 'block',\n },\n}));\n\nexport default Autosuggest;\n","import hasBadContrast from './hasBadContrast';\nimport ensureColors from './ensureColors';\n\n/**\n * this function requires it be ran through `ensureLightDark`\n */\nexport default function createReadablePalette(palette, onColor) {\n const { originalPrimary, originalSecondary, defaultAccentColor } = ensureColors(palette);\n\n return {\n ...palette,\n primary:\n hasBadContrast(originalPrimary.main, onColor) &&\n hasBadContrast(originalSecondary.main, onColor)\n ? defaultAccentColor\n : hasBadContrast(originalPrimary.main, onColor)\n ? originalSecondary\n : originalPrimary,\n secondary:\n hasBadContrast(originalPrimary.main, onColor) &&\n hasBadContrast(originalSecondary.main, onColor)\n ? defaultAccentColor\n : hasBadContrast(originalSecondary.main, onColor)\n ? originalPrimary\n : originalSecondary,\n originalPrimary: palette.originalPrimary || palette.primary,\n originalSecondary: palette.originalSecondary || palette.secondary,\n };\n}\n","import React from 'react';\nimport { useTheme, Theme } from '@mui/material';\nimport createTheme from './createSkipperTheme';\nimport memoizeLast from '@sift/resift/memoizeLast';\nimport createReadablePalette from 'styles/skipper/createReadablePalette';\n\nimport { ThemeProvider } from '@mui/material/styles';\n\ninterface Props {\n children: React.ReactNode;\n color: string;\n}\n\nfunction ReadableThemedComponent({ children, color }: Props) {\n const theme = useTheme();\n\n const _getOrCalculateFixedTheme = memoizeLast((theme: Theme) => {\n return createTheme({ ...theme, palette: createReadablePalette(theme.palette, color) });\n });\n\n const fixedTheme = _getOrCalculateFixedTheme(theme);\n\n return {children};\n}\n\nexport default ReadableThemedComponent;\n","import { createContextFetch } from 'resift';\nimport orgChartSettingsFetch from 'pages/OrgChart/fetches/orgChartSettingsFetch';\n\nconst {\n useContextFetch: useOrgChartSettings,\n ContextFetchProvider: OrgChartSettingsProvider,\n // @ts-ignore\n} = createContextFetch(orgChartSettingsFetch);\n\nexport { OrgChartSettingsProvider };\nexport default useOrgChartSettings;\n","import { defineFetch } from 'resift';\nimport _get from 'lodash/get';\n\nexport default defineFetch({\n displayName: 'assistants fetch',\n share: {\n namespace: 'person',\n merge: (previous, next) => ({\n ...previous,\n _entityRelationships: {\n ..._get(previous, ['_entityRelationships']),\n ...next,\n },\n }),\n },\n make: (personId: string) => ({\n request: (assistantIds: string[]) => ({ http }: any) =>\n http({\n method: 'POST',\n route: `/people/${personId}/assistants`,\n data: assistantIds.map(id => ({ person: id })),\n }),\n }),\n});\n","import { defineFetch } from 'resift';\nimport _get from 'lodash/get';\n\nexport default defineFetch({\n displayName: 'assistant of fetch',\n share: {\n namespace: 'person',\n merge: (previous, next) => ({\n ...previous,\n _entityRelationships: {\n ..._get(previous, ['_entityRelationships']),\n ...next,\n },\n }),\n },\n make: (personId: string) => ({\n request: (assistantIds: string[]) => ({ http }) =>\n http({\n method: 'POST',\n route: `/people/${personId}/assistantOf`,\n data: assistantIds.map(id => ({ person: id })),\n }),\n }),\n});\n","import moment from 'moment';\nimport pluralize from 'pluralize';\nimport memoizeLast from '@sift/resift/memoizeLast';\n\nfunction getAnniversaryDateContent(anniversaryDate: string) {\n if (!anniversaryDate) {\n return null;\n }\n\n const parsedDate = moment(anniversaryDate, 'MM-DD-YYYY');\n const now = moment();\n\n const years = now.diff(parsedDate, 'years');\n const monthsTotal = now.diff(parsedDate, 'months');\n\n const months = monthsTotal - years * 12;\n\n const yearsPart = years > 0 ? `${years} ${pluralize('years', years)}` : '';\n const _monthsPart = `${months} ${pluralize('months', months)}`;\n\n const monthsPart = (() => {\n if (months > 0) {\n return _monthsPart;\n }\n\n if (yearsPart) {\n return '';\n }\n\n return 'Less than one month';\n })();\n\n const tenure = `${[yearsPart, monthsPart].filter(x => !!x).join(' ')}`;\n const startedDate = parsedDate.format('MMM D, YYYY');\n const tenureWithStartDate = `${tenure}, started on ${startedDate}`;\n\n return {\n tenure,\n tenureWithStartDate,\n };\n}\n\nexport default memoizeLast(getAnniversaryDateContent);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass SeparatedDetailedCopy extends React.PureComponent {\n static propTypes = {\n person: PropTypes.object.isRequired,\n };\n\n render() {\n const { person } = this.props;\n\n if (person.separationImplicit) {\n return 'This is an approximated date based on removal from Sift rather than official data';\n } else {\n return 'This is an exact separation date provided by official data';\n }\n }\n}\n\nexport default SeparatedDetailedCopy;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport SeparatedDetailedCopy from './DetailedCopy';\n\nclass SeparatedDetailDialog extends React.Component {\n static propTypes = {\n person: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n };\n\n state = {\n open: false,\n };\n\n handleClickOpen = () => {\n this.setState({ open: true });\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n render() {\n const { person, children } = this.props;\n\n return (\n \n
{children}
\n \n \n {person.separationImplicit ? 'User Removed from Sift' : 'User Separated'}\n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nexport default SeparatedDetailDialog;\n","export const separatedBackground = {\n // TODO: use theme\n backgroundColor: '#ffe082',\n};\n\nexport const separatedText = {\n // TODO: use theme\n color: '#ed6000',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Chip from 'components/skipper/Chip';\nimport Avatar from '@mui/material/Avatar';\nimport ErrorOutline from '@mui/icons-material/ErrorOutline';\nimport SeparatedCopy from './Copy';\nimport SeparatedDetailDialog from './DetailDialog';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { separatedBackground } from './styles';\n\nfunction SeparatedChip(props) {\n const { person } = props;\n const { classes } = useStyles();\n\n return (\n \n \n \n \n }\n label={}\n />\n \n );\n}\n\nconst useStyles = makeStyles()(() => {\n return {\n root: {\n cursor: 'pointer',\n },\n avatar: {\n backgroundColor: 'transparent',\n },\n icon: { backgroundColor: separatedBackground.backgroundColor },\n chip: {\n backgroundColor: separatedBackground.backgroundColor,\n },\n };\n});\n\nSeparatedChip.propTypes = {\n person: PropTypes.object.isRequired,\n};\n\nexport default SeparatedChip;\n","import createPortal from 'helpers/createPortal';\n\nexport default createPortal('Banner') as any;\n","// copied and pasted from:\n// https://github.com/JustSift/Directory.WebReact/blob/17780b174e36b08ee42311215def62421b4671c8/src/components/Profile/Header/EditPhoto/AvatarCropper/AvatarCropper.js\n// React\nimport React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport Slider from 'react-rangeslider';\nimport AvatarEditor from 'react-avatar-editor';\n\nimport { makeStyles } from 'tss-react/mui';\n\nconst useStyles = makeStyles()(() => {\n return {\n dialogContent: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n },\n };\n});\n\n// Component\nfunction AvatarCropper({ pictureUrl, open, onClose, onCrop }) {\n const { classes } = useStyles();\n const [scale, setScale] = useState(1.2);\n let cropperElement = useRef(null);\n\n const scaleMin = 1;\n const scaleMax = 5;\n\n const handleScaler = value => {\n setScale(value);\n };\n\n const handleCrop = () => {\n if (cropperElement && cropperElement.getImage()) {\n onCrop(cropperElement.getImage().toDataURL('image/jpeg'));\n onClose();\n }\n };\n\n const handleCancel = () => {\n onClose();\n };\n\n if (!pictureUrl) {\n return null;\n }\n\n return (\n \n Crop your photo\n \n
\n {\n cropperElement = el;\n }}\n />\n \n
\n
\n \n \n \n \n
\n );\n}\n\nAvatarCropper.propTypes = {\n open: PropTypes.bool.isRequired,\n pictureUrl: PropTypes.string.isRequired,\n onCrop: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default AvatarCropper;\n","module.exports = {\"ENV\":\"production\",\"API_ENV\":\"\",\"LOGIN\":\"https://login.justsift.com\",\"MICROSOFT_APP_ID\":\"d2a1ed44-6cca-44d2-9b9c-1c9c1d597093\",\"SENTRY\":\"https://58c26d7b3e2447cea01f9a665d597de5@sentry.io/176729\",\"APP_VERSION\":\"4.6.2\",\"APP_NAME\":\"directory-web\",\"STATIC_AUTH_TOKEN\":\"nlelIQm9jRy23SC714DCEIq+oAD6bjG+7xGIBzfhH5Yfo1zq\"}","import createReducer from '@sift/resift/createReducer';\nimport * as Types from 'pages/OrgChart/typings';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SET_PREV_HIGHLIGHT_COLORS_LOOKUP_ARRAY = 'SET_PREV_HIGHLIGHT_COLORS_LOOKUP_ARRAY';\nexport const SET_EXCLUDED_NODE_IDS = 'SET_EXCLUDED_NODE_IDS';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const setPrevHighlightColorsLookupArray = (\n prevHighlightColorsLookupArray: Types.NodeGroupWithColor[],\n) => {\n return {\n type: SET_PREV_HIGHLIGHT_COLORS_LOOKUP_ARRAY,\n identifier: 'orgChart',\n payload: {\n prevHighlightColorsLookupArray,\n },\n };\n};\n\nexport const setExcludedNodeIds = (excludedNodeIds: string[]) => {\n return {\n type: SET_EXCLUDED_NODE_IDS,\n identifier: 'orgChart',\n payload: {\n excludedNodeIds,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SET_PREV_HIGHLIGHT_COLORS_LOOKUP_ARRAY]: (state: any, action: any) => {\n return {\n ...state,\n prevHighlightColorsLookupArray: action.payload.prevHighlightColorsLookupArray,\n };\n },\n [SET_EXCLUDED_NODE_IDS]: (state: any, action: any) => {\n return {\n ...state,\n excludedNodeIds: action.payload.excludedNodeIds,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n prevHighlightColorsLookupArray: null,\n excludedNodeIds: [],\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\n","import readableColor from 'styles/skipper/readableColor';\nimport { oneLine } from 'common-tags';\n\nexport default function createEntityPictureUrlFromColor(primaryColor) {\n const lineColor = readableColor(primaryColor);\n\n return `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(oneLine`\n \n \n Group\n \n \n \n \n \n \n \n \n `)}`;\n}\n","import getSubdomain from 'helpers/getSubdomain';\n\nexport default function subdomainIs(inputSubdomain: string) {\n const subdomain = getSubdomain();\n const normalized = inputSubdomain.trim().toLowerCase();\n\n if (subdomain === normalized) {\n return true;\n }\n if (subdomain === `test-${normalized}`) {\n return true;\n }\n if (normalized === 'foc') {\n return true;\n }\n return false;\n}\n","import React, { useContext, useEffect, useRef } from 'react';\nimport { DivProps } from 'helpers/typings';\nimport PortalContext from 'components/skipper/PortalProvider/context';\n\nexport default function usePortalPlaceholder(Portal: { __portalId: string }) {\n const portalId = Portal.__portalId;\n\n function PortalPlaceholder(props: DivProps) {\n const rootRef = useRef(null);\n const portalContext = useContext(PortalContext);\n\n if (!portalContext) {\n throw new Error('[usePortalPlaceholder] could not find portal context');\n }\n\n const { setContentEl, removeContentEl } = portalContext;\n\n useEffect(() => {\n const rootEl = rootRef.current;\n\n if (!rootEl) {\n throw new Error('[usePortalPlaceholder] rootRef was falsy');\n }\n\n setContentEl(portalId, rootEl);\n\n return () => removeContentEl(portalId);\n }, [setContentEl, removeContentEl]);\n\n return
;\n }\n\n return PortalPlaceholder;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport _get from 'lodash/get';\nimport useRouter from '@sift/resift/useRouter';\nimport useWrap from 'helpers/useWrap';\nimport useAnalytics from 'helpers/useAnalytics';\n\nfunction useFullscreen() {\n const analytics = useAnalytics();\n const { match } = useRouter({ path: '/:page' });\n const page = _get(match, ['params', 'page'], '') as string;\n const [isFullscreen, setIsFullscreen] = useState(false);\n const getIsFullscreen = useWrap(isFullscreen);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n setIsFullscreen(!isFullscreen);\n };\n\n document.addEventListener('fullscreenchange', handleFullscreenChange);\n\n return () => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange);\n };\n }, [isFullscreen]);\n\n const toggleFullscreen = useCallback(() => {\n analytics.track('Fullscreen Clicked', { category: 'OrgChart' });\n\n if (!isFullscreen) {\n document.body.requestFullscreen();\n return;\n }\n\n document.exitFullscreen();\n }, [isFullscreen, analytics]);\n\n useEffect(() => {\n const isFullscreen = getIsFullscreen();\n\n if (isFullscreen) {\n document.exitFullscreen();\n }\n }, [page, getIsFullscreen]);\n\n return {\n toggleFullscreen,\n isFullscreen,\n };\n}\n\nexport default useFullscreen;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport typography from 'helpers/typography';\n\n// UI\nimport Typography from '@mui/material/Typography';\nimport ErrorFaceIcon from 'components/Icons/ErrorFace';\n\nimport { makeStyles } from 'tss-react/mui';\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n },\n icon: {\n width: 300,\n height: 200,\n marginBottom: theme.spacing(),\n },\n title: {\n ...typography(theme, 'h4'),\n marginBottom: theme.spacing(),\n },\n body: {},\n };\n});\n\nfunction ErrorView({ title, body, className }) {\n const { classes } = useStyles();\n const defaultCopy = {\n title: 'Yikes, an error occurred.',\n body: (\n <>\n Try reloading the page, if the\n
\n issue persists then please contact us.\n \n ),\n };\n\n return (\n
\n \n \n {title || defaultCopy.title}\n \n \n {body || defaultCopy.body}\n \n
\n );\n}\n\nErrorView.propTypes = {\n title: PropTypes.node,\n body: PropTypes.node,\n className: PropTypes.object,\n};\n\nexport default ErrorView;\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst Apple2 = props => (\n \n \n \n \n \n \n \n \n);\n\nexport default Apple2;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon';\n\nfunction AddressBook(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n\nexport default AddressBook;\n","// Libs\nimport React, { useState } from 'react';\n\n// UI\nimport { DatePicker as MuiDatePicker } from '@mui/x-date-pickers/DatePicker';\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';\nimport TextField from '@mui/material/TextField';\nimport { PickersDay, pickersDayClasses } from '@mui/x-date-pickers/PickersDay';\n\n// Styles\nimport { useTheme, styled } from '@mui/material/styles';\nimport hasBasContrast from 'styles/skipper/hasBadContrast';\n\nconst CustomTextField = styled(TextField)(({ theme }) => {\n const contrastText = theme.palette.primary.contrastText;\n\n return {\n '& .MuiInput-root': {\n marginRight: theme.spacing(),\n },\n '& label.Mui-focused': {\n color: contrastText,\n },\n '& .MuiInput-input': {\n color: contrastText,\n },\n '& .MuiIconButton-root': {\n color: contrastText,\n },\n '& .MuiInput-underline:before': {\n borderBottomColor: contrastText,\n },\n '& .MuiInput-underline:hover:before': {\n borderBottomColor: contrastText,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: contrastText,\n },\n '& .MuiInput-underline:hover': {\n borderBottomColor: contrastText,\n },\n };\n});\n\nfunction DatePicker({ ...props }) {\n const theme = useTheme();\n const [helperText, setHelperText] = useState(null);\n const hasBadContrastWithPaper = color => hasBasContrast(theme.palette.background.paper, color);\n const { primary, secondary, defaultAccentColor } = theme.palette;\n const contrastColorForPaper = hasBadContrastWithPaper(primary.main)\n ? secondary.main\n : primary.main;\n\n const backgroundColor =\n hasBadContrastWithPaper(primary.main) && hasBadContrastWithPaper(secondary.main)\n ? defaultAccentColor.main\n : contrastColorForPaper;\n\n const renderDayPicker = (_date, _selectedDates, pickersDayProps) => {\n return (\n \n );\n };\n\n return (\n }\n rightArrowIcon={}\n views={['day', 'month', 'year']}\n onError={(reason, value) =>\n reason && value ? setHelperText('Please enter a valid date') : setHelperText(null)\n }\n renderDay={renderDayPicker}\n renderInput={params => (\n \n )}\n {...props}\n />\n );\n}\n\nexport default DatePicker;\n","// Libs\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport DatePicker from './DatePicker';\nimport FormLabel from '@mui/material/FormLabel';\n\n// Style\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport moment from 'moment';\n\nfunction DateRangePicker({ label, value, fromProps, fieldKey, toProps, className, onChange }) {\n const { classes } = useStyles();\n\n const onFieldChange = (key, newValue) => {\n onChange(fieldKey, {\n ...value,\n [key]: newValue,\n });\n };\n\n value = value || {};\n\n return (\n
\n {label}\n
\n onFieldChange('from', value)}\n label=\"Start Date\"\n maxDate={moment(value.to)}\n {...fromProps}\n />\n onFieldChange('to', value)}\n disableFuture\n label=\"End Date\"\n {...toProps}\n />\n
\n
\n );\n}\n\nconst useStyles = makeStyles()(theme => ({\n root: {},\n container: {\n display: 'flex',\n flexDirection: 'row',\n },\n label: {\n color: `${theme.palette.originalPrimary.contrastText} !important`,\n },\n}));\n\nDateRangePicker.propTypes = {\n value: PropTypes.shape({\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n }),\n fieldKey: PropTypes.string,\n label: PropTypes.string,\n onChange: PropTypes.func,\n fromProps: PropTypes.object,\n toProps: PropTypes.object,\n className: PropTypes.string,\n};\n\nexport default DateRangePicker;\n","import React from 'react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport MUITextField from '@mui/material/TextField';\n\ninterface Props {\n fieldKey: string;\n value: string;\n onChange: (event: any) => void;\n}\n\nfunction AutoSuggestTextField({ fieldKey, value, onChange, ...other }: Props) {\n const { classes } = useStyles();\n\n const handleChange = (event: any) => {\n if (event && event.target) {\n onChange(event);\n }\n };\n\n return (\n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n '& input::-ms-clear': {\n display: ' none !important',\n },\n },\n color: {\n color: theme.palette.primary.contrastText,\n },\n underline: {\n '&:after': {\n borderColor: `${theme.palette.primary.contrastText} !important`,\n },\n '&:before': {\n borderColor: `${theme.palette.primary.contrastText} !important`,\n },\n },\n}));\n\nexport default AutoSuggestTextField;\n","// Libs\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport SKPAutosuggest from 'components/skipper/Autosuggest';\nimport AutoSuggestTextField from './AutoSuggestTextField';\n\nimport { withStyles } from 'tss-react/mui';\n\nfunction Autosuggest({\n inputProps,\n fieldKey,\n onSuggestionSelected,\n onSuggestionsFetchRequested,\n ...otherProps\n}) {\n const handleChange = e => {\n inputProps.onChange(fieldKey, e.target.value);\n };\n\n const handleSuggestionSelected = (e, { suggestionValue }) => {\n onSuggestionSelected(fieldKey, suggestionValue);\n };\n\n const handleSuggestionsFetchRequested = ({ value }) => {\n onSuggestionsFetchRequested(fieldKey, value);\n };\n\n const renderInputComponent = inputProps => {\n const { value, autoFocus, textFieldProps, ...otherInputProps } = inputProps;\n\n return (\n \n );\n };\n\n return (\n \n );\n}\n\nconst styles = theme => {\n return {\n suggestionsPaper: {\n marginTop: theme.spacing(1),\n\n // NOTE: This is copied from the textField class\n // in the AdvancedSearchForm component. Figure out\n // a good way to share this logic.\n width: '90%',\n\n [theme.breakpoints.down('lg')]: {\n width: '100%',\n },\n },\n };\n};\n\nAutosuggest.propTypes = {\n inputProps: PropTypes.object,\n fieldKey: PropTypes.string.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n onSuggestionsFetchRequested: PropTypes.func.isRequired,\n};\n\nexport default withStyles(Autosuggest, styles);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\n\nimport MUITextField from '@mui/material/TextField';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction TextField({ value, fieldKey, onChange, ...other }) {\n const { classes } = useStyles();\n\n const handleChange = event => {\n if (event && event.target) {\n onChange(fieldKey, _get(event, 'target.value', ''));\n }\n };\n\n return (\n \n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n '& input::-ms-clear': {\n display: ' none !important',\n },\n marginBottom: theme.spacing(),\n },\n color: {\n color: theme.palette.primary.contrastText,\n },\n underline: {\n '&:after': {\n borderColor: `${theme.palette.primary.contrastText} !important`,\n },\n '&:before': {\n borderColor: `${theme.palette.primary.contrastText} !important`,\n },\n },\n };\n});\n\nTextField.propTypes = {\n fieldKey: PropTypes.string,\n focus: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nexport default TextField;\n","// Libs\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport Grid from '@mui/material/Grid';\nimport DateRangePicker from './DateRangePicker';\nimport Autosuggest from './Autosuggest';\nimport TextField from './TextField';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction AdvancedSearchForm({\n value,\n autocompleteResults = {},\n config,\n onChange,\n fetchAutocomplete,\n}) {\n const { classes } = useStyles();\n\n const onFieldChange = (key, fieldValue) => {\n if (fieldValue === null || fieldValue === '') {\n let nextFormValue = { ...value };\n delete nextFormValue[key];\n onChange(nextFormValue);\n return;\n }\n\n onChange({\n ...value,\n [key]: fieldValue,\n });\n };\n\n const onSuggestionSelected = (fieldKey, fieldValue) => {\n onFieldChange(fieldKey, fieldValue);\n };\n\n const onSuggestionsFetchRequested = (fieldKey, fieldValue) => {\n fetchAutocomplete(fieldKey, fieldValue);\n };\n\n const layout = config.user.layouts['advanced-search'];\n\n if (!layout) {\n return null;\n }\n\n return (\n \n {layout.map((layoutItem, index) => {\n // Get the Field\n const field = config.user.fields[layoutItem.name];\n let fieldView;\n\n // Text\n if (field.input.type !== 'date') {\n fieldView = (\n \n );\n\n if (layoutItem.autoComplete) {\n // AUTOCOMPLETE\n fieldView = (\n \n );\n }\n }\n // Date\n else {\n fieldView = (\n \n );\n }\n\n return (\n \n {fieldView}\n \n );\n })}\n \n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n msFlexFlow: 'row wrap',\n [theme.breakpoints.up('md')]: {\n maxHeight: 400,\n },\n '& label': {\n color: `${theme.palette.primary.contrastText} !important`,\n },\n },\n gridItem: {\n marginBottom: theme.spacing(1),\n\n [theme.breakpoints.down('lg')]: {\n display: 'flex',\n justifyContent: 'center',\n },\n },\n textField: {\n width: '90%',\n\n [theme.breakpoints.down('lg')]: {\n width: '100%',\n },\n },\n };\n});\n\nAdvancedSearchForm.propTypes = {\n value: PropTypes.object,\n autocompleteResults: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n fetchAutocomplete: PropTypes.func,\n config: PropTypes.object,\n};\n\nexport default AdvancedSearchForm;\n","import { connect } from 'react-redux';\nimport AdvancedSearchForm from './AdvancedSearchForm';\n\nconst mapStateToProps = state => ({\n config: state.configurations,\n});\n\nconst mapDispatchToProps = {};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AdvancedSearchForm);\n","// React and Components\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport useAnalytics from 'helpers/useAnalytics';\n\n// Style\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport hasBadContrast from 'styles/skipper/hasBadContrast';\nimport readableColor from 'styles/skipper/readableColor';\nimport { transparentize } from 'polished';\n\nconst useStyles = makeStyles()(theme => {\n const { primary, action } = theme.palette;\n const disabledBackgroundColor = hasBadContrast(action.disabled, primary.main)\n ? transparentize(0.1, readableColor(primary.main))\n : action.disabled;\n\n return {\n root: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: theme.spacing(4),\n\n '& > button': {\n marginLeft: theme.spacing(1),\n },\n },\n clearButton: {\n color: primary.contrastText,\n },\n searchButton: {},\n searchButtonDisabled: {\n backgroundColor: disabledBackgroundColor,\n color: `${transparentize(0.6, readableColor(primary.main))} !important`,\n },\n };\n});\n\nfunction SearchFooter(props) {\n const { clearSearch, onSearch, disabled } = props;\n const { classes } = useStyles();\n const analytics = useAnalytics();\n\n const handleClick = () => {\n analytics.track('Clicked to execute Advanced Search', {\n category: 'Big Search',\n });\n\n onSearch();\n };\n\n const handleClearForm = () => {\n clearSearch();\n };\n\n return (\n
\n \n \n Search\n \n
\n );\n}\n\nSearchFooter.propTypes = {\n clearSearch: PropTypes.func,\n onSearch: PropTypes.func,\n disabled: PropTypes.bool,\n};\n\nexport default SearchFooter;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\nimport useAnalytics from 'helpers/useAnalytics';\n\n// Components\nimport Grid from '@mui/material/Grid';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport Button from '@mui/material/Button';\nimport AdvancedSearchForm from './AdvancedSearchForm';\nimport SearchFooter from './SearchFooter';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction AdvancedSearch({\n onClose,\n autocompleteResults,\n fetchFieldAutocomplete,\n onSearch,\n ...other\n}) {\n const { classes } = useStyles();\n const analytics = useAnalytics();\n const [formValue, setFormValue] = useState({});\n\n const clearSearch = () => {\n setFormValue({});\n };\n\n const handleFormChange = value => {\n setFormValue(value);\n };\n\n const handleSubmit = e => {\n e.preventDefault();\n\n analytics.track('Hit Enter to execute Advanced Search', {\n category: 'Big Search',\n });\n\n handleSearch();\n };\n\n const handleSearch = () => {\n onSearch(formValue);\n };\n\n return (\n
\n \n \n
Advanced Search
\n
\n }\n >\n Back\n \n
\n
\n
\n \n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n marginTop: 100,\n marginBottom: 50,\n [theme.breakpoints.down('lg')]: {\n marginTop: 0,\n padding: theme.spacing(2),\n },\n },\n title: {\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n alignItems: 'center',\n ...typography(theme, 'h2'),\n fontWeight: 500,\n color: theme.palette.primary.contrastText,\n\n [theme.breakpoints.down('lg')]: {\n ...typography(theme, 'h5'),\n color: theme.palette.primary.contrastText,\n },\n },\n };\n});\n\nAdvancedSearch.propTypes = {\n autocompleteResults: PropTypes.object,\n fetchFieldAutocomplete: PropTypes.func,\n onClose: PropTypes.func.isRequired,\n onSearch: PropTypes.func.isRequired,\n};\n\nexport default AdvancedSearch;\n","import React, { memo, useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport useAction from '@sift/resift/useAction';\nimport useRouter from '@sift/resift/useRouter';\n\nimport { fetchFieldAutocomplete } from 'store/advancedSearch';\nimport getDerivedLocationFromProps from 'pages/SearchResults/_helpers/getDerivedLocationFromProps';\nimport getAttributeValuesFromObject from 'pages/SearchResults/_helpers/getAttributeValuesFromObject';\n\n// Components\nimport AdvancedSearch from './AdvancedSearch';\n\nconst Container = memo(props => {\n const { history } = useRouter();\n const autocompleteResults = useSelector(state => state.advancedSearch.objects);\n const fields = usePassiveRedux(state => state.configurations.user.fields);\n\n const handleSearch = useCallback(\n obj => {\n const selectedAttributeValues = getAttributeValuesFromObject(obj, fields);\n history.push(\n getDerivedLocationFromProps({\n selectedAttributeValues,\n advancedSearch: true,\n }),\n );\n },\n [fields, history],\n );\n\n return (\n \n );\n});\n\nexport default Container;\n","import { createContext } from 'react';\n\nconst LayoutContext = createContext(null);\nLayoutContext.displayName = 'Layout';\n\nexport default LayoutContext;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport typography from 'helpers/typography';\nimport LayoutContext from 'components/BigSearch/Results/LayoutContext';\n\nimport { makeStyles } from 'tss-react/mui';\n\n// Components\nimport Chip from 'components/skipper/Chip';\n\n/**\n * A standard Big Search results column.\n *\n * ______________________\n * | Title Action |\n * ------------------------\n * | |\n * | Items |\n * | |\n * ------------------------\n *\n * Columns wrapping this should follow\n * an API similar to the `ResultColumn`\n * which uses `result`, `query`.\n */\nfunction Column(props) {\n const { title, action, children, itemsStyle, isTopMatch } = props;\n const layout = useContext(LayoutContext);\n const { classes } = useStyles({ title, layout });\n const isSkillOrInterest = title === 'Skills' || title === 'Interests';\n\n const titleContent = () => {\n if (isSkillOrInterest) {\n const color = title.toLowerCase();\n\n return ;\n }\n\n return title;\n };\n\n return (\n
\n \n
{titleContent()}
\n {action}\n
\n
\n {children}\n
\n
\n );\n}\n\nconst useStyles = makeStyles()((theme, { title, layout }) => {\n let itemsHeight = layout.maxColumnHeight();\n const primaryMainColor = theme.palette.primary.main.toLowerCase();\n const skillsMainColor = theme.palette.skills.main.toLowerCase();\n const interestsMainColor = theme.palette.interests.main.toLowerCase();\n const shouldApplySkillsBorder = title === 'Skills' && primaryMainColor === skillsMainColor;\n const shouldApplyInterestsBorder =\n title === 'Interests' && primaryMainColor === interestsMainColor;\n\n return {\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n topMatch: {\n marginLeft: 20,\n },\n header: {\n ...typography(theme, 'body2'),\n fontWeight: theme.typography.fontWeightBold,\n display: 'flex',\n alignItems: 'center',\n flex: '0 0 auto',\n color: theme.palette.primary.contrastText,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(3),\n textTransform: 'uppercase',\n '& > :first-of-type': {\n flex: '1 1 auto',\n },\n },\n chip: {\n border: shouldApplySkillsBorder\n ? `1px solid ${theme.palette.skills.contrastText}`\n : shouldApplyInterestsBorder\n ? `1px solid ${theme.palette.interests.contrastText}`\n : 'inherit',\n },\n chipMargin: {\n marginBottom: theme.spacing(1.25),\n },\n items: {\n display: 'flex',\n flexFlow: 'column wrap',\n flex: '1 1 auto',\n maxHeight: itemsHeight,\n height: '100%',\n overflowY: 'visible',\n [theme.breakpoints.down('sm')]: {\n maxHeight: 'none',\n height: 'inherit',\n },\n },\n };\n});\n\nColumn.propTypes = {\n title: PropTypes.string,\n action: PropTypes.node,\n children: PropTypes.node,\n itemsStyle: PropTypes.object,\n isTopMatch: PropTypes.bool,\n};\n\nexport default Column;\n","import { transparentize, getLuminance } from 'polished';\nimport readableColor from 'styles/skipper/readableColor';\n\nexport default function styles(theme) {\n const { primary, common } = theme.palette;\n\n return {\n components: {\n card: {\n transition: `background-color ${theme.transitions.duration.standard}ms`,\n backgroundColor:\n getLuminance(primary.main) > 0.2\n ? transparentize(0.9, '#000')\n : transparentize(0.9, common.white),\n color: primary.contrastText,\n '&:hover': {\n backgroundColor: primary.dark,\n color: readableColor(primary.dark),\n },\n '&:focus': {\n backgroundColor: primary.dark,\n color: readableColor(primary.dark),\n },\n '&:active': {\n backgroundColor:\n getLuminance(primary.main) > 0.2\n ? transparentize(0.8, '#000')\n : transparentize(0.8, common.white),\n color: primary.contrastText,\n },\n },\n },\n };\n}\n","import React, { memo, useContext } from 'react';\nimport LayoutContext from 'components/BigSearch/Results/LayoutContext';\nimport PropTypes from 'prop-types';\nimport useAnalytics from 'helpers/useAnalytics';\n\n// Action\nimport { updateRecentSearches } from 'store/search';\nimport { useDispatch } from 'react-redux';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport classnames from 'classnames';\nimport bigSearchStyles from '../../styles';\n\n/**\n * Basic Big Search Item.\n *\n * All items should be passed through this component\n * so that styles can be shared, analytics tracked and\n * recent searches update.\n */\nfunction Item({\n rows = 1,\n analyticsCardObject,\n analyticsIconObject,\n recentSearchObject,\n className,\n style,\n children,\n iconRecentSearchObject,\n icon,\n}) {\n const { classes } = useStyles();\n const analytics = useAnalytics();\n const dispatch = useDispatch();\n const layout = useContext(LayoutContext);\n\n const onClick = () => {\n if (recentSearchObject) {\n dispatch(updateRecentSearches(recentSearchObject));\n }\n if (analyticsCardObject)\n analytics.track(analyticsCardObject.event, analyticsCardObject.properties);\n };\n\n const onIconClick = () => {\n if (iconRecentSearchObject) {\n dispatch(updateRecentSearches(iconRecentSearchObject));\n }\n if (analyticsIconObject)\n analytics.track(analyticsIconObject.event, analyticsIconObject.properties);\n };\n\n let itemStyle = {\n height: layout.heightForRows(rows),\n ...style,\n };\n\n return icon ? (\n \n \n {children}\n \n {icon && icon(onIconClick)}\n \n ) : (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles()(theme => {\n const bigSearch = bigSearchStyles(theme);\n\n return {\n root: {\n ...bigSearch.components.card,\n fontSize: theme.typography.h6.fontSize,\n fontWeight: theme.typography.fontWeightRegular,\n borderRadius: '5px',\n display: 'flex',\n marginBottom: '2px',\n padding: theme.spacing(1),\n },\n container: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n };\n});\n\nItem.propTypes = {\n rows: PropTypes.number,\n analyticsCardObject: PropTypes.object,\n analyticsIconObject: PropTypes.object,\n recentSearchObject: PropTypes.object,\n className: PropTypes.string,\n style: PropTypes.object,\n children: PropTypes.node,\n iconRecentSearchObject: PropTypes.object,\n icon: PropTypes.func,\n};\n\nexport default memo(Item);\n","import PropTypes from 'prop-types';\n\nexport default {\n value: PropTypes.object,\n fieldKey: PropTypes.string,\n field: PropTypes.string,\n analyticsLabel: PropTypes.string,\n query: PropTypes.string,\n classes: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getDerivedLocationFromProps from 'pages/SearchResults/_helpers/getDerivedLocationFromProps';\n\n// Utils\nimport { Link } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport classnames from 'classnames';\n\n/**\n * Want to search? Use this link!\n *\n * This component is wrapping `react-router-dom`s `Link` component. Checkout\n * its API for additional props that are available.\n */\nfunction SearchLink(props) {\n const { value, fieldKey, classes: classesFromProps, className, children, ...otherProps } = props;\n const { classes } = useStyles(undefined, { props: { classes: classesFromProps } });\n\n if (typeof value === 'object') {\n return null;\n }\n\n const isFieldKeyQuery = fieldKey === 'q' || fieldKey === 'query';\n\n const to = isFieldKeyQuery\n ? `/search?q=${value}`\n : getDerivedLocationFromProps({\n selectedAttributeValues: [\n {\n attributeDisplayName: fieldKey,\n attributeKey: fieldKey,\n key: fieldKey + value,\n value: value,\n },\n ],\n });\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles()(theme => ({\n root: {\n color: theme.palette.text.primary,\n cursor: 'pointer',\n textDecoration: 'none',\n },\n}));\n\nSearchLink.propTypes = {\n value: PropTypes.any,\n fieldKey: PropTypes.string.isRequired,\n classes: PropTypes.object,\n to: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nexport default SearchLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport { default as DefaultHighlighter } from 'components/Highlighter';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction Highlighter(props) {\n const { children, className, ...otherProps } = props;\n const { classes } = useStyles();\n\n return (\n \n {children}\n \n );\n}\nconst useStyles = makeStyles()(theme => {\n return {\n highlight: {\n fontWeight: theme.typography.fontWeightBlack,\n letterSpacing: '1px',\n color: theme.palette.matched.main,\n },\n };\n});\n\nHighlighter.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nexport default Highlighter;\n","// React\nimport React from 'react';\nimport typography from 'helpers/typography';\nimport { makeStyles } from 'tss-react/mui';\n\n// UI Components\nimport Item from './Item';\nimport ResultItemPropTypes from './ResultItemPropTypes';\nimport SearchLink from 'components/Link/SearchLink';\nimport Highlighter from './Highlighter';\nimport Terminology from 'components/Terminology';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\nimport { SKIP_TRANSLATE_FIELDS } from 'helpers/consts';\n\n// Component\nfunction AggregateItem({ value, fieldKey, query }) {\n const count = value.count;\n const { classes } = useStyles();\n const ValueComponent = SKIP_TRANSLATE_FIELDS.includes(fieldKey) ? SkipTranslate : 'div';\n\n return (\n \n \n \n \n {value.value}\n \n \n
\n
{`${count} matching\\u00A0`}
\n 1 ? 'teamMember_plural' : 'teamMember'}\n casing=\"capitalize\"\n />\n
\n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n textDecoration: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'center',\n paddingLeft: theme.spacing(1),\n },\n linkRoot: {\n width: '100%',\n },\n text: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightBold,\n color: 'inherit',\n lineHeight: 1.65,\n display: 'flex',\n alignItems: 'center',\n paddingLeft: theme.spacing(1),\n maxWidth: '100%',\n height: '50%',\n },\n count: {\n ...typography(theme, 'body2'),\n lineHeight: 1.35,\n color: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n highlighter: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n bottomRow: {\n display: 'flex',\n marginLeft: theme.spacing(),\n },\n };\n});\n\nAggregateItem.propTypes = ResultItemPropTypes;\n\nexport default AggregateItem;\n","// React\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Column from '../Column';\nimport AggregateItem from '../../Items/AggregateItem';\n\nclass AggregatesColumn extends PureComponent {\n static propTypes = {\n result: PropTypes.object,\n query: PropTypes.string,\n onItemSelect: PropTypes.func,\n config: PropTypes.object.isRequired,\n };\n\n render() {\n const { result, query, config, ...otherProps } = this.props;\n\n const field = config.user.fields[result.field];\n\n if (!field) {\n return null;\n }\n\n return (\n \n {result.items.map(item => (\n \n ))}\n \n );\n }\n}\n\nexport default AggregatesColumn;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport AggregatesColumn from './AggregatesColumn';\n\nfunction Container(props) {\n const config = useSelector(state => state.configurations);\n\n return ;\n}\n\nexport default Container;\n","// React\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\nimport { makeStyles } from 'tss-react/mui';\n\n// UI\nimport Highlighter from './Highlighter';\n\nfunction ItemInfo({ title, subtitle, query, topRightIcon }) {\n const { classes } = useStyles();\n\n let highlighterProps = useMemo(\n () => ({\n find: [query],\n }),\n [query],\n );\n return (\n
\n
\n \n {title}\n \n {topRightIcon || null}\n
\n
\n {subtitle}\n
\n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n justifyContent: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n padding: `0 ${theme.spacing(2)}`,\n },\n title: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightBold,\n color: 'inherit',\n lineHeight: 1.35,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n },\n subOverflow: {\n flex: '1 1 auto',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n subtitle: {\n ...typography(theme, 'body2'),\n lineHeight: 1.35,\n color: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n };\n});\n\nItemInfo.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n query: PropTypes.string,\n topRightIcon: PropTypes.node,\n};\n\nexport default ItemInfo;\n","import React from 'react';\nimport pluralize from 'pluralize';\nimport stringifyLocationProps from 'helpers/stringifyLocationProps';\nimport useLocationProps from 'helpers/useLocationProps';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport useRouter from '@sift/resift/useRouter';\n\n// UI\nimport Item from './Item';\nimport ItemInfo from './ItemInfo';\nimport { Link } from 'react-router-dom';\nimport Avatar from 'components/atoms/Avatar';\nimport AddressBookIcon from 'components/Icons/AddressBook';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\n\ninterface Props {\n value: { name: string; id: string; pictureUrl: string; peopleCount: number };\n field: string;\n query: string;\n analyticsLabel: string;\n}\n\nfunction EntityItem({ value, field, query, analyticsLabel }: Props) {\n const { classes } = useStyles();\n const locationProps = useLocationProps('user');\n const { history } = useRouter();\n const isFieldKeyQuery = field === 'q' || field === 'query';\n const fieldKey = `${field}.id`;\n\n const handleViewMembersInDirectory = (e: React.MouseEvent) => {\n e.preventDefault();\n const directoryPathname = isFieldKeyQuery\n ? `/search?q=${value.name}`\n : `/search?${stringifyLocationProps({\n ...locationProps,\n filters: [{ fieldKey, value: value.id }],\n })}`;\n history.push(directoryPathname);\n };\n\n return (\n \n 0\n ? (onClick: () => void) => (\n
\n \n \n \n \n \n
\n )\n : null\n }\n >\n \n \n \n \n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => ({\n root: {\n display: 'flex',\n overflow: 'hidden',\n },\n linkRoot: {\n width: '100%',\n },\n icon: {\n fill: theme.palette.primary.contrastText,\n },\n}));\n\nexport default EntityItem;\n","// React\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Column from './Column';\nimport EntityItem from '../Items/EntityItem';\n\nclass EntitiesColumn extends PureComponent {\n static propTypes = {\n result: PropTypes.object,\n query: PropTypes.string,\n onItemSelect: PropTypes.func,\n };\n\n render() {\n const { result, query, ...otherProps } = this.props;\n\n return (\n \n {result.items.map((item, index) => (\n \n ))}\n \n );\n }\n}\n\nexport default EntitiesColumn;\n","// React\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\nimport { makeStyles } from 'tss-react/mui';\nimport classNames from 'classnames';\n\n// UI\nimport Highlighter from './Highlighter';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\nfunction ItemInfo({ displayName, altDisplayName, title, query, topRightIcon }) {\n const { classes } = useStyles();\n\n let highlighterProps = useMemo(\n () => ({\n find: [query],\n }),\n [query],\n );\n\n return (\n
\n \n
\n \n {displayName}\n \n {altDisplayName && (\n
\n \n {altDisplayName}\n \n
\n )}\n
\n {topRightIcon || null}\n \n\n
\n {title}\n
\n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n justifyContent: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n padding: `0 ${theme.spacing(2)}`,\n },\n displayName: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightBold,\n color: 'inherit',\n lineHeight: 1.35,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n },\n altName: {\n ...typography(theme, 'body2'),\n },\n withAltName: {\n marginBottom: theme.spacing(0.4),\n },\n subOverflow: {\n flex: '1 1 auto',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n title: {\n ...typography(theme, 'body2'),\n lineHeight: 1.35,\n color: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n };\n});\n\nItemInfo.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n query: PropTypes.string,\n topRightIcon: PropTypes.node,\n};\n\nexport default ItemInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Tooltip from '@mui/material/Tooltip';\nimport ErrorOutline from '@mui/icons-material/ErrorOutline';\nimport SeparatedCopy from './Copy';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction SeparatedIcon({ className, person }) {\n const { classes } = useStyles();\n\n return (\n }>\n \n \n );\n}\n\nconst useStyles = makeStyles()(() => {\n return {\n icon: {\n // TODO: use theme\n color: '#ffd436',\n },\n };\n});\n\nSeparatedIcon.propTypes = {\n person: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nexport default SeparatedIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\nimport { useTheme } from '@mui/material/styles';\nimport getPictureUrl from 'helpers/getPictureUrl';\n\n// Components\nimport MuiAvatar from '@mui/material/Avatar';\n\nimport { makeStyles } from 'tss-react/mui';\nimport classnames from 'classnames';\n\n/**\n * A Persons active avatar. In some configurations an official photo\n * and a custom photo are available to people. This component will\n * be connected to the store to make sure the proper setting is respected\n * and the correct photo is shown.\n */\nfunction Avatar({ size, person, showBorder, className, ...other }) {\n const { classes } = useStyles();\n const { root, border, background, ...avatarClasses } = classes;\n const theme = useTheme();\n const preferOfficialPhotos = useSelector(state =>\n _get(state, 'settings.directory.preferOfficialPhotos', false),\n );\n const officialPictureUrl = person.officialPictureUrl;\n const _pictureUrl = getPictureUrl(\n person.pictureUrl,\n officialPictureUrl,\n preferOfficialPhotos,\n theme,\n );\n\n const name =\n person.firstName && person.lastName\n ? `${person.firstName[0]} ${person.lastName[0]}`\n : person.displayName[0];\n\n return (\n
\n \n
\n );\n}\n\nAvatar.propTypes = {\n /**\n * Person to display photo for.\n */\n person: PropTypes.object.isRequired,\n /**\n * Photo size. We prefere a size prop over size styling to\n * have control over the size of the image that is requested\n * from the API.\n */\n size: PropTypes.number.isRequired,\n /**\n * In most cases we display a white border around the avatar. But\n * in some cases the border will not show up so we allow it to be\n * disabled. Defaults to `true`.\n */\n showBorder: PropTypes.bool,\n /**\n * Defaults to `false` .\n */\n className: PropTypes.string,\n};\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n position: 'relative',\n },\n background: {\n backgroundColor: theme.palette.primary.main,\n },\n border: {\n border: `2px solid ${theme.palette.common.white}`,\n },\n };\n});\n\nexport default Avatar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport { Link } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport classnames from 'classnames';\n\n/**\n * Need to link to a Person/User/Profile thing? Use m3!\n *\n * This component is wrapping `react-router-dom`s `Link` component. Checkout\n * its API for additional props that are available.\n */\nfunction PersonLink(props) {\n let {\n to,\n person,\n classes: classesFromProps,\n className,\n children,\n staticContext,\n ...otherProps\n } = props;\n const { classes } = useStyles(undefined, { props: { classes: classesFromProps } });\n\n if (!to) {\n to = `/profile/${person.id}`;\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n color: theme.palette.textColor,\n cursor: 'pointer',\n textDecoration: 'none !important',\n '&:hover': {\n color: theme.palette.accent1Color,\n },\n },\n };\n});\n\nPersonLink.propTypes = {\n person: PropTypes.object.isRequired,\n classes: PropTypes.object,\n to: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n // from react-router\n staticContext: PropTypes.any,\n};\n\nexport default PersonLink;\n","// React\nimport React from 'react';\nimport _get from 'lodash/get';\nimport { useHistory } from 'react-router';\nimport typography from 'helpers/typography';\n\n// UI\nimport Item from './Item';\nimport PersonItemInfo from './PersonItemInfo';\nimport ResultItemPropTypes from './ResultItemPropTypes';\nimport SeparatedIcon from 'components/People/Separated/Icon';\nimport Org from 'components/Icons/Org';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport Avatar from 'components/People/Avatar';\nimport PersonLink from 'components/Link/PersonLink';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction PersonItem(props) {\n const { value: person, fieldKey, query, ...otherProps } = props;\n const { classes } = useStyles();\n const history = useHistory();\n const { id, displayName, title, separationDate, _alternateFieldValues } = person;\n const altDisplayName = _get(_alternateFieldValues, 'displayName');\n\n const routeToOrgChart = e => {\n e.preventDefault();\n history.push({\n pathname: `/orgchart/${id}`,\n });\n };\n\n const matched = _get(person, '_matchedOn', [])\n .map(match => match.field)\n .join(', ');\n\n return (\n \n (\n
\n \n \n \n \n \n
\n )}\n >\n \n\n \n ) : null\n }\n query={query}\n />\n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n display: 'flex',\n overflow: 'hidden',\n },\n linkRoot: {\n width: '100%',\n },\n border: {\n border: `1px solid ${theme.palette.common.white}`,\n },\n text: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n },\n rightIcon: {\n fill: theme.palette.primary.contrastText,\n },\n };\n});\n\nPersonItem.propTypes = ResultItemPropTypes;\n\nexport default PersonItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSnackbar } from 'notistack';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport readableColor from 'styles/skipper/readableColor';\n\nimport { makeStyles } from 'tss-react/mui';\nimport classNames from 'classnames';\n\nimport IconButton from '@mui/material/IconButton';\nimport CopyIcon from '@mui/icons-material/FileCopyOutlined';\n\n/**\n * Want to link to an attributes action? Use this link!\n *\n * This component is wrapping `react-router-dom`s `Link` component. Checkout\n * its API for additional props that are available.\n */\nfunction FieldLink(props) {\n let {\n value,\n fieldType,\n classes: classesFromProps,\n className,\n children,\n closeSnackbar,\n themed,\n handleClickChildren,\n handleClickCopyIcon,\n ...otherProps\n } = props;\n const { classes } = useStyles(undefined, { props: { classes: classesFromProps } });\n const { enqueueSnackbar } = useSnackbar();\n\n const handleCopy = () => {\n if (handleClickCopyIcon) handleClickCopyIcon();\n enqueueSnackbar(`“${value}” copied to clipboard!`, {\n variant: 'success',\n });\n };\n\n let to = null;\n\n switch (fieldType) {\n case 'email':\n to = `mailto:${value}`;\n break;\n case 'phoneNumber':\n if (typeof value !== 'string') {\n to = `tel:`;\n } else {\n to = `tel:${value.replace(/[^\\d]/g, '')}`;\n }\n break;\n case 'phone':\n if (typeof value !== 'string') {\n to = `tel:`;\n } else {\n to = `tel:${value.replace(/[^\\d]/g, '')}`;\n }\n break;\n case 'link':\n otherProps = {\n ...otherProps,\n target: '_blank',\n };\n if (typeof value !== 'string') {\n to = `#`;\n } else {\n if (!value.match(/http/i)) {\n to = `http://${value}`;\n } else {\n to = value;\n }\n }\n break;\n case 'hyperlink':\n otherProps = {\n ...otherProps,\n target: '_blank',\n rel: 'noopener noreferrer',\n };\n if (typeof value !== 'string') {\n to = `#`;\n } else {\n if (!value.match(/http/i)) {\n to = `http://${value}`;\n } else {\n to = value;\n }\n }\n break;\n case 'presence':\n to = `im:sip:${value}`;\n break;\n\n default:\n break;\n }\n\n return (\n
\n \n {children}\n \n \n \n \n \n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => ({\n root: {\n color: theme.palette.text.primary,\n cursor: 'pointer',\n textDecoration: 'none',\n padding: theme.spacing(0.5),\n display: 'flex',\n alignItems: 'center',\n },\n fieldContent: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n iconButton: { marginLeft: theme.spacing(0.5) },\n copyIcon: {\n width: 16,\n height: 16,\n },\n themedCopyIcon: {\n color: readableColor(theme.palette.primary.dark),\n },\n}));\n\nFieldLink.propTypes = {\n value: PropTypes.any.isRequired,\n fieldType: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.node,\n themed: PropTypes.bool,\n handleClickChildren: PropTypes.func,\n handleClickCopyIcon: PropTypes.func,\n};\n\nexport default FieldLink;\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nfunction EmailIcon(props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default EmailIcon;\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst OfficePhone = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default OfficePhone;\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst SmartPhone = props => (\n \n \n \n \n \n \n \n);\n\nexport default SmartPhone;\n","// React\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport { useHistory } from 'react-router';\nimport useAnalytics from 'helpers/useAnalytics';\nimport typography from 'helpers/typography';\n\n// Components\nimport Item from '../Item';\nimport PersonLink from 'components/Link/PersonLink';\nimport FieldLink from 'components/Link/FieldLink';\nimport Avatar from 'components/People/Avatar';\nimport SeparatedChip from 'components/People/Separated/Chip';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Highlighter from 'components/Highlighter';\n\n// Icons\nimport Org from 'components/Icons/Org';\nimport Email from 'components/Icons/Email';\nimport OfficePhone from 'components/Icons/OfficePhone';\nimport SmartPhone from 'components/Icons/SmartPhone';\n\nimport { makeStyles } from 'tss-react/mui';\nimport { lighten, transparentize } from 'polished';\nimport readableColor from 'styles/skipper/readableColor';\nimport bigSearch from '../../../styles';\n\n// Component\nfunction ProfileCard({ value, config, query }) {\n const history = useHistory();\n const analytics = useAnalytics();\n const { classes } = useStyles();\n\n const track = label => {\n analytics.track('Profile Opened in Top Match', {\n category: 'Big Search',\n label: label,\n });\n };\n\n const contactItemClicked = label => {\n analytics.track('Top Match Contact Item Clicked', {\n category: 'Big Search',\n label: label,\n });\n };\n\n const contactIconClicked = label => {\n analytics.track('Top Match Contact Info Copied', {\n category: 'Big Search',\n event: label,\n });\n };\n\n const routeToOrgChart = e => {\n e.preventDefault();\n history.push({\n pathname: `/orgchart/${value.id}`,\n });\n analytics.track('Org Chart Opened in Top Match', {\n category: 'Big Search',\n label: query,\n });\n };\n\n const routeToProfile = (e, matchedFields) => {\n e.preventDefault();\n history.push({\n pathname: `/profile/${value.id}`,\n });\n analytics.track('Profile Opened in Top Match', {\n category: 'Big Search',\n label: matchedFields,\n });\n };\n\n const flattenFields = (config, categoryKey = 'user_contact') => {\n let fields = [];\n config.user.categories[categoryKey].children.forEach(child => {\n // Field\n if (child.type === 'field') {\n fields.push(config.user.fields[child.name]);\n }\n // Category\n else if (child.type === 'category' && !isCategoryBlackListed(child.name)) {\n fields = fields.concat(flattenFields(config, child.name));\n }\n });\n\n return fields;\n };\n\n const iconType = (type, displayType, style) => {\n if (type !== 'phone' && type !== 'email') return null;\n\n if (type === 'phone' && displayType === 'cellPhone') {\n return ;\n }\n\n if (type === 'phone' && displayType !== 'cellPhone') {\n return ;\n }\n\n if (type === 'email') {\n return ;\n }\n };\n\n const matched = _get(value, '_matchedOn', []);\n const matchedFields = matched.map(match => match.field).join(', ');\n const directReports = _get(value, 'directReportCount', 0);\n\n let cardContent = flattenFields(config).reduce((acc, field) => {\n let fieldValue = value[field.objectKey];\n\n if (!fieldValue) {\n return acc;\n }\n acc.push(\n \n \n
\n
\n {iconType(field.type, field.display.type, classes.icon)}\n
\n
\n
{field.displayName}
\n
\n contactItemClicked(field.displayName)}\n handleClickCopyIcon={() => contactIconClicked(field.displayName)}\n >\n {fieldValue}\n \n
\n
\n
\n
,\n );\n\n return acc;\n }, []);\n\n cardContent.unshift(\n \n
\n
\n \n
\n
\n
Direct Reports
\n
{directReports}
\n
\n \n
\n
,\n );\n\n if (value.separationDate) {\n cardContent = (\n <>\n
\n \n
\n
\n \n );\n }\n\n const altDisplayName = _get(value, ['_alternateFieldValues', 'displayName']);\n\n return (\n
\n \n \n \n \n \n
track(matchedFields)}>\n \n \n \n \n {altDisplayName && (\n \n )}\n \n
{value.title}
\n
{value.division}
\n
\n
\n
{cardContent}
\n
\n routeToProfile(e, matchedFields)}\n >\n Profile\n \n
\n \n
\n );\n}\n\nfunction isCategoryBlackListed(blackListKey) {\n const blackList = {\n user_messengers: true, // TODO: This needs to be removed when messenger categories are rethought. This is a small fix for preventing a sip address from displaying on the exact match card\n };\n\n return blackList[blackListKey];\n}\n\nconst useStyles = makeStyles()((theme, _params, classes) => {\n const bigSearchStyles = bigSearch(theme);\n\n return {\n root: {\n ...bigSearchStyles.components.card,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n padding: theme.spacing(2),\n position: 'relative',\n '&:active, &:focus': {\n backgroundColor: theme.palette.primary.dark,\n color: readableColor(theme.palette.primary.dark),\n },\n '& a': {\n color: readableColor(theme.palette.primary.main),\n },\n '&:hover a': {\n color: readableColor(theme.palette.primary.dark),\n },\n [`&:hover .${classes.contentDivider}`]: {\n borderColor: lighten(0.1, theme.palette.primary.dark),\n },\n transition: 'background-color 200ms',\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n '&:hover': {\n background: 'none !important',\n },\n minHeight: 80,\n },\n headerContent: {\n display: 'flex',\n justifyContent: 'center',\n flexFlow: 'column',\n marginLeft: '15px',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingLeft: theme.spacing(10),\n },\n headerContentName: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: 1.35,\n color: 'inherit',\n marginBottom: theme.spacing(0.5),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n headerContentAltName: {\n ...typography(theme, 'subtitle2'),\n marginBottom: theme.spacing(0.5),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n headerContentTitle: {\n ...typography(theme, 'body2'),\n lineHeight: 1.35,\n color: 'inherit',\n marginBottom: theme.spacing(0.5),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n headerContentSubtitle: {\n ...typography(theme, 'body2'),\n lineHeight: 1.35,\n color: 'inherit',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n separatedArea: {\n padding: '20px 0px',\n },\n content: {\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n overflowY: 'auto',\n paddingTop: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n },\n contentDivider: {\n borderColor: theme.palette.primary.main,\n marginLeft: theme.spacing(5),\n },\n contentItem: {\n display: 'flex',\n flex: '1 1 auto',\n minHeight: 44,\n alignItems: 'flex-start',\n margin: theme.spacing(1, 0),\n overflow: 'hidden',\n },\n contentItemLabels: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n overflow: 'hidden',\n },\n contentItemIcon: {\n flex: '0 0 auto',\n display: 'flex',\n justifyContent: 'center',\n marginRight: theme.spacing(2),\n },\n directReportcontentItem: {\n flex: '0 0 auto',\n display: 'flex',\n justifyContent: 'center',\n marginRight: theme.spacing(2),\n alignItems: 'space-between',\n },\n contentItemTitle: {\n ...typography(theme, 'caption'),\n fontWeight: theme.typography.fontWeightBold,\n color: 'inherit',\n },\n contentItemValue: {\n ...typography(theme, 'body1'),\n color: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n\n '& > div': {\n ...typography(theme, 'body1'),\n cursor: 'pointer',\n textDecoration: 'none',\n color: 'inherit',\n },\n },\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n avatarContainer: {\n top: -20,\n left: -20,\n position: 'absolute',\n zIndex: theme.zIndex.surface,\n },\n cardContainer: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n iconAndLabelContainer: {},\n orgIcon: {\n height: 24,\n width: 24,\n fill: transparentize(0.4, theme.palette.primary.contrastText),\n },\n icon: {\n fill: transparentize(0.4, theme.palette.primary.contrastText),\n },\n goToOrgIcon: {\n fill: theme.palette.primary.contrastText,\n },\n };\n});\n\nProfileCard.propTypes = {\n value: PropTypes.object.isRequired,\n config: PropTypes.object.isRequired,\n query: PropTypes.string.isRequired,\n};\n\nexport default ProfileCard;\n","import { connect } from 'react-redux';\n\nimport PersonCardItem from './PersonCardItem';\n\nconst mapStateToProps = state => ({\n config: state.configurations,\n});\n\nconst mapDispatchToProps = {};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(PersonCardItem);\n","// React\nimport React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Column from './Column';\nimport PersonItem from '../Items/PersonItem';\nimport PersonCardItem from '../Items/PersonCardItem';\nimport LayoutContext from 'components/BigSearch/Results/LayoutContext';\n\nimport { makeStyles } from 'tss-react/mui';\n\nfunction PeopleColumn(props) {\n const { result, query, columns, width, ...otherProps } = props;\n const { classes } = useStyles();\n\n // NOTE: If the height of PersonItem changes, the number of people displayed will likely need\n // to update\n const peopleToDisplay = result.items.slice(0, 10);\n const layout = useContext(LayoutContext);\n const isTopMatch = result.items.length === 1 && columns === 1;\n const personItemWidth =\n result.items.length <= 5 && window.innerWidth < 959\n ? '100%'\n : `calc(100% / ${columns} - ${columns === 1 ? 0 : layout.itemPadding * 8}px)`;\n const showMargin =\n (window.innerWidth < 959 && result.items.length <= 5) || window.innerWidth < 600;\n\n const nextClasses = { ...classes };\n if (!isTopMatch) {\n delete nextClasses.items;\n }\n\n return (\n \n {isTopMatch ? (\n \n ) : (\n peopleToDisplay.map((item, index) => (\n \n ))\n )}\n \n );\n}\n\nconst useStyles = makeStyles()(() => {\n return {\n items: {\n maxHeight: 'none',\n height: 'inherit',\n },\n };\n});\n\nPeopleColumn.propTypes = {\n result: PropTypes.object,\n query: PropTypes.string,\n width: PropTypes.number,\n onItemSelect: PropTypes.func,\n columns: PropTypes.number.isRequired,\n};\n\nexport default PeopleColumn;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport { Link } from 'react-router-dom';\n\nimport { makeStyles } from 'tss-react/mui';\nimport classnames from 'classnames';\n\n/**\n * Need to link to an Entity thing? Use m3!\n *\n * This component is wrapping `react-router-dom`s `Link` component. Checkout\n * its API for additional props that are available.\n */\nfunction EntityLink({ to, entity, classes: classesFromProps, className, children, ...otherProps }) {\n const { classes } = useStyles(undefined, { props: { classes: classesFromProps } });\n\n if (!to) {\n to = `/entities/${entity.id}`;\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n color: theme.palette.textColor,\n cursor: 'pointer',\n textDecoration: 'none !important',\n '&:hover': {\n color: theme.palette.accent1Color,\n },\n },\n };\n});\n\nEntityLink.propTypes = {\n entity: PropTypes.any.isRequired,\n classes: PropTypes.object,\n to: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nexport default EntityLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _last from 'lodash/last';\nimport _get from 'lodash/get';\nimport typography from 'helpers/typography';\n\n// UI\nimport CloseIcon from '@mui/icons-material/Close';\nimport Item from './Item';\nimport EntityLink from 'components/Link/EntityLink';\nimport PersonLink from 'components/Link/PersonLink';\nimport SearchLink from 'components/Link/SearchLink';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\nimport { makeStyles } from 'tss-react/mui';\nimport readableColor from 'styles/skipper/readableColor';\n\n/**\n * Recent searches differ from other items used in big search results in that\n * we expect a value but no field key. The value has a type property which will\n * include a partial object of that type.\n */\nfunction RecentSearchItem({ value, index, deleteSearch }) {\n const { classes } = useStyles();\n\n let LinkElem = null;\n let linkText = null;\n let linkProps = {};\n\n const handleDeleteSearch = e => {\n e.preventDefault();\n deleteSearch(index);\n };\n\n // Person\n if (value.type === 'person') {\n LinkElem = PersonLink;\n linkProps = { person: value };\n linkText = {value.displayName};\n }\n // Entity\n else if (value.type === 'entity') {\n LinkElem = EntityLink;\n linkProps = { entity: value };\n linkText = value.displayName;\n }\n // Aggregate (mayyyybe)\n else if (value.type === 'search') {\n let _value = { ...value.query };\n delete _value.page;\n const key = _last(Object.keys(_value));\n const displayName = _get(value, 'displayName');\n\n if (!key) {\n console.warn('Recent Search \"search\" value invalid.'); // eslint-disable-line\n return null;\n }\n\n if (!_value[key]) {\n return null;\n }\n\n LinkElem = SearchLink;\n linkProps = { value: _value[key], fieldKey: key };\n linkText = displayName ?? _value[key];\n }\n\n const LinkTextComponent = !value.query?.q ? 'div' : SkipTranslate;\n\n return (\n \n (\n
\n \n
\n )}\n classes={{ root: classes.root }}\n >\n {linkText}\n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n textTransform: 'capitalize',\n textDecoration: 'none',\n color: theme.palette.primary.contrastText,\n borderRadius: 4,\n '&:hover': {\n color: readableColor(theme.palette.primary.dark),\n },\n },\n linkRoot: {\n width: '100%',\n },\n text: {\n ...typography(theme, 'special', 'body1Bold'),\n color: 'inherit',\n flex: '1 1 auto',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n display: 'block',\n },\n icon: {\n flex: '0 0 auto',\n justifyContent: 'center',\n marginRight: '5px',\n },\n };\n});\n\nRecentSearchItem.propTypes = {\n value: PropTypes.shape({\n type: PropTypes.string.isRequired,\n }),\n index: PropTypes.number,\n deleteSearch: PropTypes.func,\n};\n\nexport default RecentSearchItem;\n","// React\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Button from '@mui/material/Button';\n\nimport Column from '../Column';\nimport RecentSearchItem from '../../Items/RecentSearchItem';\nimport { makeStyles } from 'tss-react/mui';\nimport bigSearchStyles from '../../../styles';\n\nfunction RecentSearchesColumn(props) {\n const { result, deleteRecentSearch, deleteRecentSearches, ...otherProps } = props;\n const { classes } = useStyles();\n\n return (\n \n Clear All\n \n }\n {...otherProps}\n >\n {result.items.map((item, index) => (\n \n ))}\n \n );\n}\n\nconst useStyles = makeStyles()(theme => {\n const bigSearch = bigSearchStyles(theme);\n return {\n button: {\n color: bigSearch.components.card.color,\n marginTop: -theme.spacing(2),\n },\n };\n});\n\nRecentSearchesColumn.propTypes = {\n result: PropTypes.object,\n deleteRecentSearch: PropTypes.func.isRequired,\n deleteRecentSearches: PropTypes.func.isRequired,\n};\n\nexport default RecentSearchesColumn;\n","// Libs\nimport { connect } from 'react-redux';\n\n// Actions\nimport { deleteRecentSearches, deleteRecentSearch } from 'store/search';\n\nimport Component from './RecentSearchesColumn';\n\nconst mapDispatchToProps = {\n deleteRecentSearch: deleteRecentSearch,\n deleteRecentSearches: deleteRecentSearches,\n};\n\nexport default connect(\n null,\n mapDispatchToProps,\n)(Component);\n","// React\nimport typography from 'helpers/typography';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\n\n// Components\nimport Grid from '@mui/material/Grid';\nimport columnForResult from './Columns/columnForResult';\nimport Layout from './LayoutContext';\n\nimport createLayout from './createLayout';\nimport { makeStyles } from 'tss-react/mui';\nimport useWidth from 'helpers/useWidth';\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n minHeight: 476,\n marginBottom: theme.spacing(3),\n },\n buttonRowIcon: {\n borderRadius: '50%',\n background: theme.palette.accent1Color,\n padding: '2px 4px',\n marginRight: '10px',\n },\n buttonRowContent: {\n ...typography(theme, 'h6'),\n },\n defaultColumn: {\n padding: theme.spacing(2),\n },\n marginBottomSpace: {},\n removeGridMargin: {\n marginBottom: 0,\n marginTop: 0,\n },\n };\n});\n\n/**\n * Results renderer for Big Search.\n *\n * This component is eventually composed of Columns and Items. Each `Item`\n * is able to determine its own height based upon its size. We want to\n * keep a uniform height for all `Items`, see `./createLayout.js` for more info.\n */\nfunction Results({ query, results }) {\n const { classes, theme } = useStyles();\n const width = useWidth();\n const layout = createLayout(theme);\n\n /**\n * Begins rendering our result columns.\n *\n * Note that we currently only support 3 result columns\n * and we constrain the view to a standard 12 column flex grid.\n *\n * Each result column will receive a column size per the number\n * of results.\n */\n const renderColumns = (results, query) => {\n const widthCalc = result => {\n if (width === 'xs') return 1;\n return layout.numberOfColumnsInResult(result);\n };\n\n return (\n \n {results.map((result, index) => (\n \n {columnForResult(result, {\n query: query,\n columns: widthCalc(result),\n })}\n \n ))}\n \n );\n };\n\n const renderView =\n _get(results, '[0].type') === 'people' && !_get(results, '[0].totalLength')\n ? null\n : renderColumns(results, query);\n\n return (\n
\n {renderView}\n
\n );\n}\n\nResults.propTypes = {\n query: PropTypes.string,\n results: PropTypes.array,\n};\n\nexport default Results;\n","/**\n * Layout\n *\n * Results are laid out with `Columns` and `Items`. The results are generally\n * constrained to a specific height. In order to take advantage of Flex layouts\n * we need to constrain the height of our containers and the height of our\n * individual items.\n *\n * Columns are already constrained to grid widths.\n *\n * This object helps us dynamically calculate this.\n */\nexport default function createLayout(theme) {\n const NUMBER_OF_ITEMS = 10;\n\n const props = {\n baseItemHeight: 32,\n interItemSpacing: 2,\n itemPadding: 4,\n maxRows: NUMBER_OF_ITEMS,\n };\n\n function heightForRows(size) {\n return this.baseItemHeight * size + this.interItemSpacing * (size - 1);\n }\n\n function maxColumnHeight(size = 3) {\n // (notes - pearl) calculating column height by heightForRows * items per column\n return (this.baseItemHeight * size + this.interItemSpacing * size) * (NUMBER_OF_ITEMS / 2);\n }\n\n function numberOfColumnsInResult(result) {\n let columns = 1;\n\n switch (result.type) {\n case 'aggregates':\n columns = 1;\n break;\n case 'entities':\n columns = 1;\n break;\n case 'recentSearch':\n columns = 1;\n break;\n case 'people':\n columns = result.items.length > 1 ? 2 : 1;\n break;\n default:\n break;\n }\n\n return columns;\n }\n\n return {\n heightForRows,\n maxColumnHeight,\n numberOfColumnsInResult,\n ...props,\n };\n}\n","import React from 'react';\n\nimport AggregatesColumn from './AggregatesColumn';\nimport EntitiesColumn from './EntitiesColumn';\nimport PeopleColumn from './PeopleColumn';\nimport RecentSearchesColumn from './RecentSearchesColumn';\n\nexport default (result, props = {}) => {\n let Component = null;\n\n switch (result.type) {\n case 'aggregates':\n Component = AggregatesColumn;\n break;\n\n case 'entities':\n Component = EntitiesColumn;\n break;\n\n case 'people':\n Component = PeopleColumn;\n break;\n\n case 'recentSearches':\n Component = RecentSearchesColumn;\n break;\n\n default:\n return null;\n }\n if (!Component) return null;\n return ;\n};\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst MagnifyingGlass = props => (\n \n \n \n \n \n \n \n \n \n \n);\n\nexport default MagnifyingGlass;\n","// React\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\n\n// Components\nimport MagnifyingGlass from 'components/Icons/MagnifyingGlass';\nimport Button from '@mui/material/Button';\n\nimport { makeStyles } from 'tss-react/mui';\nimport readableColor from 'styles/skipper/readableColor';\n\nfunction NoResults({ query, onShowAdvancedSearch, onClearSearch }) {\n const { classes } = useStyles();\n\n return (\n
\n \n
\n
{`We couldn't find anything for `}
\n
{`\"${query}\"`}
\n
\n
Try our advanced search to specify your search
\n \n \n
\n );\n}\n\nconst useStyles = makeStyles()(theme => {\n return {\n root: {\n display: 'flex',\n flexFlow: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: 100,\n '& > button': {\n margin: theme.spacing(1),\n },\n },\n icon: {\n width: '50px',\n height: '50px',\n fill: readableColor(theme.palette.primary.main),\n },\n showEllipsis: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n maxWidth: '300px',\n marginLeft: theme.spacing(0.5),\n [theme.breakpoints.down('md')]: {\n marginLeft: 0,\n },\n },\n header: {\n ...typography(theme, 'h6'),\n color: theme.palette.primary.contrastText,\n marginTop: '20px',\n marginBottom: '12px',\n display: 'flex',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n alignItems: 'center',\n },\n },\n subheader: {\n ...typography(theme, 'subtitle1'),\n color: theme.palette.primary.contrastText,\n marginBottom: '32px',\n },\n clearSearchButton: {\n color: theme.palette.common.black,\n },\n };\n});\n\nNoResults.propTypes = {\n query: PropTypes.string,\n onClearSearch: PropTypes.func,\n onShowAdvancedSearch: PropTypes.func,\n};\n\nexport default NoResults;\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nconst AdvancedSearchIcon = props => (\n \n \n \n);\n\nexport default AdvancedSearchIcon;\n","// React\nimport React, { useState, useRef, useEffect } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport typography from 'helpers/typography';\n\n// UI\nimport Button from '@mui/material/Button';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AdvancedSearchIcon from 'components/Icons/AdvancedSearchIcon';\nimport Cancel from '@mui/icons-material/Cancel';\nimport { transparentize } from 'polished';\nimport bowser from 'bowser';\n\nimport { makeStyles } from 'tss-react/mui';\nimport readableColor from 'styles/skipper/readableColor';\nimport hasBadContrast from 'styles/skipper/hasBadContrast';\nimport classNames from 'classnames';\nimport useWidth from 'helpers/useWidth';\n\nconst useStyles = makeStyles()(theme => {\n const size = 80;\n const tabletSize = 60;\n const mobileSize = 30;\n const { primary, secondary, defaultAccentColor } = theme.palette;\n const inputBackground = transparentize(0.5, theme.palette.primary.dark);\n const isIE = bowser.name === 'Internet Explorer';\n\n return {\n root: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n color: primary.contrastText,\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(5),\n [theme.breakpoints.down('md')]: {\n fontSize: tabletSize,\n },\n [theme.breakpoints.down('sm')]: {\n fontSize: mobileSize,\n },\n },\n inputContainer: {\n flex: '1 1 auto',\n display: 'flex',\n boxShadow: '0 0 0px 0px rgba(216, 196, 229, 0.24)',\n transition: 'box-shadow 0.3s ease',\n backgroundColor: inputBackground,\n borderRadius: 4,\n },\n inputContainerFocused: {\n boxShadow: `0 0 9px 2px ${transparentize(0.7, readableColor(theme.palette.primary.main))}`,\n },\n input: {\n ...typography(theme, 'display6'),\n fontFamily: 'Source Sans Pro',\n outline: 'none',\n position: 'relative',\n zIndex: theme.zIndex.surface,\n background: 'none',\n border: 'none',\n fontWeight: 'bold',\n fontSize: size, // Very unique font-size and font-weight combination\n padding: `${theme.spacing(1)} 0px`,\n '&::-ms-clear': {\n display: ' none !important',\n },\n width: '100%',\n color: primary.contrastText,\n caretColor: hasBadContrast(secondary.main, primary.main)\n ? defaultAccentColor.main\n : secondary.main,\n minWidth: 0, // fixes firefox overflow bug\n [theme.breakpoints.down('md')]: {\n fontSize: tabletSize,\n },\n [theme.breakpoints.down('sm')]: {\n fontSize: mobileSize,\n },\n },\n placeholder: {\n marginTop: theme.spacing(1),\n position: 'absolute',\n fontSize: size,\n display: 'flex',\n alignItems: 'center',\n fontWeight: theme.typography.fontWeightBold,\n top: isIE ? 5 : 0,\n left: 72,\n // https://docs.google.com/spreadsheets/d/1_3f851fdUA7Gq7veGMynWfrvD3PV9VFlxN9DL_by0yU/edit?usp=sharing\n opacity: readableColor(primary.main) === '#000' ? 0.5 : 0.73,\n zIndex: theme.zIndex.surface,\n [theme.breakpoints.down('md')]: {\n fontSize: tabletSize,\n // center placeholder text\n top: isIE ? 3 : 0,\n left: 62,\n },\n [theme.breakpoints.down('sm')]: {\n fontSize: mobileSize,\n bottom: 9,\n left: 40,\n },\n },\n searchIcon: {\n width: size / 2,\n height: size / 2,\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(1),\n [theme.breakpoints.down('md')]: {\n width: mobileSize,\n height: mobileSize,\n },\n [theme.breakpoints.down('sm')]: {\n width: size / 4,\n height: size / 4,\n marginBottom: 5,\n marginLeft: 10,\n marginRight: 10,\n },\n },\n searchIconContainer: {\n display: 'flex',\n alignItems: 'center',\n zIndex: theme.zIndex.surface,\n flex: '1 0 auto',\n borderRadius: 1,\n },\n buttonContainer: {\n display: 'flex',\n alignItems: 'center',\n flex: '1 0 auto',\n borderRadius: 1,\n },\n searchButton: {\n marginRight: theme.spacing(4),\n width: 160,\n [theme.breakpoints.down('md')]: {\n width: 110,\n marginRight: theme.spacing(3),\n },\n [theme.breakpoints.down('sm')]: {\n width: 110,\n marginRight: theme.spacing(1.25),\n },\n },\n advancedSearchButtonContainer: {\n width: 232, // specific width need for advanced search animation\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n [theme.breakpoints.down('md')]: {\n width: 50, // specific width need for advanced search animation\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n display: 'flex',\n },\n [theme.breakpoints.down('sm')]: {\n width: 35, // specific width need for advanced search animation\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n display: 'flex',\n },\n },\n clearIconContainer: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: theme.spacing(2),\n flex: '1 0 auto',\n },\n clearIcon: {\n height: size / 2,\n width: size / 2,\n cursor: 'pointer',\n opacity: 1,\n transition: 'opacity 0.3s ease',\n [theme.breakpoints.down('md')]: {\n height: mobileSize,\n width: mobileSize,\n },\n [theme.breakpoints.down('sm')]: {\n height: size / 4,\n width: size / 4,\n cursor: 'pointer',\n opacity: 1,\n transition: 'opacity 0.3s ease',\n },\n },\n hideClearIcon: {\n cursor: 'default',\n opacity: 0,\n },\n advancedSearchIconContainer: {\n cursor: 'pointer',\n display: 'flex',\n },\n advancedSearchButtonContainerAnimate: {\n width: 0,\n },\n advancedSearchIcon: {\n [theme.breakpoints.down('md')]: {\n width: 30,\n height: 30,\n marginTop: 5,\n },\n [theme.breakpoints.down('sm')]: {\n width: 24,\n height: 24,\n marginTop: 5,\n },\n },\n };\n});\n\nfunction SearchInput({\n value,\n handleClear,\n onChange,\n handleShowAdvancedSearchClick,\n onSearch,\n ...inputProps\n}) {\n const { classes } = useStyles();\n const width = useWidth();\n const [isFocused, setFocus] = useState(false);\n const inputRef = useRef(null);\n const analytics = useAnalytics();\n\n useEffect(function onMount() {\n inputRef.current.focus();\n inputRef.current.select();\n }, []);\n\n const buttonSize = {\n xs: 'small',\n sm: 'medium',\n md: 'medium',\n lg: 'large',\n };\n\n const handleSearch = () => {\n analytics.track('Searched by Click', {\n category: 'Big Search',\n label: value,\n });\n\n onSearch();\n };\n\n return (\n
\n \n
inputRef.current.focus()}>\n \n
\n setFocus(true)}\n onBlur={() => setFocus(false)}\n onChange={onChange}\n {...inputProps}\n name={'bigSearch'}\n aria-label=\"search-input\"\n />\n
\n \n
\n
\n \n Search\n \n 0,\n })}\n >\n {width === 'xs' || width === 'sm' ? (\n \n \n
\n ) : (\n \n Advanced Search\n \n )}\n
\n
\n \n {value.length === 0 && (\n {\n const inputEl = inputRef.current;\n if (!inputEl) return;\n inputEl.focus();\n }}\n >\n Search\n \n )}\n \n );\n}\n\nexport default SearchInput;\n\n// `;-. ___,\n// `.`\\_...._/`.-\"`\n// \\ / ,\n// /() () \\ .' `-._\n// |) . ()\\ / _.'\n// \\ -'- ,; '. <\n// ;.__ ,;| > \\\n// / , / , |.-'.-'\n// (_/ (_/ ,;|.<`\n// \\ , ;-`\n// > \\ /\n// (_,-'`> .'\n// (_,'\n// You found pikachu !!!\n","// React\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useHistory } from 'react-router';\nimport typography from 'helpers/typography';\n\n// UI\nimport SearchInput from './SearchInput';\n\nimport { makeStyles } from 'tss-react/mui';\nimport bigSearch from './styles';\nimport { transparentize } from 'polished';\nimport { SEARCH_PATH } from 'components/search/consts';\n\nconst useStyles = makeStyles()(theme => {\n const bigSearchStyles = bigSearch(theme);\n\n return {\n root: {\n display: 'flex',\n flexDirection: 'column',\n color: theme.palette.primary.contrastText,\n marginTop: theme.spacing(1),\n flex: '0 0 auto',\n },\n titleRow: {\n ...typography(theme, 'h6'),\n color: transparentize(0.4, theme.palette.primary.contrastText),\n flex: '1 0 auto',\n marginBottom: theme.spacing(1),\n },\n inputRow: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(2),\n },\n subtitleRow: {\n flex: '1 0 auto',\n marginBottom: 5,\n minHeight: 72,\n ...typography(theme, 'body2'),\n fontWeight: theme.typography.fontWeightNormal,\n },\n inputContainer: {\n paddingRight: 0,\n },\n suggestionChip: {\n ...bigSearchStyles.components.card,\n userSelect: 'none',\n cursor: 'pointer',\n borderRadius: 5,\n display: 'inline-flex',\n height: 25,\n alignItems: 'center',\n margin: theme.spacing(1),\n padding: theme.spacing(1),\n textTransform: 'capitalize',\n },\n };\n});\n\nfunction SearchRow({\n suggestions,\n onShowAdvancedSearch,\n query,\n updateRecentSearches,\n fetchAutocomplete,\n updateQuery,\n clearQuery,\n}) {\n const analytics = useAnalytics();\n const history = useHistory();\n const { classes } = useStyles();\n\n useEffect(() => {\n const q = query.trim();\n\n if (!q) {\n return;\n }\n\n fetchAutocomplete({\n q,\n useAggregateCounts: true,\n filterAggregate: true,\n });\n }, [fetchAutocomplete, query]);\n\n const handleEnter = () => {\n if (query) {\n updateRecentSearches({\n query: {\n q: query,\n },\n type: 'search',\n });\n }\n\n history.push(`${SEARCH_PATH}?q=${query}`);\n };\n\n const handleInputChange = event => {\n updateQuery(event.target.value);\n };\n\n const handleInputKeyDown = event => {\n if (event.key === 'Enter') {\n analytics.track('Searched by Enter', {\n category: 'Big Search',\n label: event.target.value,\n });\n\n handleEnter();\n }\n };\n\n const handleSuggestionClick = suggestion => {\n analytics.track('Recommended Term Clicked', {\n category: 'Big Search',\n label: suggestion,\n });\n\n updateQuery(suggestion);\n };\n\n let searchSuggestions = 'Choose from the list below or press \"Enter\" to see all results.';\n if (suggestions.length) {\n let suggestionsElems = suggestions.map((suggestion, index) => {\n return (\n handleSuggestionClick(suggestion)}\n key={suggestion}\n >\n {suggestion}\n \n );\n });\n\n searchSuggestions = (\n
\n \n Recommendations:{' '}\n \n {suggestionsElems}\n
\n );\n }\n\n // column layout\n return (\n
\n \n
{searchSuggestions}
\n
\n );\n}\n\nSearchRow.propTypes = {\n query: PropTypes.string,\n suggestions: PropTypes.array,\n updateRecentSearches: PropTypes.func,\n clearQuery: PropTypes.func.isRequired,\n updateQuery: PropTypes.func.isRequired,\n fetchAutocomplete: PropTypes.func.isRequired,\n onShowAdvancedSearch: PropTypes.func,\n};\n\nexport default SearchRow;\n","import React, { useEffect, useState } from 'react';\nimport { isNormal } from 'resift';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport useAnalytics from 'helpers/useAnalytics';\nimport bowser from 'bowser';\nimport { SIFT_MARKETING_SITE } from 'helpers/consts';\nimport typography from 'helpers/typography';\n\n// Components\nimport Loader from 'components/skipper/Loader';\nimport AdvancedSearch from 'components/AdvancedSearch';\nimport PoweredBySift from 'components/PoweredBySift';\nimport Results from './Results';\nimport NoResults from './NoResults';\nimport SearchRow from './SearchRow';\nimport NewTabLink from 'components/atoms/NewTabLink';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { decomposeColor } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport ThemeOverrideComponent from 'styles/skipper/ThemeOverrideComponent';\nimport useOriginalTheme from 'styles/skipper/useOriginalTheme';\n\nconst useStyles = makeStyles()(theme => {\n const { primary, common } = theme.palette;\n const isIE = bowser.name === 'Internet Explorer';\n\n return {\n root: {\n color: common.white,\n padding: theme.spacing(0, 4),\n minWidth: 0, // IMPORTANT: This allows for items to truncate properly\n display: 'flex',\n flexDirection: 'column',\n minHeight: 'min-content',\n width: theme.page.pageMaxWidth,\n [theme.breakpoints.down('md')]: {\n height: 'min-content',\n padding: theme.spacing(0, 2),\n },\n },\n statusRoot: {\n display: isIE ? 'block' : 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n height: '100vh',\n },\n statusContent: {\n flex: '1 1 auto',\n display: 'flex',\n flexDirection: 'column',\n [theme.breakpoints.down('md')]: {\n display: 'block',\n },\n },\n searchStatusRoot: {\n minHeight: 420,\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n loaderEmpty: {\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n },\n loaderOverlaytransparent: {\n backgroundColor: `rgba(${decomposeColor(primary.main).values.join(',')}, 0.6)`,\n },\n footer: {\n ...typography(theme, 'body2'),\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n margin: 'auto',\n width: 400,\n marginTop: theme.spacing(2),\n paddingBottom: theme.spacing(3),\n fontWeight: 700,\n [theme.breakpoints.down('sm')]: {\n width: 'initial',\n flexDirection: 'column-reverse',\n marginTop: theme.spacing(8),\n },\n },\n whiteLinkCopy: {\n color: primary.contrastText,\n },\n link: {\n color: primary.contrastText,\n opacity: 0.5,\n cursor: 'pointer',\n transition: 'opacity .2s',\n display: 'block',\n textDecoration: 'none !important',\n '&:hover': {\n opacity: 1,\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(0.5),\n fontSize: 12,\n },\n },\n poweredBySift: {\n marginTop: 0,\n marginBottom: 0,\n [theme.breakpoints.down('sm')]: {\n marginTop: theme.spacing(1),\n },\n },\n footerLine: {\n marginTop: theme.spacing(0.25),\n height: 2,\n width: '100%',\n backgroundColor: primary.contrastText,\n opacity: 0.5,\n cursor: 'pointer',\n },\n };\n});\n\n// Component\nfunction BigSearch({\n fields,\n team,\n recentSearches,\n suggestions,\n user,\n query,\n results,\n supportEnabled,\n // actions\n deleteRecentSearches,\n deleteRecentSearch,\n fetchRecentSearches,\n updateRecentSearches,\n fetchAutocomplete,\n fetchTeam,\n updateQuery,\n clearQuery,\n toggleSupportDrawer,\n // Loading States\n status,\n searchStatus,\n}) {\n const originalTheme = useOriginalTheme();\n const { classes } = useStyles();\n const analytics = useAnalytics();\n const [showAdvancedSearch, setShowAdvancedSearch] = useState(false);\n\n useEffect(() => {\n if (window.location.pathname === '/') {\n clearQuery();\n }\n\n if (recentSearches === undefined) {\n fetchRecentSearches(user.id);\n }\n\n if (!_get(user, 'accountOnly') && team === undefined) {\n fetchTeam(user.id);\n }\n }, [\n clearQuery,\n fetchRecentSearches,\n fetchTeam,\n fields.teamLeader,\n fields.teamLeaderEmail,\n recentSearches,\n team,\n user,\n ]);\n\n const toggleAdvancedSearch = () => {\n setShowAdvancedSearch(!showAdvancedSearch);\n\n if (showAdvancedSearch === false) {\n analytics.track('Opened Advanced Search', {\n category: 'Big Search',\n });\n } else {\n analytics.track('Clicked BigSearch Back Button', {\n category: 'Big Search',\n });\n }\n };\n\n return (\n \n
\n {showAdvancedSearch ? (\n \n ) : (\n \n <>\n
\n \n \n }\n >\n \n \n
\n {isNormal(status.value) && (\n
\n \n\n \n
\n Privacy & Data Policy\n
\n
\n \n {supportEnabled ? (\n
\n Get Support\n
\n
\n ) : (\n \n Get Support\n
\n \n )}\n
\n )}\n \n \n )}\n
\n \n );\n}\n\nBigSearch.propTypes = {\n fields: PropTypes.object.isRequired,\n team: PropTypes.object,\n recentSearches: PropTypes.object,\n suggestions: PropTypes.array,\n user: PropTypes.object,\n query: PropTypes.string,\n results: PropTypes.array,\n supportEnabled: PropTypes.bool.isRequired,\n // actions\n deleteRecentSearches: PropTypes.func,\n deleteRecentSearch: PropTypes.func,\n fetchRecentSearches: PropTypes.func,\n updateRecentSearches: PropTypes.func,\n fetchAutocomplete: PropTypes.func.isRequired,\n fetchTeam: PropTypes.func.isRequired,\n updateQuery: PropTypes.func.isRequired,\n clearQuery: PropTypes.func.isRequired,\n toggleSupportDrawer: PropTypes.func.isRequired,\n // Loading States\n status: PropTypes.object,\n searchStatus: PropTypes.object,\n};\n\nexport default BigSearch;\n","import { useMemo } from 'react';\nimport createTheme from './createSkipperTheme';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport { getThemeToUse } from 'store/theme';\n\nexport default function useOriginalTheme() {\n const theme = usePassiveRedux((state: any) => getThemeToUse(state.theme));\n\n const fixedTheme = useMemo(() => {\n return createTheme({\n ...theme,\n palette: {\n ...theme.palette,\n primary: theme.palette.originalPrimary,\n secondary: theme.palette.originalSecondary,\n },\n });\n }, [theme]);\n\n return fixedTheme;\n}\n","// Libs\nimport { useEffect, useRef } from 'react';\nimport { useDispatch } from 'resift';\nimport { connect } from 'react-redux';\nimport useRouter from '@sift/resift/useRouter';\nimport _get from 'lodash/get';\nimport hocify from 'hocify';\nimport compose from 'recompose/compose';\n\n// Actions\nimport { toggleSupportDrawer } from 'store/support';\nimport {\n fetchAutocomplete,\n updateQuery,\n clearQuery,\n toggleBigSearch,\n closeBigSearch,\n} from 'store/bigSearch';\n\nimport {\n fetchTeam,\n fetchRecentSearches,\n updateRecentSearches,\n deleteRecentSearches,\n deleteRecentSearch,\n} from 'store/search';\n\nimport { updateSettings } from 'store/settings';\n\n// Models\nimport { Status } from '@sift/resift/models/Status';\n\nimport Component from './BigSearch';\n\n/**\n * this watches the pathname and closes big search when the pathname changes\n */\nconst withCloseEffect = hocify(() => {\n const { location } = useRouter();\n const dispatch = useDispatch();\n const first = useRef(true);\n\n useEffect(() => {\n if (first.current) {\n first.current = false;\n return;\n }\n\n dispatch(closeBigSearch());\n }, [dispatch, location.key]);\n\n return null;\n});\n\nconst mapDispatchToProps = {\n toggleBigSearch,\n fetchAutocomplete,\n fetchTeam,\n updateQuery,\n clearQuery,\n fetchRecentSearches,\n updateRecentSearches,\n deleteRecentSearches,\n deleteRecentSearch,\n updateSettings,\n toggleSupportDrawer,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const initialStatus = new Status(\n state.bigSearch.fetchRecentSearchesStatus.value | state.bigSearch.fetchTeamStatus.value,\n );\n const team = state.bigSearch.team;\n\n let results = state.bigSearch.results;\n if (state.bigSearch.query === '' && initialStatus.value === 1) {\n if (Object.keys(state.bigSearch.recentSearches).length) {\n results = [state.bigSearch.recentSearches];\n } else {\n results = [];\n }\n\n if (team) {\n results.push(team);\n }\n }\n\n return {\n recentSearches: state.bigSearch.recentSearches,\n renderToLayer: ownProps.renderToLayer || false,\n suggestions: state.bigSearch.suggestions || [],\n team: team,\n user: state.authentication.person,\n query: state.bigSearch.query,\n results,\n status: initialStatus,\n searchStatus: state.bigSearch.searchStatus,\n open: state.bigSearch.open,\n fields: state.configurations.user.fields,\n supportEnabled: _get(state.client.settings, 'support.enabled', false),\n };\n};\n\nexport default compose(withCloseEffect, connect(mapStateToProps, mapDispatchToProps))(Component);\n","import React, { useEffect, useState, useCallback, forwardRef } from 'react';\nimport { oneLine } from 'common-tags';\nimport bowser from 'bowser';\n\n// Component\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { transparentize, darken } from 'polished';\nimport { Theme } from '@mui/material/styles';\nimport typography from 'helpers/typography';\n\nconst threshold = 10;\n\ninterface Props {\n className?: string;\n scrollToTop?: boolean;\n onScrolledToTop?: () => void;\n showMore?: boolean;\n color?: string; // primary, secondary, white, black,\n iosScroll?: boolean;\n children: React.ReactNode;\n}\n\nconst ScrollHinter = forwardRef(\n (\n {\n className,\n scrollToTop,\n showMore,\n color: _color,\n iosScroll,\n children,\n onScrolledToTop,\n }: Props,\n ref: React.Ref,\n ) => {\n const { classes } = useStyles();\n const [interval, setInterval] = useState();\n const [top, setTop] = useState(true);\n const [bottom, setBottom] = useState(true);\n\n const setScrollHinters = useCallback(\n (element: HTMLDivElement) => {\n const { scrollTop, scrollHeight, clientHeight } = element;\n\n const newTop = scrollTop - threshold < 0;\n const newBottom = clientHeight + scrollTop + threshold > scrollHeight;\n\n if (newTop !== top || newBottom !== bottom) {\n setTop(newTop);\n setBottom(newBottom);\n }\n },\n [bottom, top],\n );\n\n useEffect(() => {\n // @ts-ignore\n const rootEl = ref.current;\n if (!rootEl) return;\n\n setInterval(\n window.setInterval(() => {\n setScrollHinters(rootEl);\n }, 250),\n );\n\n return () => (interval !== undefined ? window.clearInterval(interval) : null);\n }, [interval, ref, setScrollHinters]);\n\n useEffect(() => {\n onScrolledToTop && onScrolledToTop();\n // @ts-ignore\n const rootEl = ref.current;\n if (!rootEl) return;\n\n const startAnchor = rootEl.querySelector('.start-anchor');\n if (!startAnchor) return;\n\n if (rootEl.scrollTop < 30) {\n return;\n }\n\n if (bowser.msie || bowser.safari) {\n rootEl.scrollTop = 0;\n return;\n }\n\n startAnchor.scrollIntoView({ behavior: 'smooth' });\n }, [onScrolledToTop, ref, scrollToTop]);\n\n const handleMoreClick = () => {\n // @ts-ignore\n const scrollEl = ref.current;\n if (!scrollEl) return;\n const endAnchorEl = scrollEl.querySelector('.end-anchor');\n if (!endAnchorEl) return;\n endAnchorEl.scrollIntoView({ behavior: 'smooth' });\n };\n\n const handleScroll = (e: React.UIEvent) => {\n setScrollHinters(e.currentTarget);\n };\n\n const color = _color || 'white';\n const textShadow = `0px 0px 24px ${transparentize(0, color)}`;\n\n return (\n
\n \n \n
\n {children}\n
\n
\n \n {showMore && (\n \n {!bottom && (\n <>\n More \n \n \n )}\n
\n )}\n
\n
\n );\n },\n);\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n },\n scroll: {\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden',\n flex: '1 1 auto',\n '& > *': {\n flex: '0 0 auto',\n },\n },\n iosScroll: {\n WebkitOverflowScrolling: 'touch',\n overflowY: 'scroll',\n },\n scrollTop: {\n position: 'absolute',\n top: 0,\n width: '100%',\n opacity: 0,\n height: 100,\n transition: `all ${theme.transitions.duration.enteringScreen}ms`,\n zIndex: theme.zIndex.surface,\n pointerEvents: 'none',\n },\n scrollBottom: {\n position: 'absolute',\n bottom: 0,\n width: '100%',\n opacity: 0,\n height: 100,\n transition: `all ${theme.transitions.duration.enteringScreen}ms`,\n zIndex: theme.zIndex.surface,\n pointerEvents: 'none',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n text: {\n ...typography(theme, 'caption'),\n pointerEvents: 'auto',\n cursor: 'pointer',\n color: theme.palette.grey[900],\n textTransform: 'uppercase',\n marginBottom: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n color: theme.palette.secondary.main,\n },\n '&:active': {\n color: darken(0.1, theme.palette.secondary.main),\n },\n },\n };\n});\n\nexport default ScrollHinter;\n","import React, { memo } from 'react';\nimport _get from 'lodash/get';\nimport bowser from 'bowser';\n\n// Components\nimport { DragDropContext, Droppable, Draggable, DropResult } from 'react-beautiful-dnd';\nimport IconButton from '@mui/material/IconButton';\nimport ReorderIcon from '@mui/icons-material/Reorder';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport VerticalScrollHinter from 'components/skipper/VerticalScrollHinter';\nimport Avatar from 'components/atoms/Avatar';\nimport SkipTranslate from 'components/atoms/SkipTranslate';\n\n// Styles\nimport classNames from 'classnames';\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\nimport typography from 'helpers/typography';\n\ninterface Person {\n id: string;\n pictureUrl: string;\n displayName: string;\n title: string;\n _alternateFieldValues: {\n displayName: string;\n };\n}\n\ninterface Props {\n className?: string;\n people: Person[];\n onChange: (newPeople: Person[]) => void;\n}\n\nfunction PersonList({ people, className, onChange }: Props) {\n const { classes } = useStyles();\n\n const handleDragEnd = (result: DropResult) => {\n if (!result.destination) {\n return;\n }\n\n const oldIndex = result.source.index;\n const newIndex = result.destination.index;\n\n if (newIndex === oldIndex) {\n return;\n }\n\n const currentItem = people[oldIndex];\n\n const withoutOldIndex = [\n ...people.slice(0, oldIndex),\n ...people.slice(oldIndex + 1, people.length),\n ];\n\n const withNewIndex = [\n ...withoutOldIndex.slice(0, newIndex),\n currentItem,\n ...withoutOldIndex.slice(newIndex, withoutOldIndex.length),\n ];\n\n return onChange(withNewIndex);\n };\n\n const handleDelete = (personIdToDelete: string) => {\n onChange(people.filter(person => person.id !== personIdToDelete));\n };\n\n return (\n
\n {people.length > 0 ? (\n \n \n {(provided: any) => (\n \n {people.map((person, index) => {\n const altDisplayName = _get(person, ['_alternateFieldValues', 'displayName']);\n return (\n \n {provided => (\n \n \n
\n \n {person.displayName}\n \n {altDisplayName && (\n {`(${altDisplayName})`}\n )}\n
{person.title}
\n
\n
\n \n \n \n handleDelete(person.id)}\n size=\"large\"\n >\n \n \n
\n
\n )}\n \n );\n })}\n \n )}\n \n \n ) : (\n
\n
\n
Nothing here yet.
\n
\n Start typing above to search for people to add.\n
\n
\n
\n )}\n
\n );\n}\n\nconst useStyles = makeStyles()((theme: Theme) => {\n return {\n root: {\n flex: '1 1 auto',\n display: 'flex',\n flexDirection: 'column',\n },\n personItem: {\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n backgroundColor: theme.palette.background.paper,\n cursor: bowser.msie ? 'ns-resize' : 'grab',\n '&:hover': {\n backgroundColor: theme.palette.action.infoHover,\n },\n '&:active': {\n backgroundColor: theme.palette.action.infoActive,\n cursor: bowser.msie ? 'ns-resize' : 'grabbing',\n },\n },\n controls: {\n display: 'flex',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(1),\n },\n },\n sortableHelperClass: {\n zIndex: `${theme.zIndex.max} !important`,\n boxShadow: theme.shadows[1],\n backgroundColor: theme.palette.action.infoActive,\n },\n avatar: {\n marginRight: theme.spacing(1),\n },\n name: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: 'initial',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 200,\n marginRight: theme.spacing(2),\n },\n title: {\n ...typography(theme, 'body2'),\n flex: '0 0 auto',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 200,\n },\n info: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1',\n },\n reorderButton: {\n pointerEvents: 'none',\n },\n sortableList: {},\n empty: {\n flex: '1 1 auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n emptyContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n emptyTitle: {\n ...typography(theme, 'h6'),\n fontWeight: theme.typography.fontWeightBold,\n marginBottom: theme.spacing(1),\n },\n emptyDescription: {\n ...typography(theme, 'body2'),\n },\n sorting: {\n '& *': {\n userSelect: 'none',\n },\n },\n };\n});\n\nexport default memo(PersonList);\n","import React, { useState, memo } from 'react';\nimport typography from 'helpers/typography';\nimport bowser from 'bowser';\n\n// Components\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Link from '@mui/material/Link';\n\n// Styles\nimport { makeStyles } from 'tss-react/mui';\nimport { Theme } from '@mui/material/styles';\n\nimport brandColors from 'styles/skipper/brandColors';\nimport readableColor from 'styles/skipper/readableColor';\n\nconst useStyles = makeStyles<{ useSecondaryColor: boolean }>()(\n (theme: Theme, { useSecondaryColor }) => ({\n root: {\n backgroundColor: useSecondaryColor\n ? theme.palette.secondary.main\n : brandColors.logomarkDotColors.gold,\n color: useSecondaryColor\n ? readableColor(theme.palette.secondary.main)\n : readableColor(brandColors.logomarkDotColors.gold),\n borderRadius: 0,\n display: 'flex',\n padding: theme.spacing(1),\n },\n content: {\n margin: '0 auto',\n ...(bowser.msie ? { alignSelf: 'center' } : null),\n maxWidth: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n ...typography(theme, 'body2'),\n },\n message: {\n marginRight: theme.spacing(0.5),\n },\n link: {\n cursor: 'pointer',\n color: useSecondaryColor\n ? readableColor(theme.palette.secondary.main)\n : brandColors.secondaryPalette.cobalt,\n textDecorationColor: useSecondaryColor\n ? readableColor(theme.palette.secondary.main)\n : brandColors.secondaryPalette.cobalt,\n },\n contactLink: {\n cursor: 'pointer',\n color: theme.palette.secondary.main,\n },\n dialogContent: {\n '& p': {\n marginTop: 0,\n },\n },\n browsers: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: theme.spacing(2),\n padding: theme.spacing(2),\n },\n browser: {\n display: 'flex',\n flexDirection: 'column',\n },\n browserImage: {\n width: 128,\n height: 128,\n marginBottom: theme.spacing(2),\n },\n browserLabel: {\n ...typography(theme, 'body1'),\n fontWeight: theme.typography.fontWeightSemiBold,\n textAlign: 'center',\n },\n }),\n);\n\ninterface Props {\n content?: React.ReactNode;\n useSecondaryColor?: boolean;\n}\n\nfunction IeSucksBanner({ content, useSecondaryColor = false }: Props) {\n const { classes } = useStyles({ useSecondaryColor });\n const [dialogOpen, setDialogOpen] = useState(false);\n const [dismissed, setDismissed] = useState(false);\n\n const handleOpen = () => {\n setDialogOpen(true);\n };\n\n const handleClose = () => {\n setDialogOpen(false);\n };\n\n const handleDismiss = () => {\n setDismissed(true);\n };\n\n if (!bowser.msie || dismissed) {\n return null;\n }\n\n return (\n <>\n
\n
\n {content ? (\n content\n ) : (\n
Experiencing performance issues?
\n )}\n \n Try using a different browser.\n \n \n
\n
\n\n \n Experiencing Issues?\n \n

\n The Org Chart works best on modern browsers. If you’re experiencing issues, try using\n one of the web browsers listed below.\n

\n

\n Look for these on your computer:\n

\n
\n
\n \n
Chrome
\n
\n
OR
\n
\n \n
Firefox
\n
\n
OR
\n
\n \n
Edge
\n
\n
\n

\n Ask your IT professionals for help finding or installing any of these browsers. Contact\n us at{' '}\n \n support@justsift.com\n {' '}\n if your issue persists.\n

\n
\n \n \n \n
\n \n );\n}\n\nexport default memo(IeSucksBanner);\n","import React from 'react';\nimport _random from 'lodash/random';\n\ninterface Props {\n oneOf: React.ReactNode[];\n}\n\nclass Random extends React.PureComponent {\n randomIndex: number;\n\n constructor(props: Props) {\n super(props);\n this.randomIndex = _random(props.oneOf.length - 1);\n }\n\n render() {\n return this.props.oneOf[this.randomIndex];\n }\n}\n\nexport default Random;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport typography from 'helpers/typography';\n\n// Components\nimport SiftLogo from 'components/skipper/SiftLogo';\n\nimport { makeStyles } from 'tss-react/mui';\n\nimport { useTheme } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport readableColor from 'styles/skipper/readableColor';\n\nfunction PoweredBySift(props) {\n const {\n className,\n classes: classesFromProps,\n backgroundColor,\n isEasterEgg,\n ...restOfProps\n } = props;\n const theme = useTheme();\n const { classes } = useStyles(undefined, { props: { classes: classesFromProps } });\n\n const onClickContainer = () => {\n window.open('https://www.justsift.com/');\n };\n\n const textColor = useMemo(() => {\n const { primary, secondary } = theme.palette;\n if (backgroundColor === 'primary') return primary.contrastText;\n if (backgroundColor === 'secondary') return secondary.contrastText;\n return readableColor(backgroundColor);\n }, [theme.palette, backgroundColor]);\n\n return (\n
\n \n \n Powered by\n \n \n
\n
\n );\n}\n\nconst useStyles = makeStyles()(theme => ({\n root: {\n flex: '0 0 auto',\n display: 'flex',\n justifyContent: 'center',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n poweredBy: {\n ...typography(theme, 'caption'),\n marginRight: theme.spacing(1),\n },\n}));\n\nPoweredBySift.propTypes = {\n className: PropTypes.string,\n backgroundColor: PropTypes.string,\n classes: PropTypes.object,\n isEasterEgg: PropTypes.bool,\n};\n\nexport default PoweredBySift;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * NOTE: there is a custom hook `helpers/useTerminology`.\n * Check it out before using this component\n */\nclass Terminology extends Component {\n static propTypes = {\n terminology: PropTypes.object.isRequired,\n term: PropTypes.string.isRequired,\n className: PropTypes.string,\n casing: PropTypes.string.isRequired,\n withSpace: PropTypes.bool,\n };\n\n render() {\n const { terminology, casing, term, className, withSpace } = this.props;\n\n if (casing && casing !== 'capitalize' && casing !== 'lowercase' && casing !== 'uppercase') {\n console.error('Error: Terminology does not compute casing prop.'); // eslint-disable-line\n }\n\n return (\n \n {terminology[term]}\n \n );\n }\n}\n\nexport default Terminology;\n","import { connect } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport _get from 'lodash/get';\nimport pluralize from 'pluralize';\n\n// View\nimport Terminology from './Terminology';\n\n// Selectors\nconst teamLeaderSelector = createSelector(\n state => state.config.person.fields.teamLeader.displayName,\n teamLeader => teamLeader,\n);\n\n// mapToProps\nconst mapDispatchToProps = {};\n\nconst mapStateToProps = (state, ownProps) => {\n const teamLeader = _get(state, 'config.person.fields.teamLeader.displayName')\n ? teamLeaderSelector(state)\n : 'Leader';\n const terminology = {\n ...state.client.terminology,\n teamLeader,\n teamLeader_plural: pluralize(teamLeader),\n };\n\n return {\n terminology,\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(Terminology);\n","import { getLuminance } from 'polished';\n\nexport default function hasBadContrast(colorA: string, colorB: string) {\n const luminanceA = getLuminance(colorA);\n const luminanceB = getLuminance(colorB);\n\n const pad = 0.05;\n\n if (luminanceA > luminanceB) {\n return (luminanceA + pad) / (luminanceB + pad) < 1.5;\n }\n\n return (luminanceB + pad) / (luminanceA + pad) < 1.5;\n}\n","export const SEARCH_PATH = '/search';\nexport const ENTITIES_PATH = '/entities';\nexport const MEMBERS_PATH = '/members';\nexport const LIST_PATH = '/list';\nexport const TABLE_PATH = '/table';\nexport const EXPLORE_PATH = '/explore';\n\nexport const MATCHED_FIELDS_IN_HEADER = ['title'];\n\nexport const ENTITY_TYPE_USER = 'user';\nexport const ENTITY_TYPE_PERSON = 'people';\n\nexport const PERSON_TABLE_START_COLUMNS = ['title', 'email'];\nexport const PAGE_TABLE_START_COLUMNS = ['memberCount'];\nexport const PERSON_TABLE_NAME_COLUMN = 'displayName';\nexport const PAGE_TABLE_NAME_COLUMN = 'name';\nexport const COLUMN_WIDTH = 200;\nexport const NAME_COLUMN_WIDTH = 300;\n\nexport const MAX_NUM_OF_GROUP_MSG_RECIPIENTS = 100;\n"],"sourceRoot":""}