{"version":3,"sources":["pages/Directory/consts.ts","styles/defineStyles.ts","components/Page/PageTitle.tsx","store/directories/index.js","atoms/LoadingButton.tsx","store/people/index.js","pages/Administrators/index.tsx","pages/AttributeSocialPhotos/index.js","pages/Directories/index.js","pages/Source/index.ts","pages/SourceCreate/index.js","pages/SourceCSVSetup/index.tsx","pages/SourcePhotoCSVSetup/index.tsx","pages/SourceLDAPSetup/index.ts","pages/Directory/index.ts","fetches/getRootNodes.ts","pages/Features/constants.ts","pages/ProfileLayout/fetches/updateLayoutFetch.ts","components/Page/newComponents/index.tsx","components/Icons/ProfileLayout/RemoveCircleIcon.js","components/GenericLayoutBuilder/SortableHandleElem.tsx","components/GenericLayoutBuilder/SortableItemElem.tsx","components/GenericLayoutBuilder/SortableList.tsx","components/GenericLayoutBuilder/GenericLayoutBuilder.tsx","molecules/LayoutSettingCard.tsx","pages/Features/tabs/Directory/FilterLayout.tsx","pages/Features/tabs/Directory/Export.js","pages/Features/tabs/Directory/GroupMessaging/GroupEmail.tsx","pages/Features/tabs/Directory/GroupMessaging/GroupMessage.tsx","pages/Features/tabs/Directory/GroupMessaging/GroupMessaging.tsx","pages/Features/tabs/Directory/Directory.tsx","pages/Features/tabs/Profile/Pronunciation/Pronunciation.tsx","pages/Features/tabs/Profile/Assistants.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/constants/index.ts","pages/Features/tabs/Profile/TimezoneAndWorkHours/WorkHoursForm/WeekDayCheckBox/WeekDayCheckBox.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/WorkHoursForm/WorkHoursSelector/WorkHoursSelector.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/WorkHoursForm/LocationSelector/LocationSelector.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/WorkHoursForm/WorkHoursForm.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/TimezoneAndWorkHoursForm.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/TimezoneAndWorkHours.tsx","pages/Features/tabs/Profile/Profile.tsx","pages/Features/tabs/OrgChart/OrgChartHighlightsLayout.tsx","pages/Features/tabs/OrgChart/OrgChartExport.tsx","pages/Features/tabs/OrgChart/RootNodes.tsx","pages/Features/tabs/OrgChart/OrgChart.tsx","pages/Features/tabs/Other/Onboarding.tsx","pages/Features/tabs/Profile/TimezoneAndWorkHours/helpers/getWorkHoursByDayArray.ts","pages/Features/tabs/Profile/TimezoneAndWorkHours/helpers/convertTimezoneAndWorkHoursValueForRequest.ts","pages/Features/tabs/Profile/TimezoneAndWorkHours/helpers/getWorkHoursByDayLookup.ts","pages/Features/tabs/Profile/TimezoneAndWorkHours/helpers/getDefaultTimezoneAndWorkHoursFormValue.ts","pages/Features/Features.tsx","pages/General/constants.ts","store/_helpers/fetchWithAuth.js","store/themes/actions/_helpers/dataUriToBlob.js","store/themes/actions/_helpers/signUpload.js","store/themes/actions/_helpers/uploadToStorage.js","store/themes/actions/_helpers/fixImageUri.js","fetches/verifyNewSubdomain.ts","store/themes/actions/getThemes/getThemes.js","store/themes/actions/setStatus/setStatus.js","store/themes/actions/_helpers/createTheme.js","store/themes/actions/saveTheme/saveTheme.js","pages/General/tabs/Theming/components/StyleModeSelector/StyleModeSelector.js","pages/General/tabs/Theming/components/ColorRow/ColorRow.js","pages/General/tabs/Theming/components/ThemingSettings/ThemingSettings.tsx","pages/General/tabs/Theming/_helpers/getDataUrlFromFile/getDataUrlFromFile.js","pages/General/tabs/Theming/components/ImageField/ImageField.js","pages/General/tabs/Theming/_helpers/combineStatuses/combineStatuses.js","pages/General/tabs/Theming/components/PreviewDialog/PreviewDialog.js","pages/General/tabs/Theming/components/PreviewDialog/index.js","store/themes/actions/createPreviewTheme/createPreviewTheme.js","store/themes/actions/setPreviewThemeId/setPreviewThemeId.js","store/themes/actions/destroyAllThemes/destroyAllThemes.js","pages/General/tabs/Theming/Theming.tsx","pages/General/tabs/Settings/CompanyName.tsx","pages/General/tabs/Settings/AllowUninvited.tsx","pages/General/tabs/Settings/Subdomain.tsx","pages/General/tabs/Settings/CompanyTimezone.js","pages/General/tabs/Settings/OrgLevelsLayout.tsx","pages/General/tabs/Settings/LogoUploader.tsx","pages/General/tabs/Settings/Terminology.tsx","pages/General/tabs/Settings/CustomNavigationTab.tsx","pages/General/tabs/Settings/Support.js","pages/General/tabs/Settings/DottedLineRelationships.tsx","pages/General/tabs/Settings/index.tsx","pages/General/General.tsx","components/onboarding/SupportCard/SupportCard.tsx","components/onboarding/HelpCard/HelpCard.tsx","components/onboarding/DocsCard/DocsCard.tsx","pages/Home/Home.tsx","pages/Invites/index.ts","pages/Person/reducer.js","pages/Person/index.js","pages/SiftBot/index.js","pages/NoRoute/index.js","pages/Applications/index.tsx","pages/ApplicationEdit/index.tsx","pages/Pages/index.tsx","fetches/makeGetUserFieldsFetch.ts","pages/AttributesEdit/helpers/useAttributesEditDialog.ts","pages/Attributes/components/CustomToolbar.tsx","pages/Attributes/components/CustomGridPanel.tsx","pages/Attributes/components/AttributeTableData.js","pages/Attributes/Attributes.js","fetches/makeGetFieldsFetch.ts","pages/Attributes/_helpers/getProfileAttributes.js","pages/Attributes/container.js","components/Icons/StandAlone.tsx","components/Icons/ProfileLayout/CategoryIcon.js","pages/ProfileLayout/components/AddSectionDialog/DialogSelectItem.js","pages/ProfileLayout/components/AddSectionDialog/AddAttributesDialogItem.js","pages/ProfileLayout/components/AddSectionDialog/AddCategoryDialogItem.js","pages/ProfileLayout/components/AddSectionDialog/AddSectionDialog.js","pages/ProfileLayout/components/AddSectionDialog/index.js","pages/ProfileLayout/components/AttributeCard/AttributeCard.js","pages/ProfileLayout/components/Field/Field.js","pages/ProfileLayout/components/CategoryCard/CategoryCard.js","pages/ProfileLayout/components/CategoryCard/index.js","pages/ProfileLayout/components/SidebarCard/SidebarCard.js","pages/ProfileLayout/components/MockField/MockField.js","pages/ProfileLayout/ProfileLayout.js","pages/ProfileLayout/container.js","pages/PersonProfilesPage/PersonProfilesPage.tsx","fetches/makeUpdateEntityType.ts","fetches/makeGetEntityTypeStatus.ts","store/attribute/actions/updateCategoryFieldFetch.ts","fetches/makeGetEntityTypeConfiguration.ts","fetches/makeDeleteEntity.ts","fetches/makeGetEntitiesListFetch.ts","pages/PageTypes/tabs/DeletePageModal.tsx","fetches/createEntity.ts","helpers/convertStringToArrayOfStrings.ts","pages/PageTypes/components/CreatePageModal.tsx","components/Icons/NoPages.tsx","components/Icons/CreatingFiles.tsx","pages/PageTypes/components/NoPagesView.tsx","pages/PageTypes/tabs/PagesRow.tsx","pages/PageTypes/tabs/PagesTable.tsx","pages/PageTypes/tabs/PagesCards.tsx","pages/PageTypes/tabs/PagesTab/PagesTab.tsx","pages/PageTypes/tabs/PagesTab/container.tsx","pages/PageTypes/tabs/PagesTab/index.ts","pages/PageTypes/tabs/SettingsTab/PageTypeName.tsx","pages/PageTypes/tabs/SettingsTab/PageEditors.tsx","pages/PageTypes/tabs/SettingsTab/SearchSettings.tsx","fetches/makeDeleteEntityType.ts","pages/PageTypes/tabs/SettingsTab/DeletePages.tsx","pages/PageTypes/tabs/SettingsTab/SettingsTab.tsx","pages/AttributesEdit/components/DirectoryMapping/DirectoryMapping.js","store/attribute/actions/fieldDirectoryMappingsFetch.ts","pages/AttributesEdit/components/DirectoryMapping/index.tsx","pages/AttributesEdit/components/AttributeDataMapping.tsx","pages/PageTypes/tabs/MembershipTab/components/JoinPage.tsx","pages/PageTypes/tabs/MembershipTab/components/PageMemberGrouping.tsx","pages/AttributesEdit/components/AttributeUsage.tsx","pages/PageTypes/tabs/MembershipTab/MembershipTab.tsx","pages/PageTypes/tabs/MembershipTab/container.tsx","pages/PageTypes/tabs/MembershipTab/index.js","fetches/makePublishEntityType.ts","pages/PageTypes/components/PublishEntityTypeModal.tsx","pages/PageTypes/PageTypes.tsx","pages/PageTypes/container.tsx","store/attribute/actions/createCategoryFieldFetch.ts","pages/AttributesNew/AttributesChooseNew.tsx","pages/AttributesEdit/components/AttributeBasicInfo.tsx","pages/AttributesNew/AttributesCreateNew.tsx","helpers/removeEmptyObjProps.ts","pages/AttributesEdit/components/AttributeRow.js","pages/AttributesEdit/components/SubAttributesTable.js","pages/AttributesEdit/components/AttributeReachOutToMeFor.tsx","pages/AttributesEdit/components/AttributeUserEditing.tsx","pages/AttributesEdit/components/DeleteAttribute/DeleteAttribute.tsx","store/attribute/actions/deleteCategoryFieldFetch.ts","pages/AttributesEdit/components/DeleteAttribute/index.js","pages/AttributesEdit/AttributesEdit.tsx","fetches/makeUpdateAttributeAutocomplete.ts","fetches/makeGetAttributeAutocomplete.ts","pages/AttributesEdit/container.tsx","pages/AttributesEditModal/AttributesEditModal.tsx","fetches/makeGetSource.ts","helpers/SourceContext.ts","pages/Directory/Base/Base.tsx","pages/Directory/NameYourData/NameYourData.tsx","pages/Directory/NameYourData/index.tsx","fetches/getSources.ts","pages/SourceCreate/components/SourceCard/NewSourceCard.tsx","components/Icons/AdditionalFileSyncIcon.tsx","pages/Directory/ChooseSourceType/ChooseSourceType.tsx","pages/Directory/ChooseSourceType/index.tsx","pages/Directory/Authorization/Authorization.tsx","pages/Directory/helpers/useSource.ts","fetches/makeUpdateSource.ts","fetches/makeGetSourceGroups.ts","pages/Directory/SelectGroups/GroupsAutosuggest/GroupsAutosuggest.tsx","pages/Directory/SelectGroups/SelectGroups.tsx","pages/Directory/SelectGroups/index.tsx","pages/Directory/UploadCsv/UploadCsv.tsx","atoms/MappingsConfirmationDialog.tsx","molecules/dataSync/BeforeYouMap.tsx","pages/Directory/MapAttributes/MapAttributes.tsx","pages/Directory/MapAttributes/index.tsx","components/Mappings/_helpers/areMappingsInvalid.ts","pages/Directory/SyncSettings/SyncSettings.tsx","pages/Directory/SyncSettings/index.tsx","pages/Directory/Wizard/Wizard.tsx","pages/Directory/Wizard/index.tsx","components/Router/routes.ts","components/Page/HelpArticleLink.tsx","components/Router/consts.js","fetches/getOnboardingTasks.ts","components/Page/SaveButton.tsx","fetches/makeGetMappingsAttributes.ts","components/Page/newComponents/PageFormToolbar.tsx","styles/typography.js","components/AnalyticsProvider/AnalyticsProvider.tsx","components/AnalyticsProvider/index.ts","components/App/AppProviders/AppProviders.tsx","components/GlobalConfigProvider/GlobalConfigProvider.tsx","components/EntityTypesProvider/EntityTypesProvider.tsx","components/App/AppFetcher/AuthFetch/AuthFetch.tsx","components/App/AppFetcher/AppFetches/AppFetches.tsx","helpers/useInterval.ts","components/App/AppFetcher/AppFetcher.tsx","components/App/AppFetcher/index.js","components/Router/index.js","components/App/App.tsx","index.js","components/Page/Breadcrumbs.js","components/Table/TableHead.js","components/Table/index.js","helpers/getHostName.ts","components/Page/newComponents/PageFormErrorMessage.tsx","store/themes/themes.js","store/themes/index.js","molecules/HandleRedirect.tsx","helpers/usePrevious.ts","helpers/useGlobalConfig.ts","helpers/useEntityTypes.ts","store/client/index.js","store/siftBot/index.js","store/attribute/index.js","components/onboarding/useTask.ts","helpers/setOperations.ts","components/attributeSelector/Base/Base.tsx","components/attributeSelector/Local/Local.tsx","components/attributeSelector/Local/index.ts","styles/brandColors.js","components/Table/TableCell.js","components/Router/Helper.js","components/AppHeader/AppHeader.js","components/AppHeader/index.js","components/AppSidebar/helpers/routesToNavigationItems.ts","components/AppSidebar/helpers/defaultNavigationItems.ts","components/AppSidebar/helpers/makeNavigationItems.ts","components/AppSidebar/molecules/ListItem.tsx","components/AppSidebar/molecules/NavListItemBase.tsx","components/AppSidebar/molecules/ListItemText.tsx","components/AppSidebar/molecules/ListItemIcon.tsx","components/AppSidebar/InternalLinkNavItem.tsx","components/AppSidebar/ExternalLinkNavItem.tsx","components/AppSidebar/SupportLinks.tsx","components/AppSidebar/AppSidebar.tsx","components/AppSidebar/index.js","components/SidebarLayout/SidebarLayout.js","fetches/makeSetPassword.ts","components/AcceptOwnerRoleDialog/PasswordTextField.tsx","components/AcceptOwnerRoleDialog/AcceptOwnerRoleDialog.tsx","fetches/makeGetAuthenticationInfo.ts","components/AcceptOwnerRoleDialog/index.tsx","components/FreeTrialBanner/consts.jsx","components/FreeTrialBanner/FreeTrialBanner.tsx","components/Layouts/CoreLayout.js","components/Icons/Fullscreen.tsx","components/Icons/FullscreenExit.tsx","components/onboarding/BubbleHeading/BubbleHeading.tsx","fetches/makeUpdateOnboardingTask.ts","components/onboarding/TaskDetailHeading/TaskDetailHeading.tsx","components/onboarding/TaskDetail/TaskDetail.tsx","components/onboarding/CompletionCheers/CompletionCheers.tsx","components/onboarding/Bubble/Bubble.tsx","components/Router/Router.js","components/Icons/sources/GoogleWorkspaceLogo.tsx","components/Icons/sources/DemoDataLogo.tsx","pages/Directory/sourceData.tsx","store/dataServiceActionHandlers/index.js","store/dataServiceActionHandlers/mockHandlers.js","store/dataServiceMiddleware.js","store/store.js","store/createStore.js","pages/Invites/reducer.js","pages/Source/fetches/makeGetLatestSourceFile.ts","consts/sourceTypes.ts","store/authentication/index.js","store/configuration/actions/globalConfigFetch.ts","helpers/isFieldValidConfigOption.ts","components/onboarding/useTaskList.ts","store/configuration/index.js","components/Page/index.js","helpers/makePath.ts","components/Toolbar/ToolbarSpacer.js","components/Icons/Export.js","components/buttons/ExportButton.js","helpers/useAnalytics.tsx","components/AnalyticsProvider/AnalyticsContext.ts","styles/colors.js","store/search/index.js","components/FileDrop/FileDrop.tsx","components/FileDrop/index.ts","pages/Source/reducer.js","components/Form/helpers/useFormSnackbar.ts","components/withSource/withSource.js","store/location/index.js","store/sources/index.js","helpers/GlobalConfigContext.ts","helpers/EntityTypesContext.ts","pages/Debug/index.js","components/Page/newComponents/ToolbarPortal.tsx","pages/Invites/components/Users/InfoCard.tsx","helpers/getPriorityListItems.js","components/Mappings/_helpers/getMappingsFromMappingCards.ts","components/onboarding/Task/Task.tsx","components/onboarding/Category/Category.tsx","components/onboarding/Checklist/Checklist.tsx","components/onboarding/Checklist/index.ts","store/app/index.js","store/companyAPI/index.js","store/reducers.js","components/Icons/LogoGray.js","components/Loader/StaticLoader.js","components/onboarding/TaskSummary/TaskSummary.tsx","components/onboarding/TaskSummary/index.ts","components/onboarding/TaskTitle/TaskTitle.tsx","components/onboarding/TaskTitle/index.ts","pages/Administrators/constants.ts","components/Terminology/Terminology.js","components/Terminology/index.js","pages/Attributes/consts.ts","components/Router/AsyncComponent.js","components/Icons/ShortText.tsx","components/Icons/HyperLink.tsx","components/Icons/SingleSelect.tsx","components/Icons/LongText.tsx","components/Icons/Email.tsx","components/Icons/Phone.tsx","components/Icons/MessageAddress.tsx","components/Icons/FreeFormChips.tsx","components/Icons/MultiSelect.tsx","components/Icons/Autocomplete.tsx","components/Icons/LinkCollections.tsx","components/Icons/Dates.tsx","components/Icons/Number.tsx","components/Icons/Boolean.tsx","components/Icons/Skills.tsx","components/Icons/Education.tsx","components/Icons/Experience.tsx","components/Icons/Language.tsx","components/Icons/ReachOutToMeFor.tsx","components/Icons/Page.tsx","components/Icons/PageCollection.tsx","pages/AttributesNew/AttributeTypeCard.tsx","helpers/getIsLoading.ts","styles/theme.js","components/withSource/index.ts","components/Table/TablePagination.tsx","components/Toolbar/index.js","components/DirectoryInfoBar/helpers/useSyncInfo.ts","components/Form/ClearableSearch.js","components/Table/TableSearchTextField.js","components/InfoCard/InfoCard.tsx","components/InfoCard/index.ts","components/Toolbar/ToolbarActions.js","components/Icons/sources/CSV.js","components/Icons/sources/Azure.js","helpers/handleAuthorizeSource.ts","molecules/FullScreenTopBar.tsx","fetches/makeValidateMappings.ts","components/TextBlock/TextBlock.tsx","components/Mappings/_helpers/getValidatedMappingCards.ts","components/Mappings/_helpers/isMappingUpdated.ts","components/Mappings/_helpers/createDataBatchActions.ts","components/Mappings/_helpers/createLogisticalBatchActions.ts","components/Mappings/_helpers/getSelectedDestinations.ts","components/Mappings/_helpers/transformMappingsForValidation.ts","helpers/MappingsContext.ts","components/Mappings/_helpers/getSourceHeaderCopy.ts","components/Mappings/CollectionMapping/MAPPING_PRESETS.ts","components/Mappings/_helpers/sampleDataLookup.ts","components/Mappings/SourceSelector/AttributeMenu.tsx","components/BuildAttribute/AddAttribute/SelectInput/SelectInput.tsx","components/BuildAttribute/AddAttribute/_helpers/buildMenuItems.tsx","components/BuildAttribute/AddAttribute/AddAttribute.tsx","components/BuildAttribute/AddAttribute/index.tsx","components/BuildAttribute/AttributeInputForm/AttributeInputForm.tsx","components/BuildAttribute/AttributeRadioForm/AttributeRadioForm.tsx","components/Mappings/CreateAttributeDialog/CreateAttributeDialog.tsx","components/Mappings/CreateAttributeDialog/index.tsx","components/Mappings/SourceSelector/SourceSelector.tsx","components/Mappings/SourceSelector/index.tsx","atoms/ValidationStatusIndicator.tsx","components/Mappings/AttributeSelector/AttributeMenu/_helpers/isAttributeBlackListed.ts","components/Mappings/AttributeSelector/AttributeMenu/_helpers/createAttributes.ts","components/Mappings/AttributeSelector/AttributeMenu/AttributeMenu.tsx","store/mappings/actions/allSourceMappingsFetch.ts","components/Mappings/_helpers/useAllSourceMappings.ts","components/Mappings/AttributeSelector/AttributeMenu/index.tsx","components/Mappings/AttributeSelector/AttributeSelector.tsx","components/Mappings/AttributeSelector/index.ts","components/Mappings/CollectionMapping/CollectionMapping.tsx","components/Mappings/CollectionMapping/index.tsx","components/Mappings/MappingsRow/MappingsRow.tsx","components/Mappings/PrimaryKeyMapping/PrimaryKeyMapping.tsx","components/Mappings/OrgMapping/useExistingOrgMappingsInfo.ts","components/Mappings/OrgMapping/OrgSourceMapping/OrgSourceMapping.tsx","components/Logos/ExampleOrgConnect.js","components/Mappings/OrgMapping/OrgMapping.tsx","components/Mappings/ProfileAttrMapping/ProfileAttrMapping.tsx","components/Mappings/MappingCards/MappingCards.tsx","components/Mappings/Mappings.tsx","components/Mappings/_helpers/createMappingsCardData.ts","components/Mappings/MappingsValidationFetcher.tsx","components/Mappings/index.tsx","pages/Directory/MappingsForm/MappingsForm.tsx","pages/Source/components/MappingsCard/MappingsCard.tsx","components/Mappings/MappingsSummary/Errors.tsx","components/Mappings/MappingsSummary/Warnings.tsx","components/Mappings/MappingsSummary/SummaryLine.tsx","components/Mappings/MappingsSummary/MappingsSummary.tsx","components/Mappings/MappingsLayout/MappingsLayout.tsx","components/Mappings/MappingsLayout/index.tsx","helpers/getHasError.ts","components/Page/BackButton.js","fetches/makeUpdateRole.ts","components/Loader/ErrorView.js","components/Loader/index.js","config.js","components/Page/CancelButton.tsx","pages/Directory/helpers/makeSourceCreateBaseUrl.ts","store/configuration/actions/entityTypesFetch.ts","atoms/HelpDocLink.tsx","pages/Directory/UploadCsv/FileUploadInfoCard.tsx","store/mappings/actions/batchMappingsFetch.ts","store/sources/actions/makeGetSourceMappings.ts","fetches/createEntityType.ts","molecules/SlideDialog.tsx","pages/Pages/components/SlideContent.tsx","components/Icons/AttributePage.tsx","components/Icons/IndependentPage.tsx","pages/Pages/components/ChoosePageTypeSlide.tsx","components/Icons/ConvertAttribute.tsx","components/Icons/CreateNewAttribute.tsx","pages/Pages/components/AttributeSlide.tsx","pages/Pages/components/IndependentSlide.tsx","pages/Pages/components/ExistingAttributeSlide.tsx","pages/Pages/components/NewAttributeSlide.tsx","pages/Pages/components/PageTypesDialog.tsx","pages/SiftBot/components/PriorityList/AttributeRow.js","pages/SiftBot/components/PriorityList/SortableList.js","pages/SiftBot/components/PriorityList/index.js","components/Table/TableHeadCell.js","components/onboarding/reorderTasks.ts","store/onboarding/index.ts","components/onboarding/constants.ts","helpers/showSnackbar.ts"],"names":["__webpack_require__","d","__webpack_exports__","NAME_YOUR_DATA_URL","CHOOSE_SOURCE_TYPE_URL","AUTHORIZE_DATA_ACCESS_URL","CHOOSE_SYNC_GROUPS_URL","UPLOAD_CSV_URL","MAP_ATTRIBUTES_URL","DATA_SETTINGS_URL","SOURCE_WIZARD_BASE_URL","SOURCE_WIZARD_BASE_URL_W_DIRECTORY_ID","SOURCE_WIZARD_BASE_URL_W_DIRECTORY_SOURCE_IDS","CSV_WIZARD_URL","CSV_WIZARD_UPLOAD_URL","CSV_WIZARD_MAPPING_URL","MAPPINGS_TAB","DIRECTORY_APP_USERS","CSV_SOURCE_TYPE_KEY","AZURE_SOURCE_TYPE_KEY","GOOGLE_SOURCE_TYPE_KEY","LDAP_SOURCE_TYPE_KEY","UKG_SOURCE_TYPE_KEY","OKTA_SOURCE_TYPE_KEY","DEMO_DATA_SOURCE_TYPE_KEY","CLIENT_PRIMARY_KEY","REQUIRED_PROFILE_ATTR_KEYS","PRIMARY_MAPPING_TYPE_KEY","ORG_MAPPING_TYPE_KEY","PROFILE_ATTR_MAPPING_TYPE_KEY","HIERARCHY_MAPPING_KEY","ORG_TEAM_LEADER_MAPPING_REF_KEY","ORG_TEAM_LEADER_MAPPING_MATCH_KEY","TL_REF_MAPPING_INDEX","TL_MATCH_MAPPING_INDEX","DEFAULT_EMPTY_ORG_MAPPINGS","components_Router_consts__WEBPACK_IMPORTED_MODULE_0__","concat","HOME_URL","DIRECTORIES_URL","SOURCE_CREATE_URL","SOURCE_URL","source","type","destination","isRequired","isUnique","defineStyles","definer","theme","useStyles","makeStyles","root","marginBottom","spacing","display","content","flex","title","fontSize","fontWeight","marginTop","marginRight","helpLinkSpacing","actions","alignItems","PageTitle","_ref","subtitle","className","classes","helpArticleLink","React","useContext","HelpArticleLinkContext","helpArticleLinkText","HelpArticleLinkTextContext","react__WEBPACK_IMPORTED_MODULE_1___default","a","createElement","classNames","_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_5__","variant","data-cy","Object","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","components_Page_HelpArticleLink__WEBPACK_IMPORTED_MODULE_6__","link","text","DIRECTORY_CREATE_IDENTIFIER","DIRECTORIES_FETCH","DIRECTORY_FETCH","DIRECTORY_CREATE","DIRECTORY_DELETE","DIRECTORY_SAVE","fetchDirectories","query","identifier","payload","fetchDirectory","directoryId","expands","expand","Array","isArray","id","undefined","createDirectory","label","data","deleteDirectory","saveDirectory","directory","ACTION_HANDLERS","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","createActionHandlers","state","action","updatedDirectory","oldDirectory","objects","settings","mergeSuccess","initialState","fetches","directoriesReducer","arguments","length","handler","spinnerClass","color","palette","secondary","contrastText","LoadingButton","_ref$disabled","disabled","_ref$label","loading","spinnerClassName","_ref$variant","onClick","restOfProps","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__","_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_4__","assign","data-testid","_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_5__","classnames","size","PERSON_FETCH","PERSON_FETCH_SUCCESS","PERSON_FETCH_ERROR","SEND_INVITE","SEND_INVITE_SUCCESS","SEND_INVITE_ERROR","SEND_INVITE_ALL","SEND_INVITE_ALL_SUCCESS","SEND_INVITE_ALL_ERROR","SEND_RESETPASSWORD","fetchPerson","sendInvite","sendInviteAll","personId","emails","asyncComponent","Promise","all","e","then","bind","reducer","getRootNodes","defineFetch","displayName","make","request","http","method","route","filter","and","field","comparison","value","sortBy","sortDirection","makeGetRootNodes","defaultGroupEmailFormValue","enabled","defaultGroupMessageFormValue","msTeams","onApp","onSiftWeb","defaultOrgChartExportFormValue","download","print","defaultRootIds","defaultAssistantFormValue","defaultOnboardingFormValue","share","namespace","merge","previous","next","objectSpread","_ref2","asyncToGenerator","regenerator_default","mark","_callee","i","wrap","_context","prev","stop","_x","apply","this","flexDirection","width","overrides","AppSidebar","height","AppHeader","minHeight","padding","overflowY","container","maxWidth","Page","childrenProp","children","classesFromProps","_classes","rootClassName","_get","contentClassName","containerClassName","ToolbarPlaceHolder","usePortalPlaceholder","ToolbarPortal","Children","toArray","react_default","PortalProvider_default","RemoveCircleIcon","props","SvgIcon","xmlns","viewBox","fill","fillRule","SortableHandle","Reorder_default","SortableItemElem","SortableElement","itemIndex","layout","fields","onLayoutChange","onRemoveItem","find","objectKey","name","SortableHandleElem","dragIcon","itemName","IconButton","buttonIcon","oldIndex","newIndex","ArrowUpward_default","icon","ArrowDownward_default","ProfileLayout_RemoveCircleIcon","zIndex","paddingLeft","paddingRight","paddingTop","paddingBottom","backgroundColor","colors","grayBlue","borderColor","grey","&:hover","typography","body1","marginLeft","cursor","SortableList","SortableContainer","map","item","index","handleRemoveItem","GenericLayoutBuilder_SortableItemElem","key","GenericLayoutBuilder","allFields","onChange","_ref$useAttributeDrop","useAttributeDropdown","typeKey","entityTypes","useEntityTypes","entityType","formatConfigOptionDisplayName","attribute","keyedFields","includes","_attribute$objectKey$","split","rootParentField","slicedToArray","attributes","useMemo","filteredFields","reduce","acc","filteredFieldsCollection","keys","newField","newDisplayName","_sortBy","handleSortEnd","newLayout","arrayMove","header","Local","searchPlaceholder","selectedAttributes","onSaveSelectedAttributes","newFields","toConsumableArray","getAttributeKey","getAttributeDisplayName","LabelButtonProps","saveButtonLabel","GenericLayoutBuilder_SortableList","useDragHandle","splice","onSortEnd","justifyContent","borderRadius","margin","rootDialog","dialogContent","button","LayoutSettingCard","cardTitle","dialogTitle","layoutKey","userStatus","values","_useState","useState","_useState2","dialogOpen","setDialogOpen","availableFields","fieldsCollection","_keyBy","layoutValue","layoutFields","_useState3","_useState4","setLayout","toggleDialogOpen","prevDialogOpen","_handleUpdateLayout","useEffect","searchSettings","Card","CardHeader","Button","subheader","Dialog","open","onClose","paper","DialogTitle","DialogContent","DialogContentText","DialogActions","isLoading","FILTER_SUBTITLE_COPY","FILTERABLE_FIELD_TYPES","fieldIsFilterable","fieldTypeIsFilterable","isFieldValidConfigOption","FilterLayout","_ref$typeKey","molecules_LayoutSettingCard","withStyles","position","inputRow","inputCopy","numberInput","minWidth","errorMessage","limit","Switch","inputProps","aria-label","isEnabled","checked","Divider","CardContent","style","TextField","error","helperText","currentTarget","parseValue","parseInt","isNaN","GroupEmail","handleChangeEnabled","useCallback","Fragment","Typography","GroupMessage","enabledOnApp","enabledOnSiftWeb","target","GroupMessaging","setFieldValue","GroupMessaging_GroupEmail","client","groupEmail","GroupMessaging_GroupMessage","groupMessage","Directory","errors","Directory_FilterLayout","Directory_Export","export","GroupMessaging_GroupMessaging","Pronunciation","Assistants","WEEK_DAY_NAMES","WEEK_DAY_ABBREVIATIONS","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","DEFAULT_WORK_HOURS","startTime","hour","minute","endTime","DEFAULT_WORK_HOURS_BY_DAY","day","unselectedDay","hint","selectedDay","main","common","white","weekDayAbbr","disabledSelectedDay","WeekDayCheckBox","Checkbox","checkedIcon","defineProperty","flexWrap","timePickerWrapper","timePickerContainer","timePicker","inputErred","& input","WorkHoursSelector","clearable","onChangeStartTime","onChangeEndTime","hasError","TimePicker","LocationSelector","location","userConfig","PERSON_ENTITY_TYPE_KEY","userConfigFields","options","getInitialValue","newLocation","option","locationValue","setLocationValue","handleChange","newValue","Autocomplete","getOptionLabel","getOptionSelected","renderInput","params","placeholder","event","toggles","checkbox","row","dayRowContent","hoursAndLocationAndErrors","hoursAndLocation","workHourSelectors","copyButton","alignSelf","WorkHoursForm","workScheduleEnabled","hoursEnabled","locationEnabled","defaultWorkHoursEnabled","workHoursByDay","workHoursByDayEntries","entries","workingDayAndHours","_ref3","hasWorkingDay","hasMoreThanOneWorkingDay","firstWorkingDay","firstWorkingDayHours","handleChangeWorkHourOfDay","marker","timeObject","handleChangeLocationOfDay","handleChangeWorkingOnDay","newValueForDay","indexOf","FormControlLabel","control","FormGroup","WeekDayCheckBox_WeekDayCheckBox","_ref4","_ref5","_ref5$","WorkHoursSelector_WorkHoursSelector","LocationSelector_LocationSelector","Tooltip","newWorkHoursByDay","entry","dayNumberValue","FileCopyOutlined_default","workHoursSection","TimezoneAndWorkHours","timezoneEnabled","WorkHoursForm_WorkHoursForm","timezoneAndWorkHours","TimezoneAndWorkHoursForm","Profile","Pronunciation_Pronunciation","namePronunciation","Profile_Assistants","assistants","Profile_TimezoneAndWorkHours_TimezoneAndWorkHours","HIGHLIGHT_SUBTITLE_COPY","HIGHLIGHTABLE_FIELD_TYPES","highlightByFilter","fieldTypeIsHighlightable","parentFieldKey","substring","lastIndexOf","parentField","itemType","startsWith","childFieldKey","slice","childField","fieldIsObjectArray","parentFieldIsObjectArray","OrgChartHighlightsLayout","OrgChartExport","printEnabled","downloadEnabled","cardRoot","overflow","attributeSelector","maxHeight","attributesList","RootNodes","currentRootNodes","availableRootNodes","transformedIds","attributesSelectorElem","totalReportCount","OrgChart","rootNodes","OrgChart_OrgChartHighlightsLayout","OrgChart_OrgChartExport","orgChart","OrgChart_RootNodes","Onboarding","getWorkHoursByDayArray","workingDays","sort","b","itemToSave","_omit","startTimeMoment","moment","endTimeMoment","startTimeHour","startTimeMinute","endTimeHour","endTimeMinute","convertTimeoneAndWorkHoursValueForRequest","timezoneAndWorkHoursFormValue","defaultWorkHoursArray","setDefaultWorkHoursToNull","timezone","workHours","defaultWorkHours","getWorkHoursByDayLookup","workingHoursByDay","workHoursItem","getDefaultTimezoneAndWorkHoursFormValue","clientSettings","Boolean","layoutRoot","Features","dispatch","useDispatch","_client","useSelector","entityTypesFetch","makeEntityTypesFetch","updateLayoutFetch","makeUpdateLayoutFetch","updateLayoutStatus","useStatus","clientStatus","status","onboarding","layouts","org-chart-highlight-by","filters","combineStatuses","useData","document","useFormSnackbar","history","useHistory","tabPath","pathname","replace","tab","newComponents","Breadcrumbs","routes","Loader","formik_esm","initialValues","validate","forEach","isBefore","onSubmit","_timezoneAndWorkHours","timezoneAndWorkHoursSettingsToSave","convertTimezoneAndWorkHoursValueForRequest","newValues","_isEqual","layoutPayload","entityField","updateClient","dirty","resetForm","Tabs","push","handleTabChange","Tab","tabs_Directory_Directory","Profile_Profile","OrgChart_OrgChart","Other_Onboarding","PageFormToolbar","preContent","PageFormErrorMessage","CancelButton","SaveButton","handleSubmit","_isEmpty","react_router","when","message","HandleRedirect","defaultSupportFormValue","fetchWithAuth","url","subdomain","urlParse","config","API_ENV","window","href","hostname","jwt","cookie","get","fetch","headers","Authorization","dataUriToBlob","dataUri","byteString","atob","mimeString","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","signUpload","_x2","_x3","_signUpload","themeId","endpoint","imageDataUri","_dataUriToBlob","response","queryString","stringify","contentType","sent","abrupt","json","uploadToStorage","_uploadToStorage","signature","file","refUrl","mode","Accept","body","fixImageUri","_fixImageUri","imageUri","azStorageUri","verifyNewSubdomain","input","makeVerifyNewSubdomain","fetchThemes","THEMES_GET_ALL_FETCH","getThemesFetch","getFetch","setStatus","THEMES_SET_LOADING_STATE","createTheme","_createTheme","logoUrl","pictureUrl","backgroundUrl","primaryTheme","secondaryTheme","updatedSettings","initialThemeResponse","initialTheme","_yield$Promise$all","_yield$Promise$all2","logoUrlFixed","backgroundUrlFixed","pictureUrlFixed","updateResponse","primary","getContrastColor","Content-Type","JSON","_notEmpty","WHITE","BLACK","themeColor","getLuminance","createAndUploadTheme","_callee2","_theme$settings","newTheme","_context2","deactivateTheme","_callee3","_context3","saveTheme","_theme","createdAt","clientId","updatedAt","isActive","objectWithoutProperties","Status","States","LOADING","NORMAL","t0","Sentry","ERROR","console","& > *:not(:last-child)","& > *","radio","border","divider","&:checked","&::before","&::after","transparentize","&:focus","opacity","top","bottom","left","right","semiBold","shortId","defaultId","customId","onKeyPress","role","htmlFor","body2","bold","caption","formControl","textFieldRoot","inputAdornment","boxHitBox","box","description","setOpen","boxHitBoxRef","useRef","InputProps","disableUnderline","startAdornment","InputAdornment","ref","Popover","anchorEl","current","anchorOrigin","vertical","horizontal","transformOrigin","react_color_es","hex","disableAlpha","ThemingSettings","getDataUrlFromFile","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","removeButton","fileDrop","imageSrc","onChangeImageUrl","onRemove","example","maxSize","showDropper","internalError","setInternalError","_handleNewFile","dataUrl","Math","round","pow","delay","react","FileDrop","fileName","onFileChange","hasValue","errorText","accept","CardActions","memoizeLast","_len","statuses","_key","combined","or","RedButton","compose","withThemeOverrides","deriveLightDark","withProps","textField","directLink","textAlign","withSnackbar","onDestroyAllThemes","enqueueSnackbar","titleClicks","setTitleClicks","easterEggDialogOpen","setEasterEggDialogOpen","hostName","getHostName","handleEasterEggClose","handleRedClick","previewUrl","aria-labelledby","Loader_default","isLoadingView","CircularProgress","hasErrorView","Error_default","isEmptyView","lib_default","onCopy","FileCopy_default","unknownStatus","UNKNOWN","PreviewDialogContainer","rest","themes","themesFetch","previewThemeId","onPreviewFetchRequested","previewTheme","THEMES_SET_PREVIEW_ID","createPreviewTheme","PreviewDialog_PreviewDialog","allThemesResponse","allThemes","_iterator","_step","themeToDelete","_createForOfIteratorHelper","s","n","done","f","finish","t1","pageContentRoot","styleModeSelector","colorRows","themingContent","breakpoints","down","custom","preview","appBar","shape","toolbar","logo","background","boxShadow","shadows","avatar","Theming","previewOpen","setPreviewOpen","StyleModeSelector_StyleModeSelector","ThemingSettings_ThemingSettings","ColorRow_ColorRow","ImageField_ImageField","ThemeProvider","AppBar","Toolbar","src","alt","Avatar","components_PreviewDialog","CompanyName","maxLength","AllowUninvited","domain","Subdomain","component","AutoPopper","withPopper","Autosuggest","CompanyTimezone","_this","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","timeZoneNames","tz","names","timeZoneByName","timeZoneDictionary","timeZone","handleSelect","suggestionValue","setState","suggestions","inputValue","handleBlur","recalculateSuggestions","fuzzy","match","string","prevProps","prevState","onBlur","onSuggestionSelected","onSuggestionsFetchRequested","PureComponent","OrgLevelsLayout","logoUploader","LogoUploader","arrowIconStyle","TEAM_LEADER_DEFAULT_VALUE","column","columnHeader","centerText","Terminology","_ref$defaultValue","defaultValue","teamMemberUpdateKey","teamLeaderUpdateKey","renderTeamLeaderField","teamMemberValue","teamLeaderValue","KeyboardArrowRight_default","terminology","pluralize","leaderTerminology","helpLink","leftColumn","rightColumn","CustomNavigationTab","customNavLink","Support","handleTextChange","emailsValueAsArray","convertEmailStringToArray","handleChangeSupportEnabled","emailString","supportEmails","_split","email","splitCommaEmail","splitSpaceEmail","join","_this$props","multiline","fullWidth","cardHeader","cardContent","adminOnlySwitchLabel","DottedLineRelationships","HelpArticleLink","dottedLineRelationships","userEditable","h5","Settings","Settings_CompanyName","isTrial","Settings_Subdomain","toLowerCase","Settings_CompanyTimezone","info","Settings_LogoUploader","Settings_OrgLevelsLayout","Settings_DottedLineRelationships","Settings_AllowUninvited","login","blockCreatedAccounts","Settings_Terminology","Settings_CustomNavigationTab","Settings_Support","support","General","analytics","useAnalytics","subdomainValidation","activeTheme","org-levels","enableEmailTheming","matched","_logoUrl","logoToSave","newClientValues","layoutPayloadKeys","newThemeValues","enableReinitialize","validationSchema","Yup","required","emailRegex","test","teamMember","teamLeader","isValidColor","isValid","tabs_Settings","Theming_Theming","getOnboardingTasks","track","category","titleContainer","h5Semibold","SupportCard","Paper","elevation","p","buttonContainer","HelpCard","SupportCard_SupportCard","DocsCard","Link","HELP_ARTICLE_HOME","underline","rel","HELP_LINKS","HelpDocLink","heading","gray2","supportCardContainer","Home","personName","components_Page","Checklist","isOnHomePage","HelpCard_HelpCard","DocsCard_DocsCard","_ACTION_HANDLERS","person","NoRoute","react_router_dom","to","Component","returnDisabledFields","entityTypeKey","useAttributesEditDialog","_useRouter","useRouter","historyRef","useLayoutEffect","isOpen","isOpenRef","PERSON_PROFILE_URL","ATTRIBUTES_URL","close","DYNAMIC_PAGES_URL","actionBar","exportButton","CustomToolbar","path","useLocation","useParams","filterModel","counter","toString","preferencePanel","_props$api$current","api","hideFilterPanel","showFilterPanel","attributesEditDialogOpen","dist_index_esm","startIcon","Badge","badgeContent","Search_default","ExportButton","formats","disableElevation","buttonText","rootPopper","modal","CustomGridPanel","hidePreferences","columnHeadersElementRef","handleClickAway","handleKeyDown","Popper","placement","modifiers","flip","ClickAwayListener","onClickAway","onKeyDown","headerAttributes","LOCKED_TOOLTIP_TITLE","getDataType","globalConfig","baseField","getClassNames","_classnames","cell","noClick","BASE_FIELD_PAGE","BASE_FIELD_PAGE_COLLECTION","isLocked","renderLockedTooltipCell","attributeColumns","profileAttributes","headerName","hide","filterable","cellClassName","renderCell","valueGetter","sortComparator","v1","v2","cellParams1","cellParams2","localeCompare","singular","CheckCircle_default","NotInterested_default","grayIcon","Lock_default","plural","FiberManualRecord_default","circleIcon","greenCircleIcon","attributeRows","parentFields","onProfile","userEditing","pageContent","wrapper","gray1","success","thirtyEightPercent","outline","isIE","bowser","useTerminology","rows","columns","disableColumnMenu","disableColumnSelector","disableColumnReorder","disableSelectionOnClick","onRowClick","_personClientFieldObjectKey","sortModel","components","Panel","componentsProps","getProfileAttributes","webProfileLayoutKey","webProfileLayout","profilePeopleLayout","orgLevelsLayout","findField","buildCategory","shouldBuildCategory","foundCategory","categoryName","_categories","findCategory","categories","child","buildField","buildBasicLayoutObject","returnValue","newBasicLayout","_flatten","flattenedWebProfile","flattenedProfilePeople","flattenedOrgLevels","headerItems","memo","useGlobalConfig","makeGetUserFields","makeGetUserFieldsFetch","userFieldsStatus","userFields","makeGetFields","makeGetFieldsFetch","entityTypeFieldsStatus","entityTypeFields","usePassiveRedux","filterChildAttributes","fieldKeys","_fields","filteredFieldItemKeys","filteredFieldKeys","extractedChildItemKeys","charAt","itemKey","itemLength","omittableChildItemFields","parentAndProfileStatus","configStatus","combinedStatus","Attributes_Attributes","StandAloneIcon","fillOpacity","x","y","rx","CategoryIcon","DialogSelectItem","standAlone","handleClick","handleSwitch","Image","img","images","AddAttributeDialogItem","handleToggle","currentIndex","newChecked","handleAddButtonClick","handleAddAttributes","handleClose","_this2","availableAttributes","leftHeader","handleBackClick","ArrowBack_default","Clear_default","List","list","arrayValue","ListItem","listItem","disableRipple","tabIndex","ListItemText","buttons","AddCategoryDialogItem","errorState","addCategory","trim","handleCreateCategory","displayError","textfield","AddSectionDialog","slideSwitch","dialogItem","dialogComponents","AddAttributesDialogItem","handleListItemClick","dialogExited","DialogComponent","paperWidthSm","onExited","Slide","direction","in","appear","mountOnEnter","unmountOnExit","dialogContainer","disableTypography","dialogSelectItem","AddSectionDialog_DialogSelectItem","overflowX","titleText","currentLayout","fieldIdsInLayout","fieldIdReference","recursiveFieldGetter","fieldIds","childItem","getFieldIdReference","ALLOWED_TYPES","targetField","parentAttributes","components_AddSectionDialog_AddSectionDialog","AttributeCard","collapse","handleRemoveClick","handleOnExited","removeSection","handleDown","handleUp","_this$props2","_this$props3","Collapse","timeout","iconContainer","AttributeCard_SortableHandleElem","dragHandleIcon","arrowIcon","card","headerRoot","headerContent","RemoveCircleOutline_default","removeCircle","-webkit-touch-callout","-webkit-user-select"," -khtml-user-select","-moz-user-select","-ms-user-select","user-select","alignContent","DragHandle_default","Field","secondLevel","Field_SortableHandleElem","fieldNameContainer","fieldName","rightIconsContainer","removeCircleIconButton","removeCircleIcon","getValidAttributes","CategoryCard_SortableItemElem","components_Field_Field","parentCategory","components_CategoryCard","secondLevelCategory","CategoryCard","updatedCategory","_cloneDeep","updatedChildren","saveAttributes","attributeNames","attributeTempValue","attributeObjects","tempCategory","attributeName","object","attributeTemplate","createdAttribute","handleRemoveChildClick","childCategoryId","newCategory","removeIndex","findIndex","handleChildChange","newUpdatedCategory","childIndex","reorderList","reducedAttributes","_partition2","_partition","o","_partition3","requiredItems","nonRequiredItems","displayRemoveButton","removeCircleContainer","removeCircleOutlineIcon","_this$props4","childrenAreAllFields","some","CategoryCard_SortableHandleElem","secondLevelCategoryHeader","align","attributeSelectorRoot","cardContainer","categoryCardContent","CategoryCard_SortableList","getChildField","getChildCategory","surface","components_CategoryCard_CategoryCard","cardHeaderRoot","LockOutlined_default","cardContentRoot","MockField","lock","layoutType","onSectionSortEnd","ProfileLayout_SortableItemElem","components_AttributeCard_AttributeCard","ProfileLayout","updateLayout","l","sidebarData","sidebarLayout","layoutsToUpdate","handleUpdateLayout","layoutItem","layoutItemTemplate","categoryTemplate","handleRemoveSection","sectionId","sectionIndex","section","handleClickOpen","resetLayout","entityTypesStatus","statusRoot","addSectionButton","sortableListContainer","ProfileLayout_SortableList","isIndependentPage","SidebarCard","components_MockField_MockField","components_AddSectionDialog","globalConfigFetch","makeGlobalConfigFetch","globalStatus","_isNil","globalTempValue","tempValue","foundField","newChild","basicLayout","pages_ProfileLayout_ProfileLayout","categoryConfigObject","globalCategory","globalCategoryChildren","matchingAttributes","fieldKey","tabTypes","ATTRIBUTES","LAYOUT","PROFILE_COMPLETION","PersonProfilesPage","currentTab","ProfileLayout_container","SiftBot","entityTypeId","entityId","fieldId","makeGetConfiguration","entityTypeTypeKey","deleteButton","loadingButtonSpinner","DeletePageModal","onSetOpen","onDelete","deleteEntity","makeDeleteEntity","prevStatus","usePrevious","nameInput","setNameInput","handleCancel","showSnackbar","isNormal","isError","autoFocus","createEntity","makeCreateEntity","convertStringToArrayOfStrings","splitCommaOption","optionSpaceSplit","CreatePageModal","createEntityStatus","createEntityData","prevCreateEntityStatus","pageNameInput","setPageNameInput","numberOfEntitiesCreated","makeGetEntitiesList","makeGetEntitiesListFetch","entitiesListStatus","handleCreatePage","nameInputArray","NoPagesIcon","stroke","strokeWidth","strokeMiterlimit","strokeLinejoin","strokeDasharray","CreatingFilesIcon","clipPath","strokeLinecap","transform","noResultsCard","noResultsCardContent","creatingFilesIcon","noResultsIcon","body1bold","NoPagesView","_ref$migrationInProgr","migrationInProgress","_ref$shouldRenderButt","shouldRenderButton","buttonTitle","CreatingFiles","NoPages","NewPagesButton","arrow","PagesRow","deletable","page","handleSelectEntity","host","subdomainUrl","menuOpen","setMenuOpen","setAnchorEl","TableRow","TableCell","pageLink","metadata","explicitEditorCount","memberCount","lastEditedAt","format","textAlignRight","aria-haspopup","handleMore","MoreHoriz_default","Menu","MenuItem","infoIcon","PagesTable","pagesData","canAddOrDeletePages","onSelectEntity","onSetCreateModalOpen","pages","pagination","total","pageSize","components_Toolbar","TableSearchTextField","hintText","ToolbarSpacer","Table","TableHead","TableHeadCell","sortByKey","InfoOutlined_default","TableBody","tabs_PagesRow","TablePagination","marginRight3","infoCardDescription","pagesCards","PagesCards","search","parse","filterOn","filterName","setFilterName","editedFilter","uneditedFilter","allFilter","handleFilterChange","newFilterName","InfoCard","number","selected","tableContainer","PagesTab","hasQuery","onDeleteEntity","onReload","isCreateModalOpen","setIsCreateModalOpen","isDeleteModalOpen","setIsDeleteModalOpen","deleteModalSubtitle","_useState5","_useState6","selectEntity","setSelectEntity","tabs_PagesCards","tabs_PagesTable","components_NoPagesView","components_CreatePageModal","tabs_DeletePageModal","Container","handleDeleteEntity","searchQuery","nameQuery","PagesTab_PagesTab","flexGrow","PageTypeName","pageItem","attributeTypes","pageCollectionItem","independentItem","personClientFieldObjectKey","AttributeTypeCard","marginBottom3","marginBottom1","PageEditors","RadioGroup","Radio","contentContainer","filterCard","SearchSettings","isSearchEnabled","isDisplayedOnEmptySearch","openDialogButton","red","DeletePages","deleteEntityType","makeDeleteEntityType","deleteEntityTypeStatus","prevDeleteEntityTypeStatus","isDeleting","dialogInput","setDialogInput","buttonClass","toggleDialog","shouldDeletePage","SettingsTab","onUpdateEntityType","onUpdateLayout","updateEntityType","makeUpdateEntityType","updateEntityTypeStatus","implicitEditorRule","_settings","directorySearch","displayOnEmptySearch","handleValidation","SettingsTab_PageTypeName","SettingsTab_PageEditors","SettingsTab_SearchSettings","SettingsTab_DeletePages","directorySources","google-directory","azure-active-directory","borderHeight","table","tableHeader","tableContent","transition","flow","tableCell","whiteSpace","textOverflow","tableRow","tableRowBorder","borderBottom","tableButtonRow","blue","DirectoryMapping","mappings","showMore","setShowMore","buttonRowElem","minRows","tableRowHeight","tableHeight","mapping","tableRowClasses","renderTable","overlay","fieldDirectoryMappingsFetch","makeFieldDirectoryMappingsFetch","fieldData","DirectoryMapping_DirectoryMapping","textDecoration","AttributeDataMapping","directoryLink","components_DirectoryMapping","createPages","JoinPage","isSyncManaged","valueReadOnly","newGroupsSwitch","PageMemberGrouping","selectOptions","groupingEnabled","positionButton","textTransform","AttributeUsage","filterDialogOpen","setFilterDialogOpen","highlightDialogOpen","setHighlightDialogOpen","filterAvailableFields","filterLayoutFields","filterLayout","setFilterLayout","highlightAvailableFields","highlightLayoutFields","_useState7","_useState8","highlightLayout","setHighlightLayout","isOnProfile","shouldRenderProfilePage","nameFieldObjectKey","filterAndHighlightByField","isSearchFilterEnabled","shouldRenderSearchFilters","isHighlightByEnabled","highlight","shouldRenderHighlightBy","shouldRenderCard","closeDialogs","dialogActions","MembershipTab","isPersonAttribute","personEntityType","onUpdateField","formattedSelectOptions","setFormattedSelectOptions","currentSelectOptions","relationshipMetadataAttribute","_isSyncManaged","_layouts","initialStateSettings","initialStateFieldValue","initialStateLayouts","layoutValues","handleUpdateEntityType","settingsValues","selectOptionsAsArray","settingsValuesWithOptionsConvertedToArray","handleUpdateField","fieldValue","components_AttributeDataMapping","grouping","components_JoinPage","components_PageMemberGrouping","components_AttributeUsage","entityTypeData","MembershipTab_MembershipTab","PublishEntityTypeModal","onSwitchIsActive","publishEntityType","makePublishEntityType","PAGES","SETTINGS","ATTRIBUTE","MEMBERSHIP","layoutContainer","flexCenter","PageTypes","_tabContentByType","entityTypeConfig","_useParams","pageTypeName","setIsActive","tooltipTitle","isPublishModalOpen","setIsPublishModalOpen","tabContentByType","tabs_MembershipTab","SettingsTab_SettingsTab","tabs_PagesTab","tabValue","tabContent","components_PublishEntityTypeModal","clearFetch","useClearFetch","getEntityTypeConfig","makeGetEntityTypeConfiguration","getEntityTypeConfigStatus","fieldsFetch","fieldsStatus","getEntityTypeUploadStatus","makeGetEntityTypeStatus","entityTypeUploadData","entityTypeUploadStatus","updateField","makeUpdateCategoryFieldFetch","updateFieldStatus","editedAttribute","isolatedStatus","_x4","handleGetMigrationStatus","combinedUpdateStatus","combinedGetStatus","PageTypes_PageTypes","TEXT_CARDS","CONTACT_CARDS","CHIP_CARDS","SUB_ATTRIBUTE_CHIP_CARDS","OTHER_CARDS","SUB_ATTRIBUTE_TEXT_CARDS","PAGE_CARDS","pageRoot","cardSection","AttributesChooseNew","parentObjectKey","subAttribute","isUser","pageDialogOpen","setPageDialogOpen","newAttributeType","setNewAttributeType","pageType","PageTypesDialog","AttributeBasicInfo","isGeneralField","isGeneralAndNoCategorizedAttributes","cardRootClass","shouldRenderMessageOptions","shouldRenderLinkName","AttributesCreateNew","newAttributeResponse","onClearFetches","onRedirect","onUpdateParentField","qs","components_AttributeBasicInfo","USER_URL","removeEmptyObjProps","obj","k","v","USER_EDITABILITY_NONE","USER_EDITABILITY_FULL","USER_EDITABILITY_PARTIAL","notClickable","AttributeRow","isGeneral","dataType","isNotClickable","hover","handleEditClick","mainCell","lastCell","drag","inline","tableHead","body2Bold","SubAttributesTable","editPriorityList","generalField","newList","setNewList","dragHandle","sortableItem","dataIndex","DragHandle","components_AttributeRow","isLast","SortableListElem","items","SortableItem","SortableItems","Table_TableCell","lockToContainerEdges","AttributeReachOutToMeFor","useFormikContext","shouldRenderFormat","sortableFields","setSortableFields","components_SubAttributesTable","OPTIONS_TYPES","CHIP_TYPES","subAction","_useFormikContext","setOptions","priorityModalOpen","setPriorityModalOpen","disabledClass","profileCompletionEnabled","isRequiredAttribute","priorityList","priorityListItems","getPriorityListItems","shouldRenderRequiredAttribute","shouldRenderOptions","shouldRenderMaxNumberOfChips","shouldRenderAutocompleteFields","shouldRenderMaxLinks","shouldRenderNumberRange","shouldRenderAnyCardContent","requiredAttributeCopy","initialOptions","convertOptionsToArrayOfObjects","currentValues","handleFalseySwitchChange","handleSwitchChange","handleMinMaxChange","Number","preventDefault","autocomplete","PriorityList","configFields","isModalOpen","onCloseModal","resetState","DeleteAttribute","deleteCategoryField","shouldRenderDeleteButton","deleteAttribute","isChecked","deleteFieldFetch","makeDeleteCategoryFieldFetch","deleteFieldStatus","handleRedirect","handleDelete","parentKey","parentPayload","combinedLoadingStatus","DeleteAttribute_DeleteAttribute","AttributesEdit","siftBotFields","layoutStatus","attributeAutocompleteData","updateSiftBotFields","updateAttributeAutocomplete","isSaving","setIsSaving","attributeId","formattedAutocompleteData","setFormattedAutocompleteData","shouldRenderDeleteAttribute","newAttribute","isSubAttribute","shouldRenderAttributeUsageAndDataMapping","initialStateToCompareDirty","initialStateLayout","handleUpdatePriorityFields","priorityFieldsPayload","isNewSiftFields","clientPayload","handleUpdateAutocomplete","autocompletePayload","arrayOfOptions","valuesToCompareDirty","hasErrors","components_AttributeReachOutToMeFor","components_AttributeUserEditing","components_DeleteAttribute","makeGetAttributeAutocomplete","retrieveAllDatabaseEntries","createFieldFetch","makeCreateCategoryFieldFetch","updateFieldFetch","updateAttributeAutocompleteFetch","makeUpdateAttributeAutocomplete","getAttributeAutocompleteFetch","updateFieldFetchStatus","prevUpdateFieldFetchStatus","createFieldFetchStatus","prevCreateFieldFetchStatus","prevUpdateLayoutStatus","updateSiftBotStatus","siftBot","prevUpdateSiftBotStatus","prevEntityTypeFieldStatus","prevUserFieldsStatus","updateAutocompleteStatus","prevUpdateAutocompleteStatus","getAutocompleteStatus","userFieldsResults","entityTypeFieldsResults","setAttribute","deleteCategoryFieldFetch","handleUpdate","handleUpdateSiftBotFields","updateSiftBotFetch","handleUpdateAttributeAutocomplete","fieldStatus","prevFieldStatus","getEntityTypes","entityTypeFieldsExist","onLoadStatus","AttributesEdit_AttributesEdit","cancelButton","slideContainer","& > div","slide","transitions","create","duration","complex","leftSlide","leftSlideHidden","rightSlide","rightSlideHidden","backButtonIcon","AttributesEditModal","_useAttributesEditDia","currentSlideIndex","setSlideIndex","createField","createFieldStatus","getFields","entityTypesFetchStatus","getUserFields","handleUpdateParentField","handleCreateAttribute","parentFieldId","currentSlideContent","AttributesNew_AttributesChooseNew","AttributesNew_AttributesCreateNew","AttributesEdit_container","fullScreen","BackButton","iconClassName","goBack","makeGetSource","sourceId","createContext","nextButton","backButton","footer","progressContainer","progress","bar","brandColors","tertiaryPalette","moss","& .MuiLinearProgress-bar","step","Base","currentStep","pageTitle","disableNextButton","_ref$buttonText","onNext","onBack","onSkip","sourceInfo","SourceContext","isPrimary","totalNumberOfSteps","progressText","Box","LinearProgress","ArrowForward_default","inputContainer","NameYourData","dataName","setDataName","sourceContext","setSourceInfo","directoryIdUrlMatch","makeSourceCreateBaseUrl","complementary","_capitalize","handleNext","directoryCreateRes","sourceCreateRes","baseUrl","createSource","initializeSource","Base_Base","NameYourData_NameYourData","getSources","sourceType","makeGetSources","checkDiv","cardMid","pointerEvents","disabledIndicator","NewSourceCard","isSelected","_ref$isSourceAvailabl","isSourceAvailable","handleSourceSelect","AdditionalFileSyncIcon","altUploadContainer","altUploadCopy","ChooseSourceType","sourcesWithDemoData","setSourceType","isDemoDataAvailable","_directoryId","sourceData","SourceCard_NewSourceCard","Icons_AdditionalFileSyncIcon","sourcesData","ChooseSourceType_ChooseSourceType","authStatus","authTitle","authContent","indicator","notAuthed","indicatorColors","tiger","lime","isAzureSource","isGoogleSource","successRedirectUri","origin","errorRedirectUri","handleAuthorizeSource","useSource","getSource","makeUpdateSource","makeGetSourceGroups","q","& div","GroupsAutosuggest","onSelect","setInput","getSourceGroups","groupsData","GroupsAutosuggest_AutoPopper","renderSuggestion","suggestion","isHighlighted","DefaultSuggestion","_","groupSearchContainer","chip","& svg","SelectGroups","initialGroups","groups","setGroups","updateSource","sourceCopy","GroupsAutosuggest_GroupsAutosuggest","group","g","newGroups","Chip","groupId","updatedGroups","_remove","handleDeleteTag","canSelectGroups","SelectGroups_SelectGroups","fileDropContainer","fileDropRoot","h6","UploadCsv","useSnackbar","csvSourceData","setFile","waiting","setWaiting","disableOptOut","setDisableOptOut","setErrorText","signedUploadResponse","signedUpload","updatedSource","fetchSignedUpload","createSourceFile","setupProgress","csvOptOut","saveSource","setTimeout","handleOptOutCsvUpload","uploadCopy","FileUploadInfoCard","extension","pop","viewClassName","black","MappingsConfirmationDialog","BeforeYouMap","atoms_MappingsConfirmationDialog","MapAttributes","shouldDirectToCsvUpload","mapDialogOpen","setMapDialogOpen","FullScreenTopBar","dataSync_BeforeYouMap","data-id","MappingsLayout","getLatestDataCSVFile","makeGetLatestSourceFile","lastDataCsv","dataCsvFetchStatus","fetchSource","MapAttributes_MapAttributes","REQUIRED_ATTRS_FOR_OTHER_SOURCES","REQUIRED_ATTRS_FOR_PRIMARY_SOURCE","subtitle1","lineHeight","letterSpacing","midCard","switchContainer","syncLater","SyncSettings","lastDataCSV","_ref$mappingAttribute","mappingAttributes","csvUploaded","isCsvSource","submitting","setSubmitting","initialSyncState","syncEnabled","setSyncEnabled","allRequiredMappingsSet","attr","disableSync","handleSyncLater","handleCompleteWizard","handleQueueSync","queueSourceSync","setSourceSyncEnabled","_callee4","_context4","isComplete","getMappingsAttributes","makeGetMappingsAttributes","mappingAttributeStatus","SyncSettings_SyncSettings","Wizard","sourceState","Provider","sourceIdUrlMatch","isPrimarySource","Wizard_Wizard","routes_Administrators","routes_Applications","ApplicationCreate","routes_ApplicationEdit","PersonProfiles","routes_AttributesEditModal","routes_Pages","routes_PageTypes","routes_AttributeSocialPhotos","routes_SourceCreate","SourceWizard","routes_Directories","routes_SourceLDAPSetup","routes_SourceCSVSetup","routes_SourcePhotoCSVSetup","routes_Directory","routes_Source","routes_General","routes_Home","Users","routes_Person","Documentation","routes_Features","routes_SiftBot","routes_Debug","routes_NoRoute","Administrators","ADMIN_URL","AdministratorsPage","Icon","AdministratorsIcon","exact","navExact","Applications","APPLICATIONS_URL","ApplicationsPage","APIIcon","APP_CREATE_URL","ApplicationEditPage","ApplicationEdit","PersonIcon","AttributesEditModalPage","Pages","PagesPage","PagesIcon","PageTypesPage","AttributeSocialPhotos","AttributeSocialPhotosPage","SourceCreate","SourceCreatePage","SourceWizardPage","Directories","DirectoriesPage","DirectoriesIcon","SourceLDAPSetup","SourceLDAPSetupPage","SourceCSVSetup","SourceCSVSetupPage","SourcePhotoCSVSetup","SourcePhotoCSVSetupPage","DirectoryPage","Source","SourcePage","GENERAL_URL","GeneralPage","SettingsIcon","HomePage","HomeIcon","USERS_URL","navSideBarPath","InvitesPage","InvitesIcon","Person","PersonPage","isExternal","FEATURES_URL","FeaturesPage","FeatureIcon","SiftBotPage","SiftBotIcon","Debug","DEBUG_URL","DebugPage","NoRoutePage","isDebugEnabled","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","_material_ui_core_Link__WEBPACK_IMPORTED_MODULE_1__","_ref$text","resift__WEBPACK_IMPORTED_MODULE_0__","makeGetOnboardingTasks","other","_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2__","borderTop","visible","_ToolbarPortal__WEBPACK_IMPORTED_MODULE_4__","components_Toolbar_ToolbarSpacer__WEBPACK_IMPORTED_MODULE_5__","components_Toolbar_ToolbarActions__WEBPACK_IMPORTED_MODULE_6__","_colors__WEBPACK_IMPORTED_MODULE_0__","regular","subtitle2","htmlFontSize","fontFamily","h4","h4InBar","h4Regular","overline","syncIndicatorContent","AnalyticsProvider","msIdentify","appUser","clarity","firstName","lastName","identify","trackers","ANALYTICS","moduleName","module","ajsName","initialize","userId","company","properties","withScope","scope","setTag","captureException","previousProps","AnalyticsContext","connect","authentication","AppProvider","CssBaseline","useUtils_cfb96ac9","utils","MomentUtils","build","maxSnack","hideIconVariant","es","store","components_AnalyticsProvider","GlobalConfigProvider","Error","GlobalConfigContext","EntityTypesProvider","entityTypesData","results","EntityTypesContext","AuthFetch","fetchAuthenticatedPerson","twoMinutes","AppFetcher","siftBotStatus","globalConfigStatus","onboardingTasksStatus","onboardingTasksFromAPI","currentCheckList","checkList","fetchClient","fetchSiftBot","callback","savedCallback","_noop","setInterval","clearInterval","useInterval","setOnboardingTasks","categoryLookup","updatedTasks","taskLookup","tasks","t","completionPercentage","AuthFetch_AuthFetch","AppFetches","loaded","EntityTypesProvider_EntityTypesProvider","GlobalConfigProvider_GlobalConfigProvider","Router","App","AppProviders","App_AppFetcher","shouldLoadApp","components_Router","StaticLoader","SENTRY","dsn","environment","ENV","INTERCOM_APP_ID","intercomSettings","app_id","custom_launcher_selector","ReactDOM","render","App_App","getElementById","links","makePath","react__WEBPACK_IMPORTED_MODULE_6___default","crumb","react_router_dom__WEBPACK_IMPORTED_MODULE_7__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_5__","rowProps","staticContext","_material_ui_core_TableHead__WEBPACK_IMPORTED_MODULE_7__","_material_ui_core_TableRow__WEBPACK_IMPORTED_MODULE_8__","skpName","react__WEBPACK_IMPORTED_MODULE_5___default","_material_ui_core_Table__WEBPACK_IMPORTED_MODULE_6__","tableLayout","getHostDomain","hostDomain","flat__WEBPACK_IMPORTED_MODULE_1__","flat__WEBPACK_IMPORTED_MODULE_1___default","lodash_get__WEBPACK_IMPORTED_MODULE_2__","lodash_get__WEBPACK_IMPORTED_MODULE_2___default","_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__","errorList","flatten","firstErrorMessage","_objectSpread2","createReducer","react_router__WEBPACK_IMPORTED_MODULE_1__","formik__WEBPACK_IMPORTED_MODULE_2__","lodash_isEmpty__WEBPACK_IMPORTED_MODULE_3__","lodash_isEmpty__WEBPACK_IMPORTED_MODULE_3___default","handleCloseTab","addEventListener","removeEventListener","helpers_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_1__","helpers_EntityTypesContext__WEBPACK_IMPORTED_MODULE_1__","FEATURE_UPDATE","CLIENT_UPDATE","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","clientActionHandlers","createSingleActionHandlers","actionHandler","statusKey","dataKey","transparentStatus","clientInitialState","teamMember_plural","featureStatus","clientReducer","SIFT_BOT_FETCH","SIFT_BOT_UPDATE","siftBotReducer","CREATE_ATTRIBUTE_DIALOG_TOGGLE","CATEGORY_FIELD_CREATE","toggleCreateAttributeDialog","createCategoryField","isCreateAttributeDialogOpen","AttributeReducer","useTask","lodash_keyBy__WEBPACK_IMPORTED_MODULE_0__","lodash_keyBy__WEBPACK_IMPORTED_MODULE_0___default","react_redux__WEBPACK_IMPORTED_MODULE_1__","components_onboarding_useTaskList__WEBPACK_IMPORTED_MODULE_2__","components_onboarding_constants__WEBPACK_IMPORTED_MODULE_3__","onboardingState","slideKey","taskIdInFocus","LIST_SLIDE_KEY","taskList","useTaskList","taskKey","CHEERS_SLIDE_KEY","has","set","toggle","keyToToggle","keyToDelete","newSet","remove","keyToAdd","add","styles","attributeRow","clearAll","cancel","save","afterListView","AttributeSelectorBase","renderAriaLabel","onSearch","handleSave","onSave","toggleOpen","onOpen","onChangeSelectedAttributes","onClearAll","renderHeader","listWrapper","renderAttribute","defaultProps","thisProps","listElm","noResultsView","AttributeSelectorLocalSearch","_getOrCalculateIsAllSelected","err","_getOrCalculateIsPartiallySelected","isAllSelected","_step2","_iterator2","_getOrCalculateFilteredAttributes","searchList","onSelectAll","newSelectedAttributes","previousState","isPartiallySelected","indeterminate","listElement","filteredAttributes","NoResults_default","closedBefore","openNow","restOfClasses","logomarkDotColors","bubblegum","salmon","gold","primaryPalette","violet","amethyst","eggplant","lavender","secondaryPalette","cobalt","sky","navy","artic","parakeet","pine","quaternaryPalette","watermelon","merlot","rose","fire","banana","grayScale","iron","gray3","appCanvasColor","paperCardsColor","cloud","otherProps","_material_ui_core_TableCell__WEBPACK_IMPORTED_MODULE_7__","debugWhitelistedDomains","routeToDebugPage","config__WEBPACK_IMPORTED_MODULE_0__","personMenuRoot","personMenuIcon","navigation","avatarHeader","PersonMenu_default","preferOfficialPhotos","officialPictureUrl","routesToNavigationItems","defaultNavigationItems","makeNavigationItems","navText","_classesOverride","classesOverride","&:hover,&:focus","light","NavListItemBase","molecules_ListItem","ListItemIcon","active","& *","InternalLinkNavItem","navTitle","activeClassName","molecules_NavListItemBase","molecules_ListItemIcon","molecules_ListItemText","ExternalLinkNavItem","supportLinks","LiveHelpIcon","ChatIcon","SupportLinks","AppSidebar_ExternalLinkNavItem","logoListItem","backToAppIcon","navDivider","useTheme","navigationItems","clientSubdomain","directoryUrl","Drawer","disablePadding","SiftLogo_default","ExitToApp_default","AppSidebar_InternalLinkNavItem","Routes","AppSidebar_SupportLinks","sidebarContent","sidebar","node","makeSetPassword","password","labelSize","inputSize","helperTextContainer","PasswordTextField","validPasswordCallback","passwordCallback","hasBlurredOnce","setHasBlurredOnce","displayErrors","errorMessages","msg","regex","FormControl","InputLabel","Input","FormHelperText","displayErrorText","Transition","forwardRef","acceptRoleButton","updateRoleButton","heading2","descriptions","toolBar","sidebarGray","inputTwo","passwordSection","passwordMessage","textFields","buttonRow","& > button","AcceptOwnerRoleDialog","hasSetPassword","setPassword","updateRole","makeUpdateRole","setPasswordStatus","prevSetPasswordStatus","updateRoleStatus","prevUpdateRoleStatus","shouldOpenDialog","PERSON_ROLE_PENDING_OWNER","passwordInput","setPasswordInput","secondPasswordInput","setSecondPasswordInput","passwordIsValid","setPasswordIsValid","_useState9","_useState10","showSetPasswordForm","setShowSetPasswordForm","handleAcceptOwnerRole","handleSubmitNewPassword","checkNewPasswordCriteria","handleCancelSetPassword","setPasswordCallback","setValidPasswordCallback","validPassword","handleChangeTwo","PERSON_ROLE_OWNER","TransitionComponent","AcceptOwnerRoleDialog_PasswordTextField","makeGetAuthenticationInfo","currentUserRole","currentUserId","getAuthenticationInfo","authenticationInfo","AcceptOwnerRoleDialog_AcceptOwnerRoleDialog","BANNER_TEXT","_trialBanner","_bannerInfo","trialBanner","leftSide","bannerInfo","bannerText","up","reachOut","closeContainer","closeButton","closeIcon","FreeTrialBanner","trialDaysRemaining","over14DaysRemainingMessage","ErrorRounded_default","orientation","flexItem","Close_default","contentBgColor","childrenContainer","bannerOpen","setBannerOpen","trialEndDate","assignedAt","currentDay","Date","diff","SidebarLayout_SidebarLayout","FreeTrialBanner_FreeTrialBanner","components_AppSidebar","components_AppHeader","components_AcceptOwnerRoleDialog","FullscreenIcon","FullscreenExitIcon","BubbleHeading","bubbleOpen","bubbleSeenByUser","renderHeading","TaskTitle","task","toggleBubbleOpen","setBubbleSeenByUser","FullscreenExit","Fullscreen","taskId","TaskDetailHeading","taskToShow","isCelebrating","categoryId","allowManualComplete","updateTask","makeUpdateOnboardingTask","setSlideKey","toggleTaskCompletion","stickyHeader","fullDescription","& h5","& h6","& a","& p","& b","& ol","paddingInlineStart","& ol > li","listStyleType","& ul","& ul > li","TaskDetail","_React$useState","_React$useState2","slideIn","setSlideIn","TaskDetailHeading_TaskDetailHeading","TaskSummary","enter","dangerouslySetInnerHTML","__html","headline","checkIcon","CompletionCheers","Bubble","onScreenTask","pageStartUrl","prevSlideKey","onScreenTaskId","CompletionCheers_CompletionCheers","TaskDetail_TaskDetail","getBubbleComponent","BubbleHeading_BubbleHeading","createHistory","routeElems","listen","changeLocation","Layouts_CoreLayout","Bubble_Bubble","GoogleWorkspaceLogo","xmlnsXlink","maskUnits","maskType","mask","patternContentUnits","xlinkHref","DemoDataLogo","csv","CSV","Azure","sources_GoogleWorkspaceLogo","demo-data","sources_DemoDataLogo","unauthorizedHandler","authState","hasOwnProperty","authenticationRequired","variable","vars","pair","decodeURIComponent","getQueryVariable","LOGIN","encodeURIComponent","DataServiceActionHandlers","dataServiceActionHandlers","httpMethod","HTTPVerb","PUT","AUTHENTICATION_PERSON_FETCH","GET","CONFIG_FETCH","configType","FIELD_UPDATE","POST","SEARCH_PEOPLE_FETCH","DELETE","SOURCE_FETCH","SOURCE_SAVE","SOURCE_MAPPINGS_SAVE","GROUPS_FETCH","SOURCE_CREATE","SOURCE_INIT","SOURCE_DELETE","SOURCE_PUBLIC_KEY_SAVE","INVITES_TEMPLATE_FETCH","INVITES_TEMPLATE_UPDATE","INVITES_TEMPLATE_EMAIL_TEST","SIGNED_UPLOAD_FETCH","SOURCE_FILE_HEADINGS_FETCH","auth","SOURCE_FILE_CREATE","SOURCE_FILE_MAPPINGS_FETCH","sourceFileId","SOURCE_SYNC_ENABLE","SOURCE_SYNC_QUEUE","SOURCE_PRIMARY_MAPPING_UPDATE","THEMES_CREATE_FETCH","mockDataServiceHandlers","USER_FETCH","_USER_FETCH","waitRand","MockSuccess","created","MockError","createHttpService","getHeaders","getAuthToken","prefix","createDataService","services","onError","createStore","SiftDataService","DataService","withoutMockedActions","mockDataService","MockDataService","middleware","thunk","dataServiceMiddleware","composeEnhancers","Config","composeWithDevToolsExtension","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","makeRootReducer","applyMiddleware","asyncReducers","INVITES_TABLE_USER_SELECT","INVITES_TABLE_BULK_SELECT","INVITES_BULK_DIALOG_OPEN","INVITES_BULK_DIALOG_CLOSE","INVITES_BULK_DIALOG_COMPLETE","INVITES_COMPLETE_DIALOG_CLOSE","INVITES_FORM_UPDATE","INVITES_FORM_RESET","INVITES_SETTINGS_UPDATE","INVITES_TEMPLATE_RESET","toggleStatus","statusState","updateForm","selectUser","user","selectAllUsers","users","openBulkDialog","closeBulkDialog","completeBulkDialog","count","closeCompleteDialog","updateInviteSettings","inviteSettings","selectedUserReference","selectedUsers","allSelected","selectedById","LOCATION_CHANGE","sendDialogOpen","successDialogOpen","successCount","newForm","form","_set","isDirty","initialFormState","template","templateStatus","newInitialFormState","model","defaultTemplate","_defaultModel","inviteStatus","InvitesReducer","currentSources","AZURE","LDAP","GOOGLE","isCSV","isAzure","isLDAP","isGoogle","isOath","token","regexpString","subdomainTokenMatch","_last","legacyTokenMatch","authenticationReducer","directParentFieldKey","excludeChildNameFields","endsWith","lodash_flatten__WEBPACK_IMPORTED_MODULE_0__","lodash_flatten__WEBPACK_IMPORTED_MODULE_0___default","c","_objectSpread4","_objectSpread6","global","ConfigurationReducer","PageContext","mounted","pageToolbar","react_router__WEBPACK_IMPORTED_MODULE_0__","components_Router_routes__WEBPACK_IMPORTED_MODULE_1__","generatePath","ExportIcon","openExports","assertThisInitialized","onExportJSON","onExportCSV","Export","exportIcon","components_AnalyticsProvider_AnalyticsContext__WEBPACK_IMPORTED_MODULE_1__","lodash_noop__WEBPACK_IMPORTED_MODULE_3__","lodash_noop__WEBPACK_IMPORTED_MODULE_3___default","contextValue","styles_brandColors__WEBPACK_IMPORTED_MODULE_0__","canvasColor","secondaryTextColor","contrastPrimary2Color","hoverPrimary2Color","hoverGradient","opacity0","gray","lightestGray","lightGray","counterLightGray","darkBlue","green","frogGreen","orange","yellow","secondaryMainOpacity","lightPrimary","darkPrimary","lightSecondary","darkSecondary","warning","primaryText","fetchSearchPeople","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default","mergeLoading","mergeError","SearchReducer","view","empty","&:hover $icon","& $icon","rootDragOn","& $overlay","lastFlexChild","setFileName","onDrop","files","newFile","_first","newFileName","CloudUpload_default","ErrorOutline_default","FileDrop_FileDrop","fetchGroupsResults","groupsStatus","fetchGroups","requestResolve","RequestResolve","CANCEL","sourceReducer","_sift_resift_usePrevious__WEBPACK_IMPORTED_MODULE_1__","_sift_resift_usePrevious__WEBPACK_IMPORTED_MODULE_1___default","notistack__WEBPACK_IMPORTED_MODULE_2__","helpers_getIsLoading__WEBPACK_IMPORTED_MODULE_3__","helpers_getHasError__WEBPACK_IMPORTED_MODULE_4__","_ref$successMessage","successMessage","_ref$errorMessage","getIsLoading","getHasError","getSourceFetch","createSelector","sources","Fetch","getDirectoryFetch","directories","getStatus","sourceFetch","directoryFetch","mapDispatchToProps","ownProps","sourceStatus","directoryStatus","stateProps","dispatchProps","FIELD_EXPANDS","SOURCE_CREATE_IDENTIFIER","sourceDataWithoutEmptyStrings","recursiveStripEmptyStrings","newObject","saveSourcePublicKey","publicKey","sourceFile","fetchSourceFileHeadings","newState","sourceSaveStatus","SOURCE_SAVE_SUCCESS","SOURCE_SAVE_ERROR","sourceSyncStatus","SOURCE_SYNC_ENABLE_SUCCESS","newSource","SOURCE_SYNC_ENABLE_ERROR","SourcesReducer","components_Router_AsyncComponent__WEBPACK_IMPORTED_MODULE_0__","_sift_skipper_helpers_createPortal__WEBPACK_IMPORTED_MODULE_0__","_sift_skipper_helpers_createPortal__WEBPACK_IMPORTED_MODULE_0___default","createPortal","clickable","boxSizing","& > *:last-child","cardClassName","descriptionNode","_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4__","_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5__","getSelectedAttributes","configFieldCollection","configField","canOptOut","presence","directReports","assistantOf","getMappings","mappingCards","mappingCard","doc","Task","taskIsPro","isPro","clientIsPro","setTaskIdInFocus","headerButton","headerRight","& .MuiLinearProgress-colorPrimary","progressBar","Category","isExpanded","allTasksAreOptional","toggleCategoryExpansion","ExpandMore_default","ChevronRight_default","Task_Task","_ref$isOnHomePage","Category_Category","Checklist_Checklist","version","platform","appReducer","mergeMutationResult","mutationName","DATA_SERVICE_ACTION_HANDLERS","_objectSpread3","combineReducers","app","companyApi","dataService","injectReducer","replaceReducer","LogoIcon","cx","cy","r","styleProps","LogoGray","shortTextContainer","shortText","_helpArticleLink","shortDescription","TaskSummary_TaskSummary","completed","tag","_task","TaskTitle_TaskTitle","PERSON_ROLE_USER","PERSON_ROLE_ADMIN","ADMIN_TYPE_PENDING_OWNER","ADMIN_TYPE_OWNER","casing","term","withSpace","TerminologyContainer","terminologyState","teamLeader_plural","components_Terminology_Terminology","importedComponent","_Component","AsyncComponent","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_3__","_componentDidMount","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","_yield$importedCompon","default","react__WEBPACK_IMPORTED_MODULE_7___default","components_Loader_StaticLoader__WEBPACK_IMPORTED_MODULE_9__","ShortTextIcon","HyperLinkIcon","clipRule","filterUnits","colorInterpolationFilters","floodOpacity","dy","stdDeviation","in2","SingleSelectIcon","strokeOpacity","LongTextIcon","EmailIcon","PhoneIcon","MessageAddressIcon","FreeFormChipsIcon","MultiSelectIcon","AutocompleteIcon","LinkCollectionsIcon","DatesIcon","NumberIcon","BooleanIcon","SkillsIcon","EducationIcon","ExperienceIcon","LanguageIcon","ReachOutToMeForIcon","PageIcon","PageCollectionIcon","textLong","textSelect","hyperlink","phone","messageAddress","textCollection","multiSelect","autocompleteTextCollection","date","boolean","linkCollection","skills","education","experience","languages","reachOutToMeFor","pageCollection","independentPage","cardRootHover","&:last-child","cardLink","accountStatus","activeColor","suspendedColor","invitedColor","notInvitedStatus","deletedStatus","MuiButton","MuiCard","MuiCardActionArea","MuiCardHeader","MuiCardContent","MuiPaper","elevation1","elevation2","MuiTooltip","tooltip","MuiTabs","MuiTab","&$selected","MuiDivider","MuiDialogActions","MuiDialogContent","MuiDialogContentText","MuiDialogTitle","& h2","& span","dark","fourPercent","eightPercent","twelvePercent","_withSource__WEBPACK_IMPORTED_MODULE_0__","withRouter","_ref$component","_material_ui_core_TablePagination__WEBPACK_IMPORTED_MODULE_4__","rowsPerPage","rowsPerPageOptions","onChangePage","onChangeRowsPerPage","_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_6__","lodash_get__WEBPACK_IMPORTED_MODULE_0__","lodash_get__WEBPACK_IMPORTED_MODULE_0___default","lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__","lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default","moment__WEBPACK_IMPORTED_MODULE_2__","moment__WEBPACK_IMPORTED_MODULE_2___default","useSyncInfo","syncStatus","currentSyncStatus","syncRunning","lastSyncInfo","completedAt","startedAt","lastSyncStatus","_lastSyncDate","lastSyncDate","timeSinceLastSync","fromNow","hasSyncErrors","syncHasRun","ClearableSearchField","textFieldValue","updateSearch","handleOnChange","handleOnSearch","handleOnEnter","handleClear","onClear","clearButton","inputRoot","searchButton","handleSearch","handleClearSearch","ClearableSearch","helpLinkMeta","subheaderClassName","InfoCard_InfoCard","helpers_getHostName__WEBPACK_IMPORTED_MODULE_0__","_material_ui_core_styles_makeStyles__WEBPACK_IMPORTED_MODULE_1__","_material_ui_core_styles_makeStyles__WEBPACK_IMPORTED_MODULE_1___default","_material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_2__","_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_3__","makeValidateMappings","proposedMappings","getValidatedMappingCards","validationResults","rowValidationResults","vr","validationResultsLookup","_groupBy","orgMappingValidationResults","orgValidationLookup","m","lookupKey","validation","_referenceId","longDescriptionHtml","descriptionHtml","isMappingUpdated","initialMapping","submittedMapping","destinationsDontMatch","sourcesDontMatch","isUniqueDontMatch","isRequiredDontMatch","typesDontMatch","collectionItemCustomTypeDontMatch","collectionItemTypeDontMatch","subSourcesDontMatch","createDataBatchActions","initialMappings","submittedMappings","batchActions","im","sm","fromAttributeHeader","smData","customProps","collectionItemCustomType","collectionItemType","destroyActions","otherValidActions","buildBatchActions","sourceMappings","initialHierarchyMapping","refMapping","existingMapping","getSelectedDestinations","VALID_PROPS","transformMappingsForValidation","filteredMappings","updatedType","_pick","HEADER_NAMES","_HEADER_NAMES","getSourceHeaderCopy","MAPPING_PRESETS","itemProperties","isDefault","types","sampleDataLookup","sampleUserData","collectionKey","collectionMapping","mp","collectionItem","subSource","defaultSubSource","getSubSource","defaultType","collection","customType","dividerLine","menuListRoot","ITEM_HEIGHT","searchInput","subField","addProperty","onSelectAttribute","onSetNewProp","newPropValue","onSaveCustomProps","menuItems","MappingsContext","addProp","setAddProp","shouldAllowAddCustomProperty","MenuList","fromAttribute","selectHeader","select","selectInputIndex","setValue","_category$children$va","output","headerDisplayName","categoryChildren","firstMenuItemDisplayName","_globalType$item$name","unshift","buildMenuItems","menuItemIndex","_category$children$me","Select","createInitialState","selectInputs","setSelectInputs","newSelectInputValue","clonedSelectedInputs","SelectInput_SelectInput","basic","AddAttribute_AddAttribute","inputLabel","&$cssFocused","cssOutlinedInput","cssFocused","multilineTextField","& label","& textarea","characterCount","attributeDisplayName","attributeDescription","InputLabelProps","focused","formControlLabel","radioRow","radioGroup","subTitle","attributeConnectDisplayed","attributeValueReadOnly","attributeCanBePrivatized","castBool","stringToBool","connectDisabled","valueCanBePrivatized","dialogPaper","onCreate","disableSubmit","setDisableSubmit","setNewAttribute","handleChangeAttribute","handleSubmitAttribute","_yield$createCategory","BuildAttribute_AddAttribute","AttributeInputForm_AttributeInputForm","AttributeRadioForm_AttributeRadioForm","CreateAttributeDialogContainer","handleCreateCategoryField","CreateAttributeDialog","& .MuiTextField-root","displayNameContainer","dropdownIcon","popperRoot","paperRoot","SourceSelector","_placeholderText","placeholderText","_ref$isSourceCollapse","isSourceCollapsed","selectedAttributeDisplayName","mappingsContext","sourceAttrOptions","onAddCustomSourceAttribute","handleSelectAttribute","setSearch","setNewPropValue","handleUpdateCustomProp","handleSaveCustomProps","ArrowDropDown_default","disablePortal","TransitionProps","Grow","SourceSelector_AttributeMenu","SourceSelector_SourceSelector","float","ValidationStatusIndicator","_ref$status","_ref$description","iconLookup","Cancel_default","Warning_default","blackListedTypes","languageItem","createAttributes","remainingSourceMappings","selectedDestinations","isChildField","isAttributeBlackListed","reachOutToMeForField","isDirectReachOutToMeForChild","isAttributeAllowed","isInAnotherSourceMapping","mappedToSource","fromSource","alreadySelected","mappable","otherItems","isObject","currentSourceId","sourcesWithoutCurrentSource","allSourceMappings","sourceMapping","parentSource","newSourceMapping","useAllSourceMappings","allSourceMappingsFetch","makeAllSourceMappingsFetch","withSource","initialAttributes","AttributeSelector_AttributeMenu_AttributeMenu","displayValue","AttributeSelector_AttributeMenu","AttributeSelector","formRoot","& > div:not(:last-child)","formRootColumn","CollectionMapping","_ref$flexDirection","rootKey","labelId","newType","mappingSubSource","_MAPPING_PRESETS","CollectionMappingContainer","CollectionMapping_CollectionMapping","actionTableCell","collectionMappingRow","collapsedRow","ellipsisText","noSampleData","MappingsRow","onDeleteMapping","rowIndex","onUpdateMapping","mappingContext","mappingSource","isCustom","rootSourceName","isCollapsed","MP","sourceTypes","prevIsCollapsed","sourceName","attributeDisplayValue","sampleData","handleUpdateMapping","newMapping","isPrimaryMapping","shouldRenderInput","Mappings_SourceSelector","sourceValue","colSpan","Mappings_AttributeSelector","atoms_ValidationStatusIndicator","PrimaryKeyMapping","onSourceCreationWizardMappings","MappingsRow_MappingsRow","useExistingOrgMappingsInfo","tlRefMapping","tlMatchMapping","orgMappingsSet","orgMappedToSourceName","orgMappedToSourceId","disabledRow","OrgSourceMapping","mappingIndex","_ref$mapping","rootName","tlName","defaultMapping","ExampleOrgConnect","subheaderCardHeader","textContainer","orgMapCell","validationIcon","onUpdateCard","existingMappingsInfo","_mappings","tfRefMapping","validationStatus","validationChecks","_compact","_validationChecks$","Logos_ExampleOrgConnect","OrgSourceMapping_OrgSourceMapping","ProfileAttrMapping","newMappingIndex","newMappings","MappingCards","cardData","onUpdateState","_sourceAttrOptions","sourcePath","setSourceAttrOptions","handleDeleteMapping","cardIndex","indexToDelete","newOption","CardComponent","OrgMapping","Mappings","setMappings","setDirty","validateMappings","partitionPrimary","primaryMappings","nonPrimaryTypes","_partition4","_partition5","_hierarchyMappings","nonHierarchyTypes","hierarchyMappings","_partition6","_partition7","isRequiredMappings","dataMappings","_partition8","_partition9","displayedDataMappings","_mappingCards","createMappingsCardData","setMappingSections","MappingCards_MappingCards","_latestMappings","latestMappings","logisticalBatchActions","logisticalCard","orgMappings","initialOrgMappings","tlRefSourceMapping","tlMatchSourceMapping","destroyArray","createLogisticalBatchActions","MappingsValidationFetcher","recommendedAttributes","_proposedMappings","recommendedSourcePath","_mapping","hasPrimaryMapping","primaryKeyMappingReferenceId","Mappings_Mappings","MappingsContainer","Mappings_MappingsValidationFetcher","TextBlock_TextBlock","components_Mappings","MappingsCard","Subheader","elem","statusIcon","Errors","Info_default","Warnings","SummaryLine","issueCount","issueTitle","issueLine","saveButton","MappingsSummary","csvFileName","validationResponse","onUploadNewCsv","sampleDataCount","sampleLimitExceeded","warnings","numberOfIssues","onMappingsTab","submitButtonText","MappingsSummary_SummaryLine","MappingsSummary_Errors","MappingsSummary_Warnings","mappingSummary","backdrop","drawer","sendBatchMappings","onSyncMappings","_lastDataCsv","batchMappings","setBatchMappings","setLoading","isOnDirWizard","isOnCsvUploadWizard","handleUploadNewCsv","uploadCsvPath","reload","cleanedUpBatchMappings","pushUrl","MappingsCard_MappingsCard","MappingsForm_MappingsForm","MappingsSummary_MappingsSummary","Backdrop","batchMappingsFetch","makeBatchMappingsFetch","sourceMappingsFetch","makeGetSourceMappings","sendBatchMappingsDispatch","MappingsLayout_MappingsLayout","classnames__WEBPACK_IMPORTED_MODULE_2__","classnames__WEBPACK_IMPORTED_MODULE_2___default","_material_ui_icons_ArrowBack__WEBPACK_IMPORTED_MODULE_3__","_material_ui_icons_ArrowBack__WEBPACK_IMPORTED_MODULE_3___default","_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4__","_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_5__","buttonClassName","shift","routeHref","A100","ErrorView","isErrorView","Loader_ErrorView","CSV_TEMPLATE_URL","INTERCOM","appId","directoryIdPath","_home_azureuser_actions_runner_work_Admin_WebReact_Admin_WebReact_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_2___default","_material_ui_core_Link__WEBPACK_IMPORTED_MODULE_4__","config__WEBPACK_IMPORTED_MODULE_1__","_material_ui_core_styles_makeStyles__WEBPACK_IMPORTED_MODULE_2__","_material_ui_core_styles_makeStyles__WEBPACK_IMPORTED_MODULE_2___default","styles_colors__WEBPACK_IMPORTED_MODULE_3__","polished__WEBPACK_IMPORTED_MODULE_4__","_material_ui_icons_WarningRounded__WEBPACK_IMPORTED_MODULE_6__","_material_ui_icons_WarningRounded__WEBPACK_IMPORTED_MODULE_6___default","components_Page_HelpArticleLink__WEBPACK_IMPORTED_MODULE_7__","PRIMARY_INFO","COMPLEMENTARY_INFO","fileDropInfoCard","infoCardTitle","infoCardContent","infoCardFooter","bullets","infoBullets","bullet","createEntityType","newPersonFieldType","convertPersonField","makeCreateEntityType","SlideDialog","titleActions","dialogProps","_ref$defaultSlideInde","defaultSlideIndex","dialogClassName","slideContainerClassName","TitleActionsElem","slideIndex","isLeft","showSlideClass","hideSlideClass","createStyles","slideTitleContainer","slideTitle","slideContent","flexAlignCenter","slideFooter","SlideContent","_ref$lastSlideIndex","lastSlideIndex","_ref$renderBackIcon","renderBackIcon","_ref$renderCloseIcon","renderCloseIcon","_ref$resetIndex","resetIndex","slideSubtitle","shouldRenderTitleContainer","AttributePageIcon","IndpendentPageIcon","ChoosePageTypeSlide","components_SlideContent","AttributePage","cardImage","marginBottom2","IndependentPage","ConvertAttribute","CreateNewAttribute","AttributeSlide","Icons_ConvertAttribute","textAlignCenter","Icons_CreateNewAttribute","IndependentSlide","independentPageTypeName","setIndependentPageTypeName","handleCreateIndependentPage","ExistingAttributeSlide","renderOption","openOnFocus","NewAttributeSlide","selectedAttribute","newAttributeName","setNewAttributeName","cardDiv","activeCard","dialogRoot","setDefaultSlideIndex","createEntityTypeStatus","newEntityTypeData","entityIdInEntityTypes","SlideDialog_SlideDialog","components_ChoosePageTypeSlide","components_AttributeSlide","components_IndependentSlide","components_ExistingAttributeSlide","components_NewAttributeSlide","toggleMenu","moveItem","listClone","onRadioSelect","attributeClone","isDisabled","optOutBlackList","rootBorder","objectKeyCell","optOutCell","radioGroupRoot","icons","iconButton","aria-owns","MoreVert_default","PriorityList_AttributeRow","sortList","nextProps","attributeHeader","TableHeadCellRoot","headerTitle","questionMark","setSelectedAttributes","configFieldCollectionFiltered","checkedAttributes","bio","interests","changeOptOutDefault","headerTitleElem","attributeHeaderCellClasses","PriorityList_SortableList","orderBy","setToAsc","TableSortLabelProps","LabelComponent","TableSortLabel","labelComponentProps","_material_ui_core_TableCell__WEBPACK_IMPORTED_MODULE_10__","reorderTasks","categoryList","completeCategories","_incompleteCategories","incompleteCategories","completeTasks","incompleteTasks","onboardingTasks","_findIndex","notistack__WEBPACK_IMPORTED_MODULE_1__","resift__WEBPACK_IMPORTED_MODULE_2__","_sift_resift_usePrevious__WEBPACK_IMPORTED_MODULE_3__","_sift_resift_usePrevious__WEBPACK_IMPORTED_MODULE_3___default","_ref$message","previousStatus"],"mappings":"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iG,WAAW,KAIjB,CACErqG,YAAa,cACb4H,IAAK,cACLwiG,eAAgB,CACd,CACExiG,IAAK,QACLyiG,WAAW,IAGfC,MAAO,CACL,CACE1iG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,eACLyiG,WAAW,KAIjB,CACErqG,YAAa,qBACb4H,IAAK,MACLwiG,eAAgB,CACd,CACExiG,IAAK,iBACLyiG,WAAW,GAEb,CACEziG,IAAK,aACLyiG,WAAW,GAEb,CACEziG,IAAK,KACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,IAGfC,MAAO,CACL,CAAEtqG,YAAa,WAAY4H,IAAK,UAAWyiG,WAAW,GACtD,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,QACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,KAIjB,CACErqG,YAAa,WACb4H,IAAK,WACLwiG,eAAgB,CACd,CACExiG,IAAK,QACLyiG,WAAW,IAGfC,MAAO,CACL,CACE1iG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,aACLyiG,WAAW,GAEb,CACEziG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,KAIjB,CACErqG,YAAa,YACb4H,IAAK,YACLwiG,eAAgB,CACd,CACExiG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,aACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,YACLyiG,WAAW,GAEb,CACEziG,IAAK,eACLyiG,WAAW,IAGfC,MAAO,CACL,CACE1iG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,KAIjB,CACErqG,YAAa,gBACb4H,IAAK,gBACLwiG,eAAgB,CACd,CACExiG,IAAK,aACLyiG,WAAW,GAEb,CACEziG,IAAK,aACLyiG,WAAW,GAEb,CACEziG,IAAK,cACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,qBACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,QACLyiG,WAAW,IAGfC,MAAO,CACL,CAAEtqG,YAAa,WAAY4H,IAAK,UAAWyiG,WAAW,GACtD,CACEziG,IAAK,cACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,KAIjB,CACErqG,YAAa,SACb4H,IAAK,SACLwiG,eAAgB,CACd,CACExiG,IAAK,QACLyiG,WAAW,IAGfC,MAAO,CACL,CAAEtqG,YAAa,WAAY4H,IAAK,UAAWyiG,WAAW,GACtD,CACEziG,IAAK,YACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,MACLyiG,WAAW,GAEb,CACEziG,IAAK,eACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,gBACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,SACLyiG,WAAW,GAEb,CACEziG,IAAK,QACLyiG,WAAW,GAEb,CACEziG,IAAK,YACLyiG,WAAW,GAEb,CACEziG,IAAK,QACLyiG,WAAW,GAEb,CACEziG,IAAK,QACLyiG,WAAW,GAEb,CACEziG,IAAK,QACLyiG,WAAW,GAEb,CACEziG,IAAK,UACLyiG,WAAW,GAEb,CACEziG,IAAK,OACLyiG,WAAW,GAEb,CACEziG,IAAK,WACLyiG,WAAW,GAEb,CACEziG,IAAK,cACLyiG,W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","file":"static/js/main.b0e10d5a.chunk.js","sourcesContent":["import { HOME_URL, DIRECTORIES_URL, SOURCE_URL, SOURCE_CREATE_URL } from 'components/Router/consts';\n\n// Routes\nexport const NAME_YOUR_DATA_URL = '/initiate-your-data';\nexport const CHOOSE_SOURCE_TYPE_URL = '/choose-source-type';\nexport const AUTHORIZE_DATA_ACCESS_URL = '/authorize-data-access';\nexport const CHOOSE_SYNC_GROUPS_URL = '/choose-sync-groups';\nexport const UPLOAD_CSV_URL = '/upload-csv';\nexport const MAP_ATTRIBUTES_URL = '/map-attributes';\nexport const DATA_SETTINGS_URL = '/data-settings';\nexport const SOURCE_WIZARD_BASE_URL = `${HOME_URL}${DIRECTORIES_URL}${SOURCE_CREATE_URL}`;\nexport const SOURCE_WIZARD_BASE_URL_W_DIRECTORY_ID = `${HOME_URL}${DIRECTORIES_URL}/:id${SOURCE_CREATE_URL}`;\nexport const SOURCE_WIZARD_BASE_URL_W_DIRECTORY_SOURCE_IDS = `${HOME_URL}${DIRECTORIES_URL}/:id${SOURCE_URL}/:id${SOURCE_CREATE_URL}`;\nexport const CSV_WIZARD_URL = `/csv-wizard`;\nexport const CSV_WIZARD_UPLOAD_URL = '/csv-upload';\nexport const CSV_WIZARD_MAPPING_URL = '/mapping';\nexport const MAPPINGS_TAB = '/mappings';\nexport const DIRECTORY_APP_USERS = '/search/user';\n\n// Source types\nexport const CSV_SOURCE_TYPE_KEY = 'csv';\nexport const AZURE_SOURCE_TYPE_KEY = 'azure-active-directory';\nexport const GOOGLE_SOURCE_TYPE_KEY = 'google-directory';\nexport const LDAP_SOURCE_TYPE_KEY = 'ldap';\nexport const UKG_SOURCE_TYPE_KEY = 'ukg';\nexport const OKTA_SOURCE_TYPE_KEY = 'okta';\nexport const DEMO_DATA_SOURCE_TYPE_KEY = 'demo-data';\n\n// Mapping attributes\nexport const CLIENT_PRIMARY_KEY = 'clientPrimaryKey';\nexport const REQUIRED_PROFILE_ATTR_KEYS = ['email', 'firstName', 'lastName'];\n// Mapping type keys\nexport const PRIMARY_MAPPING_TYPE_KEY = 'primary';\nexport const ORG_MAPPING_TYPE_KEY = 'logistical';\nexport const PROFILE_ATTR_MAPPING_TYPE_KEY = 'data';\nexport const HIERARCHY_MAPPING_KEY = 'hierarchy';\n// Org mapping\nexport const ORG_TEAM_LEADER_MAPPING_REF_KEY = 'tlRef';\nexport const ORG_TEAM_LEADER_MAPPING_MATCH_KEY = 'tlMatch';\nexport const TL_REF_MAPPING_INDEX = 1;\nexport const TL_MATCH_MAPPING_INDEX = 0;\nexport const DEFAULT_EMPTY_ORG_MAPPINGS = [\n {\n source: '',\n type: ORG_MAPPING_TYPE_KEY,\n destination: ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n isRequired: false,\n isUnique: false,\n },\n {\n source: '',\n type: ORG_MAPPING_TYPE_KEY,\n destination: ORG_TEAM_LEADER_MAPPING_REF_KEY,\n isRequired: false,\n isUnique: false,\n },\n];\n","import CSS from 'csstype';\nimport theme from 'styles/theme';\n\ntype CSSProps = { [P in keyof CSS.Properties]: any };\ntype CSSProperties = { [P in keyof T]: CSSProps | CSSProperties };\nexport type Theme = typeof theme;\n\nexport function defineStyles(definer: (theme: Theme) => CSSProperties) {\n return (theme: any) => {\n const styles = definer(theme);\n return styles as { [P in keyof T]: any };\n };\n}\n\nexport type Classes any> = { [P in keyof ReturnType]: string };\n","import React from 'react';\nimport { HelpArticleLinkContext, HelpArticleLinkTextContext } from 'components/Router/Router';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\n\nimport Typography from '@material-ui/core/Typography';\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\n\ninterface Props {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\nfunction PageTitle({ title, subtitle, actions, className }: Props) {\n const classes = useStyles();\n const helpArticleLink = React.useContext(HelpArticleLinkContext) as string | null;\n const helpArticleLinkText = React.useContext(HelpArticleLinkTextContext) as string | null;\n\n return (\n
\n
\n \n {title}\n \n {subtitle && (\n \n {subtitle}\n \n )}\n {helpArticleLink && }\n
\n {actions &&
{actions}
}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n marginBottom: theme.spacing(3),\n display: 'flex',\n },\n content: {\n flex: '1 1 auto',\n },\n title: {\n fontSize: 26,\n fontWeight: 700,\n marginTop: 10,\n marginBottom: 10,\n marginRight: theme.spacing(2),\n },\n helpLinkSpacing: {\n marginBottom: theme.spacing(1),\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n },\n}));\n\nexport default PageTitle;\n","import createActionHandlers from '@sift/resift/redux/FetchUtils/createActionHandlers';\nimport { mergeSuccess } from '@sift/resift/redux/FetchUtils';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const DIRECTORY_CREATE_IDENTIFIER = 'directory-create';\n\nexport const DIRECTORIES_FETCH = 'DIRECTORIES_FETCH';\nexport const DIRECTORIES_FETCH_SUCCESS = 'DIRECTORIES_FETCH_SUCCESS';\nexport const DIRECTORIES_FETCH_ERROR = 'DIRECTORIES_FETCH_ERROR';\n\nexport const DIRECTORY_FETCH = 'DIRECTORY_FETCH';\nexport const DIRECTORY_FETCH_SUCCESS = 'DIRECTORY_FETCH_SUCCESS';\nexport const DIRECTORY_FETCH_ERROR = 'DIRECTORY_FETCH_ERROR';\n\nexport const DIRECTORY_CREATE = 'DIRECTORY_CREATE';\nexport const DIRECTORY_CREATE_SUCCESS = 'DIRECTORY_CREATE_SUCCESS';\nexport const DIRECTORY_CREATE_ERROR = 'DIRECTORY_CREATE_ERROR';\n\nexport const DIRECTORY_DELETE = 'DIRECTORY_DELETE';\nexport const DIRECTORY_DELETE_SUCCESS = 'DIRECTORY_DELETE_SUCCESS';\nexport const DIRECTORY_DELETE_ERROR = 'DIRECTORY_DELETE_ERROR';\n\nexport const DIRECTORY_SAVE = 'DIRECTORY_SAVE';\nexport const DIRECTORY_SAVE_SUCCESS = 'DIRECTORY_SAVE_SUCCESS';\nexport const DIRECTORY_SAVE_ERROR = 'DIRECTORY_SAVE_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nexport function fetchDirectories(query) {\n return {\n type: DIRECTORIES_FETCH,\n identifier: 'directories',\n payload: {\n query,\n },\n };\n}\n\nexport function fetchDirectory(directoryId, expands) {\n const query = {};\n\n if (expands) {\n query.expand = Array.isArray(expands) ? expands : [expands];\n }\n\n return {\n type: DIRECTORY_FETCH,\n identifier: directoryId,\n payload: {\n id: directoryId,\n query: expands ? query : undefined,\n },\n };\n}\n\nexport function createDirectory(label) {\n return {\n type: DIRECTORY_CREATE,\n identifier: DIRECTORY_CREATE_IDENTIFIER,\n payload: {\n data: {\n label,\n },\n },\n };\n}\n\nexport function deleteDirectory(id) {\n return {\n type: DIRECTORY_DELETE,\n identifier: `directory-delete`,\n payload: {\n id,\n },\n };\n}\n\nexport function saveDirectory(directory) {\n return {\n type: DIRECTORY_SAVE,\n identifier: `save-${directory.id}`,\n payload: {\n data: directory,\n },\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n ...createActionHandlers(DIRECTORY_FETCH, false),\n ...createActionHandlers(DIRECTORY_CREATE, false),\n ...createActionHandlers(DIRECTORY_SAVE, false),\n [DIRECTORY_SAVE_SUCCESS]: (state, action) => {\n const updatedDirectory = action.payload.data;\n const oldDirectory = state.objects[updatedDirectory.id];\n const directory = {\n ...oldDirectory,\n ...updatedDirectory,\n settings: {\n ...oldDirectory.settings,\n ...updatedDirectory.settings,\n },\n };\n\n return {\n ...mergeSuccess(state, action),\n objects: {\n ...state.objects,\n [updatedDirectory.id]: {\n ...directory,\n },\n },\n };\n },\n ...createActionHandlers(DIRECTORY_DELETE, true),\n ...createActionHandlers(DIRECTORIES_FETCH, false),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\n\nexport const initialState = {\n fetches: {},\n objects: {},\n};\nexport default function directoriesReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import React from 'react';\nimport classnames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Button, { ButtonProps } from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\ninterface Props extends ButtonProps {\n disabled?: boolean;\n label?: string;\n loading?: boolean;\n spinnerClassName?: string;\n variant?: 'text' | 'outlined' | 'contained';\n onClick?: () => void;\n}\n\nconst LoadingButton = ({\n disabled = false,\n label = 'Save',\n loading,\n spinnerClassName,\n variant = 'contained',\n onClick,\n ...restOfProps\n}: Props) => {\n const classes = useStyles();\n const handleClick = () => {\n if (!loading && onClick) {\n onClick();\n }\n };\n\n return (\n \n {!loading && label}\n {loading && (\n \n )}\n \n );\n};\n\nconst useStyles = makeStyles((theme: any) => ({\n spinnerClass: {\n color: theme.palette.secondary.contrastText,\n },\n}));\n\nexport default LoadingButton;\n","// ------------------------------------\n// Constants\n// ------------------------------------\nexport const PERSON_FETCH = 'PERSON_FETCH';\nexport const PERSON_FETCH_SUCCESS = 'PERSON_FETCH_SUCCESS';\nexport const PERSON_FETCH_ERROR = 'PERSON_FETCH_ERROR';\n\nexport const PERSON_DELETE = 'PERSON_DELETE';\nexport const PERSON_DELETE_SUCCESS = 'PERSON_DELETE_SUCCESS';\nexport const PERSON_DELETE_ERROR = 'PERSON_DELETE_ERROR';\n\nexport const SEND_INVITE = 'SEND_INVITE';\nexport const SEND_INVITE_SUCCESS = 'SEND_INVITE_SUCCESS';\nexport const SEND_INVITE_ERROR = 'SEND_INVITE_ERROR';\n\nexport const SEND_INVITE_ALL = 'SEND_INVITE_ALL';\nexport const SEND_INVITE_ALL_SUCCESS = 'SEND_INVITE_ALL_SUCCESS';\nexport const SEND_INVITE_ALL_ERROR = 'SEND_INVITE_ALL_ERROR';\n\nexport const SEND_RESETPASSWORD = 'SEND_RESETPASSWORD';\nexport const SEND_RESETPASSWORD_SUCCESS = 'SEND_RESETPASSWORD_SUCCESS';\nexport const SEND_RESETPASSWORD_ERROR = 'SEND_RESETPASSWORD_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nexport function fetchPerson(personId) {\n return {\n type: PERSON_FETCH,\n identifier: 'people',\n payload: {\n personId: personId,\n },\n };\n}\n\nexport function deletePerson(personId) {\n return {\n type: PERSON_DELETE,\n identifier: 'people',\n payload: {\n personId: personId,\n },\n };\n}\n\nexport function sendInvite(emails) {\n return {\n type: SEND_INVITE,\n identifier: 'people',\n payload: {\n data: {\n emails,\n },\n },\n };\n}\n\nexport function sendInviteAll() {\n return {\n type: SEND_INVITE_ALL,\n identifier: 'peopleall',\n payload: {},\n };\n}\n\nexport function sendResetPassword(person) {\n return {\n type: SEND_RESETPASSWORD,\n identifier: 'people',\n payload: {\n id: person.id,\n },\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {};\n\nexport default function PeopleReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\nimport reducer from './reducer';\n\nexport default asyncComponent(() => import('./container'), reducer, 'route_source');\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import { defineFetch } from 'resift';\n\nconst makeGetRootNodes = defineFetch({\n displayName: 'Get Root Nodes',\n make: () => ({\n request: () => ({ http }) =>\n http({\n method: 'POST',\n route: '/search/people',\n data: {\n filter: {\n and: [\n { field: 'reportingPath', comparison: 'ukn' },\n { field: 'isTeamLeader', comparison: 'eq', value: 'true' },\n ],\n },\n sortBy: 'totalReportCount',\n sortDirection: 'desc',\n },\n }),\n }),\n});\n\nconst getRootNodes = makeGetRootNodes();\n\nexport default getRootNodes;\n","export const defaultGroupEmailFormValue = {\n enabled: false,\n};\n\nexport const defaultGroupMessageFormValue = {\n msTeams: {\n onApp: { enabled: false },\n onSiftWeb: { enabled: false },\n },\n};\n\nexport const defaultOrgChartExportFormValue = {\n download: { enabled: true },\n print: { enabled: true },\n defaultRootIds: [],\n};\n\nexport const defaultAssistantFormValue = {\n enabled: false,\n};\n\nexport const defaultOnboardingFormValue = {\n enabled: false,\n};\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Update Layout',\n share: {\n namespace: 'layouts',\n merge: (previous, next) => ({ ...previous, ...next }),\n },\n make: () => ({\n request: (data: any[]) => async ({ http }) => {\n for (let i = 0; i < data.length; i++) {\n await http({\n method: 'PUT',\n route: '/layouts',\n data: data[i],\n });\n }\n },\n }),\n});\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classnames from 'classnames';\nimport _get from 'lodash/get';\n\nimport usePortalPlaceholder from '@sift/skipper/helpers/usePortalPlaceholder';\nimport PortalProvider from '@sift/skipper/components/PortalProvider';\nimport ToolbarPortal from './ToolbarPortal';\n\ninterface Props {\n children?: React.ReactNode;\n classes?: any;\n}\n\nfunction Page({ children: childrenProp, classes: classesFromProps }: Props) {\n const _classes = useStyles();\n const rootClassName = classnames(_get(_classes, 'root'), _get(classesFromProps, 'root'));\n const contentClassName = classnames(_get(_classes, 'content'), _get(classesFromProps, 'content'));\n const containerClassName = classnames(\n _get(_classes, 'container'),\n _get(classesFromProps, 'container'),\n );\n const ToolbarPlaceHolder = usePortalPlaceholder(ToolbarPortal);\n const children = React.Children.toArray(childrenProp);\n\n return (\n \n
\n
\n
{children}
\n
\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n flex: '1 0 auto',\n flexDirection: 'column',\n width: `calc(100vw - ${theme.overrides.AppSidebar.width}px)`,\n height: `calc(100vh - ${theme.overrides.AppHeader.minHeight}px)`,\n },\n content: {\n padding: `${theme.spacing(4)}px ${theme.spacing(6)}px`,\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n overflowY: 'auto',\n },\n container: {\n maxWidth: 1400,\n display: 'flex',\n flex: '1 0 auto',\n flexDirection: 'column',\n },\n}));\n\nexport default Page;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst RemoveCircleIcon = props => (\n \n \n \n);\n\nexport default RemoveCircleIcon;\n","import React from 'react';\n\n// Components\nimport { SortableHandle } from 'react-sortable-hoc';\nimport ReorderIcon from '@material-ui/icons/Reorder';\n\ninterface SortableHandleElemProps {\n className: string;\n}\n\nexport default SortableHandle(({ className }: SortableHandleElemProps) => (\n \n));\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport * as Sift from '@sift/types';\n\n// Components\nimport { SortableElement } from 'react-sortable-hoc';\nimport IconButton from '@material-ui/core/IconButton';\nimport RemoveCircleIcon from 'components/Icons/ProfileLayout/RemoveCircleIcon';\nimport SortableHandleElem from './SortableHandleElem';\nimport ArrowUp from '@material-ui/icons/ArrowUpward';\nimport ArrowDown from '@material-ui/icons/ArrowDownward';\n\ninterface LayoutItem {\n type: 'field' | 'category';\n name: string;\n}\n\ninterface LayoutValue {\n oldIndex: number;\n newIndex: number;\n}\n\ninterface SortableItemElemProps {\n value: LayoutItem;\n fields: Sift.Field[];\n layout: LayoutItem[];\n itemIndex: number;\n onRemoveItem?: () => void;\n onLayoutChange: (value: LayoutValue) => void;\n}\n\nconst SortableItemElem = SortableElement(\n ({ value, itemIndex, layout, fields, onLayoutChange, onRemoveItem }: SortableItemElemProps) => {\n const field = fields.find((field: Sift.Field) => field.objectKey === value.name);\n const classes = useStyles();\n\n if (!field) {\n return null;\n }\n\n return (\n
\n \n
\n {field.displayName}\n
\n\n {itemIndex !== 0 && (\n onLayoutChange({ oldIndex: itemIndex, newIndex: itemIndex - 1 })}\n >\n \n \n )}\n\n {itemIndex !== layout.length - 1 && (\n onLayoutChange({ oldIndex: itemIndex, newIndex: itemIndex + 1 })}\n >\n \n \n )}\n {!!onRemoveItem && (\n \n \n \n )}\n
\n );\n },\n);\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n zIndex: 2000,\n paddingLeft: theme.spacing(),\n paddingRight: theme.spacing(),\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n backgroundColor: theme.colors.grayBlue,\n borderColor: `1px solid ${theme.palette.grey[500]}`,\n marginBottom: theme.spacing(),\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n },\n itemName: {\n flex: 1,\n ...theme.typography.body1,\n },\n buttonIcon: {\n marginLeft: theme.spacing(0.5),\n padding: theme.spacing(0.75),\n },\n dragIcon: {\n fontSize: 16,\n cursor: 'move',\n marginRight: theme.spacing(),\n },\n icon: {\n fontSize: 16,\n },\n };\n});\n\nexport default SortableItemElem;\n","import React from 'react';\nimport * as Sift from '@sift/types';\n\n// Components\nimport { SortableContainer } from 'react-sortable-hoc';\nimport SortableItemElem from './SortableItemElem';\n\ninterface LayoutItem {\n type: 'field' | 'category';\n name: string;\n}\n\ntype Layout = LayoutItem[];\n\ninterface LayoutValue {\n oldIndex: number;\n newIndex: number;\n}\n\n// Sortable HOCs\ninterface SortableListProps {\n layout: Layout;\n onRemoveItem?: (index: number) => void;\n onLayoutChange: (value: LayoutValue) => void;\n fields: Sift.Field[];\n classes: any;\n}\n\nconst SortableList = SortableContainer(\n ({ layout, onLayoutChange, onRemoveItem, fields }: SortableListProps) => {\n return (\n
\n {layout.map((item: LayoutItem, index: number) => {\n const handleRemoveItem = !!onRemoveItem ? () => onRemoveItem(index) : undefined;\n return (\n \n );\n })}\n
\n );\n },\n);\n\nexport default SortableList;\n","import React, { useMemo } from 'react';\nimport _get from 'lodash/get';\nimport _sortBy from 'lodash/sortBy';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useEntityTypes from 'helpers/useEntityTypes';\nimport * as Sift from '@sift/types';\nimport { Fields } from 'types/FormValue';\n\n// Components\nimport { arrayMove } from 'react-sortable-hoc';\nimport SortableList from './SortableList';\nimport AttributeSelector from 'components/attributeSelector/Local';\n\nexport interface LayoutItem {\n type: 'field' | 'category';\n name: string;\n}\n\nexport type Layout = LayoutItem[];\n\ninterface Props {\n allFields: Sift.Field[];\n layout: Layout;\n onChange: (layout: Layout) => void;\n useAttributeDropdown?: boolean;\n fields: Fields;\n typeKey: string;\n}\n\nexport default function GenericLayoutBuilder({\n allFields,\n layout,\n onChange,\n useAttributeDropdown = true,\n fields,\n typeKey,\n}: Props) {\n const classes = useStyles();\n const entityTypes = useEntityTypes();\n const entityType = _get(entityTypes, typeKey);\n\n function formatConfigOptionDisplayName(attribute: any) {\n const keyedFields = _get(entityType, '_fields');\n if (attribute.objectKey.includes('.')) {\n const [rootParentKey] = attribute.objectKey.split('.');\n const rootParentField = keyedFields[rootParentKey];\n\n // For now, we're only changing display for reachOutToMeFor\n if (_get(rootParentField, 'objectKey') === 'reachOutToMeFor') {\n return `${rootParentField.displayName} - ${attribute.displayName}`;\n }\n }\n\n return attribute.displayName;\n }\n\n const attributes = useMemo(() => {\n const filteredFields = layout.reduce(\n (acc, item) => {\n if (item.type !== 'field') return acc;\n\n delete acc[item.name];\n\n return acc;\n },\n { ...fields },\n );\n\n const filteredFieldsCollection = Object.keys(filteredFields).map(key => {\n let newField = filteredFields[key] as any;\n if (newField.objectKey.includes('.')) {\n newField.newDisplayName = formatConfigOptionDisplayName(newField);\n } else {\n newField.newDisplayName = newField.displayName;\n }\n\n return newField;\n });\n\n const fieldsAlphabeticallyOrdered = _sortBy(filteredFieldsCollection, ['newDisplayName']);\n return fieldsAlphabeticallyOrdered;\n }, [layout, fields]) as any;\n\n function handleRemoveItem(index: number) {\n const newLayout = [...layout];\n newLayout.splice(index, 1);\n onChange(newLayout);\n }\n\n function handleSaveAttributes(fields: any) {\n const newFields = Object.keys(fields || []).map(key => ({\n name: key,\n type: 'field',\n })) as LayoutItem[];\n const newLayout = [...newFields, ...layout];\n onChange(newLayout);\n }\n\n function handleSortEnd({ oldIndex, newIndex }: any) {\n const newLayout = arrayMove(layout, oldIndex, newIndex);\n onChange(newLayout);\n }\n\n return (\n
\n
\n {useAttributeDropdown && (\n \n )}\n
\n
\n \n
\n
\n );\n}\n\nfunction getAttributeKey(attribute: any) {\n return attribute.objectKey;\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {},\n header: {\n display: 'flex',\n justifyContent: 'flex-end',\n borderRadius: 5,\n marginBottom: theme.spacing(2),\n },\n content: {\n margin: 'auto',\n width: '100%',\n },\n };\n});\n","import React, { useMemo, useState, useEffect } from 'react';\nimport { isLoading } from 'resift';\nimport _get from 'lodash/get';\nimport _keyBy from 'lodash/keyBy';\nimport * as FormValues from 'types/FormValue';\nimport * as FeatureTypes from 'pages/Features/typings';\nimport * as GeneralTypes from 'pages/General/typings';\nimport * as PageTypes from 'pages/Pages/typings';\n\n// Components\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport GenericLayoutBuilder from 'components/GenericLayoutBuilder';\n\nimport makeStyles from '@material-ui/styles/makeStyles';\n\ninterface Props {\n cardTitle: string;\n dialogTitle: string;\n filter: (f: any) => boolean;\n layoutKey: any;\n subtitle: string;\n userStatus: number;\n fields: FormValues.Fields;\n onChange: (field: any, value: FormValues.FormValue) => void;\n values:\n | FeatureTypes.FeatureValues\n | GeneralTypes.GeneralValues\n | PageTypes.EntitySettingsFormValues;\n typeKey: string;\n className?: string;\n}\n\nfunction LayoutSettingCard({\n cardTitle,\n dialogTitle,\n filter,\n layoutKey,\n subtitle,\n userStatus,\n fields,\n onChange,\n values,\n typeKey,\n className,\n}: Props) {\n const classes = useStyles();\n const [dialogOpen, setDialogOpen] = useState(false);\n const availableFields = useMemo(() => {\n const fieldsCollection = Object.values(fields).filter(filter);\n return _keyBy(fieldsCollection, 'objectKey');\n }, [fields]);\n const layoutValue = _get(values, ['layouts', layoutKey]);\n const layoutFields = layoutValue;\n const [layout, setLayout] = useState(layoutFields);\n function toggleDialogOpen() {\n setDialogOpen(prevDialogOpen => !prevDialogOpen);\n }\n useEffect(() => {\n setLayout(layoutValue);\n }, [values]);\n\n const handleCancel = () => {\n toggleDialogOpen();\n setLayout(layoutFields);\n };\n\n async function handleUpdateLayout() {\n onChange(`layouts.${layoutKey}`, layout);\n toggleDialogOpen();\n }\n\n const searchSettings = _get(values, 'settings.directorySearch');\n\n return (\n \n \n Configure\n \n }\n subheader={subtitle}\n />\n {dialogOpen && (\n \n {dialogTitle}\n \n {subtitle}\n \n \n \n \n \n Done\n \n \n \n )}\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n rootDialog: {\n minHeight: 700,\n },\n dialogContent: {\n minHeight: 610,\n },\n button: {\n marginTop: theme.spacing(1.5),\n },\n };\n});\n\nexport default LayoutSettingCard;\n","import React, { useMemo } from 'react';\nimport _get from 'lodash/get';\nimport _keyBy from 'lodash/keyBy';\nimport * as FormValues from 'types/FormValue';\nimport * as Types from 'pages/Features/typings';\nimport { Field } from '@sift/types';\nimport * as PageTypes from 'pages/Pages/typings';\nimport isFieldValidConfigOption from 'helpers/isFieldValidConfigOption';\n\n// Components\nimport LayoutSettingCard from 'molecules/LayoutSettingCard';\n\ninterface Props {\n onChange: (field: any, value: FormValues.FormValue) => void;\n userStatus: number;\n fields: Field[];\n values: Types.FeatureValues | PageTypes.EntitySettingsFormValues;\n typeKey?: string;\n className?: string;\n}\n\nexport const FILTER_SUBTITLE_COPY =\n 'Define which attributes may be filtered by on your Directory and Explore pages.';\n\nexport const FILTERABLE_FIELD_TYPES = ['text', 'textSelect', 'multiSelect', 'boolean', 'number'];\n\nexport const fieldIsFilterable = (field: Field) => {\n const fieldTypeIsFilterable = (field: Field) =>\n FILTERABLE_FIELD_TYPES.includes(field.type) ||\n (field.type === 'collection' && _get(field, 'item.type') === 'text');\n\n return fieldTypeIsFilterable(field) && isFieldValidConfigOption(field);\n};\n\nfunction FilterLayout({\n userStatus,\n fields,\n onChange,\n values,\n typeKey = 'user',\n className,\n}: Props) {\n const keyedFields = useMemo(() => _keyBy(fields, 'objectKey'), [fields]);\n\n return (\n \n );\n}\n\nexport default FilterLayout;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\n\n// Components\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport TextField from '@material-ui/core/TextField';\nimport Switch from '@material-ui/core/Switch';\nimport Divider from '@material-ui/core/Divider';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n position: 'relative',\n },\n inputRow: {\n display: 'flex',\n alignItems: 'center',\n },\n inputCopy: {\n marginRight: theme.spacing(4),\n },\n numberInput: {\n minWidth: 128,\n },\n };\n};\n\nfunction Export({ classes, onChange, errorMessage, value }) {\n const limit = _get(value, 'limit', 1000);\n const enabled = _get(value, 'enabled', false);\n\n function handleChangeLimit(e) {\n const value = e.currentTarget.value;\n const parseValue = parseInt(value, 10);\n const limit = isNaN(parseValue) ? value : parseValue;\n\n onChange('client.settings.export.limit', limit);\n }\n\n function handleChangeEnabled(e, isEnabled) {\n onChange('client.settings.export.enabled', isEnabled);\n }\n\n return (\n \n \n }\n subheader=\"Allow users to export a CSV file with data from their search result. Our maximum for the\n number of people that may be exported is 1000, but you may use a lower limit.\"\n />\n\n \n \n
\n
Export Limit
\n \n
\n
\n
\n );\n}\n\nExport.propTypes = {\n onChange: PropTypes.func.isRequired,\n value: PropTypes.shape({\n limit: PropTypes.number,\n enabled: PropTypes.bool,\n }),\n errorMessage: PropTypes.string,\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(styles)(Export);\n","import React, { useCallback } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\n// Components\nimport Switch from '@material-ui/core/Switch';\nimport { Typography } from '@material-ui/core';\n\ninterface Props {\n value: boolean;\n onChange: (key: string, value: any) => void;\n}\n\nfunction GroupEmail({ onChange, value }: Props) {\n const classes = useStyles();\n const enabled = !!value;\n\n const handleChangeEnabled = useCallback(\n function(e, isEnabled) {\n onChange('client.settings.groupEmail.enabled', isEnabled);\n },\n [onChange],\n );\n\n return (\n <>\n Email\n
\n Allow users to send a group email\n \n
\n \n );\n}\nconst useStyles = makeStyles(theme => ({\n root: {},\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n\nexport default GroupEmail;\n","import React from 'react';\nimport _isEqual from 'lodash/isEqual';\nimport _pickBy from 'lodash/pickBy';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Switch from '@material-ui/core/Switch';\nimport { Typography } from '@material-ui/core';\n\ninterface Props {\n value: {\n onApp: { enabled: boolean };\n onSiftWeb: { enabled: boolean };\n };\n onChange: (key: string, value: any) => void;\n}\n\nfunction GroupMessage({ value, onChange }: Props) {\n const classes = useStyles();\n const { onApp, onSiftWeb } = value;\n const enabledOnApp = onApp.enabled;\n const enabledOnSiftWeb = onSiftWeb.enabled;\n\n const handleToggleGroupMessagingOnMsTeamsApp = (e: React.ChangeEvent) => {\n onChange('client.settings.groupMessage.msTeams.onApp.enabled', e.target.checked);\n };\n\n const handleToggleGroupMessagingOnSiftWeb = (e: React.ChangeEvent) => {\n onChange('client.settings.groupMessage.msTeams.onSiftWeb.enabled', e.target.checked);\n };\n\n return (\n <>\n Microsoft Teams Messaging (within app)\n
\n \n Allow users to send a group Teams message while within Sift's Teams application. Messaging\n will use the person's email address.\n \n
\n \n
\n
\n Microsoft Teams Messaging (on web)\n
\n \n Allow users to send a group Teams message while within Sift's web application. Messaging\n will use the person's email address.\n \n
\n \n
\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n\nexport default GroupMessage;\n","import React from 'react';\nimport * as Types from 'pages/Features/typings';\n\nimport GroupEmail from './GroupEmail';\nimport GroupMessage from './GroupMessage';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\n\ninterface Props {\n setFieldValue: (field: string, value: any) => void;\n values: Types.FeatureValues;\n}\n\nfunction GroupMessaging({ values, setFieldValue }: Props) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport default GroupMessaging;\n","import React from 'react';\nimport * as Types from 'pages/Features/typings';\nimport { Fields } from 'types/FormValue';\nimport FilterLayout from './FilterLayout';\nimport Export from './Export';\nimport GroupMessaging from './GroupMessaging/GroupMessaging';\n\ninterface Props {\n setFieldValue: (field: string, value: any) => void;\n values: Types.FeatureValues;\n errors: any;\n userStatus: number;\n fields: Fields;\n}\n\nfunction Directory({ setFieldValue, values, errors, userStatus, fields }: Props) {\n return (\n <>\n \n \n \n \n );\n}\n\nexport default Directory;\n","import React, { useCallback } from 'react';\n\n// Components\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Switch from '@material-ui/core/Switch';\n\ninterface Props {\n onChange: (key: string, value: boolean) => void;\n value: boolean;\n}\n\nfunction Pronunciation({ onChange, value }: Props) {\n const enabled = !!value;\n\n const handleChangeEnabled = useCallback(\n function(e, isEnabled) {\n onChange('client.settings.namePronunciation.enabled', isEnabled);\n },\n [onChange],\n );\n\n return (\n \n \n }\n subheader=\"Allow people in your organization to add a recording of their full name to their\n profile.\"\n />\n \n );\n}\n\nexport default Pronunciation;\n","import React, { useCallback } from 'react';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Switch from '@material-ui/core/Switch';\n\ninterface Props {\n value: boolean;\n onChange: (key: string, value: any) => void;\n}\n\nfunction Assistants({ value, onChange }: Props) {\n const enabled = !!value;\n\n const handleChangeEnabled = useCallback(\n function(e, isEnabled) {\n onChange('client.settings.assistants.enabled', isEnabled);\n },\n [onChange],\n );\n\n return (\n \n \n }\n subheader=\"Allow users to add their assistants and people they assist to their profile.\"\n />\n \n );\n}\n\nexport default Assistants;\n","import * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\n\nexport const AM_PM_FORMAT = 'hh: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} as Types.WorkHours;\n\nconst DEFAULT_WORK_HOURS_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.WorkHoursByDay;\n\nexport default DEFAULT_WORK_HOURS_BY_DAY;\n","import React from 'react';\nimport makeStyles from '@material-ui/styles/makeStyles';\nimport classNames from 'classnames';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport { WEEK_DAY_ABBREVIATIONS } from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/constants';\n\ninterface Props {\n day: keyof typeof WEEK_DAY_ABBREVIATIONS;\n checked: boolean;\n disabled?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n}\n\nfunction WeekDayCheckBox({ day, checked, disabled = false, onChange }: Props) {\n const classes = useStyles();\n const weekDayAbbr = WEEK_DAY_ABBREVIATIONS[day];\n\n return (\n \n \n {weekDayAbbr}\n \n \n }\n inputProps={{ 'aria-label': day }}\n checkedIcon={\n \n \n {weekDayAbbr}\n \n \n }\n disabled={disabled}\n />\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n unselectedDay: {\n width: 38,\n height: 38,\n backgroundColor: theme.palette.text.hint,\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedDay: {\n width: 38,\n height: 38,\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.common.white,\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n weekDayAbbr: {\n fontWeight: 'bold',\n },\n disabledSelectedDay: {\n backgroundColor: theme.palette.text.disabled,\n },\n}));\n\nexport default WeekDayCheckBox;\n","import React from 'react';\nimport { TimePicker } from '@material-ui/pickers';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\n\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\n\ninterface Props {\n clearable: boolean;\n startTime: any;\n endTime: any;\n disabled?: boolean;\n error: any;\n onChangeStartTime: (time: any) => void;\n onChangeEndTime: (time: any) => void;\n}\n\nfunction WorkHoursSelector({\n clearable,\n startTime,\n endTime,\n disabled = false,\n error,\n onChangeStartTime,\n onChangeEndTime,\n}: Props) {\n const classes = useStyles();\n const hasError = !!error;\n\n return (\n
\n
\n
\n \n to\n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n },\n timePickerWrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n timePickerContainer: {\n display: 'flex',\n alignItems: 'center',\n width: 240,\n justifyContent: 'space-around',\n },\n timePicker: {\n width: 80,\n },\n inputErred: {\n '& input': {\n color: theme.palette.error.main,\n },\n },\n}));\n\nexport default WorkHoursSelector;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/styles/makeStyles';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport classNames from 'classnames';\nimport TextField from '@material-ui/core/TextField';\n\ninterface LocationOption {\n value: Types.WorkLocation | null;\n label: string;\n}\n\ninterface Props {\n className?: string;\n day: string;\n disabled?: boolean;\n location: Types.WorkLocation | null;\n onChange: (newItem: Types.WorkLocation | null) => void;\n}\n\nfunction LocationSelector({ className, day, disabled = false, location, onChange }: Props) {\n const classes = useStyles();\n const entityTypes = useEntityTypes();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const userConfigFields = _get(userConfig, '_fields', {});\n const options = useMemo(\n () =>\n _get(\n userConfigFields,\n ['timezoneAndWorkHours.workHours.location', 'validation', '_selectOptions'],\n [],\n ),\n [userConfigFields],\n ) as LocationOption[];\n\n const getInitialValue = useCallback(\n (newLocation?: Types.WorkLocation | null) => {\n return options.find(option => option.value === newLocation) || null;\n },\n [options],\n );\n\n const [locationValue, setLocationValue] = useState(\n getInitialValue(location),\n );\n\n useEffect(() => {\n setLocationValue(getInitialValue(location));\n }, [location, getInitialValue]);\n\n const handleChange = (newValue: LocationOption | null) => {\n setLocationValue(newValue);\n onChange(_get(newValue, 'value', null));\n };\n\n return (\n option.label}\n getOptionSelected={(option: LocationOption, value: LocationOption) =>\n value.value === option.value\n }\n options={options}\n renderInput={(params: any) => (\n \n )}\n value={locationValue || null}\n onChange={(event: React.ChangeEvent<{}>, value: LocationOption | null) => handleChange(value)}\n />\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n minWidth: 225,\n marginLeft: theme.spacing(1),\n },\n}));\n\nexport default LocationSelector;\n","import React, { useMemo } from 'react';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\n\nimport makeStyles from '@material-ui/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport FileCopyOutlinedIcon from '@material-ui/icons/FileCopyOutlined';\n\nimport WeekDayCheckBox from './WeekDayCheckBox';\nimport WorkHoursSelector from './WorkHoursSelector';\nimport LocationSelector from './LocationSelector';\n\nimport {\n WEEK_DAY_NAMES,\n DEFAULT_WORK_HOURS,\n} from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/constants';\n\ninterface Props {\n value: Types.TimezoneAndWorkHoursFormState;\n errors: any;\n onChange: (key: string, value: any) => void;\n}\n\nfunction WorkHoursForm({ value, errors, onChange }: Props) {\n const classes = useStyles();\n const {\n workScheduleEnabled,\n hoursEnabled,\n locationEnabled,\n defaultWorkHoursEnabled,\n workHoursByDay,\n } = value;\n const workHoursByDayEntries = Object.entries(workHoursByDay) as Types.WorkHoursByDayEntries;\n const workingDayAndHours = useMemo(() => workHoursByDayEntries.filter(([_, value]) => !!value), [\n workHoursByDayEntries,\n ]) as Types.WorkingDayWorkHours[];\n\n const hasWorkingDay = !!workingDayAndHours.length;\n const hasMoreThanOneWorkingDay = workingDayAndHours.length > 1;\n const firstWorkingDay = hasWorkingDay && workingDayAndHours[0][0];\n const firstWorkingDayHours = hasWorkingDay ? workingDayAndHours[0][1] : DEFAULT_WORK_HOURS;\n\n const handleChangeHoursEnabled = (e: React.ChangeEvent) => {\n onChange('client.settings.timezoneAndWorkHours.hoursEnabled', e.target.checked);\n if (!e.target.checked && !locationEnabled) {\n onChange('client.settings.timezoneAndWorkHours.workScheduleEnabled', false);\n onChange('client.settings.timezoneAndWorkHours.defaultWorkHoursEnabled', false);\n }\n };\n\n const handleChangeLocationEnabled = (e: React.ChangeEvent) => {\n onChange('client.settings.timezoneAndWorkHours.locationEnabled', e.target.checked);\n if (!e.target.checked && !hoursEnabled) {\n onChange('client.settings.timezoneAndWorkHours.workScheduleEnabled', false);\n onChange('client.settings.timezoneAndWorkHours.defaultWorkHoursEnabled', false);\n }\n };\n\n const handleChangeDefaultWorkHoursEnabled = (e: React.ChangeEvent) => {\n onChange('client.settings.timezoneAndWorkHours.defaultWorkHoursEnabled', e.target.checked);\n };\n\n const handleChangeWorkHourOfDay = (\n day: Types.WeekDay,\n marker: 'startTime' | 'endTime',\n timeObject: any,\n ) => {\n onChange(`client.settings.timezoneAndWorkHours.workHoursByDay.${day}.${marker}`, timeObject);\n };\n\n const handleChangeLocationOfDay = (\n day: Types.WeekDay,\n newLocation: Types.WorkLocation | null,\n ) => {\n onChange(`client.settings.timezoneAndWorkHours.workHoursByDay.${day}.location`, newLocation);\n };\n\n const handleChangeWorkingOnDay = (day: Types.WeekDay, e: React.ChangeEvent) => {\n const newValueForDay = e.target.checked\n ? {\n day: WEEK_DAY_NAMES.indexOf(day),\n startTime: firstWorkingDayHours.startTime,\n endTime: firstWorkingDayHours.endTime,\n location: firstWorkingDayHours.location,\n }\n : null;\n\n onChange(`client.settings.timezoneAndWorkHours.workHoursByDay.${day}`, newValueForDay);\n };\n\n const handleApplyWorkHoursToAllDays = () => {\n if (workingDayAndHours.length < 2) {\n return;\n }\n const startTime = firstWorkingDayHours.startTime;\n const endTime = firstWorkingDayHours.endTime;\n const location = firstWorkingDayHours.location;\n\n const newWorkHoursByDay = workHoursByDayEntries.reduce((acc, entry) => {\n const day = entry[0] as Types.WeekDay;\n const value = entry[1];\n const dayNumberValue = WEEK_DAY_NAMES.indexOf(day);\n acc[day] = !!value ? { day: dayNumberValue, startTime, endTime, location } : null;\n return acc;\n }, {} as Types.WorkHoursByDay);\n\n onChange('client.settings.timezoneAndWorkHours.workHoursByDay', newWorkHoursByDay);\n };\n\n return (\n
\n
\n }\n label=\"Enable Work Hours\"\n className={classes.checkbox}\n disabled={!workScheduleEnabled}\n />\n \n Allow users to display their daily working hours on their profile.\n \n }\n label=\"Enable Work Location\"\n className={classes.checkbox}\n disabled={!workScheduleEnabled}\n />\n \n Allow users to display their normal daily work location on their profile.\n \n \n }\n label=\"Enable default Work Schedule\"\n className={classes.checkbox}\n disabled={!workScheduleEnabled}\n />\n \n If a default work schedule is set, people who edit their work schedule will start from the\n default setting.\n \n
\n {defaultWorkHoursEnabled && (\n <>\n \n {WEEK_DAY_NAMES.map((day, i) => {\n return (\n handleChangeWorkingOnDay(day, e)}\n disabled={!defaultWorkHoursEnabled}\n />\n );\n })}\n \n
\n
\n {hasWorkingDay &&\n workingDayAndHours.map(([day, { startTime, endTime, location }], i) => {\n const error = !!errors && errors[day];\n\n return (\n
\n
\n {day}\n
\n
\n {hoursEnabled && (\n \n handleChangeWorkHourOfDay(day, 'startTime', e)\n }\n onChangeEndTime={e => handleChangeWorkHourOfDay(day, 'endTime', e)}\n />\n )}\n {locationEnabled && (\n \n handleChangeLocationOfDay(day, newLocation)\n }\n />\n )}\n
\n {error && (\n \n {error}\n \n )}\n
\n
\n
\n );\n })}\n
\n {hasMoreThanOneWorkingDay && (\n \n \n \n \n \n \n \n )}\n
\n \n )}\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n minHeight: 350,\n display: 'flex',\n flexDirection: 'column',\n },\n toggles: {\n marginBottom: theme.spacing(2),\n },\n checkbox: {\n marginTop: theme.spacing(1),\n },\n row: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: theme.spacing(),\n },\n dayRowContent: {\n display: 'flex',\n marginBottom: theme.spacing(),\n alignItems: 'center',\n },\n hoursAndLocationAndErrors: {\n display: 'flex',\n flexDirection: 'column',\n },\n hoursAndLocation: {\n display: 'flex',\n marginBottom: theme.spacing(),\n alignItems: 'center',\n },\n workHourSelectors: {\n marginTop: theme.spacing(1),\n display: 'flex',\n alignItems: 'flex-start',\n },\n copyButton: {\n marginLeft: theme.spacing(),\n marginTop: theme.spacing(0.75),\n },\n marginLeft: {\n marginLeft: theme.spacing(4),\n },\n day: {\n width: 110,\n },\n errorMessage: {\n alignSelf: 'center',\n },\n}));\n\nexport default WorkHoursForm;\n","import React from 'react';\nimport _isEqual from 'lodash/isEqual';\nimport _pickBy from 'lodash/pickBy';\nimport _isEmpty from 'lodash/isEmpty';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Switch from '@material-ui/core/Switch';\nimport Typography from '@material-ui/core/Typography';\nimport WorkHoursForm from './WorkHoursForm';\n\ninterface Props {\n value: Types.TimezoneAndWorkHoursFormState;\n errors: any;\n onChange: (key: string, value: any) => void;\n}\n\nfunction TimezoneAndWorkHours({ value, errors, onChange }: Props) {\n const classes = useStyles();\n const { timezoneEnabled, workScheduleEnabled } = value;\n\n const handleToggleEnableTimezone = (e: React.ChangeEvent) => {\n onChange('client.settings.timezoneAndWorkHours.timezoneEnabled', e.target.checked);\n\n if (!e.target.checked) {\n onChange('client.settings.timezoneAndWorkHours.workScheduleEnabled', false);\n onChange('client.settings.timezoneAndWorkHours.hoursEnabled', false);\n onChange('client.settings.timezoneAndWorkHours.locationEnabled', false);\n onChange('client.settings.timezoneAndWorkHours.defaultWorkHoursEnabled', false);\n }\n };\n\n const handleToggleEnableWorkSchedule = (e: React.ChangeEvent) => {\n onChange('client.settings.timezoneAndWorkHours.workScheduleEnabled', e.target.checked);\n onChange('client.settings.timezoneAndWorkHours.hoursEnabled', e.target.checked);\n onChange('client.settings.timezoneAndWorkHours.locationEnabled', e.target.checked);\n\n if (!e.target.checked) {\n onChange('client.settings.timezoneAndWorkHours.defaultWorkHoursEnabled', false);\n }\n };\n\n return (\n <>\n
\n Time Zone\n \n
\n \n Allow users to add their local time zone to their profile.\n \n
\n
\n Work Schedule\n \n
\n \n Allow users to add their daily working hours to their profile. You can set default working\n hours for your organization below.\n \n \n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n workHoursSection: {\n marginTop: theme.spacing(1.5),\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n\nexport default TimezoneAndWorkHours;\n","import React from 'react';\nimport _isEqual from 'lodash/isEqual';\nimport _pickBy from 'lodash/pickBy';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport TimezoneAndWorkHoursForm from './TimezoneAndWorkHoursForm';\n\ninterface Props {\n timezoneAndWorkHours: Types.TimezoneAndWorkHoursFormState;\n errors: any;\n onChange: (key: string, value: any) => void;\n}\n\nfunction TimezoneAndWorkHours({ timezoneAndWorkHours, errors, onChange }: Props) {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default TimezoneAndWorkHours;\n","import React from 'react';\nimport * as Types from 'pages/Features/typings';\n\nimport Pronunciation from './Pronunciation';\nimport Assistants from './Assistants';\nimport TimezoneAndWorkHours from './TimezoneAndWorkHours';\n\ninterface Props {\n setFieldValue: (field: string, value: any) => void;\n values: Types.FeatureValues;\n errors: any;\n}\n\nfunction Profile({ setFieldValue, values, errors }: Props) {\n return (\n <>\n \n \n \n \n );\n}\n\nexport default Profile;\n","import React, { useMemo } from 'react';\nimport _get from 'lodash/get';\nimport _keyBy from 'lodash/keyBy';\nimport isFieldValidConfigOption from 'helpers/isFieldValidConfigOption';\nimport * as FormValues from 'types/FormValue';\nimport { Field } from '@sift/types';\nimport * as Types from 'pages/Features/typings';\n\n// Components\nimport LayoutSettingCard from 'molecules/LayoutSettingCard';\n\ninterface Props {\n onChange: (field: any, value: FormValues.FormValue) => void;\n userStatus: number;\n fields: Field[];\n values: Types.FeatureValues;\n}\n\nexport const HIGHLIGHT_SUBTITLE_COPY =\n 'Configure which attributes may be highlighted by in your org chart. If no attributes are defined, the feature will be hidden.';\n\nexport const HIGHLIGHTABLE_FIELD_TYPES = ['text', 'textSelect', 'boolean', 'number'];\n\nexport const highlightByFilter = (field: Field, fields: Field[]) => {\n const fieldTypeIsHighlightable = (field: Field) => HIGHLIGHTABLE_FIELD_TYPES.includes(field.type);\n\n return (\n fieldTypeIsHighlightable(field) &&\n isFieldValidConfigOption(field) &&\n !parentFieldIsObjectArray(field, fields)\n );\n};\n\n// Checks whether a field's direct parent field is an array of objects\nfunction parentFieldIsObjectArray(field: Field, fields: Field[]) {\n if (!field.objectKey.includes('.')) return false;\n\n const parentFieldKey = field.objectKey.substring(0, field.objectKey.lastIndexOf('.'));\n const parentField = fields.find((field: Field) => field.objectKey === parentFieldKey);\n\n if (!parentField) return false;\n\n return fieldIsObjectArray(parentField, fields);\n}\n\n// Checks whether a field is an array of objects (education, skills, pageCollection, etc)\nfunction fieldIsObjectArray(field: Field, fields: Field[]) {\n const OBJECT_COLLECTION_ITEM_BASE_FIELD_KEYS = ['object', 'objectCollectionItem'];\n\n const itemType = _get(field, 'item.type', '');\n\n if (!_get(field, 'item') || !itemType.startsWith('@fields')) return false;\n\n if (!fields) return true;\n\n const childFieldKey = itemType.slice(itemType.indexOf('.') + 1);\n const childField = fields.find((field: Field) => field.objectKey === childFieldKey);\n\n return (\n !!childField && OBJECT_COLLECTION_ITEM_BASE_FIELD_KEYS.includes(_get(childField, 'baseField'))\n );\n}\n\nfunction OrgChartHighlightsLayout({ userStatus, fields, onChange, values }: Props) {\n const keyedFields = useMemo(() => _keyBy(fields, 'objectKey'), [fields]);\n\n return (\n highlightByFilter(field, fields)}\n layoutKey=\"org-chart-highlight-by\"\n subtitle={HIGHLIGHT_SUBTITLE_COPY}\n userStatus={userStatus}\n fields={keyedFields}\n onChange={onChange}\n values={values}\n typeKey=\"user\"\n />\n );\n}\n\nexport default OrgChartHighlightsLayout;\n","import React from 'react';\nimport _isEqual from 'lodash/isEqual';\nimport _pickBy from 'lodash/pickBy';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Switch from '@material-ui/core/Switch';\nimport Divider from '@material-ui/core/Divider';\nimport Typography from '@material-ui/core/Typography';\n\ninterface Props {\n value: { print: { enabled: boolean }; download: { enabled: boolean } };\n onChange: (key: string, value: any) => void;\n}\n\nfunction OrgChartExport({ value, onChange }: Props) {\n const classes = useStyles();\n const { print, download } = value;\n const printEnabled = print.enabled;\n const downloadEnabled = download.enabled;\n\n const handleToggleEnablePrintOrgChart = (e: React.ChangeEvent) => {\n onChange('client.settings.orgChart.print.enabled', e.target.checked);\n };\n\n const handleToggleEnableDownloadOrgChart = (e: React.ChangeEvent) => {\n onChange('client.settings.orgChart.download.enabled', e.target.checked);\n };\n\n return (\n \n \n \n \n Print\n
\n \n Allow users to export a printable view of the org chart. The export will be of their\n current viewport.\n \n
\n \n
\n
\n Download\n
\n \n Allow users to download a fuller view. The export will include their entire expanded\n canvas.\n \n
\n \n
\n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n\nexport default OrgChartExport;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport AttributeSelector from 'components/attributeSelector/Local';\nimport * as Types from './typings';\n\ninterface Props {\n availableRootNodes: Types.rootNodes;\n onChange: (key: string, value: any) => void;\n currentRootNodes: { defaultRootIds: string[] };\n}\n\nfunction RootNodes({ currentRootNodes, availableRootNodes, onChange }: Props) {\n const classes = useStyles();\n\n const handleSave = (fields: any) => {\n onChange('client.settings.orgChart.defaultRootIds', Object.keys(fields || []));\n };\n\n const transformedIds = Object.assign(\n {},\n ...currentRootNodes.defaultRootIds.map((name: string) => ({ [name]: true })),\n );\n const getAttributeKey = (attribute: any) => attribute.id;\n const getAttributeDisplayName = (attribute: any) =>\n `${attribute.displayName} (${attribute.totalReportCount} total reports)`;\n\n const attributesSelectorElem = (\n \n );\n\n return (\n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n cardRoot: {\n overflow: 'visible',\n },\n attributeSelector: {\n maxHeight: 465,\n },\n attributesList: {\n ...theme.typography.body1,\n marginBottom: theme.spacing(3),\n marginTop: theme.spacing(3),\n },\n}));\n\nexport default RootNodes;\n","import React from 'react';\nimport * as FeatureTypes from 'pages/Features/typings';\nimport * as Types from './typings';\nimport { Fields } from 'types/FormValue';\n\nimport OrgChartHighlightsLayout from './OrgChartHighlightsLayout';\nimport OrgChartExport from './OrgChartExport';\nimport RootNodes from './RootNodes';\n\ninterface Props {\n setFieldValue: (field: string, value: any) => void;\n values: FeatureTypes.FeatureValues;\n rootNodes: Types.rootNodes;\n userStatus: number;\n fields: Fields;\n}\n\nfunction OrgChart({ setFieldValue, values, rootNodes, userStatus, fields }: Props) {\n return (\n <>\n \n \n \n \n );\n}\n\nexport default OrgChart;\n","import React from 'react';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Switch from '@material-ui/core/Switch';\n\ninterface Props {\n value: { enabled: boolean };\n onChange: (key: string, value: any) => void;\n}\n\nfunction Onboarding({ value, onChange }: Props) {\n const handleToggle = (e: React.ChangeEvent) => {\n onChange('client.settings.onboarding.enabled', e.target.checked);\n };\n\n return (\n \n \n }\n subheader=\"Show a full screen onboarding experience to new users on first visit that will encourage\n them to complete their profiles.\"\n />\n \n );\n}\n\nexport default Onboarding;\n","import moment from 'moment-timezone';\nimport _sortBy from 'lodash/sortBy';\nimport _omit from 'lodash/omit';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\n\ninterface Props {\n workHoursByDay: Types.WorkHoursByDay;\n hoursEnabled: boolean;\n locationEnabled: boolean;\n}\n\nfunction getWorkHoursByDayArray({ workHoursByDay, hoursEnabled, locationEnabled }: Props) {\n const workHoursItems = Object.values(workHoursByDay);\n const workingDays = workHoursItems.filter(item => !!item);\n\n if (!workingDays.length) {\n return [];\n }\n\n const sortedWorkingDays = workingDays.sort((a: any, b: any) => a.day - b.day);\n return sortedWorkingDays.map((item: any) => {\n let itemToSave = item;\n\n if (!hoursEnabled || (!item.startTime && !item.endTime)) {\n itemToSave = _omit(item, ['startTime', 'endTime']);\n }\n if (!locationEnabled) {\n itemToSave = _omit(item, 'location');\n }\n\n if (hoursEnabled && item.startTime && item.endTime) {\n const startTimeMoment = moment(item.startTime);\n const endTimeMoment = moment(item.endTime);\n const startTimeHour = startTimeMoment.hour();\n const startTimeMinute = startTimeMoment.minute();\n const endTimeHour = endTimeMoment.hour();\n const endTimeMinute = endTimeMoment.minute();\n\n return {\n ...itemToSave,\n startTime: {\n hour: startTimeHour,\n minute: startTimeMinute,\n },\n endTime: {\n hour: endTimeHour,\n minute: endTimeMinute,\n },\n };\n } else {\n return itemToSave;\n }\n });\n}\n\nexport default getWorkHoursByDayArray;\n","import _get from 'lodash/get';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\nimport getWorkHoursByDayArray from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/helpers/getWorkHoursByDayArray';\n\nfunction convertTimeoneAndWorkHoursValueForRequest(\n timezoneAndWorkHoursFormValue: Types.TimezoneAndWorkHoursFormState,\n): Types.TimezoneAndWorkHoursRequest {\n const hoursEnabled = timezoneAndWorkHoursFormValue.hoursEnabled;\n const locationEnabled = timezoneAndWorkHoursFormValue.locationEnabled;\n const defaultWorkHoursArray = getWorkHoursByDayArray({\n workHoursByDay: timezoneAndWorkHoursFormValue.workHoursByDay,\n hoursEnabled,\n locationEnabled,\n });\n const timezoneEnabled = timezoneAndWorkHoursFormValue.timezoneEnabled;\n const workScheduleEnabled = timezoneAndWorkHoursFormValue.workScheduleEnabled;\n const defaultWorkHoursEnabled = timezoneAndWorkHoursFormValue.defaultWorkHoursEnabled;\n\n const setDefaultWorkHoursToNull =\n !timezoneEnabled ||\n !workScheduleEnabled ||\n !defaultWorkHoursEnabled ||\n !defaultWorkHoursArray.length;\n const timezoneAndWorkHoursSettingsToSave = {\n timezone: {\n enabled: timezoneAndWorkHoursFormValue.timezoneEnabled,\n },\n workHours: {\n hoursEnabled: timezoneAndWorkHoursFormValue.hoursEnabled,\n locationEnabled: timezoneAndWorkHoursFormValue.locationEnabled,\n defaultWorkHours: setDefaultWorkHoursToNull ? null : defaultWorkHoursArray,\n },\n };\n\n return timezoneAndWorkHoursSettingsToSave;\n}\n\nexport default convertTimeoneAndWorkHoursValueForRequest;\n","import _keyBy from 'lodash/keyBy';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\nimport { WEEK_DAY_NAMES } from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/constants';\n\nfunction getWorkHoursByDayLookup(workHours: Types.DailyWorkHours[]): Types.WorkHoursByDay {\n const workHoursByDay = WEEK_DAY_NAMES.reduce(\n (acc, name) => ({ ...acc, [name]: null }),\n {} as Types.WorkHoursByDay,\n );\n\n const workingHoursByDay = _keyBy(workHours, workHoursItem => {\n return WEEK_DAY_NAMES[workHoursItem.day];\n });\n\n const workHoursByDayLookup = {\n ...workHoursByDay,\n ...workingHoursByDay,\n };\n\n return workHoursByDayLookup;\n}\n\nexport default getWorkHoursByDayLookup;\n","import _get from 'lodash/get';\nimport * as Types from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/typings';\nimport getWorkHoursByDayLookup from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/helpers/getWorkHoursByDayLookup';\nimport DEFAULT_WORK_HOURS_BY_DAY from 'pages/Features/tabs/Profile/TimezoneAndWorkHours/constants';\n\nfunction getDefaultTimezoneAndWorkHoursFormValue(\n clientSettings: any,\n): Types.TimezoneAndWorkHoursFormState {\n const timezoneEnabled = _get(clientSettings, 'timezoneAndWorkHours.timezone.enabled', true);\n const hoursEnabled = _get(clientSettings, 'timezoneAndWorkHours.workHours.hoursEnabled', true);\n const locationEnabled = _get(\n clientSettings,\n 'timezoneAndWorkHours.workHours.locationEnabled',\n true,\n );\n const workScheduleEnabled = timezoneEnabled && (hoursEnabled || locationEnabled);\n const defaultWorkHoursEnabled =\n workScheduleEnabled &&\n Boolean(_get(clientSettings, 'timezoneAndWorkHours.workHours.defaultWorkHours'));\n\n return {\n timezoneEnabled,\n workScheduleEnabled,\n hoursEnabled,\n locationEnabled,\n defaultWorkHoursEnabled,\n workHoursByDay: !!_get(clientSettings, 'timezoneAndWorkHours.workHours.defaultWorkHours')\n ? getWorkHoursByDayLookup(clientSettings.timezoneAndWorkHours.workHours.defaultWorkHours)\n : DEFAULT_WORK_HOURS_BY_DAY,\n };\n}\n\nexport default getDefaultTimezoneAndWorkHoursFormValue;\n","import React, { useEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport moment from 'moment-timezone';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory, Prompt } from 'react-router';\nimport { useStatus, useData, combineStatuses } from 'resift';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isEqual from 'lodash/isEqual';\nimport { updateClient } from 'store/client';\nimport getRootNodes from 'fetches/getRootNodes';\nimport {\n defaultGroupEmailFormValue,\n defaultGroupMessageFormValue,\n defaultOrgChartExportFormValue,\n defaultAssistantFormValue,\n defaultOnboardingFormValue,\n} from './constants';\nimport * as Types from './typings';\nimport useFormSnackbar from 'components/Form/helpers/useFormSnackbar';\n\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport makeUpdateLayoutFetch from 'pages/ProfileLayout/fetches/updateLayoutFetch';\nimport * as FormValues from 'types/FormValue';\n\nimport Page from 'components/Page/newComponents';\nimport Breadcrumbs from 'components/Page/Breadcrumbs';\nimport { Formik, Form } from 'formik';\nimport PageTitle from 'components/Page/PageTitle';\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageFormErrorMessage from 'components/Page/newComponents/PageFormErrorMessage';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Loader from 'components/Loader';\nimport Directory from './tabs/Directory/Directory';\nimport Profile from './tabs/Profile/Profile';\nimport OrgChart from './tabs/OrgChart/OrgChart';\nimport Onboarding from './tabs/Other/Onboarding';\nimport HandleRedirect from 'molecules/HandleRedirect';\nimport convertTimezoneAndWorkHoursValueForRequest from './tabs/Profile/TimezoneAndWorkHours/helpers/convertTimezoneAndWorkHoursValueForRequest';\nimport getDefaultTimezoneAndWorkHoursFormValue from './tabs/Profile/TimezoneAndWorkHours/helpers/getDefaultTimezoneAndWorkHoursFormValue';\n\nfunction Features() {\n const dispatch = useDispatch();\n const _client = useSelector((state: any) => state.client);\n const entityTypesFetch = makeEntityTypesFetch();\n const updateLayoutFetch = makeUpdateLayoutFetch();\n const updateLayoutStatus = useStatus(updateLayoutFetch);\n const entityTypes = useEntityTypes();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const clientStatus = useSelector((state: any) => state.client.status);\n const initialState = {\n client: {\n ..._client,\n displayName: _client.displayName || 'Sift App',\n settings: {\n ..._client.settings,\n groupEmail: _get(_client, 'settings.groupEmail', defaultGroupEmailFormValue),\n groupMessage: _get(_client, 'settings.groupMessage', defaultGroupMessageFormValue),\n timezoneAndWorkHours: getDefaultTimezoneAndWorkHoursFormValue(_client.settings),\n orgChart: _get(_client, 'settings.orgChart', defaultOrgChartExportFormValue),\n assistants: _get(_client, 'settings.assistants', defaultAssistantFormValue),\n onboarding: _get(_client, 'settings.onboarding', defaultOnboardingFormValue),\n },\n },\n layouts: {\n 'org-chart-highlight-by': _get(userConfig, '_layouts.org-chart-highlight-by', []),\n filters: _get(userConfig, '_layouts.filters', []),\n },\n } as Types.FeatureValues;\n\n const status = combineStatuses(clientStatus, updateLayoutStatus);\n const rootNodes = useData(getRootNodes);\n const userStatus = useStatus(entityTypesFetch);\n const fields = _get(userConfig, '_fields') as FormValues.Fields;\n\n useEffect(() => {\n document.title = 'Feature Management';\n dispatch(getRootNodes());\n }, []);\n\n useFormSnackbar({ status });\n\n const classes = useStyles();\n const history = useHistory();\n const tabPath = history.location.pathname.replace(/(\\/admin\\/feature-management\\/?)/g, '');\n const tab = tabPath === '' ? 'directory' : tabPath;\n\n const handleTabChange = (e: any, value: string) => {\n let pathname = '/admin/feature-management';\n pathname = `${pathname}/${value}`;\n history.push({ pathname });\n };\n\n const handleSubmit = (values: Types.FeatureValues) => {\n const _timezoneAndWorkHours = _get(values.client, 'settings.timezoneAndWorkHours');\n const timezoneAndWorkHoursSettingsToSave =\n !!_timezoneAndWorkHours && convertTimezoneAndWorkHoursValueForRequest(_timezoneAndWorkHours);\n\n const newValues =\n !!_timezoneAndWorkHours && !_isEqual(values.client, initialState.client)\n ? {\n ...values.client,\n settings: {\n ...values.client.settings,\n timezoneAndWorkHours: timezoneAndWorkHoursSettingsToSave,\n },\n }\n : !_isEqual(values.client, initialState.client)\n ? values.client\n : null;\n\n const layoutPayloadKeys = Object.keys(values.layouts).filter(\n key => !_isEqual(values.layouts[key], initialState.layouts[key]),\n );\n const layoutPayload = layoutPayloadKeys.map(key => ({\n entityField: PERSON_ENTITY_TYPE_KEY,\n layoutKey: key,\n children: values.layouts[key],\n }));\n\n newValues && dispatch(updateClient(newValues));\n dispatch(updateLayoutFetch(layoutPayload));\n };\n\n const handleValidate = (values: Types.FeatureValues) => {\n const errors = {} as Types.FeatureFormErrors;\n\n if (values.client.settings.timezoneAndWorkHours.defaultWorkHoursEnabled) {\n const workHoursByDayEntries = Object.entries(\n values.client.settings.timezoneAndWorkHours.workHoursByDay,\n );\n workHoursByDayEntries.forEach(([day, value]) => {\n const hoursEnabled = values.client.settings.timezoneAndWorkHours.hoursEnabled;\n const locationEnabled = values.client.settings.timezoneAndWorkHours.locationEnabled;\n const startTime = _get(value, 'startTime');\n const endTime = _get(value, 'endTime');\n const location = _get(value, 'location');\n\n if (Boolean(value)) {\n if (\n hoursEnabled &&\n Boolean(startTime) &&\n Boolean(endTime) &&\n !moment(startTime).isBefore(endTime)\n ) {\n // startTime may not be before end time\n errors.timezoneAndWorkHours = {\n ...errors.timezoneAndWorkHours,\n [day]: 'Start time must be before end time.',\n };\n } else if (\n (Boolean(hoursEnabled) && Boolean(startTime) && !Boolean(endTime)) ||\n (Boolean(hoursEnabled) && Boolean(endTime) && !Boolean(startTime))\n ) {\n // there must be both a start time or end time, or they must both be empty (if location is enabled)\n errors.timezoneAndWorkHours = {\n ...errors.timezoneAndWorkHours,\n [day]: 'Start time and end time must be defined, or must both be empty.',\n };\n } else if (\n (!Boolean(locationEnabled) && Boolean(hoursEnabled) && !Boolean(startTime)) ||\n (!Boolean(locationEnabled) && Boolean(hoursEnabled) && !Boolean(endTime))\n ) {\n // there must be a start and end time if location is disabled\n errors.timezoneAndWorkHours = {\n ...errors.timezoneAndWorkHours,\n [day]: 'Start time and end time must be defined.',\n };\n } else if (\n locationEnabled &&\n !Boolean(location) &&\n hoursEnabled &&\n !Boolean(startTime) &&\n !Boolean(endTime)\n ) {\n // there must be a location OR start time and end time if location is enabled\n errors.timezoneAndWorkHours = {\n ...errors.timezoneAndWorkHours,\n [day]: 'Start time and end time OR a location must be defined.',\n };\n } else if (!hoursEnabled && !Boolean(location)) {\n // there must be a location if work hours are not enabled\n errors.timezoneAndWorkHours = {\n ...errors.timezoneAndWorkHours,\n [day]: 'You must add a location for each working day.',\n };\n }\n }\n });\n }\n\n const limit = _get(values, 'settings.export.limit', 1000);\n if (isNaN(limit)) {\n errors.export = 'Limit must be a number';\n }\n if (limit < 1) {\n errors.export = 'Limit must be greater than 1';\n }\n if (limit > 1000) {\n errors.export = 'Limit cannot be greater than 1,000';\n }\n\n return errors;\n };\n\n return (\n \n \n \n \n \n {props => {\n const { values, setFieldValue, dirty, resetForm } = props;\n const errors = props.errors as Types.FeatureFormErrors;\n\n return (\n
\n handleTabChange(e, value)} value={tab || 'directory'}>\n \n \n \n \n \n
\n {tab === 'directory' && (\n \n )}\n {tab === 'profile' && (\n \n )}\n {tab === 'org-chart' && (\n \n )}\n {tab === 'other' && (\n \n )}\n
\n }\n >\n \n {\n props.handleSubmit();\n resetForm({ values });\n }}\n disabled={!dirty || !_isEmpty(errors)}\n />\n \n \n \n \n );\n }}\n
\n
\n
\n );\n}\nconst useStyles = makeStyles(theme => {\n return {\n root: {},\n layoutRoot: {\n display: 'flex',\n flex: '1 1 auto',\n },\n };\n});\n\nexport default Features;\n","import { Layout } from 'components/GenericLayoutBuilder';\n\nexport const defaultSupportFormValue = {\n enabled: false,\n};\n","import config from 'config';\nimport urlParse from 'url-parse';\nimport cookie from 'js-cookie';\n\nexport default function fetchWithAuth(url, options = {}) {\n const { hostname } = urlParse(config.API_ENV || window.location.href);\n const subdomain = hostname.split('.')[0];\n const jwt = cookie.get(`auth_token_${subdomain}`) || cookie.get('auth_token');\n\n return fetch(`${config.API_ENV}${url}`, {\n ...options,\n headers: {\n ...options.headers,\n Authorization: `Bearer ${jwt}`,\n },\n });\n}\n","// https://stackoverflow.com/a/12300351/5776910\nexport default function dataUriToBlob(dataUri) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n const byteString = atob(dataUri.split(',')[1]);\n\n // separate out the mime component\n const mimeString = dataUri\n .split(',')[0]\n .split(':')[1]\n .split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n const ab = new ArrayBuffer(byteString.length);\n\n // create a view into the buffer\n const ia = new Uint8Array(ab);\n\n // set the bytes of the buffer to the correct values\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n // write the ArrayBuffer to a blob, and you're done\n return new Blob([ab], { type: mimeString });\n}\n","import queryString from 'query-string';\nimport fetchWithAuth from 'store/_helpers/fetchWithAuth';\nimport dataUriToBlob from './dataUriToBlob';\n\nexport default async function signUpload(themeId, endpoint, imageDataUri) {\n const { size, type } = dataUriToBlob(imageDataUri);\n const response = await fetchWithAuth(\n `/api/themes/${themeId}/${endpoint}?${queryString.stringify({ size, contentType: type })}`,\n );\n return response.json();\n}\n","import dataUriToBlob from './dataUriToBlob';\n\nexport default async function uploadToStorage(signature, dataUri) {\n const file = dataUriToBlob(dataUri);\n const { url, refUrl, fields } = signature;\n\n await fetch(url, {\n method: 'PUT',\n mode: 'cors',\n headers: {\n ...fields,\n Accept: `${fields['Content-Type']}`,\n },\n body: file,\n });\n\n return refUrl;\n}\n","import signUpload from './signUpload';\nimport uploadToStorage from './uploadToStorage';\n\n/**\n * the following function will either return the URL if it's already uploaded or null\n * otherwise it will sign it and then upload it to Azure Storage then return the Azure Storage URL\n */\nexport default async function fixImageUri(themeId, endpoint, imageUri) {\n // if falsy default to null\n if (!imageUri) return null;\n\n // already an S3 URL so just return it\n if (!imageUri.startsWith('data')) return imageUri;\n\n const signature = await signUpload(themeId, endpoint, imageUri);\n\n const azStorageUri = await uploadToStorage(signature, imageUri);\n return azStorageUri;\n}\n","import { defineFetch } from 'resift';\n\nconst makeVerifyNewSubdomain = defineFetch({\n displayName: 'Verify New Subdomain',\n make: () => ({\n request: (input: string) => ({ http }) =>\n http({\n method: 'POST',\n route: '/client/verify-new-subdomain',\n data: { subdomain: input },\n }),\n }),\n});\n\nconst verifyNewSubdomain = makeVerifyNewSubdomain();\n\nexport default verifyNewSubdomain;\n","import { getFetch } from '@sift/resift/redux/FetchUtils';\nimport { THEMES_GET_ALL_FETCH } from 'store/themes';\n\nconst identifier = 'THEMES_GET_THEMES_IDENTIFIER';\n\nexport function fetchThemes() {\n return {\n type: THEMES_GET_ALL_FETCH,\n identifier,\n payload: {},\n };\n}\n\nexport function getThemesFetch(state) {\n return getFetch(identifier, state);\n}\n","import { THEMES_SET_LOADING_STATE } from 'store/themes';\n\nexport function setStatus(status) {\n return { type: THEMES_SET_LOADING_STATE, payload: { status } };\n}\n","import _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport fetchWithAuth from 'store/_helpers/fetchWithAuth';\nimport fixImageUri from './fixImageUri';\nimport { getLuminance } from 'polished';\n\nexport default async function createTheme({ settings, logoUrl, pictureUrl, backgroundUrl }) {\n if (!logoUrl && !pictureUrl && !backgroundUrl && _isEmpty(settings)) return undefined;\n const primaryTheme = _get(settings, 'palette.primary.main');\n const secondaryTheme = _get(settings, 'palette.secondary.main');\n let updatedSettings = { ...settings };\n\n updatedSettings = primaryTheme\n ? {\n ...settings,\n palette: {\n ...settings.palette,\n primary: {\n ...settings.palette.primary,\n contrastText: getContrastColor(primaryTheme),\n },\n },\n }\n : updatedSettings;\n\n updatedSettings = secondaryTheme\n ? {\n ...settings,\n palette: {\n ...settings.palette,\n secondary: {\n ...settings.palette.secondary,\n contrastText: getContrastColor(secondaryTheme),\n },\n },\n }\n : updatedSettings;\n\n // 1) create initial theme without images\n const initialThemeResponse = await fetchWithAuth(`/api/themes`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n settings: {\n ...updatedSettings,\n _notEmpty: true, // stop yelling at me, jonathon\n },\n logoUrl: null,\n pictureUrl: null,\n backgroundUrl: null,\n }),\n });\n const initialTheme = await initialThemeResponse.json();\n const themeId = initialTheme.id;\n\n // 2) sign and upload image uploads or return the S3 URL if it doesn't need to be converted\n const [logoUrlFixed, backgroundUrlFixed, pictureUrlFixed] = await Promise.all([\n fixImageUri(themeId, 'sign-logo-upload', logoUrl),\n fixImageUri(themeId, 'sign-background-upload', backgroundUrl),\n fixImageUri(themeId, 'sign-picture-upload', pictureUrl),\n ]);\n\n // 3) update the theme to include S3 image links\n const updateResponse = await fetchWithAuth(`/api/themes/${themeId}`, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n settings: {\n ...updatedSettings,\n _notEmpty: true, // stop yelling at me, jonathon\n },\n logoUrl: logoUrlFixed || null,\n backgroundUrl: backgroundUrlFixed || null,\n pictureUrl: pictureUrlFixed || null,\n }),\n });\n\n return updateResponse.json();\n}\n\n// These values must stay consistent due to how they are used in email templates. Email templates will do an exact match check on these values.\n// Do not use '#fff' or a different value without changing the value on the email templates.\nconst WHITE = '#ffffff';\nconst BLACK = '#212121';\n\nfunction getContrastColor(themeColor) {\n return getLuminance(themeColor) > 0.3 ? BLACK : WHITE;\n}\n","import * as Sentry from '@sentry/browser';\nimport { Status, States } from '@sift/resift/models/Status';\nimport { setStatus } from 'store/themes/actions/setStatus';\nimport { fetchThemes } from 'store/themes/actions/getThemes';\n\nimport fetchWithAuth from 'store/_helpers/fetchWithAuth';\nimport createTheme from 'store/themes/actions/_helpers/createTheme';\n\nasync function createAndUploadTheme(theme) {\n // have to convert these to S3 URLs by uploading theme to S3\n const { logoUrl, pictureUrl, backgroundUrl, settings = {} } = theme;\n\n const newTheme = await createTheme({ settings, logoUrl, pictureUrl, backgroundUrl });\n if (!newTheme) return;\n const themeId = newTheme.id;\n\n // active theme\n await fetchWithAuth(`/api/themes/${themeId}/activate`, {\n method: 'POST',\n });\n}\n\nasync function deactivateTheme(themeId) {\n await fetchWithAuth(`/api/themes/${themeId}/deactivate`, { method: 'POST' });\n}\n\nexport function saveTheme(_theme) {\n // remove props from a possible existing theme\n const { mode, createdAt, clientId, updatedAt, id, isActive, ...theme } = _theme;\n\n // return a thunk and depending on the mode, create or destroy a theme\n return async dispatch => {\n try {\n dispatch(setStatus(new Status(States.LOADING)));\n\n if (mode === 'custom') {\n await createAndUploadTheme(theme);\n } else {\n await deactivateTheme(id);\n }\n\n dispatch(setStatus(new Status(States.NORMAL)));\n dispatch(fetchThemes());\n } catch (e) {\n Sentry.captureException(e);\n dispatch(setStatus(new Status(States.ERROR)));\n // eslint-disable-next-line\n console.error(e);\n }\n };\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport shortId from 'shortid';\n\n// Styles\nimport classNames from 'classnames';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { transparentize } from 'polished';\n\nfunction StyleModeSelector({ className, classes, value, onChange }) {\n const [defaultId] = useState(`mode-${shortId()}`);\n const [customId] = useState(`mode-${shortId()}`);\n\n return (\n
\n onChange('default')}\n onKeyPress={() => onChange('default')}\n role=\"presentation\"\n >\n onChange('default')}\n />\n \n
\n onChange('custom')}\n onKeyPress={() => onChange('custom')}\n role=\"presentation\"\n >\n onChange('custom')}\n />\n \n \n \n );\n}\n\nconst styles = theme => {\n return {\n root: {\n display: 'flex',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(2),\n },\n },\n item: {\n display: 'flex',\n flexDirection: 'column',\n '& > *': {\n flex: '0 0 auto',\n },\n alignItems: 'center',\n },\n radio: {\n marginBottom: theme.spacing(1),\n border: `1px solid ${theme.palette.divider}`,\n width: 24,\n height: 24,\n overflow: 'visible',\n position: 'relative',\n '&:checked': {\n '&::before': {\n backgroundColor: theme.palette.primary.main,\n border: `1px solid ${theme.palette.primary.main}`,\n },\n },\n '&:hover': {\n '&::after': {\n backgroundColor: transparentize(0.8, '#000'),\n },\n },\n '&:focus': {\n '&::after': {\n backgroundColor: transparentize(0.9, '#000'),\n },\n },\n '&::before': {\n borderRadius: 99999,\n backgroundColor: theme.palette.common.white,\n opacity: 1,\n content: \"' '\",\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n border: `1px solid ${theme.palette.divider}`,\n },\n '&::after': {\n borderRadius: 99999,\n opacity: 1,\n content: \"' '\",\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n },\n },\n text: {\n ...theme.typography.body1,\n fontWeight: theme.typography.fontWeight.semiBold,\n },\n };\n};\n\nStyleModeSelector.propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(StyleModeSelector);\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport TextField from '@material-ui/core/TextField';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Popover from '@material-ui/core/Popover';\nimport { SketchPicker } from 'react-color';\n\n// Styles\nimport classNames from 'classnames';\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n label: {\n flex: '0 1 auto',\n width: 360,\n marginRight: 'auto',\n display: 'flex',\n flexDirection: 'column',\n },\n title: {\n ...theme.typography.body2,\n fontWeight: theme.typography.fontWeight.bold,\n marginBottom: theme.spacing(1),\n },\n subtitle: {\n ...theme.typography.caption,\n },\n formControl: {\n flex: '0 0 auto',\n minWidth: 'auto',\n marginRight: theme.spacing(3),\n },\n textFieldRoot: {\n borderRadius: 4,\n border: 'solid 1px rgba(155,155,155, 0.5)',\n padding: theme.spacing(0.75, 1.25),\n width: 123,\n position: 'relative',\n fontWeight: '6',\n },\n input: {\n backgroundColor: theme.palette.common.white,\n padding: 0,\n fontSize: 16,\n width: 'calc(100% - 24px)',\n },\n inputAdornment: {\n width: 28,\n height: 30,\n },\n boxHitBox: {\n width: 28,\n height: 28,\n padding: 4,\n position: 'absolute',\n top: 5,\n left: 6,\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n },\n box: {\n borderRadius: 4,\n border: 'solid 1px rgba(155,155,155, 0.5)',\n width: 24,\n height: 24,\n flex: '0 0 auto',\n },\n description: {\n ...theme.typography.caption,\n flex: '1 1 auto',\n marginRight: theme.spacing(2),\n },\n };\n};\n\nfunction ColorRow({ className, classes, title, value, onChange, description }) {\n const [open, setOpen] = useState(false);\n const boxHitBoxRef = useRef(null);\n\n const handlePickerChange = color => onChange(color.hex);\n const handleTextChange = e => onChange(e.currentTarget.value);\n const handleClick = () => setOpen(true);\n const handleClose = () => setOpen(false);\n\n return (\n
\n
\n
{title}
\n
{description}
\n
\n \n
\n
\n
\n \n ),\n }}\n />\n \n \n \n
\n );\n}\n\nColorRow.propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n title: PropTypes.node.isRequired,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n description: PropTypes.node.isRequired,\n};\n\nexport default withStyles(styles)(ColorRow);\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Switch from '@material-ui/core/Switch';\n\n// Styles\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n title: React.ReactNode | string;\n description: React.ReactNode | string;\n value: boolean;\n onChange: (e: any) => void;\n}\n\nfunction ThemingSettings({ title, value, onChange, description }: Props) {\n const classes = useStyles();\n\n return (\n
\n
\n
{title}
\n
{description}
\n
\n \n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n label: {\n flex: '0 1 auto',\n width: 360,\n marginRight: 'auto',\n display: 'flex',\n flexDirection: 'column',\n },\n title: {\n ...theme.typography.body2,\n fontWeight: theme.typography.fontWeight.bold,\n marginBottom: theme.spacing(1),\n },\n subtitle: {\n ...theme.typography.caption,\n },\n\n description: {\n ...theme.typography.caption,\n flex: '1 1 auto',\n marginRight: theme.spacing(2),\n },\n };\n});\nexport default ThemingSettings;\n","export default function getDataUrlFromFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n}\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport delay from 'delay';\n\nimport getDataUrlFromFile from 'pages/General/tabs/Theming/_helpers/getDataUrlFromFile';\n\n// Components\nimport FileDrop from 'components/FileDrop';\nimport Button from '@material-ui/core/Button';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n removeButton: {\n color: 'red',\n },\n fileDrop: {},\n description: {\n ...theme.typography.caption,\n paddingTop: 0,\n },\n action: {},\n };\n};\n\nfunction ImageField({\n classes,\n imageSrc,\n error,\n onChangeImageUrl,\n onRemove,\n description,\n example,\n maxSize,\n}) {\n const showDropper = !imageSrc || !!error;\n const [internalError, setInternalError] = useState('');\n\n async function handleNewFile(file) {\n if (!file) {\n setInternalError(\n `Invalid file. Only images less than ${Math.round(maxSize / 1024 ** 2)} MiB are allowed.`,\n );\n await delay(4000);\n setInternalError('');\n return;\n }\n const dataUrl = await getDataUrlFromFile(file);\n onChangeImageUrl(dataUrl);\n }\n\n return (\n \n \n {showDropper ? (\n \n ) : (\n example\n )}\n \n {description}\n \n {!!imageSrc && (\n \n )}\n \n \n );\n}\n\nImageField.propTypes = {\n file: PropTypes.object,\n imageSrc: PropTypes.string,\n error: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onChangeImageUrl: PropTypes.func.isRequired,\n onRemove: PropTypes.func.isRequired,\n description: PropTypes.node,\n example: PropTypes.node,\n maxSize: PropTypes.number,\n};\n\nexport default withStyles(styles)(ImageField);\n","import { Status } from '@sift/resift/models/Status';\nimport memoizeLast from '@sift/resift/memoizeLast';\n\nfunction combineStatuses(...statuses) {\n return statuses.reduce((combined, status) => combined.or(status), new Status());\n}\n\nexport default memoizeLast(combineStatuses);\n","import React, { Fragment, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport compose from 'recompose/compose';\nimport withProps from 'recompose/withProps';\nimport { withSnackbar } from 'notistack';\nimport getHostName from 'helpers/getHostName';\n\n// Components\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport TextField from '@material-ui/core/TextField';\nimport FileCopy from '@material-ui/icons/FileCopy';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CopyToClipboard from 'react-copy-to-clipboard';\n\nimport Loader from '@sift/skipper/components/Loader';\nimport ErrorView from '@sift/skipper/components/views/Error';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport withThemeOverrides from '@sift/skipper/styles/withThemeOverrides';\nimport deriveLightDark from '@sift/skipper/styles/deriveLightDark';\n\nconst RedButton = compose(\n withThemeOverrides(theme => ({\n palette: { primary: deriveLightDark(theme.palette.error.main) },\n })),\n withProps({\n color: 'primary',\n }),\n)(Button);\n\nconst styles = theme => {\n return {\n textField: {\n width: '100%',\n },\n directLink: {\n textAlign: 'center',\n marginTop: theme.spacing(3),\n },\n };\n};\n\nfunction PreviewDialog({\n classes,\n themeId,\n status,\n open,\n onClose,\n onDestroyAllThemes,\n enqueueSnackbar,\n}) {\n const [titleClicks, setTitleClicks] = useState(0);\n const [easterEggDialogOpen, setEasterEggDialogOpen] = useState(false);\n const hostName = getHostName();\n\n useEffect(() => {\n if (titleClicks < 5) return;\n setEasterEggDialogOpen(true);\n }, [titleClicks]);\n\n const handleTitleClick = () => setTitleClicks(titleClicks + 1);\n const handleEasterEggClose = () => setEasterEggDialogOpen(false);\n const handleRedClick = async () => {\n await onDestroyAllThemes();\n setEasterEggDialogOpen(false);\n };\n\n const subdomain = window.location.hostname.split('.')[0];\n const previewUrl = `https://${subdomain}.${hostName}.com/preview-theme/${themeId}`;\n\n const handleCopy = () => {\n enqueueSnackbar('Copied link to clipboard!');\n };\n\n return (\n \n \n }\n hasErrorView={}\n isEmptyView={null}\n >\n Theme ready to view!\n \n Click below to copy your theme preview hyperlink:\n \n \n \n \n ),\n }}\n />\n \n \n {/* internal links are fine */}\n {/* eslint-disable-next-line */}\n \n Or click here to open it directly\n \n \n \n \n \n \n Are you sure you want to delete all themes?\n \n \n Yes\n \n \n \n );\n}\n\nPreviewDialog.propTypes = {\n classes: PropTypes.object.isRequired,\n themeId: PropTypes.string,\n status: PropTypes.object.isRequired,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n onDestroyAllThemes: PropTypes.func.isRequired,\n enqueueSnackbar: PropTypes.func.isRequired,\n};\n\nexport default compose(withStyles(styles), withSnackbar)(PreviewDialog);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Status, States } from '@sift/resift/models/Status';\nimport { useSelector, useDispatch } from 'react-redux';\nimport _get from 'lodash/get';\n\nimport { getThemesFetch } from 'store/themes/actions/getThemes';\nimport { createPreviewTheme } from 'store/themes/actions/createPreviewTheme';\nimport { destroyAllThemes } from 'store/themes/actions/destroyAllThemes';\n\nimport combineStatuses from 'pages/General/tabs/Theming/_helpers/combineStatuses';\nimport PreviewDialog from './PreviewDialog';\n\nconst unknownStatus = new Status(States.UNKNOWN);\n\nfunction PreviewDialogContainer({ backgroundUrl, logoUrl, open, pictureUrl, settings, ...rest }) {\n const dispatch = useDispatch();\n const themes = useSelector(state => _get(state, 'themes'));\n const themesFetch = getThemesFetch(themes);\n const previewThemeId = _get(themes, 'previewThemeId');\n const status = combineStatuses(themes.status || unknownStatus, themesFetch.status);\n\n useEffect(() => {\n if (!open) return;\n\n onPreviewFetchRequested();\n }, [open]);\n\n const onPreviewFetchRequested = () =>\n dispatch(\n createPreviewTheme({\n settings,\n // `|| null` normalizes the falsy types\n logoUrl: logoUrl || null,\n backgroundUrl: backgroundUrl || null,\n pictureUrl: pictureUrl || null,\n }),\n );\n\n const onDestroyAllThemes = () => dispatch(destroyAllThemes());\n\n return (\n \n );\n}\n\nPreviewDialogContainer.propTypes = {\n backgroundUrl: PropTypes.string,\n logoUrl: PropTypes.string,\n open: PropTypes.bool.isRequired,\n pictureUrl: PropTypes.string,\n settings: PropTypes.object,\n themeId: PropTypes.string,\n};\n\nexport default PreviewDialogContainer;\n","import { Status, States } from '@sift/resift/models/Status';\nimport { setStatus } from 'store/themes/actions/setStatus';\nimport createTheme from 'store/themes/actions/_helpers/createTheme';\nimport { fetchThemes } from 'store/themes/actions/getThemes';\nimport { setPreviewThemeId } from 'store/themes/actions/setPreviewThemeId';\n\nexport function createPreviewTheme({ settings, logoUrl, backgroundUrl, pictureUrl }) {\n return async dispatch => {\n try {\n dispatch(setStatus(new Status(States.LOADING)));\n\n // create the preview theme\n const previewTheme = await createTheme({ settings, logoUrl, backgroundUrl, pictureUrl });\n dispatch(setPreviewThemeId(previewTheme.id));\n // then refetch the themes to include the new preview theme\n await dispatch(fetchThemes());\n\n await dispatch(setStatus(new Status(States.NORMAL)));\n } catch (e) {\n dispatch(setStatus(new Status(States.ERROR)));\n }\n };\n}\n","import { THEMES_SET_PREVIEW_ID } from 'store/themes';\n\nexport function setPreviewThemeId(previewThemeId) {\n return {\n type: THEMES_SET_PREVIEW_ID,\n payload: {\n previewThemeId,\n },\n };\n}\n","import { Status, States } from '@sift/resift/models/Status';\nimport { setStatus } from 'store/themes/actions/setStatus';\nimport fetchWithAuth from 'store/_helpers/fetchWithAuth';\n\nexport function destroyAllThemes() {\n return async dispatch => {\n try {\n dispatch(setStatus(new Status(States.LOADING)));\n\n const allThemesResponse = await fetchWithAuth('/api/themes');\n const allThemes = await allThemesResponse.json();\n\n for (const themeToDelete of allThemes) {\n if (!themeToDelete && !themeToDelete.id) continue;\n await fetchWithAuth(`/api/themes/${themeToDelete.id}`, {\n method: 'DELETE',\n });\n }\n\n dispatch(setStatus(new Status(States.NORMAL)));\n } catch (e) {\n dispatch(setStatus(new Status(States.ERROR)));\n }\n };\n}\n","import React, { Fragment, useState } from 'react';\nimport * as Types from 'pages/General/typings';\nimport _get from 'lodash/get';\n\n// Components\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from '@material-ui/core/Button';\nimport { ThemeProvider } from '@material-ui/styles';\nimport StyleModeSelector from './components/StyleModeSelector';\nimport ColorRow from './components/ColorRow';\nimport ThemingSettings from './components/ThemingSettings';\nimport ImageField from './components/ImageField';\nimport PreviewDialog from './components/PreviewDialog';\n\n// Style\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport createTheme from '@sift/skipper/styles/createTheme';\n\ninterface Props {\n onChange: (field: string, value: any) => void;\n values: Types.GeneralValues;\n}\n\nfunction Theming({ onChange, values }: Props) {\n const classes = useStyles();\n const [previewOpen, setPreviewOpen] = useState(false);\n\n const handlePreviewClick = () => setPreviewOpen(true);\n const handlePreviewClose = () => setPreviewOpen(false);\n\n return (\n \n
\n \n \n Choose the default style of Sift or customize its look and feel by adding your logo,\n colors, etc.\n \n }\n />\n onChange('theme.mode', value)}\n value={values.theme.mode}\n />\n {values.theme.mode === 'custom' && (\n \n \n \n \n {\n onChange('theme.settings.enableEmailTheming', e.target.checked);\n }}\n description={\n \n Turn this setting on if you would like Sift email communication to be themed\n with your logo and colors. This will only apply to invite and emails sent\n after a user has logged in.\n \n }\n />\n \n \n {/* ------------------------- COLOR PICKERS ---------------------------- */}\n \n \n {\n onChange('theme.settings.palette.primary.main', value);\n }}\n description={\n \n Used in the main body of homepage and the top area of other pages. Input the\n 6-digit hex color values. A dark color is highly recommended.\n \n }\n />\n {\n onChange('theme.settings.palette.secondary.main', value);\n }}\n description={\n \n Used for functional text and icons, like buttons. Input the 6-digit hex color\n value. A dark color is highly recommended.\n \n }\n />\n {\n onChange('theme.settings.palette.matched.main', value);\n }}\n description={\n \n Used to highlight results in Sift. Input the 6-digit hex color value. Pick a\n color that will work on top of your primary color and white.\n \n }\n />\n \n \n\n {/* --------------------------- LOGO PICKER ---------------------------- */}\n \n Upload a logo to replace the Sift logo. Displays on the top left corner across\n pages.\n \n }\n />\n {\n onChange('theme.logoUrl', value);\n }}\n onRemove={() => {\n onChange('theme.logoUrl', undefined);\n }}\n imageSrc={values.theme.logoUrl}\n maxSize={2 * 1024 ** 2}\n description={\n \n Recommended size: ~256px. We recommend using a logo with a transparent\n background (.png). The image should look good against your primary\n color.\n \n }\n example={\n \n \n \n \"logo\"\n \n \n \n }\n />\n \n\n {/* ----------------------- PROFILE HEADER PICKER ---------------------- */}\n \n Upload an image to replace the default background photo on the top of a person's\n profile.\n \n }\n />\n {\n onChange('theme.backgroundUrl', value);\n }}\n onRemove={() => {\n onChange('theme.backgroundUrl', undefined);\n }}\n imageSrc={values.theme.backgroundUrl}\n maxSize={3 * 1024 ** 2}\n description={\n \n Recommended size: 2100x900 px or an image with a 21:9 aspect ratio.\n
\n The top and bottom of your image may be cut off on certain screen sizes, we\n recommended placing important content vertically centered.\n
\n }\n example={\n \n }\n />\n \n\n {/* ---------------------- PROFILE PICTURE PICKER ---------------------- */}\n \n Upload an image to replace the default profile picture for new users.\n \n }\n />\n {\n onChange('theme.pictureUrl', value);\n }}\n onRemove={() => {\n onChange('theme.pictureUrl', undefined);\n }}\n imageSrc={values.theme.pictureUrl}\n maxSize={2 * 1024 ** 2}\n description={Recommended size: 1:1 square image.}\n example={\n \n }\n />\n \n )}\n
\n {values.theme.mode === 'custom' && (\n \n \n \n \n \n \n )}\n
\n \n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n const height = 64; // the height of the connect app bar\n\n return {\n root: {\n flex: '1 1 auto',\n display: 'flex',\n flexDirection: 'column',\n },\n layoutRoot: {\n flex: '1 1 auto',\n overflowY: 'auto',\n },\n pageContentRoot: {\n flex: '1 1 auto',\n overflowY: 'auto',\n },\n styleModeSelector: {\n margin: theme.spacing(0, 2),\n marginBottom: theme.spacing(1),\n },\n title: {\n fontWeight: theme.typography.fontWeight.semiBold,\n },\n subheader: {\n ...theme.typography.body2,\n color: theme.palette.text.primary,\n },\n colorRows: {\n '& > *:not(:last-child)': {\n marginBottom: theme.spacing(4),\n },\n },\n divider: {\n margin: theme.spacing(0, 2),\n },\n themingContent: {\n display: 'flex',\n width: '100%',\n maxWidth: 950,\n alignItems: 'flex-start',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(2),\n },\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n custom: {\n maxWidth: 600,\n [theme.breakpoints.down('md')]: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n },\n preview: {\n width: 240,\n maxWidth: 600,\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n appBar: {\n height,\n borderRadius: theme.shape.borderRadius,\n },\n toolbar: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n logo: {\n height,\n flex: '1 1 auto',\n padding: theme.spacing(1),\n display: 'block',\n },\n background: {\n height: 200,\n margin: theme.spacing(0, -2),\n boxShadow: theme.shadows[2],\n },\n avatar: {\n width: 128,\n height: 128,\n border: `1px solid ${theme.palette.divider}`,\n },\n };\n});\n\nexport default Theming;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\n\ninterface Props {\n value: string;\n error?: string;\n onChange: (field: string, value: any) => void;\n}\n\nfunction CompanyName({ value, error, onChange }: Props) {\n const classes = useStyles();\n\n const handleChangeDisplayName = (e: any) => {\n const value = e.target.value;\n onChange('client.displayName', value);\n };\n\n return (\n <>\n Company Name\n \n Your Company Name will be displayed to users throughout the platform.\n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n input: {\n minWidth: 250,\n marginBottom: theme.spacing(3),\n },\n}));\n\nexport default CompanyName;\n","import React from 'react';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Switch from '@material-ui/core/Switch';\n\ninterface Props {\n value: boolean;\n onChange: (field: string, value: any) => void;\n}\n\nfunction AllowUninvited({ value, onChange }: Props) {\n const handleChangeAllowNewProfiles = () => {\n onChange('client.settings.login.blockCreatedAccounts.enabled', value);\n };\n\n return (\n \n \n }\n subheader=\" If enabled, new users will automatically be allowed to sign into Sift on our login site\n when their profiles are created in Sift. This is most helpful when utilizing single sign\n on (SSO), so that users will not need to be invited in order to access the system. If\n you’d like to require users to be invited before they can sign in, turn this setting\n off.\"\n />\n \n );\n}\n\nexport default AllowUninvited;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport getHostName from 'helpers/getHostName';\nimport verifyNewSubdomain from 'fetches/verifyNewSubdomain';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\n\ninterface Props {\n value: string;\n error?: string;\n onChange: (field: string, value: any) => void;\n}\n\nfunction Subdomain({ value, error, onChange }: Props) {\n const hostName = getHostName();\n const dispatch = useDispatch();\n const classes = useStyles();\n\n const handleChange = (e: any) => {\n onChange('client.subdomain', e.target.value);\n\n dispatch(verifyNewSubdomain(e.target.value));\n };\n\n return (\n
\n URL Subdomain\n \n The URL that will be visible to users on web when visiting Sift and can be used to link to\n Sift from external websites. Note: Your existing subdomain will not continue to work when\n this is changed.\n \n
\n handleChange(e)}\n inputProps={{ 'aria-label': 'url subdomain', maxLength: 50 }}\n error={!!error}\n helperText={error}\n />\n {`.${hostName}.com`}\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n marginBottom: theme.spacing(3),\n },\n input: {\n minWidth: 250,\n },\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n domain: {\n fontSize: theme.typography.body2.fontSize,\n marginLeft: theme.spacing(0.625),\n },\n}));\n\nexport default Subdomain;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport fuzzy from 'fuzzy';\nimport moment from 'moment-timezone';\n\n// Components\nimport Autosuggest from '@sift/skipper/components/Autosuggest';\nimport withPopper from '@sift/skipper/components/Autosuggest/withPopper';\nimport Typography from '@material-ui/core/Typography';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst AutoPopper = withPopper(Autosuggest);\n\nconst styles = theme => {\n return {\n root: {\n marginTop: theme.spacing(2),\n },\n input: {\n minWidth: 300,\n },\n header: {},\n subheader: {},\n };\n};\n\nclass CompanyTimezone extends PureComponent {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n suggestions: moment.tz.names().slice(0, 8),\n inputValue: props.value,\n };\n }\n\n timeZoneNames = moment.tz.names();\n timeZoneByName = moment.tz.names().reduce((timeZoneDictionary, timeZone) => {\n return {\n ...timeZoneDictionary,\n [timeZone]: true,\n };\n }, {});\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.value !== this.props.value) {\n this.setState({ inputValue: this.props.value });\n }\n }\n\n handleSelect = (e, { suggestionValue }) => {\n const { onChange } = this.props;\n onChange('client.settings.info.timeZone', suggestionValue);\n this.setState({\n suggestions: moment.tz.names().slice(0, 8),\n inputValue: suggestionValue,\n });\n };\n\n handleChange = e => {\n const value = e.target.value;\n this.setState({\n inputValue: value,\n });\n };\n\n handleBlur = () => {\n this.setState({\n inputValue: this.props.value,\n });\n };\n\n recalculateSuggestions = ({ value }) => {\n this.setState({\n suggestions: fuzzy\n .filter(value, moment.tz.names())\n .slice(0, 8)\n .map(match => match.string),\n });\n };\n\n runValidation(value) {\n if (!this.timeZoneByName[value]) {\n return 'Select a timezone from the list.';\n }\n\n return undefined;\n }\n\n render() {\n const { classes } = this.props;\n const { inputValue } = this.state;\n\n return (\n
\n Time Zone\n \n Select the default time zone to be used by Sift for external communications to users. This\n should usually be set to the time zone that most of your users are in.\n \n \n
\n );\n }\n}\n\nexport default withStyles(styles)(CompanyTimezone);\n","import React, { useMemo } from 'react';\nimport _keyBy from 'lodash/keyBy';\nimport { FormValue } from 'types/FormValue';\nimport * as Sift from '@sift/types';\nimport * as Types from 'pages/General/typings';\nimport { highlightByFilter } from 'pages/Features/tabs/OrgChart/OrgChartHighlightsLayout';\n\n// Components\nimport LayoutSettingCard from 'molecules/LayoutSettingCard';\n\ninterface Props {\n onChange: (field: any, value: FormValue) => void;\n userStatus: number;\n fields: Sift.Field[];\n values: Types.GeneralValues;\n}\n\nfunction OrgLevelsLayout({ userStatus, fields, onChange, values }: Props) {\n const SUBTITLE_COPY =\n 'Define which attributes represent your organization levels and their order based on descending size (e.g. Company → Department → Team). This will impact your profile pages and org chart card customization.';\n const keyedFields = useMemo(() => _keyBy(fields, 'objectKey'), [fields]);\n\n return (\n highlightByFilter(field, fields)}\n layoutKey=\"org-levels\"\n subtitle={SUBTITLE_COPY}\n userStatus={userStatus}\n fields={keyedFields}\n onChange={onChange}\n values={values}\n typeKey=\"user\"\n />\n );\n}\n\nexport default OrgLevelsLayout;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\n// Components\nimport Typography from '@material-ui/core/Typography';\nimport ImageField from 'pages/General/tabs/Theming/components/ImageField';\n\ninterface Props {\n setFieldValue: (field: string, value: any) => void;\n logoUrl?: string | null;\n}\n\nfunction LogoUploader({ setFieldValue, logoUrl }: Props) {\n const classes = useStyles();\n\n return (\n
\n Logo\n \n Upload a company logo to personalize features such as your Org Chart. This logo may also be\n used in other configurations such as theming.\n \n \n We recommend that you use a png image with a transparent background, preferably without any\n padding around the logomark.\n \n setFieldValue('client.settings.info.logoUrl', value)}\n onRemove={() => setFieldValue('client.settings.info.logoUrl', undefined)}\n imageSrc={logoUrl}\n maxSize={2 * 1024 ** 2}\n example={logoUrl && \"logo\"}\n />\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n logoUploader: {\n marginTop: theme.spacing(3),\n },\n logo: {\n maxWidth: 1100,\n },\n fileDrop: {\n paddingLeft: 0,\n },\n action: {\n paddingLeft: 0,\n },\n}));\n\nexport default LogoUploader;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport pluralize from 'pluralize';\nimport * as Types from 'pages/General/typings';\n\n// Components\nimport TextField from '@material-ui/core/TextField';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\n\n// Style\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nconst minInputHeight = 65; // Used for flex layout\nconst arrowIconStyle = { minHeight: minInputHeight, fill: 'rgba(0, 0, 0, 0.55)' };\n\nconst TEAM_LEADER_DEFAULT_VALUE = 'Team Leader';\n\ninterface Props {\n defaultValue?: string;\n errorMessage: Types.GeneralFormErrors;\n teamMemberUpdateKey: string;\n teamLeaderUpdateKey?: string;\n subtitle: string;\n title: string;\n value: {\n teamMember: string;\n teamLeader?: string;\n };\n onChange: (key: string, value: any) => void;\n renderTeamLeaderField?: boolean;\n}\n// (Note - Dylan): Component is being used in General Settings and Membership tab -\n// teamLeaderUpdateKey is an optional prop since it is only used in the General Settings (and not in the Membership tab)\nfunction Terminology({\n defaultValue = 'Team Member',\n errorMessage,\n teamMemberUpdateKey,\n teamLeaderUpdateKey,\n subtitle,\n title,\n value,\n onChange,\n renderTeamLeaderField,\n}: Props) {\n const classes = useStyles();\n\n const teamMemberValue = _get(value, 'teamMember', defaultValue);\n const teamLeaderValue = _get(value, 'teamLeader', 'Team Leader');\n\n const handleMemberChange = (e: any) => {\n onChange(teamMemberUpdateKey, e.target.value);\n };\n\n const handleLeaderChange = (e: any) => {\n if (!teamLeaderUpdateKey) {\n return;\n }\n\n onChange(teamLeaderUpdateKey, e.target.value);\n };\n\n return (\n \n \n \n \n
\n \n Original Sift Keywords\n \n \n {renderTeamLeaderField && (\n \n )}\n
\n\n
\n
\n \n {renderTeamLeaderField && }\n
\n\n
\n \n Converted Keywords\n \n \n {renderTeamLeaderField && (\n \n )}\n
\n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n content: {\n display: 'flex',\n },\n column: {\n display: 'flex',\n flexDirection: 'column',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n },\n columnHeader: {\n minHeight: theme.spacing(3),\n fontSize: 14,\n fontWeight: 500,\n color: 'rgba(0, 0, 0, 0.85)',\n },\n input: {\n minHeight: minInputHeight,\n },\n centerText: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n subtitle: {\n marginBottom: theme.spacing(),\n },\n}));\n\nexport default Terminology;\n","import React from 'react';\nimport * as Types from 'pages/General/typings';\nimport classnames from 'classnames';\nimport _get from 'lodash/get';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport Switch from '@material-ui/core/Switch';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n onChange: (field: string, value?: boolean | string | null) => void;\n values: Types.GeneralValues;\n}\n\nfunction CustomNavigationTab({ onChange, values }: Props) {\n const classes = useStyles();\n\n const handleChangeCustomEnabled = (e: React.ChangeEvent) =>\n onChange('client.settings.customNavLink.enabled', e.target.checked);\n\n const handleChangeName = (e: React.ChangeEvent) =>\n onChange('client.settings.customNavLink.displayName', e.currentTarget.value);\n\n const handleChangeUrl = (e: React.ChangeEvent) =>\n onChange('client.settings.customNavLink.url', e.currentTarget.value);\n\n return (\n \n \n }\n title=\"Extra Navigation Tab\"\n subheader=\"Add another custom tab in the navigation bar to link to your website.\"\n />\n \n \n
\n \n Tab Name:\n \n \n Link:\n \n
\n
\n \n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n helpLink: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: theme.spacing(2),\n paddingTop: 0,\n },\n content: {\n display: 'flex',\n },\n column: {\n display: 'flex',\n flexDirection: 'column',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n },\n leftColumn: {\n marginTop: theme.spacing(0.75),\n },\n rightColumn: {\n marginLeft: theme.spacing(2),\n },\n label: {\n minHeight: theme.spacing(4),\n },\n textField: {\n minWidth: 240,\n },\n marginBottom: {\n marginBottom: theme.spacing(),\n },\n}));\n\nexport default CustomNavigationTab;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _split from 'lodash/split';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport TextField from '@material-ui/core/TextField';\nimport Switch from '@material-ui/core/Switch';\nimport Divider from '@material-ui/core/Divider';\n\nclass Support extends React.PureComponent {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n value: PropTypes.shape({\n emails: PropTypes.array,\n enabled: PropTypes.bool,\n }),\n errorMessage: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const { emails } = props.value;\n\n this.state = {\n emails: emails ? emails.join('\\n') : '',\n emailsValueAsArray: emails || [],\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { value } = this.props;\n\n if (this.state.emailsValueAsArray !== value.emails) {\n this.setState({\n emails: value.emails ? value.emails.join('\\n') : '',\n });\n }\n }\n\n handleTextChange = e => {\n const { onChange } = this.props;\n const emails = e.target.value;\n const emailsValueAsArray = this.convertEmailStringToArray(emails);\n\n this.setState({ emails, emailsValueAsArray });\n\n onChange('client.settings.support.emails', emailsValueAsArray);\n };\n\n handleChangeSupportEnabled = e => {\n const { onChange } = this.props;\n onChange('client.settings.support.enabled', e.target.checked);\n };\n\n convertEmailStringToArray = emailString => {\n let value = emailString;\n let supportEmails = [];\n if (value.length) {\n // This code snippet turns a string into an array.\n // Each indent represents spliting strings to a bigger array.\n // Starts splitting with `\\n`, `,` and lastly ` `.\n const supportEmailsSplit = _split(value, '\\n');\n supportEmailsSplit.forEach(email => {\n const emailCommaSplit = _split(email, ',');\n emailCommaSplit.forEach(splitCommaEmail => {\n const emailSpaceSplit = _split(splitCommaEmail, ' ');\n emailSpaceSplit.forEach(splitSpaceEmail => {\n if (splitSpaceEmail.length) {\n supportEmails.push(splitSpaceEmail);\n }\n });\n });\n });\n\n // Removes any lingering spaces, linebreaks or commas on a string\n supportEmails.map(email => {\n email.split(' ').join('');\n email.split(',').join('');\n email.split('\\n').join('');\n return email;\n });\n }\n\n return supportEmails;\n };\n\n render() {\n const { value, errorMessage } = this.props;\n\n return (\n \n \n }\n subheader=\"Allow your users to send feedback to a support team on your end to resolve data\n inconsistencies quicker and easier.\"\n />\n \n \n \n \n \n );\n }\n}\n\nexport default Support;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Switch from '@material-ui/core/Switch';\nimport Typography from '@material-ui/core/Typography';\n\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\n\nimport * as Types from 'pages/General/typings';\n\ninterface Props {\n values: Types.GeneralValues;\n onChange: (field: string, value: any) => void;\n}\n\nfunction DottedLineRelationships({ values, onChange }: Props) {\n const classes = useStyles();\n\n const handleChangeEnableDottedLineRelationships = () => {\n onChange(\n 'client.settings.dottedLineRelationships.enabled',\n !values.client.settings.dottedLineRelationships.enabled,\n );\n };\n\n const handleChangeUserEditableDottedLineRelationships = () => {\n onChange(\n 'client.settings.dottedLineRelationships.userEditable',\n !values.client.settings.dottedLineRelationships.userEditable,\n );\n };\n\n return (\n \n \n Dotted line relationships allow informal managers, direct reports, and teammates to be\n added to people and displayed on the Org Chart and Profile pages.\n \n
\n }\n action={\n \n }\n />\n \n \n Do you want to allow all users to add dotted line relationships to themselves and their\n direct reports? If switched off, only administrators will be able to add dotted line\n relationships.\n \n\n \n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n subheader: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardHeader: {\n paddingBottom: theme.spacing(2),\n },\n cardContent: {\n display: 'flex',\n paddingTop: 0,\n paddingRight: theme.spacing(2),\n },\n adminOnlySwitchLabel: {\n marginRight: theme.spacing(),\n },\n}));\n\nexport default DottedLineRelationships;\n","import React from 'react';\nimport * as Types from 'pages/General/typings';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { Fields } from 'types/FormValue';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\n\nimport CompanyName from './CompanyName';\nimport AllowUninvited from './AllowUninvited';\nimport Subdomain from './Subdomain';\nimport CompanyTimezone from './CompanyTimezone';\nimport OrgLevelsLayout from './OrgLevelsLayout';\nimport LogoUploader from './LogoUploader';\nimport Terminology from './Terminology';\nimport CustomNavigationTab from './CustomNavigationTab';\nimport Support from './Support';\nimport DottedLineRelationships from './DottedLineRelationships';\n\ninterface Props {\n values: Types.GeneralValues;\n errors: Types.GeneralFormErrors;\n userStatus: number;\n fields: Fields;\n onChange: (field: string, value: any) => void;\n}\n\nfunction Settings({ values, errors, userStatus, fields, onChange }: Props) {\n const classes = useStyles();\n\n return (\n <>\n \n Basic Information
} />\n \n \n <>\n \n {!values.client.isTrial && (\n \n )}\n \n \n \n \n \n \n \n \n \n \n\n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n h5: {\n ...theme.typography.h5,\n },\n}));\n\nexport default Settings;\n","import React, { useEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useDispatch, useSelector } from 'react-redux';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isEqual from 'lodash/isEqual';\nimport { Prompt, useHistory } from 'react-router';\nimport { useStatus, useData } from 'resift';\nimport * as Yup from 'yup';\nimport delay from 'delay';\nimport getHostName from 'helpers/getHostName';\nimport * as Types from './typings';\nimport { defaultSupportFormValue } from './constants';\nimport { updateClient } from 'store/client';\nimport useFormSnackbar from 'components/Form/helpers/useFormSnackbar';\nimport fixImageUri from 'store/themes/actions/_helpers/fixImageUri';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport makeUpdateLayoutFetch from 'pages/ProfileLayout/fetches/updateLayoutFetch';\nimport verifyNewSubdomain from 'fetches/verifyNewSubdomain';\nimport { fetchThemes, getThemesFetch } from 'store/themes/actions/getThemes';\nimport { saveTheme } from 'store/themes/actions/saveTheme';\nimport isValidColor from '@sift/skipper/styles/isValidColor';\nimport getOnboardingTasks from 'fetches/getOnboardingTasks';\n\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { Formik, Form } from 'formik';\nimport Page from 'components/Page/newComponents';\nimport Breadcrumbs from 'components/Page/Breadcrumbs';\nimport PageTitle from 'components/Page/PageTitle';\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageFormErrorMessage from 'components/Page/newComponents/PageFormErrorMessage';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport Loader from 'components/Loader';\nimport ThemingPage from './tabs/Theming/Theming';\nimport SettingsPage from './tabs/Settings';\nimport HandleRedirect from 'molecules/HandleRedirect';\n\nfunction General() {\n const classes = useStyles();\n const analytics = useAnalytics();\n const dispatch = useDispatch();\n const subdomainValidation = useData(verifyNewSubdomain);\n const _client = useSelector((state: any) => state.client);\n const entityTypes = useEntityTypes();\n const entityTypesFetch = makeEntityTypesFetch();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n\n useEffect(() => {\n dispatch(fetchThemes());\n }, [fetchThemes]);\n\n const _themes = useSelector((state: any) => state.themes);\n const themesFetch = getThemesFetch(_themes);\n const themes = _get(themesFetch, 'data.results', []);\n const activeTheme = themes.find((theme: any) => theme.isActive);\n\n const initialState = {\n client: {\n ..._client,\n subdomain: _get(_client, 'subdomain', ''),\n displayName: _client.displayName || 'Sift App',\n settings: {\n ..._client.settings,\n login: {\n blockCreatedAccounts: {\n enabled: _get(_client, 'settings.login.blockCreatedAccounts.enabled', false),\n },\n },\n support: _get(_client, 'settings.support', defaultSupportFormValue),\n info: {\n timeZone: _get(_client, 'settings.info.timeZone', 'America/Detroit'), // legacy client timeZone\n logoUrl: _get(_client, 'settings.info.logoUrl'),\n },\n terminology: _get(_client, 'settings.terminology'),\n dottedLineRelationships: {\n enabled: _get(_client, ['settings', 'dottedLineRelationships', 'enabled']),\n userEditable: _get(_client, ['settings', 'dottedLineRelationships', 'userEditable']),\n },\n },\n },\n layouts: {\n 'org-levels': _get(userConfig, '_layouts.org-levels', []),\n },\n theme: {\n mode: activeTheme ? 'custom' : 'default',\n logoUrl: '',\n backgroundUrl: '',\n pictureUrl: '',\n settings: {\n enableEmailTheming: false,\n palette: {\n primary: {\n main: '',\n },\n secondary: {\n main: '',\n },\n matched: {\n main: null,\n },\n },\n },\n ...activeTheme,\n },\n } as Types.GeneralValues;\n const status = useSelector((state: any) => state.client.status);\n const updateLayoutFetch = makeUpdateLayoutFetch();\n const userStatus = useStatus(updateLayoutFetch);\n const fields = _get(userConfig, '_fields');\n\n useEffect(() => {\n document.title = 'Settings';\n }, []);\n\n const history = useHistory();\n const tab = history.location.pathname.includes('theming') ? 'theming' : '';\n const description = {\n settings: 'Update your settings to personalize Sift for your organization.',\n theming: 'Customize the appearance of Sift to match your organization’s brand.',\n };\n\n useFormSnackbar({ status });\n\n const handleTabChange = (e: any, value: string) => {\n let pathname = '/admin/general';\n if (value) {\n pathname = `${pathname}/${value}`;\n }\n history.push({ pathname });\n };\n\n const handleSubmit = async (values: Types.GeneralValues) => {\n const _logoUrl = _get(values, 'client.settings.info.logoUrl');\n const _isLogoNew = _logoUrl !== initialState.client.settings.info.logoUrl;\n const logoToSave = _isLogoNew\n ? await fixImageUri(_client.clientId, 'sign-logo-upload', _logoUrl)\n : initialState.client.settings.info.logoUrl;\n\n const newClientValues = !_isEqual(initialState.client, values.client)\n ? {\n ...values.client,\n settings: {\n ...values.client.settings,\n info: {\n ...values.client.settings.info,\n logoUrl: logoToSave,\n },\n },\n }\n : null;\n\n const layoutPayloadKeys = Object.keys(values.layouts).filter(\n key => !_isEqual(values.layouts[key], initialState.layouts[key]),\n );\n const layoutPayload = layoutPayloadKeys.map(key => ({\n entityField: PERSON_ENTITY_TYPE_KEY,\n layoutKey: key,\n children: values.layouts[key],\n }));\n\n const newThemeValues = !_isEqual(initialState.theme, values.theme)\n ? {\n ...values.theme,\n isActive: true,\n }\n : null;\n newClientValues && (await dispatch(updateClient(newClientValues)));\n newThemeValues && dispatch(saveTheme(newThemeValues));\n await dispatch(updateLayoutFetch(layoutPayload));\n dispatch(entityTypesFetch());\n\n if (_client.subdomain !== values.client.subdomain) {\n const hostName = getHostName();\n window.location.href = `https://${values.client.subdomain}.${hostName}.com/admin/general`;\n }\n };\n\n const handleValidate = (values: Types.GeneralValues) => {\n const errors = {} as Types.GeneralFormErrors;\n\n if (values.client.settings.support.enabled) {\n const supportEmails = values.client.settings.support.emails || [];\n const emailRegex = /^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\\.)+[A-Z]{2,}$/i;\n\n supportEmails.forEach(email => {\n if (!emailRegex.test(email)) {\n errors.support = `${email} is not a valid email.`;\n }\n });\n\n if (supportEmails.length === 0) {\n errors.support = 'Add at least 1 support email address.';\n }\n }\n\n const teamMember = _get(values, ['client', 'settings', 'terminology', 'teamMember'], '');\n const teamLeader = _get(values, ['client', 'settings', 'terminology', 'teamLeader'], '');\n if (!teamMember.length) {\n errors.terminology = 'Team Member is a required field.';\n }\n\n if (!teamLeader.length) {\n errors.leaderTerminology = 'Team Leader is a required field.';\n }\n\n const primary = _get(values, 'theme.settings.palette.primary.main');\n const secondary = _get(values, 'theme.settings.palette.secondary.main');\n const matched = _get(values, 'theme.settings.palette.matched.main');\n if (\n !values.theme.settings &&\n !values.theme.logoUrl &&\n !values.theme.backgroundUrl &&\n !values.theme.pictureUrl\n ) {\n errors.theme = 'You must set at least one color or picture.';\n }\n\n if (primary && !isValidColor(primary)) {\n errors.theme = 'Invalid primary color.';\n }\n\n if (secondary && !isValidColor(secondary)) {\n errors.theme = 'Invalid secondary color.';\n }\n\n if (matched && !isValidColor(matched)) {\n errors.theme = 'Invalid match color.';\n }\n\n return errors;\n };\n\n return (\n \n \n \n \n \n {props => {\n const { values, setFieldValue, dirty, resetForm } = props;\n\n // (notes - pearl) Get subdomain validation error from API\n // validation dispatcher is in Subdomain\n const getErrors = () => {\n if (values.client.subdomain) {\n if (subdomainValidation && !subdomainValidation.isValid) {\n return {\n ...props.errors,\n subdomain: _get(subdomainValidation, 'message'),\n };\n }\n }\n\n return props.errors;\n };\n\n const errors = getErrors() as Types.GeneralFormErrors;\n\n return (\n <>\n
\n handleTabChange(e, value)} value={tab || ''}>\n \n \n \n
\n {tab === '' && (\n \n )}\n {tab === 'theming' && }\n
\n }\n >\n \n {\n props.handleSubmit();\n resetForm({ values });\n await delay(2000);\n history.location.pathname.includes('theming') &&\n dispatch(getOnboardingTasks()) &&\n analytics.track('Theme Saved', {\n category: 'AD - General Settings',\n });\n }}\n disabled={!dirty || !_isEmpty(errors)}\n />\n \n \n \n \n \n );\n }}\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n maxWidth: 1200,\n },\n layoutRoot: {\n display: 'flex',\n flex: '1 1 auto',\n },\n };\n});\n\nexport default General;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\n\ninterface Props {\n title: string;\n children: React.ReactNode;\n}\n\nfunction SupportCard({ title, children }: Props) {\n const classes = useStyles();\n\n return (\n \n
\n {title}\n
\n {children}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 442,\n height: 309,\n padding: theme.spacing(2.5),\n paddingTop: theme.spacing(3),\n },\n titleContainer: {\n display: 'flex',\n justifyContent: 'center',\n marginBottom: theme.spacing(2),\n },\n title: {\n // @ts-ignore\n ...theme.typography.h5Semibold,\n },\n}));\n\nexport default SupportCard;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport SupportCard from 'components/onboarding/SupportCard';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\nfunction HelpCard() {\n const classes = useStyles();\n const analytics = useAnalytics();\n\n const handleSupportEmail = () => {\n analytics.track('Having Trouble Support Button clicked', {\n category: 'AD - Home',\n label: 'Send an Email',\n });\n };\n\n const handleSupportChat = () => {\n analytics.track('Having Trouble Button clicked', {\n category: 'AD - Home',\n label: 'Start a Chat',\n });\n };\n\n return (\n \n \n Having trouble with something you see here? We would love to speak with you and offer any\n additional support needed.\n \n \n Feel free to send us a message or if you want to speak to someone immediately use our chat\n feature.\n \n
\n \n Send an email\n \n \n Start a chat\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n p: {\n marginBottom: theme.spacing(3),\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'space-evenly',\n marginTop: theme.spacing(4.5),\n },\n}));\n\nexport default HelpCard;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useAnalytics from 'helpers/useAnalytics';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport SupportCard from 'components/onboarding/SupportCard';\nimport HelpDocLink from 'atoms/HelpDocLink';\n\nimport { HELP_ARTICLE_HOME, HELP_LINKS } from 'components/onboarding/constants';\n\nfunction DocsCard() {\n const classes = useStyles();\n const analytics = useAnalytics();\n\n const handleDocumenationClick = (itemName: string) => {\n analytics.track('Documentation Link clicked', {\n category: 'AD - Home',\n label: itemName,\n });\n };\n\n return (\n \n \n We want to help you to get connected and start Sifting as soon as possible. Here are some\n articles to help you get started. You can also visit our{' '}\n \n Help Center\n {' '}\n for more.\n \n {HELP_LINKS.map((item, i) => (\n handleDocumenationClick(item.name)}\n >\n {item.name}\n \n ))}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n p: {\n marginBottom: theme.spacing(3),\n },\n}));\n\nexport default DocsCard;\n","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport _get from 'lodash/get';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport Page from 'components/Page';\nimport Checklist from 'components/onboarding/Checklist';\nimport HelpCard from 'components/onboarding/HelpCard';\nimport DocsCard from 'components/onboarding/DocsCard';\n\nfunction Home() {\n const classes = useStyles();\n const personName = useSelector(state => _get(state, 'authentication.person.firstName'));\n\n useEffect(() => {\n document.title = 'Home';\n }, []);\n\n return (\n \n Hi, {personName}\n \n Welcome to Sift! On this page you can learn how to set up and roll out Sift, reach out to\n our team if you need assistance, and view links to our documentation.\n \n \n \n \n
\n \n \n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n heading: {\n // @ts-ignore\n ...theme.typography.h5Semibold,\n },\n message: {\n // @ts-ignore\n color: theme.colors.gray2,\n maxWidth: 900,\n marginTop: theme.spacing(),\n marginBottom: theme.spacing(3),\n },\n supportCardContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: theme.spacing(3),\n },\n paper: {\n width: 900,\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n },\n}));\n\nexport default Home;\n","import asyncComponent from 'components/Router/AsyncComponent';\nimport reducer from './reducer';\n\nexport default asyncComponent(() => import('./container'), reducer, 'route_invites');\n","import { Status, States } from '@sift/resift/models/Status';\n\nimport { PERSON_FETCH, PERSON_FETCH_SUCCESS, PERSON_FETCH_ERROR } from 'store/people';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const actions = {};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [PERSON_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [PERSON_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n person: action.payload.data,\n status: new Status(States.NORMAL),\n };\n },\n [PERSON_FETCH_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 person: {},\n status: new Status(),\n};\nexport default function personReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import asyncComponent from 'components/Router/AsyncComponent';\nimport reducer from './reducer';\n\nexport default asyncComponent(() => import('./container'), reducer, 'route_person');\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","// Libs\nimport React from 'react';\nimport { Link } from 'react-router-dom';\n\nexport default class NoRoute extends React.Component {\n render() {\n document.title = '404 Sift Happens';\n return (\n
\n

404

\n

Sift Happens!

\n

We can help you find a lot of things – this page is not one of them.

\n

\n Try going back or head on home.\n

\n
\n );\n }\n}\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\n","import { defineFetch } from 'resift';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nexport default defineFetch({\n displayName: 'Get User Fields',\n make: () => ({\n key: [],\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/fields`,\n query: {\n returnDisabledFields: true,\n expand: 'userEditability',\n entityTypeKey: PERSON_ENTITY_TYPE_KEY,\n },\n }),\n }),\n});\n","import { useCallback, useRef, useLayoutEffect } from 'react';\nimport useRouter from '@sift/resift/useRouter';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport {\n HOME_URL,\n ATTRIBUTES_URL,\n DYNAMIC_PAGES_URL,\n PERSON_PROFILE_URL,\n} from 'components/Router/consts';\n\nexport default function useAttributesEditDialog(entityTypeKey: string) {\n const { location, history } = useRouter();\n\n // put history into a ref to help preserve function pointers\n const historyRef = useRef(history);\n useLayoutEffect(() => {\n historyRef.current = history;\n }, [history]);\n\n const isOpen =\n location.pathname.includes(`/attributes/${entityTypeKey}/create`) ||\n location.pathname.includes(`/attributes/${entityTypeKey}/choose`) ||\n location.pathname.includes(`/attributes/${entityTypeKey}/edit`);\n\n // ref preserves the `open` callback pointer from changing\n const isOpenRef = useRef(isOpen);\n useLayoutEffect(() => {\n isOpenRef.current = isOpen;\n }, [isOpen]);\n\n const open = useCallback(() => {\n const isOpen = isOpenRef.current;\n const history = historyRef.current;\n const { location } = history;\n\n if (isOpen) return;\n if (\n location.pathname.includes('/attribute') ||\n location.pathname.includes(PERSON_PROFILE_URL)\n ) {\n history.push({\n ...location,\n pathname: `${HOME_URL}${ATTRIBUTES_URL}/${entityTypeKey}/create`,\n });\n }\n }, []);\n\n const close = useCallback(() => {\n const isOpen = isOpenRef.current;\n const history = historyRef.current;\n if (!isOpen) return;\n\n if (entityTypeKey === PERSON_ENTITY_TYPE_KEY) {\n history.push(`/admin${PERSON_PROFILE_URL}/`);\n } else {\n history.push(`${HOME_URL}${DYNAMIC_PAGES_URL}/${entityTypeKey}/attributes`);\n }\n }, []);\n\n return {\n isOpen,\n open,\n close,\n };\n}\n","import React from 'react';\nimport _get from 'lodash/get';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useLocation } from 'react-router-dom';\nimport { useParams } from 'react-router-dom';\nimport useAttributesEditDialog from 'pages/AttributesEdit/helpers/useAttributesEditDialog';\n\nimport Button from '@material-ui/core/Button';\nimport Badge from '@material-ui/core/Badge';\nimport SearchIcon from '@material-ui/icons/Search';\nimport ExportButton from 'components/buttons/ExportButton';\nimport { GridToolbarContainer } from '@material-ui/data-grid';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport { PERSON_PROFILE_URL } from 'components/Router/consts';\n\nconst CustomToolbar = (props: any) => {\n const classes = useStyles();\n const analytics = useAnalytics();\n const location = useLocation();\n const path = location.pathname;\n const { entityTypeKey } = useParams<{ entityTypeKey?: string }>();\n const filterModel = _get(props, 'state.filter.items', []);\n const activeFilters =\n filterModel.length > 0\n ? filterModel.filter(\n (item: { value?: any }) =>\n item.value !== null && _get(item, 'value', '').toString() !== '',\n )\n : [];\n const counter = activeFilters.length;\n const { open } = props.state.preferencePanel;\n const { hideFilterPanel, showFilterPanel } = props.api.current;\n const { open: attributesEditDialogOpen } = useAttributesEditDialog(\n entityTypeKey || PERSON_ENTITY_TYPE_KEY,\n );\n\n const toggleFilterPanel = () => {\n if (open) {\n hideFilterPanel();\n } else {\n showFilterPanel();\n }\n };\n\n const handleClick = () => {\n attributesEditDialogOpen();\n if (path.includes(PERSON_PROFILE_URL)) {\n analytics.track('New Attribute Button clicked', {\n category: 'AD - Person Profiles',\n });\n } else {\n analytics.track('New Attribute Button clicked', {\n category: 'AD - Pages',\n });\n }\n };\n\n return (\n \n \n \n \n }\n >\n Search\n \n
\n \n \n
\n
\n );\n};\n\nconst useStyles = makeStyles(theme => ({\n actionBar: {\n display: 'flex',\n justifyContent: 'space-between',\n margin: theme.spacing(1, 2, 1, 1),\n },\n exportButton: {\n marginRight: theme.spacing(3),\n },\n}));\n\nexport default CustomToolbar;\n","import * as React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport _get from 'lodash/get';\n\nimport Paper from '@material-ui/core/Paper';\nimport Popper from '@material-ui/core/Popper';\n\nexport const isEscapeKey = (key: string): boolean => key === 'Escape';\n\nexport interface GridPanelProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n open: boolean;\n api?: {\n current?: {\n hidePreferences?: () => void;\n columnHeadersElementRef?: {\n current?: {};\n };\n };\n };\n}\n\nconst useStyles = makeStyles(\n (theme: any) => ({\n rootPopper: {\n zIndex: theme.zIndex.modal,\n left: `${theme.spacing(15)}px !important`,\n },\n paper: {\n backgroundColor: theme.palette.background.paper,\n minWidth: 300,\n maxHeight: 450,\n display: 'flex',\n },\n }),\n { name: 'MuiDataGridPanel' },\n);\n\nconst CustomGridPanel = React.forwardRef(function GridPanel(\n props,\n ref,\n) {\n const { children, open, api } = props;\n const classes = useStyles();\n const hidePreferences = _get(api, 'current.hidePreferences');\n const columnHeadersElementRef = _get(api, 'current.columnHeadersElementRef');\n\n const handleClickAway = React.useCallback(() => {\n hidePreferences();\n }, [hidePreferences]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (isEscapeKey(event.key)) {\n hidePreferences();\n }\n },\n [hidePreferences],\n );\n\n let anchorEl;\n if (columnHeadersElementRef && columnHeadersElementRef.current) {\n anchorEl = columnHeadersElementRef.current;\n }\n\n if (!anchorEl) {\n return null;\n }\n\n return (\n \n \n \n {children}\n \n \n \n );\n});\n\nexport default CustomGridPanel;\n","import React from 'react';\nimport classnames from 'classnames';\nimport _get from 'lodash/get';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\n\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CheckCircle from '@material-ui/icons/CheckCircle';\nimport Lock from '@material-ui/icons/Lock';\nimport NotInterested from '@material-ui/icons/NotInterested';\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\n\nconst headerAttributes = ['user_firstName', 'user_lastName', 'user_title', 'user_anniversaryDate'];\nconst USER_EDITABILITY_NONE = 'NONE';\nconst USER_EDITABILITY_FULL = 'FULL';\nconst USER_EDITABILITY_PARTIAL = 'PARTIAL';\nconst LOCKED_TOOLTIP_TITLE = 'This is a Sift default attribute and may not be edited.';\nconst getDataType = (params, globalConfig) => {\n const baseField = _get(params, 'value.baseField');\n return _get(globalConfig, `fields.${baseField}.displayName`);\n};\nconst getClassNames = (params, classes) => {\n const field = _get(params, 'value');\n return classnames(classes.cell, {\n [classes.disabled]: _get(field, 'connectDisabled', false),\n [classes.noClick]:\n !_get(field, 'editable', false) &&\n !_get(field, 'deletable', false) &&\n ![BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION].includes(_get(field, 'baseField')),\n });\n};\n\nconst isLocked = params => {\n const field = _get(params, ['row', 'displayName']);\n return (\n !_get(field, 'editable') &&\n !_get(field, 'deletable') &&\n ![BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION].includes(_get(field, 'baseField'))\n );\n};\n\nconst renderLockedTooltipCell = params => {\n if (isLocked(params)) {\n return (\n \n
{params.value}
\n
\n );\n } else {\n return params.value;\n }\n};\n\nexport const attributeColumns = (globalConfig, classes, profileAttributes, terminology) => [\n {\n field: 'id',\n headerName: 'ID',\n type: 'number',\n hide: true,\n filterable: false,\n },\n {\n cellClassName: params => getClassNames(params, classes),\n field: 'displayName',\n headerName: 'Name',\n type: 'string',\n flex: 1,\n renderCell: params => renderLockedTooltipCell(params),\n valueGetter: params => {\n return _get(params, 'value.displayName', 'display name');\n },\n },\n {\n cellClassName: params => getClassNames(params, classes),\n field: 'type',\n headerName: 'Data Type',\n type: 'string',\n flex: 1,\n renderCell: params => renderLockedTooltipCell(params),\n valueGetter: params => getDataType(params, globalConfig),\n sortComparator: (v1, v2, cellParams1, cellParams2) =>\n getDataType(cellParams1, globalConfig).localeCompare(getDataType(cellParams2, globalConfig)),\n },\n {\n cellClassName: params => getClassNames(params, classes),\n field: 'onProfile',\n headerName: 'On Profile',\n type: 'string',\n flex: 1,\n filterable: false,\n description: `If the attribute is on the ${terminology.singular} profile page`,\n renderCell: params => {\n if (params.value === 'on profile') {\n return (\n \n \n \n );\n } else if (params.value === 'not on profile') {\n return (\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n },\n valueGetter: params => {\n if (\n !_get(params, 'value.connectDisabled', false) &&\n profileAttributes.includes(_get(params, 'value.objectKey'))\n ) {\n if (headerAttributes.includes(_get(params, 'value.id'))) {\n return 'locked';\n }\n return 'on profile';\n }\n if (\n _get(params, 'value.connectDisabled', false) ||\n !profileAttributes.includes(_get(params, 'value.objectKey'))\n ) {\n return 'not on profile';\n }\n },\n },\n {\n cellClassName: params => getClassNames(params, classes),\n field: 'userEditing',\n headerName: 'User Editing',\n filterable: false,\n type: 'string',\n flex: 1,\n description: `If ${terminology.plural} can edit the attribute. Partially editable means that the attribute is mapped from at least one data source, so will not be editable to those ${terminology.plural}.`,\n renderCell: params => {\n if (params.value === 'not editable') {\n return (\n \n
\n \n Not Editable\n
\n \n );\n } else if (params.value === 'partially editable') {\n return (\n \n
\n Partially\n Editable\n
\n \n );\n } else if (params.value === 'editable') {\n return (\n \n
\n \n Editable\n
\n
\n );\n }\n },\n valueGetter: params => {\n if (_get(params, 'value._userEditability') === USER_EDITABILITY_NONE) {\n return 'not editable';\n } else if (_get(params, 'value._userEditability') === USER_EDITABILITY_FULL) {\n return 'editable';\n } else if (_get(params, 'value._userEditability') === USER_EDITABILITY_PARTIAL) {\n return 'partially editable';\n }\n },\n },\n {\n field: 'enabled',\n headerName: 'Enabled',\n type: 'string',\n flex: 0.5,\n filterable: false,\n description: 'If the attribute is visible anywhere on Sift.',\n renderCell: params => {\n if (params.value === 'locked') {\n return (\n \n \n \n );\n } else if (params.value === 'enabled') {\n return (\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n },\n valueGetter: params => {\n if (\n !_get(params, 'value.connectDisabled', false) &&\n !_get(params, 'value.deletable', false)\n ) {\n return 'locked';\n } else if (\n !_get(params, 'value.connectDisabled', false) &&\n _get(params, 'value.deletable', false)\n ) {\n return 'enabled';\n } else {\n return 'not enabled';\n }\n },\n cellClassName: params => getClassNames(params, classes),\n },\n];\n\nexport const attributeRows = parentFields =>\n parentFields.map((field, index) => ({\n id: _get(field, 'id', index),\n displayName: field,\n type: field,\n onProfile: field,\n userEditing: field,\n enabled: field,\n }));\n","import React from 'react';\nimport { useHistory } from 'react-router';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport bowser from 'bowser';\nimport useTerminology from '@sift/skipper/helpers/useTerminology';\nimport useEntityTypes from 'helpers/useEntityTypes';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from './consts';\nimport { HOME_URL, ATTRIBUTES_URL, DYNAMIC_PAGES_URL } from 'components/Router/consts';\n\n// Page\nimport PageTitle from 'components/Page/PageTitle';\nimport CustomToolbar from './components/CustomToolbar';\nimport CustomGridPanel from './components/CustomGridPanel';\nimport { attributeColumns, attributeRows } from './components/AttributeTableData';\nimport Typography from '@material-ui/core/Typography';\nimport { DataGrid } from '@material-ui/data-grid';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nfunction Attributes({ formats, globalConfig, classes, parentFields, profileAttributes }) {\n const isIE = bowser.name === 'Internet Explorer';\n const history = useHistory();\n const entityTypes = useEntityTypes();\n\n const terminology = useTerminology();\n\n const handleRowClick = params => {\n const field = _get(params, ['row', 'enabled']);\n if ([BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION].includes(field.baseField)) {\n const entityType = Object.values(entityTypes).find(\n entityType => entityType._personClientFieldObjectKey === field.objectKey,\n );\n history.push({ pathname: `${HOME_URL}${DYNAMIC_PAGES_URL}/${entityType.id}` });\n } else if (_get(field, 'editable') || _get(field, 'deletable')) {\n history.push({\n pathname: `${HOME_URL}${ATTRIBUTES_URL}/${field.entityField}/edit/${field.objectKey}`,\n });\n } else {\n return null;\n }\n };\n\n return (\n <>\n \n
\n {isIE && (\n \n This page is not supported in Internet Explorer. Please use another browser.\n \n )}\n \n
\n \n );\n}\n\nAttributes.propTypes = {\n subdomain: PropTypes.string.isRequired,\n globalConfig: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n parentFields: PropTypes.array.isRequired,\n profileAttributes: PropTypes.array.isRequired,\n};\n\nconst styles = theme => {\n return {\n pageContent: {\n paddingRight: 0,\n paddingBottom: 0,\n },\n wrapper: {\n height: '100vh',\n width: '100%',\n },\n row: {\n cursor: 'pointer',\n border: 'none',\n },\n circleIcon: {\n width: theme.spacing(),\n height: theme.spacing(),\n marginRight: theme.spacing(0.75),\n },\n grayIcon: {\n color: theme.colors.gray1,\n },\n greenCircleIcon: {\n color: theme.palette.success.main,\n },\n disabled: {\n opacity: theme.palette.opacity.thirtyEightPercent,\n },\n cell: {\n '&:focus': {\n outline: 'none !important',\n },\n },\n noClick: {\n cursor: 'default',\n },\n };\n};\n\nexport default withStyles(styles)(Attributes);\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Fields',\n make: () => ({\n key: [],\n request: (entityTypeKey: string) => ({ http }) =>\n http({\n method: 'GET',\n route: `/fields`,\n query: { returnDisabledFields: true, expand: 'userEditability', entityTypeKey },\n }),\n }),\n});\n","import _get from 'lodash/get';\nimport _flatten from 'lodash/flatten';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nexport default function getProfileAttributes(typeKey, entityType, client) {\n const webProfileLayoutKey = typeKey === PERSON_ENTITY_TYPE_KEY ? 'web_profile' : 'profile-info';\n const webProfileLayout = _get(entityType, `_layouts.${webProfileLayoutKey}`, []);\n const profilePeopleLayout = _get(entityType, '_layouts.profile-people', []);\n const orgLevelsLayout = _get(entityType, '_layouts.org-levels', []);\n\n function findField(name) {\n return _get(entityType, `_fields[${name}]`, {});\n }\n\n function findCategory(name) {\n const categoryKeys = Object.keys(entityType._categories);\n const categoryName = categoryKeys.find(field => field === name);\n return _get(entityType, `_categories[${categoryName}]`, {});\n }\n\n function buildCategory(value, shouldBuildCategory = true) {\n const foundCategory = findCategory(value.name);\n const categories = [];\n if (shouldBuildCategory) categories.push(foundCategory);\n\n if (foundCategory && foundCategory.children) {\n foundCategory.children.forEach(child => {\n if (child.type === 'category') {\n buildCategory(child);\n } else if (child.type === 'field') {\n categories.push(buildField(child));\n }\n });\n return categories;\n }\n }\n\n function buildField(value) {\n return findField(value.name);\n }\n\n function buildBasicLayoutObject(layout, shouldBuildCategory = true) {\n const newBasicLayout = [];\n let returnValue;\n\n layout &&\n layout.forEach(value => {\n if (value.type === 'category') {\n returnValue = buildCategory(value, shouldBuildCategory);\n } else if (value.type === 'field') {\n returnValue = buildField(value);\n }\n newBasicLayout.push(returnValue);\n });\n return _flatten(newBasicLayout);\n }\n\n const flattenedWebProfile = buildBasicLayoutObject(webProfileLayout, false);\n const flattenedProfilePeople = buildBasicLayoutObject(profilePeopleLayout);\n const flattenedOrgLevels = buildBasicLayoutObject(orgLevelsLayout);\n let headerItems =\n typeKey === PERSON_ENTITY_TYPE_KEY\n ? [\n findField('firstName'),\n findField('lastName'),\n findField('title'),\n findField('anniversaryDate'),\n ]\n : [];\n const namePronunciation = _get(client, 'settings.namePronunciation.enabled', false);\n const timezoneEnabled = _get(client, 'settings.timezoneAndWorkHours.timezone.enabled', false);\n\n if (timezoneEnabled) {\n // we only need to add `timezoneAndWorkHours` (and not `timezoneAndWorkHours.timezone`\n // or `timezoneAndWorkHours.workHoursItem`) because:\n // - We only use this helper within Attributes/container.js and AttributesUsage.tsx (in\n // the \"on profile\" column of the attributes table and the attribute editing modal)\n // to show the user whether an attribute is \"on profile\" or not\n // - We don't use AttributesUsage.tsx for non-user-entity-type attributes:\n // - As the parent field (timezoneAndWorkHours) will never be added to other entity\n // types besides `user`, and we only render `AttributesUsage` for user entity-type\n // attributes,\n // - Attributes/container.js filters out fields that don't have fields defined or item.type\n // defined\n // - `timezoneAndWorkHours.timezone` and `timezoneAndWorkHours.workHoursItem`\n // do not have fields or item.type\n headerItems.push(findField('timezoneAndWorkHours'));\n }\n\n if (namePronunciation) {\n headerItems.push(findField('hasNamePronunciation'));\n }\n\n const profileAttributes = [\n ...flattenedWebProfile,\n ...flattenedProfilePeople,\n ...flattenedOrgLevels,\n ...headerItems,\n ];\n return profileAttributes.map(attribute => attribute.objectKey);\n}\n","import React, { memo, useMemo, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport { useStatus, useData, combineStatuses } from 'resift';\nimport { useSelector } from 'react-redux';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport useGlobalConfig from 'helpers/useGlobalConfig';\nimport usePassiveRedux from '@sift/resift/usePassiveRedux';\nimport { Status, States } from '@sift/resift/models/Status';\n\n// Component\nimport Attributes from './Attributes';\nimport Loader from 'components/Loader';\n\n// Actions\nimport makeGetFieldsFetch from 'fetches/makeGetFieldsFetch';\nimport makeGetUserFieldsFetch from 'fetches/makeGetUserFieldsFetch';\nimport getProfileAttributes from './_helpers/getProfileAttributes';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nfunction Container({ classes, typeKey }) {\n const _client = useSelector(state => state.client);\n const globalConfig = useGlobalConfig();\n const entityTypes = useEntityTypes();\n const entityType = _get(entityTypes, typeKey);\n\n const makeGetUserFields = makeGetUserFieldsFetch();\n const userFieldsStatus = useStatus(makeGetUserFields);\n const userFields = useData(makeGetUserFields);\n\n const makeGetFields = makeGetFieldsFetch();\n const entityTypeFieldsStatus = useStatus(makeGetFields);\n const entityTypeFields = useData(makeGetFields);\n\n const subdomain = usePassiveRedux(state => state.client.subdomain);\n\n const filterChildAttributes = useCallback(() => {\n const fieldKeys = Object.keys(entityType._fields);\n const filteredFieldItemKeys = fieldKeys.filter(key =>\n _get(entityType, `_fields.${key}.item.type`, false),\n );\n const filteredFieldKeys = fieldKeys.filter(key => entityType._fields[key].fields);\n const childItemKeys = filteredFieldItemKeys.filter(\n key => entityType._fields[key].item.type.charAt(0) === '@',\n );\n const extractedChildItemKeys = childItemKeys.map(itemKey => {\n const itemLength = entityType._fields[itemKey].item.type.length;\n return entityType._fields[itemKey].item.type.substring(8, itemLength);\n });\n // (note - pearl) these two timezone fields should get filtered out but don't fit existing logic\n let omittableChildItemFields = ['timezoneAndWorkHours', 'timezoneAndWorkHours.workHoursItem'];\n extractedChildItemKeys.forEach(item => {\n omittableChildItemFields.push(item);\n });\n filteredFieldKeys.forEach(item => {\n entityType._fields[item].fields.forEach(field => {\n omittableChildItemFields.push(field);\n });\n });\n const filteredFieldList = fieldKeys.filter(field => {\n return !omittableChildItemFields.includes(field);\n });\n return filteredFieldList;\n }, [entityType]);\n\n const parentFields = useMemo(\n () =>\n typeKey === PERSON_ENTITY_TYPE_KEY\n ? filterChildAttributes().map(attribute => {\n return _get(userFields, 'results', []).find(field => field.objectKey === attribute);\n })\n : filterChildAttributes().map(attribute => {\n return _get(entityTypeFields, 'results', []).find(\n field => field.objectKey === attribute,\n );\n }),\n [typeKey, userFields, entityTypeFields],\n );\n\n const profileAttributes = useMemo(() => {\n return getProfileAttributes(typeKey, entityType, _client);\n }, [entityType, _client]);\n const parentAndProfileStatus =\n !profileAttributes || !parentFields ? new Status(States.LOADING) : new Status(States.NORMAL);\n\n const formats =\n typeKey === PERSON_ENTITY_TYPE_KEY\n ? _get(userFields, 'formats')\n : _get(entityTypeFields, 'formats');\n\n const configStatus =\n typeKey === PERSON_ENTITY_TYPE_KEY ? userFieldsStatus : entityTypeFieldsStatus;\n const combinedStatus = combineStatuses(parentAndProfileStatus.value, configStatus);\n\n return (\n \n {() => (\n \n )}\n \n );\n}\n\nContainer.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst styles = {\n root: {\n position: 'static',\n },\n};\n\nexport default memo(withStyles(styles)(Container));\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst StandAloneIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n);\n\nexport default StandAloneIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nconst CategoryIcon = props => (\n \n \n \n \n \n \n \n \n \n \n);\n\nexport default CategoryIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// - Components\nimport Typography from '@material-ui/core/Typography';\n\nimport StandAloneIcon from 'components/Icons/StandAlone';\nimport CategoryIcon from 'components/Icons/ProfileLayout/CategoryIcon';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: theme.spacing(2),\n cursor: 'pointer',\n },\n images: {\n width: 115.47,\n height: 63,\n marginBottom: theme.spacing(2),\n },\n subtitle: {\n marginTop: theme.spacing(1.25),\n },\n});\n\nclass DialogSelectItem extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n img: PropTypes.string.isRequired,\n handleSwitch: PropTypes.func.isRequired,\n };\n\n components = {\n standAlone: StandAloneIcon,\n category: CategoryIcon,\n };\n\n handleClick = () => {\n this.props.handleSwitch(this.props.title);\n };\n\n render() {\n const { classes } = this.props;\n const Image = this.components[this.props.img];\n return (\n
\n \n {this.props.title}\n \n {this.props.subtitle}\n \n
\n );\n }\n}\n\nexport default withStyles(styles)(DialogSelectItem);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ArrowBack from '@material-ui/icons/ArrowBack';\nimport Button from '@material-ui/core/Button';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Checkbox from '@material-ui/core/Checkbox';\n\nclass AddAttributeDialogItem extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n handleBackClick: PropTypes.func.isRequired,\n handleClose: PropTypes.func.isRequired,\n availableAttributes: PropTypes.array.isRequired,\n globalConfig: PropTypes.object.isRequired,\n handleAddAttributes: PropTypes.func,\n };\n\n state = {\n checked: [],\n };\n\n handleToggle = value => {\n const { checked } = this.state;\n const currentIndex = checked.indexOf(value);\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(value);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n this.setState({\n checked: newChecked,\n });\n };\n\n handleAddButtonClick = () => {\n const attributes = this.state.checked;\n this.props.handleAddAttributes(attributes);\n this.props.handleClose();\n };\n\n render() {\n const { classes, availableAttributes } = this.props;\n\n return (\n <>\n \n
\n
\n \n \n \n
\n Add an attribute\n \n You may only add longer form attributes such as long text or collections to the\n root profile layout. To add shorter form attributes to your page, add them to a\n new or existing Category instead.\n \n
\n
\n
\n \n \n \n
\n
\n
\n \n \n {availableAttributes.map(arrayValue => (\n this.handleToggle(arrayValue)}\n >\n \n \n \n ))}\n \n \n There are no more attributes that can be added! Go to the “Attributes” tab to create\n additional attributes.\n \n \n \n \n \n Save\n \n \n \n );\n }\n}\n\nexport default AddAttributeDialogItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ArrowBack from '@material-ui/icons/ArrowBack';\nimport Button from '@material-ui/core/Button';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport IconButton from '@material-ui/core/IconButton';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\n\nclass AddCategoryDialogItem extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n handleBackClick: PropTypes.func.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleCreateCategory: PropTypes.func,\n };\n\n state = {\n categoryName: '',\n errorState: false,\n };\n\n handleChange = e => {\n this.setState({ categoryName: e.target.value });\n };\n\n addCategory = () => {\n if (this.state.categoryName.trim().length === 0) {\n this.setState({ errorState: !this.state.errorState });\n } else {\n this.props.handleCreateCategory(this.state.categoryName);\n this.props.handleClose();\n }\n };\n\n displayError = () => {\n const { classes } = this.props;\n return this.state.errorState ? (\n You cannot have a blank category name\n ) : (\n \n );\n };\n\n render() {\n const { classes } = this.props;\n return (\n <>\n \n
\n
\n \n \n \n Add a category\n
\n
\n \n \n \n
\n
\n
\n \n \n {this.displayError()}\n \n \n \n \n Save\n \n \n \n );\n }\n}\n\nexport default AddCategoryDialogItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// - MUI Components\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogSelectItem from './DialogSelectItem';\nimport Slide from '@material-ui/core/Slide';\nimport Typography from '@material-ui/core/Typography';\n\n// - Components\nimport AddAttributesDialogItem from './AddAttributesDialogItem';\nimport AddCategoryDialogItem from './AddCategoryDialogItem';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => ({\n root: {\n minWidth: 600,\n height: 368,\n overflowX: 'hidden',\n },\n dialogContainer: {\n height: 'inherit',\n width: 'inherit',\n },\n titleText: {\n width: '50%',\n },\n content: {\n display: 'flex',\n flexDirection: 'row',\n },\n dialogSelectItem: {\n width: 264,\n height: 247,\n borderRadius: theme.spacing(0.5),\n margin: theme.spacing(1.5),\n boxShadow: theme.shadows[1],\n },\n leftHeader: {\n display: 'flex',\n alignItems: 'center',\n },\n titleContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n listItem: {\n height: 40,\n '&:focus': {\n backgroundColor: 'transparent',\n },\n '&:hover': {\n backgroundColor: theme.palette.grey[300],\n },\n },\n buttons: {\n marginRight: '8px 8px',\n },\n});\n\nclass AddSectionDialog extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n handleClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n availableAttributes: PropTypes.array,\n globalConfig: PropTypes.object.isRequired,\n handleAddAttributes: PropTypes.func.isRequired,\n handleCreateCategory: PropTypes.func,\n };\n\n state = {\n slideSwitch: true,\n // Set to attribute to get rid of warning when initial state was null\n dialogItem: 'attribute',\n };\n\n dialogComponents = {\n attribute: AddAttributesDialogItem,\n category: AddCategoryDialogItem,\n };\n\n handleClose = () => {\n this.props.handleClose();\n };\n\n handleListItemClick = value => {\n this.props.handleClose(value);\n };\n\n handleSwitch = title => {\n this.setState(prevState => ({\n dialogItem: title,\n slideSwitch: !prevState.slideSwitch,\n }));\n };\n\n handleBackClick = () => {\n this.setState({ slideSwitch: true });\n };\n\n dialogExited = () => {\n this.setState({ slideSwitch: true });\n };\n\n render() {\n const { classes } = this.props;\n const DialogComponent = this.dialogComponents[this.state.dialogItem];\n return (\n \n \n
\n \n What would you like to add? \n \n \n
\n this.handleSwitch('attribute')}\n />\n
\n
\n this.handleSwitch('category')}\n />\n
\n
\n
\n \n \n \n \n \n );\n }\n}\n\nexport default withStyles(styles)(AddSectionDialog);\n","import React, { useMemo, memo, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport useGlobalConfig from 'helpers/useGlobalConfig';\nimport makeGetFieldsFetch from 'fetches/makeGetFieldsFetch';\nimport makeGetUserFieldsFetch from 'fetches/makeGetUserFieldsFetch';\nimport { useData } from 'resift';\nimport _get from 'lodash/get';\nimport _sortBy from 'lodash/sortBy';\n\nimport AddSectionDialog from './AddSectionDialog';\n\nfunction Container({ currentLayout, typeKey, ...props }) {\n const globalConfig = useGlobalConfig();\n const entityTypes = useEntityTypes();\n const entityType = _get(entityTypes, typeKey);\n\n const makeGetFields = makeGetFieldsFetch();\n const entityTypeFields = useData(makeGetFields);\n\n const makeGetUserFields = makeGetUserFieldsFetch();\n const userFields = useData(makeGetUserFields);\n\n const fieldIdsInLayout = useMemo(() => {\n return getFieldIdReference(currentLayout);\n }, [currentLayout]);\n\n const ALLOWED_TYPES = ['collection', 'textLong', 'object'];\n\n const filterChildAttributes = useCallback(() => {\n const fieldKeys = Object.keys(entityType._fields);\n const filteredFieldItemKeys = fieldKeys.filter(key =>\n _get(entityType, `_fields.${key}.item.type`, false),\n );\n const filteredFieldKeys = fieldKeys.filter(key => entityType._fields[key].fields);\n const childItemKeys = filteredFieldItemKeys.filter(\n key => entityType._fields[key].item.type.charAt(0) === '@',\n );\n const extractedChildItemKeys = childItemKeys.map(itemKey => {\n const itemLength = entityType._fields[itemKey].item.type.length;\n return entityType._fields[itemKey].item.type.substring(8, itemLength);\n });\n let omittableChildItemFields = [];\n extractedChildItemKeys.forEach(item => {\n omittableChildItemFields.push(item);\n });\n filteredFieldKeys.forEach(item => {\n entityType._fields[item].fields.forEach(field => {\n omittableChildItemFields.push(field);\n });\n });\n\n const filteredFieldList = fieldKeys.filter(field => {\n const targetField = entityType._fields[field];\n return (\n !omittableChildItemFields.includes(field) &&\n targetField.baseField !== 'page' &&\n (ALLOWED_TYPES.includes(targetField.type) ||\n ['pronouns', 'inclusivePronouns'].includes(targetField.objectKey) ||\n _get(targetField, 'input.components', []).includes('pageCollection')) &&\n !fieldIdsInLayout[targetField.id]\n );\n });\n\n return filteredFieldList;\n }, [fieldIdsInLayout]);\n\n const availableAttributes = useMemo(() => {\n if (typeKey === PERSON_ENTITY_TYPE_KEY && userFields) {\n const parentAttributes = filterChildAttributes();\n const parentFields = _sortBy(\n parentAttributes.map(attribute =>\n _get(userFields, 'results', []).find(field => field.objectKey === attribute),\n ),\n field => {\n return field.displayName.toLowerCase();\n },\n );\n return parentFields;\n } else if (entityTypeFields) {\n const parentAttributes = filterChildAttributes();\n const parentFields = _sortBy(\n parentAttributes.map(attribute =>\n _get(entityTypeFields, 'results', []).find(field => field.objectKey === attribute),\n ),\n field => {\n return field.displayName.toLowerCase();\n },\n );\n return parentFields;\n }\n return [];\n }, [entityTypeFields, userFields, fieldIdsInLayout]);\n\n return (\n \n );\n}\n\nContainer.propTypes = {\n currentLayout: PropTypes.array,\n};\n\nexport default memo(Container);\n\nfunction getFieldIdReference(layout) {\n const fieldIdReference = {};\n layout.forEach(item => recursiveFieldGetter(item, fieldIdReference));\n return fieldIdReference;\n}\n\nfunction recursiveFieldGetter(item, fieldIds) {\n if (item.type === 'category' && _get(item, 'value.children')) {\n item.value.children.forEach(childItem => {\n recursiveFieldGetter(childItem, fieldIds);\n });\n } else if (item.type === 'field') {\n fieldIds[item.value.id] = true;\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SortableHandle } from 'react-sortable-hoc';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Typography from '@material-ui/core/Typography';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport ReorderIcon from '@material-ui/icons/Reorder';\nimport ArrowUp from '@material-ui/icons/ArrowUpward';\nimport ArrowDown from '@material-ui/icons/ArrowDownward';\nimport IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst SortableHandleElem = SortableHandle(({ className }) => );\n\nclass AttributeCard extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n attribute: PropTypes.object.isRequired,\n layout: PropTypes.array.isRequired,\n removeSection: PropTypes.func.isRequired,\n onLayoutChange: PropTypes.func.isRequired,\n itemIndex: PropTypes.number.isRequired,\n };\n\n state = {\n collapse: true,\n };\n\n handleRemoveClick = () => {\n this.setState({ collapse: false });\n };\n\n handleOnExited = () => {\n this.props.removeSection(this.props.attribute.name);\n };\n\n handleDown = () => {\n const { itemIndex, onLayoutChange } = this.props;\n onLayoutChange({ oldIndex: itemIndex, newIndex: itemIndex + 1 });\n };\n\n handleUp = () => {\n const { itemIndex, onLayoutChange } = this.props;\n onLayoutChange({ oldIndex: itemIndex, newIndex: itemIndex - 1 });\n };\n\n render() {\n const { classes, layout, attribute, itemIndex } = this.props;\n return (\n \n
\n
\n \n {itemIndex !== 0 && }\n {itemIndex !== layout.length - 1 && (\n \n )}\n
\n \n {attribute.value.displayName}}\n action={\n \n \n \n }\n />\n \n
\n
\n );\n }\n}\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n marginBottom: theme.spacing(2),\n '-webkit-touch-callout': 'none' /* iOS Safari */,\n '-webkit-user-select': 'none' /* Safari */,\n ' -khtml-user-select': 'none' /* Konqueror HTML */,\n '-moz-user-select': 'none' /* Firefox */,\n '-ms-user-select': 'none' /* Internet Explorer/Edge */,\n 'user-select': 'none',\n },\n card: {\n width: '100%',\n marginRight: theme.spacing(3),\n },\n cardRoot: {\n padding: `${theme.spacing()}px !important`,\n marginBottom: 0,\n },\n headerRoot: {\n padding: `0 ${theme.spacing()}px 0 ${theme.spacing()}px !important`,\n height: theme.spacing(8),\n alignContent: 'flex-start',\n },\n headerContent: {\n alignSelf: 'flex-start',\n },\n removeCircle: {\n height: theme.spacing(2),\n width: theme.spacing(2),\n color: theme.colors.gray1,\n },\n dragHandleIcon: {\n marginBottom: theme.spacing(),\n height: theme.spacing(2.5),\n width: theme.spacing(2.5),\n cursor: 'move',\n color: theme.colors.gray1,\n },\n iconContainer: {\n marginRight: theme.spacing(),\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(),\n },\n arrowIcon: {\n cursor: 'pointer',\n color: theme.colors.gray1,\n height: theme.spacing(2.5),\n width: theme.spacing(2.5),\n },\n});\n\nexport default withStyles(styles)(AttributeCard);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport { SortableHandle } from 'react-sortable-hoc';\nimport classNames from 'classnames';\nimport IconButton from '@material-ui/core/IconButton';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport ReorderIcon from '@material-ui/icons/DragHandle';\nimport Collapse from '@material-ui/core/Collapse';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n marginTop: theme.spacing(1),\n width: '100%',\n height: theme.spacing(4.25),\n alignItems: 'center',\n backgroundColor: theme.colors.grayBlue,\n },\n secondLevel: {\n backgroundColor: theme.colors.grayBlue,\n },\n fieldName: {\n marginLeft: theme.spacing(2),\n },\n fieldNameContainer: {\n flex: 1,\n },\n rightIconsContainer: {\n marginRight: theme.spacing(1),\n },\n removeCircleIconButton: {\n '&:hover': {\n cursor: 'pointer',\n },\n },\n removeCircleIcon: {\n height: 16,\n width: 16,\n color: theme.colors.gray1,\n },\n dragHandleIcon: {\n marginLeft: theme.spacing(),\n cursor: 'move',\n color: theme.colors.gray1,\n },\n});\n\nconst SortableHandleElem = SortableHandle(({ className }) => );\n\nclass Field extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n attribute: PropTypes.object.isRequired,\n secondLevel: PropTypes.bool,\n removeSection: PropTypes.func,\n };\n\n state = {\n collapse: true,\n };\n\n handleRemoveClick = () => {\n this.setState({ collapse: false });\n };\n\n handleOnExited = () => {\n this.props.removeSection(this.props.attribute.name);\n };\n\n render() {\n const { classes, removeSection, attribute, secondLevel } = this.props;\n\n return (\n \n
\n \n
\n \n {attribute.value.displayName}\n \n
\n
\n {removeSection && (\n \n \n \n )}\n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(Field);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { SortableContainer, SortableElement, SortableHandle, arrayMove } from 'react-sortable-hoc';\n\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _get from 'lodash/get';\nimport _partition from 'lodash/partition';\n\nimport AttributeSelector from 'components/attributeSelector/Local';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport ReorderIcon from '@material-ui/icons/Reorder';\nimport ArrowUp from '@material-ui/icons/ArrowUpward';\nimport ArrowDown from '@material-ui/icons/ArrowDownward';\nimport Typography from '@material-ui/core/Typography';\n\nimport Field from '../Field';\nimport CategoryCardChild from 'pages/ProfileLayout/components/CategoryCard';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport classNames from 'classnames';\n\nconst SortableHandleElem = SortableHandle(({ className }) => );\n\nconst SortableList = SortableContainer(\n ({ category, handleChange, onLayoutChange, getValidAttributes, removeSection, typeKey }) => {\n if (category.value.children === undefined) {\n return No Sub Fields / Categories;\n }\n return (\n
\n {category.value.children.map((value, index) => {\n return (\n \n );\n })}\n
\n );\n },\n);\n\nconst SortableItemElem = SortableElement(\n ({\n key,\n layout,\n value,\n handleChange,\n category,\n onLayoutChange,\n getValidAttributes,\n removeSection,\n itemIndex,\n typeKey,\n }) => {\n if (value.type === 'field') {\n return (\n
\n \n
\n );\n } else if (value.type === 'category') {\n return (\n
\n \n
\n );\n }\n },\n);\n\nclass CategoryCard extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n category: PropTypes.object.isRequired,\n handleChange: PropTypes.func.isRequired,\n getValidAttributes: PropTypes.func.isRequired,\n entityType: PropTypes.object.isRequired,\n attributeTempValue: PropTypes.object.isRequired,\n removeSection: PropTypes.func.isRequired,\n secondLevelCategory: PropTypes.bool,\n onLayoutChange: PropTypes.func.isRequired,\n layout: PropTypes.array.isRequired,\n itemIndex: PropTypes.number.isRequired,\n typeKey: PropTypes.string.isRequired,\n };\n\n state = {\n open: false,\n availableAttributes: [],\n collapse: true,\n };\n\n componentDidMount() {\n const availableAttributes = this.props.getValidAttributes(this.props.category.name);\n this.setState({ availableAttributes });\n }\n\n onSortEnd = ({ oldIndex, newIndex }) => {\n let updatedCategory = _cloneDeep(this.props.category);\n const updatedChildren = arrayMove(updatedCategory.value.children, oldIndex, newIndex);\n updatedCategory.value.children = updatedChildren;\n this.props.handleChange(updatedCategory);\n };\n\n getAttributeKey(attribute) {\n return attribute.id;\n }\n\n getAttributeDisplayName(attribute) {\n return attribute.displayName;\n }\n\n handleDown = () => {\n const { itemIndex, onLayoutChange } = this.props;\n onLayoutChange({ oldIndex: itemIndex, newIndex: itemIndex + 1 });\n };\n\n handleUp = () => {\n const { itemIndex, onLayoutChange } = this.props;\n onLayoutChange({ oldIndex: itemIndex, newIndex: itemIndex - 1 });\n };\n\n saveAttributes = attributes => {\n const attributeNames = Object.keys(attributes);\n const { entityType, attributeTempValue, category, handleChange } = this.props;\n let attributeObjects = [];\n let tempCategory = _cloneDeep(category);\n const fieldKeys = Object.keys(entityType._fields);\n fieldKeys.forEach(key => {\n attributeNames.forEach(attributeName => {\n if (entityType._fields[key].id === attributeName) {\n attributeObjects.push(entityType._fields[key]);\n }\n });\n });\n attributeObjects.forEach(object => {\n const attributeTemplate = _cloneDeep(attributeTempValue);\n attributeTemplate.name = object.objectKey;\n attributeTemplate.type = 'field';\n attributeTemplate.value.id = object.id;\n attributeTemplate.value.displayName = object.displayName;\n attributeTemplate.value.entityField = object.entityField;\n attributeTemplate.value.children = undefined;\n const createdAttribute = attributeTemplate;\n tempCategory.value.children.push(createdAttribute);\n });\n handleChange(tempCategory);\n };\n\n handleRemoveClick = () => {\n this.setState({ collapse: false });\n };\n\n handleOnExited = () => {\n this.props.removeSection(this.props.category.name);\n };\n\n handleRemoveChildClick = childCategoryId => {\n let newCategory = _cloneDeep(this.props.category);\n const removeIndex = newCategory.value.children.findIndex(\n child => child.name === childCategoryId,\n );\n newCategory.value.children.splice(removeIndex, 1);\n this.props.handleChange(newCategory);\n };\n\n handleChildChange = updatedCategory => {\n let newUpdatedCategory = _cloneDeep(this.props.category);\n const childIndex = newUpdatedCategory.value.children.findIndex(\n child => child.name === updatedCategory.name,\n );\n newUpdatedCategory.value.children[childIndex] = updatedCategory;\n this.props.handleChange(newUpdatedCategory);\n };\n\n reorderList = () => {\n const reducedAttributes = this.state.availableAttributes.reduce((acc, value) => {\n const valueAlreadySelected = this.props.category.value.children.find(\n child => value.id === child.value.id,\n );\n if (!valueAlreadySelected) {\n acc.push(value);\n }\n return acc;\n }, []);\n\n const [requiredItems, nonRequiredItems] = _partition(reducedAttributes, function(o) {\n return _get(o, 'required', false);\n });\n\n nonRequiredItems.sort((a, b) =>\n a.displayName.toLowerCase().localeCompare(b.displayName.toLowerCase()),\n );\n return requiredItems.concat(nonRequiredItems);\n };\n\n displayRemoveButton = () => {\n const { classes } = this.props;\n\n return (\n \n \n \n );\n };\n\n render() {\n const { classes, itemIndex, layout, category, secondLevelCategory, typeKey } = this.props;\n\n const childrenAreAllFields = !_get(category, 'value.children', []).some(\n child => child.type === 'category',\n );\n\n return (\n \n
\n
\n \n {layout && itemIndex !== 0 && (\n \n )}\n {layout && itemIndex !== layout.length - 1 && (\n \n )}\n
\n \n \n {category.value.displayName}\n \n }\n action={\n
\n {childrenAreAllFields && (\n \n )}\n {this.displayRemoveButton()}\n
\n }\n />\n \n
\n \n
\n \n \n
\n
\n );\n }\n}\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n marginBottom: theme.spacing(2),\n '-webkit-touch-callout': 'none' /* iOS Safari */,\n '-webkit-user-select': 'none' /* Safari */,\n ' -khtml-user-select': 'none' /* Konqueror HTML */,\n '-moz-user-select': 'none' /* Firefox */,\n '-ms-user-select': 'none' /* Internet Explorer/Edge */,\n 'user-select': 'none',\n },\n card: {\n width: '100%',\n marginRight: theme.spacing(3),\n overflow: 'visible',\n padding: `${theme.spacing()}px !important`,\n },\n cardRoot: {\n marginBottom: 0,\n },\n secondLevelCategory: {\n border: `1px solid ${theme.colors.grayBlue}`,\n boxShadow: `0px 2px 4px 0px rgba(33, 33, 33, 0.07)`,\n marginRight: 0,\n },\n secondLevelCategoryHeader: {\n padding: `0 ${theme.spacing()}px 0 ${theme.spacing()}px !important`,\n },\n cardContainer: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n categoryCardContent: {\n padding: `0 ${theme.spacing()}px ${theme.spacing()}px ${theme.spacing()}px !important`,\n },\n header: {\n padding: theme.spacing(),\n },\n align: {\n display: 'flex',\n alignItems: 'center',\n },\n action: {\n alignSelf: 'flex-end',\n paddingRight: theme.spacing(),\n },\n removeCircleIcon: {\n height: theme.spacing(2),\n width: theme.spacing(2),\n },\n dragHandleIcon: {\n height: theme.spacing(2.5),\n width: theme.spacing(2.5),\n marginTop: theme.spacing(2),\n cursor: 'move',\n color: theme.colors.gray1,\n },\n attributeSelector: {\n zIndex: theme.zIndex.surface,\n },\n attributeSelectorRoot: {\n zIndex: 'auto',\n },\n attributesList: {\n fontSize: 16,\n },\n iconContainer: {\n marginRight: theme.spacing(),\n display: 'flex',\n flexDirection: 'column',\n },\n arrowIcon: {\n cursor: 'pointer',\n color: theme.colors.gray1,\n height: theme.spacing(2.5),\n width: theme.spacing(2.5),\n },\n icon: {\n color: theme.colors.gray1,\n },\n});\n\nexport default withStyles(styles)(CategoryCard);\n","import React, { memo } from 'react';\nimport _get from 'lodash/get';\n\n// Component\nimport CategoryCard from './CategoryCard';\nimport useEntityTypes from 'helpers/useEntityTypes';\n\nfunction Container(props) {\n const { typeKey } = props;\n const entityTypes = useEntityTypes();\n const entityType = _get(entityTypes, typeKey);\n\n const globalTempValue = {\n name: '',\n type: '',\n value: {\n id: '',\n displayName: '',\n entityField: '',\n children: [],\n },\n };\n\n return (\n \n );\n}\n\nexport default memo(Container);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Lock from '@material-ui/icons/LockOutlined';\nimport Tooltip from '@material-ui/core/Tooltip';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => ({\n root: {\n marginRight: theme.spacing(2),\n display: 'flex',\n flexDirection: 'row',\n marginBottom: theme.spacing(2),\n },\n card: {\n width: '100%',\n overflow: 'visible',\n padding: `${theme.spacing()}px !important`,\n },\n cardHeaderRoot: {\n padding: `${theme.spacing()}px !important`,\n },\n cardContainer: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n action: {\n alignSelf: 'flex-end',\n paddingRight: theme.spacing(),\n },\n cardContentRoot: {\n padding: `0 ${theme.spacing()}px ${theme.spacing()}px ${theme.spacing()}px !important`,\n },\n icon: {\n color: theme.colors.gray1,\n },\n});\n\nclass CategoryCard extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n };\n\n render() {\n const { classes, children } = this.props;\n\n return (\n
\n \n \n \n \n }\n />\n \n {children}\n \n \n
\n );\n }\n}\n\nexport default withStyles(styles)(CategoryCard);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Typography from '@material-ui/core/Typography';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport Lock from '@material-ui/icons/LockOutlined';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n marginTop: theme.spacing(1),\n width: '100%',\n height: theme.spacing(4.25),\n alignItems: 'center',\n backgroundColor: theme.palette.common.white,\n },\n secondLevel: {\n backgroundColor: theme.colors.grayBlue,\n },\n fieldName: {\n marginLeft: theme.spacing(2),\n },\n fieldNameContainer: {\n flex: 1,\n },\n iconContainer: {\n marginLeft: theme.spacing(1.5),\n width: theme.spacing(1.75),\n },\n lock: {\n color: theme.colors.gray1,\n },\n});\n\nclass MockField extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n secondLevel: PropTypes.bool,\n removeSection: PropTypes.func,\n displayName: PropTypes.string,\n };\n\n render() {\n const { classes, secondLevel, displayName } = this.props;\n\n return (\n
\n
\n \n
\n
\n \n {displayName}\n \n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(MockField);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _isEqual from 'lodash/isEqual';\nimport _omit from 'lodash/omit';\nimport shortId from 'shortid';\n\n// - Components\nimport Button from '@material-ui/core/Button';\nimport AddSectionDialog from './components/AddSectionDialog';\nimport AttributeCard from './components/AttributeCard';\nimport CategoryCard from './components/CategoryCard';\nimport SidebarCard from './components/SidebarCard';\nimport MockField from './components/MockField';\nimport Field from './components/Field';\nimport { SortableContainer, SortableElement, arrayMove } from 'react-sortable-hoc';\nimport Loader from 'components/Loader';\nimport { Prompt } from 'react-router';\n\n// - Page\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageTitle from 'components/Page/PageTitle';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\n\n// - Loader\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nconst SortableList = SortableContainer(\n ({\n layout,\n layoutType,\n handleChange,\n onLayoutChange,\n getValidAttributes,\n removeSection,\n onSectionSortEnd,\n typeKey,\n }) => {\n return (\n
\n {layout.map((item, index) => {\n return (\n \n );\n })}\n
\n );\n },\n);\n\nconst SortableItemElem = SortableElement(\n ({\n value,\n itemIndex,\n layout,\n layoutType,\n handleChange,\n getValidAttributes,\n removeSection,\n onSectionSortEnd,\n onLayoutChange,\n typeKey,\n }) => {\n if (layoutType === 'sidebarLayout') {\n return (\n
\n \n
\n );\n } else if (value.type === 'category') {\n return (\n \n );\n } else if (value.type === 'field') {\n return (\n \n );\n }\n return null;\n },\n);\n\nclass ProfileLayout extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n entityType: PropTypes.object.isRequired,\n globalConfig: PropTypes.object.isRequired,\n entityTypesStatus: PropTypes.number,\n globalStatus: PropTypes.number,\n getValidAttributes: PropTypes.func.isRequired,\n layout: PropTypes.array.isRequired,\n layoutItemTemplate: PropTypes.object.isRequired,\n handleUpdateLayout: PropTypes.func.isRequired,\n sidebarLayout: PropTypes.array.isRequired,\n typeKey: PropTypes.string.isRequired,\n isIndependentPage: PropTypes.bool.isRequired,\n };\n\n constructor(props) {\n super(props);\n const currentLayout = [...props.layout];\n const sidebarLayout = [...props.sidebarLayout];\n const categories = _cloneDeep(props.entityType._categories);\n this.state = {\n currentLayout,\n sidebarLayout,\n categories,\n open: false,\n dirty: false,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (\n !_isEqual(prevProps.layout, this.props.layout) ||\n !_isEqual(prevProps.sidebarLayout, this.props.sidebarLayout)\n ) {\n this.setState({ currentLayout: this.props.layout, sidebarLayout: this.props.sidebarLayout });\n }\n }\n\n updateLayout = () => {\n const { typeKey } = this.props;\n const data = !_isEqual(this.state.currentLayout, this.props.layout)\n ? {\n entityField: typeKey,\n layoutKey: typeKey === PERSON_ENTITY_TYPE_KEY ? 'web_profile' : 'profile-info',\n // (notes - pearl) omitting shortId before sending data to api\n children: this.state.currentLayout.map(l => _omit(l, 'shortId')),\n }\n : null;\n\n const sidebarData =\n typeKey === PERSON_ENTITY_TYPE_KEY &&\n !_isEqual(this.state.sidebarLayout, this.props.sidebarLayout)\n ? {\n entityField: typeKey,\n layoutKey: 'profile-people',\n children: this.state.sidebarLayout,\n }\n : null;\n\n const layoutsToUpdate = [...(data ? [data] : []), ...(sidebarData ? [sidebarData] : [])];\n this.props.handleUpdateLayout(layoutsToUpdate);\n };\n\n handleChange = updatedCategory => {\n this.state.currentLayout.forEach((layoutItem, index) => {\n if (!layoutItem.name) {\n if (layoutItem.shortId === updatedCategory.shortId) {\n this.setState(prevState => {\n const currentLayout = [...prevState.currentLayout];\n currentLayout[index] = updatedCategory;\n return { currentLayout };\n });\n }\n } else if (layoutItem.name === updatedCategory.name) {\n this.setState(prevState => {\n const currentLayout = [...prevState.currentLayout];\n currentLayout[index] = updatedCategory;\n return { currentLayout };\n });\n }\n });\n };\n\n handleAddAttributes = attributes => {\n let newLayout = _cloneDeep(this.state.currentLayout);\n const createdAttributes = attributes.map(attribute => {\n const attributeTemplate = _cloneDeep(this.props.layoutItemTemplate);\n attributeTemplate.name = attribute.objectKey;\n attributeTemplate.type = 'field';\n attributeTemplate.value.id = attribute.id;\n attributeTemplate.value.displayName = attribute.displayName;\n attributeTemplate.value.entityField = attribute.entityField;\n attributeTemplate.value.children = undefined;\n return attributeTemplate;\n });\n createdAttributes.forEach(createdAttribute => {\n newLayout.push(createdAttribute);\n });\n this.setState({ currentLayout: newLayout });\n };\n\n handleCreateCategory = categoryName => {\n const newLayout = _cloneDeep(this.state.currentLayout);\n const categoryTemplate = _cloneDeep(this.props.layoutItemTemplate);\n // (notes - pearl) name needs to be undefined or one that exists in db\n categoryTemplate.name = undefined;\n // (notes - pearl) shortId is for FE use only, to identify the category being edited\n categoryTemplate.shortId = shortId();\n categoryTemplate.type = 'category';\n categoryTemplate.value.id = undefined;\n categoryTemplate.value.displayName = categoryName;\n categoryTemplate.value.entityField = this.props.typeKey;\n categoryTemplate.value.children = [];\n newLayout.push(categoryTemplate);\n this.setState({ currentLayout: newLayout });\n };\n\n handleRemoveSection = sectionId => {\n let newLayout = _cloneDeep(this.state.currentLayout);\n const removeIndex = newLayout.findIndex(layoutItem => sectionId === layoutItem.name);\n newLayout.splice(removeIndex, 1);\n this.setState({ currentLayout: newLayout });\n };\n\n onSortEnd = ({ oldIndex, newIndex }, type) => {\n this.setState(state => {\n return { [type]: arrayMove(state[type], oldIndex, newIndex) };\n });\n };\n\n onSectionSortEnd = (sectionIndex, { oldIndex, newIndex }) => {\n const section = this.state.currentLayout[sectionIndex];\n section.value.children = arrayMove(section.value.children, oldIndex, newIndex);\n this.setState({ currentLayout: this.state.currentLayout });\n };\n\n handleClickOpen = () => {\n this.setState({ open: true });\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n resetLayout = () => {\n this.setState({ currentLayout: this.props.layout, sidebarLayout: this.props.sidebarLayout });\n };\n\n render() {\n const dirty =\n !_isEqual(this.props.layout, this.state.currentLayout) ||\n !_isEqual(this.props.sidebarLayout, this.state.sidebarLayout);\n\n const { classes, entityTypesStatus } = this.props;\n\n return (\n \n \n Add Sections\n \n }\n />\n
\n
\n this.onSortEnd(value, 'currentLayout')}\n onLayoutChange={value => this.onSortEnd(value, 'currentLayout')}\n onSectionSortEnd={this.onSectionSortEnd}\n useDragHandle\n handleChange={this.handleChange}\n getValidAttributes={this.props.getValidAttributes}\n removeSection={this.handleRemoveSection}\n typeKey={this.props.typeKey}\n />\n
\n
\n {!this.props.isIndependentPage && (\n \n \n {this.props.typeKey === PERSON_ENTITY_TYPE_KEY && (\n <>\n \n this.onSortEnd(value, 'sidebarLayout')}\n onSectionSortEnd={this.onSectionSortEnd}\n useDragHandle\n handleChange={value => this.handleChange(value, 'sidebarLayout')}\n getValidAttributes={this.props.getValidAttributes}\n removeSection={this.handleRemoveSection}\n layoutType={'sidebarLayout'}\n typeKey={PERSON_ENTITY_TYPE_KEY}\n />\n \n )}\n \n )}\n
\n
\n \n \n \n \n \n \n
\n );\n }\n}\n\nconst styles = theme => ({\n sortableListContainer: {\n display: 'flex',\n width: '100%',\n },\n leftColumn: {\n minWidth: 500,\n marginRight: theme.spacing(2),\n flex: '1 1 auto',\n },\n rightColumn: {\n minWidth: 340,\n flex: '1 1 auto',\n },\n statusRoot: {\n position: 'static',\n },\n addSectionButton: {\n marginTop: theme.spacing(2),\n },\n});\n\nexport default withStyles(styles)(ProfileLayout);\n","import React, { memo, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useStatus } from 'resift';\nimport _get from 'lodash/get';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _isNil from 'lodash/isNil';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport useGlobalConfig from 'helpers/useGlobalConfig';\n\n// Component\nimport ProfileLayout from './ProfileLayout';\n\n// Actions\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport makeGlobalConfigFetch from 'store/configuration/actions/globalConfigFetch';\nimport makeUpdateLayoutFetch from './fetches/updateLayoutFetch';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\n\nfunction Container(props) {\n const globalConfigFetch = makeGlobalConfigFetch();\n const entityTypesFetch = makeEntityTypesFetch();\n\n const entityTypesStatus = useStatus(entityTypesFetch);\n const globalStatus = useStatus(globalConfigFetch);\n\n const entityTypes = useEntityTypes();\n const { typeKey } = props;\n const entityType = _get(entityTypes, typeKey);\n const globalConfig = useGlobalConfig();\n\n const isIndependentPage =\n _isNil(_get(entityType, 'personClientFieldId', null)) && typeKey !== PERSON_ENTITY_TYPE_KEY;\n const webProfileLayoutKey = typeKey === PERSON_ENTITY_TYPE_KEY ? 'web_profile' : 'profile-info';\n const webProfileLayout = _get(entityType, `_layouts.${webProfileLayoutKey}`, []);\n const profilePeopleLayout =\n typeKey === PERSON_ENTITY_TYPE_KEY ? _get(entityType, '_layouts.profile-people', []) : [];\n const updateLayoutFetch = makeUpdateLayoutFetch();\n\n const globalTempValue = {\n name: '',\n type: '',\n value: {\n id: '',\n displayName: '',\n entityField: '',\n children: [],\n },\n };\n const dispatch = useDispatch();\n\n const handleUpdateLayout = async data => {\n await dispatch(updateLayoutFetch(data));\n dispatch(entityTypesFetch());\n };\n\n // TODO Tyler:Revisit, same function in Category Card index.\n function getValidAttributes(category) {\n const categoryConfigObject = findCategory(category);\n const globalCategory = _get(categoryConfigObject, 'globalCategory', 'basic');\n let globalCategoryChildren = [];\n let matchingAttributes = [];\n globalConfig.categories[globalCategory].children.forEach(child => {\n globalCategoryChildren.push(child.name);\n });\n\n const fieldKeys = Object.keys(entityType._fields);\n globalCategoryChildren.push(BASE_FIELD_PAGE);\n globalCategoryChildren.push(BASE_FIELD_PAGE_COLLECTION);\n fieldKeys.forEach(fieldKey => {\n const baseField = entityType._fields[fieldKey].baseField;\n globalCategoryChildren.forEach(child => {\n if (child === baseField && !entityType._fields[fieldKey].objectKey.includes('.')) {\n matchingAttributes.push(entityType._fields[fieldKey]);\n }\n });\n });\n return matchingAttributes;\n }\n\n function findCategory(name) {\n const categoryKeys = Object.keys(entityType._categories);\n const categoryName = categoryKeys.find(field => field === name);\n const foundCategory = entityType._categories[categoryName];\n return foundCategory;\n }\n\n function buildCategory(value) {\n let tempValue = _cloneDeep(globalTempValue);\n const foundCategory = findCategory(value.name);\n tempValue.name = value.name;\n tempValue.type = value.type;\n tempValue.value.id = foundCategory.id;\n tempValue.value.displayName = foundCategory.displayName;\n tempValue.value.entityField = foundCategory.entityField;\n foundCategory.children.forEach(child => {\n if (child.type === 'category') {\n const newChild = buildCategory(child);\n tempValue.value.children.push(newChild);\n } else if (child.type === 'field') {\n const newChild = buildField(child);\n tempValue.value.children.push(newChild);\n }\n });\n return tempValue;\n }\n\n function findField(name) {\n const fieldKeys = Object.keys(entityType._fields);\n const fieldName = fieldKeys.find(field => field === name);\n const foundField = entityType._fields[fieldName];\n return foundField;\n }\n\n function buildField(value) {\n let tempValue = _cloneDeep(globalTempValue);\n const foundField = findField(value.name);\n tempValue.name = value.name;\n tempValue.type = value.type;\n tempValue.value.id = foundField.id;\n tempValue.value.displayName = foundField.displayName;\n tempValue.value.entityField = foundField.entityField;\n tempValue.value.children = _get(foundField, 'children');\n return tempValue;\n }\n\n function buildBasicLayoutObject(layout) {\n const newBasicLayout = [];\n let returnValue;\n layout.forEach(value => {\n if (value.type === 'category') {\n returnValue = buildCategory(value);\n } else if (value.type === 'field') {\n returnValue = buildField(value);\n }\n newBasicLayout.push(returnValue);\n });\n return newBasicLayout;\n }\n\n const basicLayout = useMemo(() => buildBasicLayoutObject(webProfileLayout), [webProfileLayout]);\n const sidebarLayout = useMemo(() => buildBasicLayoutObject(profilePeopleLayout), [\n profilePeopleLayout,\n ]);\n\n return (\n \n );\n}\n\nexport default memo(Container);\n","import React, { useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport { useDispatch } from 'react-redux';\nimport makeGetUserFieldsFetch from 'fetches/makeGetUserFieldsFetch';\n\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Attributes from 'pages/Attributes';\nimport ProfileLayoutPage from 'pages/ProfileLayout';\nimport SiftBotPage from 'pages/SiftBot';\nimport Page from 'components/Page/newComponents';\nimport Breadcrumbs from 'components/Page/Breadcrumbs';\nimport PageTitle from 'components/Page/PageTitle';\n\nimport { PERSON_PROFILE_URL } from 'components/Router/consts';\n\nconst tabTypes = {\n ATTRIBUTES: 'attributes',\n LAYOUT: 'layout',\n PROFILE_COMPLETION: 'sift-bot',\n};\n\nfunction PersonProfilesPage() {\n const dispatch = useDispatch();\n const history = useHistory();\n let { tab } = useParams<{ tab?: string }>();\n const currentTab = tab || tabTypes.ATTRIBUTES;\n const makeGetUserFields = makeGetUserFieldsFetch();\n\n useEffect(() => {\n dispatch(makeGetUserFields());\n document.title = 'Person Profiles';\n }, []);\n\n const handleTabChange = (value: string) => {\n history.push(`/admin${PERSON_PROFILE_URL}/${value}`);\n };\n\n return (\n \n \n \n handleTabChange(value)}>\n \n \n \n \n
\n
{currentTab === tabTypes.ATTRIBUTES && }
\n
{currentTab === tabTypes.LAYOUT && }
\n
{currentTab === tabTypes.PROFILE_COMPLETION && }
\n
\n
\n );\n}\n\nexport default PersonProfilesPage;\n","import { defineFetch } from 'resift';\nimport * as Types from 'pages/Pages/typings';\n\nexport default defineFetch({\n displayName: 'entity types fetch',\n make: (entityTypeId: string) => ({\n key: [],\n request: ({ name, description, isActive, settings }: Types.UpdateEntity) => ({ http }: any) =>\n http({\n method: 'PUT',\n route: `/entity-types/${entityTypeId}`,\n data: {\n name,\n description,\n isActive,\n settings,\n },\n }),\n }),\n});\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Entity Type Status',\n make: () => ({\n request: (entityId: string) => ({ http }: any) =>\n http({\n method: 'GET',\n route: `/entity-types/${entityId}/status`,\n }),\n }),\n});\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Update Category Field',\n make: () => ({\n key: [],\n request: (fieldId: string, data: any) => async ({ http }) => {\n await http({\n method: 'PUT',\n route: `/fields/${fieldId}`,\n data,\n });\n },\n }),\n});\n","import { defineFetch } from 'resift';\n\nconst makeGetConfiguration = defineFetch({\n displayName: 'Get entity type configuration',\n make: (entityTypeTypeKey: string) => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/configurations/${entityTypeTypeKey}`,\n }),\n }),\n});\n\nexport default makeGetConfiguration;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Delete Entity',\n make: () => ({\n request: (entityId: string) => ({ http }) =>\n http({\n method: 'DELETE',\n route: `/entities/${entityId}`,\n }),\n }),\n});\n","import { defineFetch } from 'resift';\n\nexport interface EntitiesRequestQuery {\n entityTypeId: string;\n sortBy?: 'name' | 'editors' | 'members' | 'lastEditedAt';\n sortDirection?: 'asc' | 'desc' | null;\n nameQuery?: string | null;\n page?: number;\n pageSize?: number;\n filterOn?: 'edited' | 'unedited' | null;\n}\n\ninterface EntitiesRequest {\n query?: EntitiesRequestQuery;\n}\n\nexport default defineFetch({\n displayName: 'entities list fetch',\n make: () => ({\n request: ({ query }: EntitiesRequest) => ({ http }: any) =>\n http({\n method: 'GET',\n route: '/entities',\n query,\n }),\n }),\n});\n","import React, { useState, useEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { useStatus, isLoading, isNormal, isError } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\nimport makeDeleteEntity from 'fetches/makeDeleteEntity';\nimport showSnackbar from 'helpers/showSnackbar';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport TextField from '@material-ui/core/TextField';\nimport CancelButton from 'components/Page/CancelButton';\nimport LoadingButton from 'atoms/LoadingButton';\n\ninterface Props {\n name: string;\n open: boolean;\n subtitle: string;\n onSetOpen: (state: boolean) => void;\n onDelete: () => void;\n}\n\nfunction DeletePageModal({ name, open, subtitle, onSetOpen, onDelete }: Props) {\n const classes = useStyles();\n const deleteEntity = makeDeleteEntity();\n const status = useStatus(deleteEntity);\n const prevStatus = usePrevious(status);\n const [nameInput, setNameInput] = useState('');\n\n const handleNameChange = (e: React.ChangeEvent) => {\n setNameInput(e.target.value);\n };\n\n const handleCancel = () => {\n setNameInput('');\n onSetOpen(false);\n };\n\n showSnackbar({\n status: status,\n message: 'Page deleted successfully',\n errorMessage: 'Page deletion was not successful. Please try again.',\n variant: 'success',\n });\n\n useEffect(() => {\n if (isLoading(prevStatus) && isNormal(status)) {\n onSetOpen(false);\n setNameInput('');\n } else if (isLoading(prevStatus) && isError(status)) {\n setNameInput('');\n }\n }, [status, prevStatus]);\n\n return (\n \n Are you sure you want to delete \"{name}\" page?\n \n {subtitle}\n \n \n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n deleteButton: {\n backgroundColor: theme.palette.error.main,\n color: theme.palette.common.white,\n },\n marginBottom: {\n marginBottom: theme.spacing(3),\n },\n loadingButtonSpinner: {\n color: theme.palette.common.white,\n },\n}));\n\nexport default DeletePageModal;\n","import { defineFetch } from 'resift';\nimport * as Types from 'pages/Pages/typings';\n\nconst makeCreateEntity = defineFetch({\n displayName: 'Entities Batch Action',\n make: () => ({\n request: ({ actions, entityTypeId }: Types.BatchEntityActionRequest) => ({ http }) =>\n http({\n method: 'PUT',\n route: '/entities',\n data: { entityTypeId, actions },\n }),\n }),\n});\n\nconst createEntity = makeCreateEntity();\n\nexport default createEntity;\n","import _split from 'lodash/split';\n\nexport default (value: string | null | undefined): string[] | null => {\n let options: string[] = [];\n if (value && value.length) {\n const optionsSplit = _split(value, '\\n');\n optionsSplit.forEach(option => {\n const optionsCommaSplit = _split(option, ',');\n optionsCommaSplit.forEach(splitCommaOption => {\n const optionSpaceSplit = splitCommaOption.trim();\n if (optionSpaceSplit.length) {\n options.push(optionSpaceSplit);\n }\n });\n });\n options.map(option => {\n option.split(' ').join('');\n option.split(',').join('');\n option.split('\\n').join('');\n return option;\n });\n return options;\n }\n return null;\n};\n","import React, { useState, useEffect } from 'react';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { useStatus, useData, isLoading, isNormal, isError, combineStatuses } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\nimport { useDispatch } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport showSnackbar from 'helpers/showSnackbar';\nimport createEntity from 'fetches/createEntity';\nimport convertStringToArrayOfStrings from 'helpers/convertStringToArrayOfStrings';\nimport * as Types from 'pages/Pages/typings';\nimport makeGetEntitiesListFetch from 'fetches/makeGetEntitiesListFetch';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport TextField from '@material-ui/core/TextField';\nimport CancelButton from 'components/Page/CancelButton';\nimport LoadingButton from 'atoms/LoadingButton';\n\ninterface Props {\n open: boolean;\n onSetOpen: (state: boolean) => void;\n}\n\nfunction CreatePageModal({ open, onSetOpen }: Props) {\n const classes = useStyles();\n let { entityTypeKey } = useParams<{ entityTypeKey: string }>();\n const dispatch = useDispatch();\n const createEntityStatus = useStatus(createEntity);\n const createEntityData = useData(createEntity);\n const prevCreateEntityStatus = usePrevious(createEntityStatus);\n const [pageNameInput, setPageNameInput] = useState('');\n const actions = _get(createEntityData, 'actions', []);\n const numberOfEntitiesCreated = actions.length;\n\n // entities list\n const makeGetEntitiesList = makeGetEntitiesListFetch();\n const entitiesListStatus = useStatus(makeGetEntitiesList);\n\n const combinedStatus = combineStatuses(createEntityStatus, entitiesListStatus);\n\n const handleCreatePage = async () => {\n const nameInputArray = convertStringToArrayOfStrings(pageNameInput);\n const actions: Types.BatchAction[] | null =\n nameInputArray &&\n nameInputArray.map(name => ({\n type: 'create',\n data: { name, entityTypeId: entityTypeKey },\n }));\n actions && (await dispatch(createEntity({ entityTypeId: entityTypeKey, actions })));\n dispatch(makeGetEntitiesList({ query: { entityTypeId: entityTypeKey } }));\n };\n\n const handlePageNameChange = (e: React.ChangeEvent) => {\n setPageNameInput(e.target.value);\n };\n\n const handleCancel = () => {\n if (!isLoading(combinedStatus)) {\n onSetOpen(false);\n setPageNameInput('');\n }\n };\n\n useEffect(() => {\n if (isLoading(prevCreateEntityStatus) && isNormal(combinedStatus)) {\n onSetOpen(false);\n setPageNameInput('');\n } else if (isLoading(prevCreateEntityStatus) && isError(createEntityStatus)) {\n setPageNameInput('');\n }\n }, [prevCreateEntityStatus, combinedStatus, createEntityStatus]);\n\n showSnackbar({\n status: createEntityStatus,\n message: `${numberOfEntitiesCreated} new pages created.`,\n errorMessage: _get(createEntityData, 'errorMessage', 'There was an error creating your pages'),\n variant: 'success',\n });\n\n return (\n \n Create New Pages\n \n \n Enter one or more names of pages to be created, separated by comma. If you include a name\n where an associated page already exists, it will be ignored.\n \n \n \n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n marginBottom: {\n marginBottom: theme.spacing(3),\n },\n loadingButtonSpinner: {\n color: theme.palette.common.white,\n },\n}));\n\nexport default CreatePageModal;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst NoPagesIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default NoPagesIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst CreatingFilesIcon: React.ComponentType = 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\nexport default CreatingFilesIcon;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classnames from 'classnames';\n\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport NoPagesIcon from 'components/Icons/NoPages';\nimport CreatingFilesIcon from 'components/Icons/CreatingFiles';\n\ninterface Props {\n className?: string;\n migrationInProgress?: boolean;\n shouldRenderButton?: boolean;\n onClick: () => void;\n}\n\nfunction NoPagesView({\n className,\n migrationInProgress = false,\n shouldRenderButton = false,\n onClick,\n}: Props) {\n const classes = useStyles();\n const title = migrationInProgress ? 'Pages are being created' : 'No pages exist yet';\n const buttonTitle = migrationInProgress ? 'Reload' : 'New Pages';\n const subtitle = migrationInProgress\n ? 'Your pages are being created from an existing attribute, check back in a few minutes'\n : \"You haven't created any pages yet. You can create pages by...\";\n\n const icon = migrationInProgress ? (\n \n ) : (\n \n );\n const NewPagesButton = (\n \n );\n\n return (\n \n \n {icon}\n {title}\n \n {subtitle}\n \n {shouldRenderButton ? (\n NewPagesButton\n ) : (\n \n
{NewPagesButton}
\n \n )}\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n noResultsCard: {\n marginTop: theme.spacing(3),\n },\n noResultsCardContent: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n minHeight: 400,\n justifyContent: 'center',\n },\n creatingFilesIcon: {\n width: 204,\n height: 211,\n },\n noResultsIcon: {\n width: 204,\n height: 211,\n },\n marginBottom: {\n marginBottom: theme.spacing(3),\n },\n title: {\n ...theme.typography.body1bold,\n },\n}));\n\nexport default NoPagesView;\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport moment from 'moment';\nimport getHostName from 'helpers/getHostName';\nimport * as Types from 'pages/Pages/typings';\n\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport IconButton from '@material-ui/core/IconButton';\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\n\ninterface Props {\n deletable: boolean;\n classes: any;\n page: Types.Entity;\n isIndependentPage: boolean;\n onDelete: () => void;\n handleSelectEntity: Dispatch>;\n}\n\nfunction PagesRow({\n deletable,\n classes,\n page,\n isIndependentPage,\n onDelete,\n handleSelectEntity,\n}: Props) {\n const hostName = getHostName();\n const subdomain = window.location.host.split('.')[0];\n const subdomainUrl = subdomain.includes('localhost') ? 'test-development' : subdomain;\n const [menuOpen, setMenuOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleMore = (event: React.MouseEvent, page: Types.Entity) => {\n setMenuOpen(!menuOpen);\n handleSelectEntity(page);\n setAnchorEl(event ? event.currentTarget : anchorEl);\n };\n\n const handleDelete = () => {\n onDelete();\n setMenuOpen(false);\n };\n\n return (\n \n \n \n {page.name}\n \n \n {page.metadata.explicitEditorCount}\n {!isIndependentPage && {page.metadata.memberCount}}\n \n {page.metadata.lastEditedAt ? moment(page.metadata.lastEditedAt).format('MM/DD/YYYY') : '-'}\n \n {deletable ? (\n \n ) => handleMore(event, page)}\n >\n \n \n setMenuOpen(false)}>\n Delete Page\n \n \n ) : (\n \n )}\n \n );\n}\n\nexport default PagesRow;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport _get from 'lodash/get';\nimport { useStatus } from 'resift';\nimport * as Types from 'pages/Pages/typings';\nimport makeGetEntitiesListFetch from 'fetches/makeGetEntitiesListFetch';\n\nimport TableBody from '@material-ui/core/TableBody';\nimport Paper from '@material-ui/core/Paper';\nimport Table from 'components/Table';\nimport TableHead from 'components/Table/TableHead';\nimport TableHeadCell from 'components/Table/TableHeadCell';\nimport TablePagination from 'components/Table/TablePagination';\nimport TableSearchTextField from 'components/Table/TableSearchTextField';\nimport ExportButton from 'components/buttons/ExportButton';\nimport Toolbar from 'components/Toolbar';\nimport ToolbarSpacer from 'components/Toolbar/ToolbarSpacer';\nimport Loader from 'components/Loader';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Button from '@material-ui/core/Button';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport PagesRow from './PagesRow';\n\ninterface Props {\n isIndependentPage: boolean;\n pagesData: Types.EntitySearchResult;\n canAddOrDeletePages: boolean;\n onDelete: () => void;\n onSelectEntity: Dispatch>;\n onSetCreateModalOpen: (status: boolean) => void;\n}\n\nfunction PagesTable({\n isIndependentPage,\n pagesData,\n canAddOrDeletePages,\n onDelete,\n onSelectEntity,\n onSetCreateModalOpen,\n}: Props) {\n const classes = useStyles();\n const pages: Types.Entity[] = _get(pagesData, 'results', []);\n const defaultPagination = {\n total: 0,\n pageSize: 30,\n };\n const pagination = _get(pagesData, 'pagination', defaultPagination);\n const formats = _get(pagesData, 'formats');\n const makeGetEntitiesList = makeGetEntitiesListFetch();\n const entitiesListStatus = useStatus(makeGetEntitiesList);\n\n const NewPagesButton = (\n onSetCreateModalOpen(true)}\n className={classes.marginLeft}\n variant={canAddOrDeletePages ? 'outlined' : 'contained'}\n color=\"secondary\"\n >\n New Pages\n \n );\n\n return (\n \n \n \n \n \n {canAddOrDeletePages ? (\n NewPagesButton\n ) : (\n \n
{NewPagesButton}
\n \n )}\n
\n \n \n \n Name \n \n <>\n Assigned Editors\n \n \n \n \n \n {!isIndependentPage && (\n Member Count \n )}\n Last Updated At \n \n \n \n {pages.map((page: Types.Entity, index: number) => (\n \n ))}\n \n
\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n paper: {\n marginTop: theme.spacing(3),\n width: '100%',\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n textAlignRight: {\n textAlign: 'right',\n },\n infoIcon: {\n marginLeft: theme.spacing(),\n color: theme.colors.gray1,\n },\n marginLeft: {\n marginLeft: theme.spacing(3),\n },\n pageLink: {\n color: 'inherit',\n },\n}));\n\nexport default PagesTable;\n","import React, { useCallback, useState } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport _get from 'lodash/get';\nimport _omit from 'lodash/omit';\nimport queryString from 'query-string';\n\nimport { useHistory, useLocation } from 'react-router';\nimport * as Types from 'pages/Pages/typings';\n\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport InfoCard from 'pages/Invites/components/Users/InfoCard';\n\ninterface Filter {\n id: string;\n count: number;\n query: {\n filterOn: string;\n };\n}\n\ninterface Props {\n pagesData: Types.EntitySearchResult;\n}\n\nfunction PagesCards({ pagesData }: Props) {\n const classes = useStyles();\n const { search } = useLocation();\n const history = useHistory();\n let query = queryString.parse(search) as any;\n const [filterName, setFilterName] = useState<'edited' | 'unedited' | null>(query.filterOn);\n const filters = _get(pagesData, 'filters', []);\n const editedFilter = filters.find((filter: Filter) => filter.id === 'edited');\n const uneditedFilter = filters.find((filter: Filter) => filter.id === 'unedited');\n const allFilter = filters.find((filter: Filter) => filter.id === 'all');\n\n const handleFilterChange = useCallback(\n (newFilterName: 'edited' | 'unedited' | null) => {\n setFilterName(newFilterName);\n\n if (newFilterName) {\n query.filterOn = newFilterName;\n } else {\n query = _omit(query, 'filterOn');\n }\n\n history.push({ pathname: history.location.pathname, search: queryString.stringify(query) });\n },\n [query, history],\n );\n\n return (\n
\n handleFilterChange(null)}\n />\n \n Edited Pages\n \n \n \n
\n }\n number={_get(editedFilter, 'count', '-')}\n selected={filterName === 'edited'}\n onClick={() => handleFilterChange('edited')}\n />\n \n Unedited Pages\n \n \n \n \n }\n number={_get(uneditedFilter, 'count', '-')}\n selected={filterName === 'unedited'}\n onClick={() => handleFilterChange('unedited')}\n />\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n infoIcon: {\n marginLeft: theme.spacing(),\n color: theme.colors.gray1,\n },\n marginRight3: {\n marginRight: theme.spacing(3),\n },\n infoCardDescription: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n pagesCards: {\n display: 'flex',\n marginTop: theme.spacing(3),\n },\n}));\n\nexport default PagesCards;\n","import React, { useState } from 'react';\nimport _get from 'lodash/get';\nimport _isNil from 'lodash/isNil';\nimport * as Types from 'pages/Pages/typings';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport DeletePageModal from 'pages/PageTypes/tabs/DeletePageModal';\nimport CreatePageModal from 'pages/PageTypes/components/CreatePageModal';\nimport NoPagesView from 'pages/PageTypes/components/NoPagesView';\nimport PagesTable from '../PagesTable';\nimport PagesCards from '../PagesCards';\n\ninterface Props {\n hasQuery: boolean;\n entityType: Types.EntityType;\n migrationInProgress?: boolean;\n pagesData: Types.EntitySearchResult;\n onDeleteEntity: (entityId: string) => void;\n onReload: () => void;\n}\n\nfunction PagesTab({\n hasQuery,\n entityType,\n migrationInProgress,\n pagesData,\n onDeleteEntity,\n onReload,\n}: Props) {\n const classes = useStyles();\n const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n const isIndependentPage = _isNil(_get(entityType, 'personClientFieldId', null));\n const canAddOrDeletePages = !_get(entityType, '_isSyncManaged', false);\n const deleteModalSubtitle = isIndependentPage\n ? 'Deleting this page will remove it from search result and remove all content on it. Type in page name to delete it.'\n : 'Deleting this page will remove it from profiles of users and remove all content on it. Type in page name to delete it.';\n const [selectEntity, setSelectEntity] = useState(null);\n const pages: Types.Entity[] = _get(pagesData, 'results', []);\n\n const handleDeletePage = () => {\n const entityId = _get(selectEntity, 'id');\n entityId && onDeleteEntity(entityId);\n };\n\n const handleClickDelete = () => {\n setIsDeleteModalOpen(true);\n };\n\n return (\n <>\n {!!pages.length || hasQuery ? (\n
\n \n \n
\n ) : (\n (migrationInProgress ? onReload() : setIsCreateModalOpen(true))}\n />\n )}\n \n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n tableContainer: {\n marginBottom: theme.spacing(5),\n },\n}));\n\nexport default PagesTab;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport { useData } from 'resift';\nimport queryString from 'query-string';\nimport { useLocation } from 'react-router';\nimport makeDeleteEntity from 'fetches/makeDeleteEntity';\nimport makeGetEntitiesListFetch, { EntitiesRequestQuery } from 'fetches/makeGetEntitiesListFetch';\nimport * as Types from 'pages/Pages/typings';\n\nimport PagesTab from './PagesTab';\n\ninterface Props {\n entityType: Types.EntityType;\n migrationInProgress: boolean;\n onReload: () => void;\n}\n\nfunction Container({ entityType, migrationInProgress, onReload }: Props) {\n const dispatch = useDispatch();\n const location = useLocation();\n const search = location.search;\n\n // entities list\n const makeGetEntitiesList = makeGetEntitiesListFetch();\n const pagesData = useData(makeGetEntitiesList);\n\n // delete:\n const deleteEntity = makeDeleteEntity();\n\n const handleDeleteEntity = async (entityId: string) => {\n await dispatch(deleteEntity(entityId));\n dispatch(makeGetEntitiesList({ query: { entityTypeId: entityType.id } }));\n };\n\n useEffect(() => {\n const query = queryString.parse(search) as Partial;\n const searchQuery: EntitiesRequestQuery = {\n ...query,\n nameQuery: _get(query, 'q'),\n entityTypeId: entityType.id,\n };\n if (!migrationInProgress && entityType.id) {\n dispatch(makeGetEntitiesList({ query: searchQuery }));\n }\n }, [search, migrationInProgress, entityType.id]);\n\n return (\n 0}\n entityType={entityType}\n migrationInProgress={migrationInProgress}\n pagesData={pagesData}\n onDeleteEntity={handleDeleteEntity}\n onReload={onReload}\n />\n );\n}\n\nexport default Container;\n","import Container from './container';\nexport default Container;\n","import React from 'react';\nimport * as Types from 'pages/Pages/typings';\nimport _get from 'lodash/get';\nimport _isNil from 'lodash/isNil';\nimport pluralize from 'pluralize';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport TextField from '@material-ui/core/TextField';\nimport AttributeTypeCard, { attributeTypes } from 'pages/AttributesNew/AttributeTypeCard';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n entityType: Types.EntityType;\n values: Types.EntitySettingsFormValues;\n onChange: (field: string, value: any) => void;\n}\n\nfunction PageTypeName({ entityType, values, onChange }: Props) {\n const classes = useStyles();\n let pageItem = _get(attributeTypes, BASE_FIELD_PAGE);\n let pageCollectionItem = _get(attributeTypes, BASE_FIELD_PAGE_COLLECTION);\n let independentItem = _get(attributeTypes, 'independentPage');\n const personClientFieldObjectKey = _get(entityType, '_personClientFieldObjectKey');\n const isIndependentPage = _isNil(_get(entityType, 'personClientFieldId', null));\n\n const item = isIndependentPage\n ? independentItem\n : personClientFieldObjectKey && personClientFieldObjectKey.includes('cf_pageCollection')\n ? pageCollectionItem\n : personClientFieldObjectKey && personClientFieldObjectKey.includes('cf_page')\n ? pageItem\n : null;\n\n const handleChangeName = (e: React.ChangeEvent) => {\n onChange('name', e.target.value);\n };\n\n const handleChangeDescription = (e: React.ChangeEvent) => {\n if (e.target.value.length > 0) {\n onChange('description', e.target.value);\n } else {\n onChange('description', null);\n }\n };\n\n return (\n
\n \n \n
\n Page Type Title\n \n What type of thing do these pages represent? For example: \"Project\", \"Award\", etc.\n \n \n \n {values.name && `Plural form: ${pluralize(values.name, 2)}. It will show up when...`}\n \n
\n
\n Description\n \n This description will be shown when a user edits the attribute on their profile page.\n (if applicable)\n \n \n
\n
\n
\n {item && }\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n marginTop: theme.spacing(3),\n },\n cardRoot: {\n marginRight: theme.spacing(3),\n flexGrow: 1,\n },\n marginBottom: {\n marginBottom: theme.spacing(3),\n },\n}));\n\nexport default PageTypeName;\n","import React from 'react';\nimport * as Types from 'pages/Pages/typings';\nimport _get from 'lodash/get';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Radio from '@material-ui/core/Radio';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n isIndependentPage: boolean;\n values: Types.EntitySettingsFormValues;\n onChange: (field: string, value: any) => void;\n}\n\nfunction PageEditors({ isIndependentPage, values, onChange }: Props) {\n const classes = useStyles();\n\n const handleEditorChange = (e: React.ChangeEvent) => {\n onChange('settings.implicitEditorRule', e.target.value);\n };\n\n return (\n
\n \n \n
\n Page Editors\n \n Who can edit this page type?\n \n {isIndependentPage\n ? 'Sift administrators and assigned editors will have access to edit pages.'\n : 'Pages will be editable by administrators and editors that are explicitly assigned to an individual page by an existing editor. In addition, you may grant automatic edit access to certain page members'}\n \n {!isIndependentPage && (\n \n }\n label={\n <>\n No additional access\n \n Pages will only be editable by administrators and assigned editors.\n \n \n }\n />\n }\n label={\n <>\n Team Leaders\n \n Pages will additionally be editable by all members who have any direct\n reports.\n \n \n }\n />\n }\n label={\n <>\n All members\n \n Pages will additionally be editable by all page members.\n \n \n }\n />\n \n )}\n
\n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n },\n cardRoot: {\n width: '100%',\n },\n marginBottom3: {\n marginBottom: theme.spacing(3),\n },\n divider: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n marginBottom1: {\n marginBottom: theme.spacing(),\n },\n}));\n\nexport default PageEditors;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport Switch from '@material-ui/core/Switch';\n\nimport FilterLayout from 'pages/Features/tabs/Directory/FilterLayout';\nimport * as Types from 'pages/Pages/typings';\nimport { Fields } from 'types/FormValue';\n\ninterface Props {\n setFieldValue: (field: string, value: any) => void;\n values: Types.EntitySettingsFormValues;\n errors: any;\n userStatus: number;\n fields: Fields;\n onChange: (field: string, value: any) => void;\n}\n\nfunction SearchSettings({ setFieldValue, values, errors, userStatus, fields, onChange }: Props) {\n const classes = useStyles();\n const isSearchEnabled = _get(values, 'settings.directorySearch.enabled');\n const isDisplayedOnEmptySearch = _get(values, 'settings.directorySearch.displayOnEmptySearch');\n\n const toggleSearchEnabled = () => {\n onChange('settings.directorySearch.enabled', !isSearchEnabled);\n };\n\n const toggleDisplayOnEmptySearch = () => {\n onChange('settings.directorySearch.displayOnEmptySearch', !isDisplayedOnEmptySearch);\n };\n\n return (\n \n \n }\n title=\"Display in Directory Results\"\n subheader=\"If turned on, pages of this type will appear in the Sift Directory page when a search\n is performed.\"\n />\n \n \n <>\n Display Full Page List\n
\n \n If turned on, the full list of pages will appear to users when there is no search\n performed. If you would only like to display the list when a search is performed,\n switch this setting off.\n \n\n \n
\n \n
\n \n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n },\n contentContainer: {\n paddingBottom: 0,\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n filterCard: {\n boxShadow: 'none',\n },\n}));\n\nexport default SearchSettings;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Delete Entity Type',\n make: (entityTypeId: string) => ({\n request: () => ({ http }) =>\n http({\n method: 'DELETE',\n route: `/entity-types/${entityTypeId}`,\n }),\n }),\n});\n","import React, { useEffect, useState } from 'react';\nimport classnames from 'classnames';\nimport * as Types from 'pages/Pages/typings';\nimport makeDeleteEntityType from 'fetches/makeDeleteEntityType';\nimport { useDispatch } from 'react-redux';\nimport { isLoading, isNormal, useStatus } from 'resift';\nimport showSnackbar from 'helpers/showSnackbar';\nimport pluralize from 'pluralize';\nimport usePrevious from '@sift/resift/usePrevious';\nimport { useHistory } from 'react-router';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport LoadingButton from 'atoms/LoadingButton';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n entityType: Types.EntityType;\n}\n\nfunction DeletePages({ entityType }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const history = useHistory();\n const deleteEntityType = makeDeleteEntityType(entityType.id);\n const deleteEntityTypeStatus = useStatus(deleteEntityType);\n const prevDeleteEntityTypeStatus = usePrevious(deleteEntityTypeStatus);\n const isDeleting = isLoading(deleteEntityTypeStatus);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [dialogInput, setDialogInput] = useState('');\n const buttonClass = classnames({\n [classes.red]: dialogInput === pluralize(entityType.name, 1),\n [classes.disabled]: dialogInput !== pluralize(entityType.name, 1),\n });\n\n const handleDialogChange = (e: React.ChangeEvent) => {\n setDialogInput(e.target.value);\n };\n\n const toggleDialog = async (shouldDeletePage: boolean) => {\n if (shouldDeletePage) {\n await dispatch(deleteEntityType());\n }\n setDialogInput('');\n setDialogOpen(!dialogOpen);\n };\n\n showSnackbar({\n status: deleteEntityTypeStatus,\n message: `${entityType.name} deleted.`,\n errorMessage: 'An error occurred while deleting your page.',\n });\n\n useEffect(() => {\n if (isLoading(prevDeleteEntityTypeStatus) && isNormal(deleteEntityTypeStatus)) {\n history.push('/admin/pages');\n }\n }, [deleteEntityTypeStatus, prevDeleteEntityTypeStatus]);\n\n return (\n
\n \n \n Delete Pages\n \n Deleting pages will permanently remove all pages and their profile data.\n \n {\n toggleDialog(false);\n }}\n variant=\"contained\"\n >\n Delete Pages\n \n \n \n toggleDialog(false)}\n >\n \n Are you sure you want to delete your {pluralize(entityType.name, 1)} pages?\n \n \n \n Deleting pages will permanently remove all pages and their profile data. You cannot undo\n this action. To delete pages, type out \"{pluralize(entityType.name, 1)}\" in the input\n below to enable the delete button. If you would like to transition your attribute back\n to a simpler form without pages, please contact us at{' '}\n support@justsift.com\n \n \n \n \n {\n toggleDialog(false);\n }}\n >\n Cancel\n \n {\n toggleDialog(true);\n }}\n disabled={dialogInput !== pluralize(entityType.name, 1)}\n label=\"Delete\"\n variant=\"contained\"\n loading={isDeleting}\n />\n \n \n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n marginBottom1: {\n marginBottom: theme.spacing(),\n },\n openDialogButton: {\n color: theme.palette.common.white,\n background: theme.palette.error.main,\n marginTop: theme.spacing(),\n },\n red: {\n color: theme.palette.common.white,\n background: theme.palette.error.main,\n },\n disabled: {\n cursor: 'not-allowed',\n },\n marginBottom3: {\n marginBottom: theme.spacing(3),\n },\n}));\n\nexport default DeletePages;\n","import React from 'react';\nimport { Formik, Form } from 'formik';\nimport _isEmpty from 'lodash/isEmpty';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport { Prompt } from 'react-router';\nimport { combineStatuses, useStatus } from 'resift';\nimport * as Types from 'pages/Pages/typings';\nimport makeUpdateEntityType from 'fetches/makeUpdateEntityType';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\n\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageFormErrorMessage from 'components/Page/newComponents/PageFormErrorMessage';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport HandleRedirect from 'molecules/HandleRedirect';\nimport PageTypeName from './PageTypeName';\nimport PageEditors from './PageEditors';\nimport SearchSettings from './SearchSettings';\nimport DeletePages from './DeletePages';\nimport Loader from 'components/Loader';\n\nimport { LayoutObject } from 'pages/AttributesEdit/AttributesEdit';\n\ninterface Props {\n entityType: Types.EntityType;\n isIndependentPage: boolean;\n onUpdateEntityType: (data: Types.UpdateEntity) => void;\n config: any;\n onUpdateLayout: (payload: LayoutObject[]) => void;\n}\n\nfunction SettingsTab({\n entityType,\n isIndependentPage,\n onUpdateEntityType,\n config,\n onUpdateLayout,\n}: Props) {\n // update entity type:\n const updateEntityType = makeUpdateEntityType(_get(entityType, 'id'));\n const updateEntityTypeStatus = useStatus(updateEntityType) || 1;\n\n // entity types\n const entityTypesFetch = makeEntityTypesFetch();\n const entityTypesStatus = useStatus(entityTypesFetch) || 1;\n\n const combinedStatus = combineStatuses(entityTypesStatus, updateEntityTypeStatus);\n\n const userStatus = useStatus(entityTypesFetch);\n\n const initialState: Types.EntitySettingsFormValues = {\n name: entityType.name,\n description: entityType.description,\n settings: {\n implicitEditorRule: entityType._settings.implicitEditorRule,\n directorySearch: {\n enabled: entityType._settings.directorySearch.enabled,\n displayOnEmptySearch: entityType._settings.directorySearch.displayOnEmptySearch,\n },\n },\n layouts: {\n filters: _get(config, 'layouts.filters', []),\n },\n };\n\n const handleValidation = (values: Types.EntitySettingsFormValues) => {\n let errors: Types.EntitySettingsFormErrors = {};\n if (_get(values, 'name') === '') {\n errors.name = 'Name is a required field.';\n }\n\n return errors;\n };\n\n const handleSubmit = (values: Types.EntitySettingsFormValues) => {\n onUpdateEntityType(values);\n const layoutPayloadKeys = Object.keys(values.layouts).filter(\n // @ts-ignore\n key => !_isEqual(values.layouts[key], initialState.layouts[key]),\n );\n const layoutPayload = layoutPayloadKeys.map(key => ({\n entityField: entityType.id,\n layoutKey: key,\n // @ts-ignore\n children: values.layouts[key],\n }));\n\n layoutPayload && onUpdateLayout(layoutPayload);\n };\n\n return (\n \n {() => (\n \n {props => {\n const { values, setFieldValue, dirty, resetForm } = props;\n const errors: Types.EntitySettingsFormErrors = props.errors;\n\n return (\n
\n \n \n \n \n }\n >\n \n {\n props.handleSubmit();\n resetForm({ values });\n }}\n disabled={!dirty || !_isEmpty(errors)}\n />\n \n \n \n \n );\n }}\n \n )}\n
\n );\n}\n\nexport default SettingsTab;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Button from '@material-ui/core/Button';\nimport CardContent from '@material-ui/core/CardContent';\nimport { Link } from 'react-router-dom';\n\n// Style\nimport { makeStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nconst directorySources = {\n 'google-directory': 'Google',\n 'azure-active-directory': 'Microsoft Azure',\n};\n\nfunction DirectoryMapping({ mappings }) {\n const classes = useStyles();\n const [showMore, setShowMore] = useState(false);\n\n const onClick = () => {\n setShowMore(!showMore);\n };\n\n const renderTableRows = () => {\n return mappings.map((mapping, index) => {\n let tableRowClasses = classes.tableRow;\n if (index !== mappings.length - 1) {\n tableRowClasses = classNames(classes.tableRow, classes.tableRowBorder);\n }\n\n if (!showMore && mappings.length >= 3 && index !== 2) {\n tableRowClasses = classNames(classes.tableRow, classes.tableRowBorder);\n }\n\n return (\n
\n
\n {mapping.label}\n
\n
\n {directorySources[mapping.type] || mapping.type}\n
\n
\n \n \n \n
\n
\n );\n });\n };\n\n const renderTable = () => {\n const minRows = mappings.length >= 3 ? 3 : mappings.length;\n const tableRowHeight = minHeight + borderHeight;\n const tableHeight = showMore ? tableRowHeight * mappings.length : tableRowHeight * minRows;\n\n return (\n
\n
\n
Directory
\n
Sourced From
\n
\n
\n
\n {renderTableRows()}\n
\n
\n );\n };\n\n let buttonRowElem = null;\n if (mappings.length > 3) {\n buttonRowElem = (\n
\n \n
\n );\n }\n\n return (\n \n
{renderTable()}
\n
{buttonRowElem}
\n
\n );\n}\n\nconst minHeight = 46;\nconst borderHeight = 1;\nconst useStyles = makeStyles(theme => ({\n root: {\n marginBottom: theme.spacing(2),\n },\n table: {\n margin: theme.spacing(2, 3, 1, 3),\n },\n tableHeader: {\n fontSize: 14,\n fontWeight: 600,\n },\n tableContent: {\n transition: 'height .3s',\n flow: 'hidden',\n },\n tableCell: {\n width: 145,\n padding: theme.spacing(1),\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 14,\n flex: '1 1 auto',\n },\n tableRow: {\n display: 'flex',\n minHeight: minHeight,\n alignItems: 'center',\n },\n tableRowBorder: {\n borderBottom: `1px solid ${theme.colors.divider}`,\n },\n tableButtonRow: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n blue: {\n color: theme.palette.secondary.main,\n },\n}));\n\nDirectoryMapping.propTypes = {\n mappings: PropTypes.array.isRequired,\n};\n\nexport default DirectoryMapping;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Field Directory Mappings',\n make: (fieldId: string) => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/fields/${fieldId}`,\n }),\n }),\n});\n","import React, { useEffect, memo } from 'react';\nimport * as Sift from '@sift/types';\nimport _get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport { useData, useStatus } from 'resift';\n\n// Components\nimport Loader from 'components/Loader';\nimport DirectoryMapping from './DirectoryMapping';\n\n// Actions\nimport makeFieldDirectoryMappingsFetch from 'store/attribute/actions/fieldDirectoryMappingsFetch';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n field: Sift.Field;\n}\n\nfunction Container({ field }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const fieldId = _get(field, 'id', null);\n const fieldDirectoryMappingsFetch = fieldId ? makeFieldDirectoryMappingsFetch(fieldId) : null;\n\n const fieldData = useData(fieldDirectoryMappingsFetch);\n const status = useStatus(fieldDirectoryMappingsFetch);\n const mappings = _get(fieldData, '_directorySummary', []);\n\n useEffect(() => {\n if (!fieldData && fieldDirectoryMappingsFetch) {\n dispatch(fieldDirectoryMappingsFetch());\n }\n }, []);\n\n if (!fieldId) {\n return null;\n }\n\n return (\n \n {() => !!mappings.length && }\n \n );\n}\n\nconst useStyles = makeStyles(() => ({\n overlay: {\n position: 'static',\n },\n}));\n\nexport default memo(Container);\n","import React from 'react';\nimport * as Sift from '@sift/types';\n\nimport DirectoryMapping from 'pages/AttributesEdit/components/DirectoryMapping';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n attribute: Sift.Field;\n}\n\nfunction AttributeDataMapping({ attribute }: Props) {\n const classes = useStyles();\n const directoryLink = (\n \n People Data\n \n );\n\n const subheader = (\n <>\n Data mapping enables you to populate data for this attribute from external data sources. When\n an attribute has data mapped to it, the associated people can no longer edit it. To map data\n to this attribute, go to the {directoryLink} section after saving changes in this page.\n \n );\n\n return (\n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n maxWidth: 900,\n },\n link: {\n textDecoration: 'underline',\n },\n}));\n\nexport default AttributeDataMapping;\n","import React from 'react';\nimport * as Types from 'pages/Pages/typings';\nimport _get from 'lodash/get';\nimport classnames from 'classnames';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Switch from '@material-ui/core/Switch';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n values: Types.EntityEditFormValues;\n onChange: (field: string, value: any) => void;\n}\n\nfunction JoinPage({ values, onChange }: Props) {\n const classes = useStyles();\n const isSyncManaged = _get(values, 'isSyncManaged');\n const valueReadOnly = _get(values, 'valueReadOnly');\n\n const handleAllowJoinChange = (e: React.ChangeEvent) => {\n onChange('valueReadOnly', !e.target.checked);\n };\n\n const content = (\n \n \n }\n />\n \n );\n\n return isSyncManaged ? (\n \n {content}\n \n ) : (\n content\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n maxWidth: 900,\n },\n createPages: {\n display: 'flex',\n },\n disabled: {\n cursor: 'pointer',\n opacity: theme.palette.opacity.thirtyEightPercent,\n },\n}));\n\nexport default JoinPage;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport classnames from 'classnames';\nimport * as Types from 'pages/Pages/typings';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Switch from '@material-ui/core/Switch';\nimport TextField from '@material-ui/core/TextField';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n values: Types.EditSettings;\n onChange: (field: string, value: any) => void;\n}\n\nfunction PageMemberGrouping({ values, onChange }: Props) {\n const classes = useStyles();\n const selectOptions = _get(values, 'relationshipMetadataAttribute.selectOptions', '');\n const groupingEnabled = _get(values, 'relationshipMetadataAttribute.enabled', false);\n\n const handleAllowMemberGrouping = (e: React.ChangeEvent) => {\n onChange('settings.relationshipMetadataAttribute.enabled', e.target.checked);\n };\n\n const handleGroupMembersByChange = (e: React.ChangeEvent) => {\n onChange('settings.relationshipMetadataAttribute.displayName', e.target.value);\n };\n\n const handleGroupOptionsChange = (e: React.ChangeEvent) => {\n onChange('settings.relationshipMetadataAttribute.selectOptions', e.target.value);\n };\n\n const handleAllowEditorsCreateNewGroups = (e: React.ChangeEvent) => {\n onChange('settings.relationshipMetadataAttribute.allowCreation', e.target.checked);\n };\n\n return (\n \n \n }\n />\n \n
\n \n Page type “Awards” can group members by “Year”, and the options can be “2018”, “2019”.\n Page type “Virtual Team” can group members by “Role”, and the options can be “Lead”,\n “Designer”, “Developer”...\n \n
\n
\n Group Members by\n \n This will be the keyword we use to ask editors.\n \n \n
\n
\n Group Options\n \n Editors can create groups for individual pages. If you want to provide group options\n that all pages of this type can choose from, you can add here. Separate options by\n commas or line breaks.\n \n \n
\n
\n
\n Allow editors to create new groups\n \n If enabled, editors can assign page members to new groups which are not in group\n options.\n \n
\n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n maxWidth: 900,\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n newGroupsSwitch: {\n marginRight: -theme.spacing(),\n },\n info: {\n background: 'rgba(41, 98, 255, 0.04) !important',\n border: `1px solid rgba(41, 98, 255, 0.12)`,\n borderRadius: theme.spacing(0.75),\n color: theme.palette.secondary.main,\n marginBottom: theme.spacing(3),\n padding: theme.spacing(0.5, 1),\n width: 'fit-content',\n },\n section: {\n marginBottom: theme.spacing(2),\n },\n disabled: {\n opacity: theme.palette.opacity.thirtyEightPercent,\n },\n}));\n\nexport default PageMemberGrouping;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport classnames from 'classnames';\nimport * as Sift from '@sift/types';\nimport { useSelector } from 'react-redux';\nimport { isLoading } from 'resift';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport _keyBy from 'lodash/keyBy';\nimport { LayoutUpdateShape } from 'pages/Features/typings';\nimport * as Types from 'pages/Pages/typings';\nimport getProfileAttributes from 'pages/Attributes/_helpers/getProfileAttributes';\n\nimport {\n HIGHLIGHT_SUBTITLE_COPY,\n highlightByFilter,\n} from 'pages/Features/tabs/OrgChart/OrgChartHighlightsLayout';\nimport {\n FILTER_SUBTITLE_COPY,\n fieldIsFilterable,\n} from 'pages/Features/tabs/Directory/FilterLayout';\n\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport Typography from '@material-ui/core/Typography';\nimport Switch from '@material-ui/core/Switch';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport GenericLayoutBuilder from 'components/GenericLayoutBuilder';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport { Field } from '@sift/types';\nimport { PERSON_PROFILE_URL } from 'components/Router/consts';\n\ninterface Props {\n attribute: Sift.Field;\n entityType: Types.EntityType;\n fields: Sift.Field[];\n status: any;\n typeKey: string;\n values?: LayoutUpdateShape;\n onChange: (field: string, value: any) => void;\n}\n\nfunction AttributeUsage({\n attribute,\n entityType,\n fields,\n status,\n typeKey,\n values,\n onChange,\n}: Props) {\n const classes = useStyles();\n const _client = useSelector((state: any) => state.client);\n const [filterDialogOpen, setFilterDialogOpen] = useState(false);\n const [highlightDialogOpen, setHighlightDialogOpen] = useState(false);\n\n // Filters-specific items:\n const filterAvailableFields = useMemo(() => {\n const fieldsCollection = (fields || []).filter(fieldIsFilterable);\n return _keyBy(fieldsCollection, 'objectKey');\n }, [fields]);\n const filterLayoutFields = _get(values, 'filters', []);\n const [filterLayout, setFilterLayout] = useState(filterLayoutFields);\n\n // Highlight-specific items:\n const highlightAvailableFields = useMemo(() => {\n const fieldsCollection = (fields || []).filter((field: Field) =>\n highlightByFilter(field, fields),\n );\n\n return _keyBy(fieldsCollection, 'objectKey');\n }, [fields]);\n const highlightLayoutFields = _get(values, 'org-chart-highlight-by', []);\n const [highlightLayout, setHighlightLayout] = useState(highlightLayoutFields);\n\n useEffect(() => {\n setFilterLayout(_get(values, 'filters', []));\n setHighlightLayout(_get(values, 'org-chart-highlight-by', []));\n }, [values]);\n\n const profileAttributes = useMemo(() => getProfileAttributes(typeKey, entityType, _client), []);\n const isOnProfile = profileAttributes.includes(attribute.objectKey);\n const shouldRenderProfilePage =\n !attribute.objectKey.includes('reachOutToMeFor.') && typeKey === PERSON_ENTITY_TYPE_KEY;\n\n const filters = _get(entityType, '_layouts.filters', []);\n const nameFieldObjectKey = `${attribute.objectKey}.name`;\n const filterAndHighlightByField =\n fields.find(field => field.objectKey === nameFieldObjectKey) || attribute;\n const isSearchFilterEnabled = filters.some(\n (filter: { name: string; type: string }) => filter.name === filterAndHighlightByField.objectKey,\n );\n const shouldRenderSearchFilters = fieldIsFilterable(filterAndHighlightByField);\n\n const highlightBy = _get(entityType, '_layouts.org-chart-highlight-by', []);\n const isHighlightByEnabled = highlightBy.some(\n (highlight: { name: string; type: string }) =>\n highlight.name === filterAndHighlightByField.objectKey,\n );\n const shouldRenderHighlightBy = highlightByFilter(filterAndHighlightByField, fields);\n const shouldRenderCard =\n shouldRenderHighlightBy || shouldRenderProfilePage || shouldRenderSearchFilters;\n\n const closeDialogs = () => {\n setFilterDialogOpen(false);\n setHighlightDialogOpen(false);\n };\n\n const handleCancel = () => {\n if (!_isEqual(_get(values, 'filters'), filterLayout)) {\n setFilterLayout(filterLayoutFields);\n }\n if (!_isEqual(_get(values, 'org-chart-highlight-by'), highlightLayout)) {\n setHighlightLayout(highlightLayoutFields);\n }\n closeDialogs();\n };\n\n const handleUpdateLayout = () => {\n if (!_isEqual(_get(values, 'filters', []), filterLayout)) {\n onChange('layouts.filters', filterLayout);\n }\n if (!_isEqual(_get(values, 'org-chart-highlight-by', []), highlightLayout)) {\n onChange('layouts.org-chart-highlight-by', highlightLayout);\n }\n closeDialogs();\n };\n\n const dialogActions = (\n \n \n \n Done\n \n \n );\n\n return (\n <>\n {shouldRenderCard && (\n \n \n \n \n {shouldRenderProfilePage && (\n
\n
\n Profile Page\n \n To add the attribute to the Profile Page and set its position, go to{' '}\n \n Profile Layout\n {' '}\n after saving changes in this page.\n \n
\n \n
\n )}\n {shouldRenderSearchFilters && (\n \n {' '}\n
\n Search Filters\n
\n \n If enabled, people can filter by this attribute on the Directory and Explore\n Pages. To add to your filter list,\n {\n setFilterDialogOpen(true);\n }}\n >\n click here.\n \n \n
\n
\n \n
\n )}\n {shouldRenderHighlightBy && (\n \n
\n Org Chart Highlight By\n \n If enabled, people can color code by this attribute on the Org Chart. To add to\n your list of highlightable attributes,\n {\n setHighlightDialogOpen(true);\n }}\n >\n click here.\n \n \n
\n \n \n )}\n \n \n )}\n setFilterDialogOpen(false)}\n classes={{ paper: classes.rootDialog }}\n >\n Configure Filters\n \n {FILTER_SUBTITLE_COPY}\n \n \n {dialogActions}\n \n setHighlightDialogOpen(false)}\n classes={{ paper: classes.rootDialog }}\n >\n Configure Highlighting\n \n {HIGHLIGHT_SUBTITLE_COPY}\n \n \n {dialogActions}\n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n cardRoot: {\n maxWidth: 900,\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n rootDialog: {\n minHeight: 700,\n minWidth: 500,\n },\n marginTop: {\n marginTop: theme.spacing(2),\n },\n positionButton: {\n textTransform: 'none',\n color: theme.palette.secondary.main,\n marginBottom: theme.spacing(0.5),\n },\n link: {\n textDecoration: 'underline',\n },\n}));\n\nexport default AttributeUsage;\n","import React, { useEffect, useMemo, useState, useCallback } from 'react';\nimport * as Sift from '@sift/types';\nimport * as Types from 'pages/Pages/typings';\nimport { Prompt } from 'react-router';\nimport { Formik, Form } from 'formik';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isEqual from 'lodash/isEqual';\nimport { LayoutObject } from 'pages/AttributesEdit/AttributesEdit';\nimport * as FormValues from 'types/FormValue';\nimport convertStringToArrayOfStrings from 'helpers/convertStringToArrayOfStrings';\n\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageFormErrorMessage from 'components/Page/newComponents/PageFormErrorMessage';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport AttributeDataMapping from 'pages/AttributesEdit/components/AttributeDataMapping';\nimport JoinPage from './components/JoinPage';\nimport Terminology from 'pages/General/tabs/Settings/Terminology';\nimport PageMemberGrouping from './components/PageMemberGrouping';\nimport HandleRedirect from 'molecules/HandleRedirect';\nimport AttributeUsage from 'pages/AttributesEdit/components/AttributeUsage';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport { LayoutUpdateShape } from 'pages/Features/typings';\n\ninterface Props {\n attribute?: Sift.Field;\n combinedStatus: number;\n isPersonAttribute: boolean;\n userFields: FormValues.Fields;\n entityType: Types.EntityType;\n personEntityType: Types.EntityType;\n onUpdateLayout: (payload: LayoutObject[]) => void;\n onUpdateEntityType: (data: Types.UpdateEntity) => void;\n onUpdateField: (fieldId: string, editedAttribute: Types.UpdateField) => void;\n}\n\nfunction MembershipTab({\n attribute,\n combinedStatus,\n isPersonAttribute,\n userFields,\n entityType,\n personEntityType,\n onUpdateLayout,\n onUpdateEntityType,\n onUpdateField,\n}: Props) {\n const personClientFieldObjectKey = _get(entityType, '_personClientFieldObjectKey');\n\n const field =\n personClientFieldObjectKey &&\n (_get(userFields, personClientFieldObjectKey) as Sift.Field | null);\n const fieldId = _get(field, 'id');\n const [formattedSelectOptions, setFormattedSelectOptions] = useState('');\n\n const currentSelectOptions = _get(entityType, [\n '_settings',\n 'relationshipMetadataAttribute',\n 'selectOptions',\n ]);\n\n useEffect(() => {\n if (currentSelectOptions) {\n if (currentSelectOptions.length > 0) {\n setFormattedSelectOptions(currentSelectOptions.join(', '));\n } else {\n setFormattedSelectOptions('');\n }\n }\n }, [currentSelectOptions]);\n\n const valueReadOnly = useMemo(() => {\n return _get(field, 'valueReadOnly', false);\n }, [field]);\n\n const initialState = {\n settings: {\n ...entityType._settings,\n ...(entityType._settings.relationshipMetadataAttribute && {\n relationshipMetadataAttribute: {\n ...entityType._settings.relationshipMetadataAttribute,\n selectOptions: formattedSelectOptions,\n },\n }),\n },\n isSyncManaged: entityType._isSyncManaged,\n layouts: personEntityType._layouts,\n valueReadOnly: valueReadOnly,\n } as Types.EntityEditFormValues;\n\n const initialStateSettings = _get(initialState, 'settings');\n const initialStateFieldValue = _get(initialState, 'valueReadOnly');\n const initialStateLayouts = _get(initialState, 'layouts');\n\n const handleValidation = (values: Types.EntityEditFormValues) => {\n let errors = {} as Types.EntitySettingsFormErrors;\n\n // grouping/allowCreation/selectOptions\n const grouping = _get(values, 'settings.relationshipMetadataAttribute', {});\n if (\n _get(grouping, 'enabled') &&\n !_get(grouping, 'allowCreation') &&\n _get(grouping, 'selectOptions', '').length === 0\n ) {\n errors.selectOptions =\n 'You must specify at least one preset group option if not allowing editors to create new groups.';\n }\n\n // member terminology\n const memberTerminolgy = _get(values, 'settings.memberTerminology', '');\n if (!memberTerminolgy.length) {\n errors.terminology = 'Member is a required field.';\n }\n\n return errors;\n };\n\n const handleUpdateLayout = useCallback(\n (layoutValues: LayoutUpdateShape | null) => {\n const layoutPayloadKeys = layoutValues\n ? Object.keys(layoutValues).filter(\n key => !_isEqual(layoutValues[key], _get(initialStateLayouts, key)),\n )\n : null;\n const layoutPayload = layoutPayloadKeys\n ? layoutPayloadKeys.map(key => ({\n entityField: PERSON_ENTITY_TYPE_KEY,\n layoutKey: key,\n children: _get(layoutValues, key, []),\n }))\n : null;\n if (layoutPayload && layoutPayload.length > 0) {\n onUpdateLayout(layoutPayload);\n }\n },\n [initialStateLayouts],\n );\n\n const handleUpdateEntityType = useCallback(\n (settingsValues: Types.EditSettings | null) => {\n const settingsChanged = !_isEqual(initialStateSettings, settingsValues);\n if (settingsChanged) {\n const selectOptionsAsArray = convertStringToArrayOfStrings(\n _get(settingsValues, ['relationshipMetadataAttribute', 'selectOptions']),\n );\n const settingsValuesWithOptionsConvertedToArray = {\n ...settingsValues,\n ...(settingsValues &&\n settingsValues.relationshipMetadataAttribute && {\n relationshipMetadataAttribute: {\n ...settingsValues.relationshipMetadataAttribute,\n selectOptions: settingsValues.relationshipMetadataAttribute.selectOptions\n ? selectOptionsAsArray\n : [],\n },\n }),\n } as Types.UpdateEntitySettings;\n\n onUpdateEntityType({ settings: settingsValuesWithOptionsConvertedToArray });\n }\n },\n [initialStateSettings],\n );\n\n const handleUpdateField = useCallback(\n (fieldValue: boolean) => {\n const fieldValueChanged = fieldValue !== initialStateFieldValue;\n fieldValueChanged && fieldId && onUpdateField(fieldId, { valueReadOnly: fieldValue });\n },\n [initialStateFieldValue, fieldId],\n );\n\n const handleSubmit = (values: Types.EntityEditFormValues) => {\n // conditional updates\n const layoutValues = _get(values, 'layouts', null);\n handleUpdateLayout(layoutValues);\n\n const settingsValues = _get(values, 'settings', null);\n handleUpdateEntityType(settingsValues);\n\n const fieldValue = _get(values, 'valueReadOnly');\n handleUpdateField(fieldValue);\n };\n\n return (\n <>\n {attribute && }\n {attribute && (\n \n {props => {\n const { values, setFieldValue, dirty, resetForm } = props;\n const errors = props.errors as Types.EntitySettingsFormErrors;\n\n return (\n
\n \n \n \n {isPersonAttribute && (\n \n )}\n }\n >\n \n {\n props.handleSubmit();\n resetForm({ values });\n }}\n disabled={!dirty || !_isEmpty(errors)}\n />\n \n \n \n \n );\n }}\n \n )}\n \n );\n}\n\nexport default MembershipTab;\n","import React, { memo } from 'react';\nimport _get from 'lodash/get';\nimport { useParams } from 'react-router-dom';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport * as Types from 'pages/Pages/typings';\nimport { LayoutObject } from 'pages/AttributesEdit/AttributesEdit';\n\nimport MembershipTab from './MembershipTab';\nimport Loader from 'components/Loader';\n\ninterface Props {\n entityType: Types.EntityType;\n status: number;\n onUpdateEntityType: (data: Types.UpdateEntity) => void;\n onUpdateField: (fieldId: string, editedAttribute: Types.UpdateField) => void;\n onUpdateLayout: (payload: LayoutObject[]) => void;\n}\n\nfunction Container({\n entityType,\n status,\n onUpdateEntityType,\n onUpdateField,\n onUpdateLayout,\n}: Props) {\n const entityTypes = useEntityTypes();\n let { entityTypeKey } = useParams<{ entityTypeKey: string }>();\n const entityTypeData = _get(entityTypes, entityTypeKey);\n\n const userFields = _get(entityTypes, [PERSON_ENTITY_TYPE_KEY, '_fields']);\n\n const objectKey = _get(entityTypeData, '_personClientFieldObjectKey');\n const attribute = _get(userFields, objectKey || '');\n const isPersonAttribute =\n _get(attribute, 'entityTypeId') === entityTypes[PERSON_ENTITY_TYPE_KEY].id;\n const personEntityType = entityTypes[PERSON_ENTITY_TYPE_KEY];\n\n return (\n \n \n \n );\n}\n\nexport default memo(Container);\n","import Container from './container';\nexport default Container;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'publish entity type',\n make: (entityTypeId: string) => ({\n key: [],\n request: (isActive: boolean) => ({ http }: any) =>\n http({\n method: 'PUT',\n route: `/entity-types/${entityTypeId}`,\n data: {\n isActive,\n },\n }),\n }),\n});\n","import React, { useEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useTerminology from '@sift/skipper/helpers/useTerminology';\nimport { useStatus, isLoading, isNormal, isError } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\nimport makePublishEntityType from 'fetches/makePublishEntityType';\nimport { useDispatch } from 'react-redux';\nimport showSnackbar from 'helpers/showSnackbar';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport CancelButton from 'components/Page/CancelButton';\nimport LoadingButton from 'atoms/LoadingButton';\n\ninterface Props {\n entityTypeKey: string;\n isActive: boolean;\n name: string;\n open: boolean;\n onSwitchIsActive: () => void;\n onSetOpen: (state: boolean) => void;\n}\n\nfunction PublishEntityTypeModal({\n entityTypeKey,\n isActive,\n open,\n name,\n onSwitchIsActive,\n onSetOpen,\n}: Props) {\n const classes = useStyles();\n const terminology = useTerminology();\n const dispatch = useDispatch();\n const action = isActive ? 'publish' : 'unpublish';\n const publishEntityType = makePublishEntityType(entityTypeKey);\n const status = useStatus(publishEntityType);\n const prevStatus = usePrevious(status);\n const subtitle = isActive\n ? `After pages are published, they will become available to all ${terminology.plural}.`\n : `After pages are unpublished, they will only be available to assigned editors.`;\n\n const handleSave = () => {\n dispatch(publishEntityType(isActive));\n };\n\n const handleCancel = () => {\n onSetOpen(false);\n onSwitchIsActive();\n };\n\n useEffect(() => {\n if (isLoading(prevStatus) && isNormal(status)) {\n onSetOpen(false);\n } else if (isLoading(prevStatus) && isError(status)) {\n onSetOpen(false);\n }\n }, [status, prevStatus]);\n\n showSnackbar({\n status: status,\n message: isActive\n ? 'Pages have been published and are available to all users.'\n : 'Pages have been unpublished and are visible to assigned editors.',\n errorMessage: `Failed to ${action} pages. Please try again.`,\n variant: 'success',\n });\n\n return (\n \n \n \n Are you sure you want to {action} {name} Pages?\n \n {subtitle}\n \n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n marginBottom: theme.spacing(3),\n}));\n\nexport default PublishEntityTypeModal;\n","import React, { useState, useEffect } from 'react';\nimport _isNil from 'lodash/isNil';\nimport _get from 'lodash/get';\nimport { useParams } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useTerminology from '@sift/skipper/helpers/useTerminology';\nimport * as Types from 'pages/Pages/typings';\nimport { LayoutObject } from 'pages/AttributesEdit/AttributesEdit';\nimport { HOME_URL, DYNAMIC_PAGES_URL } from 'components/Router/consts';\n\nimport Page from 'components/Page/newComponents';\nimport Breadcrumbs from 'components/Page/Breadcrumbs';\nimport PageTitle from 'components/Page/PageTitle';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Typography from '@material-ui/core/Typography';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Switch from '@material-ui/core/Switch';\nimport PagesTab from './tabs/PagesTab';\nimport SettingsTab from './tabs/SettingsTab/SettingsTab';\nimport Attributes from 'pages/Attributes';\nimport MembershipTab from './tabs/MembershipTab';\nimport ProfileLayoutPage from 'pages/ProfileLayout';\nimport PublishEntityTypeModal from './components/PublishEntityTypeModal';\n\nconst tabTypes = {\n PAGES: 'pages',\n SETTINGS: 'settings',\n ATTRIBUTE: 'attributes',\n MEMBERSHIP: 'membership',\n LAYOUT: 'layout',\n};\n\ninterface Props {\n entityType: Types.EntityType;\n migrationInProgress: boolean;\n status: number;\n entityTypeConfig: any;\n onReload: () => void;\n onUpdateEntityType: (data: Types.UpdateEntity) => void;\n onUpdateField: (fieldId: string, editedAttribute: Types.UpdateField) => void;\n onUpdateLayout: (payload: LayoutObject[]) => void;\n}\n\nfunction PageTypes({\n entityType,\n migrationInProgress,\n status,\n entityTypeConfig,\n onReload,\n onUpdateEntityType,\n onUpdateField,\n onUpdateLayout,\n}: Props) {\n let { entityTypeKey, tab } = useParams<{ entityTypeKey: string; tab?: string }>();\n const history = useHistory();\n const classes = useStyles();\n const terminology = useTerminology();\n const isIndependentPage = _isNil(_get(entityType, 'personClientFieldId', null));\n const pageTypeName = _get(entityType, 'name');\n const [isActive, setIsActive] = useState(_get(entityType, 'isActive', false));\n const tooltipTitle = isActive\n ? `${pageTypeName} Pages are currently visible to all ${terminology.plural}. If unpublished, they will only be visible to assigned editors.`\n : `${pageTypeName} Pages are currently only visible to assigned editors. When published, they will be available to all ${terminology.plural}.`;\n const [isPublishModalOpen, setIsPublishModalOpen] = useState(false);\n const typeKey = _get(entityType, 'typeKey');\n\n useEffect(() => {\n document.title = pageTypeName;\n }, []);\n\n const handleSwitchActive = () => {\n setIsActive(!isActive);\n };\n\n const handleTabChange = (value: string) => {\n history.push(`${HOME_URL}${DYNAMIC_PAGES_URL}/${entityTypeKey}/${value}`);\n };\n\n const handlePublishSwitchChange = (e: React.ChangeEvent) => {\n setIsActive(e.target.checked);\n setIsPublishModalOpen(true);\n };\n\n const tabContentByType = {\n [tabTypes.ATTRIBUTE]: ,\n [tabTypes.LAYOUT]: ,\n [tabTypes.MEMBERSHIP]: (\n \n ),\n [tabTypes.SETTINGS]: (\n \n ),\n [tabTypes.PAGES]: (\n \n ),\n };\n\n const tabValue = tab && tabContentByType[tab] ? tab : tabTypes.PAGES;\n const tabContent = tabContentByType[tabValue || tabTypes.PAGES];\n\n return (\n <>\n \n \n \n \n Publish Pages\n \n \n \n \n \n \n }\n />\n handleTabChange(value)} value={tabValue}>\n \n \n \n {!isIndependentPage && }\n \n \n
{tabContent}
\n
\n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n maxWidth: 1200,\n },\n layoutRoot: {\n display: 'flex',\n flex: '1 1 auto',\n },\n layoutContainer: {\n maxHeight: 'calc(100vh - 400px)',\n },\n marginRight: {\n marginRight: theme.spacing(1.5),\n },\n flexCenter: {\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n color: theme.colors.gray1,\n },\n}));\n\nexport default PageTypes;\n","import React, { memo, useEffect, useMemo } from 'react';\nimport _get from 'lodash/get';\nimport { useStatus, useData, combineStatuses, useClearFetch } from 'resift';\nimport { useDispatch } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { useHistory, useLocation } from 'react-router';\nimport makeUpdateEntityType from 'fetches/makeUpdateEntityType';\nimport makeGetFieldsFetch from 'fetches/makeGetFieldsFetch';\nimport makeGetEntityTypeStatus from 'fetches/makeGetEntityTypeStatus';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport makeUpdateCategoryFieldFetch from 'store/attribute/actions/updateCategoryFieldFetch';\nimport makeUpdateLayoutFetch from 'pages/ProfileLayout/fetches/updateLayoutFetch';\nimport makeGetEntityTypeConfiguration from 'fetches/makeGetEntityTypeConfiguration';\nimport useEntityTypes from 'helpers/useEntityTypes';\nimport showSnackbar from 'helpers/showSnackbar';\nimport * as Types from 'pages/Pages/typings';\nimport { LayoutObject } from 'pages/AttributesEdit/AttributesEdit';\n\nimport PageTypes from './PageTypes';\nimport Loader from 'components/Loader';\n\nfunction Container() {\n const dispatch = useDispatch();\n const history = useHistory();\n const location = useLocation();\n const entityTypes = useEntityTypes();\n const clearFetch = useClearFetch();\n\n let { entityTypeKey } = useParams<{ entityTypeKey: string }>();\n const entityTypeData = useMemo(() => _get(entityTypes, entityTypeKey), [\n entityTypes,\n entityTypeKey,\n ]);\n\n // entity types\n const entityTypesFetch = makeEntityTypesFetch();\n const entityTypeTypeKey = location.pathname.split('/')[3];\n const getEntityTypeConfig = makeGetEntityTypeConfiguration(entityTypeTypeKey);\n const getEntityTypeConfigStatus = useStatus(getEntityTypeConfig);\n const entityTypeConfig = useData(getEntityTypeConfig);\n\n // config fields\n const fieldsFetch = makeGetFieldsFetch();\n const fieldsStatus = useStatus(fieldsFetch);\n\n // entities list upload status:\n const getEntityTypeUploadStatus = makeGetEntityTypeStatus();\n const entityTypeUploadData = useData(getEntityTypeUploadStatus);\n const entityTypeUploadStatus = useStatus(getEntityTypeUploadStatus);\n\n // update entity type:\n const updateEntityType = makeUpdateEntityType(entityTypeKey);\n const updateEntityTypeStatus = useStatus(updateEntityType);\n\n const handleUpdateEntityType = async (data: Types.UpdateEntity) => {\n await dispatch(updateEntityType(data));\n dispatch(entityTypesFetch());\n };\n\n // Field Update (valueReadOnly)\n const updateField = makeUpdateCategoryFieldFetch();\n const updateFieldStatus = useStatus(updateField);\n\n const handleUpdateField = async (fieldId: string, editedAttribute: Types.UpdateField) => {\n await dispatch(updateField(fieldId, editedAttribute));\n dispatch(entityTypesFetch());\n };\n\n // Layout Update (for person attributes filters and highlight-by)\n const updateLayout = makeUpdateLayoutFetch();\n const updateLayoutStatus = useStatus(updateLayout, { isolatedStatus: true });\n\n const handleUpdateLayout = async (payload: LayoutObject[]) => {\n await dispatch(updateLayout(payload));\n dispatch(entityTypesFetch());\n dispatch(getEntityTypeConfig());\n };\n\n const handleGetMigrationStatus = () => {\n if (entityTypeData) {\n dispatch(getEntityTypeUploadStatus(entityTypeKey));\n }\n };\n\n const combinedUpdateStatus = combineStatuses(\n updateLayoutStatus || 1,\n updateEntityTypeStatus || 1,\n updateFieldStatus || 1,\n );\n\n useEffect(() => {\n if (entityTypeData) {\n dispatch(fieldsFetch(entityTypeKey));\n dispatch(getEntityTypeUploadStatus(entityTypeKey));\n }\n }, [entityTypeData, entityTypeKey]);\n\n useEffect(() => {\n dispatch(getEntityTypeConfig());\n }, []);\n\n const combinedGetStatus = combineStatuses(\n fieldsStatus || 1,\n entityTypeUploadStatus || 1,\n getEntityTypeConfigStatus || 1,\n );\n\n useEffect(() => {\n if (!entityTypeData) {\n history.push('/404');\n }\n\n return () => {\n if (!entityTypeData) {\n clearFetch(fieldsFetch);\n clearFetch(getEntityTypeUploadStatus);\n }\n };\n }, [entityTypeData]);\n\n showSnackbar({\n status: combinedUpdateStatus,\n variant: 'success',\n message: 'You have successfully updated your page.',\n errorMessage: 'There was an error submitting your changes. Please try again.',\n });\n\n if (!entityTypeConfig) {\n return null;\n }\n\n return (\n \n {() => (\n \n )}\n \n );\n}\n\nexport default memo(Container);\n","import { defineFetch } from 'resift';\nimport _get from 'lodash/get';\n\nexport default defineFetch({\n displayName: 'create category field',\n make: () => ({\n key: [],\n request: (data: any) => async ({ http }) => {\n try {\n const response = await http({\n method: 'POST',\n route: '/fields',\n data,\n });\n\n return response;\n } catch (e) {\n if (_get(e, ['status']) === 404) {\n return 0;\n }\n\n throw e;\n }\n },\n }),\n});\n","import React, { useEffect, useMemo, useState } from 'react';\nimport _get from 'lodash/get';\nimport queryString from 'query-string';\nimport { useLocation, useParams } from 'react-router';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\n\nimport Page from 'components/Page';\nimport PageTitle from 'components/Page/PageTitle';\nimport AttributeTypeCard, { attributeTypes } from './AttributeTypeCard';\nimport Typography from '@material-ui/core/Typography';\nimport PageTypesDialog from 'pages/Pages/components/PageTypesDialog';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nconst TEXT_CARDS = ['text', 'textLong'];\nconst CONTACT_CARDS = ['email', 'phone', 'messageAddress'];\nconst CHIP_CARDS = [\n 'textSelect',\n 'multiSelect',\n 'autocompleteTextCollection',\n 'textCollection',\n 'boolean',\n];\nconst SUB_ATTRIBUTE_CHIP_CARDS = ['multiSelect', 'autocompleteTextCollection', 'textCollection'];\nconst OTHER_CARDS = ['hyperlink', 'linkCollection', 'date', 'number'];\nconst SUB_ATTRIBUTE_TEXT_CARDS = ['text', 'textSelect'];\nconst PAGE_CARDS = [BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION];\n\nfunction AttributesChooseNew() {\n const classes = useStyles();\n const location = useLocation();\n const search = location.search;\n const query = useMemo(() => queryString.parse(search), [location.search]);\n const parentObjectKey = _get(query, 'parentObjectKey');\n const { entityTypeKey } = useParams<{ entityTypeKey: string }>();\n const subAttribute = Boolean(parentObjectKey);\n const isUser = entityTypeKey === PERSON_ENTITY_TYPE_KEY;\n const [pageDialogOpen, setPageDialogOpen] = useState(false);\n const [newAttributeType, setNewAttributeType] = useState<\n typeof BASE_FIELD_PAGE | typeof BASE_FIELD_PAGE_COLLECTION\n >(BASE_FIELD_PAGE);\n\n useEffect(() => {\n document.title = subAttribute ? 'New Sub-Attribute' : 'New Attribute';\n }, []);\n\n const handleClick = (pageType: typeof BASE_FIELD_PAGE | typeof BASE_FIELD_PAGE_COLLECTION) => {\n setNewAttributeType(pageType);\n setPageDialogOpen(true);\n };\n\n return (\n
\n \n
\n \n
\n
\n Text\n {subAttribute ? (\n
\n {SUB_ATTRIBUTE_TEXT_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n );\n })}\n
\n ) : (\n
\n {TEXT_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n );\n })}\n
\n )}\n {!subAttribute && (\n <>\n Contact\n
\n {CONTACT_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n );\n })}\n
\n \n )}\n Select and Text (Chip) Collection\n {subAttribute ? (\n
\n {SUB_ATTRIBUTE_CHIP_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n );\n })}\n
\n ) : (\n
\n {CHIP_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n );\n })}\n
\n )}\n {isUser && (\n <>\n Pages\n \n By creating a Page or Page Collection, you will create a new Page type which you can\n manage in the \"Pages\" tab.\n \n
\n {PAGE_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n handleClick(\n item.link as typeof BASE_FIELD_PAGE | typeof BASE_FIELD_PAGE_COLLECTION,\n )\n }\n />\n );\n })}\n
\n \n )}\n {!subAttribute && (\n <>\n Others\n
\n {OTHER_CARDS.map((name, index) => {\n let item = _get(attributeTypes, name);\n return (\n \n );\n })}\n
\n \n )}\n
\n
\n \n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n width: '100%',\n },\n pageRoot: {\n height: '100%',\n },\n title: {\n display: 'flex',\n flexDirection: 'row',\n },\n cardSection: {\n display: 'flex',\n flexWrap: 'wrap',\n marginTop: theme.spacing(3),\n },\n cardRoot: {\n maxWidth: 214,\n marginRight: theme.spacing(2),\n '&:hover': {\n boxShadow:\n '0px 6px 14px -6px rgba(33, 33, 33, 0.12), 0px 10px 32px -4px rgba(33, 33, 33, 0.1)',\n },\n },\n content: {\n padding: 0,\n },\n cardTitle: {\n padding: theme.spacing(),\n },\n cardContent: {\n padding: theme.spacing(1, 1, 1.5, 1),\n },\n icon: {\n width: 214,\n height: 102,\n },\n}));\n\nexport default AttributesChooseNew;\n","import React from 'react';\nimport * as Sift from '@sift/types';\nimport * as Types from '../typings';\nimport * as Entity from 'pages/Pages/typings';\nimport _get from 'lodash/get';\nimport classnames from 'classnames';\nimport { useParams } from 'react-router-dom';\nimport useTerminology from '@sift/skipper/helpers/useTerminology';\n\nimport AttributeTypeCard from 'pages/AttributesNew/AttributeTypeCard';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport TextField from '@material-ui/core/TextField';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Radio from '@material-ui/core/Radio';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n attribute?: Sift.Field;\n item?: {\n description: string;\n Icon: any;\n link: string;\n title: string;\n };\n values: Types.Client;\n onChange: (field: string, value: any) => void;\n entityType?: Entity.EntityType;\n}\n\nfunction AttributeBasicInfo({ attribute, item, values, onChange, entityType }: Props) {\n const classes = useStyles();\n const terminology = useTerminology();\n const { objectKey } = useParams<{ objectKey: string }>();\n const parentFields = _get(entityType, '_fields.reachOutToMeFor.fields', []);\n const isGeneralField = objectKey === 'reachOutToMeFor.general';\n const isGeneralAndNoCategorizedAttributes =\n isGeneralField && parentFields.includes(objectKey) && parentFields.length === 1;\n const cardRootClass = classnames(classes.cardRoot, {\n [classes.disabled]: isGeneralAndNoCategorizedAttributes,\n });\n const shouldRenderMessageOptions = _get(attribute, 'baseField') === 'messageAddress';\n const shouldRenderDateFormat = false;\n const shouldRenderLinkName = _get(attribute, 'baseField') === 'hyperlink';\n\n const handleNameChange = (e: React.ChangeEvent) => {\n onChange('client.displayName', e.target.value);\n };\n const handleDescriptionChange = (e: React.ChangeEvent) => {\n onChange('client.display.description', e.target.value);\n };\n\n const handleDateFormatChange = (e: React.ChangeEvent) => {\n onChange('client.dateFormat', e.target.value);\n };\n\n const handleButtonTypeChange = (e: React.ChangeEvent) => {\n if (e.target.value === 'msteams' || e.target.value === 'slack') {\n onChange('client.display.messengerType', e.target.value);\n } else {\n onChange('client.display.messengerType', undefined);\n }\n };\n\n const handleButtonTextChange = (e: React.ChangeEvent) => {\n onChange('client.display.buttonText', e.target.value);\n };\n\n const handleLinkNameChange = (e: React.ChangeEvent) => {\n onChange('client.display.linkTitle', e.target.value);\n };\n\n const cardContent = (\n \n \n
\n Attribute Name\n \n
\n
\n Description\n \n {terminology.plural} will see this description when prompted to edit the attribute.\n \n \n
\n {shouldRenderDateFormat && (\n
\n Date Format\n \n } label=\"Month, Day, Year\" />\n } label=\"Month, Day\" />\n \n
\n )}\n {shouldRenderLinkName && (\n
\n Link Title\n \n If provided, the link will be displayed as this text rather than the full hyperlink\n entered.\n \n \n
\n )}\n {shouldRenderMessageOptions && (\n <>\n
\n Button Style\n \n If you are specifically linking to a certain messenger, you may use its icon.\n \n \n } label=\"Generic\" />\n } label=\"Microsoft Teams\" />\n } label=\"Slack\" />\n \n
\n
\n Button Text\n \n Provide the text to be displayed on the button. The default is \"Message\".\n \n \n
\n \n )}\n
\n
\n );\n\n return (\n
\n {isGeneralAndNoCategorizedAttributes ? (\n \n {cardContent}\n \n ) : (\n cardContent\n )}\n {item && }\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n },\n cardRoot: {\n flexGrow: 1,\n maxWidth: 900,\n },\n marginBottom: {\n marginBottom: theme.spacing(3),\n },\n marginLeft: {\n marginLeft: theme.spacing(3),\n },\n disabled: {\n opacity: theme.palette.opacity.thirtyEightPercent,\n },\n}));\n\nexport default AttributeBasicInfo;\n","import React, { useEffect, useState, useMemo } from 'react';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport qs from 'query-string';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useLocation, Prompt } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport { Formik, Form } from 'formik';\nimport * as Sift from '@sift/types';\nimport * as Types from 'pages/AttributesEdit/typings';\nimport { attributeTypes } from './AttributeTypeCard';\n\nimport Page from 'components/Page/newComponents';\nimport Loader from 'components/Loader';\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageFormErrorMessage from 'components/Page/newComponents/PageFormErrorMessage';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport AttributeBasicInfo from 'pages/AttributesEdit/components/AttributeBasicInfo';\nimport Typography from '@material-ui/core/Typography';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport { USER_URL } from 'components/Router/consts';\n\ninterface Props {\n newAttributeResponse: Sift.Field;\n onClearFetches: () => void;\n onRedirect: () => void;\n onSubmit: (values: Types.AttributesEditFormValues) => void;\n onUpdateParentField: () => void;\n}\n\nfunction AttributesCreateNew({\n newAttributeResponse,\n onClearFetches,\n onRedirect,\n onSubmit,\n onUpdateParentField,\n}: Props) {\n const classes = useStyles();\n const location = useLocation();\n const analytics = useAnalytics();\n const query = useMemo(() => {\n return qs.parse(location.search);\n }, [location.search]);\n let { entityTypeKey, baseField } = useParams<{\n entityTypeKey: string;\n baseField: string;\n }>();\n const parentObjectKey = _get(query, 'parentObjectKey');\n const subAttribute = Boolean(parentObjectKey) && Boolean(entityTypeKey);\n const item = _get(attributeTypes, `${baseField}`);\n const initialState = {\n client: {\n displayName: '',\n display: { description: '' },\n },\n };\n\n useEffect(() => {\n document.title = 'New Attribute';\n }, []);\n\n useEffect(() => {\n if (subAttribute && newAttributeResponse) {\n onUpdateParentField();\n } else if (newAttributeResponse) {\n onRedirect();\n }\n\n return () => {\n onClearFetches();\n };\n }, [newAttributeResponse]);\n\n return (\n \n {subAttribute && (\n
\n \n This will be a sub-attribute of \"Reach out to me for\" attribute\n \n
\n )}\n \n {props => {\n const { values, setFieldValue, dirty, resetForm } = props;\n const errors = props.errors as Types.AttributesFormErrors;\n const handleCreateNewAttribute = () => {\n props.handleSubmit();\n if (location.pathname.includes(USER_URL)) {\n analytics.track('New Attribute created', {\n category: 'AD - Person Profiles',\n });\n } else {\n analytics.track('New Attribute created', {\n category: 'AD - Pages',\n });\n }\n };\n return (\n
\n \n }>\n \n {\n handleCreateNewAttribute();\n resetForm({ values });\n }}\n disabled={!dirty || !_isEmpty(errors)}\n />\n \n \n \n );\n }}\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n width: '100%',\n },\n pageRoot: {\n display: 'flex',\n flex: '1 1 auto',\n width: '100vw',\n },\n subAttribute: {\n background: 'rgba(41, 98, 255, 0.04) !important',\n border: `1px solid rgba(41, 98, 255, 0.12)`,\n borderRadius: theme.spacing(0.75),\n color: theme.palette.secondary.main,\n marginBottom: theme.spacing(3),\n padding: theme.spacing(0.5, 1),\n width: 'fit-content',\n },\n}));\n\nexport default AttributesCreateNew;\n","import _isEmpty from 'lodash/isEmpty';\n\nexport default function removeEmptyObjProps(obj: any): any {\n return Object.entries(obj)\n .filter(([_, v]) => v != null)\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmptyObjProps(v) : v }), {});\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory } from 'react-router';\nimport _get from 'lodash/get';\nimport classnames from 'classnames';\nimport useGlobalConfig from 'helpers/useGlobalConfig';\nimport useEntityTypes from 'helpers/useEntityTypes';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\nimport { HOME_URL, ATTRIBUTES_URL, DYNAMIC_PAGES_URL } from 'components/Router/consts';\n\n// Components\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Lock from '@material-ui/icons/Lock';\nimport CheckCircle from '@material-ui/icons/CheckCircle';\nimport NotInterested from '@material-ui/icons/NotInterested';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nconst USER_EDITABILITY_NONE = 'NONE';\nconst USER_EDITABILITY_FULL = 'FULL';\nconst USER_EDITABILITY_PARTIAL = 'PARTIAL';\nconst LOCKED_TOOLTIP_TITLE = 'This is a Sift default attribute and may not be edited.';\n\nfunction AttributeRow({ dragIcon, value, list, classes: classesFromProps }) {\n const classes = useStyles();\n const history = useHistory();\n const globalConfig = useGlobalConfig();\n const entityTypes = useEntityTypes();\n const isGeneral = _get(value, 'objectKey', '').includes('general');\n const baseField = _get(value, 'baseField');\n const displayName = _get(value, 'displayName');\n const dataType = _get(globalConfig, `fields.${baseField}.displayName`);\n const objectKey = _get(value, 'objectKey');\n const entityField = _get(value, 'entityField');\n const isNotClickable =\n !_get(value, 'editable') &&\n !_get(value, 'deletable') &&\n ![BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION].includes(_get(value, 'baseField'));\n\n const renderLockedTooltipCell = data =>\n isNotClickable ? (\n \n
{data}
\n
\n ) : (\n data\n );\n\n const userEditing = () => {\n if (_get(value, '_userEditability') === USER_EDITABILITY_NONE) {\n return (\n
\n \n Not Editable\n
\n );\n } else if (_get(value, '_userEditability') === USER_EDITABILITY_FULL) {\n return (\n
\n \n Editable\n
\n );\n } else if (_get(value, '_userEditability') === USER_EDITABILITY_PARTIAL) {\n return (\n
\n Partially\n Editable\n
\n );\n }\n };\n\n const enabled =\n !_get(value, 'connectDisabled') && !_get(value, 'deletable') ? (\n \n \n \n ) : !_get(value, 'connectDisabled') && _get(value, 'deletable') ? (\n \n \n \n ) : (\n \n \n \n );\n\n const handleEditClick = () => {\n if ([BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION].includes(_get(value, 'baseField'))) {\n const entityType = Object.values(entityTypes).find(\n entityType => entityType._personClientFieldObjectKey === value.objectKey,\n );\n history.push({ pathname: `${HOME_URL}${DYNAMIC_PAGES_URL}/${entityType.id}` });\n }\n history.push(`${HOME_URL}${ATTRIBUTES_URL}/${entityField}/edit/${objectKey}`);\n };\n\n return value ? (\n (isNotClickable ? null : handleEditClick())}\n data-testid={`${displayName}-row`}\n >\n \n {renderLockedTooltipCell(isGeneral ? 'General Section' : displayName)}\n \n \n {renderLockedTooltipCell(dataType)}\n \n \n {renderLockedTooltipCell(userEditing())}\n \n {enabled}\n \n {isGeneral ? (\n \n \n \n ) : list && list.length > 1 ? (\n dragIcon\n ) : null}\n \n \n ) : null;\n}\n\nAttributeRow.propTypes = {\n dragIcon: PropTypes.node,\n value: PropTypes.object.isRequired,\n list: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n row: {\n width: '100%',\n cursor: 'pointer',\n },\n circleIcon: {\n width: theme.spacing(),\n height: theme.spacing(),\n marginRight: theme.spacing(0.75),\n },\n grayIcon: {\n color: theme.colors.gray1,\n },\n greenCircleIcon: {\n color: theme.palette.success.main,\n },\n notClickable: {\n cursor: 'default',\n },\n}));\n\nexport default AttributeRow;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useTerminology from '@sift/skipper/helpers/useTerminology';\n\n// Components\nimport DragHandleIcon from '@material-ui/icons/DragHandle';\nimport { SortableContainer, SortableElement, SortableHandle, arrayMove } from 'react-sortable-hoc';\nimport AttributeRow from './AttributeRow';\nimport Table from 'components/Table';\nimport TableHead from 'components/Table/TableHead';\nimport TableCell from 'components/Table/TableCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport Typography from '@material-ui/core/Typography';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport Tooltip from '@material-ui/core/Tooltip';\n\n// Style\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction SubAttributesTable({ list, editPriorityList }) {\n const classes = useStyles();\n const generalField = list && list.find(item => item && item.objectKey.includes('general'));\n const [newList, setNewList] = useState(null);\n useEffect(() => {\n setNewList(list && list.filter(item => item && !item.objectKey.includes('general')));\n }, [list]);\n const terminology = useTerminology();\n\n const dragHandle = SortableHandle(() => {\n return ;\n });\n\n const sortableItem = SortableElement(({ value, dataIndex }) => {\n const DragHandle = dragHandle;\n return (\n }\n isLast={dataIndex === newList.length - 1}\n list={newList}\n />\n );\n });\n\n const sortList = SortableContainer(({ items }) => {\n const SortableItem = sortableItem;\n const SortableItems = items.map((value, index) => {\n return ;\n });\n\n return (\n \n \n \n Name\n \n \n Data Type\n \n \n
\n User Editing\n \n \n \n
\n
\n \n
\n Enabled\n \n \n \n
\n
\n \n
\n \n \n {SortableItems}\n \n
\n );\n });\n\n const onSortEnd = ({ oldIndex, newIndex }) => {\n if (oldIndex !== newIndex) {\n const list = arrayMove(newList, oldIndex, newIndex);\n setNewList(list);\n editPriorityList(list);\n }\n };\n const SortableListElem = sortList;\n if (!newList) return null;\n\n return (\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n drag: {\n marginTop: -1,\n cursor: 'move',\n color: theme.colors.gray1,\n width: '100%',\n },\n table: {\n marginBottom: theme.spacing(3),\n },\n icon: {\n marginLeft: theme.spacing(),\n cursor: 'pointer',\n color: theme.palette.text.primary,\n },\n inline: {\n display: 'flex',\n alignItems: 'center',\n },\n tableHead: {\n color: theme.palette.text.primary,\n ...theme.typography.body2Bold,\n },\n mainCell: {\n width: '22.5%',\n },\n lastCell: {\n width: '10%',\n textAlign: 'center',\n },\n}));\n\nSubAttributesTable.propTypes = {\n list: PropTypes.array.isRequired,\n editPriorityList: PropTypes.func.isRequired,\n};\n\nexport default SubAttributesTable;\n","import React, { useEffect, useState } from 'react';\nimport * as Sift from '@sift/types';\nimport { useHistory } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport { useFormikContext } from 'formik';\nimport { HOME_URL, ATTRIBUTES_URL } from 'components/Router/consts';\n\nimport SubAttributesTable from './SubAttributesTable';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n attribute: Sift.Field;\n onChange: (field: string, value: any) => void;\n fields: Sift.Field[];\n}\n\nfunction AttributeReachOutToMeFor({ attribute, fields, onChange }: Props) {\n const classes = useStyles();\n const { dirty } = useFormikContext();\n const history = useHistory();\n const { objectKey } = useParams<{ objectKey: string }>();\n const shouldRenderFormat = attribute && objectKey === 'reachOutToMeFor';\n const [sortableFields, setSortableFields] = useState<(Sift.Field | undefined)[]>([]);\n\n useEffect(() => {\n if (shouldRenderFormat && fields && attribute.fields && !dirty) {\n setSortableFields(\n attribute.fields.map((fieldName: string) =>\n fields.find((f: Sift.Field) => f.objectKey === fieldName),\n ),\n );\n }\n }, [attribute, fields, dirty]);\n\n const handleAttributeOrderChange = (values: Sift.Field[]) => {\n onChange('client.fields', [\n ...values.map((value: Sift.Field) => value.objectKey),\n 'reachOutToMeFor.general',\n ]);\n };\n\n const handleAddSubAttribute = () => {\n history.push(\n `${HOME_URL}${ATTRIBUTES_URL}/${attribute.entityField}/create?parentObjectKey=${attribute.objectKey}`,\n );\n };\n\n if (!shouldRenderFormat) {\n return null;\n }\n\n return (\n
\n \n \n \n {sortableFields.length > 0 && (\n \n )}\n \n \n \n
\n );\n}\n\nconst useStyles = makeStyles(() => ({\n root: {},\n cardRoot: {\n maxWidth: 900,\n },\n}));\n\nexport default AttributeReachOutToMeFor;\n","import React, { memo, useState, useEffect, useMemo } from 'react';\nimport * as Sift from '@sift/types';\nimport * as Types from '../typings';\nimport * as Entity from 'pages/Pages/typings';\nimport classnames from 'classnames';\nimport _split from 'lodash/split';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport _includes from 'lodash/includes';\nimport { useSelector } from 'react-redux';\nimport { useFormikContext } from 'formik';\nimport getPriorityListItems from 'helpers/getPriorityListItems';\n\nimport PriorityList from 'pages/SiftBot/components/PriorityList';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport Typography from '@material-ui/core/Typography';\nimport Switch from '@material-ui/core/Switch';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport convertStringToArrayOfStrings from 'helpers/convertStringToArrayOfStrings';\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nconst OPTIONS_TYPES = ['textSelect', 'multiSelect'];\nconst CHIP_TYPES = ['autocompleteTextCollection', 'textCollection'];\n\ninterface Props {\n attribute: Sift.Field;\n onChange: (field: string, value: any) => void;\n values: Types.AttributesEditFormValues;\n entityType: Entity.EntityType;\n}\n\nfunction AttributeUserEditing({ attribute, onChange, entityType, values }: Props) {\n const { resetForm, errors } = useFormikContext();\n const classes = useStyles();\n const _client = useSelector((state: any) => state.client);\n const [options, setOptions] = useState(null);\n const [priorityModalOpen, setPriorityModalOpen] = useState(false);\n const { _fields } = entityType;\n const valueReadOnly = _get(values, 'client.valueReadOnly', false);\n const disabledClass = classnames({\n [classes.disabled]: valueReadOnly,\n });\n const profileCompletionEnabled = _get(_client, 'settings.siftBot.enabled', false);\n const isRequiredAttribute = useMemo(\n () =>\n profileCompletionEnabled &&\n values.priorityList &&\n values.priorityList.some(item => item.objectKey === attribute.objectKey),\n [values, attribute, profileCompletionEnabled],\n );\n const priorityList = _get(values, 'priorityList');\n const priorityListItems = getPriorityListItems(_fields, priorityList);\n\n const shouldRenderRequiredAttribute = useMemo(\n () =>\n (entityType.typeKey === PERSON_ENTITY_TYPE_KEY &&\n priorityListItems.some(item => item.objectKey === attribute.objectKey)) ||\n (priorityList && priorityList.some(item => item.objectKey === attribute.objectKey)),\n [],\n );\n const shouldRenderOptions = OPTIONS_TYPES.includes(attribute.baseField);\n const shouldRenderMaxNumberOfChips = CHIP_TYPES.includes(attribute.baseField);\n const shouldRenderAutocompleteFields =\n _get(attribute, 'baseField') === 'autocompleteTextCollection';\n const shouldRenderMaxLinks = _get(attribute, 'baseField') === 'linkCollection';\n const shouldRenderNumberRange = _get(attribute, 'baseField') === 'number';\n const shouldRenderAnyCardContent =\n shouldRenderRequiredAttribute ||\n shouldRenderOptions ||\n shouldRenderMaxNumberOfChips ||\n shouldRenderAutocompleteFields ||\n shouldRenderMaxLinks ||\n shouldRenderNumberRange;\n\n const requiredAttributeCopy = (\n <>\n If enabled, people will be reminded to fill in the information when it’s empty. To add to your\n priority list,\n \n );\n\n const getOptions = () => {\n if (attribute.baseField === 'textSelect') {\n return _get(attribute, 'validation._selectOptions', [])\n .map((option: { [value: string]: string }) => option.value)\n .join(', ');\n } else if (attribute.baseField === 'multiSelect') {\n return _get(attribute, 'item.validation._selectOptions', [])\n .map((option: { [value: string]: string }) => option.value)\n .join(', ');\n }\n };\n\n useEffect(() => {\n if (attribute.baseField === 'textSelect' || attribute.baseField === 'multiSelect') {\n const initialOptions = getOptions();\n setOptions(initialOptions);\n if (attribute.baseField === 'textSelect') {\n onChange(\n 'client.validation._selectOptions',\n convertOptionsToArrayOfObjects(initialOptions),\n );\n }\n if (attribute.baseField === 'multiSelect') {\n onChange(\n 'client.item.validation._selectOptions',\n convertOptionsToArrayOfObjects(initialOptions),\n );\n }\n }\n }, []);\n\n useEffect(() => {\n if (attribute.baseField === 'textSelect') {\n let currentValues = _get(values, 'client.validation._selectOptions');\n if (!currentValues) {\n setOptions(null);\n onChange('client.validation._selectOptions', undefined);\n } else if (!_isEqual(currentValues, convertOptionsToArrayOfObjects(options))) {\n setOptions(\n currentValues.map((option: { [value: string]: string }) => option.value).join(', '),\n );\n onChange('client.validation._selectOptions', currentValues);\n }\n }\n if (attribute.baseField === 'multiSelect') {\n let currentValues = _get(values, 'client.item.validation._selectOptions');\n if (!currentValues) {\n setOptions(null);\n onChange('client.item.validation._selectOptions', undefined);\n } else if (!_isEqual(currentValues, convertOptionsToArrayOfObjects(options))) {\n setOptions(\n currentValues.map((option: { [value: string]: string }) => option.value).join(', '),\n );\n onChange('client.item.validation._selectOptions', currentValues);\n }\n }\n }, [values]);\n\n const handleAutocompleteOptionsChange = (e: React.ChangeEvent) => {\n let value = e.target.value;\n onChange('autocomplete', value);\n };\n\n const handleChangePriorityList = (newFields: Sift.Field[]) => {\n onChange('priorityList', newFields);\n };\n\n const handleSelectOptionsChange = (e: React.ChangeEvent) => {\n e.preventDefault();\n let value = e.target.value;\n setOptions(value);\n if (attribute.baseField === 'textSelect') {\n onChange('client.validation._selectOptions', convertOptionsToArrayOfObjects(value));\n }\n if (attribute.baseField === 'multiSelect') {\n onChange('client.item.validation._selectOptions', convertOptionsToArrayOfObjects(value));\n }\n };\n\n const handleFalseySwitchChange = (e: React.ChangeEvent, key: string) => {\n onChange(key, !e.target.checked);\n };\n\n const handleSwitchChange = (e: React.ChangeEvent, key: string) => {\n onChange(key, e.target.checked);\n };\n\n const handleMinMaxChange = (e: React.ChangeEvent, key: string) => {\n let value = e.target.value;\n onChange(key, Number(value));\n };\n\n return (\n <>\n \n ) =>\n handleFalseySwitchChange(e, 'client.valueReadOnly')\n }\n />\n }\n />\n {shouldRenderAnyCardContent && }\n {shouldRenderAnyCardContent && (\n \n {shouldRenderRequiredAttribute && (\n
\n
\n Required Attribute\n \n {requiredAttributeCopy}\n {\n setPriorityModalOpen(true);\n }}\n >\n click here.\n \n \n
\n
\n \n
\n
\n )}\n {shouldRenderOptions && (\n \n Options\n \n What are the options that people can choose from? Separate options by commas or\n line breaks. The maximum number of options is 200.\n \n \n \n )}\n {shouldRenderMaxNumberOfChips && (\n
\n
\n Maximum Number of Chips\n \n The maximum number of items that may be entered by users.\n \n
\n ) =>\n handleMinMaxChange(e, 'client.validation.maxLength')\n }\n inputProps={{ 'aria-label': 'max chips input' }}\n style={{ maxWidth: 450 }}\n type=\"number\"\n />\n
\n )}\n {shouldRenderAutocompleteFields && (\n <>\n \n Autocomplete Database\n \n What are the values that autocomplete? Separate options by spaces, commas, or\n line breaks. The max number of options are 2000.\n \n \n \n
\n
\n Add Free-Form Entries to Database\n \n If enabled, free-form entries will be added to the autocomplete database for\n future input. This helps to reduce variations of one value.\n \n
\n
\n ) =>\n handleSwitchChange(e, 'client.autocomplete.addValuesAsEntries')\n }\n />\n
\n
\n \n )}\n {shouldRenderMaxLinks && (\n
\n Max Number of Links\n The default max number of links is 20.\n ) =>\n handleMinMaxChange(e, 'client.validation.maxLength')\n }\n style={{ maxWidth: 450 }}\n type=\"number\"\n value={_get(values, 'client.validation.maxLength')}\n />\n
\n )}\n {shouldRenderNumberRange && (\n
\n Number Range\n
\n \n From{' '}\n \n ) =>\n handleMinMaxChange(e, 'client.validation.min')\n }\n style={{ maxWidth: 220 }}\n type=\"number\"\n value={_get(values, 'client.validation.min')}\n />\n \n to{' '}\n \n ) =>\n handleMinMaxChange(e, 'client.validation.max')\n }\n style={{ maxWidth: 220 }}\n type=\"number\"\n value={_get(values, 'client.validation.max')}\n />\n
\n
\n )}\n
\n )}\n
\n {shouldRenderRequiredAttribute && (\n {\n setPriorityModalOpen(false);\n }}\n priorityList={_get(values, 'priorityList', [])}\n resetState={resetForm}\n />\n )}\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n cardRoot: {\n maxWidth: 900,\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n marginRight: {\n marginRight: theme.spacing(1.5),\n },\n marginTop: {\n marginTop: theme.spacing(2),\n },\n inline: {\n display: 'flex',\n alignItems: 'flex-end',\n },\n subAction: {\n flex: '0 0 auto',\n alignSelf: 'flex-start',\n marginTop: -theme.spacing(),\n marginRight: -theme.spacing(),\n },\n disabled: {\n opacity: theme.palette.opacity.thirtyEightPercent,\n },\n positionButton: {\n textTransform: 'none',\n color: theme.palette.secondary.main,\n marginBottom: theme.spacing(0.5),\n },\n link: {\n textDecoration: 'underline',\n },\n}));\n\nexport default memo(AttributeUserEditing);\n\nconst convertOptionsToArrayOfObjects = (value: string | null | undefined) => {\n let options = convertStringToArrayOfStrings(value);\n return options ? options.map(option => ({ value: option })) : null;\n};\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\nimport * as Sift from '@sift/types';\nimport { isLoading } from 'resift';\nimport _get from 'lodash/get';\nimport * as Types from 'pages/AttributesEdit/typings';\n\n// Components\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Switch from '@material-ui/core/Switch';\nimport Typography from '@material-ui/core/Typography';\nimport LoadingButton from 'atoms/LoadingButton';\n\n// Style\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n classes?: any;\n field: Sift.Field;\n status: number;\n values: Types.AttributesEditFormValues;\n deleteCategoryField: (field: Sift.Field) => void;\n onChange: (field: string, value: any) => void;\n}\n\nfunction DeleteAttribute({\n classes: classesFromProps,\n field,\n status,\n values,\n deleteCategoryField,\n onChange,\n}: Props) {\n const _classes = useStyles();\n const classes = { ...classesFromProps, ..._classes };\n const [dialogOpen, setDialogOpen] = useState(false);\n const [dialogInput, setDialogInput] = useState('');\n const enabled = !_get(values, 'client.connectDisabled');\n const shouldRenderDeleteButton =\n _get(values, 'client.editable') && _get(values, 'client.deletable');\n\n const handleDialogChange = (e: React.ChangeEvent) => {\n setDialogInput(e.target.value);\n };\n\n const toggleDialog = (deleteAttribute: boolean) => {\n if (deleteAttribute) {\n deleteCategoryField(field);\n } else {\n setDialogInput('');\n setDialogOpen(!dialogOpen);\n }\n };\n\n const handleChangeEnabled = (e: React.ChangeEvent, isChecked: boolean) => {\n onChange('client.connectDisabled', !isChecked);\n };\n\n const buttonClass = classnames({\n [classes.red]: dialogInput === field.displayName,\n [classes.disabled]: dialogInput !== field.displayName,\n });\n\n return (\n \n \n
\n
\n Enable Attribute\n \n If switched off, the attribute will not appear anywhere in Sift. This would usually be\n used to hide something existing.\n \n
\n \n
\n {shouldRenderDeleteButton && (\n
\n Delete Attribute\n \n Delete this attribute from the Sift attribute list? You cannot undo this action, and\n any source mappings will also be deleted.\n \n {\n toggleDialog(false);\n }}\n variant=\"contained\"\n >\n Delete Attribute\n \n
\n )}\n
\n {\n toggleDialog(false);\n }}\n >\n Are you sure you want to delete \"{field.displayName}\"?\n \n \n To delete this field, type out{' '}\n \"{field.displayName}\" \n in the input below to enable the delete button.\n
\n
\n WARNING: This may impact your mappings, and{' '}\n you cannot undo this action! \n
\n \n
\n \n {\n toggleDialog(false);\n }}\n >\n Cancel\n \n {\n toggleDialog(true);\n }}\n disabled={dialogInput !== field.displayName}\n />\n \n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n marginBottom: theme.spacing(2),\n maxWidth: 900,\n },\n openDialogButton: {\n color: theme.palette.common.white,\n background: theme.palette.error.main,\n marginTop: theme.spacing(),\n },\n textField: {\n width: 400,\n },\n red: {\n color: theme.palette.error.main,\n },\n disabled: {\n cursor: 'not-allowed',\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n marginTop: {\n marginTop: theme.spacing(2),\n },\n}));\n\nexport default DeleteAttribute;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Delete Category Field',\n make: (fieldId: string) => ({\n key: [fieldId],\n request: () => async ({ http }) => {\n await http({\n method: 'DELETE',\n route: `/fields/${fieldId}`,\n });\n },\n }),\n});\n","import React, { memo, useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory, useParams } from 'react-router';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport { combineStatuses, useStatus } from 'resift';\nimport _get from 'lodash/get';\nimport showSnackbar from 'helpers/showSnackbar';\nimport { HOME_URL, DYNAMIC_PAGES_URL, PERSON_PROFILE_URL } from 'components/Router/consts';\n\n// Component\nimport DeleteAttribute from './DeleteAttribute';\n\n// Actions\nimport makeDeleteCategoryFieldFetch from 'store/attribute/actions/deleteCategoryFieldFetch';\nimport makeUpdateCategoryFieldFetch from 'store/attribute/actions/updateCategoryFieldFetch';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\n\nfunction Container(props) {\n const dispatch = useDispatch();\n const entityTypes = useEntityTypes();\n const history = useHistory();\n const { entityTypeKey } = useParams();\n const entityType = _get(entityTypes, entityTypeKey);\n const fieldId = _get(props, 'field.id', null);\n const deleteFieldFetch = fieldId ? makeDeleteCategoryFieldFetch(fieldId) : null;\n const deleteFieldStatus = deleteFieldFetch ? useStatus(deleteFieldFetch) : 1;\n const entityTypesFetch = makeEntityTypesFetch();\n const entityTypesStatus = useStatus(entityTypesFetch);\n const updateField = makeUpdateCategoryFieldFetch();\n const updateFieldStatus = useStatus(updateField);\n\n showSnackbar({\n status: deleteFieldStatus,\n message: 'Successfully deleted attribute.',\n errorMessage: 'An error occurred while deleting the attribute.',\n });\n\n const handleRedirect = async () => {\n await dispatch(entityTypesFetch());\n history.push(\n entityTypeKey === PERSON_ENTITY_TYPE_KEY\n ? `/admin${PERSON_PROFILE_URL}`\n : `${HOME_URL}${DYNAMIC_PAGES_URL}/${entityTypeKey}/attribute`,\n );\n };\n\n const handleDelete = useCallback(\n async field => {\n await dispatch(deleteFieldFetch(field.id));\n if (field.objectKey.includes('.')) {\n const parentKey = field.objectKey.split('.')[0];\n const parentField = parentKey ? _get(entityType, `_fields['${parentKey}']`, null) : null;\n if (parentField) {\n const parentPayload = {\n ...parentField,\n fields: [...parentField.fields.filter(parentField => parentField !== field.objectKey)],\n };\n await dispatch(updateField(parentField.id, parentPayload));\n dispatch(entityTypesFetch());\n } else {\n handleRedirect();\n }\n } else {\n handleRedirect();\n }\n },\n [entityType],\n );\n\n const combinedLoadingStatus = combineStatuses(\n deleteFieldStatus | 1,\n updateFieldStatus | 1,\n entityTypesStatus | 1,\n );\n\n return (\n \n );\n}\n\nexport default memo(Container);\n","import React, { useEffect, useState, useMemo, useCallback } from 'react';\nimport { useParams } from 'react-router-dom';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isArray from 'lodash/isArray';\nimport _isEqual from 'lodash/isEqual';\nimport _split from 'lodash/split';\nimport { Prompt } from 'react-router';\nimport { Formik, Form } from 'formik';\nimport * as Sift from '@sift/types';\nimport * as Types from './typings';\nimport { LayoutUpdateShape } from 'pages/Features/typings';\nimport * as Entity from 'pages/Pages/typings';\nimport { Layout } from 'components/GenericLayoutBuilder/GenericLayoutBuilder';\nimport convertStringToArrayOfStrings from 'helpers/convertStringToArrayOfStrings';\nimport removeEmptyObjProps from 'helpers/removeEmptyObjProps';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\n// Components\nimport Page from 'components/Page/newComponents';\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport PageFormErrorMessage from 'components/Page/newComponents/PageFormErrorMessage';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport AttributeBasicInfo from './components/AttributeBasicInfo';\nimport AttributeUsage from './components/AttributeUsage';\nimport AttributeReachOutToMeFor from './components/AttributeReachOutToMeFor';\nimport AttributeDataMapping from './components/AttributeDataMapping';\nimport AttributeUserEditing from './components/AttributeUserEditing';\nimport HandleRedirect from 'molecules/HandleRedirect';\nimport DeleteAttribute from 'pages/AttributesEdit/components/DeleteAttribute';\nimport Typography from '@material-ui/core/Typography';\nimport { attributeTypes } from 'pages/AttributesNew/AttributeTypeCard';\n\n// Style\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nexport interface LayoutObject {\n entityField: string;\n layoutKey: string;\n children: Layout;\n}\n\ninterface AutocompleteData {\n title: string;\n type: string;\n subtitle: string | null;\n targetId: string | null;\n}\n\ninterface Props {\n attribute: Sift.Field;\n entityType: Entity.EntityType;\n userFields: Sift.Field[];\n query: any;\n siftBotFields: Sift.Field[];\n layoutStatus: any;\n attributeAutocompleteData: AutocompleteData[] | null;\n updateField: (id: string, attribute: Types.PayloadField) => void;\n updateLayout: (payload: LayoutObject[]) => void;\n updateSiftBotFields: (payload: Sift.Field[]) => void;\n updateAttributeAutocomplete: (id: string, payload: { items: string[] }) => void;\n}\n\nfunction AttributesEdit({\n attribute,\n entityType,\n userFields,\n query,\n siftBotFields,\n layoutStatus,\n attributeAutocompleteData,\n updateField,\n updateLayout,\n updateSiftBotFields,\n updateAttributeAutocomplete,\n}: Props) {\n const classes = useStyles();\n const { entityTypeKey } = useParams<{ entityTypeKey: string }>();\n const entityTypes = useEntityTypes();\n const personEntityType = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const [isSaving, setIsSaving] = useState(false);\n const attributeId = _get(attribute, 'id');\n\n useEffect(() => {\n document.title = 'Edit Attribute';\n }, []);\n const [formattedAutocompleteData, setFormattedAutocompleteData] = useState(null);\n\n useEffect(() => {\n if (attributeAutocompleteData) {\n if (attributeAutocompleteData.length > 0) {\n setFormattedAutocompleteData(\n attributeAutocompleteData.map((item: AutocompleteData) => item.title).join(', '),\n );\n } else {\n setFormattedAutocompleteData('');\n }\n }\n }, [attributeAutocompleteData]);\n\n const item =\n _get(attributeTypes, `${attribute.baseField}`) ||\n _get(attributeTypes, `${attribute.objectKey}`);\n const shouldRenderDeleteAttribute = !query.newAttribute;\n const isSubAttribute = attribute.objectKey.includes('reachOutToMeFor.');\n const shouldRenderAttributeUsageAndDataMapping =\n _get(attribute, 'entityTypeId') === _get(personEntityType, 'id');\n\n const subAttribute = isSubAttribute ? (\n
\n \n This is a sub-attribute of \"Reach out to me for\" attribute\n \n
\n ) : null;\n\n const initialState = {\n client: {\n ...attribute,\n },\n layouts: {\n 'org-chart-highlight-by': _get(personEntityType, '_layouts.org-chart-highlight-by', []),\n filters: _get(personEntityType, '_layouts.filters', []),\n },\n priorityList: siftBotFields || [],\n ...(attributeAutocompleteData && {\n autocomplete: formattedAutocompleteData,\n }),\n } as Types.AttributesEditFormValues;\n\n const initialStateToCompareDirty = useMemo(() => removeEmptyObjProps(initialState), [\n initialState,\n ]);\n const initialStateLayout = useMemo(() => _get(initialState, 'layouts'), [initialState]);\n\n const handleValidation = (values: Types.AttributesEditFormValues) => {\n const errors = {} as Types.AttributesFormErrors;\n\n if (values.client.displayName === '') {\n errors.displayName = 'Name is a required field.';\n }\n if (_get(attribute, 'baseField') === 'textSelect') {\n const selectOptions = _get(values, 'client.validation._selectOptions', null);\n if (!selectOptions || _isEmpty(selectOptions)) {\n errors.selectOptions = 'This attribute must have at least 1 option.';\n }\n }\n if (_get(attribute, 'baseField') === 'multiSelect') {\n const selectOptions = _get(values, 'client.item.validation._selectOptions', null);\n if (!selectOptions || _isEmpty(selectOptions)) {\n errors.selectOptions = 'This attribute must have at least 1 option.';\n }\n }\n return errors;\n };\n\n const handleUpdatePriorityFields = useCallback(\n (priorityFieldsPayload: Sift.Field[] | undefined) => {\n const isNewSiftFields = !_isEqual(priorityFieldsPayload, siftBotFields);\n if (priorityFieldsPayload && isNewSiftFields) {\n updateSiftBotFields(priorityFieldsPayload);\n }\n },\n [siftBotFields],\n );\n\n const handleUpdateLayout = useCallback(\n (layoutValues: LayoutUpdateShape | null) => {\n const layoutPayloadKeys = layoutValues\n ? Object.keys(layoutValues).filter(\n key => !_isEqual(layoutValues[key], _get(initialStateLayout, key)),\n )\n : null;\n\n const layoutPayload = layoutPayloadKeys\n ? layoutPayloadKeys.map(key => {\n return {\n entityField: PERSON_ENTITY_TYPE_KEY,\n layoutKey: key,\n children: _get(layoutValues, key, []),\n };\n })\n : null;\n\n if (layoutPayload && layoutPayload.length > 0) {\n updateLayout(layoutPayload);\n }\n },\n [initialStateLayout],\n );\n\n const handleUpdateField = useCallback(\n (clientPayload: Types.PayloadField) => {\n if (!_isEqual(clientPayload, _get(initialState, 'client'))) {\n attributeId && updateField(attributeId, clientPayload);\n }\n },\n [attributeId, initialState],\n );\n\n const handleUpdateAutocomplete = useCallback(\n (autocompletePayload: string | undefined) => {\n if (\n (autocompletePayload || formattedAutocompleteData) &&\n !_isEqual(autocompletePayload, _get(initialState, 'autocomplete', ''))\n ) {\n const arrayOfOptions = convertStringToArrayOfStrings(autocompletePayload);\n attributeId && updateAttributeAutocomplete(attributeId, { items: arrayOfOptions || [] });\n }\n },\n [formattedAutocompleteData, attributeId],\n );\n\n const handleSubmit = useCallback(\n (values: Types.AttributesEditFormValues) => {\n setIsSaving(true);\n\n //conditional updates\n const priorityFieldsPayload = values.priorityList;\n handleUpdatePriorityFields(priorityFieldsPayload);\n\n const layoutValues = _get(values, 'layouts', null);\n handleUpdateLayout(layoutValues);\n\n const clientPayload: Types.PayloadField = {\n ...values.client,\n };\n handleUpdateField(clientPayload);\n\n const autocompletePayload = _get(values, 'autocomplete');\n handleUpdateAutocomplete(autocompletePayload);\n },\n [initialState],\n );\n\n return (\n \n {subAttribute}\n {attribute && entityType && (\n \n {props => {\n const { values, setFieldValue, resetForm } = props;\n const valuesToCompareDirty = removeEmptyObjProps(values);\n const errors = props.errors as Types.AttributesFormErrors;\n const dirty = !_isEqual(valuesToCompareDirty, initialStateToCompareDirty);\n const hasErrors = !_isEmpty(errors);\n\n return (\n
\n \n {shouldRenderAttributeUsageAndDataMapping && (\n \n )}\n \n {shouldRenderAttributeUsageAndDataMapping && (\n \n )}\n \n {shouldRenderDeleteAttribute && (\n \n )}\n }\n >\n \n {\n props.handleSubmit();\n resetForm({ values });\n }}\n disabled={!dirty || hasErrors}\n />\n \n \n \n \n );\n }}\n \n )}\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n pageRoot: {\n display: 'flex',\n flex: '1 1 auto',\n height: 'calc(100vh - 64px)',\n },\n pageContent: {\n alignItems: 'center',\n },\n title: {\n display: 'flex',\n flexDirection: 'row',\n },\n subAttribute: {\n background: 'rgba(41, 98, 255, 0.04) !important',\n border: `1px solid rgba(41, 98, 255, 0.12)`,\n borderRadius: theme.spacing(0.75),\n color: theme.palette.secondary.main,\n marginBottom: theme.spacing(3),\n padding: theme.spacing(0.5, 1),\n width: 'fit-content',\n },\n}));\n\nexport default AttributesEdit;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Update Attribute Autocomplete Items',\n make: () => ({\n key: [],\n request: (fieldId: string, data: any) => async ({ http }) => {\n await http({\n method: 'PUT',\n route: `/fields/${fieldId}/autocomplete`,\n data,\n });\n },\n }),\n});\n","import { defineFetch } from 'resift';\n\nconst makeGetAttributeAutocomplete = defineFetch({\n displayName: 'Get Attribute Autocomplete',\n make: () => ({\n key: [],\n request: (fieldId: string) => ({ http }) =>\n http({\n method: 'GET',\n route: `/fields/${fieldId}/autocomplete`,\n query: { retrieveAllDatabaseEntries: true },\n }),\n }),\n});\n\nexport default makeGetAttributeAutocomplete;\n","import React, { useCallback, useEffect, useMemo, memo, useState } from 'react';\nimport qs from 'query-string';\nimport _get from 'lodash/get';\nimport * as Sift from '@sift/types';\nimport usePrevious from 'helpers/usePrevious';\nimport { useHistory } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport { isNormal, isLoading, useStatus, useData, combineStatuses } from 'resift';\nimport { useDispatch, useSelector } from 'react-redux';\nimport useRouter from '@sift/resift/useRouter';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport { Status, States } from '@sift/resift/models/Status';\nimport showSnackbar from 'helpers/showSnackbar';\nimport {\n HOME_URL,\n ATTRIBUTES_URL,\n DYNAMIC_PAGES_URL,\n PERSON_PROFILE_URL,\n} from 'components/Router/consts';\n\n// Components\nimport Loader from 'components/Loader';\nimport AttributesEdit from './AttributesEdit';\n\n// Actions\nimport makeUpdateCategoryFieldFetch from 'store/attribute/actions/updateCategoryFieldFetch';\nimport makeCreateCategoryFieldFetch from 'store/attribute/actions/createCategoryFieldFetch';\nimport makeUpdateLayoutFetch from 'pages/ProfileLayout/fetches/updateLayoutFetch';\nimport { updateSiftBotFields } from 'store/siftBot';\nimport makeGetFieldsFetch from 'fetches/makeGetFieldsFetch';\nimport makeGetUserFieldsFetch from 'fetches/makeGetUserFieldsFetch';\nimport makeUpdateAttributeAutocomplete from 'fetches/makeUpdateAttributeAutocomplete';\nimport makeGetAttributeAutocomplete from 'fetches/makeGetAttributeAutocomplete';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport deleteCategoryFieldFetch from 'store/attribute/actions/deleteCategoryFieldFetch';\n\nfunction Container() {\n const dispatch = useDispatch();\n let { objectKey, entityTypeKey } = useParams<{ objectKey: string; entityTypeKey: string }>();\n const entityTypesFetch = makeEntityTypesFetch();\n const createFieldFetch = makeCreateCategoryFieldFetch();\n const updateFieldFetch = makeUpdateCategoryFieldFetch();\n const updateLayoutFetch = makeUpdateLayoutFetch();\n const updateAttributeAutocompleteFetch = makeUpdateAttributeAutocomplete();\n const getAttributeAutocompleteFetch = makeGetAttributeAutocomplete();\n const updateSiftBotFetch = (...props: any) => updateSiftBotFields(...props);\n const makeGetFields = makeGetFieldsFetch();\n const entityTypeFieldsStatus = useStatus(makeGetFields);\n const entityTypeFields = useData(makeGetFields);\n const makeGetUserFields = makeGetUserFieldsFetch();\n const userFieldsStatus = useStatus(makeGetUserFields);\n const userFields = useData(makeGetUserFields);\n const attributeAutocompleteData = useData(getAttributeAutocompleteFetch);\n const updateFieldFetchStatus = useStatus(updateFieldFetch, { isolatedStatus: true });\n const prevUpdateFieldFetchStatus = usePrevious(updateFieldFetchStatus);\n const createFieldFetchStatus = useStatus(createFieldFetch, { isolatedStatus: true });\n const prevCreateFieldFetchStatus = usePrevious(createFieldFetchStatus);\n const updateLayoutStatus = useStatus(updateLayoutFetch, { isolatedStatus: true });\n const prevUpdateLayoutStatus = usePrevious(updateLayoutStatus);\n const updateSiftBotStatus = useSelector((state: any) => state.siftBot.status.value);\n const prevUpdateSiftBotStatus = usePrevious(updateSiftBotStatus);\n const prevEntityTypeFieldStatus = usePrevious(entityTypeFieldsStatus);\n const prevUserFieldsStatus = usePrevious(userFieldsStatus);\n const updateAutocompleteStatus = useStatus(updateAttributeAutocompleteFetch, {\n isolatedStatus: true,\n });\n const prevUpdateAutocompleteStatus = usePrevious(updateAutocompleteStatus);\n const getAutocompleteStatus = useStatus(getAttributeAutocompleteFetch);\n\n const entityTypes = useEntityTypes();\n const entityType = _get(entityTypes, entityTypeKey);\n const history = useHistory();\n const { location } = useRouter();\n const userFieldsResults = useMemo(() => _get(userFields, 'results', []), [userFields]);\n const entityTypeFieldsResults = useMemo(() => _get(entityTypeFields, 'results', []), [\n entityTypeFields,\n ]);\n\n const query = useMemo(() => {\n return qs.parse(location.search);\n }, [location.search]);\n\n const siftBotFields = useSelector((state: any) => state.siftBot.fields);\n const [attribute, setAttribute] = useState();\n const deleteFieldFetch =\n attribute && attribute.id ? deleteCategoryFieldFetch(attribute.id) : null;\n const deleteFieldStatus = useStatus(deleteFieldFetch);\n\n useEffect(() => {\n if (!userFields) {\n dispatch(makeGetUserFields());\n }\n if (entityTypeKey !== PERSON_ENTITY_TYPE_KEY && !entityTypeFields) {\n dispatch(makeGetFields(entityTypeKey));\n }\n }, []);\n\n useEffect(() => {\n if (objectKey) {\n let fields: Sift.Field[] =\n entityTypeKey === PERSON_ENTITY_TYPE_KEY ? userFieldsResults : entityTypeFieldsResults;\n setAttribute(fields.find((field: Sift.Field) => field.objectKey === objectKey));\n }\n }, [entityTypeFieldsResults, userFieldsResults, objectKey]);\n\n useEffect(() => {\n if (userFields && entityTypeKey === PERSON_ENTITY_TYPE_KEY) {\n const field = userFieldsResults.find((field: Sift.Field) => field.objectKey === objectKey);\n if (_get(field, 'baseField') === 'autocompleteTextCollection') {\n dispatch(getAttributeAutocompleteFetch(field!.id));\n }\n } else if (entityTypeKey !== PERSON_ENTITY_TYPE_KEY && entityTypeFields) {\n const field = userFieldsResults.find((field: Sift.Field) => field.objectKey === objectKey);\n if (_get(field, 'baseField') === 'autocompleteTextCollection') {\n dispatch(getAttributeAutocompleteFetch(field!.id));\n }\n }\n }, [entityTypeFields, userFieldsResults, objectKey]);\n\n const handleUpdate = useCallback(async (fieldId: string, editedAttribute: any) => {\n await dispatch(updateFieldFetch(fieldId, editedAttribute));\n }, []);\n\n const handleUpdateLayout = useCallback(payload => {\n dispatch(updateLayoutFetch(payload));\n }, []);\n\n const handleUpdateSiftBotFields = useCallback(payload => {\n dispatch(updateSiftBotFetch(payload));\n }, []);\n\n const handleUpdateAttributeAutocomplete = useCallback((fieldId, payload) => {\n dispatch(updateAttributeAutocompleteFetch(fieldId, payload));\n }, []);\n\n const fieldStatus =\n entityTypeKey === PERSON_ENTITY_TYPE_KEY\n ? userFieldsStatus\n : combineStatuses(entityTypeFieldsStatus, userFieldsStatus);\n const prevFieldStatus =\n entityTypeKey === PERSON_ENTITY_TYPE_KEY\n ? prevUserFieldsStatus\n : combineStatuses(prevEntityTypeFieldStatus, prevUserFieldsStatus);\n\n useEffect(() => {\n if (\n (prevUpdateFieldFetchStatus &&\n isLoading(prevUpdateFieldFetchStatus) &&\n isNormal(updateFieldFetchStatus)) ||\n (prevCreateFieldFetchStatus &&\n isLoading(prevCreateFieldFetchStatus) &&\n isNormal(createFieldFetchStatus)) ||\n (prevUpdateLayoutStatus &&\n isLoading(prevUpdateLayoutStatus) &&\n isNormal(updateLayoutStatus)) ||\n (prevUpdateSiftBotStatus &&\n isLoading(prevUpdateSiftBotStatus) &&\n isNormal(updateSiftBotStatus)) ||\n (prevFieldStatus && isLoading(prevFieldStatus) && isNormal(fieldStatus)) ||\n (prevUpdateAutocompleteStatus &&\n isLoading(prevUpdateAutocompleteStatus) &&\n isNormal(updateAutocompleteStatus))\n ) {\n const getEntityTypes = async () => {\n await dispatch(entityTypesFetch());\n };\n getEntityTypes();\n if (objectKey.includes('reachOutToMeFor.')) {\n const parentObjectKey = objectKey.split('.')[0];\n history.push(`${HOME_URL}${ATTRIBUTES_URL}/${entityTypeKey}/edit/${parentObjectKey}`);\n } else {\n history.push(\n entityTypeKey === PERSON_ENTITY_TYPE_KEY\n ? `/admin${PERSON_PROFILE_URL}`\n : `${HOME_URL}${DYNAMIC_PAGES_URL}/${entityTypeKey}/attributes`,\n );\n }\n }\n }, [\n updateFieldFetchStatus,\n createFieldFetchStatus,\n updateLayoutStatus,\n updateSiftBotStatus,\n updateAutocompleteStatus,\n ]);\n\n showSnackbar({\n status: updateFieldFetchStatus,\n message: 'Successfully edited attribute.',\n variant: 'success',\n errorMessage: 'An error occurred while saving your changes.',\n });\n\n showSnackbar({\n status: createFieldFetchStatus,\n message: 'Successfully created attribute.',\n variant: 'success',\n errorMessage: 'An error occurred while saving your changes.',\n });\n\n showSnackbar({\n status: combineStatuses(updateAutocompleteStatus, updateLayoutStatus, updateSiftBotStatus),\n message: 'Successfully updated your settings.',\n variant: 'success',\n errorMessage: 'An error occurred while saving your changes.',\n });\n\n const LOADING = new Status(States.LOADING);\n const NORMAL = new Status(States.NORMAL);\n const entityTypeFieldsExist =\n entityTypeKey === PERSON_ENTITY_TYPE_KEY ? userFields : entityTypeFields && userFields;\n\n const onLoadStatus = useMemo(\n () =>\n isLoading(\n updateSiftBotStatus,\n updateLayoutStatus,\n updateAutocompleteStatus,\n getAutocompleteStatus,\n deleteFieldStatus,\n entityTypeFieldsStatus,\n ) ||\n !siftBotFields ||\n !entityTypeFieldsExist ||\n !attribute\n ? LOADING\n : NORMAL,\n [\n updateSiftBotStatus,\n updateLayoutStatus,\n updateAutocompleteStatus,\n getAutocompleteStatus,\n deleteFieldStatus,\n entityTypeFieldsStatus,\n siftBotFields,\n entityTypeFieldsExist,\n attribute,\n ],\n );\n\n return (\n \n {attribute && (\n \n )}\n \n );\n}\n\nexport default memo(Container);\n","import React, { useState, useEffect, useMemo } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { useParams } from 'react-router';\nimport { useLocation, useHistory } from 'react-router';\nimport queryString from 'query-string';\nimport _get from 'lodash/get';\nimport { useDispatch, useData, useClearFetch, useStatus, combineStatuses } from 'resift';\nimport makeCreateCategoryFieldFetch from 'store/attribute/actions/createCategoryFieldFetch';\nimport makeUpdateCategoryFieldFetch from 'store/attribute/actions/updateCategoryFieldFetch';\nimport useEntityTypes from 'helpers/useEntityTypes';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport makeGetUserFieldsFetch from 'fetches/makeGetUserFieldsFetch';\nimport makeGetFieldsFetch from 'fetches/makeGetFieldsFetch';\nimport * as Types from 'pages/AttributesEdit/typings';\nimport useAttributesEditDialog from 'pages/AttributesEdit/helpers/useAttributesEditDialog';\nimport { HOME_URL, ATTRIBUTES_URL } from 'components/Router/consts';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport Typography from '@material-ui/core/Typography';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Button from '@material-ui/core/Button';\nimport AttributesChooseNew from 'pages/AttributesNew/AttributesChooseNew';\nimport AttributesCreateNew from 'pages/AttributesNew/AttributesCreateNew';\nimport AttributesEdit from 'pages/AttributesEdit';\nimport BackButton from 'components/Page/BackButton';\nimport Loader from 'components/Loader';\n\nfunction AttributesEditModal() {\n const dispatch = useDispatch();\n const location = useLocation();\n const history = useHistory();\n let { entityTypeKey, baseField } = useParams<{\n entityTypeKey: string;\n baseField: string;\n }>();\n const { isOpen, close } = useAttributesEditDialog(entityTypeKey);\n const classes = useStyles();\n const [currentSlideIndex, setSlideIndex] = useState(0);\n const query = useMemo(() => queryString.parse(location.search), [location.search]);\n const parentObjectKey = _get(query, 'parentObjectKey');\n const newAttribute = query.newAttribute;\n const subAttribute = Boolean(parentObjectKey);\n const newAttributeTitle = subAttribute ? 'Create New Sub-Attribute' : 'Create New Attribute';\n const title =\n currentSlideIndex === 0 || currentSlideIndex === 1 ? newAttributeTitle : 'Edit Attribute';\n const createField = makeCreateCategoryFieldFetch();\n const createFieldStatus = useStatus(createField);\n const updateField = makeUpdateCategoryFieldFetch();\n const updateFieldStatus = useStatus(updateField);\n const getFields = makeGetFieldsFetch();\n const fieldsStatus = useStatus(getFields);\n const newAttributeResponse = useData(createField);\n const entityTypesFetch = makeEntityTypesFetch();\n const entityTypesFetchStatus = useStatus(entityTypesFetch);\n const getUserFields = makeGetUserFieldsFetch();\n const userFieldsStatus = useStatus(getUserFields);\n const entityTypes = useEntityTypes();\n const entityType = _get(entityTypes, entityTypeKey);\n const entityTypeId = _get(entityType, 'entityTypeId');\n const clearFetch = useClearFetch();\n const combinedStatus = combineStatuses(\n createFieldStatus | 1,\n updateFieldStatus | 1,\n entityTypesFetchStatus | 1,\n userFieldsStatus | 1,\n fieldsStatus | 1,\n );\n\n useEffect(() => {\n if (location.pathname.includes('edit')) {\n setSlideIndex(2);\n } else if (location.pathname.includes('/create/')) {\n setSlideIndex(1);\n } else {\n setSlideIndex(0);\n }\n }, [location]);\n\n const handleUpdateParentField = async () => {\n const parentField = _get(entityType, `_fields[${parentObjectKey}]`);\n const parentPayload = {\n ...parentField,\n fields: [...parentField.fields, newAttributeResponse.objectKey],\n };\n\n await dispatch(updateField(parentField.id, parentPayload));\n await dispatch(getUserFields());\n await dispatch(entityTypesFetch());\n await dispatch(getFields(entityTypeKey));\n history.push(\n `${HOME_URL}${ATTRIBUTES_URL}/${newAttributeResponse.entityField}/edit/${newAttributeResponse.objectKey}?newAttribute=true`,\n );\n };\n\n const handleCreateAttribute = async (values: Types.AttributesEditFormValues) => {\n let payload = {\n ...values.client,\n baseField,\n entityTypeId,\n ...(subAttribute && { parentFieldId: _get(entityType, `_fields[${parentObjectKey}].id`) }),\n };\n dispatch(createField(payload));\n };\n\n const handleClearFetches = () => {\n clearFetch(createField);\n clearFetch(updateField);\n };\n\n const handleRedirect = async () => {\n await dispatch(entityTypesFetch());\n await dispatch(getUserFields());\n await dispatch(getFields(entityTypeKey));\n history.push(\n `${HOME_URL}${ATTRIBUTES_URL}/${newAttributeResponse.entityField}/edit/${newAttributeResponse.objectKey}?newAttribute=true`,\n );\n };\n\n const currentSlideContent =\n currentSlideIndex === 0 ? (\n \n ) : currentSlideIndex === 1 ? (\n \n ) : currentSlideIndex === 2 ? (\n \n ) : null;\n\n return (\n \n \n \n {currentSlideIndex !== 2 && }\n \n {title}\n
\n \n \n \n {() => currentSlideContent}\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n appBar: {\n position: 'relative',\n backgroundColor: '#2f2f32',\n },\n toolbar: {\n paddingRight: theme.spacing(4),\n },\n cancelButton: {\n marginRight: theme.spacing(1),\n },\n flex: {\n flex: 1,\n },\n slideContainer: {\n flex: '1 1 auto',\n display: 'flex',\n position: 'relative',\n overflow: 'hidden',\n minHeight: 400,\n '& > div': {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n },\n slide: {\n position: 'absolute',\n width: '100%',\n minWidth: '100%',\n height: '100%',\n transition: theme.transitions.create(['left', 'opacity'], {\n duration: theme.transitions.duration.complex,\n }),\n display: 'flex',\n flexDirection: 'column',\n },\n leftSlide: {\n left: 0,\n opacity: 1,\n },\n leftSlideHidden: {\n left: '-100%',\n opacity: 0,\n },\n rightSlide: {\n left: 0,\n opacity: 1,\n },\n rightSlideHidden: {\n left: '100%',\n opacity: 0,\n },\n paper: {\n background: '#F9FBFD',\n },\n backButtonIcon: {\n color: theme.palette.common.white,\n },\n}));\n\nexport default AttributesEditModal;\n","import { defineFetch } from 'resift';\n\nconst makeGetSource = defineFetch({\n displayName: 'Get Source',\n make: sourceId => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/sources/${sourceId}`,\n query: { expand: ['fields', 'authorizationStatus', 'groups'] },\n }),\n }),\n});\n\nexport default makeGetSource;\n","import { createContext } from 'react';\n\nexport default createContext(null);\n","import React, { useContext } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { transparentize } from 'polished';\nimport colors from 'styles/colors';\nimport SourceContext from 'helpers/SourceContext';\n\nimport Card from '@material-ui/core/Card';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward';\nimport Button from '@material-ui/core/Button';\nimport Box from '@material-ui/core/Box';\nimport Page from 'components/Page/newComponents';\nimport Breadcrumbs from 'components/Page/Breadcrumbs';\nimport PageTitle from 'components/Page/PageTitle';\nimport { AZURE_SOURCE_TYPE_KEY } from '../consts';\n\nexport interface BaseProps {\n children: React.ReactNode;\n pageTitle?: string;\n description?: string;\n disableNextButton?: boolean;\n footer?: any;\n currentStep?: number;\n buttonText?: string;\n onNext?: (...args: any) => void;\n onBack?: () => void;\n onSkip?: () => void;\n}\n\nfunction Base({\n children,\n currentStep,\n pageTitle,\n description,\n disableNextButton,\n footer,\n buttonText = 'Next',\n onNext,\n onBack,\n onSkip,\n}: BaseProps) {\n const classes = useStyles();\n const sourceContext = useContext(SourceContext);\n const { sourceInfo } = sourceContext;\n description = sourceInfo.isPrimary\n ? 'Add your people data to Sift by creating a new Directory. A Directory represents a population of people within your organization that can be sourced from a single integration. Let’s get your Directory set up by walking through a few steps.'\n : 'A Complementary Source allows you to append additional data to people within this Directory. Let’s get your Source set up by walking through a few steps.';\n const title = sourceInfo.isPrimary ? 'Create a New Directory' : 'Create a Complementary Source';\n const totalNumberOfSteps = sourceInfo.type === AZURE_SOURCE_TYPE_KEY ? 4 : 3;\n const progress = currentStep ? (currentStep / totalNumberOfSteps) * 100 : null;\n const progressText = `Step ${currentStep} of ${totalNumberOfSteps}`;\n\n return (\n \n \n \n {progress && (\n \n {progressText}\n \n \n \n \n )}\n \n {children}\n
\n {onBack && (\n \n )}\n {onNext && (\n }\n disabled={disableNextButton}\n >\n {buttonText}\n \n )}\n {onSkip && }\n
\n {footer &&
{footer}
}\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n card: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: 1134,\n width: '100%',\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n nextButton: {\n minWidth: 86,\n height: 36,\n },\n backButton: {\n width: 67,\n height: 36,\n marginRight: theme.spacing(2),\n },\n footer: {\n marginBottom: theme.spacing(3),\n marginLeft: theme.spacing(3),\n },\n progressContainer: {\n maxWidth: 1134,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginBottom: theme.spacing(3),\n },\n progress: {\n maxWidth: 300,\n width: '100%',\n },\n bar: {\n maxWidth: 300,\n backgroundColor: transparentize(0.75, colors.brandColors.tertiaryPalette.moss),\n '& .MuiLinearProgress-bar': {\n backgroundColor: colors.brandColors.tertiaryPalette.moss,\n },\n },\n step: {\n marginRight: theme.spacing(2.375),\n maxWidth: 100,\n },\n}));\n\nexport default Base;\n","import React, { useContext, useState } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useHistory } from 'react-router';\nimport { useDispatch } from 'react-redux';\nimport _capitalize from 'lodash/capitalize';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { createDirectory } from 'store/directories';\nimport { createSource, initializeSource } from 'store/sources';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\n\n// Components\nimport CardHeader from '@material-ui/core/CardHeader';\nimport SourceContext from 'helpers/SourceContext';\nimport TextField from '@material-ui/core/TextField';\n\nimport Base from 'pages/Directory/Base';\nimport {\n CHOOSE_SOURCE_TYPE_URL,\n SOURCE_WIZARD_BASE_URL,\n AUTHORIZE_DATA_ACCESS_URL,\n UPLOAD_CSV_URL,\n CSV_SOURCE_TYPE_KEY,\n DEMO_DATA_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\nimport { DIRECTORIES_URL, SOURCE_URL } from 'components/Router/consts';\n\nfunction NameYourData() {\n const [dataName, setDataName] = useState('');\n const classes = useStyles();\n const analytics = useAnalytics();\n const history = useHistory();\n const dispatch = useDispatch();\n const sourceContext = useContext(SourceContext);\n const { sourceInfo, setSourceInfo } = sourceContext;\n\n const directoryIdUrlMatch = window.location.href.match(/directories\\/.*\\/create-source/);\n const directoryId = directoryIdUrlMatch ? directoryIdUrlMatch[0].split('/')[1] : undefined;\n const baseUrl = makeSourceCreateBaseUrl(directoryId);\n const dataType = !directoryId ? 'primary' : 'complementary';\n\n const data = {\n primary: {\n title: 'Name Your Directory',\n description:\n 'Give your Directory a name. This is only for your reference and should describe the set of people you’re importing. If you will only have one Directory, you could call this something like “All Employees.”',\n },\n complementary: {\n title: `Name Your ${_capitalize(dataType)} Data Source`,\n description:\n 'Give your Source a name. This is only for your reference and should describe the data you’re importing. For example, if you’re bringing in Skills data from a CSV, you could call this something like “Additional Skills.”',\n },\n };\n\n const handleChange = (e: React.ChangeEvent) => {\n setDataName(e.target.value.trim());\n };\n\n const handleBack = () => {\n history.push(`${SOURCE_WIZARD_BASE_URL}${CHOOSE_SOURCE_TYPE_URL}`);\n\n setSourceInfo({ ...sourceInfo, type: null });\n };\n\n const handleNext = async () => {\n let directoryId = null;\n if (sourceInfo.directoryId) {\n directoryId = sourceInfo.directoryId;\n } else {\n const directoryCreateRes = (await dispatch(createDirectory(dataName))) as any;\n directoryId = directoryCreateRes.body.id;\n }\n\n const sourceCreateRes = (await dispatch(\n createSource(directoryId, sourceInfo.type, dataName, sourceInfo.isPrimary),\n )) as any;\n const sourceId = sourceCreateRes.body.id;\n\n dispatch(initializeSource(sourceId));\n\n setSourceInfo({ ...sourceInfo, name: dataName, directoryId, sourceId });\n\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n\n if (sourceInfo.type === CSV_SOURCE_TYPE_KEY) {\n history.push(`${baseUrl}${UPLOAD_CSV_URL}`);\n } else {\n history.push(`${baseUrl}${AUTHORIZE_DATA_ACCESS_URL}`);\n }\n\n analytics.track('Wizard - Naming Step Completed', {\n category: 'AD - Directories',\n });\n };\n\n return (\n \n \n
\n \n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n inputContainer: {\n display: 'flex',\n flexDirection: 'column',\n marginLeft: theme.spacing(3),\n maxWidth: 366,\n },\n}));\n\nexport default NameYourData;\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router';\nimport SourceContext from 'helpers/SourceContext';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport NameYourData from './NameYourData';\n\nimport { CHOOSE_SOURCE_TYPE_URL } from 'pages/Directory/consts';\n\nfunction Container() {\n const sourceContext = useContext(SourceContext);\n const history = useHistory();\n const { sourceInfo } = sourceContext;\n\n const directoryIdUrlMatch = window.location.href.match(/directories\\/.*\\/create-source/);\n const directoryId = directoryIdUrlMatch ? directoryIdUrlMatch[0].split('/')[1] : undefined;\n const baseUrl = makeSourceCreateBaseUrl(directoryId);\n\n if (!sourceInfo.type) {\n history.push(`${baseUrl}${CHOOSE_SOURCE_TYPE_URL}`);\n }\n\n return ;\n}\n\nexport default Container;\n","import { defineFetch } from 'resift';\n\nconst makeGetSources = defineFetch({\n displayName: 'Get Sources',\n make: () => ({\n request: (sourceType: string) => ({ http }) =>\n http({\n method: 'GET',\n route: `/sources`,\n query: { type: sourceType },\n }),\n }),\n});\n\nconst getSources = makeGetSources();\n\nexport default getSources;\n","import React from 'react';\nimport colors from 'styles/colors';\nimport classNames from 'classnames';\nimport { transparentize } from 'polished';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport typography from 'styles/typography';\n\nimport Radio from '@material-ui/core/Radio';\nimport Card from '@material-ui/core/Card';\nimport { Typography } from '@material-ui/core';\n\nimport * as Types from 'pages/Directory/typings';\n\ninterface Props {\n sourceInfo: Types.SourceInfo;\n isSelected: boolean;\n isSourceAvailable?: boolean;\n handleSourceSelect: () => void;\n}\n\nfunction NewSourceCard({\n sourceInfo,\n isSelected,\n isSourceAvailable = true,\n handleSourceSelect,\n}: Props) {\n const classes = useStyles();\n const { description, title, logo } = sourceInfo;\n\n return (\n \n
\n
\n {isSourceAvailable ? (\n \n ) : (\n
Not Available
\n )}\n
\n
{logo}
\n
{title}
\n
\n \n {description}\n \n
\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n card: {\n cursor: 'pointer',\n minWidth: 250,\n minHeight: 400,\n display: 'inline-block',\n textAlign: 'center',\n marginTop: theme.spacing(2.875),\n marginRight: theme.spacing(3),\n marginBottom: 0,\n },\n cardContent: {\n flex: '1 1 auto',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n height: '100%',\n },\n checkDiv: {\n marginLeft: 'auto',\n alignSelf: 'flex-end',\n height: 42,\n },\n cardMid: {\n flex: '1 1 auto',\n display: 'flex',\n },\n description: {\n paddingLeft: theme.spacing(4.5),\n paddingRight: theme.spacing(4.5),\n },\n logo: {\n alignSelf: 'center',\n },\n title: {\n fontSize: typography.body1.fontSize,\n margin: theme.spacing(2, 0),\n },\n disabled: {\n pointerEvents: 'none',\n },\n disabledIndicator: {\n display: 'flex',\n justifyContent: 'center',\n borderRadius: theme.spacing(0.5),\n fontSize: typography.body2.fontSize,\n color: colors.info,\n backgroundColor: transparentize(0.9, colors.info),\n width: 99,\n height: 22,\n marginTop: theme.spacing(1.25),\n marginRight: theme.spacing(2),\n },\n };\n});\n\nexport default NewSourceCard;\n","import * as React from 'react';\n\nconst AdditionalFileSyncIcon = () => (\n \n \n \n);\nexport default AdditionalFileSyncIcon;\n","import React, { useState, useContext } from 'react';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Link from '@material-ui/core/Link';\nimport Paper from '@material-ui/core/Paper';\nimport { createDirectory } from 'store/directories';\nimport { createSource, initializeSource } from 'store/sources';\nimport useAnalytics from 'helpers/useAnalytics';\nimport SourceContext from 'helpers/SourceContext';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\nimport { HelpArticleLinkContext } from 'components/Router/Router';\nimport Base from 'pages/Directory/Base';\nimport NewSourceCard from 'pages/SourceCreate/components/SourceCard/NewSourceCard';\nimport AdditionalFileSyncIcon from 'components/Icons/AdditionalFileSyncIcon';\n\n// Consts\nimport sourceData from 'pages/Directory/sourceData';\nimport SourceType from 'types/Source';\nimport * as Types from 'pages/Directory/typings';\nimport { HOME_URL, DIRECTORIES_URL, SOURCE_URL } from 'components/Router/consts';\nimport { NAME_YOUR_DATA_URL, DEMO_DATA_SOURCE_TYPE_KEY } from 'pages/Directory/consts';\n\ninterface Props {\n sourcesWithDemoData: SourceType[];\n}\n\nfunction ChooseSourceType({ sourcesWithDemoData }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n const history = useHistory();\n const sourceContext = useContext(SourceContext);\n const helpArticleLink = React.useContext(HelpArticleLinkContext) as string | null;\n const { sourceInfo, setSourceInfo } = sourceContext;\n const [sourceType, setSourceType] = useState(null);\n const directoryIdUrlMatch = window.location.href.match(/directories\\/.*\\/create-source/);\n const directoryId = directoryIdUrlMatch ? directoryIdUrlMatch[0].split('/')[1] : undefined;\n const baseUrl = makeSourceCreateBaseUrl(directoryId);\n const isDemoDataAvailable = _isEmpty(sourcesWithDemoData);\n\n const data = {\n title: 'Choose a Data Sync Method',\n subheader: sourceInfo.isPrimary\n ? 'Choose an integration method for your Primary Source within this Directory. The Primary Source controls addition and deletion of people in Sift.'\n : 'Choose an integration method for your Complementary Source within this Directory. The Complementary Source only appends data, and will never create or delete people.',\n };\n\n const handleSourceSelect = (value: any) => {\n setSourceType(value);\n };\n\n const handleNext = async () => {\n analytics.track('Wizard - Source Type Step Completed', {\n category: 'AD - Directories',\n label: sourceType,\n });\n\n if (sourceType === DEMO_DATA_SOURCE_TYPE_KEY) {\n // (notes - pearl) When source type is demo data, we initialize the source here\n // then navigate directly to its source dashboard, skipping the rest of the wizard\n const label = 'Sift Demo Data';\n const directoryCreateRes = (await dispatch(createDirectory(label))) as any;\n const directoryId = directoryCreateRes.body.id;\n\n const sourceCreateRes = (await dispatch(\n createSource(directoryId, DEMO_DATA_SOURCE_TYPE_KEY, label, sourceInfo.isPrimary),\n )) as any;\n const sourceId = sourceCreateRes.body.id;\n\n dispatch(initializeSource(sourceId));\n\n history.push(`${HOME_URL}${DIRECTORIES_URL}/${directoryId}${SOURCE_URL}/${sourceId}`);\n } else {\n setSourceInfo({ ...sourceInfo, type: sourceType });\n\n history.push(`${baseUrl}${NAME_YOUR_DATA_URL}`);\n }\n };\n\n return (\n \n \n {helpArticleLink && (\n
\n \n
\n )}\n
\n {Object.values(sourceData).map((info: Types.SourceInfo) => {\n if (info.type === DEMO_DATA_SOURCE_TYPE_KEY) {\n return (\n handleSourceSelect(info.type)}\n isSourceAvailable={isDemoDataAvailable && sourceInfo.isPrimary}\n />\n );\n }\n\n return (\n handleSourceSelect(info.type)}\n />\n );\n })}\n
\n \n
\n \n
\n \n We additionally support direct integrations with Okta, UKG, and LDAP that require a bit of\n additional setup. To use one of these source types,{' '}\n \n reach out to our Support Team\n \n .\n \n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n header: {\n marginBottom: theme.spacing(),\n paddingBottom: 0,\n },\n link: {\n marginLeft: theme.spacing(3),\n },\n cardContainer: {\n display: 'inline-flex',\n justifyContent: 'center',\n padding: 0,\n marginBottom: theme.spacing(4),\n marginLeft: theme.spacing(3),\n },\n altUploadContainer: {\n maxWidth: 1044,\n height: 100,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n marginLeft: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n iconContainer: {\n maxWidth: 36,\n maxHeight: 36,\n },\n altUploadCopy: {\n marginLeft: theme.spacing(),\n fontSize: theme.typography.body1.fontSize,\n },\n}));\n\nexport default ChooseSourceType;\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useData, useStatus } from 'resift';\nimport getSources from 'fetches/getSources';\nimport Loader from 'components/Loader';\nimport ChooseSourceType from './ChooseSourceType';\n\nfunction Container() {\n const dispatch = useDispatch();\n const sourcesData = useData(getSources);\n const status = useStatus(getSources);\n\n useEffect(() => {\n dispatch(getSources('demo-data'));\n }, []);\n\n return (\n \n \n \n );\n}\n\nexport default Container;\n","import React, { useContext, useEffect } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport queryString from 'query-string';\nimport colors from 'styles/colors';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\nimport SourceContext from 'helpers/SourceContext';\nimport handleAuthorizeSource from 'helpers/handleAuthorizeSource';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\n\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\nimport Typography from '@material-ui/core/Typography';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Base from 'pages/Directory/Base';\n\nimport {\n AUTHORIZE_DATA_ACCESS_URL,\n AZURE_SOURCE_TYPE_KEY,\n CHOOSE_SYNC_GROUPS_URL,\n CSV_SOURCE_TYPE_KEY,\n GOOGLE_SOURCE_TYPE_KEY,\n MAP_ATTRIBUTES_URL,\n} from 'pages/Directory/consts';\n\nimport sourceData from 'pages/Directory/sourceData';\nimport * as Types from 'pages/Directory/typings';\n\nfunction Authorization() {\n const analytics = useAnalytics();\n const location = useLocation();\n const history = useHistory();\n const query = queryString.parse(location.search);\n const { authStatus, type } = query;\n const classes = useStyles();\n const sourceContext = useContext(SourceContext) as Types.SourceContext;\n const { sourceInfo } = sourceContext;\n const sourceType = sourceInfo.type || type;\n const baseUrl = makeSourceCreateBaseUrl(sourceInfo.directoryId, sourceInfo.sourceId);\n const isAzureSource = sourceType === AZURE_SOURCE_TYPE_KEY;\n const isGoogleSource = sourceType === GOOGLE_SOURCE_TYPE_KEY;\n const { sourceId } = sourceInfo;\n\n useEffect(() => {\n if (authStatus === 'error') {\n analytics.track('Wizard - Authorize Step Errored', {\n category: 'AD - Directories',\n label: sourceType,\n });\n }\n }, [authStatus]);\n\n const authContent =\n authStatus === 'success'\n ? `You have successfully authorized with Sift. Click “Next” to continue`\n : authStatus === 'error'\n ? `There was an Error Authorizing Sift with ${\n isAzureSource ? 'Azure AD' : 'Google Workspace'\n }, please try again.`\n : 'Unauthorized';\n\n const handleAuthorize = () => {\n analytics.track('Wizard - Authorize Button Clicked', {\n category: 'AD - Directories',\n label: sourceType,\n });\n\n const query = {\n successRedirectUri: `${window.location.origin}${baseUrl}${AUTHORIZE_DATA_ACCESS_URL}?authStatus=success&type=${sourceType}`,\n errorRedirectUri: `${window.location.origin}${baseUrl}${AUTHORIZE_DATA_ACCESS_URL}?authStatus=error&type=${sourceType}`,\n };\n\n handleAuthorizeSource(query, sourceId);\n };\n\n const handleNext = () => {\n if (isAzureSource || isGoogleSource) {\n history.push(`${baseUrl}${CHOOSE_SYNC_GROUPS_URL}`);\n } else {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n }\n\n analytics.track('Wizard - Authorize Step Completed', {\n category: 'AD - Directories',\n label: sourceType,\n });\n };\n\n return (\n \n {sourceType !== CSV_SOURCE_TYPE_KEY && (\n \n )}\n
\n Authorization Status\n
\n \n {authContent}\n
\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n authStatus: {\n marginLeft: theme.spacing(3),\n display: 'flex',\n alignItems: 'center',\n },\n authTitle: {\n color: theme.palette.primary.main,\n },\n authContent: {\n display: 'flex',\n margin: theme.spacing(3),\n },\n indicator: {\n marginRight: theme.spacing(),\n },\n notAuthed: {\n fill: colors.brandColors.indicatorColors.tiger,\n },\n success: {\n fill: colors.brandColors.tertiaryPalette.lime,\n },\n error: {\n fill: colors.error,\n },\n };\n});\n\nexport default Authorization;\n","import { useData } from 'resift';\nimport makeGetSource from 'fetches/makeGetSource';\n\nfunction useSource(sourceId: string) {\n const getSource = makeGetSource(sourceId);\n const source = useData(getSource);\n\n return source;\n}\n\nexport default useSource;\n","import { defineFetch } from 'resift';\n\nconst makeUpdateSource = defineFetch({\n displayName: 'Get Source',\n make: sourceId => ({\n request: data => ({ http }) =>\n http({\n method: 'PUT',\n route: `/sources/${sourceId}`,\n query: { expand: ['fields', 'authorizationStatus', 'groups'] },\n data,\n }),\n }),\n});\n\nexport default makeUpdateSource;\n","import { defineFetch } from 'resift';\n\nconst makeGetSourceGroups = defineFetch({\n displayName: 'Get Source Groups',\n make: sourceId => ({\n request: q => ({ http }) =>\n http({\n method: 'GET',\n route: `/sources/${sourceId}/groups`,\n query: {\n q,\n },\n }),\n }),\n});\n\nexport default makeGetSourceGroups;\n","import React, { useState } from 'react';\nimport _get from 'lodash/get';\nimport { useDispatch, useData } from 'resift';\nimport makeStyles from '@material-ui/styles/makeStyles';\nimport Autosuggest from '@sift/skipper/components/Autosuggest';\nimport DefaultSuggestion from '@sift/skipper/components/Autosuggest/DefaultSuggestion';\nimport withPopper from '@sift/skipper/components/Autosuggest/withPopper';\nimport makeGetSourceGroups from 'fetches/makeGetSourceGroups';\n\ninterface Props {\n sourceId: string;\n onSelect: (suggestions: any) => void;\n}\n\nconst AutoPopper = withPopper(Autosuggest);\n\nfunction GroupsAutosuggest({ sourceId, onSelect }: Props) {\n const classes = useStyles();\n const [input, setInput] = useState('');\n const dispatch = useDispatch();\n const getSourceGroups = makeGetSourceGroups(sourceId);\n const groupsData = useData(getSourceGroups);\n\n const renderSuggestion = (suggestion: any, { query, isHighlighted }: any) => {\n return DefaultSuggestion(suggestion.displayName, { query, isHighlighted });\n };\n\n const recalculateSuggestions = ({ value }: any) => {\n dispatch(getSourceGroups(value));\n };\n\n const onSuggestionSelected = (_: any, { suggestion }: any) => {\n onSelect(suggestion);\n\n setInput('');\n };\n\n const handleInputChange = (e: any) => {\n setInput(e.target.value);\n };\n\n return (\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {\n minWidth: 300,\n '& div': {\n minWidth: 300,\n },\n },\n };\n});\n\nexport default GroupsAutosuggest;\n","import React, { useState, useContext } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport _remove from 'lodash/remove';\nimport _get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport SourceContext from 'helpers/SourceContext';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport makeGetSource from 'fetches/makeGetSource';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport makeUpdateSource from 'fetches/makeUpdateSource';\n\n// Components\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Chip from '@material-ui/core/Chip';\nimport GroupsAutosuggest from 'pages/Directory/SelectGroups/GroupsAutosuggest';\n\nimport Base from 'pages/Directory/Base';\n\nimport { MAP_ATTRIBUTES_URL } from 'pages/Directory/consts';\n\nfunction SelectGroups() {\n const classes = useStyles();\n const analytics = useAnalytics();\n const history = useHistory();\n const dispatch = useDispatch();\n const sourceContext = useContext(SourceContext);\n const { sourceInfo } = sourceContext;\n const { directoryId, sourceId, type } = sourceInfo;\n const source = useSource(sourceId);\n const getSource = makeGetSource(sourceId);\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n const initialGroups = _get(source, 'groups', []);\n const [groups, setGroups] = useState(initialGroups);\n const updateSource = makeUpdateSource(sourceId);\n const sourceCopy = sourceInfo.type === 'azure-active-directory' ? 'AAD' : 'Google Workspace';\n\n const handleNext = async () => {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n await dispatch(updateSource({ ...source, groups }));\n await dispatch(getSource());\n\n analytics.track('Wizard - Groups Step Completed', {\n category: 'AD - Directories',\n label: type,\n });\n };\n\n const handleSelect = (group: any) => {\n const alreadyExists = groups.find((g: any) => g.id === group.id);\n\n if (!alreadyExists) {\n const newGroups = [...groups, group];\n setGroups(newGroups);\n }\n };\n\n const handleDeleteTag = (groupId: string) => {\n const updatedGroups = _remove(groups, g => g.id !== groupId);\n setGroups(updatedGroups);\n };\n\n return (\n \n \n \n
\n \n
\n
\n {groups.map((group: any) => {\n return (\n {\n handleDeleteTag(group.id);\n }}\n label={group.displayName}\n key={group.id}\n />\n );\n })}\n
\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n header: {\n marginLeft: theme.spacing(0.75),\n },\n groupSearchContainer: {\n display: 'flex',\n marginBottom: theme.spacing(1),\n },\n chip: {\n margin: theme.spacing(0.5),\n display: 'inline-flex',\n '& svg': {\n fill: `${theme.palette.common.white} !important`,\n },\n },\n}));\n\nexport default SelectGroups;\n","import React, { useEffect, useContext } from 'react';\nimport _get from 'lodash/get';\nimport { useHistory } from 'react-router';\nimport SourceContext from 'helpers/SourceContext';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport SelectGroups from './SelectGroups';\n\nimport {\n UPLOAD_CSV_URL,\n AUTHORIZE_DATA_ACCESS_URL,\n SOURCE_WIZARD_BASE_URL,\n CHOOSE_SOURCE_TYPE_URL,\n AZURE_SOURCE_TYPE_KEY,\n CSV_SOURCE_TYPE_KEY,\n GOOGLE_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nfunction Container() {\n const history = useHistory();\n const sourceContext = useContext(SourceContext);\n const { sourceInfo } = sourceContext;\n const { directoryId, sourceId, type } = sourceInfo;\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n const source = useSource(sourceId);\n const sourcesWithGroups = [AZURE_SOURCE_TYPE_KEY, GOOGLE_SOURCE_TYPE_KEY];\n const canSelectGroups = sourcesWithGroups.includes(type);\n\n useEffect(() => {\n if (type === CSV_SOURCE_TYPE_KEY) {\n history.push(`${baseUrl}${UPLOAD_CSV_URL}`);\n }\n\n if (canSelectGroups && !_get(source, ['authorizationStatus', 'isAuthorized'], false)) {\n history.push(`${baseUrl}${AUTHORIZE_DATA_ACCESS_URL}`);\n }\n\n if (!canSelectGroups) {\n history.push(`${SOURCE_WIZARD_BASE_URL}${CHOOSE_SOURCE_TYPE_URL}`);\n }\n }, []);\n\n return canSelectGroups ? : null;\n}\n\nexport default Container;\n","import React, { useState, useContext } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport SourceContext from 'helpers/SourceContext';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport _get from 'lodash/get';\nimport { useSnackbar } from 'notistack';\nimport classNames from 'classnames';\nimport { fetchSignedUpload, createSourceFile, fetchSourceFileHeadings } from 'store/sources';\nimport makeGetSource from 'fetches/makeGetSource';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport { saveSource } from 'store/sources';\n\n// Components\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Link from '@material-ui/core/Link';\n\nimport FileDrop from 'components/FileDrop';\nimport Base from 'pages/Directory/Base';\nimport FileUploadInfoCard from './FileUploadInfoCard';\nimport { Prompt } from 'react-router';\n\nimport sourceData from 'pages/Directory/sourceData';\nimport { MAP_ATTRIBUTES_URL } from 'pages/Directory/consts';\n\nfunction UploadCsv() {\n const analytics = useAnalytics();\n const classes = useStyles() as any;\n const sourceContext = useContext(SourceContext);\n const dispatch = useDispatch();\n const history = useHistory();\n const { enqueueSnackbar } = useSnackbar();\n const { sourceInfo, setSourceInfo } = sourceContext;\n const { directoryId, sourceId, isPrimary } = sourceInfo;\n const getSource = makeGetSource(sourceId);\n const csvSourceData = sourceData['csv'];\n const [file, setFile] = useState() as any;\n const [waiting, setWaiting] = useState(true);\n const [disableOptOut, setDisableOptOut] = useState(false);\n const [errorText, setErrorText] = useState('');\n const source = useSource(sourceId);\n\n const disableNextButton =\n waiting ||\n ((!file || !!errorText) && !_get(sourceInfo, ['source', 'setupProgress', 'csvOptOut'], false));\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n\n const handleFileChange = (file: any) => {\n if (!file) return;\n\n const extension = file.name\n .toLowerCase()\n .split('.')\n .pop();\n\n setFile(file);\n if (extension === 'csv' || extension === 'txt') {\n setErrorText('');\n analytics.track('Wizard - CSV Upload Success', {\n category: 'AD - Directories',\n });\n } else {\n setErrorText('Only CSV files or plain text files in CSV format are accepted.');\n analytics.track('Wizard - CSV Upload Error', {\n category: 'AD - Directories',\n });\n }\n\n setWaiting(false);\n };\n\n const handleNext = async () => {\n setWaiting(true);\n setDisableOptOut(true);\n enqueueSnackbar('Uploading file...');\n\n const signedUploadResponse = await dispatch(\n fetchSignedUpload({\n name: file.name,\n contentType: 'text/csv',\n size: file.size,\n sourceId,\n }),\n );\n\n const signedUpload = _get(signedUploadResponse, 'body');\n\n await fetch(signedUpload.url, {\n method: 'PUT',\n mode: 'cors',\n headers: {\n ...signedUpload.fields,\n Accept: `${signedUpload.fields['Content-Type']}`,\n },\n body: file,\n });\n\n await dispatch(\n createSourceFile({\n sourceId,\n key: signedUpload.key,\n size: file.size,\n contentType: 'text/csv',\n name: file.name,\n }),\n );\n\n if (_get(sourceInfo, ['source', 'setupProgress', 'csvOptOut']) === true) {\n const updatedSource = {\n ...source,\n setupProgress: {\n ..._get(sourceInfo, ['source', 'setupProgress'], {}),\n csvOptOut: false,\n },\n };\n\n await dispatch(saveSource(updatedSource));\n await dispatch(dispatch(getSource()));\n }\n\n setTimeout(() => {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n }, 4000);\n };\n\n const handleOptOutCsvUpload = async () => {\n setWaiting(true);\n setDisableOptOut(true);\n enqueueSnackbar('Saving your preferences...');\n\n const updatedSource = {\n ...source,\n setupProgress: {\n ..._get(sourceInfo, ['source', 'setupProgress'], {}),\n csvOptOut: true,\n },\n };\n await dispatch(saveSource(updatedSource));\n await dispatch(getSource());\n\n analytics.track('Wizard - Wizard - CSV Upload Skipped', {\n category: 'AD - Directories',\n });\n\n setTimeout(() => {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n }, 4000);\n };\n\n return (\n \n If you plan on using SFTP or don’t have your file ready, you can{' '}\n {}}\n className={classNames(classes.link, { [classes.disabled]: disableOptOut })}\n color=\"secondary\"\n >\n upload later\n \n .\n \n }\n >\n \n <>\n
\n \n \n
\n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n fileDropContainer: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n fileDropRoot: {\n ...theme.typography.h6,\n padding: 0,\n justifyContent: 'center',\n height: 208,\n },\n link: {\n cursor: 'pointer',\n },\n disabled: {\n color: theme.palette.action.disabled,\n cursor: 'not-allowed',\n },\n };\n});\n\nexport default UploadCsv;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport colors from 'styles/colors';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\ninterface Props {\n title: string;\n content: string | React.ReactElement;\n onBack?: boolean;\n onNext: () => void;\n onClose?: () => void;\n open: boolean;\n}\n\nfunction MappingsConfirmationDialog({ title, content, onBack, onNext, open, onClose }: Props) {\n const classes = useStyles();\n\n return (\n \n
\n \n {title}\n \n\n \n {content}\n \n\n
\n {onBack && (\n \n )}\n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n maxWidth: 360,\n padding: 16,\n },\n title: {\n fontWeight: theme.typography.h6.fontWeight,\n marginBottom: theme.spacing(3),\n },\n content: {\n marginBottom: theme.spacing(3),\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n backButton: {\n color: colors.black,\n marginRight: theme.spacing(2),\n },\n}));\n\nexport default MappingsConfirmationDialog;\n","import React from 'react';\n\nimport MappingsConfirmationDialog from 'atoms/MappingsConfirmationDialog';\n\ninterface Props {\n onNext: () => void;\n open: boolean;\n}\n\nfunction BeforeYouMap({ onNext, open }: Props) {\n return (\n \n We’ve taken a look at your source data and have suggested some mappings to get you\n started. Review your mappings and make any changes or additions necessary before\n proceeding. If there are any required issues to address, you’ll see them\n outlined on the right-hand side of the page.\n \n }\n />\n );\n}\n\nexport default BeforeYouMap;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router';\nimport SourceContext from 'helpers/SourceContext';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport { transparentize } from 'polished';\nimport colors from 'styles/colors';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Box from '@material-ui/core/Box';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Dialog from '@material-ui/core/Dialog';\nimport PageTitle from 'components/Page/PageTitle';\nimport Breadcrumbs from 'components/Page/Breadcrumbs';\nimport MappingsLayout from 'components/Mappings/MappingsLayout';\n\nimport { AZURE_SOURCE_TYPE_KEY, UPLOAD_CSV_URL } from 'pages/Directory/consts';\nimport FullScreenTopBar from 'molecules/FullScreenTopBar';\nimport BeforeYouMap from 'molecules/dataSync/BeforeYouMap';\n\nimport { HOME_URL, DIRECTORIES_URL } from 'components/Router/consts';\n\ninterface Props {\n shouldDirectToCsvUpload: boolean;\n}\n\nfunction MapAttributes({ shouldDirectToCsvUpload }: Props) {\n const classes = useStyles();\n const history = useHistory();\n const sourceContext = useContext(SourceContext);\n const { sourceInfo } = sourceContext;\n const { directoryId, sourceId, isPrimary, type } = sourceInfo;\n const source = useSource(sourceId);\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n const [mapDialogOpen, setMapDialogOpen] = useState(true);\n\n useEffect(() => {\n shouldDirectToCsvUpload && history.push(`${baseUrl}${UPLOAD_CSV_URL}`);\n }, []);\n\n const title = isPrimary ? 'Create a New Directory' : 'Create a Complementary Source';\n\n const currentStep = type === AZURE_SOURCE_TYPE_KEY ? 3 : 2;\n const totalNumberOfSteps = type === AZURE_SOURCE_TYPE_KEY ? 4 : 3;\n const progress = (currentStep / totalNumberOfSteps) * 100;\n const progressText = `Step ${currentStep} of ${totalNumberOfSteps}`;\n const description = isPrimary\n ? 'A Directory represents a population of people within your organization that can be sourced from a single integration. Let’s get your Directory set up by walking through a few steps.'\n : 'A Complementary Source allows you to append additional data to people within this Directory. Let’s get your Source set up by walking through a few steps.';\n\n const handleClose = () => {\n history.push(`${HOME_URL}${DIRECTORIES_URL}`);\n };\n\n const handleMapDialogClose = () => {\n setMapDialogOpen(false);\n };\n\n return (\n \n \n \n
\n \n \n \n {progressText}\n \n \n \n \n \n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n overflow: 'auto',\n padding: theme.spacing(4),\n flex: '1 1 auto',\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n nextButton: {\n minWidth: 86,\n height: 36,\n },\n backButton: {\n width: 67,\n height: 36,\n marginRight: theme.spacing(2),\n },\n footer: {\n marginBottom: theme.spacing(3),\n marginLeft: theme.spacing(3),\n },\n progressContainer: {\n maxWidth: 1134,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginBottom: theme.spacing(3),\n },\n progress: {\n maxWidth: 300,\n width: '100%',\n },\n bar: {\n maxWidth: 300,\n backgroundColor: transparentize(0.75, colors.brandColors.tertiaryPalette.moss),\n '& .MuiLinearProgress-bar': {\n backgroundColor: colors.brandColors.tertiaryPalette.moss,\n },\n },\n step: {\n marginRight: theme.spacing(2.375),\n maxWidth: 100,\n },\n}));\n\nexport default MapAttributes;\n","import React, { useEffect, useContext } from 'react';\nimport _get from 'lodash/get';\nimport { useHistory } from 'react-router';\nimport { useDispatch } from 'react-redux';\nimport { useData, useStatus, isNormal } from 'resift';\nimport SourceContext from 'helpers/SourceContext';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport { fetchDirectory } from 'store/directories';\nimport { fetchSource } from 'store/sources';\nimport makeGetLatestSourceFile from 'pages/Source/fetches/makeGetLatestSourceFile';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport MapAttributes from './MapAttributes';\n\nimport {\n AUTHORIZE_DATA_ACCESS_URL,\n AZURE_SOURCE_TYPE_KEY,\n CSV_SOURCE_TYPE_KEY,\n GOOGLE_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nfunction Container() {\n const history = useHistory();\n const sourceContext = useContext(SourceContext);\n const dispatch = useDispatch();\n const { sourceInfo } = sourceContext;\n const { directoryId, sourceId, type } = sourceInfo;\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n const getLatestDataCSVFile = makeGetLatestSourceFile(sourceId, 'data');\n const lastDataCsv = useData(getLatestDataCSVFile);\n const dataCsvFetchStatus = useStatus(getLatestDataCSVFile);\n const source = useSource(sourceId);\n\n useEffect(() => {\n if (\n (type === AZURE_SOURCE_TYPE_KEY || type === GOOGLE_SOURCE_TYPE_KEY) &&\n !_get(source, ['authorizationStatus', 'isAuthorized'], false)\n ) {\n history.push(`${baseUrl}${AUTHORIZE_DATA_ACCESS_URL}`);\n }\n }, []);\n\n useEffect(() => {\n dispatch(getLatestDataCSVFile());\n }, []);\n\n useEffect(() => {\n // (note - pearl) Need to do this so withSource would have directory info\n dispatch(fetchDirectory(directoryId));\n dispatch(fetchSource(sourceId));\n }, []);\n\n if (type === CSV_SOURCE_TYPE_KEY && !isNormal(dataCsvFetchStatus)) {\n return
Loading...
;\n }\n\n return (\n \n );\n}\n\nexport default Container;\n","import getMappings from './getMappingsFromMappingCards';\nimport sourceTypes from 'consts/sourceTypes';\nimport _get from 'lodash/get';\nimport SourceType from 'types/Source';\nimport MappingProps from 'types/Mapping';\nimport {\n REQUIRED_PROFILE_ATTR_KEYS,\n CLIENT_PRIMARY_KEY,\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n} from 'pages/Directory/consts';\n\nexport const REQUIRED_ATTRS_FOR_OTHER_SOURCES = [CLIENT_PRIMARY_KEY];\n\nexport const REQUIRED_ATTRS_FOR_PRIMARY_SOURCE = [\n ...REQUIRED_ATTRS_FOR_OTHER_SOURCES,\n ...REQUIRED_PROFILE_ATTR_KEYS,\n];\n\nexport default function areMappingsInvalid(mappingCards: any[], source: SourceType) {\n const mappings = getMappings(mappingCards) as MappingProps[];\n const sourceType = source.type;\n const sourceIsPrimary = source.isPrimary;\n const orgTlRefMapping = mappings.find(m => m.destination === ORG_TEAM_LEADER_MAPPING_REF_KEY);\n const orgTlMatchMapping = mappings.find(m => m.destination === ORG_TEAM_LEADER_MAPPING_MATCH_KEY);\n const orgMappingIncomplete =\n [orgTlRefMapping, orgTlMatchMapping].filter(m => !_get(m, 'source')).length === 1;\n\n const allDestinations = mappings.map((m: any) => m.destination);\n\n const primarySourceMissingRequiredMappings = sourceIsPrimary\n ? REQUIRED_ATTRS_FOR_PRIMARY_SOURCE.filter(attr => !allDestinations.includes(attr))\n : [];\n\n const otherSourcesMissingRequiredMappings = !sourceIsPrimary\n ? REQUIRED_ATTRS_FOR_OTHER_SOURCES.filter(attr => !allDestinations.includes(attr))\n : [];\n\n if (primarySourceMissingRequiredMappings.length) {\n return 'Unique Identifer, First Name, Last Name, and Email mappings must be assigned to proceed.';\n }\n\n if (otherSourcesMissingRequiredMappings.length) {\n return 'The Unique Identifer must be assigned to proceed.';\n }\n\n if (orgMappingIncomplete) {\n return `Both “Manager Reference Property” and “Manager Match Property” must be set for the org chart mapping to be set up`;\n }\n\n return mappings.reduce((acc: string, mapping: any) => {\n if (\n sourceType === sourceTypes.GOOGLE &&\n mapping.collectionItemType === 'custom' &&\n _get(mapping, 'collectionItemCustomType', '').length === 0\n ) {\n return 'All Collection Fields with \"Custom\" types need their custom label. ';\n }\n\n return acc;\n }, '');\n}\n","import React, { useContext, useState, useEffect } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useHistory } from 'react-router';\nimport { useDispatch } from 'react-redux';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport { setSourceSyncEnabled, saveSource, queueSourceSync } from 'store/sources';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport SourceContext from 'helpers/SourceContext';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Button from '@material-ui/core/Button';\nimport Base from 'pages/Directory/Base';\nimport Switch from '@material-ui/core/Switch';\nimport { HOME_URL, DIRECTORIES_URL, SOURCE_URL } from 'components/Router/consts';\nimport {\n UPLOAD_CSV_URL,\n AZURE_SOURCE_TYPE_KEY,\n CSV_SOURCE_TYPE_KEY,\n MAP_ATTRIBUTES_URL,\n GOOGLE_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\nimport {\n REQUIRED_ATTRS_FOR_OTHER_SOURCES,\n REQUIRED_ATTRS_FOR_PRIMARY_SOURCE,\n} from 'components/Mappings/_helpers/areMappingsInvalid';\n\ninterface Props {\n lastDataCSV?: any;\n mappingAttributes?: any[];\n}\n\nfunction SyncSettings({ lastDataCSV, mappingAttributes = [] }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n const history = useHistory();\n const csvUploaded = !_isEmpty(lastDataCSV);\n const sourceContext = useContext(SourceContext);\n const { sourceInfo } = sourceContext;\n const { directoryId, sourceId, type } = sourceInfo;\n const source = useSource(sourceId);\n const isCsvSource = type === CSV_SOURCE_TYPE_KEY;\n const [submitting, setSubmitting] = useState(false);\n const csvOptOut = _get(source, ['setupProgress', 'csvOptOut'], false);\n\n const initialSyncState = !(isCsvSource && !csvUploaded);\n const [syncEnabled, setSyncEnabled] = useState(initialSyncState);\n const dispatch = useDispatch();\n const allRequiredMappingsSet = source.isPrimary\n ? _get(mappingAttributes, 'recommendedAttributes', []).filter((attr: any) =>\n REQUIRED_ATTRS_FOR_PRIMARY_SOURCE.includes(_get(attr, ['mapping', 'destination'])),\n ).length === REQUIRED_ATTRS_FOR_PRIMARY_SOURCE.length\n : _get(mappingAttributes, 'recommendedAttributes', []).filter((attr: any) =>\n REQUIRED_ATTRS_FOR_OTHER_SOURCES.includes(_get(attr, ['mapping', 'destination'])),\n ).length === REQUIRED_ATTRS_FOR_OTHER_SOURCES.length;\n\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n const disableSync = isCsvSource && !csvUploaded;\n const currentStep = type === AZURE_SOURCE_TYPE_KEY ? 4 : 3;\n\n useEffect(() => {\n if (isCsvSource && !csvUploaded && !csvOptOut) {\n history.push(`${baseUrl}${UPLOAD_CSV_URL}`);\n }\n\n if (isCsvSource && !csvOptOut && !allRequiredMappingsSet) {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n }\n\n if (\n (type === AZURE_SOURCE_TYPE_KEY || type === GOOGLE_SOURCE_TYPE_KEY) &&\n !allRequiredMappingsSet\n ) {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n }\n });\n\n const handleBack = () => {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n };\n\n const handleChangeSyncSetting = () => {\n setSyncEnabled(!syncEnabled);\n };\n\n const handleSyncLater = async () => {\n setSubmitting(true);\n handleCompleteWizard();\n };\n\n const handleQueueSync = async () => {\n if (isCsvSource) {\n await dispatch(queueSourceSync(sourceId, _get(lastDataCSV, 'id')));\n } else {\n await dispatch(queueSourceSync(sourceId));\n }\n };\n\n const handleNext = async () => {\n setSubmitting(true);\n await dispatch(setSourceSyncEnabled(sourceId, syncEnabled));\n syncEnabled && handleQueueSync();\n handleCompleteWizard();\n };\n\n const handleCompleteWizard = async () => {\n await dispatch(\n saveSource({\n ...source,\n setupProgress: {\n ..._get(source, 'setupProgress', {}),\n isComplete: true,\n },\n }),\n );\n\n history.push(`${HOME_URL}${DIRECTORIES_URL}/${directoryId}${SOURCE_URL}/${sourceId}`);\n\n analytics.track('Wizard - Sync Step Completed', {\n category: 'AD - Directories',\n label: type,\n });\n };\n\n const description = !isCsvSource ? (\n <>\n Do you want to enable automatic sync? If enabled, Sift will retrieve new data from your data\n source hourly. If you’re not ready to sync now, you can leave this off, and sync later.\n \n ) : csvOptOut ? (\n <>\n You’ve successfully set up your data source. When you’re ready to run your first sync, you can\n do so by uploading a CSV or setting up an SFTP integration.\n \n ) : (\n <>\n Click the “Initialize Sync” button below to import the data from your CSV file. Your sync\n should be completed in the next few minutes. If you’d like to make further changes or use a\n new file, you can also{' '}\n \n sync later\n \n .\n \n );\n\n const renderNextButtonText = () => {\n if (isCsvSource) {\n return csvOptOut ? 'Done' : 'Initialize Sync';\n }\n\n return syncEnabled ? 'Confirm and Initialize Sync' : 'Confirm and Sync Later';\n };\n\n return (\n \n \n
\n
{description}
\n {!isCsvSource && (\n
\n \n \n \n \n )}\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n info: {\n fontSize: theme.typography.subtitle1.fontSize,\n lineHeight: theme.typography.subtitle1.lineHeight,\n marginLeft: theme.spacing(3),\n marginBottom: theme.spacing(2.875),\n maxWidth: 903,\n maxHeight: 59,\n letterSpacing: 0.5,\n },\n midCard: {\n display: 'flex',\n marginBottom: theme.spacing(1.875),\n },\n switchContainer: {\n minWidth: 117,\n maxHeight: 48,\n marginLeft: 'auto',\n marginRight: theme.spacing(3.5),\n },\n syncLater: {\n ...theme.typography.body1,\n color: theme.palette.secondary.main,\n cursor: 'pointer',\n textTransform: 'lowercase',\n fontWeight: 'normal',\n padding: 0,\n marginTop: -theme.spacing(0.34),\n },\n disabled: {\n color: theme.palette.action.disabled,\n cursor: 'not-allowed',\n },\n}));\n\nexport default SyncSettings;\n","import React, { useEffect, useContext } from 'react';\nimport _get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport { useData, useStatus, isNormal } from 'resift';\nimport { useHistory } from 'react-router';\nimport useSource from 'pages/Directory/helpers/useSource';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport makeGetLatestSourceFile from 'pages/Source/fetches/makeGetLatestSourceFile';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport SourceContext from 'helpers/SourceContext';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport SyncSettings from './SyncSettings';\n\nimport {\n AUTHORIZE_DATA_ACCESS_URL,\n AZURE_SOURCE_TYPE_KEY,\n CSV_SOURCE_TYPE_KEY,\n GOOGLE_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nfunction Container() {\n const classes = useStyles();\n const history = useHistory();\n const sourceContext = useContext(SourceContext);\n const dispatch = useDispatch();\n const { sourceInfo } = sourceContext;\n const { directoryId, sourceId, type } = sourceInfo;\n const source = useSource(sourceId);\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n const getLatestDataCSVFile = makeGetLatestSourceFile(sourceId, 'data');\n const lastDataCSV = useData(getLatestDataCSVFile);\n const dataCsvFetchStatus = useStatus(getLatestDataCSVFile);\n const getMappingsAttributes = makeGetMappingsAttributes(sourceId);\n const mappingAttributes = useData(getMappingsAttributes);\n const mappingAttributeStatus = useStatus(getMappingsAttributes);\n\n useEffect(() => {\n if (\n (type === AZURE_SOURCE_TYPE_KEY || type === GOOGLE_SOURCE_TYPE_KEY) &&\n !_get(source, ['authorizationStatus', 'isAuthorized'], false)\n ) {\n history.push(`${baseUrl}${AUTHORIZE_DATA_ACCESS_URL}`);\n }\n }, []);\n\n useEffect(() => {\n if (type === CSV_SOURCE_TYPE_KEY) {\n dispatch(getLatestDataCSVFile());\n }\n }, []);\n\n useEffect(() => {\n dispatch(getMappingsAttributes());\n }, []);\n\n if (!isNormal(mappingAttributeStatus)) {\n return (\n
\n \n
\n );\n }\n\n if (type !== CSV_SOURCE_TYPE_KEY) {\n return ;\n }\n\n if (!isNormal(dataCsvFetchStatus)) {\n return (\n
\n \n
\n );\n }\n\n return ;\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n loading: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n };\n});\n\nexport default Container;\n","import React, { useState } from 'react';\nimport { Route, Switch } from 'react-router';\nimport SourceContext from 'helpers/SourceContext';\n\nimport NameYourData from 'pages/Directory/NameYourData';\nimport ChooseSourceType from 'pages/Directory/ChooseSourceType';\nimport Authorization from 'pages/Directory/Authorization';\nimport SelectGroups from 'pages/Directory/SelectGroups';\nimport UploadCsv from 'pages/Directory/UploadCsv';\nimport MapAttributes from 'pages/Directory/MapAttributes';\nimport SyncSettings from 'pages/Directory/SyncSettings';\n\nimport {\n NAME_YOUR_DATA_URL,\n CHOOSE_SOURCE_TYPE_URL,\n AUTHORIZE_DATA_ACCESS_URL,\n CHOOSE_SYNC_GROUPS_URL,\n UPLOAD_CSV_URL,\n MAP_ATTRIBUTES_URL,\n DATA_SETTINGS_URL,\n SOURCE_WIZARD_BASE_URL,\n SOURCE_WIZARD_BASE_URL_W_DIRECTORY_ID,\n SOURCE_WIZARD_BASE_URL_W_DIRECTORY_SOURCE_IDS,\n} from 'pages/Directory/consts';\n\ninterface Props {\n sourceState: any;\n}\n\nfunction Wizard({ sourceState }: Props) {\n const [sourceInfo, setSourceInfo] = useState(sourceState);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Wizard;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useData } from 'resift';\nimport { useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport { useDispatch } from 'react-redux';\nimport makeGetSource from 'fetches/makeGetSource';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nimport Wizard from './Wizard';\n\nfunction Container() {\n const classes = useStyles();\n const { search } = useLocation();\n const query = queryString.parse(search);\n const href = window.location.href;\n\n const directoryIdUrlMatch = href.includes('create-source')\n ? href.match(/directories\\/.*\\/create-source/)\n : href.match(/directories\\/.*\\/source/);\n const directoryId = directoryIdUrlMatch ? directoryIdUrlMatch[0].split('/')[1] : null;\n\n const sourceIdUrlMatch = href.match(/source\\/.*\\//);\n const sourceId = sourceIdUrlMatch ? sourceIdUrlMatch[0].split('/')[1] : '';\n\n const dispatch = useDispatch();\n const getSource = makeGetSource(sourceId);\n const sourceData = useData(getSource);\n\n useEffect(() => {\n Boolean(sourceId) && dispatch(getSource());\n }, [sourceId]);\n\n if (Boolean(sourceId) && !sourceData) {\n return (\n
\n \n
\n );\n }\n\n const sourceState = {\n name: _get(sourceData, 'label', ''),\n type: _get(sourceData, 'type', null),\n isPrimary: _get(sourceData, 'isPrimary', query.isPrimarySource === 'true' || !directoryId),\n directoryId: directoryId || null,\n sourceId: sourceId || null,\n };\n\n return ;\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n loading: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n };\n});\n\nexport default Container;\n","// Helper\nimport { isDebugEnabled } from './Helper';\n\n// Pages\nimport AdministratorsPage from 'pages/Administrators';\nimport AttributeSocialPhotosPage from 'pages/AttributeSocialPhotos';\nimport DirectoriesPage from 'pages/Directories';\nimport SourcePage from 'pages/Source';\nimport SourceCreatePage from 'pages/SourceCreate';\nimport SourceCSVSetupPage from 'pages/SourceCSVSetup';\nimport SourcePhotoCSVSetupPage from 'pages/SourcePhotoCSVSetup';\nimport SourceLDAPSetupPage from 'pages/SourceLDAPSetup';\nimport DirectoryPage from 'pages/Directory';\nimport FeaturesPage from 'pages/Features/Features';\nimport GeneralPage from 'pages/General/General';\nimport HomePage from 'pages/Home';\nimport InvitesPage from 'pages/Invites';\nimport DebugPage from 'pages/Debug';\nimport PersonPage from 'pages/Person';\nimport SiftBotPage from 'pages/SiftBot';\nimport NoRoutePage from 'pages/NoRoute';\nimport ApplicationsPage from 'pages/Applications';\nimport ApplicationEditPage from 'pages/ApplicationEdit';\nimport PagesPage from 'pages/Pages';\nimport PersonProfilesPage from 'pages/PersonProfilesPage';\nimport PageTypesPage from 'pages/PageTypes';\nimport AttributesEditModalPage from 'pages/AttributesEditModal/AttributesEditModal';\nimport SourceWizardPage from 'pages/Directory/Wizard';\n\n// Icons\nimport AdministratorsIcon from '@material-ui/icons/Person';\nimport DirectoriesIcon from '@material-ui/icons/Dns';\nimport InvitesIcon from '@material-ui/icons/People';\nimport FeatureIcon from '@material-ui/icons/Tune';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport SiftBotIcon from '@material-ui/icons/AssignmentTurnedIn';\nimport HomeIcon from '@material-ui/icons/Home';\nimport APIIcon from '@material-ui/icons/SettingsInputComponent';\nimport PagesIcon from '@material-ui/icons/Description';\nimport PersonIcon from '@material-ui/icons/AccountCircle';\n\n// Types\nimport { Route } from './types';\n\nimport {\n HOME_URL,\n GENERAL_URL,\n USERS_URL,\n FEATURES_URL,\n ADMIN_URL,\n APPLICATIONS_URL,\n APP_CREATE_URL,\n PERSON_PROFILE_URL,\n DIRECTORIES_URL,\n DEBUG_URL,\n SOURCE_URL,\n SOURCE_CREATE_URL,\n ATTRIBUTES_URL,\n DYNAMIC_PAGES_URL,\n} from './consts';\n\nimport { CSV_WIZARD_URL, CSV_WIZARD_UPLOAD_URL } from 'pages/Directory/consts';\n\nexport const Administrators: Route = {\n name: 'Administrators',\n title: 'Administrators',\n path: `${HOME_URL}${ADMIN_URL}`,\n component: AdministratorsPage,\n Icon: AdministratorsIcon,\n exact: true,\n navExact: true,\n helpArticleLink: 'https://help.justsift.com/en/articles/3931941-administrators',\n};\n\nexport const Applications: Route = {\n name: 'Applications',\n title: 'API Access',\n path: `${HOME_URL}${APPLICATIONS_URL}`,\n component: ApplicationsPage,\n Icon: APIIcon,\n exact: true,\n navExact: true,\n helpArticleLink: 'https://help.justsift.com/en/articles/4385460-managing-api-access',\n};\n\nexport const ApplicationCreate: Route = {\n name: 'AttributesEdit',\n title: 'Application Form',\n path: `${HOME_URL}${APP_CREATE_URL}`,\n component: ApplicationEditPage,\n exact: true,\n};\n\nexport const ApplicationEdit: Route = {\n name: 'AttributesEdit',\n title: 'Application Form',\n path: `${HOME_URL}${APPLICATIONS_URL}/:id`,\n component: ApplicationEditPage,\n exact: true,\n};\n\nexport const PersonProfiles: Route = {\n name: 'PersonProfiles',\n title: 'Person Profiles',\n path: `${HOME_URL}${PERSON_PROFILE_URL}/:tab?`,\n component: PersonProfilesPage,\n Icon: PersonIcon,\n exact: true,\n};\n\nexport const AttributesEditModal: Route = {\n name: 'AttributesEditModal',\n title: 'Create and Edit Attributes',\n path: [\n `${HOME_URL}${ATTRIBUTES_URL}/:entityTypeKey/create/:baseField?`,\n `${HOME_URL}${ATTRIBUTES_URL}/:entityTypeKey/edit/:objectKey`,\n ],\n component: AttributesEditModalPage,\n exact: false,\n};\n\nexport const Pages: Route = {\n name: 'Pages',\n title: 'Pages',\n path: `${HOME_URL}${DYNAMIC_PAGES_URL}`,\n component: PagesPage,\n Icon: PagesIcon,\n exact: true,\n navExact: false,\n helpArticleLink: 'https://help.justsift.com/en/articles/5858343-draft-managing-page-types',\n};\n\nexport const PageTypes: Route = {\n name: 'PageTypes',\n title: 'PageTypes',\n path: `${HOME_URL}${DYNAMIC_PAGES_URL}/:entityTypeKey/:tab?`,\n component: PageTypesPage,\n exact: true,\n navExact: false,\n helpArticleLink: 'http://help.justsift.com/en/articles/5858344-draft-setting-up-a-page-type',\n};\n\nexport const AttributeSocialPhotos: Route = {\n name: 'AttributeSocialPhotos',\n title: 'Social Photos',\n path: `${HOME_URL}${ATTRIBUTES_URL}/social-photos`,\n component: AttributeSocialPhotosPage,\n exact: true,\n};\n\nexport const SourceCreate: Route = {\n name: 'SourceCreate',\n title: 'New Source',\n path: `${HOME_URL}${DIRECTORIES_URL}/:id/new-source`,\n component: SourceCreatePage,\n exact: true,\n};\n\nexport const SourceWizard: Route = {\n name: 'SourceWizard',\n title: 'Source Wizard',\n path: [\n `${HOME_URL}${DIRECTORIES_URL}${SOURCE_CREATE_URL}`,\n `${HOME_URL}${DIRECTORIES_URL}/:id${SOURCE_CREATE_URL}`,\n `${HOME_URL}${DIRECTORIES_URL}/:id${SOURCE_URL}/:id${SOURCE_CREATE_URL}`,\n ],\n component: SourceWizardPage,\n helpArticleLink: 'https://help.justsift.com/en/articles/8292317-syncing-people-data',\n helpArticleLinkText: 'Learn more about Directories ❯',\n};\n\nexport const Directories: Route = {\n name: 'People Data',\n title: 'People Data',\n path: `${HOME_URL}${DIRECTORIES_URL}`,\n component: DirectoriesPage,\n Icon: DirectoriesIcon,\n exact: true,\n navExact: false,\n helpArticleLink: 'https://help.justsift.com/en/articles/8292317-syncing-people-data',\n helpArticleLinkText: 'Learn more about Directories ❯',\n};\n\nexport const SourceLDAPSetup: Route = {\n name: 'SourceLDAPSetup',\n title: 'Source LDAP Setup',\n path: `${HOME_URL}${DIRECTORIES_URL}/:directoryId${SOURCE_URL}/:sourceId/ldap-wizard`,\n component: SourceLDAPSetupPage,\n};\n\nexport const SourceCSVSetup: Route = {\n name: 'SourceCSVSetup',\n title: 'Source CSV Setup',\n path: `${HOME_URL}${DIRECTORIES_URL}/:directoryId${SOURCE_URL}/:sourceId${CSV_WIZARD_URL}`,\n component: SourceCSVSetupPage,\n};\n\nexport const SourcePhotoCSVSetup: Route = {\n name: 'SourceCSVSetup',\n title: 'Source CSV Setup',\n path: `${HOME_URL}${DIRECTORIES_URL}/:directoryId${SOURCE_URL}/:sourceId/photo-csv-wizard`,\n component: SourcePhotoCSVSetupPage,\n};\n\nexport const Directory: Route = {\n name: 'Directory',\n title: 'Directory',\n path: `${HOME_URL}${DIRECTORIES_URL}/:id/:tab?`,\n component: DirectoryPage,\n exact: true,\n};\n\nexport const Source: Route = {\n name: 'Source',\n title: 'Source',\n path: `${HOME_URL}${DIRECTORIES_URL}/:directoryId${SOURCE_URL}/:sourceId`,\n component: SourcePage,\n};\n\nexport const General: Route = {\n name: 'General',\n title: 'Settings',\n path: `${HOME_URL}${GENERAL_URL}/:tab?`,\n component: GeneralPage,\n Icon: SettingsIcon,\n exact: true,\n navExact: false,\n helpArticleLink: 'https://help.justsift.com/en/articles/2367925-general-settings',\n};\n\nexport const Home: Route = {\n name: 'Home',\n title: 'Home',\n path: `${HOME_URL}`,\n component: HomePage,\n Icon: HomeIcon,\n exact: true,\n navExact: true,\n};\n\nexport const Users: Route = {\n name: 'All Users',\n title: 'All Users',\n path: `${HOME_URL}${USERS_URL}/:tab?`,\n navSideBarPath: `${HOME_URL}${USERS_URL}`,\n component: InvitesPage,\n Icon: InvitesIcon,\n exact: true,\n navExact: false,\n helpArticleLink: 'https://help.justsift.com/en/articles/1835499-user-invites',\n};\n\nexport const Person: Route = {\n name: 'Person',\n title: 'Person',\n path: `${HOME_URL}${USERS_URL}/person/:id`,\n component: PersonPage,\n exact: true,\n};\n\nexport const Documentation: Route = {\n name: 'Documentation',\n title: 'Documentation',\n path: 'https://intercom.help/sift',\n target: '_blank',\n isExternal: true,\n};\n\nexport const Features: Route = {\n name: 'Features',\n title: 'Feature Management',\n path: `${HOME_URL}${FEATURES_URL}/:tab?`,\n navSideBarPath: `${HOME_URL}${FEATURES_URL}`,\n component: FeaturesPage,\n Icon: FeatureIcon,\n exact: true,\n navExact: false,\n};\n\nexport const SiftBot: Route = {\n name: 'SiftBot',\n title: 'Profile Completion',\n path: `${HOME_URL}${PERSON_PROFILE_URL}/sift-bot`,\n component: SiftBotPage,\n Icon: SiftBotIcon,\n exact: true,\n navExact: true,\n helpArticleLink: 'https://help.justsift.com/en/articles/3852233-profile-completion',\n};\n\nexport const Debug: Route = {\n name: 'Debug',\n title: 'Debug',\n path: `${HOME_URL}${DEBUG_URL}`,\n component: DebugPage,\n exact: true,\n};\n\nexport const NoRoute: Route = {\n name: 'Not Found',\n title: 'Not Found',\n path: '/404',\n component: NoRoutePage,\n};\n\nconst routes: Route[] = [\n Home,\n Person,\n PersonProfiles,\n Administrators,\n Applications,\n ApplicationCreate,\n ApplicationEdit,\n Directories,\n SourceWizard,\n SourceCreate,\n SourceLDAPSetup,\n SourceCSVSetup,\n SourcePhotoCSVSetup,\n Directory,\n Source,\n AttributesEditModal,\n AttributeSocialPhotos,\n General,\n Users,\n SiftBot,\n Features,\n NoRoute,\n Pages,\n PageTypes,\n];\n\nif (isDebugEnabled()) {\n routes.push(Debug);\n}\n\nexport default routes;\n","import React from 'react';\nimport Link from '@material-ui/core/Link';\n\ninterface Props {\n text?: React.ReactNode;\n link: string;\n}\n\nfunction HelpArticleLink({ link, text = 'Show me how ❯' }: Props) {\n return (\n \n {text}\n \n );\n}\n\nexport default HelpArticleLink;\n","export const HOME_URL = '/admin';\nexport const GENERAL_URL = '/general';\nexport const USER_URL = '/user';\nexport const USERS_URL = '/users';\nexport const FEATURES_URL = '/feature-management';\nexport const ADMIN_URL = '/administrators';\nexport const APPLICATIONS_URL = '/applications';\nexport const APP_CREATE_URL = '/create-application';\nexport const ATTRIBUTES_URL = '/attributes';\nexport const DYNAMIC_PAGES_URL = '/pages';\nexport const PERSON_PROFILE_URL = '/person-profiles';\nexport const DIRECTORIES_URL = '/directories';\nexport const SOURCE_CREATE_URL = '/create-source';\nexport const SOURCE_URL = '/source';\nexport const DEBUG_URL = '/debug';\n","import { defineFetch } from 'resift';\n\nconst makeGetOnboardingTasks = defineFetch({\n displayName: 'Get Onboarding Tasks',\n make: () => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: '/onboarding-tasks',\n }),\n }),\n});\n\nconst getOnboardingTasks = makeGetOnboardingTasks();\n\nexport default getOnboardingTasks;\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\n\nexport default function SaveButton({ label = 'Save', ...other }) {\n return (\n \n {label}\n \n );\n}\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Mappings Attributes',\n make: (sourceId: string) => ({\n key: [sourceId],\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/sources/${sourceId}/mapping-attributes`,\n }),\n }),\n});\n","import React from 'react';\nimport _get from 'lodash/get';\nimport { makeStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport ToolbarPortal from './ToolbarPortal';\n\nimport ToolbarSpacer from 'components/Toolbar/ToolbarSpacer';\nimport ToolbarActions from 'components/Toolbar/ToolbarActions';\n\ninterface Props {\n preContent?: React.ReactNode;\n dirty?: boolean;\n children: any;\n}\n\nfunction PageFormToolbar({ dirty, preContent, children }: Props) {\n const classes = useStyles();\n\n return (\n \n \n \n {preContent}\n {children}\n \n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n borderTop: 'solid 1px #e6e6e6',\n display: 'flex',\n flex: '0 0 auto',\n overflowY: 'hidden',\n transition: 'min-height .4s',\n height: 0,\n minHeight: 0,\n backgroundColor: theme.palette.common.white,\n alignItems: 'center',\n },\n visible: {\n minHeight: 70,\n padding: theme.spacing(2),\n },\n };\n});\n\nexport default PageFormToolbar;\n","import colors from './colors';\n\nconst fontWeight = {\n bold: 700,\n semiBold: 600,\n regular: 400,\n};\n\nconst subtitle2 = {\n fontSize: 14,\n fontWeight: fontWeight.regular,\n color: colors.gray1,\n lineHeight: 1.5,\n};\nconst h5 = {\n fontSize: 20,\n fontWeight: fontWeight.bold,\n};\nconst syncIndicatorContent = {\n fontFamily: `Roboto, sans-serif`,\n fontWeight: 400,\n};\n\nexport default {\n fontWeight,\n subtitle2,\n h5,\n htmlFontSize: 14.5,\n fontFamily: 'Source Sans Pro',\n h4: {\n fontSize: 34,\n fontWeight: fontWeight.bold,\n },\n h4InBar: {\n fontSize: 24,\n fontWeight: fontWeight.semiBold,\n },\n h4Regular: {\n fontSize: 34,\n fontWeight: fontWeight.regular,\n },\n h5Semibold: {\n fontSize: 20,\n fontWeight: fontWeight.semiBold,\n },\n h6: {\n fontSize: 18,\n fontWeight: fontWeight.semiBold,\n },\n body1: {\n fontSize: 16,\n fontWeight: fontWeight.regular,\n },\n body1bold: {\n fontSize: 16,\n fontWeight: fontWeight.bold,\n },\n body2: {\n fontSize: 14,\n fontWeight: fontWeight.regular,\n },\n body2Bold: {\n fontSize: 14,\n fontWeight: fontWeight.bold,\n },\n subtitle1: {\n fontSize: 16,\n fontWeight: fontWeight.regular,\n },\n caption: {\n fontSize: 12,\n fontWeight: fontWeight.regular,\n },\n overline: {\n fontSize: 12,\n fontWeight: fontWeight.regular,\n textTransform: 'uppercase',\n },\n button: {\n lineHeight: null,\n fontSize: 14,\n fontWeight: fontWeight.bold,\n },\n syncIndicatorContent: {\n fontFamily: syncIndicatorContent.fontFamily,\n },\n};\n","import React from 'react';\nimport _isEmpty from 'lodash/isEmpty';\nimport _get from 'lodash/get';\nimport AnalyticsContext from './AnalyticsContext';\n// @ts-ignore: no typing available\nimport analytics from 'analytics.js';\nimport { captureException, withScope } from '@sentry/browser';\nimport config from 'config';\n\ninterface Props {\n children: React.ReactNode;\n appUser: any;\n client: any;\n}\n\n/**\n * A provider for accessing Segment's analytics object from the window.\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 if (!_isEmpty(this.props.appUser)) {\n this.identify();\n this.msIdentify();\n }\n }\n\n componentDidUpdate(previousProps: any) {\n if (previousProps.appUser !== this.props.appUser) {\n this.identify();\n this.msIdentify();\n }\n }\n\n msIdentify = () => {\n const { appUser, client } = this.props;\n const isTestingSession = window.location.hostname.includes('localhost');\n // (note - pearl) Not tracking with Microsoft Clarity on localhost or Cypress testing\n if (isTestingSession) return;\n\n (window as any).clarity(\n 'identify',\n appUser.id, // Clarity custom-id\n client.id, // Clarity session-id\n null, // Clarity custom-page-id\n `${appUser.firstName} ${appUser.lastName}`, // Clarity friendly-name\n );\n };\n\n identify = () => {\n const { appUser, client } = this.props;\n\n let trackers = {};\n if (config.ANALYTICS) {\n // (note - Pearl) This is handling Intercom data sending\n for (let moduleName in config.ANALYTICS) {\n const module = _get(config, ['ANALYTICS', moduleName]);\n\n if (module) {\n // @ts-ignore\n trackers[module.ajsName] = module.options;\n }\n }\n\n analytics.initialize(trackers);\n analytics.identify(appUser.id, {\n id: appUser.id,\n userId: appUser.id,\n email: appUser.email,\n name: `${appUser.firstName} ${appUser.lastName}`,\n firstName: appUser.firstName,\n lastName: appUser.lastName,\n title: appUser.title,\n company: {\n id: client.subdomain,\n name: client.displayName,\n subdomain: client.subdomain,\n },\n });\n }\n };\n\n track = (event: any, properties: any) => {\n const { client } = this.props;\n\n try {\n // @ts-ignore\n window.analytics.track(event, {\n ...properties,\n company: {\n id: client.subdomain,\n name: client.displayName,\n subdomain: client.subdomain,\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 { client } = this.props;\n\n try {\n // @ts-ignore\n window.analytics.page(name, {\n ...properties,\n company: {\n id: client.subdomain,\n name: client.displayName,\n subdomain: client.subdomain,\n },\n });\n } catch (e) {\n withScope(scope => {\n scope.setTag('Non-fatal', 'true');\n captureException(e);\n });\n }\n };\n\n render() {\n return (\n // @ts-ignore\n {this.props.children}\n );\n }\n}\n\nexport default AnalyticsProvider;\n","import { connect } from 'react-redux';\nimport AnalyticsProvider from './AnalyticsProvider';\n\nconst mapStateToProps = (state: any) => {\n return {\n appUser: state.authentication.person,\n client: state.client,\n };\n};\n\nexport default connect(mapStateToProps)(AnalyticsProvider);\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { SnackbarProvider } from 'notistack';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport AnalyticsProvider from 'components/AnalyticsProvider';\nimport store from 'store/store';\n\n// Themes\nimport theme from 'styles/theme';\nimport { ThemeProvider } from '@material-ui/styles';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction AppProvider({ children }: Props) {\n return (\n <>\n \n \n \n \n \n {children}\n \n \n \n \n \n );\n}\n\nexport default AppProvider;\n","import React from 'react';\nimport { useData, useStatus, isNormal } from 'resift';\nimport GlobalConfigContext from 'helpers/GlobalConfigContext';\n\nimport makeGlobalConfigFetch from 'store/configuration/actions/globalConfigFetch';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction GlobalConfigProvider({ children }: Props) {\n const globalConfigFetch = makeGlobalConfigFetch();\n\n const globalConfig = useData(globalConfigFetch);\n const status = useStatus(globalConfigFetch);\n\n if (!isNormal(status)) {\n throw new Error(\n '[GlobalConfigProvider] global config fetch status was not normal. Ensure this provider is placed below the AppFetches component',\n );\n }\n\n if (!globalConfig) {\n throw new Error('[GlobalConfigProvider] global config was falsy');\n }\n\n return (\n {children}\n );\n}\n\nexport default GlobalConfigProvider;\n","import React from 'react';\nimport { useData, useStatus, isNormal } from 'resift';\nimport EntityTypesContext from 'helpers/EntityTypesContext';\nimport _keyBy from 'lodash/keyBy';\n\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction EntityTypesProvider({ children }: Props) {\n const entityTypesFetch = makeEntityTypesFetch();\n const entityTypesData = useData(entityTypesFetch);\n const status = useStatus(entityTypesFetch);\n\n const entityTypes = _keyBy(entityTypesData.results, 'typeKey');\n\n if (!isNormal(status)) {\n throw new Error(\n '[EntityTypesProvider] entity types fetch status was not normal. Ensure this provider is placed below the AppFetches component',\n );\n }\n\n if (!entityTypes) {\n throw new Error('[EntityTypesProvider] entity types was falsy');\n }\n\n return {children};\n}\n\nexport default EntityTypesProvider;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport DebugPage from 'pages/Debug';\nimport { isDebugEnabled } from 'components/Router/Helper';\n\n// Stores / Actions\nimport { fetchAuthenticatedPerson } from 'store/authentication';\n\ninterface Props {\n authentication: any;\n authStatus: any;\n children: () => any;\n}\n\nfunction AuthFetch(props: Props) {\n const { authentication, authStatus, children } = props;\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchAuthenticatedPerson());\n }, []);\n\n if (_get(authentication.person, 'account.isAdmin') === false || authStatus.hasError()) {\n if (isDebugEnabled()) {\n return ;\n } else {\n window.location = authentication.api.login;\n }\n }\n\n return authStatus.isNormal() ? children() : null;\n}\n\nexport default AuthFetch;\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useStatus, useData, isNormal } from 'resift';\nimport _isEmpty from 'lodash/isEmpty';\nimport _keyBy from 'lodash/keyBy';\nimport useInterval from 'helpers/useInterval';\n\n// Stores / Actions\nimport makeGlobalConfigFetch from 'store/configuration/actions/globalConfigFetch';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport getOnboardingTasks from 'fetches/getOnboardingTasks';\nimport { setOnboardingTasks, State } from 'store/onboarding';\nimport { fetchClient } from '@sift/resift/redux/reducers/client';\nimport { fetchSiftBot } from 'store/siftBot';\n\nconst second = 2 * 1000;\nconst minute = 60 * second;\nconst twoMinutes = 2 * minute;\n\ninterface Props {\n siftBotStatus: any;\n clientStatus: any;\n children: (shouldLoadApp: boolean) => any;\n}\n\nfunction AppFetcher(props: Props) {\n const globalConfigFetch = makeGlobalConfigFetch();\n const entityTypesFetch = makeEntityTypesFetch();\n\n const { children, siftBotStatus, clientStatus } = props;\n const dispatch = useDispatch();\n const entityTypesStatus = useStatus(entityTypesFetch);\n const globalConfigStatus = useStatus(globalConfigFetch);\n const onboardingTasksStatus = useStatus(getOnboardingTasks);\n const onboardingTasksFromAPI = useData(getOnboardingTasks);\n\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n const currentCheckList = onboardingState.checkList;\n\n useEffect(() => {\n dispatch(fetchClient());\n dispatch(entityTypesFetch());\n dispatch(globalConfigFetch());\n dispatch(fetchSiftBot());\n dispatch(getOnboardingTasks());\n }, []);\n\n // (pearl) Update open, completion status, and slide key in real time\n // also need to manage when completed category and steps would go to the end of the list\n\n useInterval(() => {\n // (pearl) note: Polling every two minutes to get automatically mark completion tasks\n dispatch(getOnboardingTasks());\n }, twoMinutes);\n\n useEffect(() => {\n if (onboardingTasksFromAPI) {\n if (_isEmpty(currentCheckList)) {\n dispatch(setOnboardingTasks(onboardingTasksFromAPI));\n } else {\n const categoryLookup = _keyBy(onboardingTasksFromAPI, 'id');\n const updatedTasks = currentCheckList.map(category => {\n const taskLookup = _keyBy(categoryLookup[category.id].tasks, 'id');\n\n return {\n ...category,\n tasks: category.tasks.map(t => ({\n ...t,\n isComplete: taskLookup[t.id].isComplete,\n })),\n completionPercentage: categoryLookup[category.id].completionPercentage,\n };\n });\n\n dispatch(setOnboardingTasks(updatedTasks));\n }\n }\n }, [onboardingTasksFromAPI]);\n\n const allFetchesAreComplete =\n siftBotStatus.isNormal() &&\n clientStatus.isNormal() &&\n isNormal(entityTypesStatus) &&\n isNormal(globalConfigStatus) &&\n isNormal(onboardingTasksStatus);\n\n return children(allFetchesAreComplete);\n}\n\nexport default AppFetcher;\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 React from 'react';\n\n// Components\nimport GlobalConfigProvider from 'components/GlobalConfigProvider';\nimport EntityTypesProvider from 'components/EntityTypesProvider';\nimport AuthFetcher from './AuthFetch';\nimport AppFetches from './AppFetches';\n\ninterface Props {\n authentication: any;\n siftBotStatus: any;\n authStatus: any;\n clientStatus: any;\n children: (shouldLoadApp: boolean) => any;\n}\n\nfunction AppFetcher(props: Props) {\n const { authentication, authStatus, siftBotStatus, clientStatus, children } = props;\n\n return (\n \n {() => (\n \n {loaded => {\n if (!loaded) return children(false);\n\n // TODO (Rico): this is weird, refactor this later\n // NOTE: these providers need to be after the ``\n return (\n \n {children(true)}\n \n );\n }}\n \n )}\n \n );\n}\n\nexport default AppFetcher;\n","// Component\nimport AppFetcher from './AppFetcher';\nimport { connect } from 'react-redux';\n\n// Libs\nexport default connect(state => {\n return {\n authentication: state.authentication,\n authStatus: state.authentication.status,\n clientStatus: state.client.status, // TODO Jules: convert this fetch into latest resift fetch format\n siftBotStatus: state.siftBot.status, // TODO Jules: convert this fetch into latest resift fetch format\n };\n})(AppFetcher);\n","import { connect } from 'react-redux';\n\n// Component\nimport Router from './Router';\n\nconst mapStateToProps = store => {\n return {\n store,\n };\n};\n\nexport default connect(mapStateToProps, {})(Router);\n","import React from 'react';\n\n// Components\nimport AppProviders from './AppProviders';\nimport AppFetcher from './AppFetcher';\nimport SiftRouter from 'components/Router';\nimport StaticLoader from 'components/Loader/StaticLoader';\n\nfunction App() {\n return (\n \n \n {shouldLoadApp => (shouldLoadApp ? : )}\n \n \n );\n}\n\nexport default App;\n","// polyfills\nimport 'core-js';\nimport 'react-app-polyfill/ie11';\nimport 'whatwg-fetch';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport * as Sentry from '@sentry/browser';\n\nimport config from './config';\nimport _get from 'lodash/get';\n\n// Styles\nimport 'styles/core.css';\n\n// Components\nimport App from 'components/App';\n\nif (config.SENTRY) {\n Sentry.init({\n dsn: config.SENTRY,\n environment: config.ENV,\n });\n}\n\nconst INTERCOM_APP_ID = _get(config, 'ANALYTICS.INTERCOM.options.appId');\n\nif (INTERCOM_APP_ID) {\n window.intercomSettings = {\n app_id: INTERCOM_APP_ID,\n custom_launcher_selector: ['#intercom-chat', '.intercom-chat'],\n };\n}\n\nReactDOM.render(, document.getElementById('root'));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Utils\nimport { Link } from 'react-router-dom';\nimport makePath from 'helpers/makePath';\n\n// Style\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => {\n return {\n root: {\n ...theme.typography.overline,\n display: 'flex',\n color: '#7197B1',\n marginBottom: theme.spacing(1),\n },\n crumb: {},\n link: {\n textDecoration: 'none',\n cursor: 'pointer',\n color: '#7197B1',\n },\n divider: {},\n };\n};\n\n/**\n * Generates Breadcrumbs for pages using the Routes declared\n * in the Routes component.\n *\n * NOTE: @matp (thats me) is not a fan of having to import the\n * `createRoutes` file here. Similar to `withRouter` we could\n * have something like `withRoutesAndRouter` or explore a\n * `withContext` like wrapper that we can load up with things\n * such as the Router and all the available Routes.\n *\n * @export Breadcrumbs\n * @class Breadcrumbs\n * @extends {React.PureComponent}\n */\nclass Breadcrumbs extends React.PureComponent {\n static propTypes = {\n /**\n * An array of route names which match keys found\n * in the `createRoutes` file.\n */\n routes: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n };\n render() {\n const { routes, classes } = this.props;\n\n const links = routes.map((route, index) => {\n const { name, title, params } = route;\n const isLast = routes.length - 1 === index;\n const to = makePath(name || route, params);\n\n return (\n \n \n {' ' + (title || name || route) + ' '}\n \n {!isLast && }\n \n );\n });\n\n return
{links}
;\n }\n}\n\nexport default withStyles(styles)(Breadcrumbs);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MUITableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\n\nclass TableHead extends PureComponent {\n static propTypes = {\n children: PropTypes.node.isRequired,\n rowProps: PropTypes.object,\n staticContext: PropTypes.any,\n };\n\n render() {\n let { children, rowProps, staticContext, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\nTableHead.skpName = 'TableHeader';\n\nexport default TableHead;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MUITable from '@material-ui/core/Table';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n tableLayout: 'fixed',\n },\n };\n};\n\nclass Table extends PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n };\n\n render() {\n let { classes, children } = this.props;\n\n return {children};\n }\n}\n\nexport default withStyles(styles)(Table);\n","export default function getHostDomain() {\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 React from 'react';\nimport flatten from 'flat';\nimport _get from 'lodash/get';\nimport { makeStyles } from '@material-ui/core/styles';\n\ninterface Props {\n errors: { [field: string]: string | undefined | { [field: string]: string } };\n}\n\nfunction PageFormErrorMessage({ errors }: Props) {\n const classes = useStyles();\n\n if (!errors) {\n return null;\n }\n\n const errorList = Object.entries(flatten(errors));\n const firstErrorMessage = _get(errorList, '[0][1]') as string;\n\n return (\n
\n {errorList.length > 1\n ? `There are ${errorList.length} errors in your form.`\n : firstErrorMessage}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n textAlign: 'right',\n marginRight: theme.spacing(2),\n },\n };\n});\n\nexport default PageFormErrorMessage;\n","import createReducer from '@sift/resift/redux/createReducer';\nimport createActionHandlers from '@sift/resift/redux/FetchUtils/createActionHandlers';\nimport { Status } from '@sift/resift/models/Status';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const THEMES_CREATE_FETCH = 'THEMES_CREATE_FETCH';\nexport const THEMES_GET_ALL_FETCH = 'THEMES_GET_ALL_FETCH';\nexport const THEMES_SET_LOADING_STATE = 'THEMES_SET_LOADING_STATE';\nexport const THEMES_SET_PREVIEW_ID = 'THEMES_SET_PREVIEW_ID';\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n ...createActionHandlers(THEMES_CREATE_FETCH),\n ...createActionHandlers(THEMES_GET_ALL_FETCH),\n [THEMES_SET_LOADING_STATE]: (state, action) => ({\n ...state,\n status: action.payload.status,\n }),\n [THEMES_SET_PREVIEW_ID]: (state, action) => ({\n ...state,\n previewThemeId: action.payload.previewThemeId,\n }),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n previewThemeId: undefined,\n status: new Status(),\n fetches: {},\n objects: {},\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\n","export { default } from './themes';\nexport * from './themes';\n","import { useEffect } from 'react';\nimport { useHistory } from 'react-router';\nimport { useFormikContext } from 'formik';\nimport _isEmpty from 'lodash/isEmpty';\n\nconst HandleRedirect = () => {\n const { dirty, resetForm, errors } = useFormikContext();\n const history = useHistory();\n\n useEffect(() => {\n resetForm();\n }, [history.location.pathname]);\n\n useEffect(() => {\n function handleCloseTab(event: any) {\n if (dirty || !_isEmpty(errors)) {\n event.preventDefault();\n event.returnValue = '';\n }\n }\n window.addEventListener('beforeunload', handleCloseTab);\n return () => window.removeEventListener('beforeunload', handleCloseTab);\n }, [dirty, errors]);\n return null;\n};\n\nexport default HandleRedirect;\n","import { useEffect, useRef } from 'react';\n\nexport default function usePrevious(value: any) {\n // The ref object is a generic container whose current property is mutable ...\n // ... and can hold any value, similar to an instance property on a class\n const ref = useRef();\n\n // Store current value in ref\n useEffect(() => {\n ref.current = value;\n }, [value]); // Only re-run if value changes\n\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n","import { useContext } from 'react';\nimport GlobalConfigContext from 'helpers/GlobalConfigContext';\n\nexport default function useGlobalConfig() {\n const globalConfig = useContext(GlobalConfigContext);\n\n if (!globalConfig) {\n throw new Error('[useGlobalConfig] expected user config to be truthy');\n }\n\n return globalConfig;\n}\n","import { useContext } from 'react';\nimport EntityTypesContext from 'helpers/EntityTypesContext';\n\nexport const PERSON_ENTITY_TYPE_KEY = 'user';\n\nexport default function useEntityTypes() {\n const entityTypes = useContext(EntityTypesContext);\n\n if (!entityTypes) {\n throw new Error('[useEntityTypes] expected entity types to be truthy');\n }\n\n return entityTypes;\n}\n","import { Status, States } from '@sift/resift/models/Status';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nimport {\n ACTION_HANDLERS as clientActionHandlers,\n initialState as clientInitialState,\n} from '@sift/resift/redux/reducers/client';\n\nimport createSingleActionHandlers from '@sift/resift/redux/reducers/createSingleActionHandlers';\n\nexport const FEATURE_UPDATE = 'FEATURE_UPDATE';\nexport const FEATURE_UPDATE_SUCCESS = 'FEATURE_UPDATE_SUCCESS';\nexport const FEATURE_UPDATE_ERROR = 'FEATURE_UPDATE_ERROR';\n\nexport const CLIENT_UPDATE = 'CLIENT_UPDATE';\nexport const CLIENT_UPDATE_SUCCESS = 'CLIENT_UPDATE_SUCCESS';\nexport const CLIENT_UPDATE_ERROR = 'CLIENT_UPDATE_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\n/**\n * Update features for a client\n * @param {Object} features the features object\n */\nexport function updateFeatures(features) {\n return {\n type: FEATURE_UPDATE,\n payload: {\n data: features,\n },\n };\n}\n\nexport function updateClient(client) {\n return {\n type: CLIENT_UPDATE,\n payload: {\n data: client,\n },\n };\n}\n\n// ------------------------------------\n// Actions Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n ...clientActionHandlers,\n ...createSingleActionHandlers({\n actionHandler: FEATURE_UPDATE,\n statusKey: 'featureStatus',\n dataKey: 'features',\n }),\n ...createSingleActionHandlers({\n actionHandler: CLIENT_UPDATE,\n statusKey: 'status',\n transparentStatus: true,\n }),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {\n ...clientInitialState,\n terminology: {\n teamMember: 'Team Member',\n teamMember_plural: 'Team Members',\n },\n settings: {\n support: {\n enabled: false,\n },\n },\n\n featureStatus: new Status(States.NORMAL),\n};\n\nexport default function clientReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import { Status, States } from '@sift/resift/models/Status';\nimport createSingleActionHandlers from '@sift/resift/redux/reducers/createSingleActionHandlers';\n\n// ------------------------------------\n// Constants\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_UPDATE = 'SIFT_BOT_UPDATE';\nexport const SIFT_BOT_UPDATE_SUCCESS = 'SIFT_BOT_UPDATE_SUCCESS';\nexport const SIFT_BOT_UPDATE_ERROR = 'SIFT_BOT_UPDATE_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport function fetchSiftBot() {\n return {\n type: SIFT_BOT_FETCH,\n payload: {},\n };\n}\n\nexport function updateSiftBotFields(fields) {\n return {\n type: SIFT_BOT_UPDATE,\n payload: {\n data: {\n fields,\n },\n },\n };\n}\n\n// ------------------------------------\n// Actions Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n ...createSingleActionHandlers({\n actionHandler: SIFT_BOT_FETCH,\n statusKey: 'status',\n }),\n [SIFT_BOT_UPDATE]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING | States.NORMAL),\n };\n },\n [SIFT_BOT_UPDATE_SUCCESS]: (state, action) => {\n const newState = {\n ...state,\n ...action.payload.data,\n status: new Status(States.NORMAL),\n };\n\n return newState;\n },\n [SIFT_BOT_UPDATE_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL), // Snack bar will fire\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {\n status: new Status(),\n completionPercentage: null,\n fields: [],\n};\nexport default function siftBotReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import createActionHandlers from '@sift/resift/redux/FetchUtils/createActionHandlers';\n\nexport const CREATE_ATTRIBUTE_DIALOG_TOGGLE = 'CREATE_ATTRIBUTE_DIALOG_TOGGLE';\nexport const CATEGORY_FIELD_CREATE = 'CATEGORY_FIELD_CREATE';\nexport const CATEGORY_FIELD_CREATE_SUCCESS = 'CATEGORY_FIELD_CREATE_SUCCESS';\nexport const CATEGORY_FIELD_CREATE_ERROR = 'CATEGORY_FIELD_CREATE_ERROR';\n\nexport function toggleCreateAttributeDialog() {\n return {\n type: CREATE_ATTRIBUTE_DIALOG_TOGGLE,\n payload: {},\n };\n}\n\n// Used on Attribute Create Dialog because I need access to the returned value from the dispatch call\nexport function createCategoryField(data) {\n return {\n type: CATEGORY_FIELD_CREATE,\n identifier: 'attribute',\n payload: {\n data,\n },\n };\n}\n\n// Action Handlers\nexport const initialState = {\n fetches: {},\n objects: {},\n isCreateAttributeDialogOpen: false,\n};\n\nconst ACTION_HANDLERS = {\n [CREATE_ATTRIBUTE_DIALOG_TOGGLE]: state => {\n return {\n ...state,\n isCreateAttributeDialogOpen: !state.isCreateAttributeDialogOpen,\n };\n },\n ...createActionHandlers(CATEGORY_FIELD_CREATE),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport default function AttributeReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import _keyBy from 'lodash/keyBy';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/onboarding';\nimport useTaskList from 'components/onboarding/useTaskList';\n\nimport { LIST_SLIDE_KEY, CHEERS_SLIDE_KEY } from 'components/onboarding/constants';\nimport * as Types from 'components/onboarding/typings';\n\nexport default function useTask(): Types.Task | null {\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n\n const { checkList, slideKey, taskIdInFocus } = onboardingState;\n\n if (!checkList.length) {\n return null;\n }\n\n if ((!slideKey && !taskIdInFocus) || slideKey === LIST_SLIDE_KEY) {\n return null;\n }\n\n const taskList = useTaskList();\n const taskLookup = _keyBy(taskList, 'id');\n const taskKey = (slideKey !== CHEERS_SLIDE_KEY && slideKey) || taskIdInFocus;\n\n return taskKey ? taskLookup[taskKey] : null;\n}\n","export interface SimpleSet {\n [key: string]: T | undefined;\n}\n\n/**\n * removes a key from a set. these sets are implemented as objects where\n * the keys of the object are the members of the set. the value is ignored.\n */\nexport function remove(set: SimpleSet, keyToDelete: string) {\n return Object.entries(set)\n .filter(([key]) => key !== keyToDelete.toString())\n .reduce(\n (newSet, [key, value]) => {\n newSet[key] = value;\n return newSet;\n },\n {} as SimpleSet,\n );\n}\n\n/**\n * adds a key to the set. these sets are implements as objects where the keys of\n * the object are the members of the set. the value is ignored.\n */\nexport function add(set: SimpleSet, keyToAdd: string, value: T = true as any) {\n return { ...set, [keyToAdd]: value };\n}\n\n/**\n * checks whether or not a key exists in a set\n * @template T\n * @param {{[key: string]: T | undefined}} set\n * @param {string} key\n */\nexport function has(set: SimpleSet, key: string) {\n return !!set[key];\n}\n\n/**\n * toggles a key in a set\n */\nexport function toggle(set: SimpleSet, keyToToggle: string, value: T = true as any) {\n if (has(set, keyToToggle)) {\n return remove(set, keyToToggle);\n }\n\n return add(set, keyToToggle, value);\n}\n","import React from 'react';\nimport { SimpleSet, has, toggle } from 'helpers/setOperations';\nimport { MakeOptional } from '@sift/skipper/helpers/typings';\n\n// Components\nimport Paper from '@material-ui/core/Paper';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport TextField from '@material-ui/core/TextField';\nimport Button, { ButtonProps } from '@material-ui/core/Button';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport Divider from '@material-ui/core/Divider';\n\n// Styles\nimport classNames from 'classnames';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from '@sift/skipper/styles/defineStyles';\n\nconst styles = defineStyles(theme => {\n return {\n root: {\n position: 'relative',\n display: 'inline',\n zIndex: theme.zIndex.surface,\n },\n attributeSelector: {\n position: 'absolute',\n top: `calc(100% + ${theme.spacing(1)}px)`,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n width: 363,\n maxHeight: 478,\n paddingTop: theme.spacing(1),\n },\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '0 0 auto',\n alignItems: 'center',\n padding: theme.spacing(0, 2),\n },\n title: {\n fontSize: 16,\n fontWeight: 500,\n margin: theme.spacing(1, 0),\n },\n search: {\n flex: '0 0 auto',\n padding: theme.spacing(0, 2),\n },\n attributes: {\n flex: '1 1 auto',\n overflow: 'auto',\n },\n attributeRow: {\n display: 'flex',\n padding: theme.spacing(0, 1),\n },\n actions: {\n flex: '0 0 auto',\n display: 'flex',\n padding: theme.spacing(1),\n },\n clearAll: {\n marginRight: theme.spacing(1),\n },\n cancel: {\n marginLeft: 'auto',\n marginRight: theme.spacing(1),\n },\n save: {},\n afterListView: {},\n attribute: {},\n };\n});\n\nexport interface AttributeSelectorBaseProps {\n className?: string;\n classes: Classes;\n searchPlaceholder?: string;\n open: boolean;\n label: string;\n title: string;\n selectedAttributes: SimpleSet;\n attributes: T[];\n saveButtonLabel?: string;\n /**\n * renders the header of the component. This function takes in the props\n * being passed into it\n * the default implementation of this is:\n *\n * ```jsx\n thisProps => {\n const { classes, title } = thisProps;\n return (\n
\n
{title}
\n
\n );\n }\n ```\n */\n renderHeader: (props: AttributeSelectorBaseProps) => React.ReactNode;\n /**\n * use this prop to render the attribute row. the default implementation\n * of this is `attribute => attribute.toString()`;\n *\n * ```jsx\n * field.displayName}\n * />\n * ```\n */\n renderAttribute: (t: T) => React.ReactNode;\n /**\n * use this to render a list wrapper. the normal list element as well\n * as `this.props` is passed into this wrapper\n *\n * (defaultElement, attributeSelectorBaseProps) => React.Element\n */\n listWrapper: (\n defaultElement: React.ReactNode,\n props: AttributeSelectorBaseProps,\n ) => React.ReactNode;\n afterListView?: React.ReactNode;\n /**\n * use this props to pick the key of an item in the attribute array. e.g.\n * if you had an array of fields, you'd pass in something like:\n *\n * ```jsx\n * field.key}\n * />\n * ```\n */\n getAttributeKey: (t: T) => string;\n /**\n * callback that is invoked when the \"Save\" button is clicked. this\n * function is called with no arguments.\n */\n onSave: () => void;\n /**\n * callback invoked when the label is clicked to open the selector\n */\n onOpen: () => void;\n /**\n * callback that is invoked when the \"Close\" button is clicked, the user\n * clicks away, or the save button is pressed\n */\n onClose: () => void;\n /**\n * callback that's invoked when the \"Clear all\" button is clicked\n */\n onClearAll: () => void;\n /**\n * fires when the user types in the search box. takes in a string of\n * the query\n */\n onSearch: (query: string) => void;\n /**\n * fires whenever an attribute selection changes. this fires with the\n * selected attributes set (implemented with an object).\n *\n * note: since this component is controlled, you must pass the newly\n * selected attributes back into this component or no update will be seen,\n */\n onChangeSelectedAttributes: (set: SimpleSet) => void;\n LabelButtonProps?: ButtonProps;\n}\n\n/**\n * a completely controlled attribute selector component. don't use this\n * component by itself, instead use the `Local` or `Server` implementations\n */\nclass AttributeSelectorBase extends React.PureComponent> {\n static defaultProps = {\n renderAttribute: (attribute: any) => attribute.toString(),\n renderHeader: (thisProps: AttributeSelectorBaseProps) => {\n const { classes, title } = thisProps;\n return (\n
\n
{title}
\n
\n );\n },\n listWrapper: (listElm: any) => listElm,\n };\n renderAriaLabel = (attribute: any) => attribute.displayName;\n handleChange = (e: React.ChangeEvent) => {\n e.preventDefault();\n const value = e.currentTarget.value || '';\n this.props.onSearch(value);\n };\n\n handleToggle(key: string) {\n const { onChangeSelectedAttributes, selectedAttributes } = this.props;\n onChangeSelectedAttributes(toggle(selectedAttributes, key));\n }\n\n handleSave = () => {\n this.props.onClose();\n this.props.onSave();\n };\n\n toggleOpen = () => {\n const { open, onClose, onOpen } = this.props;\n if (open) {\n onClose();\n } else {\n onOpen();\n }\n };\n\n render() {\n const {\n attributes,\n className,\n classes,\n label,\n searchPlaceholder,\n LabelButtonProps,\n getAttributeKey,\n open,\n selectedAttributes,\n onClearAll,\n onClose,\n onOpen,\n afterListView,\n renderHeader,\n listWrapper,\n renderAttribute,\n saveButtonLabel,\n } = this.props;\n\n return (\n
\n \n \n {renderHeader(this.props)}\n\n {searchPlaceholder && (\n \n )}\n\n \n\n {listWrapper(\n \n {attributes\n .map(attribute => ({\n attribute,\n key: getAttributeKey(attribute),\n }))\n .map(({ attribute, key }) => (\n this.handleToggle(key)}\n >\n \n
{renderAttribute(attribute)}
\n \n ))}\n {afterListView}\n
,\n this.props,\n )}\n\n \n\n
\n \n \n \n {saveButtonLabel || 'Save'}\n \n
\n \n
\n );\n }\n}\n\nexport default withStyles(styles)(AttributeSelectorBase) as (\n props: MakeOptional<\n AttributeSelectorBaseProps,\n 'classes' | 'renderHeader' | 'renderAttribute' | 'listWrapper'\n >,\n) => any;\n","import React from 'react';\nimport memoizeLast from '@sift/resift/memoizeLast';\nimport searchList from '@sift/skipper/helpers/searchList';\nimport { SimpleSet } from 'helpers/setOperations';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from '@sift/skipper/styles/defineStyles';\n\n// Components\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { ButtonProps } from '@material-ui/core/Button';\nimport AttributeSelectorBase, {\n AttributeSelectorBaseProps,\n} from 'components/attributeSelector/Base';\nimport NoResultsView from '@sift/skipper/components/views/NoResults';\n\nconst styles = defineStyles(theme => ({\n noResultsView: {\n flex: '1 1 auto',\n marginTop: theme.spacing(),\n marginBottom: theme.spacing(),\n },\n root: {},\n attributeSelector: {},\n attribute: {},\n header: {},\n title: {},\n search: {},\n attributes: {},\n attributeRow: {},\n actions: {},\n clearAll: {},\n cancel: {},\n save: {},\n afterListView: {},\n}));\n\ninterface Props {\n className?: string;\n classes: Classes;\n attributes: T[];\n getAttributeKey: (t: T) => string;\n /**\n * maps attributes to display names/strings. The local search algorithm will\n * also use this function to search against all the attributes\n */\n getAttributeDisplayName: (t: T) => string;\n /**\n * callback invoked when the user saves their selected attributes.\n *\n * this is called with the state of `selectedAttributes` set (where the set\n * is implemented with an object)\n */\n onSaveSelectedAttributes: (set: SimpleSet) => void;\n searchPlaceholder?: string;\n label: string;\n title: string;\n selectedAttributes: SimpleSet;\n renderAttribute?: (t: T) => React.ReactNode;\n LabelButtonProps?: ButtonProps;\n saveButtonLabel?: string;\n}\n\ninterface State {\n open: boolean;\n search: string;\n selectedAttributes: SimpleSet;\n}\n\nclass AttributeSelectorLocalSearch extends React.PureComponent, State> {\n state: State = {\n open: false,\n search: '',\n selectedAttributes: {},\n };\n\n componentDidUpdate(_: Props, previousState: State) {\n const closedBefore = !previousState.open;\n const openNow = this.state.open;\n\n if (closedBefore && openNow) {\n // copies the selected attributes from the props into state\n // eslint-disable-next-line\n this.setState({ selectedAttributes: this.props.selectedAttributes });\n }\n }\n\n get isAllSelected() {\n return this._getOrCalculateIsAllSelected(this.state.selectedAttributes, this.props.attributes);\n }\n\n _getOrCalculateIsAllSelected = memoizeLast((selectedAttributes: SimpleSet, attributes: T[]) => {\n const { getAttributeKey } = this.props;\n for (const key of attributes.map(getAttributeKey)) {\n if (!selectedAttributes[key]) return false;\n }\n return true;\n });\n\n get isPartiallySelected() {\n return this._getOrCalculateIsPartiallySelected(\n this.state.selectedAttributes,\n this.props.attributes,\n );\n }\n _getOrCalculateIsPartiallySelected = memoizeLast(\n (selectedAttributes: SimpleSet, attributes: T[]) => {\n if (this.isAllSelected) return false;\n\n const { getAttributeKey } = this.props;\n for (const key of attributes.map(getAttributeKey)) {\n if (selectedAttributes[key]) return true;\n }\n return false;\n },\n );\n\n get filteredAttributes() {\n return this._getOrCalculateFilteredAttributes(this.props.attributes, this.state.search);\n }\n\n _getOrCalculateFilteredAttributes = memoizeLast((attributes: T[], search: string) => {\n const { getAttributeDisplayName } = this.props;\n\n return searchList(attributes, getAttributeDisplayName, search);\n });\n\n onSelectAll = () => {\n if (this.isAllSelected) {\n this.onClearAll();\n return;\n }\n\n const { attributes, getAttributeKey } = this.props;\n\n const selectedAttributes = attributes\n .map(getAttributeKey)\n .reduce((newSelectedAttributes, key) => {\n newSelectedAttributes[key] = true;\n return newSelectedAttributes;\n }, {} as SimpleSet);\n\n this.setState(previousState => ({\n ...previousState,\n selectedAttributes,\n }));\n };\n\n onClearAll = () => {\n this.setState({ selectedAttributes: {} });\n };\n\n onOpen = () => {\n this.setState({ open: true });\n };\n\n onClose = () => {\n this.setState({ open: false });\n };\n\n onSearch = (search: string) => {\n this.setState({ search });\n };\n\n onChangeSelectedAttributes = (selectedAttributes: SimpleSet) => {\n this.setState({ selectedAttributes });\n };\n\n onSave = () => {\n this.props.onSaveSelectedAttributes(this.state.selectedAttributes);\n };\n\n renderAttribute = (attribute: T) => {\n if (this.props.renderAttribute) {\n return this.props.renderAttribute(attribute);\n }\n\n return this.props.getAttributeDisplayName(attribute);\n };\n\n renderHeader = (props: AttributeSelectorBaseProps) => {\n const { classes, title } = props;\n\n return (\n
\n
{title}
\n \n }\n label=\"Select All\"\n />\n
\n );\n };\n\n listWrapper = (listElement: React.ReactNode) =>\n this.filteredAttributes.length <= 0 ? (\n \n ) : (\n listElement\n );\n\n render() {\n const {\n getAttributeKey,\n className,\n searchPlaceholder,\n label,\n title,\n LabelButtonProps,\n classes,\n saveButtonLabel,\n } = this.props;\n\n const { noResultsView, ...restOfClasses } = classes;\n\n return (\n \n className={className}\n classes={restOfClasses}\n open={this.state.open}\n selectedAttributes={this.state.selectedAttributes}\n attributes={this.filteredAttributes}\n renderAttribute={this.renderAttribute}\n renderHeader={this.renderHeader}\n onOpen={this.onOpen}\n onClose={this.onClose}\n onSearch={this.onSearch}\n onSave={this.onSave}\n onClearAll={this.onClearAll}\n onChangeSelectedAttributes={this.onChangeSelectedAttributes}\n listWrapper={this.listWrapper}\n getAttributeKey={getAttributeKey}\n searchPlaceholder={searchPlaceholder}\n label={label}\n title={title}\n LabelButtonProps={LabelButtonProps}\n saveButtonLabel={saveButtonLabel}\n />\n );\n }\n}\n\nexport default withStyles(styles)(AttributeSelectorLocalSearch);\n","export { default } from './Local';\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, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MUITableCell from '@material-ui/core/TableCell';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n };\n};\n\nclass TableCell extends PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n };\n\n render() {\n let { children, ...otherProps } = this.props;\n\n return {children};\n }\n}\n\nexport default withStyles(styles)(TableCell);\n","import config from 'config';\n\nexport const debugWhitelistedDomains = [\n {\n domain: 'test-development',\n description:\n 'Test Business Units here. If an instance has no orgLevels then busines units will not appear.',\n },\n {\n domain: 'test-azure',\n description:\n 'Test People Data and SSO here. An instance will display People Data when the People Data feature is enabled and data synced through azure.',\n },\n {\n domain: 'featuretest',\n description:\n 'This instance uses foc data. It is another instance of foctest used to test multiple features during a sprint.',\n },\n];\n\nexport function domainIsWhitelisted() {\n // window.location.host === 'subdomain.domain.com'\n let full = window.location.host;\n let parts = full.split('.');\n let subdomain = parts[0];\n if (subdomain) {\n subdomain.toLowerCase();\n } else {\n return false;\n }\n\n for (let index in debugWhitelistedDomains) {\n if (debugWhitelistedDomains[index].domain === subdomain) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isDebugEnabled() {\n return config.ENV === 'development' || config.ENV === 'test';\n}\n\nexport function routeToDebugPage() {\n if (isDebugEnabled() && !window.location.href.includes('/admin/debug')) {\n window.location = '/admin/debug';\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport AppBar from '@material-ui/core/AppBar';\nimport PersonMenu from '@sift/skipper/components/appBar/PersonMenu';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nfunction AppHeader({ person, classes, pictureUrl }) {\n const avatarHeader = person.id ? (\n \n ) : null;\n\n return (\n \n
{avatarHeader}
\n
\n );\n}\n\nAppHeader.propTypes = {\n person: PropTypes.object,\n pictureUrl: PropTypes.string,\n classes: PropTypes.object.isRequired,\n};\n\nconst styles = theme => {\n return {\n root: {\n width: `calc(100% - ${theme.overrides.AppSidebar.width}px)`,\n marginLeft: theme.overrides.AppSidebar.width,\n fontSize: 18,\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n zIndex: theme.zIndex.surface,\n background: theme.palette.common.white,\n color: '#000',\n boxShadow: 'rgba(0, 0, 0, 0.12) 0px 1px 6px, rgba(0, 0, 0, 0.12) 0px 1px 4px',\n },\n personMenuRoot: {\n minHeight: 64,\n maxHeight: 64,\n marginRight: 20,\n },\n personMenuIcon: {\n color: '#000 !important',\n },\n navigation: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n link: {\n textDecoration: 'none',\n },\n name: {\n color: '#000',\n },\n };\n};\n\nexport default withStyles(styles)(AppHeader);\n","import { connect } from 'react-redux';\nimport AppHeader from './AppHeader';\n\nconst mapStateToProps = state => {\n const person = state.authentication.person;\n\n const preferOfficialPhotos =\n state.settings && state.settings.directory\n ? state.settings.directory.preferOfficialPhotos\n : false;\n\n const pictureUrl = preferOfficialPhotos ? person.officialPictureUrl : person.pictureUrl;\n\n return { person, pictureUrl };\n};\n\nexport default connect(mapStateToProps)(AppHeader);\n","import * as Types from '../types';\nimport { Route } from 'components/Router/types';\n\n/**\n * Helper function to convert a set of Routes to an array\n * of InternalLinkNavItem.\n *\n * @param routes\n */\nconst routesToNavigationItems = (routes: Route[]): Types.InternalLinkNavItem[] => {\n return routes.map(\n (route: Route): Types.InternalLinkNavItem => {\n return {\n route,\n Icon: route.Icon,\n };\n },\n );\n};\n\nexport default routesToNavigationItems;\n","// Libs\nimport routesToNavigationItems from './routesToNavigationItems';\n\n// Pages\nimport {\n Administrators,\n Applications,\n Directories,\n General,\n Users,\n Features,\n Pages,\n PersonProfiles,\n} from 'components/Router/routes';\n\n// Types\nimport * as Types from '../types';\n\n/**\n * The base Navigation hierarchy object. Adding items to this\n * will change what is on the left side. We start with the\n * max items and allow `makeNavigation` to filter items out.\n */\nexport const defaultNavigationItems = (): Types.InternalLinkNavItem[] => [\n {\n divider: true,\n children: routesToNavigationItems([Users, PersonProfiles, Pages, Features, General]),\n },\n {\n divider: true,\n // prettier-ignore\n children: routesToNavigationItems([\n Directories,\n Applications,\n Administrators,\n ])\n },\n];\n\nexport default defaultNavigationItems;\n","// Types\nimport * as Types from '../types';\n\nconst makeNavigationItems = (items: Types.InternalLinkNavItem[]) => {\n return items.reduce(\n (\n acc: Types.InternalLinkNavItem[],\n item: Types.InternalLinkNavItem,\n ): Types.InternalLinkNavItem[] => {\n acc.push(item);\n\n // Filter Children\n if (item.children) {\n item.children = makeNavigationItems([...item.children]);\n }\n\n return acc;\n },\n [],\n );\n};\n\nexport default makeNavigationItems;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MUIListItem, { ListItemProps } from '@material-ui/core/ListItem';\n\n// There seems to be a bug with mui's type definition, the api doc says button has a default value,\n// but passing the prop in will result in a type error, for now, omitting it.\n// Same with component, even tho\ntype Props = Omit;\n\nfunction ListItem({ classes, ...restOfProps }: Props) {\n const _classesOverride = useStyles();\n const classesOverride = !!classes ? classes : _classesOverride;\n\n return ;\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n color: theme.colors.navText,\n },\n}));\n\nexport default ListItem;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ListItem from './ListItem';\n\ntype Props = React.ComponentProps;\n\nfunction NavListItemBase({ classes, ...restOfProps }: Props) {\n const classesOverride = useStyles();\n\n return ;\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n paddingTop: 1,\n paddingBottom: 1,\n color: theme.colors.navText,\n '&:hover,&:focus': {\n backgroundColor: theme.palette.primary.light,\n },\n },\n}));\n\nexport default NavListItemBase;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MUIListItemText, { ListItemTextProps } from '@material-ui/core/ListItemText';\n\nfunction ListItemText({ classes, ...restOfProps }: ListItemTextProps) {\n const _classesOverride = useStyles();\n const classesOverride = !!classes ? classes : _classesOverride;\n\n return ;\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n fontWeight: 600,\n fontSize: 16,\n },\n primary: {\n fontWeight: 400,\n fontSize: 'inherit',\n },\n}));\n\nexport default ListItemText;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MUIListItemIcon, { ListItemIconProps } from '@material-ui/core/ListItemIcon';\n\nfunction ListItemIcon({ classes, ...restOfProps }: ListItemIconProps) {\n const _classesOverride = useStyles();\n const classesOverride = !!classes ? classes : _classesOverride;\n\n return ;\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n minWidth: 'auto',\n marginRight: theme.spacing(2),\n color: 'inherit',\n },\n}));\n\nexport default ListItemIcon;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { makeStyles } from '@material-ui/core/styles';\nimport makePath from 'helpers/makePath';\nimport * as Types from './types';\nimport _get from 'lodash/get';\nimport { matchPath } from 'react-router';\n\nimport NavListItemBase from './molecules/NavListItemBase';\nimport ListItemText from './molecules/ListItemText';\nimport ListItemIcon from './molecules/ListItemIcon';\nimport { NavLink } from 'react-router-dom';\n\ninterface Props {\n item: Types.InternalLinkNavItem;\n className?: string;\n}\n\nfunction InternalLinkNavItem({ item, className }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n const Icon = _get(item, 'route.Icon');\n const route = item.route;\n\n if (!route) {\n return null;\n }\n\n let navTitle = route.title;\n let path = makePath(route);\n\n const handleNavItemClick = () => {\n analytics.track('Main Admin Navigation Item Clicked', {\n category: 'AD - Navigation',\n label: navTitle,\n });\n };\n\n return (\n \n \n {!!Icon && (\n \n \n \n )}\n {item.route && navTitle}\n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {},\n active: {\n backgroundColor: theme.palette.primary.light,\n fontWeight: 700,\n color: theme.colors.white,\n '& *': {\n color: theme.colors.white,\n backgroundColor: theme.palette.primary.light,\n fontWeight: 700,\n },\n },\n };\n});\n\nexport default InternalLinkNavItem;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport * as Types from './types';\nimport _get from 'lodash/get';\n\nimport NavListItemBase from './molecules/NavListItemBase';\nimport ListItemText from './molecules/ListItemText';\nimport ListItemIcon from './molecules/ListItemIcon';\n\ninterface Props {\n item: Types.ExternalLinkNavItem;\n className?: string;\n}\n\nfunction ExternalLinkNavItem({ item, className }: Props) {\n const Icon = _get(item, 'Icon');\n const analytics = useAnalytics();\n\n const handleSupportItemClick = () => {\n analytics.track('Support Admin Navigation Item clicked', {\n category: 'AD - Navigation',\n label: _get(item, ['header', 'title']),\n });\n };\n\n return (\n \n \n {!!Icon && (\n \n \n \n )}\n {_get(item, ['header', 'title'])}\n \n \n );\n}\n\nexport default ExternalLinkNavItem;\n","import React from 'react';\nimport * as Types from './types';\n\nimport LiveHelpIcon from '@material-ui/icons/LiveHelp';\nimport ChatIcon from '@material-ui/icons/Chat';\nimport ExternalLinkNavItem from './ExternalLinkNavItem';\n\nconst supportLinks = [\n {\n header: { title: 'Help Articles' },\n link: 'https://help.justsift.com',\n Icon: LiveHelpIcon,\n },\n {\n header: { title: 'Chat' },\n link: 'mailto:support@justsift.com',\n Icon: ChatIcon,\n id: 'intercom-chat',\n },\n] as Types.ExternalLinkNavItem[];\n\nfunction SupportLinks() {\n return (\n <>\n {supportLinks.map((item, i) => {\n return ;\n })}\n \n );\n}\n\nexport default SupportLinks;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useSelector } from 'react-redux';\nimport getHostName from 'helpers/getHostName';\nimport defaultNavigationItems from './helpers/defaultNavigationItems';\nimport makeNavigationItems from './helpers/makeNavigationItems';\nimport * as Types from './types';\nimport classnames from 'classnames';\n\n// Components\nimport { Link } from 'react-router-dom';\n\nimport SiftLogo from '@sift/skipper/components/SiftLogo';\nimport Drawer from '@material-ui/core/Drawer';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\n\nimport NavListItemBase from './molecules/NavListItemBase';\nimport ListItem from './molecules/ListItem';\nimport ListItemText from './molecules/ListItemText';\nimport ListItemIcon from './molecules/ListItemIcon';\nimport InternalLinkNavItem from './InternalLinkNavItem';\nimport routesToNavigationItems from './helpers/routesToNavigationItems';\nimport SupportLinks from 'components/AppSidebar/SupportLinks';\n\nimport * as Routes from 'components/Router/routes';\n\n// Styles\nimport { makeStyles } from '@material-ui/core/styles';\nimport useTheme from '@material-ui/core/styles/useTheme';\n\ninterface Props {\n dispatch: any;\n}\n\nfunction AppSidebar({ dispatch, ...other }: Props) {\n const { palette } = useTheme();\n const classes = useStyles(other);\n const analytics = useAnalytics();\n const navigationItems = makeNavigationItems(defaultNavigationItems());\n const clientSubdomain = useSelector((state: any) => state.client.subdomain);\n const hostName = getHostName();\n const directoryUrl = `https://${clientSubdomain}.${hostName}.com`;\n\n const handleReturnToSift = () => {\n analytics.track('Return to Sift Clicked', {\n category: 'AD - Navigation',\n });\n };\n\n return (\n \n \n
\n \n \n \n \n \n \n \n \n \n \n Return to Sift\n \n \n \n \n {// LEVEL ONE\n navigationItems.map((item, index) => (\n
\n {// LEVEL TWO\n item.children &&\n item.children.map((childItem: Types.InternalLinkNavItem) => (\n \n ))}\n {index === 0 && (\n \n )}\n
\n ))}\n
\n
\n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n overflowX: 'hidden',\n },\n list: {\n width: theme.overrides.AppSidebar.width,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n logoListItem: {\n paddingTop: theme.spacing(2),\n minHeight: 68,\n },\n backToAppIcon: {\n transform: 'rotate(180deg)',\n },\n divider: {\n backgroundColor: theme.colors.navDivider,\n marginLeft: 0,\n marginRight: 0,\n marginTop: theme.spacing(2.25),\n marginBottom: theme.spacing(2.25),\n },\n marginTop: {\n marginTop: theme.spacing(2.25),\n },\n support: {\n marginBottom: theme.spacing(2.25),\n },\n}));\n\nexport default AppSidebar;\n","import { connect } from 'react-redux';\nimport AppSidebar from './AppSidebar';\n\nconst mapStateToProps = state => {\n return {\n client: state.client,\n };\n};\n\nexport default connect(mapStateToProps)(AppSidebar);\n","// NOTE: this is old code\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\n/**\n * The Purpose of SidebarLayout is strictly to fill the content's window from top to bottom, left to right with an additional sidebar.\n * This is great for when you want to create a scrolling window only within the content of the page,\n * or set an addtional background color the extends the remainder of the window.\n */\n\nfunction SidebarLayout({ classes, children }) {\n let sidebar;\n let content = [];\n\n children.forEach(node => {\n if (!node) {\n return false;\n }\n\n if (node.type.skpName === 'Sidebar') {\n sidebar = node;\n } else {\n content.push(node);\n }\n });\n\n return (\n
\n {sidebar}\n
{content}
\n
\n );\n}\n\nSidebarLayout.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n};\n\nconst styles = theme => {\n return {\n root: {\n overflowY: 'hidden',\n flex: '1 1 auto',\n display: 'flex',\n },\n sidebarContent: {\n flex: '1 1 auto',\n },\n };\n};\n\nexport default withStyles(styles, { name: 'SkpSidebarLayout' })(SidebarLayout);\n","import { defineFetch } from 'resift';\n\nconst makeSetPassword = defineFetch({\n displayName: 'Set Password',\n make: personId => ({\n request: (password: string) => ({ http }) =>\n http({\n method: 'POST',\n route: `/people/${personId}/password`,\n data: {\n password,\n },\n }),\n }),\n});\n\nexport default makeSetPassword;\n","// This component was copied from Anon and transformed into functional component with some cleanups\nimport React, { useState, useEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\n\ninterface Props {\n password: string;\n label: string;\n validPasswordCallback: (errors: any) => void;\n passwordCallback: (value: string) => void;\n}\n\nfunction PasswordTextField({ password, label, validPasswordCallback, passwordCallback }: Props) {\n const classes = useStyles();\n const [hasBlurredOnce, setHasBlurredOnce] = useState(false);\n\n useEffect(() => {\n if (password.length === 0) {\n setHasBlurredOnce(false);\n }\n validPasswordCallback(displayErrors().length === 0 && password.length !== 0);\n }, [password, validPasswordCallback]);\n\n const handlePasswordChange = (event: any) => {\n passwordCallback(event.target.value);\n };\n\n const toggleBlurredOnce = () => {\n setHasBlurredOnce(true);\n };\n\n const displayErrors = () => {\n let errorMessages = [];\n const errors = [\n {\n msg: 'Please add at least one lowercase letter.',\n regex: /[a-z]/,\n },\n {\n msg: 'Please add at least one capital letter.',\n regex: /[A-Z]/,\n },\n {\n msg: 'Please add at least one number.',\n regex: /[0-9]/,\n },\n {\n msg: 'Please add at least eight characters',\n regex: /.{8,}/g,\n },\n ];\n for (let i = 0; i < errors.length; i++) {\n let error = errors[i];\n if (error.regex.test(password) === false && password.length > 0) {\n errorMessages.push(error.msg);\n }\n }\n return errorMessages;\n };\n\n const displayErrorText = () => {\n const errors = displayErrors();\n const blank = '';\n if (hasBlurredOnce && password.length > 0) {\n return (\n
\n \n {errors[0]}\n \n \n {errors[1]}\n \n \n {errors[2]}\n \n \n {errors[3]}\n \n
\n );\n } else {\n return (\n
\n \n {blank}\n \n \n {blank}\n \n \n {blank}\n \n \n {blank}\n \n
\n );\n }\n };\n\n const isInvalidPassword = () => {\n return displayErrors().length !== 0 && password.length !== 0 && hasBlurredOnce;\n };\n\n return (\n
\n \n {label}\n \n \n {displayErrorText()}\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n input: {\n width: '100%',\n },\n labelSize: {\n fontSize: 25,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.down('xs')]: {\n fontSize: 20,\n marginTop: theme.spacing(1),\n },\n },\n inputSize: {\n fontSize: 28,\n minHeight: 70,\n paddingTop: theme.spacing(1),\n },\n root: {\n marginTop: 0,\n fontSize: 15,\n },\n helperTextContainer: {\n marginTop: theme.spacing(0.5),\n },\n };\n});\n\nexport default PasswordTextField;\n","import React, { useState, useEffect } from 'react';\nimport { PERSON_ROLE_PENDING_OWNER, PERSON_ROLE_OWNER } from 'pages/Administrators/constants';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport colors from 'styles/colors';\nimport { useDispatch } from 'react-redux';\nimport makeSetPassword from 'fetches/makeSetPassword';\nimport makeUpdateRole from 'fetches/makeUpdateRole';\nimport _get from 'lodash/get';\nimport { useStatus, isLoading, isNormal } from 'resift';\nimport showSnackbar from 'helpers/showSnackbar';\nimport usePrevious from '@sift/resift/usePrevious';\n\n// Components\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Slide from '@material-ui/core/Slide';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport SiftLogo from '@sift/skipper/components/SiftLogo';\nimport PasswordTextField from './PasswordTextField';\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\n\nconst Transition = React.forwardRef(function Transition(\n props: TransitionProps & { children?: React.ReactElement },\n ref: React.Ref,\n) {\n return ;\n});\n\ninterface Props {\n role: number;\n userId: string;\n hasSetPassword: boolean;\n}\n\nfunction AcceptOwnerRoleDialog({ role, userId, hasSetPassword }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const setPassword = makeSetPassword(userId);\n const updateRole = makeUpdateRole(userId, 'accept-owner-role');\n const setPasswordStatus = useStatus(setPassword);\n const prevSetPasswordStatus = usePrevious(setPasswordStatus);\n const updateRoleStatus = useStatus(updateRole);\n const prevUpdateRoleStatus = usePrevious(updateRoleStatus);\n const shouldOpenDialog = role === PERSON_ROLE_PENDING_OWNER;\n const [open, setOpen] = useState(shouldOpenDialog);\n const [passwordInput, setPasswordInput] = useState('');\n const [secondPasswordInput, setSecondPasswordInput] = useState('');\n const [passwordIsValid, setPasswordIsValid] = useState(false);\n const [showSetPasswordForm, setShowSetPasswordForm] = useState(!hasSetPassword);\n\n showSnackbar({\n status: setPasswordStatus,\n message: 'Password successfully updated.',\n errorMessage: 'An error occurred while setting the password.',\n });\n\n showSnackbar({\n status: updateRoleStatus,\n message: 'You have successfully accepted the owner role.',\n errorMessage: 'An error occurred while accepting the owner role.',\n });\n\n useEffect(() => {\n setOpen(shouldOpenDialog);\n }, [updateRoleStatus]);\n\n useEffect(() => {\n if (isLoading(prevSetPasswordStatus) && isNormal(setPasswordStatus)) {\n handleAcceptOwnerRole();\n }\n }, [prevSetPasswordStatus, setPasswordStatus]);\n\n useEffect(() => {\n if (isLoading(prevUpdateRoleStatus) && isNormal(updateRoleStatus)) {\n setOpen(false);\n }\n }, [prevUpdateRoleStatus, updateRoleStatus]);\n\n const handleSubmitNewPassword = async () => {\n if (checkNewPasswordCriteria()) {\n await dispatch(setPassword(passwordInput));\n }\n };\n\n const handleShowUpdatePasswordForm = () => {\n setShowSetPasswordForm(true);\n };\n\n const handleCancelSetPassword = () => {\n setShowSetPasswordForm(false);\n };\n\n const checkNewPasswordCriteria = () => {\n return passwordIsValid && passwordInput === secondPasswordInput;\n };\n\n const setPasswordCallback = (password: string) => {\n setPasswordInput(password);\n };\n\n const setValidPasswordCallback = (validPassword: boolean) => {\n setPasswordIsValid(validPassword);\n };\n\n const handleChangeTwo = (event: any) => {\n setSecondPasswordInput(event.target.value);\n };\n\n const checkPasswordsMatch = () => {\n if (secondPasswordInput.length !== 0 && passwordInput !== secondPasswordInput) {\n return 'Passwords do not match.';\n } else {\n return
;\n }\n };\n\n const handleAcceptOwnerRole = async () => {\n await dispatch(updateRole(PERSON_ROLE_OWNER));\n };\n\n const renderSetPasswordContent = () => {\n return (\n <>\n \n Owners are required to set a dedicated Sift password. Please set a password below.\n \n \n Passwords must be at least 8 characters long and include at least one lowercase letter,\n one uppercase letter, and one number.\n \n
\n \n \n Retype New Password\n \n \n
\n\n \n {checkPasswordsMatch()}\n \n
\n \n \n {isLoading(setPasswordStatus) ? <>Sending Request : <>Accept Role}\n \n
\n \n );\n };\n\n return (\n \n \n \n \n \n \n
\n \n You’ve been added as an Owner of Sift\n \n \n As an owner of Sift, you will have access to all administrative features and will be\n protected from being removed during a data sync.\n \n \n
\n {showSetPasswordForm ? (\n renderSetPasswordContent()\n ) : (\n <>\n \n Owners are required to set a dedicated Sift password. Click the below button if you\n would like to update your password.\n \n \n Update Password\n \n \n {isLoading(updateRoleStatus) ? <>Sending Request : <>Accept Role}\n \n \n )}\n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n wrapper: {\n maxWidth: 720,\n width: '100%',\n margin: '0 auto',\n padding: theme.spacing(4, 2, 2, 2),\n marginBottom: theme.spacing(8),\n },\n acceptRoleButton: {\n marginTop: theme.spacing(3),\n },\n updateRoleButton: {\n display: 'block',\n marginTop: theme.spacing(4),\n },\n pageTitle: {\n ...theme.typography.heading2,\n marginBottom: theme.spacing(4),\n },\n descriptions: {\n marginBottom: theme.spacing(2),\n },\n toolBar: {\n backgroundColor: theme.colors.sidebarGray,\n },\n appBar: {\n position: 'relative',\n },\n inputTwo: {\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n labelSize: {\n fontSize: 25,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.down('xs')]: {\n fontSize: 20,\n marginTop: theme.spacing(1),\n },\n },\n inputSize: {\n // TODO Pearl for later: improve theme.typography and add these\n fontSize: 28,\n minHeight: 70,\n paddingTop: theme.spacing(1),\n },\n passwordSection: {\n marginTop: theme.spacing(4),\n },\n passwordMessage: {\n marginTop: theme.spacing(0.5),\n marginBottom: theme.spacing(3.5),\n fontSize: 15,\n },\n textFields: {\n width: '60%',\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(4),\n },\n buttonRow: {\n '& > button': {\n marginRight: theme.spacing(),\n },\n },\n}));\n\nexport default AcceptOwnerRoleDialog;\n","import { defineFetch } from 'resift';\n\nconst makeGetAuthenticationInfo = defineFetch({\n displayName: 'Get Authentication Info',\n make: personId => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/people/${personId}/authentication-info`,\n }),\n }),\n});\n\nexport default makeGetAuthenticationInfo;\n","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport AcceptOwnerRoleDialog from './AcceptOwnerRoleDialog';\nimport makeGetAuthenticationInfo from 'fetches/makeGetAuthenticationInfo';\nimport { useData } from 'resift';\nimport _get from 'lodash/get';\n\nfunction Container() {\n const currentUserRole = useSelector(state => _get(state, 'authentication.person.account.role'));\n const currentUserId = useSelector(state => _get(state, 'authentication.person.account.id'));\n const dispatch = useDispatch();\n const getAuthenticationInfo = makeGetAuthenticationInfo(currentUserId);\n const authenticationInfo = useData(getAuthenticationInfo);\n\n useEffect(() => {\n dispatch(getAuthenticationInfo());\n }, [dispatch, getAuthenticationInfo]);\n\n if (!authenticationInfo) {\n return
Loading...
;\n }\n\n const { hasSetPassword } = authenticationInfo;\n\n return (\n \n );\n}\n\nexport default Container;\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  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/brandColors';\nimport classNames from 'classnames';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport ErrorRoundedIcon from '@material-ui/icons/ErrorRounded';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Divider from '@material-ui/core/Divider';\nimport Button from '@material-ui/core/Button';\n\nimport IconButton from '@material-ui/core/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 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: any) => {\n return {\n trialBanner: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 258,\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 color: brandColors.common.white,\n },\n divider: {\n backgroundColor: brandColors.secondaryPalette.sky,\n marginTop: theme.spacing(),\n marginBottom: theme.spacing(),\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, { useState } from 'react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\n\n// Components\nimport AppHeader from 'components/AppHeader';\nimport AppSidebar from 'components/AppSidebar';\nimport SidebarLayout from 'components/SidebarLayout';\nimport AcceptOwnerRoleDialog from 'components/AcceptOwnerRoleDialog';\nimport FreeTrialBanner from 'components/FreeTrialBanner/FreeTrialBanner';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\n/**\n * The CoreLayout is meant to be the top application\n * layout for almost every page. It contains all of our core\n * common components for the UI.\n */\nfunction CoreLayout({ classes, children }) {\n const [bannerOpen, setBannerOpen] = useState(true);\n const client = useSelector(state => state.client);\n const trialEndDate = client.trialEndDate\n ? moment(client.trialEndDate)\n : moment(client.assignedAt).add(14, 'days');\n const currentDay = moment(new Date());\n\n const trialDaysRemaining = trialEndDate.diff(currentDay, 'days');\n\n const handleClose = () => {\n setBannerOpen(false);\n };\n\n return (\n \n {client.isTrial && bannerOpen && trialDaysRemaining >= 0 && (\n \n )}\n \n \n \n
{children}
\n \n );\n}\n\nCoreLayout.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n};\n\nconst styles = theme => {\n return {\n root: {\n height: '100vh',\n display: 'flex',\n flexDirection: 'row',\n overflowY: 'hidden',\n overflowX: 'hidden',\n background: theme.colors.contentBgColor,\n },\n sidebarContent: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n overflow: 'hidden',\n },\n childrenContainer: {\n marginLeft: theme.overrides.AppSidebar.width,\n overflowX: 'auto',\n display: 'flex',\n flex: '1 1 auto',\n },\n };\n};\n\nexport default withStyles(styles)(CoreLayout);\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nfunction FullscreenIcon(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n\nexport default FullscreenIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nfunction FullscreenExitIcon(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n\nexport default FullscreenExitIcon;\n","import React, { useCallback } from 'react';\nimport _keyBy from 'lodash/keyBy';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { toggleBubbleOpen, setBubbleSeenByUser, State } from 'store/onboarding';\nimport useTaskList from 'components/onboarding/useTaskList';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport FullscreenIcon from 'components/Icons/Fullscreen';\nimport FullscreenExitIcon from 'components/Icons/FullscreenExit';\nimport TaskTitle from 'components/onboarding/TaskTitle';\n\nimport { LIST_SLIDE_KEY } from 'components/onboarding/constants';\n\nfunction BubbleHeading() {\n const classes = useStyles();\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n const taskList = useTaskList();\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n const { bubbleOpen: open, slideKey, bubbleSeenByUser } = onboardingState;\n const taskLookup = _keyBy(taskList, 'id');\n\n const handleToggleBubbleOpen = () => {\n dispatch(toggleBubbleOpen());\n !bubbleSeenByUser && dispatch(setBubbleSeenByUser());\n if (open) {\n analytics.track('Onboarding Overlay closed', {\n category: 'AD - Onboarding',\n });\n } else {\n analytics.track('Onboarding Overlay opened', {\n category: 'AD - Onboarding',\n });\n }\n };\n const renderHeading = useCallback(() => {\n if (slideKey === LIST_SLIDE_KEY) {\n return Onboarding Checklist;\n }\n\n return ;\n }, [slideKey]);\n\n return (\n
\n {!open && renderHeading()}\n \n {open ? (\n \n ) : (\n \n )}\n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: theme.spacing(2),\n },\n button: {\n marginLeft: 'auto',\n },\n}));\n\nexport default BubbleHeading;\n","import { defineFetch } from 'resift';\n\ninterface TaskData {\n isComplete: boolean;\n}\n\nexport default defineFetch({\n displayName: 'Update Onboarding Task',\n make: (taskId: string) => ({\n key: [],\n request: (data: TaskData) => ({ http }: any) =>\n http({\n method: 'PUT',\n route: `/onboarding-tasks/${taskId}`,\n data,\n }),\n }),\n});\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useDispatch, useSelector } from 'react-redux';\nimport getOnboardingTasks from 'fetches/getOnboardingTasks';\nimport makeUpdateOnboardingTask from 'fetches/makeUpdateOnboardingTask';\nimport { toggleTaskCompletion, setSlideKey, State } from 'store/onboarding';\nimport useTask from 'components/onboarding/useTask';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Button from '@material-ui/core/Button';\nimport Divider from '@material-ui/core/Divider';\n\nimport { LIST_SLIDE_KEY, CHEERS_SLIDE_KEY } from 'components/onboarding/constants';\n\nfunction TaskDetailHeading() {\n const classes = useStyles();\n const analytics = useAnalytics();\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n const taskToShow = useTask();\n const taskIdInFocus = onboardingState.taskIdInFocus;\n const slideKey = onboardingState.slideKey;\n const isCelebrating = slideKey === CHEERS_SLIDE_KEY;\n\n if (!taskToShow) {\n return null;\n }\n\n const dispatch = useDispatch();\n\n const handleBackToList = () => {\n dispatch(setSlideKey(LIST_SLIDE_KEY));\n dispatch(getOnboardingTasks());\n };\n\n const handleBackToTaskDetail = () => {\n // @ts-ignore\n dispatch(setSlideKey(taskIdInFocus));\n };\n\n const { id: taskId, categoryId, isComplete, allowManualComplete } = taskToShow;\n\n const updateTask = makeUpdateOnboardingTask(taskId);\n\n const handleToggleTaskCompletion = () => {\n dispatch(updateTask({ isComplete: !isComplete }));\n dispatch(toggleTaskCompletion(categoryId, taskId));\n\n if (!isComplete) {\n dispatch(setSlideKey(CHEERS_SLIDE_KEY));\n analytics.track('Onboarding Step Marked complete', {\n category: 'AD - Onboarding',\n label: taskToShow.title,\n });\n } else {\n // @ts-ignore\n dispatch(setSlideKey(taskIdInFocus));\n analytics.track('Onboarding Step Marked incomplete', {\n category: 'AD - Onboarding',\n label: taskToShow.title,\n });\n }\n };\n\n return (\n <>\n
\n {isCelebrating ? (\n \n ) : (\n \n )}\n {allowManualComplete && (\n \n Mark {isComplete ? 'Incomplete' : 'Complete'}\n \n )}\n
\n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n buttonContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n paddingTop: theme.spacing(0.32),\n paddingBottom: theme.spacing(0.25),\n },\n backButton: {\n ...theme.typography.overline,\n paddingLeft: theme.spacing(0.25),\n paddingRight: theme.spacing(0.25),\n },\n divider: {\n width: '100%',\n marginLeft: 0,\n },\n button: {\n paddingLeft: theme.spacing(0.25),\n paddingRight: theme.spacing(0.25),\n },\n}));\n\nexport default TaskDetailHeading;\n","import React, { useEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useTask from 'components/onboarding/useTask';\n\nimport Slide from '@material-ui/core/Slide';\nimport TaskSummary from 'components/onboarding/TaskSummary';\nimport TaskDetailHeading from 'components/onboarding/TaskDetailHeading';\n\nfunction TaskDetail() {\n const classes = useStyles();\n const taskToShow = useTask();\n const [slideIn, setSlideIn] = React.useState(false);\n\n useEffect(() => {\n setSlideIn(true);\n }, []);\n\n if (!taskToShow) {\n return null;\n }\n\n const { fullDescription } = taskToShow;\n\n return (\n <>\n
\n \n \n
\n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n stickyHeader: {\n position: 'sticky',\n top: 49.5,\n backgroundColor: theme.palette.common.white,\n zIndex: theme.zIndex.appBar,\n },\n fullDescription: {\n ...theme.typography.body2,\n maxWidth: 330,\n paddingLeft: theme.spacing(4.75),\n '& h5': {\n ...theme.typography.h5,\n marginTop: theme.spacing(),\n marginBottom: theme.spacing(0.5),\n },\n '& h6': {\n ...theme.typography.h6,\n // @ts-ignore\n color: theme.colors.gray2,\n marginTop: theme.spacing(0.5),\n marginBottom: theme.spacing(),\n '& a': {\n textDecoration: 'underline',\n color: 'inherit',\n },\n },\n '& p': {\n marginBottom: theme.spacing(2.5),\n },\n '& b': {\n // @ts-ignore\n fontWeight: theme.typography.fontWeight.semiBold,\n },\n '& a': {\n textDecoration: 'underline',\n color: theme.palette.secondary.main,\n },\n '& ol': {\n paddingInlineStart: `${theme.spacing(2.5)}px`,\n marginBottom: theme.spacing(2.5),\n },\n '& ol > li': {\n listStyleType: 'decimal !important',\n },\n '& ul': {\n paddingInlineStart: `${theme.spacing(2.5)}px`,\n marginBottom: theme.spacing(2.5),\n },\n '& ul > li': {\n listStyleType: 'disc !important',\n },\n },\n}));\n\nexport default TaskDetail;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { setSlideKey } from 'store/onboarding';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\nimport getOnboardingTasks from 'fetches/getOnboardingTasks';\nimport useTask from 'components/onboarding/useTask';\n\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport TaskDetailHeading from 'components/onboarding/TaskDetailHeading';\n\nfunction CompletionCheers() {\n const classes = useStyles();\n const dispatch = useDispatch();\n const taskToShow = useTask();\n\n if (!taskToShow) {\n return null;\n }\n\n const handleBackToList = () => {\n dispatch(setSlideKey('list'));\n dispatch(getOnboardingTasks());\n };\n\n return (\n <>\n \n
\n
\n \n Congrats you have completed “{taskToShow.title}”!\n \n \n \n
\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 400,\n },\n container: {\n width: 258,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n headline: {\n // @ts-ignore\n ...theme.typography.h5Semibold,\n textAlign: 'center',\n },\n checkIcon: {\n fontSize: 120,\n margin: theme.spacing(5.5),\n },\n checked: {\n color: theme.palette.success.main,\n },\n}));\n\nexport default CompletionCheers;\n","import React, { useEffect } from 'react';\nimport { setSlideKey, State } from 'store/onboarding';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router';\n\nimport useTaskList from 'components/onboarding/useTaskList';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Paper from '@material-ui/core/Paper';\nimport Divider from '@material-ui/core/Divider';\nimport BubbleHeading from 'components/onboarding/BubbleHeading';\nimport Checklist from 'components/onboarding/Checklist';\nimport TaskDetail from 'components/onboarding/TaskDetail';\nimport CelebrationCheers from 'components/onboarding/CompletionCheers';\n\nimport { LIST_SLIDE_KEY, CHEERS_SLIDE_KEY } from 'components/onboarding/constants';\n\nfunction getBubbleComponent(slideKey: string) {\n if (slideKey === LIST_SLIDE_KEY) {\n return ;\n }\n\n if (slideKey === CHEERS_SLIDE_KEY) {\n return ;\n }\n\n return ;\n}\n\nfunction Bubble() {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const taskList = useTaskList();\n const location = useLocation();\n\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n const onScreenTask = taskList && taskList.find(t => location.pathname.includes(t.pageStartUrl));\n const { bubbleOpen: open, slideKey, prevSlideKey } = onboardingState;\n\n useEffect(() => {\n const onScreenTaskId = onScreenTask && onScreenTask.id;\n\n if (onScreenTaskId && onScreenTaskId !== prevSlideKey) {\n dispatch(setSlideKey(onScreenTaskId));\n }\n }, [location.pathname]);\n\n const Component: React.ReactNode = getBubbleComponent(slideKey);\n\n return (\n \n
\n \n \n
\n {open && (\n
\n {Component}\n
\n )}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n position: 'fixed',\n right: theme.spacing(),\n bottom: theme.spacing(),\n width: 400,\n // @ts-ignore\n zIndex: theme.zIndex.surface,\n },\n stickyHeader: {\n position: 'sticky',\n top: 0,\n backgroundColor: theme.palette.common.white,\n zIndex: theme.zIndex.appBar,\n },\n bubbleOpen: {\n height: 500,\n overflow: 'auto',\n },\n divider: {\n marginLeft: 0,\n width: '100%',\n },\n content: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n },\n}));\n\nexport default Bubble;\n","import React, { memo, useEffect } from 'react';\nimport { createBrowserHistory as createHistory } from 'history';\nimport { Router as ReactRouter, Route, Switch, Redirect } from 'react-router';\nimport { useDispatch } from 'react-redux';\n\nimport { changeLocation } from 'store/location';\nimport useAnalytics from 'helpers/useAnalytics';\nimport CoreLayout from 'components/Layouts/CoreLayout';\nimport Bubble from 'components/onboarding/Bubble';\n\nimport routes from './routes';\n\nconst history = createHistory();\n\nexport const HelpArticleLinkContext = React.createContext();\nexport const HelpArticleLinkTextContext = React.createContext();\n\nconst routeElems =\n routes &&\n routes.map((route, index) => (\n {\n return (\n \n \n \n \n \n );\n }}\n />\n ));\n\nfunction Router() {\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n\n useEffect(() => {\n history.listen(({ pathname }) => {\n analytics.page(pathname);\n });\n\n const unlisten = history.listen(location => {\n dispatch(changeLocation(location));\n });\n\n return unlisten;\n }, [dispatch]);\n\n return (\n \n \n \n \n {routeElems}\n \n \n \n \n );\n}\n\nexport default memo(Router);\n","import * as React from 'react';\nconst GoogleWorkspaceLogo = () => (\n \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 GoogleWorkspaceLogo;\n","import * as React from 'react';\n\nconst DemoDataLogo = () => (\n \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 DemoDataLogo;\n","import React from 'react';\nimport AzureLogo from 'components/Icons/sources/Azure';\nimport CSVLogo from 'components/Icons/sources/CSV';\nimport GoogleWorkspaceLogo from 'components/Icons/sources/GoogleWorkspaceLogo';\n\nimport * as Types from 'pages/Directory/typings';\nimport DemoDataLogo from 'components/Icons/sources/DemoDataLogo';\n\nconst sourceData = {\n csv: {\n type: 'csv' as Types.SourceType,\n title: 'Upload a CSV',\n description:\n 'Quickly and easily upload a CSV file from any external data source like an HR system, or create one using our CSV template. Optionally set up an SFTP integration to automate the process.',\n displayName: 'the CSV file',\n uploadCopy: (\n <>\n Either by using our CSV template below, or by using a direct export from your organization’s\n system of record (HRIS, HCM, Active Directory, etc), upload a file including your people\n data that you’d like to import to Sift. The first row in the file should be a header row\n naming each attribute, and each subsequent row should represent a single person.\n \n ),\n logo: ,\n },\n 'azure-active-directory': {\n type: 'azure-active-directory' as Types.SourceType,\n title: 'Microsoft Azure Active Directory',\n description: `Sift connects to Azure Active Directory via Microsoft Graph to keep data consistently up to date with that in your Microsoft ecosystem. Administrator access to Azure AD is required.`,\n displayName: 'Azure',\n header: 'Authorize Sift to Access Azure AD',\n subtitle: `You will be taken to a Microsoft website to authorize Sift to connect to Azure Active Directory. You will need an account that has access to read all Users and Groups in your organization.`,\n logo: ,\n },\n 'google-directory': {\n type: 'google-directory' as Types.SourceType,\n title: 'Google Workspace',\n description: `Sift connects to Google Workspace to keep data consistently up to date with that in your Google ecosystem. Administrator access to Google Workspace is required.`,\n displayName: 'Google',\n header: 'Authorize Sift to Access Google Workspace',\n subtitle: `You will be taken to a Google website to authorize Sift to connect. You will need an account that has access to read all Users in your organization.`,\n logo: ,\n },\n 'demo-data': {\n type: 'demo-data' as Types.SourceType,\n title: 'Use Demo Data',\n description: `Explore Sift features risk-free with Demo Data. Import your own data when you're ready to dive deeper.`,\n displayName: '',\n header: '',\n subtitle: '',\n logo: ,\n },\n};\n\nexport default sourceData;\n","import { HTTPVerb } from '@sift/resift/redux/DataService';\nimport dataServiceActionHandlers from '@sift/resift/redux/reducers/dataServiceActionHandlers'; // A dependency for 'reducers.js'\nimport { isDebugEnabled, routeToDebugPage } from 'components/Router/Helper';\nimport config from 'config';\nimport _get from 'lodash';\n\n// Store\nimport { CONFIG_FETCH, FIELD_UPDATE } from 'store/configuration';\nimport { CATEGORY_FIELD_CREATE } from 'store/attribute';\n\nimport { AUTHENTICATION_PERSON_FETCH } from 'store/authentication';\nimport { SEARCH_PEOPLE_FETCH } from 'store/search';\nimport { PERSON_FETCH, SEND_INVITE, SEND_INVITE_ALL, SEND_RESETPASSWORD } from 'store/people';\n\nimport {\n SOURCE_CREATE,\n SOURCE_INIT,\n SOURCE_FETCH,\n SOURCE_SAVE,\n SOURCE_DELETE,\n SOURCE_PUBLIC_KEY_SAVE,\n SIGNED_UPLOAD_FETCH,\n SOURCE_FILE_CREATE,\n SOURCE_FILE_HEADINGS_FETCH,\n SOURCE_SYNC_QUEUE,\n SOURCE_SYNC_ENABLE,\n SOURCE_PRIMARY_MAPPING_UPDATE,\n SOURCE_MAPPINGS_SAVE,\n SOURCE_FILE_MAPPINGS_FETCH,\n} from 'store/sources';\nimport { FEATURE_UPDATE, CLIENT_UPDATE } from 'store/client';\nimport {\n DIRECTORIES_FETCH,\n DIRECTORY_FETCH,\n DIRECTORY_CREATE,\n DIRECTORY_DELETE,\n DIRECTORY_SAVE,\n} from 'store/directories';\n\nimport { THEMES_CREATE_FETCH, THEMES_GET_ALL_FETCH } from 'store/themes';\n\nimport { GROUPS_FETCH } from 'pages/Source/reducer';\n\nimport {\n INVITES_TEMPLATE_FETCH,\n INVITES_TEMPLATE_UPDATE,\n INVITES_TEMPLATE_EMAIL_TEST,\n} from 'pages/Invites/reducer';\n\nimport { SIFT_BOT_FETCH, SIFT_BOT_UPDATE } from 'store/siftBot';\n\nexport const unauthorizedHandler = (next, action, authState) => {\n const handler = _get(action, ['dataServiceHandler'], {});\n\n if (handler.hasOwnProperty('authenticationRequired') && !handler.authenticationRequired) {\n return false;\n }\n\n // this prevents development environment from redirecting\n if (isDebugEnabled()) {\n routeToDebugPage();\n return false;\n }\n\n const subdomain = window.location.hostname.split('.')[0];\n\n if (getQueryVariable('samlRedirect') === 'true') {\n window.location.href = `${\n config.LOGIN\n }/api/login/${subdomain}/saml?redirectTo=${encodeURIComponent(\n window.location.pathname + window.location.search,\n )}`;\n } else {\n window.location.href = `${config.LOGIN}/login?redirectTo=${encodeURIComponent(\n window.location.pathname + window.location.search,\n )}`;\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 [FEATURE_UPDATE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n return 'client/features';\n },\n },\n [AUTHENTICATION_PERSON_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'people/me',\n },\n [CONFIG_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return `configurations/${action.payload.configType}?returnDisabledFields=true`;\n },\n },\n [FIELD_UPDATE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n const { field } = action.payload;\n\n return `fields/${field.id}`;\n },\n },\n [CATEGORY_FIELD_CREATE]: {\n httpMethod: HTTPVerb.POST,\n route: (authentication, action) => {\n return `fields`;\n },\n },\n [SEARCH_PEOPLE_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return 'search/users';\n },\n },\n [PERSON_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return 'people/' + action.payload.personId;\n },\n },\n\n [SEND_INVITE]: {\n httpMethod: HTTPVerb.POST,\n route: 'people/invite',\n },\n [SEND_INVITE_ALL]: {\n httpMethod: HTTPVerb.POST,\n route: 'people/invite/all',\n },\n [SEND_RESETPASSWORD]: {\n httpMethod: HTTPVerb.POST,\n route: (authentication, action) => {\n return `people/${action.payload.id}/resetpassword`;\n },\n },\n [DIRECTORIES_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'directories',\n },\n [DIRECTORY_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return `directories/${action.payload.id}`;\n },\n },\n [DIRECTORY_CREATE]: {\n httpMethod: HTTPVerb.POST,\n route: 'directories',\n },\n [DIRECTORY_DELETE]: {\n httpMethod: HTTPVerb.DELETE,\n route: (authentication, action) => {\n return `directories/${action.payload.id}`;\n },\n },\n [DIRECTORY_SAVE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n return `directories/${action.payload.data.id}`;\n },\n },\n [SOURCE_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return `sources/${action.payload.sourceId}`;\n },\n },\n [SOURCE_SAVE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n return `sources/${action.payload.id}`;\n },\n },\n [SOURCE_MAPPINGS_SAVE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n return `sources/${action.payload.id}/mappings`;\n },\n },\n [GROUPS_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `sources/${action.payload.id}/groups`;\n },\n },\n\n [CLIENT_UPDATE]: {\n httpMethod: HTTPVerb.PUT,\n route: 'client',\n },\n [SOURCE_CREATE]: {\n httpMethod: HTTPVerb.POST,\n route: (authentication, action) => {\n return `sources`;\n },\n },\n [SOURCE_INIT]: {\n httpMethod: HTTPVerb.POST,\n route: (authentication, action) => {\n return `sources/${action.payload.id}/initialize`;\n },\n },\n [SOURCE_DELETE]: {\n httpMethod: HTTPVerb.DELETE,\n route: (authentication, action) => {\n return `sources/${action.payload.id}`;\n },\n },\n [SOURCE_PUBLIC_KEY_SAVE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n return `sources/${action.payload.id}/fields/public-key`;\n },\n },\n [INVITES_TEMPLATE_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'communications/email/templates/invite',\n },\n [INVITES_TEMPLATE_UPDATE]: {\n httpMethod: HTTPVerb.PUT,\n route: 'communications/email/templates/invite',\n },\n [INVITES_TEMPLATE_EMAIL_TEST]: {\n httpMethod: HTTPVerb.POST,\n route: 'communications/email/templates/invite/test',\n },\n [SIGNED_UPLOAD_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'source-files/sign-upload',\n },\n [SOURCE_FILE_HEADINGS_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (auth, action) => `source-files/${action.payload.id}/headers`,\n },\n [SOURCE_FILE_CREATE]: {\n httpMethod: HTTPVerb.POST,\n route: 'source-files',\n },\n [SOURCE_FILE_MAPPINGS_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (authentication, action) => {\n return `source-files/${action.payload.sourceFileId}/mappings`;\n },\n },\n [SOURCE_SYNC_ENABLE]: {\n httpMethod: HTTPVerb.PUT,\n route: (authentication, action) => {\n return `sources/${action.payload.sourceId}/sync-enabled`;\n },\n },\n [SOURCE_SYNC_QUEUE]: {\n httpMethod: HTTPVerb.POST,\n route: (authentication, action) => {\n return `sources/${action.payload.sourceId}/initialize-sync`;\n },\n },\n [SOURCE_PRIMARY_MAPPING_UPDATE]: {\n httpMethod: HTTPVerb.POST,\n route: (authentication, action) => {\n return `sources/${action.payload.sourceId}/primary-mapping`;\n },\n },\n [SIFT_BOT_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'sift-bot',\n },\n [SIFT_BOT_UPDATE]: {\n httpMethod: HTTPVerb.PUT,\n route: 'sift-bot',\n },\n [THEMES_CREATE_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: 'themes',\n },\n [THEMES_GET_ALL_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: 'themes',\n },\n};\n\nexport default DataServiceActionHandlers;\n","import { MockError, MockSuccess, waitRand } from '@sift/resift/redux/MockDataService';\n// import delay from 'delay';\n\nexport const mockDataServiceHandlers = {\n USER_FETCH: async action => {\n // waitRand is just a random delay between 1234ms and 1934ms\n // this simulates a load time from the API so you can test\n // load states\n await waitRand();\n\n // testing logic to be able to test success or error\n if (action.payload.id === 'abc123') {\n return new MockSuccess({\n id: action.payload.id,\n created: new Date(),\n displayName: 'Eric Harrison',\n });\n } else {\n return new MockError(407, `User not found: ${action.payload.id}`);\n }\n },\n};\n\nexport default mockDataServiceHandlers;\n","import * as Sentry from '@sentry/browser';\nimport { createDataService, createHttpService } from 'resift';\nimport getAuthToken from '@sift/resift/getAuthToken';\n\nimport config from 'config';\nimport { unauthorizedHandler } from 'store/dataServiceActionHandlers';\n\nconst http = createHttpService({\n getHeaders: () => ({\n Authorization: `Bearer ${getAuthToken()}`,\n }),\n prefix: `${config.API_ENV}/api`,\n});\n\nexport default createDataService({\n services: { http },\n onError: err => {\n if (err.status === 401) {\n unauthorizedHandler();\n return;\n }\n\n Sentry.captureException(err);\n throw err;\n },\n});\n","import createStore from './createStore';\nexport default createStore();\n","import { applyMiddleware, compose, createStore } from 'redux';\nimport Config from 'config';\n\n// Reducers\nimport makeRootReducer from './reducers';\n\n// Middleware\nimport thunk from 'redux-thunk';\nimport DataService from '@sift/resift/redux/DataService';\nimport MockDataService, { withoutMockedActions } from '@sift/resift/redux/MockDataService';\nimport DataServiceActionHandlers, { unauthorizedHandler } from './dataServiceActionHandlers';\nimport mockDataServiceHandlers from './dataServiceActionHandlers/mockHandlers.js';\nimport dataServiceMiddleware from './dataServiceMiddleware';\n\nexport default (initialState = {}) => {\n // ======================================================\n // Middleware Configuration\n // ======================================================\n const SiftDataService = new DataService(\n withoutMockedActions(DataServiceActionHandlers, mockDataServiceHandlers),\n unauthorizedHandler,\n );\n\n const mockDataService = new MockDataService(mockDataServiceHandlers);\n\n // TODO: add if process.env.DEVELOPMENT\n\n const middleware = [\n thunk,\n dataServiceMiddleware,\n SiftDataService.middleware,\n mockDataService.middleware,\n ];\n\n // ======================================================\n // Store Enhancers\n // ======================================================\n const enhancers = [];\n\n let composeEnhancers = compose;\n\n if (Config.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 = createStore(\n makeRootReducer(),\n initialState,\n composeEnhancers(applyMiddleware(...middleware), ...enhancers),\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 return store;\n};\n","import _isEqual from 'lodash/isEqual';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _set from 'lodash/set';\nimport { Status, States } from '@sift/resift/models/Status';\nimport {\n SEND_INVITE,\n SEND_INVITE_SUCCESS,\n SEND_INVITE_ERROR,\n SEND_INVITE_ALL,\n SEND_INVITE_ALL_SUCCESS,\n SEND_INVITE_ALL_ERROR,\n} from 'store/people';\nimport { LOCATION_CHANGE } from 'store/location';\n\nexport const INVITES_TABLE_USER_SELECT = 'INVITES_TABLE_USER_SELECT';\nexport const INVITES_TABLE_BULK_SELECT = 'INVITES_TABLE_BULK_SELECT';\n\nexport const INVITES_BULK_DIALOG_OPEN = 'INVITES_BULK_DIALOG_OPEN';\nexport const INVITES_BULK_DIALOG_CLOSE = 'INVITES_BULK_DIALOG_CLOSE';\nexport const INVITES_BULK_DIALOG_COMPLETE = 'INVITES_BULK_DIALOG_COMPLETE';\nexport const INVITES_COMPLETE_DIALOG_CLOSE = 'INVITES_COMPLETE_DIALOG_CLOSE';\n\nexport const INVITES_FORM_UPDATE = 'INVITES_FORM_UPDATE';\nexport const INVITES_FORM_RESET = 'INVITES_FORM_RESET';\n\nexport const INVITES_SETTINGS_UPDATE = 'INVITES_SETTINGS_UPDATE';\n\nexport const INVITES_TEMPLATE_FETCH = 'INVITES_TEMPLATE_FETCH';\nexport const INVITES_TEMPLATE_FETCH_SUCCESS = 'INVITES_TEMPLATE_FETCH_SUCCESS';\nexport const INVITES_TEMPLATE_FETCH_ERROR = 'INVITES_TEMPLATE_FETCH_ERROR';\n\nexport const INVITES_TEMPLATE_RESET = 'INVITES_TEMPLATE_RESET';\n\nexport const INVITES_TEMPLATE_UPDATE = 'INVITES_TEMPLATE_UPDATE';\nexport const INVITES_TEMPLATE_UPDATE_SUCCESS = 'INVITES_TEMPLATE_UPDATE_SUCCESS';\nexport const INVITES_TEMPLATE_UPDATE_ERROR = 'INVITES_TEMPLATE_UPDATE_ERROR';\n\nexport const INVITES_TEMPLATE_EMAIL_TEST = 'INVITES_TEMPLATE_EMAIL_TEST';\nexport const INVITES_TEMPLATE_EMAIL_TEST_SUCCESS = 'INVITES_TEMPLATE_EMAIL_TEST_SUCCESS';\nexport const INVITES_TEMPLATE_EMAIL_TEST_ERROR = 'INVITES_TEMPLATE_EMAIL_TEST_ERROR';\n\nfunction toggleStatus(key, statusState) {\n return (state, action) => {\n return {\n ...state,\n [key]: new Status(statusState),\n };\n };\n}\n\nfunction createSelectedById(selectedUsers) {\n return selectedUsers.reduce(\n (selectedById, user) => ({\n ...selectedById,\n [user.id]: user,\n }),\n {},\n );\n}\n\nexport function updateForm(field, value) {\n return {\n type: INVITES_FORM_UPDATE,\n payload: { field, value },\n };\n}\n\nexport function resetForm() {\n return {\n type: INVITES_FORM_RESET,\n };\n}\n\nexport function resetTemplate() {\n return {\n type: INVITES_TEMPLATE_RESET,\n };\n}\n\nexport function selectUser(user) {\n return {\n type: INVITES_TABLE_USER_SELECT,\n payload: user,\n };\n}\n\nexport function selectAllUsers(users) {\n return {\n type: INVITES_TABLE_BULK_SELECT,\n payload: users,\n };\n}\n\nexport function openBulkDialog(users) {\n return {\n type: INVITES_BULK_DIALOG_OPEN,\n payload: {\n users,\n },\n };\n}\n\nexport function closeBulkDialog() {\n return {\n type: INVITES_BULK_DIALOG_CLOSE,\n };\n}\n\nexport function completeBulkDialog(count) {\n return {\n type: INVITES_BULK_DIALOG_COMPLETE,\n payload: count,\n };\n}\n\nexport function closeCompleteDialog() {\n return {\n type: INVITES_COMPLETE_DIALOG_CLOSE,\n };\n}\n\nexport function fetchInviteTemplate() {\n return {\n type: INVITES_TEMPLATE_FETCH,\n payload: {},\n };\n}\n\nexport function updateEmailTemplate(form) {\n return {\n type: INVITES_TEMPLATE_UPDATE,\n payload: {\n data: {\n model: form,\n },\n },\n };\n}\n\nexport function testEmailTemplate(template) {\n return {\n type: INVITES_TEMPLATE_EMAIL_TEST,\n payload: {\n data: {\n model: template,\n },\n },\n };\n}\n\nexport function updateInviteSettings(inviteSettings) {\n return {\n type: INVITES_SETTINGS_UPDATE,\n payload: inviteSettings,\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [INVITES_TABLE_USER_SELECT]: (state, action) => {\n const selectedUserReference = state.selectedUsers[action.payload.id];\n\n return {\n ...state,\n selectedUsers: {\n ...state.selectedUsers,\n [action.payload.id]: !selectedUserReference ? action.payload : undefined,\n },\n allSelected: false,\n };\n },\n [INVITES_TABLE_BULK_SELECT]: (state, action) => {\n return {\n ...state,\n selectedUsers: state.allSelected ? {} : createSelectedById(action.payload),\n allSelected: !state.allSelected,\n };\n },\n [LOCATION_CHANGE]: state => {\n return {\n ...state,\n selectedUsers: {},\n allSelected: false,\n };\n },\n [INVITES_BULK_DIALOG_OPEN]: (state, action) => {\n return {\n ...state,\n users: action.payload.users || state.selectedUsers,\n sendDialogOpen: true,\n };\n },\n [INVITES_BULK_DIALOG_CLOSE]: (state, action) => {\n return {\n ...state,\n sendDialogOpen: false,\n };\n },\n [INVITES_BULK_DIALOG_COMPLETE]: (state, action) => {\n return {\n ...state,\n sendDialogOpen: false,\n successDialogOpen: true,\n successCount: action.payload,\n };\n },\n [INVITES_COMPLETE_DIALOG_CLOSE]: (state, action) => {\n return {\n ...state,\n successDialogOpen: false,\n };\n },\n [INVITES_FORM_UPDATE]: (state, action) => {\n let newForm = _cloneDeep(state.form);\n\n newForm = _set(newForm, action.payload.field, action.payload.value);\n\n return {\n ...state,\n form: newForm,\n isDirty: !_isEqual(newForm, state.initialFormState),\n };\n },\n [INVITES_FORM_RESET]: (state, action) => {\n return {\n ...state,\n form: _cloneDeep(state.initialFormState),\n isDirty: false,\n };\n },\n [INVITES_TEMPLATE_RESET]: (state, action) => {\n const newForm = {\n ...state.form,\n template: state.initialFormState.template,\n };\n\n return {\n ...state,\n form: {\n ...state.form,\n template: state.initialFormState.template,\n },\n isDirty: !_isEqual(newForm, state.initialFormState),\n };\n },\n [INVITES_TEMPLATE_FETCH]: (state, action) => {\n return {\n ...state,\n templateStatus: new Status(States.LOADING),\n };\n },\n [INVITES_TEMPLATE_FETCH_SUCCESS]: (state, action) => {\n const newInitialFormState = {\n ..._cloneDeep(state.initialFormState),\n template: action.payload.data.model,\n };\n\n return {\n ...state,\n defaultTemplate: action.payload.data._defaultModel,\n initialFormState: newInitialFormState,\n form: {\n ...state.form,\n template: action.payload.data.model,\n },\n templateStatus: new Status(States.NORMAL),\n };\n },\n [INVITES_TEMPLATE_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n };\n },\n [INVITES_TEMPLATE_UPDATE]: (state, action) => {\n return {\n ...state,\n templateStatus: new Status(States.LOADING),\n };\n },\n [INVITES_TEMPLATE_UPDATE_SUCCESS]: (state, action) => {\n const newForm = {\n ...state.form,\n template: action.payload.data.model,\n };\n\n return {\n ...state,\n form: newForm,\n initialFormState: { ...newForm },\n isDirty: false,\n templateStatus: new Status(States.NORMAL),\n };\n },\n [INVITES_SETTINGS_UPDATE]: (state, action) => {\n return {\n ...state,\n form: {\n ...state.form,\n settings: {\n ...action.payload,\n },\n },\n initialFormState: {\n ...state.initialFormState,\n settings: {\n ...action.payload,\n },\n },\n isDirty: false,\n };\n },\n [SEND_INVITE]: toggleStatus('inviteStatus', States.LOADING),\n [SEND_INVITE_SUCCESS]: toggleStatus('inviteStatus', States.NORMAL),\n [SEND_INVITE_ERROR]: toggleStatus('inviteStatus', States.ERROR),\n [SEND_INVITE_ALL]: toggleStatus('inviteStatus', States.LOADING),\n [SEND_INVITE_ALL_SUCCESS]: toggleStatus('inviteStatus', States.NORMAL),\n [SEND_INVITE_ALL_ERROR]: toggleStatus('inviteStatus', States.ERROR),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {\n selectedUsers: {},\n allSelected: false,\n sendDialogOpen: false,\n successDialogOpen: false,\n users: 0,\n successCount: 0,\n initialFormState: {\n template: undefined,\n },\n form: {\n template: undefined,\n },\n defaultTemplate: null,\n isDirty: false,\n templateStatus: new Status(States.UNKNOWN),\n inviteStatus: new Status(States.UNKNOWN),\n};\n\nexport default function InvitesReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import { defineFetch } from 'resift';\n\nconst makeGetLatestSourceFile = defineFetch({\n displayName: 'Gets latest source file from source id',\n make: (sourceId, type = 'data') => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/source-files/latest?sourceId=${sourceId}&type=${type}`,\n }),\n }),\n});\n\nexport default makeGetLatestSourceFile;\n","import {\n AZURE_SOURCE_TYPE_KEY,\n CSV_SOURCE_TYPE_KEY,\n GOOGLE_SOURCE_TYPE_KEY,\n LDAP_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\n\ntype SourceType = 'csv' | 'azure-active-directory' | 'ldap' | 'google-directory' | string;\n\nconst currentSources = {\n CSV: CSV_SOURCE_TYPE_KEY,\n AZURE: AZURE_SOURCE_TYPE_KEY,\n LDAP: LDAP_SOURCE_TYPE_KEY,\n GOOGLE: GOOGLE_SOURCE_TYPE_KEY,\n};\n\nexport default {\n ...currentSources,\n isCSV: (sourceType: SourceType) => sourceType === currentSources.CSV,\n isAzure: (sourceType: SourceType) => sourceType === currentSources.AZURE,\n isLDAP: (sourceType: SourceType) => sourceType === currentSources.LDAP,\n isGoogle: (sourceType: SourceType) => sourceType === currentSources.GOOGLE,\n isOath: (sourceType: SourceType) =>\n sourceType === currentSources.GOOGLE || sourceType === currentSources.AZURE,\n};\n","import config from 'config';\nimport _last from 'lodash/last';\n\nimport { Status, States } from '@sift/resift/models/Status';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const AUTHENTICATION_PERSON_FETCH = 'AUTHENTICATION_PERSON_FETCH';\nexport const AUTHENTICATION_PERSON_FETCH_SUCCESS = 'AUTHENTICATION_PERSON_FETCH_SUCCESS';\nexport const AUTHENTICATION_PERSON_FETCH_ERROR = 'AUTHENTICATION_PERSON_FETCH_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport function fetchAuthenticatedPerson() {\n return {\n type: AUTHENTICATION_PERSON_FETCH,\n payload: {},\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [AUTHENTICATION_PERSON_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [AUTHENTICATION_PERSON_FETCH_SUCCESS]: (state, action) => {\n const person = action.payload.data;\n\n return {\n ...state,\n person,\n status: new Status(States.NORMAL),\n };\n },\n [AUTHENTICATION_PERSON_FETCH_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 api: {\n path: config.API_ENV,\n token: getAuthToken(),\n login: config.LOGIN,\n },\n person: {},\n status: new Status(States.LOADING),\n};\n\nfunction getAuthToken() {\n let subdomain = window.location.hostname.split('.')[0];\n\n let regexpString = `( |^)auth_token_${subdomain}=([^ ;]+)`;\n let subdomainTokenMatch = document.cookie.match(regexpString);\n\n if (subdomainTokenMatch) {\n return _last(subdomainTokenMatch);\n }\n\n let legacyTokenMatch = document.cookie.match(/( |^)auth_token=([^ ;]+)/);\n\n return legacyTokenMatch ? _last(legacyTokenMatch) : '';\n}\n\nexport default function authenticationReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Global Config',\n share: {\n namespace: 'globalConfig',\n merge: (previous, next) => ({ ...previous, ...next }),\n },\n make: () => ({\n key: [],\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: '/configurations/global',\n query: { returnDisabledFields: true },\n }),\n }),\n});\n","import * as Sift from '@sift/types';\n\ninterface Options {\n excludeChildNameFields?: boolean;\n}\n\n// Returns whether a field should ever be returned as an option when configuring attribute list based settings\nexport default function isFieldValidConfigOption(field: Sift.Field, options: Options = {}) {\n // We should never present these as options. Need to blacklist for now since there's no intuitive way of filtering them out\n const CONFIG_OPTION_OBJECT_KEY_BLACKLIST = ['pronouns', 'inclusivePronouns', 'reportingPath'];\n\n const directParentFieldKey = field.objectKey.substring(0, field.objectKey.lastIndexOf('.'));\n\n // The field is a valid option if:\n // It is not blacklisted\n // AND\n // It is not a child field\n // OR\n // It is a direct child of the reachOutToMeFor attribute\n // OR\n // Its objectKey ends with `.name` (This is a not so great check that covers relevant child fields for now, we should re-think this eventually)\n return (\n !CONFIG_OPTION_OBJECT_KEY_BLACKLIST.includes(field.objectKey) &&\n (!field.objectKey.includes('.') ||\n directParentFieldKey === 'reachOutToMeFor' ||\n (!options.excludeChildNameFields && field.objectKey.endsWith('.name')))\n );\n}\n","import _flatten from 'lodash/flatten';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/onboarding';\n\nexport default function useTaskList() {\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n\n const { checkList } = onboardingState;\n\n return _flatten(checkList.map(c => c.tasks));\n}\n","// Models\nimport { Status, States } from '@sift/resift/models/Status';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const CONFIG_FETCH = 'CONFIG_FETCH';\nexport const CONFIG_FETCH_SUCCESS = 'CONFIG_FETCH_SUCCESS';\nexport const CONFIG_FETCH_ERROR = 'CONFIG_FETCH_ERROR';\n\nexport const FIELD_UPDATE = 'FIELD_UPDATE';\nexport const FIELD_UPDATE_SUCCESS = 'FIELD_UPDATE_SUCCESS';\nexport const FIELD_UPDATE_ERROR = 'FIELD_UPDATE_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\n/**\n * Get person\n *\n * @param {string} params person Id\n */\nexport function fetchConfig(configType) {\n return {\n type: CONFIG_FETCH,\n identifier: configType,\n payload: {\n configType,\n },\n };\n}\n\n/**\n * update an Entity Field\n *\n * @param {object} params field\n */\nexport function updateField(entityType, field) {\n return {\n type: FIELD_UPDATE,\n identifier: {\n entityType: entityType,\n fieldId: field.objectKey,\n },\n payload: {\n entityType: entityType,\n field: field,\n data: field,\n },\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [CONFIG_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n statuses: {\n ...state.statuses,\n [action.identifier]: new Status(States.LOADING | States.NORMAL),\n },\n };\n },\n [CONFIG_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n [action.identifier]: action.payload.data,\n status: new Status(States.NORMAL),\n statuses: {\n ...state.statuses,\n [action.identifier]: new Status(States.NORMAL),\n },\n };\n },\n [CONFIG_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n [FIELD_UPDATE]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [FIELD_UPDATE_SUCCESS]: (state, action) => {\n return {\n ...state,\n [action.identifier.entityType]: {\n ...state[action.identifier.entityType],\n fields: {\n ...state[action.identifier.entityType].fields,\n [action.identifier.fieldId]: action.payload.data,\n },\n },\n status: new Status(States.NORMAL),\n };\n },\n [FIELD_UPDATE_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 status: new Status(),\n statuses: {\n user: new Status(),\n global: new Status(),\n },\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 React from 'react';\nimport PropTypes from 'prop-types';\n\n// Style\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n display: 'flex',\n flex: '1 0 auto',\n flexDirection: 'column',\n minWidth: 1000,\n },\n content: {\n padding: `${theme.spacing(4)}px ${theme.spacing(6)}px`,\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n overflowY: 'auto',\n },\n container: {\n maxWidth: 1400,\n display: 'flex',\n flex: '1 0 auto',\n flexDirection: 'column',\n },\n});\n\nexport const PageContext = React.createContext();\n\n/**\n * Page\n */\nclass Page extends React.Component {\n static propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n // This is needed because on first render, 'this.pageToolbar' ref is undefined.\n this.setState({ mounted: true });\n }\n\n render() {\n const { children: childrenProp, classes } = this.props;\n const children = React.Children.toArray(childrenProp);\n\n return (\n \n
\n
\n
{children}
\n
\n
(this.pageToolbar = c)} />\n
\n \n );\n }\n}\n\nexport default withStyles(styles)(Page);\n","import { generatePath } from 'react-router';\nimport * as Routes from 'components/Router/routes';\n\n// Types\nimport { Route } from 'components/Router/types';\n\ninterface RoutesObject {\n [key: string]: any;\n}\n\n// A quick helper for making a route.\nexport default (route: Route | string, params?: any): string => {\n const routes = Routes as RoutesObject;\n\n let path;\n if (typeof route === 'string') path = routes[route].path;\n if (typeof route === 'object') path = route.path;\n\n return generatePath(path, params);\n};\n","import React, { PureComponent } from 'react';\n\nclass ToolbarSpacer extends PureComponent {\n render() {\n return
;\n }\n}\n\nexport default ToolbarSpacer;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst ExportIcon = props => (\n \n \n \n \n);\n\nexport default ExportIcon;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Button from '@material-ui/core/Button';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport ExportIcon from 'components/Icons/Export';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nclass ExportButton extends PureComponent {\n static propTypes = {\n formats: PropTypes.object,\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n open: false,\n openExports: false,\n };\n\n this.onOpen = this.onOpen.bind(this);\n this.onClose = this.onClose.bind(this);\n this.onExportJSON = this.onExportJSON.bind(this);\n this.onExportCSV = this.onExportCSV.bind(this);\n }\n\n onExportJSON(event, value) {\n window.location = this.props.formats.json;\n }\n\n onExportCSV(event, value) {\n window.location = this.props.formats.csv;\n }\n\n onOpen(event) {\n event.preventDefault();\n\n this.setState({\n openExports: true,\n anchorEl: event.currentTarget,\n });\n }\n\n onClose() {\n this.setState({\n openExports: false,\n });\n }\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n }\n >\n Export\n \n \n JSON \n CSV \n \n
\n );\n }\n}\n\nconst styles = theme => {\n return {\n root: {},\n button: {},\n exportIcon: {\n color: theme.palette.secondary.main,\n },\n };\n};\n\nexport default withStyles(styles)(ExportButton);\n","import { useContext } from 'react';\nimport AnalyticsContext from 'components/AnalyticsProvider/AnalyticsContext';\nimport _get 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 (_get(window, ['appState'])) {\n return {\n identify: _noop,\n track: _noop,\n page: _noop,\n };\n }\n\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 { createContext } from 'react';\n\nconst AnalyticsContext = createContext(null);\nAnalyticsContext.displayName = 'Analytics';\n\nexport default AnalyticsContext;\n","import brandColors from 'styles/brandColors';\n\n/**\n * Colors\n *\n * From: https://app.frontify.com/d/hJ06zBI7iZ1W/pulse-dashboard-style-guide\n */\n\nexport default {\n // (Note - Dylan) Added brand colors for more coverage in our theme object\n brandColors,\n\n // Material\n canvasColor: '#FFFFFF',\n secondaryTextColor: '#757575',\n contrastPrimary2Color: 'rgb(54, 28, 93)',\n hoverPrimary2Color: '#2e1b6c',\n\n // White/black\n white: '#fff',\n black: '#000',\n contentBgColor: '#f9fbfd',\n\n // Hover over color\n hoverGradient: '#f3f3f3',\n\n // 0% opacity background (used for overriding background colors)\n opacity0: 'rgba(255, 255, 255, 0)',\n\n gray: '#d3d3d3',\n lightestGray: '#f8fafb',\n lightGray: '#eee',\n counterLightGray: '#e8e8e8',\n\n grayBlue: '#F3F5F9',\n blue: '#6092df',\n darkBlue: '#4e6987',\n sidebarGray: '#18202c',\n\n green: '#5fc36b',\n frogGreen: '#7ed321',\n\n orange: '#ff930a',\n red: '#f15b5b',\n yellow: '#F9CF71',\n\n // opacity\n secondaryMainOpacity: 'rgba(41, 98, 255, 0.25)',\n\n // REDESIGN COLORS\n // Colors\n primary: '#60269E',\n lightPrimary: '#7F51B1',\n darkPrimary: '#431A6E',\n secondary: '#2962FF',\n lightSecondary: '#5381FF',\n darkSecondary: '#1C44B2',\n warning: '#F5A800',\n info: '#2962FF',\n success: '#61A60E',\n error: '#FF342C',\n divider: 'rgba(33, 33, 33, 0.08)',\n navDivider: 'rgba(255, 255, 255, 0.12)',\n\n // Typography\n primaryText: '#212121',\n gray1: '#666666',\n gray2: '#979797',\n navText: 'rgba(255, 255, 255, 0.7)',\n};\n","import _get from 'lodash/get';\nimport { defineFetch } from 'resift';\nimport { mergeLoading, mergeSuccess, mergeError } from '@sift/resift/redux/FetchUtils';\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SEARCH_PEOPLE_FETCH = 'SEARCH_PEOPLE_FETCH';\nexport const SEARCH_PEOPLE_FETCH_SUCCESS = 'SEARCH_PEOPLE_FETCH_SUCCESS';\nexport const SEARCH_PEOPLE_FETCH_ERROR = 'SEARCH_PEOPLE_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 function fetchSearchPeople(query, identifier) {\n return {\n type: SEARCH_PEOPLE_FETCH,\n identifier: identifier || 'search',\n payload: {\n query,\n },\n };\n}\n\nexport const makeHeadcountFetch = defineFetch({\n displayName: 'Get Headcount',\n make: () => ({\n key: [],\n request: () => async ({ http }) => {\n const data = await http({\n method: 'GET',\n route: '/search/people',\n });\n return _get(data, 'totalLength', 0);\n },\n }),\n});\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SEARCH_PEOPLE_FETCH]: (state, action) => mergeLoading(state, action),\n [SEARCH_PEOPLE_FETCH_SUCCESS]: (state, action) => mergeSuccess(state, action),\n [SEARCH_PEOPLE_FETCH_ERROR]: (state, action) => mergeError(state, action),\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport const initialState = {\n objects: {},\n fetches: {},\n};\n\nexport default function SearchReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import React, { useState } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport _first from 'lodash/first';\nimport _get from 'lodash/get';\n\n// Components\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';\n// @ts-ignore\nimport Dropzone from 'react-dropzone';\n\ninterface Props {\n hasError: boolean;\n errorText: string | React.ReactNode;\n onFileChange: (file: any) => void;\n maxSize?: number;\n accept?: string;\n viewClassName?: string;\n}\n\nfunction FileDrop({ viewClassName, onFileChange, hasError, errorText, maxSize, accept }: Props) {\n const classes = useStyles();\n const [file, setFile] = useState(undefined);\n const [fileName, setFileName] = useState(null);\n\n const handleDrop = (files: any[]) => {\n const newFile = _first(files);\n const newFileName = _get(newFile, 'name', null);\n setFile(newFile);\n setFileName(newFileName);\n onFileChange(newFile);\n };\n\n return (\n \n {!file && (\n
\n \n
\n Click to upload file or drag and drop files in this area.\n
\n
\n )}\n {file && !hasError && (\n
\n \n {fileName}\n
\n Click to select another file or drag and drop one into this area.\n
\n
\n )}\n {file && hasError && (\n
\n \n {fileName}\n
{errorText}
\n
\n )}\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n width: '100%',\n minHeight: 267,\n position: 'relative',\n color: '#8a8a8a',\n cursor: 'pointer',\n fontSize: 14,\n textAlign: 'center',\n overflow: 'hidden',\n },\n view: {\n minHeight: 267,\n backgroundColor: '#e2e2e2',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '4px',\n flexDirection: 'column',\n padding: 171,\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n '& > *:not(:last-child)': {\n marginBottom: theme.spacing(2),\n },\n },\n empty: {\n '&:hover $icon': {\n color: 'rgb(68, 138, 255)',\n },\n },\n success: {\n backgroundColor: '#e1f7f5',\n '& $icon': {\n color: '#00b59b',\n },\n },\n error: {\n backgroundColor: '#fdeaeb',\n color: '#f74f58',\n },\n rootDragOn: {\n '& $overlay': {\n display: 'block',\n },\n },\n overlay: {\n display: 'none',\n backgroundColor: '#84B1FF',\n opacity: '0.8',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n icon: {\n width: 84,\n height: 40,\n },\n input: {\n display: 'none',\n },\n lastFlexChild: {\n marginBottom: 0,\n },\n };\n});\n\nexport default FileDrop;\n","export { default } from './FileDrop';","import { Status, States } from '@sift/resift/models/Status';\nimport { RequestResolve } from '@sift/resift/redux/DataService';\n\nexport const initialState = {\n fetchGroupsResults: [],\n groupsStatus: new Status(),\n};\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const GROUPS_FETCH = 'GROUPS_FETCH';\nexport const GROUPS_FETCH_SUCCESS = 'GROUPS_FETCH_SUCCESS';\nexport const GROUPS_FETCH_ERROR = 'GROUPS_FETCH_ERROR';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\n\nexport function fetchGroups(q, id) {\n return {\n type: GROUPS_FETCH,\n identifier: 'search/groups',\n payload: {\n query: {\n q,\n },\n id,\n requestResolve: RequestResolve.CANCEL,\n },\n };\n}\n\n// ------------------------------------\n// Action Handlers\n// -----------------------------------\nconst ACTION_HANDLERS = {\n [GROUPS_FETCH]: (state, action) => {\n return {\n ...state,\n groupsStatus: new Status(States.LOADING),\n };\n },\n [GROUPS_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n groupsStatus: new Status(States.NORMAL),\n fetchGroupsResults: action.payload.data.results,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport default function sourceReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import { useEffect } from 'react';\nimport usePrevious from '@sift/resift/usePrevious';\nimport { useSnackbar } from 'notistack';\nimport getIsLoading from 'helpers/getIsLoading';\nimport getHasError from 'helpers/getHasError';\n\ninterface Args {\n status: any;\n successMessage?: string;\n errorMessage?: string;\n}\n\nfunction useFormSnackbar({\n status,\n successMessage = 'Settings have been updated.',\n errorMessage = 'There was an error submitting your changes. Please try again.',\n}: Args) {\n const { enqueueSnackbar } = useSnackbar();\n const prevStatus = usePrevious(status);\n\n useEffect(() => {\n if (getIsLoading(prevStatus) && !getIsLoading(status)) {\n if (getHasError(status)) {\n enqueueSnackbar(errorMessage, {\n variant: 'error',\n });\n } else {\n enqueueSnackbar(successMessage, { variant: 'success' });\n }\n }\n }, [status, prevStatus]);\n}\n\nexport default useFormSnackbar;\n","import React from 'react';\nimport compose from 'recompose/compose';\nimport { connect } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport { getFetch } from '@sift/resift/redux/FetchUtils';\nimport Fetch from '@sift/resift/models/Fetch';\n\nimport { fetchSource } from 'store/sources';\nimport { fetchDirectory } from 'store/directories';\nimport { Status } from '@sift/resift/models/Status/Status';\n\nconst sourceIdSelector = () => {\n // TODO (Jules): Find a better way to get the SourceId from the url.\n const paths = document.location.pathname.split('/');\n return paths[5];\n};\n\nconst directoryIdSelector = () => {\n // TODO (Jules): Find a better way to get the DirectoryId from the url.\n const paths = document.location.pathname.split('/');\n return paths[3];\n};\n\nconst sourcesSelector = (state, props) => state.sources;\nconst directoriesStateSelector = (state, props) => state.directories;\n\nconst getSourceFetch = createSelector([sourceIdSelector, sourcesSelector], (id, state) => {\n const fetch = getFetch(id, state);\n return fetch.id() ? getFetch(id, state) : new Fetch(id, [id]);\n});\nconst getDirectoryFetch = createSelector(\n [directoryIdSelector, directoriesStateSelector],\n (id, state) => {\n const fetch = getFetch(id, state);\n return fetch.id() ? getFetch(id, state) : new Fetch(id, [id]);\n },\n);\n\nconst getStatus = createSelector(\n [getSourceFetch, getDirectoryFetch],\n (sourceFetch, directoryFetch) => {\n return new Status(sourceFetch.status.value | directoryFetch.status.value);\n },\n);\n\nconst mapDispatchToProps = {\n fetchSource,\n fetchDirectory,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const sourceFetch = getSourceFetch(state, ownProps);\n const directoryFetch = getDirectoryFetch(state, ownProps);\n const status = getStatus(state, ownProps);\n\n return {\n source: sourceFetch.object(),\n sourceId: sourceFetch.id(),\n directory: directoryFetch.object(),\n directoryId: directoryFetch.id(),\n sourceStatus: sourceFetch.status,\n directoryStatus: directoryFetch.status,\n status, // TODO (Jules): status might be overridden by other props in later connector functions. Need to find a better way around this.\n };\n};\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => {\n const fetchSource = () => {\n dispatchProps.fetchSource(stateProps.sourceId);\n };\n\n const fetchDirectory = () => {\n dispatchProps.fetchDirectory(stateProps.directoryId);\n };\n\n return {\n ...ownProps,\n ...stateProps,\n fetchSource,\n fetchDirectory,\n };\n};\n\nexport default compose(connect(mapStateToProps, mapDispatchToProps, mergeProps), Component => {\n return function container(props) {\n return ;\n };\n});\n","// TODO: remove this, the only reducer that is concerned about location\n// is the `invites` reducer on the invites page\nexport const LOCATION_CHANGE = 'LOCATION_CHANGE';\n\nexport function changeLocation(location) {\n return { type: LOCATION_CHANGE, location };\n}\n","import _isEmpty from 'lodash/isEmpty';\nimport createActionHandlers from '@sift/resift/redux/FetchUtils/createActionHandlers';\nimport { mergeSuccess, mergeLoading, mergeError } from '@sift/resift/redux/FetchUtils/FetchUtils';\n\nconst FIELD_EXPANDS = ['fields', 'authorizationStatus', 'groups'];\n\n/**\n * recursiveStripEmptyStrings\n * Clean up our form data so we're not sending empty strings to our data source\n * @param {Object} obj\n * @returns {Object} A new object without empty strings (clean up the data)\n */\nfunction recursiveStripEmptyStrings(obj) {\n const newObject = { ...obj };\n\n for (const key in newObject) {\n if (newObject[key] === '' || newObject[key] === null) {\n newObject[key] = null;\n } else if (!Array.isArray(newObject[key]) && typeof newObject[key] === 'object') {\n if (_isEmpty(newObject[key])) {\n newObject[key] = null;\n } else {\n newObject[key] = recursiveStripEmptyStrings(newObject[key]);\n }\n }\n }\n\n return newObject;\n}\n\nexport const SOURCE_CREATE_IDENTIFIER = 'SOURCE_CREATE_IDENTIFIER';\n\nexport const SOURCE_CREATE = 'SOURCE_CREATE';\nexport const SOURCE_CREATE_SUCCESS = 'SOURCE_CREATE_SUCCESS';\nexport const SOURCE_CREATE_ERROR = 'SOURCE_CREATE_ERROR';\n\nexport const SOURCE_INIT = 'SOURCE_INIT';\nexport const SOURCE_INIT_SUCCESS = 'SOURCE_INIT_SUCCESS';\nexport const SOURCE_INIT_ERROR = 'SOURCE_INIT_ERROR';\n\nexport const SOURCE_FETCH = 'SOURCE_FETCH';\nexport const SOURCE_FETCH_SUCCESS = 'SOURCE_FETCH_SUCCESS';\nexport const SOURCE_FETCH_ERROR = 'SOURCE_FETCH_ERROR';\n\nexport const SOURCE_SAVE = 'SOURCE_SAVE';\nexport const SOURCE_SAVE_SUCCESS = 'SOURCE_SAVE_SUCCESS';\nexport const SOURCE_SAVE_ERROR = 'SOURCE_SAVE_ERROR';\n\nexport const SOURCE_DELETE = 'SOURCE_DELETE';\nexport const SOURCE_DELETE_SUCCESS = 'SOURCE_DELETE_SUCCESS';\nexport const SOURCE_DELETE_ERROR = 'SOURCE_DELETE_ERROR';\n\nexport const SOURCE_PUBLIC_KEY_SAVE = 'SOURCE_PUBLIC_KEY_SAVE';\nexport const SOURCE_PUBLIC_KEY_SAVE_SUCCESS = 'SOURCE_PUBLIC_KEY_SAVE_SUCCESS';\nexport const SOURCE_PUBLIC_KEY_SAVE_ERROR = 'SOURCE_PUBLIC_KEY_SAVE_ERROR';\n\nexport const SIGNED_UPLOAD_FETCH = 'SIGNED_UPLOAD_FETCH';\nexport const SIGNED_UPLOAD_FETCH_SUCCESS = 'SIGNED_UPLOAD_FETCH_SUCCESS';\nexport const SIGNED_UPLOAD_FETCH_ERROR = 'SIGNED_UPLOAD_FETCH_ERROR';\n\nexport const SOURCE_FILE_CREATE = 'SOURCE_FILE_CREATE';\nexport const SOURCE_FILE_CREATE_SUCCESS = 'SOURCE_FILE_CREATE_SUCCESS';\nexport const SOURCE_FILE_CREATE_ERROR = 'SOURCE_FILE_CREATE_ERROR';\n\nexport const SOURCE_FILE_HEADINGS_FETCH = 'SOURCE_FILE_HEADINGS_FETCH';\nexport const SOURCE_FILE_HEADINGS_FETCH_SUCCESS = 'SOURCE_FILE_HEADINGS_FETCH_SUCCESS';\nexport const SOURCE_FILE_HEADINGS_FETCH_ERROR = 'SOURCE_FILE_HEADINGS_FETCH_ERROR';\n\nexport const SOURCE_SYNC_ENABLE = 'SOURCE_SYNC_ENABLE';\nexport const SOURCE_SYNC_ENABLE_SUCCESS = 'SOURCE_SYNC_ENABLE_SUCCESS';\nexport const SOURCE_SYNC_ENABLE_ERROR = 'SOURCE_SYNC_ENABLE_ERROR';\n\nexport const SOURCE_SYNC_QUEUE = 'SOURCE_SYNC_QUEUE';\nexport const SOURCE_SYNC_QUEUE_SUCCESS = 'SOURCE_SYNC_QUEUE_SUCCESS';\nexport const SOURCE_SYNC_QUEUE_ERROR = 'SOURCE_SYNC_QUEUE_ERROR';\n\nexport const SOURCE_PRIMARY_MAPPING_UPDATE = 'SOURCE_PRIMARY_MAPPING_UPDATE';\nexport const SOURCE_PRIMARY_MAPPING_UPDATE_SUCCESS = 'SOURCE_PRIMARY_MAPPING_UPDATE_SUCCESS';\nexport const SOURCE_PRIMARY_MAPPING_UPDATE_ERROR = 'SOURCE_PRIMARY_MAPPING_UPDATE_ERROR';\n\nexport const SOURCE_MAPPINGS_SAVE = 'SOURCE_MAPPINGS_SAVE';\nexport const SOURCE_MAPPINGS_SAVE_SUCCESS = 'SOURCE_MAPPINGS_SAVE_SUCCESS';\nexport const SOURCE_MAPPINGS_SAVE_ERROR = 'SOURCE_MAPPINGS_SAVE_ERROR';\n\nexport const SOURCE_FILE_MAPPINGS_FETCH = 'SOURCE_FILE_MAPPINGS_FETCH';\nexport const SOURCE_FILE_MAPPINGS_FETCH_SUCCESS = 'SOURCE_FILE_MAPPINGS_FETCH_SUCCESS';\nexport const SOURCE_FILE_MAPPINGS_FETCH_ERROR = 'SOURCE_FILE_MAPPINGS_FETCH_ERROR';\n\nexport function initializeSource(sourceId) {\n return {\n type: SOURCE_INIT,\n identifier: `${sourceId}-initialize`,\n payload: {\n id: sourceId,\n data: {},\n },\n };\n}\n\nexport function createSource(directoryId, type, label, isPrimary) {\n return {\n type: SOURCE_CREATE,\n identifier: SOURCE_CREATE_IDENTIFIER,\n payload: {\n data: {\n type,\n directoryId,\n label,\n isPrimary,\n },\n },\n };\n}\n\nexport function fetchSource(sourceId, expand = FIELD_EXPANDS) {\n return {\n type: SOURCE_FETCH,\n identifier: sourceId,\n payload: {\n sourceId,\n query: {\n expand,\n },\n },\n };\n}\n\nexport function saveSource(source, expand = FIELD_EXPANDS) {\n const sourceDataWithoutEmptyStrings = recursiveStripEmptyStrings(source);\n\n return {\n type: SOURCE_SAVE,\n identifier: source.id,\n payload: {\n id: source.id,\n data: sourceDataWithoutEmptyStrings,\n query: {\n expand,\n },\n },\n };\n}\n\nexport function deleteSource(sourceId, expand = FIELD_EXPANDS) {\n return {\n type: SOURCE_DELETE,\n identifier: sourceId,\n payload: {\n id: sourceId,\n query: {\n expand,\n },\n },\n };\n}\n\n// Used with SFTP\nexport function saveSourcePublicKey(sourceId, publicKey, expand = FIELD_EXPANDS) {\n return {\n type: SOURCE_PUBLIC_KEY_SAVE,\n identifier: `${sourceId}-save-public-key`,\n payload: {\n id: sourceId,\n data: {\n publicKey,\n },\n query: {\n expand,\n },\n },\n };\n}\n\nexport const fetchSignedUpload = query => {\n return {\n type: SIGNED_UPLOAD_FETCH,\n identifier: 'signedUpload',\n payload: {\n query,\n },\n };\n};\n\nexport const createSourceFile = sourceFile => {\n return {\n type: SOURCE_FILE_CREATE,\n identifier: 'sourceFile',\n payload: {\n data: sourceFile,\n },\n };\n};\n\nexport const fetchSourceFileHeadings = sourceFileId => {\n return {\n type: SOURCE_FILE_HEADINGS_FETCH,\n identifier: `${sourceFileId}-sourceFileHeadings`,\n payload: {\n id: sourceFileId,\n },\n };\n};\n\nexport const setSourceSyncEnabled = (sourceId, isEnabled = false) => {\n return {\n type: SOURCE_SYNC_ENABLE,\n identifier: `${sourceId}-setSourceSyncEnabled`,\n payload: {\n sourceId,\n data: {\n syncEnabled: isEnabled,\n },\n },\n };\n};\n\nexport const queueSourceSync = (sourceId, sourceFileId) => {\n const dataKey = sourceFileId\n ? {\n sourceFile: {\n id: sourceFileId,\n },\n }\n : undefined;\n\n return {\n type: SOURCE_SYNC_QUEUE,\n identifier: `${sourceId}-queueSourceSync`,\n payload: {\n sourceId,\n data: dataKey,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n ...createActionHandlers(SOURCE_CREATE),\n ...createActionHandlers(SOURCE_INIT),\n ...createActionHandlers(SOURCE_FETCH),\n SOURCE_SAVE: (state, action) => {\n const newState = mergeLoading(state, action);\n return {\n ...newState,\n sourceSaveStatus: 2,\n };\n },\n SOURCE_SAVE_SUCCESS: (state, action) => {\n const newState = mergeSuccess(state, action);\n return {\n ...newState,\n sourceSaveStatus: 1,\n };\n },\n SOURCE_SAVE_ERROR: (state, action) => {\n const newState = mergeError(state, action);\n return {\n ...newState,\n sourceSaveStatus: 3,\n };\n },\n ...createActionHandlers(SOURCE_DELETE, true),\n ...createActionHandlers(SOURCE_PUBLIC_KEY_SAVE),\n ...createActionHandlers(SOURCE_SYNC_ENABLE),\n ...createActionHandlers(SOURCE_SYNC_QUEUE),\n ...createActionHandlers(SOURCE_PRIMARY_MAPPING_UPDATE),\n ...createActionHandlers(SOURCE_FILE_HEADINGS_FETCH),\n ...createActionHandlers(SIGNED_UPLOAD_FETCH),\n ...createActionHandlers(SOURCE_FILE_CREATE),\n ...createActionHandlers(SOURCE_MAPPINGS_SAVE),\n ...createActionHandlers(SOURCE_FILE_MAPPINGS_FETCH, false),\n ...createActionHandlers(SOURCE_SYNC_ENABLE),\n SOURCE_SYNC_ENABLE: (state, action) => {\n const newState = mergeLoading(state, action);\n return {\n ...newState,\n sourceSyncStatus: 2,\n };\n },\n\n SOURCE_SYNC_ENABLE_SUCCESS: (state, action) => {\n const newSource = action.payload.data;\n return {\n ...state,\n sourceSyncStatus: 1,\n objects: {\n ...state.objects,\n [newSource.id]: {\n ...state.objects[newSource.id],\n syncEnabled: newSource.syncEnabled,\n },\n },\n };\n },\n SOURCE_SYNC_ENABLE_ERROR: (state, action) => {\n const newState = mergeError(state, action);\n return {\n ...newState,\n sourceSyncStatus: 3,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\n\nexport const initialState = {\n fetches: {},\n objects: {},\n sourceSaveStatus: 1, // sourceSave conflicts with the withSource loadingState. This is needed to properly show loading states after editing source settings\n sourceSyncStatus: 1, // sourceSync conflicts with the withSource loadingState. This is needed to properly show loading states after editing source settings\n};\n\nexport default function SourcesReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n\n return handler ? handler(state, action) : state;\n}\n","import { createContext } from 'react';\nimport * as Sift from '@sift/types';\n\nexport default createContext(null);\n","import { createContext } from 'react';\nimport * as Types from 'pages/Pages/typings';\n\nexport default createContext(null);\n","import asyncComponent from 'components/Router/AsyncComponent';\nexport default asyncComponent(() => import('./container'));\n","import createPortal from '@sift/skipper/helpers/createPortal';\n\nexport default createPortal('Toolbar');\n","import React from 'react';\nimport makeStyles from '@material-ui/styles/makeStyles';\nimport classnames from 'classnames';\n\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\ninterface Props {\n button?: React.ReactNode;\n className?: string;\n description: string | React.ReactNode;\n number: string;\n selected?: boolean;\n onClick?: () => void;\n}\n\nfunction InfoCard({ button, className, description, number, selected, onClick }: Props) {\n const classes = useStyles();\n const cardClassName = classnames(\n {\n [classes.root]: true,\n [classes.clickable]: !!onClick,\n [classes.selected]: !!selected,\n },\n className,\n );\n const descriptionNode =\n typeof description === 'string' ? (\n

{description}

\n ) : (\n description\n );\n\n return (\n \n \n
{number}
\n {descriptionNode}\n {button || null}\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n width: 200,\n textAlign: 'center',\n },\n clickable: {\n cursor: 'pointer',\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n height: 154,\n boxSizing: 'border-box',\n '& > *': {\n marginBottom: 7,\n },\n '& > *:last-child': {\n marginBottom: 0,\n },\n },\n description: {\n marginTop: 0,\n },\n number: {\n fontSize: theme.spacing(5),\n },\n selected: {\n border: `3px solid ${theme.palette.secondary.main}`,\n },\n}));\n\nexport default InfoCard;\n","import _sortBy from 'lodash/sortBy';\n\nfunction getSelectedAttributes(selectedAttributes, field) {\n return {\n ...selectedAttributes,\n [field.objectKey]: {\n ...field,\n id: field.objectKey,\n },\n };\n}\n\nconst isObjectKeyBlackListed = objectKey => {\n const blackList = {\n presence: true,\n assistants: true,\n directReports: true,\n assistantOf: true,\n };\n\n return blackList[objectKey];\n};\n\nexport default function(configFields, siftBotFields) {\n const selectedAttributes = siftBotFields ? siftBotFields.reduce(getSelectedAttributes, {}) : {};\n const configFieldCollection = Object.keys(configFields).reduce((configFieldCollection, key) => {\n const configField = configFields[key];\n const field = configField\n ? {\n id: configField.objectKey,\n displayName: configField.displayName,\n objectKey: configField.objectKey,\n canOptOut: false,\n }\n : null;\n\n if (\n !configField.valueReadOnly &&\n !configField.objectKey.includes('.') &&\n !configField.fields &&\n !selectedAttributes[configField.objectKey] &&\n !isObjectKeyBlackListed(configField.objectKey) &&\n !configField.objectKey.includes('cf_page')\n ) {\n configFieldCollection.push(field);\n }\n\n return configFieldCollection;\n }, []);\n\n const sortedConfigFieldCollection = _sortBy(configFieldCollection, field => {\n return field.displayName.toLowerCase();\n });\n return sortedConfigFieldCollection;\n}\n","export default function getMappings(mappingCards: any[]) {\n return mappingCards.reduce((acc, mappingCard) => {\n mappingCard.mappings.forEach((mapping: any) => {\n acc.push(mapping);\n });\n\n return acc;\n }, []);\n}\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { setSlideKey, setTaskIdInFocus } from 'store/onboarding';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Button from '@material-ui/core/Button';\nimport Divider from '@material-ui/core/Divider';\nimport TaskSummary from 'components/onboarding/TaskSummary';\nimport * as Types from 'components/onboarding/typings';\n\ninterface Props {\n task: Types.Task;\n isOnHomePage: boolean;\n}\n\nfunction Task({ task, isOnHomePage }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n const dispatch = useDispatch();\n const history = useHistory();\n\n const { isComplete, pageStartUrl, isPro: taskIsPro } = task;\n const clientIsPro = useSelector((state: any) => state.client.isPro);\n\n const handleStart = () => {\n if (taskIsPro && !clientIsPro) {\n window.open('https://www.justsift.com/pricing');\n analytics.track('Onboarding Pro CTA clicked', {\n category: 'AD - Onboarding',\n label: task.title,\n });\n } else {\n dispatch(setSlideKey(task.id));\n dispatch(setTaskIdInFocus(task.id));\n pageStartUrl && history.push({ pathname: `/admin${pageStartUrl}` });\n analytics.track('Onboarding Item Start Button clicked', {\n category: 'AD - Onboarding',\n label: task.title,\n });\n }\n };\n\n const renderButtonText = () => {\n if (taskIsPro) {\n if (clientIsPro) {\n return isComplete ? 'View' : 'Start';\n } else {\n return isOnHomePage ? 'Learn about Sift Pro' : 'Learn More';\n }\n }\n\n return isComplete ? 'View' : 'Start';\n };\n\n return (\n
\n
\n \n \n {renderButtonText()}\n \n
\n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n content: {\n display: 'flex',\n alignItems: 'center',\n },\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n title: {\n marginLeft: theme.spacing(3),\n },\n doc: {\n marginLeft: theme.spacing(5.75),\n // @ts-ignore\n color: theme.colors.gray2,\n },\n button: {\n marginLeft: 'auto',\n // (pearl) notes: using negative margin due to design wants to visually right align the button\n // while MUI considers padding for the hover effect\n marginRight: -theme.spacing(),\n },\n divider: {\n width: '100%',\n marginLeft: 0,\n },\n}));\n\nexport default Task;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { toggleCategoryExpansion } from 'store/onboarding';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport Divider from '@material-ui/core/Divider';\nimport Typography from '@material-ui/core/Typography';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Chip from '@material-ui/core/Chip';\nimport Collapse from '@material-ui/core/Collapse';\nimport Task from 'components/onboarding/Task';\n\nimport * as Types from 'components/onboarding/typings';\n\ninterface Props {\n category: Types.TaskCategory;\n isOnHomePage: boolean;\n}\n\nfunction Category({ category, isOnHomePage }: Props) {\n const classes = useStyles();\n const { id, isExpanded, title, description, completionPercentage, tasks } = category;\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n\n const handleToggleCategoryOpen = (categoryId: string) => {\n dispatch(toggleCategoryExpansion(categoryId));\n analytics.track('Onboarding Category Expanded', {\n category: 'AD - Onboarding',\n label: title,\n });\n };\n\n const allTasksAreOptional = !tasks.some(task => task.required);\n\n return (\n <>\n \n \n {isExpanded && isOnHomePage && {description}}\n \n
\n {tasks.map((task, i) => (\n \n ))}\n
\n
\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n headerButton: {\n width: '100%',\n background: 'none',\n border: 'none',\n display: 'flex',\n justifyContent: 'space-between',\n paddingTop: theme.spacing(1.25),\n paddingBottom: theme.spacing(1.25),\n cursor: 'pointer',\n },\n title: {\n display: 'flex',\n alignItems: 'center',\n },\n headerRight: {\n display: 'flex',\n },\n progress: {\n display: 'flex',\n alignItems: 'center',\n '& .MuiLinearProgress-colorPrimary': {\n backgroundColor: 'rgba(97,166,14, 0.25)',\n },\n },\n progressBar: {\n width: 120,\n marginLeft: theme.spacing(),\n marginRight: theme.spacing(),\n '& .MuiLinearProgress-bar': {\n backgroundColor: theme.palette.success.main,\n },\n },\n chip: {\n ...theme.typography.caption,\n marginLeft: theme.spacing(0.5),\n backgroundColor: theme.palette.success.main,\n color: theme.palette.common.white,\n },\n divider: {\n width: '100%',\n marginLeft: 0,\n },\n}));\n\nexport default Category;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/onboarding';\n\nimport Slide from '@material-ui/core/Slide';\nimport Category from 'components/onboarding/Category';\n\ninterface Props {\n isOnHomePage?: boolean;\n}\n\nfunction Checklist({ isOnHomePage = false }: Props) {\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n const { checkList, bubbleOpen } = onboardingState;\n\n const renderChildren = (children: React.ReactNode) => {\n return (\n <>\n {isOnHomePage ? (\n
{children}
\n ) : (\n \n
{children}
\n
\n )}\n \n );\n };\n\n return renderChildren(\n <>\n {checkList.map(category => (\n \n ))}\n ,\n );\n}\n\nexport default Checklist;\n","export { default } from './Checklist';\n","export const initialState = {\n name: 'admin',\n version: '1.0',\n platform: 'web',\n};\n\nconst ACTION_HANDLERS = {};\n\nexport default function appReducer(state = initialState, action = {}) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import createActionHandlers from '@sift/resift/redux/FetchUtils/createActionHandlers';\nimport createReducer from '@sift/resift/redux/createReducer';\nimport { mergeSuccess } from '@sift/resift/redux/FetchUtils';\n\nexport const COMPANY_API_IDENTIFIER = 'COMPANY_API_IDENTIFIER';\n\nexport const COMPANY_API_CLIENT_FETCH = 'COMPANY_API_CLIENT_FETCH';\nexport const COMPANY_API_CLIENT_FETCH_SUCCESS = 'COMPANY_API_CLIENT_FETCH_SUCCESS';\nexport const COMPANY_API_CLIENT_FETCH_ERROR = 'COMPANY_API_CLIENT_FETCH_ERROR';\n\nexport const COMPANY_API_CLIENT_UPDATE = 'COMPANY_API_CLIENT_UPDATE';\nexport const COMPANY_API_CLIENT_UPDATE_SUCCESS = 'COMPANY_API_CLIENT_UPDATE_SUCCESS';\nexport const COMPANY_API_CLIENT_UPDATE_ERROR = 'COMPANY_API_CLIENT_UPDATE_ERROR';\n\nexport const COMPANY_API_CLIENT_OWNERS_ADD = 'COMPANY_API_CLIENT_OWNERS_ADD';\nexport const COMPANY_API_CLIENT_OWNERS_ADD_SUCCESS = 'COMPANY_API_CLIENT_OWNERS_ADD_SUCCESS';\nexport const COMPANY_API_CLIENT_OWNERS_ADD_ERROR = 'COMPANY_API_CLIENT_OWNERS_ADD_ERROR';\n\nexport const COMPANY_API_CLIENT_OWNERS_UPDATE = 'COMPANY_API_CLIENT_OWNERS_UPDATE';\nexport const COMPANY_API_CLIENT_OWNERS_UPDATE_SUCCESS = 'COMPANY_API_CLIENT_OWNERS_UPDATE_SUCCESS';\nexport const COMPANY_API_CLIENT_OWNERS_UPDATE_ERROR = 'COMPANY_API_CLIENT_OWNERS_UPDATE_ERROR';\n\nconst mergeMutationResult = (state, action, mutationName) => {\n return {\n ...state,\n objects: {\n ...state.objects,\n [action.identifier]: {\n ...state.objects[action.identifier],\n client: state.objects[action.identifier][mutationName],\n },\n },\n };\n};\n\nexport const fetchCompanyApiClient = () => {\n return {\n type: COMPANY_API_CLIENT_FETCH,\n identifier: COMPANY_API_IDENTIFIER,\n payload: {},\n };\n};\n\nexport const updateCompanyApiClient = client => {\n return {\n type: COMPANY_API_CLIENT_UPDATE,\n identifier: COMPANY_API_IDENTIFIER,\n payload: { client },\n };\n};\n\nexport const addOwnersToCompanyApiClient = ownerIds => {\n return {\n type: COMPANY_API_CLIENT_OWNERS_ADD,\n identifier: COMPANY_API_IDENTIFIER,\n payload: { ownerIds },\n };\n};\n\nexport const updateCompanyAPIOwners = ownerIds => {\n return {\n type: COMPANY_API_CLIENT_OWNERS_UPDATE,\n identifier: COMPANY_API_IDENTIFIER,\n payload: { ownerIds },\n };\n};\n\nconst DATA_SERVICE_ACTION_HANDLERS = {\n ...createActionHandlers(COMPANY_API_CLIENT_FETCH),\n ...createActionHandlers(COMPANY_API_CLIENT_UPDATE),\n ...createActionHandlers(COMPANY_API_CLIENT_OWNERS_UPDATE),\n [COMPANY_API_CLIENT_UPDATE_SUCCESS]: (state, action) => {\n const newState = mergeSuccess(state, action);\n const updatedState = mergeMutationResult(newState, action, 'updateClient');\n return updatedState;\n },\n [COMPANY_API_CLIENT_OWNERS_UPDATE_SUCCESS]: (state, action) => {\n const newState = mergeSuccess(state, action);\n const updatedState = mergeMutationResult(newState, action, 'updateClient');\n return updatedState;\n },\n};\n\nconst initialState = {\n objects: {},\n fetches: {},\n};\nexport default createReducer(initialState, DATA_SERVICE_ACTION_HANDLERS);\n","import { combineReducers } from 'redux';\nimport { dataServiceReducer as dataService } from 'resift';\nimport store from 'store/store';\n\n// Store\nimport app from './app';\nimport attribute from './attribute';\nimport authentication from './authentication';\nimport client from './client';\nimport config from './configuration';\nimport directories from './directories';\nimport search from './search';\nimport sources from './sources';\nimport siftBot from './siftBot';\nimport themes from './themes';\nimport companyApi from './companyAPI';\nimport onboarding from './onboarding';\n\nexport const makeRootReducer = asyncReducers => {\n return combineReducers({\n app,\n attribute,\n authentication,\n client,\n config,\n directories,\n search,\n sources,\n siftBot,\n themes,\n companyApi,\n onboarding,\n dataService,\n ...asyncReducers,\n });\n};\n\nexport const injectReducer = ({ key, reducer }) => {\n if (Object.hasOwnProperty.call(store.asyncReducers, key)) return;\n\n store.asyncReducers[key] = reducer;\n store.replaceReducer(makeRootReducer(store.asyncReducers));\n};\n\nexport default makeRootReducer;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst LogoIcon = props => (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default LogoIcon;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Logo from 'components/Icons/LogoGray';\nconst style = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: 'auto',\n height: 100,\n width: 100,\n};\n\nexport default class StaticLoader extends Component {\n static propTypes = {\n style: PropTypes.object,\n };\n\n render() {\n const styleProps = this.props.style ? this.props.style : {};\n return ;\n }\n}\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport TaskTitle from 'components/onboarding/TaskTitle';\nimport { HELP_ARTICLE_HOME } from 'components/onboarding/constants';\nimport * as Types from 'components/onboarding/typings';\n\ninterface Props {\n task: Types.Task;\n isOnHomePage?: boolean;\n}\n\nfunction TaskSummary({ task, isOnHomePage }: Props) {\n const classes = useStyles();\n\n const { helpArticleLink: _helpArticleLink, shortDescription } = task;\n\n const helpArticleLink = _helpArticleLink || HELP_ARTICLE_HOME;\n\n return (\n
\n \n {isOnHomePage ? (\n
\n \n {shortDescription}\n \n
\n ) : (\n \n View{' '}\n \n documentation\n \n \n )}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n paddingTop: theme.spacing(),\n paddingBottom: theme.spacing(),\n },\n shortTextContainer: {\n marginLeft: theme.spacing(5.5),\n maxWidth: 700,\n },\n shortText: {\n // @ts-ignore\n color: theme.colors.gray2,\n },\n doc: {\n marginLeft: theme.spacing(5),\n // @ts-ignore\n color: theme.colors.gray2,\n },\n}));\n\nexport default TaskSummary;\n","export { default } from './TaskSummary';\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { State } from 'store/onboarding';\nimport useTask from 'components/onboarding/useTask';\n\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\n\nimport { LIST_SLIDE_KEY } from 'components/onboarding/constants';\nimport * as Types from 'components/onboarding/typings';\n\ninterface Props {\n task: Types.Task;\n isOnHomePage?: boolean;\n}\n\nfunction TaskTitle({ task: _task, isOnHomePage }: Props) {\n const classes = useStyles();\n const task = _task || useTask();\n const onboardingState: State = useSelector((state: any) => state.onboarding);\n const { slideKey } = onboardingState;\n\n if (!task) {\n return null;\n }\n\n const { isComplete, title, isPro } = task;\n\n return (\n
\n {isComplete ? (\n \n ) : (\n \n )}\n \n {title}\n {!task.required && ' (Optional)'}\n \n {isPro && (\n \n PRO\n \n )}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n checkIcon: {\n fontSize: 14,\n },\n checked: {\n color: theme.palette.success.main,\n },\n completed: {\n color: theme.palette.success.main,\n },\n title: {\n marginLeft: theme.spacing(3),\n },\n tag: {\n marginLeft: theme.spacing(0.5),\n marginTop: -theme.spacing(),\n },\n}));\n\nexport default TaskTitle;\n","export { default } from './TaskTitle';\n","export const PERSON_ROLE_USER = 100;\nexport const PERSON_ROLE_ADMIN = 200;\nexport const PERSON_ROLE_PENDING_OWNER = 250;\nexport const PERSON_ROLE_OWNER = 300;\n\nexport const ADMIN_TYPE_PENDING_OWNER = 'Owner (pending)';\nexport const ADMIN_TYPE_OWNER = 'Owner';\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {},\n };\n};\n\nclass Terminology extends Component {\n static propTypes = {\n terminology: PropTypes.object.isRequired,\n term: PropTypes.string.isRequired,\n classes: PropTypes.object.isRequired,\n casing: PropTypes.string.isRequired,\n withSpace: PropTypes.bool,\n };\n\n render() {\n const { terminology, casing, term, classes, 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 withStyles(styles)(Terminology);\n","import React from 'react';\nimport _get from 'lodash/get';\nimport pluralize from 'pluralize';\nimport { useSelector } from 'react-redux';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\n// View\nimport Terminology from './Terminology';\n\nexport default function TerminologyContainer(props) {\n const entityTypes = useEntityTypes();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const teamLeader = _get(userConfig._fields, 'teamLeader.displayName', 'Leader');\n const terminologyState = useSelector(state => state.client.terminology);\n\n const terminology = {\n ...terminologyState,\n teamLeader,\n teamLeader_plural: pluralize(teamLeader),\n };\n\n return ;\n}\n","export const BASE_FIELD_PAGE = 'page';\nexport const BASE_FIELD_PAGE_COLLECTION = 'pageCollection';\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n// Store\nimport { injectReducer } from 'store/reducers';\n\n// Components\nimport StaticLoader from 'components/Loader/StaticLoader';\n\n/**\n This is code from this article:\n https://serverless-stack.com/chapters/code-splitting-in-create-react-app.html\n**/\n\nexport default function asyncComponent(importedComponent, reducer, key) {\n class AsyncComponent extends Component {\n static propTypes = {\n store: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n component: null,\n };\n }\n\n async componentDidMount() {\n if (reducer && key) {\n injectReducer({ key, reducer });\n }\n\n const { default: component } = await importedComponent();\n\n this.setState({\n component,\n });\n }\n\n render() {\n const Component = this.state.component;\n\n if (!Component) {\n return ;\n }\n\n return ;\n }\n }\n\n return AsyncComponent;\n}\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst ShortTextIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default ShortTextIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst HyperLinkIcon: React.ComponentType = 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 \n \n \n \n \n \n \n \n \n \n);\n\nexport default HyperLinkIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst SingleSelectIcon: React.ComponentType = 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\nexport default SingleSelectIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst LongTextIcon: React.ComponentType = props => (\n \n \n \n \n \n \n);\n\nexport default LongTextIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst EmailIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default EmailIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst PhoneIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default PhoneIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst MessageAddressIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default MessageAddressIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst FreeFormChipsIcon: React.ComponentType = 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\nexport default FreeFormChipsIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst MultiSelectIcon: React.ComponentType = 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\nexport default MultiSelectIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst AutocompleteIcon: React.ComponentType = 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\nexport default AutocompleteIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst LinkCollectionsIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n);\n\nexport default LinkCollectionsIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst DatesIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default DatesIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst NumberIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default NumberIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst BooleanIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default BooleanIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst SkillsIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default SkillsIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst EducationIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default EducationIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst ExperienceIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default ExperienceIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst LanguageIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default LanguageIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst ReachOutToMeForIcon: React.ComponentType = 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\nexport default ReachOutToMeForIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst PageIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default PageIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst PageCollectionIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default PageCollectionIcon;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport _get from 'lodash/get';\nimport classnames from 'classnames';\nimport { useLocation } from 'react-router';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport ShortTextIcon from 'components/Icons/ShortText';\nimport HyperLinkIcon from 'components/Icons/HyperLink';\nimport SingleSelectIcon from 'components/Icons/SingleSelect';\nimport LongTextIcon from 'components/Icons/LongText';\nimport EmailIcon from 'components/Icons/Email';\nimport PhoneIcon from 'components/Icons/Phone';\nimport MessageAddressIcon from 'components/Icons/MessageAddress';\nimport FreeFormChipsIcon from 'components/Icons/FreeFormChips';\nimport MultiSelectIcon from 'components/Icons/MultiSelect';\nimport AutocompleteIcon from 'components/Icons/Autocomplete';\nimport LinkCollectionsIcon from 'components/Icons/LinkCollections';\nimport DatesIcon from 'components/Icons/Dates';\nimport NumberIcon from 'components/Icons/Number';\nimport BooleanIcon from 'components/Icons/Boolean';\nimport SkillsIcon from 'components/Icons/Skills';\nimport EducationIcon from 'components/Icons/Education';\nimport ExperienceIcon from 'components/Icons/Experience';\nimport LanguageIcon from 'components/Icons/Language';\nimport ReachOutToMeForIcon from 'components/Icons/ReachOutToMeFor';\nimport PageIcon from 'components/Icons/Page';\nimport PageCollectionIcon from 'components/Icons/PageCollection';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n className?: string;\n item: {\n Icon: any;\n title: string;\n description: string;\n link: string;\n };\n link: boolean;\n parentObjectKey?: string | string[];\n onClick?: () => void;\n}\n\nexport const attributeTypes: {\n [key: string]: { title: string; Icon: any; description: string; link: string };\n} = {\n text: {\n title: 'Short Text',\n Icon: ShortTextIcon,\n link: 'text',\n description: 'A short piece of text displayed on a single line.',\n },\n textLong: {\n title: 'Long Text',\n Icon: LongTextIcon,\n link: 'textLong',\n description: 'A multi-line text area for longer form content.',\n },\n textSelect: {\n title: 'Select',\n Icon: SingleSelectIcon,\n link: 'textSelect',\n description:\n 'A short piece of text that has a preset list of options to choose from. Only one option can be selected.',\n },\n hyperlink: {\n title: 'Hyperlink',\n Icon: HyperLinkIcon,\n link: 'hyperlink',\n description: 'A link out to an external website.',\n },\n email: {\n title: 'Email',\n Icon: EmailIcon,\n link: 'email',\n description: 'An email address that will open an email client when clicked.',\n },\n phone: {\n title: 'Phone Number',\n Icon: PhoneIcon,\n link: 'phone',\n description: 'A phone number that will call when clicked.',\n },\n messageAddress: {\n title: 'Message Address',\n Icon: MessageAddressIcon,\n link: 'messageAddress',\n description:\n 'A button that will open an external messaging tool when clicked. This attribute must be mapped to a data source.',\n },\n textCollection: {\n title: 'Text Collection',\n Icon: FreeFormChipsIcon,\n link: 'textCollection',\n description:\n 'A list of short text items that will search when clicked. If the attribute is editable, entry will be free-form.',\n },\n multiSelect: {\n title: 'Multi Select',\n Icon: MultiSelectIcon,\n link: 'multiSelect',\n description:\n 'A restricted text collection attribute that has a preset list of options to choose from.',\n },\n autocompleteTextCollection: {\n title: 'Autocomplete Chips',\n Icon: AutocompleteIcon,\n link: 'autocompleteTextCollection',\n description:\n 'A text collection attribute that has a longer list of options to choose from and can also support free-form entry.',\n },\n date: {\n title: 'Date',\n Icon: DatesIcon,\n link: 'date',\n description: 'A Date that has a calendar input and can be searched by range.',\n },\n number: {\n title: 'Number',\n Icon: NumberIcon,\n link: 'number',\n description: 'An integer with restricted number input.',\n },\n boolean: {\n title: 'Boolean',\n Icon: BooleanIcon,\n link: 'boolean',\n description: 'A Yes or No prompt.',\n },\n linkCollection: {\n title: 'Link Collection',\n Icon: LinkCollectionsIcon,\n link: 'linkCollection',\n description:\n 'A collection of custom hyperlinks that can be used for documents, social accounts, or websites to share with others.',\n },\n skills: {\n title: 'Skills',\n Icon: SkillsIcon,\n link: 'collection',\n description:\n 'A detailed list of self-assessed skills allowing specification of level and certain skills to be featured. Utilizes a defined database of over 40,000 skills.',\n },\n education: {\n title: 'Education',\n Icon: EducationIcon,\n link: 'education',\n description:\n 'A detailed list of past education, including school, degree type, majors, minors, concentrations, and class year.',\n },\n experience: {\n title: 'Experience',\n Icon: ExperienceIcon,\n link: 'experience',\n description:\n 'A detailed list of professional experience to be used for past work or volunteer positions.',\n },\n languages: {\n title: 'Language',\n Icon: LanguageIcon,\n link: 'languages',\n description:\n 'A detailed list of languages including proficiency level and skillsets in reading, writing, speaking, and understanding.',\n },\n reachOutToMeFor: {\n title: 'Reach Out to Me For',\n Icon: ReachOutToMeForIcon,\n link: 'reachOutToMeFor',\n description:\n 'A collection of generic or categorized items used to define which professional things someone should be contacted about.',\n },\n page: {\n title: 'Page',\n Icon: PageIcon,\n link: 'page',\n description:\n 'Users may only be associated to one page of this type. (Ex: Building Location, Department, etc.)',\n },\n pageCollection: {\n title: 'Page Collection',\n Icon: PageCollectionIcon,\n link: 'pageCollection',\n description:\n 'Users may be associated to multiple pages of this type. (Ex: Projects, Employee Resource Groups, etc.)',\n },\n independentPage: {\n title: 'Independent Page',\n Icon: PageCollectionIcon,\n link: '',\n description:\n 'Create pages that are not associated to a Person. These pages will only be accessible from Sift search and will not include page members.',\n },\n};\n\nfunction AttributeTypeCard({ className, item, link, parentObjectKey, onClick }: Props) {\n const classes = useStyles();\n const Icon = _get(item, 'Icon');\n const location = useLocation();\n const cardRootClass = classnames(classes.cardRoot, className, {\n [classes.cardRootHover]: link || onClick,\n [classes.marginRight]: link || onClick,\n [classes.clickable]: onClick,\n });\n\n const card = (\n \n \n \n {item.title}\n \n {Icon && }\n \n {item.description}\n \n \n \n );\n\n const cardLink = parentObjectKey\n ? `${location.pathname}/${item.link}?parentObjectKey=${parentObjectKey}`\n : `${location.pathname}/${item.link}`;\n\n return link ? (\n \n {card}\n \n ) : (\n card\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n cardRoot: {\n maxWidth: 214,\n },\n cardRootHover: {\n '&:hover': {\n boxShadow:\n '0px 6px 14px -6px rgba(33, 33, 33, 0.12), 0px 10px 32px -4px rgba(33, 33, 33, 0.1)',\n },\n },\n clickable: {\n cursor: 'pointer',\n },\n content: {\n padding: 0,\n '&:last-child': {\n paddingBottom: 0,\n },\n },\n marginRight: {\n marginRight: theme.spacing(2),\n },\n cardTitle: {\n padding: theme.spacing(),\n },\n icon: {\n width: 214,\n height: 102,\n },\n cardContent: {\n padding: theme.spacing(1, 1, 1.5, 1),\n },\n}));\n\nexport default AttributeTypeCard;\n","import { isLoading } from 'resift';\n\nfunction getIsLoading(status: any) {\n if (typeof status === 'number') {\n return isLoading(status);\n }\n\n return status.isLoading();\n}\n\nexport default getIsLoading;\n","import createTheme from '@sift/skipper/styles/createTheme';\nimport colors from './colors';\nimport typography from './typography';\n\nconst spacing = [0, 8, 16, 24, 32, 40];\n\nexport default createTheme({\n accountStatus: {\n activeColor: '#5fc36b',\n suspendedColor: '#ff586d',\n invitedColor: '#ff930a',\n notInvitedStatus: '#47289e',\n deletedStatus: '#000',\n },\n typography,\n overrides: {\n AppSidebar: {\n width: 258,\n },\n AppHeader: {\n minHeight: spacing[7],\n maxHeight: spacing[7],\n },\n MuiButton: {\n root: {\n ...typography.button,\n },\n },\n MuiCard: {\n root: {\n marginBottom: spacing[3],\n },\n },\n MuiCardActionArea: {\n root: {\n padding: spacing[0],\n },\n },\n MuiCardHeader: {\n title: {\n ...typography.h5,\n },\n subheader: typography.subtitle2,\n root: {\n padding: `${spacing[3]}px`,\n },\n },\n MuiCardContent: {\n root: {\n padding: `${spacing[2]}px ${spacing[3]}px ${spacing[3]}px ${spacing[3]}px`,\n },\n },\n MuiPaper: {\n elevation1: {\n boxShadow: '0px 2px 4px rgba(33, 33, 33, 0.07)',\n },\n elevation2: {\n boxShadow: '0px 4px 6px rgba(33, 33, 33, 0.07), 0px 8px 8px -4px rgba(33, 33, 33, 0.05)',\n },\n },\n MuiTooltip: {\n tooltip: {\n fontSize: 12,\n },\n },\n MuiTabs: {\n indicator: {\n backgroundColor: colors.secondary,\n },\n root: {\n marginBottom: spacing[2],\n },\n },\n MuiTab: {\n root: {\n '&$selected': {\n color: colors.secondary,\n },\n },\n },\n MuiDivider: {\n root: {\n backgroundColor: colors.divider,\n marginLeft: spacing[3],\n marginRight: spacing[3],\n },\n },\n MuiDialogActions: {\n root: {\n padding: '24px',\n },\n },\n MuiDialogContent: {\n root: {\n padding: '0 24px',\n paddingTop: '24px',\n },\n },\n MuiDialogContentText: {\n root: {\n marginBottom: 0,\n ...typography.subtitle2,\n color: colors.gray1,\n },\n },\n MuiDialogTitle: {\n root: {\n '& h2': {\n ...typography.h5,\n },\n padding: '24px',\n paddingBottom: 0,\n '& span': {\n display: 'block',\n ...typography.body1,\n },\n },\n },\n },\n palette: {\n primary: {\n main: colors.primary,\n light: colors.lightPrimary,\n dark: colors.darkPrimary,\n },\n secondary: {\n main: colors.secondary,\n light: colors.lightSecondary,\n dark: colors.darkSecondary,\n },\n error: {\n main: colors.error,\n },\n warning: {\n main: colors.warning,\n },\n info: {\n main: colors.info,\n },\n success: {\n main: colors.success,\n },\n text: {\n primary: colors.primaryText,\n secondary: colors.gray1,\n },\n opacity: {\n fourPercent: 0.04,\n eightPercent: 0.08,\n twelvePercent: 0.12,\n thirtyEightPercent: 0.38,\n },\n },\n colors,\n});\n","export { default } from './withSource';\n","import React from 'react';\nimport { withRouter } from 'react-router';\nimport qs from 'query-string';\n\n// Components\nimport MUITablePagination, { TablePaginationBaseProps } from '@material-ui/core/TablePagination';\nimport TableCell from './TableCell';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\ninterface Props extends TablePaginationBaseProps {\n pagination?: any;\n classes: any;\n history: any;\n location: any;\n match: any;\n staticContext?: any;\n component?: React.ElementType;\n}\n\nfunction TablePagination({\n pagination,\n history,\n location,\n match,\n staticContext,\n component = TableCell,\n ...otherProps\n}: Props) {\n const handleChangeRowsPerPage = (event: any) => {\n let query = qs.parse(history.location.search) as any;\n query.page = 1;\n query.pageSize = event.target.value;\n\n history.push(`${history.location.pathname}?${qs.stringify(query)}`);\n };\n\n const handleChangePage = (_: any, page: number) => {\n const query = qs.parse(history.location.search) as any;\n query.page = page + 1;\n\n history.push(`${history.location.pathname}?${qs.stringify(query)}`);\n };\n\n return (\n \n );\n}\n\nconst styles = (theme: any) => {\n return {\n root: {\n fontSize: '0.75rem',\n },\n };\n};\n\nexport default withRouter(withStyles(styles)(TablePagination));\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { default as MUIToolbar } from '@material-ui/core/Toolbar';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n alignItems: 'center',\n justifyContent: 'space-between',\n '& > *': {\n flex: '0 0 auto',\n },\n },\n };\n};\n\nclass Toolbar extends PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n };\n\n render() {\n let { children, classes } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\nexport default withStyles(styles)(Toolbar);\n","import _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport moment from 'moment';\nimport { SyncStatus } from 'types/Source';\n\nfunction useSyncInfo(\n syncStatus: SyncStatus,\n): {\n lastSyncDate: string;\n lastSyncInfo: any;\n lastSyncStatus: string;\n timeSinceLastSync: string;\n syncRunning: boolean;\n syncHasRun: boolean;\n hasSyncErrors: boolean;\n errorMessage: string;\n} {\n const currentSyncStatus = _get(syncStatus, ['currentSyncStatus', 'status']);\n const syncRunning = currentSyncStatus !== undefined;\n\n const lastSyncInfo = _get(syncStatus, 'lastSyncStatus');\n const completedAt = _get(lastSyncInfo, 'completedAt');\n const startedAt = _get(lastSyncInfo, 'startedAt');\n const lastSyncStatus = _get(lastSyncInfo, 'status');\n const _lastSyncDate = completedAt || startedAt;\n const lastSyncDate = moment(_lastSyncDate).format('MM/DD/YYYY hh:mm A');\n const timeSinceLastSync = moment(lastSyncDate).fromNow();\n const errorMessage = _get(lastSyncInfo, ['error', 'messageTxt']);\n const hasSyncErrors = lastSyncStatus === 'error';\n\n const syncHasRun = !_isEmpty(currentSyncStatus) || !_isEmpty(lastSyncStatus);\n\n return {\n lastSyncDate,\n lastSyncInfo,\n lastSyncStatus,\n timeSinceLastSync,\n syncRunning,\n syncHasRun,\n hasSyncErrors,\n errorMessage,\n };\n}\n\nexport default useSyncInfo;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\nimport { withRouter } from 'react-router';\nimport _get from 'lodash/get';\n\n// UI\nimport TextField from '@material-ui/core/TextField';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Button from '@material-ui/core/Button';\nimport SearchIcon from '@material-ui/icons/Search';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n form: { width: '315px' },\n row: {\n position: 'relative',\n },\n inputRoot: {\n alignItems: 'center',\n },\n inputAdornment: {\n display: 'flex',\n alignItems: 'center',\n },\n searchButton: {\n marginLeft: theme.spacing(1),\n alignSelf: 'flex-end',\n },\n clearButton: {\n marginLeft: theme.spacing(1),\n alignSelf: 'flex-end',\n },\n };\n};\n\n// Component\nclass ClearableSearchField extends PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n onSearch: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n placeholder: PropTypes.string.isRequired,\n history: PropTypes.object.isRequired,\n };\n\n state = {\n textFieldValue: '',\n };\n\n componentDidMount() {\n this.updateSearch();\n }\n\n componentDidUpdate(_, prevState) {\n if (prevState.textFieldValue === this.state.textFieldValue) {\n this.updateSearch();\n }\n }\n\n updateSearch = () => {\n const { history } = this.props;\n const query = qs.parse(history.location.search);\n const searchQuery = _get(query, 'q', '');\n\n if (this.state.textFieldValue !== searchQuery) {\n this.setState({\n textFieldValue: searchQuery,\n });\n }\n };\n\n handleOnChange = e => {\n this.setState({\n textFieldValue: e.target.value,\n });\n };\n\n handleOnSearch = () => {\n this.props.onSearch(this.state.textFieldValue);\n };\n\n handleOnEnter = e => {\n if (e.key === 'Enter') {\n this.handleOnSearch();\n }\n };\n\n handleClear = () => {\n this.setState({\n textFieldValue: '',\n });\n this.props.onClear();\n };\n\n render() {\n const { classes, onClear, placeholder } = this.props;\n const { textFieldValue } = this.state;\n\n // Only displays clear button if there's a query\n const clearButton = textFieldValue && (\n \n );\n\n return (\n
\n
\n \n \n \n ),\n }}\n name={placeholder}\n data-cy=\"clearable-search--search-input\"\n />\n
\n \n Search\n \n {clearButton}\n
\n );\n }\n}\n\nexport default withRouter(withStyles(styles)(ClearableSearchField));\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport qs from 'query-string';\nimport _get from 'lodash/get';\nimport _omit from 'lodash/omit';\n\n// UI\nimport ClearableSearch from 'components/Form/ClearableSearch';\n\n// Component\nclass TableSearchTextField extends PureComponent {\n static propTypes = {\n history: PropTypes.object.isRequired,\n hintText: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { history } = props;\n const query = qs.parse(history.location.search);\n\n this.state = {\n value: _get(query, 'q', ''),\n };\n }\n\n handleSearch = (searchQuery = '') => {\n const { history } = this.props;\n const query = qs.parse(history.location.search);\n\n if (searchQuery) {\n query.q = searchQuery;\n delete query.page;\n } else {\n delete query.q;\n }\n\n history.push(`${history.location.pathname}?${qs.stringify(query)}`);\n };\n\n handleClearSearch = () => {\n const { history } = this.props;\n const query = _omit(qs.parse(history.location.search), 'q');\n history.push(`${history.location.pathname}?${qs.stringify(query)}`);\n };\n\n render() {\n const { hintText } = this.props;\n\n return (\n \n );\n }\n}\n\nexport default withRouter(TableSearchTextField);\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\n\n// Components\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\n\ninterface Props {\n title: string | React.ReactNode;\n subheader: string | React.ReactNode;\n helpLinkMeta?: {\n link: string;\n text: string;\n };\n className?: string;\n subheaderClassName?: string;\n}\n\nfunction InfoCard({ title, subheader, helpLinkMeta, className, subheaderClassName }: Props) {\n const classes = useStyles();\n return (\n \n \n {helpLinkMeta && (\n
\n \n
\n )}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n marginBottom: theme.spacing(3),\n },\n helpLink: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: theme.spacing(2),\n paddingTop: 0,\n },\n };\n});\n\nexport default InfoCard;\n","export { default } from './InfoCard';","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nexport const styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '0 0 auto',\n '& > *': {\n margin: '0 4px',\n },\n paddingRight: 418,\n },\n};\n\nfunction ToolbarActions(props) {\n const { children, classes, className, ...other } = props;\n\n return (\n
\n {children}\n
\n );\n}\n\nToolbarActions.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: 'ToolbarActions' })(ToolbarActions);\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","import React from 'react';\n\nexport default props => (\n
\n \n \n \n \n \n \n \n \n
\n);\n","import getHostName from 'helpers/getHostName';\n\nexport default function handleAuthorizeSource(\n query: {\n successRedirectUri: string;\n errorRedirectUri: string;\n },\n sourceId: string,\n) {\n const q = `successRedirectUri=${encodeURIComponent(\n query.successRedirectUri,\n )}&errorRedirectUri=${encodeURIComponent(query.errorRedirectUri)}`;\n\n const subdomain = window.location.host.split('.')[0];\n // (note - pearl) For local cypress testing, update 'test-development' to 'test-cypress'\n const subdomainUrl = subdomain.includes('localhost') ? 'test-development' : subdomain;\n const hostName = getHostName();\n\n window.location.href = `https://${subdomainUrl}.${hostName}.com/api/sources/${sourceId}/authorize?${q}`;\n}\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Button from '@material-ui/core/Button';\n\ninterface Props {\n onClose: () => void;\n}\n\nfunction FullScreenTopBar({ onClose }: Props) {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n appBar: {\n backgroundColor: theme.palette.common.white,\n },\n toolBar: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n}));\n\nexport default FullScreenTopBar;\n","import { defineFetch } from 'resift';\n\nconst makeValidateMappings = defineFetch({\n displayName: 'add member fetch',\n make: (sourceId: string) => ({\n request: (proposedMappings: any[]) => async ({ http }: any) => {\n return http({\n method: 'POST',\n route: `/sources/${sourceId}/validate-mappings`,\n data: { proposedMappings },\n });\n },\n }),\n});\n\nexport default makeValidateMappings;\n","import React from 'react';\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\n\ninterface Props {\n classes: any;\n children: any;\n}\n\nfunction TextBlock({ children, classes }: Props) {\n return
{children}
;\n}\n\nconst styles = defineStyles(theme => {\n return {\n root: {\n width: '100%',\n height: 300,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: theme.palette.grey[300],\n fontSize: 18,\n textAlign: 'center',\n },\n };\n});\n\nexport default withStyles(styles)(TextBlock);\n","import _groupBy from 'lodash/groupBy';\nimport _get from 'lodash/get';\nimport _omit from 'lodash/omit';\nimport * as MappingTypes from 'types/Mapping';\nimport {\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ORG_MAPPING_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nfunction getValidatedMappingCards(\n mappingCards: MappingTypes.MappingCardData[],\n validationResults: MappingTypes.MappingValidationResult[],\n) {\n const rowValidationResults = validationResults.filter((vr: any) => !!vr.mapping);\n\n const validationResultsLookup = _groupBy(rowValidationResults, vr =>\n _get(vr, ['mapping', '_referenceId']),\n );\n\n const orgMappingValidationResults = rowValidationResults.filter(vr =>\n [ORG_TEAM_LEADER_MAPPING_MATCH_KEY, ORG_TEAM_LEADER_MAPPING_REF_KEY].includes(\n _get(vr, ['mapping', 'destination']),\n ),\n );\n const orgValidationLookup = _groupBy(orgMappingValidationResults, vr =>\n _get(vr, ['mapping', 'destination']),\n );\n\n return mappingCards.map(section => {\n if (!section.mappings) {\n return section;\n }\n\n if (section.type === ORG_MAPPING_TYPE_KEY) {\n if (!orgMappingValidationResults.length) {\n return {\n ...section,\n mappings: section.mappings.map(m => {\n return _omit(m, 'validation');\n }),\n };\n }\n\n return {\n ...section,\n mappings: section.mappings.map(m => {\n const lookupKey = _get(m, 'destination');\n const validation = orgValidationLookup[lookupKey];\n\n if (!validation) {\n return _omit(m, 'validation');\n }\n\n if (validation.length > 1) {\n return {\n ...m,\n validation: `${validation.length} issues found, see Mappings Summary for detail`,\n };\n }\n\n return { ...m, validation: validation[0] };\n }),\n };\n }\n\n return {\n ...section,\n mappings: section.mappings.map(m => {\n const _referenceId = _get(m, '_referenceId') || '';\n const validation = validationResultsLookup[_referenceId];\n\n if (!validation) {\n return _omit(m, 'validation');\n }\n\n if (validation.length > 1) {\n return {\n ...m,\n validation: {\n type: validation.some(v => v.type === 'error') ? 'error' : 'warning',\n longDescriptionHtml: `${validation.length} issues found, see Mappings Summary for detail`,\n descriptionHtml: `${validation.length} issues found, see Mappings Summary for detail`,\n },\n };\n }\n\n return { ...m, validation: validation[0] };\n }),\n };\n });\n}\n\nexport default getValidatedMappingCards;\n","import MappingProps, { MappingTypes } from 'types/Mapping';\nimport _get from 'lodash/get';\n\ninterface CustomMappingProps {\n createdAt?: string;\n destination: string;\n id?: string;\n isRequired: boolean;\n isUnique: boolean;\n source: string;\n sourceId?: string;\n type: MappingTypes;\n fromAttributeHeader?: boolean;\n collectionItemCustomType?: string;\n collectionItemType?: string;\n}\n\nexport default function isMappingUpdated(\n initialMapping: MappingProps,\n submittedMapping: CustomMappingProps,\n) {\n const destinationsDontMatch =\n _get(initialMapping, 'destination') !== _get(submittedMapping, 'destination');\n const sourcesDontMatch = _get(initialMapping, 'source') !== _get(submittedMapping, 'source');\n const isUniqueDontMatch = _get(initialMapping, 'isUnique') !== _get(submittedMapping, 'isUnique');\n const isRequiredDontMatch =\n _get(initialMapping, 'isRequired') !== _get(submittedMapping, 'isRequired');\n const typesDontMatch = _get(initialMapping, 'type') !== _get(submittedMapping, 'type');\n const collectionItemCustomTypeDontMatch =\n _get(initialMapping, 'collectionItemCustomType') !==\n _get(submittedMapping, 'collectionItemCustomType');\n const collectionItemTypeDontMatch =\n _get(initialMapping, 'collectionItemType') !== _get(submittedMapping, 'collectionItemType');\n const subSourcesDontMatch =\n _get(initialMapping, `customProps.mappingSubSource`) !==\n _get(submittedMapping, `customProps.mappingSubSource`);\n\n return (\n destinationsDontMatch ||\n sourcesDontMatch ||\n isUniqueDontMatch ||\n isRequiredDontMatch ||\n typesDontMatch ||\n collectionItemCustomTypeDontMatch ||\n collectionItemTypeDontMatch ||\n subSourcesDontMatch\n );\n}\n","import isMappingUpdated from './isMappingUpdated';\nimport _get from 'lodash/get';\n\n// Interfaces\nimport MappingProps, { MappingTypes } from 'types/Mapping';\n\ninterface CustomMappingProps {\n createdAt?: string;\n destination: string;\n id?: string;\n isRequired: boolean;\n isUnique: boolean;\n source: string;\n sourceId?: string;\n type: MappingTypes;\n fromAttributeHeader?: boolean;\n customProps: any;\n}\n\nexport default function createDataBatchActions(\n initialMappings: MappingProps[],\n submittedMappings: CustomMappingProps[],\n sourceId: string,\n) {\n const batchActions: any[] = [];\n\n initialMappings.forEach((im: MappingProps) => {\n const submittedMapping = submittedMappings.find(sm => im.id === sm.id);\n\n // Find all initialMappings that don't exist in submittedMappings\n if (!im.fromAttributeHeader && (!submittedMapping || !submittedMapping.destination)) {\n batchActions.push({ type: 'destroy', id: im.id });\n }\n\n // // Find all submittedMappings with mismatch destinations and sources\n if (submittedMapping && !im.fromAttributeHeader) {\n const changesWereMadeToMapping = isMappingUpdated(im, submittedMapping);\n if (changesWereMadeToMapping) {\n const { id, source, createdAt, customProps, ...smData } = submittedMapping;\n\n id &&\n batchActions.push({\n type: 'update',\n id,\n data: {\n ...smData,\n collectionItemCustomType: _get(submittedMapping, `collectionItemCustomType`) || null,\n collectionItemType: _get(submittedMapping, `collectionItemType`) || null,\n source: _get(submittedMapping, `customProps.mappingSubSource`, source),\n sourceId,\n },\n });\n }\n }\n });\n\n // Find all submittedMappings without IDs\n submittedMappings.forEach(sm => {\n const { id, createdAt, fromAttributeHeader, source, customProps, ...smData } = sm;\n if (!id) {\n batchActions.push({\n type: 'create',\n data: {\n ...smData,\n collectionItemCustomType: _get(sm, `collectionItemCustomType`) || null,\n collectionItemType: _get(sm, `collectionItemType`) || null,\n source: _get(sm, `customProps.mappingSubSource`, source),\n sourceId,\n },\n });\n }\n });\n\n const destroyActions = batchActions.filter(action => action.type === 'destroy' && !!action.id);\n const otherValidActions = batchActions.filter(\n action => !!_get(action, ['data', 'destination']) && !!_get(action, ['data', 'source']),\n );\n\n return [...destroyActions, ...otherValidActions];\n}\n","import _get from 'lodash/get';\nimport isMappingUpdated from './isMappingUpdated';\nimport MappingProps, { BatchAction } from 'types/Mapping';\nimport {\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n PROFILE_ATTR_MAPPING_TYPE_KEY,\n ORG_MAPPING_TYPE_KEY,\n TL_REF_MAPPING_INDEX,\n TL_MATCH_MAPPING_INDEX,\n} from 'pages/Directory/consts';\n\nexport default function createLogisticalBatchActions(\n mappingCards: any,\n sourceMappings: MappingProps[],\n sourceId: string,\n) {\n const initialHierarchyMapping = sourceMappings.find((sm: any) => sm.type === 'hierarchy');\n const logisticalCard = mappingCards.find((card: any) => {\n return card.type === ORG_MAPPING_TYPE_KEY;\n });\n const orgMappings = _get(logisticalCard, `mappings`);\n const initialOrgMappings = _get(logisticalCard, `initialMappings`, []);\n\n const batchActions: BatchAction[] = [];\n\n if (!orgMappings) {\n return [];\n }\n\n // (note - pearl) Destroy existing hierarchy mapping if\n // - there's an initial mapping\n // - and the current mapping doesn't exist or is incomplete\n if (\n initialHierarchyMapping &&\n (orgMappings.length === 0 ||\n !orgMappings[TL_MATCH_MAPPING_INDEX].source ||\n !orgMappings[TL_REF_MAPPING_INDEX].source)\n ) {\n const tlRefSourceMapping = sourceMappings.find(\n m => m.destination === ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ) as MappingProps;\n const tlMatchSourceMapping = sourceMappings.find(\n m => m.destination === ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n ) as MappingProps;\n\n const destroyArray = [];\n\n if (initialHierarchyMapping) {\n destroyArray.push({ type: 'destroy', id: initialHierarchyMapping.id });\n }\n\n if (tlRefSourceMapping) {\n destroyArray.push({ type: 'destroy', id: tlRefSourceMapping.id });\n }\n\n if (tlMatchSourceMapping) {\n destroyArray.push({ type: 'destroy', id: tlMatchSourceMapping.id });\n }\n\n return destroyArray;\n }\n\n if (\n initialOrgMappings &&\n !isMappingUpdated(\n initialOrgMappings[TL_MATCH_MAPPING_INDEX],\n orgMappings[TL_MATCH_MAPPING_INDEX],\n ) &&\n !isMappingUpdated(initialOrgMappings[TL_REF_MAPPING_INDEX], orgMappings[TL_REF_MAPPING_INDEX])\n ) {\n return [];\n }\n\n buildBatchActions({\n refMapping: orgMappings[TL_MATCH_MAPPING_INDEX],\n initialHierarchyMapping: initialOrgMappings[TL_MATCH_MAPPING_INDEX],\n sourceMappings,\n batchActions,\n sourceId: _get(initialHierarchyMapping, 'sourceId') || sourceId,\n });\n\n buildBatchActions({\n refMapping: orgMappings[TL_REF_MAPPING_INDEX],\n initialHierarchyMapping: initialOrgMappings[TL_REF_MAPPING_INDEX],\n sourceMappings,\n batchActions,\n sourceId: _get(initialHierarchyMapping, 'sourceId') || sourceId,\n });\n\n if (!initialHierarchyMapping || !_get(initialHierarchyMapping, 'id')) {\n batchActions.push({\n type: 'create',\n data: {\n source: ORG_TEAM_LEADER_MAPPING_REF_KEY,\n destination: ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n isRequired: false,\n isUnique: false,\n type: 'hierarchy',\n sourceId,\n },\n });\n }\n\n return batchActions;\n}\n\nfunction buildBatchActions({\n batchActions,\n sourceMappings,\n initialHierarchyMapping,\n refMapping,\n sourceId,\n}: any) {\n const existingMapping =\n _get(initialHierarchyMapping, 'destination') &&\n sourceMappings.find((m: any) => m.destination === initialHierarchyMapping.destination);\n\n if (existingMapping && !refMapping) {\n batchActions.push({ type: 'destroy', id: existingMapping.id });\n } else if (!existingMapping || !refMapping.id) {\n batchActions.push({\n type: 'create',\n data: {\n source: _get(refMapping, `customProps.mappingSubSource`) || _get(refMapping, 'source', ''),\n destination: _get(refMapping, 'destination'),\n isRequired: false,\n isUnique: false,\n type: PROFILE_ATTR_MAPPING_TYPE_KEY,\n sourceId,\n collectionItemType: _get(refMapping, `collectionItemType`) || null,\n collectionItemCustomType: _get(refMapping, `collectionItemCustomType`) || null,\n },\n });\n } else if (isMappingUpdated(initialHierarchyMapping, refMapping)) {\n const { id, createdAt, customProps, ...smData } = refMapping;\n\n batchActions.push({\n type: 'update',\n id,\n data: {\n ...smData,\n source: _get(refMapping, `customProps.mappingSubSource`) || _get(refMapping, 'source', ''),\n sourceId,\n type: PROFILE_ATTR_MAPPING_TYPE_KEY,\n collectionItemType: _get(refMapping, `collectionItemType`) || null,\n collectionItemCustomType: _get(refMapping, `collectionItemCustomType`) || null,\n },\n });\n }\n}\n","import getMappings from './getMappingsFromMappingCards';\n\nexport default (mappingCards: any[]) => {\n const mappings = getMappings(mappingCards);\n\n const selectedDestinations = mappings.reduce((acc: any[], mapping: any) => {\n if (mapping.destination) {\n acc.push(mapping.destination);\n }\n return acc;\n }, []);\n\n return selectedDestinations;\n};\n","import _pick from 'lodash/pick';\nimport MappingProps from 'types/Mapping';\nimport {\n ORG_MAPPING_TYPE_KEY,\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n HIERARCHY_MAPPING_KEY,\n} from 'pages/Directory/consts';\n\nconst VALID_PROPS = [\n 'source',\n 'destination',\n 'isRequired',\n 'isUnique',\n 'type',\n '_referenceId',\n 'id',\n 'sourceId',\n 'collectionItemType',\n 'collectionItemCustomType',\n];\n\nfunction transformMappingsForValidation(mappings: MappingProps[]) {\n const filteredMappings = mappings.reduce((acc, mapping) => {\n const { source, destination, type } = mapping;\n\n if (!source || !destination) {\n return acc;\n }\n\n const updatedType = type === ORG_MAPPING_TYPE_KEY ? 'data' : type;\n\n acc.push(_pick({ ...mapping, type: updatedType }, VALID_PROPS));\n\n return acc;\n }, [] as any[]);\n\n if (\n !filteredMappings.some(m => m.type === HIERARCHY_MAPPING_KEY) &&\n filteredMappings.some(m =>\n [ORG_TEAM_LEADER_MAPPING_MATCH_KEY, ORG_TEAM_LEADER_MAPPING_REF_KEY].includes(m.destination),\n )\n ) {\n filteredMappings.push({\n source: ORG_TEAM_LEADER_MAPPING_REF_KEY,\n destination: ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n isRequired: false,\n isUnique: false,\n type: HIERARCHY_MAPPING_KEY,\n });\n }\n\n return filteredMappings;\n}\n\nexport default transformMappingsForValidation;\n","import { createContext } from 'react';\n\nexport default createContext(null);\n","import {\n AZURE_SOURCE_TYPE_KEY,\n CSV_SOURCE_TYPE_KEY,\n GOOGLE_SOURCE_TYPE_KEY,\n LDAP_SOURCE_TYPE_KEY,\n UKG_SOURCE_TYPE_KEY,\n OKTA_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nconst HEADER_NAMES = {\n [CSV_SOURCE_TYPE_KEY]: 'Column Header',\n [AZURE_SOURCE_TYPE_KEY]: 'Microsoft Graph User Property',\n [GOOGLE_SOURCE_TYPE_KEY]: 'Google User Property',\n [LDAP_SOURCE_TYPE_KEY]: 'LDAP User Property',\n [UKG_SOURCE_TYPE_KEY]: 'UKG User Property',\n [OKTA_SOURCE_TYPE_KEY]: 'Okta User Property',\n};\n\nexport default function getSourceHeaderCopy(sourceType: string) {\n // @ts-ignore\n return HEADER_NAMES[sourceType] || `${sourceType} User Property`;\n}\n","export interface PresetItem {\n displayName?: string;\n key: string;\n isDefault: boolean;\n}\nexport interface CollectionItem extends PresetItem {\n displayName: string;\n types: PresetItem[];\n itemProperties: PresetItem[];\n}\nexport default [\n {\n displayName: 'Addresses',\n key: 'addresses',\n itemProperties: [\n {\n key: 'country',\n isDefault: false,\n },\n {\n key: 'countryCode',\n isDefault: false,\n },\n {\n key: 'extendedAddress',\n isDefault: false,\n },\n {\n key: 'formatted',\n isDefault: true,\n },\n {\n key: 'locally',\n isDefault: false,\n },\n {\n key: 'poBox',\n isDefault: false,\n },\n {\n key: 'region',\n isDefault: false,\n },\n {\n key: 'sourceIsStructured',\n isDefault: false,\n },\n {\n key: 'streetAddress',\n isDefault: false,\n },\n ],\n types: [\n { displayName: 'Primary*', key: 'primary', isDefault: true },\n {\n key: 'work',\n isDefault: false,\n },\n {\n key: 'home',\n isDefault: false,\n },\n {\n key: 'other',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Emails',\n key: 'emails',\n itemProperties: [\n {\n key: 'address',\n isDefault: true,\n },\n ],\n types: [\n { displayName: 'Primary*', key: 'primary', isDefault: true },\n {\n key: 'work',\n isDefault: false,\n },\n {\n key: 'home',\n isDefault: false,\n },\n {\n key: 'other',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'ExternalIDs',\n key: 'externalIds',\n itemProperties: [\n {\n key: 'value',\n isDefault: true,\n },\n ],\n types: [\n {\n key: 'account',\n isDefault: true,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n {\n key: 'customer',\n isDefault: false,\n },\n {\n key: 'login_id',\n isDefault: false,\n },\n {\n key: 'network',\n isDefault: false,\n },\n {\n key: 'organization',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Instant Messengers',\n key: 'ims',\n itemProperties: [\n {\n key: 'customProtocol',\n isDefault: false,\n },\n {\n key: 'customType',\n isDefault: false,\n },\n {\n key: 'im',\n isDefault: true,\n },\n {\n key: 'protocol',\n isDefault: false,\n },\n ],\n types: [\n { displayName: 'Primary*', key: 'primary', isDefault: true },\n {\n key: 'work',\n isDefault: false,\n },\n {\n key: 'home',\n isDefault: false,\n },\n {\n key: 'other',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Keywords',\n key: 'keywords',\n itemProperties: [\n {\n key: 'value',\n isDefault: true,\n },\n ],\n types: [\n {\n key: 'mission',\n isDefault: false,\n },\n {\n key: 'occupation',\n isDefault: true,\n },\n {\n key: 'outlook',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Locations',\n key: 'locations',\n itemProperties: [\n {\n key: 'area',\n isDefault: true,\n },\n {\n key: 'buildingId',\n isDefault: false,\n },\n {\n key: 'deskCode',\n isDefault: false,\n },\n {\n key: 'floorName',\n isDefault: false,\n },\n {\n key: 'floorSection',\n isDefault: false,\n },\n ],\n types: [\n {\n key: 'custom',\n isDefault: false,\n },\n {\n key: 'default',\n isDefault: true,\n },\n {\n key: 'desk',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Organizations',\n key: 'organizations',\n itemProperties: [\n {\n key: 'costCenter',\n isDefault: false,\n },\n {\n key: 'department',\n isDefault: false,\n },\n {\n key: 'description',\n isDefault: false,\n },\n {\n key: 'domain',\n isDefault: false,\n },\n {\n key: 'fullTimeEquivalent',\n isDefault: false,\n },\n {\n key: 'location',\n isDefault: false,\n },\n {\n key: 'name',\n isDefault: true,\n },\n {\n key: 'symbol',\n isDefault: false,\n },\n {\n key: 'title',\n isDefault: false,\n },\n ],\n types: [\n { displayName: 'Primary*', key: 'primary', isDefault: true },\n {\n key: 'domain_only',\n isDefault: false,\n },\n {\n key: 'school',\n isDefault: false,\n },\n {\n key: 'unknown',\n isDefault: false,\n },\n {\n key: 'work',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Phones',\n key: 'phones',\n itemProperties: [\n {\n key: 'value',\n isDefault: true,\n },\n ],\n types: [\n { displayName: 'Primary*', key: 'primary', isDefault: true },\n {\n key: 'assistant',\n isDefault: false,\n },\n {\n key: 'callback',\n isDefault: false,\n },\n {\n key: 'car',\n isDefault: false,\n },\n {\n key: 'company_main',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n {\n key: 'grand_central',\n isDefault: false,\n },\n {\n key: 'home',\n isDefault: false,\n },\n {\n key: 'home_fax',\n isDefault: false,\n },\n {\n key: 'isdn',\n isDefault: false,\n },\n {\n key: 'main',\n isDefault: false,\n },\n {\n key: 'mobile',\n isDefault: false,\n },\n {\n key: 'other',\n isDefault: false,\n },\n {\n key: 'other_fax',\n isDefault: false,\n },\n {\n key: 'pager',\n isDefault: false,\n },\n {\n key: 'radio',\n isDefault: false,\n },\n {\n key: 'telex',\n isDefault: false,\n },\n {\n key: 'tty_tdd',\n isDefault: false,\n },\n {\n key: 'work',\n isDefault: false,\n },\n {\n key: 'work_fax',\n isDefault: false,\n },\n {\n key: 'work_mobile',\n isDefault: false,\n },\n {\n key: 'work_pager',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Relations',\n key: 'relations',\n itemProperties: [\n {\n key: 'value',\n isDefault: true,\n },\n ],\n types: [\n {\n key: 'admin_assistant',\n isDefault: false,\n },\n {\n key: 'assistant',\n isDefault: true,\n },\n {\n key: 'bother',\n isDefault: false,\n },\n {\n key: 'child',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n {\n key: 'domestic_partner',\n isDefault: false,\n },\n {\n key: 'dotted_line_manager',\n isDefault: false,\n },\n {\n key: 'exec_assistant',\n isDefault: false,\n },\n {\n key: 'father',\n isDefault: false,\n },\n {\n key: 'friend',\n isDefault: false,\n },\n {\n key: 'manager',\n isDefault: false,\n },\n {\n key: 'mother',\n isDefault: false,\n },\n {\n key: 'parent',\n isDefault: false,\n },\n {\n key: 'partner',\n isDefault: false,\n },\n {\n key: 'referred_by',\n isDefault: false,\n },\n {\n key: 'relative',\n isDefault: false,\n },\n {\n key: 'sister',\n isDefault: false,\n },\n {\n key: 'spouse',\n isDefault: false,\n },\n ],\n },\n {\n displayName: 'Websites',\n key: 'websites',\n itemProperties: [\n {\n key: 'value',\n isDefault: true,\n },\n ],\n types: [\n {\n key: 'app_install_page',\n isDefault: false,\n },\n {\n key: 'blog',\n isDefault: false,\n },\n {\n key: 'custom',\n isDefault: false,\n },\n {\n key: 'ftp',\n isDefault: false,\n },\n {\n key: 'home',\n isDefault: true,\n },\n {\n key: 'home_page',\n isDefault: false,\n },\n {\n key: 'other',\n isDefault: false,\n },\n {\n key: 'profile',\n isDefault: false,\n },\n {\n key: 'reservations',\n isDefault: false,\n },\n {\n key: 'resume',\n isDefault: false,\n },\n {\n key: 'work',\n isDefault: false,\n },\n ],\n },\n] as CollectionItem[];\n","import _get from 'lodash/get';\nimport MAPPING_PRESETS, {\n CollectionItem,\n} from 'components/Mappings/CollectionMapping/MAPPING_PRESETS';\n\nfunction sampleDataLookup(sampleUserData: any, mapping: any) {\n const collectionKey = mapping.source.split('.')[0];\n\n const collectionMapping = MAPPING_PRESETS.find((mp: CollectionItem) => mp.key === collectionKey);\n\n if (!collectionMapping) {\n return null;\n }\n\n const subSource = getSubSource({ collectionMapping, mapping });\n\n const defaultType = collectionMapping.types.find(i => i.isDefault);\n\n const collectionItemType = mapping.collectionItemType\n ? mapping.collectionItemType\n : defaultType\n ? defaultType.key\n : _get(collectionMapping, 'types[0]', '');\n\n const collection = _get(sampleUserData, collectionKey);\n\n let collectionItem;\n\n if (!Array.isArray(collection)) {\n return undefined;\n }\n\n if (mapping.collectionItemCustomType) {\n collectionItem = collection.find((item: any) => item.customType === mapping.collectionItemType);\n } else if (collectionItemType === 'primary') {\n collectionItem = collection.find((item: any) => item.primary === true);\n } else {\n collectionItem = collection.find((item: any) => item.type === collectionItemType);\n }\n\n return _get(collectionItem, subSource);\n}\n\nfunction getSubSource({ collectionMapping, mapping }: any) {\n const defaultSubSource = collectionMapping.itemProperties.find(\n (i: { key: string; isDefault: boolean }) => !!i.isDefault,\n );\n\n return (\n _get(mapping, `customProps.subSource`) ||\n mapping.source.split('.')[1] ||\n _get(defaultSubSource, 'key') ||\n ''\n );\n}\n\nexport default sampleDataLookup;\n","import React, { useState, useContext } from 'react';\nimport _get from 'lodash/get';\nimport { useLocation } from 'react-router';\nimport useAnalytics from 'helpers/useAnalytics';\nimport MappingsContext from 'helpers/MappingsContext';\nimport * as MappingTypes from 'types/Mapping';\nimport { CSV_SOURCE_TYPE_KEY, MAP_ATTRIBUTES_URL, CSV_WIZARD_URL } from 'pages/Directory/consts';\n\n// Components\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MenuList from '@material-ui/core/MenuList';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\nimport classNames from 'classnames';\n\nconst styles = defineStyles(theme => {\n const ITEM_HEIGHT = 48;\n\n return {\n row: {\n padding: theme.spacing(1, 1, 0, 1),\n },\n dividerLine: {\n height: 1,\n backgroundColor: theme.palette.text.secondary,\n margin: theme.spacing(),\n marginTop: 0,\n },\n menuListRoot: {\n maxHeight: ITEM_HEIGHT * 5.5,\n width: 400,\n overflowY: 'auto',\n },\n searchInput: {\n width: '100%',\n },\n subField: {\n marginLeft: theme.spacing(3),\n },\n addProperty: {\n fontWeight: theme.typography.body1.fontWeight,\n textTransform: 'capitalize',\n paddingLeft: theme.spacing(3),\n paddingBottom: theme.spacing(1.75),\n },\n title: {\n ...theme.typography.h5Semibold,\n },\n textField: {\n width: '100%',\n },\n };\n});\n\ninterface Props {\n onSelectAttribute: (attribute: any) => void;\n classes: Classes;\n search: string;\n newPropValue: string | null;\n menuItems: string[];\n onSearch: (e: any) => void;\n onSetNewProp: (value: string | null) => void;\n onSaveCustomProps: () => void;\n}\n\nconst AttributeMenu = (props: Props) => {\n const {\n classes,\n onSelectAttribute,\n onSetNewProp,\n newPropValue,\n onSaveCustomProps,\n onSearch,\n menuItems,\n } = props;\n const analytics = useAnalytics();\n const mappingsContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const { source } = mappingsContext;\n const [addProp, setAddProp] = useState(false);\n const csvOptOut = _get(source, ['setupProgress', 'csvOptOut'], false);\n const location = useLocation();\n const { pathname } = location;\n const csvJustUploaded =\n pathname.includes(MAP_ATTRIBUTES_URL) || pathname.includes(CSV_WIZARD_URL);\n const shouldAllowAddCustomProperty = !(\n csvJustUploaded &&\n source.type === CSV_SOURCE_TYPE_KEY &&\n !csvOptOut\n );\n\n const handleOpen = () => {\n setAddProp(true);\n };\n\n const handleClose = () => {\n setAddProp(false);\n };\n\n const handleEditProp = (e: any) => {\n onSetNewProp(e.target.value);\n };\n\n const handleCancel = () => {\n handleClose();\n onSetNewProp(null);\n };\n\n const handleSave = () => {\n onSaveCustomProps();\n handleClose();\n analytics.track('Mapping Property Created', {\n category: 'AD - Directories',\n label: source.type,\n });\n };\n\n return (\n <>\n
\n
\n \n
\n \n {menuItems.map((attribute: any, index: number) => {\n let secondaryText = '';\n\n return (\n onSelectAttribute(attribute)}\n key={index}\n data-cy={`${attribute}-primary-key-menu-item`}\n >\n \n \n );\n })}\n \n {shouldAllowAddCustomProperty && (\n <>\n
\n \n Use another property...\n \n \n )}\n
\n \n \n Use Another Property\n \n \n \n If there’s a property coming from your source that is not present in the provided\n dropdown, you can add it manually below. For example, this could happen if you have a\n CSV header that will be added to your file later, or if your objects coming from Azure\n AD have dynamic custom properties. Note: For API based sources, Sift supports dot\n notation for inner properties (ex: name.givenName).\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(AttributeMenu);\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport buildMenuItems from '../_helpers/buildMenuItems';\n\n// Components\nimport Select from '@material-ui/core/Select';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\nconst styles = defineStyles(theme => {\n return {\n root: {\n marginBottom: theme.spacing(2),\n },\n selectHeader: {\n fontSize: 13,\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(1),\n },\n select: {\n minWidth: '100%',\n },\n };\n});\n\ninterface Props {\n category: any;\n onChange: (value: any, index: number) => void;\n globalConfig: any;\n selectInputIndex: number;\n classes: Classes;\n}\n\nfunction SelectInput(props: Props) {\n const { classes, onChange, category, selectInputIndex, globalConfig } = props;\n const initialState = category.children.length === 1 ? 0 : -1;\n const [value, setValue] = useState(initialState);\n\n // On Mount, it will default to the only child if the category only has one option\n useEffect(() => {\n if (value !== -1) {\n const { type, name } = category.children[value];\n const output =\n type === 'category' ? globalConfig.categories[name] : globalConfig.fields[name];\n\n onChange(output, selectInputIndex);\n }\n }, []);\n\n const headerDisplayName = selectInputIndex === 0 ? 'Sub Category' : 'Attribute Type';\n\n const menuItems = useMemo(\n () => buildMenuItems(category.children, globalConfig, `Select ${headerDisplayName}`),\n [category.children],\n );\n\n const handleChange = useCallback(\n e => {\n const menuItemIndex = e.target.value;\n setValue(menuItemIndex);\n if (menuItemIndex !== -1) {\n const { type, name } = category.children[menuItemIndex];\n const output =\n type === 'category' ? globalConfig.categories[name] : globalConfig.fields[name];\n\n onChange(output, selectInputIndex);\n } else {\n onChange(undefined, selectInputIndex);\n }\n },\n [onChange],\n );\n\n return (\n
\n
{headerDisplayName}
\n \n
\n );\n}\n\nexport default withStyles(styles)(SelectInput);\n","import React from 'react';\n\n// Components\nimport MenuItem from '@material-ui/core/MenuItem';\n\ninterface MenuItem {\n categoryOfCategories: boolean;\n isSubCategory: boolean;\n id: string;\n displayName: string;\n}\n\nexport default function buildCategoryMenuItems(\n categoryChildren: any[],\n globalConfig: any,\n firstMenuItemDisplayName: string,\n) {\n const menuItems = categoryChildren.map((item: any, index: number) => {\n const globalType = item.type === 'category' ? globalConfig.categories : globalConfig.fields;\n const { displayName, id } = globalType[item.name];\n\n return (\n \n {displayName}\n \n );\n });\n\n menuItems.unshift(\n \n {firstMenuItemDisplayName}\n ,\n );\n\n return menuItems;\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport _get from 'lodash/get';\n\n// Components\nimport SelectInput from './SelectInput';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\nconst styles = defineStyles(theme => {\n return {\n root: {\n marginBottom: theme.spacing(2),\n },\n };\n});\n\ninterface Props {\n categoryId?: string;\n onChange: (value: any) => void;\n globalConfig: any;\n classes: Classes; // HOC\n}\n\nfunction AddAttribute(props: Props) {\n const { classes, categoryId, onChange, globalConfig } = props;\n\n const initialState = createInitialState(categoryId, globalConfig);\n const [selectInputs, setSelectInputs] = useState(initialState);\n\n useEffect(() => {\n const initialState = createInitialState(categoryId, globalConfig);\n setSelectInputs(initialState);\n }, [categoryId]);\n\n const handleChange = useCallback(\n (newSelectInputValue, selectInputIndex) => {\n const clonedSelectedInputs = selectInputs.slice(0, selectInputIndex + 1);\n if (newSelectInputValue) {\n clonedSelectedInputs.push(newSelectInputValue);\n }\n\n setSelectInputs(clonedSelectedInputs);\n\n // User has reached a list of fields\n if (newSelectInputValue && !newSelectInputValue.children) {\n onChange({\n baseField: newSelectInputValue.id,\n type: newSelectInputValue.type,\n });\n } else {\n onChange({\n baseField: undefined,\n type: undefined,\n });\n }\n },\n [selectInputs, onChange],\n );\n\n return (\n
\n {selectInputs.map((category, index) => {\n // Every category has a children Prop. If one isn't there the field has been selected\n if (!category.children) {\n return null;\n }\n\n return (\n \n );\n })}\n
\n );\n}\n\nexport default withStyles(styles)(AddAttribute);\n\nfunction createInitialState(categoryId: string | undefined, globalConfig: any) {\n const rootCategory =\n categoryId && _get(globalConfig, `categories[${categoryId}]`)\n ? globalConfig.categories[categoryId]\n : globalConfig.categories.basic;\n\n return [rootCategory];\n}\n","import React from 'react';\nimport useGlobalConfig from 'helpers/useGlobalConfig';\n\n// Components\nimport AddAttribute from './AddAttribute';\n\ninterface Props {\n categoryId?: string;\n onChange: (value: any) => void;\n}\n\nfunction Container(props: Props) {\n const globalConfig = useGlobalConfig();\n\n return ;\n}\n\nexport default Container;\n","import React, { useState, useEffect } from 'react';\nimport _split from 'lodash/split';\nimport _get from 'lodash/get';\n\n// Components\nimport TextField from '@material-ui/core/TextField';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\n\nconst styles = defineStyles(theme => {\n return {\n row: {\n marginBottom: theme.spacing(2),\n paddingTop: 0,\n },\n inputLabel: {\n '&$cssFocused': {\n color: theme.palette.secondary.main,\n },\n },\n\n cssOutlinedInput: {\n '&$cssFocused': {\n color: theme.palette.secondary.main,\n },\n },\n cssFocused: {},\n\n multilineTextField: {\n marginLeft: -1,\n '& label': {\n padding: theme.spacing(0.5),\n },\n '& textarea': {\n padding: theme.spacing(0.25),\n marginTop: theme.spacing(-0.25),\n },\n },\n characterCount: {\n height: 18,\n display: 'flex',\n justifyContent: 'flex-end',\n },\n };\n});\n\ninterface Props {\n onChange: (newAttribute: any) => void;\n classes: Classes;\n attribute?: any;\n}\n\nconst maxLength = 200;\n\nfunction AttributeInputForm(props: Props) {\n const { classes, onChange, attribute } = props;\n const attributeDisplayName = _get(attribute, 'displayName', '');\n const attributeDescription = _get(attribute, 'display.description', '');\n\n return (\n <>\n
\n onChange({ displayName: e.target.value })}\n InputLabelProps={{\n classes: {\n root: classes.inputLabel,\n focused: classes.cssFocused,\n },\n }}\n fullWidth\n inputProps={{\n maxLength: 40,\n 'aria-label': attributeDisplayName,\n }}\n />\n
\n
\n onChange({ display: { description: e.target.value } })}\n className={classes.multilineTextField}\n multiline\n rows=\"4\"\n fullWidth\n InputLabelProps={{\n classes: {\n root: classes.inputLabel,\n focused: classes.cssFocused,\n },\n }}\n inputProps={{\n placeholder: `If you'd like to explain this attribute in greater detail to your users, add a description here!`,\n maxLength,\n 'aria-label': 'description',\n }}\n />\n {attributeDescription.length > 100 && (\n
\n {attributeDescription.length}/{maxLength}\n
\n )}\n
\n \n );\n}\n\nexport default withStyles(styles)(AttributeInputForm);\n","import React, { useEffect, useState } from 'react';\nimport _get from 'lodash/get';\n\n// Components\nimport Terminology from 'components/Terminology';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\n\nconst styles = defineStyles(theme => {\n return {\n title: {\n width: 500,\n },\n formControlLabel: {\n maxWidth: theme.spacing(12),\n },\n row: {\n marginBottom: theme.spacing(2),\n },\n radioRow: {\n display: 'flex',\n alignItems: 'center',\n fontSize: 16,\n },\n radioGroup: {\n flexDirection: 'row',\n marginLeft: theme.spacing(2),\n minWidth: 140,\n maxWidth: 240,\n width: '100%',\n justifyContent: 'space-around',\n },\n subTitle: {\n fontSize: 13,\n color: theme.palette.secondary.main,\n marginTop: theme.spacing(0.5),\n },\n };\n});\n\ninterface Props {\n onChange: (newAttribute: any) => void;\n classes: Classes;\n attribute?: any;\n}\n//TODO Tyler: This Component has weird state issues. In AttributesEdit, if valueREadOnly is false,\n// and you cannot display on team member profiles, if you switch to yes,\n// the hit cancel, it reverts state. If valueReadOnly is true, it does not revert to original state.\nfunction AttributeRadioForm(props: Props) {\n const { classes, onChange, attribute } = props;\n\n const attributeConnectDisplayed = _get(attribute, 'connectDisabled', false);\n const attributeValueReadOnly = _get(attribute, 'valueReadOnly', false);\n const attributeCanBePrivatized = _get(attribute, 'valueCanBePrivatized', false);\n\n // FormControlValues do not support booleans. So this cast function is requires to cast the string to boolean\n const castBool = (stringToBool: 'true' | 'false') => {\n if (stringToBool === 'true') {\n return true;\n }\n return false;\n };\n\n return (\n <>\n
\n
\n {/* Display on profiles */}\n Enable attribute (if disabled, will not appear anywhere in Sift)\n
\n onChange({ connectDisabled: castBool(e.target.value) })}\n >\n }\n label=\"Yes\"\n />\n } label=\"No\" />\n \n
\n\n
\n
\n Allow to edit attribute\n content\n
\n Note: \n Users will not be able to edit data if it is mapped from a data source.\n
\n
\n onChange({ valueReadOnly: castBool(e.target.value) })}\n >\n }\n label=\"Yes\"\n />\n } label=\"No\" />\n \n
\n\n
\n
\n Allow to hide this attribute\n on their profile?\n
\n Note: \n Admins will still have the ability to see this value.\n
\n
\n onChange({ valueCanBePrivatized: castBool(e.target.value) })}\n >\n }\n label=\"Yes\"\n />\n } label=\"No\" />\n \n
\n \n );\n}\n\nexport default withStyles(styles)(AttributeRadioForm);\n","import React, { useCallback, useState } from 'react';\nimport _get from 'lodash/get';\n\n// Components\nimport AddAttribute from 'components/BuildAttribute/AddAttribute';\nimport AttributeInputForm from 'components/BuildAttribute/AttributeInputForm';\nimport AttributeRadioForm from 'components/BuildAttribute/AttributeRadioForm';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\n\nimport { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nconst styles = defineStyles(theme => {\n return {\n dialogPaper: {\n minWidth: 500,\n },\n cancelButton: {\n marginRight: theme.spacing(1),\n },\n };\n});\n\ninterface Props {\n onCreate: (newAttribute: NewAttribute) => void;\n\n // container\n isCreateAttributeDialogOpen: boolean;\n createCategoryField: (attribute: any) => any;\n toggleCreateAttributeDialog: () => any;\n\n // HOC\n classes: Classes;\n}\n\ninterface NewAttribute {\n category: string | 0; // 0 is for the unselected field\n displayName: string;\n entityField: string;\n baseField: string;\n type: string;\n}\n\nconst initialState: NewAttribute = {\n category: 0,\n displayName: '',\n entityField: PERSON_ENTITY_TYPE_KEY,\n baseField: '',\n type: '',\n};\n\nfunction CreatedAttributeDialog(props: Props) {\n const {\n onCreate,\n // Connector\n isCreateAttributeDialogOpen,\n createCategoryField,\n toggleCreateAttributeDialog,\n classes, // HOC\n } = props;\n\n const [disableSubmit, setDisableSubmit] = useState(false);\n const [newAttribute, setNewAttribute] = useState(initialState);\n\n const handleChangeAttribute = useCallback(\n (value: any) => {\n setNewAttribute({\n ...newAttribute,\n ...value,\n });\n },\n [newAttribute],\n );\n\n // Handle Submit\n const handleSubmitAttribute = async () => {\n setDisableSubmit(true);\n const { body } = await createCategoryField(newAttribute);\n\n // HACK Jules: once we can use async with fetches, this will not be a problem.\n setTimeout(() => {\n onCreate(body);\n toggleCreateAttributeDialog();\n setDisableSubmit(false);\n }, 200);\n };\n\n return (\n \n Create an Attribute\n \n \n {!!newAttribute.baseField && (\n <>\n \n \n \n )}\n \n \n \n \n Create\n \n \n \n );\n}\n\nexport default withStyles(styles)(CreatedAttributeDialog);\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\n// View\nimport CreateAttributeDialog from './CreateAttributeDialog';\n\n// Actions\nimport { toggleCreateAttributeDialog, createCategoryField } from 'store/attribute';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\n\ninterface Props {\n onCreate: (newAttribute: any) => void;\n}\n\nexport default function CreateAttributeDialogContainer(props: Props) {\n const entityTypesFetch = makeEntityTypesFetch();\n\n const isCreateAttributeDialogOpen = useSelector(\n (state: any) => state.attribute.isCreateAttributeDialogOpen,\n );\n\n const dispatch = useDispatch();\n const handleToggleCreateAttributeDialog = () => {\n dispatch(toggleCreateAttributeDialog());\n };\n\n const handleCreateCategoryField = async (newAttribute: any) => {\n const data = await dispatch(createCategoryField(newAttribute));\n await dispatch(entityTypesFetch());\n return data;\n };\n\n return (\n \n );\n}\n","import React, { useState, useMemo, useCallback, useContext } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MappingsContext from 'helpers/MappingsContext';\n\nimport Popper from '@material-ui/core/Popper';\nimport Grow from '@material-ui/core/Grow';\nimport Paper from '@material-ui/core/Paper';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport AttributeMenu from './AttributeMenu';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport CreateAttributeDialog from 'components/Mappings/CreateAttributeDialog';\n\nimport * as MappingTypes from 'types/Mapping';\n\ninterface Props {\n placeholderText?: string;\n onChange: (value: any) => void;\n value: string;\n isSourceCollapsed?: boolean;\n isCsvSource?: boolean;\n}\n\nfunction SourceSelector({\n placeholderText: _placeholderText,\n onChange,\n value,\n isSourceCollapsed = false,\n isCsvSource,\n}: Props) {\n const classes = useStyles();\n const selectedAttributeDisplayName = isSourceCollapsed ? value.split('.')[0] : value;\n const [anchorEl, setAnchorEl] = useState(null);\n const placeholderProperty = isCsvSource ? 'header' : 'property';\n const placeholderText = _placeholderText || `Assign a source ${placeholderProperty}`;\n const displayName = selectedAttributeDisplayName || placeholderText;\n const mappingsContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const { sourceAttrOptions, onAddCustomSourceAttribute } = mappingsContext;\n\n const handleToggle = (e: React.MouseEvent) => {\n setAnchorEl(anchorEl ? null : e.currentTarget);\n };\n\n const handleClickAway = () => {\n setAnchorEl(null);\n };\n\n function handleSelectAttribute(newAttribute: any) {\n onChange(newAttribute);\n setAnchorEl(null);\n }\n\n const [search, setSearch] = useState('');\n const [newPropValue, setNewPropValue] = useState(null);\n\n const menuItems = useMemo(() => {\n const list = sourceAttrOptions.filter(attribute => {\n return attribute.includes(search.toLowerCase());\n });\n\n return list;\n }, [search, sourceAttrOptions]);\n\n const handleSearch = useCallback(e => setSearch(e.target.value), [setSearch]);\n\n const handleUpdateCustomProp = (value: any) => {\n setNewPropValue(value);\n };\n\n const handleSaveCustomProps = () => {\n !!newPropValue && onAddCustomSourceAttribute(newPropValue);\n handleSelectAttribute(newPropValue);\n };\n\n return (\n <>\n
\n
\n {displayName}\n
\n \n
\n \n {({ TransitionProps }) => (\n \n \n \n \n \n \n \n )}\n \n {!!anchorEl && }\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '& .MuiTextField-root': {\n margin: theme.spacing(1),\n width: '25ch',\n },\n },\n displayNameContainer: {\n height: 38,\n padding: theme.spacing(1),\n fontSize: 16,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n transition: 'backgroundColor .4s',\n backgroundColor: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.text.secondary}`,\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n },\n displayName: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n hasError: {\n borderBottom: `2px solid ${theme.palette.error.main}`,\n },\n dropdownIcon: {\n color: theme.palette.text.secondary,\n },\n\n popperRoot: {\n // @ts-ignore\n zIndex: theme.zIndex.surface,\n },\n paperRoot: {\n overflow: 'hidden',\n },\n}));\n\nexport default SourceSelector;\n","import React from 'react';\nimport SourceSelector from './SourceSelector';\n\ninterface Props {\n placeholderText?: string;\n onChange: (value: any) => void;\n value: string;\n isSourceCollapsed?: boolean;\n isCsvSource?: boolean;\n}\n\nfunction Container({ placeholderText, onChange, value, isSourceCollapsed, isCsvSource }: Props) {\n return (\n \n );\n}\n\nexport default Container;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { IconProps } from '@material-ui/core/Icon';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport ErrorIcon from '@material-ui/icons/Cancel';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\n\n/**\n * This molecule presents an icon to indicate validation status,\n * and a description when hover over the icon\n */\n\ninterface Props extends IconProps {\n status: 'error' | 'warning' | 'success';\n description?: string;\n}\n\nfunction ValidationStatusIndicator({ status = 'success', description = '' }: Props) {\n const classes = useStyles();\n\n const iconLookup = {\n error: ,\n warning: ,\n };\n\n if (status === 'success') {\n return (\n
\n \n
\n );\n }\n\n return (\n
\n }>\n {iconLookup[status]}\n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n float: 'right',\n },\n warning: {\n color: theme.palette.warning.main,\n },\n success: {\n color: theme.palette.success.main,\n },\n}));\n\nexport default ValidationStatusIndicator;\n","const blackListedTypes: any = {\n languageItem: true,\n education: true,\n experience: true,\n};\n\nexport default function isAttributeBlackListed(attribute: any) {\n return !!blackListedTypes[attribute.type];\n}\n","import _get from 'lodash/get';\nimport isAttributeBlackListed from './isAttributeBlackListed';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\n\n/**\n * The resulting attribute list contains fields that are:\n * - Non object attributes, unless it's `page`\n * - Non collection attributes unless it's\n * - simple text collections that aren't child attributes\n * - pageCollection\n * - Non child attributes unless it's a direct child field to reachOutToMeFor\n */\n\nexport default (\n { _fields: fields }: any,\n remainingSourceMappings: any[],\n selectedDestinations: string[],\n) => {\n const fieldsKeys = Object.keys(fields);\n\n const attributes = fieldsKeys.reduce((acc: any[], fieldKey: string) => {\n const attribute = { ...fields[fieldKey] };\n if (!isAttributeAllowed(attribute, Object.values(fields))) {\n return acc;\n }\n\n // This line of code slows down the creating of a menu list\n const isInAnotherSourceMapping = remainingSourceMappings.find(\n mapping => mapping.destination === attribute.objectKey,\n );\n\n if (isInAnotherSourceMapping) {\n attribute.mappedToSource = isInAnotherSourceMapping.fromSource;\n }\n\n // This line of code slows down the creating of a menu list\n const isAttributeSelected = selectedDestinations.some(destination => {\n return attribute.objectKey === destination;\n });\n\n if (isAttributeSelected) {\n attribute.alreadySelected = true;\n }\n\n acc.push(attribute);\n return acc;\n }, []);\n\n return attributes;\n};\n\nfunction isAttributeAllowed(attribute: any, fields: any[]) {\n const isDirectReachOutToMeForChild = (attribute: any) => {\n const reachOutToMeForField = fields.find(f => f.objectKey === 'reachOutToMeFor');\n if (!reachOutToMeForField) {\n return false;\n }\n\n return reachOutToMeForField.fields.includes(attribute.objectKey);\n };\n\n const isChildField = (attribute: any) => attribute.objectKey.includes('.');\n\n // Don't allow for blacklisted Attributes\n if (isAttributeBlackListed(attribute)) {\n return false;\n }\n\n if (isDirectReachOutToMeForChild(attribute)) {\n return true;\n }\n\n if (!isChildField(attribute) && _get(attribute, 'item.type') === 'text') {\n return true;\n }\n\n if (\n attribute.baseField === BASE_FIELD_PAGE ||\n attribute.baseField === BASE_FIELD_PAGE_COLLECTION\n ) {\n return true;\n }\n\n if (attribute.type === 'object' || attribute.type === 'collection') {\n return false;\n }\n\n if (isChildField(attribute)) {\n return false;\n }\n\n return true;\n}\n","import React, { useMemo, useCallback, useState } from 'react';\nimport _partition from 'lodash/partition';\n\n// Components\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MenuList from '@material-ui/core/MenuList';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport TextField from '@material-ui/core/TextField';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\nimport classNames from 'classnames';\nimport { REQUIRED_PROFILE_ATTR_KEYS } from 'pages/Directory/consts';\n\nconst styles = defineStyles(theme => {\n const ITEM_HEIGHT = 48;\n\n return {\n row: {\n padding: theme.spacing(1, 1, 0, 1),\n },\n dividerLine: {\n width: '100%',\n height: 1,\n backgroundColor: theme.palette.text.secondary,\n },\n menuListRoot: {\n maxHeight: ITEM_HEIGHT * 5.5,\n width: 400,\n overflowY: 'auto',\n },\n searchInput: {\n width: '100%',\n },\n subField: {\n marginLeft: theme.spacing(3),\n },\n };\n});\n\ninterface Props {\n onSelectAttribute: (attribute: any) => void;\n attributes: any[];\n isPrimary: boolean;\n toggleCreateAttributeDialog: () => any;\n classes: Classes;\n}\n\nconst AttributeMenu = (props: Props) => {\n const { classes, attributes, onSelectAttribute, isPrimary } = props;\n const [search, setSearch] = useState('');\n\n const menuItems = useMemo(() => {\n const mappableAttributes = attributes.filter(attribute => attribute.mappable);\n const list = mappableAttributes.filter(attribute => {\n const displayName = attribute.displayName ? attribute.displayName.toLowerCase() : '';\n return displayName.includes(search.toLowerCase());\n });\n\n const menuItems = list.sort((a, b) => (a.displayName > b.displayName ? 1 : -1));\n return menuItems;\n }, [search, attributes]);\n\n const [requiredItems, otherItems] = _partition(menuItems, m =>\n REQUIRED_PROFILE_ATTR_KEYS.includes(m.objectKey),\n );\n\n const handleSearch = useCallback(e => setSearch(e.target.value), [setSearch]);\n\n return (\n <>\n
\n
\n
\n \n
\n \n {isPrimary && (\n <>\n
Required Attributes
\n {requiredItems.map((attribute: any, index: number) => (\n onSelectAttribute(attribute)}\n disabled={\n !!attribute.mappedToSource || attribute.isObject || attribute.alreadySelected\n }\n key={index}\n data-cy={`${attribute.displayName}-required-menu-item`}\n >\n \n \n ))}\n
Other Attributes
\n \n )}\n\n {otherItems.map((attribute: any, index: number) => (\n onSelectAttribute(attribute)}\n disabled={\n !!attribute.mappedToSource || attribute.isObject || attribute.alreadySelected\n }\n key={index}\n data-cy={`${attribute.displayName}-other-menu-item`}\n >\n \n \n ))}\n
\n
\n \n );\n};\n\nexport default withStyles(styles)(AttributeMenu);\n","import { defineFetch } from 'resift';\nimport SourceType from 'types/Source';\nimport Directory from 'types/Directory';\n\nexport default defineFetch({\n displayName: 'Get All Source Mappings From Directory',\n make: (directoryId: string) => ({\n key: [directoryId],\n request: (directory: Directory, currentSourceId: string) => async ({ http }) => {\n const { sources } = directory;\n\n const sourcesWithoutCurrentSource = sources.filter(\n (source: SourceType) => source.id !== currentSourceId,\n );\n\n const allSourceMappings = await Promise.all(\n sourcesWithoutCurrentSource.map(({ id }: any) => {\n return http({\n method: 'GET',\n route: '/source-mappings',\n query: { sourceId: id },\n });\n }),\n );\n\n return allSourceMappings.reduce((acc: any[], sourceMapping: any, index) => {\n const parentSource = sourcesWithoutCurrentSource[index];\n\n const newSourceMapping = sourceMapping.map((sourceMapping: any) => ({\n ...sourceMapping,\n fromSource: parentSource.label,\n }));\n\n return [...newSourceMapping, ...acc];\n }, []);\n },\n }),\n});\n","import { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useData, useStatus } from 'resift';\nimport { useDispatch } from 'react-redux';\n\n// Interfaces\nimport Directory from 'types/Directory';\n\n// Actions\nimport makeAllSourceMappingsFetch from 'store/mappings/actions/allSourceMappingsFetch';\n\ninterface Container {\n directory: Directory;\n sourceId: string;\n}\n\nexport default function({ directory, sourceId }: Container) {\n const dispatch = useDispatch();\n const directoryId = _get(directory, ['id']);\n const allSourceMappingsFetch = makeAllSourceMappingsFetch(directoryId);\n\n useEffect(() => {\n dispatch(allSourceMappingsFetch(directory, sourceId)); // sourceId\n }, [sourceId]);\n\n const data = useData(allSourceMappingsFetch);\n const status = useStatus(allSourceMappingsFetch);\n\n return [data, status];\n}\n","import React, { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport _get from 'lodash/get';\nimport SourceType from 'types/Source';\n\n// Interfaces\nimport DirectoryProps from 'types/Directory';\n\n// Helpers\nimport createAttributes from './_helpers/createAttributes';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\n// Actions\nimport { toggleCreateAttributeDialog } from 'store/attribute';\n\n// Components\nimport withSource from 'components/withSource';\nimport AttributeMenu from './AttributeMenu';\nimport useAllSourceMappings from 'components/Mappings/_helpers/useAllSourceMappings';\n\ninterface Props {\n onSelectAttribute: (attribute: any) => void;\n onClose: () => void;\n selectedDestinations: string[];\n sourceId: string;\n source: SourceType;\n directory: DirectoryProps;\n}\n\n// Container\nconst AttributeMenuContainer = (props: Props) => {\n const { sourceId, directory, selectedDestinations, source, ...otherProps } = props;\n\n const entityTypes = useEntityTypes();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const { isPrimary } = source;\n\n const dispatch = useDispatch();\n const handleToggleCreateAttributeDialog = () => {\n dispatch(toggleCreateAttributeDialog());\n };\n\n const remainingSourceMappings = useAllSourceMappings({ directory, sourceId })[0] || [];\n const initialAttributes = useMemo(\n () => createAttributes(userConfig, remainingSourceMappings, selectedDestinations),\n [userConfig, remainingSourceMappings, selectedDestinations],\n );\n\n // Validation\n\n return (\n \n );\n};\n\nexport default withSource(AttributeMenuContainer);\n","import React, { useState } from 'react';\nimport _get from 'lodash/get';\n\n// Components\nimport Grow from '@material-ui/core/Grow';\nimport Paper from '@material-ui/core/Paper';\nimport Popper from '@material-ui/core/Popper';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport AttributeMenu from './AttributeMenu';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport CreateAttributeDialog from 'components/Mappings/CreateAttributeDialog';\n\n// Styles\nimport classNames from 'classnames';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\n\nconst styles = defineStyles(theme => {\n return {\n displayValue: {\n height: 38,\n padding: theme.spacing(1),\n fontSize: 16,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n transition: 'backgroundColor .4s',\n backgroundColor: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.text.secondary}`,\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n },\n dropdownIcon: {\n color: theme.palette.text.secondary,\n },\n\n popperRoot: {\n zIndex: theme.zIndex.surface,\n },\n paperRoot: {\n overflow: 'hidden',\n },\n };\n});\n\ninterface Props {\n displayValue: string;\n onSelectAttribute: (attribute: any) => void;\n selectedDestinations: string[];\n isCreateAttributeDialogOpen: boolean; // container\n classes: Classes; // HOC\n}\n\nconst AttributeSelector = (props: Props) => {\n const {\n classes,\n displayValue,\n onSelectAttribute,\n isCreateAttributeDialogOpen,\n selectedDestinations,\n } = props;\n\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleToggle = (e: React.MouseEvent) => {\n setAnchorEl(anchorEl ? null : e.currentTarget);\n };\n\n function handleSelectAttribute(newAttribute: any) {\n onSelectAttribute(newAttribute);\n setAnchorEl(null);\n }\n\n function handleClickAway() {\n if (!isCreateAttributeDialogOpen) {\n setAnchorEl(null);\n }\n }\n\n return (\n <>\n
\n {displayValue || 'Not Mapped - Click to Assign'}\n \n
\n \n {({ TransitionProps }) => (\n \n \n \n \n \n \n \n )}\n \n {!!anchorEl && }\n \n );\n};\n\nexport default withStyles(styles)(AttributeSelector);\n","import { connect } from 'react-redux';\n\n// View\nimport AttributeSelector from './AttributeSelector';\n\nconst mapStateToProps = (state: any) => {\n return {\n isCreateAttributeDialogOpen: state.attribute.isCreateAttributeDialogOpen,\n };\n};\n\nexport default connect(\n mapStateToProps,\n {},\n)(AttributeSelector);\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport classNames from 'classnames';\nimport { PresetItem } from './MAPPING_PRESETS';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport TextField from '@material-ui/core/TextField';\nimport Select from '@material-ui/core/Select';\nimport FormControl from '@material-ui/core/FormControl';\n\ninterface Props {\n mapping: any;\n onChange: (newMapping: any) => void;\n flexDirection?: 'row' | 'column';\n subSource: string;\n collectionMapping: any;\n collectionItemType: string;\n collectionItemCustomType: string;\n rootKey: string;\n}\n\nfunction CollectionMapping({\n mapping,\n flexDirection = 'row',\n onChange,\n subSource,\n collectionMapping,\n collectionItemType,\n collectionItemCustomType,\n rootKey,\n}: Props) {\n const classes = useStyles();\n\n function handleTypeChange(e: any) {\n const newType = e.target.value;\n const defaultSubSource = collectionMapping.itemProperties.find((i: any) => !!i.isDefault);\n\n onChange({\n ...mapping,\n collectionItemType: newType,\n collectionItemCustomType: newType === 'custom' ? '' : null,\n customProps: {\n ..._get(mapping, `customProps`, {}),\n mappingSubSource: `${rootKey}.${_get(defaultSubSource, 'key')}`,\n subSource: _get(defaultSubSource, 'key'),\n },\n });\n }\n\n function handlePropertiesChange(e: any) {\n onChange({\n ...mapping,\n customProps: {\n ..._get(mapping, `customProps`, {}),\n subSource: e.target.value,\n mappingSubSource: `${rootKey}.${e.target.value}`,\n },\n });\n }\n\n function handleCustomTypeChange(e: any) {\n onChange({\n ...mapping,\n collectionItemCustomType: e.target.value,\n });\n }\n\n return (\n
\n \n Collection Mapping Settings\n \n \n \n Item Type\n \n {collectionMapping.types.map((t: PresetItem) => {\n return (\n \n {t.displayName || t.key}\n \n );\n })}\n \n \n {collectionItemType === 'custom' && (\n \n \n \n )}\n \n \n Item Property\n \n \n {collectionMapping.itemProperties.map((t: PresetItem) => {\n return (\n \n {t.key}\n \n );\n })}\n \n \n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {\n paddingTop: theme.spacing(),\n },\n formRoot: {\n marginTop: theme.spacing(0.5),\n display: 'flex',\n '& > div': {\n flex: 'auto',\n marginBottom: theme.spacing(0.5),\n maxWidth: 200,\n },\n '& > div:not(:last-child)': {\n marginRight: theme.spacing(4),\n },\n },\n formRootColumn: {\n flexDirection: 'column',\n },\n };\n});\n\nexport default CollectionMapping;\n","import React, { useMemo } from 'react';\nimport _get from 'lodash/get';\nimport CollectionMapping from './CollectionMapping';\nimport _MAPPING_PRESETS, { CollectionItem } from './MAPPING_PRESETS';\n\nexport const MAPPING_PRESETS = _MAPPING_PRESETS;\n\ninterface Props {\n mapping: any;\n value: string;\n onChange: (newMapping: any) => void;\n flexDirection?: 'row' | 'column';\n}\n\nexport default function CollectionMappingContainer(props: Props) {\n const { mapping, value } = props;\n const rootKey = value.split('.')[0];\n\n const collectionMapping = useMemo(() => {\n return MAPPING_PRESETS.find((mp: CollectionItem) => mp.key === rootKey);\n }, [rootKey]) as CollectionItem;\n\n if (!collectionMapping) {\n return null;\n }\n\n const subSource = getSubSource({ collectionMapping, mapping });\n const defaultType = collectionMapping.types.find(i => i.isDefault);\n\n const collectionItemType = mapping.collectionItemType\n ? mapping.collectionItemType\n : defaultType\n ? defaultType.key\n : _get(collectionMapping, 'types[0]', '');\n\n return (\n \n );\n}\n\nfunction getSubSource({ collectionMapping, mapping }: any) {\n const defaultSubSource = collectionMapping.itemProperties.find(\n (i: { key: string; isDefault: boolean }) => !!i.isDefault,\n );\n\n return (\n _get(mapping, `customProps.subSource`) ||\n mapping.source.split('.')[1] ||\n _get(defaultSubSource, 'key') ||\n ''\n );\n}\n","import React, { useMemo, useEffect, useContext } from 'react';\nimport classNames from 'classnames';\nimport { useData } from 'resift';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport usePrevious from '@sift/resift/usePrevious';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport useSyncInfo from 'components/DirectoryInfoBar/helpers/useSyncInfo';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport MappingsContext from 'helpers/MappingsContext';\nimport sampleDataLookup from 'components/Mappings/_helpers/sampleDataLookup';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport sourceTypes from 'consts/sourceTypes';\nimport { SyncStatus } from 'types/Source';\nimport { PRIMARY_MAPPING_TYPE_KEY } from 'pages/Directory/consts';\n\nimport Button from '@material-ui/core/Button';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport Collapse from '@material-ui/core/Collapse';\nimport SourceSelector from 'components/Mappings/SourceSelector';\nimport ValidationStatusIndicator from 'atoms/ValidationStatusIndicator';\nimport AttributeSelector from '../AttributeSelector';\nimport CollectionMapping, { MAPPING_PRESETS } from '../CollectionMapping';\n\ninterface Props {\n mapping: MappingProps;\n rowIndex: number;\n onDeleteMapping: (index: number) => void;\n onUpdateMapping: (index: number, newMapping: any) => void;\n}\n\nfunction MappingsRow({ mapping, onDeleteMapping, rowIndex, onUpdateMapping }: Props) {\n const classes = useStyles();\n const entityTypes = useEntityTypes();\n const mappingContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const { source, selectedDestinations } = mappingContext;\n const syncStatus = _get(source, 'syncStatus', {}) as SyncStatus;\n const syncInfo = useSyncInfo(syncStatus);\n const { syncHasRun } = syncInfo;\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const userConfigFields = _get(userConfig, '_fields', {});\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n const mappingAttributes = useData(getMappingsAttributes);\n const sampleUserData = _get(mappingAttributes, 'sampleData', {});\n const { source: mappingSource, destination, type, isCustom, validation } = mapping;\n\n const rootSourceName = (mappingSource || '').split('.')[0];\n const isCollapsed = useMemo(\n () =>\n !!MAPPING_PRESETS.find(MP => MP.key === rootSourceName) && sourceTypes.isGoogle(source.type),\n [rootSourceName, source.type],\n );\n const prevIsCollapsed = usePrevious(isCollapsed);\n const sourceName = isCollapsed ? rootSourceName : mappingSource || '';\n const attributeDisplayValue = _get(\n userConfigFields,\n `['${destination}'].displayName`,\n destination,\n );\n\n const _sampleData = isCollapsed\n ? sampleDataLookup(sampleUserData, mapping)\n : _get(sampleUserData, mappingSource);\n const sampleData = _sampleData || '(none)';\n const noSampleData = sampleData === '(none)';\n\n useEffect(() => {\n if (!isCollapsed && prevIsCollapsed) {\n const { collectionItemType, collectionItemCustomType, subSource, ...other } = mapping;\n\n onUpdateMapping(rowIndex, other);\n }\n }, [isCollapsed, prevIsCollapsed, mapping]);\n\n const handleSelectAttribute = (attribute: any) => {\n const newMapping = {\n ...mapping,\n destination: attribute.objectKey,\n };\n\n onUpdateMapping(rowIndex, newMapping);\n };\n\n const handleUpdateSource = (sourceValue: string) => {\n const newMapping = {\n ...mapping,\n source: sourceValue,\n collectionItemType: null,\n collectionItemCustomType: null,\n customProps: {\n ...mapping.customProps,\n },\n };\n\n onUpdateMapping(rowIndex, newMapping);\n };\n\n const handleUpdateMapping = (newMapping: any) => {\n onUpdateMapping(rowIndex, {\n ...mapping,\n ...newMapping,\n });\n };\n\n const isPrimaryMapping = type === PRIMARY_MAPPING_TYPE_KEY;\n const shouldRenderInput = isPrimaryMapping ? !syncHasRun : isCustom || !sourceName;\n\n return (\n <>\n \n \n {shouldRenderInput ? (\n \n ) : (\n
{sourceName}
\n )}\n
\n \n {sampleData}\n \n {isPrimaryMapping ? (\n \n ) : (\n <>\n \n \n \n \n
\n {mapping.isCustom ? (\n \n ) : (\n destination && (\n \n )\n )}\n
\n
\n \n )}\n\n \n {!!mapping.destination && (\n \n )}\n \n
\n\n {isCollapsed && (\n \n \n \n \n \n \n \n )}\n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n actionTableCell: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n collectionMappingRow: {\n backgroundColor: theme.palette.grey[100],\n },\n collapsedRow: {\n '& > *': {\n borderBottom: 'unset',\n },\n },\n ellipsisText: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n noSampleData: {\n color: theme.palette.text.disabled,\n },\n };\n});\n\nexport default MappingsRow;\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router';\nimport getSourceHeaderCopy from 'components/Mappings/_helpers/getSourceHeaderCopy';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport MappingsContext from 'helpers/MappingsContext';\n\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Table from 'components/Table';\nimport TableHead from 'components/Table/TableHead';\nimport TableHeadCell from 'components/Table/TableHeadCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport MappingsRow from 'components/Mappings/MappingsRow';\n\nimport { MAP_ATTRIBUTES_URL } from 'pages/Directory/consts';\n\ninterface Props {\n mappings: MappingProps[];\n onDeleteMapping: (indexToDelete: number) => void;\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps) => void;\n}\n\nfunction PrimaryKeyMapping({ mappings, onDeleteMapping, onUpdateMapping }: Props) {\n const mappingContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const history = useHistory();\n const onSourceCreationWizardMappings = history.location.pathname.includes(MAP_ATTRIBUTES_URL);\n const { source } = mappingContext;\n const { isPrimary, type } = source;\n\n return (\n <>\n \n {isPrimary ? (\n
\n The Unique Identifier defines a person’s identity in Sift. It should be something\n that is unique to each imported person, and should ideally never change. We\n recommend something like an employee id, but if that’s not available you could also\n use something like an email address or a full name.\n
\n ) : (\n
\n The Unique Identifier defines a person’s identity in Sift and is used to connect\n data from this data source to the profiles created from your Primary source. The\n values in this property should match the associated unique identifiers provided in\n the primary source.\n
\n )}\n\n
\n Note: This cannot be changed after your first sync without contacting\n our support team.\n
\n
\n }\n />\n \n \n \n {getSourceHeaderCopy(type)}\n Preview\n \n \n \n {mappings.map((mapping: MappingProps, index: number) => {\n return (\n \n );\n })}\n \n
\n
\n \n );\n}\n\nexport default PrimaryKeyMapping;\n","import useAllSourceMappings from 'components/Mappings/_helpers/useAllSourceMappings';\nimport {\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n} from 'pages/Directory/consts';\n\nfunction useExistingOrgMappingsInfo(\n directory: any,\n sourceId: string,\n): {\n orgMappingsSet: boolean;\n orgMappedToSourceName: string;\n orgMappedToSourceId: string;\n} {\n const allSourceMappings = useAllSourceMappings({ directory, sourceId: sourceId })[0] || [];\n const tlRefMapping = allSourceMappings.find(\n (m: any) => m.destination === ORG_TEAM_LEADER_MAPPING_REF_KEY,\n );\n const tlMatchMapping = allSourceMappings.find(\n (m: any) => m.destination === ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n );\n const orgMappingsSet = allSourceMappings && Boolean(tlRefMapping) && Boolean(tlMatchMapping);\n const orgMappedToSourceName = orgMappingsSet && tlMatchMapping.fromSource;\n const orgMappedToSourceId = orgMappingsSet && tlMatchMapping.sourceId;\n\n return {\n orgMappingsSet,\n orgMappedToSourceName,\n orgMappedToSourceId,\n };\n}\n\nexport default useExistingOrgMappingsInfo;\n","import React, { useMemo } from 'react';\nimport { useData } from 'resift';\nimport _get from 'lodash/get';\nimport classNames from 'classnames';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport sampleDataLookup from 'components/Mappings/_helpers/sampleDataLookup';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport TableCell from '@material-ui/core/TableCell';\nimport Collapse from '@material-ui/core/Collapse';\nimport TableRow from '@material-ui/core/TableRow';\nimport Button from '@material-ui/core/Button';\nimport SourceSelector from 'components/Mappings/SourceSelector';\nimport CollectionMapping, { MAPPING_PRESETS } from 'components/Mappings/CollectionMapping';\nimport {\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n DEFAULT_EMPTY_ORG_MAPPINGS,\n CSV_SOURCE_TYPE_KEY,\n} from 'pages/Directory/consts';\nimport sourceTypes from 'consts/sourceTypes';\nimport MappingProps from 'types/Mapping';\nimport SourceType from 'types/Source';\n\ninterface Props {\n mappingIndex: number;\n mapping?: MappingProps;\n disabled?: boolean;\n source: SourceType;\n destination: 'tlRef' | 'tlMatch';\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps) => void;\n}\n\nfunction OrgSourceMapping({\n mappingIndex,\n source,\n destination,\n mapping = {} as MappingProps,\n onUpdateMapping,\n disabled,\n}: Props) {\n const classes = useStyles();\n const value = _get(mapping, 'source', '');\n const rootName = value.split('.')[0];\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n const mappingAttributes = useData(getMappingsAttributes);\n const sampleUserData = _get(mappingAttributes, 'sampleData', {});\n const isGoogle = sourceTypes.isGoogle(source.type);\n const isCollapsed = useMemo(() => {\n return !!MAPPING_PRESETS.find(MP => MP.key === rootName && isGoogle);\n }, [rootName]);\n const tlName = isCollapsed ? rootName : value;\n const _sampleData = isCollapsed\n ? sampleDataLookup(sampleUserData, mapping)\n : _get(sampleUserData, mapping.source);\n const sampleData = _sampleData || '(none)';\n const noSampleData = sampleData === '(none)';\n const isCsvSource = source.type === CSV_SOURCE_TYPE_KEY;\n\n const handleUpdateSource = (sourceValue: string) => {\n const newMapping: MappingProps = {\n ...mapping,\n source: sourceValue,\n type: 'logistical',\n collectionItemType: null,\n collectionItemCustomType: null,\n destination,\n customProps: {\n ...mapping.customProps,\n },\n };\n\n onUpdateMapping(mappingIndex, newMapping);\n };\n\n const handleCollectionChange = (newMapping: MappingProps) => {\n onUpdateMapping(mappingIndex, {\n ...newMapping,\n destination,\n });\n };\n\n const handleClearMapping = () => {\n const defaultMapping =\n destination === ORG_TEAM_LEADER_MAPPING_REF_KEY\n ? DEFAULT_EMPTY_ORG_MAPPINGS[1]\n : DEFAULT_EMPTY_ORG_MAPPINGS[0];\n\n onUpdateMapping(mappingIndex, {\n ...defaultMapping,\n destination,\n });\n };\n\n return (\n <>\n \n \n \n {destination === ORG_TEAM_LEADER_MAPPING_REF_KEY ? 'Supervisor' : 'Employee'}{' '}\n {isCsvSource ? 'Header' : 'Property'}\n \n \n \n \n {sampleData}\n \n {value && }\n \n {isCollapsed && (\n \n \n \n \n \n \n \n )}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n ellipsisText: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n noSampleData: {\n color: theme.palette.text.disabled,\n },\n disabledRow: {\n pointerEvents: 'none',\n color: theme.palette.text.disabled,\n },\n collectionMappingRow: {\n backgroundColor: theme.palette.grey[100],\n },\n}));\n\nexport default OrgSourceMapping;\n","import * as React from 'react';\n\nconst ExampleOrgConnect = 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\nexport default ExampleOrgConnect;\n","import React, { useContext, useMemo } from 'react';\nimport { useHistory } from 'react-router';\nimport _compact from 'lodash/compact';\nimport _flatten from 'lodash/flatten';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport withSource from 'components/withSource/withSource';\nimport MappingsContext from 'helpers/MappingsContext';\nimport Directory from 'types/Directory';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport useExistingOrgMappingsInfo from './useExistingOrgMappingsInfo';\nimport { HOME_URL, DIRECTORIES_URL, SOURCE_URL } from 'components/Router/consts';\n\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport TableBody from '@material-ui/core/TableBody';\nimport Link from '@material-ui/core/Link';\nimport Table from 'components/Table';\nimport TableHead from 'components/Table/TableHead';\nimport TableHeadCell from 'components/Table/TableHeadCell';\nimport OrgSourceMapping from './OrgSourceMapping';\nimport ExampleOrgConnect from 'components/Logos/ExampleOrgConnect';\nimport ValidationStatusIndicator from 'atoms/ValidationStatusIndicator';\nimport getSourceHeaderCopy from 'components/Mappings/_helpers/getSourceHeaderCopy';\n\nimport {\n CSV_SOURCE_TYPE_KEY,\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n TL_MATCH_MAPPING_INDEX,\n TL_REF_MAPPING_INDEX,\n MAP_ATTRIBUTES_URL,\n} from 'pages/Directory/consts';\n\ninterface Props {\n directory: Directory;\n mappings: MappingProps[];\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps) => void;\n onUpdateCard: (newMappings: MappingProps[]) => void;\n}\n\nfunction OrgMapping({ directory, mappings, onUpdateMapping, onUpdateCard }: Props) {\n const classes = useStyles();\n const history = useHistory();\n const mappingsContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const { source } = mappingsContext;\n const existingMappingsInfo = useExistingOrgMappingsInfo(directory, source.id);\n const onSourceCreationWizardMappings = history.location.pathname.includes(MAP_ATTRIBUTES_URL);\n const { orgMappingsSet, orgMappedToSourceId, orgMappedToSourceName } = existingMappingsInfo;\n const [tlMatchMapping, tfRefMapping] = mappings;\n const isCsvSource = source.type === CSV_SOURCE_TYPE_KEY;\n const validationStatus = useMemo(() => {\n const validationChecks = _compact(_flatten(mappings.map(m => m.validation)));\n\n if (!validationChecks.length) {\n return ;\n }\n\n const { type, longDescriptionHtml } = validationChecks[0];\n\n return ;\n }, [mappings]);\n\n return (\n <>\n \n {orgMappingsSet ? (\n
\n Your org chart data has already been mapped in source:{' '}\n \n {orgMappedToSourceName}\n \n {'.'}\n
\n ) : (\n <>\n {isCsvSource ? (\n
\n To properly create your Org Chart, you need to provide us with information\n around how a person’s direct supervisor (manager) is\n represented in your CSV file. In the Supervisor Header{' '}\n dropdown, select the column header that points to a person’s manager (ex:\n “Manager Email”, “Supervisor Employee Id”, etc). In the{' '}\n Employee Header dropdown, select the column header that the\n supervisor header is referencing on the associated person (ex: “Email”,\n “Employee Id”, etc).\n
\n ) : (\n
\n To properly create your Org Chart, we need to understand how a person’s direct\n supervisor (manager) is represented in your source data.{' '}\n \n You should never need to change this from the default unless your organization\n represents managers in an alternate way within your data source.\n \n
\n
\n In the Supervisor Property input, select the property that\n points to a person’s manager. In the Employee Property{' '}\n dropdown, select the property that the supervisor property is referencing on the\n associated person.\n
\n )}\n\n {isCsvSource && }\n \n )}\n \n }\n action={!orgMappingsSet &&
{validationStatus}
}\n classes={{\n subheader: classes.subheaderCardHeader,\n }}\n />\n {!orgMappingsSet && (\n \n \n \n \n {source.type ? getSourceHeaderCopy(source.type) : 'Other Source Property'}\n \n Preview Data\n \n \n \n \n \n \n
\n
\n )}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n subheaderCardHeader: {\n maxWidth: 1200,\n },\n textContainer: {\n display: 'flex',\n flexDirection: 'column',\n textAlign: 'center',\n },\n description: {\n marginTop: theme.spacing(0.5),\n marginBottom: theme.spacing(),\n },\n subtitle: {\n marginTop: theme.spacing(2.125),\n fontSize: theme.typography.body1.fontSize,\n color: theme.palette.common.black,\n },\n orgMapCell: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n },\n success: {\n color: theme.palette.success.main,\n },\n validationIcon: {\n marginRight: theme.spacing(2.9),\n marginTop: theme.spacing(),\n },\n}));\n\nexport default withSource(OrgMapping);\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router';\nimport _get from 'lodash/get';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport getSourceHeaderCopy from 'components/Mappings/_helpers/getSourceHeaderCopy';\nimport MappingsContext from 'helpers/MappingsContext';\n\nimport Link from '@material-ui/core/Link';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Table from 'components/Table';\nimport TableHead from 'components/Table/TableHead';\nimport TableHeadCell from 'components/Table/TableHeadCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport MappingsRow from '../MappingsRow';\n\nimport { HOME_URL, PERSON_PROFILE_URL } from 'components/Router/consts';\nimport { PROFILE_ATTR_MAPPING_TYPE_KEY, MAP_ATTRIBUTES_URL } from 'pages/Directory/consts';\n\ninterface Props {\n mappings: MappingProps[];\n onUpdateCard: (newMappings: MappingProps[]) => void;\n onDeleteMapping: (indexToDelete: number) => void;\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps) => void;\n}\n\nfunction ProfileAttrMapping({ mappings, onUpdateCard, onDeleteMapping, onUpdateMapping }: Props) {\n const mappingsContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const history = useHistory();\n const { source } = mappingsContext;\n const onSourceCreationWizardMappings = history.location.pathname.includes(MAP_ATTRIBUTES_URL);\n\n const handleAddCustomMapping = () => {\n const newMapping = {\n source: '',\n destination: '',\n isRequired: false,\n isUnique: false,\n type: PROFILE_ATTR_MAPPING_TYPE_KEY,\n };\n\n const newMappings = [...mappings];\n newMappings.unshift({ ...newMapping, isCustom: true });\n onUpdateCard(newMappings);\n };\n\n const handleUpdateMapping = (newMappingIndex: number, newMapping: any) => {\n const { destination } = newMapping;\n\n if (destination === 'firstName' || destination === 'lastName') {\n newMapping['isRequired'] = true;\n }\n\n if (destination === 'email') {\n newMapping['isUnique'] = true;\n }\n\n onUpdateMapping(newMappingIndex, newMapping);\n };\n\n return (\n <>\n \n <>\n Map properties from your data source to your employee{' '}\n \n profile attributes\n {' '}\n in Sift. For Primary Sources, we require that you supply{' '}\n first name, last name, and email address for each\n person, but any additional data will make your Sift profiles that much richer! You\n may add, remove, or change these mappings at any time, and you are not required to\n map all properties to Sift.\n \n
\n Note: If you already mapped any of these attributes (other than\n email) in your primary or hierarchy mapping section, they do not need to be mapped\n here unless you’d like them to be explicitly displayed on profile pages.\n
\n \n ) : (\n <>\n Map properties from your data source to your employee profile attributes in Sift. You\n may add, remove, or change these mappings at any time, and you are not required to map\n all properties to Sift.\n \n )\n }\n action={\n \n }\n />\n \n \n \n {getSourceHeaderCopy(source.type)} \n Preview Data \n Sift Attribute Destination \n \n \n \n \n {mappings.map((mapping, index) => {\n return (\n \n );\n })}\n \n
\n
\n \n );\n}\n\nexport default ProfileAttrMapping;\n","import React, { useState } from 'react';\nimport _get from 'lodash/get';\nimport { useData } from 'resift';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport SourceType from 'types/Source';\nimport MappingsContext from 'helpers/MappingsContext';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport {\n PRIMARY_MAPPING_TYPE_KEY,\n ORG_MAPPING_TYPE_KEY,\n PROFILE_ATTR_MAPPING_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nimport Card from '@material-ui/core/Card';\nimport PrimaryKeyMapping from 'components/Mappings/PrimaryKeyMapping';\nimport OrgMapping from 'components/Mappings/OrgMapping';\nimport ProfileAttrMapping from 'components/Mappings/ProfileAttrMapping';\n\ninterface Props {\n cardData: MappingTypes.MappingCardData[];\n selectedDestinations: string[];\n onUpdateState: (cardIndex: number, newMappings: MappingProps[]) => void;\n source: SourceType;\n}\n\nfunction MappingCards({ cardData, selectedDestinations, onUpdateState, source }: Props) {\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n const mappingAttributes = useData(getMappingsAttributes);\n const selectionAttributesArray: MappingTypes.SelectionAttribute[] = _get(\n mappingAttributes,\n 'selectionAttributes',\n [],\n );\n const _sourceAttrOptions = selectionAttributesArray.map(attr => attr.sourcePath);\n const [sourceAttrOptions, setSourceAttrOptions] = useState(_sourceAttrOptions);\n\n const handleDeleteMapping = (cardIndex: number, mappings: MappingProps[]) => {\n return (indexToDelete: number) => {\n const newMappings = [...mappings];\n newMappings.splice(indexToDelete, 1);\n onUpdateState(cardIndex, newMappings);\n };\n };\n\n const handleUpdateMapping = (cardIndex: number, mappings: MappingProps[]) => {\n return (newMappingIndex: number, newMapping: MappingProps) => {\n const newMappings = [...mappings];\n newMappings.splice(newMappingIndex, 1, newMapping);\n onUpdateState(cardIndex, newMappings);\n };\n };\n\n const handleUpdateCard = (cardIndex: number) => {\n return (newMappings: MappingProps[]) => {\n onUpdateState(cardIndex, newMappings);\n };\n };\n\n const handleAddCustomSourceAttribute = (newOption: string) => {\n setSourceAttrOptions([...sourceAttrOptions, newOption]);\n };\n\n const mappingContext: MappingTypes.MappingContext = {\n source,\n selectedDestinations,\n sourceAttrOptions,\n onAddCustomSourceAttribute: handleAddCustomSourceAttribute,\n };\n\n return (\n \n {cardData.map((data, index) => {\n const { mappings, type } = data;\n\n let CardComponent = null;\n\n switch (type) {\n case PRIMARY_MAPPING_TYPE_KEY:\n CardComponent = PrimaryKeyMapping;\n break;\n case ORG_MAPPING_TYPE_KEY:\n CardComponent = OrgMapping;\n break;\n case PROFILE_ATTR_MAPPING_TYPE_KEY:\n CardComponent = ProfileAttrMapping;\n break;\n }\n\n return (\n
\n {!CardComponent ? null : (\n \n \n \n )}\n
\n );\n })}\n
\n );\n}\n\nexport default MappingCards;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport _flatten from 'lodash/flatten';\nimport SourceType from 'types/Source';\nimport { useDispatch } from 'react-redux';\nimport { useData } from 'resift';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\nimport createMappingsCardData from './_helpers/createMappingsCardData';\nimport createDataBatchActions from './_helpers/createDataBatchActions';\nimport createLogisticalBatchActions from './_helpers/createLogisticalBatchActions';\nimport getSelectedDestinations from './_helpers/getSelectedDestinations';\nimport getValidatedMappingCards from './_helpers/getValidatedMappingCards';\nimport transformMappingsForValidation from './_helpers/transformMappingsForValidation';\n\nimport MappingCards from 'components/Mappings/MappingCards';\nimport MappingProps from 'types/Mapping';\nimport { PRIMARY_MAPPING_TYPE_KEY, PROFILE_ATTR_MAPPING_TYPE_KEY } from 'pages/Directory/consts';\n\ninterface Props {\n sourceMappings: MappingProps[];\n userFields: any;\n source: SourceType;\n setMappings: (batchActions: any[]) => void;\n setDirty: (dirty: boolean) => void;\n}\n\nfunction Mappings({ source, sourceMappings, userFields, setMappings, setDirty }: Props) {\n const dispatch = useDispatch();\n const validateMappings = makeValidateMappings(source.id);\n const validationResponse = useData(validateMappings);\n const { validationResults } = validationResponse;\n const initialState = useMemo(\n () => createMappingsCardData(sourceMappings, validationResults, userFields),\n [sourceMappings, validationResults],\n );\n\n const [_mappingCards, setMappingSections] = useState(initialState);\n const mappingCards = getValidatedMappingCards(_mappingCards, validationResults);\n const selectedDestinations = useMemo(() => getSelectedDestinations(mappingCards), [mappingCards]);\n\n useEffect(() => {\n const batchActions = buildBatchActions([], sourceMappings, source.id);\n setMappings(batchActions);\n }, []);\n\n const handleUpdateState = (cardIndex: number, newMappings: any[]) => {\n setDirty(true);\n\n const newState = [...mappingCards];\n newState.splice(cardIndex, 1, {\n ...newState[cardIndex],\n mappings: newMappings,\n });\n\n const batchActions = buildBatchActions(newState, sourceMappings, source.id);\n setMappings(batchActions);\n setMappingSections(newState);\n\n const _latestMappings = newState.map(s => s.mappings);\n const latestMappings = transformMappingsForValidation(_flatten(_latestMappings));\n dispatch(validateMappings(latestMappings));\n };\n\n return (\n \n );\n}\n\nexport default Mappings;\n\nfunction buildBatchActions(mappingCards: any, sourceMappings: any, sourceId: any) {\n const logisticalBatchActions = createLogisticalBatchActions(\n mappingCards,\n sourceMappings,\n sourceId,\n );\n\n let dataMappings = [];\n if (mappingCards.length) {\n dataMappings = mappingCards.reduce((acc: any, { initialMappings, mappings, type }: any) => {\n if (type === PRIMARY_MAPPING_TYPE_KEY || type === PROFILE_ATTR_MAPPING_TYPE_KEY) {\n const batchActions = createDataBatchActions(initialMappings, mappings, sourceId);\n return [...acc, ...batchActions];\n }\n\n return acc;\n }, []);\n } else {\n dataMappings = createDataBatchActions([], sourceMappings, sourceId);\n }\n\n return [...logisticalBatchActions, ...dataMappings];\n}\n","import _partition from 'lodash/partition';\nimport getValidatedMappingCards from './getValidatedMappingCards';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport * as Sift from '@sift/types';\nimport {\n DEFAULT_EMPTY_ORG_MAPPINGS,\n ORG_TEAM_LEADER_MAPPING_REF_KEY,\n ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n PRIMARY_MAPPING_TYPE_KEY,\n ORG_MAPPING_TYPE_KEY,\n PROFILE_ATTR_MAPPING_TYPE_KEY,\n} from 'pages/Directory/consts';\n\nexport default function createMappingsCardData(\n sourceMappings: MappingProps[],\n validationResults: MappingTypes.MappingValidationResult[],\n userFields: Sift.Field[],\n) {\n const partitionPrimary = ['type', PRIMARY_MAPPING_TYPE_KEY];\n\n const [primaryMappings, nonPrimaryTypes] = _partition(sourceMappings, partitionPrimary);\n\n const partitionHierarchy = ({ destination, type }: MappingTypes.MappingAttribute) => {\n const matchesHierarchy =\n destination === ORG_TEAM_LEADER_MAPPING_REF_KEY ||\n destination === ORG_TEAM_LEADER_MAPPING_MATCH_KEY;\n return matchesHierarchy && type !== 'hierarchy';\n };\n const [_hierarchyMappings, nonHierarchyTypes] = _partition(nonPrimaryTypes, partitionHierarchy);\n // (note - pearl) Have tlRef mapping to be index 0, and tlMatch mapping to be index 1\n // reference TL_MATCH_MAPPING_INDEX and TL_REF_MAPPING_INDEX in 'pages/Directory/consts'\n const hierarchyMappings = _hierarchyMappings.length\n ? [\n // @ts-ignore\n _hierarchyMappings.find(m => m.destination === ORG_TEAM_LEADER_MAPPING_MATCH_KEY),\n // @ts-ignore\n _hierarchyMappings.find(m => m.destination === ORG_TEAM_LEADER_MAPPING_REF_KEY),\n ]\n : DEFAULT_EMPTY_ORG_MAPPINGS;\n\n const partitionIsRequired = ['isRequired', true];\n const [isRequiredMappings, dataMappings]: any[] = _partition(\n nonHierarchyTypes,\n partitionIsRequired,\n );\n\n const partitionFilteredFields = ({ type }: MappingTypes.MappingAttribute) => {\n return type !== 'hierarchy';\n };\n const [filteredFields, __]: any[] = _partition(dataMappings, partitionFilteredFields);\n\n const displayedDataMappings = filteredFields.filter((mapping: any) => {\n // (note - pearl) if no destination (recommended mapping), then skip this check\n return mapping.destination ? userFields[mapping.destination] : true;\n });\n\n const _mappingCards = [\n {\n title: 'Primary Key',\n initialMappings: primaryMappings,\n mappings: [...primaryMappings],\n type: PRIMARY_MAPPING_TYPE_KEY,\n id: PRIMARY_MAPPING_TYPE_KEY,\n // (NOTE - Dylan) This copy does not seem to be displayed anywhere, and we should look to remove it in the future\n description:\n 'The Primary Key is the unique identifier for all of your people. Anyone with a non-unique primary key value will not be imported. Note: This cannot be changed after your first sync without contacting our support team. Still need help? View our documentation.',\n },\n {\n title: 'Set Up Org Chart (Optional)',\n initialMappings: hierarchyMappings,\n mappings: [...hierarchyMappings],\n type: ORG_MAPPING_TYPE_KEY,\n id: ORG_MAPPING_TYPE_KEY,\n description:\n 'The team leader hierarchy mapping is used to build your organizational structure in Sift. This will allow you to use features like our org chart. On the left side of this mapping, provide which property on a person represents a reference to their direct manager in your system (Ex: \"managerEmail\"). On the right side of this mapping, type which property the above property points to on another person in your system (Ex: \"email\").',\n },\n {\n title: 'Profile Attributes',\n initialMappings: [...isRequiredMappings, ...displayedDataMappings],\n mappings: [...isRequiredMappings, ...displayedDataMappings],\n type: PROFILE_ATTR_MAPPING_TYPE_KEY,\n id: PROFILE_ATTR_MAPPING_TYPE_KEY,\n description:\n 'Attributes are used to identify different characteristics of your user population. The three required attributes are First Name, Last Name, and Email, these are used as base markers for your users and must be mapped below. To learn more about attributes, visit our help center.',\n },\n ];\n\n const mappingCards = getValidatedMappingCards(_mappingCards, validationResults);\n\n return mappingCards;\n}\n","import React, { useEffect, useMemo } from 'react';\nimport shortId from 'shortid';\nimport _get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport { useStatus } from 'resift';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\n\nimport Loader from 'components/Loader';\nimport Mappings from './Mappings';\n\nimport SourceType from 'types/Source';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport {\n PROFILE_ATTR_MAPPING_TYPE_KEY,\n PRIMARY_MAPPING_TYPE_KEY,\n CLIENT_PRIMARY_KEY,\n} from 'pages/Directory/consts';\n\ninterface Props {\n mappingAttributes: any;\n userFields: any;\n source: SourceType;\n setMappings: (batchActions: any[]) => void;\n setDirty: (dirty: boolean) => void;\n}\n\nfunction MappingsValidationFetcher({\n mappingAttributes,\n userFields,\n source,\n setMappings,\n setDirty,\n}: Props) {\n const dispatch = useDispatch();\n const validateMappings = makeValidateMappings(source.id);\n const status = useStatus(validateMappings);\n\n const recommendedAttributes: Array = _get(\n mappingAttributes,\n 'recommendedAttributes',\n [],\n );\n\n // (note - pearl) useMemo is necessary to preserve shortId during fetches\n const _proposedMappings = useMemo(\n () =>\n recommendedAttributes.map(attr => {\n const recommendedSourcePath = attr.sourcePath;\n\n // (notes - pearl) Attaching shortId for mappings validation\n const _referenceId = shortId();\n\n const _mapping = _get(attr, 'mapping', {\n source: recommendedSourcePath,\n destination: null,\n type: PROFILE_ATTR_MAPPING_TYPE_KEY,\n });\n\n return { ..._mapping, _referenceId };\n }),\n [recommendedAttributes],\n );\n\n const hasPrimaryMapping = _proposedMappings.find(m => m.destination === CLIENT_PRIMARY_KEY);\n\n const primaryKeyMappingReferenceId = shortId();\n // (note - pearl) useMemo is necessary to preserve shortId during fetches\n const proposedMappings = useMemo(() => {\n if (hasPrimaryMapping) {\n return _proposedMappings;\n }\n\n return [\n ..._proposedMappings,\n {\n source: null,\n type: PRIMARY_MAPPING_TYPE_KEY,\n destination: CLIENT_PRIMARY_KEY,\n isRequired: true,\n isUnique: true,\n _referenceId: primaryKeyMappingReferenceId,\n },\n ];\n }, [_proposedMappings, hasPrimaryMapping]) as MappingProps[];\n\n useEffect(() => {\n dispatch(validateMappings(proposedMappings));\n }, []);\n\n return (\n \n {() => (\n \n )}\n \n );\n}\n\nexport default MappingsValidationFetcher;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useData, useStatus } from 'resift';\nimport { useDispatch } from 'react-redux';\nimport SourceType from 'types/Source';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nimport Loader from 'components/Loader';\nimport TextBlock from 'components/TextBlock';\nimport MappingsValidationFetcher from './MappingsValidationFetcher';\n\ninterface Props {\n source: SourceType;\n setMappings: (batchActions: any[]) => void;\n setDirty: (dirty: boolean) => void;\n}\n\nfunction MappingsContainer({ source, setMappings, setDirty }: Props) {\n const dispatch = useDispatch();\n const entityTypes = useEntityTypes();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const { _fields } = userConfig;\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n\n useEffect(() => {\n if (_get(source, 'authorizationStatus.isAuthorized')) {\n dispatch(getMappingsAttributes());\n }\n }, []);\n\n const mappingAttributes = useData(getMappingsAttributes);\n const status = useStatus(getMappingsAttributes);\n\n if (!_get(source, 'authorizationStatus.isAuthorized')) {\n return (\n \n This source is unauthorized.
\n Mappings may only be changed on authorized sources.\n
\n );\n }\n\n return (\n \n {() => (\n \n )}\n \n );\n}\n\nexport default MappingsContainer;\n","import React from 'react';\n\n// Components\nimport Mappings from 'components/Mappings';\n\nimport { Prompt } from 'react-router';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { defineStyles, Classes } from 'styles/defineStyles';\n\nconst styles = defineStyles(theme => {\n return {\n root: {\n marginBottom: 350, // Needed for autosuggest overflow\n },\n };\n});\n\ninterface Props {\n source: any;\n dirty?: boolean;\n classes: Classes;\n setMappings: (batchActions: any[]) => void;\n setDirty: (dirty: boolean) => void;\n}\n\nfunction MappingsForm({ source, dirty, classes, setMappings, setDirty }: Props) {\n return (\n
\n \n \n
\n );\n}\n\nexport default withStyles(styles)(MappingsForm);\n","import React, { useMemo } from 'react';\nimport SourceType from 'types/Source';\nimport sourceTypes from 'consts/sourceTypes';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\n// Components\nimport InfoCard from 'components/InfoCard';\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\n\ninterface Props {\n source: SourceType;\n}\n\nfunction MappingsCard({ source }: Props) {\n const classes = useStyles();\n\n const Subheader = useMemo(() => {\n let elem = null;\n elem = (\n <>\n Mappings tell us which properties from your data source that Sift should import when running\n a data sync. We require a few different things to get started, but you can always come back\n in the future after creating new Sift attributes, or if you want to start importing a new\n piece of information to your employee profiles.\n \n );\n if (!source.isPrimary) {\n elem = (\n <>\n Mappings tell us which properties from your data source that Sift should import when\n running a data sync. In a Complementary Source, all imported data will append to existing\n profiles created by your Primary Source.\n \n );\n }\n\n return elem;\n }, [source.type]);\n\n return (\n \n
\n {Subheader}\n
\n \n
\n }\n subheaderClassName={classes.subheader}\n />\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n subheader: {\n width: '100%',\n },\n divider: {\n marginTop: theme.spacing(3),\n },\n };\n});\n\nexport default MappingsCard;\n","import React from 'react';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Tooltip from '@material-ui/core/Tooltip';\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\nimport ErrorIcon from '@material-ui/icons/Cancel';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport * as MappingTypes from 'types/Mapping';\n\ninterface Props {\n items: MappingTypes.MappingValidationResult[];\n}\n\nfunction Errors({ items }: Props) {\n const classes = useStyles();\n\n if (!items.length) {\n return (\n
\n No errors\n
\n );\n }\n\n return (\n <>\n {items.map((item, index) => {\n const { descriptionHtml, longDescriptionHtml } = item;\n return (\n
\n \n
\n\n }\n >\n \n \n
\n );\n })}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n item: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(0.5),\n },\n statusIcon: {\n marginRight: theme.spacing(),\n maxWidth: 20,\n },\n success: {\n color: theme.palette.success.main,\n },\n infoIcon: {\n marginLeft: theme.spacing(),\n maxWidth: 16,\n },\n}));\n\nexport default Errors;\n","import React from 'react';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Tooltip from '@material-ui/core/Tooltip';\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport * as MappingTypes from 'types/Mapping';\n\ninterface Props {\n items: MappingTypes.MappingValidationResult[];\n}\n\nfunction Warnings({ items }: Props) {\n const classes = useStyles();\n\n if (!items.length) {\n return (\n
\n No warnings\n
\n );\n }\n\n return (\n <>\n {items.map((item, index) => {\n const { descriptionHtml, longDescriptionHtml } = item;\n return (\n
\n \n
\n\n }\n >\n \n \n
\n );\n })}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n item: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(0.5),\n },\n statusIcon: {\n marginRight: theme.spacing(),\n maxWidth: 20,\n },\n success: {\n color: theme.palette.success.main,\n },\n warning: {\n color: theme.palette.warning.main,\n },\n infoIcon: {\n marginLeft: theme.spacing(),\n maxWidth: 16,\n },\n}));\n\nexport default Warnings;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction SummaryLine({ children }: Props) {\n const classes = useStyles();\n\n return
{children}
;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: { display: 'flex', alignItems: 'center' },\n}));\n\nexport default SummaryLine;\n","import React from 'react';\nimport _isEmpty from 'lodash/isEmpty';\nimport typography from 'styles/typography';\nimport { useHistory } from 'react-router';\nimport _partition from 'lodash/partition';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\n\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\n\nimport Errors from './Errors';\nimport Warnings from './Warnings';\nimport SummaryLine from './SummaryLine';\n\nimport * as MappingTypes from 'types/Mapping';\nimport { MAPPINGS_TAB, CSV_WIZARD_MAPPING_URL } from 'pages/Directory/consts';\n\ninterface Props {\n className?: string;\n csvFileName?: string;\n validationResponse: MappingTypes.ValidateMappingsResponse;\n onSubmit: () => void;\n dirty?: boolean;\n isCsvSource?: boolean;\n onUploadNewCsv: () => void;\n}\n\nfunction MappingsSummary({\n className,\n csvFileName,\n validationResponse,\n onSubmit,\n dirty,\n onUploadNewCsv,\n isCsvSource,\n}: Props) {\n const classes = useStyles();\n const history = useHistory();\n const { sampleDataCount, validationResults } = validationResponse;\n const sampleLimitExceeded = sampleDataCount >= 5000;\n const [errors, warnings] = _partition(validationResults, vr => vr.type === 'error');\n const numberOfIssues = validationResults.length || 'None';\n const onMappingsTab = history.location.pathname.includes(MAPPINGS_TAB);\n const isOnCsvUploadWizard = location.pathname.endsWith(CSV_WIZARD_MAPPING_URL);\n const submitButtonText = isOnCsvUploadWizard ? 'Initialize Your Sync' : 'Save Mappings';\n\n return (\n \n \n Mappings Summary\n\n \n Use this area to view any mapping issues that need to be addressed and to continue when\n finished making updates.\n \n\n {csvFileName && (\n <>\n \n File Name: \n {csvFileName}\n \n }\n />\n\n \n Number of Rows: \n \n {sampleDataCount}\n {sampleLimitExceeded && '+*'}\n \n \n }\n />\n \n )}\n\n {sampleLimitExceeded && (\n \n *We’re only able to analyze up to 5000 rows of your uploaded CSV, so some warnings\n may be missed.\n \n }\n />\n )}\n\n \n Issues Found ({numberOfIssues}):\n \n\n \n Errors - \n must be fixed before continuing:\n
\n }\n />\n\n \n\n \n Warnings - \n recommended updates:\n
\n }\n />\n\n \n\n {!onMappingsTab && isCsvSource && (\n \n Need to correct something on your CSV? Click on “Upload New CSV” below.\n \n )}\n \n \n {!onMappingsTab && isCsvSource && (\n \n )}\n \n {submitButtonText}\n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n height: 'fit-content',\n position: 'sticky',\n top: 0,\n },\n cardContent: {\n padding: theme.spacing(2),\n },\n issueCount: {\n fontWeight: typography.fontWeight.semiBold,\n marginTop: theme.spacing(),\n marginBottom: theme.spacing(),\n },\n issueTitle: {\n fontWeight: typography.fontWeight.semiBold,\n },\n issueLine: {\n display: 'flex',\n marginBottom: theme.spacing(),\n },\n footer: {\n marginTop: theme.spacing(1.25),\n },\n actions: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing(2),\n paddingTop: theme.spacing(),\n },\n saveButton: {\n marginLeft: 'auto',\n backgroundColor: theme.palette.secondary.main,\n },\n}));\n\nexport default MappingsSummary;\n","import React, { useCallback, useState } from 'react';\nimport _get from 'lodash/get';\nimport _omit from 'lodash/omit';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useHistory, useLocation } from 'react-router';\nimport { useDispatch } from 'react-redux';\nimport makeSourceCreateBaseUrl from 'pages/Directory/helpers/makeSourceCreateBaseUrl';\nimport useAnalytics from 'helpers/useAnalytics';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport { useData } from 'resift';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\nimport makeGetLatestSourceFile from 'pages/Source/fetches/makeGetLatestSourceFile';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport MappingsForm from 'pages/Directory/MappingsForm';\nimport MappingsCard from 'pages/Source/components/MappingsCard';\nimport MappingsSummary from 'components/Mappings/MappingsSummary';\n\nimport SourceType from 'types/Source';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport {\n MAP_ATTRIBUTES_URL,\n DATA_SETTINGS_URL,\n UPLOAD_CSV_URL,\n CSV_WIZARD_URL,\n CSV_WIZARD_UPLOAD_URL,\n} from 'pages/Directory/consts';\nimport { HOME_URL, DIRECTORIES_URL, SOURCE_URL } from 'components/Router/consts';\nimport { CSV_WIZARD_MAPPING_URL, CSV_SOURCE_TYPE_KEY } from 'pages/Directory/consts';\n\ninterface Props {\n sendBatchMappings: (newMappings: MappingProps[]) => void;\n source: SourceType;\n onSyncMappings?: () => void;\n sourceFile?: any;\n}\n\nfunction MappingsLayout({ sendBatchMappings, source, onSyncMappings, sourceFile }: Props) {\n const classes = useStyles();\n const getLatestDataCSVFile = makeGetLatestSourceFile(source.id, 'data');\n const _lastDataCsv = useData(getLatestDataCSVFile);\n const lastDataCsv = sourceFile || _lastDataCsv;\n const validateMappings = makeValidateMappings(source.id);\n const validationResponse = useData(validateMappings) as MappingTypes.ValidateMappingsResponse;\n\n const [batchMappings, setBatchMappings] = useState() as any;\n const [loading, setLoading] = useState(false);\n const analytics = useAnalytics();\n const history = useHistory();\n const dispatch = useDispatch();\n const location = useLocation();\n const isOnDirWizard = location.pathname.includes(MAP_ATTRIBUTES_URL);\n const isOnCsvUploadWizard = location.pathname.endsWith(CSV_WIZARD_MAPPING_URL);\n const [dirty, setDirty] = useState(isOnDirWizard);\n\n const baseUrl = makeSourceCreateBaseUrl(source.directoryId, source.id);\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n\n const handleUploadNewCsv = useCallback(() => {\n const uploadCsvPath = isOnDirWizard\n ? `${baseUrl}${UPLOAD_CSV_URL}`\n : `${HOME_URL}${DIRECTORIES_URL}/${source.directoryId}${SOURCE_URL}/${source.id}${CSV_WIZARD_URL}${CSV_WIZARD_UPLOAD_URL}`;\n\n history.push(uploadCsvPath);\n window.location.reload();\n }, [source.id]);\n\n const setMappings = useCallback((newMappings: any) => {\n setBatchMappings(newMappings);\n }, []);\n\n const handleSubmit = useCallback(async () => {\n setDirty(false);\n setLoading(true);\n\n if (!_isEmpty(batchMappings)) {\n // (note - pearl) Remove `isCustom`, `_referenceId`, and `validation` keys,\n // which are only needed for FE\n const cleanedUpBatchMappings = batchMappings.map((m: any) => {\n return m.type === 'destroy'\n ? m\n : {\n ...m,\n data: _omit(m.data, ['isCustom', '_referenceId', 'validation']),\n };\n });\n\n await sendBatchMappings(cleanedUpBatchMappings);\n }\n\n setDirty(false);\n analytics.track('Mappings Saved', {\n category: 'AD - Directories',\n });\n\n if (isOnDirWizard) {\n analytics.track('Wizard - Mappings Step Completed', {\n category: 'AD - Directories',\n label: source.type,\n });\n }\n\n if (isOnCsvUploadWizard) {\n onSyncMappings && (await onSyncMappings());\n } else {\n setTimeout(() => {\n dispatch(getMappingsAttributes());\n }, 3000);\n\n const pushUrl = isOnDirWizard\n ? `${baseUrl}${DATA_SETTINGS_URL}`\n : `${HOME_URL}${DIRECTORIES_URL}/${source.directoryId}${SOURCE_URL}/${source.id}`;\n\n setTimeout(() => {\n history.push(pushUrl);\n }, 4000);\n }\n }, [batchMappings]);\n\n return (\n
\n
\n \n \n
\n {validationResponse && (\n \n )}\n \n \n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: { display: 'flex' },\n mappingCards: {\n flex: 2,\n marginRight: theme.spacing(2),\n },\n mappingSummary: {\n flex: 1,\n },\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: theme.palette.common.white,\n },\n}));\n\nexport default MappingsLayout;\n","import React, { useCallback, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { isLoading, useStatus } from 'resift';\nimport usePrevious from 'helpers/usePrevious';\nimport { useSnackbar } from 'notistack';\nimport MappingProps from 'types/Mapping';\n\n// Components\nimport MappingsLayout from './MappingsLayout';\n\n// Actions\nimport makeBatchMappingsFetch from 'store/mappings/actions/batchMappingsFetch';\nimport makeGetSourceMappings from 'store/sources/actions/makeGetSourceMappings';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport SourceType from 'types/Source';\n\ninterface Props {\n source: SourceType;\n onSyncMappings?: () => void;\n sourceFile?: any;\n}\n\nfunction Container({ source, onSyncMappings, sourceFile }: Props) {\n const { enqueueSnackbar } = useSnackbar();\n const dispatch = useDispatch();\n const batchMappingsFetch = makeBatchMappingsFetch();\n const sourceMappingsFetch = makeGetSourceMappings(source.id);\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n\n const status = useStatus(batchMappingsFetch);\n const prevStatus = usePrevious(status);\n\n const sendBatchMappingsDispatch = useCallback(async (newMappings: MappingProps[]) => {\n await dispatch(batchMappingsFetch(newMappings));\n dispatch(getMappingsAttributes());\n }, []);\n\n useEffect(() => {\n if (isLoading(prevStatus) && status === 1) {\n enqueueSnackbar('Saving mappings...');\n dispatch(sourceMappingsFetch());\n }\n\n if (isLoading(prevStatus) && status === 32) {\n enqueueSnackbar('There was an error submitting your changes. Please try again.', {\n variant: 'error',\n });\n }\n }, [status]);\n\n return (\n \n );\n}\n\nexport default Container;\n","import { isError } from 'resift';\n\nfunction getHasError(status: any) {\n if (typeof status === 'number') {\n return isError(status);\n }\n\n return status.hasError();\n}\n\nexport default getHasError;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport classnames from 'classnames';\n\n// Material\nimport ArrowBack from '@material-ui/icons/ArrowBack';\nimport IconButton from '@material-ui/core/IconButton';\n\n// Style\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => {\n return {\n button: {\n marginRight: theme.spacing(),\n },\n icon: {\n color: theme.palette.text.primary,\n '&:hover': {\n color: theme.palette.secondary.A100,\n },\n },\n };\n};\n\nfunction BackButton({ classes, buttonClassName, iconClassName, goBack, query }) {\n const history = useHistory();\n\n const handleOnClick = () => {\n if (goBack) {\n history.goBack();\n } else {\n let { url } = useParams();\n let routes = url.split('/');\n routes.shift();\n\n let routeHref = '';\n // routes.length - 2 represents all routes except for the last one\n for (let i = 0; i <= routes.length - 2; i++) {\n routeHref = routeHref + '/' + routes[i];\n }\n\n history.push({\n pathname: routeHref,\n query: query,\n });\n }\n };\n\n return (\n \n \n \n );\n}\n\nBackButton.propTypes = {\n query: PropTypes.object,\n goBack: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n buttonClassName: PropTypes.string,\n iconClassName: PropTypes.string,\n};\n\nBackButton.skpName = 'PageBackButton';\n\nexport default withStyles(styles)(BackButton);\n","import { defineFetch } from 'resift';\n\nconst makeUpdateRole = defineFetch({\n displayName: 'Update Role',\n make: (personId: string, key?: string) => ({\n request: (role: number) => ({ http }) =>\n http({\n method: 'PUT',\n route: `/people/${personId}/role`,\n data: {\n role,\n },\n }),\n }),\n});\n\nexport default makeUpdateRole;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// UI\nimport Typography from '@material-ui/core/Typography';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n },\n };\n};\n\nclass ErrorView extends PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n };\n\n render() {\n return (\n
\n {'Yikes, an error occurred.'}\n {'Try reloading the page, if the'}\n {'issue persists then please contact us.'}\n
\n );\n }\n}\n\nexport default withStyles(styles)(ErrorView);\n","import React from 'react';\n\n// UI\nimport Loader from '@sift/skipper/components/Loader';\nimport ErrorView from './ErrorView';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 0 auto',\n position: 'relative',\n },\n overlay: {},\n};\n\nexport default withStyles(styles)(props => {\n return } {...props} />;\n});\n","export default {\n ENV: 'production',\n API_ENV: '',\n LOGIN: 'https://login.justsift.com',\n SENTRY: 'https://834a4adfd7154aeab403f2651536a2dc@sentry.io/176731',\n CSV_TEMPLATE_URL: 'https://siftprodcoredata.z13.web.core.windows.net/sift-templates/csv_source_sample.csv',\n ANALYTICS: {\n INTERCOM: {\n ajsName: 'Intercom',\n options: {\n appId: 'tudn7o48',\n },\n },\n },\n};\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\ninterface Props {\n label?: string;\n onClick: () => void;\n disabled?: boolean;\n}\n\nexport default function CancelButton({ label = 'Cancel', disabled = false, ...other }: Props) {\n return (\n \n );\n}\n","import { HOME_URL, DIRECTORIES_URL, SOURCE_CREATE_URL, SOURCE_URL } from 'components/Router/consts';\n\nexport default function makeSourceCreateBaseUrl(directoryId?: string, sourceId?: string) {\n const directoryIdPath = directoryId ? `/${directoryId}` : '';\n const sourcePath = sourceId ? `${SOURCE_URL}/${sourceId}` : '';\n\n return `${HOME_URL}${DIRECTORIES_URL}${directoryIdPath}${sourcePath}${SOURCE_CREATE_URL}`;\n}\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Entity Types',\n share: {\n namespace: 'entity types',\n merge: (previous, next) => ({ ...previous, ...next }),\n },\n make: () => ({\n key: [],\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/entity-types`,\n query: { returnDisabledFields: true },\n }),\n }),\n});\n","import React from 'react';\nimport classNames from 'classnames';\nimport Link, { LinkProps } from '@material-ui/core/Link';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props extends LinkProps {}\n\nfunction HelpDocLink(props: Props) {\n const classes = useStyles();\n\n const { color, underline, target, rel, className, ...restOfProps } = props;\n\n return (\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: { ...theme.typography.body1, display: 'block', marginTop: theme.spacing(0.75) },\n}));\n\nexport default HelpDocLink;\n","import React from 'react';\nimport config from 'config';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport colors from 'styles/colors';\nimport { transparentize } from 'polished';\n\nimport Typography from '@material-ui/core/Typography';\nimport WarningRoundedIcon from '@material-ui/icons/WarningRounded';\nimport HelpArticleLink from 'components/Page/HelpArticleLink';\n\nimport SourceType from 'types/Source';\n\nconst PRIMARY_INFO = [\n First Name,\n Last Name,\n Email Address,\n <>\n Direct Manager Email, ID or Name (required for Org Chart)\n ,\n];\n\nconst COMPLEMENTARY_INFO = [\n <>\n Unique Identifier (matching the unique identifier from your Primary Source)\n ,\n];\n\ninterface Props {\n isPrimary: boolean;\n}\n\nfunction FileUploadInfoCard({ isPrimary }: Props) {\n const classes = useStyles() as any;\n const infoBullets = isPrimary ? PRIMARY_INFO : COMPLEMENTARY_INFO;\n\n return (\n
\n
\n \n Read Before Importing\n
\n
\n
\n For a successful CSV import, we require at least the following attributes\n to be included for every person. These attributes need to be in separate{' '}\n columns:\n
\n
    \n {infoBullets.map((bullet, index) => (\n
  • \n {bullet}\n
  • \n ))}\n
\n
\n Need help formatting your CSV file? Use our{' '}\n , or read our{' '}\n {' '}\n to reorganize your data.\n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n fileDropInfoCard: {\n padding: theme.spacing(1.5),\n maxWidth: 377,\n minHeight: 267,\n border: `2px solid ${colors.warning}`,\n backgroundColor: transparentize(0.75, colors.warning),\n marginRight: theme.spacing(6.5),\n borderRadius: '4px',\n },\n infoCardTitle: {\n display: 'flex',\n marginBottom: theme.spacing(0.5),\n },\n infoCardContent: {\n fontSize: theme.typography.body2.fontSize,\n marginLeft: theme.spacing(4.125),\n marginRight: theme.spacing(),\n },\n infoCardFooter: {\n marginTop: theme.spacing(),\n },\n listItem: {\n listStyleType: 'disc !important',\n },\n icon: {\n height: 24,\n width: 24,\n fill: colors.warning,\n marginRight: theme.spacing(),\n },\n bullets: {\n paddingLeft: theme.spacing(2.5),\n margin: 0,\n },\n };\n});\n\nexport default FileUploadInfoCard;\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Send Batch Mappings',\n make: () => ({\n key: [],\n request: (batchMappings: any[]) => async ({ http }: any) => {\n const data = await http({\n method: 'PUT',\n route: '/source-mappings',\n data: { actions: batchMappings },\n });\n\n return data;\n },\n }),\n});\n","import { defineFetch } from 'resift';\n\nexport default defineFetch({\n displayName: 'Get Source Mappings',\n make: (sourceId: string) => ({\n key: [sourceId],\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: '/source-mappings',\n query: { sourceId },\n }),\n }),\n});\n","import { defineFetch } from 'resift';\nimport * as Types from 'pages/Pages/typings';\n\nconst makeCreateEntityType = defineFetch({\n displayName: 'Create Entity Type',\n make: () => ({\n request: ({\n name,\n newPersonFieldType,\n convertPersonField,\n parentFieldId,\n }: Types.NewEntityType) => ({ http }: any) =>\n http({\n method: 'POST',\n route: '/entity-types',\n data: {\n name,\n isActive: false,\n newPersonFieldType,\n convertPersonField,\n parentFieldId,\n },\n }),\n }),\n});\n\nconst createEntityType = makeCreateEntityType();\n\nexport default createEntityType;\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles, createStyles } from '@material-ui/styles';\n\n// Components\nimport classNames from 'classnames';\nimport Dialog from '@material-ui/core/Dialog';\nimport { SlideTitle } from '@sift/skipper/components/SlideDialog';\n\ninterface Props {\n dialogClassName?: string;\n slideContainerClassName?: string;\n open: boolean;\n setDialogOpen: (open: boolean) => void;\n title?: string;\n subtitle?: string;\n titleActions?: (slideIndex: number, setSlideIndex: SetSlideIndexType) => React.ReactNode;\n defaultSlideIndex?: number;\n children: (slideIndex: number, setSlideIndex: SetSlideIndexType) => React.ReactNode[];\n dialogProps?: any;\n}\n\ntype SetSlideIndexType = (slideIndex: number) => void;\n\nexport default function SlideDialog({\n open,\n setDialogOpen,\n title,\n subtitle,\n titleActions,\n dialogProps,\n defaultSlideIndex = 0,\n dialogClassName,\n slideContainerClassName,\n children,\n}: Props) {\n const classes = useStyles();\n const onClose = () => setDialogOpen(false);\n const [currentSlideIndex, setSlideIndex] = useState(defaultSlideIndex);\n\n useEffect(() => {\n setSlideIndex(defaultSlideIndex);\n }, [defaultSlideIndex]);\n\n const displaySlide = () => {\n const content = children(currentSlideIndex, setSlideIndex).map(\n (slide: React.ReactNode, slideIndex: number) => {\n const isLeft = slideIndex < currentSlideIndex;\n const showSlideClass = isLeft ? classes.leftSlide : classes.rightSlide;\n const hideSlideClass = isLeft ? classes.leftSlideHidden : classes.rightSlideHidden;\n\n return (\n \n {slide}\n
\n );\n },\n );\n\n return content;\n };\n\n const TitleActionsElem = titleActions && titleActions(currentSlideIndex, setSlideIndex);\n\n return (\n \n {title && }\n \n {displaySlide()}\n
\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return createStyles({\n slideContainer: {\n flex: '1 1 auto',\n display: 'flex',\n position: 'relative',\n overflow: 'hidden',\n minHeight: 400,\n '& > div': {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n },\n slide: {\n position: 'absolute',\n width: '100%',\n minWidth: '100%',\n height: '100%',\n transition: theme.transitions.create(['left', 'opacity'], {\n duration: theme.transitions.duration.complex,\n }),\n display: 'flex',\n flexDirection: 'column',\n },\n leftSlide: {\n left: 0,\n opacity: 1,\n },\n leftSlideHidden: {\n left: '-100%',\n opacity: 0,\n },\n rightSlide: {\n left: 0,\n opacity: 1,\n },\n rightSlideHidden: {\n left: '100%',\n opacity: 0,\n },\n });\n});\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\n\ninterface Props {\n actions?: React.ReactNode;\n children: React.ReactNode;\n lastSlideIndex?: number;\n renderBackIcon?: boolean;\n renderCloseIcon?: boolean;\n resetIndex?: number;\n slideTitle?: string;\n slideSubtitle?: string;\n onSetOpen?: (status: boolean) => void;\n setSlideIndex: (slideIndex: number) => void;\n}\n\nfunction SlideContent({\n actions,\n children,\n lastSlideIndex = 0,\n renderBackIcon = false,\n renderCloseIcon = false,\n resetIndex = 0,\n slideTitle,\n slideSubtitle,\n onSetOpen,\n setSlideIndex,\n}: Props) {\n const classes = useStyles();\n\n const handleClose = () => {\n onSetOpen && onSetOpen(false);\n setSlideIndex(resetIndex);\n };\n\n const shouldRenderTitleContainer =\n slideTitle || slideSubtitle || renderBackIcon || renderCloseIcon;\n\n return (\n
\n {shouldRenderTitleContainer && (\n
\n
\n {renderBackIcon && (\n setSlideIndex(lastSlideIndex)}>\n \n \n )}\n
\n {slideTitle}\n {slideSubtitle && {slideSubtitle}}\n
\n
\n {renderCloseIcon && (\n \n \n \n )}\n
\n )}\n
{children}
\n {actions && (\n
\n {actions}\n
\n )}\n
\n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n slide: {\n padding: theme.spacing(3),\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n slideTitleContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignContent: 'center',\n marginBottom: theme.spacing(2),\n },\n slideTitle: {\n display: 'flex',\n alignItems: 'center',\n },\n slideContent: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n },\n flexAlignCenter: {\n display: 'flex',\n flexDirection: 'column',\n },\n slideFooter: {\n display: 'flex',\n justifyContent: 'flex-end',\n '& > *:not(:last-child)': {\n marginRight: theme.spacing(2),\n },\n },\n}));\n\nexport default SlideContent;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst AttributePageIcon: React.ComponentType = 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\nexport default AttributePageIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst IndpendentPageIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default IndpendentPageIcon;\n","import React from 'react';\nimport classnames from 'classnames';\nimport useTerminology from '@sift/skipper/helpers/useTerminology';\n\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport SlideContent from './SlideContent';\nimport AttributePageIcon from 'components/Icons/AttributePage';\nimport IndependentPageIcon from 'components/Icons/IndependentPage';\n\ninterface Props {\n classes: any;\n onSetOpen: (status: boolean) => void;\n setSlideIndex: (slideIndex: number) => void;\n}\n\nfunction ChoosePageTypeSlide({ classes, onSetOpen, setSlideIndex }: Props) {\n const terminology = useTerminology();\n\n return (\n \n
\n setSlideIndex(1)}\n >\n \n \n \n Attribute Pages\n \n \n Create pages that will be associated to {terminology.plural} in Sift. These pages will\n be linked to from your {terminology.singular} profile pages, and page editors or data\n sync will be able to manage people that are associated to each page.\n \n \n \n setSlideIndex(2)}\n >\n \n \n \n Independent Pages\n \n \n Create pages that are not associated to {terminology.plural}. These pages will only be\n accessible from Sift search and will not include members.\n \n \n \n
\n \n );\n}\n\nexport default ChoosePageTypeSlide;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst ConvertAttribute: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default ConvertAttribute;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst CreateNewAttribute: React.ComponentType = 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 \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default CreateNewAttribute;\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport SlideContent from './SlideContent';\nimport ConvertAttributeIcon from 'components/Icons/ConvertAttribute';\nimport CreateNewAttributeIcon from 'components/Icons/CreateNewAttribute';\n\ninterface Props {\n classes: any;\n setSlideIndex: (slideIndex: number) => void;\n onSetOpen: (status: boolean) => void;\n}\n\nfunction AttributeSlide({ classes, setSlideIndex, onSetOpen }: Props) {\n return (\n \n
\n setSlideIndex(3)}\n >\n \n \n \n Convert an existing attribute\n \n \n Choose an existing Short Text or Text (Chip) Collection attribute to attach pages to.\n If the attribute already has existing values, we will automatically create pages for\n each value. If this attribute is mapped from a data source, pages will be\n automatically created and deleted during data sync.\n \n \n \n setSlideIndex(4)}\n >\n \n \n \n Create a new attribute\n \n \n If you do not have an existing attribute to attach to, you may create one.\n \n \n \n
\n \n );\n}\n\nexport default AttributeSlide;\n","import React, { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport delay from 'delay';\nimport getOnboardingTasks from 'fetches/getOnboardingTasks';\nimport * as Types from 'pages/Pages/typings';\n\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport CancelButton from 'components/Page/CancelButton';\nimport SlideContent from './SlideContent';\nimport LoadingButton from 'atoms/LoadingButton';\n\ninterface Props {\n loading: boolean;\n onSave: (data: Types.NewEntityType) => void;\n onSetOpen: (status: boolean) => void;\n setSlideIndex: (slideIndex: number) => void;\n}\n\nfunction IndependentSlide({ loading, onSave, onSetOpen, setSlideIndex }: Props) {\n const dispatch = useDispatch();\n const [independentPageTypeName, setIndependentPageTypeName] = useState('');\n const handleIndependentPageTypeNameChange = (e: React.ChangeEvent) => {\n setIndependentPageTypeName(e.target.value);\n };\n\n const handleCreateIndependentPage = async () => {\n independentPageTypeName &&\n onSave({\n name: independentPageTypeName,\n newPersonFieldType: null,\n convertPersonField: null,\n parentFieldId: null,\n });\n\n await delay(8000);\n dispatch(getOnboardingTasks());\n };\n\n return (\n \n setSlideIndex(0)} />\n \n \n }\n lastSlideIndex={0}\n renderBackIcon\n slideTitle=\"Create New Independent Pages\"\n onSetOpen={onSetOpen}\n setSlideIndex={setSlideIndex}\n >\n
\n Page Type Name\n \n What type of things do these pages represent? For example: 'Project', 'Award', etc.\n \n
\n \n \n );\n}\n\nexport default IndependentSlide;\n","import React, { useState, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport delay from 'delay';\nimport _get from 'lodash/get';\nimport _sortBy from 'lodash/sortBy';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\nimport * as Types from 'pages/Pages/typings';\nimport { Field } from '@sift/types';\nimport isFieldValidConfigOption from 'helpers/isFieldValidConfigOption';\nimport getOnboardingTasks from 'fetches/getOnboardingTasks';\n\nimport TextField from '@material-ui/core/TextField';\nimport CancelButton from 'components/Page/CancelButton';\nimport Typography from '@material-ui/core/Typography';\nimport Radio from '@material-ui/core/Radio';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport SlideContent from './SlideContent';\nimport LoadingButton from 'atoms/LoadingButton';\n\ninterface Props {\n classes: any;\n loading: boolean;\n onSave: (data: Types.NewEntityType) => void;\n onSetOpen: (status: boolean) => void;\n setSlideIndex: (slideIndex: number) => void;\n}\n\nfunction ExistingAttributeSlide({ classes, loading, onSave, setSlideIndex, onSetOpen }: Props) {\n const entityTypes = useEntityTypes();\n const dispatch = useDispatch();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const { _fields } = userConfig;\n\n const configFieldCollection = useMemo(\n () =>\n Object.values(_fields)\n .filter((field: Field) => isFieldValidConfigOption(field, { excludeChildNameFields: true }))\n .filter(\n (field: Field) =>\n field.deletable &&\n (field.type === 'text' || _get(field, 'item.type') === 'text') &&\n field.baseField !== 'messageAddress',\n ) as Field[],\n [_fields],\n );\n\n const availableAttributes = _sortBy(configFieldCollection, field => {\n return field.displayName.toLowerCase();\n });\n\n const [attribute, setAttribute] = useState(null);\n\n const handleSave = async () => {\n attribute &&\n onSave({\n name: null,\n newPersonFieldType: null,\n convertPersonField: _get(attribute, 'objectKey'),\n parentFieldId: null,\n });\n\n await delay(8000);\n dispatch(getOnboardingTasks());\n };\n\n const handleSelectValue = (event: React.ChangeEvent<{}>, newValue: Field | null) => {\n setAttribute(newValue);\n };\n\n return (\n \n setSlideIndex(1)} />\n \n \n }\n renderBackIcon={true}\n renderCloseIcon={true}\n slideTitle=\"Convert an Existing Attribute\"\n onSetOpen={onSetOpen}\n setSlideIndex={setSlideIndex}\n >\n \n Choose a Short Text or Text (Chip) Collection attribute to transform to a page attribute. If\n the attribute already has existing values, we will automatically create pages for each\n value. If this attribute is mapped from a data source, pages will be automatically created\n and deleted during data sync.\n \n {!!availableAttributes.length && (\n option.displayName}\n getOptionSelected={(option: Field) =>\n _get(attribute, 'displayName') === option.displayName\n }\n renderOption={(option, { selected }) => (\n <>\n \n {option.displayName}\n \n )}\n onChange={handleSelectValue}\n fullWidth={true}\n placeholder=\"Choose an attribute\"\n renderInput={params => }\n openOnFocus={true}\n />\n )}\n \n );\n}\n\nexport default ExistingAttributeSlide;\n","import React, { useState, useMemo } from 'react';\nimport _get from 'lodash/get';\nimport * as Types from 'pages/Pages/typings';\nimport { useLocation } from 'react-router';\nimport queryString from 'query-string';\nimport { BASE_FIELD_PAGE, BASE_FIELD_PAGE_COLLECTION } from 'pages/Attributes/consts';\n\nimport CancelButton from 'components/Page/CancelButton';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport AttributeTypeCard, { attributeTypes } from 'pages/AttributesNew/AttributeTypeCard';\nimport SlideContent from './SlideContent';\nimport LoadingButton from 'atoms/LoadingButton';\n\ninterface Props {\n classes: any;\n loading: boolean;\n selectedAttribute?: typeof BASE_FIELD_PAGE | typeof BASE_FIELD_PAGE_COLLECTION;\n onSave: (data: Types.NewEntityType) => void;\n onSetOpen: (status: boolean) => void;\n setSlideIndex: (slideIndex: number) => void;\n}\n\nfunction NewAttributeSlide({\n classes,\n loading,\n selectedAttribute,\n onSave,\n onSetOpen,\n setSlideIndex,\n}: Props) {\n const location = useLocation();\n const search = location.search;\n const query = useMemo(() => queryString.parse(search), [location.search]);\n const parentObjectKey = _get(query, 'parentObjectKey');\n const [newAttributeName, setNewAttributeName] = useState('');\n const [newAttributeType, setNewAttributeType] = useState<\n typeof BASE_FIELD_PAGE | typeof BASE_FIELD_PAGE_COLLECTION | null\n >(selectedAttribute || null);\n const error =\n Boolean(newAttributeType) &&\n (!Boolean(newAttributeName) ||\n (typeof newAttributeName === 'string' && newAttributeName.trim() === ''));\n let pageItem = _get(attributeTypes, BASE_FIELD_PAGE);\n let pageCollectionItem = _get(attributeTypes, BASE_FIELD_PAGE_COLLECTION);\n\n const handleChangeNewAttributeName = (e: React.ChangeEvent) => {\n setNewAttributeName(e.target.value);\n };\n\n const handleCreateNewAttribute = () => {\n newAttributeName &&\n onSave({\n name: newAttributeName,\n newPersonFieldType: newAttributeType,\n convertPersonField: null,\n parentFieldId: Boolean(parentObjectKey) ? 'user_reachOutToMeFor' : null,\n });\n };\n\n return (\n \n {\n newAttributeType ? onSetOpen(false) : setSlideIndex(1);\n }}\n />\n \n \n }\n renderBackIcon\n renderCloseIcon\n lastSlideIndex={1}\n resetIndex={newAttributeType ? 4 : 0}\n slideTitle=\"Create a New Attribute (Page Type)\"\n onSetOpen={onSetOpen}\n setSlideIndex={setSlideIndex}\n >\n Attribute (Page Type) Name\n \n What type of things do these pages represent? For example: 'Project', 'Award', etc.\n \n \n \n Attribute Data Type\n \n
\n setNewAttributeType(BASE_FIELD_PAGE)}\n link={false}\n />\n setNewAttributeType(BASE_FIELD_PAGE_COLLECTION)}\n />\n
\n \n );\n}\n\nexport default NewAttributeSlide;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { useStatus, useData, isLoading, combineStatuses, useClearFetch } from 'resift';\nimport _get from 'lodash/get';\nimport showSnackbar from 'helpers/showSnackbar';\nimport * as Types from 'pages/Pages/typings';\nimport createEntityType from 'fetches/createEntityType';\nimport makeEntityTypesFetch from 'store/configuration/actions/entityTypesFetch';\nimport useEntityTypes from 'helpers/useEntityTypes';\n\nimport SlideDialog from 'molecules/SlideDialog';\nimport ChoosePageTypeSlide from './ChoosePageTypeSlide';\nimport AttributeSlide from './AttributeSlide';\nimport IndependentSlide from './IndependentSlide';\nimport ExistingAttributeSlide from './ExistingAttributeSlide';\nimport NewAttributeSlide from './NewAttributeSlide';\n\ninterface Props {\n newAttributeType?: 'page' | 'pageCollection';\n open: boolean;\n onSetOpen: (status: boolean) => void;\n}\n\nfunction PageTypesDialog({ newAttributeType, open, onSetOpen }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const history = useHistory();\n const clearFetch = useClearFetch();\n const entityTypesFetch = makeEntityTypesFetch();\n const entityTypesFetchStatus = useStatus(entityTypesFetch);\n const [defaultSlideIndex, setDefaultSlideIndex] = useState(newAttributeType ? 4 : 0);\n const createEntityTypeStatus = useStatus(createEntityType);\n const newEntityTypeData = useData(createEntityType);\n const combinedStatus = combineStatuses(createEntityTypeStatus, entityTypesFetchStatus);\n const loading = isLoading(combinedStatus);\n const entityTypes = useEntityTypes();\n const entityId = _get(newEntityTypeData, 'id');\n const entityIdInEntityTypes = _get(entityTypes, entityId);\n\n const onSave = useCallback(\n async (data: Types.NewEntityType) => {\n !newAttributeType && setDefaultSlideIndex(0);\n await dispatch(createEntityType(data));\n await dispatch(entityTypesFetch());\n },\n [newAttributeType],\n );\n\n useEffect(() => {\n if (entityIdInEntityTypes) {\n onSetOpen(false);\n history.push(`/admin/pages/${entityId}`);\n }\n }, [entityId, entityIdInEntityTypes]);\n\n useEffect(() => {\n return () => {\n clearFetch(createEntityType);\n };\n }, []);\n\n showSnackbar({\n status: createEntityTypeStatus,\n variant: 'success',\n message: 'Your page type has been created.',\n errorMessage: 'There was an error creating your page type. Please try again.',\n });\n\n return (\n \n {(slideIndex, setSlideIndex) =>\n open\n ? [\n ,\n ,\n ,\n ,\n ,\n ]\n : []\n }\n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n dialogRoot: {\n minWidth: 600,\n minHeight: 500,\n overflowX: 'hidden',\n },\n slideContainer: {\n minHeight: 550,\n },\n paper: {\n boxShadow: theme.shadows[2],\n },\n slide: {\n padding: theme.spacing(3),\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n card: {\n width: '50%',\n cursor: 'pointer',\n },\n cardContent: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: 0,\n },\n marginRight3: {\n marginRight: theme.spacing(3),\n },\n marginRight: {\n marginRight: theme.spacing(),\n },\n marginBottom: {\n marginBottom: theme.spacing(),\n },\n marginBottom2: {\n marginBottom: theme.spacing(2),\n },\n cardImage: {\n height: 126,\n width: 264,\n marginBottom: theme.spacing(2),\n },\n textAlignCenter: {\n textAlign: 'center',\n },\n cardDiv: {\n display: 'flex',\n cursor: 'pointer',\n },\n activeCard: {\n border: `2px solid ${theme.palette.secondary.main}`,\n borderRadius: theme.spacing(0.5),\n },\n row: {\n display: 'flex',\n alignItems: 'flex-start',\n },\n}));\n\nexport default PageTypesDialog;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\n\n// Components\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport IconButton from '@material-ui/core/IconButton';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport classNames from 'classnames';\n\nconst styles = theme => {\n return {\n root: {\n background: theme.palette.common.white,\n display: 'flex',\n paddingTop: theme.spacing(0.25),\n paddingBottom: theme.spacing(0.25),\n fontSize: 14,\n },\n rootBorder: {\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n radioGroupRoot: {\n flexDirection: 'row',\n },\n objectKeyCell: {\n display: 'flex',\n alignItems: 'center',\n maxWidth: 280,\n width: '36%',\n flex: '1 1 auto',\n padding: theme.spacing(0, 0, 1 / 8, 1 / 2),\n },\n optOutCell: {\n flex: '1 1 auto',\n },\n icons: {\n display: 'flex',\n alignItems: 'center',\n },\n iconButton: {\n marginLeft: theme.spacing(0.5),\n },\n };\n};\n\nclass AttributeRow extends PureComponent {\n static propTypes = {\n dragIcon: PropTypes.node,\n index: PropTypes.number.isRequired,\n value: PropTypes.object.isRequired,\n list: PropTypes.array.isRequired,\n moveItem: PropTypes.func.isRequired,\n editPriorityList: PropTypes.func.isRequired,\n configFields: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n };\n\n state = {\n menuOpen: false,\n anchorEl: null,\n };\n\n toggleMenu = event => {\n this.setState({\n menuOpen: !this.state.menuOpen,\n anchorEl: event ? event.currentTarget : this.state.anchorEl,\n });\n };\n\n moveItem = (oldIndex, newIndex) => {\n return () => {\n this.props.moveItem({ oldIndex, newIndex });\n this.setState(prevState => ({\n menuOpen: !prevState.menuOpen,\n }));\n };\n };\n\n onDelete = () => {\n const { index, editPriorityList, list } = this.props;\n let listClone = [...list];\n listClone.splice(index, 1);\n editPriorityList(listClone);\n this.setState(prevState => ({\n menuOpen: !prevState.menuOpen,\n }));\n };\n\n onRadioSelect = () => {\n const { list, index, editPriorityList } = this.props;\n let listClone = [...list];\n const attributeClone = {\n ...list[index],\n canOptOut: !list[index].canOptOut,\n };\n\n listClone.splice(index, 1, attributeClone);\n editPriorityList(listClone);\n };\n\n optOutBlackList(key) {\n const blackList = {\n education: true,\n experience: true,\n languages: true,\n };\n\n return blackList[key];\n }\n\n render() {\n const { configFields, dragIcon, value, index, list, classes } = this.props;\n const isLast = index === list.length - 1;\n const isDisabled = this.optOutBlackList(value.objectKey);\n const field = _get(configFields, `${value.objectKey}`);\n\n return field ? (\n \n
{field.displayName}
\n
\n \n }\n />\n }\n />\n \n
\n
\n {list.length > 1 && dragIcon}\n \n \n \n \n {index !== 0 ? (\n Move up \n ) : null}\n {!isLast ? (\n Move down \n ) : null}\n Remove from completion notifications \n \n
\n
\n ) : null;\n }\n}\n\nexport default withStyles(styles)(AttributeRow);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport ReorderIcon from '@material-ui/icons/Reorder';\nimport { SortableContainer, SortableElement, SortableHandle, arrayMove } from 'react-sortable-hoc';\nimport AttributeRow from './AttributeRow';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => ({\n drag: {\n marginTop: -1,\n cursor: 'move',\n },\n});\n\nclass SortableList extends PureComponent {\n static propTypes = {\n list: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n configFields: PropTypes.object.isRequired,\n // Actions\n editPriorityList: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n list: props.list,\n };\n }\n\n static getDerivedStateFromProps(nextProps) {\n return {\n list: nextProps.list,\n };\n }\n\n dragHandle = SortableHandle(() => {\n const { classes } = this.props;\n return ;\n });\n\n sortableItem = SortableElement(({ value, dataIndex }) => {\n const DragHandle = this.dragHandle;\n\n return (\n }\n moveItem={this.onSortEnd}\n list={this.state.list}\n editPriorityList={this.props.editPriorityList}\n />\n );\n });\n\n sortList = SortableContainer(({ items }) => {\n const SortableItem = this.sortableItem;\n const SortableItems = items.map((value, index) => (\n \n ));\n\n return
{SortableItems}
;\n });\n\n onSortEnd = ({ oldIndex, newIndex }) => {\n if (oldIndex !== newIndex) {\n const list = arrayMove(this.state.list, oldIndex, newIndex);\n this.setState({ list });\n this.props.editPriorityList(list);\n }\n };\n\n render() {\n const list = this.state.list;\n const SortableListElem = this.sortList;\n\n return (\n \n );\n }\n}\n\nexport default withStyles(styles)(SortableList);\n","import React, { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport getPriorityListItems from 'helpers/getPriorityListItems';\n\n// Components\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Table from 'components/Table';\nimport TableHead from 'components/Table/TableHead';\nimport TableHeadCell from 'components/Table/TableHeadCell';\nimport SortableList from './SortableList';\nimport AttributeSelector from 'components/attributeSelector/Local';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Button from '@material-ui/core/Button';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport classnames from 'classnames';\n\nfunction getSelectedAttributes(selectedAttributes, field, index) {\n return {\n ...selectedAttributes,\n [field.objectKey]: {\n ...field,\n id: field.objectKey,\n },\n };\n}\n\nfunction PriorityList({\n classes,\n configFields,\n editPriorityList,\n isModalOpen,\n onCloseModal,\n priorityList,\n resetState,\n}) {\n const [selectedAttributes, setSelectedAttributes] = useState(\n priorityList.reduce(getSelectedAttributes, {}),\n );\n\n useEffect(() => {\n setSelectedAttributes(priorityList.reduce(getSelectedAttributes, {}));\n }, [priorityList]);\n\n const getAttributeKey = attribute => attribute.id;\n\n const getAttributeDisplayName = attribute => attribute.displayName;\n\n const changeOptOutDefault = key => {\n const optOutNo = {\n skills: true,\n bio: true,\n interests: true,\n };\n\n return optOutNo[key];\n };\n\n const onSaveSelectedAttributes = (checkedAttributes = {}) => {\n const newFields = Object.keys(checkedAttributes).map((key, index) => {\n // if already selected, take that value, if not, then run this.changeOptOutDefault and get default optout value\n const canOptOut = selectedAttributes[key]\n ? selectedAttributes[key].canOptOut\n : !changeOptOutDefault(key);\n\n return {\n objectKey: key,\n canOptOut: canOptOut,\n };\n });\n\n const newSelectedAttributes = Object.keys(selectedAttributes).map((key, index) => {\n return {\n objectKey: key,\n ...selectedAttributes[key],\n };\n });\n\n editPriorityList([...newFields, ...newSelectedAttributes]);\n setSelectedAttributes(newFields.reduce(getSelectedAttributes, {}));\n };\n\n const handleCancel = () => {\n resetState();\n onCloseModal();\n };\n\n const configFieldCollectionFiltered = useMemo(\n () => getPriorityListItems(configFields, priorityList),\n [configFields, priorityList],\n );\n\n const attributesSelectorElem = (\n \n );\n\n const headerTitleElem = (\n
\n Edit Attribute Priority\n {attributesSelectorElem}\n
\n );\n\n const attributeHeaderCellClasses = classnames(classes.TableHeadCellRoot, classes.attributeHeader);\n\n return (\n \n {headerTitleElem}\n \n {priorityList.length ? (\n \n \n \n Attribute\n \n \n Can user opt out?\n \n \n \n \n \n
\n ) : (\n 'No items to display. Add an attribute to create your Priority List.'\n )}\n {priorityList && (\n \n )}\n
\n \n \n \n Done\n \n \n \n );\n}\n\nPriorityList.propTypes = {\n classes: PropTypes.object.isRequired,\n configFields: PropTypes.object.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n priorityList: PropTypes.array.isRequired,\n // Actions\n editPriorityList: PropTypes.func.isRequired,\n onCloseModal: PropTypes.func.isRequired,\n resetState: PropTypes.func.isRequired,\n};\n\nconst styles = theme => {\n return {\n root: {\n overflow: 'visible',\n },\n rootDialog: {\n minHeight: 580,\n minWidth: 600,\n },\n attributeHeader: {\n width: '46%',\n paddingLeft: theme.spacing(0.5),\n },\n attributesList: {\n fontSize: 16,\n },\n TableHeadCellRoot: {\n borderBottom: 'none',\n },\n headerTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n questionMark: {\n width: 15,\n marginLeft: theme.spacing(0.5),\n marginBottom: theme.spacing(-0.25),\n },\n };\n};\nexport default withStyles(styles)(PriorityList);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport qs from 'query-string';\nimport compose from 'recompose/compose';\n\nimport TableCell from '@material-ui/core/TableCell';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\n\n// Style\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n color: theme.palette.secondary.main,\n fontWeight: '700',\n height: '20px',\n },\n };\n};\n\nclass TableHeadCell extends PureComponent {\n static propTypes = {\n sortByKey: PropTypes.string,\n TableSortLabelProps: PropTypes.object,\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n };\n\n /**\n * Pushes the correct queryString on to the URL.\n */\n orderBy = key => {\n const { history } = this.props;\n const query = qs.parse(history.location.search);\n\n const setToAsc = query.sortDirection === 'desc' ? 'asc' : 'desc';\n query.sortDirection = query.sortBy === key ? setToAsc : 'desc';\n query.sortBy = key;\n\n if (query.page) {\n delete query.page;\n }\n\n history.push(`${history.location.pathname}?${qs.stringify(query)}`);\n };\n\n render() {\n const {\n sortByKey,\n classes,\n children,\n TableSortLabelProps,\n history,\n location,\n match,\n staticContext, // eslint-disable-line\n ...otherProps\n } = this.props;\n const query = qs.parse(history.location.search);\n\n const LabelComponent = sortByKey && query ? TableSortLabel : 'span';\n const labelComponentProps = {};\n if (sortByKey && query) {\n labelComponentProps.active = query.sortBy === sortByKey;\n labelComponentProps.direction = query.sortDirection;\n labelComponentProps.onClick = () => this.orderBy(sortByKey);\n }\n\n return (\n \n {children}\n \n );\n }\n}\n\nexport default compose(withRouter, withStyles(styles))(TableHeadCell);\n","import _partition from 'lodash/partition';\nimport * as Typings from 'components/onboarding/typings';\n\nexport default function reorderTasks(categoryList: Typings.TaskCategoryList) {\n const [completeCategories, _incompleteCategories] = _partition(\n categoryList,\n c => c.completionPercentage === 1,\n );\n\n // expand first incompleteCategory\n const incompleteCategories = _incompleteCategories.length\n ? [{ ..._incompleteCategories[0], isExpanded: true }, ..._incompleteCategories.slice(1)]\n : [];\n\n return [...incompleteCategories, ...completeCategories].map(c => {\n const [completeTasks, incompleteTasks] = _partition(c.tasks, t => t.isComplete);\n\n return {\n ...c,\n tasks: [...incompleteTasks, ...completeTasks],\n };\n });\n}\n","import _findIndex from 'lodash/findIndex';\nimport createReducer from '@sift/resift/createReducer';\n\nimport { LIST_SLIDE_KEY, CHEERS_SLIDE_KEY } from 'components/onboarding/constants';\nimport reorderTasks from 'components/onboarding/reorderTasks';\nimport * as Types from 'components/onboarding/typings';\n\nexport interface State {\n bubbleOpen: boolean;\n checkList: Types.TaskCategoryList;\n slideKey: string; // LIST_SLIDE_KEY | CHEERS_SLIDE_KEY | taskId;\n prevSlideKey: string; // LIST_SLIDE_KEY | CHEERS_SLIDE_KEY | taskId;\n taskIdInFocus: string | null; // use in completion cheers;\n bubbleSeenByUser: boolean;\n}\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const TOGGLE_ONBOARDING_BUBBLE_OPEN = 'TOGGLE_ONBOARDING_BUBBLE_OPEN';\nexport const TOGGLE_CATEGORY_EXPANSION = 'TOGGLE_CATEGORY_EXPANSION';\nexport const TOGGLE_TASK_COMPLETION = 'TOGGLE_TASK_COMPLETION';\nexport const SET_ONBOARDING_TASKS = 'SET_ONBOARDING_TASKS';\nexport const SET_SLIDE_KEY = 'SET_SLIDE_KEY';\nexport const SET_TASK_ID_IN_FOCUS = 'SET_TASK_ID_IN_FOCUS';\nexport const SET_BUBBLE_SEEN_BY_USER = 'SET_BUBBLE_SEEN_BY_USER';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const toggleBubbleOpen = () => {\n return {\n type: TOGGLE_ONBOARDING_BUBBLE_OPEN,\n identifier: 'onboarding',\n };\n};\n\nexport const toggleCategoryExpansion = (categoryId: string) => {\n return {\n type: TOGGLE_CATEGORY_EXPANSION,\n identifier: 'onboarding',\n payload: {\n categoryId,\n },\n };\n};\n\nexport const toggleTaskCompletion = (categoryId: string, taskId: string) => {\n return {\n type: TOGGLE_TASK_COMPLETION,\n identifier: 'onboarding',\n payload: {\n categoryId,\n taskId,\n },\n };\n};\n\nexport const setOnboardingTasks = (onboardingTasks: Types.TaskCategoryList) => {\n return {\n type: SET_ONBOARDING_TASKS,\n identifier: 'onboarding',\n payload: {\n onboardingTasks,\n },\n };\n};\n\nexport const setSlideKey = (slideKey: string) => {\n return {\n type: SET_SLIDE_KEY,\n identifier: 'onboarding',\n payload: {\n slideKey,\n prevSlideKey: slideKey,\n },\n };\n};\n\nexport const setTaskIdInFocus = (taskIdInFocus: string) => {\n return {\n type: SET_TASK_ID_IN_FOCUS,\n identifier: 'onboarding',\n payload: {\n taskIdInFocus,\n },\n };\n};\n\nexport const setBubbleSeenByUser = () => {\n return {\n type: SET_BUBBLE_SEEN_BY_USER,\n identifier: 'onboarding',\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [TOGGLE_ONBOARDING_BUBBLE_OPEN]: (state: State) => {\n return {\n ...state,\n bubbleOpen: !state.bubbleOpen,\n };\n },\n\n [TOGGLE_CATEGORY_EXPANSION]: (state: State, action: any) => {\n const categoryId = action.payload.categoryId;\n const index = _findIndex(state.checkList, item => item.id === categoryId);\n\n if (index === -1) {\n return state;\n }\n\n return {\n ...state,\n checkList: state.checkList.map((item, i) => {\n if (i === index) {\n return { ...item, isExpanded: !item.isExpanded };\n }\n\n return item;\n }),\n };\n },\n\n [TOGGLE_TASK_COMPLETION]: (state: State, action: any) => {\n const categoryId = action.payload.categoryId;\n const taskId = action.payload.taskId;\n\n return {\n ...state,\n slideKey: CHEERS_SLIDE_KEY,\n taskIdInFocus: taskId,\n checkList: reorderTasks(\n state.checkList.map(category => {\n if (category.id === categoryId) {\n return {\n ...category,\n tasks: category.tasks.map(t => {\n if (t.id === taskId) {\n return {\n ...t,\n isComplete: !t.isComplete,\n };\n }\n\n return t;\n }),\n };\n }\n\n return category;\n }),\n ),\n };\n },\n\n [SET_ONBOARDING_TASKS]: (state: State, action: any) => {\n return {\n ...state,\n checkList: reorderTasks(action.payload.onboardingTasks),\n };\n },\n\n [SET_SLIDE_KEY]: (state: State, action: any) => {\n return {\n ...state,\n slideKey: action.payload.slideKey,\n prevSlideKey: action.payload.prevSlideKey,\n bubbleOpen: true,\n };\n },\n\n [SET_BUBBLE_SEEN_BY_USER]: (state: State) => {\n return {\n ...state,\n bubbleSeenByUser: true,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState: State = {\n bubbleOpen: false,\n checkList: [],\n slideKey: LIST_SLIDE_KEY,\n prevSlideKey: '',\n taskIdInFocus: null,\n bubbleSeenByUser: false,\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\n","export const HELP_ARTICLE_HOME = 'https://help.justsift.com/en/';\n\nexport const HELP_LINKS = [\n { name: 'Kick-Off Guide', href: 'https://help.justsift.com/en/articles/3990510-kick-off-guide' },\n { name: 'Implementation', href: 'https://help.justsift.com/en/articles/3956499-implementation' },\n { name: 'Configuration', href: 'https://help.justsift.com/en/articles/3956516-configuration' },\n { name: 'Onboarding', href: 'https://help.justsift.com/en/articles/3953480-onboarding' },\n];\n\nexport const LIST_SLIDE_KEY = 'list';\nexport const CHEERS_SLIDE_KEY = 'celebrate';\n","import { useEffect } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { isLoading, isNormal, isError } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\n\ninterface Props {\n status: number;\n message?: string;\n errorMessage?: string;\n variant?: 'error' | 'warning' | 'info' | 'success' | 'default';\n}\n\nfunction showSnackbar({\n status,\n message = 'Action complete.',\n errorMessage = 'An error occurred',\n variant,\n}: Props) {\n const previousStatus = usePrevious(status);\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n if (isNormal(status) && isLoading(previousStatus) && !isLoading(status) && !isError(status)) {\n enqueueSnackbar(message, { variant });\n } else if (isError(status) && isLoading(previousStatus) && !isLoading(status)) {\n enqueueSnackbar(errorMessage, { variant: 'error' });\n }\n }, [status, previousStatus]);\n}\n\nexport default showSnackbar;\n"],"sourceRoot":""}