{"version":3,"sources":["components/onboarding/constants.ts","styles/defineStyles.ts","components/Page/SaveButton.tsx","components/Page/newComponents/PageFormToolbar.tsx","helpers/consts.ts","atoms/LoadingButton.tsx","pages/Administrators/index.tsx","pages/Applications/index.tsx","pages/ApplicationEdit/index.tsx","store/attribute/actions/createCategoryFieldFetch.ts","store/attribute/actions/updateCategoryFieldFetch.ts","fetches/makeGetUserFieldsFetch.ts","fetches/makeGetFieldsFetch.ts","pages/AttributesEdit/helpers/useAttributesEditDialog.ts","pages/AttributesNew/AttributesChooseNew.tsx","components/Page/newComponents/index.tsx","pages/AttributesEdit/components/AttributeBasicInfo.tsx","pages/AttributesNew/AttributesCreateNew.tsx","helpers/convertStringToArrayOfStrings.ts","helpers/removeEmptyObjProps.ts","pages/Attributes/_helpers/getProfileAttributes.js","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/OrgChart/OrgChartHighlightsLayout.tsx","pages/Features/tabs/Directory/FilterLayout.tsx","pages/AttributesEdit/components/AttributeUsage.tsx","pages/AttributesEdit/components/AttributeRow.js","pages/AttributesEdit/components/SubAttributesTable.js","pages/AttributesEdit/components/AttributeReachOutToMeFor.tsx","pages/AttributesEdit/components/DirectoryMapping/DirectoryMapping.js","store/attribute/actions/fieldDirectoryMappingsFetch.ts","pages/AttributesEdit/components/DirectoryMapping/index.tsx","pages/AttributesEdit/components/AttributeDataMapping.tsx","pages/AttributesEdit/components/AttributeUserEditing.tsx","molecules/ConfirmationDialog.tsx","pages/AttributesEdit/components/DeleteAttribute/DeleteAttribute.tsx","store/attribute/actions/deleteCategoryFieldFetch.ts","pages/AttributesEdit/components/DeleteAttribute/index.js","pages/AttributesEdit/AttributesEdit.tsx","pages/ProfileLayout/fetches/updateLayoutFetch.ts","fetches/makeUpdateAttributeAutocomplete.ts","fetches/makeGetAttributeAutocomplete.ts","pages/AttributesEdit/container.tsx","pages/AttributesEditModal/AttributesEditModal.tsx","pages/AttributeSocialPhotos/index.js","pages/Directories/index.js","pages/Directory/index.ts","fetches/getRootNodes.ts","pages/Features/constants.ts","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/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","fetches/homepageWidgets/getWidgetTypes.ts","fetches/homepageWidgets/getWidgets.ts","fetches/homepageWidgets/deleteWidget.ts","fetches/homepageWidgets/createWidget.ts","molecules/IeSucksBanner.tsx","pages/Homepage/tabs/WidgetsTab/components/CustomGridPanel.tsx","pages/Homepage/tabs/WidgetsTab/components/CustomToolbar.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts.ts","pages/Homepage/tabs/WidgetsTab/WidgetsTab.tsx","fetches/homepageWidgets/makeGetWidgetLayout.ts","fetches/homepageWidgets/makeUpdateWidgetLayout.ts","fetches/homepageWidgets/createWidgetLayout.ts","pages/Homepage/tabs/LayoutTab/LayoutReference.tsx","pages/Homepage/tabs/LayoutTab/WidgetToLayoutSelector.tsx","pages/Homepage/tabs/LayoutTab/LayoutTab.tsx","pages/Homepage/tabs/LayoutTab/index.tsx","pages/Homepage/Homepage.tsx","pages/Homepage/index.tsx","pages/Invites/index.ts","pages/NoRoute/index.js","pages/SiftBot/index.js","pages/Source/index.ts","pages/SourceCreate/index.js","pages/SourceCSVSetup/index.tsx","pages/SourcePhotoCSVSetup/index.tsx","pages/SourceLDAPSetup/index.ts","helpers/SourceContext.ts","pages/Directory/Base/SecurityNotice.tsx","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","fetches/makeGetSourceFileValidationResults.ts","fetches/makeUpdateSourceFile.ts","pages/Directory/UploadCsv/CsvUploadSuccess.tsx","pages/Directory/UploadCsv/CsvUploadLoading.tsx","pages/Directory/UploadCsv/CsvUploadIssues.tsx","pages/Directory/UploadCsv/CsvAnalysisDialog.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","pages/Pages/index.tsx","fetches/makeUpdateEntityType.ts","fetches/makeGetEntityTypeStatus.ts","fetches/makeGetEntityTypeConfiguration.ts","fetches/makeDeleteEntity.ts","fetches/makeGetEntitiesListFetch.ts","pages/PageTypes/tabs/DeletePageModal.tsx","fetches/createEntity.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/Attributes/components/CustomToolbar.tsx","pages/Attributes/components/CustomGridPanel.tsx","pages/Attributes/components/AttributeTableData.js","pages/Attributes/Attributes.js","pages/Attributes/container.js","pages/PageTypes/tabs/MembershipTab/components/JoinPage.tsx","pages/PageTypes/tabs/MembershipTab/components/PageMemberGrouping.tsx","pages/PageTypes/tabs/MembershipTab/MembershipTab.tsx","pages/PageTypes/tabs/MembershipTab/container.tsx","pages/PageTypes/tabs/MembershipTab/index.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","fetches/makePublishEntityType.ts","pages/PageTypes/components/PublishEntityTypeModal.tsx","pages/PageTypes/PageTypes.tsx","pages/PageTypes/container.tsx","pages/Person/reducer.js","pages/Person/index.js","pages/PersonProfilesPage/PersonProfilesPage.tsx","components/Icons/RichTextWidget.tsx","components/Icons/MyTeamWidget.tsx","components/Icons/PeopleListWidgetIcon.tsx","pages/Homepage/components/WidgetTypeCard/WidgetTypeCard.tsx","pages/Homepage/components/WidgetSelectType/WidgetSelectType.tsx","atoms/CharCount.tsx","pages/Homepage/components/WidgetSetName/WidgetSetName.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/getRichTextCharCount.ts","fetches/homepageWidgets/makeUpdateWidget.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/linkHelpers.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/utilities.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/withDeleteEmptyBlock.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/sanitizeHeadingNodes.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/resetRichText.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/SlateWrapper.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/getCurrentSelection.ts","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/LinkPopover.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/Link.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/Element.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/Leaf.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/EditArea.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/Toolbar.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/ButtonBase.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/MarkButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/BoldButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/ItalicButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/UnderlineButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/StrikeThroughButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/BlockButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/OrderedListButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/UnorderedListButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/LinkEditDialog.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/LinkButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/RichTextDefault.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/HeadingButtonBase.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/HeadingOneButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/HeadingTwoButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/HeadingThreeButton.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/RichTextExpanded.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/index.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/MyTeamWidgetSettings.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/PersonsListByDateWidgetSettings/PersonsListByDateForm.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/PersonsListByDateWidgetSettings/PersonsListByDatePresetSelect.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/PersonsListByDateWidgetSettings/PersonsListsByDateDeleteConfirmation.tsx","pages/Homepage/components/WidgetEdit/widgetSettings/PersonsListByDateWidgetSettings/PersonsListByDateWidgetSettings.tsx","pages/Homepage/components/WidgetEdit/WidgetEdit.tsx","pages/Homepage/components/WidgetConfiguration/WidgetConfiguration.tsx","pages/Homepage/components/WidgetConfiguration/index.tsx","components/Router/routes.ts","store/directories/index.js","fetches/makeGetMappingsAttributes.ts","components/Page/newComponents/PageFormErrorMessage.tsx","store/people/index.js","pages/Directory/consts.ts","components/Page/HelpArticleLink.tsx","fetches/getOnboardingTasks.ts","components/Router/consts.js","components/Page/Breadcrumbs.js","helpers/getHostName.ts","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","styles/typography.js","components/Table/TableHead.js","components/Table/index.js","store/themes/themes.js","store/themes/index.js","helpers/usePrevious.ts","molecules/HandleRedirect.tsx","helpers/useGlobalConfig.ts","fetches/makeGetSource.ts","store/homepageWidgets/index.ts","helpers/useEntityTypes.ts","store/client/index.js","store/siftBot/index.js","store/attribute/index.js","components/withSource/withSource.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/OnboardingListButton.tsx","components/AppHeader/OnboardingTaskButton.tsx","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/TrialBannerForSmallScreens/TrialBannerForSmallScreens.tsx","components/SidebarLayout/SidebarLayout.js","fetches/makeSetPassword.ts","components/AcceptOwnerRoleDialog/PasswordTextField.tsx","components/AcceptOwnerRoleDialog/AcceptOwnerRoleDialog.tsx","fetches/makeGetAuthenticationInfo.ts","components/AcceptOwnerRoleDialog/index.tsx","components/FreeTrialBanner/FreeTrialBanner.tsx","components/Layouts/CoreLayout.js","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","components/onboarding/useTaskList.ts","helpers/isFieldValidConfigOption.ts","helpers/useAnalytics.tsx","store/configuration/index.js","components/Page/index.js","helpers/makePath.ts","components/Toolbar/ToolbarSpacer.js","components/Icons/Export.js","components/buttons/ExportButton.js","components/AnalyticsProvider/AnalyticsContext.ts","store/search/index.js","components/FileDrop/FileDrop.tsx","components/FileDrop/index.ts","pages/Source/reducer.js","components/Form/helpers/useFormSnackbar.ts","styles/colors.js","helpers/getPageType.ts","store/sources/index.js","store/location/index.js","helpers/GlobalConfigContext.ts","helpers/EntityTypesContext.ts","pages/Debug/index.js","components/Page/newComponents/ToolbarPortal.tsx","helpers/getPriorityListItems.js","components/onboarding/reorderTasks.ts","store/onboarding/index.ts","components/Mappings/_helpers/getMappingsFromMappingCards.ts","pages/Invites/components/Users/InfoCard.tsx","components/onboarding/TaskTitle/TaskTitle.tsx","components/onboarding/TaskSummary/TaskSummary.tsx","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","pages/Administrators/constants.ts","components/Terminology/Terminology.js","components/Terminology/index.js","pages/Attributes/consts.ts","helpers/getIsLoading.ts","components/Page/CancelButton.tsx","styles/theme.js","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","components/withSource/index.ts","components/DirectoryInfoBar/helpers/useSyncInfo.ts","components/Table/TablePagination.tsx","components/Toolbar/index.js","components/Form/ClearableSearch.js","components/Table/TableSearchTextField.js","components/InfoCard/InfoCard.tsx","components/InfoCard/index.ts","components/Toolbar/ToolbarActions.js","components/Loader/ErrorView.js","components/Loader/index.js","components/Icons/sources/CSV.js","components/Icons/sources/Azure.js","helpers/handleAuthorizeSource.ts","molecules/FullScreenTopBar.tsx","fetches/makeValidateMappings.ts","components/TextBlock/TextBlock.tsx","store/mappings/actions/allSourceMappingsFetch.ts","components/Mappings/_helpers/useAllSourceMappings.ts","components/Mappings/OrgMapping/useExistingOrgMappingsInfo.ts","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","helpers/useIsInWizard.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","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","molecules/AccordionSectionHeader.tsx","molecules/AccordionSectionContent.tsx","molecules/AccordionSectionButtonContainer.tsx","components/Mappings/OverallValidationStatus/OverallValidationStatus.tsx","components/Mappings/PrimaryKeyMapping/PrimaryKeyMapping.tsx","components/Mappings/OrgMapping/OrgSourceMapping/OrgSourceMapping.tsx","components/Logos/ExampleOrgConnect.js","components/Mappings/OrgMapping/NoManagerInfoCopy/NoManagerInfoCopy.tsx","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/showSnackbar.ts","components/Page/BackButton.js","helpers/getHasError.ts","molecules/SimpleConfirmationDialog.tsx","fetches/makeUpdateRole.ts","config.js","pages/Directory/helpers/makeSourceCreateBaseUrl.ts","components/Page/PageTitle.tsx","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","store/configuration/actions/entityTypesFetch.ts","components/Table/TableHeadCell.js"],"names":["__webpack_require__","d","__webpack_exports__","HELP_ARTICLE_HOME","HELP_LINKS","LIST_SLIDE_KEY","CHEERS_SLIDE_KEY","name","href","defineStyles","definer","theme","SaveButton","_ref","_ref$label","label","other","Object","_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__","react__WEBPACK_IMPORTED_MODULE_1___default","a","createElement","_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2__","assign","data-cy","data-testid","variant","color","useStyles","makeStyles","root","borderTop","display","flex","overflowY","transition","height","minHeight","backgroundColor","palette","common","white","alignItems","width","visible","padding","spacing","PageFormToolbar","dirty","preContent","children","classes","_ToolbarPortal__WEBPACK_IMPORTED_MODULE_4__","className","classNames","_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_Toolbar_ToolbarSpacer__WEBPACK_IMPORTED_MODULE_5__","components_Toolbar_ToolbarActions__WEBPACK_IMPORTED_MODULE_6__","INDEPENDENT_PAGE_TYPE","ATTRIBUTE_PAGE_TYPE","OPEN_ROLE_PAGE_TYPE","OPEN_ROLE_TYPE_KEY","spinnerClass","secondary","contrastText","secondarySpinnerClass","main","LoadingButton","_ref$disabled","disabled","loading","spinnerClassName","_ref$variant","onClick","restOfProps","_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_4__","_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_5__","classnames","size","asyncComponent","Promise","all","e","then","bind","defineFetch","displayName","make","key","request","data","_ref2","asyncToGenerator","regenerator_default","mark","_callee","http","response","wrap","_context","prev","next","method","route","sent","abrupt","t0","_get","stop","_x","apply","this","arguments","fieldId","concat","query","returnDisabledFields","expand","entityTypeKey","PERSON_ENTITY_TYPE_KEY","useAttributesEditDialog","_useRouter","useRouter","location","history","historyRef","useRef","useLayoutEffect","current","isOpen","pathname","includes","isOpenRef","open","useCallback","PERSON_PROFILE_URL","push","objectSpread","HOME_URL","ATTRIBUTES_URL","close","DYNAMIC_PAGES_URL","TEXT_CARDS","CONTACT_CARDS","CHIP_CARDS","SUB_ATTRIBUTE_CHIP_CARDS","OTHER_CARDS","SUB_ATTRIBUTE_TEXT_CARDS","PAGE_CARDS","BASE_FIELD_PAGE","BASE_FIELD_PAGE_COLLECTION","pageRoot","title","flexDirection","cardSection","flexWrap","marginTop","cardRoot","maxWidth","marginRight","&:hover","boxShadow","content","cardTitle","cardContent","icon","AttributesChooseNew","useLocation","search","useMemo","queryString","parse","parentObjectKey","useParams","subAttribute","Boolean","isUser","_useState","useState","_useState2","slicedToArray","pageDialogOpen","setPageDialogOpen","_useState3","_useState4","newAttributeType","setNewAttributeType","useEffect","document","react_default","Page","PageTitle","Typography","map","index","item","attributeTypes","AttributeTypeCard","link","Fragment","pageType","PageTypesDialog","onSetOpen","overrides","AppHeader","container","childrenProp","classesFromProps","_classes","rootClassName","contentClassName","containerClassName","ToolbarPlaceHolder","usePortalPlaceholder","ToolbarPortal","React","Children","toArray","PortalProvider_default","justifyContent","flexGrow","marginBottom","marginLeft","opacity","thirtyEightPercent","AttributeBasicInfo","attribute","values","onChange","entityType","terminology","useTerminology","objectKey","parentFields","isGeneralField","isGeneralAndNoCategorizedAttributes","length","cardRootClass","defineProperty","shouldRenderMessageOptions","shouldRenderLinkName","Card","CardContent","TextField","id","fullWidth","value","target","inputProps","aria-label","maxLength","plural","multiline","RadioGroup","undefined","FormControlLabel","control","Radio","placeholder","Tooltip","arrow","placement","background","border","borderRadius","AttributesCreateNew","newAttributeResponse","onClearFetches","onRedirect","onSubmit","onUpdateParentField","analytics","useAnalytics","qs","_useParams","baseField","newComponents","formik_esm","initialValues","client","description","enableReinitialize","props","setFieldValue","resetForm","errors","components_AttributeBasicInfo","PageFormErrorMessage","CancelButton","handleSubmit","USER_URL","track","category","_isEmpty","react_router","when","message","convertStringToArrayOfStrings","options","_split","forEach","option","splitCommaOption","optionSpaceSplit","trim","split","join","removeEmptyObjProps","obj","entries","filter","reduce","acc","_ref3","_ref4","k","v","getProfileAttributes","typeKey","webProfileLayoutKey","webProfileLayout","profilePeopleLayout","orgLevelsLayout","findField","buildCategory","shouldBuildCategory","foundCategory","categoryName","keys","_categories","find","field","findCategory","categories","child","type","buildField","buildBasicLayoutObject","layout","returnValue","newBasicLayout","_flatten","flattenedWebProfile","flattenedProfilePeople","flattenedOrgLevels","headerItems","namePronunciation","toConsumableArray","RemoveCircleIcon","SvgIcon","xmlns","viewBox","fill","fillRule","SortableHandle","Reorder_default","SortableItemElem","SortableElement","itemIndex","fields","onLayoutChange","onRemoveItem","GenericLayoutBuilder_SortableHandleElem","dragIcon","itemName","IconButton","buttonIcon","oldIndex","newIndex","ArrowUpward_default","ArrowDownward_default","ProfileLayout_RemoveCircleIcon","zIndex","paddingLeft","paddingRight","paddingTop","paddingBottom","colors","grayBlue","borderColor","grey","typography","body1","fontSize","cursor","SortableList","SortableContainer","handleRemoveItem","GenericLayoutBuilder_SortableItemElem","GenericLayoutBuilder","allFields","_ref$useAttributeDrop","useAttributeDropdown","entityTypes","useEntityTypes","formatConfigOptionDisplayName","keyedFields","_attribute$objectKey$","rootParentField","attributes","filteredFields","filteredFieldsCollection","newField","newDisplayName","_sortBy","handleSortEnd","newLayout","arrayMove","header","Local","searchPlaceholder","selectedAttributes","onSaveSelectedAttributes","newFields","getAttributeKey","getAttributeDisplayName","LabelButtonProps","saveButtonLabel","GenericLayoutBuilder_SortableList","useDragHandle","splice","onSortEnd","margin","rootDialog","dialogContent","button","LayoutSettingCard","dialogTitle","layoutKey","subtitle","userStatus","dialogOpen","setDialogOpen","availableFields","fieldsCollection","_keyBy","layoutValue","layoutFields","setLayout","toggleDialogOpen","prevDialogOpen","_handleUpdateLayout","searchSettings","CardHeader","action","Button","enabled","subheader","Dialog","onClose","paper","DialogTitle","DialogContent","DialogContentText","DialogActions","isLoading","HIGHLIGHT_SUBTITLE_COPY","HIGHLIGHTABLE_FIELD_TYPES","highlightByFilter","fieldTypeIsHighlightable","isFieldValidConfigOption","parentFieldKey","substring","lastIndexOf","parentField","itemType","startsWith","childFieldKey","slice","indexOf","childField","fieldIsObjectArray","parentFieldIsObjectArray","OrgChartHighlightsLayout","molecules_LayoutSettingCard","FILTER_SUBTITLE_COPY","FILTERABLE_FIELD_TYPES","fieldIsFilterable","fieldTypeIsFilterable","FilterLayout","_ref$typeKey","minWidth","positionButton","textTransform","textDecoration","AttributeUsage","status","_client","useSelector","state","filterDialogOpen","setFilterDialogOpen","highlightDialogOpen","setHighlightDialogOpen","filterAvailableFields","filterLayoutFields","_useState5","_useState6","filterLayout","setFilterLayout","highlightAvailableFields","highlightLayoutFields","_useState7","_useState8","highlightLayout","setHighlightLayout","isOnProfile","shouldRenderProfilePage","filters","nameFieldObjectKey","filterAndHighlightByField","isSearchFilterEnabled","some","shouldRenderSearchFilters","isHighlightByEnabled","highlight","shouldRenderHighlightBy","shouldRenderCard","closeDialogs","dialogActions","_isEqual","Divider","rel","Switch","checked","USER_EDITABILITY_NONE","USER_EDITABILITY_FULL","USER_EDITABILITY_PARTIAL","LOCKED_TOOLTIP_TITLE","row","circleIcon","grayIcon","gray1","greenCircleIcon","success","notClickable","AttributeRow","list","useHistory","globalConfig","useGlobalConfig","isGeneral","dataType","entityField","isNotClickable","renderLockedTooltipCell","CheckCircle_default","NotInterested_default","Lock_default","TableRow","hover","_personClientFieldObjectKey","handleEditClick","TableCell","mainCell","FiberManualRecord_default","lastCell","drag","table","text","primary","inline","tableHead","body2Bold","textAlign","SubAttributesTable","editPriorityList","generalField","newList","setNewList","dragHandle","DragHandle_default","sortableItem","dataIndex","DragHandle","components_AttributeRow","isLast","SortableListElem","items","SortableItem","SortableItems","Table","TableHead","Table_TableCell","InfoOutlined_default","TableBody","lockToContainerEdges","AttributeReachOutToMeFor","useFormikContext","shouldRenderFormat","sortableFields","setSortableFields","fieldName","f","components_SubAttributesTable","directorySources","google-directory","azure-active-directory","borderHeight","tableHeader","fontWeight","tableContent","flow","tableCell","whiteSpace","overflow","textOverflow","tableRow","tableRowBorder","borderBottom","divider","tableButtonRow","blue","DirectoryMapping","mappings","showMore","setShowMore","buttonRowElem","minRows","tableRowHeight","tableHeight","style","mapping","tableRowClasses","react_router_dom","to","renderTable","overlay","position","memo","dispatch","useDispatch","fieldDirectoryMappingsFetch","makeFieldDirectoryMappingsFetch","fieldData","useData","useStatus","Loader","DirectoryMapping_DirectoryMapping","AttributeDataMapping","directoryLink","components_DirectoryMapping","OPTIONS_TYPES","CHIP_TYPES","subAction","alignSelf","_useFormikContext","setOptions","priorityModalOpen","setPriorityModalOpen","_fields","valueReadOnly","disabledClass","profileCompletionEnabled","isRequiredAttribute","priorityList","priorityListItems","getPriorityListItems","shouldRenderRequiredAttribute","shouldRenderOptions","shouldRenderMaxNumberOfChips","shouldRenderAutocompleteFields","shouldRenderMaxLinks","shouldRenderNumberRange","shouldRenderAnyCardContent","requiredAttributeCopy","initialOptions","convertOptionsToArrayOfObjects","currentValues","handleFalseySwitchChange","handleSwitchChange","handleMinMaxChange","Number","preventDefault","error","helperText","autocomplete","PriorityList","configFields","isModalOpen","onCloseModal","resetState","saveButton","ConfirmationDialog","disableCancel","disableSave","_ref$saveButtonText","saveButtonText","onSave","openDialogButton","textField","DeleteAttribute","deleteCategoryField","dialogInput","setDialogInput","shouldRenderDeleteButton","toggleDialog","deleteAttribute","isChecked","disableElevation","molecules_ConfirmationDialog","red","autoFocus","deleteFieldFetch","makeDeleteCategoryFieldFetch","deleteFieldStatus","entityTypesFetch","makeEntityTypesFetch","entityTypesStatus","updateField","makeUpdateCategoryFieldFetch","updateFieldStatus","showSnackbar","errorMessage","handleRedirect","handleDelete","_callee2","parentKey","parentPayload","_context2","combinedLoadingStatus","combineStatuses","DeleteAttribute_DeleteAttribute","pageContent","AttributesEdit","userFields","siftBotFields","layoutStatus","attributeAutocompleteData","updateLayout","updateSiftBotFields","updateAttributeAutocomplete","personEntityType","isSaving","setIsSaving","attributeId","formattedAutocompleteData","setFormattedAutocompleteData","shouldRenderDeleteAttribute","newAttribute","isSubAttribute","shouldRenderAttributeUsageAndDataMapping","initialState","layouts","org-chart-highlight-by","initialStateToCompareDirty","initialStateLayout","handleUpdatePriorityFields","priorityFieldsPayload","isNewSiftFields","handleUpdateLayout","layoutValues","layoutPayloadKeys","layoutPayload","handleUpdateField","clientPayload","handleUpdateAutocomplete","autocompletePayload","arrayOfOptions","validate","selectOptions","valuesToCompareDirty","hasErrors","components_AttributeUsage","components_AttributeReachOutToMeFor","components_AttributeDataMapping","components_AttributeUserEditing","components_DeleteAttribute","HandleRedirect","share","namespace","merge","previous","i","makeGetAttributeAutocomplete","retrieveAllDatabaseEntries","createFieldFetch","makeCreateCategoryFieldFetch","updateFieldFetch","updateLayoutFetch","makeUpdateLayoutFetch","updateAttributeAutocompleteFetch","makeUpdateAttributeAutocomplete","getAttributeAutocompleteFetch","makeGetFields","makeGetFieldsFetch","entityTypeFieldsStatus","entityTypeFields","makeGetUserFields","makeGetUserFieldsFetch","userFieldsStatus","updateFieldFetchStatus","isolatedStatus","prevUpdateFieldFetchStatus","usePrevious","createFieldFetchStatus","prevCreateFieldFetchStatus","updateLayoutStatus","prevUpdateLayoutStatus","updateSiftBotStatus","siftBot","prevUpdateSiftBotStatus","prevEntityTypeFieldStatus","prevUserFieldsStatus","updateAutocompleteStatus","prevUpdateAutocompleteStatus","getAutocompleteStatus","userFieldsResults","entityTypeFieldsResults","setAttribute","deleteCategoryFieldFetch","handleUpdate","editedAttribute","_x2","payload","handleUpdateSiftBotFields","updateSiftBotFetch","handleUpdateAttributeAutocomplete","fieldStatus","prevFieldStatus","isNormal","getEntityTypes","LOADING","Status","States","NORMAL","entityTypeFieldsExist","onLoadStatus","AttributesEdit_AttributesEdit","appBar","toolbar","cancelButton","slideContainer","& > div","slide","transitions","create","duration","complex","leftSlide","left","leftSlideHidden","rightSlide","rightSlideHidden","backButtonIcon","AttributesEditModal","_useAttributesEditDia","currentSlideIndex","setSlideIndex","createField","createFieldStatus","getFields","fieldsStatus","entityTypesFetchStatus","getUserFields","entityTypeId","clearFetch","useClearFetch","combinedStatus","handleUpdateParentField","handleCreateAttribute","parentFieldId","_callee3","_context3","currentSlideContent","AttributesNew_AttributesChooseNew","AttributesNew_AttributesCreateNew","fullScreen","aria-labelledby","AppBar","Toolbar","BackButton","iconClassName","goBack","getRootNodes","and","comparison","sortBy","sortDirection","makeGetRootNodes","defaultGroupEmailFormValue","defaultGroupMessageFormValue","msTeams","onApp","onSiftWeb","defaultOrgChartExportFormValue","download","print","defaultRootIds","defaultAssistantFormValue","defaultOnboardingFormValue","withStyles","inputRow","inputCopy","numberInput","limit","isEnabled","currentTarget","parseValue","parseInt","isNaN","GroupEmail","handleChangeEnabled","GroupMessage","enabledOnApp","enabledOnSiftWeb","GroupMessaging","GroupMessaging_GroupEmail","settings","groupEmail","GroupMessaging_GroupMessage","groupMessage","Directory","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","weekDayAbbr","disabledSelectedDay","WeekDayCheckBox","Checkbox","checkedIcon","timePickerWrapper","timePickerContainer","timePicker","inputErred","& input","WorkHoursSelector","clearable","onChangeStartTime","onChangeEndTime","hasError","TimePicker","LocationSelector","userConfig","userConfigFields","getInitialValue","newLocation","locationValue","setLocationValue","handleChange","newValue","Autocomplete","getOptionLabel","getOptionSelected","renderInput","params","event","toggles","checkbox","dayRowContent","hoursAndLocationAndErrors","hoursAndLocation","workHourSelectors","copyButton","WorkHoursForm","workScheduleEnabled","hoursEnabled","locationEnabled","defaultWorkHoursEnabled","workHoursByDay","workHoursByDayEntries","workingDayAndHours","hasWorkingDay","hasMoreThanOneWorkingDay","firstWorkingDay","firstWorkingDayHours","handleChangeWorkHourOfDay","marker","timeObject","handleChangeLocationOfDay","handleChangeWorkingOnDay","newValueForDay","FormGroup","WeekDayCheckBox_WeekDayCheckBox","_ref5","_ref5$","WorkHoursSelector_WorkHoursSelector","LocationSelector_LocationSelector","newWorkHoursByDay","entry","dayNumberValue","FileCopyOutlined_default","workHoursSection","TimezoneAndWorkHours","timezoneEnabled","WorkHoursForm_WorkHoursForm","timezoneAndWorkHours","TimezoneAndWorkHoursForm","Profile","Pronunciation_Pronunciation","Profile_Assistants","assistants","Profile_TimezoneAndWorkHours_TimezoneAndWorkHours","OrgChartExport","printEnabled","downloadEnabled","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","layoutRoot","Features","clientStatus","onboarding","useFormSnackbar","tabPath","replace","tab","Breadcrumbs","routes","isBefore","_timezoneAndWorkHours","timezoneAndWorkHoursSettingsToSave","convertTimezoneAndWorkHoursValueForRequest","newValues","updateClient","Tabs","handleTabChange","Tab","tabs_Directory_Directory","Profile_Profile","OrgChart_OrgChart","Other_Onboarding","defaultSupportFormValue","fetchWithAuth","url","subdomain","urlParse","config","API_ENV","window","hostname","jwt","cookie","get","fetch","headers","Authorization","dataUriToBlob","dataUri","byteString","atob","mimeString","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","signUpload","_x3","_signUpload","themeId","endpoint","imageDataUri","_dataUriToBlob","stringify","contentType","json","uploadToStorage","_uploadToStorage","signature","file","refUrl","mode","Accept","body","fixImageUri","_fixImageUri","imageUri","azStorageUri","verifyNewSubdomain","input","makeVerifyNewSubdomain","identifier","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","getContrastColor","Content-Type","JSON","_notEmpty","WHITE","BLACK","themeColor","getLuminance","createAndUploadTheme","_theme$settings","newTheme","deactivateTheme","saveTheme","_theme","createdAt","clientId","updatedAt","isActive","objectWithoutProperties","Sentry","ERROR","console","& > *:not(:last-child)","& > *","radio","&:checked","&::before","&::after","transparentize","&:focus","top","bottom","right","semiBold","shortId","defaultId","customId","onKeyPress","role","htmlFor","body2","bold","caption","formControl","textFieldRoot","inputAdornment","boxHitBox","box","setOpen","boxHitBoxRef","InputProps","disableUnderline","startAdornment","InputAdornment","ref","Popover","anchorEl","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","setFile","_handleNewFile","dataUrl","Math","round","pow","delay","react","FileDrop","onFileChange","onSetFile","errorText","accept","CardActions","memoizeLast","_len","statuses","Array","_key","combined","or","RedButton","compose","withThemeOverrides","deriveLightDark","withProps","directLink","withSnackbar","onDestroyAllThemes","enqueueSnackbar","titleClicks","setTitleClicks","easterEggDialogOpen","setEasterEggDialogOpen","hostName","getHostName","handleEasterEggClose","handleRedClick","previewUrl","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","finish","t1","pageContentRoot","styleModeSelector","colorRows","themingContent","breakpoints","down","custom","preview","shape","logo","shadows","avatar","Theming","previewOpen","setPreviewOpen","StyleModeSelector_StyleModeSelector","ThemingSettings_ThemingSettings","ColorRow_ColorRow","ImageField_ImageField","ThemeProvider","src","alt","Avatar","components_PreviewDialog","CompanyName","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","pluralize","leaderTerminology","helpLink","leftColumn","rightColumn","CustomNavigationTab","customNavLink","Support","handleTextChange","emails","emailsValueAsArray","convertEmailStringToArray","handleChangeSupportEnabled","emailString","supportEmails","email","splitCommaEmail","splitSpaceEmail","_this$props","cardHeader","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","subdomainValidation","activeTheme","org-levels","enableEmailTheming","matched","_logoUrl","logoToSave","newClientValues","newThemeValues","validationSchema","Yup","required","emailRegex","test","teamMember","teamLeader","isValidColor","isValid","tabs_Settings","Theming_Theming","getOnboardingTasks","titleContainer","h5Semibold","SupportCard","Paper","elevation","p","buttonContainer","HelpCard","cardButton","SupportCard_SupportCard","DocsCard","Link_Link","underline","HelpDocLink","heading","gray2","supportCardContainer","Home","personName","Checklist","isOnHomePage","HelpCard_HelpCard","DocsCard_DocsCard","getWidgetTypes","expandDefaultLayoutPresence","makeGetWidgetTypes","getWidgets","makeGetWidgets","deleteWidget","widgetId","makeDeleteWidget","createWidget","makeCreateWidget","IeSucksBanner","bowser","rootPopper","modal","CustomGridPanel","api","hidePreferences","columnHeadersElementRef","handleClickAway","handleKeyDown","Popper","modifiers","flip","ClickAwayListener","onClickAway","onKeyDown","actionBar","CustomToolbar","filterModel","counter","toString","preferencePanel","_props$api$current","hideFilterPanel","showFilterPanel","dist_index_esm","startIcon","Badge","badgeContent","Search_default","WIDGETS_URL","buttonText","HOTKEYS","mod+b","mod+i","mod+u","MAX_CHAR_COUNT_NAME","MAX_CHAR_COUNT_DESCRIPTION","MAX_CHAR_COUNT_RICH_TEXT","DEFAULT_RICH_TEXT_CONTENT","RICH_TEXT_TYPE_ID","MY_TEAM_TYPE_ID","PERSONS_LISTS_BY_DATE_TYPE_ID","WIDGET_NAME_FIELD_DESCRIPTION","PREVIEW_PARAM_NAME","wrapper","fiberManualRecordIcon","moreContainer","notInterestedIcon","dialogWidgetName","duplicateInstruction","onlyShownForSr","WidgetsTab","widgetTypesArray","widgets","widgetNames","w","deleteWidgetStatus","createWidgetStatus","rows","widgetTypes","widgetTypeId","isOnLayout","_isInDefaultLayout","anchorElForMoreMenu","setAnchorElForMoreMenu","moreMenuOpen","setMoreMenuOpen","selectedWidget","setSelectedWidget","deleteDialogOpen","setDeleteDialogOpen","_useState9","_useState10","deleteDialogInput","setDeleteDialogInput","_useState11","_useState12","duplicateDialogOpen","setDuplicateDialogOpen","selectedWidgetName","selectedWidgetId","_useState13","_useState14","duplicateDialogInput","setDuplicateDialogInput","_useState15","_useState16","customSorted","setCustomSorted","nameValidationError","handleDeleteDialogOpen","handleDeleteDialogClose","handleConfirmDelete","handleDuplicateDialogOpen","handleDuplicateDialogClose","handleSaveDuplicateWidget","widgetCreateRequest","columns","headerName","hide","filterable","renderCell","isUserCreated","valueGetter","renderHeader","columHeaderHeight","disableClickEventBubbling","aria-haspopup","widget","stopPropagation","handleMore","MoreHoriz_default","Menu","MenuItem","molecules_IeSucksBanner","onSortModelChange","sortModel","sortColumn","disableColumnMenu","disableColumnSelector","disableColumnReorder","disableSelectionOnClick","onRowClick","rowId","components","Panel","componentsProps","SimpleConfirmationDialog","onCancel","disableSubmitButton","FormHelperText","makeGetWidgetLayout","widgetLayoutId","makeUpdateWidgetLayout","createWidgetLayout","makeCreateWidgetLayout","searchBar","searchIcon","block","positionText","blocksContainer","gap","LayoutReference","numberOfWidgets","numberArray","_","WidgetToLayoutSelector","availableWidgets","onSelectWidget","filteredWidgets","setFilteredWidgets","filteredWidgetsSortByName","form","dragHandleIcon","fieldNameContainer","rightIconsContainer","removeCircleIconButton","removeCircleIcon","cards","card","widgetSelector","number","numbers","sortableList","infoIcon","previewButton","LayoutTab","_widgetsOnDefaultLayout","widgetsOnDefaultLayout","widgetsData","updateDefaultWidgetLayout","updateDefaultWidgetLayoutStatus","previewLayoutData","previewLayoutCreateStatus","prevPreviewLayoutData","_partition2","_partition","_partition3","widgetsOnLayout","restOfWidgets","widgetOptions","setWidgetOptions","clientSubdomain","_React$useState","_React$useState2","widgetSelectorAnchorEl","setWidgetSelectorAnchorEl","widgetSelectorOpen","widgetSelectorId","SortableHandleElem","toggleOpenWidgetSelector","draftWidgetsOnLayout","Collapse","in","timeout","itemValue","RemoveCircleOutline_default","updatedWidgetsLayout","widgetLayoutRequest","l","LayoutTab_LayoutReference","aria-describedby","LayoutTab_WidgetToLayoutSelector","setWidgets","Container","getDefaultWidgetLayout","getWidgetLayoutStatus","defaultWidgetLayout","LayoutTab_LayoutTab","tabTypes","WIDGETS","LAYOUT","Homepage","_tabContentByType","currentTab","widgetTypesInRedux","widgetsInRedux","setWidgetTypes","tabContentByType","WidgetsTab_WidgetsTab","tabs_LayoutTab","tabValue","HOMEPAGE_URL","widgetTypesStatus","widgetTypesData","widgetsStatus","Homepage_Homepage","results","reducer","NoRoute","Component","createContext","SecurityNotice","VerifiedUserRounded_default","titleAccess","nextButton","backButton","footer","progressContainer","progress","bar","brandColors","tertiaryPalette","moss","& .MuiLinearProgress-bar","step","Base","currentStep","pageTitle","disableNextButton","_ref$buttonText","onNext","onBack","onSkip","sourceInfo","useContext","SourceContext","isPrimary","totalNumberOfSteps","AZURE_SOURCE_TYPE_KEY","progressText","isSourceSelectionPage","CHOOSE_SOURCE_TYPE_URL","Box","LinearProgress","Base_SecurityNotice","ArrowForward_default","inputContainer","NameYourData","dataName","setDataName","sourceContext","setSourceInfo","directoryIdUrlMatch","directoryId","makeSourceCreateBaseUrl","complementary","_capitalize","handleNext","directoryCreateRes","sourceCreateRes","sourceId","baseUrl","createDirectory","createSource","initializeSource","CSV_SOURCE_TYPE_KEY","UPLOAD_CSV_URL","AUTHORIZE_DATA_ACCESS_URL","Base_Base","SOURCE_WIZARD_BASE_URL","NameYourData_NameYourData","getSources","sourceType","makeGetSources","checkDiv","cardMid","pointerEvents","disabledIndicator","NewSourceCard","isSelected","_ref$isSourceAvailabl","isSourceAvailable","handleSourceSelect","AdditionalFileSyncIcon","cardContainer","altUploadContainer","iconContainer","altUploadCopy","ChooseSourceType","sourcesWithDemoData","helpArticleLink","HelpArticleLinkContext","setSourceType","isDemoDataAvailable","DEMO_DATA_SOURCE_TYPE_KEY","_directoryId","DIRECTORIES_URL","SOURCE_URL","NAME_YOUR_DATA_URL","sourceData","SourceCard_NewSourceCard","Icons_AdditionalFileSyncIcon","sourcesData","ChooseSourceType_ChooseSourceType","authStatus","authTitle","authContent","indicator","notAuthed","indicatorColors","tiger","lime","isAzureSource","isGoogleSource","GOOGLE_SOURCE_TYPE_KEY","CHOOSE_SYNC_GROUPS_URL","MAP_ATTRIBUTES_URL","successRedirectUri","origin","errorRedirectUri","handleAuthorizeSource","useSource","getSource","makeGetSource","makeUpdateSource","makeGetSourceGroups","q","& div","GroupsAutosuggest","onSelect","setInput","getSourceGroups","groupsData","GroupsAutosuggest_AutoPopper","renderSuggestion","suggestion","isHighlighted","DefaultSuggestion","groupSearchContainer","chip","& svg","SelectGroups","source","initialGroups","groups","setGroups","updateSource","sourceCopy","GroupsAutosuggest_GroupsAutosuggest","group","g","newGroups","Chip","onDelete","groupId","updatedGroups","_remove","handleDeleteTag","canSelectGroups","SelectGroups_SelectGroups","makeGetSourceFileValidationResults","sourceFileId","ignoreErrorsIfMappings","makeUpdateSourceFile","CsvUploadSuccess","updateSourceFile","setTimeout","CheckCircleRounded_default","loadingIndicator","loadingContainer","CsvUploadLoading","subheading","issuesHeader","h4","errorsContainer","errorIcon","warningsContainer","warning","warningIcon","CsvUploadIssues","warnings","headerText","subheadingText","ErrorRounded_default","dangerouslySetInnerHTML","__html","longDescriptionHtml","WarningRounded_default","CsvAnalysisDialog","validationResults","onNewUpload","UploadCsv_CsvUploadLoading","UploadCsv_CsvUploadSuccess","UploadCsv_CsvUploadIssues","fileDropContainer","fileDropRoot","h6","UploadCsv","useSnackbar","updateSourceFileStatus","getSourceFileValidationResults","sourceFileValidationResults","sourceFileValidationResultsFetchStatus","csvSourceData","waiting","setWaiting","disableOptOut","setDisableOptOut","setErrorText","csvIssuesDialogOpen","setCsvIssuesDialogOpen","fileUploadStatus","setFileUploadStatus","setSourceFileId","isOptedOutCsv","signedUploadResponse","signedUpload","sourceFileResponse","fileId","fetchSignedUpload","createSourceFile","handleOptOutCsvUpload","updatedSource","setupProgress","csvOptOut","saveSource","handleContinue","uploadCopy","UploadCsv_CsvAnalysisDialog","FileUploadInfoCard","extension","pop","black","MappingsConfirmationDialog","BeforeYouMap","atoms_MappingsConfirmationDialog","MapAttributes","shouldDirectToCsvUpload","mapDialogOpen","setMapDialogOpen","FullScreenTopBar","dataSync_BeforeYouMap","data-id","MappingsLayout","getLatestDataCSVFile","makeGetLatestSourceFile","lastDataCsv","dataCsvFetchStatus","fetchDirectory","fetchSource","MapAttributes_MapAttributes","REQUIRED_ATTRS_FOR_OTHER_SOURCES","CLIENT_PRIMARY_KEY","REQUIRED_ATTRS_FOR_PRIMARY_SOURCE","REQUIRED_PROFILE_ATTR_KEYS","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","path","SOURCE_WIZARD_BASE_URL_W_DIRECTORY_ID","SOURCE_WIZARD_BASE_URL_W_DIRECTORY_SOURCE_IDS","DATA_SETTINGS_URL","sourceIdUrlMatch","isPrimarySource","Wizard_Wizard","entityId","makeGetConfiguration","entityTypeTypeKey","deleteButton","loadingButtonSpinner","DeletePageModal","deleteEntity","makeDeleteEntity","prevStatus","nameInput","setNameInput","handleCancel","isError","createEntity","actions","makeCreateEntity","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","pageTypeIsSyncManaged","isOpenRolePageType","buttonTitle","CreatingFiles","NoPages","NewPagesButton","PagesRow","deletable","page","showMemberCount","handleSelectEntity","host","subdomainUrl","menuOpen","setMenuOpen","setAnchorEl","pageLink","metadata","explicitEditorCount","memberCount","lastEditedAt","format","textAlignRight","PagesTable","pagesData","onSelectEntity","onSetCreateModalOpen","pages","pagination","total","pageSize","formats","shouldDisableNewPagesButton","components_Toolbar","TableSearchTextField","hintText","ToolbarSpacer","ExportButton","TableHeadCell","sortByKey","tabs_PagesRow","TablePagination","marginRight3","infoCardDescription","pagesCards","PagesCards","filterOn","filterName","setFilterName","editedFilter","uneditedFilter","allFilter","handleFilterChange","newFilterName","InfoCard","selected","tableContainer","PagesTab","hasQuery","onDeleteEntity","onReload","isCreateModalOpen","setIsCreateModalOpen","isDeleteModalOpen","setIsDeleteModalOpen","isIndependentPage","_isNil","getPageType","deleteModalSubtitle","selectEntity","setSelectEntity","tabs_PagesCards","tabs_PagesTable","components_NoPagesView","components_CreatePageModal","tabs_DeletePageModal","handleDeleteEntity","searchQuery","nameQuery","PagesTab_PagesTab","PageTypeName","pageItem","pageCollectionItem","independentItem","personClientFieldObjectKey","marginBottom3","marginBottom1","PageEditors","contentContainer","filterCard","SearchSettings","isSearchEnabled","isDisplayedOnEmptySearch","DeletePages","_classnames","deleteEntityType","makeDeleteEntityType","deleteEntityTypeStatus","prevDeleteEntityTypeStatus","isDeleting","buttonClass","shouldDeletePage","SettingsTab","onUpdateEntityType","onUpdateLayout","updateEntityType","makeUpdateEntityType","updateEntityTypeStatus","implicitEditorRule","_settings","directorySearch","displayOnEmptySearch","handleValidation","SettingsTab_PageTypeName","SettingsTab_PageEditors","SettingsTab_SearchSettings","SettingsTab_DeletePages","exportButton","attributesEditDialogOpen","headerAttributes","getDataType","getClassNames","cell","noClick","isLocked","attributeColumns","profileAttributes","cellClassName","sortComparator","v1","v2","cellParams1","cellParams2","localeCompare","singular","attributeRows","onProfile","userEditing","outline","usePassiveRedux","filterChildAttributes","fieldKeys","filteredFieldItemKeys","filteredFieldKeys","extractedChildItemKeys","charAt","itemKey","itemLength","omittableChildItemFields","parentAndProfileStatus","configStatus","Attributes_Attributes","createPages","JoinPage","isSyncManaged","newGroupsSwitch","section","PageMemberGrouping","groupingEnabled","MembershipTab","isPersonAttribute","onUpdateField","formattedSelectOptions","setFormattedSelectOptions","currentSelectOptions","relationshipMetadataAttribute","_isSyncManaged","_layouts","initialStateSettings","initialStateFieldValue","initialStateLayouts","handleUpdateEntityType","settingsValues","selectOptionsAsArray","settingsValuesWithOptionsConvertedToArray","fieldValue","grouping","components_JoinPage","components_PageMemberGrouping","entityTypeData","MembershipTab_MembershipTab","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","arrayValue","ListItem","listItem","disableRipple","tabIndex","ListItemText","buttons","AddCategoryDialogItem","errorState","addCategory","handleCreateCategory","displayError","textfield","AddSectionDialog","slideSwitch","dialogItem","dialogComponents","AddAttributesDialogItem","handleListItemClick","dialogExited","DialogComponent","paperWidthSm","onExited","Slide","direction","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","AttributeCard_SortableHandleElem","arrowIcon","headerRoot","headerContent","removeCircle","-webkit-touch-callout","-webkit-user-select"," -khtml-user-select","-moz-user-select","-ms-user-select","user-select","alignContent","Field","secondLevel","Field_SortableHandleElem","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","o","requiredItems","nonRequiredItems","displayRemoveButton","removeCircleContainer","removeCircleOutlineIcon","_this$props4","childrenAreAllFields","CategoryCard_SortableHandleElem","secondLevelCategoryHeader","align","attributeSelectorRoot","categoryCardContent","CategoryCard_SortableList","getChildField","getChildCategory","surface","components_CategoryCard_CategoryCard","cardHeaderRoot","LockOutlined_default","cardContentRoot","MockField","lock","layoutType","onSectionSortEnd","ProfileLayout_SortableItemElem","components_AttributeCard_AttributeCard","ProfileLayout","sidebarData","sidebarLayout","layoutsToUpdate","layoutItem","layoutItemTemplate","categoryTemplate","handleRemoveSection","sectionId","sectionIndex","handleClickOpen","resetLayout","statusRoot","addSectionButton","sortableListContainer","ProfileLayout_SortableList","SidebarCard","components_MockField_MockField","components_AddSectionDialog","globalConfigFetch","makeGlobalConfigFetch","globalStatus","globalTempValue","tempValue","foundField","newChild","basicLayout","pages_ProfileLayout_ProfileLayout","categoryConfigObject","globalCategory","globalCategoryChildren","matchingAttributes","fieldKey","PublishEntityTypeModal","onSwitchIsActive","publishEntityType","makePublishEntityType","PAGES","SETTINGS","ATTRIBUTE","MEMBERSHIP","layoutContainer","flexCenter","PageTypes","entityTypeConfig","pageTypeName","setIsActive","tooltipTitle","isPublishModalOpen","setIsPublishModalOpen","Attributes_container","ProfileLayout_container","tabs_MembershipTab","SettingsTab_SettingsTab","tabs_PagesTab","tabContent","components_PublishEntityTypeModal","getEntityTypeConfig","makeGetEntityTypeConfiguration","getEntityTypeConfigStatus","fieldsFetch","getEntityTypeUploadStatus","makeGetEntityTypeStatus","entityTypeUploadData","entityTypeUploadStatus","_x4","handleGetMigrationStatus","combinedUpdateStatus","combinedGetStatus","PageTypes_PageTypes","ACTION_HANDLERS","_ACTION_HANDLERS","PERSON_FETCH","PERSON_FETCH_SUCCESS","person","PERSON_FETCH_ERROR","handler","ATTRIBUTES","PROFILE_COMPLETION","PersonProfilesPage","SiftBot","RichTextWidgetIcon","MyTeamWidgetIcon","cx","cy","ry","r","PeopleListWidgetIcon","cardRootHover","clickable","&:last-child","WidgetTypeCard","_widgetTypeLookup","Icon","cardLink","WidgetSelectType","handleWidgetCardSelect","WidgetTypeCard_WidgetTypeCard","CharCount","count","maxCount","inputLabel","&$cssFocused","cssFocused","WidgetSetName","newWidget","prevNewWidget","userHasTouchedTheForm","setUserHasTouchedTheForm","wt","handleSave","widgetName","InputLabelProps","focused","atoms_CharCount","getCount","textItems","getRichTextCharCount","c","_compact","makeUpdateWidget","insertLink","editor","selection","_Editor$parent","Editor","parent","focus","_Editor$parent2","parentPath","removeLink","isVoid","Transforms","insertNodes","at","Path","select","Range","isCollapsed","wrapNodes","unwrapNodes","isEditor","Element","isElement","isLink","_Editor$nodes","nodes","withLinks","isInline","element","insertBreak","deleteBackward","isMarkActive","marks","toggleMark","removeMark","addMark","isBlockActive","SlateElement","list_types","toggleBlock","isList","setNodes","withDeleteEmptyBlock","unit","offset","anchor","node","HEADING_TYPE_KEYS","sanitizeHeadingNodes","childrenToTransform","serialize","resetRichText","originalValue","start","end","delete","insertFragment","deselect","SlateWrapper","getLeftChar","point","getRightChar","wordRegexp","getCurrentSelection","currentWord","currentPosition","startOffset","endOffset","currentRange","iconButton","LinkPopover","Language_default","properHref","linkPopup","Link","useSelected","useFocused","linkText","_getCurrentSelection","selectedWordIsPartOfLinkText","selectionPathIsTheSame","linkIsSelected","RichTextWidgetSettings_LinkPopover","headingOne","headingTwo","headingThree","ol","paddingInlineStart","ul","textLine","isDefaultEditor","defaultElement","RichTextWidgetSettings_Link","fontWeightBold","italic","fontStyle","strike_through","Leaf","_children","leaf","classList","EditArea","_ref$isDefaultEditor","renderElement","RichTextWidgetSettings_Element","renderLeaf","RichTextWidgetSettings_Leaf","index_es","spellCheck","hotkey","isHotkey","active","ButtonBase","onMouseDown","MarkButton","useSlate","RichTextWidgetSettings_ButtonBase","BoldButton","RichTextWidgetSettings_MarkButton","FormatBold_default","ItalicButton","FormatItalic_default","UnderlineButton","FormatUnderlined_default","StrikeThroughButton","StrikethroughS_default","BlockButton","OrderedListButton","RichTextWidgetSettings_BlockButton","FormatListNumbered_default","UnorderedListButton","FormatListBulleted_default","titleBar","closeButton","LinkEditDialog","displayText","isEditing","onDisplayTextChange","onHrefChange","onRemoveLink","Close_default","LinkButton","showEditDialog","setShowEditDialog","setDisplayText","setHref","setSelection","Link_default","RichTextWidgetSettings_LinkEditDialog","_selection","handleInsertLink","RichTextDefault","onSetFieldValue","shouldReset","resetShouldReset","withReact","withHistory","createEditor","RichTextWidgetSettings_SlateWrapper","initialValue","editorValue","sanitizedValue","RichTextWidgetSettings_Toolbar","RichTextWidgetSettings_BoldButton","RichTextWidgetSettings_ItalicButton","RichTextWidgetSettings_UnderlineButton","RichTextWidgetSettings_StrikeThroughButton","RichTextWidgetSettings_OrderedListButton","RichTextWidgetSettings_UnorderedListButton","RichTextWidgetSettings_LinkButton","RichTextWidgetSettings_EditArea","richTextDefault","HeadingButtonBase","HeadingOneButton","RichTextWidgetSettings_HeadingButtonBase","HeadingTwoButton","HeadingThreeButton","RichTextExpanded","RichTextWidgetSettings_HeadingOneButton","RichTextWidgetSettings_HeadingTwoButton","RichTextWidgetSettings_HeadingThreeButton","richTextExpanded","RichTextWidgetSettings","defaultContent","expandedContent","originalDefaultValue","originalExpandedValue","RichTextWidgetSettings_RichTextDefault","RichTextWidgetSettings_RichTextExpanded","MyTeamWidgetSettings","managerTerminology","managerTerminologyPlural","dlrEnabled","_values$settings","displayTeammatesForLeader","displayDlrs","settingTitle","fontWeightSemiBold","settingInfo","settingContainer","settingPadding","settingMargin","dropdown","tooltip","PersonsListByDateForm","listIndex","onReorderList","onDeleteList","isMultiList","baseListKey","dateFields","personList","personLists","disableReordering","disableIncludeFirstYear","includeYearly","setSelectBooleanValue","formKey","formValue","_targetListIndex","Select","updateFrequency","fieldObjectKey","displayYear","includeInFirstYear","presetCard","presetName","presetDescription","PersonsListByDatePresetSelect","presets","Cake_default","defaultSettings","Today_default","AssignmentInd_default","Create_default","listName","selectedPresetIndex","setSelectedPresetIndex","preset","selectedPreset","PersonsListByDateDeleteConfirmation","DEFAULT_INITIAL_LIST","_onPresetSelectStep","listDisplayContainer","listDisplayRoot","listDisplayPosition","listDisplayName","PersonListsByDateWidgetSettings","deleteDialogIndex","setDeleteDialogIndex","disableAddList","handleDeleteConfirmationOpen","handleReorderLists","targetIndex","currentListRealIndex","targetListRealIndex","PersonsListsByDateDeleteConfirmation","_list","nextIndex","listsByTargetIndex","_orderBy","PersonsListByDateWidgetSettings_PersonsListByDatePresetSelect","PersonsListByDateWidgetSettings_PersonsListByDateForm","WIDGET_SETTINGS","_WIDGET_SETTINGS","nameFieldDescription","characterCount","WidgetEdit","onDone","setShouldReset","_widget","updateWidget","updateWidgetStatus","widgetSettings","SettingsComponent","richTextDefaultCharCount","richTextExpandedCharCount","defaultRichTextValue","expandedRichTextValue","handleUpdateWidget","widgetUpdateRequest","orderedPersonLists","WidgetConfiguration","WidgetSelectType_WidgetSelectType","WidgetSetName_WidgetSetName","WidgetEdit_WidgetEdit","WidgetConfiguration_WidgetConfiguration","routes_Administrators","routes_Applications","ApplicationCreate","routes_ApplicationEdit","routes_AttributesEditModal","routes_AttributeSocialPhotos","routes_Directories","routes_Directory","routes_Features","routes_General","routes_Home","routes_Homepage","HomepageWidgetConfiguration","routes_NoRoute","routes_Pages","routes_PageTypes","routes_Person","PersonProfiles","routes_SiftBot","routes_Source","routes_SourceCreate","routes_SourceCSVSetup","routes_SourcePhotoCSVSetup","SourceWizard","routes_SourceLDAPSetup","Users","routes_Debug","Documentation","Administrators","ADMIN_URL","AdministratorsPage","AdministratorsIcon","exact","navExact","Applications","APPLICATIONS_URL","ApplicationsPage","APIIcon","APP_CREATE_URL","ApplicationEditPage","ApplicationEdit","AttributesEditModalPage","AttributeSocialPhotos","AttributeSocialPhotosPage","Directories","DirectoriesPage","DirectoriesIcon","helpArticleLinkText","DirectoryPage","FEATURES_URL","navSideBarPath","FeaturesPage","FeatureIcon","GENERAL_URL","GeneralPage","SettingsIcon","HomePage","HomeIcon","HomepagePage","WidgetsIcon","NoRoutePage","Pages","PagesPage","PagesIcon","PageTypesPage","Person","USERS_URL","PersonPage","PersonIcon","SiftBotPage","SiftBotIcon","Source","SourcePage","SourceCreate","SourceCreatePage","SourceCSVSetup","CSV_WIZARD_URL","SourceCSVSetupPage","SourcePhotoCSVSetup","SourcePhotoCSVSetupPage","SOURCE_CREATE_URL","SourceWizardPage","SourceLDAPSetup","SourceLDAPSetupPage","InvitesPage","InvitesIcon","Debug","DEBUG_URL","DebugPage","isExternal","isDebugEnabled","DIRECTORY_CREATE_IDENTIFIER","DIRECTORIES_FETCH","DIRECTORY_FETCH","DIRECTORY_CREATE","DIRECTORY_DELETE","DIRECTORY_SAVE","fetchDirectories","expands","isArray","deleteDirectory","saveDirectory","directory","_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","updatedDirectory","oldDirectory","objects","mergeSuccess","fetches","directoriesReducer","resift__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","flat__WEBPACK_IMPORTED_MODULE_1__","flat__WEBPACK_IMPORTED_MODULE_1___default","_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__","errorList","flatten","firstErrorMessage","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","CSV_WIZARD_UPLOAD_URL","CSV_WIZARD_MAPPING_URL","MAPPINGS_TAB","DIRECTORY_APP_USERS","LDAP_SOURCE_TYPE_KEY","UKG_SOURCE_TYPE_KEY","OKTA_SOURCE_TYPE_KEY","RHDS_SOURCE_TYPE_KEY","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","PRIMARY_MAPPING_NOT_SET","ORG_MAPPINGS_NOT_SET","NO_VALID_ORG_REFERENCE_OPTIONS","REQUIRED_MAPPING_MISSING_ERROR_CODE","components_Router_consts__WEBPACK_IMPORTED_MODULE_0__","destination","isRequired","isUnique","_material_ui_core_Link__WEBPACK_IMPORTED_MODULE_1__","_ref$text","makeGetOnboardingTasks","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__","overline","getHostDomain","hostDomain","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","EntityTypesContext","AuthFetch","fetchAuthenticatedPerson","twoMinutes","AppFetcher","siftBotStatus","globalConfigStatus","onboardingTasksStatus","onboardingTasksFromAPI","currentCheckList","checkList","fetchClient","fetchSiftBot","callback","savedCallback","_noop","setInterval","clearInterval","useInterval","setOnboardingTasks","completionPercentage","taskCategories","setOverallCompletion","onboardingTasksArray","categoryLookup","updatedTasks","taskLookup","tasks","t","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","_colors__WEBPACK_IMPORTED_MODULE_0__","regular","subtitle2","htmlFontSize","fontFamily","h4InBar","h4Regular","syncIndicatorContent","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","_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","getSourceFetch","createSelector","sources","Fetch","getDirectoryFetch","directories","getStatus","sourceFetch","directoryFetch","mapDispatchToProps","ownProps","sourceStatus","directoryStatus","stateProps","dispatchProps","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","taskList","useTaskList","taskKey","has","set","toggle","keyToToggle","keyToDelete","newSet","remove","keyToAdd","add","styles","attributeRow","clearAll","cancel","save","afterListView","AttributeSelectorBase","renderAriaLabel","onSearch","toggleOpen","onOpen","onChangeSelectedAttributes","onClearAll","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__","completion","listButton","activeButton","OnboardingListButton","onOnboardingButtonClick","percentageButtonRef","bubbleSeenByUser","bubbleOpen","buttonName","overallCompletion","setPercentageButtonRef","Fab","setBubbleSeenByUser","setSlideKey","taskButton","OnboardingTaskButton","taskButtonRef","taskTitle","setTaskTitle","onScreenTask","pageStartUrl","setTaskButtonRef","onScreenTaskId","AppSidebar","personMenuRoot","personMenuIcon","navigation","handleOnboardingButtonClick","_buttonName","toggleBubbleOpen","trackButtonName","avatarHeader","PersonMenu_default","AppHeader_OnboardingTaskButton","AppHeader_OnboardingListButton","preferOfficialPhotos","officialPictureUrl","routesToNavigationItems","defaultNavigationItems","makeNavigationItems","navText","_classesOverride","classesOverride","&:hover,&:focus","light","NavListItemBase","molecules_ListItem","ListItemIcon","& *","InternalLinkNavItem","navTitle","activeClassName","molecules_NavListItemBase","molecules_ListItemIcon","molecules_ListItemText","ExternalLinkNavItem","supportLinks","LiveHelpIcon","ChatIcon","SupportLinks","AppSidebar_ExternalLinkNavItem","logoListItem","backToAppIcon","navDivider","useTheme","navigationItems","directoryUrl","Drawer","disablePadding","SiftLogo_default","ExitToApp_default","AppSidebar_InternalLinkNavItem","Routes","AppSidebar_SupportLinks","max","up","TrialBannerForSmallScreens","square","sidebarContent","sidebar","bannerOpen","setBannerOpen","TrialBannerForSmallScreens_TrialBannerForSmallScreens","makeSetPassword","password","labelSize","inputSize","helperTextContainer","PasswordTextField","validPasswordCallback","passwordCallback","hasBlurredOnce","setHasBlurredOnce","displayErrors","errorMessages","msg","regex","FormControl","InputLabel","Input","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","showSetPasswordForm","setShowSetPasswordForm","handleAcceptOwnerRole","handleSubmitNewPassword","checkNewPasswordCriteria","handleCancelSetPassword","setPasswordCallback","setValidPasswordCallback","validPassword","handleChangeTwo","PERSON_ROLE_OWNER","TransitionComponent","AcceptOwnerRoleDialog_PasswordTextField","makeGetAuthenticationInfo","currentUserRole","currentUserId","getAuthenticationInfo","authenticationInfo","AcceptOwnerRoleDialog_AcceptOwnerRoleDialog","_trialBanner","_bannerInfo","trialBanner","leftSide","bannerInfo","bannerText","reachOut","closeContainer","closeIcon","FreeTrialBanner","trialDaysRemaining","orientation","flexItem","contentBgColor","childrenContainer","trialEndDate","assignedAt","currentDay","Date","diff","SidebarLayout_SidebarLayout","FreeTrialBanner_FreeTrialBanner","components_AppSidebar","components_AppHeader","components_AcceptOwnerRoleDialog","taskId","TaskDetailHeading","taskToShow","isCelebrating","categoryId","allowManualComplete","updateTask","makeUpdateOnboardingTask","toggleTaskCompletion","stickyHeader","fullDescription","& h5","& h6","& a","& p","& b","& ol","& ol > li","listStyleType","& ul","& ul > li","TaskDetail","slideIn","setSlideIn","TaskDetailHeading_TaskDetailHeading","enter","headline","checkIcon","CompletionCheers","Bubble","overlayRef","prevSlideKey","clickOutsideBubble","clickIsOutOfBubble","contains","clickIsOutOfTaskButton","clickIsOutOfPercentageButton","CompletionCheers_CompletionCheers","TaskDetail_TaskDetail","getBubbleComponent","HelpArticleLinkTextContext","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","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","closeCompleteDialog","updateInviteSettings","inviteSettings","selectedUserReference","selectedUsers","allSelected","selectedById","LOCATION_CHANGE","sendDialogOpen","successDialogOpen","successCount","newForm","_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","lodash_flatten__WEBPACK_IMPORTED_MODULE_0__","lodash_flatten__WEBPACK_IMPORTED_MODULE_0___default","directParentFieldKey","excludeChildNameFields","endsWith","components_AnalyticsProvider_AnalyticsContext__WEBPACK_IMPORTED_MODULE_1__","lodash_get__WEBPACK_IMPORTED_MODULE_2__","lodash_get__WEBPACK_IMPORTED_MODULE_2___default","lodash_noop__WEBPACK_IMPORTED_MODULE_3__","lodash_noop__WEBPACK_IMPORTED_MODULE_3___default","contextValue","_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","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","fileName","onDrop","files","newFile","_first","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","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","primaryText","helpers_consts__WEBPACK_IMPORTED_MODULE_0__","personClientFieldId","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","getSelectedAttributes","configFieldCollection","configField","canOptOut","presence","directReports","assistantOf","reorderTasks","categoryList","completeCategories","_incompleteCategories","incompleteCategories","isExpanded","_partition4","_partition5","completeTasks","incompleteTasks","buttonRef","toggleCategoryExpansion","onboardingTasks","setTaskIdInFocus","_findIndex","getMappings","mappingCards","mappingCard","boxSizing","& > *:last-child","cardClassName","descriptionNode","_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4__","_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5__","completed","tag","TaskTitle","_task","task","isPro","shortTextContainer","shortText","doc","TaskSummary","_helpArticleLink","shortDescription","TaskTitle_TaskTitle","Task","taskIsPro","clientIsPro","TaskSummary_TaskSummary","headerButton","headerRight","& .MuiLinearProgress-colorPrimary","progressBar","Category","allTasksAreOptional","ExpandMore_default","ChevronRight_default","Task_Task","_ref$isOnHomePage","Category_Category","Checklist_Checklist","version","platform","appReducer","mergeMutationResult","mutationName","DATA_SERVICE_ACTION_HANDLERS","_objectSpread3","combineReducers","app","homepageWidgets","companyApi","dataService","injectReducer","replaceReducer","LogoIcon","styleProps","LogoGray","PERSON_ROLE_USER","PERSON_ROLE_ADMIN","ADMIN_TYPE_PENDING_OWNER","ADMIN_TYPE_OWNER","casing","term","withSpace","TerminologyContainer","terminologyState","teamLeader_plural","components_Terminology_Terminology","accountStatus","activeColor","suspendedColor","invitedColor","notInvitedStatus","deletedStatus","MuiButton","MuiCard","MuiCardActionArea","MuiCardHeader","MuiCardContent","MuiPaper","elevation1","elevation2","MuiTooltip","MuiTabs","MuiTab","&$selected","MuiDivider","MuiDialogActions","MuiDialogContent","MuiDialogContentText","MuiDialogTitle","& h2","& span","dark","fourPercent","eightPercent","twelvePercent","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","_withSource__WEBPACK_IMPORTED_MODULE_0__","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","withRouter","_ref$component","_material_ui_core_TablePagination__WEBPACK_IMPORTED_MODULE_4__","rowsPerPage","rowsPerPageOptions","onChangePage","onChangeRowsPerPage","_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_6__","ClearableSearchField","textFieldValue","updateSearch","handleOnChange","handleOnSearch","handleOnEnter","handleClear","onClear","clearButton","inputRoot","searchButton","handleSearch","handleClearSearch","ClearableSearch","helpLinkMeta","subheaderClassName","InfoCard_InfoCard","ErrorView","isErrorView","Loader_ErrorView","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","currentSourceId","sourcesWithoutCurrentSource","allSourceMappings","sourceMapping","parentSource","newSourceMapping","fromSource","useAllSourceMappings","allSourceMappingsFetch","makeAllSourceMappingsFetch","useExistingOrgMappingsInfo","tlRefMapping","m","tlMatchMapping","orgMappingsSet","orgMappedToSourceName","orgMappedToSourceId","getValidatedMappingCards","rowValidationResults","vr","validationResultsLookup","_groupBy","orgMappingValidationResults","orgValidationLookup","lookupKey","validation","_referenceId","descriptionHtml","isMappingUpdated","initialMapping","submittedMapping","destinationsDontMatch","sourcesDontMatch","isUniqueDontMatch","isRequiredDontMatch","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","useIsInWizard","dividerLine","menuListRoot","ITEM_HEIGHT","searchInput","subField","addProperty","onSelectAttribute","onSetNewProp","newPropValue","onSaveCustomProps","menuItems","MappingsContext","addProp","setAddProp","shouldAllowAddCustomProperty","MenuList","fromAttribute","selectHeader","selectInputIndex","setValue","_category$children$va","output","headerDisplayName","categoryChildren","firstMenuItemDisplayName","_globalType$item$name","unshift","buildMenuItems","menuItemIndex","_category$children$me","createInitialState","selectInputs","setSelectInputs","newSelectInputValue","clonedSelectedInputs","SelectInput_SelectInput","basic","AddAttribute_AddAttribute","cssOutlinedInput","multilineTextField","& label","& textarea","attributeDisplayName","attributeDescription","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","sourceAttrOptions","isDisabled","selectedAttributeDisplayName","onAddCustomSourceAttribute","handleSelectAttribute","setSearch","setNewPropValue","handleUpdateCustomProp","handleSaveCustomProps","ArrowDropDown_default","disablePortal","TransitionProps","Grow","SourceSelector_AttributeMenu","SourceSelector_SourceSelector","float","ValidationStatusIndicator","_ref$status","iconLookup","Cancel_default","Warning_default","blackListedTypes","languageItem","createAttributes","remainingSourceMappings","selectedDestinations","isChildField","isAttributeBlackListed","reachOutToMeForField","isDirectReachOutToMeForChild","isAttributeAllowed","isInAnotherSourceMapping","mappedToSource","alreadySelected","mappable","otherItems","isObject","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","MP","sourceTypes","prevIsCollapsed","sourceName","attributeDisplayValue","sampleData","handleUpdateMapping","newMapping","isPrimaryMapping","shouldRenderInput","Mappings_SourceSelector","sourceValue","colSpan","Mappings_AttributeSelector","atoms_ValidationStatusIndicator","accordionSummary","& .MuiAccordionSummary-content","& .MuiAccordionSummary-expandIcon","AccordionSectionHeader","AccordionSummary","expandIcon","accordionContent","AccordionSectionContent","AccordionDetails","AccordionSectionButtonContainer","OverallValidationStatus","_ref$errorsNotTiedToS","errorsNotTiedToSpecificMappingRows","mappingValidationChecks","validationChecks","_uniq","vc","renderWarningCount","renderErrorCount","helpText","helpTextNote","accordion","PrimaryKeyMapping","onNextStep","onToggleExpansion","onSourceCreationWizardMappings","validateMappings","validationResponse","ValidationStatus","otherOrgMappingIssues","code","OverallValidationStatus_OverallValidationStatus","renderCardHeader","renderDetails","MappingsRow_MappingsRow","Accordion","expanded","molecules_AccordionSectionHeader","molecules_AccordionSectionContent","molecules_AccordionSectionButtonContainer","disabledRow","disabledSelector","OrgSourceMapping","mappingIndex","_ref$mapping","existingTlMatchMapping","rootName","tlRefOptionsForCsv","tlName","isTlRefRow","isTlMatchRow","selectedTlRefOption","sourcePath","hasSingleTlMatchOption","_defaultTlMatchMapping","existingTlMatchMappingId","singleTlMatchSourceValue","newTlMatchMapping","defaultTlMatchMapping","defaultMapping","ExampleOrgConnect","NoManagerInfoCopy","subheaderCardHeader","orgMapCell","validationIcon","orgMappingHelper","orgMappingHelperHeading","mappingsContext","_mappings","isInWizard","csvFileUploadSkipped","tlRefOptionStrings","tlRefOptionsEmptyForCsv","tlMatchOptionsForCsv","tlMatchOptions","showTlMatchRow","existingMappingsInfo","OrgSourceMapping_OrgSourceMapping","Logos_ExampleOrgConnect","NoManagerInfoCopy_NoManagerInfoCopy","addMappingButtonContainer","ProfileAttrMapping","onUpdateCard","handleAddCustomMapping","newMappings","newMappingIndex","requiredMappingErrors","cardData","onUpdateState","sourceFromProp","orgSectionRef","profileAttrSectionRef","selectionAttributesArray","tlRefOptionsForCsvArray","_sourceAttrOptions","setSourceAttrOptions","accordionsExpandState","setAccordionsExpandState","handleDeleteMapping","cardIndex","indexToDelete","newMappingItems","newOption","refs","nextCardIndex","handleExpandNextSection","newAccordionsExpandState","handleNextStep","scrollIntoView","behavior","CardComponent","OrgMapping","sourceFromProps","setMappings","setDirty","partitionPrimary","primaryMappings","nonPrimaryTypes","_hierarchyMappings","nonHierarchyTypes","hierarchyMappings","_partition6","_partition7","isRequiredMappings","dataMappings","_partition8","_partition9","displayedDataMappings","_mappingCards","createMappingsCardData","setMappingSections","MappingCards_MappingCards","_latestMappings","latestMappings","logisticalBatchActions","logisticalCard","orgMappings","initialOrgMappings","currentMatchMapping","initialMatchMapping","currentRefMapping","initialRefMapping","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","MappingsSummary","csvFileName","onUploadNewCsv","sampleDataCount","sampleLimitExceeded","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","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","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","resift__WEBPACK_IMPORTED_MODULE_1__","_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_3__","_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_4__","_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_5__","_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_6__","_ref$title","_ref$disableSubmitBut","_ref$submitButtonCopy","submitButtonCopy","CSV_TEMPLATE_URL","INTERCOM","appId","directoryIdPath","helpLinkSpacing","_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_5__","components_Page_HelpArticleLink__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_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","optOutBlackList","rootBorder","objectKeyCell","optOutCell","radioGroupRoot","icons","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__"],"mappings":"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","file":"static/js/main.48c2803b.chunk.js","sourcesContent":["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 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 Button from '@material-ui/core/Button';\n\nexport default function SaveButton({ label = 'Save', ...other }) {\n return (\n \n {label}\n \n );\n}\n","import React from 'react';\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\n// (note - pearl) This needs to be used within the new Page component for the portal to work\n// properly (import Page from 'components/Page/newComponents')\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 width: '100vw',\n },\n visible: {\n minHeight: 70,\n padding: theme.spacing(2),\n },\n };\n});\n\nexport default PageFormToolbar;\n","export const INDEPENDENT_PAGE_TYPE = 'Independent';\nexport const ATTRIBUTE_PAGE_TYPE = 'Attribute';\nexport const OPEN_ROLE_PAGE_TYPE = 'Open Role';\nexport const OPEN_ROLE_TYPE_KEY = 'open-role';\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 secondarySpinnerClass: {\n color: theme.palette.secondary.main,\n },\n}));\n\nexport default LoadingButton;\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 _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 { 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';\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 { 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 { 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, { 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 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 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 * 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 _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 _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 _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 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 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, { 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, { 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 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, { 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, { 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 from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Button from '@material-ui/core/Button';\nimport LoadingButton from 'atoms/LoadingButton';\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';\n\ninterface Props {\n open: boolean;\n dialogTitle: string;\n children: React.ReactNode;\n disableCancel?: boolean;\n disableSave?: boolean;\n saveButtonText?: string;\n loading?: boolean;\n onClose: () => void;\n onSave: () => void;\n}\n\nfunction ConfirmationDialog({\n open,\n dialogTitle,\n children,\n disableCancel,\n disableSave,\n saveButtonText = 'save',\n loading,\n onClose,\n onSave,\n}: Props) {\n const classes = useStyles();\n\n return (\n \n {dialogTitle}\n {children}\n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n saveButton: {\n backgroundColor: theme.palette.error.main,\n color: theme.palette.common.white,\n },\n}));\n\nexport default ConfirmationDialog;\n","import React, { useState } from 'react';\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 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 ConfirmationDialog from 'molecules/ConfirmationDialog';\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 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 loading={isLoading(status)}\n onSave={() => {\n toggleDialog(true);\n }}\n disableSave={dialogInput !== 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 you cannot undo this action! \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 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 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 { 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 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';\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 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 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 const [file, setFile] = useState(null);\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 const handleSetFile = file => {\n setFile(file);\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 classes: PropTypes.object.isRequired,\n imageSrc: PropTypes.string,\n error: PropTypes.string,\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\ninterface Props {\n isTrial: boolean;\n}\n\nfunction HelpCard({ isTrial }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n\n const cardTitle = isTrial ? 'Need Help With Your Trial?' : 'Having Trouble?';\n const cardContent = isTrial\n ? 'Do you need assistance with setting up your free trial? We’re here to help!'\n : 'Having trouble with something you see here? We would love to speak with you and offer any additional support needed.';\n const cardButton = isTrial ? 'Send a Message' : 'Send an Email';\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 {cardContent}\n \n Feel free to send us a message or, use our chat feature to speak to someone immediately.\n \n
\n \n {cardButton}\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 const isTrial = useSelector(state => _get(state, ['client', 'isTrial']));\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 { defineFetch } from 'resift';\n\nconst makeGetWidgetTypes = defineFetch({\n displayName: 'Get Widget Types',\n make: () => ({\n request: (expandDefaultLayoutPresence?: boolean) => ({ http }) =>\n http({\n method: 'GET',\n route: `/widget-types`,\n query: { expandDefaultLayoutPresence },\n }),\n }),\n});\n\nconst getWidgetTypes = makeGetWidgetTypes();\n\nexport default getWidgetTypes;\n","import { defineFetch } from 'resift';\n\nconst makeGetWidgets = defineFetch({\n displayName: 'Get Widgets',\n make: () => ({\n request: (expandDefaultLayoutPresence?: boolean) => ({ http }) =>\n http({\n method: 'GET',\n route: `/widgets`,\n query: { expandDefaultLayoutPresence },\n }),\n }),\n});\n\nconst getWidgets = makeGetWidgets();\n\nexport default getWidgets;\n","import { defineFetch } from 'resift';\n\nconst makeDeleteWidget = defineFetch({\n displayName: 'Delete Widget',\n share: {\n namespace: 'widgets',\n },\n make: () => ({\n request: (widgetId: string) => ({ http }) =>\n http({\n method: 'DELETE',\n route: `/widgets/${widgetId}`,\n }),\n }),\n});\n\nconst deleteWidget = makeDeleteWidget();\n\nexport default deleteWidget;\n","import { defineFetch } from 'resift';\nimport { WidgetCreateRequest } from 'pages/Homepage/typings';\n\nconst makeCreateWidget = defineFetch({\n displayName: 'Create a Widget',\n make: () => ({\n request: (data: WidgetCreateRequest) => ({ http }) =>\n http({\n method: 'POST',\n route: '/widgets',\n data,\n }),\n }),\n});\n\nconst createWidget = makeCreateWidget();\n\nexport default createWidget;\n","import React from 'react';\nimport bowser from 'bowser';\nimport Typography from '@material-ui/core/Typography';\n\nfunction IeSucksBanner() {\n const isInIe = bowser.name === 'Internet Explorer';\n\n if (!isInIe) {\n return null;\n }\n\n return (\n \n This page is not supported in Internet Explorer. Please use another browser.\n \n );\n}\n\nexport default IeSucksBanner;\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 _get from 'lodash/get';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useHistory } from 'react-router';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Button from '@material-ui/core/Button';\nimport Badge from '@material-ui/core/Badge';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { GridToolbarContainer } from '@material-ui/data-grid';\n\nimport { HOME_URL, WIDGETS_URL } from 'components/Router/consts';\n\nconst CustomToolbar = (props: any) => {\n const classes = useStyles();\n const history = useHistory();\n const analytics = useAnalytics();\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\n const toggleFilterPanel = () => {\n if (open) {\n hideFilterPanel();\n } else {\n showFilterPanel();\n }\n };\n\n const handleClick = () => {\n analytics.track('Create a widget clicked', {\n category: 'AD - Homepage',\n });\n\n history.push(`${HOME_URL}${WIDGETS_URL}/create/types`);\n };\n\n return (\n \n \n \n \n }\n >\n Search\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}));\n\nexport default CustomToolbar;\n","export const HOTKEYS = {\n 'mod+b': 'bold',\n 'mod+i': 'italic',\n 'mod+u': 'underline',\n};\n\nexport const MAX_CHAR_COUNT_NAME = 35;\nexport const MAX_CHAR_COUNT_DESCRIPTION = 160;\nexport const MAX_CHAR_COUNT_RICH_TEXT = 10000;\n\nexport const DEFAULT_RICH_TEXT_CONTENT = '[{\"children\":[{\"text\":\"\"}]}]';\n\nexport const RICH_TEXT_TYPE_ID = 'rich-text';\nexport const MY_TEAM_TYPE_ID = 'my-team';\nexport const PERSONS_LISTS_BY_DATE_TYPE_ID = 'person-lists-by-date';\n\nexport const WIDGET_NAME_FIELD_DESCRIPTION =\n 'This name will appear at the top of the widget on the homepage.';\n\nexport const PREVIEW_PARAM_NAME = 'previewLayoutId';\n","import React, { useState, useMemo } from 'react';\nimport _get from 'lodash/get';\nimport _keyBy from 'lodash/keyBy';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useHistory } from 'react-router';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useStatus } from 'resift';\nimport deleteWidget from 'fetches/homepageWidgets/deleteWidget';\nimport createWidget from 'fetches/homepageWidgets/createWidget';\nimport getWidgets from 'fetches/homepageWidgets/getWidgets';\nimport showSnackbar from 'helpers/showSnackbar';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { DataGrid } from '@material-ui/data-grid';\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';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport NotInterestedIcon from '@material-ui/icons/NotInterested';\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport IeSucksBanner from 'molecules/IeSucksBanner';\nimport PageTitle from 'components/Page/PageTitle';\nimport DeleteConfirmationDialog from 'molecules/ConfirmationDialog';\nimport NameDuplicateWidgetDialog from 'molecules/SimpleConfirmationDialog';\nimport CustomGridPanel from './components/CustomGridPanel';\nimport CustomToolbar from './components/CustomToolbar';\nimport { HOME_URL, WIDGETS_URL } from 'components/Router/consts';\nimport { Widget, WidgetCreateRequest, WidgetType } from 'pages/Homepage/typings';\nimport { MAX_CHAR_COUNT_NAME } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\nfunction WidgetsTab() {\n const classes = useStyles();\n const history = useHistory();\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n const widgetTypesArray: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n const widgets: Array = useSelector(state => _get(state, ['homepageWidgets', 'widgets']));\n const widgetNames = !widgets.length ? [] : widgets.map(w => w.name);\n const deleteWidgetStatus = useStatus(deleteWidget);\n const createWidgetStatus = useStatus(createWidget);\n\n showSnackbar({\n status: deleteWidgetStatus,\n message: 'Successfully deleted widget.',\n variant: 'success',\n errorMessage: 'An error occurred while deleting the widget.',\n });\n\n showSnackbar({\n status: createWidgetStatus,\n message: 'Successfully created widget.',\n variant: 'success',\n errorMessage: 'An error occurred while creating the widget.',\n });\n\n const rows = useMemo(() => {\n const widgetTypes = _keyBy(widgetTypesArray, 'id');\n\n return widgets.map(w => ({\n ...w,\n type: widgetTypes[w.widgetTypeId].name,\n isOnLayout: w._isInDefaultLayout,\n }));\n }, [widgetTypesArray, widgets]);\n\n const [anchorElForMoreMenu, setAnchorElForMoreMenu] = useState(null);\n const [moreMenuOpen, setMoreMenuOpen] = useState(false);\n const [selectedWidget, setSelectedWidget] = useState(null);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [deleteDialogInput, setDeleteDialogInput] = useState('');\n const [duplicateDialogOpen, setDuplicateDialogOpen] = useState(false);\n const selectedWidgetName = _get(selectedWidget, 'name', 'this widget');\n const selectedWidgetId = _get(selectedWidget, 'id') as string;\n const [duplicateDialogInput, setDuplicateDialogInput] = useState(selectedWidgetName);\n const [customSorted, setCustomSorted] = useState(false);\n\n const nameValidationError = useMemo(() => {\n let error;\n\n if (!duplicateDialogInput.length) {\n error = 'Name is required';\n }\n\n if (widgetNames.includes(duplicateDialogInput)) {\n error = 'This name already exists, please use a different name';\n }\n\n if (duplicateDialogInput.length > MAX_CHAR_COUNT_NAME) {\n error = `Name cannot be more than ${MAX_CHAR_COUNT_NAME} characters`;\n }\n\n return error;\n }, [duplicateDialogInput]);\n\n const handleMore = (event: React.MouseEvent, widget: Widget | null) => {\n event.stopPropagation();\n setMoreMenuOpen(!moreMenuOpen);\n setSelectedWidget(widget);\n setAnchorElForMoreMenu(event ? event.currentTarget : anchorElForMoreMenu);\n };\n\n const handleDeleteDialogOpen = () => {\n analytics.track('Delete clicked', {\n category: 'AD - Homepage',\n });\n\n setDeleteDialogOpen(true);\n };\n\n const handleDeleteDialogClose = () => {\n setDeleteDialogOpen(false);\n setMoreMenuOpen(false);\n setDeleteDialogInput('');\n };\n\n const handleDeleteDialogInput = (e: React.ChangeEvent) => {\n setDeleteDialogInput(e.target.value);\n };\n\n const handleConfirmDelete = async () => {\n handleDeleteDialogClose();\n await dispatch(deleteWidget(selectedWidgetId));\n dispatch(getWidgets(true));\n };\n\n const handleDuplicateDialogOpen = () => {\n analytics.track('Duplicate clicked', {\n category: 'AD - Homepage',\n });\n\n setDuplicateDialogOpen(true);\n setDuplicateDialogInput(selectedWidgetName);\n };\n\n const handleDuplicateDialogClose = () => {\n setDuplicateDialogOpen(false);\n setMoreMenuOpen(false);\n setDuplicateDialogInput('');\n };\n\n const handleSaveDuplicateWidget = async () => {\n const widgetTypeId = _get(selectedWidget, 'widgetTypeId') as string;\n const description = _get(selectedWidget, 'description');\n const settings = _get(selectedWidget, 'settings', {});\n handleDuplicateDialogClose();\n\n const widgetCreateRequest = {\n name: duplicateDialogInput,\n settings,\n widgetTypeId,\n } as WidgetCreateRequest;\n\n if (description) {\n widgetCreateRequest.description = description;\n }\n\n await dispatch(createWidget(widgetCreateRequest));\n dispatch(getWidgets(true));\n };\n\n const handleDuplicateDialogInput = (e: React.ChangeEvent) => {\n setDuplicateDialogInput(e.target.value);\n };\n\n const columns = [\n {\n field: 'id',\n headerName: 'ID',\n type: 'number',\n hide: true,\n filterable: false,\n },\n {\n field: 'name',\n headerName: 'Name',\n type: 'string',\n flex: 3,\n },\n {\n field: 'type',\n headerName: 'Type',\n type: 'string',\n flex: 2,\n filterable: false,\n },\n {\n field: 'origination',\n headerName: 'Origination',\n type: 'string',\n flex: 2,\n filterable: false,\n renderCell: (params: any) => {\n const { isUserCreated } = params.row;\n return (\n <>\n \n {isUserCreated ? 'Custom' : 'Prebuilt'}\n \n );\n },\n valueGetter: (params: any) => {\n return params.row.isUserCreated ? 'Custom' : 'Prebuilt';\n },\n },\n {\n field: 'on-layout',\n headerName: 'On Layout',\n type: 'string',\n flex: 2,\n filterable: false,\n renderCell: (params: any) => {\n if (!params.row.isOnLayout) {\n return ;\n } else {\n return ;\n }\n },\n valueGetter: (params: any) => {\n return params.row.isOnLayout ? 'On Layout' : 'Not on Layout';\n },\n },\n {\n field: 'more-actions',\n renderHeader: () => {\n return More Actions;\n },\n columHeaderHeight: 0,\n flex: 1,\n disableClickEventBubbling: true,\n filterable: false,\n renderCell: (params: any) => {\n return (\n
\n ) => handleMore(event, params.row)}\n >\n \n \n setMoreMenuOpen(false)}\n elevation={1}\n >\n Duplicate\n {_get(selectedWidget, 'isUserCreated', false) && (\n Delete\n )}\n \n
\n );\n },\n },\n ];\n\n const handleRowClick = (params: any) => {\n const rowId = params.row.id;\n history.push(`${HOME_URL}${WIDGETS_URL}/${rowId}`);\n };\n\n const onSortModelChange = (sortModel: any) => {\n !customSorted && setCustomSorted(true);\n const sortColumn = _get(sortModel.sortModel[0], 'field', undefined);\n\n sortColumn &&\n customSorted &&\n analytics.track('Sort Button Clicked', {\n category: 'AD - Homepage',\n label: sortColumn,\n });\n };\n\n return (\n <>\n \n
\n \n\n onSortModelChange(sortModel)}\n disableColumnMenu\n disableColumnSelector\n disableColumnReorder\n disableSelectionOnClick\n onRowClick={handleRowClick}\n sortModel={[{ field: 'name', sort: 'asc' }]}\n components={{\n Toolbar: CustomToolbar,\n // @ts-ignore\n Panel: CustomGridPanel,\n }}\n componentsProps={{\n toolbar: {\n buttonText: 'Create A Widget',\n },\n }}\n />\n
\n \n \n To delete this widget, type{' '}\n \"{selectedWidgetName}\" \n in the input below.\n
\n
\n WARNING: You cannot undo this action!\n
\n \n \n \n \n A new widget will be created with the same configuration. Give it a new name below.\n \n \n {Boolean(nameValidationError) && (\n {nameValidationError}\n )}\n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n wrapper: {\n height: '100vh',\n width: '100%',\n },\n row: {\n cursor: 'pointer',\n border: 'none',\n },\n fiberManualRecordIcon: {\n width: 8,\n height: 8,\n marginRight: theme.spacing(0.75),\n },\n moreContainer: {\n display: 'flex',\n width: '100%',\n justifyContent: 'end',\n },\n notInterestedIcon: {\n // @ts-ignore\n color: theme.colors.gray1,\n },\n dialogWidgetName: {\n color: theme.palette.error.main,\n },\n textField: {\n width: 400,\n },\n duplicateInstruction: {\n marginBottom: theme.spacing(2),\n },\n onlyShownForSr: {\n overflow: 'hidden',\n height: 0,\n width: 0,\n },\n}));\n\nexport default WidgetsTab;\n","import { defineFetch } from 'resift';\n\nconst makeGetWidgetLayout = defineFetch({\n displayName: 'Update Widget Layout',\n make: (widgetLayoutId: string) => ({\n request: () => ({ http }) =>\n http({\n method: 'GET',\n route: `/homepage-layouts/${widgetLayoutId}`,\n }),\n }),\n});\n\nexport default makeGetWidgetLayout;\n","import { defineFetch } from 'resift';\nimport { WidgetLayoutCreateOrUpdateRequest } from 'pages/Homepage/typings';\n\nconst makeUpdateWidgetLayout = defineFetch({\n displayName: 'Update Widget Layout',\n share: {\n namespace: 'widget layout',\n },\n make: (widgetLayoutId: string) => ({\n request: (data: WidgetLayoutCreateOrUpdateRequest) => ({ http }) =>\n http({\n method: 'PUT',\n route: `/homepage-layouts/${widgetLayoutId}`,\n data,\n }),\n }),\n});\n\nexport default makeUpdateWidgetLayout;\n","import { defineFetch } from 'resift';\nimport { WidgetLayoutCreateOrUpdateRequest } from 'pages/Homepage/typings';\n\nconst makeCreateWidgetLayout = defineFetch({\n displayName: 'Create a Widget Layout',\n make: () => ({\n request: (data: WidgetLayoutCreateOrUpdateRequest) => ({ http }) =>\n http({\n method: 'POST',\n route: '/homepage-layouts',\n data,\n }),\n }),\n});\n\nconst createWidgetLayout = makeCreateWidgetLayout();\n\nexport default createWidgetLayout;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport SearchIcon from '@material-ui/icons/Search';\n\ninterface Props {\n numberOfWidgets: number;\n}\n\nfunction LayoutReference({ numberOfWidgets }: Props) {\n const classes = useStyles();\n const numberArray = Array(numberOfWidgets).fill(null);\n\n return (\n
\n
\n \n Search Bar\n
\n
\n {numberArray.map((_, index) => (\n
\n
Position {index + 1}
\n
\n ))}\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n const boxBackground = '#E0E6EF';\n const borderRadius = theme.spacing(0.5);\n\n return {\n root: {\n width: '100%',\n },\n searchBar: {\n backgroundColor: boxBackground,\n marginBottom: theme.spacing(),\n borderRadius,\n height: 26,\n display: 'flex',\n alignItems: 'center',\n },\n searchIcon: {\n fontSize: 16,\n marginLeft: theme.spacing(0.75),\n marginRight: theme.spacing(0.5),\n },\n block: {\n backgroundColor: boxBackground,\n flex: '0 1 calc(33.333% - 5.4px)',\n borderRadius,\n height: 96,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n positionText: {\n backgroundColor: theme.palette.common.white,\n borderRadius,\n textAlign: 'center',\n padding: theme.spacing(0.5),\n },\n blocksContainer: {\n display: 'flex',\n gap: `${theme.spacing()}px`,\n flexWrap: 'wrap',\n },\n };\n});\n\nexport default LayoutReference;\n","import React, { useState, useMemo } from 'react';\nimport _sortBy from 'lodash/sortBy';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport TextField from '@material-ui/core/TextField';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { Widget } from 'pages/Homepage/typings';\n\ninterface Props {\n availableWidgets: Array;\n onSelectWidget: (widget: Widget) => void;\n}\n\nfunction WidgetToLayoutSelector({ availableWidgets, onSelectWidget }: Props) {\n const classes = useStyles();\n const [filteredWidgets, setFilteredWidgets] = useState(availableWidgets);\n\n const handleSearch = (e: React.ChangeEvent) => {\n e.preventDefault();\n const value = e.currentTarget.value.toLowerCase() || '';\n setFilteredWidgets(availableWidgets.filter(w => w.name.toLowerCase().includes(value)));\n };\n\n const filteredWidgetsSortByName = useMemo(() => _sortBy(filteredWidgets, 'name'), [\n filteredWidgets,\n ]);\n\n return (\n
\n \n\n
\n {filteredWidgetsSortByName.map((item, i) => (\n onSelectWidget(item)} key={`${item.name}-${i}`}>\n {item.name}\n \n ))}\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n minWidth: 300,\n maxHeight: 478,\n padding: theme.spacing(),\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n },\n search: {\n width: '100%',\n },\n items: {\n flex: '1 1 auto',\n overflow: 'auto',\n },\n}));\n\nexport default WidgetToLayoutSelector;\n","import React, { useState, useEffect } from 'react';\nimport _partition from 'lodash/partition';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Formik, Form } from 'formik';\nimport { useStatus, useData, isLoading, isNormal } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\nimport makeUpdateWidgetLayout from 'fetches/homepageWidgets/makeUpdateWidgetLayout';\nimport createWidgetLayout from 'fetches/homepageWidgets/createWidgetLayout';\nimport { setWidgets } from 'store/homepageWidgets';\nimport showSnackbar from 'helpers/showSnackbar';\nimport getHostName from 'helpers/getHostName';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { SortableContainer, SortableElement, SortableHandle, arrayMove } from 'react-sortable-hoc';\nimport ReorderIcon from '@material-ui/icons/DragHandle';\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 IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\nimport Button from '@material-ui/core/Button';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Popover from '@material-ui/core/Popover';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport PageTitle from 'components/Page/PageTitle';\nimport PageFormToolbar from 'components/Page/newComponents/PageFormToolbar';\nimport SaveButton from 'components/Page/SaveButton';\nimport CancelButton from 'components/Page/CancelButton';\nimport LoadingButton from 'atoms/LoadingButton';\nimport LayoutReference from './LayoutReference';\nimport WidgetToLayoutSelector from './WidgetToLayoutSelector';\nimport { Widget, WidgetOnLayout } from 'pages/Homepage/typings';\nimport { PREVIEW_PARAM_NAME } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\ninterface Props {\n widgetsOnDefaultLayout: Array;\n}\n\nfunction LayoutTab({ widgetsOnDefaultLayout: _widgetsOnDefaultLayout }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n const widgetsData: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgets']),\n );\n const dispatch = useDispatch();\n const updateDefaultWidgetLayout = makeUpdateWidgetLayout('default');\n const updateDefaultWidgetLayoutStatus = useStatus(updateDefaultWidgetLayout);\n const previewLayoutData = useData(createWidgetLayout);\n const previewLayoutCreateStatus = useStatus(createWidgetLayout);\n const prevPreviewLayoutData = usePrevious(previewLayoutData);\n const [widgetsOnLayout, restOfWidgets] = _partition(widgetsData, '_isInDefaultLayout');\n const [widgetOptions, setWidgetOptions] = useState(restOfWidgets);\n const widgetsOnDefaultLayout = _widgetsOnDefaultLayout.map(w => ({\n ...w,\n ...widgetsOnLayout.find(widget => widget.id === w.id),\n })) as Array;\n const clientSubdomain = useSelector((state: any) => state.client.subdomain);\n const hostName = getHostName();\n\n const [\n widgetSelectorAnchorEl,\n setWidgetSelectorAnchorEl,\n ] = React.useState(null);\n\n const widgetSelectorOpen = Boolean(widgetSelectorAnchorEl);\n const widgetSelectorId = widgetSelectorOpen ? 'widget-selector' : undefined;\n\n // @ts-ignore: incorrect typing interpretation\n const SortableHandleElem = SortableHandle(({ className, value }) => (\n \n ));\n\n const toggleOpenWidgetSelector = (event: React.MouseEvent) => {\n analytics.track('Add Widget Clicked', {\n category: 'AD - Homepage',\n });\n\n widgetSelectorAnchorEl\n ? setWidgetSelectorAnchorEl(null)\n : setWidgetSelectorAnchorEl(event.currentTarget);\n };\n\n showSnackbar({\n status: updateDefaultWidgetLayoutStatus,\n message: 'Successfully updated your widget layout.',\n variant: 'success',\n errorMessage: 'An error occurred while saving your widget layout.',\n });\n\n useEffect(() => {\n if (isNormal(previewLayoutCreateStatus) && prevPreviewLayoutData !== previewLayoutData) {\n window.open(\n `https://${clientSubdomain}.${hostName}.com?${PREVIEW_PARAM_NAME}=${previewLayoutData.id}`,\n '_blank',\n );\n }\n }, [prevPreviewLayoutData, previewLayoutData, previewLayoutCreateStatus]);\n\n return (\n {}}>\n {props => {\n const { values, setFieldValue, resetForm, dirty } = props;\n const { draftWidgetsOnLayout } = values;\n\n const handleRemoveItem = (itemValue: string) => {\n setFieldValue(\n 'draftWidgetsOnLayout',\n draftWidgetsOnLayout.filter(item => item.name !== itemValue),\n );\n const item = draftWidgetsOnLayout.find(item => item.name === itemValue) as Widget;\n setWidgetOptions([...widgetOptions, item]);\n };\n\n // @ts-ignore: incorrect typing interpretation\n const SortableItem = SortableElement(({ value }) => {\n return (\n w.name).includes(value)}\n timeout={250}\n data-cy=\"sortable-item\"\n >\n
\n {/* @ts-ignore: incorrect typing interpretation */}\n \n
\n \n {value}\n \n
\n
\n handleRemoveItem(value)}\n className={classes.removeCircleIconButton}\n >\n \n \n
\n
\n \n );\n });\n\n // @ts-ignore: incorrect typing interpretation\n const SortableList = SortableContainer(({ items }) => {\n return (\n
\n {items.map((value: any, index: number) => (\n // @ts-ignore: incorrect typing interpretation\n \n ))}\n
\n );\n });\n\n const handleSortEnd = ({ oldIndex, newIndex }: any) => {\n const updatedWidgetsLayout = arrayMove(draftWidgetsOnLayout, oldIndex, newIndex);\n setFieldValue('draftWidgetsOnLayout', updatedWidgetsLayout);\n };\n\n const handleAddWidgetToLayout = (item: Widget) => {\n setFieldValue('draftWidgetsOnLayout', [...draftWidgetsOnLayout, item]);\n setWidgetOptions(widgetOptions.filter(option => option.name !== item.name));\n setWidgetSelectorAnchorEl(null);\n };\n\n const widgetLayoutRequest = values.draftWidgetsOnLayout.map(l => ({ id: l.id }));\n\n const handleSave = () => {\n dispatch(\n updateDefaultWidgetLayout({\n widgets: widgetLayoutRequest,\n }),\n );\n\n resetForm({ values });\n dispatch(\n setWidgets([\n ...values.draftWidgetsOnLayout.map(w => ({ ...w, _isInDefaultLayout: true })),\n ...widgetOptions.map(w => ({ ...w, _isInDefaultLayout: false })),\n ]),\n );\n };\n\n const handleCreateWidgetPreview = () => {\n analytics.track('Preview Layout Clicked', {\n category: 'AD - Homepage',\n });\n\n dispatch(createWidgetLayout({ widgets: widgetLayoutRequest }));\n };\n\n return (\n
\n \n \n Use the list below to select the widgets that you would like to have visible on\n your homepage. Use the Preview Layout button to preview your homepage before\n releasing it to your end users.\n \n\n \n If you choose to not add any widgets to your layout, the Sift homepage will\n display a larger search bar without the widget area displayed.\n \n \n }\n />\n
\n \n Layout Reference}\n action={\n \n }\n />\n \n \n \n \n \n Widget List (6 Max)}\n action={\n
\n \n
\n = 6}\n >\n Add Widget\n \n
\n
\n\n \n \n \n
\n }\n />\n \n
\n {draftWidgetsOnLayout.map((_, i) => (\n \n {i + 1}\n \n ))}\n
\n \n
\n
\n
\n \n \n handleSave()} />\n \n \n );\n }}\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n form: {\n maxWidth: 'calc(100vw - 300px)',\n },\n dragHandleIcon: {\n marginLeft: theme.spacing(),\n cursor: 'move',\n // @ts-ignore\n color: theme.colors.gray1,\n },\n fieldNameContainer: {\n flex: 1,\n },\n fieldName: {\n marginLeft: theme.spacing(2),\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 // @ts-ignore\n color: theme.colors.gray1,\n },\n cards: {\n display: 'flex',\n gap: `${theme.spacing(3)}px`,\n width: 'calc(100vw - 300px)',\n maxWidth: '90%',\n paddingRight: theme.spacing(2),\n },\n card: {\n flex: 1,\n minWidth: 450,\n },\n cardContent: {\n display: 'flex',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n // @ts-ignore\n backgroundColor: theme.colors.grayBlue,\n marginBottom: theme.spacing(),\n },\n widgetSelector: {\n position: 'relative',\n display: 'inline',\n zIndex: 'auto',\n },\n number: {\n height: 40,\n marginBottom: theme.spacing(),\n display: 'flex',\n alignItems: 'center',\n },\n numbers: {\n marginRight: theme.spacing(1.5),\n },\n sortableList: {\n flex: 1,\n },\n\n infoIcon: {\n cursor: 'pointer',\n },\n previewButton: {\n marginTop: theme.spacing(),\n },\n}));\n\nexport default LayoutTab;\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useData, useStatus, isNormal, isLoading } from 'resift';\nimport makeGetWidgetLayout from 'fetches/homepageWidgets/makeGetWidgetLayout';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport LayoutTab from './LayoutTab';\n\nfunction Container() {\n const dispatch = useDispatch();\n const getDefaultWidgetLayout = makeGetWidgetLayout('default');\n const getWidgetLayoutStatus = useStatus(getDefaultWidgetLayout);\n const defaultWidgetLayout = useData(getDefaultWidgetLayout);\n\n useEffect(() => {\n dispatch(getDefaultWidgetLayout());\n }, []);\n\n if (isLoading(getWidgetLayoutStatus)) {\n return ;\n }\n\n if (!isNormal(getWidgetLayoutStatus)) {\n return
Something went wrong
;\n }\n\n return ;\n}\n\nexport default Container;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useParams } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setWidgetTypes, setWidgets } from 'store/homepageWidgets';\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 CircularProgress from '@material-ui/core/CircularProgress';\nimport WidgetsTab from './tabs/WidgetsTab';\nimport LayoutTab from './tabs/LayoutTab';\nimport { HOME_URL, HOMEPAGE_URL } from 'components/Router/consts';\nimport { WidgetType, Widget } from 'pages/Homepage/typings';\n\nconst tabTypes = {\n WIDGETS: 'widgets',\n LAYOUT: 'layouts',\n};\n\ninterface Props {\n widgetTypes: Array;\n widgets: Array;\n}\n\nfunction Homepage({ widgetTypes, widgets }: Props) {\n const history = useHistory();\n const dispatch = useDispatch();\n const { tab } = useParams<{ tab?: string }>();\n const currentTab = tab || tabTypes.WIDGETS;\n const widgetTypesInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n const widgetsInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgets']),\n );\n\n useEffect(() => {\n document.title = 'Homepage';\n }, []);\n\n useEffect(() => {\n dispatch(setWidgetTypes(widgetTypes));\n dispatch(setWidgets(widgets));\n }, []);\n\n if (!widgetTypesInRedux || !widgetsInRedux) {\n return ;\n }\n\n const handleTabChange = (tabValue: string) => {\n history.push(`${HOME_URL}${HOMEPAGE_URL}/${tabValue}`);\n };\n\n const tabContentByType = {\n [tabTypes.WIDGETS]: ,\n [tabTypes.LAYOUT]: ,\n };\n\n return (\n \n \n \n handleTabChange(value)}>\n \n \n \n {tabContentByType[currentTab]}\n \n );\n}\n\nexport default Homepage;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { isLoading, isNormal, useStatus, useData, combineStatuses } from 'resift';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport getWidgetTypes from 'fetches/homepageWidgets/getWidgetTypes';\nimport getWidgets from 'fetches/homepageWidgets/getWidgets';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Homepage from './Homepage';\nimport { WidgetType, Widget } from 'pages/Homepage/typings';\n\nfunction Container() {\n const dispatch = useDispatch();\n const classes = useStyles();\n const widgetTypesStatus = useStatus(getWidgetTypes);\n const widgetTypesData = useData(getWidgetTypes);\n const widgetsStatus = useStatus(getWidgets);\n const widgetsData = useData(getWidgets);\n const status = combineStatuses(widgetTypesStatus, widgetsStatus);\n const widgetTypesInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n const widgetsInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgets']),\n );\n\n useEffect(() => {\n if (!widgetTypesInRedux) {\n dispatch(getWidgetTypes());\n }\n\n if (!widgetsInRedux) {\n dispatch(getWidgets(true));\n }\n }, []);\n\n if (isLoading(status)) {\n return ;\n }\n\n if (!isNormal(status)) {\n return
Something went wrong.
;\n }\n\n return ;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n loading: {\n display: 'flex',\n margin: 'auto',\n },\n}));\n\nexport default Container;\n","import asyncComponent from 'components/Router/AsyncComponent';\nimport reducer from './reducer';\n\nexport default asyncComponent(() => import('./container'), reducer, 'route_invites');\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';\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 { createContext } from 'react';\n\nexport default createContext(null);\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport VerifiedUserRoundedIcon from '@material-ui/icons/VerifiedUserRounded';\nimport Link from '@material-ui/core/Link';\n\nfunction SecurityNotice() {\n const classes = useStyles();\n const analytics = useAnalytics();\n\n const handleNavigate = () => {\n analytics.track('Data Sync - Learn More About security link Clicked', {\n category: 'AD - Directories',\n });\n };\n\n return (\n \n \n \n We keep your employee data safe and never share your data with third parties by undergoing\n regular security audits and adhering to strict data redundancy, encryption, and segmentation\n policies.{' '}\n \n {' '}\n Learn more about how we keep your data secure\n \n .\n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n maxWidth: 1134,\n minHeight: 76,\n marginBottom: theme.spacing(3),\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n height: 42,\n width: 42,\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(1.25),\n },\n content: {\n maxWidth: 991,\n },\n}));\n\nexport default SecurityNotice;\n","import React, { useContext } from 'react';\nimport { useLocation } from 'react-router';\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 SecurityNotice from 'pages/Directory/Base/SecurityNotice';\n\nimport { AZURE_SOURCE_TYPE_KEY, CHOOSE_SOURCE_TYPE_URL } from 'pages/Directory/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 location = useLocation();\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 const isSourceSelectionPage = location.pathname.includes(CHOOSE_SOURCE_TYPE_URL);\n\n return (\n \n \n \n {progress && (\n \n {progressText}\n \n \n \n \n )}\n {isSourceSelectionPage && }\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.replace(`${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.replace(`${baseUrl}${UPLOAD_CSV_URL}`);\n } else {\n history.replace(`${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 if (value === DEMO_DATA_SOURCE_TYPE_KEY) {\n analytics.track('Data Sync - Demo Data Source Selected', {\n category: 'AD - Directories',\n });\n }\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.replace(`${HOME_URL}${DIRECTORIES_URL}/${directoryId}${SOURCE_URL}/${sourceId}`);\n } else {\n setSourceInfo({ ...sourceInfo, type: sourceType });\n\n history.replace(`${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 { defineFetch } from 'resift';\n\nconst makeGetSourceFileValidationResults = defineFetch({\n displayName: 'Get Source File Validation Results',\n make: (sourceId: string) => ({\n key: [sourceId],\n request: (sourceFileId: string, ignoreErrorsIfMappings?: boolean) => ({ http }) =>\n http({\n method: 'GET',\n route: `/source-files/${sourceFileId}/validation`,\n query: { ignoreErrorsIfMappings },\n }),\n }),\n});\n\nexport default makeGetSourceFileValidationResults;\n","import { defineFetch } from 'resift';\n\ninterface ArgumentTypes {\n isActive: boolean;\n sourceFileId: string;\n}\n\nconst makeUpdateSourceFile = defineFetch({\n displayName: 'Update Source File',\n make: (sourceId: string) => ({\n key: [],\n request: ({ isActive, sourceFileId }: ArgumentTypes) => ({ http }) =>\n http({\n method: 'PUT',\n route: `/source-files/${sourceFileId}`,\n data: {\n isActive,\n },\n }),\n }),\n});\n\nexport default makeUpdateSourceFile;\n","import React, { useEffect } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useDispatch } from 'react-redux';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport makeUpdateSourceFile from 'fetches/makeUpdateSourceFile';\n\nimport Typography from '@material-ui/core/Typography';\nimport CheckCircleRoundedIcon from '@material-ui/icons/CheckCircleRounded';\n\ninterface Props {\n sourceFileId: string | null;\n sourceId: string;\n}\n\nfunction CsvUploadSuccess({ sourceFileId, sourceId }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n const dispatch = useDispatch();\n\n const updateSourceFile = makeUpdateSourceFile(sourceId);\n\n useEffect(() => {\n analytics.track('Data Sync - Success State Dialog Appear', {\n category: 'AD - Directories',\n });\n\n setTimeout(() => {\n sourceFileId && dispatch(updateSourceFile({ isActive: true, sourceFileId }));\n }, 500);\n }, []);\n\n return (\n
\n \n Upload Successful!\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n margin: 'auto',\n },\n icon: {\n color: theme.palette.success.main,\n minHeight: 141,\n minWidth: 141,\n marginBottom: theme.spacing(3),\n },\n}));\n\nexport default CsvUploadSuccess;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Typography from '@material-ui/core/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { Theme } from 'styles/ThemeTyping';\n\nfunction CsvUploadLoading() {\n const classes = useStyles();\n\n return (\n
\n
\n \n Checking Your File...\n \n We’re doing a few checks to ensure your file can be mapped into Sift properly. This may\n take a while depending on the size of the uploaded file.\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n margin: 'auto',\n textAlign: 'center',\n },\n loadingIndicator: {\n color: theme.palette.success.main,\n },\n loadingContainer: {\n maxWidth: 297,\n minHeight: 273,\n margin: 'auto',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n content: {\n color: theme.colors.gray1,\n },\n}));\n\nexport default CsvUploadLoading;\n","import React, { useEffect } from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Typography from '@material-ui/core/Typography';\nimport ErrorRoundedIcon from '@material-ui/icons/ErrorRounded';\nimport WarningRoundedIcon from '@material-ui/icons/WarningRounded';\n\nimport { MappingValidationResult } from 'types/Mapping';\nimport { Theme } from 'styles/ThemeTyping';\n\ninterface Props {\n errors: MappingValidationResult[];\n warnings: MappingValidationResult[];\n}\n\nfunction CsvUploadIssues({ errors, warnings }: Props) {\n const classes = useStyles();\n const analytics = useAnalytics();\n const headerText = errors.length > 0 ? 'Issues Found' : 'Before You Continue';\n const subheadingText =\n errors.length > 0\n ? `We’ve found some issues with your file that require your attention. See below for\n instructions on how to update your file, then upload a new one when you’re ready.`\n : `We wanted to make sure you’ve included everything you need in your file. Read through the warnings below, and upload a new file if there’s any of them that you’d like to address.`;\n\n useEffect(() => {\n if (errors.length > 0) {\n analytics.track('Data Sync - “Issues Found” Dialog Appear', {\n category: 'AD - Directories',\n });\n }\n\n if (!errors.length && warnings.length > 0) {\n analytics.track('Data Sync - “Before You Continue” Dialog Appear', {\n category: 'AD - Directories',\n });\n }\n }, [errors, warnings]);\n\n return (\n
\n {headerText}\n \n {subheadingText}\n \n\n {errors.length > 0 && (\n <>\n \n Errors Found - Must Be Fixed Before Continuing\n \n\n
\n {errors.map((error: MappingValidationResult, index: number) => {\n return (\n
\n \n
\n
\n );\n })}\n
\n \n )}\n\n {warnings.length > 0 && (\n <>\n \n Warnings - Optional but Recommended Fixes\n \n\n
\n {warnings.map((warning: MappingValidationResult, index: number) => {\n return (\n
\n \n
\n
\n );\n })}\n
\n \n )}\n
\n );\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n height: '100%',\n },\n subheading: {\n color: theme.colors.gray1,\n },\n issuesHeader: {\n fontWeight: theme.typography.h4.fontWeight,\n marginBottom: theme.spacing(),\n marginTop: theme.spacing(4),\n },\n errorsContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n error: {\n display: 'flex',\n marginBottom: theme.spacing(),\n },\n errorIcon: {\n marginRight: theme.spacing(),\n marginTop: theme.spacing(1.5),\n color: theme.palette.error.main,\n },\n warningsContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n warning: {\n display: 'flex',\n marginBottom: theme.spacing(),\n },\n warningIcon: {\n marginRight: theme.spacing(),\n marginTop: theme.spacing(1.5),\n color: theme.palette.warning.main,\n },\n}));\n\nexport default CsvUploadIssues;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { isLoading, isNormal } from 'resift';\n\nimport _isEmpty from 'lodash/isEmpty';\nimport _get from 'lodash/get';\nimport _partition from 'lodash/partition';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport Button from '@material-ui/core/Button';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport CsvUploadSuccess from './CsvUploadSuccess';\nimport CsvUploadLoading from './CsvUploadLoading';\nimport CsvUploadIssues from './CsvUploadIssues';\n\nimport { MappingValidationResult } from 'types/Mapping';\n\ninterface Props {\n open: boolean;\n status: number;\n sourceFileId: string | null;\n sourceId: string;\n validationResults: MappingValidationResult[];\n onNext: () => void;\n onNewUpload: () => void;\n}\n\nfunction CsvAnalysisDialog({\n open,\n status,\n sourceFileId,\n sourceId,\n validationResults,\n onNext,\n onNewUpload,\n}: Props) {\n const classes = useStyles();\n const [errors, warnings] = _partition(validationResults, ['type', 'error']);\n const disabled = !_isEmpty(errors);\n\n if (isLoading(status)) {\n return (\n \n
\n \n
\n
\n );\n }\n\n if (isNormal(status) && _isEmpty(validationResults)) {\n return (\n \n
\n \n
\n
\n );\n }\n\n return (\n \n
\n \n
\n \n \n
\n \n
\n \n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n minWidth: 600,\n height: 740,\n padding: 24,\n display: 'flex',\n flexDirection: 'column',\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n maxHeight: 24,\n marginTop: 'auto',\n position: 'sticky',\n bottom: 0,\n },\n}));\n\nexport default CsvAnalysisDialog;\n","import React, { useState, useContext, useEffect } 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 { useData, useStatus, isNormal, combineStatuses } from 'resift';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useSnackbar } from 'notistack';\nimport classNames from 'classnames';\nimport { fetchSignedUpload, createSourceFile } from 'store/sources';\nimport makeGetSource from 'fetches/makeGetSource';\nimport makeGetSourceFileValidationResults from 'fetches/makeGetSourceFileValidationResults';\nimport makeUpdateSourceFile from 'fetches/makeUpdateSourceFile';\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 CsvAnalysisDialog from './CsvAnalysisDialog';\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 } = sourceContext;\n const { directoryId, sourceId, isPrimary } = sourceInfo;\n const getSource = makeGetSource(sourceId);\n const updateSourceFile = makeUpdateSourceFile(sourceId);\n const updateSourceFileStatus = useStatus(updateSourceFile);\n const getSourceFileValidationResults = makeGetSourceFileValidationResults(sourceId);\n const sourceFileValidationResults = useData(getSourceFileValidationResults);\n const sourceFileValidationResultsFetchStatus = useStatus(getSourceFileValidationResults);\n\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 [csvIssuesDialogOpen, setCsvIssuesDialogOpen] = useState(false);\n const [fileUploadStatus, setFileUploadStatus] = useState(2);\n const [sourceFileId, setSourceFileId] = useState(null);\n const status = combineStatuses(fileUploadStatus, sourceFileValidationResultsFetchStatus);\n const source = useSource(sourceId);\n const isOptedOutCsv: boolean = _get(sourceInfo, ['source', 'setupProgress', 'csvOptOut'], false);\n\n const disableNextButton = waiting || ((!file || !!errorText) && !isOptedOutCsv);\n const baseUrl = makeSourceCreateBaseUrl(directoryId, sourceId);\n\n useEffect(() => {\n if (isNormal(updateSourceFileStatus)) {\n setTimeout(() => {\n history.push(`${baseUrl}${MAP_ATTRIBUTES_URL}`);\n }, 1000);\n }\n }, [updateSourceFileStatus]);\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 setCsvIssuesDialogOpen(true);\n setWaiting(true);\n setDisableOptOut(true);\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 const sourceFileResponse = await dispatch(\n createSourceFile({\n sourceId,\n key: signedUpload.key,\n size: file.size,\n contentType: 'text/csv',\n name: file.name,\n isActive: false,\n }),\n );\n\n setFileUploadStatus(1);\n const fileId = _get(sourceFileResponse, ['body', 'id']);\n setSourceFileId(fileId);\n await dispatch(getSourceFileValidationResults(fileId, true));\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 const handleContinue = async () => {\n analytics.track('Data Sync - Continue Button Clicked in Dialog', {\n category: 'AD - Directories',\n });\n\n if (isOptedOutCsv) {\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 sourceFileId && (await dispatch(updateSourceFile({ isActive: true, sourceFileId })));\n };\n\n const handleSetFile = (file: any) => {\n setFile(file);\n };\n\n const handleNewUpload = () => {\n analytics.track('Data Sync - Upload New CSV Button Clicked in Dialog', {\n category: 'AD - Directories',\n });\n\n setCsvIssuesDialogOpen(false);\n setFile(undefined);\n setFileUploadStatus(2);\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}\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 && !csvOptOut && 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","import asyncComponent from 'components/Router/AsyncComponent';\n\nexport default asyncComponent(() => import('./container'));\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\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 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 pageTypeIsSyncManaged: boolean;\n isOpenRolePageType: boolean;\n onClick: () => void;\n}\n\nfunction NoPagesView({\n className,\n migrationInProgress = false,\n pageTypeIsSyncManaged,\n isOpenRolePageType,\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\n const NewPagesButton = (\n \n
\n \n {buttonTitle}\n \n
\n \n );\n\n return (\n \n \n {icon}\n {title}\n \n {subtitle}\n \n {!pageTypeIsSyncManaged ? (\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 showMemberCount: boolean;\n onDelete: () => void;\n handleSelectEntity: Dispatch>;\n}\n\nfunction PagesRow({\n deletable,\n classes,\n page,\n showMemberCount,\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 {showMemberCount && {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';\nimport { PageType } from 'helpers/typings';\nimport { ATTRIBUTE_PAGE_TYPE, OPEN_ROLE_PAGE_TYPE } from 'helpers/consts';\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 pageType: PageType;\n pagesData: Types.EntitySearchResult;\n pageTypeIsSyncManaged: boolean;\n onDelete: () => void;\n onSelectEntity: Dispatch>;\n onSetCreateModalOpen: (status: boolean) => void;\n}\n\nfunction PagesTable({\n pageType,\n pagesData,\n pageTypeIsSyncManaged,\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 const shouldDisableNewPagesButton = pageTypeIsSyncManaged || pageType === OPEN_ROLE_PAGE_TYPE;\n\n const NewPagesButton = (\n onSetCreateModalOpen(true)}\n className={classes.marginLeft}\n variant={pageTypeIsSyncManaged ? 'outlined' : 'contained'}\n color=\"secondary\"\n >\n New Pages\n \n );\n\n return (\n \n \n \n \n \n {!shouldDisableNewPagesButton ? (\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 {pageType === ATTRIBUTE_PAGE_TYPE && (\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';\nimport { OPEN_ROLE_PAGE_TYPE } from 'helpers/consts';\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';\nimport getPageType from 'helpers/getPageType';\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 pageTypeIsSyncManaged = _get(entityType, '_isSyncManaged', false);\n const pageType = getPageType(entityType);\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 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 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\nimport PageTitle from 'components/Page/PageTitle';\nimport CustomToolbar from './components/CustomToolbar';\nimport CustomGridPanel from './components/CustomGridPanel';\nimport { attributeColumns, attributeRows } from './components/AttributeTableData';\nimport { DataGrid } from '@material-ui/data-grid';\nimport IeSucksBanner from 'molecules/IeSucksBanner';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nfunction Attributes({ formats, globalConfig, classes, parentFields, profileAttributes }) {\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 \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 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 * 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, { 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 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 display: 'flex',\n alignItems: 'center',\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';\nimport { OPEN_ROLE_TYPE_KEY } from 'helpers/consts';\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 || this.props.typeKey === OPEN_ROLE_TYPE_KEY) && (\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 { 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 _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 getPageType from 'helpers/getPageType';\nimport { HOME_URL, DYNAMIC_PAGES_URL } from 'components/Router/consts';\nimport { INDEPENDENT_PAGE_TYPE, ATTRIBUTE_PAGE_TYPE, OPEN_ROLE_PAGE_TYPE } from 'helpers/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 pageType = getPageType(entityType);\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 />\n handleTabChange(value)} value={tabValue}>\n \n \n \n {pageType === ATTRIBUTE_PAGE_TYPE && (\n \n )}\n {pageType !== OPEN_ROLE_PAGE_TYPE && (\n \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 { 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 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 React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst RichTextWidgetIcon: React.ComponentType = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default RichTextWidgetIcon;\n","import React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst MyTeamWidgetIcon: 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\nexport default MyTeamWidgetIcon;\n","import * as React from 'react';\nimport SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nconst PeopleListWidgetIcon: 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\nexport default PeopleListWidgetIcon;\n","import React, { useMemo } from 'react';\nimport { Link } from 'react-router-dom';\nimport _get from 'lodash/get';\nimport _keyBy from 'lodash/keyBy';\nimport classnames from 'classnames';\nimport { useLocation } from 'react-router';\nimport { useSelector } from 'react-redux';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport RichTextWidgetIcon from 'components/Icons/RichTextWidget';\nimport MyTeamWidgetIcon from 'components/Icons/MyTeamWidget';\nimport PeopleListWidgetIcon from 'components/Icons/PeopleListWidgetIcon';\nimport { WidgetType } from 'pages/Homepage/typings';\nimport {\n RICH_TEXT_TYPE_ID,\n MY_TEAM_TYPE_ID,\n PERSONS_LISTS_BY_DATE_TYPE_ID,\n} from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\ninterface Props {\n className?: string;\n itemName: string;\n link?: boolean;\n onClick?: (title: string) => void;\n}\n\nfunction WidgetTypeCard({ className, itemName, link, onClick }: Props) {\n const classes = useStyles();\n const location = useLocation();\n const widgetTypesArray: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n\n const widgetTypes = useMemo(() => _keyBy(widgetTypesArray, 'id'), [widgetTypesArray]);\n\n const widgetTypeLookup: {\n [itemName: string]: { title: string; Icon: any; description: string; link: string };\n } = {\n [RICH_TEXT_TYPE_ID]: {\n title: widgetTypes[RICH_TEXT_TYPE_ID].name,\n Icon: RichTextWidgetIcon,\n link: RICH_TEXT_TYPE_ID,\n description: _get(\n widgetTypes,\n [RICH_TEXT_TYPE_ID, 'description'],\n 'Use Rich Text to display flexible and customizable text content on the homepage.',\n ),\n },\n [MY_TEAM_TYPE_ID]: {\n title: widgetTypes[MY_TEAM_TYPE_ID].name,\n Icon: MyTeamWidgetIcon,\n link: MY_TEAM_TYPE_ID,\n description: _get(\n widgetTypes,\n [MY_TEAM_TYPE_ID, 'description'],\n 'Display a person’s team members, optionally including dotted line relationships.',\n ),\n },\n [PERSONS_LISTS_BY_DATE_TYPE_ID]: {\n title: widgetTypes[PERSONS_LISTS_BY_DATE_TYPE_ID].name,\n Icon: PeopleListWidgetIcon,\n link: PERSONS_LISTS_BY_DATE_TYPE_ID,\n description: _get(\n widgetTypes,\n [PERSONS_LISTS_BY_DATE_TYPE_ID, 'description'],\n 'Showcase new hires, work anniversaries, birthdays, or any other date-based milestone',\n ),\n },\n };\n\n const item = widgetTypeLookup[itemName];\n const Icon = _get(item, 'Icon');\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 onClick && onClick(item.link)}\n >\n \n \n {item.title}\n \n {Icon && }\n \n {item.description}\n \n \n \n );\n const cardLink = `${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: 250,\n maxHeight: 250,\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 fontSize: theme.typography.caption.fontSize,\n },\n}));\n\nexport default WidgetTypeCard;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport WidgetTypeCard from 'pages/Homepage/components/WidgetTypeCard';\n\nimport {\n RICH_TEXT_TYPE_ID,\n MY_TEAM_TYPE_ID,\n PERSONS_LISTS_BY_DATE_TYPE_ID,\n} from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\nfunction WidgetSelectType() {\n const classes = useStyles();\n const analytics = useAnalytics();\n\n const handleWidgetCardSelect = (widgetTypeId: string) => {\n if (widgetTypeId === MY_TEAM_TYPE_ID) {\n analytics.track('My Team widget type clicked', {\n category: 'AD - Homepage',\n });\n }\n\n if (widgetTypeId === RICH_TEXT_TYPE_ID) {\n analytics.track('Rich Text widget type clicked', {\n category: 'AD - Homepage',\n });\n }\n\n if (widgetTypeId === PERSONS_LISTS_BY_DATE_TYPE_ID) {\n analytics.track('People List by Date widget type clicked', {\n category: 'AD - Homepage',\n });\n }\n };\n\n return (\n
\n \n \n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n cards: {\n display: 'flex',\n },\n}));\n\nexport default WidgetSelectType;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n count: number;\n maxCount: number;\n}\n\nfunction CharCount({ count, maxCount }: Props) {\n const classes = useStyles();\n\n return (\n
\n {count}/{maxCount}\n
\n );\n}\n\nconst useStyles = makeStyles(() => ({\n root: { height: 18, display: 'flex', justifyContent: 'flex-end' },\n}));\n\nexport default CharCount;\n","import React, { useEffect, useState } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useLocation, useHistory } from 'react-router';\nimport { Formik, Form } from 'formik';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useData } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\nimport createWidget from 'fetches/homepageWidgets/createWidget';\nimport getWidgets from 'fetches/homepageWidgets/getWidgets';\nimport TextField from '@material-ui/core/TextField';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\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 WidgetTypeCard from 'pages/Homepage/components/WidgetTypeCard/WidgetTypeCard';\nimport CharCount from 'atoms/CharCount';\nimport { Widget, WidgetType } from 'pages/Homepage/typings';\nimport { HOME_URL, WIDGETS_URL } from 'components/Router/consts';\nimport { MAX_CHAR_COUNT_NAME } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\nfunction WidgetSetName() {\n const classes = useStyles();\n const location = useLocation();\n const history = useHistory();\n const dispatch = useDispatch();\n const widgets: Array = useSelector(state => _get(state, ['homepageWidgets', 'widgets']));\n const widgetNames = !widgets.length ? [] : widgets.map(w => w.name);\n const widgetTypes: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n const newWidget = useData(createWidget);\n const prevNewWidget = usePrevious(newWidget);\n const [userHasTouchedTheForm, setUserHasTouchedTheForm] = useState(false);\n\n useEffect(() => {\n if (newWidget === prevNewWidget) {\n return;\n }\n\n history.push(`${HOME_URL}${WIDGETS_URL}/${newWidget.id}`);\n }, [newWidget]);\n\n if (\n location.pathname === `${HOME_URL}${WIDGETS_URL}/create/types` ||\n location.pathname === `${HOME_URL}${WIDGETS_URL}/create/types/`\n ) {\n return null;\n }\n\n const widgetTypeId = location.pathname\n .split('/')\n .filter(Boolean)\n .pop() as string;\n\n if (!widgetTypes.map(wt => wt.id).includes(widgetTypeId)) {\n return null;\n }\n\n const handleSave = async (name: string) => {\n await dispatch(\n createWidget({\n name,\n widgetTypeId,\n }),\n );\n dispatch(getWidgets(true));\n };\n\n const handleCancel = () => {\n history.push(`${HOME_URL}${WIDGETS_URL}/create/types`);\n };\n\n const handleValidate = (values: any) => {\n let errors: any = {};\n const name = _get(values, 'name');\n\n if (!name.length) {\n errors.name = 'Name is required';\n }\n\n if (widgetNames.includes(name)) {\n errors.name = 'This name already exists, please use a different name';\n }\n\n if (name.length > MAX_CHAR_COUNT_NAME) {\n errors.name = `Name cannot be more than ${MAX_CHAR_COUNT_NAME} characters`;\n }\n\n return errors;\n };\n\n return (\n {}} validate={handleValidate}>\n {props => {\n const { values, setFieldValue, errors } = props;\n const widgetName = _get(values, 'name', '');\n\n return (\n
\n \n \n
\n Widget Name\n {\n if (!userHasTouchedTheForm) {\n setUserHasTouchedTheForm(true);\n }\n\n setFieldValue('name', e.target.value);\n }}\n InputLabelProps={{\n classes: {\n root: classes.inputLabel,\n focused: classes.cssFocused,\n },\n }}\n inputProps={{\n maxLength: MAX_CHAR_COUNT_NAME,\n 'aria-label': 'widget name',\n }}\n helperText={errors.name && errors.name}\n />\n \n
\n
\n
\n\n \n\n }>\n \n handleSave(widgetName)}\n disabled={!_isEmpty(errors) || !widgetName.length}\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 row: {\n marginBottom: theme.spacing(3),\n },\n inputLabel: {\n '&$cssFocused': {\n color: theme.palette.secondary.main,\n },\n },\n cssFocused: {},\n card: {\n flexGrow: 1,\n maxWidth: 900,\n marginRight: theme.spacing(3),\n },\n}));\n\nexport default WidgetSetName;\n","import _compact from 'lodash/compact';\nimport { RichTextNode } from 'pages/Homepage/typings';\n\nfunction getCount(children: Array) {\n const textItems: Array = [];\n\n function getRichTextCharCount(children: Array) {\n children.forEach(c => {\n if (!c.children) {\n // @ts-ignore\n textItems.push(c.text);\n } else if (c.children.length > 1) {\n getRichTextCharCount(c.children);\n } else if (c.children[0].children) {\n getRichTextCharCount(c.children[0].children);\n } else {\n // @ts-ignore\n textItems.push(c.children[0].text);\n }\n });\n }\n\n getRichTextCharCount(children);\n\n return _compact(textItems).reduce((acc, item) => {\n acc = acc + item.length;\n\n return acc;\n }, 0);\n}\n\nexport default getCount;\n","import { defineFetch } from 'resift';\nimport { WidgetUpdateRequest } from 'pages/Homepage/typings';\n\nconst makeUpdateWidget = defineFetch({\n displayName: 'Update Widget',\n share: {\n namespace: 'widgets',\n },\n make: (widgetId: string) => ({\n request: (data: WidgetUpdateRequest) => ({ http }) =>\n http({\n method: 'PUT',\n route: `/widgets/${widgetId}`,\n data,\n }),\n }),\n});\n\nexport default makeUpdateWidget;\n","import { Editor, Transforms, Path, Range, Element } from 'slate';\nimport { ReactEditor } from 'slate-react';\n\nexport const insertLink = (editor: ReactEditor, { href, text }: { href: string; text: string }) => {\n if (!href) return;\n\n const { selection } = editor;\n const link = {\n type: 'link',\n href,\n children: [{ text }],\n };\n\n if (selection) {\n const [parent, parentPath] = Editor.parent(editor, selection.focus.path);\n // @ts-ignore\n if (parent.type === 'link') {\n removeLink(editor);\n }\n\n if (editor.isVoid(parent)) {\n Transforms.insertNodes(\n editor,\n // @ts-ignore\n { type: 'paragraph', children: [link] },\n {\n at: Path.next(parentPath),\n select: true,\n },\n );\n } else if (Range.isCollapsed(selection)) {\n Transforms.insertNodes(editor, link, { select: true });\n } else {\n Transforms.wrapNodes(editor, link, { split: true });\n }\n } else {\n // @ts-ignore\n Transforms.insertNodes(editor, { type: 'paragraph', children: [link] });\n }\n};\n\nexport const removeLink = (editor: ReactEditor) => {\n Transforms.unwrapNodes(editor, {\n match: n =>\n !Editor.isEditor(n) &&\n Element.isElement(n) &&\n // @ts-ignore\n n.type === 'link',\n });\n};\n\nconst isLink = (editor: ReactEditor) => {\n // @ts-ignore\n const [match] = Editor.nodes(editor, {\n // @ts-ignore\n match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === 'link',\n });\n\n return !!match;\n};\n\nexport const withLinks = (editor: ReactEditor) => {\n // (note - pearl) This ensures 'split' when creating links won't split up text on the same line\n const { isInline } = editor;\n editor.isInline = (element: any) => (element.type === 'link' ? true : isInline(element));\n\n // (note - pearl) This ensures entering the next line would exit the current link\n const { insertBreak } = editor;\n editor.insertBreak = () => {\n const { selection } = editor;\n if (selection) {\n if (isLink(editor)) {\n Transforms.insertNodes(editor, {\n children: [{ text: '' }],\n });\n\n return;\n }\n }\n\n insertBreak();\n };\n\n // (note - pearl) This ensures deleting links would remove them (instead of leaving a link with\n // empty text content)\n const { deleteBackward } = editor;\n editor.deleteBackward = () => {\n const { selection } = editor;\n if (selection) {\n if (isLink(editor)) {\n removeLink(editor);\n }\n }\n\n deleteBackward('character');\n };\n\n return editor;\n};\n","import { Editor, Element as SlateElement, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\n\nexport const isMarkActive = (editor: ReactEditor, format: any) => {\n const marks = Editor.marks(editor);\n // @ts-ignore\n return marks ? marks[format] === true : false;\n};\n\nexport const toggleMark = (editor: ReactEditor, format: any) => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\nexport const isBlockActive = (editor: ReactEditor, format: any) => {\n // @ts-ignore\n const [match] = Editor.nodes(editor, {\n // @ts-ignore\n match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format,\n });\n\n return !!match;\n};\n\nconst list_types = ['orderedList', 'unorderedList'];\n\nexport const toggleBlock = (editor: ReactEditor, format: any) => {\n const isActive = isBlockActive(editor, format);\n const isList = list_types.includes(format);\n\n Transforms.unwrapNodes(editor, {\n // @ts-ignore\n match: n => list_types.includes(!Editor.isEditor(n) && SlateElement.isElement(n) && n.type),\n split: true,\n });\n\n Transforms.setNodes(editor, {\n // @ts-ignore\n type: isActive ? 'paragraph' : isList ? 'list-item' : format,\n });\n\n if (isList && !isActive) {\n Transforms.wrapNodes(editor, {\n // @ts-ignore\n type: format,\n children: [],\n });\n }\n};\n","import { Range } from 'slate';\nimport { toggleBlock } from './utilities';\n\nconst withDeleteEmptyBlock = (editor: any) => {\n const { deleteBackward } = editor;\n\n editor.deleteBackward = (unit: any) => {\n const { selection } = editor;\n\n if (\n selection &&\n selection.focus.offset === 0 &&\n selection.anchor.offset === 0 &&\n Range.isCollapsed(selection)\n ) {\n const node = editor.children[selection.anchor.path[0]];\n\n if (node && node.type && node.children.length === 1) {\n toggleBlock(editor, node.type);\n }\n\n deleteBackward(unit);\n } else {\n deleteBackward(unit);\n }\n };\n\n return editor;\n};\n\nexport default withDeleteEmptyBlock;\n","import _omit from 'lodash/omit';\nimport { RichTextNode } from 'pages/Homepage/typings';\n\nconst HEADING_TYPE_KEYS = ['heading_one', 'heading_two', 'heading_three'];\n\n// (note - pearl) This helper is being used for default rich text content,\n// as we do not allow headings in there and will transform them into regular text\nfunction sanitizeHeadingNodes(childrenToTransform: Array) {\n const serialize = (node: RichTextNode): RichTextNode => {\n if (node.children) {\n node.children.map(n => serialize(n));\n }\n\n if (node.type && HEADING_TYPE_KEYS.includes(node.type)) {\n return _omit(node, 'type');\n }\n\n return node;\n };\n\n return childrenToTransform.map(c => serialize(c));\n}\n\nexport default sanitizeHeadingNodes;\n","import { Transforms, Editor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { toggleBlock } from './utilities';\n\nfunction resetRichText(editor: ReactEditor, originalValue: any) {\n // (note - pearl) Select all in the editor\n Transforms.select(editor, {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n });\n\n // (note - pearl) Transform all to paragraph, otherwise delete won't work\n toggleBlock(editor, 'paragraph');\n\n // (note - pearl) Insert empty line at the end so all paths have elements\n Transforms.insertNodes(editor, { children: [{ text: '' }] }, { at: [editor.children.length] });\n\n // (note - pearl) Delete all content\n Transforms.delete(editor, {\n at: {\n anchor: {\n path: [0, 0],\n offset: 0,\n },\n focus: {\n path: [editor.children.length - 1, 0],\n offset: 0,\n },\n },\n });\n\n // (note - pearl) Add original content. insertFragment instead of insertNodes so it's not\n // wrapped in an extra children object on the outside\n Transforms.insertFragment(editor, originalValue, {\n at: [0, 0],\n });\n\n Transforms.deselect(editor);\n}\n\nexport default resetRichText;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction SlateWrapper({ children }: Props) {\n const classes = useStyles();\n\n return
{children}
;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n border: `0.5px solid ${theme.palette.grey[300]}`,\n borderRadius: 2,\n marginTop: theme.spacing(2),\n },\n}));\n\nexport default SlateWrapper;\n","import { Editor, Transforms, Path, Range, Element, BasePoint } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport _get from 'lodash/get';\nimport _cloneDeep from 'lodash/cloneDeep';\n\nconst getLeftChar = (editor: ReactEditor, point: BasePoint) => {\n const end = Range.end(editor.selection as Range);\n\n return Editor.string(editor, {\n anchor: {\n path: end.path,\n offset: point.offset - 1,\n },\n focus: {\n path: end.path,\n offset: point.offset,\n },\n });\n};\n\nconst getRightChar = (editor: ReactEditor, point: BasePoint) => {\n const end = Range.end(editor.selection as Range);\n\n return Editor.string(editor, {\n anchor: {\n path: end.path,\n offset: point.offset,\n },\n focus: {\n path: end.path,\n offset: point.offset + 1,\n },\n });\n};\n\nconst wordRegexp = /[0-9a-zA-Z-]/;\n\nconst getCurrentSelection = (editor: ReactEditor) => {\n const { selection } = editor;\n\n if (selection) {\n const end = Range.end(selection);\n let currentWord = '';\n const currentPosition = _cloneDeep(end);\n let startOffset = end.offset;\n let endOffset = end.offset;\n\n // (note - pearl) Go left from the cursor until finding a non-word character\n while (currentPosition.offset >= 0 && getLeftChar(editor, currentPosition).match(wordRegexp)) {\n currentWord = getLeftChar(editor, currentPosition) + currentWord;\n startOffset = currentPosition.offset - 1;\n currentPosition.offset--;\n }\n\n // (note - pearl) Go right from the cursor until finding a non-word character\n currentPosition.offset = end.offset;\n while (currentWord.length && getRightChar(editor, currentPosition).match(wordRegexp)) {\n currentWord += getRightChar(editor, currentPosition);\n endOffset = currentPosition.offset + 1;\n currentPosition.offset++;\n }\n\n const currentRange: Range = {\n anchor: {\n path: end.path,\n offset: startOffset,\n },\n focus: {\n path: end.path,\n offset: endOffset,\n },\n };\n\n return {\n currentWord,\n currentRange,\n };\n }\n\n return {};\n};\n\nexport default getCurrentSelection;\n","import React from 'react';\nimport { ReactEditor } from 'slate-react';\nimport { removeLink } from './helpers/linkHelpers';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport { useSnackbar } from 'notistack';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport EarthIcon from '@material-ui/icons/Language';\nimport Link from '@material-ui/core/Link';\nimport CopyIcon from '@material-ui/icons/FileCopyOutlined';\n\ninterface Props {\n href: string;\n editor: ReactEditor;\n className?: string;\n}\n\nfunction LinkPopover({ href, editor, className }: Props) {\n const classes = useStyles();\n const { enqueueSnackbar } = useSnackbar();\n\n const handleOpenLink = () => {\n const properHref = !href.includes('http') ? `http://${href}` : href;\n window.open(properHref, '_blank');\n };\n\n const handleCopy = () => {\n enqueueSnackbar('Copied link to clipboard!');\n };\n\n return (\n \n \n \n {href}\n \n \n \n \n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n ...theme.typography.body1,\n display: 'flex',\n alignItems: 'center',\n },\n link: {\n cursor: 'pointer',\n marginLeft: theme.spacing(),\n marginRight: theme.spacing(),\n },\n iconButton: {\n padding: theme.spacing(0.5),\n },\n button: {\n paddingLeft: 0,\n paddingRight: 0,\n marginLeft: -theme.spacing(0.5),\n },\n}));\n\nexport default LinkPopover;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport _isEqual from 'lodash/isEqual';\nimport { useFocused, useSelected } from 'slate-react';\nimport getCurrentSelection from './helpers/getCurrentSelection';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport LinkPopover from './LinkPopover';\n\nconst Link = ({ attributes, element, children, editor }: any) => {\n const classes = useStyles();\n const { selection } = editor;\n const selected = useSelected();\n const focused = useFocused();\n const linkText = _get(children, [0, 'props', 'parent', 'children', 0, 'text']);\n const { currentWord, currentRange } = getCurrentSelection(editor);\n const selectedWordIsPartOfLinkText = Boolean(currentWord) && linkText.includes(currentWord);\n const selectionPathIsTheSame =\n _isEqual(_get(selection, ['anchor', 'path']), _get(currentRange, ['anchor', 'path'])) &&\n _isEqual(_get(selection, ['focus', 'path']), _get(currentRange, ['focus', 'path']));\n const linkIsSelected = selectedWordIsPartOfLinkText && selectionPathIsTheSame;\n\n return (\n \n \n {children}\n \n {linkIsSelected && selected && focused && (\n \n )}\n \n );\n};\n\nconst useStyles = makeStyles(theme => ({\n root: { position: 'relative' },\n linkPopup: {\n position: 'absolute',\n left: 0,\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'white',\n padding: 6,\n borderRadius: 6,\n border: `1px solid lightgray`,\n width: 'fit-content',\n zIndex: 1,\n },\n link: {\n color: theme.palette.secondary.main,\n },\n}));\n\nexport default Link;\n","import React from 'react';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Link from './Link';\n\nfunction Element(props: any) {\n const classes = useStyles();\n\n const { attributes, children, element, editor, isDefaultEditor } = props;\n // (note - pearl) We do not allow headings in default editor, the heading elements will get\n // rendered as regular text\n\n const defaultElement = (\n
\n {children}\n
\n );\n\n switch (element.type) {\n case 'list-item':\n return (\n
  • \n {children}\n
  • \n );\n case 'orderedList':\n return (\n
      \n {children}\n
    \n );\n case 'unorderedList':\n return (\n
      \n {children}\n
    \n );\n case 'heading_one':\n return (\n <>\n {isDefaultEditor ? (\n defaultElement\n ) : (\n \n {children}\n \n )}\n \n );\n case 'heading_two':\n return (\n <>\n {isDefaultEditor ? (\n defaultElement\n ) : (\n \n {children}\n \n )}\n \n );\n case 'heading_three':\n return (\n <>\n {isDefaultEditor ? (\n defaultElement\n ) : (\n \n {children}\n \n )}\n \n );\n case 'link':\n return ;\n default:\n return defaultElement;\n }\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n fontSize: 14,\n },\n headingOne: {\n fontSize: 24,\n },\n headingTwo: {\n fontSize: 18,\n },\n headingThree: {\n fontSize: 16,\n },\n ol: {\n paddingInlineStart: '12px',\n },\n ul: {\n paddingInlineStart: '16px',\n },\n textLine: {\n margin: 0,\n marginBottom: theme.spacing(),\n },\n}));\n\nexport default Element;\n","import React from 'react';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction Leaf(props: any) {\n const classes = useStyles();\n\n const { attributes, children: _children, leaf } = props;\n const classList = [];\n let children = _children;\n\n if (leaf.bold) {\n classList.push(classes.bold);\n }\n\n if (leaf.italic) {\n classList.push(classes.italic);\n }\n\n if (leaf.strike_through) {\n classList.push(classes.strike_through);\n }\n\n if (leaf.underline) {\n children = {_children};\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n bold: {\n fontWeight: theme.typography.fontWeightBold,\n },\n italic: {\n fontStyle: 'italic',\n },\n strike_through: {\n textDecoration: 'line-through',\n },\n}));\n\nexport default Leaf;\n","import React, { useCallback } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { Editable, ReactEditor } from 'slate-react';\nimport isHotkey from 'is-hotkey';\nimport { toggleMark } from './helpers/utilities';\nimport Element from './Element';\nimport Leaf from './Leaf';\nimport { HOTKEYS } from './helpers/consts';\n\ninterface Props {\n editor: ReactEditor;\n isDefaultEditor?: boolean;\n}\n\nfunction EditArea({ editor, isDefaultEditor = false }: Props) {\n const classes = useStyles();\n const renderElement = useCallback(\n props => ,\n [],\n );\n const renderLeaf = useCallback(props => , []);\n\n return (\n {\n for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event as any)) {\n event.preventDefault();\n // @ts-ignore\n const mark = HOTKEYS[hotkey];\n toggleMark(editor, mark);\n }\n }\n }}\n />\n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(2),\n borderTop: `0.5px solid ${theme.palette.grey[300]}`,\n },\n}));\n\nexport default EditArea;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction Toolbar({ children }: Props) {\n const classes = useStyles();\n\n return
    {children}
    ;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: { backgroundColor: theme.palette.grey[100] },\n}));\n\nexport default Toolbar;\n","import React from 'react';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport IconButton, { IconButtonProps } from '@material-ui/core/IconButton';\n\ninterface Props extends IconButtonProps {\n isActive: boolean;\n children: React.ReactNode;\n onMouseDown: (e: any) => void;\n}\n\nfunction ButtonBase({ onMouseDown, isActive, children, ...restOfProps }: Props) {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n borderRadius: 4,\n marginRight: theme.spacing(0.5),\n },\n active: {\n backgroundColor: theme.palette.grey[700],\n color: theme.palette.common.white,\n '&:hover': {\n color: theme.palette.common.black,\n backgroundColor: theme.palette.grey[400],\n },\n },\n}));\n\nexport default ButtonBase;\n","import React from 'react';\nimport { useSlate, ReactEditor } from 'slate-react';\nimport { isMarkActive, toggleMark } from './helpers/utilities';\nimport ButtonBase from './ButtonBase';\n\ninterface Props {\n format: string;\n Icon: React.ReactNode;\n}\n\nfunction MarkButton({ format, Icon }: Props) {\n const editor = useSlate() as ReactEditor;\n const isActive = isMarkActive(editor, format);\n const handleMouseDown = (e: any) => {\n e.preventDefault();\n toggleMark(editor, format);\n };\n\n return (\n \n {Icon}\n \n );\n}\n\nexport default MarkButton;\n","import React from 'react';\nimport FormatBoldIcon from '@material-ui/icons/FormatBold';\nimport MarkButton from './MarkButton';\n\nfunction BoldButton() {\n return } />;\n}\n\nexport default BoldButton;\n","import React from 'react';\nimport FormatItalicIcon from '@material-ui/icons/FormatItalic';\nimport MarkButton from './MarkButton';\n\nfunction ItalicButton() {\n return } />;\n}\n\nexport default ItalicButton;\n","import React from 'react';\nimport FormatUnderlinedIcon from '@material-ui/icons/FormatUnderlined';\nimport MarkButton from './MarkButton';\n\nfunction UnderlineButton() {\n return } />;\n}\n\nexport default UnderlineButton;\n","import React from 'react';\nimport StrikethroughSIcon from '@material-ui/icons/StrikethroughS';\nimport MarkButton from './MarkButton';\n\nfunction StrikeThroughButton() {\n return } />;\n}\n\nexport default StrikeThroughButton;\n","import React from 'react';\nimport { useSlate } from 'slate-react';\nimport { ReactEditor } from 'slate-react';\nimport { IconButtonProps } from '@material-ui/core/IconButton';\nimport { isBlockActive, toggleBlock } from './helpers/utilities';\nimport ButtonBase from './ButtonBase';\n\ninterface Props extends IconButtonProps {\n format: string;\n Icon: React.ReactNode;\n}\n\nfunction BlockButton({ format, Icon, ...restOfProps }: Props) {\n const editor = useSlate() as ReactEditor;\n const isActive = isBlockActive(editor, format);\n const handleMouseDown = (e: any) => {\n e.preventDefault();\n toggleBlock(editor, format);\n };\n\n return (\n \n {Icon}\n \n );\n}\n\nexport default BlockButton;\n","import React from 'react';\nimport FormatListNumberedIcon from '@material-ui/icons/FormatListNumbered';\nimport BlockButton from './BlockButton';\n\nfunction OrderedListButton() {\n return } />;\n}\n\nexport default OrderedListButton;\n","import React from 'react';\nimport FormatListBulletedIcon from '@material-ui/icons/FormatListBulleted';\nimport BlockButton from './BlockButton';\n\nfunction UnorderedListButton() {\n return } />;\n}\n\nexport default UnorderedListButton;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport TextField from '@material-ui/core/TextField';\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 Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport FormHelperText from '@material-ui/core/FormHelperText';\n\ninterface Props {\n displayText: string;\n href: string;\n open: boolean;\n isEditing?: boolean;\n onClose: () => void;\n onDisplayTextChange: (e: any) => void;\n onHrefChange: (e: any) => void;\n onRemoveLink: () => void;\n onSave: () => void;\n}\n\nfunction LinkEditDialog({\n displayText,\n href,\n open,\n isEditing,\n onClose,\n onDisplayTextChange,\n onHrefChange,\n onRemoveLink,\n onSave,\n}: Props) {\n const classes = useStyles();\n\n return (\n \n
    \n {isEditing ? 'Edit' : 'Add'} Link\n \n \n \n
    \n \n \n Display text cannot be empty\n \n )\n }\n />\n \n Link cannot be empty\n \n )\n }\n />\n \n \n {isEditing && (\n \n )}\n \n \n
    \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n titleBar: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n },\n closeButton: {\n marginRight: theme.spacing(0.5),\n },\n helperText: {\n marginLeft: -theme.spacing(1.5),\n },\n}));\n\nexport default LinkEditDialog;\n","import React, { useState } from 'react';\nimport { Editor, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { isBlockActive } from './helpers/utilities';\nimport { insertLink, removeLink } from './helpers/linkHelpers';\nimport LinkIcon from '@material-ui/icons/Link';\nimport LinkEditDialog from './LinkEditDialog';\nimport ButtonBase from './ButtonBase';\n\ninterface Props {\n editor: ReactEditor;\n}\n\nfunction LinkButton({ editor }: Props) {\n const [showEditDialog, setShowEditDialog] = useState(false);\n const isActive = isBlockActive(editor, 'link');\n const [displayText, setDisplayText] = useState('');\n const [href, setHref] = useState('');\n const [selection, setSelection] = useState();\n\n const handleInsertLink = () => {\n // (note - pearl) If no selection, insert at the start of the editor\n const _selection = selection || {\n anchor: Editor.start(editor, []),\n focus: Editor.start(editor, []),\n };\n\n Transforms.select(editor, _selection);\n insertLink(editor, { href, text: displayText });\n setDisplayText('');\n setHref('');\n };\n const toggleLink = () => {\n setShowEditDialog(!isActive);\n\n if (isActive) {\n removeLink(editor);\n } else {\n setSelection(editor.selection);\n !!editor.selection && setDisplayText(Editor.string(editor, editor.selection));\n }\n };\n const handleDisplayTextChange = (e: any) => {\n setDisplayText(e.target.value);\n };\n const handleHrefChange = (e: any) => {\n setHref(e.target.value);\n };\n const handleClose = () => {\n setShowEditDialog(false);\n };\n const handleRemoveLink = () => {\n handleClose();\n };\n const handleSave = () => {\n handleInsertLink();\n handleClose();\n };\n\n return (\n <>\n \n \n \n \n \n );\n}\n\nexport default LinkButton;\n","import React, { useMemo, useEffect } from 'react';\nimport { Slate, withReact } from 'slate-react';\nimport { createEditor } from 'slate';\nimport { withHistory } from 'slate-history';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\nimport { withLinks } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/linkHelpers';\nimport withDeleteEmptyBlock from './helpers/withDeleteEmptyBlock';\nimport sanitizeHeadingNodes from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/sanitizeHeadingNodes';\nimport getRichTextCharCount from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/getRichTextCharCount';\nimport resetRichText from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/resetRichText';\nimport Link from '@material-ui/core/Link';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport CharCount from 'atoms/CharCount';\nimport SlateWrapper from './SlateWrapper';\nimport EditArea from './EditArea';\nimport Toolbar from './Toolbar';\nimport BoldButton from './BoldButton';\nimport ItalicButton from './ItalicButton';\nimport UnderlineButton from './UnderlineButton';\nimport StrikeThroughButton from './StrikeThroughButton';\nimport OrderedListButton from './OrderedListButton';\nimport UnorderedListButton from './UnorderedListButton';\nimport LinkButton from './LinkButton';\nimport { MAX_CHAR_COUNT_RICH_TEXT } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\ninterface Props {\n className?: string;\n value: Array;\n originalValue: Array;\n onSetFieldValue: (fieldKey: string, fieldValue: string) => void;\n shouldReset?: boolean;\n errors?: any;\n resetShouldReset: () => void;\n}\n\nfunction RichTextDefault({\n className,\n value,\n originalValue,\n onSetFieldValue,\n shouldReset,\n errors,\n resetShouldReset,\n}: Props) {\n const classes = useStyles();\n\n const handleChange = (editorValue: Array) => {\n const sanitizedValue = sanitizeHeadingNodes(editorValue);\n\n // @ts-ignore (note - pearl) Formik typing is incorrectly saying second arg can only be string\n onSetFieldValue('settings.richTextDefault', sanitizedValue);\n };\n\n const count = getRichTextCharCount(value);\n\n const editor = useMemo(\n () => withDeleteEmptyBlock(withLinks(withReact(withHistory(createEditor())))),\n [],\n );\n\n useEffect(() => {\n if (shouldReset) {\n resetRichText(editor, originalValue);\n resetShouldReset();\n }\n }, [shouldReset]);\n\n return (\n \n \n Default View Content\n \n This rich text content will appear in the widget when it is in its default, smaller view.\n We recommend keeping this content short so that it is all visible. On your homepage,\n hyperlinks will use your highlight color from your{' '}\n \n theme\n \n .\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {errors.richTextDefault && {errors.richTextDefault}}\n \n \n \n );\n}\n\nconst useStyles = makeStyles(() => {\n return {\n root: {},\n };\n});\n\nexport default RichTextDefault;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport BlockButton from './BlockButton';\n\ninterface Props {\n format: string;\n title: string;\n}\n\nfunction HeadingButtonBase({ format, title }: Props) {\n const classes = useStyles();\n\n return {title}} />;\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n fontSize: 16,\n fontWeight: theme.typography.fontWeight.bold,\n },\n}));\n\nexport default HeadingButtonBase;\n","import React from 'react';\nimport HeadingButtonBase from './HeadingButtonBase';\n\nfunction HeadingOneButton() {\n return ;\n}\n\nexport default HeadingOneButton;\n","import React from 'react';\nimport HeadingButtonBase from './HeadingButtonBase';\n\nfunction HeadingTwoButton() {\n return ;\n}\n\nexport default HeadingTwoButton;\n","import React from 'react';\nimport HeadingButtonBase from './HeadingButtonBase';\n\nfunction HeadingThreeButton() {\n return ;\n}\n\nexport default HeadingThreeButton;\n","import React, { useMemo, useEffect } from 'react';\nimport { Slate, withReact } from 'slate-react';\nimport { createEditor } from 'slate';\nimport { withHistory } from 'slate-history';\nimport Link from '@material-ui/core/Link';\nimport { withLinks } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/linkHelpers';\nimport withDeleteEmptyBlock from './helpers/withDeleteEmptyBlock';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport classNames from 'classnames';\nimport getRichTextCharCount from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/getRichTextCharCount';\nimport resetRichText from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/resetRichText';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport CharCount from 'atoms/CharCount';\nimport SlateWrapper from './SlateWrapper';\nimport EditArea from './EditArea';\nimport Toolbar from './Toolbar';\nimport HeadingOneButton from './HeadingOneButton';\nimport HeadingTwoButton from './HeadingTwoButton';\nimport HeadingThreeButton from './HeadingThreeButton';\nimport BoldButton from './BoldButton';\nimport ItalicButton from './ItalicButton';\nimport UnderlineButton from './UnderlineButton';\nimport StrikeThroughButton from './StrikeThroughButton';\nimport OrderedListButton from './OrderedListButton';\nimport UnorderedListButton from './UnorderedListButton';\nimport LinkButton from './LinkButton';\nimport { MAX_CHAR_COUNT_RICH_TEXT } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\ninterface Props {\n className?: string;\n value: Array;\n originalValue: Array;\n onSetFieldValue: (fieldKey: string, fieldValue: string) => void;\n shouldReset?: boolean;\n errors?: any;\n resetShouldReset: () => void;\n}\n\nfunction RichTextExpanded({\n className,\n value,\n originalValue,\n onSetFieldValue,\n shouldReset,\n errors,\n resetShouldReset,\n}: Props) {\n const classes = useStyles();\n\n const handleChange = (editorValue: any) => {\n onSetFieldValue('settings.richTextExpanded', editorValue);\n };\n\n const count = getRichTextCharCount(value);\n\n const editor = useMemo(\n () => withDeleteEmptyBlock(withLinks(withReact(withHistory(createEditor())))),\n [],\n );\n\n useEffect(() => {\n if (shouldReset) {\n resetRichText(editor, originalValue);\n resetShouldReset();\n }\n }, [shouldReset]);\n\n return (\n \n \n Alternate Expanded View Content (Optional)\n \n This rich text content will appear only in the expanded, larger view. If you have longer\n content that you’d like to appear when the widget is expanded, include it here. If this\n section is not filled out, the default content above will appear in both the default and\n expanded widget view. On your homepage, hyperlinks will use your highlight color from your{' '}\n \n theme\n \n .\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {errors.richTextExpanded && (\n {errors.richTextExpanded}\n )}\n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {},\n };\n});\n\nexport default RichTextExpanded;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport RichTextDefault from './RichTextDefault';\nimport RichTextExpanded from './RichTextExpanded';\n\ninterface Props {\n values: any;\n onSetFieldValue: (fieldKey: string, fieldValue: string) => void;\n originalValue: any;\n shouldReset?: boolean;\n errors?: any;\n resetShouldReset: () => void;\n}\n\nfunction RichTextWidgetSettings({\n values,\n onSetFieldValue,\n originalValue,\n shouldReset,\n resetShouldReset,\n errors,\n}: Props) {\n const classes = useStyles();\n const defaultContent = _get(values, ['settings', 'richTextDefault']);\n const expandedContent = _get(values, ['settings', 'richTextExpanded']);\n const originalDefaultValue = _get(originalValue, ['settings', 'richTextDefault']);\n const originalExpandedValue = _get(originalValue, ['settings', 'richTextExpanded']);\n\n return (\n <>\n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n card: {\n maxWidth: 900,\n marginRight: theme.spacing(3),\n },\n}));\n\nexport default RichTextWidgetSettings;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport { useSelector } from 'react-redux';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport Switch from '@material-ui/core/Switch';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Tooltip from '@material-ui/core/Tooltip';\n\ninterface Props {\n values: any;\n onSetFieldValue: (fieldKey: string, fieldValue: string) => void;\n}\n\nfunction MyTeamWidgetSettings({ values, onSetFieldValue }: Props) {\n const classes = useStyles();\n const managerTerminology = useSelector(state =>\n _get(state, ['client', 'terminology', 'teamLeader'], 'team leader'),\n ).toLowerCase();\n\n const managerTerminologyPlural = useSelector(state =>\n _get(state, ['client', 'terminology', 'teamLeader_plural'], 'team leaders'),\n ).toLowerCase();\n\n const dlrEnabled = useSelector(state =>\n _get(state, ['client', 'settings', 'dottedLineRelationships', 'enabled'], true),\n );\n\n const { displayTeammatesForLeader, displayDlrs } = values.settings;\n\n return (\n <>\n \n \n
    \n
    \n \n Display people with the same {managerTerminology} if the person is a{' '}\n {managerTerminology} themselves?\n \n \n If you would like {managerTerminologyPlural} to only see people who report to them\n in the widget, and not those with the same {managerTerminology}, turn this setting\n off\n \n
    \n \n onSetFieldValue(\n 'settings.displayTeammatesForLeader',\n // @ts-ignore\n !displayTeammatesForLeader,\n )\n }\n />\n
    \n
    \n
    \n \n \n \n
    \n
    \n Display dotted line relationships?\n \n If this is switched on, we will include dotted line relationships as part of a\n person’s team within the widget\n \n
    \n onSetFieldValue('settings.displayDlrs', !displayDlrs)}\n disabled={!dlrEnabled}\n />\n
    \n \n
    \n
    \n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n card: {\n maxWidth: 900,\n marginRight: theme.spacing(3),\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n disabled: {\n color: theme.palette.text.disabled,\n },\n}));\n\nexport default MyTeamWidgetSettings;\n","import React from 'react';\nimport _get from 'lodash/get';\nimport classNames from 'classnames';\nimport { transparentize } from 'polished';\nimport _isEmpty from 'lodash/isEmpty';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useEntityTypes, { PERSON_ENTITY_TYPE_KEY } from 'helpers/useEntityTypes';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport Button from '@material-ui/core/Button';\nimport Divider from '@material-ui/core/Divider';\nimport TextField from '@material-ui/core/TextField';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { Widget, PersonListsByDatePersonList } from 'pages/Homepage/typings';\n\nimport { MAX_CHAR_COUNT_NAME } from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\ninterface Props {\n values: Widget;\n listIndex: number;\n errors: any;\n setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void;\n onReorderList: (currentIndex: number, targetIndex: number) => void;\n onDeleteList: (index: number) => void;\n}\n\nfunction PersonsListByDateForm({\n values,\n listIndex,\n errors,\n setFieldValue,\n onReorderList,\n onDeleteList,\n}: Props) {\n const classes = useStyles();\n\n const entityTypes = useEntityTypes();\n const userConfig = _get(entityTypes, PERSON_ENTITY_TYPE_KEY);\n const { _fields } = userConfig;\n const personLists = _get(values, ['settings', 'personLists']);\n const isMultiList = personLists.length > 1;\n const baseListKey = `personLists[${listIndex}]`;\n\n const updateFrequencies = [\n { displayName: 'Show new people each day', value: 'daily' },\n { displayName: 'Show new people each week', value: 'weekly' },\n { displayName: 'Show new people each month', value: 'monthly' },\n ];\n\n const displayYearOptions = [\n { displayName: 'Display the number of years since the date', value: 'true' },\n { displayName: 'Do not display the number of years since the date', value: 'false' },\n ];\n\n const displayReoccuringOptions = [\n { displayName: 'Display people each year', value: 'true' },\n { displayName: 'Only display people on the year matching the date', value: 'false' },\n ];\n\n const displayFirstYearOptions = [\n { displayName: 'Display people every year', value: 'true' },\n { displayName: 'Skip displaying people on the first year', value: 'false' },\n ];\n\n const dateFields = Object.values(_fields).filter(f => f.type === 'date');\n const personList: PersonListsByDatePersonList = (values.settings || {}).personLists[listIndex];\n const disableReordering = values.settings && values.settings.personLists.length < 2;\n const disableIncludeFirstYear =\n values.settings && !values.settings.personLists[listIndex].includeYearly;\n\n const setSelectBooleanValue = (formKey: string, formValue: string) => {\n const boolValue = formValue === 'true';\n\n setFieldValue(\n formKey,\n // (Note - Dylan) convert boolean string to boolean value (MenuItem cannot take boolean as value)\n boolValue,\n );\n };\n\n return (\n \n
    \n
    \n \n List #{(personList._targetListIndex as number) + 1}\n {personList.name ? ':' : ''} {personList.name}\n \n
    \n
    \n \n
    \n
    \n\n \n\n
    \n \n List Name\n \n \n If you have more than one list, this list name will appear as the title of the tab/section\n in the widget. If you only have one list, use the widget title above to describe this\n list.\n \n \n
    \n \n setFieldValue(`settings.personLists[${listIndex}].name`, e.target.value)\n }\n InputLabelProps={{\n classes: {\n root: classes.inputLabel,\n focused: classes.cssFocused,\n },\n }}\n inputProps={{\n maxLength: MAX_CHAR_COUNT_NAME,\n 'aria-label': 'list name',\n }}\n helperText={\n errors[`personLists[${listIndex}].name`] && errors[`personLists[${listIndex}].name`]\n }\n />\n
    \n \n
    \n\n \n
    \n \n Tab Order\n \n \n Which order should this list appear in your widget?\n \n
    \n \n
    \n \n onReorderList(personList._targetListIndex as number, e.target.value as number)\n }\n >\n {/* @ts-ignore */}\n {values.settings.personLists.map((item: any, index: number) => (\n List #{index + 1}\n ))}\n \n
    \n \n \n\n \n
    \n \n Update Frequency\n \n \n How often should we change who is featured in this list? We recommend choosing an option\n that will have matching people more days than not. (Ex: If you are a smaller\n organization, you may not want to choose “Daily”).\n \n
    \n\n \n setFieldValue(`settings.personLists[${listIndex}].updateFrequency`, e.target.value)\n }\n >\n {updateFrequencies.map(item => (\n {item.displayName}\n ))}\n \n \n\n \n
    \n \n Source Date Attribute\n \n \n Choose a date attribute that we should use to find people in this list. (Ex: for\n anniversaries and new hires, we would base the list on a “Hire Date” attribute).\n \n
    \n\n
    \n \n setFieldValue(`settings.personLists[${listIndex}].fieldObjectKey`, e.target.value)\n }\n >\n {dateFields.map(item => (\n {item.displayName}\n ))}\n \n {!_isEmpty(errors[`${baseListKey}.fieldObjectKey`]) && (\n {errors[`${baseListKey}.fieldObjectKey`]}\n )}\n
    \n \n\n \n
    \n \n Should the year be displayed with the date?\n \n \n Should we display the year of the milstone on the widget? Or just the month and day?\n \n
    \n\n \n setSelectBooleanValue(\n `settings.personLists[${listIndex}].displayYear`,\n e.target.value as string,\n )\n }\n >\n {displayYearOptions.map(item => (\n {item.displayName}\n ))}\n \n \n\n \n
    \n \n Should people be featured on a recurring basis?\n \n \n Do you want people to be featured on the corresponding month and day every year (ex:\n Anniversary, Birthday)? Or only once near the exact date (e.x: New Hire)?\n \n
    \n\n \n setSelectBooleanValue(\n `settings.personLists[${listIndex}].includeYearly`,\n e.target.value as string,\n )\n }\n >\n {displayReoccuringOptions.map(item => (\n {item.displayName}\n ))}\n \n \n\n \n
    \n \n Should people be featured the first year?\n \n \n Do you want people to be displayed every single year? Or should we skip them the first\n year? (Ex: You only want to start with anniversaries after a year has passed).\n \n
    \n\n \n
    \n \n setSelectBooleanValue(\n `settings.personLists[${listIndex}].includeInFirstYear`,\n e.target.value as string,\n )\n }\n >\n {displayFirstYearOptions.map(item => (\n {item.displayName}\n ))}\n \n
    \n \n \n
    \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n inputLabel: {\n '&$cssFocused': {\n color: theme.palette.secondary.main,\n },\n },\n cssFocused: {},\n settingTitle: {\n fontWeight: theme.typography.fontWeightSemiBold,\n },\n settingInfo: {\n maxWidth: 750,\n },\n settingContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n settingPadding: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n settingMargin: {\n marginBottom: theme.spacing(4),\n },\n divider: {\n margin: 0,\n marginBottom: theme.spacing(1.5),\n marginTop: theme.spacing(1.5),\n },\n dropdown: {\n maxWidth: 317,\n width: '100%',\n },\n disabled: {\n color: transparentize(0.62, theme.palette.common.black),\n },\n deleteButton: {\n color: theme.colors.error,\n },\n tooltip: {\n minWidth: 317,\n },\n}));\n\nexport default PersonsListByDateForm;\n","import React, { useState } from 'react';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { transparentize } from 'polished';\nimport _isEmpty from 'lodash/isEmpty';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport Button from '@material-ui/core/Button';\nimport Divider from '@material-ui/core/Divider';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport CakeIcon from '@material-ui/icons/Cake';\nimport TodayIcon from '@material-ui/icons/Today';\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd';\n\nimport CreateIcon from '@material-ui/icons/Create';\n\nimport { PersonListsByDatePersonList } from 'pages/Homepage/typings';\n\ninterface Props {\n list: PersonListsByDatePersonList;\n listIndex: number;\n setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void;\n onDeleteList: (index: number) => void;\n}\n\nfunction PersonsListByDatePresetSelect({ list, listIndex, setFieldValue, onDeleteList }: Props) {\n const classes = useStyles();\n\n // (Note - Dylan) moved preset array into component function to utilize styling classes\n const presets = [\n {\n name: 'Birthdays',\n description: 'Highlight recent and upcoming birthdays.',\n icon: ,\n defaultSettings: {\n name: 'Birthdays',\n displayYear: false,\n includeYearly: true,\n fieldObjectKey: undefined,\n updateFrequency: 'weekly',\n includeInFirstYear: true,\n },\n },\n {\n name: 'Work Anniversaries',\n description:\n 'Celebrate team members who recently had a work anniversary by showcasing their years of service.',\n icon: ,\n defaultSettings: {\n name: 'Anniversaries',\n displayYear: true,\n includeYearly: true,\n fieldObjectKey: 'anniversaryDate',\n updateFrequency: 'weekly',\n includeInFirstYear: false,\n },\n },\n {\n name: 'New Hires',\n description: 'Welcome new hires to your organization and help others get to know them.',\n\n icon: ,\n defaultSettings: {\n name: 'New Hires',\n displayYear: false,\n includeYearly: false,\n fieldObjectKey: 'anniversaryDate',\n updateFrequency: 'weekly',\n includeInFirstYear: true,\n },\n },\n {\n name: 'Custom',\n description:\n 'Create a customized list to showcase any date-based milestone that matters most to your organization.',\n icon: ,\n defaultSettings: {\n name: '',\n displayYear: true,\n includeYearly: true,\n fieldObjectKey: undefined,\n updateFrequency: 'weekly',\n includeInFirstYear: true,\n },\n },\n ];\n\n const listName = _get(list, 'name', '');\n\n const [selectedPresetIndex, setSelectedPresetIndex] = useState(-1);\n const handleSelect = (value: any) => {\n setSelectedPresetIndex(value);\n };\n\n const handleChoosePreset = () => {\n const selectedPreset = presets[selectedPresetIndex];\n\n setFieldValue(`settings.personLists[${listIndex}]`, selectedPreset.defaultSettings);\n };\n\n return (\n \n
    \n
    \n \n List #{listIndex + 1}\n {listName ? ':' : ''} {listName}\n \n
    \n
    \n \n
    \n
    \n\n \n\n
    \n
    \n
    \n Choose a Preset\n \n Choose a preset below to get started with configuring your list.\n \n
    \n
    \n\n \n
    \n {presets.map((preset: any, index: number) => {\n return (\n handleSelect(index)} className={classes.presetCard}>\n
    \n \n
    \n
    \n
    {preset.icon}
    \n \n {preset.name}\n \n \n {preset.description}\n \n
    \n
    \n );\n })}\n
    \n
    \n\n \n Choose Preset\n \n
    \n
    \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n paddingTop: theme.spacing(3),\n },\n icon: {\n height: 80,\n width: 80,\n color: transparentize(0.46, theme.palette.common.black),\n },\n divider: {\n margin: 0,\n marginBottom: theme.spacing(1.5),\n marginTop: theme.spacing(1.5),\n },\n section: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n cardContainer: {\n display: 'flex',\n height: '100%',\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n marginTop: theme.spacing(2.75),\n marginBottom: theme.spacing(10),\n },\n presetCard: {\n display: 'flex',\n flexDirection: 'column',\n minWidth: 250,\n minHeight: 321,\n width: '100%',\n marginRight: theme.spacing(),\n padding: theme.spacing(2),\n },\n cardContent: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n presetName: {\n fontWeight: theme.typography.fontWeightSemiBold,\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(1.5),\n },\n presetDescription: {\n maxWidth: 175,\n textAlign: 'center',\n },\n checkDiv: {\n marginLeft: 'auto',\n alignSelf: 'flex-end',\n height: 42,\n marginBottom: theme.spacing(3),\n },\n button: {\n marginLeft: 'auto',\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(4.5),\n maxHeight: 36,\n },\n deleteButton: {\n color: theme.colors.error,\n },\n}));\n\nexport default PersonsListByDatePresetSelect;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isNil from 'lodash/isNil';\nimport _orderBy from 'lodash/orderBy';\n\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport Divider from '@material-ui/core/Divider';\n\ninterface Props {\n open: boolean;\n listIndex: number;\n onDelete: (index: number) => void;\n onCancel: () => void;\n}\n\nfunction PersonsListByDateDeleteConfirmation({ open, listIndex, onDelete, onCancel }: Props) {\n const classes = useStyles();\n\n return (\n \n
    \n \n If you delete this list, you will lose all of your saved settings. Do you want to\n continue?\n \n \n
    \n \n \n
    \n
    \n
    \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: 402,\n maxHeight: 130,\n paddingTop: theme.spacing(1.5),\n },\n text: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n marginBottom: theme.spacing(2.5),\n maxHeight: 48,\n },\n buttonContainer: {\n marginLeft: 'auto',\n marginTop: theme.spacing(1.5),\n paddingRight: theme.spacing(3),\n paddingBottom: theme.spacing(1.5),\n maxHeight: 48,\n },\n button: {\n maxHeight: 24,\n },\n divider: {\n margin: 0,\n backgroundColor: theme.palette.common.black,\n },\n}));\n\nexport default PersonsListByDateDeleteConfirmation;\n","import React, { useState } from 'react';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isNil from 'lodash/isNil';\nimport _orderBy from 'lodash/orderBy';\nimport { transparentize } from 'polished';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport PersonsListByDateForm from './PersonsListByDateForm';\nimport PersonsListByDatePresetSelect from './PersonsListByDatePresetSelect';\nimport PersonsListByDateDeleteConfirmation from './PersonsListsByDateDeleteConfirmation';\n\nimport { PersonListsByDatePersonList } from 'pages/Homepage/typings';\n\nconst DEFAULT_INITIAL_LIST = { _onPresetSelectStep: true, _targetListIndex: 0 };\n\ninterface Props {\n values: any;\n errors: any;\n onSetFieldValue: (fieldKey: string, fieldValue: any) => void;\n}\n\nfunction PersonListsByDateWidgetSettings({ values, errors, onSetFieldValue }: Props) {\n const classes = useStyles();\n\n const [dialogOpen, setDialogOpen] = useState(false);\n const [deleteDialogIndex, setDeleteDialogIndex] = useState(-1);\n\n // (TODO - Dylan) possible refactor using onSetFieldValue here\n values.settings.personLists = _isEmpty(values.settings.personLists)\n ? [DEFAULT_INITIAL_LIST]\n : values.settings.personLists.map((list: PersonListsByDatePersonList, i: number) => ({\n ...list,\n _targetListIndex: !_isNil(list._targetListIndex) ? list._targetListIndex : i,\n }));\n\n const { personLists } = values.settings;\n\n const disableAddList = values.settings && values.settings.personLists.length > 2;\n\n const ListDisplay = () => {\n const listsByTargetIndex = _orderBy(personLists, ['_targetListIndex']);\n return (\n
    \n {listsByTargetIndex.map((list: PersonListsByDatePersonList, index: number) => (\n \n \n List #{index + 1}\n {list.name ? ':' : ''}{' '}\n \n \n {list.name}\n \n \n ))}\n
    \n );\n };\n\n const handleAddList = () => {\n const nextIndex = personLists.length;\n\n onSetFieldValue(`settings.personLists[${nextIndex}]`, {\n ...DEFAULT_INITIAL_LIST,\n _targetListIndex: nextIndex,\n });\n };\n\n const handleDeleteConfirmationOpen = (index: number) => {\n setDialogOpen(true);\n setDeleteDialogIndex(index);\n };\n\n const handleDeleteConfirmationCancel = () => {\n setDialogOpen(false);\n };\n\n // (Note - Dylan) arguments (indexes) are _targetListIndex's\n const handleReorderLists = (currentIndex: number, targetIndex: number) => {\n const currentListRealIndex = personLists.findIndex(\n (list: any) => list._targetListIndex === currentIndex,\n );\n\n const targetListRealIndex = personLists.findIndex(\n (list: any) => list._targetListIndex === targetIndex,\n );\n\n onSetFieldValue(`settings.personLists[${currentListRealIndex}]._targetListIndex`, targetIndex);\n onSetFieldValue(`settings.personLists[${targetListRealIndex}]._targetListIndex`, currentIndex);\n };\n\n const handleDeleteList = (index: number) => {\n // (Note - Dylan) adjusting _targetListIndex to reflect the new total number of lists\n for (let i = index + 1; i < personLists.length; i++) {\n const list = personLists[i];\n onSetFieldValue(`settings.personLists[${i}]._targetListIndex`, list._targetListIndex - 1);\n }\n\n onSetFieldValue(\n 'settings.personLists',\n personLists.length > 1\n ? personLists.filter((_list: any, i: number) => i !== index)\n : [DEFAULT_INITIAL_LIST],\n );\n\n index &&\n personLists.length > index + 1 &&\n handleReorderLists(index, personLists[index]._targetListIndex);\n\n setDialogOpen(false);\n };\n\n return (\n
    \n \n \n \n
    \n
    \n
    \n Lists (3 Max)\n \n
    \n \n
    \n \n
    \n\n \n Add up to three date-based lists to this single widget. If there is more than one\n list, they will appear as tabs within the widget.\n \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n {personLists.map((list: PersonListsByDatePersonList, index: number) => {\n return (\n
    \n {list._onPresetSelectStep ? (\n \n ) : (\n \n )}\n
    \n );\n })}\n
    \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {},\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n listDisplayContainer: {\n marginTop: theme.spacing(),\n },\n listDisplayRoot: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n maxHeight: 30,\n backgroundColor: transparentize(0.92, theme.palette.secondary.main),\n borderRadius: theme.spacing(0.5),\n marginBottom: theme.spacing(),\n padding: theme.spacing(),\n },\n listDisplayPosition: {\n marginRight: theme.spacing(0.5),\n },\n listDisplayName: {\n fontWeight: theme.typography.fontWeightSemiBold,\n },\n}));\n\nexport default PersonListsByDateWidgetSettings;\n","import React, { useEffect, useState } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport _get from 'lodash/get';\nimport _keyBy from 'lodash/keyBy';\nimport _isEmpty from 'lodash/isEmpty';\nimport _isEqual from 'lodash/isEqual';\nimport _omit from 'lodash/omit';\nimport _orderBy from 'lodash/orderBy';\nimport { Prompt, useLocation } from 'react-router';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useStatus, useData, isLoading, isNormal } from 'resift';\nimport usePrevious from '@sift/resift/usePrevious';\nimport getHostName from 'helpers/getHostName';\nimport getRichTextCharCount from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/getRichTextCharCount';\nimport makeUpdateWidget from 'fetches/homepageWidgets/makeUpdateWidget';\nimport createWidgetLayout from 'fetches/homepageWidgets/createWidgetLayout';\nimport getWidgets from 'fetches/homepageWidgets/getWidgets';\nimport showSnackbar from 'helpers/showSnackbar';\nimport { Formik, Form } from 'formik';\nimport TextField from '@material-ui/core/TextField';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport LoadingButton from 'atoms/LoadingButton';\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 WidgetTypeCard from 'pages/Homepage/components/WidgetTypeCard';\nimport RichTextWidgetSettings from './widgetSettings/RichTextWidgetSettings';\nimport MyTeamWidgetSettings from './widgetSettings/MyTeamWidgetSettings';\nimport PersonListsByDateWidgetSettings from './widgetSettings/PersonsListByDateWidgetSettings/PersonsListByDateWidgetSettings';\nimport { Widget, WidgetUpdateRequest } from 'pages/Homepage/typings';\nimport {\n DEFAULT_RICH_TEXT_CONTENT,\n MAX_CHAR_COUNT_RICH_TEXT,\n MAX_CHAR_COUNT_NAME,\n RICH_TEXT_TYPE_ID,\n MY_TEAM_TYPE_ID,\n PERSONS_LISTS_BY_DATE_TYPE_ID,\n MAX_CHAR_COUNT_DESCRIPTION,\n WIDGET_NAME_FIELD_DESCRIPTION,\n PREVIEW_PARAM_NAME,\n} from 'pages/Homepage/components/WidgetEdit/widgetSettings/RichTextWidgetSettings/helpers/consts';\n\nconst WIDGET_SETTINGS = {\n [RICH_TEXT_TYPE_ID]: {\n nameFieldDescription: WIDGET_NAME_FIELD_DESCRIPTION,\n Component: RichTextWidgetSettings,\n },\n [MY_TEAM_TYPE_ID]: {\n nameFieldDescription: WIDGET_NAME_FIELD_DESCRIPTION,\n Component: MyTeamWidgetSettings,\n },\n [PERSONS_LISTS_BY_DATE_TYPE_ID]: {\n nameFieldDescription: WIDGET_NAME_FIELD_DESCRIPTION,\n Component: PersonListsByDateWidgetSettings,\n },\n};\n\ninterface Props {\n onDone: () => void;\n}\n\nfunction WidgetEdit({ onDone }: Props) {\n const classes = useStyles();\n const location = useLocation();\n const dispatch = useDispatch();\n const widgetId = location.pathname.split('/').pop() as string;\n const widgets: Array = useSelector(state => _get(state, ['homepageWidgets', 'widgets']));\n const [shouldReset, setShouldReset] = useState(false);\n const widgetNames = !widgets.length ? [] : widgets.map(w => w.name);\n const _widget = widgets.find(w => w.id === widgetId) as Widget;\n const widget =\n _get(_widget, 'widgetTypeId') === RICH_TEXT_TYPE_ID\n ? {\n ..._widget,\n settings: {\n ..._widget.settings,\n richTextDefault: _get(_widget, ['settings', 'richTextDefault'])\n ? JSON.parse(_get(_widget, ['settings', 'richTextDefault']))\n : JSON.parse(DEFAULT_RICH_TEXT_CONTENT),\n richTextExpanded: _get(_widget, ['settings', 'richTextExpanded'])\n ? JSON.parse(_get(_widget, ['settings', 'richTextExpanded']))\n : JSON.parse(DEFAULT_RICH_TEXT_CONTENT),\n },\n }\n : _widget;\n\n const widgetTypeId = _get(widget, 'widgetTypeId');\n\n // (note - Pearl) Temporarily removing preview widget button\n // const prevPreviewLayoutData = usePrevious(previewLayoutData);\n // const previewLayoutData = useData(createWidgetLayout);\n // const previewLayoutCreateStatus = useStatus(createWidgetLayout);\n // const clientSubdomain = useSelector((state: any) => state.client.subdomain);\n // const hostName = getHostName();\n // useEffect(() => {\n // if (isNormal(previewLayoutCreateStatus) && prevPreviewLayoutData !== previewLayoutData) {\n // window.open(\n // `https://${clientSubdomain}.${hostName}.com?${PREVIEW_PARAM_NAME}=${previewLayoutData.id}`,\n // '_blank',\n // );\n // }\n // }, [prevPreviewLayoutData, previewLayoutData, previewLayoutCreateStatus]);\n\n if (!widget) {\n return null;\n }\n\n const updateWidget = makeUpdateWidget(widgetId);\n const updateWidgetStatus = useStatus(updateWidget);\n\n showSnackbar({\n status: updateWidgetStatus,\n message: 'Successfully updated widget.',\n variant: 'success',\n errorMessage: 'An error occurred while updating the widget.',\n });\n\n // @ts-ignore\n const widgetSettings = WIDGET_SETTINGS[widgetTypeId];\n const SettingsComponent = widgetSettings.Component;\n\n const handleCreateWidgetPreview = () => {\n dispatch(createWidgetLayout({ widgets: [{ id: widget.id }] }));\n };\n\n const handleValidate = (values: any) => {\n let errors: any = {};\n const name = _get(values, 'name');\n const richTextDefault = _get(values, ['settings', 'richTextDefault']);\n const richTextExpanded = _get(values, ['settings', 'richTextExpanded']);\n const personLists = _get(values, ['settings', 'personLists']);\n\n if (!name.length) {\n errors.name = 'Name is required';\n }\n\n if (widgetNames.includes(name) && name !== widget.name) {\n errors.name = 'This name already exists, please use a different name';\n }\n\n if (name.length > MAX_CHAR_COUNT_NAME) {\n errors.name = `Name cannot be more than ${MAX_CHAR_COUNT_NAME} characters`;\n }\n\n if (richTextDefault || richTextExpanded) {\n const richTextDefaultCharCount = getRichTextCharCount(richTextDefault);\n const richTextExpandedCharCount = getRichTextCharCount(richTextExpanded);\n\n if (!richTextDefaultCharCount) {\n errors.richTextDefault = 'Default content is required';\n }\n\n if (richTextDefaultCharCount > MAX_CHAR_COUNT_RICH_TEXT) {\n errors.richTextDefault = `Default content cannot be more than ${MAX_CHAR_COUNT_RICH_TEXT} characters`;\n }\n\n if (richTextExpandedCharCount > MAX_CHAR_COUNT_RICH_TEXT) {\n errors.richTextExpanded = `Expanded content cannot be more than ${MAX_CHAR_COUNT_RICH_TEXT} characters`;\n }\n }\n\n if (personLists) {\n personLists.map((list: any, index: number) => {\n const baseListKey = `personLists[${index}]`;\n\n if (list._onPresetSelectStep) {\n errors[`${baseListKey}._onPresetSelectStep`] = `List #${list._targetListIndex +\n 1}: Please confirm list preset`;\n } else {\n if (personLists.length > 1) {\n if (!list.name) {\n errors[`${baseListKey}.name`] = 'List name is required';\n }\n }\n\n if (!list.fieldObjectKey) {\n errors[`${baseListKey}.fieldObjectKey`] = 'Source Date Attribute is required';\n }\n }\n });\n }\n return errors;\n };\n\n return (\n {}} validate={handleValidate}>\n {props => {\n const { values, setFieldValue, dirty, resetForm, errors } = props;\n const widgetName = _get(values, 'name', '');\n const description = values.description;\n const defaultRichTextValue = _get(values, ['settings', 'richTextDefault']);\n const expandedRichTextValue = _get(values, ['settings', 'richTextExpanded']);\n\n const handleUpdateWidget = async () => {\n const widgetUpdateRequest: WidgetUpdateRequest = {};\n\n if (widgetName !== widget.name) {\n widgetUpdateRequest.name = widgetName;\n }\n\n if (description && description !== widget.description) {\n widgetUpdateRequest.description = description;\n }\n\n if (!_isEqual(values.settings, widget.settings)) {\n if (widget.widgetTypeId === RICH_TEXT_TYPE_ID) {\n if (\n _get(values, ['settings', 'richTextDefault']) !==\n _get(widget, ['settings', 'richTextDefault'])\n ) {\n const richTextDefaultCharCount = getRichTextCharCount(defaultRichTextValue);\n\n if (richTextDefaultCharCount) {\n widgetUpdateRequest.settings = {\n ...widgetUpdateRequest.settings,\n richTextDefault: JSON.stringify(defaultRichTextValue),\n };\n } else {\n widgetUpdateRequest.settings = {\n ...widgetUpdateRequest.settings,\n richTextDefault: null,\n };\n }\n }\n\n if (\n _get(values, ['settings', 'richTextExpanded']) !==\n _get(widget, ['settings', 'richTextExpanded'])\n ) {\n const richTextExpandedCharCount = getRichTextCharCount(expandedRichTextValue);\n\n if (richTextExpandedCharCount) {\n widgetUpdateRequest.settings = {\n ...widgetUpdateRequest.settings,\n richTextExpanded: JSON.stringify(expandedRichTextValue),\n };\n } else {\n widgetUpdateRequest.settings = {\n ...widgetUpdateRequest.settings,\n richTextExpanded: null,\n };\n }\n }\n } else if (widget.widgetTypeId === PERSONS_LISTS_BY_DATE_TYPE_ID) {\n const personLists = (values.settings && values.settings.personLists) || [];\n const orderedPersonLists = _orderBy(personLists, '_targetListIndex');\n widgetUpdateRequest.settings = {\n ...values.settings,\n personLists: orderedPersonLists,\n };\n } else {\n widgetUpdateRequest.settings = values.settings;\n }\n }\n\n await dispatch(updateWidget(widgetUpdateRequest));\n await dispatch(getWidgets(true));\n resetForm();\n onDone();\n };\n\n const handleCancel = () => {\n resetForm();\n setShouldReset(true);\n };\n\n const handleResetShouldReset = () => {\n setShouldReset(false);\n };\n\n return (\n
    \n
    \n \n \n
    \n Name\n \n {widgetSettings.nameFieldDescription}\n \n setFieldValue('name', e.target.value)}\n InputLabelProps={{\n classes: {\n root: classes.inputLabel,\n focused: classes.cssFocused,\n },\n }}\n inputProps={{\n maxLength: MAX_CHAR_COUNT_NAME,\n 'aria-label': 'widget name',\n }}\n helperText={errors.name && errors.name}\n />\n
    \n {widgetName.length}/{MAX_CHAR_COUNT_NAME}\n
    \n
    \n
    \n
    \n \n \n
    \n Description (Optional)\n \n This description will appear near the title of the widget to provide\n additional context.\n \n setFieldValue('description', e.target.value)}\n InputLabelProps={{\n classes: {\n root: classes.inputLabel,\n focused: classes.cssFocused,\n },\n }}\n multiline\n inputProps={{\n maxLength: MAX_CHAR_COUNT_DESCRIPTION,\n 'aria-label': 'widget description',\n }}\n />\n\n
    \n {_get(description, 'length', 0)}/{MAX_CHAR_COUNT_DESCRIPTION}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n {/* (note - Pearl) Temporarily removing preview widget button */}\n {/* */}\n
    \n\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 row: {\n marginBottom: theme.spacing(3),\n },\n inputLabel: {\n '&$cssFocused': {\n color: theme.palette.secondary.main,\n },\n },\n cssFocused: {},\n characterCount: {\n height: 18,\n display: 'flex',\n justifyContent: 'flex-end',\n },\n card: {\n width: '100%',\n marginRight: theme.spacing(3),\n },\n left: {\n flex: 1,\n marginRight: theme.spacing(2.25),\n },\n}));\n\nexport default WidgetEdit;\n","import React, { useState, useEffect } from 'react';\nimport _get from 'lodash/get';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { useLocation, useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useStatus } from 'resift';\nimport { setWidgetTypes, setWidgets } from 'store/homepageWidgets';\nimport createWidget from 'fetches/homepageWidgets/createWidget';\nimport showSnackbar from 'helpers/showSnackbar';\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 CircularProgress from '@material-ui/core/CircularProgress';\nimport Loader from 'components/Loader';\nimport Page from 'components/Page/newComponents';\nimport BackButton from 'components/Page/BackButton';\nimport WidgetSelectType from 'pages/Homepage/components/WidgetSelectType';\nimport WidgetSetName from 'pages/Homepage/components/WidgetSetName';\nimport WidgetEdit from 'pages/Homepage/components/WidgetEdit';\nimport { HOME_URL, HOMEPAGE_URL, WIDGETS_URL } from 'components/Router/consts';\nimport { WidgetType, Widget } from 'pages/Homepage/typings';\n\ninterface Props {\n widgetTypes: Array;\n widgets: Array;\n status: number;\n}\n\nfunction WidgetConfiguration({ widgetTypes, widgets, status }: Props) {\n const location = useLocation();\n const history = useHistory();\n const classes = useStyles();\n const dispatch = useDispatch();\n const [currentSlideIndex, setSlideIndex] = useState(0);\n const widgetTypesInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n const widgetsInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgets']),\n );\n const createWidgetStatus = useStatus(createWidget);\n\n showSnackbar({\n status: createWidgetStatus,\n message: 'Successfully created widget.',\n variant: 'success',\n errorMessage: 'An error occurred while creating the widget.',\n });\n\n useEffect(() => {\n if (location.pathname.match(/create\\/types\\/.*/)) {\n setSlideIndex(1);\n } else if (location.pathname.includes('create/types')) {\n setSlideIndex(0);\n } else {\n setSlideIndex(2);\n }\n }, [location]);\n\n useEffect(() => {\n dispatch(setWidgetTypes(widgetTypes));\n dispatch(setWidgets(widgets));\n }, []);\n\n if (!widgetTypesInRedux || !widgetsInRedux) {\n return ;\n }\n\n const handleClose = () => {\n history.push(`${HOME_URL}${HOMEPAGE_URL}${WIDGETS_URL}`);\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 \n Configure Widget\n
    \n \n \n \n \n {() => currentSlideContent}\n \n \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n appBar: {\n position: 'relative',\n backgroundColor: '#2f2f32',\n },\n pageRoot: {\n display: 'flex',\n flex: '1 1 auto',\n height: 'calc(100vh - 64px)',\n },\n toolbar: {\n paddingRight: theme.spacing(4),\n },\n cancelButton: {\n marginRight: theme.spacing(1),\n },\n flex: {\n flex: 1,\n },\n paper: {\n background: '#F9FBFD',\n },\n backButtonIcon: {\n color: theme.palette.common.white,\n },\n}));\n\nexport default WidgetConfiguration;\n","import React, { useEffect } from 'react';\nimport _get from 'lodash/get';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { isLoading, isNormal, useStatus, useData, combineStatuses } from 'resift';\nimport getWidgetTypes from 'fetches/homepageWidgets/getWidgetTypes';\nimport getWidgets from 'fetches/homepageWidgets/getWidgets';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport WidgetConfiguration from './WidgetConfiguration';\nimport { WidgetType, Widget } from 'pages/Homepage/typings';\n\nfunction Container() {\n const dispatch = useDispatch();\n const widgetTypesStatus = useStatus(getWidgetTypes);\n const widgetTypesData = useData(getWidgetTypes);\n const widgetsStatus = useStatus(getWidgets);\n const widgetsData = useData(getWidgets);\n const status = combineStatuses(widgetTypesStatus, widgetsStatus);\n\n const widgetTypesInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgetTypes']),\n );\n const widgetsInRedux: Array = useSelector(state =>\n _get(state, ['homepageWidgets', 'widgets']),\n );\n\n useEffect(() => {\n if (!widgetTypesInRedux) {\n dispatch(getWidgetTypes());\n }\n\n if (!widgetsInRedux) {\n dispatch(getWidgets(true));\n }\n }, []);\n\n if (isLoading(status)) {\n return ;\n }\n\n if (!isNormal(status)) {\n return
    Something went wrong.
    ;\n }\n\n return (\n \n );\n}\n\nexport default Container;\n","// Helper\nimport { isDebugEnabled } from './Helper';\n\n// Pages\nimport AdministratorsPage from 'pages/Administrators';\nimport ApplicationsPage from 'pages/Applications';\nimport ApplicationEditPage from 'pages/ApplicationEdit';\nimport AttributesEditModalPage from 'pages/AttributesEditModal/AttributesEditModal';\nimport AttributeSocialPhotosPage from 'pages/AttributeSocialPhotos';\nimport DebugPage from 'pages/Debug';\nimport DirectoriesPage from 'pages/Directories';\nimport DirectoryPage from 'pages/Directory';\nimport FeaturesPage from 'pages/Features/Features';\nimport GeneralPage from 'pages/General/General';\nimport HomePage from 'pages/Home';\nimport HomepagePage from 'pages/Homepage';\nimport InvitesPage from 'pages/Invites';\nimport NoRoutePage from 'pages/NoRoute';\nimport SiftBotPage from 'pages/SiftBot';\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 SourceWizardPage from 'pages/Directory/Wizard';\nimport PagesPage from 'pages/Pages';\nimport PageTypesPage from 'pages/PageTypes';\nimport PersonPage from 'pages/Person';\nimport PersonProfilesPage from 'pages/PersonProfilesPage';\nimport WidgetConfiguration from 'pages/Homepage/components/WidgetConfiguration';\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';\nimport WidgetsIcon from '@material-ui/icons/Widgets';\n\n// Types\nimport { Route } from './types';\n\nimport {\n ADMIN_URL,\n APPLICATIONS_URL,\n APP_CREATE_URL,\n ATTRIBUTES_URL,\n DEBUG_URL,\n DIRECTORIES_URL,\n DYNAMIC_PAGES_URL,\n FEATURES_URL,\n GENERAL_URL,\n HOME_URL,\n HOMEPAGE_URL,\n PERSON_PROFILE_URL,\n SOURCE_URL,\n SOURCE_CREATE_URL,\n USERS_URL,\n WIDGETS_URL,\n} from './consts';\n\nimport { CSV_WIZARD_URL } from 'pages/Directory/consts';\n\n// (note - pearl) The following routes are in alphabetical order\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 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 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 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 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 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 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 Homepage: Route = {\n name: 'Homepage',\n title: 'Homepage',\n path: `${HOME_URL}${HOMEPAGE_URL}/:tab?`,\n component: HomepagePage,\n Icon: WidgetsIcon,\n exact: true,\n navExact: true,\n};\n\nexport const HomepageWidgetConfiguration: Route = {\n name: 'HomepageWidgetConfiguration',\n title: 'Homepage Widget Configuration',\n path: [\n `${HOME_URL}${WIDGETS_URL}/:widgetId`,\n `${HOME_URL}${WIDGETS_URL}/create/types`,\n `${HOME_URL}${WIDGETS_URL}/create/types/:typeName`,\n ],\n component: WidgetConfiguration,\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\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 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 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 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 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 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 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 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 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 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\n// (note - pearl) The following routes are not exported into `routes`\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 Documentation: Route = {\n name: 'Documentation',\n title: 'Documentation',\n path: 'https://intercom.help/sift',\n target: '_blank',\n isExternal: true,\n};\n\n// (note - pearl) Route order matters. For example, Directory route has to be exported after\n// SourceWizard to avoid SOURCE_CREATE_URL being identified as a directory id.\nconst routes: Route[] = [\n Home,\n Homepage,\n HomepageWidgetConfiguration,\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 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 { 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 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.values(flatten(errors));\n const firstErrorMessage = errorList[0] 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","// ------------------------------------\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 { 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';\nexport const RHDS_SOURCE_TYPE_KEY = 'rhds';\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\n// Mapping validation codes that are not tied to specific mapping rows\nexport const PRIMARY_MAPPING_NOT_SET = 'PrimaryMappingNotSet';\nexport const ORG_MAPPINGS_NOT_SET = 'OrgMappingsNotSet';\nexport const NO_VALID_ORG_REFERENCE_OPTIONS = 'NoValidOrgReferenceOptions';\nexport const REQUIRED_MAPPING_MISSING_ERROR_CODE = 'RequiredMappingNotSet';\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","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","export const ADMIN_URL = '/administrators';\nexport const APPLICATIONS_URL = '/applications';\nexport const APP_CREATE_URL = '/create-application';\nexport const ATTRIBUTES_URL = '/attributes';\n\nexport const DEBUG_URL = '/debug';\nexport const DIRECTORIES_URL = '/directories';\nexport const DYNAMIC_PAGES_URL = '/pages';\n\nexport const FEATURES_URL = '/feature-management';\n\nexport const GENERAL_URL = '/general';\n\nexport const HOME_URL = '/admin';\nexport const HOMEPAGE_URL = '/homepage';\n\nexport const PERSON_PROFILE_URL = '/person-profiles';\n\nexport const SOURCE_CREATE_URL = '/create-source';\nexport const SOURCE_URL = '/source';\n\nexport const USER_URL = '/user';\nexport const USERS_URL = '/users';\n\nexport const WIDGETS_URL = '/widgets';\nexport const WIDGETS_LAYOUT_URL = '/widgets-layout';\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","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 _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 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, setOverallCompletion, 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 if (Array.isArray(onboardingTasksFromAPI)) {\n dispatch(setOnboardingTasks(onboardingTasksFromAPI));\n } else {\n const { completionPercentage, taskCategories } = onboardingTasksFromAPI;\n\n dispatch(setOnboardingTasks(taskCategories));\n dispatch(setOverallCompletion(completionPercentage));\n }\n } else {\n const onboardingTasksArray = Array.isArray(onboardingTasksFromAPI)\n ? onboardingTasksFromAPI\n : onboardingTasksFromAPI.taskCategories;\n\n const categoryLookup = _keyBy(onboardingTasksArray, '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 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, { 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","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, 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 { 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 { 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 { 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 createReducer from '@sift/resift/createReducer';\nimport { WidgetType, Widget } from 'pages/Homepage/typings';\n\nexport interface State {\n widgetTypes: Array | null;\n widgets: Array | null;\n}\n\n// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SET_WIDGET_TYPES = 'SET_WIDGET_TYPES';\nexport const SET_WIDGETS = 'SET_WIDGETS';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const setWidgetTypes = (widgetTypes: Array) => {\n return {\n type: SET_WIDGET_TYPES,\n identifier: 'homepage-widgets',\n payload: {\n widgetTypes,\n },\n };\n};\n\nexport const setWidgets = (widgets: Array) => {\n return {\n type: SET_WIDGETS,\n identifier: 'homepage-widgets',\n payload: {\n widgets,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SET_WIDGET_TYPES]: (state: State, action: any) => {\n return {\n ...state,\n widgetTypes: action.payload.widgetTypes,\n };\n },\n [SET_WIDGETS]: (state: State, action: any) => {\n return {\n ...state,\n widgets: action.payload.widgets,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState: State = {\n widgetTypes: null,\n widgets: null,\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\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 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","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, { useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { setSlideKey, setBubbleSeenByUser, setPercentageButtonRef } from 'store/onboarding';\n\nimport Fab from '@material-ui/core/Fab';\nimport Typography from '@material-ui/core/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nimport { LIST_SLIDE_KEY } from 'components/onboarding/constants';\n\nimport { Theme } from 'styles/ThemeTyping';\n\ninterface Props {\n onOnboardingButtonClick: (_buttonName: string) => void;\n}\n\nfunction OnboardingListButton({ onOnboardingButtonClick }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const percentageButtonRef = useRef(null);\n\n const onboardingState = useSelector((state: any) => state.onboarding);\n\n const { bubbleSeenByUser, bubbleOpen, buttonName, overallCompletion } = onboardingState;\n\n const completionPercentage = Math.round(overallCompletion * 100);\n\n const handleToggleBubbleOpenOnPercentage = () => {\n !bubbleSeenByUser && dispatch(setBubbleSeenByUser());\n dispatch(setSlideKey(LIST_SLIDE_KEY));\n onOnboardingButtonClick('percentage');\n };\n\n useEffect(() => {\n dispatch(setPercentageButtonRef(percentageButtonRef));\n }, []);\n\n return (\n \n \n {completionPercentage}%\n \n \n \n );\n}\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n completion: {\n color: theme.palette.success.main,\n },\n completionPercentage: {\n position: 'absolute',\n },\n listButton: {\n backgroundColor: theme.palette.common.white,\n boxShadow: 'none',\n '&:hover': {\n backgroundColor: theme.palette.common.white,\n boxShadow: theme.shadows[5],\n },\n },\n activeButton: {\n boxShadow: theme.shadows[5],\n },\n };\n});\n\nexport default OnboardingListButton;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport classNames from 'classnames';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport useTaskList from 'components/onboarding/useTaskList';\nimport { setSlideKey, setBubbleSeenByUser, setTaskButtonRef } from 'store/onboarding';\n\nimport Button from '@material-ui/core/Button';\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\n\nimport { Theme } from 'styles/ThemeTyping';\n\ninterface Props {\n onOnboardingButtonClick: (_buttonName: string) => void;\n}\n\nfunction OnboardingTaskButton({ onOnboardingButtonClick }: Props) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const location = useLocation();\n\n const taskButtonRef = useRef(null);\n const taskList = useTaskList();\n const [taskTitle, setTaskTitle] = useState('');\n const onScreenTask = taskList && taskList.find(t => location.pathname.includes(t.pageStartUrl));\n\n const onboardingState = useSelector((state: any) => state.onboarding);\n\n const { bubbleSeenByUser, bubbleOpen, buttonName } = onboardingState;\n\n const handleToggleBubbleOpenOnTask = () => {\n !bubbleSeenByUser && dispatch(setBubbleSeenByUser());\n const onScreenTaskId = onScreenTask && onScreenTask.id;\n onScreenTaskId && dispatch(setSlideKey(onScreenTaskId));\n onOnboardingButtonClick('task');\n };\n\n useEffect(() => {\n if (!onScreenTask) {\n setTaskTitle('');\n } else {\n setTaskTitle(onScreenTask.title);\n }\n }, [location.pathname, onScreenTask]);\n\n useEffect(() => {\n dispatch(setTaskButtonRef(taskButtonRef));\n }, []);\n\n return (\n <>\n {taskTitle && (\n \n {taskTitle}\n \n \n )}\n \n );\n}\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n info: {\n color: theme.palette.grey[400],\n maxHeight: 20,\n maxWidth: 20,\n marginLeft: theme.spacing(0.5),\n },\n taskButton: {\n ...theme.typography.body2,\n textTransform: 'none',\n padding: theme.spacing(),\n marginRight: theme.spacing(2),\n '&:hover': {\n boxShadow: theme.shadows[5],\n },\n },\n activeButton: {\n boxShadow: theme.shadows[5],\n },\n };\n});\n\nexport default OnboardingTaskButton;\n","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { toggleBubbleOpen, trackButtonName } from 'store/onboarding';\n\n// UI\nimport AppBar from '@material-ui/core/AppBar';\nimport PersonMenu from '@sift/skipper/components/appBar/PersonMenu';\nimport OnboardingListButton from 'components/AppHeader/OnboardingListButton';\nimport OnboardingTaskButton from 'components/AppHeader/OnboardingTaskButton';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nfunction AppHeader({ person, classes, pictureUrl }) {\n const dispatch = useDispatch();\n const analytics = useAnalytics();\n\n const onboardingState = useSelector(state => state.onboarding);\n\n const { bubbleOpen, buttonName } = onboardingState;\n\n const handleOnboardingButtonClick = _buttonName => {\n if (buttonName === _buttonName) {\n dispatch(toggleBubbleOpen(false));\n dispatch(trackButtonName(null));\n } else {\n dispatch(trackButtonName(_buttonName));\n\n if (!bubbleOpen) {\n dispatch(toggleBubbleOpen(true));\n analytics.track('Onboarding Overlay opened', {\n category: 'AD - Onboarding',\n });\n }\n }\n };\n\n const avatarHeader = person.id ? (\n \n ) : null;\n\n return (\n \n
    \n \n \n {avatarHeader}\n
    \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 alignItems: 'center',\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 Features,\n General,\n Homepage,\n Pages,\n PersonProfiles,\n Users,\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, Homepage, 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","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Button from '@material-ui/core/Button';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\n\ninterface Props {\n onClose: () => void;\n}\n\nfunction TrialBannerForSmallScreens({ onClose }: Props) {\n const classes = useStyles();\n\n return (\n \n
    \n Please Read\n This experience is best on a laptop or desktop. \n
    \n\n
    \n \n
    \n
    \n );\n}\n\nconst useStyles = makeStyles((theme: any) => {\n return {\n root: {\n position: 'absolute',\n bottom: 0,\n zIndex: theme.zIndex.max,\n width: '100%',\n maxHeight: 134,\n padding: theme.spacing(2.5),\n border: `1px solid ${theme.palette.divider}`,\n [theme.breakpoints.up('sm')]: {\n display: 'none',\n },\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: theme.spacing(2),\n },\n buttonContainer: {\n display: 'flex',\n },\n button: {\n marginLeft: 'auto',\n textTransform: 'none',\n },\n };\n});\n\nexport default TrialBannerForSmallScreens;\n","// NOTE: this is old code\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\n// Components\nimport TrialBannerForSmallScreens from 'components/TrialBannerForSmallScreens/TrialBannerForSmallScreens';\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 const [bannerOpen, setBannerOpen] = useState(true);\n\n let sidebar;\n let content = [];\n\n const handleClose = () => {\n setBannerOpen(false);\n };\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 {bannerOpen && }\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';\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\ninterface Props {\n onClose: () => void;\n trialDaysRemaining: number;\n}\n\nfunction FreeTrialBanner({ onClose, trialDaysRemaining }: Props) {\n const classes = useStyles();\n\n return (\n
    \n
    \n
    \n \n
    \n \n If you need help getting your data into Sift, or would like to purchase your\n subscription, book a time with our client success team to get up and running.\n \n \n You have {trialDaysRemaining} days left in your trial.\n \n
    \n
    \n
    \n \n book a meeting\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 alignItems: 'center',\n width: '100%',\n height: '100%',\n [theme.breakpoints.down('sm')]: {\n flexWrap: 'wrap',\n },\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 display: 'flex',\n flexDirection: 'column',\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 { 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, slideKey, bubbleOpen: open } = onboardingState;\n\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\nconst useStyles = makeStyles(theme => ({\n root: {},\n stickyHeader: {\n position: 'sticky',\n top: 0,\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, useRef } from 'react';\nimport _get from 'lodash/get';\nimport { toggleBubbleOpen, setSlideKey, trackButtonName, 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 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 const overlayRef = useRef();\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 {\n bubbleOpen: open,\n slideKey,\n prevSlideKey,\n taskButtonRef,\n percentageButtonRef,\n } = 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 clickOutsideBubble = (e: any) => {\n const clickIsOutOfBubble = overlayRef.current && !overlayRef.current.contains(e.target);\n const clickIsOutOfTaskButton = !_get(taskButtonRef, 'current')\n ? true\n : Boolean(taskButtonRef.current && !taskButtonRef.current.contains(e.target));\n\n const clickIsOutOfPercentageButton =\n percentageButtonRef &&\n percentageButtonRef.current &&\n !percentageButtonRef.current.contains(e.target);\n\n if (open && clickIsOutOfBubble && clickIsOutOfTaskButton && clickIsOutOfPercentageButton) {\n dispatch(toggleBubbleOpen(false));\n dispatch(trackButtonName(null));\n }\n };\n\n useEffect(() => {\n document.addEventListener('mousedown', clickOutsideBubble);\n\n return () => document.removeEventListener('mousedown', clickOutsideBubble);\n }, [open]);\n\n const Component: React.ReactNode = getBubbleComponent(slideKey);\n\n return (\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 top: theme.spacing(8.125),\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 maxHeight: 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 to be signed into an administrative 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: `By clicking on “Authorize,” you will be taken to Google’s website to authorize Sift to connect with your company’s Google Workspace account. In order to successfully connect, you will need to be an administrator within your Google Workspace account.`,\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 _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","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 { 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","// 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 { createContext } from 'react';\n\nconst AnalyticsContext = createContext(null);\nAnalyticsContext.displayName = 'Analytics';\n\nexport default AnalyticsContext;\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 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 onSetFile: (file: any) => void;\n file: any;\n maxSize?: number;\n accept?: string;\n}\n\nfunction FileDrop({ onFileChange, onSetFile, file, hasError, errorText, maxSize, accept }: Props) {\n const classes = useStyles();\n const fileName = _get(file, 'name', null);\n\n const handleDrop = (files: any[]) => {\n const newFile = _first(files);\n onSetFile(newFile);\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 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 {\n INDEPENDENT_PAGE_TYPE,\n ATTRIBUTE_PAGE_TYPE,\n OPEN_ROLE_PAGE_TYPE,\n OPEN_ROLE_TYPE_KEY,\n} from 'helpers/consts';\nimport { PageType } from 'helpers/typings';\n\nfunction getPageType(entityType: any): PageType {\n if (entityType.typeKey === OPEN_ROLE_TYPE_KEY) {\n return OPEN_ROLE_PAGE_TYPE;\n }\n\n if (entityType.personClientFieldId) {\n return ATTRIBUTE_PAGE_TYPE;\n }\n\n return INDEPENDENT_PAGE_TYPE;\n}\n\nexport default getPageType;\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","// 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 { 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 _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","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 overallCompletion: number;\n buttonName: string | null;\n taskButtonRef: any;\n percentageButtonRef: any;\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_OVERALL_COMPLETION = 'SET_OVERALL_COMPLETION';\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';\nexport const TRACK_BUTTON_NAME = 'TRACK_BUTTON_NAME';\nexport const SET_TASK_BUTTON_REF = 'SET_TASK_BUTTON_REF';\nexport const SET_PERCENTAGE_BUTTON_REF = 'SET_PERCENTAGE_BUTTON_REF';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport const setTaskButtonRef = (buttonRef: any) => {\n return {\n type: SET_TASK_BUTTON_REF,\n identifier: 'onboarding',\n payload: {\n buttonRef,\n },\n };\n};\n\nexport const setPercentageButtonRef = (buttonRef: any) => {\n return {\n type: SET_PERCENTAGE_BUTTON_REF,\n identifier: 'onboarding',\n payload: {\n buttonRef,\n },\n };\n};\n\nexport const toggleBubbleOpen = (open?: boolean) => {\n return {\n type: TOGGLE_ONBOARDING_BUBBLE_OPEN,\n identifier: 'onboarding',\n payload: {\n open,\n },\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 setOverallCompletion = (overallCompletion: number) => {\n return {\n type: SET_OVERALL_COMPLETION,\n identifier: 'onboarding',\n payload: {\n overallCompletion,\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\nexport const trackButtonName = (buttonName: string | null) => {\n return {\n type: TRACK_BUTTON_NAME,\n identifier: 'onboarding',\n payload: {\n buttonName,\n },\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SET_TASK_BUTTON_REF]: (state: State, action: any) => {\n return {\n ...state,\n taskButtonRef: action.payload.buttonRef,\n };\n },\n\n [SET_PERCENTAGE_BUTTON_REF]: (state: State, action: any) => {\n return {\n ...state,\n percentageButtonRef: action.payload.buttonRef,\n };\n },\n\n [TOGGLE_ONBOARDING_BUBBLE_OPEN]: (state: State, action: any) => {\n const open = action.payload.open;\n\n if (open) {\n return {\n ...state,\n bubbleOpen: open,\n };\n }\n\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_OVERALL_COMPLETION]: (state: State, action: any) => {\n return {\n ...state,\n overallCompletion: action.payload.overallCompletion,\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 };\n },\n\n [SET_BUBBLE_SEEN_BY_USER]: (state: State) => {\n return {\n ...state,\n bubbleSeenByUser: true,\n };\n },\n\n [TRACK_BUTTON_NAME]: (state: State, action: any) => {\n const buttonName = action.payload.buttonName;\n\n return {\n ...state,\n buttonName: buttonName,\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 overallCompletion: 0,\n buttonName: null,\n taskButtonRef: null,\n percentageButtonRef: null,\n};\n\nexport default createReducer(initialState, ACTION_HANDLERS);\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 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 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","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","import React from 'react';\nimport useAnalytics from 'helpers/useAnalytics';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { setSlideKey, setTaskIdInFocus, toggleBubbleOpen } 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 isOnHomePage && dispatch(toggleBubbleOpen());\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 homepageWidgets from './homepageWidgets';\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 homepageWidgets,\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","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 { 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 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 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","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","export { default } from './withSource';\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 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 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, { 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","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 { 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 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 _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 if (!initialMapping) {\n return false;\n }\n\n if (!initialMapping.id) {\n return false;\n }\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 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') &&\n !!_get(submittedMapping, 'customProps') &&\n _get(initialMapping, `customProps.mappingSubSource`) !==\n _get(submittedMapping, `customProps.mappingSubSource`);\n\n return (\n destinationsDontMatch ||\n sourcesDontMatch ||\n isUniqueDontMatch ||\n isRequiredDontMatch ||\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 orgMappingsSet: boolean,\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 const currentMatchMapping = orgMappings[TL_MATCH_MAPPING_INDEX];\n const initialMatchMapping = initialOrgMappings[TL_MATCH_MAPPING_INDEX];\n const currentRefMapping = orgMappings[TL_REF_MAPPING_INDEX];\n const initialRefMapping = initialOrgMappings[TL_REF_MAPPING_INDEX];\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 initialHierarchyMapping.id &&\n (orgMappings.length === 0 || !currentMatchMapping.source || !currentRefMapping.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 // (note - pearl) No actions if\n // - org mappings has been set from a different source\n // - and no mappings are updated\n if (\n initialOrgMappings &&\n orgMappingsSet &&\n !isMappingUpdated(initialMatchMapping, currentMatchMapping) &&\n !isMappingUpdated(initialRefMapping, currentRefMapping)\n ) {\n return [];\n }\n\n // (note - pearl) Build action for match mapping\n buildBatchActions({\n refMapping: currentMatchMapping,\n initialHierarchyMapping: initialMatchMapping,\n sourceMappings,\n batchActions,\n sourceId: _get(initialHierarchyMapping, 'sourceId') || sourceId,\n });\n\n // (note - pearl) Build action for ref mapping\n buildBatchActions({\n refMapping: currentRefMapping,\n initialHierarchyMapping: initialRefMapping,\n sourceMappings,\n batchActions,\n sourceId: _get(initialHierarchyMapping, 'sourceId') || sourceId,\n });\n\n // (note - pearl) Create hierarchy mapping if it doesn't exist\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 (!!_get(refMapping, 'source') && (!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 RHDS_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 [RHDS_SOURCE_TYPE_KEY]: 'RHDS 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 { useLocation } from 'react-router';\n\nimport { MAP_ATTRIBUTES_URL, CSV_WIZARD_URL } from 'pages/Directory/consts';\n\nfunction useIsInWizard() {\n const location = useLocation();\n const { pathname } = location;\n\n return pathname.includes(MAP_ATTRIBUTES_URL) || pathname.includes(CSV_WIZARD_URL);\n}\n\nexport default useIsInWizard;\n","import React, { useState, useContext } from 'react';\nimport _get from 'lodash/get';\nimport useAnalytics from 'helpers/useAnalytics';\nimport MappingsContext from 'helpers/MappingsContext';\nimport useIsInWizard from 'helpers/useIsInWizard';\nimport * as MappingTypes from 'types/Mapping';\nimport { CSV_SOURCE_TYPE_KEY } 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';\nimport Tooltip from '@material-ui/core/Tooltip';\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 isInWizard = useIsInWizard();\n const shouldAllowAddCustomProperty = !(\n isInWizard &&\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}-mappings-dropdown-item`}\n >\n \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 classNames from 'classnames';\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 Tooltip from '@material-ui/core/Tooltip';\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 sourceAttrOptions: any;\n isDisabled?: boolean;\n}\n\nfunction SourceSelector({\n placeholderText: _placeholderText,\n onChange,\n value,\n isSourceCollapsed = false,\n isCsvSource,\n sourceAttrOptions,\n isDisabled,\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 { 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: any[]) => {\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\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 disabled: {\n color: theme.palette.text.disabled,\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 sourceAttrOptions: any;\n isDisabled?: boolean;\n}\n\nfunction Container({\n placeholderText,\n onChange,\n value,\n isSourceCollapsed,\n isCsvSource,\n sourceAttrOptions,\n isDisabled,\n}: 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 if (!description) {\n return
    {iconLookup[status]}
    ;\n }\n\n return (\n
    \n }>\n {iconLookup[status]}\n \n
    \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n float: 'right',\n maxHeight: 24,\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 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 Tooltip from '@material-ui/core/Tooltip';\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, sourceAttrOptions } = 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 \n
    \n {sourceName}\n
    \n
    \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 && !isPrimaryMapping && (\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 from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction AccordionSectionHeader({ children }: Props) {\n const classes = useStyles();\n\n return (\n } className={classes.accordionSummary}>\n {children}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n accordionSummary: {\n alignItems: 'center',\n padding: 0,\n margin: 0,\n '& .MuiAccordionSummary-content': {\n margin: 0,\n },\n '& .MuiAccordionSummary-expandIcon': {\n marginRight: theme.spacing(0.5),\n },\n },\n}));\n\nexport default AccordionSectionHeader;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction AccordionSectionContent({ children }: Props) {\n const classes = useStyles();\n return {children};\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n accordionContent: {\n flexDirection: 'column',\n padding: 0,\n margin: 0,\n },\n}));\n\nexport default AccordionSectionContent;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nfunction AccordionSectionButtonContainer({ children }: Props) {\n const classes = useStyles();\n return
    {children}
    ;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: 24,\n paddingTop: 16,\n },\n}));\n\nexport default AccordionSectionButtonContainer;\n","import React from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport MappingProps, { MappingValidationResult } from 'types/Mapping';\nimport pluralize from 'pluralize';\nimport _compact from 'lodash/compact';\nimport _flatten from 'lodash/flatten';\nimport _uniq from 'lodash/uniq';\nimport _partition from 'lodash/partition';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport ValidationStatusIndicator from 'atoms/ValidationStatusIndicator';\n\ninterface Props {\n mappings: MappingProps[];\n errorsNotTiedToSpecificMappingRows?: MappingValidationResult[];\n}\n\nfunction OverallValidationStatus({ mappings, errorsNotTiedToSpecificMappingRows = [] }: Props) {\n const classes = useStyles();\n const mappingValidationChecks = _flatten(mappings.map(m => m.validation));\n const validationChecks = _uniq(\n _compact([...mappingValidationChecks, ...errorsNotTiedToSpecificMappingRows]),\n );\n\n if (!validationChecks.length) {\n return (\n
    \n \n
    \n );\n }\n\n const [errors, warnings] = _partition(validationChecks, vc => vc.type === 'error');\n\n // (note - pearl) Show warnings ONLY WHEN there are no errors\n if (!errors.length) {\n const renderWarningCount = () => (\n \n {warnings.length} {pluralize('warning', warnings.length)}\n \n );\n\n if (warnings.length === 1) {\n return (\n }\n >\n
    \n \n {renderWarningCount()}\n
    \n \n );\n }\n\n return (\n
    \n \n {renderWarningCount()}\n
    \n );\n }\n\n const renderErrorCount = () => (\n \n {errors.length} {pluralize('error', errors.length)}\n \n );\n\n if (errors.length === 1) {\n return (\n }\n >\n
    \n \n {renderErrorCount()}\n
    \n \n );\n }\n\n return (\n
    \n \n {renderErrorCount()}\n
    \n );\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n text: {\n marginLeft: theme.spacing(),\n color: theme.colors.gray1,\n },\n}));\n\nexport default OverallValidationStatus;\n","import React, { useContext, useMemo } from 'react';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useHistory } from 'react-router';\nimport { useData } from 'resift';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\nimport getSourceHeaderCopy from 'components/Mappings/_helpers/getSourceHeaderCopy';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport MappingsContext from 'helpers/MappingsContext';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport Accordion from '@material-ui/core/Accordion';\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 'components/Mappings/MappingsRow';\nimport AccordionSectionHeader from 'molecules/AccordionSectionHeader';\nimport AccordionSectionContent from 'molecules/AccordionSectionContent';\nimport AccordionSectionButtonContainer from 'molecules/AccordionSectionButtonContainer';\nimport OverallValidationStatus from 'components/Mappings/OverallValidationStatus';\nimport { MAP_ATTRIBUTES_URL, PRIMARY_MAPPING_NOT_SET } from 'pages/Directory/consts';\n\ninterface Props {\n mappings: MappingProps[];\n isExpanded: boolean;\n onDeleteMapping: (indexToDelete: number) => void;\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps) => void;\n onNextStep: () => void;\n onToggleExpansion: () => void;\n}\n\nfunction PrimaryKeyMapping({\n mappings,\n isExpanded,\n onDeleteMapping,\n onUpdateMapping,\n onNextStep,\n onToggleExpansion,\n}: Props) {\n const classes = useStyles();\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 validateMappings = makeValidateMappings(source.id);\n const validationResponse = useData(validateMappings);\n const validationResults = _get(validationResponse, 'validationResults');\n const { isPrimary, type } = source;\n\n const ValidationStatus = useMemo(() => {\n const otherOrgMappingIssues = !_isEmpty(validationResults)\n ? validationResults.filter(\n (vr: MappingTypes.MappingValidationResult) => vr.code === PRIMARY_MAPPING_NOT_SET,\n )\n : undefined;\n\n return (\n \n );\n }, [mappings]);\n\n const renderCardHeader = () => {\n return (\n \n );\n };\n\n const renderDetails = () => {\n return (\n \n
    \n {isPrimary ? (\n \n The Unique Identifier defines a person’s identity in Sift. It should be something that\n is unique to each imported person, and should ideally never change. We recommend\n something like an employee id, but if that’s not available you could\n also use something like an email address.\n \n ) : (\n \n The Unique Identifier defines a person’s identity in Sift and is used to connect data\n from this data source to the profiles created from your Primary source. The values in\n this property should match the associated unique identifiers provided in the primary\n 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 {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 return (\n <>\n {!onSourceCreationWizardMappings ? (\n <>\n {renderCardHeader()}\n {renderDetails()}\n \n ) : (\n \n {renderCardHeader()}\n \n {renderDetails()}\n \n \n \n \n \n )}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n cardHeader: {\n width: '100%',\n },\n helpText: {\n marginBottom: theme.spacing(),\n },\n helpTextNote: {\n marginTop: theme.spacing(3),\n },\n accordion: {\n padding: 0,\n margin: 0,\n },\n cardContent: {\n paddingTop: 0,\n },\n action: {\n margin: 0,\n alignSelf: 'center',\n },\n}));\n\nexport default PrimaryKeyMapping;\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 ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n} from 'pages/Directory/consts';\nimport sourceTypes from 'consts/sourceTypes';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport SourceType from 'types/Source';\n\ninterface Props {\n mappingIndex: number;\n mapping?: MappingProps;\n disabled?: boolean;\n existingTlMatchMapping?: MappingProps; //(note pearl) Optional prop for CSV auto tlRef detect case\n source: SourceType;\n destination: 'tlRef' | 'tlMatch';\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps | MappingProps[]) => void;\n options: any[];\n}\n\nfunction OrgSourceMapping({\n mappingIndex,\n source,\n destination,\n mapping = {} as MappingProps,\n existingTlMatchMapping,\n onUpdateMapping,\n disabled,\n options,\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 tlRefOptionsForCsv: MappingTypes.TlRefOption[] = _get(\n mappingAttributes,\n 'tlRefOptions',\n [],\n );\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 const isTlRefRow = destination === ORG_TEAM_LEADER_MAPPING_REF_KEY;\n const isTlMatchRow = destination === ORG_TEAM_LEADER_MAPPING_MATCH_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 // (note - pearl) When this row is for tlMatch or when there is no tlRefOptions (undefined)\n if (isTlMatchRow || !tlRefOptionsForCsv || !isCsvSource) {\n onUpdateMapping(mappingIndex, newMapping);\n }\n\n // (note - pearl) When this row is tlRef row and there are tlRef options available\n // we would update both tlRef and tlMatch on a tlRef select:\n // 1) when there is only one corresponding tlMatch, automatically select that\n // 2) when there are more than one corresponding tlMatch, reset tlMatch to default tlMatch,\n // with the prev tlMatch mapping id if there was one - setting the mapping id to prevent\n // the triggering of 'create' request, instead would trigger an 'update' request\n if (isTlRefRow && isCsvSource) {\n const selectedTlRefOption = tlRefOptionsForCsv.find(item => item.sourcePath === sourceValue);\n const hasSingleTlMatchOption = _get(selectedTlRefOption, ['tlMatchOptions', 'length']) === 1;\n const _defaultTlMatchMapping = DEFAULT_EMPTY_ORG_MAPPINGS[0];\n const existingTlMatchMappingId = _get(existingTlMatchMapping, 'id');\n\n if (hasSingleTlMatchOption) {\n const singleTlMatchSourceValue = _get(selectedTlRefOption, [\n 'tlMatchOptions',\n '0',\n 'sourcePath',\n ]) as string;\n\n const newTlMatchMapping: MappingProps = {\n ..._defaultTlMatchMapping,\n source: singleTlMatchSourceValue,\n type: 'logistical',\n id: existingTlMatchMappingId,\n collectionItemType: null,\n collectionItemCustomType: null,\n destination: ORG_TEAM_LEADER_MAPPING_MATCH_KEY,\n };\n\n onUpdateMapping(0, [newTlMatchMapping, newMapping]);\n } else {\n const defaultTlMatchMapping = {\n ..._defaultTlMatchMapping,\n id: existingTlMatchMappingId,\n };\n onUpdateMapping(mappingIndex, [defaultTlMatchMapping, newMapping]);\n }\n }\n };\n\n const handleCollectionChange = (newMapping: MappingProps) => {\n onUpdateMapping(mappingIndex, {\n ...newMapping,\n destination,\n });\n };\n\n const handleClearMapping = () => {\n const defaultMapping = isTlRefRow\n ? DEFAULT_EMPTY_ORG_MAPPINGS[1]\n : DEFAULT_EMPTY_ORG_MAPPINGS[0];\n\n onUpdateMapping(mappingIndex, {\n ...defaultMapping,\n destination,\n });\n\n // (note - pearl) When it's a tlRef row and that we automatically detect tlMatch (when\n // tlRefOptions is defined, including []), clearing the tlRef would also need to clear tlMatch\n if (isTlRefRow && !!tlRefOptionsForCsv && isCsvSource) {\n onUpdateMapping(mappingIndex, DEFAULT_EMPTY_ORG_MAPPINGS);\n }\n };\n\n return (\n <>\n \n \n {isTlRefRow && (\n \n Direct Manager {isCsvSource ? 'Header' : 'Property'}\n \n )}\n {isTlMatchRow && (\n \n Employee {isCsvSource ? 'Header' : 'Property'}\n \n )}\n
    \n \n
    \n
    \n \n {sampleData}\n \n {value && }\n \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 paddingTop: theme.spacing(4),\n },\n noSampleData: {\n color: theme.palette.text.disabled,\n },\n disabledRow: {\n color: theme.palette.text.disabled,\n },\n disabledSelector: {\n pointerEvents: 'none',\n },\n collectionMappingRow: {\n backgroundColor: theme.palette.grey[100],\n },\n warning: {\n color: theme.palette.warning.main,\n width: 'fit-content',\n marginLeft: 'auto',\n paddingTop: theme.spacing(4),\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 \n \n \n \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 from 'react';\n\nimport Link from '@material-ui/core/Link';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport WarningIcon from '@material-ui/icons/Warning';\n\nfunction NoManagerInfoCopy() {\n const classes = useStyles();\n\n return (\n
    \n \n \n No valid manager column was detected in your file. In order to create your org chart, you\n need to correctly set up a column that properly references a person’s manager. Use “+ Upload\n a New CSV” in the Mappings Summary to make changes to your data. For more information on\n setting up this column, click{' '}\n \n here\n \n .\n \n
    \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n marginLeft: theme.spacing(3),\n display: 'flex',\n },\n warning: {\n color: theme.palette.warning.main,\n marginRight: theme.spacing(),\n },\n}));\n\nexport default NoManagerInfoCopy;\n","import React, { useContext, useMemo } from 'react';\nimport { useData } from 'resift';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useHistory } from 'react-router';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport withSource from 'components/withSource/withSource';\nimport MappingsContext from 'helpers/MappingsContext';\nimport useIsInWizard from 'helpers/useIsInWizard';\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 Accordion from '@material-ui/core/Accordion';\nimport Button from '@material-ui/core/Button';\nimport TableBody from '@material-ui/core/TableBody';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\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 OverallValidationStatus from 'components/Mappings/OverallValidationStatus';\nimport makeGetMappingsAttributes from 'fetches/makeGetMappingsAttributes';\nimport getSourceHeaderCopy from 'components/Mappings/_helpers/getSourceHeaderCopy';\nimport AccordionSectionHeader from 'molecules/AccordionSectionHeader';\nimport AccordionSectionContent from 'molecules/AccordionSectionContent';\nimport AccordionSectionButtonContainer from 'molecules/AccordionSectionButtonContainer';\nimport NoManagerInfoCopy from './NoManagerInfoCopy';\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 ORG_MAPPINGS_NOT_SET,\n NO_VALID_ORG_REFERENCE_OPTIONS,\n} from 'pages/Directory/consts';\n\ninterface Props {\n directory: Directory;\n mappings: MappingProps[];\n isExpanded: boolean;\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps | MappingProps[]) => void;\n onNextStep: () => void;\n onToggleExpansion: () => void;\n}\n\nfunction OrgMapping({\n directory,\n mappings,\n isExpanded,\n onUpdateMapping,\n onNextStep,\n onToggleExpansion,\n}: Props) {\n const classes = useStyles();\n const history = useHistory();\n const mappingsContext: MappingTypes.MappingContext = useContext(MappingsContext);\n const { source, sourceAttrOptions } = mappingsContext;\n const [tlMatchMapping, tlRefMapping] = mappings;\n const isCsvSource = source.type === CSV_SOURCE_TYPE_KEY;\n const getMappingsAttributes = makeGetMappingsAttributes(source.id);\n const mappingAttributes = useData(getMappingsAttributes);\n const isInWizard = useIsInWizard();\n const tlRefOptionsForCsv: Array<{\n sourcePath: string;\n tlMatchOptions: Array<{\n sourcePath: string;\n }>;\n }> = _get(mappingAttributes, 'tlRefOptions', []);\n // (note - pearl) When a csv file upload has been skipped, tlRefOptions would be undefined and\n // we should use the suggested sourceAttrOptions like other mapping rows\n const csvFileUploadSkipped = isCsvSource && _get(mappingAttributes, 'tlRefOptions') === undefined;\n const tlRefOptionStrings = csvFileUploadSkipped\n ? sourceAttrOptions\n : tlRefOptionsForCsv.map((option: any) => option.sourcePath);\n const tlRefOptionsEmptyForCsv =\n isCsvSource && !csvFileUploadSkipped && _isEmpty(tlRefOptionStrings);\n\n const selectedTlRefOption =\n !_isEmpty(tlRefOptionsForCsv) &&\n tlRefOptionsForCsv.find((item: any) => item.sourcePath === tlRefMapping.source);\n\n const tlMatchOptionsForCsv = _isEmpty(tlRefOptionsForCsv)\n ? sourceAttrOptions\n : !selectedTlRefOption\n ? []\n : selectedTlRefOption.tlMatchOptions.map((option: any) => option.sourcePath);\n\n const showTlMatchRow =\n (tlMatchOptionsForCsv && tlMatchOptionsForCsv.length > 1) ||\n !isCsvSource ||\n !tlRefOptionStrings.includes(_get(tlRefMapping, 'source'));\n\n const validateMappings = makeValidateMappings(source.id);\n const validationResponse = useData(validateMappings);\n const validationResults = _get(validationResponse, 'validationResults');\n\n const existingMappingsInfo = useExistingOrgMappingsInfo(directory, source.id);\n const onSourceCreationWizardMappings = history.location.pathname.includes(MAP_ATTRIBUTES_URL);\n const { orgMappingsSet, orgMappedToSourceId, orgMappedToSourceName } = existingMappingsInfo;\n\n const ValidationStatus = useMemo(() => {\n const otherOrgMappingIssues = !_isEmpty(validationResults)\n ? validationResults.filter((vr: MappingTypes.MappingValidationResult) =>\n [ORG_MAPPINGS_NOT_SET, NO_VALID_ORG_REFERENCE_OPTIONS].includes(vr.code),\n )\n : undefined;\n return (\n \n );\n }, [mappings]);\n\n const renderCardHeader = () => {\n return (\n <>\n {ValidationStatus}
    \n }\n />\n \n );\n };\n\n const renderDetails = () => {\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 {!orgMappingsSet && (\n <>\n {isCsvSource ? (\n \n To create your org chart, we need to know which column in your CSV file references\n a person’s direct manager. Please choose the column we should use\n from the list of valid columns below.\n \n ) : (\n \n To properly create your Org Chart, we need to understand how a person’s direct\n 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 manager property input, select the property that points to\n a person’s manager. In the Employee Property dropdown, select the\n property that the manager property is referencing on the associated person.\n
    \n )}\n \n \n \n {source.type ? getSourceHeaderCopy(source.type) : 'Other Source Property'}\n \n Preview Data\n \n \n \n \n\n {isCsvSource &&\n showTlMatchRow &&\n (tlRefMapping.source !== '' || !tlRefOptionStrings) && (\n
    \n
    \n \n \n For the above manager header, we weren’t able to correctly identify\n another column in your file that the manager header references. In the\n below dropdown, please choose the employee header that\n the manager header is referencing.\n \n
    \n
    \n \n
    \n
    \n )}\n\n {showTlMatchRow && (tlRefMapping.source !== '' || !tlRefOptionStrings) && (\n \n )}\n
    \n
    \n \n )}\n
    \n \n );\n };\n\n return (\n <>\n {!onSourceCreationWizardMappings || orgMappingsSet ? (\n <>\n {renderCardHeader()}\n {renderDetails()}\n {tlRefOptionsEmptyForCsv && isInWizard && !orgMappingsSet && }\n \n ) : (\n \n {renderCardHeader()}\n \n {renderDetails()}\n {tlRefOptionsEmptyForCsv && }\n \n \n \n \n \n )}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n cardHeader: {\n width: '100%',\n },\n subheaderCardHeader: {\n maxWidth: 1200,\n },\n description: {\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 display: 'flex',\n alignItems: 'center',\n },\n orgMappingHelper: {\n display: 'flex',\n flexDirection: 'column',\n minWidth: 933,\n marginTop: theme.spacing(2.25),\n },\n orgMappingHelperHeading: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n maxHeight: 18,\n marginLeft: theme.spacing(),\n marginBottom: theme.spacing(2),\n },\n infoIcon: {\n maxHeight: 20,\n maxWidth: 20,\n marginRight: theme.spacing(1.5),\n fill: theme.palette.grey[400],\n },\n accordion: {\n padding: 0,\n margin: 0,\n },\n cardContent: {\n paddingTop: 0,\n },\n action: {\n margin: 0,\n alignSelf: 'center',\n },\n}));\n\nexport default withSource(OrgMapping);\n","import React, { useContext, useMemo } from 'react';\nimport { useHistory } from 'react-router';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport { useData } from 'resift';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport getSourceHeaderCopy from 'components/Mappings/_helpers/getSourceHeaderCopy';\nimport MappingsContext from 'helpers/MappingsContext';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Link from '@material-ui/core/Link';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport Accordion from '@material-ui/core/Accordion';\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 OverallValidationStatus from 'components/Mappings/OverallValidationStatus';\nimport MappingsRow from '../MappingsRow';\nimport AccordionSectionHeader from 'molecules/AccordionSectionHeader';\nimport AccordionSectionContent from 'molecules/AccordionSectionContent';\n\nimport { HOME_URL, PERSON_PROFILE_URL } from 'components/Router/consts';\nimport {\n PROFILE_ATTR_MAPPING_TYPE_KEY,\n MAP_ATTRIBUTES_URL,\n REQUIRED_MAPPING_MISSING_ERROR_CODE,\n} from 'pages/Directory/consts';\n\ninterface Props {\n mappings: MappingProps[];\n isExpanded: boolean;\n onUpdateCard: (newMappings: MappingProps[]) => void;\n onDeleteMapping: (indexToDelete: number) => void;\n onUpdateMapping: (newMappingIndex: number, newMapping: MappingProps) => void;\n onToggleExpansion: () => void;\n}\n\nfunction ProfileAttrMapping({\n mappings,\n isExpanded,\n onUpdateCard,\n onDeleteMapping,\n onUpdateMapping,\n onToggleExpansion,\n}: Props) {\n const classes = useStyles();\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 const validateMappings = makeValidateMappings(source.id);\n const validationResponse = useData(validateMappings);\n const validationResults = _get(validationResponse, 'validationResults');\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 const ValidationStatus = useMemo(() => {\n const requiredMappingErrors = !_isEmpty(validationResults)\n ? validationResults.filter(\n (vr: MappingTypes.MappingValidationResult) =>\n vr.code === REQUIRED_MAPPING_MISSING_ERROR_CODE,\n )\n : undefined;\n\n return (\n \n );\n }, [mappings, validationResults]);\n\n const renderCardHeader = () => {\n return (\n {ValidationStatus}
    }\n className={classes.cardHeader}\n />\n );\n };\n\n const renderDetails = () => {\n return (\n
    \n \n {_get(source, 'isPrimary') ? (\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 if you have any fields\n that are not mapped to an attribute they will not be imported during your sync.\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
    \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\n return (\n <>\n {!onSourceCreationWizardMappings ? (\n <>\n {renderCardHeader()}\n {renderDetails()}\n \n ) : (\n \n {renderCardHeader()}\n {renderDetails()}\n \n )}\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n cardHeader: {\n width: '100%',\n },\n accordion: {\n padding: 0,\n margin: 0,\n },\n addMappingButtonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginRight: theme.spacing(2.5),\n marginTop: theme.spacing(),\n },\n cardContent: {\n paddingTop: 0,\n },\n action: {\n margin: 0,\n alignSelf: 'center',\n },\n helpTextNote: {\n marginTop: theme.spacing(3),\n },\n}));\n\nexport default ProfileAttrMapping;\n","import React, { useState, useRef } from 'react';\nimport _get from 'lodash/get';\nimport { useData } from 'resift';\nimport withSource from 'components/withSource/withSource';\nimport useAnalytics from 'helpers/useAnalytics';\nimport MappingProps, * as MappingTypes from 'types/Mapping';\nimport SourceType from 'types/Source';\nimport useExistingOrgMappingsInfo from 'components/Mappings/OrgMapping/useExistingOrgMappingsInfo';\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\nimport Directory from 'types/Directory';\n\ninterface Props {\n directory: Directory;\n cardData: MappingTypes.MappingCardData[];\n selectedDestinations: string[];\n onUpdateState: (cardIndex: number, newMappings: MappingProps[]) => void;\n sourceFromProp: SourceType;\n}\n\nfunction MappingCards({\n directory,\n cardData,\n selectedDestinations,\n onUpdateState,\n sourceFromProp,\n}: Props) {\n const orgSectionRef = useRef(null);\n const profileAttrSectionRef = useRef(null);\n const getMappingsAttributes = makeGetMappingsAttributes(sourceFromProp.id);\n const mappingAttributes = useData(getMappingsAttributes);\n const analytics = useAnalytics();\n\n const existingMappingsInfo = useExistingOrgMappingsInfo(directory, sourceFromProp.id);\n const { orgMappingsSet } = existingMappingsInfo;\n const selectionAttributesArray: MappingTypes.SelectionAttribute[] = _get(\n mappingAttributes,\n 'selectionAttributes',\n [],\n );\n const tlRefOptionsForCsvArray: MappingTypes.TlRefOption[] = _get(\n mappingAttributes,\n 'tlRefOptions',\n [],\n );\n const _sourceAttrOptions = selectionAttributesArray.map(attr => attr.sourcePath);\n const tlRefOptionsForCsv = tlRefOptionsForCsvArray.map(option => option.sourcePath);\n const [sourceAttrOptions, setSourceAttrOptions] = useState(_sourceAttrOptions);\n const [accordionsExpandState, setAccordionsExpandState] = useState>([\n true,\n false,\n false,\n ]);\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, newMappingItems: MappingProps | MappingProps[]) => {\n if (Array.isArray(newMappingItems)) {\n onUpdateState(cardIndex, newMappingItems);\n } else {\n const newMappings = [...mappings];\n newMappings.splice(newMappingIndex, 1, newMappingItems);\n onUpdateState(cardIndex, newMappings);\n }\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: sourceFromProp,\n selectedDestinations,\n sourceAttrOptions,\n tlRefOptionsForCsv,\n onAddCustomSourceAttribute: handleAddCustomSourceAttribute,\n };\n\n const refs = [null, orgSectionRef, profileAttrSectionRef];\n const handleScroll = (sectionIndex: number) => {\n refs[sectionIndex] &&\n // @ts-ignore\n refs[sectionIndex].current &&\n // @ts-ignore\n refs[sectionIndex].current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n };\n\n return (\n \n {cardData.map((data, index) => {\n const { mappings, type } = data;\n const nextCardIndex = orgMappingsSet ? index + 2 : index + 1;\n\n const handleExpandNextSection = () => {\n const newAccordionsExpandState = [\n ...accordionsExpandState.slice(0, nextCardIndex),\n true,\n ...accordionsExpandState.slice(nextCardIndex + 1),\n ];\n\n setAccordionsExpandState(newAccordionsExpandState);\n };\n\n const analyticsLabels = ['primary-mapping', 'org-mapping'];\n\n analytics.track('Mappings - Next Step Button Clicked', {\n category: 'AD - Directories',\n label: analyticsLabels[index],\n });\n\n const handleNextStep = async () => {\n handleExpandNextSection();\n handleScroll(nextCardIndex);\n };\n\n const handleToggleExpansion = () => {\n const newAccordionsExpandState = [\n ...accordionsExpandState.slice(0, index),\n !accordionsExpandState[index],\n ...accordionsExpandState.slice(index + 1),\n ];\n\n setAccordionsExpandState(newAccordionsExpandState);\n };\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 withSource(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 withSource from 'components/withSource/withSource';\nimport makeValidateMappings from 'fetches/makeValidateMappings';\nimport useExistingOrgMappingsInfo from 'components/Mappings/OrgMapping/useExistingOrgMappingsInfo';\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 directory: any;\n sourceMappings: MappingProps[];\n userFields: any;\n sourceFromProps: SourceType;\n setMappings: (batchActions: any[]) => void;\n setDirty: (dirty: boolean) => void;\n}\n\nfunction Mappings({\n directory,\n sourceFromProps,\n sourceMappings,\n userFields,\n setMappings,\n setDirty,\n}: Props) {\n const dispatch = useDispatch();\n const validateMappings = makeValidateMappings(sourceFromProps.id);\n const validationResponse = useData(validateMappings);\n const { validationResults } = validationResponse;\n const existingMappingsInfo = useExistingOrgMappingsInfo(directory, sourceFromProps.id);\n const { orgMappingsSet } = existingMappingsInfo;\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, sourceFromProps.id, orgMappingsSet);\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(\n newState,\n sourceMappings,\n sourceFromProps.id,\n orgMappingsSet,\n );\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 withSource(Mappings);\n\nfunction buildBatchActions(\n mappingCards: any,\n sourceMappings: any,\n sourceId: any,\n orgMappingsSet: boolean,\n) {\n const logisticalBatchActions = createLogisticalBatchActions(\n mappingCards,\n sourceMappings,\n sourceId,\n orgMappingsSet,\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, useContext } from 'react';\nimport SourceContext from 'helpers/SourceContext';\nimport makeGetSource from 'fetches/makeGetSource';\nimport _get from 'lodash/get';\nimport _omit from 'lodash/omit';\nimport _isEmpty from 'lodash/isEmpty';\nimport { saveSource } from 'store/sources';\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 getSource = makeGetSource(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\n if (_get(source, ['setupProgress', 'csvOptOut'])) {\n const updatedSource = {\n ...source,\n setupProgress: {\n ..._get(source, ['setupProgress'], {}),\n csvOptOut: false,\n },\n };\n\n dispatch(saveSource(updatedSource));\n dispatch(getSource());\n }\n\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 { 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","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 { 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 { isLoading } from 'resift';\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';\n\ninterface Props {\n title?: string;\n children: React.ReactNode;\n submitButtonCopy?: string;\n open: boolean;\n status?: number;\n disableSubmitButton?: boolean;\n onCancel: () => void;\n onSubmit: () => void;\n}\n\nfunction SimpleConfirmationDialog({\n title = 'Are you sure?',\n children,\n open,\n status = 1,\n disableSubmitButton = false,\n onCancel,\n onSubmit,\n submitButtonCopy = 'Submit',\n}: Props) {\n const loading = isLoading(status);\n\n return (\n \n {title}\n {children}\n \n \n \n {loading ? <>Submitting : <>{submitButtonCopy}}\n \n \n \n );\n}\n\nexport default SimpleConfirmationDialog;\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","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 { 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 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 {title && (\n \n {title}\n \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 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 { 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, { 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"],"sourceRoot":""}