@reltio/remotes 1.4.1647 → 1.4.1649
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1039.js +1 -1
- package/1088.js +1 -1
- package/1146.js +1 -1
- package/1148.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1488.js +2 -0
- package/1488.js.map +1 -0
- package/1572.js +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1790.js +5 -5
- package/1790.js.map +1 -1
- package/1840.js +2 -0
- package/1840.js.map +1 -0
- package/1984.js +1 -1
- package/2066.js +1 -1
- package/2400.js +1 -1
- package/281.js +2 -0
- package/281.js.map +1 -0
- package/2966.js +1 -1
- package/3096.js +1 -1
- package/3348.js +1 -1
- package/3358.js +1 -1
- package/3373.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/356.js +1 -1
- package/3854.js +1 -1
- package/3902.js +1 -1
- package/3902.js.map +1 -1
- package/3912.js +1 -1
- package/3926.js +1 -1
- package/415.js +1 -1
- package/4212.js +1 -1
- package/{829.css → 4390.css} +1 -1
- package/4390.css.map +1 -0
- package/4390.js +2 -0
- package/4390.js.map +1 -0
- package/4481.js +1 -1
- package/4609.js +1 -1
- package/4610.js +1 -1
- package/4703.js +1 -1
- package/4780.js +2 -0
- package/4780.js.map +1 -0
- package/4806.js +1 -1
- package/4838.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5039.js.map +1 -1
- package/5053.js +1 -1
- package/5053.js.map +1 -1
- package/5108.js +1 -1
- package/5108.js.map +1 -1
- package/5163.js +1 -1
- package/5163.js.map +1 -1
- package/5292.js +1 -1
- package/5383.js +1 -1
- package/5617.js +1 -1
- package/6020.js +1 -1
- package/6287.js +1 -1
- package/636.js +1 -1
- package/6606.js +1 -1
- package/6606.js.map +1 -1
- package/6799.js +1 -1
- package/6844.js +1 -1
- package/6860.js +3 -0
- package/6860.js.map +1 -0
- package/6903.js +1 -1
- package/7128.js +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7422.js +1 -1
- package/{7303.css → 7605.css} +1 -1
- package/{7303.css.map → 7605.css.map} +1 -1
- package/7605.js +2 -0
- package/7605.js.map +1 -0
- package/7626.js +29 -0
- package/7626.js.map +1 -0
- package/{446.js → 764.js} +2 -2
- package/764.js.map +1 -0
- package/7744.js +1 -1
- package/7744.js.map +1 -1
- package/7896.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8565.js +1 -1
- package/870.css +635 -0
- package/870.css.map +1 -0
- package/870.js +2 -0
- package/870.js.map +1 -0
- package/8741.js +1 -1
- package/9016.js +1 -1
- package/9050.js +1 -1
- package/9283.js +1 -1
- package/9309.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9464.js +1 -1
- package/9719.js +1 -1
- package/9736.js +1 -1
- package/9861.js +1 -1
- package/987.js +1 -1
- package/99.js +29 -0
- package/99.js.map +1 -0
- package/9952.js +1 -1
- package/9960.js +1 -1
- package/main.js +1 -1
- package/main.js.map +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/3785.js +0 -2
- package/3785.js.map +0 -1
- package/3880.js +0 -2
- package/3880.js.map +0 -1
- package/446.js.map +0 -1
- package/672.js +0 -2
- package/672.js.map +0 -1
- package/7303.js +0 -2
- package/7303.js.map +0 -1
- package/7963.js +0 -3
- package/7963.js.map +0 -1
- package/829.css.map +0 -1
- package/829.js +0 -2
- package/829.js.map +0 -1
- package/8344.js +0 -29
- package/8344.js.map +0 -1
- package/9109.js +0 -2
- package/9109.js.map +0 -1
- package/938.js +0 -29
- package/938.js.map +0 -1
- /package/{7963.js.LICENSE.txt → 6860.js.LICENSE.txt} +0 -0
package/7605.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"7605.js","mappings":"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","sources":["webpack://@reltio/remotes/../../node_modules/@mui/icons-material/AccessTime.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ChevronRight.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Edit.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/FilterList.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/InfoOutlined.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/KeyboardCapslock.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Map.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/RemoveCircle.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Star.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/StarBorder.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Warning.js","webpack://@reltio/remotes/../../node_modules/@mui/material/Collapse/Collapse.js","webpack://@reltio/remotes/../../node_modules/@mui/material/Collapse/collapseClasses.js","webpack://@reltio/remotes/../components/src/components/BasicView/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/styles.ts","webpack://@reltio/remotes/../components/src/components/ConfirmationDialog/ConfirmationDialog.tsx","webpack://@reltio/remotes/../components/src/components/EmptySearchResult/NoData.tsx","webpack://@reltio/remotes/../components/src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://@reltio/remotes/../components/src/components/FacetViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/FacetViewHeader/FacetViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/HierarchicalAttributeTooltip/styles.ts","webpack://@reltio/remotes/../components/src/components/HierarchicalAttributeTooltip/HierarchicalAttributeTooltip.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBand/ProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardContent/ProfileCardContent.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCardPlaceholder/ProfileCardPlaceholder.tsx","webpack://@reltio/remotes/../components/src/components/ProfileCard/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileCard/ProfileCard.tsx","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/MapControlContainer/MapControlContrainer.tsx","webpack://@reltio/remotes/../components/src/icons/Radius.tsx","webpack://@reltio/remotes/../components/src/icons/Draw.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopRightMapControls/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopRightMapControls/TopRightMapControls.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopCenterMapControls/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/MapControls/TopCenterMapControls/TopCenterMapControls.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/icons/marker.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/EntityMarker.tsx","webpack://@reltio/remotes/../components/src/components/ReltioMap/EntityMarker/icons/marker-hover.inline.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/hooks/useFitMapBounds.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/styles.ts","webpack://@reltio/remotes/../components/src/components/ReltioMap/index.tsx","webpack://@reltio/remotes/../components/src/components/ResizablePanes/styles.ts","webpack://@reltio/remotes/../components/src/components/ResizablePanes/ResizablePanes.tsx","webpack://@reltio/remotes/../components/src/components/ScrollableTabs/styles.ts","webpack://@reltio/remotes/../components/src/components/ScrollableTabs/ScrollableTabs.tsx","webpack://@reltio/remotes/../components/src/components/SearchInput/WhiteSearchInput.tsx","webpack://@reltio/remotes/../components/src/components/StepNavigation/styles.ts","webpack://@reltio/remotes/../components/src/components/StepNavigation/ProgressButton.tsx","webpack://@reltio/remotes/../components/src/components/StepNavigation/StepNavigation.tsx","webpack://@reltio/remotes/../components/src/icons/Tenant.tsx","webpack://@reltio/remotes/../components/src/components/TenantLabel/styles.ts","webpack://@reltio/remotes/../components/src/components/TenantLabel/TenantLabel.tsx","webpack://@reltio/remotes/../components/src/components/ViewMoreToggle/styles.js","webpack://@reltio/remotes/../components/src/components/ViewMoreToggle/ViewMoreToggle.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesView/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributesView/AttributesView.tsx","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesView/styles.ts","webpack://@reltio/remotes/../components/src/components/attributes/editMode/AttributesView/AttributesView.tsx","webpack://@reltio/remotes/../components/src/components/attributes/AttributesView/AttributesView.tsx","webpack://@reltio/remotes/../components/src/constants/map.ts","webpack://@reltio/remotes/../components/src/contexts/EntityMarkerContext/index.ts","webpack://@reltio/remotes/../search/src/selectors/facet.js","webpack://@reltio/remotes/../search/src/actions/facets/index.ts","webpack://@reltio/remotes/../search/src/actions/googleAnalyticsActions.js","webpack://@reltio/remotes/../search/src/constants/actionTypes/googleAnanlytics.js","webpack://@reltio/remotes/../search/src/components/Facets/HOCs/FacetWithSearchSupport/FacetWithSearchSupport.js","webpack://@reltio/remotes/../search/src/components/Facets/EntityTypeFacet/FacetsList/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/EntityTypeFacet/FacetsList/FacetsList.tsx","webpack://@reltio/remotes/../search/src/selectors/ui.ts","webpack://@reltio/remotes/../search/src/services/search/advancedSearch/attributeGroups.js","webpack://@reltio/remotes/../search/src/selectors/advancedSearch.js","webpack://@reltio/remotes/../search/src/services/search/attributesList/attributeListUtils.js","webpack://@reltio/remotes/../search/src/services/search/dataTenants.js","webpack://@reltio/remotes/../search/src/selectors/search.js","webpack://@reltio/remotes/../search/src/components/Facets/EntityTypeFacet/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/EntityTypeFacet/EntityTypeFacet.tsx","webpack://@reltio/remotes/../search/src/components/MultiTypeaheadEditor/components/ListRow/styles.js","webpack://@reltio/remotes/../search/src/components/MultiTypeaheadEditor/components/ListRow/ListRow.js","webpack://@reltio/remotes/../search/src/components/MultiTypeaheadEditor/components/NoOptions/NoOptions.js","webpack://@reltio/remotes/../search/src/components/MultiTypeaheadEditor/styles.js","webpack://@reltio/remotes/../search/src/constants/prop-types.js","webpack://@reltio/remotes/../search/src/components/MultiTypeaheadEditor/MultiTypeaheadEditor.js","webpack://@reltio/remotes/../search/src/components/ChipsCount/styles.ts","webpack://@reltio/remotes/../search/src/components/ChipsCount/ChipsCount.tsx","webpack://@reltio/remotes/../search/src/components/Facets/FacetTitle/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/FacetTitle/FacetTitle.tsx","webpack://@reltio/remotes/../search/src/components/Facets/FacetContainer/Recommended.svg","webpack://@reltio/remotes/../search/src/components/Facets/FacetContainer/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/FacetContainer/FacetContainer.tsx","webpack://@reltio/remotes/../search/src/components/Facets/FacetWithDropdownCheckboxes/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/FacetWithDropdownCheckboxes/FacetWithDropdownCheckboxes.tsx","webpack://@reltio/remotes/../search/src/components/Facets/NumericRangeFacet/RangeSlider/styles.js","webpack://@reltio/remotes/../search/src/components/Facets/NumericRangeFacet/RangeSlider/ValueLabel.js","webpack://@reltio/remotes/../search/src/components/Facets/NumericRangeFacet/RangeSlider/RangeSlider.js","webpack://@reltio/remotes/../search/src/components/BarChartWithSelection/BarTooltipContent/styles.js","webpack://@reltio/remotes/../search/src/components/BarChartWithSelection/BarTooltipContent/BarTooltipContent.js","webpack://@reltio/remotes/../search/src/components/BarChartWithSelection/styles.js","webpack://@reltio/remotes/../search/src/components/BarChartWithSelection/BarChartWithSelection.js","webpack://@reltio/remotes/../search/src/components/Facets/NumericRangeFacet/NumericRangeFacet/styles.less?96f1","webpack://@reltio/remotes/../search/src/components/Facets/NumericRangeFacet/NumericRangeFacet/NumericRangeFacet.js","webpack://@reltio/remotes/../search/src/components/Facets/NumericRangeFacet/NumericRangeFacet/withCustomizedData.tsx","webpack://@reltio/remotes/../search/src/components/DateRangeChooser/styles.ts","webpack://@reltio/remotes/../search/src/components/DateRangeChooser/DateRangeChooser.tsx","webpack://@reltio/remotes/../search/src/components/Facets/DateRangeFacet/helpers.ts","webpack://@reltio/remotes/../search/src/components/Facets/DateRangeFacet/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/DateRangeFacet/DateRangeFacet.tsx","webpack://@reltio/remotes/../search/src/components/Facets/FacetsFactory.js","webpack://@reltio/remotes/../search/src/services/search/facetsGroup.js","webpack://@reltio/remotes/../search/src/components/Facets/FacetGroupTitle/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/FacetGroupTitle/FacetGroupTitle.tsx","webpack://@reltio/remotes/../search/src/constants/actionTypes/ui.js","webpack://@reltio/remotes/../search/src/actions/uiActions.js","webpack://@reltio/remotes/../search/src/components/MoreFacetsPopup/helpers.js","webpack://@reltio/remotes/../search/src/components/MoreFacetsPopup/FacetsList.js","webpack://@reltio/remotes/../search/src/components/MoreFacetsPopup/styles.less?f8d0","webpack://@reltio/remotes/../search/src/components/MoreFacetsPopup/MoreFacetsPopup.js","webpack://@reltio/remotes/../search/src/components/MoreFacetsSearchInput/MoreFacetsSearchInput.js","webpack://@reltio/remotes/../search/src/components/MoreFacetsSearchInput/helpers.js","webpack://@reltio/remotes/../search/src/components/Facets/FacetGroup/styles.ts","webpack://@reltio/remotes/../search/src/components/Facets/FacetGroup/FacetGroup.tsx","webpack://@reltio/remotes/../search/src/components/SearchByOvControl/styles.js","webpack://@reltio/remotes/../search/src/components/SearchByOvControl/SearchByOvControl.js","webpack://@reltio/remotes/../search/src/components/Facets/TenantFacet/styles.js","webpack://@reltio/remotes/../search/src/utils/network.js","webpack://@reltio/remotes/../search/src/components/Facets/TenantFacet/TenantTotal/TenantTotal.js","webpack://@reltio/remotes/../search/src/components/Facets/TenantFacet/TenantTotal/useTenantTotal.js","webpack://@reltio/remotes/../search/src/actions/searchActions.js","webpack://@reltio/remotes/../search/src/components/Facets/TenantFacet/TenantFacet.js","webpack://@reltio/remotes/../search/src/components/FacetsPanel/styles.js","webpack://@reltio/remotes/../search/src/components/FacetsPanel/FacetsPanel.js","webpack://@reltio/remotes/../search/src/components/MainContent/MainContent.js","webpack://@reltio/remotes/../search/src/components/MainContent/styles.less?7335","webpack://@reltio/remotes/../search/src/constants/actionTypes/advancedSearch.js","webpack://@reltio/remotes/../search/src/reducers/advancedSearchReducer.js","webpack://@reltio/remotes/../search/src/actions/advancedSearchActions.js","webpack://@reltio/remotes/../search/src/components/AppLoadingSpinner/styles.ts","webpack://@reltio/remotes/../search/src/components/AppLoadingSpinner/AppLoadingSpinner.tsx","webpack://@reltio/remotes/../search/src/components/Notification/styles.js","webpack://@reltio/remotes/../search/src/components/Notification/Notification.js","webpack://@reltio/remotes/../search/src/components/MainSearchArea/styles.js","webpack://@reltio/remotes/../search/src/components/SearchResultsArea/styles.js","webpack://@reltio/remotes/../search/src/components/ViewModeSwitcher/styles.js","webpack://@reltio/remotes/../search/src/components/ViewModeSwitcher/icons/table.svg","webpack://@reltio/remotes/../search/src/components/ViewModeSwitcher/icons/list.svg","webpack://@reltio/remotes/../search/src/components/ViewModeSwitcher/helpers.js","webpack://@reltio/remotes/../search/src/components/ViewModeSwitcher/ViewModeSwitcher.js","webpack://@reltio/remotes/../mdm-module/index.ts","webpack://@reltio/remotes/../search/src/components/PreviewPanelModeSwitcher/PreviewPanelModeSwitcher.js","webpack://@reltio/remotes/../search/src/components/SearchResultsArea/Headers/ListViewHeader.js","webpack://@reltio/remotes/../search/src/components/SearchResultsArea/Headers/TableViewHeader.js","webpack://@reltio/remotes/../search/src/components/TableView/TableView.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/styles.js","webpack://@reltio/remotes/../search/src/selectors/entity.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/EntityDetailedView/styles.ts","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/EntityDetailedView/EntityDetailedView.tsx","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/MapView/helpers/markerClustererCalculator.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/MapView/useMarkers.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/MapView/useSearch.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/MapView/styles.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/views/MapView/MapView.js","webpack://@reltio/remotes/../search/src/components/PreviewPanel/PreviewPanel.js","webpack://@reltio/remotes/../search/src/constants/actionTypes/entity.js","webpack://@reltio/remotes/../search/src/actions/entityActions.js","webpack://@reltio/remotes/../search/src/components/SearchResultsArea/SearchResultsArea.js","webpack://@reltio/remotes/../search/src/components/SearchBar/SelectedFacetChip/styles.js","webpack://@reltio/remotes/../search/src/components/SearchBar/SelectedFacetChip/SelectedFacetChip.js","webpack://@reltio/remotes/../search/src/components/SearchBar/MoreButton/MoreButton.js","webpack://@reltio/remotes/../search/src/constants/actionTypes/savedSearches.js","webpack://@reltio/remotes/../search/src/actions/savedSearchesActions.js","webpack://@reltio/remotes/../search/src/selectors/savedAndRecentCommon.js","webpack://@reltio/remotes/../search/src/selectors/savedSearches.js","webpack://@reltio/remotes/../search/src/components/ActionsMenu/SaveSearchDialog/styles.js","webpack://@reltio/remotes/../search/src/components/ActionsMenu/SaveSearchDialog/SaveSearchDialog.js","webpack://@reltio/remotes/../search/src/components/ActionsMenu/icons/ExportResult.svg","webpack://@reltio/remotes/../search/src/components/ActionsMenu/icons/Save.svg","webpack://@reltio/remotes/../search/src/components/ActionsMenu/icons/DataLoad.svg","webpack://@reltio/remotes/../search/src/components/ActionsMenu/icons/MoreVert.svg","webpack://@reltio/remotes/../search/src/hooks/useWorkflow.ts","webpack://@reltio/remotes/../search/src/services/bulkUpdate/helpers.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/editorsForOperation.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/validation.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/values.js","webpack://@reltio/remotes/../search/src/selectors/bulkUpdate.js","webpack://@reltio/remotes/../search/src/utils/clipboard.js","webpack://@reltio/remotes/../search/src/services/search/savedSearches.js","webpack://@reltio/remotes/../search/src/services/search/serialization/serializeAdvancedSearch.js","webpack://@reltio/remotes/../search/src/selectors/serializedState.js","webpack://@reltio/remotes/../search/src/components/ShareLinkDialog/useSearchLinkGenerator.js","webpack://@reltio/remotes/../search/src/components/ShareLinkDialog/styles.js","webpack://@reltio/remotes/../search/src/components/ShareLinkDialog/ShareLinkDialog.js","webpack://@reltio/remotes/../search/src/components/ActionsMenu/styles.js","webpack://@reltio/remotes/../search/src/components/ActionsMenu/ActionsMenu.js","webpack://@reltio/remotes/../search/src/hooks/useBulkUpdateOpener.ts","webpack://@reltio/remotes/../search/src/components/SavedSearchLabel/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchLabel/SavedSearchLabel.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/styles.js","webpack://@reltio/remotes/../search/src/selectors/recentSearches.js","webpack://@reltio/remotes/../search/src/constants/actionTypes/recentSearches.js","webpack://@reltio/remotes/../search/src/actions/recentSearchesActions.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/Modes/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/CloseButton/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/CloseButton/CloseButton.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/Modes/SelectedMode.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/FilterButton/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/common.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/FilterButton/FilterButton.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/Modes/StandardMode.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/DialogHeader/DialogHeader.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/components/HoverButtons/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/components/HoverButtons/SavedSearchesHoverButtons.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/styles.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/CheckboxHeadCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/HOCs/WithDifferentColorIfChecked.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/CheckboxCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/NameHeadCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/icons/filter.svg","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/icons/filter-outlined.svg","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/NameWithStarCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/SharingCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/DefaultCellValueRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/DateCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/helpers/filteredAttributes.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/FilteredAttributesCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/TotalHeadCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/InvisibleOnHoverCell.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/NumberCellValueRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/SavedSearchesTotalCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/savedSearchesColumnsData.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/SavedSearchesTable.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/components/HoverButtons/RecentSearchesHoverButtons.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/RecentSearchesCheckboxCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/TimestampCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/RecentSearchesTotalCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/cell-renderers/QueryCellRenderer.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/recentSearchesColumnsData.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/Tables/RecentSearchesTable.js","webpack://@reltio/remotes/../search/src/components/SavedSearchesDialog/SavedSearchesDialog.js","webpack://@reltio/remotes/../search/src/components/CurrentTenantLabel/styles.ts","webpack://@reltio/remotes/../search/src/components/CurrentTenantLabel/CurrentTenantLabel.tsx","webpack://@reltio/remotes/../search/src/components/SearchBar/SearchBar.js","webpack://@reltio/remotes/../search/src/components/SearchBar/styles.less?3d13","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryBuilderHeader/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryBuilderHeader/QueryBuilderHeader.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/ResultBuilder/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryBuilderCollapseButton/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryBuilderCollapseButton/QueryBuilderCollapseButton.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryBuilderFullscreenButton/QueryBuilderFullscreenButton.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/ResultBuilder/ResultBuilder.js","webpack://@reltio/remotes/../search/src/services/search/converting/createFacetsFromAdvancedSearch.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/commonStyles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/LogicOperator/styles.less?539e","webpack://@reltio/remotes/../search/src/components/QueryBuilder/LogicOperator/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/LogicOperator/LogicOperator.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/AdvancedSearchEntityTypesSelector/AdvancedSearchEntityTypesSelector.js","webpack://@reltio/remotes/../search/src/components/AttributeSelectors/AttributeSelector.tsx","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/AdvancedSearchAttributeSelector.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/icons/duplicate.svg","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/helpers.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/AdvancedSearchRowActions.js","webpack://@reltio/remotes/../search/src/components/QueryBuilderFilterSelector/QueryBuilderFilterSelector.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/AdvancedSearchFilterSelector.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/ValuesEditor/styles.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/ValuesEditor/styles.less?6a5f","webpack://@reltio/remotes/../search/src/components/QueryBuilder/ValuesEditor/TypeaheadValuesEditor.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/ValuesEditor/ValuesEditor.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/AdvancedSearchValuesEditorWrapper.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/rowComponents/AdvancedSearchRowLogicOperator.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/GroupBuilder/GroupBuilder.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryGroups.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/SwitchToFacetsDialog/SwitchToFacetsDialog.js","webpack://@reltio/remotes/../search/src/components/QueryBuilder/QueryBuilder.js","webpack://@reltio/remotes/../search/src/components/MainSearchArea/MainSearchArea.js","webpack://@reltio/remotes/../search/src/constants/actionTypes/bulkUpdate.js","webpack://@reltio/remotes/../search/src/actions/bulkUpdateActions.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/BulkUpdateBar/useBulkUpdateBarReadableQuery.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/BulkUpdateBar/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/BulkUpdateBar/BulkUpdateBar.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/commonStyles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ActionRow/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/icons/pin.svg","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/icons/addParent.svg","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ChangeEditor/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ChangeEditor/ChangeEditor.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ActionRow/utils.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/bulkComplexAttributeEditors/utils.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/bulkComplexAttributeEditors/useBulkComplexAttributeHandlers.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/bulkComplexAttributeEditors/PinButtonRenderer/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/bulkComplexAttributeEditors/PinButtonRenderer/PinButtonRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/bulkComplexAttributeEditors/BulkNestedAttributeEditor/BulkNestedAttributeEditor.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/BulkRepointReferenceEditor/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/BulkRepointReferenceEditor/BulkRepointReferenceEditor.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/bulkComplexAttributeEditors/BulkReferenceAttributeEditor/BulkReferenceAttributeEditor.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ActionRow/ActionRow.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/components/styles.js","webpack://@reltio/remotes/../search/src/components/AttributeSelectors/SubAttributeSelector.tsx","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/components/ConditionAttributeSelector.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/components/helpers.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/components/ConditionFilterSelector.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionValuesEditor/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/conditionsUtils.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionValuesEditor/ConditionValuesEditor.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/components/ConditionValuesEditorWrapper.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/components/ConditionActions.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ConditionsBlock/ConditionsBlock.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/ComplexActionRow/ComplexActionRow.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DefineChanges/DefineChanges.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DialogHeader/BulkUpdateStepNavigation/BulkUpdateStepNavigation.tsx","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DialogHeader/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/DialogHeader/DialogHeader.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/SelectProfilesTable/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/SelectProfilesTable/helpers.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/SelectProfilesTable/SelectProfilesTable.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/SelectOperation/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/SelectOperation/SelectOperation.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/AttributeValueRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/OperationRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/ConditionsRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/AttributeLabelRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/helpers.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/ScaffoldsRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/NoWrapContainer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/OptionsRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/cell-renderers/EntityLabelRenderer.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewTable/ReviewTable.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewChanges/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/ReviewChanges/ReviewChanges.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/styles.js","webpack://@reltio/remotes/../search/src/components/BulkUpdateDialog/BulkUpdateDialog.js","webpack://@reltio/remotes/../search/src/components/App/styles.js","webpack://@reltio/remotes/../search/src/components/App/App.js","webpack://@reltio/remotes/../search/src/reducers/facetsReducer.js","webpack://@reltio/remotes/../search/src/reducers/searchReducer.js","webpack://@reltio/remotes/../search/src/reducers/uiReducer.js","webpack://@reltio/remotes/../search/src/reducers/savedSearchesReducer.js","webpack://@reltio/remotes/../search/src/reducers/recentSearchesReducer.js","webpack://@reltio/remotes/../search/src/reducers/entityReducer.js","webpack://@reltio/remotes/../search/src/reducers/bulkUpdateReducer.js","webpack://@reltio/remotes/../search/src/services/search/recommendations.js","webpack://@reltio/remotes/../search/src/sagas/recommendationsSaga.js","webpack://@reltio/remotes/../search/src/services/lookups/codes.js","webpack://@reltio/remotes/../search/src/services/search/resolveLookupCodesTasksManager.js","webpack://@reltio/remotes/../search/src/services/search/resolveLookupValuesTasksManager.js","webpack://@reltio/remotes/../search/src/sagas/lookupsSaga.js","webpack://@reltio/remotes/../search/src/services/search/facetResponse.js","webpack://@reltio/remotes/../search/src/sagas/facetedAttributesSaga.js","webpack://@reltio/remotes/../search/src/sagas/uiSaga.js","webpack://@reltio/remotes/../search/src/sagas/commonSaga.js","webpack://@reltio/remotes/../search/src/sagas/savedSearchesSaga.js","webpack://@reltio/remotes/../search/src/sagas/activitySaga.ts","webpack://@reltio/remotes/../search/src/sagas/searchSaga.js","webpack://@reltio/remotes/../search/src/sagas/rangeFacetsSaga.js","webpack://@reltio/remotes/../search/src/sagas/potentialMatchesFacetSaga.js","webpack://@reltio/remotes/../search/src/sagas/facetsSaga.js","webpack://@reltio/remotes/../search/src/sagas/advancedSearchSaga.js","webpack://@reltio/remotes/../search/src/services/search/currentSavedSearch.js","webpack://@reltio/remotes/../search/src/sagas/currentSavedSearchSaga.js","webpack://@reltio/remotes/../search/src/sagas/saveStateSaga.js","webpack://@reltio/remotes/../search/src/services/search/recentSearches/index.js","webpack://@reltio/remotes/../search/src/sagas/recentSearchesSaga.js","webpack://@reltio/remotes/../search/src/sagas/entitySaga.js","webpack://@reltio/remotes/../search/src/sagas/defaultFacetedAttributesSaga.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/tempEntities.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/conditions.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/actionItems.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/requestBody.js","webpack://@reltio/remotes/../search/src/sagas/bulkUpdateSaga.js","webpack://@reltio/remotes/../search/src/services/bulkUpdate/request.js","webpack://@reltio/remotes/../search/src/helpers.ts","webpack://@reltio/remotes/../search/src/SearchView.js","webpack://@reltio/remotes/../search/src/getModule.js","webpack://@reltio/remotes/../search/src/actions/moduleActions.js","webpack://@reltio/remotes/../search/src/constants/actionTypes/module.js","webpack://@reltio/remotes/../../node_modules/lodash.throttle/index.js","webpack://@reltio/remotes/../../node_modules/performance-now/lib/performance-now.js","webpack://@reltio/remotes/../../node_modules/raf/index.js","webpack://@reltio/remotes/../../node_modules/react-components/dist/ReltioProgress/ReltioProgress.js","webpack://@reltio/remotes/../../node_modules/react-components/dist/ReltioProgress/styles.less.js","webpack://@reltio/remotes/../../node_modules/react-components/dist/_utils/math.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n}, \"1\")], 'AccessTime');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'ChevronRight');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Edit');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"\n}), 'FilterList');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n}), 'InfoOutlined');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 8.41 16.59 13 18 11.59l-6-6-6 6L7.41 13 12 8.41zM6 18h12v-2H6v2z\"\n}), 'KeyboardCapslock');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m20.5 3-.16.03L15 5.1 9 3 3.36 4.9c-.21.07-.36.25-.36.48V20.5c0 .28.22.5.5.5l.16-.03L9 18.9l6 2.1 5.64-1.9c.21-.07.36-.25.36-.48V3.5c0-.28-.22-.5-.5-.5zM15 19l-6-2.11V5l6 2.11V19z\"\n}), 'Map');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z\"\n}), 'RemoveCircle');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n}), 'Star');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"\n}), 'StarBorder');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');\nexports.default = _default;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n node.style[size] = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onExiting) {\n onExiting(node);\n }\n });\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * The content node to be collapsed.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n basicViewPaper: {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import React, {forwardRef} from 'react';\nimport Paper, {PaperProps} from '@mui/material/Paper';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef(\n ({children, className, ...otherProps}: PaperProps, ref: React.RefObject<HTMLDivElement>) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles.basicViewPaper}} {...otherProps}>\n {children}\n </Paper>\n );\n }\n);\n\nBasicView.displayName = 'BasicView';\n\nexport default BasicView;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n paper: {\n minHeight: '180px'\n },\n title: {\n padding: '16px 16px 10px 16px',\n fontSize: '20px',\n fontWeight: 500,\n letterSpacing: '0.25px',\n lineHeight: '24px'\n },\n content: {\n padding: '0 16px'\n },\n contentText: {\n marginBottom: 0,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px'\n },\n actionButtons: {\n display: 'flex',\n paddingTop: '4px',\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '16px',\n '& > div': {\n marginLeft: 'auto'\n }\n },\n discardButton: {\n marginRight: '8px'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport {useStyles} from './styles';\n\nexport type Props = {\n open: boolean;\n title: React.ReactNode;\n content: React.ReactNode;\n cancelCaption?: string;\n discardCaption?: string;\n saveCaption?: string;\n disabledSave?: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onSave: () => void;\n};\n\nconst ConfirmationDialog = ({\n open,\n title,\n content,\n onCancel,\n cancelCaption = i18n.text('Cancel'),\n onDiscard,\n discardCaption = '',\n onSave,\n saveCaption = i18n.text('Save'),\n disabledSave = false\n}: Props) => {\n const styles = useStyles();\n\n return (\n <Dialog open={open} onClose={onCancel} classes={{paperScrollPaper: styles.paper}}>\n <DialogTitle classes={{root: styles.title}}>{title}</DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <DialogContentText classes={{root: styles.contentText}}>{content}</DialogContentText>\n </DialogContent>\n <DialogActions className={styles.actionButtons} disableSpacing>\n {onCancel && <Button onClick={onCancel}>{cancelCaption}</Button>}\n <div>\n {onDiscard && (\n <Button onClick={onDiscard} classes={{root: styles.discardButton}}>\n {discardCaption}\n </Button>\n )}\n <Button onClick={onSave} color=\"primary\" disabled={disabledSave} autoFocus>\n {saveCaption}\n </Button>\n </div>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ConfirmationDialog;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport NoMessageComponent from './NoMessageComponent';\n\ntype Props = Omit<React.ComponentPropsWithoutRef<typeof NoMessageComponent>, 'message'>;\n\nexport const NoData = (props: Props) => {\n return <NoMessageComponent message={i18n.text('No data available')} {...props} />;\n};\n\nexport default NoData;\n","import React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n padding: '0 16px',\n minHeight: '48px',\n '.react-draggable &': {\n paddingTop: '4px'\n }\n },\n title: {\n fontSize: '16px',\n lineHeight: '19px',\n justifyContent: 'flex-start'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport BasicViewHeader from '../BasicViewHeader/BasicViewHeader';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n title: string;\n children?: React.ReactNode;\n};\n\nconst FacetViewHeader = ({className, title, children}: Props) => {\n const styles = useStyles();\n return (\n <BasicViewHeader title={title} classes={{root: classnames(styles.container, className), title: styles.title}}>\n {children}\n </BasicViewHeader>\n );\n};\n\nexport default FacetViewHeader;\n","import {makeStyles} from '@mui/styles';\nimport {range} from 'ramda';\n\nconst nthLiStyles = range(2, 10).reduce(\n (acc, i) => ({\n ...acc,\n [`&:nth-child(${i})`]: {\n paddingLeft: `calc(1em * (${i} - 2))`,\n '&::before': {\n content: '\"└\"',\n display: 'inline-block',\n fontSize: '1em',\n marginRight: '5px',\n color: 'rgba(255, 255, 255, 0.28)'\n }\n }\n }),\n {}\n);\n\nexport const useStyles = makeStyles((theme) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px',\n '& p': {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n '& ul': {\n listStyleType: 'none',\n padding: 0,\n margin: 0,\n '& li': {\n fontSize: '10px',\n lineHeight: '11px',\n fontWeight: 500,\n color: 'rgba(255, 255, 255, 0.7)',\n marginTop: '4px',\n ...nthLiStyles,\n '&:last-child': {\n color: 'white'\n }\n },\n '& li + li': {\n marginTop: '2px'\n }\n }\n }\n}));\n","import React from 'react';\nimport {last} from 'ramda';\nimport Tooltip, {TooltipProps} from '@mui/material/Tooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = Omit<TooltipProps, 'title'> & {\n pathToTitle?: string[];\n title?: string;\n};\n\nconst HierarchicalAttributeTooltip = ({pathToTitle, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const tooltipContent: React.ReactElement | string = pathToTitle?.length ? (\n <div className={styles.tooltipContent}>\n <p>{last(pathToTitle)}</p>\n {pathToTitle.length > 2 && (\n <ul>\n {pathToTitle.map((label) => (\n <li key={label}>{label}</li>\n ))}\n </ul>\n )}\n </div>\n ) : (\n ''\n );\n\n return (\n <Tooltip title={tooltipContent} disableFocusListener classes={{tooltip: styles.tooltip}} {...tooltipProps}>\n {children}\n </Tooltip>\n );\n};\n\nexport default HierarchicalAttributeTooltip;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n profileBandWrapper: {\n // especially for IE (overflow fix)\n flexShrink: 0\n },\n profileBand: {\n display: 'flex',\n padding: '16px 12px 16px 16px',\n alignItems: 'flex-start',\n backgroundColor: '#fff',\n boxShadow: '0px 1px 0px rgba(0, 0, 0, 0.12)',\n marginBottom: '1px',\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {isNil, identity} from 'ramda';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport i18n from 'ui-i18n';\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\nimport {useMdmMetadata, useMdmShowEntityId} from '../../contexts';\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n classes?: Partial<ReturnType<typeof useStyles>>;\n renderLabel?: (label: string) => React.ReactNode;\n};\n\nconst ProfileBand = ({className, entity, children, classes, renderLabel = identity}: Props) => {\n const styles = useStyles({classes});\n\n const metadata = useMdmMetadata();\n const showEntityId = useMdmShowEntityId();\n\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n if (isNil(entity)) {\n return null;\n }\n\n const label = getLabel(entity.label);\n const secondaryLabel = entity.secondaryLabel;\n const businessCardText = getBusinessCardAttributesText(metadata, entity);\n const isActive = isActiveObject(entity);\n const entityUri = entity.uri;\n const entityId = getEntityId(entity);\n return (\n <div className={classnames(styles.profileBandWrapper, className)}>\n <div\n className={classnames(styles.profileBand, {\n [styles.inactive]: !isActive\n })}\n data-entity-uri={entityUri}\n >\n <EntityAvatar\n key={entity.uri}\n entity={entity}\n avatarClassName={styles.profileIcon}\n imageClassName={styles.imageProfileIcon}\n />\n <div className={styles.profileInfo}>\n <div>\n <Typography variant=\"h6\" className={styles.label}>\n {renderLabel(label)}\n </Typography>\n {secondaryLabel && (\n <Typography variant=\"subtitle2\" className={styles.secondaryLabel}>\n {secondaryLabel}\n </Typography>\n )}\n {businessCardText && (\n <Typography variant=\"subtitle1\" className={styles.businessCard}>\n {businessCardText}\n </Typography>\n )}\n </div>\n <div className={styles.specialInfo}>\n <div className={styles.entityType}>\n <EntityTypeBadge entity={entity} size=\"medium\" className={styles.badge} />\n {!isTempUri(entityUri) && showEntityId && (\n <Tooltip title={i18n.text('Copy to clipboard')}>\n <Typography\n display=\"inline\"\n variant=\"body2\"\n className={styles.entityId}\n onClick={handleCopyEntityIdToClipboard}\n >\n {i18n.text('Entity ID')}: {entityId}\n </Typography>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n {children && <div>{children}</div>}\n </div>\n </div>\n );\n};\n\nexport default ProfileBand;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n image: {\n width: '40px',\n height: '40px'\n },\n info: {\n marginLeft: '12px',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n label: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.primary.main\n },\n secondaryLabel: {\n marginTop: '4px',\n fontWeight: 400,\n fontSize: '10px',\n lineHeight: '12px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n link: {\n textDecoration: 'none'\n },\n thirdRow: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'center',\n marginTop: 'auto',\n paddingTop: '4px'\n },\n entityId: {\n display: 'flex',\n overflow: 'hidden',\n alignItems: 'baseline',\n whiteSpace: 'nowrap',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px'\n },\n entityIdLabel: {\n color: theme.palette.text.secondary\n },\n entityIdValue: {\n marginLeft: '8px',\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&[aria-describedby]': {\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Entity, getEntityId, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport EntityAvatar from '../../EntityAvatar/EntityAvatar';\nimport EntityUriLink from '../../EntityUriLink/EntityUriLink';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport EntityTypeBadge from '../../EntityTypeBadge/EntityTypeBadge';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n };\n};\n\nexport const ProfileCardContent = ({entity, classes = {}}: Props) => {\n const styles = useStyles();\n const {secondaryLabel: secondaryLabelClass, label: labelClass} = classes;\n const label = getLabel(entity.label);\n const {secondaryLabel} = entity;\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n return (\n <>\n <EntityAvatar entity={entity} imageClassName={styles.image} />\n <div className={styles.info}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.link}>\n <ExpandedValueTooltip value={label} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.label, labelClass)}>{label}</div>\n </ExpandedValueTooltip>\n </EntityUriLink>\n\n {secondaryLabel && (\n <ExpandedValueTooltip value={secondaryLabel} placement=\"top\" showOnExceededHeight={true}>\n <div className={classnames(styles.secondaryLabel, secondaryLabelClass)}>{secondaryLabel}</div>\n </ExpandedValueTooltip>\n )}\n <div className={styles.thirdRow}>\n <EntityTypeBadge entity={entity} size=\"medium\" />\n <div className={styles.entityId} onClick={handleCopyEntityIdToClipboard}>\n <div className={styles.entityIdLabel}>{i18n.text('ID:')}</div>\n <ExpandedValueTooltip value={`Copy to clipboard ${getEntityId(entity)}`} placement=\"top\">\n <div className={styles.entityIdValue}>{getEntityId(entity)}</div>\n </ExpandedValueTooltip>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n '@keyframes keyframes-wave': {\n '0%': {\n transform: 'translateX(-100%)'\n },\n '60%': {\n transform: 'translateX(100%)'\n },\n '100%': {\n transform: 'translateX(100%)'\n }\n },\n wave: {\n overflow: 'hidden',\n position: 'relative',\n '&:after': {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n content: '\"\"',\n position: 'absolute',\n animation: '$keyframes-wave 1.6s linear 0.5s infinite',\n transform: 'translateX(-100%)',\n background: 'linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent);'\n }\n },\n avatar: {\n flex: 'none',\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n info: {\n marginLeft: '12px',\n flex: 'auto'\n },\n label: {\n width: '40%',\n height: '15px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n secondaryLabel: {\n marginTop: '4px',\n width: '100%',\n height: '12px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n },\n thirdRow: {\n marginTop: '4px',\n width: '60%',\n height: '24px',\n borderRadius: '2px',\n backgroundColor: 'rgba(0, 0, 0, 0.11)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nexport const ProfileCardPlaceholder = () => {\n const styles = useStyles();\n return (\n <>\n <div className={classnames(styles.avatar, styles.wave)} />\n <div className={styles.info}>\n <div className={classnames(styles.label, styles.wave)} />\n <div className={classnames(styles.secondaryLabel, styles.wave)} />\n <div className={classnames(styles.thirdRow, styles.wave)} />\n </div>\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n padding: '16px',\n overflow: 'hidden'\n }\n});\n\nexport default useStyles;\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {ProfileCardContent} from './ProfileCardContent/ProfileCardContent';\nimport {ProfileCardPlaceholder} from './ProfileCardPlaceholder/ProfileCardPlaceholder';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n classes?: {\n label?: string;\n secondaryLabel?: string;\n container?: string;\n };\n variant?: 'loading' | 'normal';\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst ProfileCard = ({entity, classes = {}, variant = 'normal', ...otherProps}: Props) => {\n const styles = useStyles();\n const {container: containerClass} = classes;\n return (\n <div className={classnames(styles.container, containerClass)} {...otherProps}>\n {variant === 'normal' ? (\n <ProfileCardContent entity={entity} classes={classes} />\n ) : (\n <ProfileCardPlaceholder />\n )}\n </div>\n );\n};\n\nexport default memo(ProfileCard);\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@mui/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @mui/material/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import React, {useEffect, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {MapInstance} from '../../types';\n\ntype Props = {\n children: React.ReactNode;\n className?: string;\n position: number;\n map: MapInstance;\n};\n\nexport const MapControlContainer = ({children, className, position, map}: Props) => {\n const [controlElement, setControlElement] = useState(null);\n\n useEffect(() => {\n const controlDiv = document.createElement('div');\n const divIndex = map.controls[position].length;\n map.controls[position].push(controlDiv);\n setControlElement(controlDiv);\n\n return () => {\n map.controls[position].removeAt(divIndex);\n };\n }, [map, position]);\n\n useEffect(() => {\n if (controlElement && className) {\n controlElement.classList.add(className);\n }\n }, [className, controlElement]);\n\n if (controlElement) {\n return createPortal(children, controlElement);\n }\n\n return null;\n};\n","import React from 'react';\n\nconst SvgRadius: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={18} height={18} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M10.61 8.568A1.666 1.666 0 119.432 7.39l3.656-3.657a6.668 6.668 0 101.179 1.179L10.61 8.568zm-7.503 6.325A8.333 8.333 0 1114.893 3.107 8.333 8.333 0 013.107 14.893z\"\n fill=\"#000\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n opacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgRadius;\n","import React from 'react';\n\nconst SvgDraw: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <path\n d=\"M18.29 11.44a1.49 1.49 0 012.12 0l1.15 1.15c.59.58.59 1.53 0 2.12L16.27 20H13v-3.27zM18.174 4c0 1.71-.26 3.285-.932 4.563-.946 1.798-2.609 2.724-4.906 2.46l-.855-.116c-4.382-.544-6.626.53-6.626 3.609 0 1.968 1.105 2.924 3.267 3.304.692.121 1.306.165 2.234.176L11 18v2l-.698-.003c-1.016-.013-1.71-.063-2.526-.206-3.018-.53-4.921-2.176-4.921-5.274 0-4.819 3.71-6.378 9.52-5.505 1.575.237 2.506-.255 3.098-1.38.451-.858.666-2.02.697-3.307L16.174 4h2zM18 13.97l-3.45 3.45v1.03h1.03L19.03 15 18 13.97z\"\n id=\"Draw_svg__a\"\n />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"Draw_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#Draw_svg__a\" />\n </mask>\n <g mask=\"url(#Draw_svg__b)\" fill=\"#000\" fillOpacity={0.54}>\n <path d=\"M0 0h24v24H0z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgDraw;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n margin: '2px',\n display: 'flex',\n alignItems: 'center'\n },\n button: {\n color: 'rgba(0,0,0,0.54)',\n padding: 0,\n height: '24px',\n width: '24px',\n minWidth: 0\n },\n icon: {\n width: '20px',\n height: '20px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport {withTooltip} from '../../../../HOCs';\nimport HighlightOffIcon from '@mui/icons-material/HighlightOff';\nimport {MAP_DRAWING_MODES} from '../../../../constants';\nimport RadiusIcon from '../../../../icons/Radius';\nimport DrawIcon from '../../../../icons/Draw';\nimport {DrawingMode, DrawingModes} from '../../types';\nimport {useStyles} from './styles';\n\nexport const ButtonWithTooltip = withTooltip(Button);\n\nconst getIcon = (mode: DrawingMode) => {\n switch (mode) {\n case MAP_DRAWING_MODES.CIRCLE:\n return RadiusIcon;\n case MAP_DRAWING_MODES.POLYGON:\n return DrawIcon;\n default:\n return null;\n }\n};\n\ntype Props = {\n onDrawingModeChanged: (value: DrawingMode | null) => void;\n drawingMode: DrawingMode | null;\n drawingModes: DrawingModes;\n hasActiveOverlay: boolean;\n onClearOverlay: () => void;\n};\n\nexport const TopRightMapControls = ({\n drawingMode,\n drawingModes = [],\n hasActiveOverlay,\n onDrawingModeChanged,\n onClearOverlay\n}: Props) => {\n const styles = useStyles();\n\n const changeDrawingModeTo = (drawingMode) => () => {\n onDrawingModeChanged(drawingMode);\n };\n\n return (\n <div className={styles.container}>\n {drawingMode || hasActiveOverlay ? (\n <ButtonWithTooltip\n tooltipTitle={i18n.text('Clear area')}\n className={styles.button}\n onClick={hasActiveOverlay ? onClearOverlay : changeDrawingModeTo(null)}\n >\n <HighlightOffIcon className={styles.icon} />\n </ButtonWithTooltip>\n ) : (\n drawingModes.map((mode) => {\n const Icon = getIcon(mode);\n return (\n <ButtonWithTooltip\n tooltipTitle={i18n.text('Draw area')}\n key={mode}\n className={styles.button}\n onClick={changeDrawingModeTo(mode)}\n >\n <Icon className={styles.icon} />\n </ButtonWithTooltip>\n );\n })\n )}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n height: '28px',\n marginRight: '7px',\n marginLeft: 0\n },\n label: {\n fontSize: '11px',\n alignSelf: 'center',\n lineHeight: '13px',\n marginLeft: '2px',\n letterSpacing: 0\n },\n checkbox: {\n width: '20px',\n height: '20px',\n boxSizing: 'content-box',\n padding: '5px',\n '& svg': {\n width: '16px',\n height: '16px'\n }\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport {useStyles} from './styles';\n\ntype Props = {\n isSearchOnMapMove: boolean;\n onChangeIsSearchOnMapMove: (value: boolean) => void;\n};\n\nexport const TopCenterMapControls = ({isSearchOnMapMove, onChangeIsSearchOnMapMove}: Props) => {\n const styles = useStyles();\n const onChange = (event) => {\n onChangeIsSearchOnMapMove(event.target.checked);\n };\n return (\n <FormControlLabel\n classes={{\n root: styles.container,\n label: styles.label\n }}\n control={<Checkbox checked={isSearchOnMapMove} onChange={onChange} className={styles.checkbox} />}\n label={i18n.text('Search as I move the map')}\n />\n );\n};\n","import {MAP_DRAWING_MODES, MAP_MINIMUM_SCALE_RADIUS} from '../../../constants';\nimport {DrawingMode, EntityMarker, Overlay, MapInstance} from '../types';\n\nexport const getMapBoundsPolygon = (map: MapInstance) => {\n const bounds = map.getBounds();\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n const neLat = ne.lat(),\n neLng = ne.lng(),\n swLat = sw.lat(),\n swLng = sw.lng();\n const additionalPoint1 = [];\n const additionalPoint2 = [];\n if (!((neLng === 180 && swLng === -180) || (neLng === -180 && swLng === 180))) {\n // excluding corner case when we see more than one \"map unfolding\" (in this case google maps automatically set 180 and -180),\n // we can't describe map bounds as just rectangle, because lng distance can be more than 180\",\n // so we need to add additional points to have correct polygon\n const center = bounds.getCenter();\n additionalPoint1.push([neLat, center.lng()]);\n additionalPoint2.push([swLat, center.lng()]);\n }\n return [[neLat, neLng], ...additionalPoint1, [neLat, swLng], [swLat, swLng], ...additionalPoint2, [swLat, neLng]];\n};\n\nexport const getDrawingMode = (drawingMode: DrawingMode) => {\n switch (drawingMode) {\n case MAP_DRAWING_MODES.CIRCLE:\n return window.google.maps.drawing.OverlayType.CIRCLE;\n case MAP_DRAWING_MODES.POLYGON:\n return window.google.maps.drawing.OverlayType.POLYGON;\n default:\n return null;\n }\n};\n\nexport const fitMapBoundsForMarkers = (markers: EntityMarker[], map: MapInstance, overlay: Overlay) => {\n const bounds = new window.google.maps.LatLngBounds();\n\n markers.forEach((marker) => bounds.extend(marker.point));\n\n if (markers.length === 1) {\n const center = bounds.getCenter();\n\n bounds.extend(\n new window.google.maps.LatLng(\n center.lat() + MAP_MINIMUM_SCALE_RADIUS,\n center.lng() + MAP_MINIMUM_SCALE_RADIUS\n )\n );\n bounds.extend(\n new window.google.maps.LatLng(\n center.lat() - MAP_MINIMUM_SCALE_RADIUS,\n center.lng() - MAP_MINIMUM_SCALE_RADIUS\n )\n );\n }\n\n map.fitBounds(bounds);\n\n if (overlay) {\n fitMapBoundsForOverlay(map, overlay, bounds);\n }\n};\n\nexport const fitMapBoundsForOverlay = (map: MapInstance, overlay: Overlay, existingBounds?) => {\n if (overlay.path) {\n const bounds = existingBounds || new window.google.maps.LatLngBounds();\n overlay.path.forEach(({lat, lng}) => bounds.extend(new window.google.maps.LatLng(lat, lng)));\n map.fitBounds(bounds);\n }\n};\n","export const MARKER = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"22px\" height=\"32px\" viewBox=\"0 0 22 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>View / Map / Marker / Large</title>\n <defs>\n <radialGradient cx=\"50%\" cy=\"50.2950175%\" fx=\"50%\" fy=\"50.2950175%\" r=\"49.7049825%\" gradientTransform=\"translate(0.500000,0.502950),scale(0.777778,1.000000),rotate(90.000000),scale(1.000000,1.293560),translate(-0.500000,-0.502950)\" id=\"radialGradient-1\">\n <stop stop-color=\"#000000\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0\" offset=\"100%\"></stop>\n </radialGradient>\n <path d=\"M20,1 C20.5522847,1 21,1.44771525 21,2 L21,20 C21,20.5522847 20.5522847,21 20,21 L15.2374606,21.0021908 C14.9306693,21.3935449 14.6510143,21.7632851 14.3885453,22.1256523 C12.8309725,24.2760522 12,26.0137017 12,27.5 C12,28.0522847 11.5522847,28.5 11,28.5 C10.4477153,28.5 10,28.0522847 10,27.5 C10,25.7886708 8.84033182,23.6810997 6.73798027,21.0014567 L2,21 C1.44771525,21 1,20.5522847 1,20 L1,2 C1,1.44771525 1.44771525,1 2,1 L20,1 Z\" id=\"path-2\"></path>\n </defs>\n <g id=\"View-/-Map-/-Marker-/-Large\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse id=\"Oval\" fill=\"url(#radialGradient-1)\" opacity=\"0.12\" cx=\"11\" cy=\"28.5\" rx=\"4.5\" ry=\"3.5\"></ellipse>\n <path d=\"M21,0 C21.5522847,-1.01453063e-16 22,0.44771525 22,1 L22,21 C22,21.5522847 21.5522847,22 21,22 L15.7283832,22.0012846 C15.5422129,22.2445529 15.3664776,22.4802332 15.1984183,22.7122576 C13.7560833,24.7035592 13,26.2846074 13,27.5 L13,27.5 L12.9945143,27.6492623 C12.9181651,28.6841222 12.0543618,29.5 11,29.5 C9.8954305,29.5 9,28.6045695 9,27.5 L9,27.5 L8.99485006,27.3298651 C8.91582184,26.0024976 7.93016704,24.2171459 6.23940611,22.000704 L1,22 C0.44771525,22 6.76353751e-17,21.5522847 0,21 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L21,0 Z\" id=\"Path-3\" fill=\"#FFFFFF\"></path>\n <mask id=\"mask-3\" fill=\"white\">\n <use xlink:href=\"#path-2\"></use>\n </mask>\n <use id=\"Path-2\" fill=\"#FFFFFF\" fill-rule=\"nonzero\" xlink:href=\"#path-2\"></use>\n <rect id=\"Entity-type\" fill=\"#24A8E8\" mask=\"url(#mask-3)\" x=\"0\" y=\"0\" width=\"22\" height=\"32\"></rect>\n </g>\n</svg>`;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n popper: {\n maxWidth: '263px',\n minWidth: '150px',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n backgroundColor: 'white',\n borderRadius: '2px'\n }\n});\n","import React, {memo, useCallback, useContext, useRef, useState} from 'react';\nimport {pathEq} from 'ramda';\nimport {Marker, InfoBox, MarkerProps} from '@react-google-maps/api';\nimport ProfileCard from '../../ProfileCard/ProfileCard';\nimport Popper from '../../Popper/Popper';\nimport {debounce, svg2Url} from '@reltio/mdm-sdk';\nimport {EntityMarkerContext} from '../../../contexts';\nimport {MARKER} from './icons/marker.inline.svg';\nimport {HOVERED_MARKER} from './icons/marker-hover.inline.svg';\nimport {EntityMarker as EntityMarkerType} from '../types';\nimport {useStyles} from './styles';\n\nconst HIDE_DEBOUNCE_INTERVAL = 50;\nconst MARKER_WIDTH = 22;\nconst MARKER_HEIGHT = 32;\nconst MARKER_CARD_MARGIN = 8;\n\nconst hoveredMarkerIcon = svg2Url(HOVERED_MARKER);\nconst markerIcon = svg2Url(MARKER);\n\ntype Props = {\n marker: EntityMarkerType;\n onClick: (marker: EntityMarkerType) => void;\n} & Omit<MarkerProps, 'onClick' | 'icon' | 'position' | 'visible' | 'onMouseOver' | 'onMouseOut'>;\n\nconst EntityMarker = ({marker, onClick, ...otherProps}: Props) => {\n const styles = useStyles();\n const popperAnchor = useRef();\n const [hovered, setHovered] = useState(false);\n const {activeEntityUri} = useContext(EntityMarkerContext);\n const isActive = pathEq(['entity', 'uri'], activeEntityUri, marker);\n const position = {lat: marker.point.lat, lng: marker.point.lng};\n const setHoveredDebounced = useCallback(debounce(setHovered, HIDE_DEBOUNCE_INTERVAL), []);\n const onMouseOver = useCallback(() => setHoveredDebounced(true), [setHoveredDebounced]);\n const onMouseOut = useCallback(() => setHoveredDebounced(false), [setHoveredDebounced]);\n const handleClick = useCallback(() => onClick(marker), [onClick, marker]);\n\n return (\n <>\n <Popper\n anchorEl={popperAnchor.current}\n open={hovered}\n className={styles.popper}\n modal={false}\n placement=\"top\"\n >\n <ProfileCard entity={marker.entity} onMouseOver={onMouseOver} onMouseOut={onMouseOut} />\n </Popper>\n <Marker\n icon={{\n url: hovered || isActive ? hoveredMarkerIcon : markerIcon,\n // needed for IE:\n scaledSize: new google.maps.Size(MARKER_WIDTH, MARKER_HEIGHT) //eslint-disable-line\n }}\n position={position}\n onClick={handleClick}\n visible={marker.visible !== false}\n onMouseOver={onMouseOver}\n onMouseOut={onMouseOut}\n {...otherProps}\n />\n <InfoBox\n options={{\n alignBottom: true,\n pane: 'mapPane',\n pixelOffset: new google.maps.Size(0, -(MARKER_HEIGHT + MARKER_CARD_MARGIN)), //eslint-disable-line\n closeBoxURL: '',\n enableEventPropagation: true,\n disableAutoPan: true\n }}\n position={position}\n >\n <span ref={popperAnchor} />\n </InfoBox>\n </>\n );\n};\n\nexport default memo(EntityMarker);\n","export const HOVERED_MARKER = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"22px\" height=\"32px\" viewBox=\"0 0 22 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>View / Map / Marker / Large (hover)</title>\n <defs>\n <radialGradient cx=\"50%\" cy=\"50.2950175%\" fx=\"50%\" fy=\"50.2950175%\" r=\"49.7049825%\" gradientTransform=\"translate(0.500000,0.502950),scale(0.777778,1.000000),rotate(90.000000),scale(1.000000,1.293560),translate(-0.500000,-0.502950)\" id=\"radialGradient-1\">\n <stop stop-color=\"#000000\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0\" offset=\"100%\"></stop>\n </radialGradient>\n <path d=\"M21,0 C21.5522847,-1.01453063e-16 22,0.44771525 22,1 L22,21 C22,21.5522847 21.5522847,22 21,22 L15.7283832,22.0012846 C15.5422129,22.2445529 15.3664776,22.4802332 15.1984183,22.7122576 C13.7560833,24.7035592 13,26.2846074 13,27.5 L13,27.5 L12.9945143,27.6492623 C12.9181651,28.6841222 12.0543618,29.5 11,29.5 C9.8954305,29.5 9,28.6045695 9,27.5 L9,27.5 L8.99485006,27.3298651 C8.91582184,26.0024976 7.93016704,24.2171459 6.23940611,22.000704 L1,22 C0.44771525,22 6.76353751e-17,21.5522847 0,21 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L21,0 Z\" id=\"path-2\"></path>\n </defs>\n <g id=\"View-/-Map-/-Marker-/-Large-(hover)\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse id=\"Oval\" fill=\"url(#radialGradient-1)\" opacity=\"0.32\" cx=\"11\" cy=\"28.5\" rx=\"6\" ry=\"4.66666667\"></ellipse>\n <mask id=\"mask-3\" fill=\"white\">\n <use xlink:href=\"#path-2\"></use>\n </mask>\n <use id=\"Path-2\" fill=\"#FFFFFF\" xlink:href=\"#path-2\"></use>\n <rect id=\"Entity-type\" fill=\"#24A8E8\" mask=\"url(#mask-3)\" x=\"0\" y=\"0\" width=\"22\" height=\"32\"></rect>\n <path d=\"M20,2 L20,20 L14.755,20 L14.6905172,20.0815309 C14.3562717,20.5012516 14.0578656,20.8886742 13.7817711,21.2616986 L13.5786724,21.5390469 C11.92787,23.8181606 11.079024,25.6311217 11.0052669,27.2674145 L11.0052669,27.2674145 L11,27.5 L10.9968324,27.3203844 C10.9285422,25.3781621 9.75347502,23.1598866 7.22124201,20.0010865 L2,20 L2,2 L20,2 Z\" id=\"Path\" fill=\"#FFFFFF\" fill-rule=\"nonzero\" mask=\"url(#mask-3)\"></path>\n </g>\n</svg>`;\n","import {useEffect} from 'react';\nimport {usePrevious} from '../../../hooks';\nimport {fitMapBoundsForMarkers, fitMapBoundsForOverlay} from '../helpers';\n\nexport const useFitMapBounds = ({markers, activeOverlay, isSearchOnMapMove, map}) => {\n const apiIsLoaded = Boolean(map && window.google);\n const prevMarkers = usePrevious(markers);\n const prevActiveOverlay = usePrevious(activeOverlay);\n const prevApiIsLoaded = usePrevious(apiIsLoaded);\n\n useEffect(() => {\n const activeOverlayChanged = prevActiveOverlay !== activeOverlay;\n const markersChanged = prevMarkers !== markers;\n const apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;\n\n const shouldUseFitMapBoundsForOverlay =\n apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);\n const shouldUseFitMapBoundsForMarkers =\n apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);\n\n if (shouldUseFitMapBoundsForMarkers) {\n fitMapBoundsForMarkers(markers, map, activeOverlay);\n } else if (shouldUseFitMapBoundsForOverlay) {\n fitMapBoundsForOverlay(map, activeOverlay);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiIsLoaded, markers, activeOverlay]);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n mapControlContainer: {\n borderRadius: '2px',\n backgroundColor: '#FFFFFF',\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.15)',\n margin: '10px'\n }\n});\n","import React, {useCallback, useMemo, useRef, useState} from 'react';\nimport {propEq, isEmpty, prop} from 'ramda';\nimport {\n GoogleMap,\n useJsApiLoader,\n GoogleMapProps,\n Polygon,\n DrawingManager,\n MarkerClusterer,\n LoadScriptProps,\n MarkerProps,\n MarkerClustererProps\n} from '@react-google-maps/api';\nimport {noop} from '../../core/utils';\nimport {MapControlContainer} from './MapControls/MapControlContainer/MapControlContrainer';\nimport {TopRightMapControls} from './MapControls/TopRightMapControls/TopRightMapControls';\nimport {TopCenterMapControls} from './MapControls/TopCenterMapControls/TopCenterMapControls';\nimport {getMapBoundsPolygon, getDrawingMode} from './helpers';\nimport EntityMarker from './EntityMarker/EntityMarker';\nimport {DEFAULT_GOOGLE_MAP_OPTIONS, DEFAULT_OVERLAY_OPTIONS, MAP_DRAWING_MODES} from '../../constants';\nimport {DrawingModes, EntityMarker as Marker, MapBounds, Overlay, OverlayPath} from './types';\nimport {useFitMapBounds} from './hooks/useFitMapBounds';\n\nimport {useStyles} from './styles';\n\nconst ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;\n\nconst libraries = ['drawing'] as LoadScriptProps['libraries'];\n\ntype MarkerClustererOptions = MarkerClustererProps['options'];\ntype Props = {\n markers?: Marker[];\n mapKey: string;\n defaultZoom?: GoogleMapProps['zoom'];\n defaultCenter?: GoogleMapProps['center'];\n loadingElement: JSX.Element;\n isSearchOnMapMove?: boolean;\n isSearchEnabled?: boolean;\n activeOverlay?: Overlay;\n overlayOptions?: google.maps.PolygonOptions | google.maps.CircleOptions;\n drawingModes?: DrawingModes;\n markerClusterer?: boolean;\n markerClustererOptions?: MarkerClustererOptions;\n mapOptions?: google.maps.MapOptions;\n mapContainerClassName?: string;\n onMapBoundsChanged?: (value: MapBounds | null) => void;\n onOverlayUpdated?: (value: {data: OverlayPath; type: string}) => void;\n onMarkerClicked?: (value: Marker) => void;\n};\n\nexport const ReltioMap = ({\n markers = [],\n mapKey,\n defaultZoom,\n defaultCenter,\n loadingElement,\n isSearchOnMapMove,\n isSearchEnabled,\n activeOverlay,\n overlayOptions = {},\n drawingModes = [],\n markerClusterer,\n markerClustererOptions,\n mapOptions = {},\n mapContainerClassName,\n onMapBoundsChanged = noop,\n onOverlayUpdated = noop,\n onMarkerClicked = noop\n}: Props) => {\n const styles = useStyles();\n const {isLoaded, loadError} = useJsApiLoader({\n googleMapsApiKey: mapKey,\n libraries\n });\n\n const mapMoveEndTimer = useRef(null);\n const [map, setMap] = useState<google.maps.Map>(null);\n const [polygon, setPolygon] = useState(null);\n const [drawingMode, setDrawingMode] = useState(null);\n\n useFitMapBounds({markers, activeOverlay, map, isSearchOnMapMove});\n\n const allOverlayOptions = useMemo(() => ({...DEFAULT_OVERLAY_OPTIONS, ...overlayOptions}), [overlayOptions]);\n const googleMapOptions = useMemo(() => ({...DEFAULT_GOOGLE_MAP_OPTIONS, ...mapOptions}), [mapOptions]);\n\n const handleChangeIsSearchOnMapMove = useCallback(\n (isSearchOnMapMove: boolean) => {\n onMapBoundsChanged(isSearchOnMapMove ? getMapBoundsPolygon(map) : null);\n setDrawingMode(null);\n clearTimeout(mapMoveEndTimer.current);\n },\n [map, onMapBoundsChanged]\n );\n\n const handleMapMoveStart = useCallback(() => {\n clearTimeout(mapMoveEndTimer.current);\n }, []);\n\n const handleMapMoveEnd = useCallback(() => {\n if (!isSearchOnMapMove) return;\n onMapBoundsChanged(getMapBoundsPolygon(map));\n }, [isSearchOnMapMove, map, onMapBoundsChanged]);\n\n const handleMapIdle = useCallback(() => {\n if (!isSearchOnMapMove) return;\n clearTimeout(mapMoveEndTimer.current);\n mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);\n }, [handleMapMoveEnd, isSearchOnMapMove]);\n\n const handleOverlayChange = useCallback(\n (e, propOverlay?) => {\n const polygonStateOverlay = polygon && {type: MAP_DRAWING_MODES.POLYGON, overlay: polygon};\n const stateOverlay = propOverlay || polygonStateOverlay;\n\n if (isEmpty(stateOverlay)) return;\n\n const {overlay, type} = stateOverlay;\n\n const getPolygonLatLngCoordinates = () =>\n overlay\n .getPath()\n .getArray()\n .map((latlng) => [latlng.lat(), latlng.lng()]);\n\n const getCircleParameters = () => ({radius: overlay.getRadius() / 1000, center: overlay.getCenter()});\n\n const typeActions = {\n [MAP_DRAWING_MODES.POLYGON]: getPolygonLatLngCoordinates,\n [MAP_DRAWING_MODES.CIRCLE]: getCircleParameters\n };\n\n const data = typeActions[type]?.();\n\n if (!data) return;\n\n onOverlayUpdated({data, type});\n },\n [onOverlayUpdated, polygon]\n );\n\n const handleOverlayComplete = useCallback(\n (type) => (overlay) => {\n handleOverlayChange(null, {type, overlay});\n overlay.setMap(null);\n setDrawingMode(null);\n },\n [handleOverlayChange]\n );\n\n const handleClearOverlay = useCallback(() => {\n onOverlayUpdated(null);\n }, [onOverlayUpdated]);\n\n const renderMarkers = (clusterer?: MarkerProps['clusterer']) => {\n return markers\n .filter(prop('point'))\n .map((marker) => (\n <EntityMarker key={marker.id} marker={marker} clusterer={clusterer} onClick={onMarkerClicked} />\n ));\n };\n\n const renderMarkerClusterer = (options?: MarkerClustererOptions) => {\n return <MarkerClusterer options={options}>{renderMarkers}</MarkerClusterer>;\n };\n\n if (loadError) {\n return null;\n }\n\n if (!isLoaded) {\n return loadingElement;\n }\n\n const shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);\n const shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);\n const shouldRenderCenterMapControls = map && isSearchEnabled;\n const shouldRenderPolygon =\n !getDrawingMode(drawingMode) && activeOverlay && propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay);\n\n return (\n <GoogleMap\n mapTypeId={window.google.maps.MapTypeId.ROADMAP}\n options={googleMapOptions}\n onLoad={setMap}\n zoom={defaultZoom}\n center={defaultCenter}\n onZoomChanged={handleMapMoveStart}\n onDragStart={handleMapMoveStart}\n onIdle={handleMapIdle}\n mapContainerClassName={mapContainerClassName}\n >\n {shouldRenderRightMapControls && (\n <MapControlContainer\n className={styles.mapControlContainer}\n position={window.google.maps.ControlPosition.TOP_RIGHT}\n map={map}\n >\n <TopRightMapControls\n hasActiveOverlay={!!activeOverlay}\n drawingModes={drawingModes}\n drawingMode={drawingMode}\n onDrawingModeChanged={setDrawingMode}\n onClearOverlay={handleClearOverlay}\n />\n </MapControlContainer>\n )}\n\n {shouldRenderCenterMapControls && (\n <MapControlContainer\n className={styles.mapControlContainer}\n position={window.google.maps.ControlPosition.TOP_CENTER}\n map={map}\n >\n <TopCenterMapControls\n onChangeIsSearchOnMapMove={handleChangeIsSearchOnMapMove}\n isSearchOnMapMove={isSearchOnMapMove}\n />\n </MapControlContainer>\n )}\n\n {markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers()}\n\n {shouldRenderPolygon && (\n <Polygon\n onLoad={setPolygon}\n path={activeOverlay.path}\n editable={true}\n options={allOverlayOptions}\n onMouseUp={handleOverlayChange}\n onDragEnd={handleOverlayChange}\n />\n )}\n\n {shouldRenderDrawingManager && (\n <DrawingManager\n onPolygonComplete={handleOverlayComplete(MAP_DRAWING_MODES.POLYGON)}\n onCircleComplete={handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE)}\n drawingMode={getDrawingMode(drawingMode)}\n options={{\n drawingControl: false,\n circleOptions: allOverlayOptions,\n polygonOptions: allOverlayOptions\n }}\n />\n )}\n </GoogleMap>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n position: 'relative',\n '& .Resizer': {\n zIndex: 1,\n boxSizing: 'border-box',\n backgroundClip: 'padding-box',\n '&.disabled': {\n cursor: 'initial',\n height: 0,\n margin: 0\n },\n '&.horizontal': {\n height: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '100% 1px',\n backgroundPosition: 'top',\n width: '100%',\n marginBottom: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'row-resize',\n backgroundImage:\n 'linear-gradient(rgba(0, 114, 206, 0), rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1))',\n backgroundSize: '100% 3px'\n }\n },\n '&.vertical': {\n width: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1px 100%',\n backgroundPosition: 'left',\n height: '100%',\n marginRight: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'col-resize',\n backgroundImage:\n 'linear-gradient(to left, rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1), rgba(0, 114, 206, 0.35))',\n backgroundSize: '3px 100%'\n }\n }\n }\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport SplitPane from 'react-split-pane';\nimport {useTheme} from '@mui/material/styles';\nimport {debounce} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst HANDLE_CHANGE_DEBOUNCE_INTERVAL = 250;\n\nconst isHorizontal = (orientation) => orientation === 'horizontal';\n\nexport type Size = string | number;\ntype OnChange = {\n size: number;\n percentageSize: string;\n isMaxSize: boolean;\n isMinSize: boolean;\n};\n\ntype Props = {\n className?: string;\n children: React.ReactElement[];\n allowResize?: boolean;\n primary?: 'first' | 'second';\n minSize?: Size;\n maxSize?: Size;\n defaultSize?: Size;\n debounceInterval?: number;\n size?: Size;\n orientation?: 'vertical' | 'horizontal';\n onChange?: ({size, percentageSize, isMaxSize, isMinSize}: OnChange) => void;\n};\n\nexport const ResizablePanes = ({\n className,\n children,\n orientation,\n primary,\n defaultSize,\n size,\n minSize,\n maxSize,\n allowResize,\n debounceInterval = HANDLE_CHANGE_DEBOUNCE_INTERVAL,\n onChange\n}: Props) => {\n const styles = useStyles();\n const theme = useTheme();\n const [containerEl, setContainerEl] = useState(null);\n const [isPaneAnimationEnabled, setIsPaneAnimationEnabled] = useState(true);\n\n const enableAnimation = useCallback(() => setIsPaneAnimationEnabled(true), []);\n const disableAnimation = useCallback(() => setIsPaneAnimationEnabled(false), []);\n const getContainerSize = () => (isHorizontal(orientation) ? containerEl?.clientHeight : containerEl?.clientWidth);\n\n const handleChange = useCallback(\n debounce((size) => {\n const containerSize = getContainerSize();\n onChange({\n percentageSize: `${(size / containerSize) * 100}%`,\n isMaxSize: +maxSize > 0 ? size === maxSize : size === containerSize + maxSize,\n isMinSize: size === minSize,\n size\n });\n }, debounceInterval),\n [onChange, orientation, maxSize, containerEl]\n );\n\n const paneAnimationStyle = useMemo(\n () => ({\n transition: theme.transitions.create(isHorizontal(orientation) ? 'height' : 'width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n }),\n [orientation, theme]\n );\n\n if (typeof size === 'number' && size < 0) {\n size = (getContainerSize() || 0) + size;\n }\n\n return (\n <div ref={setContainerEl} className={classnames(styles.container, className)}>\n <SplitPane\n split={orientation}\n size={size}\n primary={primary}\n allowResize={allowResize}\n onChange={handleChange}\n defaultSize={defaultSize}\n minSize={minSize}\n maxSize={maxSize}\n onDragStarted={disableAnimation}\n onDragFinished={enableAnimation}\n pane1Style={isPaneAnimationEnabled ? paneAnimationStyle : undefined}\n >\n {children}\n </SplitPane>\n </div>\n );\n};\n\nResizablePanes.displayName = 'ResizablePanes';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n tabsRoot: {\n width: '100%'\n },\n tabsScrollButton: {\n flex: '0 0 24px'\n },\n tabRoot: {\n fontSize: '0.875rem',\n padding: '7px 18px 5px',\n '@media (min-width: 960px)': {\n minWidth: 'inherit'\n },\n '&$disabled': {\n pointerEvents: 'auto'\n }\n },\n labelWrapper: {\n whiteSpace: 'nowrap',\n letterSpacing: 'normal',\n display: 'flex',\n flexDirection: 'row',\n width: '100%'\n },\n label: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontWeight: 500\n },\n disabled: {}\n});\n","import React from 'react';\nimport Tabs, {TabsProps} from '@mui/material/Tabs';\nimport Tab, {TabProps} from '@mui/material/Tab';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\n\nimport {useStyles} from './styles';\n\nexport type Tab = {\n label: string;\n value: string;\n additionalLabel?: React.ReactNode;\n dataReltioId?: string;\n};\n\ntype Props = Omit<TabsProps, 'onChange' | 'value' | 'scrollButtons'> & {\n value: string;\n tabs: Tab[];\n onChange: (value: string) => void;\n tabClasses?: TabProps['classes'];\n scrollButtons?: TabsProps['scrollButtons'];\n};\n\nconst ScrollableTabs = ({value, tabs = [], onChange, tabClasses, ...otherProps}: Props) => {\n const styles = useStyles();\n\n const renderLabel = (label: string, additionalLabel: React.ReactNode) => (\n <span className={styles.labelWrapper}>\n <ExpandedValueTooltip value={label}>\n <span className={styles.label}>{label}</span>\n </ExpandedValueTooltip>\n {additionalLabel}\n </span>\n );\n\n const handleChange = (event: React.ChangeEvent, value: string) => onChange(value);\n\n return (\n <Tabs\n value={value}\n onChange={handleChange}\n classes={{\n root: styles.tabsRoot,\n scrollButtons: styles.tabsScrollButton\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n variant=\"scrollable\"\n scrollButtons\n {...otherProps}\n allowScrollButtonsMobile\n >\n {tabs.map(({label, value, additionalLabel, dataReltioId, ...rest}) => (\n <Tab\n classes={\n tabClasses || {\n root: styles.tabRoot,\n disabled: styles.disabled\n }\n }\n key={value}\n value={value}\n label={renderLabel(label, additionalLabel)}\n data-reltio-id={dataReltioId}\n {...rest}\n />\n ))}\n </Tabs>\n );\n};\n\nexport default ScrollableTabs;\n","import React from 'react';\nimport SearchInput, {SearchInputProps} from './SearchInput';\nimport {useStyles} from './styles';\n\nconst WhiteSearchInput = ({classes, ...otherProps}: SearchInputProps) => {\n const styles = useStyles({});\n return (\n <SearchInput\n classes={{\n ...classes,\n focused: styles.white\n }}\n {...otherProps}\n />\n );\n};\n\nexport default WhiteSearchInput;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%'\n },\n placeholder: {\n flex: 1\n },\n stepper: {\n padding: '0 24px',\n flex: 2\n },\n stepButton: {\n margin: '-20px -16px',\n padding: '20px 16px',\n '& svg text': {\n textAnchor: 'middle'\n }\n },\n buttons: {\n flex: 1,\n display: 'flex',\n justifyContent: 'flex-end'\n },\n backButton: {\n marginRight: '8px',\n border: '1px solid rgba(0, 0, 0, 0.23)'\n },\n progressButtonWrapper: {\n position: 'relative'\n },\n progress: {\n position: 'absolute',\n left: 'calc(50% - 12px)',\n top: 'calc(50% - 12px)'\n }\n}));\n\nexport {useStyles};\n","import React from 'react';\nimport classnames from 'classnames';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport {useStyles} from './styles';\n\ntype Props = {\n isInProgress: boolean;\n disabled: boolean;\n onClick: () => void;\n circularColor?: 'primary' | 'secondary' | 'inherit';\n children: React.ReactNode;\n className?: string;\n [key: string]: any;\n};\n\nconst ProgressButton = ({\n isInProgress,\n disabled,\n circularColor = 'primary' as const,\n className,\n children,\n onClick,\n ...otherButtonProps\n}: Props) => {\n const styles = useStyles();\n\n return (\n <Button\n {...otherButtonProps}\n className={classnames(styles.progressButtonWrapper, className)}\n onClick={onClick}\n disabled={disabled || isInProgress}\n >\n {children}\n {isInProgress && (\n <div className={styles.progress} data-reltio-id=\"reltio-circular-load-indicator\">\n <CircularProgress size={24} color={circularColor} />\n </div>\n )}\n </Button>\n );\n};\n\nexport default ProgressButton;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {any, drop, propOr} from 'ramda';\nimport Stepper from '@mui/material/Stepper';\nimport Step from '@mui/material/Step';\nimport StepButton from '@mui/material/StepButton';\nimport Button from '@mui/material/Button';\nimport ProgressButton from './ProgressButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n activeStep: number;\n steps: Array<{\n label: string;\n enabled?: boolean;\n }>;\n isPending?: boolean;\n onConfirm?: () => void;\n onChangeStep: (step: number) => void;\n};\n\nconst StepNavigation = ({activeStep, steps, isPending = false, onConfirm, onChangeStep}: Props) => {\n const styles = useStyles();\n\n const isLastStep = activeStep === steps.length - 1;\n const setActiveStep = (step) => {\n if (step !== activeStep) {\n onChangeStep(step);\n }\n };\n\n const isEnabled = propOr(true, 'enabled');\n\n const onBack = (currentStep) => {\n if (currentStep > 0) {\n const prevStep = currentStep - 1;\n if (isEnabled(steps[prevStep])) {\n setActiveStep(prevStep);\n } else {\n onBack(prevStep);\n }\n }\n };\n\n const onNext = (currentStep) => {\n if (currentStep < steps.length - 1) {\n const nextStep = currentStep + 1;\n if (isEnabled(steps[nextStep])) {\n setActiveStep(nextStep);\n } else {\n onNext(nextStep);\n }\n }\n };\n\n const showConfirm = isLastStep && !!onConfirm;\n const isNextButtonEnabled = showConfirm || any(isEnabled, drop(activeStep + 1, steps));\n\n return (\n <div className={styles.container}>\n <div className={styles.placeholder} />\n <Stepper nonLinear activeStep={activeStep} className={styles.stepper}>\n {steps.map(({label, enabled = true}, index) => {\n const disabledStep = !enabled || isPending;\n const completedStep = !disabledStep && index < activeStep;\n return (\n <Step key={label} completed={completedStep} disabled={disabledStep}>\n <StepButton\n className={styles.stepButton}\n onClick={() => setActiveStep(index)}\n data-reltio-id={`reltio-search-bulk-update-${index}`}\n >\n {label}\n </StepButton>\n </Step>\n );\n })}\n </Stepper>\n <div className={styles.buttons}>\n {activeStep > 0 && (\n <Button\n variant=\"outlined\"\n className={styles.backButton}\n onClick={() => onBack(activeStep)}\n disabled={isPending}\n data-reltio-id=\"reltio-search-bulk-update-back\"\n >\n {i18n.text('Back')}\n </Button>\n )}\n <ProgressButton\n variant=\"contained\"\n color=\"primary\"\n disabled={!isNextButtonEnabled}\n isInProgress={isPending}\n onClick={isLastStep ? onConfirm : () => onNext(activeStep)}\n data-reltio-id={`reltio-search-bulk-update-${isLastStep ? 'confirm' : 'continue'}`}\n >\n {showConfirm ? i18n.text('Confirm') : i18n.text('Continue')}\n </ProgressButton>\n </div>\n </div>\n );\n};\n\nexport default StepNavigation;\n","import React from 'react';\n\nconst SvgTenant: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={24} height={24} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M2 0h13v2H8v19h12V6h-9V4h11v19H2V0zm9 8h7v2h-7V8zm0 4h7v2h-7v-2zm0 4h7v2h-7v-2zM4 4v2h2V4H4zm0 8v2h2v-2H4zm0-4v2h2V8H4zm0 8v2h2v-2H4z\"\n fill=\"#000\"\n stroke=\"none\"\n strokeWidth={1}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n};\n\nexport default SvgTenant;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n labelWrapper: {\n height: '24px',\n display: 'inline-flex',\n alignItems: 'center'\n },\n tenantIcon: {\n height: '24px',\n width: '24px',\n marginRight: '4px',\n opacity: 0.38\n },\n tenantLabel: {\n lineHeight: '15px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.38)'\n }\n}));\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\nimport classnames from 'classnames';\nimport TenantIcon from '../../icons/Tenant';\nimport {useStyles} from './styles';\nimport {useMdmEnvironment, useMdmTenantName} from '../../contexts';\n\ntype Props = {\n className?: string;\n};\n\nconst TenantLabel = ({className}: Props) => {\n const styles = useStyles();\n const customerTenantLabel = useMdmTenantName();\n const environmentName = useMdmEnvironment();\n const tenantLabelWithEnv = `${customerTenantLabel}${environmentName ? ' - ' + environmentName.toUpperCase() : ''}`;\n return (\n <div className={classnames(styles.labelWrapper, className)}>\n <TenantIcon className={styles.tenantIcon} data-reltio-id=\"reltio-tenant-icon\" />\n <Typography className={styles.tenantLabel}>{tenantLabelWithEnv}</Typography>\n </div>\n );\n};\n\nexport default TenantLabel;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n viewMoreLessLink: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer'\n },\n\n arrow: {\n marginRight: '8px',\n marginLeft: '-2px',\n transform: 'rotate(0deg)',\n transition: 'transform 0.35s ease'\n },\n\n rotated: {\n transform: 'rotate(-180deg)'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Link from '@mui/material/Link';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\n\nconst ViewMoreToggle = ({active, onClick, className}) => {\n const styles = useStyles();\n return (\n <Link className={classnames(styles.viewMoreLessLink, className)} onClick={onClick} underline=\"none\">\n <ArrowDropDownIcon className={classnames(styles.arrow, {[styles.rotated]: active})} />\n {active ? i18n.text('View less') : i18n.text('View more')}\n </Link>\n );\n};\n\nViewMoreToggle.propTypes = {\n active: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string\n};\n\nexport default ViewMoreToggle;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n attributesContainer: {\n padding: '0 16px 16px 16px'\n },\n header: {\n marginBottom: '4px'\n },\n noCaption: {\n paddingTop: '16px'\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n});\n","import React, {useMemo} from 'react';\nimport {Entity, getAttributesListForReadMode, isEmptyValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport {PivotingAttributeContext, useMdmMetadata, useMdmPivotingAttributes} from '../../../../contexts';\nimport BasicView from '../../../BasicView/BasicView';\nimport FacetViewHeader from '../../../FacetViewHeader/FacetViewHeader';\nimport AttributesList from '../AttributesList';\nimport {AttributesViewProps} from '../../types';\nimport {getFilteredAttrTypes} from '../../helpers/attributesView';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AttributesViewProps, 'mode' | 'pinnedAttributes'>;\n\nconst AttributesView = ({\n className,\n entity = {} as Entity,\n caption = '',\n excludeUris = [],\n includeUris = [],\n attributesCount = 16\n}: Props) => {\n const styles = useStyles();\n\n const metadata = useMdmMetadata();\n const pivotingAttributes = useMdmPivotingAttributes();\n\n const filteredAttrTypes = useMemo(\n () => getFilteredAttrTypes(metadata, entity.type, includeUris, excludeUris),\n [excludeUris, includeUris, metadata, entity.type]\n );\n\n const attributesList = getAttributesListForReadMode(filteredAttrTypes, entity);\n\n const isShowAttributeList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n return isShowAttributeList || !isEmptyValue(caption) ? (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={className}>\n {caption && <FacetViewHeader className={styles.header} title={caption} />}\n <Box className={classnames(styles.attributesContainer, {[styles.noCaption]: !caption})}>\n {isShowAttributeList ? (\n <AttributesList\n entity={entity}\n attrTypes={filteredAttrTypes}\n parentUri={entity.uri}\n drawLines={false}\n max={attributesCount}\n />\n ) : (\n <Typography className={styles.noData}>{i18n.text('No data found')}</Typography>\n )}\n </Box>\n </BasicView>\n </PivotingAttributeContext.Provider>\n ) : null;\n};\n\nexport default AttributesView;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n attributesContainer: {\n overflow: 'hidden',\n padding: '0 16px 16px 16px'\n },\n header: {\n marginBottom: '4px'\n },\n noCaption: {\n paddingTop: '16px'\n }\n});\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n isTempUri,\n getPinnedAttributesForUser,\n Entity,\n AddAttributesPayload,\n ModifyAttributePayload,\n RemoveAttributePayload\n} from '@reltio/mdm-sdk';\nimport Box from '@mui/material/Box';\nimport BasicView from '../../../BasicView/BasicView';\nimport FacetViewHeader from '../../../FacetViewHeader/FacetViewHeader';\nimport AttributesList from '../AttributesList';\nimport {\n ViewIdContext,\n useMdmAction,\n useMdmMetadata,\n useMdmModifiedEntity,\n useMdmUserRoles\n} from '../../../../contexts';\nimport {AttributesViewProps} from '../../types';\nimport {getFilteredAttrTypes} from '../../helpers/attributesView';\nimport {PinnedAttributesContext} from '../contexts/PinnedAttributesContext';\nimport {useStyles} from './styles';\n\ntype Props = Omit<AttributesViewProps, 'attributesCount'>;\n\nconst AttributesView = ({\n className,\n mode,\n entity,\n caption = '',\n excludeUris = [],\n includeUris = [],\n pinnedAttributes\n}: Props) => {\n const styles = useStyles();\n const viewId = useContext(ViewIdContext);\n\n const addAttributes = useMdmAction('addAttributes');\n const modifyAttribute = useMdmAction('modifyAttribute');\n const removeAttribute = useMdmAction('removeAttribute');\n const metadata = useMdmMetadata();\n const userRoles = useMdmUserRoles();\n const modifiedEntity = useMdmModifiedEntity(entity.uri) || ({} as Entity);\n\n const pinnedAttributeUris = useMemo(\n () => getPinnedAttributesForUser(pinnedAttributes, userRoles),\n [pinnedAttributes, userRoles]\n );\n\n const filteredAttrTypes = useMemo(\n () => getFilteredAttrTypes(metadata, modifiedEntity.type, includeUris, excludeUris),\n [excludeUris, includeUris, metadata, modifiedEntity.type]\n );\n\n const onAddAttributes = useCallback(\n (params: AddAttributesPayload) => addAttributes(params.map((param) => ({...param, viewId}))),\n [viewId, addAttributes]\n );\n\n const onChangeAttribute = useCallback(\n (params: ModifyAttributePayload) => modifyAttribute({...params, viewId}),\n [viewId, modifyAttribute]\n );\n\n const onDeleteAttribute = useCallback(\n (params: RemoveAttributePayload) => removeAttribute({...params, viewId}),\n [viewId, removeAttribute]\n );\n\n return (\n <BasicView className={className}>\n {caption && <FacetViewHeader className={styles.header} title={caption} />}\n <Box className={classnames(styles.attributesContainer, {[styles.noCaption]: !caption})}>\n <PinnedAttributesContext.Provider value={pinnedAttributeUris}>\n <AttributesList\n entity={modifiedEntity}\n attrTypes={filteredAttrTypes}\n parentUri={modifiedEntity.uri}\n drawLines={false}\n mode={mode}\n showEmptyEditors={isTempUri(modifiedEntity.uri)}\n crosswalks={modifiedEntity.crosswalks}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </PinnedAttributesContext.Provider>\n </Box>\n </BasicView>\n );\n};\n\nexport default AttributesView;\n","import React from 'react';\nimport {isViewMode} from '@reltio/mdm-sdk';\nimport {AttributesViewProps} from '../types';\nimport ReadModeAttributesView from '../readMode/AttributesView/AttributesView';\nimport EditModeAttributesView from '../editMode/AttributesView/AttributesView';\nimport {useMdmEntityWithDiff, useMdmMode, EntityContext} from '../../../contexts';\n\nconst AttributesView = ({attributesCount, pinnedAttributes, ...restProps}: AttributesViewProps) => {\n const mdmEntity = useMdmEntityWithDiff();\n const mdmMode = useMdmMode();\n\n const entity = restProps.entity || mdmEntity;\n const mode = restProps.mode || mdmMode;\n\n return (\n <EntityContext.Provider value={entity}>\n {isViewMode(mode) ? (\n <ReadModeAttributesView {...restProps} attributesCount={attributesCount} entity={entity} />\n ) : (\n <EditModeAttributesView\n {...restProps}\n mode={mode}\n pinnedAttributes={pinnedAttributes}\n entity={entity}\n />\n )}\n </EntityContext.Provider>\n );\n};\n\nexport default AttributesView;\n","export const MAP_DRAWING_MODES = {\n CIRCLE: 'circle',\n POLYGON: 'polygon'\n};\n\nexport const DEFAULT_OVERLAY_OPTIONS = {\n fillColor: 'rgb(242,82,82)',\n fillOpacity: 0.1,\n strokeWeight: 2,\n strokeColor: '#F25252',\n clickable: false,\n editable: true,\n zIndex: 1\n};\n\nexport const DEFAULT_GOOGLE_MAP_OPTIONS = {\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false\n};\n\nexport const MAP_MINIMUM_SCALE_RADIUS = 0.001;\n","import React from 'react';\n\ntype Value = {\n activeEntityUri?: string;\n};\n\nexport const EntityMarkerContext = React.createContext<Value>({});\nEntityMarkerContext.displayName = 'EntityMarkerContext';\n","import {path, pathOr, curry} from 'ramda';\nimport {appId} from '../constants/constants';\n\nconst emptyArray = [];\nconst facetsDataPropName = 'facetsData';\n\nexport const getDataPath = (fieldName) => [facetsDataPropName, fieldName];\n\nconst getFacetProp = curry((prop, config, state) => {\n const facetDataPath = getDataPath(config.fieldName);\n return path([appId, 'facets', ...facetDataPath, prop], state);\n});\n\nexport const getFacetData = getFacetProp('data');\nexport const getFacetValues = getFacetProp('values');\nexport const getFacetShowAllItems = getFacetProp('showAllItems');\nexport const getFacetFilteredData = getFacetProp('filteredData');\n\nconst getAddedFacets = (state) => state[appId].facets.addedFacets;\nexport const getFacetsData = (state) => state[appId].facets[facetsDataPropName];\nexport const getFacetsConfigs = (state) => state[appId].facets.facetsConfigs;\nexport const getRecommendedFacets = (state) => state[appId].facets.recommendedFacets;\nexport const getSelectedEntityTypes = (state) =>\n pathOr(emptyArray, [appId, 'facets', facetsDataPropName, 'type', 'values'], state);\nexport const isHighlightedFacet = (fieldName, state) => {\n return getAddedFacets(state).includes(fieldName);\n};\nexport const isRecommendedFacet = (fieldName, state) => {\n return getRecommendedFacets(state).includes(fieldName);\n};\nexport const getFacetDisplayedAttributesDataItemsByFieldName = (state, fieldName) => {\n const {data, filteredData} = getFacetsData(state)[fieldName];\n return filteredData || data;\n};\n","import {\n FacetValue,\n ShowMoreEntityTypesPayload,\n HandleFacetsConfigsChangesPayload,\n FacetDataItem,\n MergedFacetData,\n FacetConfig\n} from '../../types';\nimport {Facets} from '../../constants/actionTypes';\n\nexport const createFacets = (facetsConfigs: FacetConfig[], addToEnd: boolean) => {\n return {\n type: Facets.CREATE_FACETS,\n payload: {facetsConfigs, addToEnd}\n };\n};\n\nexport const destroyFacets = (ids: string[]) => {\n return {\n type: Facets.DESTROY_FACETS,\n payload: ids\n };\n};\n\nexport const changeFacetValues = (facetFieldName: string, values: FacetValue[], silent = false) => {\n return {\n type: Facets.CHANGE_VALUES,\n payload: {facetFieldName, values, silent}\n };\n};\n\nexport const clearAllFacetValues = (silent = false) => {\n return {\n type: Facets.CLEAR_ALL_VALUES,\n payload: {silent}\n };\n};\n\nexport const updateFacetsData = (facetsData: {[fieldName: string]: FacetDataItem[]}) => {\n return {\n type: Facets.UPDATE_DATA,\n payload: facetsData\n };\n};\n\nexport const updateFacetFilteredData = (facetsFilteredData: {[fieldName: string]: FacetDataItem[]}) => {\n return {\n type: Facets.UPDATE_FILTERED_DATA,\n payload: facetsFilteredData\n };\n};\n\nexport const destroyFacetFilteredData = (facetFieldName: string) => {\n return {\n type: Facets.DESTROY_FILTERED_DATA,\n payload: facetFieldName\n };\n};\n\nexport const filterFacetData = ({\n facetFieldName,\n value,\n debounceTime = 0,\n pageNumber = 1,\n currentOptions\n}: {\n facetFieldName: string;\n value: string;\n debounceTime: number;\n pageNumber: number;\n currentOptions: FacetDataItem[];\n}) => {\n return {\n type: Facets.FILTER_FACET_DATA,\n payload: {facetFieldName, value, debounceTime, pageNumber, currentOptions}\n };\n};\n\nexport const handleFacetsConfigsChanges = ({\n facetsToAdd,\n fieldNamesToDelete,\n changedEntityTypes,\n addToEnd\n}: HandleFacetsConfigsChangesPayload) => {\n return {\n type: Facets.HANDLE_CONFIGS_CHANGES,\n payload: {facetsToAdd, fieldNamesToDelete, changedEntityTypes, addToEnd}\n };\n};\n\nexport const requestGivenFacetsData = (facets: MergedFacetData[]) => {\n return {\n type: Facets.REQUEST_GIVEN_FACETS_DATA,\n payload: facets\n };\n};\n\nexport const setRecommendedFacetsList = (fieldNames: string[]) => {\n return {\n type: Facets.SET_RECOMMENDED_FACETS_LIST,\n payload: fieldNames\n };\n};\n\nexport const convertAdvancedSearchToFacets = () => {\n return {\n type: Facets.CONVERT_FROM_ADVANCED_SEARCH\n };\n};\n\nexport const showMoreEntityTypes = ({show, silent}: ShowMoreEntityTypesPayload) => {\n return {\n type: Facets.SHOW_MORE_ENTITY_TYPES,\n payload: {show, silent}\n };\n};\n\nexport const highlightAddedFacets = (addedFacets: string[] = []) => {\n return {\n type: Facets.HIGHLIGHT_ADDED_FACETS,\n payload: addedFacets\n };\n};\n\nexport const clearHighlightAddedFacets = () => {\n return {\n type: Facets.CLEAR_HIGHLIGHT_ADDED_FACETS\n };\n};\n","import {Analytics} from '../constants/actionTypes';\n\nexport const trackException = (error) => {\n return {\n type: Analytics.TRACK_EXCEPTION,\n payload: error\n };\n};\n\nexport const trackTiming = (name, startTime, endTime) => {\n return {\n type: Analytics.TRACK_TIMING,\n payload: {\n name,\n value: Math.round(endTime - startTime)\n }\n };\n};\n\nexport const trackEvent = (category, actionName) => {\n return {\n type: Analytics.TRACK_EVENT,\n payload: {actionName, category}\n };\n};\n","export default {\n TRACK_EXCEPTION: 'ANALYTICS_TRACK_EXCEPTION',\n TRACK_TIMING: 'ANALYTICS_TRACK_TIMING',\n TRACK_EVENT: 'ANALYTICS_TRACK_EVENT'\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {changeFacetValues, filterFacetData, handleFacetsConfigsChanges} from '../../../../actions/facets';\nimport {trackEvent} from '../../../../actions/googleAnalyticsActions';\n\nexport const FILTER_DEBOUNCE_TIME = 250;\n\nconst withSearchSupport = (FacetComponent, config) => {\n const WithSearchSupport = ({dispatch, ...props}) => {\n const {isRecommended} = props;\n const onChange = (fieldName) => (values) => {\n dispatch(changeFacetValues(fieldName, values));\n if (isRecommended) {\n dispatch(trackEvent('ChangeRecommendedFacet', fieldName));\n }\n };\n\n const onClose = (fieldName) => () => {\n dispatch(\n handleFacetsConfigsChanges({\n fieldNamesToDelete: [fieldName]\n })\n );\n };\n\n const onSearch = (fieldName) => ({value, pageNumber, currentOptions}) => {\n dispatch(\n filterFacetData({\n facetFieldName: fieldName,\n value,\n debounceTime: FILTER_DEBOUNCE_TIME,\n pageNumber,\n currentOptions\n })\n );\n };\n\n return (\n <FacetComponent\n config={config}\n onChange={onChange(config.fieldName)}\n onClose={config.showDeleteButton ? onClose(config.fieldName) : () => {}}\n onSearch={onSearch(config.fieldName)}\n {...props}\n />\n );\n };\n\n WithSearchSupport.propTypes = {\n dispatch: PropTypes.func,\n isRecommended: PropTypes.bool\n };\n\n return WithSearchSupport;\n};\n\nexport default withSearchSupport;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n listContainer: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: 18,\n\n '& $disabled': {\n pointerEvents: 'none',\n opacity: 0.4\n }\n },\n\n disabled: {},\n\n item: {\n display: 'flex',\n flexGrow: 1,\n flexShrink: 0,\n flexDirection: 'row',\n marginRight: 10,\n marginTop: 2,\n marginBottom: 2\n },\n\n info: {\n display: 'flex',\n flexGrow: 1,\n position: 'relative',\n minWidth: 0,\n marginTop: 2,\n marginBottom: 2,\n\n '&:hover': {\n cursor: 'pointer',\n\n '& $buttonONLY': {\n display: 'block'\n }\n }\n },\n\n buttonONLY: {\n display: 'none',\n position: 'absolute',\n height: 24,\n width: 59,\n borderRadius: 3,\n backgroundColor: '#DFDFDF',\n fontSize: 14,\n fontWeight: 600,\n lineHeight: '16px',\n color: 'rgba(0,0,0,0.54)',\n boxShadow: 'none',\n top: 0,\n right: 0,\n zIndex: 3\n },\n\n avatar: {\n marginRight: 8,\n height: 24,\n width: 24\n },\n\n checkbox: {\n marginRight: 14,\n padding: 0,\n\n '& $checked': {\n opacity: 1\n }\n },\n\n checked: {},\n\n textInfo: {\n display: 'flex',\n flexGrow: 1,\n lineHeight: '16px',\n backgroundColor: 'transparent',\n minWidth: 0,\n alignItems: 'center',\n zIndex: 2\n },\n\n text: {\n flexGrow: 1,\n marginLeft: 7,\n marginRight: 4,\n color: theme.palette.text.primary,\n width: '100%',\n maxHeight: '32px',\n wordBreak: 'break-word',\n wordWrap: 'break-word',\n overflow: 'hidden'\n },\n\n count: {\n flexShrink: 0,\n fontSize: 12,\n color: theme.palette.text.secondary,\n textAlign: 'right',\n marginRight: 4\n },\n\n toggleContainer: {\n height: 28,\n padding: '2px 2px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n margin: '0',\n background: theme.palette.background.default\n },\n\n toggleButton: {\n padding: '0',\n minWidth: '28',\n height: '28',\n border: '0',\n '&:last-child': {\n paddingLeft: '0'\n }\n },\n\n checkedBar: {\n opacity: 0.4\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classNames from 'classnames';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport Checkbox from '@mui/material/Checkbox';\nimport {ColorBar} from '@reltio/components';\nimport {formatNumberAsMetric, noop} from '../../../../utils/general';\n\nimport {FacetConfig, FacetDataItem} from '../../../../types';\nimport {useStyles} from './styles';\n\nconst DEF_CONFIG = {\n showColorBar: true,\n hasOnlyButton: false\n};\n\ntype Props = {\n config: FacetConfig;\n data?: FacetDataItem[];\n values?: string[];\n onChange?: (values?: string[]) => void;\n};\n\nconst FacetsList = ({config, data = [], values = [], onChange = noop}: Props) => {\n const classes = useStyles();\n config = {...DEF_CONFIG, ...config};\n\n const handleONLYClick = (name: string) => (event) => {\n event.stopPropagation();\n onChange([name]);\n };\n\n const handleItemClick = (name: string) => () => {\n const newValues = values.includes(name) ? values.filter((val) => val !== name) : values.concat(name);\n onChange(newValues);\n };\n\n const maxNumber = Math.max(...data.map((item) => item.number));\n\n const createControl = (item: FacetDataItem) => {\n return (\n <Checkbox\n className={classNames(classes.checkbox, {[classes.checked]: values.includes(item.value as string)})}\n checked={values.includes(item.value as string)}\n onChange={handleItemClick(item.value as string)}\n value={item.value}\n color=\"primary\"\n />\n );\n };\n\n const createONLYButton = (item: FacetDataItem) => {\n return (\n <ButtonBase className={classes.buttonONLY} onClick={handleONLYClick(item.value as string)}>\n {i18n.text('ONLY')}\n </ButtonBase>\n );\n };\n\n const createColorBar = (item: FacetDataItem) => {\n return (\n <ColorBar\n className={classNames({[classes.checkedBar]: values.includes(item.value as string)})}\n width={item.number}\n maxWidth={maxNumber}\n />\n );\n };\n\n return (\n <div className={classes.listContainer}>\n {data.map((item) => {\n return (\n <div\n key={item.value as string}\n className={classNames(classes.item, {\n [classes.disabled]: !item.number && !values.includes(item.value as string)\n })}\n data-reltio-id=\"search-facets-list-row\"\n >\n {createControl(item)}\n {\n <div className={classes.info} onClick={handleItemClick(item.value as string)}>\n {createColorBar(item)}\n <div className={classNames(classes.textInfo)}>\n <div className={classes.text}>{item.label}</div>\n <div className={classes.count}>\n {item.number === undefined\n ? i18n.text('N/A')\n : formatNumberAsMetric(item.number, 5000)}\n </div>\n </div>\n {config.hasOnlyButton && createONLYButton(item)}\n </div>\n }\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default FacetsList;\n","import {defaultTo, ifElse, map, path, pathOr, pick, pipe, prop, propSatisfies} from 'ramda';\nimport {isTableMode} from '../services/search/searchResults';\nimport {appId, DEFAULT_VIEW} from '../constants/constants';\nimport {State} from '../types';\n\nexport const getAppData = (state) => state[appId];\nexport const getLoading = (state: State) => state[appId].ui.loading;\nexport const getShowMoreFacetsPopup = (state) => state[appId].ui.showMoreFacetsPopup;\nexport const getShowSavedSearchesDialog = (state) => pathOr(false, [appId, 'ui', 'showSavedSearchesDialog'], state);\nexport const getShowAdvancedSearch = (state) => pathOr(false, [appId, 'ui', 'showAdvancedSearch'], state);\nexport const getShowBulkUpdate = (state) => pathOr(false, [appId, 'ui', 'showBulkUpdate'], state);\n\nexport const getShowSaveSearchDialog = (state) => state[appId].ui.showSaveSearchDialog;\nexport const getActiveAdditionalSearch = (state) => state[appId].ui.activeAdditionalSearch;\nexport const getActiveEntity = (state) => state[appId].ui.activeMarker;\nexport const getHoveredEntityUri = (state) => state[appId].ui.hoveredEntityUri;\nexport const getSearchResultsMode = (state) =>\n state[appId].ui.searchResultsMode ||\n path([appId, 'ui', 'config', 'defaultSearchResultsMode'], state) ||\n DEFAULT_VIEW;\nexport const getSearchResultsColumns = pathOr({}, [appId, 'ui', 'searchResultsColumns']);\nexport const getSerializedSearchResultsColumns = pipe(\n getSearchResultsColumns,\n map(map(ifElse(prop('autoResize'), pick(['id']), pick(['id', 'size']))))\n);\nexport const getEntityTypeTab = (state) => state[appId].ui.entityTypeTab;\nexport const getPreviewPanelMode = (state) => state[appId].ui.previewPanelMode;\nexport const getIsPreviewPanelOpen = (state) => !!getPreviewPanelMode(state);\n\nexport const getActiveEntityTypeTab = (state) =>\n (isTableMode(getSearchResultsMode(state)) && getEntityTypeTab(state)) || undefined;\n\nexport const getSearchResultsColumnsForEntityType = (state, entityTypeUri) =>\n path([appId, 'ui', 'searchResultsColumns', entityTypeUri], state);\n\nexport const getNotification = (state) => state[appId].ui.notification;\n\nexport const getUiConfig = path([appId, 'ui', 'config']);\nexport const getUiConfigShowSearchByOv = pipe(getUiConfig, defaultTo({}), path(['options', 'showSearchByOv']));\n\nexport const getUiPotentialMatchConfig = pipe(getUiConfig, defaultTo({}), prop('potentialMatchesReview'));\n\nexport const getUiMapSearchEnabledConfig = pipe(\n getUiConfig,\n propSatisfies((isSearchEnabled) => isSearchEnabled !== false, 'mapSearchEnabled')\n);\n\nexport const getUiConfigDefaultTabs = pipe(getUiConfig, defaultTo({}), prop('tabs'));\n\nexport const getTableViewTabs = (state) => state[appId].ui.tableViewTabs;\nexport const getTableViewTabItem = (state, value) => {\n const data = getTableViewTabs(state) || [];\n return data.find((item) => item.value === value);\n};\nexport const getTableViewTabItemNumber = (state, value) => {\n const item = getTableViewTabItem(state, value) || {};\n return item.number;\n};\n\nexport const getAllowedEntityTypes = (state) => path([appId, 'ui', 'config', 'entity-types'], state);\n","import {curry, difference, equals, flatten, isEmpty, isNil, map, pipe, prop, reject, uniq} from 'ramda';\nimport {addAvailableEntityTypesIfNeeded, hasNotAvailableEntityTypes} from '../entityTypes';\nimport {defaultGroupOperator} from '../../../constants/constants';\nimport {getSearchGroupAttributeEntityTypeUri} from '@reltio/mdm-sdk';\n\nexport const addAvailableEntityTypesToGroups = curry((metadata, groups) => {\n if (hasNotAvailableEntityTypes(metadata)) {\n return groups.length\n ? groups.map((group) => ({\n ...group,\n entityTypes: addAvailableEntityTypesIfNeeded(metadata, group.entityTypes || [])\n }))\n : [\n {\n entityTypes: addAvailableEntityTypesIfNeeded(metadata, []),\n attributes: [],\n operator: defaultGroupOperator.value,\n id: 'default'\n }\n ];\n }\n return groups;\n});\n\nexport const getEntityTypesFromGroups = pipe(map(prop('entityTypes')), flatten, reject(isNil), uniq);\n\nexport const getEntityTypesFromAttributes = pipe(map(getSearchGroupAttributeEntityTypeUri), reject(isNil), uniq);\n\nexport const verifySelectedEntityTypesInGroup = (\n entityTypesFromAttributes = [],\n entityTypes = [],\n autoAddedEntityTypes = []\n) => {\n if (!isEmpty(entityTypes) && isEmpty(autoAddedEntityTypes)) {\n return {entityTypes, autoAddedEntityTypes};\n }\n\n const newAutoAddedEntityTypes = autoAddedEntityTypes\n .filter((type) => entityTypesFromAttributes.includes(type))\n .concat(difference(entityTypesFromAttributes, entityTypes));\n\n if (!equals(autoAddedEntityTypes, newAutoAddedEntityTypes)) {\n return {\n entityTypes: entityTypesFromAttributes,\n autoAddedEntityTypes: newAutoAddedEntityTypes\n };\n }\n\n return {entityTypes, autoAddedEntityTypes};\n};\n","import {createSelector} from 'reselect';\nimport {buildQueryForAdvancedSearchGroups} from '../services/search/searchEngine';\nimport {appId} from '../constants/constants';\nimport {\n always,\n find,\n flatten,\n map,\n path,\n pipe,\n prop,\n propEq,\n pathEq,\n uniq,\n isEmpty,\n not,\n pluck,\n chain,\n modify,\n reject,\n unless,\n init\n} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {addAvailableEntityTypesToGroups} from '../services/search/advancedSearch/attributeGroups';\nimport {getShowAdvancedSearch} from './ui';\nimport {FACET_TYPES, getUnresolvedLookupsListFromSearchGroups, isAndOperator, isEmptyValue} from '@reltio/mdm-sdk';\n\nexport const getQueryBuilderGroups = (state) => path([appId, 'advancedSearch', 'searchParams', 'groups'], state);\nexport const getQueryBuilderGroupById = (state, id) => pipe(getQueryBuilderGroups, find(propEq('id', id)))(state);\nexport const getEntityTypesFromAllGroups = (state) =>\n pipe(getQueryBuilderGroups, map(prop('entityTypes')), flatten, uniq)(state);\nexport const getQueryBuilderAttributesData = (state) => path([appId, 'advancedSearch', 'attributesData'], state);\nexport const getQueryBuilderAttributesDataById = (state, groupId, attributeId) =>\n path([appId, 'advancedSearch', 'attributesData', groupId, attributeId], state);\n\nexport const getQueryBuilderDisplayedAttributesDataItemsById = (state, groupId, attributeId) => {\n const {default: defaultAttributesData, filtered: filteredAttributesData} = getQueryBuilderAttributesDataById(\n state,\n groupId,\n attributeId\n );\n\n return filteredAttributesData || defaultAttributesData;\n};\n\nexport const getAdvancedSearchParams = (state, filtersRules, excludeFieldName) => {\n const isAdvancedSearchOpen = getShowAdvancedSearch(state);\n if (!isAdvancedSearchOpen) {\n return [];\n }\n const metadata = mdmModule.selectors.getMetadata(state);\n const groups = pipe(\n getQueryBuilderGroups,\n unless(\n always(isEmptyValue(excludeFieldName)),\n map(modify('attributes', reject(pathEq(['data', 'fieldName'], excludeFieldName))))\n ),\n addAvailableEntityTypesToGroups(metadata)\n )(state);\n const rawFilter = buildQueryForAdvancedSearchGroups(groups, filtersRules);\n return rawFilter ? [{rawFilter: `(${rawFilter})`}] : [];\n};\n\nexport const getGroupEntityTypesSearchParams = (state, groupId) => {\n const group = getQueryBuilderGroupById(state, groupId);\n return path(['entityTypes', 'length'], group)\n ? [{type: FACET_TYPES.ENTITY_TYPE_FACET, fieldName: 'type', values: group.entityTypes, filter: 'equals'}]\n : [];\n};\n\nexport const checkAllQueryGroupsHasAndOperator = (state) => {\n const groups = getQueryBuilderGroups(state);\n const attributesOperators = pipe(chain(prop('attributes')), pluck('operator'))(groups);\n const groupsOperators = pipe(init, pluck('operator'))(groups);\n return [...groupsOperators, ...attributesOperators].every(isAndOperator);\n};\n\nexport const getHasUnresolvedLookupsInQueryGroups = createSelector(\n getQueryBuilderGroups,\n mdmModule.selectors.getLookups,\n pipe(getUnresolvedLookupsListFromSearchGroups, isEmpty, not)\n);\n","import {isReference, isRelationAttrType, orderByArrayComparator} from '@reltio/mdm-sdk';\nimport {collectAdvancedAttributeGroups} from '../collectAttributes';\nimport {collectSpecialAttributesGroups} from '../advancedSearch/collectSpecialAttributes';\nimport {curry, identity, not, path, pathEq, pipe} from 'ramda';\n\nconst cropFieldNameByLevel = (fieldName, level = 1) =>\n fieldName\n .split('.')\n .slice(0, level + 1)\n .join();\n\nconst filterAttributesByFieldNames = (attributes, recommendedAttributes, level) => {\n const recommendedFieldNamesByLevel = recommendedAttributes.map((recommendedAttribute) =>\n cropFieldNameByLevel(recommendedAttribute, level)\n );\n\n const recommendedAttributesList = attributes.filter((attribute) =>\n recommendedFieldNamesByLevel.includes(cropFieldNameByLevel(attribute.fieldName, level))\n );\n\n return recommendedAttributesList\n .map((recommendedAttribute) => {\n if (recommendedAttributes.includes(recommendedAttribute.fieldName)) {\n return recommendedAttribute.isComplex ? null : recommendedAttribute;\n }\n\n if (recommendedAttribute.children) {\n const recommendedChildren = filterAttributesByFieldNames(\n recommendedAttribute.children,\n recommendedAttributes,\n level + 1\n );\n if (recommendedChildren.length > 0) {\n return {...recommendedAttribute, children: recommendedChildren};\n }\n }\n\n return null;\n })\n .filter((attribute) => attribute);\n};\n\nconst getRecommendedGroup = (specialAndAttributeGroups, recommendedAttributes) => {\n const allAttributes = specialAndAttributeGroups.reduce((res, group) => res.concat(group.attributes), []);\n const recommendedAttributeList = filterAttributesByFieldNames(allAttributes, recommendedAttributes);\n\n return recommendedAttributeList.length > 0\n ? [\n {\n id: 'recommended',\n title: 'Recommended',\n attributes: recommendedAttributeList\n }\n ]\n : [];\n};\n\nconst getGroupedAttributesData = ({\n attributeGroups,\n recommendedAttributes = [],\n attributesFilter,\n dataTenants,\n canUserReadWorkflowDataTask\n}) => {\n const specialAttributesGroups = collectSpecialAttributesGroups({\n attributesFilter,\n dataTenants,\n canUserReadWorkflowDataTask\n });\n const specialAndAttributeGroups =\n attributeGroups.length === 1\n ? attributeGroups.concat(specialAttributesGroups)\n : specialAttributesGroups.concat(attributeGroups);\n const recommendedGroup = getRecommendedGroup(specialAndAttributeGroups, recommendedAttributes);\n\n return recommendedGroup.concat(specialAndAttributeGroups);\n};\n\nconst createFilterRules = (rules) => {\n const ruleTypes = Object.keys(rules);\n return ruleTypes\n .map((ruleType) => {\n switch (ruleType) {\n case 'allowedEntityTypes': {\n const types = rules[ruleType];\n return types\n ? (list) => list.filter(({id}) => types.includes(id)).sort(orderByArrayComparator(types, 'id'))\n : null;\n }\n case 'firstLevelAttributesFilter': {\n const filter = rules[ruleType];\n return filter\n ? (groups) =>\n groups\n .map((group) => ({\n ...group,\n attributes: group.attributes.filter(filter)\n }))\n .filter(isNotEmptyAttributesGroup)\n : identity;\n }\n default:\n return null;\n }\n })\n .filter(identity);\n};\nconst getAttributesGroupsFilteredBy = (\n rules,\n metadata,\n entityTypes,\n recommendedAttributes = [],\n dataTenants,\n canUserReadWorkflowDataTask\n) => {\n const advancedRules = createFilterRules(rules);\n const attributeGroups = collectAdvancedAttributeGroups(\n metadata,\n entityTypes,\n rules.firstLevelAttributesFilter,\n dataTenants\n );\n const filteredAttributeGroups = advancedRules.reduce((result, rule) => rule(result), attributeGroups);\n return getGroupedAttributesData({\n attributeGroups: filteredAttributeGroups,\n recommendedAttributes,\n attributesFilter: rules.firstLevelAttributesFilter,\n dataTenants,\n canUserReadWorkflowDataTask\n });\n};\n\nconst isNotEmptyAttributesGroup = path(['attributes', 'length']);\n\nconst rejectReferencedEntityAttributesFromGroups = (attributesGroups) =>\n attributesGroups\n .map((group) => ({\n ...group,\n attributes: group.attributes.map((attribute) => {\n if (attribute.children && attribute.attrType && isReference(attribute.attrType)) {\n return {\n ...attribute,\n children: attribute.children.filter(isRelationAttrType)\n };\n }\n return attribute;\n })\n }))\n .filter(isNotEmptyAttributesGroup);\n\nconst isAttributeItemOf = curry((parentAttributeType, attributeGroupItem) =>\n pathEq(['attrType', 'uri'], parentAttributeType.uri)(attributeGroupItem)\n);\n\nconst isSpecialAttributeItem = pipe(path(['attrType', 'uri']), not);\n\nexport {\n getAttributesGroupsFilteredBy,\n getRecommendedGroup,\n rejectReferencedEntityAttributesFromGroups,\n isNotEmptyAttributesGroup,\n isAttributeItemOf,\n isSpecialAttributeItem\n};\n","import {complement, curry, either, evolve, filter, map, partition, path, pipe, prop, reject, when} from 'ramda';\nimport {isAvailableEntityTypeForDataTenant, isEntityTypeUri, isTypeFacet} from '@reltio/mdm-sdk';\nimport {isNotEmptyAttributesGroup} from './attributesList/attributeListUtils';\n\nconst shouldHideFacetForDataTenant = (dataTenantObject) =>\n either(\n path(['attrType', 'hideForDataTenant']),\n pipe(prop('entityTypeUri'), complement(isAvailableEntityTypeForDataTenant(dataTenantObject)))\n );\n\nconst isValidFacetGroupForDataTenant = (dataTenantObject) =>\n pipe(prop('id'), either(complement(isEntityTypeUri), isAvailableEntityTypeForDataTenant(dataTenantObject)));\n\nconst isNotEmptyFacetsGroup = path(['facets', 'length']);\n\nconst sanitizeFacetsListForDataTenant = curry((dataTenantObject, facetsList) => {\n return dataTenantObject\n ? facetsList\n .filter(isValidFacetGroupForDataTenant(dataTenantObject))\n .map(\n evolve({\n facets: reject(shouldHideFacetForDataTenant(dataTenantObject))\n })\n )\n .filter(isNotEmptyFacetsGroup)\n : facetsList;\n});\n\nconst sanitizeAttributesGroupsForDataTenant = curry((dataTenantObject, attributesGroups) => {\n return dataTenantObject\n ? attributesGroups\n .filter(isValidFacetGroupForDataTenant(dataTenantObject))\n .map(\n evolve({\n attributes: reject(shouldHideFacetForDataTenant(dataTenantObject))\n })\n )\n .filter(isNotEmptyAttributesGroup)\n : attributesGroups;\n});\n\nconst sanitizeFacetsConfigsForDataTenant = (dataTenantObject, facetsConfigs) => {\n const [facetsToHide, facetsToShow] = partition(shouldHideFacetForDataTenant(dataTenantObject), facetsConfigs);\n return facetsToHide.length > 0 ? facetsToShow : facetsConfigs;\n};\n\nconst sanitizeTypeFacetValuesForDataTenant = curry((dataTenantObject, facetsData) => {\n return dataTenantObject\n ? map(\n when(\n isTypeFacet,\n evolve({\n values: filter(isAvailableEntityTypeForDataTenant(dataTenantObject))\n })\n ),\n facetsData\n )\n : facetsData;\n});\n\nexport {\n sanitizeFacetsListForDataTenant,\n sanitizeAttributesGroupsForDataTenant,\n sanitizeFacetsConfigsForDataTenant,\n sanitizeTypeFacetValuesForDataTenant\n};\n","import {all, curry, isEmpty, length, nthArg, path, pipe, prop, propEq} from 'ramda';\nimport {createSelector} from 'reselect';\nimport {createLens} from '../utils/lenses';\nimport {getFacetsConfigs, getFacetsData} from './facet';\nimport {getActiveEntityTypeTab, getAllowedEntityTypes, getTableViewTabItemNumber} from './ui';\nimport {appId} from '../constants/constants';\nimport mdmModule from '@reltio/mdm-module';\nimport {checkAllQueryGroupsHasAndOperator, getAdvancedSearchParams, getQueryBuilderGroups} from './advancedSearch';\nimport {buildTotalUrlQuery, isNotEmptyParam} from '../services/search/searchEngine';\nimport {\n addAvailableEntityTypeValues,\n filterAllowedEntityTypes,\n mergeConfigs,\n setFiltersToFacets\n} from '../services/search/facet';\nimport {sanitizeTypeFacetValuesForDataTenant} from '../services/search/dataTenants';\nimport {MAP_SEARCH_TYPES, buildReadableQueryToString, isValidSearchGroup} from '@reltio/mdm-sdk';\n\nconst getProp = curry((prop, state, {entityTypeUri} = {}) => {\n return entityTypeUri\n ? path([appId, 'search', 'searchResultsByEntityTypes', entityTypeUri, prop], state)\n : path([appId, 'search', prop], state);\n});\nconst searchBoxL = createLens('searchBoxInput');\nconst searchBoxValuesL = searchBoxL.compose(createLens('values'));\n\nconst getInternalSearchParams = (state) => path([appId, 'search', 'searchParams'], state);\nconst mergeInternalSearchParamsWithKeyword = curry((keyword, searchParams) => {\n if (!keyword) {\n return searchParams;\n }\n const {value, isRawFilter} = keyword;\n return isRawFilter\n ? searchBoxL.set(searchParams, {rawFilter: value})\n : searchBoxValuesL.set(searchParams, value ? [value] : []);\n});\n\nexport const getSearchParams = (state, keyword) => {\n return pipe(getInternalSearchParams, mergeInternalSearchParamsWithKeyword(keyword))(state);\n};\nexport const getMapSearchValues = (state) => path([appId, 'search', 'searchParams', 'mapSearch', 'values'], state);\nexport const getMapSearchType = (state) => path([appId, 'search', 'searchParams', 'mapSearch', 'type'], state);\nexport const getMapSearchObject = (state) =>\n length(getMapSearchValues(state))\n ? {\n values: getMapSearchValues(state),\n searchType: getMapSearchType(state)\n }\n : null;\nexport const getMapSearchObjectForStatePersisting = (state) => {\n const mapSearch = getMapSearchObject(state);\n return mapSearch && mapSearch.searchType === MAP_SEARCH_TYPES.onMapMove ? null : mapSearch;\n};\nexport const getTotal = (state, {entityTypeUri}) =>\n entityTypeUri ? getTableViewTabItemNumber(state, entityTypeUri) : state[appId].search.total;\nexport const getPage = getProp('page');\nexport const getRowsPerPage = getProp('rowsPerPage');\nexport const getSortField = getProp('sortField');\nexport const getSortOrder = getProp('sortOrder');\nexport const getSearchResults = getProp('searchResults');\nexport const getEntitiesLoading = (state) => state[appId].search.loading;\nexport const getIsEmptySearchParams = (state) => {\n const facets = getFacetsData(state);\n const keyword = mdmModule.selectors.getSearchKeyword(state);\n const searchParams = getSearchParams(state, keyword);\n const advancedSearchGroups = getQueryBuilderGroups(state);\n return all(isEmpty)([\n Object.values(searchParams).filter(isNotEmptyParam),\n advancedSearchGroups.filter(isValidSearchGroup),\n Object.values(facets).filter(isNotEmptyParam)\n ]);\n};\n\nexport const getCurrentTenant = path([appId, 'search', 'currentTenant']);\nexport const getDataTenantObject = createSelector(\n getCurrentTenant,\n mdmModule.selectors.getDataTenants,\n (currentTenant, dataTenants) => currentTenant && dataTenants && dataTenants.find(propEq('id', currentTenant))\n);\nexport const getDataTenant = pipe(getDataTenantObject, prop('id'));\nexport const getCanSaveSearch = createSelector(\n getIsEmptySearchParams,\n getDataTenant,\n (isEmptySearch, dataTenant) => !isEmptySearch && !dataTenant\n);\n\nexport const getAllSearchParams = (state, filterRules) => {\n const dataTenantObject = getDataTenantObject(state);\n return getAllSearchParamsForDataTenant(state, filterRules, dataTenantObject);\n};\n\nexport const getAllSearchParamsWithoutField = (state, excludeFieldName) => {\n const dataTenantObject = getDataTenantObject(state);\n return getAllSearchParamsForDataTenant(state, [], dataTenantObject, excludeFieldName);\n};\n\nexport const getAllSearchParamsForDataTenant = createSelector(\n (state) => mdmModule.selectors.getMetadata(state),\n getFacetsData,\n getFacetsConfigs,\n mdmModule.selectors.getSearchKeyword,\n getInternalSearchParams,\n (state, filterRules, _, excludeFieldName) => getAdvancedSearchParams(state, filterRules, excludeFieldName),\n getAllowedEntityTypes,\n nthArg(2),\n (\n metadata,\n facets,\n configs,\n keyword,\n internalSearchParams,\n advancedSearchParams,\n allowedEntityTypes,\n dataTenantObject\n ) => {\n const searchParams = mergeInternalSearchParamsWithKeyword(keyword, internalSearchParams);\n const convertFacetsToSearchParams = pipe(\n mergeConfigs,\n setFiltersToFacets,\n addAvailableEntityTypeValues(metadata),\n filterAllowedEntityTypes(allowedEntityTypes),\n sanitizeTypeFacetValuesForDataTenant(dataTenantObject),\n Object.values\n );\n return convertFacetsToSearchParams(facets, configs)\n .concat(Object.values(searchParams))\n .concat(advancedSearchParams)\n .filter(isNotEmptyParam);\n }\n);\n\nexport const getAdvancedAttributeValuesSearchParams = (state, defaultSearchParams = [], excludeFieldName) => {\n const isOnlyAndOperators = checkAllQueryGroupsHasAndOperator(state);\n const searchParamsWithoutAttribute = getAllSearchParamsWithoutField(state, excludeFieldName);\n return isOnlyAndOperators ? [...searchParamsWithoutAttribute, ...defaultSearchParams] : defaultSearchParams;\n};\n\nexport const getTotalSearchParamsQuery = (state, excludeFieldName) => {\n const allSearchParams = getAllSearchParamsWithoutField(state, excludeFieldName);\n const options = mdmModule.selectors.getGlobalSearchRequestOptions(state);\n return buildTotalUrlQuery(allSearchParams, [], options);\n};\n\nexport const getDisplayedSearchResults = (state) => {\n const entityTypeUri = getActiveEntityTypeTab(state);\n return getSearchResults(state, {entityTypeUri});\n};\n\nexport const getDisplayedTotal = (state) => {\n const entityTypeUri = getActiveEntityTypeTab(state);\n return getTotal(state, {entityTypeUri});\n};\n\nexport const getReadableQuery = createSelector(\n mdmModule.selectors.getMetadata,\n mdmModule.selectors.getAttributePresentations,\n mdmModule.selectors.getLookups,\n getQueryBuilderGroups,\n mdmModule.selectors.getSearchKeyword,\n getMapSearchObjectForStatePersisting,\n buildReadableQueryToString\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n overflow: 'hidden',\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n fontSize: '13px'\n },\n\n noData: {\n marginLeft: '16px'\n },\n\n viewMoreLess: {\n paddingLeft: '20px'\n }\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {DataTenant} from '@reltio/mdm-sdk';\nimport {NoData, ViewMoreToggle} from '@reltio/components';\nimport FacetsList from './FacetsList/FacetsList';\nimport {FacetConfig, FacetDataItem, ShowMoreEntityTypesPayload} from '../../../types';\nimport {getDataTenantObject} from '../../../selectors/search';\nimport {showMoreEntityTypes} from '../../../actions/facets';\nimport {getFacetShowAllItems} from '../../../selectors/facet';\nimport {ENTITY_TYPE_FACET_ROW_COUNT} from '../../../constants/constants';\nimport {removeNumberForDtssUnavailableEntityTypeItems} from '../../../services/search/entityTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n config?: FacetConfig;\n data?: FacetDataItem[];\n values?: string[];\n onChange?: (values?: string[]) => void;\n};\n\nexport const EntityTypeFacet = ({config, data = [], values = [], onChange}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const onShowMore = useCallback(\n ({show}: ShowMoreEntityTypesPayload) => {\n dispatch(showMoreEntityTypes({show}));\n },\n [dispatch]\n );\n\n const showAllItems: boolean = useSelector((store) => getFacetShowAllItems(config, store));\n const tenantObject: DataTenant = useSelector(getDataTenantObject);\n const needShowViewMoreButton = data.length > ENTITY_TYPE_FACET_ROW_COUNT;\n const onViewMoreLess = useCallback(() => {\n onShowMore({show: !showAllItems});\n }, [onShowMore, showAllItems]);\n const facetsData = useMemo(() => {\n const items = showAllItems ? data : data.slice(0, ENTITY_TYPE_FACET_ROW_COUNT);\n return removeNumberForDtssUnavailableEntityTypeItems(items, tenantObject);\n }, [data, showAllItems, tenantObject]);\n return (\n <div className={styles.container}>\n {data.length > 0 ? (\n <>\n <FacetsList data={facetsData} values={values} onChange={onChange} config={config} />\n\n {needShowViewMoreButton && (\n <ViewMoreToggle\n active={showAllItems}\n onClick={onViewMoreLess}\n className={styles.viewMoreLess}\n />\n )}\n </>\n ) : (\n <NoData className={styles.noData} />\n )}\n </div>\n );\n};\nexport default EntityTypeFacet;\n","import {makeStyles} from '@mui/styles';\n\nexport default makeStyles({\n item: {\n display: 'flex',\n minHeight: '28px',\n flexGrow: 1,\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: '1px',\n padding: 0,\n opacity: 1\n },\n checkbox: {\n marginRight: '14px',\n marginLeft: '18px',\n padding: 0\n },\n infobox: {\n display: 'flex',\n flexGrow: 1,\n alignItems: 'center',\n position: 'relative',\n height: '20px',\n margin: '2px 10px 2px 0',\n minWidth: 0\n },\n textbox: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n flexGrow: 1,\n minWidth: 0,\n zIndex: 2\n },\n text: {\n flexGrow: 1,\n width: 0,\n height: '15px',\n color: 'rgba(0,0,0,0.87)',\n fontSize: '13px',\n lineHeight: '16px',\n letterSpacing: 0,\n fontWeight: 'normal',\n paddingLeft: '7px',\n paddingRight: '8px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minWidth: 0\n },\n number: {\n flexGrow: 0,\n flexShrink: 0,\n height: '16px',\n color: 'rgba(0,0,0,0.6)',\n fontSize: '12px',\n lineHeight: '16px',\n textAlign: 'right',\n paddingRight: '4px'\n },\n colorBar: {\n height: '20px'\n },\n selectedColorBar: {\n opacity: 0.4\n },\n itemSelected: {\n backgroundColor: 'rgba(0, 0, 0, 0.04) !important'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {has} from 'ramda';\nimport MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport {ColorBar, ExpandedValueTooltip} from '@reltio/components';\nimport {formatNumberAsMetric} from '../../../../utils/general';\n\nimport useStyles from './styles';\n\nconst ListRow = (props) => {\n const {\n innerProps,\n innerRef,\n data,\n isSelected,\n isFocused,\n selectProps: {classes}\n } = props;\n\n const listStyles = useStyles();\n const needColorBar = has('width', data);\n const hasNumber = has('number', data);\n return (\n <MenuItem\n className={classes.option}\n classes={{root: listStyles.item, selected: listStyles.itemSelected}}\n ref={innerRef}\n component=\"div\"\n selected={isFocused}\n disableGutters\n {...innerProps}\n >\n <Checkbox checked={isSelected} color=\"primary\" disableRipple classes={{root: listStyles.checkbox}} />\n <div className={listStyles.infobox}>\n <div className={listStyles.textbox}>\n <ExpandedValueTooltip value={data.label}>\n <div className={listStyles.text}>{data.label}</div>\n </ExpandedValueTooltip>\n {hasNumber && <div className={listStyles.number}>{formatNumberAsMetric(data.number, 5000)}</div>}\n </div>\n {needColorBar && (\n <ColorBar\n className={classnames(listStyles.colorBar, {[listStyles.selectedColorBar]: isSelected})}\n width={data.width}\n />\n )}\n </div>\n </MenuItem>\n );\n};\n\nListRow.propTypes = {\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isSelected: PropTypes.bool.isRequired,\n isFocused: PropTypes.bool.isRequired,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n }),\n data: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string.isRequired,\n number: PropTypes.number\n }).isRequired\n};\n\nexport default ListRow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {NoData} from '@reltio/components';\n\nconst NoOptions = (props) => {\n const {\n selectProps: {classes}\n } = props;\n\n return <NoData className={classes.noOptionsMessage} />;\n};\n\nNoOptions.propTypes = {\n selectProps: PropTypes.object.isRequired\n};\n\nexport default NoOptions;\n","import {makeStyles} from '@mui/styles';\n\nexport const customStyles = {\n container: (currentStyles) => ({...currentStyles, width: '100%'}),\n menuList: (currentStyles) => ({...currentStyles, maxHeight: '240px', padding: '8px 0'}),\n menu: (currentStyles) => ({\n ...currentStyles,\n maxHeight: '240px'\n })\n};\n\nexport const useStyles = makeStyles(() => ({\n control: {\n minHeight: '46px',\n backgroundColor: 'rgba(0,0,0, 0.0267)',\n height: 'auto',\n padding: 0\n },\n option: {\n minHeight: '28px',\n display: 'flex',\n flexGrow: 1,\n flexShrink: 0,\n flexDirection: 'row',\n padding: 0\n },\n noOptionsMessage: {\n padding: '0 16px 0 18px'\n },\n multiValue: {\n backgroundColor: 'rgba(43, 152, 240, 0.12)'\n }\n}));\n","import PropTypes from 'prop-types';\nimport {\n AttributeTypeType,\n LookupValueType,\n NestedAttributeValueType,\n ReferenceAttributeValueType,\n MAP_SEARCH_TYPES\n} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nconst MultiTypeaheadOptionType = PropTypes.shape({\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n number: PropTypes.number\n});\n\nconst AttributesDataType = PropTypes.shape({\n default: PropTypes.array,\n filtered: PropTypes.array\n});\n\nconst MapSearchType = PropTypes.shape({\n values: PropTypes.array,\n searchType: PropTypes.oneOf(Object.values(MAP_SEARCH_TYPES))\n});\n\nconst BulkUpdateSimpleActionType = {\n id: PropTypes.string,\n operation: PropTypes.string,\n operationParameters: PropTypes.shape({\n attributeTypeData: PropTypes.shape({\n pathToTitle: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string,\n attributeType: AttributeTypeType\n }),\n attributeValue: PropTypes.oneOfType([\n PropTypes.string,\n LookupValueType,\n NestedAttributeValueType,\n ReferenceAttributeValueType\n ]),\n attributeValueToFind: PropTypes.oneOfType([PropTypes.string, LookupValueType]),\n pin: PropTypes.bool,\n addNestedAttribute: PropTypes.bool\n })\n};\n\nconst BulkUpdateComplexActionType = {\n id: PropTypes.string,\n fieldName: PropTypes.string,\n conditions: PropTypes.arrayOf(QueryBuilderAttributeType),\n actions: PropTypes.arrayOf(PropTypes.shape(BulkUpdateSimpleActionType))\n};\n\nexport {\n MultiTypeaheadOptionType,\n AttributesDataType,\n MapSearchType,\n BulkUpdateSimpleActionType,\n BulkUpdateComplexActionType\n};\n","import React, {memo, useCallback, useMemo, useRef, useState, useEffect} from 'react';\nimport {DEFAULT_FACET_PAGE_SIZE} from '../../constants/constants';\nimport PropTypes from 'prop-types';\nimport {assoc, defaultTo, has, identity, mergeRight, pipe, pluck, prop, tap, uniqBy} from 'ramda';\nimport {\n DropdownIndicatorWithIconButton,\n MenuWithPopper,\n MenuList,\n MultiSelect,\n MultiValueChip,\n LoadMoreButton\n} from '@reltio/components';\nimport ListRow from './components/ListRow/ListRow';\nimport NoOptions from './components/NoOptions/NoOptions';\nimport {customStyles, useStyles} from './styles';\nimport {MultiTypeaheadOptionType} from '../../constants/prop-types';\nimport {utils, debounce, formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nconst DEBOUNCE_TIME = 250;\n\nconst MultiTypeaheadEditor = ({\n values = [],\n defaultOptions = [],\n filteredOptions,\n onChange = identity,\n getSuggestions,\n showBar = true,\n showNumberInValue = false,\n classes: classesProp = {},\n styles: stylesProp = {},\n canLoadMore = true,\n max = DEFAULT_FACET_PAGE_SIZE,\n ...multiSelectProps\n}) => {\n const classes = useStyles();\n const [currentValue, setCurrentValue] = useState('');\n const [pageNumber, setPageNumber] = useState(1);\n const [pageIsLoading, setPageIsLoading] = useState(false);\n const inputRef = useRef(null);\n const isAwaitingMoreOptions = useRef(false);\n const isAwaitingOptionsUpdateAfterOnChange = useRef(false);\n\n const allOptions = (filteredOptions || []).concat(defaultOptions);\n const valueToOption = (value) => allOptions.find((option) => option.value === value) || {value, label: value};\n const addFormattedCountIfNeeded = (value) => {\n if (showNumberInValue && has('number', value)) {\n return assoc('formattedNumber', formatNumberAsMetric(prop('number', value), 5000), value);\n } else {\n return value;\n }\n };\n\n const prepareValues = (values) => values.map(valueToOption).map(addFormattedCountIfNeeded);\n const prepareBarOptions = (options) => {\n if (showBar && options.length && has('number', options[0])) {\n const maxWidth = Math.max(...options.map((item) => item.number));\n return options.map((item) => ({...item, width: getBarColorWidth(item.number, maxWidth)}));\n } else {\n return options;\n }\n };\n const prepareOptions = pipe(prepareBarOptions, uniqBy(prop('value')));\n\n const getBarColorWidth = (number, maxWidth) => {\n return (maxWidth ? (100 * number) / maxWidth : 0) + '%';\n };\n\n const onInputChange = debounce((inputValue, {action}) => {\n if (inputValue !== currentValue && action !== 'set-value') {\n setCurrentValue(inputValue);\n setPageNumber(1);\n isAwaitingMoreOptions.current = false;\n setPageIsLoading(true);\n getSuggestions({value: inputValue, pageNumber: 1});\n }\n }, DEBOUNCE_TIME);\n\n const options = filteredOptions || defaultOptions;\n\n const onLoadMoreOptions = useCallback(() => {\n setPageIsLoading(true);\n getSuggestions({value: currentValue, pageNumber: pageNumber + 1, currentOptions: options});\n isAwaitingMoreOptions.current = true;\n }, [currentValue, pageNumber, getSuggestions, options]);\n\n useEffect(() => {\n setPageIsLoading(false);\n if (isAwaitingMoreOptions.current) {\n setPageNumber((pageNumber) => pageNumber + 1);\n isAwaitingMoreOptions.current = false;\n }\n }, [filteredOptions]);\n\n useEffect(() => {\n if (!isAwaitingOptionsUpdateAfterOnChange.current) {\n setPageIsLoading(false);\n setPageNumber(1);\n isAwaitingMoreOptions.current = false;\n getSuggestions({value: '', pageNumber: 1}); // to clear filteredOptions\n }\n isAwaitingOptionsUpdateAfterOnChange.current = false;\n }, [defaultOptions]);\n\n const filterOption = ({label, value}, rawInput) =>\n utils.strings.search(label, rawInput) || utils.strings.search(value, rawInput);\n\n const displayedOptions = useMemo(() => options.slice(0, pageNumber * max), [options, pageNumber, max]);\n const showMoreButton = canLoadMore && options.length > displayedOptions.length;\n\n return (\n <MultiSelect\n filterOption={filterOption}\n value={prepareValues(values)}\n onChange={pipe(\n tap(() => {\n isAwaitingOptionsUpdateAfterOnChange.current = true;\n }),\n defaultTo([]),\n pluck('value'),\n onChange\n )}\n options={prepareOptions(displayedOptions)}\n onInputChange={onInputChange}\n classes={mergeRight(classes, classesProp)}\n styles={mergeRight(customStyles, stylesProp)}\n TextFieldProps={{\n InputProps: {disableUnderline: true},\n ref: inputRef\n }}\n inputRef={inputRef}\n components={{\n Option: ListRow,\n NoOptionsMessage: NoOptions,\n Menu: MenuWithPopper,\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: MultiValueChip,\n MenuList: MenuList\n }}\n menuPlacement=\"bottom\"\n menuListFooter={showMoreButton && <LoadMoreButton loading={pageIsLoading} onClick={onLoadMoreOptions} />}\n {...multiSelectProps}\n />\n );\n};\n\nMultiTypeaheadEditor.propTypes = {\n values: PropTypes.array,\n defaultOptions: PropTypes.arrayOf(MultiTypeaheadOptionType),\n filteredOptions: PropTypes.arrayOf(MultiTypeaheadOptionType),\n onChange: PropTypes.func.isRequired,\n getSuggestions: PropTypes.func.isRequired,\n showBar: PropTypes.bool,\n showNumberInValue: PropTypes.bool,\n classes: PropTypes.object,\n styles: PropTypes.object,\n canLoadMore: PropTypes.bool,\n max: PropTypes.number\n};\n\nexport default memo(MultiTypeaheadEditor);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n boxSizing: 'border-box',\n height: '18px',\n border: '1px solid rgba(0,0,0,0.12)',\n borderRadius: '16px',\n backgroundColor: 'transparent',\n '& $deleteIcon': {\n margin: '0',\n height: '12px',\n width: '12px',\n color: 'rgba(0,0,0,0.38)'\n }\n },\n\n outlined: {\n '& $deleteIcon': {\n marginRight: 2\n }\n },\n\n deleteIcon: {},\n\n label: {\n color: 'rgba(0,0,0,0.38)',\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: '16px',\n paddingLeft: '4px',\n paddingRight: '4px'\n }\n});\n","import React from 'react';\nimport Chip, {ChipProps} from '@mui/material/Chip';\nimport i18n from 'ui-i18n';\nimport {withTooltip} from '@reltio/components';\nimport ClearIcon from '@mui/icons-material/Cancel';\nimport {useStyles} from './styles';\n\nexport const ClearIconWithTooltip = withTooltip(ClearIcon);\n\ntype Props = Omit<ChipProps, 'onDelete' | 'label'> & {\n label: number;\n onDelete: () => void;\n};\n\nconst ChipsCount = ({label, onDelete, ...extraProps}: Props) => {\n const styles = useStyles();\n return (\n <Chip\n className={styles.root}\n label={i18n.number(label)}\n onDelete={onDelete}\n variant=\"outlined\"\n classes={{\n root: styles.root,\n outlined: styles.outlined,\n deleteIcon: styles.deleteIcon,\n label: styles.label\n }}\n deleteIcon={<ClearIconWithTooltip tooltipTitle={i18n.text('Clear')} />}\n {...extraProps}\n />\n );\n};\n\nexport default ChipsCount;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n justifyContent: 'center',\n height: '100%',\n minWidth: 0,\n cursor: 'pointer'\n },\n parent: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n titleContainer: {\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden',\n alignItems: 'flex-end',\n height: '18px',\n width: '100%'\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: '14px',\n lineHeight: '16px',\n fontWeight: 500,\n letterSpacing: '0.24px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n chip: {\n display: 'inline',\n marginLeft: '6px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport {ExpandedValueTooltip, HierarchicalAttributeTooltip} from '@reltio/components';\nimport ChipsCount from '../../ChipsCount/ChipsCount';\nimport useStyles from './styles';\n\ntype Props = {\n title?: string;\n chipLabel?: number;\n onDelete?: () => void;\n pathToTitle?: string[];\n onClick?: () => void;\n};\n\nconst FacetTitle = ({title = '', chipLabel = 0, onDelete, pathToTitle, onClick}: Props) => {\n const styles = useStyles();\n const isNested = Boolean(pathToTitle && pathToTitle.length > 2);\n const TooltipComponent = isNested ? HierarchicalAttributeTooltip : ExpandedValueTooltip;\n const tooltipProps = isNested ? {pathToTitle} : {value: title};\n\n return (\n <div className={styles.container} onClick={onClick}>\n {isNested && (\n <HierarchicalAttributeTooltip placement=\"bottom-start\" {...tooltipProps}>\n <div className={styles.parent}>{pathToTitle[pathToTitle.length - 2]}</div>\n </HierarchicalAttributeTooltip>\n )}\n <div className={styles.titleContainer}>\n <TooltipComponent placement=\"bottom-start\" {...tooltipProps}>\n <span className={styles.title}>{title}</span>\n </TooltipComponent>\n {chipLabel !== 0 && (\n <div className={styles.chip}>\n <ChipsCount label={chipLabel} onDelete={onDelete} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default FacetTitle;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"13\",\n height: \"18\",\n viewBox: \"0 0 13 18\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-3 -1)\"\n}, React.createElement(\"g\", null, React.createElement(\"path\", {\n fill: \"#FF4081\",\n d: \"M5.833 10h3.75v6.667l-3.75 1.666z\"\n}), React.createElement(\"path\", {\n fill: \"#CE0C4E\",\n d: \"M13.333 10v8.333l-3.75-1.666V10z\"\n})), React.createElement(\"circle\", {\n fill: \"#FFC058\",\n cx: \"9.583\",\n cy: \"7.917\",\n r: \"6.25\"\n}), React.createElement(\"circle\", {\n fill: \"#FFCD7B\",\n cx: \"9.583\",\n cy: \"7.917\",\n r: \"5.417\"\n}), React.createElement(\"path\", {\n fill: \"#FFFBB5\",\n d: \"M8.333 11.667L5 8.462l.933-.898 2.4 2.308L13.4 5l.933.897z\"\n}))))))));","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n facetContainer: {\n display: 'flex',\n flexGrow: 1,\n flexShrink: 0,\n flexDirection: 'column',\n padding: '0 16px',\n borderRadius: '1px',\n position: 'relative',\n borderBottom: 'solid 1px rgba(0,0,0, 0.33)',\n\n '&:last-child': {\n borderBottom: 'solid 1px rgb(255,255,255)'\n }\n },\n\n openedFacetContainer: {\n paddingBottom: '15px'\n },\n\n closedFacetContainer: {\n paddingBottom: '5px'\n },\n\n iconButton: {\n '&:first-child': {\n marginLeft: '-16px',\n height: 24,\n width: 24\n },\n visibility: 'hidden'\n },\n\n recommendedIcon: {\n width: '18px',\n height: '18px',\n marginRight: '6px',\n flexShrink: 0\n },\n\n titleContainer: {\n display: 'flex',\n flexDirection: 'row',\n flexShrink: 0,\n alignItems: 'center',\n height: '42px',\n borderRadius: '1px',\n '&:hover $iconButton': {\n visibility: 'visible'\n },\n marginLeft: '-16px',\n paddingLeft: '16px'\n },\n\n expandIcon: {\n transition: 'transform .15s ease',\n margin: '0 2px',\n color: 'rgba(0, 0, 0, 0.54)'\n },\n\n expanded: {\n transform: 'rotate(180deg)'\n },\n\n '@keyframes animate': {\n from: {background: '#FFFBEB'},\n '66%': {background: '#FFFBEB'},\n '100%': {background: 'transparent'}\n },\n\n highlighted: {\n animationName: '$animate',\n animationDuration: '3s',\n animationIterationCount: 1\n }\n}));\n\nexport default useStyles;\n","import React, {useState} from 'react';\nimport {CollapseButton, SmallIconButtonWithTooltip, withTooltip} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport FacetTitle from '../FacetTitle/FacetTitle';\nimport RecommendedIcon from './Recommended.svg';\nimport useStyles from './styles';\n\nexport const RecommendedIconWithTooltip = withTooltip(RecommendedIcon);\n\nexport type Props = {\n title: string;\n chipLabel?: number;\n onDeleteChip?: () => void;\n pathToTitle?: string[];\n onClose?: () => void;\n children?: React.ReactNode;\n isOpenByDefault?: boolean;\n isHighlighted?: boolean;\n isRecommended?: boolean;\n};\n\nconst FacetContainer = ({\n title,\n chipLabel,\n onDeleteChip,\n pathToTitle,\n onClose,\n children,\n isOpenByDefault = true,\n isHighlighted = false,\n isRecommended = false\n}: Props) => {\n const styles = useStyles();\n const [open, setOpen] = useState(isOpenByDefault);\n const toggleOpen = () => {\n setOpen(!open);\n };\n\n return (\n <div\n className={classnames(styles.facetContainer, {\n [styles.openedFacetContainer]: open,\n [styles.closedFacetContainer]: !open,\n [styles.highlighted]: isHighlighted\n })}\n data-reltio-id={`search-facet-container-${title}`}\n >\n <div className={styles.titleContainer}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={CloseIcon}\n onClick={onClose}\n className={styles.iconButton}\n size=\"XXS\"\n />\n {isRecommended && (\n <RecommendedIconWithTooltip\n className={styles.recommendedIcon}\n tooltipTitle={i18n.text('Recommended')}\n showForDisabled={true}\n />\n )}\n <FacetTitle\n title={title}\n pathToTitle={pathToTitle}\n chipLabel={chipLabel}\n onDelete={onDeleteChip}\n onClick={toggleOpen}\n />\n\n <CollapseButton\n onClick={toggleOpen}\n isOpen={open}\n className={styles.iconButton}\n size=\"S\"\n tooltipTitle={open ? i18n.text('Collapse attribute') : i18n.text('Expand attribute')}\n tooltipPlacement=\"bottom-end\"\n />\n </div>\n {open ? children : null}\n </div>\n );\n};\n\nexport default FacetContainer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n control: {\n minHeight: '40px',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n height: 'auto',\n padding: 0\n },\n valueContainer: {margin: '4px 6px'},\n placeholder: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n left: '16px',\n bottom: '14px'\n },\n dropdownIndicator: {\n margin: '0px 2px 0px 0px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport MultiTypeaheadEditor from '../../MultiTypeaheadEditor/MultiTypeaheadEditor';\nimport {FacetConfig, FacetDataItem} from '../../../types';\nimport FacetContainer from '../FacetContainer/FacetContainer';\nimport {useStyles} from './styles';\nimport {isMetadataSourcedFacetedAttribute} from '../../../services/search/facet';\n\nexport type Props = {\n config: FacetConfig;\n data?: FacetDataItem[];\n values?: string[];\n filteredData?: FacetDataItem[];\n isHighlighted?: boolean;\n isRecommended?: boolean;\n onChange?: <Type>(arr: Type[]) => void;\n onSearch?: (inputValue: string) => void;\n onClose?: () => void;\n};\n\nconst FacetWithDropdownCheckboxes = ({\n config,\n data = [],\n filteredData,\n values = [],\n isHighlighted,\n isRecommended,\n onSearch = identity,\n onChange,\n onClose\n}: Props) => {\n const classes = useStyles();\n\n const renderFacetsList = () => {\n return (\n <MultiTypeaheadEditor\n values={values}\n defaultOptions={data}\n filteredOptions={filteredData}\n onChange={onChange}\n getSuggestions={onSearch}\n isClearable={false}\n showBar={false}\n showNumberInValue={true}\n classes={classes}\n placeholder={i18n.text('All values')}\n canLoadMore={!isMetadataSourcedFacetedAttribute(config)}\n />\n );\n };\n\n return (\n <FacetContainer\n title={config.title}\n pathToTitle={config.pathToTitle}\n onClose={onClose}\n chipLabel={values.length}\n onDeleteChip={() => onChange([])}\n isHighlighted={isHighlighted}\n isRecommended={isRecommended}\n >\n {renderFacetsList()}\n </FacetContainer>\n );\n};\n\nexport default FacetWithDropdownCheckboxes;\n","import {makeStyles} from '@mui/styles';\nimport {alpha} from '@mui/material/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 4,\n padding: '15px 0'\n },\n rail: {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n borderRadius: 4\n },\n thumb: {\n width: '14px',\n height: '14px',\n border: '1px solid #FFFFFF',\n '&$focusVisible,&:hover': {\n boxShadow: `0px 0px 0px 9px ${alpha(theme.palette.primary.main, 0.12)}`,\n '@media (hover: none)': {\n boxShadow: 'none'\n }\n },\n '&$active': {\n boxShadow: `0px 0px 0px 9px ${alpha(theme.palette.primary.main, 0.12)}`\n },\n '&::after': {\n left: -10,\n top: -10,\n right: -10,\n bottom: -10\n }\n },\n focusVisible: {},\n active: {},\n track: {\n borderRadius: 4\n }\n}));\n\nexport const useTooltipStyles = makeStyles((theme) => ({\n tooltipPlacementTop: {\n margin: '3px 0'\n },\n tooltip: {\n color: '#FFFFFF',\n fontSize: '9px',\n letterSpacing: 0,\n lineHeight: '10px',\n textAlign: 'right',\n padding: '3px 4px',\n backgroundColor: theme.palette.primary.main,\n borderRadius: '4px'\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@mui/material/Tooltip';\nimport {useTooltipStyles} from './styles';\n\nexport const ValueLabel = ({children, open, value}) => {\n const styles = useTooltipStyles();\n return (\n <Tooltip\n open={open}\n enterTouchDelay={0}\n placement=\"top\"\n title={value}\n classes={{tooltipPlacementTop: styles.tooltipPlacementTop, tooltip: styles.tooltip}}\n >\n {children}\n </Tooltip>\n );\n};\n\nValueLabel.propTypes = {\n children: PropTypes.element.isRequired,\n open: PropTypes.bool.isRequired,\n value: PropTypes.string.isRequired\n};\n\nexport default ValueLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Slider from '@mui/material/Slider';\nimport {useStyles} from './styles';\nimport {ValueLabel} from './ValueLabel';\n\nexport const RangeSlider = ({min, max, range, onChange, onAfterChange, className, ...otherProps}) => {\n const styles = useStyles();\n\n const handleChange = (event, newValues) => {\n if (onChange) {\n onChange(newValues);\n }\n };\n\n const handleChangeCommitted = (event, newValues) => {\n if (onAfterChange) {\n onAfterChange(newValues);\n }\n };\n\n return (\n <div className={className}>\n <Slider\n min={min}\n max={max}\n value={range}\n classes={{root: styles.root, rail: styles.rail, track: styles.track, thumb: styles.thumb}}\n onChange={handleChange}\n onChangeCommitted={handleChangeCommitted}\n valueLabelDisplay=\"auto\"\n aria-labelledby=\"range-slider\"\n components={{ValueLabel}}\n size=\"small\"\n component=\"div\"\n {...otherProps}\n />\n </div>\n );\n};\n\nRangeSlider.propTypes = {\n min: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n max: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n range: PropTypes.array.isRequired,\n onChange: PropTypes.func,\n onAfterChange: PropTypes.func,\n className: PropTypes.string\n};\n\nexport default RangeSlider;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n tooltip: {\n borderRadius: '1px',\n backgroundColor: 'rgba(97,97,97,0.9)',\n padding: '8px'\n },\n number: {\n color: '#FFFFFF',\n fontSize: '11px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '13px'\n },\n value: {\n opacity: 0.7,\n color: '#FFFFFF',\n fontSize: '10px',\n letterSpacing: 0,\n lineHeight: '11px',\n marginTop: '4px'\n }\n}));\n\nexport {useStyles};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useStyles} from './styles';\n\nconst BarTooltipContent = ({payload, active}) => {\n const styles = useStyles();\n\n if (active) {\n const {\n payload: {label},\n value,\n formatter\n } = payload[0];\n return (\n <div className={styles.tooltip}>\n <div className={styles.number}>{`${formatter(value)}`}</div>\n <div className={styles.value}>{`${label}`}</div>\n </div>\n );\n }\n return null;\n};\n\nBarTooltipContent.propTypes = {\n payload: PropTypes.array,\n active: PropTypes.bool\n};\n\nexport default BarTooltipContent;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n barChart: {\n '& text': {\n stroke: 'none',\n fill: 'rgba(0, 0, 0, 0.54)',\n textAnchor: 'end'\n },\n '& .recharts-yAxis': {\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)',\n textAnchor: 'end'\n },\n '& .recharts-xAxis .recharts-cartesian-axis-tick:first-child text': {\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)',\n textAnchor: 'start'\n },\n '& .recharts-xAxis .recharts-cartesian-axis-tick:last-child text': {\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)',\n textAnchor: 'end'\n },\n '& .recharts-cartesian-axis-line': {\n stroke: 'rgba(0, 0, 0, 0.54)'\n }\n }\n}));\n\nexport {useStyles};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {BarChart, Bar, Cell, XAxis, YAxis, CartesianGrid, ResponsiveContainer, Tooltip} from 'recharts';\nimport BarTooltipContent from './BarTooltipContent/BarTooltipContent';\nimport {theme} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nexport const BarChartWithSelection = ({\n data = [],\n range = [],\n domain,\n color = theme.palette.primary.main,\n tickFormatterX,\n tickFormatterY\n}) => {\n const styles = useStyles();\n const [focusBar, setFocusBar] = useState(null);\n\n const getColorOpacity = (data, index) => {\n const isInRange = ({value}) => value[0] >= range[0] && value[1] <= range[1];\n\n const extraOpacity = focusBar === index ? 0.2 : 0;\n return extraOpacity + (isInRange(data) ? 0.6 : 0.2);\n };\n\n const renderTick = (tickProps) => {\n const {\n x,\n y,\n index,\n payload: {value, offset}\n } = tickProps;\n return (\n <text\n x={index === 0 ? x - offset : x + offset}\n y={y + 4}\n textAnchor={index === 0 ? 'start' : 'end'}\n >{`${tickFormatterX(value)}`}</text>\n );\n };\n\n const areaData = data.map((item, index, arr) => {\n return {\n ...item,\n value: index < arr.length - 1 ? item.value[0] : item.value[1]\n };\n });\n\n const handleMouseEvent = (state) => {\n if (state.isTooltipActive) {\n setFocusBar(state.activeTooltipIndex);\n } else {\n setFocusBar(null);\n }\n };\n\n return (\n <ResponsiveContainer>\n <BarChart\n data={areaData}\n margin={{top: 12, right: 0, left: 0, bottom: 0}}\n onMouseEnter={handleMouseEvent}\n onMouseLeave={handleMouseEvent}\n onMouseMove={handleMouseEvent}\n className={styles.barChart}\n >\n <CartesianGrid vertical={false} stroke=\"#f2f2f2\" />\n <XAxis\n dataKey=\"value\"\n interval={0}\n padding={{left: 4, right: 4}}\n height={15}\n tickLine={false}\n ticks={domain}\n tick={renderTick}\n />\n <YAxis\n width={38}\n domain={[0, 'auto']}\n axisLine={false}\n tickLine={false}\n tickSize={0}\n tickMargin={4}\n tickCount={6}\n tickFormatter={tickFormatterY}\n />\n <Tooltip\n cursor={{fill: 'rgb(255,255,255)'}}\n content={<BarTooltipContent />}\n isAnimationActive={false}\n />\n <Bar dataKey=\"number\" formatter={tickFormatterY} isAnimationActive={false}>\n {data.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={color} fillOpacity={getColorOpacity(entry, index)} />\n ))}\n </Bar>\n </BarChart>\n </ResponsiveContainer>\n );\n};\n\nBarChartWithSelection.propTypes = {\n data: PropTypes.array,\n range: PropTypes.array,\n domain: PropTypes.array,\n color: PropTypes.string,\n tickFormatterX: PropTypes.func,\n tickFormatterY: PropTypes.func\n};\n\nexport default BarChartWithSelection;\n","// extracted by mini-css-extract-plugin\nexport default {\"data\":\"NumericRangeFacet-styles-data--kL9q5\",\"barChartContainer\":\"NumericRangeFacet-styles-barChartContainer--t9NkG\",\"slider\":\"NumericRangeFacet-styles-slider--XbmKe\",\"inputsContainer\":\"NumericRangeFacet-styles-inputsContainer--mU0_m\",\"numberEditorInputRoot\":\"NumericRangeFacet-styles-numberEditorInputRoot--djW3k\",\"numberEditorRoot\":\"NumericRangeFacet-styles-numberEditorRoot--DVXqx\",\"input\":\"NumericRangeFacet-styles-input--Nl2tx\"};","import React, {PureComponent} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {head, last, path} from 'ramda';\nimport {NumberEditor, NoData} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {isFloatingType} from '@reltio/mdm-sdk';\nimport {getNumbersMath} from '../../../../utils/general';\nimport {createRangeServiceFor} from '../../../../services/search/rangeFacet';\nimport FacetContainer from '../../FacetContainer/FacetContainer';\nimport RangeSlider from '../RangeSlider/RangeSlider';\nimport BarChartWithSelection from '../../../BarChartWithSelection/BarChartWithSelection';\nimport styles from './styles.less';\nimport withCustomizedData from './withCustomizedData';\n\nexport class NumericRangeFacet extends PureComponent {\n state = {\n range: [],\n data: [],\n values: [],\n lowerBound: 0,\n upperBound: 0\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.data !== prevState.data || nextProps.values !== prevState.values) {\n const {config, values, data} = nextProps;\n const attrType = config.attrType && config.attrType.type;\n const isScaled = attrType === 'Long';\n const rangeService = createRangeServiceFor(attrType);\n const NumMath = getNumbersMath(attrType);\n const range = rangeService.getRange(values, data);\n return {\n range: range,\n data: data,\n values: values,\n lowerBound: range.length > 0 ? range[0].toString() : 0,\n upperBound: range.length > 0 ? range[1].toString() : 0,\n NumMath: NumMath,\n rangeService: rangeService,\n isScaled: isScaled,\n isFloating: isFloatingType(attrType),\n scale:\n data.length > 0 ? rangeService.calcScale(...rangeService.getBarDomain(data)) : {ratio: 1, offset: 0}\n };\n } else {\n return null;\n }\n }\n\n handleOnChangeValue = (newValues) => {\n if (!this.props.onChange) {\n return;\n }\n\n const {data, values} = this.props;\n const {rangeService} = this.state;\n const [min, max] = rangeService.getBarDomain(data);\n\n const fixedValues = rangeService.adjustRange(newValues, min, max);\n if (\n values.length === 0 ||\n !rangeService.equals(fixedValues[0], path([0, 0], values)) ||\n !rangeService.equals(fixedValues[1], path([0, 1], values))\n ) {\n this.props.onChange([fixedValues]);\n }\n };\n\n onLowerBoundChanged = (newValue) => {\n const {range, NumMath, isFloating} = this.state;\n this.setState({lowerBound: isFloating ? newValue : NumMath.toFixed(newValue, 0)}, () => {\n const firstDataValue = head(this.props.data).value[0];\n const bound = newValue === '' || isNaN(newValue) ? firstDataValue : newValue;\n const value = NumMath.clamp(firstDataValue, range[1], isFloating ? bound : NumMath.floor(bound));\n this.setState((state) => ({\n lowerBound: value.toString(),\n range: [value, state.range[1]]\n }));\n this.handleOnChangeValue([value, range[1]]);\n });\n };\n\n onUpperBoundChanged = (newValue) => {\n const {range, NumMath, isFloating} = this.state;\n this.setState({upperBound: isFloating ? newValue : NumMath.toFixed(newValue, 0)}, () => {\n const lastDataValue = last(this.props.data).value[1];\n const bound = newValue === '' || isNaN(newValue) ? lastDataValue : newValue;\n const value = NumMath.clamp(range[0], lastDataValue, isFloating ? bound : NumMath.ceil(bound));\n this.setState((state) => ({\n upperBound: value.toString(),\n range: [state.range[0], value]\n }));\n this.handleOnChangeValue([range[0], value]);\n });\n };\n\n onChangeRange = (range) => {\n const {isFloating, NumMath} = this.state;\n const newRange = range.map((item) => (isFloating ? item : NumMath.toFixed(this.revertScale(item), 0)));\n this.setState({\n range: newRange,\n lowerBound: newRange[0],\n upperBound: newRange[1]\n });\n };\n\n onRevertedChange = (values) => {\n const {isFloating, NumMath} = this.state;\n const newValues = values.map((item) => (isFloating ? item : NumMath.toFixed(this.revertScale(item), 0)));\n this.handleOnChangeValue(newValues);\n };\n\n applyScale = (item) => {\n const {isScaled, scale, rangeService} = this.state;\n return isScaled ? rangeService.applyScale(item, scale) : item;\n };\n\n revertScale = (item) => {\n const {isScaled, scale, rangeService} = this.state;\n return isScaled ? rangeService.revertScale(item, scale) : item;\n };\n\n onFocus = (event) => event.target.select();\n\n render() {\n const {config, data, isHighlighted, isRecommended, onClose, numberFormat} = this.props;\n const {isScaled, scale, range, lowerBound, upperBound, rangeService, isFloating} = this.state;\n\n const formatter = isScaled\n ? rangeService.bigNumbersTickFormatterX(rangeService.formatNumberForRangeFacet, scale)\n : rangeService.formatNumberForRangeFacet;\n\n const barData = data.map((item) => {\n return {\n value: item.value.map(this.applyScale),\n label: item.value.map(rangeService.formatNumberForRangeFacet).join(' - '),\n number: item.number\n };\n });\n\n const barRange = range.map((item) => +this.applyScale(item));\n\n const [scaledMin, scaledMax] = rangeService.getBarDomain(data).map((item) => this.applyScale(item));\n\n return (\n <FacetContainer\n title={config.title}\n pathToTitle={config.pathToTitle}\n onClose={onClose}\n isHighlighted={isHighlighted}\n isRecommended={isRecommended}\n >\n <div className={styles.data}>\n {barData.length > 0 ? (\n <>\n <div className={styles.barChartContainer} data-reltio-id=\"search-bar-chart-with-selection\">\n <BarChartWithSelection\n data={barData}\n range={barRange}\n tickFormatterX={formatter}\n tickFormatterY={rangeService.formatNumberForRangeFacet}\n domain={[scaledMin, scaledMax]}\n />\n </div>\n <RangeSlider\n min={scaledMin}\n max={scaledMax}\n range={barRange}\n onAfterChange={this.onRevertedChange}\n onChange={this.onChangeRange}\n className={styles.slider}\n valueLabelFormat={formatter}\n step={isFloating ? (scaledMax - scaledMin) / 200 : 1}\n />\n <div className={styles.inputsContainer}>\n <NumberEditor\n value={lowerBound}\n onChange={this.onLowerBoundChanged}\n onFocus={this.onFocus}\n integer={!isFloating}\n format={numberFormat}\n variant=\"filled\"\n classes={{\n root: styles.numberEditorRoot\n }}\n InputProps={{\n classes: {\n root: styles.numberEditorInputRoot,\n input: styles.input\n }\n }}\n />\n <NumberEditor\n value={upperBound}\n onChange={this.onUpperBoundChanged}\n onFocus={this.onFocus}\n integer={!isFloating}\n format={numberFormat}\n variant=\"filled\"\n classes={{\n root: styles.numberEditorRoot\n }}\n InputProps={{\n classes: {\n root: styles.numberEditorInputRoot,\n input: styles.input\n }\n }}\n />\n </div>\n </>\n ) : (\n <NoData />\n )}\n </div>\n </FacetContainer>\n );\n }\n}\n\nNumericRangeFacet.propTypes = {\n data: PropTypes.array,\n values: PropTypes.array,\n config: PropTypes.object,\n isHighlighted: PropTypes.bool,\n isRecommended: PropTypes.bool,\n onClose: PropTypes.func,\n onChange: PropTypes.func,\n numberFormat: PropTypes.shape({\n decimalSeparator: PropTypes.string,\n thousandSeparator: PropTypes.string,\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n decimalScale: PropTypes.number\n })\n};\n\nNumericRangeFacet.defaultProps = {\n config: {},\n data: [],\n values: []\n};\n\nexport default connect((store) => {\n return {\n numberFormat: mdm.selectors.getUiNumberFormat(store)\n };\n})(withCustomizedData(NumericRangeFacet));\n","import React, {useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n applyPresentationStrategyToValue,\n AttributeType,\n getNumberFormat,\n intl,\n getAttrDataTypeDefinition,\n mapFilterValue,\n NumberFormat,\n PrimitiveValue,\n revertPresentationStrategyForValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {evolve, map, omit} from 'ramda';\n\ntype Values = [PrimitiveValue, PrimitiveValue][];\n\ntype Props = {\n data?: {\n number: number;\n value: [number, number];\n }[];\n config: {\n attrType: AttributeType;\n };\n values?: Values;\n numberFormat?: NumberFormat;\n onChange: (values: Values) => void;\n};\n\nconst withCustomizedData = <T extends Props>(Component: React.ComponentType<T>) => {\n const WithCustomizedData = ({config, values, data, onChange, numberFormat, ...otherProps}: T) => {\n const attributePresentations = useSelector(mdm.selectors.getAttributePresentations);\n const {strategy} = getNumberFormat(\n getAttrDataTypeDefinition(config.attrType),\n attributePresentations,\n intl.getLocale()\n );\n const customizedData = useMemo(\n () =>\n data?.map(\n evolve({\n value: map(applyPresentationStrategyToValue(strategy))\n })\n ),\n [data, strategy]\n );\n const customizedValues = useMemo(\n () => values?.map(mapFilterValue(applyPresentationStrategyToValue(strategy))),\n [values, strategy]\n );\n const customizedOnChange = useCallback(\n (values: Values) => {\n const uncustomizedValues: Values = values?.map(\n mapFilterValue(revertPresentationStrategyForValue(strategy))\n );\n onChange(uncustomizedValues);\n },\n [strategy, onChange]\n );\n return (\n <Component\n data={customizedData}\n values={customizedValues}\n onChange={customizedOnChange}\n config={config}\n numberFormat={numberFormat && omit(['strategy', numberFormat])}\n {...(otherProps as T)}\n />\n );\n };\n\n WithCustomizedData.displayName = 'WithCustomizedData';\n\n return WithCustomizedData;\n};\n\nexport default withCustomizedData;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexGrow: 1,\n whiteSpace: 'nowrap',\n cursor: 'default',\n width: '100%'\n },\n dateEditor: {\n margin: 0,\n width: '50%',\n whiteSpace: 'normal',\n\n '&:first-child': {\n marginRight: '4px'\n },\n\n '& .MuiInputAdornment-root': {\n paddingRight: 0\n }\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport {nanoid} from 'nanoid';\nimport i18n from 'ui-i18n';\nimport {isNil, pathOr} from 'ramda';\nimport {DateEditor} from '@reltio/components';\nimport {RangeValue} from '../../types';\nimport {useStyles} from './styles';\n\nconst START_DATE_INDEX = 0;\nconst END_DATE_INDEX = 1;\n\nconst getDate = (values: number[], index: number) => pathOr(null, [index], values);\n\nconst toEditorValue = (value: number) => {\n return value && new Date(value);\n};\n\nconst fromEditorValue = (value?: Date) => value && value.getTime();\n\ntype Props = {\n values: number[];\n minDate?: number;\n maxDate?: number;\n onChange: (val: [RangeValue]) => void;\n};\n\nconst DateRangeChooser = ({values, minDate, maxDate, onChange}: Props) => {\n const [startDate, setStartDate] = useState<number>(null);\n const [endDate, setEndDate] = useState<number>(null);\n\n const startDateId = useRef<string>(nanoid());\n const endDateId = useRef<string>(nanoid());\n\n const styles = useStyles();\n\n React.useEffect(() => {\n setStartDate(getDate(values, START_DATE_INDEX));\n setEndDate(getDate(values, END_DATE_INDEX));\n }, [values]);\n\n const changeHandler = (startDate: number, endDate: number) => {\n if (isNil(startDate) || isNil(endDate)) {\n return;\n }\n if (startDate > endDate) {\n onChange([[endDate, startDate]]);\n } else {\n onChange([[startDate, endDate]]);\n }\n };\n\n const selectStartDateHandler = (value: Date) => {\n const newValue = fromEditorValue(value);\n setStartDate(newValue);\n changeHandler(newValue, endDate);\n };\n\n const selectEndDateHandler = (value: Date) => {\n const newValue = fromEditorValue(value);\n setEndDate(newValue);\n changeHandler(startDate, newValue);\n };\n\n const commonProps = {\n minDate: toEditorValue(minDate),\n maxDate: toEditorValue(maxDate)\n };\n\n return (\n <div className={styles.container}>\n <DateEditor\n label={i18n.text('Start Date')}\n value={toEditorValue(startDate)}\n onChange={selectStartDateHandler}\n slotProps={{\n textField: {\n id: startDateId.current,\n className: styles.dateEditor\n }\n }}\n {...commonProps}\n />\n <DateEditor\n label={i18n.text('End Date')}\n value={toEditorValue(endDate)}\n onChange={selectEndDateHandler}\n slotProps={{\n textField: {\n id: endDateId.current,\n className: styles.dateEditor\n },\n popper: {\n placement: 'bottom-end'\n }\n }}\n {...commonProps}\n />\n </div>\n );\n};\n\nexport default DateRangeChooser;\n","import {DataTypes, utils, formatDate} from '@reltio/mdm-sdk';\nimport {FacetDataItem} from '../../../types';\n\nexport const convertValue = (dataType: string) => (value: number) => {\n return dataType === DataTypes.TYPE_DATE ? utils.dates.toLocalDate(value).getTime() : value;\n};\n\nexport const fromDateEditorValue = (dataType: string) => (value: number) =>\n dataType === DataTypes.TYPE_DATE ? utils.dates.toUtcDate(value).getTime() : value;\n\nexport const prepareData = (dataType: string) => (value: FacetDataItem) => {\n if (Array.isArray(value.value)) {\n const editorValue = value.value.map(convertValue(dataType));\n\n return {\n ...value,\n value: editorValue,\n label: editorValue.map(formatDate).join(' - ')\n };\n }\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n barChartContainer: {\n position: 'relative',\n height: '190px',\n paddingTop: '6px',\n width: '100%',\n overflow: 'hidden'\n },\n\n dateRangeChooserWrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '12px',\n width: '100%'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {equals, path} from 'ramda';\nimport {DataTypes, formatDate, mapFilterValue, utils} from '@reltio/mdm-sdk';\nimport {NoData} from '@reltio/components';\n\nimport {createRangeServiceFor} from '../../../services/search/rangeFacet';\nimport DateRangeChooser from '../../DateRangeChooser/DateRangeChooser';\nimport FacetContainer from '../FacetContainer/FacetContainer';\nimport {RangeValue, FacetDataItem, FacetConfig} from '../../../types';\n\nimport BarChartWithSelection from '../../BarChartWithSelection/BarChartWithSelection';\nimport {convertValue, fromDateEditorValue, prepareData} from './helpers';\nimport {useStyles} from './styles';\n\nconst rangeService = createRangeServiceFor();\n\ntype Props = {\n data: FacetDataItem[];\n values: RangeValue[];\n config: FacetConfig;\n onChange: ([RangeValue]) => void;\n isHighlighted: boolean;\n isRecommended: boolean;\n onClose: () => void;\n};\n\nconst DateRangeFacet = ({data = [], values = [], config, onChange, isHighlighted, isRecommended, onClose}: Props) => {\n const styles = useStyles();\n\n const type = path(['attrType', 'type'], config);\n\n const onValuesChange = useCallback(\n (currentValues: [RangeValue]) => {\n const newValues = currentValues.map(mapFilterValue(fromDateEditorValue(type)));\n\n if (!equals(values, newValues)) {\n const [min, max] = rangeService.getBarDomain(data);\n const isUTC = type === DataTypes.TYPE_DATE;\n const values = newValues.map((values) => [\n utils.dates.getStartOfDay(values[0], isUTC),\n utils.dates.getEndOfDay(values[1], isUTC)\n ]);\n const range = rangeService.getRange(values, data);\n onChange([range.length ? range : [min, max]]);\n }\n },\n [data, onChange, type, values]\n );\n\n const preparedData = useMemo(() => {\n return data.map(prepareData(type));\n }, [data, type]);\n\n const [domain, range] = useMemo(() => {\n return [\n rangeService.getBarDomain(preparedData),\n rangeService.getRange(values.map(mapFilterValue(convertValue(type))), preparedData)\n ];\n }, [preparedData, type, values]);\n\n return (\n <FacetContainer\n title={config.title}\n pathToTitle={config.pathToTitle}\n onClose={onClose}\n isHighlighted={isHighlighted}\n isRecommended={isRecommended}\n >\n {data.length > 0 ? (\n <>\n <div className={styles.barChartContainer}>\n <BarChartWithSelection\n data={preparedData}\n range={range}\n tickFormatterX={formatDate}\n tickFormatterY={rangeService.formatNumberForRangeFacet}\n domain={domain}\n />\n </div>\n <div className={styles.dateRangeChooserWrapper}>\n <DateRangeChooser values={range} onChange={onValuesChange} />\n </div>\n </>\n ) : (\n <NoData />\n )}\n </FacetContainer>\n );\n};\n\nexport default DateRangeFacet;\n","import {connect} from 'react-redux';\nimport {\n getFacetData,\n getFacetValues,\n getFacetFilteredData,\n isHighlightedFacet,\n isRecommendedFacet\n} from '../../selectors/facet';\n\nimport withSearchSupport from './HOCs/FacetWithSearchSupport/FacetWithSearchSupport';\nimport EntityTypeFacet from './EntityTypeFacet/EntityTypeFacet';\nimport FacetWithDropdownCheckboxes from './FacetWithDropdownCheckboxes/FacetWithDropdownCheckboxes';\nimport NumericRangeFacet from './NumericRangeFacet/NumericRangeFacet/NumericRangeFacet';\nimport DateRangeFacet from './DateRangeFacet/DateRangeFacet';\nimport {FACET_TYPES} from '@reltio/mdm-sdk';\n\nexport default class FacetsFactory {\n static getWidget(config) {\n switch (config.type) {\n case FACET_TYPES.ENTITY_TYPE_FACET:\n return EntityTypeFacet;\n case FACET_TYPES.WITH_DROPDOWN_CHECKBOXES_FACET:\n return FacetWithDropdownCheckboxes;\n case FACET_TYPES.NUMERIC_RANGE_FACET:\n return NumericRangeFacet;\n case FACET_TYPES.DATE_RANGE_FACET:\n return DateRangeFacet;\n default:\n return null;\n }\n }\n\n static getDefaultConfig = () => ({\n autofocus: false,\n showDeleteButton: true\n });\n\n static connectData = (Component, config) =>\n connect((store) => ({\n data: getFacetData(config, store),\n values: getFacetValues(config, store),\n filteredData: getFacetFilteredData(config, store),\n isHighlighted: isHighlightedFacet(config.fieldName, store),\n isRecommended: isRecommendedFacet(config.fieldName, store)\n }))(Component);\n\n static build(configuration) {\n const config = {...FacetsFactory.getDefaultConfig(), ...configuration};\n const wrap = (componentClass) => {\n const withSearch = withSearchSupport(componentClass, config);\n return FacetsFactory.connectData(withSearch, config);\n };\n\n const widget = FacetsFactory.getWidget(config);\n if (widget) {\n return wrap(widget);\n }\n\n return null;\n }\n}\n","import {allPass, isEmpty, partition, pathEq, propSatisfies, reject} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {isTypeFacet} from '@reltio/mdm-sdk';\n\nconst test = allPass([propSatisfies(isEmpty, 'configs'), pathEq(['group', 'hasCollapseButton'], true)]);\nconst rejectEmptyConfigs = reject(test);\n\nexport const splitFacetConfigsByGroups = (metadata, facetsConfigs) => {\n const [entityTypeFacetConfigs, attributesFacetsConfigs] = partition(isTypeFacet, facetsConfigs);\n\n const configsByGroups = [\n {\n group: {\n title: i18n.text('Entity types'),\n hasCollapseButton: false\n },\n configs: entityTypeFacetConfigs\n },\n {\n group: {\n title: i18n.text('Attributes'),\n hasCollapseButton: false,\n hasSearchAttributesField: true\n },\n configs: attributesFacetsConfigs\n }\n ];\n\n return rejectEmptyConfigs(configsByGroups);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n titleBox: {\n display: 'flex',\n flexDirection: 'row',\n flexShrink: 0,\n lineHeight: '24px',\n paddingTop: '12px',\n paddingBottom: '8px',\n alignItems: 'center',\n justifyContent: 'space-between'\n },\n\n title: {\n color: 'rgba(0,0,0,0.87)',\n display: 'flex',\n flexGrow: 1,\n alignItems: 'center',\n fontSize: 16,\n fontWeight: 500,\n paddingLeft: 16,\n letterSpacing: '0.15px',\n overflow: 'hidden'\n },\n\n text: {},\n\n avatar: {\n marginRight: 12,\n width: '32px',\n height: '32px'\n },\n\n collapseIcon: {\n marginRight: 8\n },\n\n leftIcon: {\n flexShrink: 0,\n marginRight: '20px'\n }\n});\n","import React from 'react';\nimport Avatar from '@mui/material/Avatar';\nimport {CollapseButton, ExpandedValueTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n title?: string;\n iconSrc?: string;\n isOpen?: boolean;\n hasCollapseButton?: boolean;\n leftIcon?: React.ReactNode;\n onCollapse?: (e: React.MouseEvent) => void;\n};\n\nconst FacetGroupTitle = ({\n title = '',\n iconSrc = '',\n isOpen = true,\n hasCollapseButton = true,\n leftIcon,\n onCollapse\n}: Props) => {\n const classes = useStyles();\n\n return (\n <div className={classes.titleBox}>\n <div className={classes.title}>\n {leftIcon && <div className={classes.leftIcon}>{leftIcon}</div>}\n {iconSrc && <Avatar src={iconSrc} className={classes.avatar} />}\n <ExpandedValueTooltip value={title}>\n <span className={classes.text}>{title}</span>\n </ExpandedValueTooltip>\n </div>\n {hasCollapseButton && (\n <CollapseButton isOpen={isOpen} onClick={onCollapse} className={classes.collapseIcon} size={'S'} />\n )}\n </div>\n );\n};\n\nexport default FacetGroupTitle;\n","export default {\n INIT_SEARCH_MODULE: 'UI_INIT_SEARCH_MODULE',\n SHOW_MORE_FACETS_POPUP: 'UI_SHOW_MORE_FACETS_POPUP',\n SHOW_SAVED_SEARCHES_DIALOG: 'UI_SHOW_SAVED_SEARCHES_DIALOG',\n SHOW_SAVE_SEARCH_DIALOG: 'UI_SHOW_SAVE_SEARCH_DIALOG',\n SHOW_ADVANCED_SEARCH: 'UI_SHOW_ADVANCED_SEARCH',\n SHOW_BULK_UPDATE: 'UI_SHOW_BULK_UPDATE',\n SET_MARKER: 'UI_SET_MARKER',\n SET_HOVERED_ENTITY_URI: 'UI_SET_HOVERED_ENTITY_URI',\n SET_ACTIVE_ADDITIONAL_SEARCH: 'UI_SET_ACTIVE_ADDITIONAL_SEARCH',\n SET_SEARCH_RESULTS_COLUMNS: 'UI_SET_SEARCH_RESULTS_COLUMNS',\n CHANGE_SEARCH_RESULTS_COLUMNS: 'UI_CHANGE_SEARCH_RESULTS_COLUMNS',\n SET_ENTITY_TYPE_TAB: 'UI_SET_ENTITY_TYPE_TAB',\n UPDATE_TABLE_VIEW_TABS: 'UI_UPDATE_TABLE_VIEW_TABS',\n CHANGE_ORDER_SEARCH_RESULTS_COLUMNS: 'UI_CHANGE_ORDER_SEARCH_RESULTS_COLUMNS',\n CHANGE_SIZES_SEARCH_RESULTS_COLUMNS: 'UI_CHANGE_SIZES_SEARCH_RESULTS_COLUMNS',\n SET_LOADING: 'UI_SET_LOADING',\n CLEAR_NOTIFICATION: 'UI_CLEAR_NOTIFICATION',\n SET_NOTIFICATION: 'UI_SET_NOTIFICATION',\n SET_SEARCH_RESULTS_MODE: 'UI_SET_SEARCH_RESULTS_MODE',\n SET_PREVIEW_PANEL_MODE: 'UI_SET_PREVIEW_PANEL_MODE',\n SET_CONFIG: 'UI_SET_CONFIG'\n};\n","import {NOTIFICATION_TYPES} from '../constants/constants';\nimport {UI} from '../constants/actionTypes';\n\nexport const initSearchModule = () => ({\n type: UI.INIT_SEARCH_MODULE\n});\n\nexport const showMoreFacetsPopup = (show) => ({\n type: UI.SHOW_MORE_FACETS_POPUP,\n payload: show\n});\n\nexport const showSavedSearchesDialog = (show) => ({\n type: UI.SHOW_SAVED_SEARCHES_DIALOG,\n payload: show\n});\n\nexport const showSaveSearchDialog = (show, postSavingAction) => ({\n type: UI.SHOW_SAVE_SEARCH_DIALOG,\n payload: {show, postSavingAction}\n});\n\nexport const showAdvancedSearch = (show) => ({\n type: UI.SHOW_ADVANCED_SEARCH,\n payload: show\n});\n\nexport const setMapMarker = (value) => {\n return {\n type: UI.SET_MARKER,\n payload: value || null\n };\n};\n\nexport const setHoveredEntityUri = (uri) => ({\n type: UI.SET_HOVERED_ENTITY_URI,\n payload: uri\n});\n\nexport const setActiveAdditionalSearch = (fieldName) => ({\n type: UI.SET_ACTIVE_ADDITIONAL_SEARCH,\n payload: fieldName\n});\n\nexport const setSearchResultsColumns = (columns) => {\n return {\n type: UI.SET_SEARCH_RESULTS_COLUMNS,\n payload: columns\n };\n};\n\nexport const changeSearchResultsColumns = (entityTypeUri, columns, prevColumns) => {\n return {\n type: UI.CHANGE_SEARCH_RESULTS_COLUMNS,\n payload: {entityTypeUri, columns, prevColumns}\n };\n};\n\nexport const setEntityTypeTab = (entityTypeUri, silent = false) => {\n return {\n type: UI.SET_ENTITY_TYPE_TAB,\n payload: {entityTypeUri, silent}\n };\n};\n\nexport const updateTableViewTabs = (tabs) => {\n return {\n type: UI.UPDATE_TABLE_VIEW_TABS,\n payload: tabs\n };\n};\n\nexport const changeOrderSearchResultsColumns = (entityTypeUri, columns) => {\n return {\n type: UI.CHANGE_ORDER_SEARCH_RESULTS_COLUMNS,\n payload: {entityTypeUri, columns}\n };\n};\n\nexport const changeSizesSearchResultsColumns = (entityTypeUri, columns) => {\n return {\n type: UI.CHANGE_SIZES_SEARCH_RESULTS_COLUMNS,\n payload: {entityTypeUri, columns}\n };\n};\n\nexport const changeLoading = (value) => {\n return {\n type: UI.SET_LOADING,\n payload: value\n };\n};\n\nexport const clearNotification = () => {\n return {type: UI.CLEAR_NOTIFICATION};\n};\n\nexport const showNotification = (payload) => {\n return {\n type: UI.SET_NOTIFICATION,\n payload\n };\n};\nexport const showErrorNotification = (message) => {\n return showNotification({\n payload: {\n message,\n action: {\n actionToDispatch: clearNotification()\n }\n },\n type: NOTIFICATION_TYPES.error\n });\n};\n\nexport const showInfoNotification = (message) => {\n return showNotification({\n payload: {\n message,\n action: null\n },\n type: NOTIFICATION_TYPES.info\n });\n};\n\nexport const showInfoNotificationWithAction = ({message, actionLabel, actionToDispatch, autoHideDuration}) => {\n return showNotification({\n payload: {\n message,\n action: {\n actionLabel,\n actionToDispatch\n },\n autoHideDuration\n },\n type: NOTIFICATION_TYPES.info\n });\n};\n\nexport const setSearchResultsMode = (mode) => {\n return {\n type: UI.SET_SEARCH_RESULTS_MODE,\n payload: mode\n };\n};\n\nexport const setPreviewPanelMode = (mode) => {\n return {\n type: UI.SET_PREVIEW_PANEL_MODE,\n payload: mode\n };\n};\n\nexport const setUiConfig = (config) => {\n return {\n type: UI.SET_CONFIG,\n payload: config\n };\n};\n\nexport const showBulkUpdate = (show) => ({\n type: UI.SHOW_BULK_UPDATE,\n payload: show\n});\n","import {isComplexFacet} from '../../services/search/collectFacets';\n\nconst checkFacetIncludes = ({facet, selectedFacets}) =>\n !!selectedFacets.find(\n (selFacet) => selFacet.fieldName === facet.fieldName || selFacet.fieldName.includes(`${facet.fieldName}.`)\n );\n\nconst isSelectedFacet = ({facet, selectedFacets}) =>\n checkFacetIncludes({facet, selectedFacets}) ||\n (isComplexFacet(facet) &&\n facet.children &&\n facet.children.some((child) => checkFacetIncludes({facet: child, selectedFacets})));\n\nexport {isSelectedFacet, checkFacetIncludes};\n","import React, {useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {isSelectedFacet} from './helpers';\nimport {AttributeListItem, VirtualGroupedList, Highlighter, AttributeGroupIcon} from '@reltio/components';\nimport ListItem from '@mui/material/ListItem';\nimport {MetadataType} from '@reltio/mdm-sdk';\nimport styles from './styles.less';\n\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\nexport const ITEM_HEIGHT = 28;\n\nconst FacetsList = ({onListItemClick, focusIndex, selectedFacets, metadata, ...otherProps}) => {\n const selectedFacetsRef = useRef(null);\n selectedFacetsRef.current = selectedFacets;\n\n const focusIndexRef = useRef(null);\n focusIndexRef.current = focusIndex;\n\n const renderItem = useCallback(\n (style, {item, level, groupId}, index) => {\n const checked = isSelectedFacet({facet: item, selectedFacets: selectedFacetsRef.current});\n const isFocused = focusIndexRef.current === index;\n return (\n <AttributeListItem\n key={`item-${groupId}-${item.fieldName}`}\n onClick={onListItemClick}\n data={item}\n label={<Highlighter text={item.title} highlight={item.filterText} />}\n labelInText={item.title}\n level={level}\n style={style}\n index={index}\n checked={checked}\n isFocused={isFocused}\n groupId={groupId}\n LogoIcon={item.LogoIcon}\n />\n );\n },\n [onListItemClick]\n );\n\n const renderGroupTitle = useCallback(\n (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.needGroupIcon && <AttributeGroupIcon metadata={metadata} group={item.item} />}\n {item.item.title}\n </ListItem>\n ),\n [metadata]\n );\n\n const getItemSize = useCallback((i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT), []);\n\n return (\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderGroupTitle={renderGroupTitle}\n renderItem={renderItem}\n focusIndex={focusIndex}\n {...otherProps}\n disableHorizontalScrollbar\n />\n );\n};\n\nFacetsList.propTypes = {\n focusIndex: PropTypes.number,\n selectedFacets: PropTypes.array,\n onListItemClick: PropTypes.func,\n metadata: MetadataType\n};\n\nexport default FacetsList;\n","// extracted by mini-css-extract-plugin\nexport default {\"subHeader\":\"MoreFacetsPopup-styles-subHeader--h1vGz\",\"icon\":\"MoreFacetsPopup-styles-icon--k_iPS\",\"recommendedIcon\":\"MoreFacetsPopup-styles-recommendedIcon--dpILQ\",\"noResultsCaptionContainer\":\"MoreFacetsPopup-styles-noResultsCaptionContainer--ChfND\"};","import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {SelectionPopup, useKeyboardNavigation} from '@reltio/components';\nimport {getMaxItemWidth, MetadataType} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {clamp, has, path} from 'ramda';\n\nimport styles from './styles.less';\nimport {isSelectedFacet} from './helpers';\nimport {flattenGroupedItemsData} from '../../services/search/collectAttributes';\nimport Typography from '@mui/material/Typography';\nimport FacetsList, {ITEM_HEIGHT} from './FacetsList';\n\nconst DEFAULT_MIN_CONTAINER_WIDTH = 240;\nconst DEFAULT_LIST_HEIGHT = 464;\nconst MIN_LIST_HEIGHT = ITEM_HEIGHT * 2;\n\nexport const HEADER_HEIGHT = 110;\nexport const DEFAULT_POPUP_HEIGHT = HEADER_HEIGHT + DEFAULT_LIST_HEIGHT;\n\nconst MoreFacetsPopup = ({\n metadata,\n open,\n selectedFacets,\n data = [],\n onListItemClick,\n lastFacetClicked = {},\n width,\n height = DEFAULT_POPUP_HEIGHT,\n ...otherProps\n}) => {\n const [listHeight, setListHeight] = useState(DEFAULT_LIST_HEIGHT);\n const maxListHeight = height - HEADER_HEIGHT;\n\n useEffect(() => {\n setListHeight(maxListHeight);\n }, [maxListHeight]);\n\n const handleResizeList = useCallback(\n (width, height) => setListHeight(clamp(MIN_LIST_HEIGHT, maxListHeight, height)),\n [maxListHeight]\n );\n\n const popupActionRef = useRef();\n useEffect(() => {\n const updatePopupPosition = path(['current', 'updatePosition'], popupActionRef);\n updatePopupPosition && updatePopupPosition();\n }, [listHeight]); // eslint-disable-line\n\n const getFacetGroupData = useCallback(\n (item, groupId, level = 0) =>\n [\n {\n type: 'item',\n item: item,\n moveTo:\n has('facetConfig')(lastFacetClicked) &&\n lastFacetClicked.facetConfig.fieldName === item.fieldName &&\n groupId === lastFacetClicked.groupId,\n level,\n groupId\n }\n ]\n .concat(\n item.children\n ? item.children.flatMap((subItem) => getFacetGroupData(subItem, groupId, level + 1))\n : []\n )\n .flat()\n .filter((item) => !item.item.hide),\n [lastFacetClicked]\n );\n\n const getFacetsData = useCallback(\n (data) => {\n return data\n .map((group) => ({\n type: 'group',\n item: group,\n items: group.facets.filter((item) => !item.hide).map((item) => getFacetGroupData(item, group.id))\n }))\n .filter((group) => group.items.length);\n },\n [getFacetGroupData]\n );\n\n const groupedItems = useMemo(() => getFacetsData(data), [data, getFacetsData]);\n const items = useMemo(() => flattenGroupedItemsData(groupedItems), [groupedItems]);\n\n const handleSearchOnEnter = useCallback(\n ({item, groupData}) => {\n onListItemClick(item, !isSelectedFacet({facet: item, selectedFacets}), groupData.groupId);\n },\n [onListItemClick, selectedFacets]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedFacets\n });\n\n const containerWidth = Math.max(width || getMaxItemWidth('title')(groupedItems), DEFAULT_MIN_CONTAINER_WIDTH);\n\n return (\n <SelectionPopup\n open={open}\n action={popupActionRef}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n searchInputOnKeyDown={handleKeyDown}\n containerHeight={HEADER_HEIGHT + listHeight}\n {...otherProps}\n >\n <FacetsList\n focusIndex={focusIndex}\n selectedFacets={selectedFacets}\n onListItemClick={onListItemClick}\n metadata={metadata}\n containerWidth={containerWidth}\n items={items}\n height={listHeight}\n onInnerContainerResize={handleResizeList}\n />\n {items.length === 0 && (\n <div className={styles.noResultsCaptionContainer}>\n <Typography variant=\"caption\" display=\"block\" gutterBottom>\n {i18n.text('No results found')}\n </Typography>\n </div>\n )}\n </SelectionPopup>\n );\n};\n\nMoreFacetsPopup.propTypes = {\n metadata: MetadataType,\n open: PropTypes.bool,\n selectedFacets: PropTypes.array,\n data: PropTypes.array,\n onListItemClick: PropTypes.func,\n lastFacetClicked: PropTypes.shape({\n facetConfig: PropTypes.object,\n groupId: PropTypes.string\n }),\n width: PropTypes.number,\n height: PropTypes.number\n};\n\nexport default MoreFacetsPopup;\n","import React, {Fragment, PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport memoizeOne from 'memoize-one';\nimport withStyles from '@mui/styles/withStyles';\nimport {always, complement, equals, isEmpty, pipe, prop, uniq, when} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {getAllowedEntityTypes, getShowMoreFacetsPopup} from '../../selectors/ui';\nimport {showMoreFacetsPopup} from '../../actions/uiActions';\nimport MoreFacetsPopup, {DEFAULT_POPUP_HEIGHT} from '../MoreFacetsPopup/MoreFacetsPopup';\nimport {collectFacetsList, isComplexFacet} from '../../services/search/collectFacets';\nimport {getChildrenAttributes} from '../../services/search/collectAttributes';\nimport {getFacetsConfigs, getRecommendedFacets, getSelectedEntityTypes} from '../../selectors/facet';\nimport {clearHighlightAddedFacets, handleFacetsConfigsChanges, highlightAddedFacets} from '../../actions/facets';\nimport {SearchInput} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {DataTenantType, MetadataType, isEntityTypeUri} from '@reltio/mdm-sdk';\nimport {adjustVerticalPopupLayout} from './helpers';\nimport {getDataTenantObject} from '../../selectors/search';\nimport {sanitizeFacetsListForDataTenant} from '../../services/search/dataTenants';\n\nconst configsToValues = (configs) => configs.map((config) => ({fieldName: config.fieldName, uri: config.uri}));\nconst styles = () => ({\n inputContainer: {\n margin: '4px 16px 16px',\n flexShrink: '0'\n }\n});\n\nexport class MoreFacetsSearchInput extends PureComponent {\n state = {\n filterText: '',\n lastFacetClicked: {},\n addedFacets: []\n };\n\n constructor(props) {\n super(props);\n this.searchInputRootRef = React.createRef();\n }\n\n showSearchInput = () => this.searchInputRootRef.current.scrollIntoView(true);\n\n openPopup = () => this.props.dispatch(showMoreFacetsPopup(true));\n closePopup = () => {\n this.props.dispatch(showMoreFacetsPopup(false));\n this.props.dispatch(highlightAddedFacets(this.state.addedFacets));\n this.setState({addedFacets: []});\n setTimeout(() => {\n this.props.dispatch(clearHighlightAddedFacets());\n }, 3000);\n };\n\n setFilterText = (filterText) => this.setState({filterText, lastFacetClicked: {}});\n clearFilterText = () => this.setFilterText('');\n\n setLastFacetClicked = (lastFacetClicked) => this.setState({lastFacetClicked});\n resetLastFacetClicked = () => this.setLastFacetClicked({});\n\n filterItem = (item) => {\n const {filterText = ''} = this.state;\n return item.title.toLowerCase().includes(filterText.toLowerCase());\n };\n\n filterItemsTree = (item) => this.filterItem(item) || (item.children || []).some(this.filterItemsTree);\n\n getFilteredFacets = (facets) =>\n (facets || [])\n .map((facet) => ({\n ...facet,\n hide: !this.filterItemsTree(facet),\n filterText: this.state.filterText\n }))\n .map((facet) => {\n const children = this.getFilteredFacets(facet.children);\n return isEmpty(children)\n ? facet\n : {\n ...facet,\n children: children\n };\n });\n\n filterItemsInGroups = (groups) =>\n groups.map((group) => ({\n ...group,\n facets: this.getFilteredFacets(group.facets)\n }));\n rejectNotAllowedEntityTypes = (allowedEntityTypes) => (facetsList) => {\n return facetsList.filter(({id}) => !isEntityTypeUri(id) || allowedEntityTypes.includes(id));\n };\n toggleSelectedFacet = (facetConfig, checked) => {\n const {facetsConfigs, selectedEntityTypes, dispatch} = this.props;\n\n const nestedChildrenFacet = getChildrenAttributes(facetConfig);\n const newFacetsConfigs = checked\n ? facetsConfigs.concat(facetConfig).concat(nestedChildrenFacet)\n : facetsConfigs\n .filter((facet) => facet.fieldName !== facetConfig.fieldName)\n .filter((facet) => !nestedChildrenFacet.find((child) => child.fieldName === facet.fieldName));\n\n const newSelectedEntityTypes = uniq(\n newFacetsConfigs\n .filter((config) => config.entityTypeUri)\n .map((config) => config.entityTypeUri)\n .concat(selectedEntityTypes)\n );\n\n const filteredFacetsConfig = newFacetsConfigs.filter(complement(isComplexFacet));\n const facetsToAdd = filteredFacetsConfig.filter(\n (selectedConfig) => !facetsConfigs.find((config) => config.fieldName === selectedConfig.fieldName)\n );\n const fieldNamesToDelete = facetsConfigs\n .filter(\n (config) =>\n !filteredFacetsConfig.find((selectedConfig) => config.fieldName === selectedConfig.fieldName)\n )\n .map((facet) => facet.fieldName);\n\n if (facetsToAdd.length || fieldNamesToDelete.length) {\n this.setAddedFacets(facetsToAdd.map(prop('fieldName')), fieldNamesToDelete);\n dispatch(\n handleFacetsConfigsChanges({\n facetsToAdd,\n fieldNamesToDelete,\n changedEntityTypes: equals(newSelectedEntityTypes, selectedEntityTypes)\n ? null\n : newSelectedEntityTypes\n })\n );\n }\n };\n\n setAddedFacets = (fieldNamesToAdd, fieldNamesToDelete) => {\n const addedFacets = this.state.addedFacets\n .concat(fieldNamesToAdd)\n .filter((fieldName) => !fieldNamesToDelete.includes(fieldName));\n this.setState({addedFacets});\n };\n\n handleItemClick = (facetConfig, checked, groupId) => {\n this.setLastFacetClicked({facetConfig, groupId});\n this.toggleSelectedFacet(facetConfig, checked);\n };\n\n handlePopupClose = () => {\n this.closePopup();\n this.clearFilterText();\n this.resetLastFacetClicked();\n };\n\n memoizedCollectFacetsList = memoizeOne(collectFacetsList);\n\n handleInputFocus = () => {\n this.showSearchInput();\n this.openPopup();\n };\n\n get inputWidth() {\n return this.searchInputRootRef.current ? this.searchInputRootRef.current.getBoundingClientRect().width : 0;\n }\n\n render() {\n const {filterText, lastFacetClicked} = this.state;\n const {\n open,\n recommendedFacets,\n classes,\n metadata,\n selectedEntityTypes,\n facetsConfigs,\n dataTenantObject,\n allowedEntityTypes,\n dataTenants\n } = this.props;\n const selectedFieldNames = configsToValues(facetsConfigs);\n const list = this.memoizedCollectFacetsList(metadata, selectedEntityTypes, recommendedFacets, dataTenants);\n const filteredList = pipe(\n when(always(filterText), this.filterItemsInGroups),\n when(always(allowedEntityTypes), this.rejectNotAllowedEntityTypes(allowedEntityTypes)),\n sanitizeFacetsListForDataTenant(dataTenantObject)\n )(list);\n\n const {verticalOrigin, popupHeight} = adjustVerticalPopupLayout(\n this.searchInputRootRef.current,\n DEFAULT_POPUP_HEIGHT\n );\n const popupOrigin = {\n vertical: verticalOrigin,\n horizontal: 'right'\n };\n return (\n <Fragment>\n <SearchInput\n classes={{root: classes.inputContainer}}\n onSearch={this.setFilterText}\n onFocus={this.handleInputFocus}\n rootRef={this.searchInputRootRef}\n value={filterText}\n placeholder={i18n.text('Search & add attributes')}\n height={40}\n data-reltio-id=\"reltio-search-more-facets-search-input\"\n />\n\n <MoreFacetsPopup\n open={open}\n anchorEl={this.searchInputRootRef.current}\n metadata={metadata}\n selectedFacets={selectedFieldNames}\n data={filteredList}\n onClose={this.handlePopupClose}\n onListItemClick={this.handleItemClick}\n lastFacetClicked={lastFacetClicked}\n width={this.inputWidth}\n height={popupHeight}\n onSearch={this.setFilterText}\n headerPlacement={verticalOrigin === 'bottom' ? 'bottom' : 'top'}\n anchorOrigin={popupOrigin}\n transformOrigin={popupOrigin}\n disableRestoreFocus={true}\n />\n </Fragment>\n );\n }\n}\n\nMoreFacetsSearchInput.propTypes = {\n metadata: MetadataType,\n open: PropTypes.bool,\n facetsConfigs: PropTypes.array,\n recommendedFacets: PropTypes.array,\n selectedEntityTypes: PropTypes.array,\n dispatch: PropTypes.func,\n classes: PropTypes.object,\n dataTenantObject: DataTenantType,\n allowedEntityTypes: PropTypes.array,\n dataTenants: PropTypes.arrayOf(DataTenantType)\n};\n\nMoreFacetsSearchInput.defaultProps = {\n selectedEntityTypes: [],\n facetsConfigs: []\n};\n\nexport default connect((state) => {\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n open: getShowMoreFacetsPopup(state),\n facetsConfigs: getFacetsConfigs(state),\n recommendedFacets: getRecommendedFacets(state),\n selectedEntityTypes: getSelectedEntityTypes(state),\n dataTenantObject: getDataTenantObject(state),\n allowedEntityTypes: getAllowedEntityTypes(state),\n dataTenants: mdmModule.selectors.getDataTenants(state)\n };\n})(withStyles(styles)(MoreFacetsSearchInput));\n","const adjustVerticalPopupLayout = (anchorEl, popupHeight, marginThreshold = 16) => {\n let verticalOrigin = 'top';\n\n if (anchorEl) {\n const anchorRect = anchorEl.getBoundingClientRect();\n const highestPoint = marginThreshold;\n const lowestPoint = window.innerHeight - marginThreshold;\n\n if (anchorRect.top + popupHeight > lowestPoint) {\n if (anchorRect.bottom - popupHeight < highestPoint) {\n const maxHeightToBottom = anchorRect.bottom - highestPoint;\n const maxHeightToTop = lowestPoint - anchorRect.top;\n\n popupHeight = Math.max(maxHeightToBottom, maxHeightToTop);\n verticalOrigin = maxHeightToBottom > maxHeightToTop ? 'bottom' : 'top';\n } else {\n verticalOrigin = 'bottom';\n }\n }\n }\n\n return {verticalOrigin, popupHeight};\n};\n\nexport {adjustVerticalPopupLayout};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n facetGroupContainer: {\n display: 'flex',\n flexShrink: 0,\n flexDirection: 'column',\n '& + hr': {\n marginTop: 8\n },\n '& + &': {\n marginTop: '8px'\n }\n }\n});\n","import React, {useState} from 'react';\nimport Divider from '@mui/material/Divider';\nimport FacetGroupTitle from '../FacetGroupTitle/FacetGroupTitle';\nimport MoreFacetsSearchInput from '../../MoreFacetsSearchInput/MoreFacetsSearchInput';\nimport {useStyles} from './styles';\n\ntype Props = {\n hasSearchAttributesField?: boolean;\n children?: React.ReactNode;\n};\n\nconst FacetGroup = ({hasSearchAttributesField, children, ...otherProps}: Props) => {\n const classes = useStyles();\n const [isOpen, setIsCollapsed] = useState(true);\n\n const handleCollapse = (_) => {\n setIsCollapsed(!isOpen);\n };\n\n return (\n <div className={classes.facetGroupContainer}>\n <FacetGroupTitle isOpen={isOpen} onCollapse={handleCollapse} {...otherProps} />\n {hasSearchAttributesField && (\n <>\n <MoreFacetsSearchInput />\n <Divider />\n </>\n )}\n {isOpen && children}\n </div>\n );\n};\n\nexport default FacetGroup;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexShrink: 0,\n flexDirection: 'row',\n overflow: 'hidden',\n alignItems: 'center',\n marginBottom: '4px'\n },\n labelRoot: {\n fontSize: '13px',\n paddingLeft: '3px',\n cursor: 'pointer',\n letterSpacing: 'normal',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginRight: '16px'\n },\n checkboxRoot: {\n padding: '0',\n margin: '0 18px'\n },\n checkboxRootQueryGroups: {\n marginRight: 9\n }\n});\n","import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport Checkbox from '@mui/material/Checkbox';\nimport Typography from '@mui/material/Typography';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\nimport mdmModule, {search as mdmModuleSearch} from '@reltio/mdm-module';\n\nexport const SearchByOvControl = ({variant = 'facetsPanel', searchOptions = {}, dispatch}) => {\n const {root, labelRoot, checkboxRoot, checkboxRootQueryGroups} = useStyles();\n const checked = searchOptions.searchByOv;\n const changeSearchConfig = useCallback(() => {\n dispatch(\n mdmModuleSearch.actions.updateSearchOptions({\n searchByOv: !checked,\n ovOnly: !checked\n })\n );\n }, [checked, dispatch]);\n\n const label = i18n.text('Search by OV only');\n\n return (\n <div className={root} onClick={changeSearchConfig}>\n <Checkbox\n classes={{root: classnames(checkboxRoot, {[checkboxRootQueryGroups]: variant === 'queryGroups'})}}\n checked={checked}\n color=\"primary\"\n />\n <ExpandedValueTooltip value={label}>\n <Typography variant=\"body2\" classes={{root: labelRoot}}>\n {label}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n );\n};\n\nSearchByOvControl.propTypes = {\n searchOptions: PropTypes.shape({\n searchByOv: PropTypes.bool,\n ovOnly: PropTypes.bool\n }),\n variant: PropTypes.oneOf(['facetsPanel', 'queryGroups']),\n dispatch: PropTypes.func\n};\n\nexport default connect((store) => {\n return {\n searchOptions: mdmModule.selectors.getSearchOptions(store)\n };\n})(SearchByOvControl);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenantFacet: {\n flexShrink: 0\n },\n radioGroup: {\n padding: '0 15px 10px 20px',\n overflow: 'hidden'\n },\n radioLabelRoot: {\n overflow: 'hidden'\n },\n radioLabel: {\n paddingLeft: '12px',\n fontSize: '13px',\n lineHeight: '16px',\n overflowWrap: 'break-word',\n wordWrap: 'break-word', // for IE\n overflow: 'hidden'\n },\n radioButton: {\n padding: '0 9px'\n },\n tenantContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n marginBottom: '5px'\n },\n total: {\n color: 'rgba(0,0,0,0.6)',\n fontSize: '13px',\n lineHeight: '16px'\n }\n}));\n","import {rawRequest} from '@reltio/mdm-sdk';\n\nexport const request = (url, options) => rawRequest(url, {...options, application: 'explorer'});\n\nexport const jsonRequest = (url, options) => request(url, options);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport useTenantTotal from './useTenantTotal';\nimport {formatNumberAsMetric} from '../../../../utils/general';\n\nconst TenantTotal = ({tenantObject, isDataTenant, className}) => {\n const total = useTenantTotal({tenantObject, isDataTenant});\n return <div className={className}>{formatNumberAsMetric(total)}</div>;\n};\n\nTenantTotal.propTypes = {\n className: PropTypes.string,\n tenantObject: PropTypes.object.isRequired,\n isDataTenant: PropTypes.bool\n};\n\nexport default TenantTotal;\n","import {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {prop} from 'ramda';\nimport {useSafePromise} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {buildTotalParams, callSearchRequestForTenant} from '../../../../services/search/searchEngine';\nimport {getAllSearchParamsForDataTenant} from '../../../../selectors/search';\nimport {jsonRequest} from '../../../../utils/network';\nimport {ENTITIES_TOTAL_URL} from '../../../../constants/constants';\n\nconst useTenantTotal = ({tenantObject, isDataTenant}) => {\n const safePromise = useSafePromise();\n const [total, setTotal] = useState(0);\n const searchOptions = useSelector(mdmModule.selectors.getGlobalSearchRequestOptions);\n const dataTenantObject = isDataTenant ? tenantObject : null;\n const searchParams = useSelector((state) => getAllSearchParamsForDataTenant(state, [], dataTenantObject));\n const body = JSON.stringify(buildTotalParams(searchParams, [], searchOptions));\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n\n useEffect(() => {\n safePromise(\n callSearchRequestForTenant({\n searchRequest: jsonRequest,\n url: ENTITIES_TOTAL_URL,\n options: {\n method: 'POST',\n body\n },\n customerTenant,\n dataTenant: prop('id', dataTenantObject),\n dtssPath\n })\n )\n .then(({total}) => {\n setTotal(total);\n })\n .catch((e) => {\n console.warn(e);\n });\n }, [dataTenantObject, customerTenant, dtssPath, body]); // eslint-disable-line\n\n return total;\n};\n\nexport default useTenantTotal;\n","import {Search} from '../constants/actionTypes';\n\nexport const updateEntities = (searchResults, entityTypeUri) => {\n return {\n type: Search.UPDATE_ENTITIES,\n payload: {searchResults, entityTypeUri}\n };\n};\n\nexport const updateSearchUrl = (url) => ({\n type: Search.UPDATE_URL,\n payload: url\n});\n\nexport const clearSearchResults = (displayedEntityTab) => {\n return {\n type: Search.CLEAR_RESULTS,\n payload: displayedEntityTab\n };\n};\n\nexport const refreshDisplayedEntities = () => {\n return {\n type: Search.REFRESH_DISPLAYED_ENTITIES\n };\n};\n\nexport const refreshSearch = ({debounceTime} = {}) => {\n return {\n type: Search.REFRESH,\n payload: {debounceTime}\n };\n};\n\nexport const clearAllSearches = ({silent}) => {\n return {\n type: Search.CLEAR_ALL,\n payload: {silent}\n };\n};\n\nexport const showMoreResultsForEntityType = ({entityTypeUri, keywordValue}) => {\n return {\n type: Search.SHOW_MORE_RESULTS_FOR_ENTITY_TYPE,\n payload: {\n entityTypeUri,\n keywordValue\n }\n };\n};\n\nexport const updateTotal = (total) => {\n return {\n type: Search.UPDATE_TOTAL,\n payload: total\n };\n};\n\nexport const changePage = (pageNumber, debounceTime = 0, entityTypeUri) => {\n return {\n type: Search.CHANGE_PAGE,\n payload: {\n pageNumber,\n debounceTime,\n entityTypeUri\n }\n };\n};\n\nexport const resetPage = (entityTypeUri) => {\n return {\n type: Search.RESET_PAGE,\n payload: {entityTypeUri}\n };\n};\n\nexport const changeRowsPerPage = (number, entityTypeUri) => {\n return {\n type: Search.CHANGE_ROWS_PER_PAGE,\n payload: {number, entityTypeUri}\n };\n};\n\nexport const changeSort = ({field, order, entityTypeUri}) => {\n return {\n type: Search.CHANGE_SORT,\n payload: {\n field,\n order,\n entityTypeUri\n }\n };\n};\n\nexport const changeEntitiesLoading = (bool) => {\n return {\n type: Search.CHANGE_LOADING,\n payload: bool\n };\n};\n\nexport const changeMapValue = (value, searchType = null, silent = false) => {\n return {\n type: Search.MAP_CHANGE_VALUE,\n payload: {\n value,\n searchType,\n silent\n }\n };\n};\n\nexport const searchStateUpdated = (debounceTime = 0) => {\n return {\n type: Search.STATE_UPDATED,\n payload: {debounceTime}\n };\n};\n\nexport const exportResults = (consoleExportApp) => ({\n type: Search.EXPORT_RESULTS,\n payload: {\n consoleExportApp\n }\n});\n\nexport const openDataLoader = () => ({\n type: Search.OPEN_DATA_LOADER\n});\n\nexport const changeCurrentTenant = ({tenantObject, isDataTenant}) => ({\n type: Search.CHANGE_CURRENT_TENANT,\n payload: {tenantObject, isDataTenant}\n});\n","import React from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {DataTenantType} from '@reltio/mdm-sdk';\nimport FacetGroupTitle from '../FacetGroupTitle/FacetGroupTitle';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport {map, pipe, prepend, propEq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {useStyles} from './styles';\nimport TenantTotal from './TenantTotal/TenantTotal';\nimport {changeCurrentTenant} from '../../../actions/searchActions';\nimport {getValue} from '@reltio/components';\nimport {getCurrentTenant} from '../../../selectors/search';\nimport {getShowAdvancedSearch} from '../../../selectors/ui';\n\nexport const TenantFacet = ({\n customerTenantObject,\n currentTenant,\n dataTenants,\n changeCurrentTenant,\n openAdvancedSearch\n}) => {\n const styles = useStyles();\n const tenantOptions = pipe(\n map(({id, label}) => ({value: id, label})),\n prepend({value: customerTenantObject.id, label: customerTenantObject.name})\n )(dataTenants);\n const getTenantData = (tenant) => {\n const isDataTenant = tenant !== customerTenantObject.id;\n const tenantObject = isDataTenant ? dataTenants.find(propEq('id', tenant)) : customerTenantObject;\n return {isDataTenant, tenantObject};\n };\n\n const selectedTenant = currentTenant || customerTenantObject.id;\n\n return (\n <div className={styles.tenantFacet}>\n <FacetGroupTitle title={i18n.text('Tenants')} hasCollapseButton={false} />\n <RadioGroup\n className={styles.radioGroup}\n value={selectedTenant}\n onChange={pipe(getValue, getTenantData, changeCurrentTenant)}\n >\n {tenantOptions.map(({value, label}) => (\n <div className={styles.tenantContainer} key={value}>\n <FormControlLabel\n classes={{\n root: styles.radioLabelRoot,\n label: styles.radioLabel\n }}\n value={value}\n label={label || value}\n control={<Radio className={styles.radioButton} color={'primary'} />}\n />\n {!openAdvancedSearch && <TenantTotal className={styles.total} {...getTenantData(value)} />}\n </div>\n ))}\n </RadioGroup>\n </div>\n );\n};\n\nTenantFacet.propTypes = {\n customerTenantObject: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string\n }),\n currentTenant: PropTypes.string,\n dataTenants: PropTypes.arrayOf(DataTenantType),\n changeCurrentTenant: PropTypes.func,\n openAdvancedSearch: PropTypes.bool\n};\n\nconst mapStateToProps = (state) => {\n return {\n dataTenants: mdmModule.selectors.getDataTenants(state),\n customerTenantObject: mdmModule.selectors.getTenantObject(state),\n currentTenant: getCurrentTenant(state),\n openAdvancedSearch: getShowAdvancedSearch(state)\n };\n};\n\nconst mapDispatchToProps = {\n changeCurrentTenant\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TenantFacet);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n height: '100%'\n }\n});\n","import React, {useCallback, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {head, memoizeWith, tail} from 'ramda';\nimport FacetsFactory from '../Facets/FacetsFactory';\nimport {getFacetsConfigs} from '../../selectors/facet';\nimport {splitFacetConfigsByGroups} from '../../services/search/facetsGroup';\nimport {envSpecificKey} from '../../utils/general';\nimport FacetGroup from '../Facets/FacetGroup/FacetGroup';\nimport mdmModule from '@reltio/mdm-module';\nimport {MetadataType} from '@reltio/mdm-sdk';\nimport {getUiConfigShowSearchByOv} from '../../selectors/ui';\nimport SearchByOvControl from '../SearchByOvControl/SearchByOvControl';\nimport {PopupBoundariesContext} from '@reltio/components';\nimport Divider from '@mui/material/Divider';\nimport TenantFacet from '../Facets/TenantFacet/TenantFacet';\n\nimport {useStyles} from './styles';\n\nconst memoizedBuild = memoizeWith((config) => envSpecificKey(`${config.fieldName}`), FacetsFactory.build);\n\nconst buildFacets = (configs) =>\n configs\n .map((config) => ({\n Facet: memoizedBuild(config),\n id: config.fieldName\n }))\n .filter(({Facet}) => Facet)\n .map(({Facet, id}) => <Facet key={id} />);\n\nconst FacetGroupRenderer = ({group, configs}) => (\n <FacetGroup {...group} key={group.title}>\n {buildFacets(configs)}\n </FacetGroup>\n);\n\nFacetGroupRenderer.propTypes = {\n group: PropTypes.object,\n configs: PropTypes.array\n};\n\nexport const FacetsPanel = ({facetsConfigs = [], metadata, onScroll, uiConfigShowSearchByOv, showTenantFacet}) => {\n const {root} = useStyles();\n const containerRef = useRef(null);\n const onContainerScroll = useCallback(\n (e) => {\n onScroll(containerRef.current.scrollTop, e);\n },\n [onScroll]\n );\n const configsByGroups = splitFacetConfigsByGroups(metadata, facetsConfigs);\n\n const firstElement = head(configsByGroups);\n const restElements = tail(configsByGroups);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n\n return (\n <div ref={containerRef} className={root} onScroll={onContainerScroll}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n {uiConfigShowSearchByOv && <SearchByOvControl />}\n {showTenantFacet && (\n <>\n <TenantFacet />\n <Divider />\n </>\n )}\n {firstElement && FacetGroupRenderer(firstElement)}\n <Divider />\n {restElements.map((elementProps, i) => (\n <FacetGroupRenderer {...elementProps} key={i} />\n ))}\n </PopupBoundariesContext.Provider>\n </div>\n );\n};\n\nFacetsPanel.propTypes = {\n metadata: MetadataType,\n facetsConfigs: PropTypes.array,\n onScroll: PropTypes.func,\n dispatch: PropTypes.func,\n uiConfigShowSearchByOv: PropTypes.bool,\n showTenantFacet: PropTypes.bool\n};\n\nexport default connect((state) => {\n const dataTenants = mdmModule.selectors.getDataTenants(state);\n return {\n metadata: mdmModule.selectors.getMetadata(state),\n facetsConfigs: getFacetsConfigs(state),\n uiConfigShowSearchByOv: mdmModule.selectors.getShowSearchByOv(state) ?? getUiConfigShowSearchByOv(state),\n showTenantFacet: dataTenants && dataTenants.length > 0,\n tenant: mdmModule.selectors.getTenant(state)\n };\n})(FacetsPanel);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './styles.less';\nimport classnames from 'classnames';\n\nconst MainContent = ({children, className}) => (\n <div className={classnames(styles.mainContent, className)}>{children}</div>\n);\n\nMainContent.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default MainContent;\n","// extracted by mini-css-extract-plugin\nexport default {\"mainContent\":\"MainContent-styles-mainContent--Ha5me\"};","export default {\n SET_GROUP_ENTITY_TYPES: 'ADVANCED_SEARCH_SET_GROUP_ENTITY_TYPES',\n VERIFY_GROUP_ENTITY_TYPES: 'ADVANCED_SEARCH_VERIFY_GROUP_ENTITY_TYPES',\n SET_GROUP_OPERATOR: 'ADVANCED_SEARCH_SET_GROUP_OPERATOR',\n DELETE_GROUP: 'ADVANCED_SEARCH_DELETE_GROUP',\n ADD_GROUP: 'ADVANCED_SEARCH_ADD_GROUP',\n DUPLICATE_GROUP: 'ADVANCED_SEARCH_DUPLICATE_GROUP',\n ADD_ATTRIBUTE_AFTER: 'ADVANCED_SEARCH_ADD_ATTRIBUTE_AFTER',\n CHANGE_ATTRIBUTE_DATA: 'ADVANCED_SEARCH_CHANGE_ATTRIBUTE_DATA',\n TOGGLE_ATTRIBUTE_SELECT: 'ADVANCED_SEARCH_TOGGLE_ATTRIBUTE_SELECT',\n SET_ATTRIBUTE_OPERATOR: 'ADVANCED_SEARCH_SET_ATTRIBUTE_OPERATOR',\n DELETE_ATTRIBUTE: 'ADVANCED_SEARCH_DELETE_ATTRIBUTE',\n DELETE_ATTRIBUTE_AND_VERIFY_GROUP_ENTITY_TYPES: 'ADVANCED_DELETE_ATTRIBUTE_AND_VERIFY_GROUP_ENTITY_TYPES',\n DUPLICATE_ATTRIBUTE: 'ADVANCED_SEARCH_DUPLICATE_ATTRIBUTE',\n SET_FILTER: 'ADVANCED_SEARCH_SET_FILTER',\n SET_VALUES: 'ADVANCED_SEARCH_SET_VALUES',\n ATTRIBUTE_SET_VALUES: 'ADVANCED_SEARCH_ATTRIBUTE_SET_VALUES',\n ATTRIBUTE_FILTER_VALUES: 'ADVANCED_SEARCH_ATTRIBUTE_FILTER_VALUES',\n ATTRIBUTE_SET_FILTERED_VALUES: 'ADVANCED_SEARCH_ATTRIBUTE_SET_FILTERED_VALUES',\n ATTRIBUTE_UPDATE_VALUES: 'ADVANCED_SEARCH_ATTRIBUTE_UPDATE_VALUES',\n UPDATE: 'ADVANCED_SEARCH_UPDATE',\n CONVERT_FROM_FACETS: 'ADVANCED_SEARCH_CONVERT_FROM_FACETS'\n};\n","import {path as createLPath} from '../utils/lenses';\nimport {assoc, assocPath, dissoc, dissocPath, path, remove} from 'ramda';\nimport {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {nanoid} from 'nanoid';\n\nimport {defaultGroupOperator} from '../constants/constants';\nimport {combineReducers} from 'redux';\nimport {Search, AdvancedSearch} from '../constants/actionTypes';\nimport {\n getEntityTypesFromAttributes,\n verifySelectedEntityTypesInGroup\n} from '../services/search/advancedSearch/attributeGroups';\nimport {\n PROP_NAME_OPERATOR,\n addAttributeAfter,\n changeAttributeData,\n setAttributeOperator,\n deleteAttribute,\n duplicateAttribute,\n setFilter,\n setValues,\n createGetGroupLens,\n createGetAttributesLens,\n createGetAttributeIndex,\n createGetAttributeLens,\n createSetAttributeProp,\n createGetAttributeProp,\n getAttributeObject\n} from './helpers/queryBuilderHelpers';\n\nconst initialState = {\n searchParams: {\n groups: []\n },\n attributesData: {}\n};\n\nconst PROP_NAME_ENTITY_TYPES = 'entityTypes';\nconst PROP_NAME_ATTRIBUTES = 'attributes';\nconst PROP_NAME_AUTOADDED_ENTITYTYPES = 'autoAddedEntityTypes';\n\nconst groupsLensPath = ['groups'];\nconst searchGroupsL = createLPath(...groupsLensPath);\n\nconst getGroupLens = createGetGroupLens(groupsLensPath);\nconst getAttributesLens = createGetAttributesLens(getGroupLens, PROP_NAME_ATTRIBUTES);\nconst getAttributeIndex = createGetAttributeIndex(getAttributesLens);\nconst getAttributeLens = createGetAttributeLens(getAttributesLens);\nconst setAttributeProp = createSetAttributeProp(getAttributeLens);\nconst getAttributeProp = createGetAttributeProp(getAttributeLens);\n\nexport const getGroupObject = (attributes, entityTypes = [], id = nanoid()) => ({\n [PROP_NAME_ATTRIBUTES]: attributes.map((attribute) => getAttributeObject(attribute)),\n [PROP_NAME_OPERATOR]: defaultGroupOperator.value,\n [PROP_NAME_ENTITY_TYPES]: entityTypes,\n id\n});\n\nconst attributesDataReducer = (state = initialState.attributesData, action) => {\n switch (action.type) {\n case AdvancedSearch.ATTRIBUTE_SET_VALUES: {\n const {groupId, attributeId, values} = action.payload;\n return assocPath([groupId, attributeId, 'default'], values, state);\n }\n case AdvancedSearch.ATTRIBUTE_SET_FILTERED_VALUES: {\n const {groupId, attributeId, values} = action.payload;\n return assocPath([groupId, attributeId, 'filtered'], values, state);\n }\n case AdvancedSearch.DELETE_GROUP: {\n const {groupId} = action.payload;\n return dissoc(groupId, state);\n }\n case AdvancedSearch.DELETE_ATTRIBUTE: {\n const {groupId, attributeId} = action.payload;\n return dissocPath([groupId, attributeId], state);\n }\n case AdvancedSearch.DUPLICATE_GROUP: {\n const {groupId, id} = action.payload;\n const groupData = state[groupId];\n return groupData ? assoc(id, groupData, state) : state;\n }\n case AdvancedSearch.DUPLICATE_ATTRIBUTE: {\n const {groupId, attributeId, id} = action.payload;\n const attributeData = path([groupId, attributeId], state);\n return attributeData ? assocPath([groupId, id], attributeData, state) : state;\n }\n case Search.CLEAR_ALL:\n case mdmModuleSearch.constants.UPDATE_STATE: {\n return initialState.attributesData;\n }\n default: {\n return state;\n }\n }\n};\n\nconst searchParamsReducer = (state = initialState.searchParams, action) => {\n switch (action.type) {\n case AdvancedSearch.ADD_GROUP: {\n const {group} = action.payload;\n const groups = [...searchGroupsL.get(state)];\n groups.push(group);\n return searchGroupsL.set(state, groups);\n }\n case AdvancedSearch.SET_GROUP_OPERATOR: {\n const {groupId, operator} = action.payload;\n const groupL = getGroupLens(state, groupId);\n if (groupL) {\n const group = {...groupL.get(state)};\n group[PROP_NAME_OPERATOR] = operator;\n return groupL.set(state, group);\n }\n return state;\n }\n case AdvancedSearch.SET_GROUP_ENTITY_TYPES: {\n const {groupId, entityTypes} = action.payload;\n const groupL = getGroupLens(state, groupId);\n if (groupL) {\n const group = {...groupL.get(state)};\n group[PROP_NAME_ENTITY_TYPES] = entityTypes;\n group[PROP_NAME_AUTOADDED_ENTITYTYPES] = [];\n group[PROP_NAME_ATTRIBUTES] = [];\n return groupL.set(state, group);\n }\n return state;\n }\n case AdvancedSearch.VERIFY_GROUP_ENTITY_TYPES: {\n const {groupId} = action.payload;\n const groupL = getGroupLens(state, groupId);\n if (groupL) {\n const group = groupL.get(state);\n\n const {entityTypes, autoAddedEntityTypes} = verifySelectedEntityTypesInGroup(\n getEntityTypesFromAttributes(group[PROP_NAME_ATTRIBUTES] || []),\n group[PROP_NAME_ENTITY_TYPES],\n group[PROP_NAME_AUTOADDED_ENTITYTYPES]\n );\n\n return groupL.set(state, {\n ...group,\n [PROP_NAME_ENTITY_TYPES]: entityTypes,\n [PROP_NAME_AUTOADDED_ENTITYTYPES]: autoAddedEntityTypes\n });\n }\n return state;\n }\n case AdvancedSearch.DELETE_GROUP: {\n const {groupId} = action.payload;\n const groups = [...searchGroupsL.get(state)];\n const groupIndex = groups.findIndex((group) => group.id === groupId);\n\n if (groupIndex > -1) {\n const editedGroups = remove(groupIndex, 1, groups);\n const prevGroup = editedGroups[groupIndex - 1];\n const removedGroup = groups[groupIndex];\n\n if (prevGroup) {\n editedGroups[groupIndex - 1] = {\n ...prevGroup,\n operator: removedGroup.operator\n };\n }\n\n return searchGroupsL.set(state, editedGroups);\n }\n\n return state;\n }\n case AdvancedSearch.DUPLICATE_GROUP: {\n const {groupId, id} = action.payload;\n const groups = [...searchGroupsL.get(state)];\n const groupIndex = groups.findIndex((group) => group.id === groupId);\n if (groupIndex > -1) {\n groups.push({...groups[groupIndex], id});\n return searchGroupsL.set(state, groups);\n }\n return state;\n }\n case AdvancedSearch.ADD_ATTRIBUTE_AFTER: {\n const {groupId, attributeId, attribute} = action.payload;\n return addAttributeAfter({\n state,\n groupId,\n attributeId,\n attribute,\n getAttributesLens,\n getAttributeIndex\n });\n }\n case AdvancedSearch.CHANGE_ATTRIBUTE_DATA: {\n const {groupId, attributeId, attributeData} = action.payload;\n return changeAttributeData({\n state,\n groupId,\n attributeId,\n attributeData,\n setAttributeProp,\n getAttributeLens\n });\n }\n case AdvancedSearch.SET_ATTRIBUTE_OPERATOR: {\n const {groupId, attributeId, operator} = action.payload;\n return setAttributeOperator({state, groupId, attributeId, operator, setAttributeProp});\n }\n case AdvancedSearch.DELETE_ATTRIBUTE: {\n const {groupId, attributeId} = action.payload;\n return deleteAttribute({state, groupId, attributeId, getAttributesLens});\n }\n case AdvancedSearch.DUPLICATE_ATTRIBUTE: {\n const {groupId, attributeId, id} = action.payload;\n return duplicateAttribute({state, groupId, attributeId, id, getAttributesLens});\n }\n case AdvancedSearch.SET_FILTER: {\n const {groupId, attributeId, filter} = action.payload;\n return setFilter({state, groupId, attributeId, filter, getAttributeProp, setAttributeProp});\n }\n case AdvancedSearch.SET_VALUES: {\n const {groupId, attributeId, values} = action.payload;\n return setValues({state, groupId, attributeId, values, setAttributeProp});\n }\n case Search.CLEAR_ALL: {\n return initialState.searchParams;\n }\n case mdmModuleSearch.constants.UPDATE_STATE: {\n const {advanced = []} = action.payload;\n return searchGroupsL.set(initialState.searchParams, advanced);\n }\n default: {\n return state;\n }\n }\n};\n\nconst advancedSearchReducer = combineReducers({\n searchParams: searchParamsReducer,\n attributesData: attributesDataReducer\n});\n\nexport default advancedSearchReducer;\n","import {nanoid} from 'nanoid';\nimport {getGroupObject} from '../reducers/advancedSearchReducer';\nimport {AdvancedSearch} from '../constants/actionTypes';\nimport {getAttributeData, getAttributeObject, getEmptyAttributeObject} from '../reducers/helpers/queryBuilderHelpers';\n\nexport const setGroupOperator = (groupId, operator) => {\n return {\n type: AdvancedSearch.SET_GROUP_OPERATOR,\n payload: {groupId, operator}\n };\n};\n\nexport const setGroupEntityTypes = (groupId, entityTypes) => {\n return {\n type: AdvancedSearch.SET_GROUP_ENTITY_TYPES,\n payload: {groupId, entityTypes}\n };\n};\n\nexport const verifyGroupEntityTypes = (groupId) => {\n return {\n type: AdvancedSearch.VERIFY_GROUP_ENTITY_TYPES,\n payload: {groupId}\n };\n};\n\nexport const deleteGroup = (groupId) => {\n return {\n type: AdvancedSearch.DELETE_GROUP,\n payload: {groupId}\n };\n};\n\nexport const addGroupWithAttributes = (attributes) => {\n return {\n type: AdvancedSearch.ADD_GROUP,\n payload: {group: getGroupObject(attributes)}\n };\n};\n\nexport const duplicateGroup = (groupId) => {\n return {\n type: AdvancedSearch.DUPLICATE_GROUP,\n payload: {groupId, id: nanoid()}\n };\n};\n\nexport const addEmptyAttributeAfter = (groupId, attributeId) => {\n return {\n type: AdvancedSearch.ADD_ATTRIBUTE_AFTER,\n payload: {groupId, attributeId, attribute: getEmptyAttributeObject()}\n };\n};\n\nexport const addAttributeAfter = (groupId, attributeId, attribute) => {\n return {\n type: AdvancedSearch.ADD_ATTRIBUTE_AFTER,\n payload: {groupId, attributeId, attribute: getAttributeObject(attribute)}\n };\n};\n\nexport const changeAttribute = (groupId, attributeId, attribute) => {\n return {\n type: AdvancedSearch.CHANGE_ATTRIBUTE_DATA,\n payload: {groupId, attributeId, attributeData: getAttributeData(attribute)}\n };\n};\n\nexport const clearAttribute = (groupId, attributeId) => {\n return {\n type: AdvancedSearch.CHANGE_ATTRIBUTE_DATA,\n payload: {groupId, attributeId, attributeData: null}\n };\n};\n\nexport const toggleAttributeSelect = (groupId, attributeId, selectInfo) => {\n return {\n type: AdvancedSearch.TOGGLE_ATTRIBUTE_SELECT,\n payload: {groupId, attributeId, selectInfo}\n };\n};\n\nexport const setAttributeOperator = (groupId, attributeId, operator) => {\n return {\n type: AdvancedSearch.SET_ATTRIBUTE_OPERATOR,\n payload: {groupId, attributeId, operator}\n };\n};\n\nexport const deleteAttribute = (groupId, attributeId) => {\n return {\n type: AdvancedSearch.DELETE_ATTRIBUTE,\n payload: {groupId, attributeId}\n };\n};\n\nexport const deleteAttributeAndVerifyGroupEntityTypes = (groupId, attributeId) => {\n return {\n type: AdvancedSearch.DELETE_ATTRIBUTE_AND_VERIFY_GROUP_ENTITY_TYPES,\n payload: {groupId, attributeId}\n };\n};\n\nexport const duplicateAttribute = (groupId, attributeId) => {\n return {\n type: AdvancedSearch.DUPLICATE_ATTRIBUTE,\n payload: {groupId, attributeId, id: nanoid()}\n };\n};\n\nexport const setFilter = (groupId, attributeId, filter) => {\n return {\n type: AdvancedSearch.SET_FILTER,\n payload: {groupId, attributeId, filter}\n };\n};\n\nexport const setValues = (groupId, attributeId, values) => {\n return {\n type: AdvancedSearch.SET_VALUES,\n payload: {groupId, attributeId, values}\n };\n};\n\nexport const setAttributeValues = (groupId, attributeId, values) => {\n return {\n type: AdvancedSearch.ATTRIBUTE_SET_VALUES,\n payload: {groupId, attributeId, values}\n };\n};\n\nexport const filterAttributeValues = (\n groupId,\n {attribute, value, debounceTime = 0, pageNumber = 1, currentOptions}\n) => {\n return {\n type: AdvancedSearch.ATTRIBUTE_FILTER_VALUES,\n payload: {groupId, attribute, value, debounceTime, pageNumber, currentOptions}\n };\n};\n\nexport const setAttributeFilteredValues = (groupId, attributeId, values) => {\n return {\n type: AdvancedSearch.ATTRIBUTE_SET_FILTERED_VALUES,\n payload: {groupId, attributeId, values}\n };\n};\n\nexport const updateAttributeValues = (groupId, attribute) => {\n return {\n type: AdvancedSearch.ATTRIBUTE_UPDATE_VALUES,\n payload: {groupId, attribute}\n };\n};\n\nexport const updateAdvancedSearch = () => {\n return {\n type: AdvancedSearch.UPDATE\n };\n};\n\nexport const convertFacetsToAdvancedSearch = () => {\n return {\n type: AdvancedSearch.CONVERT_FROM_FACETS\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n backgroundColor: '#fff',\n opacity: 0.37,\n position: 'fixed',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {getLoading} from '../../selectors/ui';\nimport ReltioProgress from 'react-components/dist/ReltioProgress/ReltioProgress';\nimport {useStyles} from './styles';\n\nexport const AppLoadingSpinner = () => {\n const loading = useSelector(getLoading);\n const {container} = useStyles();\n return loading ? (\n <div className={container}>\n <ReltioProgress size={160} />\n </div>\n ) : null;\n};\n","import {NOTIFICATION_TYPES} from '../../constants/constants';\nimport {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n snackbar: {\n backgroundColor: 'rgba(0,0,0,0.87)',\n boxShadow: '0 2px 4px 0 rgba(0,0,0,0.25)',\n padding: '8px 16px',\n minHeight: '48px',\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n anchorSnackBar: {\n zIndex: 11000,\n '@media (min-width: 960px)': {\n bottom: 8\n }\n },\n message: {\n color: '#FFFFFF',\n fontSize: 14,\n fontWeight: 500,\n lineHeight: '16px',\n display: 'flex',\n alignItems: 'center',\n flex: 1\n },\n messageContent: {\n display: 'flex',\n alignItems: 'center',\n whiteSpace: 'pre'\n },\n icon: {\n opacity: 0.9,\n marginRight: '12px'\n },\n [NOTIFICATION_TYPES.error]: {\n backgroundColor: theme.palette.error.dark\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback, useMemo, useRef} from 'react';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport Icon from '@mui/material/Icon';\nimport Button from '@mui/material/Button';\nimport Portal from '@mui/material/Portal';\n\nimport useStyles from './styles';\n\nimport mdmModule from '@reltio/mdm-module';\nimport {clearNotification} from '../../actions/uiActions';\nimport {NOTIFICATION_TYPES} from '../../constants/constants';\nimport {getNotification} from '../../selectors/ui';\n\nconst icons = {\n [NOTIFICATION_TYPES.error]: 'error'\n};\nconst AUTO_HIDE_DURATION = 5000;\n\nconst Notification = () => {\n const dispatch = useDispatch();\n const notification = useSelector(getNotification);\n const autoCloseInterval = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n (notification && notification.payload.autoHideDuration) ||\n (autoCloseInterval && autoCloseInterval * 1000) ||\n AUTO_HIDE_DURATION;\n const classes = useStyles();\n const lastActiveNotification = useRef(null); // keep last actual state for correct animation ending\n\n const handleCloseNotification = useCallback(() => {\n dispatch(clearNotification());\n }, [dispatch]);\n\n if (notification) {\n lastActiveNotification.current = {...notification};\n }\n const {type, payload} = lastActiveNotification.current || {};\n const {message, action} = payload || {};\n\n const actionToDispatch = action && action.actionToDispatch;\n const handleActionDispatch = useCallback(() => {\n if (actionToDispatch) {\n dispatch(actionToDispatch);\n }\n }, [actionToDispatch, dispatch]);\n\n const snackBarAction = useMemo(() => {\n if (type === NOTIFICATION_TYPES.error) {\n return (\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n className={classes.close}\n onClick={handleActionDispatch}\n size=\"large\"\n >\n <Icon>close</Icon>\n </IconButton>\n );\n } else if (action) {\n return (\n <Button color=\"primary\" size=\"small\" onClick={handleActionDispatch}>\n {action.actionLabel}\n </Button>\n );\n } else {\n return null;\n }\n }, [classes, type, action, handleActionDispatch]);\n\n return (\n <Portal container={document.body}>\n <Snackbar\n key={message + type}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n autoHideDuration={autoHideDuration}\n open={Boolean(notification)}\n onClose={handleCloseNotification}\n ContentProps={{\n classes: {root: classnames(classes.snackbar, classes[type]), message: classes.message}\n }}\n message={\n <div className={classes.messageContent}>\n {icons[type] && <Icon className={classes.icon}>{icons[type]}</Icon>}\n {message}\n </div>\n }\n classes={{anchorOriginBottomCenter: classes.anchorSnackBar}}\n action={snackBarAction}\n />\n </Portal>\n );\n};\n\nexport default Notification;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n resizablePanesWrapper: {\n flex: '1 0 0px'\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n divider: {\n height: '1px'\n }\n}));\n\nexport {useStyles};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n overflow: 'hidden'\n },\n pagination: {\n flexGrow: 0,\n borderTop: '1px solid rgba(0, 0, 0, 0.1)',\n height: '52px'\n },\n listContainer: {\n overflowY: 'auto'\n },\n tableContainer: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n height: 0\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n});\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n '&.MuiButtonGroup-grouped': {\n minWidth: '90px',\n padding: '8px 12px'\n }\n }\n}));\n\nexport default useStyles;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"25\",\n height: \"24\",\n viewBox: \"0 0 25 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M19 4H5c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7 18H5v-8h2v8zM7 8H5V6h2v2zm6 10H9v-8h4v8zm0-10H9V6h4v2zm6 10h-4v-8h4v8zm0-10h-4V6h4v2z\",\n id: \"svg3365802068a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\"\n}, React.createElement(\"g\", {\n transform: \"translate(.2)\"\n}, React.createElement(\"mask\", {\n id: \"svg3365802068b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg3365802068a\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg3365802068b)\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\"\n}))))))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"25\",\n height: \"24\",\n viewBox: \"0 0 25 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20 15.5v3H9v-3h11zm-14 0a1 1 0 011 1v1a1 1 0 01-1 1H5a1 1 0 01-1-1v-1a1 1 0 011-1h1zm14-5v3H9v-3h11zm-14 0a1 1 0 011 1v1a1 1 0 01-1 1H5a1 1 0 01-1-1v-1a1 1 0 011-1h1zm14-5v3H9v-3h11zm-14 0a1 1 0 011 1v1a1 1 0 01-1 1H5a1 1 0 01-1-1v-1a1 1 0 011-1h1z\",\n id: \"svg4195527304a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\"\n}, React.createElement(\"g\", {\n transform: \"translate(.2)\"\n}, React.createElement(\"mask\", {\n id: \"svg4195527304b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg4195527304a\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg4195527304b)\"\n}, React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\"\n}))))));","import {SEARCH_RESULTS_MODES} from '../../constants/constants';\nimport TableIcon from './icons/table.svg';\nimport ListIcon from './icons/list.svg';\nimport WarningIcon from '@mui/icons-material/Warning';\n\nexport const getModeIcon = (mode) => {\n switch (mode) {\n case SEARCH_RESULTS_MODES.TABLE:\n return TableIcon;\n case SEARCH_RESULTS_MODES.LIST:\n return ListIcon;\n default:\n return WarningIcon;\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport {getModeIcon} from './helpers';\nimport {SEARCH_RESULTS_MODES} from '../../constants/constants';\nimport {setSearchResultsMode} from '../../actions/uiActions';\nimport {getSearchResultsMode} from '../../selectors/ui';\n\nconst MODES = [\n {\n id: SEARCH_RESULTS_MODES.TABLE,\n tooltipTitle: i18n.text('Table view'),\n title: i18n.text('Table'),\n Icon: getModeIcon(SEARCH_RESULTS_MODES.TABLE)\n },\n {\n id: SEARCH_RESULTS_MODES.LIST,\n tooltipTitle: i18n.text('List view'),\n title: i18n.text('List'),\n Icon: getModeIcon(SEARCH_RESULTS_MODES.LIST)\n }\n];\n\nconst ViewModeSwitcher = ({className}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const mode = useSelector(getSearchResultsMode);\n\n const onChange = (newMode) => {\n mode !== newMode && dispatch(setSearchResultsMode(newMode));\n };\n\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES}\n modeId={mode}\n onChange={onChange}\n />\n );\n};\n\nViewModeSwitcher.propTypes = {\n className: PropTypes.string\n};\n\nexport default ViewModeSwitcher;\n","import mdmModule from './src';\n\nexport * from './src';\nexport default mdmModule;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport MapIcon from '@mui/icons-material/Map';\nimport {ModeSwitcher} from '@reltio/components';\nimport mdm from '@reltio/mdm-module/index';\n\nimport {PREVIEW_PANEL_MODES} from '../../constants/constants';\nimport {setPreviewPanelMode} from '../../actions/uiActions';\nimport {getPreviewPanelMode} from '../../selectors/ui';\n\nimport {always, propEq, reject, when} from 'ramda';\n\nconst getModes = () => [\n {\n id: PREVIEW_PANEL_MODES.MAP,\n tooltipTitle: i18n.text('View map'),\n Icon: MapIcon\n },\n {\n id: PREVIEW_PANEL_MODES.PROFILE,\n tooltipTitle: i18n.text('View entity details'),\n Icon: InfoOutlinedIcon\n }\n];\n\nconst filterModes = (modes, mapKey) => when(always(!mapKey), reject(propEq('id', PREVIEW_PANEL_MODES.MAP)))(modes);\n\nconst PreviewPanelModeSwitcher = ({className}) => {\n const dispatch = useDispatch();\n const modeId = useSelector(getPreviewPanelMode);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n\n const modes = useMemo(() => filterModes(getModes(), mapKey), [mapKey]);\n\n const onChange = (newMode) => {\n dispatch(setPreviewPanelMode(modeId !== newMode ? newMode : null));\n };\n\n return <ModeSwitcher className={className} modes={modes} modeId={modeId} onChange={onChange} />;\n};\n\nPreviewPanelModeSwitcher.propTypes = {\n className: PropTypes.string\n};\n\nexport default PreviewPanelModeSwitcher;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport ViewModeSwitcher from '../../ViewModeSwitcher/ViewModeSwitcher';\nimport PreviewPanelModeSwitcher from '../../PreviewPanelModeSwitcher/PreviewPanelModeSwitcher';\nimport styles from './styles.less';\n\nconst ListViewHeader = () => {\n return (\n <div className={styles.container}>\n <div className={styles.title}>{i18n.text('Profiles')}</div>\n <div className={styles.actionsBar}>\n <ViewModeSwitcher />\n <PreviewPanelModeSwitcher className={styles.previewSwitcher} />\n </div>\n </div>\n );\n};\n\nexport default ListViewHeader;\n","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport styles from './styles.less';\n\nimport i18n from 'ui-i18n';\nimport {changeSearchResultsColumns, setEntityTypeTab} from '../../../actions/uiActions';\nimport {getSelectedEntityTypes} from '../../../selectors/facet';\nimport {getEntityTypesForTabs} from '../../../services/search/searchResults';\nimport {getEntityTypeTab, getSearchResultsColumnsForEntityType, getTableViewTabs} from '../../../selectors/ui';\nimport {ScrollableTabs} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {MetadataType} from '@reltio/mdm-sdk';\nimport ViewModeSwitcher from '../../ViewModeSwitcher/ViewModeSwitcher';\nimport Divider from '@mui/material/Divider';\nimport PreviewPanelModeSwitcher from '../../PreviewPanelModeSwitcher/PreviewPanelModeSwitcher';\nimport {getDataTenantObject} from '../../../selectors/search';\nimport {removeNumberForDtssUnavailableEntityTypeItems} from '../../../services/search/entityTypes';\nimport {formatNumberAsMetric} from '../../../utils/general';\nimport ConfigureColumnsButton from '../../ConfigureColumnsButton/ConfigureColumnsButton';\n\nexport class TableViewHeader extends PureComponent {\n getTabsData = () => {\n const {tenantObject, tableViewTabs, selectedEntityTypes, metadata} = this.props;\n const preparedTabs = removeNumberForDtssUnavailableEntityTypeItems(tableViewTabs, tenantObject);\n return getEntityTypesForTabs(metadata, preparedTabs, selectedEntityTypes).map((tab) => ({\n ...tab,\n additionalLabel: (\n <span className={styles.number}>\n ({tab.number === undefined ? i18n.text('N/A') : formatNumberAsMetric(tab.number)})\n </span>\n )\n }));\n };\n\n onTabChange = (value) => {\n this.props.dispatch(setEntityTypeTab(value));\n };\n\n onSelectColumns = (selectedColumns) => {\n const {dispatch, entityTypeTab, columnsForEntityType} = this.props;\n return dispatch(changeSearchResultsColumns(entityTypeTab, selectedColumns, columnsForEntityType));\n };\n\n renderTabs = () => {\n const {entityTypeTab} = this.props;\n return (\n <div className={styles.tabsContainer}>\n <ScrollableTabs value={entityTypeTab} tabs={this.getTabsData()} onChange={this.onTabChange} />\n </div>\n );\n };\n\n render() {\n const {entityTypeTab, columnsForEntityType} = this.props;\n return (\n <div className={styles.container}>\n {this.renderTabs()}\n <div className={styles.actionsBar}>\n <ConfigureColumnsButton\n entityTypeUri={entityTypeTab}\n headColumns={columnsForEntityType}\n onSelectColumns={this.onSelectColumns}\n data-reltio-id=\"reltio-search-table-add-remove-column\"\n disabled={!entityTypeTab}\n showForDisabled\n />\n <Divider orientation=\"vertical\" className={styles.splitter} />\n <ViewModeSwitcher />\n <PreviewPanelModeSwitcher className={styles.previewSwitcher} />\n </div>\n </div>\n );\n }\n\n static propTypes = {\n metadata: MetadataType,\n dispatch: PropTypes.func,\n selectedEntityTypes: PropTypes.array,\n tableViewTabs: PropTypes.array,\n entityTypeTab: PropTypes.string,\n columnsForEntityType: PropTypes.array,\n tenantObject: PropTypes.object\n };\n}\n\nexport default connect((store) => {\n const entityTypeTab = getEntityTypeTab(store);\n return {\n metadata: mdmModule.selectors.getMetadata(store),\n selectedEntityTypes: getSelectedEntityTypes(store),\n tableViewTabs: getTableViewTabs(store),\n entityTypeTab,\n columnsForEntityType: getSearchResultsColumnsForEntityType(store, entityTypeTab),\n tenantObject: getDataTenantObject(store)\n };\n})(TableViewHeader);\n","import React from 'react';\nimport {connect} from 'react-redux';\nimport {move} from 'ramda';\nimport memoizeOne from 'memoize-one';\nimport {\n getActiveEntityTypeTab,\n getEntityTypeTab,\n getSearchResultsColumnsForEntityType,\n getShowBulkUpdate\n} from '../../selectors/ui';\nimport {getSortField, getSortOrder} from '../../selectors/search';\nimport PropTypes from 'prop-types';\nimport {changeSort} from '../../actions/searchActions';\nimport {SORT_DIRECTION_ASC, SORT_DIRECTION_DESC} from 'react-components/dist/Table/Table';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n changeOrderSearchResultsColumns,\n changeSearchResultsColumns,\n changeSizesSearchResultsColumns\n} from '../../actions/uiActions';\nimport {difference, omit, path} from 'ramda';\nimport {getAdditionalColumns} from '../../services/search/searchResults';\nimport EntitiesTableWithConfigurableColumns from '../EntitiesTableWithConfigurableColumns/EntitiesTableWithConfigurableColumns';\n\nexport class TableView extends React.PureComponent {\n entitiesTableRef = this.props.basicTableRef || React.createRef();\n state = {\n resizeDebounceDelay: undefined\n };\n\n sortHandle = ({field, order}) => {\n this.props.dispatch(changeSort({field: order ? field : null, order, entityTypeUri: this.props.entityTypeUri}));\n };\n\n reorderingHandle = ({what, where}) => {\n const {entityTypeUri, dispatch, headColumns} = this.props;\n const reorderedColumns = move(what.columnIndex, where.columnIndex, headColumns);\n dispatch(changeOrderSearchResultsColumns(entityTypeUri, reorderedColumns));\n };\n\n changeColumnsListHandle = ({columns}) => {\n const {entityTypeUri, dispatch, headColumns} = this.props;\n dispatch(changeSearchResultsColumns(entityTypeUri, columns, headColumns));\n };\n\n componentDidUpdate(prevProps) {\n const {headColumns, sortField, sortOrder, entities, entityTypeUri} = this.props;\n if (\n this.entitiesTableRef.current &&\n (headColumns.length !== path(['headColumns', 'length'], prevProps) ||\n difference(omit(['size'], headColumns), omit(['size'], prevProps.headColumns)).length > 0 ||\n sortField !== prevProps.sortField ||\n sortOrder !== prevProps.sortOrder ||\n entities !== prevProps.entities)\n ) {\n this.entitiesTableRef.current.resetScrollbarPosition();\n }\n\n if (prevProps.entityTypeUri !== entityTypeUri) {\n this.setState({\n resizeDebounceDelay: 0\n });\n }\n }\n\n changeColumnsSizeHandle = (newColumnsSize) => {\n const {headColumns, entityTypeUri, dispatch} = this.props;\n const newHeadColumns = headColumns.map((column, index) => ({\n ...column,\n size: newColumnsSize[index].size,\n autoResize: (column.autoResize ?? index !== 0) && !newColumnsSize[index].manuallyChanged\n }));\n dispatch(changeSizesSearchResultsColumns(entityTypeUri, newHeadColumns));\n this.setState({\n resizeDebounceDelay: undefined\n });\n };\n\n logger = (action) => {\n this.props.dispatch({type: 'TABLE_LOG', payload: action});\n };\n\n render() {\n const {\n entities,\n entityToHighlight,\n onScroll,\n entityTypeUri,\n headColumns,\n sortField,\n sortOrder,\n additionalColumns,\n selectedEntityUri,\n dndColumnReorderingEnabled,\n onEntityClick,\n onEntityHover,\n entitiesImportStatus,\n onEntityImportStatusChange\n } = this.props;\n return (\n <EntitiesTableWithConfigurableColumns\n entities={entities}\n entityToHighlight={entityToHighlight}\n selectedEntityUri={selectedEntityUri}\n onScroll={onScroll}\n onSort={this.sortHandle}\n onEntityClick={onEntityClick}\n onEntityHover={onEntityHover}\n entityTypeUri={entityTypeUri}\n headColumns={headColumns}\n sortField={sortField}\n sortOrder={sortOrder}\n dndColumnReorderingEnabled={dndColumnReorderingEnabled}\n onReorderingColumn={this.reorderingHandle}\n entitiesTableRef={this.entitiesTableRef}\n onChangeColumnsList={this.changeColumnsListHandle}\n onChangeColumnsSize={this.changeColumnsSizeHandle}\n additionalColumns={additionalColumns}\n entitiesImportStatus={entitiesImportStatus}\n onEntityImportStatusChange={onEntityImportStatusChange}\n logger={this.logger}\n resizeDebounceDelay={this.state.resizeDebounceDelay}\n />\n );\n }\n\n static propTypes = {\n entities: PropTypes.array,\n entityToHighlight: PropTypes.string,\n selectedEntityUri: PropTypes.string,\n headColumns: PropTypes.array,\n onScroll: PropTypes.func,\n entityTypeUri: PropTypes.string,\n sortField: PropTypes.string,\n sortOrder: PropTypes.oneOf([SORT_DIRECTION_ASC, SORT_DIRECTION_DESC]),\n dndColumnReorderingEnabled: PropTypes.bool,\n dispatch: PropTypes.func,\n additionalColumns: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string\n })\n ),\n onEntityClick: PropTypes.func,\n onEntityHover: PropTypes.func,\n entitiesImportStatus: PropTypes.object,\n onEntityImportStatusChange: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object})\n };\n\n static defaultProps = {\n entities: [],\n headColumns: []\n };\n}\n\nconst memoizedGetAdditionalColumns = memoizeOne(getAdditionalColumns);\n\nexport default connect((store) => {\n const entityTypeUri = getActiveEntityTypeTab(store);\n const headColumns = getSearchResultsColumnsForEntityType(store, entityTypeUri);\n const metadata = mdmModule.selectors.getMetadata(store);\n const additionalColumns = memoizedGetAdditionalColumns(metadata, entityTypeUri, headColumns);\n return {\n sortField: getSortField(store, {entityTypeUri: getEntityTypeTab(store)}),\n sortOrder: getSortOrder(store, {entityTypeUri: getEntityTypeTab(store)}),\n dndColumnReorderingEnabled: !getShowBulkUpdate(store),\n headColumns,\n entityTypeUri,\n additionalColumns\n };\n})(TableView);\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n position: 'relative',\n height: '100%',\n width: '100%'\n },\n closeButton: {\n position: 'absolute',\n top: '7px',\n left: '7px',\n zIndex: 1\n }\n}));\n\nexport default useStyles;\n","import {appId} from '../constants/constants';\n\nexport const getLoading = (state) => state[appId].entity.loading;\nexport const getSelectedEntityUri = (state) => state[appId].entity.selectedEntityUri;\nexport const getEntity = (state) => state[appId].entity.entity;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n scrollWrapper: {\n flexGrow: 1,\n overflowY: 'auto',\n backgroundColor: '#FAFAFA'\n },\n attributesView: {\n margin: '16px'\n },\n emptyState: {\n height: '100%',\n backgroundColor: '#FAFAFA'\n },\n profileBand: {\n paddingLeft: 48,\n backgroundColor: 'rgba(0,114,206,0.06)'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n LinearLoadIndicator,\n ProfileBand,\n AttributesView,\n EmptyState,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n BlockImageGalleryDialogContext\n} from '@reltio/components';\nimport {Mode} from '@reltio/mdm-sdk';\nimport {getLoading, getEntity} from '../../../../selectors/entity';\n\nimport useStyles from './styles';\n\nconst EntityDetailedView = () => {\n const styles = useStyles();\n const entity = useSelector(getEntity);\n const loading = useSelector(getLoading);\n\n return (\n <>\n {loading && <LinearLoadIndicator />}\n {entity ? (\n <div className={styles.container}>\n <ProfileBand entity={entity} classes={{profileBand: styles.profileBand}} />\n <div className={styles.scrollWrapper}>\n <BlockImageGalleryDialogContext.Provider value={true}>\n <AttributesView className={styles.attributesView} entity={entity} mode={Mode.Viewing} />\n </BlockImageGalleryDialogContext.Provider>\n </div>\n </div>\n ) : (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n secondaryText={i18n.text('Select a profile and view preview details here.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n </div>\n )}\n </>\n );\n};\n\nexport default EntityDetailedView;\n","import {propOr, curry} from 'ramda';\n\nconst MAX_MARKERS_IN_CLUSTER_TOOLTIP = 2;\n\nconst nearlyEquals = (a, b) => Math.abs(a - b) < 1;\n\nconst markerClustererCalculator = curry((mapMarkers, clusterMarkers, numStyles) => {\n const markerLabels = clusterMarkers.map(({position}) => {\n const marker = mapMarkers.find(\n ({point}) => nearlyEquals(position.lat(), point.lat) && nearlyEquals(position.lng(), point.lng)\n );\n return propOr('', 'label', marker);\n });\n const title = (\n markerLabels.length > MAX_MARKERS_IN_CLUSTER_TOOLTIP\n ? markerLabels.slice(0, MAX_MARKERS_IN_CLUSTER_TOOLTIP).concat('...')\n : markerLabels\n ).join('\\n');\n\n let index = 0;\n const count = clusterMarkers.length.toString();\n\n let dv = count;\n while (dv !== 0) {\n dv = parseInt(dv / 10, 10);\n index++;\n }\n\n index = Math.min(index, numStyles);\n return {\n text: count,\n index,\n title\n };\n});\n\nexport default markerClustererCalculator;\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {both, gt, lt, path, pipe} from 'ramda';\n\nimport {resolve} from '@reltio/mdm-sdk';\nimport {setMapMarker} from '../../../../actions/uiActions';\n\nconst emptyArray = [];\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = ({searchResults, metadata, mapKey}) => {\n searchResults = searchResults || emptyArray;\n const dispatch = useDispatch();\n const [markers, setMarkers] = useState([]);\n const [loading, setLoading] = useState(false);\n const activateMarkerTimeoutId = useRef();\n const deactivateMarkerTimeoutId = useRef();\n\n const setActiveEntity = useCallback(\n (marker) => {\n dispatch(setMapMarker(marker || null));\n },\n [dispatch]\n );\n\n const clearMarkerTimers = useCallback(() => {\n clearTimeout(deactivateMarkerTimeoutId.current);\n clearTimeout(activateMarkerTimeoutId.current);\n }, []);\n\n useEffect(() => {\n setLoading(true);\n resolve(metadata, searchResults, mapKey)\n .then((markers) => {\n setLoading(false);\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setLoading(false);\n setMarkers([]);\n });\n }, [searchResults, metadata, mapKey]);\n\n const onMarkerClicked = useCallback(\n (marker) => {\n const uri = path(['entity', 'uri'], marker);\n clearMarkerTimers();\n // reset and set in 0 setTimeout is needed to support \"frequent\" clicks on one marker\n setActiveEntity();\n activateMarkerTimeoutId.current = setTimeout(() => setActiveEntity(uri), 0);\n deactivateMarkerTimeoutId.current = setTimeout(setActiveEntity, 3000);\n },\n [clearMarkerTimers, setActiveEntity]\n );\n\n return {markers, loading, onMarkerClicked};\n};\n","import {useEffect, useCallback, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {MAP_DRAWING_MODES} from '@reltio/components';\nimport {MAP_SEARCH_TYPES} from '@reltio/mdm-sdk';\nimport {getMapSearchType, getMapSearchValues} from '../../../../selectors/search';\nimport {changeMapValue} from '../../../../actions/searchActions';\nimport {getUiMapSearchEnabledConfig} from '../../../../selectors/ui';\n\nconst searchTypeToOverlayType = {\n [MAP_SEARCH_TYPES.geoPolygon]: MAP_DRAWING_MODES.POLYGON,\n [MAP_SEARCH_TYPES.geoLocation]: MAP_DRAWING_MODES.CIRCLE\n};\n\nconst closePolygon = (path) => (path && path.length ? [...path, path[0]] : path);\nconst searchValuesToPolygonPath = (values) => values[0].map(([lat, lng]) => ({lat, lng})).slice(0, -1);\n\nexport const useSearch = () => {\n const dispatch = useDispatch();\n const values = useSelector(getMapSearchValues);\n const searchType = useSelector(getMapSearchType);\n const isSearchEnabled = useSelector(getUiMapSearchEnabledConfig);\n const [isSearchOnMapMove, setIsSearchOnMapMove] = useState(false);\n\n const onOverlayUpdated = useCallback(\n (params) => {\n let value = null,\n searchType = null;\n\n if (params) {\n const {data, type} = params;\n switch (type) {\n case MAP_DRAWING_MODES.CIRCLE: {\n const {center, radius} = data;\n value = [center.lng(), center.lat(), radius];\n searchType = MAP_SEARCH_TYPES.geoLocation;\n break;\n }\n case MAP_DRAWING_MODES.POLYGON: {\n value = closePolygon(data);\n searchType = MAP_SEARCH_TYPES.geoPolygon;\n break;\n }\n }\n }\n\n setIsSearchOnMapMove(false);\n dispatch(changeMapValue(value, searchType));\n },\n [dispatch]\n );\n\n const onMapBoundsChanged = useCallback(\n (data) => {\n setIsSearchOnMapMove(!!data);\n dispatch(changeMapValue(closePolygon(data), data && MAP_SEARCH_TYPES.onMapMove));\n },\n [dispatch]\n );\n\n const overlayType = searchTypeToOverlayType[searchType];\n\n const activeOverlay = useMemo(\n () =>\n isSearchEnabled && overlayType && values.length\n ? {\n path: overlayType === MAP_DRAWING_MODES.POLYGON ? searchValuesToPolygonPath(values) : null,\n type: overlayType\n }\n : null,\n [isSearchEnabled, values, overlayType]\n );\n\n useEffect(() => {\n if (activeOverlay || values.length === 0) {\n setIsSearchOnMapMove(false);\n }\n }, [values, activeOverlay]);\n\n return {isSearchEnabled, onOverlayUpdated, activeOverlay, isSearchOnMapMove, onMapBoundsChanged};\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n height: '100%',\n width: '100%',\n position: 'relative'\n },\n fullHeight: {\n height: '100%'\n }\n}));\n\nexport default useStyles;\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {LinearLoadIndicator, ReltioMap, MAP_DRAWING_MODES, EntityMarkerContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport markerClustererCalculator from './helpers/markerClustererCalculator';\nimport {getDisplayedSearchResults} from '../../../../selectors/search';\nimport {useMarkers} from './useMarkers';\nimport {useSearch} from './useSearch';\nimport {getHoveredEntityUri} from '../../../../selectors/ui';\nimport useStyles from './styles';\n\nconst MapView = () => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const searchResults = useSelector(getDisplayedSearchResults);\n const hoveredEntityUri = useSelector(getHoveredEntityUri);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n const {markers, loading, onMarkerClicked} = useMarkers({searchResults, metadata, mapKey});\n const {isSearchEnabled, activeOverlay, onOverlayUpdated, isSearchOnMapMove, onMapBoundsChanged} = useSearch();\n const loadingElement = useMemo(\n () => (\n <div className={styles.fullHeight}>\n <LinearLoadIndicator />\n </div>\n ),\n [styles]\n );\n const markerClustererOptions = useMemo(\n () => ({\n gridSize: 60,\n maxZoom: 9,\n calculator: markerClustererCalculator(markers)\n }),\n [markers]\n );\n\n const entityMarkerContextValue = useMemo(\n () => ({\n activeEntityUri: hoveredEntityUri\n }),\n [hoveredEntityUri]\n );\n\n const defaultCenter = useMemo(() => ({lat: 0, lng: 0}), []);\n\n const drawingModes = useMemo(() => [MAP_DRAWING_MODES.POLYGON], []);\n\n if (!mapKey) {\n return null;\n }\n\n return (\n <div className={styles.container}>\n {loading && <LinearLoadIndicator />}\n <EntityMarkerContext.Provider value={entityMarkerContextValue}>\n <ReltioMap\n loadingElement={loadingElement}\n defaultZoom={1}\n defaultCenter={defaultCenter}\n onOverlayUpdated={onOverlayUpdated}\n onMarkerClicked={onMarkerClicked}\n activeOverlay={activeOverlay}\n markers={markers}\n fullscreenControl={false}\n markerClusterer={true}\n markerClustererOptions={markerClustererOptions}\n drawingModes={drawingModes}\n isSearchOnMapMove={isSearchOnMapMove}\n onMapBoundsChanged={onMapBoundsChanged}\n isSearchEnabled={isSearchEnabled}\n mapContainerClassName={styles.fullHeight}\n mapKey={mapKey}\n />\n </EntityMarkerContext.Provider>\n </div>\n );\n};\n\nexport default MapView;\n","import React, {useCallback, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {SmallIconButton, withTooltip} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\n\nimport useStyles from './styles';\n\nimport {PREVIEW_PANEL_MODES} from '../../constants/constants';\nimport {setPreviewPanelMode} from '../../actions/uiActions';\nimport {getPreviewPanelMode} from '../../selectors/ui';\nimport EntityDetailedView from './views/EntityDetailedView/EntityDetailedView';\nimport MapView from './views/MapView/MapView';\n\nexport const SmallIconButtonWithTooltip = withTooltip(SmallIconButton);\n\nconst getTooltipByModeId = (modeId) => {\n switch (modeId) {\n case PREVIEW_PANEL_MODES.PROFILE:\n return i18n.text('Hide entity details');\n case PREVIEW_PANEL_MODES.MAP:\n return i18n.text('Hide map');\n }\n};\n\nconst renderView = (modeId) => {\n switch (modeId) {\n case PREVIEW_PANEL_MODES.PROFILE:\n return <EntityDetailedView />;\n case PREVIEW_PANEL_MODES.MAP:\n return <MapView />;\n }\n};\n\nconst PreviewPanel = () => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const modeId = useSelector(getPreviewPanelMode);\n\n const isMapViewMode = modeId === PREVIEW_PANEL_MODES.MAP;\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n\n const onClose = useCallback(() => dispatch(setPreviewPanelMode(null)), [dispatch]);\n\n useEffect(() => {\n if (!mapKey && isMapViewMode) {\n onClose();\n }\n }, [mapKey, isMapViewMode, onClose]);\n\n return (\n <div className={styles.container}>\n <SmallIconButtonWithTooltip\n tooltipTitle={getTooltipByModeId(modeId)}\n tooltipPlacement=\"bottom-start\"\n size=\"L\"\n icon={ClearIcon}\n className={styles.closeButton}\n onClick={onClose}\n />\n {renderView(modeId)}\n </div>\n );\n};\n\nexport default PreviewPanel;\n","export default {\n SET_LOADING: 'ENTITY_SET_LOADING',\n LOAD_ENTITY_REQUEST: 'ENTITY_LOAD_ENTITY_REQUEST',\n SET_SELECTED_ENTITY_URI: 'ENTITY_SET_SELECTED_ENTITY_URI',\n SET_ENTITY: 'ENTITY_SET_ENTITY'\n};\n","import {Entity} from '../constants/actionTypes';\n\nexport const setEntityLoading = (bool) => ({\n type: Entity.SET_LOADING,\n payload: bool\n});\n\nexport const loadEntityRequest = (uri) => ({\n type: Entity.LOAD_ENTITY_REQUEST,\n payload: uri\n});\n\nexport const setSelectedEntityUri = (uri) => ({\n type: Entity.SET_SELECTED_ENTITY_URI,\n payload: uri\n});\n\nexport const setEntity = (entity) => ({\n type: Entity.SET_ENTITY,\n payload: entity\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {connect} from 'react-redux';\nimport {assoc, prop} from 'ramda';\nimport {debounce, isEmptyValue} from '@reltio/mdm-sdk';\nimport {\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n BasicTablePagination,\n ResizablePanes,\n ErrorBoundary,\n ProfilesList\n} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nimport ListViewHeader from './Headers/ListViewHeader';\nimport TableViewHeader from './Headers/TableViewHeader';\nimport TableView from '../TableView/TableView';\nimport PreviewPanel from '../PreviewPanel/PreviewPanel';\nimport {getEntitiesLoading, getPage, getRowsPerPage, getSearchResults, getTotal} from '../../selectors/search';\nimport {\n getActiveEntity,\n getActiveEntityTypeTab,\n getIsPreviewPanelOpen,\n getPreviewPanelMode,\n getSearchResultsMode\n} from '../../selectors/ui';\nimport {changePage, changeRowsPerPage} from '../../actions/searchActions';\nimport {PREVIEW_PANEL_MODES, ROWS_PER_PAGE_OPTIONS} from '../../constants/constants';\nimport {isTableMode} from '../../services/search/searchResults';\nimport {loadEntityRequest, setSelectedEntityUri} from '../../actions/entityActions';\nimport {getSelectedEntityUri} from '../../selectors/entity';\nimport {setHoveredEntityUri} from '../../actions/uiActions';\nimport EntityRowButtons from '../EntityRowButtons/EntityRowButtons';\n\nexport const PAGINATION_DEBOUNCE_TIME = 250;\nexport const ENTITY_HOVER_DEBOUNCE_TIME = 50;\nexport const DEFAULT_PANE_SIZE = '50%';\nconst MIN_PANE1_SIZE = 480;\nconst MIN_PANE2_SIZE = 480;\n\nexport const SearchResultsArea = ({\n className,\n loading,\n entities,\n entityTypeTab,\n quantity,\n rowsPerPage,\n page,\n entityToHighlight,\n selectedEntityUri,\n mode,\n previewPanelMode,\n isPreviewPanelOpen,\n dispatch\n}) => {\n const styles = useStyles();\n const refScrollBlock = useRef();\n const [paneSize, setPaneSize] = useState(DEFAULT_PANE_SIZE);\n const isTableViewMode = isTableMode(mode);\n const isProfileMode = previewPanelMode === PREVIEW_PANEL_MODES.PROFILE;\n const isMapViewMode = previewPanelMode === PREVIEW_PANEL_MODES.MAP;\n\n const [entitiesImportStatus, setEntitiesImportStatus] = useState({});\n const handleEntityImportStatusChange = useCallback((entityUri, status) => {\n setEntitiesImportStatus(assoc(entityUri, status));\n }, []);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n useEffect(() => {\n if (isProfileMode) {\n if (isEmptyValue(entities)) {\n dispatch(loadEntityRequest(null));\n } else if (\n prop(0, entities) &&\n (!selectedEntityUri || !entities.map(prop('uri')).includes(selectedEntityUri))\n ) {\n dispatch(loadEntityRequest(entities[0].uri));\n }\n }\n }, [dispatch, isProfileMode, selectedEntityUri, entities]);\n\n useEffect(() => {\n if (!isProfileMode && selectedEntityUri) {\n dispatch(setSelectedEntityUri(null));\n }\n }, [dispatch, selectedEntityUri, isProfileMode]);\n\n const onChangePage = useCallback(\n (number) => dispatch(changePage(number, PAGINATION_DEBOUNCE_TIME, entityTypeTab)),\n [dispatch, entityTypeTab]\n );\n\n const onChangeRowsPerPage = useCallback(\n (number) => dispatch(changeRowsPerPage(number, entityTypeTab)),\n [dispatch, entityTypeTab]\n );\n\n const onEntityClick = useCallback((entityUri) => dispatch(loadEntityRequest(entityUri)), [dispatch]);\n\n const onEntityHover = useCallback(\n debounce((entityUri) => dispatch(setHoveredEntityUri(entityUri)), ENTITY_HOVER_DEBOUNCE_TIME),\n [dispatch]\n );\n\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const entityButtonsRenderer = (entity) => {\n const importStatus = prop(entity.uri, entitiesImportStatus);\n return (\n <EntityRowButtons\n entity={entity}\n entityImportStatus={importStatus}\n onEntityImportStatusChange={handleEntityImportStatusChange}\n />\n );\n };\n\n const basicTableRef = useRef(null);\n const renderSearchResults = () => {\n const entityUriToHighlight = entityToHighlight || null;\n\n return quantity ? (\n <div className={isTableViewMode ? styles.tableContainer : styles.listContainer} ref={refScrollBlock}>\n {isTableViewMode ? (\n <TableView\n entities={entities}\n entityToHighlight={entityUriToHighlight}\n selectedEntityUri={selectedEntityUri}\n entityTypeUri={entityTypeTab}\n onEntityClick={isProfileMode ? onEntityClick : undefined}\n onEntityHover={isMapViewMode ? onEntityHover : undefined}\n entitiesImportStatus={entitiesImportStatus}\n onEntityImportStatusChange={handleEntityImportStatusChange}\n basicTableRef={basicTableRef}\n />\n ) : (\n <ProfilesList\n entities={entities}\n entityToHighlight={entityUriToHighlight}\n selectedEntityUri={selectedEntityUri}\n onEntityClick={isProfileMode ? onEntityClick : undefined}\n onEntityHover={isMapViewMode ? onEntityHover : undefined}\n entitiesImportStatus={entitiesImportStatus}\n entityButtonsRenderer={entityButtonsRenderer}\n />\n )}\n {quantity > ROWS_PER_PAGE_OPTIONS[0] && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={quantity}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage || ROWS_PER_PAGE_OPTIONS[0]}\n page={page || 0}\n onChangePage={onChangePage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n </div>\n )}\n </div>\n ) : (\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SEARCH_RESULTS}\n text={i18n.text('No results found.')}\n secondaryText={i18n.text(\"Try adjusting your search or filter to find what you're looking for.\")}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n );\n };\n\n return (\n <div className={classnames(styles.container, className)}>\n {loading && <LinearLoadIndicator />}\n {isTableMode(mode) ? <TableViewHeader quantity={quantity} /> : <ListViewHeader />}\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"vertical\"\n size={isPreviewPanelOpen ? paneSize : '100%'}\n minSize={MIN_PANE1_SIZE}\n maxSize={-MIN_PANE2_SIZE}\n allowResize={isPreviewPanelOpen}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text={i18n.text('Something went wrong.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n }\n >\n {renderSearchResults()}\n </ErrorBoundary>\n </div>\n <div className={styles.pane}>\n <PreviewPanel />\n </div>\n </ResizablePanes>\n </div>\n );\n};\n\nSearchResultsArea.propTypes = {\n page: PropTypes.number,\n quantity: PropTypes.number,\n rowsPerPage: PropTypes.number,\n entities: PropTypes.array,\n loading: PropTypes.bool,\n dispatch: PropTypes.func,\n entityToHighlight: PropTypes.string,\n mode: PropTypes.string,\n entityTypeTab: PropTypes.string,\n className: PropTypes.string,\n isPreviewPanelOpen: PropTypes.bool,\n previewPanelMode: PropTypes.oneOf(Object.values(PREVIEW_PANEL_MODES)),\n selectedEntityUri: PropTypes.string\n};\n\nSearchResultsArea.defaultProps = {\n quantity: 0,\n entities: []\n};\n\nexport default connect((state) => {\n const entityTypeUri = getActiveEntityTypeTab(state);\n return {\n quantity: getTotal(state, {entityTypeUri}),\n page: getPage(state, {entityTypeUri}),\n rowsPerPage: getRowsPerPage(state, {entityTypeUri}),\n entities: getSearchResults(state, {entityTypeUri}),\n loading: getEntitiesLoading(state),\n entityToHighlight: getActiveEntity(state),\n mode: getSearchResultsMode(state),\n entityTypeTab: entityTypeUri,\n previewPanelMode: getPreviewPanelMode(state),\n isPreviewPanelOpen: getIsPreviewPanelOpen(state),\n selectedEntityUri: getSelectedEntityUri(state)\n };\n})(SearchResultsArea);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n height: '32px',\n borderRadius: '18px',\n backgroundColor: 'rgba(0,0,0,0.10)',\n margin: '4px',\n maxWidth: '380px',\n flexShrink: '0',\n border: 'none',\n '&:focus': {\n 'background-color': 'rgb(206, 206, 206)'\n },\n '&:first-child': {\n marginLeft: 0\n },\n '& $deleteIcon': {\n color: 'rgba(0,0,0,0.38)',\n margin: '0 5px 0 0px',\n height: '18px',\n width: '18px'\n }\n },\n\n deleteIcon: {},\n\n label: {\n paddingLeft: '8px',\n paddingRight: '8px',\n overflow: 'hidden'\n },\n\n labelContainer: {\n display: 'flex',\n overflow: 'hidden'\n },\n\n title: {\n color: 'rgba(0,0,0,0.67)',\n marginRight: '6px'\n },\n\n values: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Chip from '@mui/material/Chip';\n\nimport {useStyles} from './styles';\n\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nconst SelectedFacetChip = (props) => {\n const classes = useStyles();\n const stringifiedValues = props.values && props.values.join(', ');\n\n return (\n <Chip\n label={\n <div className={classes.labelContainer}>\n {props.title && <div className={classes.title}>{props.title}: </div>}\n {props.values && (\n <ExpandedValueTooltip value={stringifiedValues}>\n <div className={classes.values}>{stringifiedValues}</div>\n </ExpandedValueTooltip>\n )}\n </div>\n }\n onDelete={props.onDelete}\n variant=\"outlined\"\n classes={{\n root: classes.root,\n deleteIcon: classes.deleteIcon,\n label: classes.label\n }}\n />\n );\n};\n\nSelectedFacetChip.propTypes = {\n classes: PropTypes.object,\n title: PropTypes.string,\n values: PropTypes.array,\n onDelete: PropTypes.func\n};\n\nexport default SelectedFacetChip;\n","import React, {Fragment, PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport {Popper} from '@reltio/components';\nimport Button from '@mui/material/Button';\nimport i18n from 'ui-i18n';\nimport Paper from '@mui/material/Paper';\n\nconst overrideStyles = () => ({\n root: {\n minHeight: '32px',\n opacity: '0.54',\n padding: '8px',\n minWidth: '35px',\n borderRadius: '8px'\n },\n\n label: {\n fontSize: '13px',\n lineHeight: '15px'\n },\n\n popperContent: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '8px'\n }\n});\n\nclass MoreButton extends PureComponent {\n state = {\n anchorEl: null\n };\n\n handleClick = (event) => {\n const {currentTarget} = event;\n this.setState((state) => ({\n anchorEl: state.anchorEl ? null : currentTarget\n }));\n };\n\n handleClose = (event) => {\n event.stopPropagation();\n this.setState({anchorEl: null});\n };\n\n render() {\n const {classes, items} = this.props;\n const {anchorEl} = this.state;\n const open = Boolean(anchorEl);\n const id = open ? 'moreButtonPopper' : null;\n\n return (\n <Fragment>\n <Button\n aria-describedby={id}\n color=\"primary\"\n variant=\"contained\"\n classes={{\n root: classes.root,\n label: classes.label\n }}\n onClick={this.handleClick}\n >\n {i18n.text(`+ ${items.length}`)}\n </Button>\n <Popper id={id} open={open} onClose={this.handleClose} anchorEl={anchorEl} placement=\"bottom-start\">\n <Paper elevation={2} classes={{root: classes.popperContent}}>\n {this.props.items}\n </Paper>\n </Popper>\n </Fragment>\n );\n }\n}\n\nMoreButton.propTypes = {\n classes: PropTypes.object,\n items: PropTypes.array\n};\n\nMoreButton.defaultProps = {\n items: []\n};\n\nexport default withStyles(overrideStyles)(MoreButton);\n","export default {\n CREATE: 'SAVED_SEARCHES_CREATE',\n SET_CURRENT: 'SAVED_SEARCHES_SET_CURRENT',\n SET_CHANGE_INDICATOR: 'SAVED_SEARCHES_SET_CHANGE_INDICATOR',\n UPDATE: 'SAVED_SEARCHES_UPDATE',\n LOAD: 'SAVED_SEARCHES_LOAD',\n SET_TOTAL: 'SAVED_SEARCHES_SET_TOTAL',\n SET_ITEMS: 'SAVED_SEARCHES_SET_ITEMS',\n SET_ITEM_TOTAL: 'SAVED_SEARCHES_SET_ITEM_TOTAL',\n SET_PAGE: 'SAVED_SEARCHES_SET_PAGE',\n SET_ROWS_PER_PAGE: 'SAVED_SEARCHES_SET_ROWS_PER_PAGE',\n SET_FILTERS: 'SAVED_SEARCHES_SET_FILTERS',\n SELECT_ITEM: 'SAVED_SEARCHES_SELECT_ITEM',\n SELECT_ALL_ITEMS: 'SAVED_SEARCHES_SELECT_ALL_ITEMS',\n DESELECT_ALL_ITEMS: 'SAVED_SEARCHES_DESELECT_ALL_ITEMS',\n MARK_PUBLIC_REQUEST: 'SAVED_SEARCHES_MARK_PUBLIC_REQUEST',\n MARK_PUBLIC: 'SAVED_SEARCHES_MARK_PUBLIC',\n MARK_FAVORITE_REQUEST: 'SAVED_SEARCHES_MARK_FAVORITE_REQUEST',\n MARK_FAVORITE: 'SAVED_SEARCHES_MARK_FAVORITE',\n MARK_GLOBAL_FILTER_REQUEST: 'SAVED_SEARCHES_MARK_GLOBAL_FILTER_REQUEST',\n MARK_GLOBAL_FILTER: 'SAVED_SEARCHES_MARK_GLOBAL_FILTER',\n CHANGE_ITEM_NAME_REQUEST: 'SAVED_SEARCHES_CHANGE_ITEM_NAME_REQUEST',\n CHANGE_ITEM_NAME: 'SAVED_SEARCHES_CHANGE_ITEM_NAME',\n SET_EDITING: 'SAVED_SEARCHES_SET_EDITING',\n DELETE_SELECTED_ITEMS_REQUEST: 'SAVED_SEARCHES_DELETE_SELECTED_ITEMS_REQUEST',\n DELETE_ITEM_REQUEST: 'SAVED_SEARCHES_DELETE_ITEM_REQUEST',\n DELETE_ITEMS: 'SAVED_SEARCHES_DELETE_ITEMS',\n SET_LOADING: 'SAVED_SEARCHES_SET_LOADING',\n SET_SEARCH_VALUE: 'SAVED_SEARCHES_SET_SEARCH_VALUE',\n APPLY_ITEM: 'SAVED_SEARCHES_APPLY_ITEM',\n TOGGLE_SORT: 'TOGGLE_SORT'\n};\n","import {SavedSearches} from '../constants/actionTypes';\nimport {SEARCH_DEBOUNCE_TIME} from '../constants/constants';\n\nexport const createSavedSearches = (savedSearchData) => {\n return {type: SavedSearches.CREATE, payload: savedSearchData};\n};\n\nexport const setCurrentSavedSearch = (savedSearch) => {\n return {type: SavedSearches.SET_CURRENT, payload: savedSearch};\n};\n\nexport const setSavedSearchChangeIndicator = (value) => {\n return {type: SavedSearches.SET_CHANGE_INDICATOR, payload: value};\n};\n\nexport const updateSavedSearches = (savedSearchData) => {\n return {type: SavedSearches.UPDATE, payload: savedSearchData};\n};\n\nexport const loadSavedSearches = () => ({\n type: SavedSearches.LOAD\n});\n\nexport const setSavedSearchesTotal = (total) => ({\n type: SavedSearches.SET_TOTAL,\n payload: total\n});\n\nexport const setSavedSearchesItems = (items) => ({\n type: SavedSearches.SET_ITEMS,\n payload: items\n});\n\nexport const setSavedSearchItemTotal = (uri, total) => ({\n type: SavedSearches.SET_ITEM_TOTAL,\n payload: {uri, total}\n});\n\nexport const setSavedSearchesPage = (page) => ({\n type: SavedSearches.SET_PAGE,\n payload: page\n});\n\nexport const setSavedSearchesRowsPerPage = (rowsPerPage) => ({\n type: SavedSearches.SET_ROWS_PER_PAGE,\n payload: rowsPerPage\n});\n\nexport const setSavedSearchesFilters = ({findPublic, favoriteOnly}) => ({\n type: SavedSearches.SET_FILTERS,\n payload: {findPublic, favoriteOnly}\n});\n\nexport const selectSavedSearchItem = (uri, checked) => ({\n type: SavedSearches.SELECT_ITEM,\n payload: {uri, checked}\n});\n\nexport const selectAllSavedSearchItems = () => ({\n type: SavedSearches.SELECT_ALL_ITEMS\n});\n\nexport const deselectAllSavedSearchItems = () => ({\n type: SavedSearches.DESELECT_ALL_ITEMS\n});\n\nexport const markSavedSearchAsPublicRequest = (uri, isPublic) => ({\n type: SavedSearches.MARK_PUBLIC_REQUEST,\n payload: {uri, isPublic}\n});\n\nexport const markSavedSearchAsPublic = (uri, isPublic) => ({\n type: SavedSearches.MARK_PUBLIC,\n payload: {uri, isPublic}\n});\n\nexport const markSavedSearchAsFavoriteRequest = (uri, isFavorite) => ({\n type: SavedSearches.MARK_FAVORITE_REQUEST,\n payload: {uri, isFavorite}\n});\n\nexport const markSavedSearchAsFavorite = (uri, isFavorite) => ({\n type: SavedSearches.MARK_FAVORITE,\n payload: {uri, isFavorite}\n});\n\nexport const markSavedSearchAsGlobalFilterRequest = (uri, isGlobalFilter) => ({\n type: SavedSearches.MARK_GLOBAL_FILTER_REQUEST,\n payload: {uri, isGlobalFilter}\n});\n\nexport const markSavedSearchAsGlobalFilter = (savedSearch, isGlobalFilter) => ({\n type: SavedSearches.MARK_GLOBAL_FILTER,\n payload: {savedSearch, isGlobalFilter}\n});\n\nexport const changeSavedSearchNameRequest = (uri, name) => ({\n type: SavedSearches.CHANGE_ITEM_NAME_REQUEST,\n payload: {uri, name}\n});\n\nexport const changeSavedSearchName = (uri, name) => ({\n type: SavedSearches.CHANGE_ITEM_NAME,\n payload: {uri, name}\n});\n\nexport const setSavedSearchEditing = (uri, isEditing) => ({\n type: SavedSearches.SET_EDITING,\n payload: {uri, isEditing}\n});\n\nexport const deleteSelectedSavedSearchesRequest = () => ({\n type: SavedSearches.DELETE_SELECTED_ITEMS_REQUEST\n});\n\nexport const deleteSavedSearchesItemRequest = (uri) => ({\n type: SavedSearches.DELETE_ITEM_REQUEST,\n payload: uri\n});\n\nexport const deleteSavedSearchesItems = (uris) => ({\n type: SavedSearches.DELETE_ITEMS,\n payload: uris\n});\n\nexport const setSavedSearchesLoading = (loading) => ({\n type: SavedSearches.SET_LOADING,\n payload: loading\n});\n\nexport const setSavedSearchesSearchValue = (searchValue) => ({\n type: SavedSearches.SET_SEARCH_VALUE,\n payload: searchValue\n});\n\nexport const applySavedSearchItem = (uri, debounceTime = SEARCH_DEBOUNCE_TIME) => {\n return {type: SavedSearches.APPLY_ITEM, payload: {uri, debounceTime}};\n};\n\nexport const toggleSavedSearchesSorting = (sortField) => {\n return {type: SavedSearches.TOGGLE_SORT, payload: sortField};\n};\n","import {createSelector} from 'reselect';\nimport {curry, prop} from 'ramda';\n\nconst isSelected = prop('checked');\nconst calcSelectedNumber = (items) => items.filter(isSelected).length;\n\nexport const getSearchesSelectedItemsNumber = (itemsSelector) => createSelector(itemsSelector, calcSelectedNumber);\n\nexport const getAreAllSearchesSelected = (itemsSelector) =>\n createSelector(itemsSelector, (items) => !!items.length && items.length === calcSelectedNumber(items));\n\nexport const getIsSomeSearchesSelected = (itemsSelector) =>\n createSelector(itemsSelector, (items) => calcSelectedNumber(items) > 0);\n\nexport const getSelectedSearchesItems = curry((itemsSelector, state) => itemsSelector(state).filter(isSelected));\n","import {has, isNil, path, prop, propEq} from 'ramda';\nimport {\n getSearchesSelectedItemsNumber,\n getAreAllSearchesSelected,\n getIsSomeSearchesSelected,\n getSelectedSearchesItems\n} from './savedAndRecentCommon';\nimport {appId} from '../constants/constants';\nimport mdmModule from '@reltio/mdm-module';\n\nconst getSavedSearches = path([appId, 'savedSearches']);\n\nexport const getSavedSearchesItems = (state) => getSavedSearches(state).items;\nexport const getSavedSearchesItemByUri = (state, uri) => getSavedSearchesItems(state).find(propEq('uri', uri));\nexport const getSavedSearchesTotal = (state) => getSavedSearches(state).total;\nexport const getSavedSearchesPage = (state) => getSavedSearches(state).page;\nexport const getSavedSearchesRowsPerPage = (state) => getSavedSearches(state).rowsPerPage;\nexport const getSavedSearchesFavoriteOnly = (state) => getSavedSearches(state).favoriteOnly;\nexport const getSavedSearchesSearchValue = (state) => getSavedSearches(state).searchValue;\nexport const getSavedSearchesFindPublic = (state) => getSavedSearches(state).findPublic;\nexport const getSavedSearchesSorting = (state) => getSavedSearches(state).sorting;\nexport const getSavedSearchesLoading = (state) => getSavedSearches(state).loading;\nexport const getSavedSearchesPostSavingAction = (state) => getSavedSearches(state).postSavingAction;\n\nexport const getSavedSearchesSelectedItemsNumber = getSearchesSelectedItemsNumber(getSavedSearchesItems);\nexport const getAreAllSavedSearchesSelected = getAreAllSearchesSelected(getSavedSearchesItems);\nexport const getIsSomeSavedSearchesSelected = getIsSomeSearchesSelected(getSavedSearchesItems);\n\nexport const getSelectedSavedSearchesItems = getSelectedSearchesItems(getSavedSearchesItems);\n\nexport const getCurrentSavedSearch = (state) => path([appId, 'savedSearches', 'currentSearch'], state);\nexport const isChangedSavedSearch = (state) => path([appId, 'savedSearches', 'changeIndicator'], state);\nexport const isOwnSavedSearch = (state) => {\n const currentSavedSearch = getCurrentSavedSearch(state);\n if (isNil(currentSavedSearch)) {\n return false;\n }\n\n if (has('isOwnSearch')(currentSavedSearch)) {\n return currentSavedSearch.isOwnSearch;\n } else {\n return currentSavedSearch.owner === mdmModule.selectors.getUserName(state);\n }\n};\n\nexport const getSavedSearchUIState = prop('uiState');\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n dialogRoot: {\n minWidth: '600px',\n minHeight: '280px'\n },\n dialogTitle: {\n paddingTop: '19px'\n },\n dialogContentRoot: {\n paddingTop: '14px',\n display: 'flex',\n flexDirection: 'column'\n },\n dialogField: {\n marginTop: '0px',\n marginBottom: '24px'\n },\n dialogInput: {\n paddingTop: '21px',\n paddingBottom: '7px'\n },\n dialogFont: {\n fontSize: '14px'\n },\n dialogActions: {\n padding: '0 8px 8px 0'\n }\n});\n\nexport default useStyles;\n","import React, {useCallback, useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isNil} from 'ramda';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport {TextEditor} from '@reltio/components';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport {DropDownEditor} from '@reltio/components';\nimport {SAVED_SEARCHES_SHARING_OPTIONS, SAVED_SEARCHES_SHARING_OPTIONS_VALUES} from '../../../constants/constants';\nimport {createSavedSearches, updateSavedSearches} from '../../../actions/savedSearchesActions';\nimport {showSaveSearchDialog} from '../../../actions/uiActions';\nimport {getShowSaveSearchDialog} from '../../../selectors/ui';\nimport {getCurrentSavedSearch, isChangedSavedSearch, isOwnSavedSearch} from '../../../selectors/savedSearches';\nimport useStyles from './styles';\n\nconst closeSaveSearchDialog = () => showSaveSearchDialog(false);\n\nexport const SaveSearchDialog = ({\n isOpen,\n isAvailableUpdate,\n isChangedSavedSearch,\n currentSavedSearch,\n onClose,\n onSave,\n onUpdate\n}) => {\n const classes = useStyles();\n\n const [nameValue, setNameValue] = useState('');\n const [shareValue, setShareValue] = useState(SAVED_SEARCHES_SHARING_OPTIONS_VALUES.private);\n\n const canUpdateSavedSearch = isAvailableUpdate && currentSavedSearch && nameValue === currentSavedSearch.name;\n\n const isDisabledSaveButton =\n canUpdateSavedSearch &&\n currentSavedSearch.isPublic === (shareValue === SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public) &&\n !isChangedSavedSearch;\n\n const handleValueChange = useCallback((event) => {\n setNameValue(event.target.value);\n }, []);\n\n const handleShareValueChange = useCallback((newValue) => {\n setShareValue(newValue);\n }, []);\n\n const handleSave = useCallback(\n () => (canUpdateSavedSearch ? onUpdate({share: shareValue}) : onSave({name: nameValue, share: shareValue})),\n [nameValue, onSave, onUpdate, shareValue, canUpdateSavedSearch]\n );\n\n const commonInputProps = {\n InputProps: {classes: {input: classnames(classes.dialogInput, classes.dialogFont)}},\n InputLabelProps: {classes: {root: classes.dialogFont}}\n };\n\n useEffect(() => {\n if (isOpen) {\n const currentName = isAvailableUpdate ? currentSavedSearch.name : '';\n const currentShareValue =\n isAvailableUpdate && currentSavedSearch.isPublic\n ? SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public\n : SAVED_SEARCHES_SHARING_OPTIONS_VALUES.private;\n setNameValue(currentName);\n setShareValue(currentShareValue);\n }\n }, [isOpen, isAvailableUpdate, currentSavedSearch]);\n\n return (\n <Dialog onClose={onClose} open={isOpen} PaperProps={{classes: {root: classes.dialogRoot}}}>\n <DialogTitle classes={{root: classes.dialogTitle}}>{i18n.text('Save search')}</DialogTitle>\n <DialogContent classes={{root: classes.dialogContentRoot}}>\n <TextEditor\n classes={{root: classes.dialogField}}\n label={i18n.text('Name')}\n required\n variant=\"filled\"\n value={nameValue}\n onInput={handleValueChange}\n size=\"small\"\n autoFocus\n {...commonInputProps}\n />\n <DropDownEditor\n entries={SAVED_SEARCHES_SHARING_OPTIONS}\n TextFieldProps={{\n classes: {\n root: classes.dialogField\n },\n required: true,\n label: i18n.text('Share with'),\n variant: 'filled',\n size: 'small',\n ...commonInputProps\n }}\n value={shareValue}\n onChange={handleShareValueChange}\n />\n </DialogContent>\n <DialogActions classes={{root: classes.dialogActions}} disableSpacing>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button\n color=\"primary\"\n onClick={handleSave}\n disabled={canUpdateSavedSearch ? isDisabledSaveButton : nameValue.length === 0}\n >\n {canUpdateSavedSearch ? i18n.text('Save') : i18n.text('Save as')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nSaveSearchDialog.propTypes = {\n isOpen: PropTypes.bool,\n isAvailableUpdate: PropTypes.bool,\n isChangedSavedSearch: PropTypes.bool,\n currentSavedSearch: PropTypes.object,\n onClose: PropTypes.func.isRequired,\n onSave: PropTypes.func.isRequired,\n onUpdate: PropTypes.func.isRequired\n};\n\nexport default connect(\n (store) => {\n const currentSavedSearch = getCurrentSavedSearch(store);\n return {\n isOpen: getShowSaveSearchDialog(store),\n isAvailableUpdate: !isNil(currentSavedSearch) && isOwnSavedSearch(store),\n isChangedSavedSearch: isChangedSavedSearch(store),\n currentSavedSearch\n };\n },\n {\n onClose: closeSaveSearchDialog,\n onSave: createSavedSearches,\n onUpdate: updateSavedSearches\n }\n)(SaveSearchDialog);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\"\n}, props), React.createElement(\"g\", null, React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), React.createElement(\"g\", null, React.createElement(\"path\", {\n fillOpacity: \".54\",\n d: \"M5 20h14v-2H5v2zM19 9h-4V3H9v6H5l7 7 7-7z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M17 3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\",\n id: \"svg1966704254a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg1966704254b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1966704254a\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1966704254b)\",\n fill: \"#000\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\"\n}, props), React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}), React.createElement(\"path\", {\n fillOpacity: \".54\",\n d: \"M19.35 10.04A7.49 7.49 0 0012 4C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"12\",\n height: \"24\",\n viewBox: \"0 0 12 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M6 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\",\n id: \"svg2486556319a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2486556319b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2486556319a\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg2486556319b)\",\n fill: \"#000\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M0 0h12v24H0z\"\n})))));","import {useCallback} from 'react';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {SearchPerspectiveConfig, startProcessFromQuery} from '@reltio/mdm-sdk';\nimport {getUiPotentialMatchConfig} from '../selectors/ui';\nimport {showServerError} from '../utils/error';\nimport {showInfoNotificationWithAction} from '../actions/uiActions';\nimport {buildPureSearchQuery} from '../services/search/searchEngine';\nimport {getAllSearchParams} from '../selectors/search';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\n\nexport const useWorkflow = () => {\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const potentialMatchesConfig = useSelector(\n getUiPotentialMatchConfig\n ) as SearchPerspectiveConfig['potentialMatchesReview'];\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dispatch = useDispatch();\n const allParams = useSelector(getAllSearchParams);\n const {globalFilter} = useSelector(mdmModule.selectors.getGlobalSearchRequestOptions);\n const query = buildPureSearchQuery(allParams, [], globalFilter);\n const startPMReview = useCallback(() => {\n const {processType} = potentialMatchesConfig;\n startProcessFromQuery({\n workflowPath,\n processType,\n searchString: query,\n tenant,\n environment\n })\n .then(() => {\n dispatch(\n showInfoNotificationWithAction({\n message: i18n.text('Match reviews successfully submitted. Go to Inbox to view their status.'),\n actionToDispatch: mdmModuleUi.actions.openAppFromChocolateBar('Inbox'),\n actionLabel: i18n.text('Go to inbox'),\n autoHideDuration: null\n })\n );\n })\n .catch((e) => {\n showServerError(e);\n });\n }, [potentialMatchesConfig, workflowPath, query, tenant, environment, dispatch]);\n const hasMatches = query.includes('matches') || query.includes('matchRules');\n const isButtonVisible = canStartProcessInstanceSearchQuery && workflowPath && potentialMatchesConfig;\n const workflowConfig = isButtonVisible\n ? {\n disabled: !hasMatches,\n text: i18n.text('Request Match Review'),\n tooltip: i18n.text('Filter on match rules or potential matches to enable Potential Match Review'),\n onClick: startPMReview,\n id: '-request-match-review'\n }\n : null;\n\n return [workflowConfig];\n};\n","import {anyPass, assocPath, both, equals, has, path, pipe, prop} from 'ramda';\nimport {isLookupAttrType, isNested, isReference} from '@reltio/mdm-sdk';\nimport {BULK_UPDATE_OPERATIONS} from '../../constants/constants';\n\nconst isGroupAction = has('actions');\nconst flattenGroupAction = (groupAction) =>\n groupAction.actions.map(assocPath(['operationParameters', 'conditions'], groupAction.conditions));\n\nconst getAttrTypeFromAction = path(['operationParameters', 'attributeTypeData', 'attributeType']);\nconst getFieldNameFromAction = path(['operationParameters', 'attributeTypeData', 'fieldName']);\nconst getPinFromAction = path(['operationParameters', 'pin']);\nconst getAddNestedAttributeFromAction = path(['operationParameters', 'addNestedAttribute']);\nconst getAttributeValueFromAction = path(['operationParameters', 'attributeValue']);\nconst getAttributeValueToFindFromAction = path(['operationParameters', 'attributeValueToFind']);\n\nconst isOperationForNestedValue = anyPass([\n equals(BULK_UPDATE_OPERATIONS.AddNew),\n equals(BULK_UPDATE_OPERATIONS.ReplaceAllWith)\n]);\n\nconst isOperationForValue = anyPass([\n equals(BULK_UPDATE_OPERATIONS.AddNew),\n equals(BULK_UPDATE_OPERATIONS.ReplaceAllWith),\n equals(BULK_UPDATE_OPERATIONS.FindAndReplace)\n]);\n\nconst isOperationForReferenceValue = equals(BULK_UPDATE_OPERATIONS.AddNew);\n\nconst isActionWithNestedAttrValue = both(\n pipe(getAttrTypeFromAction, isNested),\n pipe(prop('operation'), isOperationForNestedValue)\n);\n\nconst isActionWithReferenceAttrValue = both(\n pipe(getAttrTypeFromAction, isReference),\n pipe(prop('operation'), isOperationForReferenceValue)\n);\n\nconst isActionWithSimpleAttrValueWithLookup = both(\n pipe(getAttributeValueFromAction, isLookupAttrType),\n pipe(prop('operation'), isOperationForValue)\n);\n\nexport {\n flattenGroupAction,\n getAttributeValueFromAction,\n getFieldNameFromAction,\n getPinFromAction,\n getAddNestedAttributeFromAction,\n getAttributeValueToFindFromAction,\n isActionWithSimpleAttrValueWithLookup,\n isActionWithNestedAttrValue,\n isActionWithReferenceAttrValue,\n isGroupAction\n};\n","import {BULK_UPDATE_OPERATIONS} from '../../constants/constants';\r\n\r\nexport function editorsForOperation(operation) {\r\n switch (operation) {\r\n case BULK_UPDATE_OPERATIONS.AddNew:\r\n case BULK_UPDATE_OPERATIONS.RepointReference:\r\n case BULK_UPDATE_OPERATIONS.ReplaceAllWith: {\r\n return ['attributeValue'];\r\n }\r\n case BULK_UPDATE_OPERATIONS.FindAndReplace: {\r\n return ['attributeValueToFind', 'attributeValue'];\r\n }\r\n case BULK_UPDATE_OPERATIONS.FindAndRemove: {\r\n return ['attributeValueToFind'];\r\n }\r\n default:\r\n return [];\r\n }\r\n}\r\n","import {cleanAttributesWith, getReferencedEntityFromAttrValue, isEmptyValue} from '@reltio/mdm-sdk';\n\nimport {editorsForOperation} from './editorsForOperation';\nimport {isActionWithNestedAttrValue, isActionWithReferenceAttrValue} from './helpers';\n\nexport const isValidBulkUpdateSimpleAction = (action) => {\n if (!action.operation || !action.operationParameters) {\n return false;\n }\n const isNestedAttrValue = isActionWithNestedAttrValue(action);\n const isReferenceAttrValue = isActionWithReferenceAttrValue(action);\n const requiredValues = editorsForOperation(action.operation);\n for (let property of requiredValues) {\n const value = action.operationParameters[property];\n if (\n isEmptyValue(value) ||\n (isReferenceAttrValue && isEmptyValue(getReferencedEntityFromAttrValue(value))) ||\n (isNestedAttrValue && isEmptyValue(cleanAttributesWith({deleteEmptyComplex: true})(value.value)))\n ) {\n return false;\n }\n }\n\n return true;\n};\n","import {lensPath, over, path} from 'ramda';\n\nimport {editorsForOperation} from './editorsForOperation';\nimport {isActionWithNestedAttrValue, isActionWithReferenceAttrValue} from './helpers';\nimport {cleanAttributesWith} from '@reltio/mdm-sdk';\n\nexport const cleanActionValues = (action) => {\n const isNestedAttrValue = isActionWithNestedAttrValue(action);\n const isReferenceAttrValue = isActionWithReferenceAttrValue(action);\n if (isNestedAttrValue || isReferenceAttrValue) {\n const propNames = editorsForOperation(action.operation);\n return propNames.reduce((updatedAction, propName) => {\n const pathToComplexValue = ['operationParameters', propName, 'value'];\n const value = path(pathToComplexValue, updatedAction);\n if (value) {\n const lens = lensPath(pathToComplexValue);\n return over(lens, cleanAttributesWith({deleteEmptyComplex: true}), updatedAction);\n }\n return updatedAction;\n }, action);\n }\n return action;\n};\n","import {__, equals, evolve, filter, flatten, gt, ifElse, length, map, path, pipe, prop, when} from 'ramda';\nimport {createSelector} from 'reselect';\n\nimport {appId, BULK_UPDATE_SELECTION_MODES} from '../constants/constants';\nimport {getActiveEntityTypeTab, getShowAdvancedSearch} from './ui';\nimport {getSelectedEntityTypes} from './facet';\nimport {getDisplayedTotal} from './search';\nimport {getEntityTypesFromAllGroups} from './advancedSearch';\nimport {isGroupAction} from '../services/bulkUpdate/helpers';\nimport {isValidBulkUpdateSimpleAction} from '../services/bulkUpdate/validation';\nimport {cleanActionValues} from '../services/bulkUpdate/values';\n\nexport const getBulkUpdateOperation = (state) => state[appId].bulkUpdate.operation;\nexport const getBulkUpdateActiveStep = (state) => state[appId].bulkUpdate.activeStep;\nexport const getBulkUpdateLoading = (state) => state[appId].bulkUpdate.loading;\n\nexport const getBulkUpdateEntityTypeUri = (state) => {\n const entityTypeValues = getShowAdvancedSearch(state)\n ? getEntityTypesFromAllGroups(state)\n : getSelectedEntityTypes(state);\n const activeEntityType = getActiveEntityTypeTab(state);\n const isOnlyOneEntityTypeSelected = activeEntityType || entityTypeValues.length === 1;\n return isOnlyOneEntityTypeSelected ? activeEntityType || entityTypeValues[0] : null;\n};\nexport const getBulkUpdateObjects = path([appId, 'bulkUpdate', 'objects']);\nexport const getBulkUpdateTotal = (state) => getBulkUpdateObjects(state).total;\nexport const getBulkUpdateSelectionMode = (state) => getBulkUpdateObjects(state).selectionMode;\nexport const getBulkUpdateEntities = (state) => getBulkUpdateObjects(state).entities;\nexport const getBulkUpdateSelectedEntities = (state) => getBulkUpdateObjects(state).selectedEntities;\nexport const getBulkUpdatePage = (state) => getBulkUpdateObjects(state).page;\nexport const getBulkUpdateRowsPerPage = (state) => getBulkUpdateObjects(state).rowsPerPage;\nexport const getBulkUpdateSortField = (state) => getBulkUpdateObjects(state).sortField;\nexport const getBulkUpdateSortOrder = (state) => getBulkUpdateObjects(state).sortOrder;\nexport const getBulkUpdateSelectedColumns = (state) => getBulkUpdateObjects(state).selectedColumns;\nexport const getBulkUpdateFilterText = (state) => getBulkUpdateObjects(state).filterText;\n\nexport const getIsIncludeSelectionMode = pipe(getBulkUpdateSelectionMode, equals(BULK_UPDATE_SELECTION_MODES.include));\nexport const getBulkUpdateSelectedEntitiesNumber = ifElse(\n getIsIncludeSelectionMode,\n pipe(getBulkUpdateSelectedEntities, length),\n (state) => {\n const selectedEntitiesNumber = getBulkUpdateSelectedEntities(state).length;\n const total = getDisplayedTotal(state);\n return total - selectedEntitiesNumber;\n }\n);\nexport const getIsChangesStepEnabled = pipe(getBulkUpdateSelectedEntitiesNumber, gt(__, 0));\n\nexport const getBulkUpdateActions = (state) => state[appId].bulkUpdate.actions;\n\nexport const getBulkUpdateValidClearedActions = createSelector(\n getBulkUpdateActions,\n pipe(\n map(\n ifElse(\n isGroupAction,\n evolve({\n actions: pipe(map(cleanActionValues), filter(isValidBulkUpdateSimpleAction))\n }),\n cleanActionValues\n )\n ),\n filter(ifElse(isGroupAction, pipe(path(['actions', 'length']), gt(__, 0)), isValidBulkUpdateSimpleAction))\n )\n);\n\nexport const getBulkUpdateFlatActions = createSelector(\n getBulkUpdateActions,\n pipe(map(when(isGroupAction, prop('actions'))), flatten)\n);\n\nexport const getIsReviewStepEnabled = (state) => {\n const actions = getBulkUpdateFlatActions(state);\n return actions.length !== 0 && actions.every(isValidBulkUpdateSimpleAction);\n};\n\nexport const getBulkUpdateRequestPending = (state) => state[appId].bulkUpdate.requestPending;\n","const writeTextPolyfill = (text) =>\n new Promise((resolve, reject) => {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n // Avoid scrolling to bottom\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n resolve();\n } catch (err) {\n reject(err);\n }\n\n document.body.removeChild(textArea);\n });\n\nexport const copyTextToClipboard = (text) => {\n if (navigator.clipboard) {\n return navigator.clipboard.writeText(text);\n } else {\n return writeTextPolyfill(text);\n }\n};\n","import {curry, pick, pipe} from 'ramda';\nimport parseSearchState, {replaceSearchResultsColumns} from './parsing';\n\nexport const getSavedSearchIdFromUri = (uri) => uri.split('savedSearches/')[1];\n\nexport const parseUIState = curry((metadata, dataTenants, canUserReadWorkflowDataTask, search) => {\n try {\n const uiState = pipe(parseSearchState, replaceSearchResultsColumns(null))(\n metadata,\n search.uiState.state || search.uiState,\n {},\n dataTenants,\n canUserReadWorkflowDataTask\n );\n return {\n ...search,\n originalUiState: search.uiState,\n uiState\n };\n } catch (e) {\n const errors = (search.errors || []).push(e);\n return {\n ...search,\n originalUiState: search.uiState,\n uiState: {},\n errors\n };\n }\n});\n\nexport const mergeNotEmptyAndSelectedFacets = ({facetsData, facetsConfig}) => {\n const configs = facetsConfig.reduce((result, config) => {\n result[config.fieldName] = config;\n return result;\n }, {});\n return Object.keys(configs).reduce((result, fieldName) => {\n const newConfig = pick(['entityTypeUri', 'dataTenant'], configs[fieldName]);\n const newFacetData = pick(['values', 'showAllItems'], facetsData[fieldName]);\n result[fieldName] = {fieldName, ...newFacetData, ...newConfig};\n return result;\n }, {});\n};\n\nexport const prepareSavedSearchForSave = (savedSearch) => ({\n ...savedSearch,\n uiState: savedSearch.originalUiState\n});\n\nexport const getApiCompatibleSavedSearch = pipe(\n prepareSavedSearchForSave,\n pick([\n 'createdDate',\n 'description',\n 'isFavorite',\n 'isPublic',\n 'name',\n 'owner',\n 'query',\n 'uiState',\n 'updatedDate',\n 'uri'\n ])\n);\n","import {map, evolve, omit, pick, pipe} from 'ramda';\n\nconst serializeAdvancedSearch = pipe(\n map(\n evolve({\n attributes: map(\n evolve({\n data: pick(['uri', 'entityTypeUri', 'fieldName', 'dataTenant'])\n })\n )\n })\n ),\n map(omit(['autoAddedEntityTypes']))\n);\n\nexport default serializeAdvancedSearch;\n","import {createSelector} from 'reselect';\n\nimport {\n getActiveEntityTypeTab,\n getEntityTypeTab,\n getPreviewPanelMode,\n getSerializedSearchResultsColumns,\n getSearchResultsMode\n} from './ui';\nimport {\n getMapSearchObjectForStatePersisting,\n getReadableQuery,\n getSortField,\n getSortOrder,\n getCurrentTenant\n} from './search';\nimport {getFacetsConfigs, getFacetsData} from './facet';\nimport {mergeNotEmptyAndSelectedFacets} from '../services/search/savedSearches';\nimport {getQueryBuilderGroups} from './advancedSearch';\nimport serializeAdvancedSearch from '../services/search/serialization/serializeAdvancedSearch';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEmpty, pipe} from 'ramda';\n\nconst getViewState = createSelector(\n getSearchResultsMode,\n getEntityTypeTab,\n (state) => getSortField(state, {entityTypeUri: getActiveEntityTypeTab(state)}),\n (state) => getSortOrder(state, {entityTypeUri: getActiveEntityTypeTab(state)}),\n getSerializedSearchResultsColumns,\n getPreviewPanelMode,\n (state, keepSearchResultsColumns) => keepSearchResultsColumns,\n (\n searchResultsMode,\n entityTypeTab,\n sortField,\n sortOrder,\n tabs,\n previewPanelMode,\n keepSearchResultsColumns = false\n ) => ({\n searchResultsMode,\n entityTypeTab,\n sortField,\n sortOrder,\n tabs: keepSearchResultsColumns ? tabs : null,\n previewPanelMode\n })\n);\n\nconst getFacetsState = createSelector(getFacetsData, getFacetsConfigs, (facetsData, facetsConfig) =>\n mergeNotEmptyAndSelectedFacets({facetsData, facetsConfig})\n);\n\nconst getAdvancedState = pipe(getQueryBuilderGroups, serializeAdvancedSearch);\n\nexport const getSerializedSearchState = createSelector(\n getViewState,\n getFacetsState,\n getAdvancedState,\n getCurrentTenant,\n mdmModule.selectors.getSearchOptions,\n mdmModule.selectors.getSearchKeyword,\n getMapSearchObjectForStatePersisting,\n (state) => getReadableQuery(state), // to prevent passing 'keepSearchResultsColumns' argument,\n (view, facets, advanced, currentTenant, searchOptions, keyword, map, readableQuery) => {\n const serializedState = {\n view,\n facets,\n advanced,\n currentTenant,\n searchOptions,\n keyword,\n map,\n version: '2.0'\n };\n if (!isEmpty(advanced)) {\n serializedState.readableQuery = readableQuery;\n }\n return serializedState;\n }\n);\n","import {useState, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {jsonRequest} from '../../utils/network';\nimport {pipe, prop} from 'ramda';\nimport {getSearchLink} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {showServerError} from '../../utils/error';\nimport {getSerializedSearchState} from '../../selectors/serializedState';\nimport {getCurrentTenant} from '../../selectors/search';\n\nconst useSearchLinkGenerator = ({enabled}) => {\n const [link, setLink] = useState('');\n const searchState = useSelector(getSerializedSearchState);\n const currentTenant = useSelector(getCurrentTenant);\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n\n useEffect(() => {\n if (enabled) {\n jsonRequest('/searchLink', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ...searchState,\n currentTenant\n })\n })\n .then(pipe(prop('link'), getSearchLink(uiPath), setLink))\n .catch(showServerError);\n } else {\n setLink('');\n }\n }, [enabled]); //eslint-disable-line\n\n return link;\n};\n\nexport default useSearchLinkGenerator;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n title: {\n marginBottom: '-10px'\n },\n linkField: {\n margin: '10px 0'\n },\n linkInput: {\n textOverflow: 'ellipsis',\n fontSize: '14px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport TextField from '@mui/material/TextField';\nimport {copyTextToClipboard} from '../../utils/clipboard';\nimport useSearchLinkGenerator from './useSearchLinkGenerator';\nimport {pipe} from 'ramda';\nimport {noop} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst ShareLinkDialog = ({open, onClose = noop}) => {\n const styles = useStyles();\n\n const link = useSearchLinkGenerator({enabled: open});\n const copyLink = () => copyTextToClipboard(link);\n\n return (\n <Dialog open={open} onClose={onClose}>\n <DialogTitle className={styles.title}>{i18n.text('Share link with search results')}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {i18n.text(\n 'With the URL link, anyone can view these search results.' +\n ' Paste this link in email or IM for testing, analyze, sharing and more.'\n )}\n </DialogContentText>\n <TextField\n className={styles.linkField}\n InputProps={{\n classes: {\n input: styles.linkInput\n }\n }}\n label={link ? 'URL' : ''}\n placeholder={i18n.text('Loading URL...')}\n value={link}\n variant={'filled'}\n fullWidth={true}\n size={'small'}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!link} onClick={pipe(copyLink, onClose)} color=\"primary\" autoFocus>\n {i18n.text('Copy link')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nShareLinkDialog.propTypes = {\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default ShareLinkDialog;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n marginRight: '-4px'\n },\n exportButtonDisabled: {\n opacity: '0.54'\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getCanSaveSearch, getDataTenant} from '../../selectors/search';\nimport {getUiConfig} from '../../selectors/ui';\nimport {showSaveSearchDialog} from '../../actions/uiActions';\nimport {exportResults, openDataLoader} from '../../actions/searchActions';\nimport {DropDownMenuButton, SmallIconButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport SaveSearchDialog from './SaveSearchDialog/SaveSearchDialog';\nimport ExportResultIcon from './icons/ExportResult.svg';\nimport SaveIcon from './icons/Save.svg';\nimport DataLoad from './icons/DataLoad.svg';\nimport MoreVertIcon from './icons/MoreVert.svg';\nimport {useWorkflow} from '../../hooks/useWorkflow';\nimport {useBulkUpdateOpener} from '../../hooks/useBulkUpdateOpener';\nimport ShareLinkDialog from '../ShareLinkDialog/ShareLinkDialog';\nimport useStyles from './styles';\n\n//customActions are supposed to be used by customers\nconst ActionsMenu = ({customActions = []}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const canExport = useSelector(mdmModule.selectors.getCanUserMakeExport);\n const hasDataLoader = useSelector(mdmModule.selectors.getCanUserOpenDataLoader);\n const isDataTenantActive = !!useSelector(getDataTenant);\n const {consoleExportApp: consoleExportAppConfig} = useSelector(getUiConfig);\n const hasExport = consoleExportAppConfig && canExport;\n const onExport = useCallback(() => {\n dispatch(exportResults(consoleExportAppConfig));\n }, [consoleExportAppConfig, dispatch]);\n const onOpenDataLoader = useCallback(() => {\n dispatch(openDataLoader());\n }, [dispatch]);\n\n const canSaveSearch = useSelector(getCanSaveSearch);\n const handleSaveAsClick = useCallback(() => {\n dispatch(showSaveSearchDialog(true));\n }, [dispatch]);\n\n const actions = [];\n\n const [workflowConfig] = useWorkflow();\n if (workflowConfig) {\n actions.push(workflowConfig);\n }\n const [bulkUpdateConfig] = useBulkUpdateOpener();\n if (bulkUpdateConfig) {\n actions.push(bulkUpdateConfig);\n }\n const [showLinkDialog, setShowLinkDialog] = useState(false);\n const openLinkDialog = () => setShowLinkDialog(true);\n const closeLinkDialog = () => setShowLinkDialog(false);\n actions.push({\n text: i18n.text('Share link'),\n onClick: openLinkDialog,\n id: '-share-link'\n });\n actions.push(...customActions);\n\n return (\n <>\n {hasDataLoader && (\n <SmallIconButtonWithTooltip\n icon={DataLoad}\n size=\"L\"\n onClick={onOpenDataLoader}\n tooltipTitle={i18n.text('Load data')}\n className={classes.button}\n data-reltio-id=\"reltio-search-actions-menu-load-data\"\n />\n )}\n {hasExport && (\n <SmallIconButtonWithTooltip\n icon={ExportResultIcon}\n size=\"L\"\n onClick={onExport}\n tooltipTitle={i18n.text('Export')}\n showForDisabled\n classes={{disabled: classes.exportButtonDisabled}}\n className={classes.button}\n disabled={isDataTenantActive}\n data-reltio-id=\"reltio-search-actions-menu-export\"\n />\n )}\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Save')}\n showForDisabled\n className={classnames({[classes.button]: actions.length > 0})}\n disabled={!canSaveSearch}\n onClick={handleSaveAsClick}\n icon={SaveIcon}\n size=\"L\"\n data-reltio-id=\"reltio-search-actions-menu-save\"\n />\n {actions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L',\n 'data-reltio-id': 'reltio-search-actions-menu'\n }}\n menuId={'custom-actions'}\n menuItems={actions}\n />\n )}\n <SaveSearchDialog />\n <ShareLinkDialog open={showLinkDialog} onClose={closeLinkDialog} />\n </>\n );\n};\n\nActionsMenu.propTypes = {\n customActions: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n tooltip: PropTypes.string,\n onClick: PropTypes.func\n })\n )\n};\n\nexport default ActionsMenu;\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {getAllowedEntityTypes, getUiConfig} from '../selectors/ui';\nimport {getDataTenant} from '../selectors/search';\nimport {showBulkUpdate} from '../actions/uiActions';\nimport {getBulkUpdateEntityTypeUri} from '../selectors/bulkUpdate';\nimport {entityTypeProcessing} from '../services/search/facet';\n\nexport const useBulkUpdateOpener = () => {\n const Errors = {\n NO_ENTITY_TYPE: i18n.text('Please select exactly one entity type or switch to table mode')\n };\n const dispatch = useDispatch();\n const uiConfig = useSelector(getUiConfig);\n const canUserMakeBulkUpdate = useSelector(mdmModule.selectors.getCanUserMakeBulkUpdate);\n const isDataTenantActive = !!useSelector(getDataTenant);\n const bulkUpdateEntityTypeUri: string | null = useSelector(getBulkUpdateEntityTypeUri);\n const isOnlyOneEntityTypeSelected = !!bulkUpdateEntityTypeUri;\n const openBulkUpdateDialog = () => dispatch(showBulkUpdate(true));\n const isBulkUpdateEnabled = (uiConfig || {})['bulk-update'];\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const allowedEntityTypes = useSelector(getAllowedEntityTypes);\n\n const isAllowedEntityTypeUri = (bulkUpdateEntityTypeUri: string | null): boolean => {\n const entityTypesFacetData = entityTypeProcessing(metadata, {}, allowedEntityTypes);\n return entityTypesFacetData.some((entityType) => entityType.value === bulkUpdateEntityTypeUri);\n };\n\n const bulkUpdateConfig =\n isBulkUpdateEnabled && canUserMakeBulkUpdate && !isDataTenantActive\n ? {\n disabled: !isOnlyOneEntityTypeSelected || !isAllowedEntityTypeUri(bulkUpdateEntityTypeUri),\n text: i18n.text('Bulk update'),\n tooltip: isOnlyOneEntityTypeSelected ? null : Errors.NO_ENTITY_TYPE,\n onClick: openBulkUpdateDialog,\n id: '-bulk-update'\n }\n : null;\n\n return [bulkUpdateConfig];\n};\n","import {makeStyles} from '@mui/styles';\n\nconst indicatorColor = '#FF1744';\n\nconst useStyles = makeStyles({\n indicatorWrapper: {\n width: 0,\n height: '20px',\n position: 'relative'\n },\n indicatorTooltipArea: {\n width: '10px',\n height: '20px'\n },\n indicator: {\n width: '3px',\n height: '3px',\n backgroundColor: indicatorColor,\n border: '1px solid',\n borderColor: indicatorColor,\n borderRadius: '3px',\n position: 'absolute',\n right: '-7px'\n },\n wrapper: {\n display: 'inline-flex',\n position: 'relative',\n overflow: 'hidden'\n },\n for: {\n color: 'rgba(0,0,0,0.6)',\n marginLeft: '8px',\n marginRight: '8px'\n },\n label: {\n color: 'rgba(0,0,0,0.87)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\nimport {getCurrentSavedSearch, isChangedSavedSearch} from '../../selectors/savedSearches';\n\nimport useStyles from './styles';\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nconst SavedSearchLabel = () => {\n const currentSearch = useSelector(getCurrentSavedSearch);\n const isChanged = useSelector(isChangedSavedSearch);\n const classes = useStyles();\n if (!currentSearch) return null;\n const searchName = currentSearch.name;\n return (\n <>\n <div className={classes.wrapper}>\n <Typography variant=\"body2\" component={'span'} classes={{root: classes.for}}>\n {i18n.text('for')}\n </Typography>\n <ExpandedValueTooltip value={searchName}>\n <Typography variant=\"body2\" classes={{root: classes.label}}>\n {searchName}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n {isChanged && (\n <Tooltip title={i18n.text('Saved search has changed')} placement=\"bottom\">\n <div className={classes.indicatorWrapper}>\n <div className={classes.indicator} />\n <div className={classes.indicatorTooltipArea} />\n </div>\n </Tooltip>\n )}\n </>\n );\n};\n\nexport default SavedSearchLabel;\n","import {makeStyles} from '@mui/styles';\n\nconst DIALOG_HEIGHT = '70vh';\n\nexport const useStyles = makeStyles({\n dialogPaper: {\n height: DIALOG_HEIGHT\n },\n contentRoot: {\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n tabContent: {\n display: 'flex',\n flex: '1 1 auto'\n },\n tabsWrapper: {\n padding: '0 24px'\n }\n});\n","import {alpha} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: 17,\n paddingBottom: 11,\n paddingLeft: 15,\n paddingRight: 15\n },\n selected: {\n backgroundColor: alpha(theme.palette.primary.main, 0.12)\n }\n}));\n","import {path, filter, pipe, curry} from 'ramda';\nimport {\n getSearchesSelectedItemsNumber,\n getAreAllSearchesSelected,\n getIsSomeSearchesSelected,\n getSelectedSearchesItems\n} from './savedAndRecentCommon';\nimport {appId} from '../constants/constants';\n\nconst getRecentSearches = path([appId, 'recentSearches']);\n\nexport const getRecentSearchesItems = (state) => getRecentSearches(state).items;\nexport const getRecentSearchesFilterWord = (state) => getRecentSearches(state).filterWord;\n\nconst includes = curry(\n (word, search) => !word || (search && search.name.toLocaleLowerCase().includes(word.toLocaleLowerCase()))\n);\nexport const getFilteredRecentSearches = (state) =>\n pipe(getRecentSearchesItems, filter(includes(getRecentSearchesFilterWord(state))))(state);\nexport const getRecentSearchesLoading = (state) => getRecentSearches(state).loading;\n\nexport const getRecentSearchesSelectedItemsNumber = getSearchesSelectedItemsNumber(getRecentSearchesItems);\nexport const getAreAllRecentSearchesSelected = getAreAllSearchesSelected(getRecentSearchesItems);\nexport const getIsSomeRecentSearchesSelected = getIsSomeSearchesSelected(getRecentSearchesItems);\n\nexport const getSelectedRecentSearchesItems = getSelectedSearchesItems(getRecentSearchesItems);\nexport const getLastSavedRecentSearch = (state) => getRecentSearches(state).lastSavedRecentSearch;\n","export default {\n CREATE: 'RECENT_SEARCHES_CREATE',\n LOAD: 'RECENT_SEARCHES_LOAD',\n SET_ITEMS: 'RECENT_SEARCHES_SET_ITEMS',\n SET_ITEM_TOTAL: 'RECENT_SEARCHES_SET_ITEM_TOTAL',\n SELECT_ITEM: 'RECENT_SEARCHES_SELECT_ITEM',\n SELECT_ALL_ITEMS: 'RECENT_SEARCHES_SELECT_ALL_ITEMS',\n DESELECT_ALL_ITEMS: 'RECENT_SEARCHES_DESELECT_ALL_ITEMS',\n DELETE_SELECTED_ITEMS_REQUEST: 'RECENT_SEARCHES_DELETE_SELECTED_ITEMS_REQUEST',\n DELETE_ITEMS: 'RECENT_SEARCHES_DELETE_ITEMS',\n DELETE_ITEM_REQUEST: 'RECENT_SEARCHES_DELETE_ITEM_REQUEST',\n SET_LOADING: 'RECENT_SEARCHES_SET_LOADING',\n SET_SEARCH_VALUE: 'RECENT_SEARCHES_SET_SEARCH_VALUE',\n SET_LAST_SAVED: 'RECENT_SEARCHES_SET_LAST_SAVED',\n APPLY_ITEM: 'RECENT_SEARCHES_APPLY_ITEM'\n};\n","import {RecentSearches} from '../constants/actionTypes';\nimport {SEARCH_DEBOUNCE_TIME} from '../constants/constants';\n\nexport const createRecentSearch = (recentSearch) => {\n return {type: RecentSearches.CREATE, payload: recentSearch};\n};\n\nexport const loadRecentSearches = () => ({\n type: RecentSearches.LOAD\n});\n\nexport const setRecentSearchesItems = (items) => ({\n type: RecentSearches.SET_ITEMS,\n payload: items\n});\n\nexport const setRecentSearchItemTotal = (searchCreatedDate, total) => ({\n type: RecentSearches.SET_ITEM_TOTAL,\n payload: {searchCreatedDate, total}\n});\n\nexport const selectRecentSearchItem = (searchCreatedDate, checked) => ({\n type: RecentSearches.SELECT_ITEM,\n payload: {searchCreatedDate, checked}\n});\n\nexport const selectAllRecentSearchItems = () => ({\n type: RecentSearches.SELECT_ALL_ITEMS\n});\n\nexport const deselectAllRecentSearchItems = () => ({\n type: RecentSearches.DESELECT_ALL_ITEMS\n});\n\nexport const deleteSelectedRecentSearchesRequest = () => ({\n type: RecentSearches.DELETE_SELECTED_ITEMS_REQUEST\n});\n\nexport const deleteRecentSearchesItems = (searches) => ({\n type: RecentSearches.DELETE_ITEMS,\n payload: searches\n});\n\nexport const deleteRecentSearchesItemRequest = (searchItem) => ({\n type: RecentSearches.DELETE_ITEM_REQUEST,\n payload: searchItem\n});\n\nexport const setRecentSearchesLoading = (loading) => ({\n type: RecentSearches.SET_LOADING,\n payload: loading\n});\n\nexport const setRecentSearchesSearchValue = (searchValue) => ({\n type: RecentSearches.SET_SEARCH_VALUE,\n payload: searchValue\n});\n\nexport const setRecentSearchesLastSaved = (hash) => ({\n type: RecentSearches.SET_LAST_SAVED,\n payload: hash\n});\n\nexport const applyRecentSearchItem = (search, debounceTime = SEARCH_DEBOUNCE_TIME) => {\n return {type: RecentSearches.APPLY_ITEM, payload: {search, debounceTime}};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n main: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flex: 1\n },\n title: {\n display: 'flex',\n alignItems: 'center'\n },\n filterButton: {\n marginLeft: '10px',\n minWidth: 0\n },\n deleteButton: {\n marginTop: '-5px'\n },\n searchBox: {\n flex: '1 1 auto',\n width: '100%',\n maxWidth: '323px'\n },\n flex1: {\n flex: 1\n }\n});\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n closeButton: {\n marginRight: '10px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport {SmallIconButton} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst CloseButton = ({onClose}) => {\n const styles = useStyles();\n return <SmallIconButton size=\"L\" icon={CloseIcon} className={styles.closeButton} onClick={onClose} />;\n};\n\nCloseButton.propTypes = {\n onClose: PropTypes.func\n};\n\nexport default CloseButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\nimport {useStyles} from './styles';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport CloseButton from '../CloseButton/CloseButton';\n\nconst SelectedMode = ({selectedNumber, onDelete, onClose}) => {\n const styles = useStyles();\n return (\n <>\n <div className={classnames(styles.title, styles.flex1)}>\n <CloseButton onClose={onClose} />\n <Typography color=\"primary\">{i18n.text('Selected: ${count}', {count: selectedNumber})}</Typography>\n </div>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Delete')}\n size=\"L\"\n icon={DeleteIcon}\n className={styles.deleteButton}\n onClick={onDelete}\n />\n </>\n );\n};\n\nSelectedMode.propTypes = {\n selectedNumber: PropTypes.number,\n onClose: PropTypes.func,\n onDelete: PropTypes.func\n};\n\nexport default SelectedMode;\n","import {alpha} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n changedFiltersIndicator: {\n backgroundColor: alpha(theme.palette.primary.main, 0.12)\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '10px',\n paddingLeft: '23px',\n paddingRight: '23px',\n width: '48%',\n maxWidth: '480px'\n },\n title: {\n marginBottom: '30px'\n },\n favoriteOnlyControlRoot: {\n marginTop: '27px'\n },\n favoriteOnlyControlLabel: {\n fontSize: '0.8rem'\n },\n favoriteOnlyCheckbox: {\n marginRight: '20px'\n },\n buttonsGroup: {\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: '35px',\n marginLeft: '-11px',\n marginRight: '-11px'\n },\n cancelButton: {\n marginRight: '10px'\n },\n shareWithRoot: {\n padding: '20px 16px 7px',\n fontSize: '0.85rem'\n },\n shareWithLabel: {\n top: '-3px',\n left: '4px'\n },\n shareWithMenuItem: {\n fontSize: '0.85rem'\n }\n}));\n","import {SAVED_SEARCHES_SHARING_OPTIONS_VALUES} from '../../constants/constants';\n\nexport const sharingValueToEditor = (value) =>\n value ? SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public : SAVED_SEARCHES_SHARING_OPTIONS_VALUES.private;\nexport const sharingValueFromEditor = (value) => value === SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public;\n","import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport Popover from '@mui/material/Popover';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport Button from '@mui/material/Button';\nimport FilterIcon from '@mui/icons-material/FilterList';\n\nimport {useStyles} from './styles';\nimport {DropDownEditor} from '@reltio/components';\nimport {SAVED_SEARCHES_SHARING_OPTIONS} from '../../../../constants/constants';\nimport {sharingValueFromEditor, sharingValueToEditor} from '../../common';\nimport {getSavedSearchesFavoriteOnly, getSavedSearchesFindPublic} from '../../../../selectors/savedSearches';\nimport {setSavedSearchesFilters} from '../../../../actions/savedSearchesActions';\n\nconst INITIAL_FIND_PUBLIC_VALUE = true;\nconst INITIAL_FAVORITE_ONLY_VALUE = false;\n\nconst FilterButton = ({className, findPublic, favoriteOnly, onChangeFilters}) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const [showPublic, setShowPublic] = useState(findPublic);\n const [showFavoriteOnly, setShowFavoriteOnly] = useState(favoriteOnly);\n\n useEffect(() => {\n setShowPublic(findPublic);\n setShowFavoriteOnly(favoriteOnly);\n }, [findPublic, favoriteOnly]);\n\n const togglePopup = useCallback(() => setIsOpen((open) => !open), []);\n const onChangeShowFavorite = useCallback((e) => setShowFavoriteOnly(e.target.checked), []);\n\n const onApply = useCallback(() => {\n onChangeFilters({\n findPublic: showPublic,\n favoriteOnly: showFavoriteOnly\n });\n togglePopup();\n }, [togglePopup, onChangeFilters, showPublic, showFavoriteOnly]);\n\n const onCancel = useCallback(() => {\n setShowPublic(findPublic);\n setShowFavoriteOnly(favoriteOnly);\n togglePopup();\n }, [togglePopup, findPublic, favoriteOnly]);\n\n const onClearAll = useCallback(() => {\n setShowPublic(INITIAL_FIND_PUBLIC_VALUE);\n setShowFavoriteOnly(INITIAL_FAVORITE_ONLY_VALUE);\n }, []);\n\n const isFiltersCleared =\n showPublic === INITIAL_FIND_PUBLIC_VALUE && showFavoriteOnly === INITIAL_FAVORITE_ONLY_VALUE;\n\n return (\n <>\n <Button\n ref={buttonRef}\n color={isFiltersCleared ? 'inherit' : 'primary'}\n classes={{\n root: className,\n textPrimary: styles.changedFiltersIndicator\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Filter')}\n </Typography>\n <DropDownEditor\n entries={SAVED_SEARCHES_SHARING_OPTIONS}\n TextFieldProps={{\n InputLabelProps: {classes: {root: styles.shareWithLabel}},\n label: i18n.text('Shared with'),\n variant: 'filled'\n }}\n classes={{\n root: styles.shareWithRoot,\n menuItem: styles.shareWithMenuItem\n }}\n fullWidth\n value={sharingValueToEditor(showPublic)}\n onChange={pipe(sharingValueFromEditor, setShowPublic)}\n />\n <FormControlLabel\n classes={{\n root: styles.favoriteOnlyControlRoot,\n label: styles.favoriteOnlyControlLabel\n }}\n control={\n <Checkbox\n className={styles.favoriteOnlyCheckbox}\n checked={showFavoriteOnly}\n onChange={onChangeShowFavorite}\n />\n }\n label={i18n.text('Show favorites only')}\n />\n <div className={styles.buttonsGroup}>\n <Button onClick={onClearAll} disabled={isFiltersCleared}>\n {i18n.text('Clear all')}\n </Button>\n <div>\n <Button onClick={onCancel} className={styles.cancelButton}>\n {i18n.text('Cancel')}\n </Button>\n <Button onClick={onApply} color=\"primary\">\n {i18n.text('Apply')}\n </Button>\n </div>\n </div>\n </Popover>\n </>\n );\n};\n\nFilterButton.propTypes = {\n className: PropTypes.string,\n findPublic: PropTypes.bool,\n favoriteOnly: PropTypes.bool,\n onChangeFilters: PropTypes.func,\n onChangeFavoriteOnly: PropTypes.func\n};\n\nexport {FilterButton};\n\nexport default connect(\n (store) => ({\n findPublic: getSavedSearchesFindPublic(store),\n favoriteOnly: getSavedSearchesFavoriteOnly(store)\n }),\n {\n onChangeFilters: setSavedSearchesFilters\n }\n)(FilterButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\n\nimport {useStyles} from './styles';\n\nimport {STORED_SEARCHES_TYPES} from '../../../../constants/constants';\nimport {WhiteSearchInput} from '@reltio/components';\nimport FilterButton from '../FilterButton/FilterButton';\nimport CloseButton from '../CloseButton/CloseButton';\n\nconst StandardMode = ({type, onSearch, placeholder, onClose}) => {\n const styles = useStyles();\n return (\n <>\n <div className={styles.main}>\n <div className={styles.title}>\n <CloseButton onClose={onClose} />\n <Typography variant=\"h6\">{i18n.text('Saved & recent searches')}</Typography>\n </div>\n <div className={styles.searchBox}>\n <WhiteSearchInput fullWidth onSearch={onSearch} placeholder={placeholder} />\n </div>\n </div>\n {type === STORED_SEARCHES_TYPES.saved && <FilterButton className={styles.filterButton} />}\n </>\n );\n};\n\nStandardMode.propTypes = {\n type: PropTypes.oneOf(Object.values(STORED_SEARCHES_TYPES)),\n onClose: PropTypes.func,\n onSearch: PropTypes.func,\n placeholder: PropTypes.string\n};\n\nexport default StandardMode;\n","import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {connect} from 'react-redux';\nimport {always, cond, equals} from 'ramda';\nimport i18n from 'ui-i18n';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport {useStyles} from './styles';\n\nimport {STORED_SEARCHES_TYPES} from '../../../constants/constants';\nimport {getSavedSearchesSelectedItemsNumber} from '../../../selectors/savedSearches';\nimport {getRecentSearchesSelectedItemsNumber} from '../../../selectors/recentSearches';\nimport {deleteSelectedSavedSearchesRequest, setSavedSearchesSearchValue} from '../../../actions/savedSearchesActions';\nimport {\n deleteSelectedRecentSearchesRequest,\n setRecentSearchesSearchValue\n} from '../../../actions/recentSearchesActions';\nimport {debounce} from '@reltio/mdm-sdk';\nimport SelectedMode from './Modes/SelectedMode';\nimport StandardMode from './Modes/StandardMode';\n\nconst SEARCH_DEBOUNCE_INTERVAL = 500;\n\nconst DialogHeader = ({type, selectedNumber, onClose, dispatch}) => {\n const styles = useStyles();\n\n const onDelete = useCallback(() => {\n const action =\n type === STORED_SEARCHES_TYPES.saved\n ? deleteSelectedSavedSearchesRequest()\n : deleteSelectedRecentSearchesRequest();\n dispatch(action);\n }, [type, dispatch]);\n\n const onSearch = useCallback(\n debounce((value) => {\n const action =\n type === STORED_SEARCHES_TYPES.saved\n ? setSavedSearchesSearchValue(value)\n : setRecentSearchesSearchValue(value);\n dispatch(action);\n }, SEARCH_DEBOUNCE_INTERVAL),\n [type, dispatch]\n );\n\n const placeholder = cond([\n [equals(STORED_SEARCHES_TYPES.saved), always(i18n.text('Search name'))],\n [equals(STORED_SEARCHES_TYPES.recent), always(i18n.text('Search for filtered entity types and attributes'))]\n ])(type);\n return (\n <DialogTitle className={classnames(styles.container, {[styles.selected]: selectedNumber})}>\n {selectedNumber ? (\n <SelectedMode selectedNumber={selectedNumber} onDelete={onDelete} onClose={onClose} />\n ) : (\n <StandardMode type={type} onSearch={onSearch} onClose={onClose} placeholder={placeholder} />\n )}\n </DialogTitle>\n );\n};\n\nDialogHeader.propTypes = {\n type: PropTypes.oneOf(Object.values(STORED_SEARCHES_TYPES)).isRequired,\n selectedNumber: PropTypes.number,\n onClose: PropTypes.func,\n dispatch: PropTypes.func\n};\n\nexport {DialogHeader};\n\nexport default connect((store, ownProps) => ({\n selectedNumber:\n ownProps.type === STORED_SEARCHES_TYPES.saved\n ? getSavedSearchesSelectedItemsNumber(store)\n : getRecentSearchesSelectedItemsNumber(store)\n}))(DialogHeader);\n","import {makeStyles} from '@mui/styles';\n\nconst fontSize = '0.75rem';\n\nexport const useStyles = makeStyles({\n tableWrapper: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n position: 'relative',\n '& $cellBorder': {\n borderLeft: 'none',\n borderRight: 'none'\n }\n },\n cellBorder: {},\n paginationRoot: {\n flexShrink: 0,\n boxShadow: 'none',\n borderTop: '1px solid rgba(0, 0, 0, 0.1)',\n fontSize: fontSize\n },\n paginationCaption: {\n fontSize: fontSize\n }\n});\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n buttons: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '5px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CopyUrl from './CopyURL.svg'; //eslint-disable-line\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nexport const SavedSearchesHoverButtons = ({disabledToDeleteRow, onDelete}) => {\n const styles = useStyles();\n\n const tooltipTitle = disabledToDeleteRow\n ? i18n.text(\"Cannot delete because you're not the owner\")\n : i18n.text('Delete');\n return (\n <div className={styles.buttons}>\n {/*<SmallIconButtonWithTooltip tooltipTitle={i18n.text('Copy URL')} size=\"L\" icon={CopyUrl} onClick={onCopyUrl}/>*/}\n <SmallIconButtonWithTooltip\n showForDisabled\n tooltipTitle={tooltipTitle}\n tooltipPlacement=\"bottom-end\"\n disabled={disabledToDeleteRow}\n size=\"L\"\n icon={DeleteIcon}\n onClick={onDelete}\n />\n </div>\n );\n};\nSavedSearchesHoverButtons.propTypes = {\n disabledToDeleteRow: PropTypes.bool,\n onDelete: PropTypes.func\n};\n\nexport default SavedSearchesHoverButtons;\n","import {makeStyles} from '@mui/styles';\nimport {alpha, lighten} from '@mui/material/styles';\n\nconst headCellFontSize = '0.75rem';\nconst cellFontSize = '0.8rem';\nconst cellHorizontalMargin = '22px';\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundTransparent = alpha(lightPrimaryBackground, 0);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const lightPrimaryBackgroundHoveredTransparent = alpha(lightPrimaryBackgroundHovered, 0);\n const tableHoveredRowSelector = 'div.hoveredRow';\n const fadeEffect = {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n },\n '$checkedRowCell &': {\n background: `linear-gradient(to right, ${lightPrimaryBackgroundTransparent}, ${lightPrimaryBackground} 100%)`\n },\n [`${tableHoveredRowSelector} $checkedRowCell &`]: {\n background: `linear-gradient(to right, ${lightPrimaryBackgroundHoveredTransparent}, ${lightPrimaryBackgroundHovered} 100%)`\n }\n };\n\n return {\n defaultWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n padding: `0 ${cellHorizontalMargin}`,\n fontSize: cellFontSize,\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n '&:after': fadeEffect\n },\n numberWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n padding: `0 24px 0 ${cellHorizontalMargin}`,\n fontSize: cellFontSize,\n justifyContent: 'flex-end',\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n nameWithStar: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n paddingLeft: '6px',\n '& $editNameButton': {\n display: 'none'\n },\n [`${tableHoveredRowSelector} & $editNameButton`]: {\n display: 'block'\n }\n },\n nameTextEditorRoot: {\n margin: 0\n },\n nameInput: {\n fontSize: cellFontSize,\n '&::-ms-clear': {\n display: 'none'\n }\n },\n nameContainer: {\n flex: 1,\n overflow: 'hidden'\n },\n editing: {},\n editNameButton: {},\n searchName: {\n cursor: 'pointer',\n lineHeight: '29px',\n position: 'relative',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n fontSize: cellFontSize,\n '&:after': fadeEffect\n },\n clickableArea: {\n cursor: 'pointer'\n },\n starButton: {\n marginLeft: '-7px',\n marginRight: '3px',\n visibility: 'hidden',\n [`${tableHoveredRowSelector} &$enabledButton`]: {\n visibility: 'visible'\n }\n },\n checkedStarButton: {\n visibility: 'visible',\n color: '#F5A623 !important' // override disabled state color\n },\n filterButton: {\n '$editing &': {\n marginRight: '2px'\n },\n marginLeft: '-7px',\n marginRight: '10px',\n visibility: 'hidden',\n [`${tableHoveredRowSelector} &$enabledButton`]: {\n visibility: 'visible'\n },\n '& svg': {\n fill: 'rgba(0,0,0,0.56)'\n }\n },\n checkedFilterButton: {\n visibility: 'visible',\n '& svg': {\n fill: theme.palette.primary.main\n }\n },\n enabledButton: {},\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: headCellFontSize,\n borderBottom: '1px solid rgba(0,0,0,.1)',\n color: 'rgba(0,0,0,0.6)',\n fontWeight: 500,\n '&>div': {\n padding: '0 4px 0 22px'\n },\n '& $headLabel': {\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n }\n },\n totalHeadCell: {\n justifyContent: 'flex-end',\n marginRight: '18px'\n },\n nameHeadCell: {\n paddingLeft: '39px'\n },\n headLabel: {},\n checkbox: {\n paddingLeft: '11px'\n },\n sharingWrapper: {\n padding: `0 ${cellHorizontalMargin}`,\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n sharingRoot: {\n flexShrink: 0\n },\n sharingInput: {\n fontSize: cellFontSize\n },\n sharingMenuItem: {\n fontSize: cellFontSize,\n minWidth: '100px'\n },\n sharingDisabled: {\n color: 'rgba(0,0,0,0.89)'\n },\n sharingIconDisabled: {\n display: 'none'\n },\n rowCell: {\n height: '100%'\n },\n checkedRowCell: {\n backgroundColor: lightPrimaryBackground,\n [`${tableHoveredRowSelector} &`]: {\n backgroundColor: lightPrimaryBackgroundHovered\n }\n },\n invisibleOnHoverCommon: {\n height: '100%',\n '&$invisibleOnHover': {\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n color: 'transparent'\n }\n }\n },\n invisibleOnHover: {},\n tooltip: theme.tooltip,\n tooltipSection: {\n marginBottom: '5px'\n },\n tooltipSectionHeader: {\n margin: '5px 0',\n fontSize: '11px',\n fontWeight: 500\n },\n tooltipText: {\n opacity: 0.7,\n fontSize: '10px'\n }\n };\n});\n","import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useDispatch, useSelector} from 'react-redux';\nimport Checkbox from '@mui/material/Checkbox';\nimport PropTypes from 'prop-types';\n\nimport {useStyles} from './styles';\n\nimport {getAreAllSavedSearchesSelected, getIsSomeSavedSearchesSelected} from '../../../../selectors/savedSearches';\nimport {deselectAllSavedSearchItems, selectAllSavedSearchItems} from '../../../../actions/savedSearchesActions';\nimport {STORED_SEARCHES_TYPES} from '../../../../constants/constants';\n\nimport {getAreAllRecentSearchesSelected, getIsSomeRecentSearchesSelected} from '../../../../selectors/recentSearches';\nimport {deselectAllRecentSearchItems, selectAllRecentSearchItems} from '../../../../actions/recentSearchesActions';\nimport {withTableContext} from '@reltio/components';\nimport {pick} from 'ramda';\n\nexport const CheckboxHeadCellRenderer = ({mode}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const allSelectedSelector =\n mode === STORED_SEARCHES_TYPES.saved ? getAreAllSavedSearchesSelected : getAreAllRecentSearchesSelected;\n const allSelected = useSelector(allSelectedSelector);\n const someSelectedSelector =\n mode === STORED_SEARCHES_TYPES.saved ? getIsSomeSavedSearchesSelected : getIsSomeRecentSearchesSelected;\n const someSelected = useSelector(someSelectedSelector);\n\n const onChange = useCallback(() => {\n if (mode === STORED_SEARCHES_TYPES.saved) {\n dispatch(someSelected ? deselectAllSavedSearchItems() : selectAllSavedSearchItems());\n } else {\n dispatch(someSelected ? deselectAllRecentSearchItems() : selectAllRecentSearchItems());\n }\n }, [dispatch, someSelected, mode]);\n\n return (\n <div className={classnames(styles.headCell, styles.checkbox)}>\n <Checkbox indeterminate={!allSelected && someSelected} checked={allSelected} onChange={onChange} />\n </div>\n );\n};\nCheckboxHeadCellRenderer.propTypes = {\n mode: PropTypes.string\n};\nexport default withTableContext(pick(['mode']))(CheckboxHeadCellRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {useStyles} from '../styles';\n\nconst withDifferentColorIfChecked = (CellRenderer) => {\n const WithDifferentColorIfChecked = (props) => {\n const styles = useStyles();\n const {\n rowValue: {checked}\n } = props;\n return (\n <div className={classnames(styles.rowCell, {[styles.checkedRowCell]: checked})}>\n <CellRenderer {...props} />\n </div>\n );\n };\n\n WithDifferentColorIfChecked.propTypes = {\n rowValue: PropTypes.shape({\n checked: PropTypes.bool\n })\n };\n\n return WithDifferentColorIfChecked;\n};\n\nexport default withDifferentColorIfChecked;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Checkbox from '@mui/material/Checkbox';\n\nimport {useStyles} from './styles';\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\nimport {withTooltip, withTableContext} from '@reltio/components';\n\nexport const CheckboxWithTooltip = withTooltip(Checkbox);\n\nexport const CheckboxCellRenderer = ({value = false, rowValue: {uri, isOwnSearch}, onClick}) => {\n const styles = useStyles();\n const disabled = !isOwnSearch;\n\n return (\n <div className={classnames(styles.headCell, styles.checkbox)}>\n <CheckboxWithTooltip\n showForDisabled\n tooltipTitle={disabled && i18n.text(\"Cannot edit because you're not the owner\")}\n tooltipPlacement=\"bottom-start\"\n disabled={disabled}\n checked={value}\n onChange={(e) => onClick(uri, e.target.checked)}\n />\n </div>\n );\n};\n\nCheckboxCellRenderer.propTypes = {\n value: PropTypes.bool,\n rowValue: PropTypes.shape({\n uri: PropTypes.string,\n isOwnSearch: PropTypes.bool\n }),\n onClick: PropTypes.func\n};\n\nexport default withTableContext(({onSelectItem}) => ({\n onClick: onSelectItem\n}))(withDifferentColorIfChecked(CheckboxCellRenderer));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {ExpandedValueTooltip} from '@reltio/components';\n\nconst HeadCellRenderer = ({className, ...otherProps}) => {\n const styles = useStyles();\n const {headCellData} = otherProps;\n return (\n <div className={classnames(styles.headCell, className)}>\n <DefaultHeadCellRenderer\n {...otherProps}\n headCellData={{\n ...headCellData,\n label: (\n <ExpandedValueTooltip value={headCellData.label}>\n <div className={styles.headLabel}>{headCellData.label}</div>\n </ExpandedValueTooltip>\n )\n }}\n />\n </div>\n );\n};\n\nHeadCellRenderer.propTypes = {\n className: PropTypes.string,\n headCellData: PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n sortable: PropTypes.bool,\n resizable: PropTypes.bool,\n className: PropTypes.string,\n initialWidth: PropTypes.number,\n minWidth: PropTypes.number,\n autoResize: PropTypes.bool,\n renderer: PropTypes.func\n })\n};\n\nexport default HeadCellRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useStyles} from './styles';\nimport HeadCellRenderer from './HeadCellRenderer';\n\nconst NameHeadCellRenderer = (props) => {\n const styles = useStyles();\n return <HeadCellRenderer className={styles.nameHeadCell} {...props} />;\n};\n\nNameHeadCellRenderer.propTypes = {\n headCellData: PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n sortable: PropTypes.bool,\n resizable: PropTypes.bool,\n className: PropTypes.string,\n initialWidth: PropTypes.number,\n minWidth: PropTypes.number,\n autoResize: PropTypes.bool,\n renderer: PropTypes.func\n })\n};\n\nexport default NameHeadCellRenderer;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\"\n}, props), React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"M0 0h24m0 24H0\",\n fill: \"none\"\n}), React.createElement(\"path\", {\n d: \"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\"\n}), React.createElement(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n width: \"24\"\n}, props), React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"M0 0h24m0 24H0\",\n fill: \"none\"\n}), React.createElement(\"path\", {\n d: \"M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\"\n}), React.createElement(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n}))));","import React, {useCallback, useEffect, useState} from 'react';\nimport {T, always, cond, propEq, when} from 'ramda';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport StarIcon from '@mui/icons-material/Star';\nimport StarBorderIcon from '@mui/icons-material/StarBorder';\nimport FilterIcon from './icons/filter.svg';\nimport FilterOutlinedIcon from './icons/filter-outlined.svg';\nimport Edit from '@mui/icons-material/Edit';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nimport {ExpandedValueTooltip, SmallIconButtonWithTooltip, TextEditor, withTableContext} from '@reltio/components';\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\n\nexport const NameWithStarCellRenderer = ({\n value,\n rowValue: {uri, isFavorite, isOwnSearch, isEditing, isGlobalFilter},\n onStarClick,\n onGlobalClick,\n onApply,\n onChangeName,\n onSetEditing\n}) => {\n const styles = useStyles();\n const showEditButton = isOwnSearch && !isEditing;\n const [tempName, setTempName] = useState(value);\n useEffect(() => {\n setTempName(value);\n }, [value]);\n\n const applyNameChange = useCallback(() => {\n onChangeName(uri, tempName);\n }, [uri, tempName, onChangeName]);\n const onStarButtonClick = useCallback(() => onStarClick(uri, !isFavorite), [onStarClick, uri, isFavorite]);\n const onGlobalFilterButtonClick = useCallback(\n () => onGlobalClick(uri, !isGlobalFilter),\n [onGlobalClick, uri, isGlobalFilter]\n );\n const onEditButtonClick = useCallback(() => onSetEditing(uri, true), [onSetEditing, uri]);\n const onNameClick = useCallback(() => onApply(uri), [onApply, uri]);\n const favoriteTooltipTitle = cond([\n [always(isOwnSearch), always(i18n.text('Mark as favorite'))],\n [always(isFavorite), always(i18n.text(\"Cannot ummark because you're not the owner\"))],\n [T, always('')]\n ])();\n return (\n <div className={classnames(styles.nameWithStar, {[styles.editing]: isEditing})}>\n <SmallIconButtonWithTooltip\n showForDisabled\n tooltipTitle={favoriteTooltipTitle}\n tooltipPlacement={!isOwnSearch ? 'bottom-start' : 'bottom'}\n disabled={!isOwnSearch}\n className={classnames(\n styles.starButton,\n {[styles.checkedStarButton]: isFavorite},\n {[styles.enabledButton]: isOwnSearch}\n )}\n size=\"M\"\n icon={isFavorite ? StarIcon : StarBorderIcon}\n onClick={onStarButtonClick}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isGlobalFilter ? i18n.text('Remove Global filter') : i18n.text('Set as Global filter')}\n className={classnames(styles.filterButton, styles.enabledButton, {\n [styles.checkedFilterButton]: isGlobalFilter\n })}\n size=\"M\"\n icon={isGlobalFilter ? FilterIcon : FilterOutlinedIcon}\n onClick={onGlobalFilterButtonClick}\n />\n <div className={styles.nameContainer}>\n {isEditing ? (\n <ClickAwayListener onClickAway={applyNameChange}>\n <div>\n <TextEditor\n variant=\"filled\"\n hiddenLabel\n size=\"small\"\n fullWidth\n autoFocus\n classes={{\n root: styles.nameTextEditorRoot\n }}\n InputProps={{\n classes: {input: styles.nameInput}\n }}\n value={tempName}\n onInput={(e) => setTempName(e.target.value)}\n onKeyDown={when(propEq('keyCode', 13), applyNameChange)}\n />\n </div>\n </ClickAwayListener>\n ) : (\n <ExpandedValueTooltip value={value}>\n <div className={styles.searchName} onClick={onNameClick}>\n {value}\n </div>\n </ExpandedValueTooltip>\n )}\n </div>\n {showEditButton && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Edit')}\n className={styles.editNameButton}\n size=\"M\"\n icon={Edit}\n onClick={onEditButtonClick}\n />\n )}\n </div>\n );\n};\n\nNameWithStarCellRenderer.propTypes = {\n value: PropTypes.string,\n rowValue: PropTypes.shape({\n uri: PropTypes.string,\n isFavorite: PropTypes.bool,\n isOwnSearch: PropTypes.bool,\n isEditing: PropTypes.bool,\n isGlobalFilter: PropTypes.bool\n }),\n onStarClick: PropTypes.func,\n onGlobalClick: PropTypes.func,\n onApply: PropTypes.func,\n onChangeName: PropTypes.func,\n onSetEditing: PropTypes.func\n};\n\nexport default withTableContext(\n ({onChangeIsFavorite, onChangeIsGlobal, onSearchApply, onSetItemEditing, onChangeItemName}) => ({\n onStarClick: onChangeIsFavorite,\n onGlobalClick: onChangeIsGlobal,\n onApply: onSearchApply,\n onSetEditing: onSetItemEditing,\n onChangeName: onChangeItemName\n })\n)(withDifferentColorIfChecked(NameWithStarCellRenderer));\n","import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {useStyles} from './styles';\n\nimport {DropDownEditor, withTableContext} from '@reltio/components';\nimport {sharingValueFromEditor, sharingValueToEditor} from '../../common';\nimport {SAVED_SEARCHES_SHARING_OPTIONS} from '../../../../constants/constants';\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\n\nexport const SharingCellRenderer = ({value, rowValue: {uri, isOwnSearch}, onChange}) => {\n const styles = useStyles();\n const handleChange = useCallback(\n (editorNewValue) => {\n const newValue = sharingValueFromEditor(editorNewValue);\n if (newValue !== value) {\n onChange(uri, newValue);\n }\n },\n [uri, value, onChange]\n );\n return (\n <div className={styles.sharingWrapper}>\n <DropDownEditor\n entries={SAVED_SEARCHES_SHARING_OPTIONS}\n value={sharingValueToEditor(value)}\n onChange={handleChange}\n disableUnderline\n disabled={!isOwnSearch}\n MenuProps={{\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'center'\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n elevation: 3\n }}\n TextFieldProps={{\n classes: {\n root: styles.sharingRoot\n }\n }}\n classes={{\n root: styles.sharingInput,\n menuItem: styles.sharingMenuItem,\n disabled: styles.sharingDisabled,\n icon: classnames({[styles.sharingIconDisabled]: !isOwnSearch})\n }}\n />\n </div>\n );\n};\n\nSharingCellRenderer.propTypes = {\n value: PropTypes.bool,\n rowValue: PropTypes.shape({\n uri: PropTypes.string,\n isOwnSearch: PropTypes.bool\n }),\n onChange: PropTypes.func\n};\n\nexport default withTableContext(({onChangeIsPublic}) => ({\n onChange: onChangeIsPublic\n}))(withDifferentColorIfChecked(SharingCellRenderer));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\n\nconst DefaultCellValueRenderer = ({value, rowValue, onClick}) => {\n const styles = useStyles();\n const nop = () => {};\n const onClickAction = onClick ? () => onClick(rowValue) : nop;\n return (\n <ExpandedValueTooltip value={value}>\n <div\n className={classnames(styles.defaultWrapper, {[styles.clickableArea]: onClick})}\n onClick={onClickAction}\n >\n {value}\n </div>\n </ExpandedValueTooltip>\n );\n};\n\nDefaultCellValueRenderer.propTypes = {\n value: PropTypes.any,\n rowValue: PropTypes.object,\n onClick: PropTypes.func\n};\n\nexport default withDifferentColorIfChecked(DefaultCellValueRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\n\nimport DefaultCellValueRenderer from './DefaultCellValueRenderer';\n\nconst DateCellRenderer = (props) => {\n const {\n rowValue: {updateDate, createDate}\n } = props;\n const date = updateDate || createDate;\n return <DefaultCellValueRenderer {...props} value={date && i18n.date(date, 'L')} />;\n};\n\nDateCellRenderer.propTypes = {\n rowValue: PropTypes.shape({\n updateDate: PropTypes.number,\n createDate: PropTypes.number\n })\n};\n\nexport default DateCellRenderer;\n","import {cond, curry, isNil, isEmpty, not, flatten, path, pipe, T, uniq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {isTypeFacet} from '@reltio/mdm-sdk';\n\nconst SUB_ATTRIBUTES_JOINER = ' / ';\n\nconst isNotEmptyAttribute = ({values}) =>\n pipe(\n cond([\n [isNil, T],\n [Array.isArray, pipe(flatten, isEmpty)],\n [T, isEmpty]\n ]),\n not\n )(values);\n\nconst isNotEmptyFacet = curry(\n (facets, config) => path(['facetsData', config.fieldName, 'values', 'length'], facets) > 0\n);\n\nconst getAttributeLabelFromPathToTitle = (pathToTitle) =>\n pathToTitle && pathToTitle.slice(1).join(SUB_ATTRIBUTES_JOINER);\n\nconst addAttributeToGroup = (result, groupName, attributeLabel) => {\n if (!result[groupName]) {\n result[groupName] = {\n title: groupName,\n attributes: []\n };\n }\n result[groupName].attributes = uniq(result[groupName].attributes.concat(attributeLabel));\n return result;\n};\n\nconst collectFromAdvanced = (advanced = []) =>\n advanced\n .flatMap((group) => group.attributes)\n .filter(isNotEmptyAttribute)\n .reduce((result, {data: {title, groupName, pathToTitle}}) => {\n const attributeLabel = getAttributeLabelFromPathToTitle(pathToTitle) || title;\n return addAttributeToGroup(result, groupName, attributeLabel);\n }, {});\n\nconst collectFromFacets = (facets = {}) =>\n (facets.facetsConfigs || [])\n .filter(pipe(isTypeFacet, not))\n .filter(isNotEmptyFacet(facets))\n .reduce((result, config) => {\n const groupName = path(['pathToTitle', 0], config) || i18n.text('Special');\n const attributeLabel = getAttributeLabelFromPathToTitle(config.pathToTitle) || config.title;\n return addAttributeToGroup(result, groupName, attributeLabel);\n }, {});\n\nexport const collectFilteredAttributesGroups = ({facets, advanced} = {}) => {\n try {\n const groupedAttributesMap = advanced ? collectFromAdvanced(advanced) : collectFromFacets(facets);\n return Object.values(groupedAttributesMap);\n } catch (e) {\n return [];\n }\n};\n\nexport const getFilteredAttributesNumber = (filteredAttributesGroups) =>\n filteredAttributesGroups.flatMap((group) => group.attributes).length;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport {useStyles} from './styles';\n\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\nimport {collectFilteredAttributesGroups, getFilteredAttributesNumber} from './helpers/filteredAttributes';\n\nconst FilteredAttributesCellRenderer = ({rowValue: {uiState}}) => {\n const styles = useStyles();\n const filteredAttributesGroups = useMemo(() => collectFilteredAttributesGroups(uiState), [uiState]);\n const attributesCount = useMemo(\n () => getFilteredAttributesNumber(filteredAttributesGroups),\n [filteredAttributesGroups]\n );\n\n const tooltipContent = !!filteredAttributesGroups.length && (\n <div>\n {filteredAttributesGroups.map(({title, attributes}) => (\n <div key={title} className={styles.tooltipSection}>\n <h6 className={styles.tooltipSectionHeader}>{title}</h6>\n {attributes.map((attribute) => (\n <div key={attribute} className={styles.tooltipText}>\n {attribute}\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n const wrapWithTooltip = (value) =>\n tooltipContent ? (\n <Tooltip\n title={tooltipContent}\n classes={{tooltip: styles.tooltip}}\n disableFocusListener={true}\n disableTouchListener={true}\n >\n <span>{value}</span>\n </Tooltip>\n ) : (\n value\n );\n\n return <div className={styles.numberWrapper}>{wrapWithTooltip(attributesCount)}</div>;\n};\n\nFilteredAttributesCellRenderer.propTypes = {\n rowValue: PropTypes.shape({\n uiState: PropTypes.shape({\n facets: PropTypes.object,\n advanced: PropTypes.array\n })\n })\n};\n\nexport default withDifferentColorIfChecked(FilteredAttributesCellRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useStyles} from './styles';\nimport HeadCellRenderer from './HeadCellRenderer';\n\nconst TotalHeadCellRenderer = (props) => {\n const styles = useStyles();\n return <HeadCellRenderer className={styles.totalHeadCell} {...props} />;\n};\n\nTotalHeadCellRenderer.propTypes = {\n headCellData: PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n sortable: PropTypes.bool,\n resizable: PropTypes.bool,\n className: PropTypes.string,\n initialWidth: PropTypes.number,\n minWidth: PropTypes.number,\n autoResize: PropTypes.bool,\n renderer: PropTypes.func\n })\n};\n\nexport default TotalHeadCellRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {useStyles} from './styles';\n\nconst InvisibleOnHoverCell = ({isInvisible, children}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.invisibleOnHoverCommon, {[styles.invisibleOnHover]: isInvisible})}>\n {children}\n </div>\n );\n};\n\nInvisibleOnHoverCell.propTypes = {\n isInvisible: PropTypes.bool,\n children: PropTypes.node\n};\n\nexport default InvisibleOnHoverCell;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\n\nconst NumberCellValueRenderer = ({value}) => {\n const styles = useStyles();\n return (\n <ExpandedValueTooltip value={value}>\n <div className={styles.numberWrapper}>{i18n.number(value)}</div>\n </ExpandedValueTooltip>\n );\n};\n\nNumberCellValueRenderer.propTypes = {\n value: PropTypes.number\n};\n\nexport default withDifferentColorIfChecked(NumberCellValueRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport InvisibleOnHoverCell from './InvisibleOnHoverCell';\n\nimport NumberCellValueRenderer from './NumberCellValueRenderer';\n\nconst SavedSearchesTotalCellRenderer = (props) => {\n return (\n <InvisibleOnHoverCell isInvisible>\n <NumberCellValueRenderer {...props} />\n </InvisibleOnHoverCell>\n );\n};\n\nSavedSearchesTotalCellRenderer.propTypes = {\n value: PropTypes.number,\n rowIndex: PropTypes.number,\n rowValue: PropTypes.shape({\n isOwnSearch: PropTypes.bool\n })\n};\n\nexport default SavedSearchesTotalCellRenderer;\n","import CheckboxHeadCellRenderer from './cell-renderers/CheckboxHeadCellRenderer';\nimport CheckboxCellRenderer from './cell-renderers/CheckboxCellRenderer';\nimport NameHeadCellRenderer from './cell-renderers/NameHeadCellRenderer';\nimport NameWithStarCellRenderer from './cell-renderers/NameWithStarCellRenderer';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport SharingCellRenderer from './cell-renderers/SharingCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport DateCellRenderer from './cell-renderers/DateCellRenderer';\nimport FilteredAttributesCellRenderer from './cell-renderers/FilteredAttributesCellRenderer';\nimport TotalHeadCellRenderer from './cell-renderers/TotalHeadCellRenderer';\nimport SavedSearchesTotalCellRenderer from './cell-renderers/SavedSearchesTotalCellRenderer';\nimport i18n from 'ui-i18n';\n\nexport const DEFAULT_COLUMN_WIDTH = 140;\n\nconst defaultColumnOptions = {\n rowCellValueRenderer: DefaultCellValueRenderer,\n headCellRenderer: HeadCellRenderer,\n autoResize: false\n};\n\nexport const COLUMNS_DATA = [\n {\n id: 'checked',\n label: '',\n initialWidth: 55,\n headCellRenderer: CheckboxHeadCellRenderer,\n rowCellValueRenderer: CheckboxCellRenderer\n },\n {\n id: 'name',\n get label() {\n return i18n.text('Name');\n },\n autoResize: true,\n headCellRenderer: NameHeadCellRenderer,\n rowCellValueRenderer: NameWithStarCellRenderer,\n sortable: true\n },\n {\n id: 'isPublic',\n get label() {\n return i18n.text('Shared with');\n },\n rowCellValueRenderer: SharingCellRenderer\n },\n {\n id: 'owner',\n get label() {\n return i18n.text('Created by');\n },\n initialWidth: DEFAULT_COLUMN_WIDTH * 2 - 20\n },\n {\n id: 'updateDate',\n get label() {\n return i18n.text('Last modified');\n },\n rowCellValueRenderer: DateCellRenderer,\n sortable: true\n },\n {\n id: 'attributes',\n get label() {\n return i18n.text('Filtered attributes');\n },\n rowCellValueRenderer: FilteredAttributesCellRenderer\n },\n {\n id: 'total',\n get label() {\n return i18n.text('Number of profiles');\n },\n headCellRenderer: TotalHeadCellRenderer,\n rowCellValueRenderer: SavedSearchesTotalCellRenderer,\n initialWidth: DEFAULT_COLUMN_WIDTH + 10\n }\n].map((column) => ({...defaultColumnOptions, ...column}));\n","import React, {useEffect, useMemo, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {not, prop} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {\n BasicTable,\n BasicTablePagination,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n LinearLoadIndicator,\n SortingType\n} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {\n getSavedSearchesItems,\n getSavedSearchesLoading,\n getSavedSearchesPage,\n getSavedSearchesRowsPerPage,\n getSavedSearchesSearchValue,\n getSavedSearchesSorting,\n getSavedSearchesTotal\n} from '../../../selectors/savedSearches';\nimport {ROWS_PER_PAGE_OPTIONS, STORED_SEARCHES_TYPES} from '../../../constants/constants';\nimport {\n applySavedSearchItem,\n changeSavedSearchNameRequest,\n deleteSavedSearchesItemRequest,\n deselectAllSavedSearchItems,\n markSavedSearchAsFavoriteRequest,\n markSavedSearchAsGlobalFilterRequest,\n markSavedSearchAsPublicRequest,\n selectSavedSearchItem,\n setSavedSearchEditing,\n setSavedSearchesPage,\n setSavedSearchesRowsPerPage,\n toggleSavedSearchesSorting\n} from '../../../actions/savedSearchesActions';\nimport SavedSearchesHoverButtons from './components/HoverButtons/SavedSearchesHoverButtons';\nimport mdmModule from '@reltio/mdm-module';\nimport {COLUMNS_DATA, DEFAULT_COLUMN_WIDTH} from './savedSearchesColumnsData';\n\nconst SavedSearchesTable = ({\n items,\n total,\n sorting,\n page,\n rowsPerPage,\n loading,\n searchValue,\n globalFilterSavedSearchesUris = [],\n onSearchApply,\n onChangeIsFavorite,\n onChangeIsPublic,\n onChangeIsGlobal,\n onChangeRowsPerPage,\n onChangePage,\n onSelectItem,\n onDeselectAllItems,\n onDeleteItem,\n onChangeItemName,\n onSetItemEditing,\n onSort\n}) => {\n const styles = useStyles();\n const tableClasses = useMemo(() => ({cellBorder: styles.cellBorder}), [styles]);\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const basicTableRef = useRef(null);\n\n useEffect(() => onDeselectAllItems, [onDeselectAllItems]); //on unmount\n\n const tableContext = useMemo(\n () => ({\n mode: STORED_SEARCHES_TYPES.saved,\n onSelectItem,\n onChangeIsFavorite,\n onChangeIsGlobal,\n onSearchApply,\n onSetItemEditing,\n onChangeItemName,\n onChangeIsPublic\n }),\n [\n onSelectItem,\n onChangeIsFavorite,\n onChangeIsGlobal,\n onSearchApply,\n onSetItemEditing,\n onChangeItemName,\n onChangeIsPublic\n ]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n const item = prop(hoverRowIndex, items);\n const disabledToDeleteRow = not(prop('isOwnSearch', item));\n\n return item ? (\n <SavedSearchesHoverButtons\n disabledToDeleteRow={disabledToDeleteRow}\n onDelete={() => onDeleteItem(item.uri)}\n />\n ) : null;\n }, [onDeleteItem, items, hoverRowIndex]);\n\n const emptyStateProps = useMemo(\n () =>\n isEmptyValue(searchValue)\n ? {\n LogoRenderer: EMPTY_STATE_ICONS.SELECT_ATTRIBUTES,\n text: i18n.text('No saved searches.'),\n secondaryText: i18n.text(\n 'Save time by creating saved searches for queries you regularly search for.'\n )\n }\n : {\n LogoRenderer: EMPTY_STATE_ICONS.SEARCH_RESULTS,\n text: i18n.text('No results found.'),\n secondaryText: i18n.text(\"Try adjusting your search or filter to find what you're looking for.\")\n },\n [searchValue]\n );\n\n const rowsData = useMemo(\n () =>\n items.map((item) => ({\n ...item,\n isGlobalFilter: globalFilterSavedSearchesUris.includes(item.uri)\n })),\n [items, globalFilterSavedSearchesUris]\n );\n\n return (\n <div className={styles.tableWrapper}>\n {total > 0 ? (\n <>\n <BasicTable\n columnsData={COLUMNS_DATA}\n rowsData={rowsData}\n context={tableContext}\n sorting={sorting}\n getRowCellHeight={null}\n defaultColumnWidth={DEFAULT_COLUMN_WIDTH}\n defaultColumnMinWidth={DEFAULT_COLUMN_WIDTH}\n defaultRowHeight={48}\n headRowHeight={47}\n hoverStateEnabled={true}\n onSort={onSort}\n hoverRowIndex={hoverRowIndex}\n onRowHover={setHoverRowIndex}\n classes={tableClasses}\n hoveredRowRightContent={hoveredRowRightContent}\n ref={basicTableRef}\n />\n <BasicTablePagination\n classes={{root: styles.paginationRoot, caption: styles.paginationCaption}}\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n page={page}\n onChangePage={onChangePage}\n basicTableRef={basicTableRef}\n />\n </>\n ) : (\n <EmptyState {...emptyStateProps} variant={EMPTY_STATE_VARIANTS.embedded} />\n )}\n {loading && <LinearLoadIndicator />}\n </div>\n );\n};\n\nSavedSearchesTable.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n uri: PropTypes.string,\n name: PropTypes.string,\n isPublic: PropTypes.bool,\n isFavorite: PropTypes.bool,\n isOwnSearch: PropTypes.bool,\n isEditing: PropTypes.bool,\n checked: PropTypes.bool,\n owner: PropTypes.string,\n updateDate: PropTypes.number,\n query: PropTypes.string\n })\n ),\n total: PropTypes.number,\n sorting: SortingType,\n page: PropTypes.number,\n rowsPerPage: PropTypes.number,\n loading: PropTypes.bool,\n searchValue: PropTypes.string,\n globalFilterSavedSearchesUris: PropTypes.arrayOf(PropTypes.string),\n onSearchApply: PropTypes.func,\n onChangeIsFavorite: PropTypes.func,\n onChangeIsPublic: PropTypes.func,\n onChangeIsGlobal: PropTypes.func,\n onChangeRowsPerPage: PropTypes.func,\n onChangePage: PropTypes.func,\n onSelectItem: PropTypes.func,\n onDeselectAllItems: PropTypes.func,\n onDeleteItem: PropTypes.func,\n onChangeItemName: PropTypes.func,\n onSetItemEditing: PropTypes.func,\n onSort: PropTypes.func\n};\n\nexport {SavedSearchesTable};\n\nexport default connect(\n (state) => ({\n items: getSavedSearchesItems(state),\n total: getSavedSearchesTotal(state),\n sorting: getSavedSearchesSorting(state),\n page: getSavedSearchesPage(state),\n rowsPerPage: getSavedSearchesRowsPerPage(state),\n loading: getSavedSearchesLoading(state),\n searchValue: getSavedSearchesSearchValue(state),\n globalFilterSavedSearchesUris: mdmModule.selectors.getGlobalFilterSavedSearchesUris(state)\n }),\n {\n onSearchApply: applySavedSearchItem,\n onChangeIsFavorite: markSavedSearchAsFavoriteRequest,\n onChangeIsPublic: markSavedSearchAsPublicRequest,\n onChangeIsGlobal: markSavedSearchAsGlobalFilterRequest,\n onChangeRowsPerPage: setSavedSearchesRowsPerPage,\n onChangePage: setSavedSearchesPage,\n onSelectItem: selectSavedSearchItem,\n onDeselectAllItems: deselectAllSavedSearchItems,\n onDeleteItem: deleteSavedSearchesItemRequest,\n onChangeItemName: changeSavedSearchNameRequest,\n onSetItemEditing: setSavedSearchEditing,\n onSort: toggleSavedSearchesSorting\n }\n)(SavedSearchesTable);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nexport const RecentSearchesHoverButtons = ({onDelete}) => {\n const styles = useStyles();\n return (\n <div className={styles.buttons}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Delete')}\n size=\"L\"\n icon={DeleteIcon}\n onClick={onDelete}\n />\n </div>\n );\n};\nRecentSearchesHoverButtons.propTypes = {\n onDelete: PropTypes.func\n};\n\nexport default RecentSearchesHoverButtons;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Checkbox from '@mui/material/Checkbox';\n\nimport {useStyles} from './styles';\nimport withDifferentColorIfChecked from './HOCs/WithDifferentColorIfChecked';\nimport {withTableContext} from '@reltio/components';\n\nexport const RecentSearchesCheckboxCellRenderer = ({value = false, rowValue: {createdDate}, onClick}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, styles.checkbox)}>\n <Checkbox checked={value} onChange={(e) => onClick(createdDate, e.target.checked)} />\n </div>\n );\n};\n\nRecentSearchesCheckboxCellRenderer.propTypes = {\n value: PropTypes.bool,\n rowValue: PropTypes.shape({\n createdDate: PropTypes.number\n }),\n onClick: PropTypes.func\n};\n\nexport default withTableContext(({onSelectItem}) => ({\n onClick: onSelectItem\n}))(withDifferentColorIfChecked(RecentSearchesCheckboxCellRenderer));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\n\nimport DefaultCellValueRenderer from './DefaultCellValueRenderer';\nimport {withTableContext} from '@reltio/components';\n\nexport const TimestampCellRenderer = (props) => {\n const {\n rowValue: {createdDate}\n } = props;\n const date = createdDate;\n return <DefaultCellValueRenderer {...props} value={date && i18n.date(date, 'L LT')} />;\n};\n\nTimestampCellRenderer.propTypes = {\n rowValue: PropTypes.shape({\n createdDate: PropTypes.number\n }),\n onClick: PropTypes.func\n};\n\nexport default withTableContext(({onSearchApply}) => ({\n onClick: onSearchApply\n}))(TimestampCellRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport InvisibleOnHoverCell from './InvisibleOnHoverCell';\n\nimport NumberCellValueRenderer from './NumberCellValueRenderer';\n\nconst RecentSearchesTotalCellRenderer = (props) => {\n return (\n <InvisibleOnHoverCell isInvisible={true}>\n <NumberCellValueRenderer {...props} />\n </InvisibleOnHoverCell>\n );\n};\n\nRecentSearchesTotalCellRenderer.propTypes = {\n value: PropTypes.number\n};\n\nexport default RecentSearchesTotalCellRenderer;\n","import {withTableContext} from '@reltio/components';\nimport DefaultCellValueRenderer from './DefaultCellValueRenderer';\n\nexport default withTableContext(({onSearchApply}) => ({\n onClick: onSearchApply\n}))(DefaultCellValueRenderer);\n","import DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport CheckboxHeadCellRenderer from './cell-renderers/CheckboxHeadCellRenderer';\nimport RecentSearchesCheckboxCellRenderer from './cell-renderers/RecentSearchesCheckboxCellRenderer';\nimport TimestampCellRenderer from './cell-renderers/TimestampCellRenderer';\nimport RecentSearchesTotalCellRenderer from './cell-renderers/RecentSearchesTotalCellRenderer';\nimport TotalHeadCellRenderer from './cell-renderers/TotalHeadCellRenderer';\nimport QueryCellRenderer from './cell-renderers/QueryCellRenderer';\nimport i18n from 'ui-i18n';\n\nconst defaultColumnOptions = {\n rowCellValueRenderer: DefaultCellValueRenderer,\n headCellRenderer: HeadCellRenderer,\n autoResize: false\n};\n\nexport const COLUMNS_DATA = [\n {\n id: 'checked',\n label: '',\n initialWidth: 55,\n headCellRenderer: CheckboxHeadCellRenderer,\n rowCellValueRenderer: RecentSearchesCheckboxCellRenderer\n },\n {\n id: 'createdDate',\n get label() {\n return i18n.text('Created');\n },\n rowCellValueRenderer: TimestampCellRenderer,\n initialWidth: 256\n },\n {\n id: 'name',\n get label() {\n return i18n.text('Query');\n },\n autoResize: true,\n rowCellValueRenderer: QueryCellRenderer,\n minWidth: 150\n },\n {\n id: 'total',\n get label() {\n return i18n.text('Record count');\n },\n rowCellValueRenderer: RecentSearchesTotalCellRenderer,\n headCellRenderer: TotalHeadCellRenderer,\n initialWidth: 150\n }\n].map((column) => ({...defaultColumnOptions, ...column}));\n","import React, {useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\nimport {BasicTable, EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, LinearLoadIndicator} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {\n applyRecentSearchItem,\n deleteRecentSearchesItemRequest,\n deselectAllRecentSearchItems,\n selectRecentSearchItem\n} from '../../../actions/recentSearchesActions';\n\nimport {\n getFilteredRecentSearches,\n getRecentSearchesFilterWord,\n getRecentSearchesLoading\n} from '../../../selectors/recentSearches';\nimport RecentSearchesHoverButtons from './components/HoverButtons/RecentSearchesHoverButtons';\nimport {COLUMNS_DATA} from './recentSearchesColumnsData';\nimport {STORED_SEARCHES_TYPES} from '../../../constants/constants';\n\nconst RecentSearchesTable = ({\n items,\n loading,\n filterWord,\n onSelectItem,\n onDeselectAllItems,\n onSearchApply,\n onDeleteItem\n}) => {\n const styles = useStyles();\n const tableClasses = useMemo(() => ({cellBorder: styles.cellBorder}), [styles]);\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n useEffect(() => onDeselectAllItems, [onDeselectAllItems]); //on unmount\n\n const tableContext = useMemo(\n () => ({\n mode: STORED_SEARCHES_TYPES.recent,\n onSelectItem,\n onSearchApply\n }),\n [onSelectItem, onSearchApply]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n const item = hoverRowIndex != null && items[hoverRowIndex];\n return item ? <RecentSearchesHoverButtons onDelete={() => onDeleteItem(item)} /> : null;\n }, [onDeleteItem, items, hoverRowIndex]);\n\n const emptyStateProps = useMemo(\n () =>\n isEmptyValue(filterWord)\n ? {\n LogoRenderer: EMPTY_STATE_ICONS.SELECT_ATTRIBUTES,\n text: i18n.text('No recent searches.'),\n secondaryText: i18n.text('Your recent search history will appear here.')\n }\n : {\n LogoRenderer: EMPTY_STATE_ICONS.SEARCH_RESULTS,\n text: i18n.text('No results found.'),\n secondaryText: i18n.text(\"Try adjusting your search or filter to find what you're looking for.\")\n },\n [filterWord]\n );\n\n return (\n <div className={styles.tableWrapper}>\n {items.length > 0 ? (\n <BasicTable\n columnsData={COLUMNS_DATA}\n rowsData={items}\n context={tableContext}\n getRowCellHeight={null}\n defaultColumnWidth={50}\n defaultColumnMinWidth={50}\n defaultRowHeight={48}\n headRowHeight={47}\n hoverStateEnabled={true}\n hoverRowIndex={hoverRowIndex}\n onRowHover={setHoverRowIndex}\n classes={tableClasses}\n hoveredRowRightContent={hoveredRowRightContent}\n />\n ) : (\n <EmptyState {...emptyStateProps} variant={EMPTY_STATE_VARIANTS.embedded} />\n )}\n {loading && <LinearLoadIndicator />}\n </div>\n );\n};\n\nRecentSearchesTable.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n uri: PropTypes.string,\n name: PropTypes.string,\n isPublic: PropTypes.bool,\n isFavorite: PropTypes.bool,\n isOwnSearch: PropTypes.bool,\n checked: PropTypes.bool,\n owner: PropTypes.string,\n createdDate: PropTypes.number,\n query: PropTypes.string\n })\n ),\n loading: PropTypes.bool,\n filterWord: PropTypes.string,\n onSelectItem: PropTypes.func,\n onSearchApply: PropTypes.func,\n onDeselectAllItems: PropTypes.func,\n onDeleteItem: PropTypes.func\n};\n\nexport {RecentSearchesTable};\n\nexport default connect(\n (state) => ({\n items: getFilteredRecentSearches(state),\n loading: getRecentSearchesLoading(state),\n filterWord: getRecentSearchesFilterWord(state)\n }),\n {\n onSearchApply: applyRecentSearchItem,\n onSelectItem: selectRecentSearchItem,\n onDeselectAllItems: deselectAllRecentSearchItems,\n onDeleteItem: deleteRecentSearchesItemRequest\n }\n)(RecentSearchesTable);\n","import React, {useMemo, useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch} from 'react-redux';\nimport {propEq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\n\nimport {useStyles} from './styles';\n\nimport DialogHeader from './DialogHeader/DialogHeader';\nimport {ScrollableTabs} from '@reltio/components';\nimport {STORED_SEARCHES_TYPES} from '../../constants/constants';\nimport SavedSearchesTable from './Tables/SavedSearchesTable';\nimport RecentSearchesTable from './Tables/RecentSearchesTable';\nimport {loadSavedSearches} from '../../actions/savedSearchesActions';\nimport {loadRecentSearches} from '../../actions/recentSearchesActions';\n\nconst SavedSearchesDialog = ({open, onClose}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const tabs = useMemo(\n () => [\n {\n value: STORED_SEARCHES_TYPES.saved,\n label: i18n.text('Saved searches'),\n content: <SavedSearchesTable />,\n dataReltioId: 'reltio-search-saved-searches'\n },\n {\n value: STORED_SEARCHES_TYPES.recent,\n label: i18n.text('Recent searches'),\n content: <RecentSearchesTable />,\n dataReltioId: 'reltio-search-recent-searches'\n }\n ],\n []\n );\n\n const [type, setType] = useState(tabs[0].value);\n\n useEffect(() => {\n if (open) {\n if (type === STORED_SEARCHES_TYPES.saved) {\n dispatch(loadSavedSearches());\n } else {\n dispatch(loadRecentSearches());\n }\n }\n }, [open, dispatch, type]);\n\n return (\n <Dialog classes={{paper: styles.dialogPaper}} fullWidth maxWidth=\"lg\" open={open} onClose={onClose}>\n <DialogHeader type={type} onClose={onClose} />\n <DialogContent classes={{root: styles.contentRoot}}>\n <div className={styles.tabsWrapper}>\n <ScrollableTabs value={type} tabs={tabs} onChange={setType} scrollButtons=\"auto\" />\n </div>\n <div className={styles.tabContent}>{tabs.find(propEq('value', type)).content}</div>\n </DialogContent>\n </Dialog>\n );\n};\n\nSavedSearchesDialog.propTypes = {\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default SavedSearchesDialog;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'inline-flex',\n position: 'relative',\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.6)'\n },\n in: {\n marginLeft: '8px',\n marginRight: '8px'\n },\n label: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: 500\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport mdmModule from '@reltio/mdm-module';\nimport {DataTenant} from '@reltio/mdm-sdk';\nimport {getDataTenantObject} from '../../selectors/search';\nimport Typography from '@mui/material/Typography';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst CurrentTenantLabel = () => {\n const styles = useStyles();\n\n const dataTenants: DataTenant[] = useSelector(mdmModule.selectors.getDataTenants);\n const showCurrentTenant = dataTenants && dataTenants.length > 0;\n const dataTenantObject = useSelector(getDataTenantObject);\n const customerTenantLabel = useSelector(mdmModule.selectors.getTenantName);\n const currentTenantLabel = dataTenantObject ? dataTenantObject.label : customerTenantLabel;\n\n return (\n showCurrentTenant && (\n <div className={styles.wrapper}>\n <Typography variant=\"body2\" component={'span'} classes={{root: styles.in}}>\n {i18n.text('in')}\n </Typography>\n <ExpandedValueTooltip value={customerTenantLabel}>\n <Typography variant=\"body2\" classes={{root: styles.label}}>\n {currentTenantLabel}\n </Typography>\n </ExpandedValueTooltip>\n </div>\n )\n );\n};\n\nexport default CurrentTenantLabel;\n","import React, {PureComponent} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {path, pathOr, propEq, reject, when} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {changeFacetValues} from '../../actions/facets';\nimport {changeMapValue, clearAllSearches} from '../../actions/searchActions';\nimport {getFacetsConfigs, getFacetsData} from '../../selectors/facet';\nimport {getSearchParams, getTotal} from '../../selectors/search';\nimport {buildValuesLabels, mergeConfigs} from '../../services/search/facet';\n\nimport Button from '@mui/material/Button';\nimport SelectedFacetChip from './SelectedFacetChip/SelectedFacetChip';\nimport MoreButton from './MoreButton/MoreButton';\n\nimport styles from './styles.less';\nimport mdmModule, {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {\n applyPresentationStrategyToValue,\n DataTypes,\n debounce,\n getAttrDataTypeDefinition,\n getMapSearchLabel,\n getMapSearchValues,\n getNumberFormat,\n intl,\n isEmptySearchGroup,\n KeywordSearchType,\n mapFilterValue,\n utils\n} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport Collapse from '@mui/material/Collapse';\nimport ActionsMenu from '../ActionsMenu/ActionsMenu';\nimport SavedSearchLabel from '../SavedSearchLabel/SavedSearchLabel';\nimport {getQueryBuilderGroups} from '../../selectors/advancedSearch';\nimport Divider from '@mui/material/Divider';\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport {showSavedSearchesDialog} from '../../actions/uiActions';\nimport SavedSearchesDialog from '../SavedSearchesDialog/SavedSearchesDialog';\nimport {getShowAdvancedSearch, getShowSavedSearchesDialog} from '../../selectors/ui';\nimport CurrentTenantLabel from '../CurrentTenantLabel/CurrentTenantLabel';\nimport {SEARCH_DEBOUNCE_TIME} from '../../constants/constants';\n\nconst SEARCH_FIELD_NAME = 'search';\nconst GEOLOCATION_FIELD_NAME = 'geoLocation';\n\nexport class SearchBar extends PureComponent {\n state = {\n configs: [],\n data: {},\n search: {},\n keyword: null,\n chipsData: [],\n displayCount: 0,\n isOverflow: false\n };\n\n constructor(props) {\n super(props);\n this.chipsBarRef = null;\n this.setChipsBarRef = (element) => {\n this.chipsBarRef = element;\n };\n\n this.update = this.update.bind(this);\n this.resize = debounce(this.resize.bind(this), 0);\n }\n\n static getChipsData(props) {\n const facets = Object.values(mergeConfigs(props.data, props.configs));\n const selectedFacets = facets.filter((facet) => facet.values && facet.values.length);\n const getStrategy = (facet) =>\n getNumberFormat(getAttrDataTypeDefinition(facet.attrType), props.attributePresentations, intl.getLocale())\n .strategy;\n const chipsData = selectedFacets.map((facet) => {\n const title = facet.title || facet.hiddenTitle;\n const labels = buildValuesLabels(\n [...(facet.data || []), ...(facet.filteredData || [])],\n path(['attrType', 'type'], facet) === DataTypes.TYPE_DATE\n ? facet.values.map((values) => values.map((value) => utils.dates.toLocalDate(value).getTime()))\n : facet.values.map(mapFilterValue(applyPresentationStrategyToValue(getStrategy(facet)))),\n facet.type,\n {dateMask: props.dateMask, dateTimeMask: props.dateTimeMask}\n );\n return {\n fieldName: facet.fieldName,\n title: title,\n values: labels\n };\n });\n\n if (props.keyword) {\n chipsData.push({\n fieldName: SEARCH_FIELD_NAME,\n title: i18n.text('Search'),\n values: [props.keyword.value]\n });\n }\n const {values: [values] = [], type} = pathOr({}, ['mapSearch'], props.search);\n if (values) {\n chipsData.push({\n fieldName: GEOLOCATION_FIELD_NAME,\n values: getMapSearchValues(type, values),\n title: getMapSearchLabel(type)\n });\n }\n return chipsData;\n }\n\n static getDerivedStateFromProps(props, state) {\n if (\n props.configs !== state.configs ||\n props.data !== state.data ||\n props.keyword !== state.keyword ||\n props.search !== state.search\n ) {\n const chipsData = SearchBar.getChipsData(props);\n\n return {\n configs: props.configs,\n data: props.data,\n search: props.search,\n keyword: props.keyword,\n chipsData: chipsData,\n displayCount: chipsData.length,\n isOverflow: true\n };\n }\n return null;\n }\n\n update() {\n const count = this.findNumberOfViewedChips();\n this.setState({\n displayCount: count,\n isOverflow: false\n });\n }\n\n resize() {\n this.setState((state) => {\n return {\n displayCount: state.chipsData.length,\n isOverflow: true\n };\n });\n }\n\n findNumberOfViewedChips() {\n if (!this.chipsBarRef) {\n return 0;\n }\n const {childNodes, offsetLeft, offsetWidth} = this.chipsBarRef;\n const barWidth = offsetLeft + offsetWidth;\n const isNodeVisible = (width) => (node) => node.offsetLeft + node.offsetWidth <= width;\n return ([...childNodes] || []).filter(isNodeVisible(barWidth)).length;\n }\n\n onDelete = (fieldName) => (event) => {\n event.stopPropagation();\n switch (fieldName) {\n case SEARCH_FIELD_NAME:\n this.props.dispatch(mdmModuleSearch.actions.keywordUpdated(null));\n break;\n case GEOLOCATION_FIELD_NAME:\n this.props.dispatch(changeMapValue(null));\n break;\n default:\n this.props.dispatch(changeFacetValues(fieldName, []));\n }\n };\n\n onClearFiltersClick = () => {\n this.props.dispatch(clearAllSearches({silent: true}));\n this.props.dispatch(mdmModuleSearch.actions.keywordUpdated({debounceTime: SEARCH_DEBOUNCE_TIME}));\n };\n\n handleOpenSavedSearchesDialog = () => this.props.dispatch(showSavedSearchesDialog(true));\n\n handleCloseSavedSearchesDialog = () => this.props.dispatch(showSavedSearchesDialog(false));\n\n componentDidMount() {\n window.addEventListener('resize', this.resize);\n this.update();\n }\n\n componentDidUpdate() {\n if (this.state.isOverflow || this.findNumberOfViewedChips() !== this.state.displayCount) {\n this.update();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.resize);\n }\n\n createAllChips() {\n return this.state.chipsData.map((label) => {\n return (\n <SelectedFacetChip\n key={label.fieldName}\n title={label.title}\n values={label.values}\n onDelete={this.onDelete(label.fieldName)}\n />\n );\n });\n }\n\n render() {\n const {displayCount} = this.state;\n const {openAdvancedSearch} = this.props;\n const chips = this.createAllChips();\n const barChips = chips.slice(0, displayCount);\n const extraChips = chips.slice(displayCount);\n const {quantity, queryBuilderGroups} = this.props;\n const filteredQueryBuilderGroups = when(propEq('length', 1), reject(isEmptySearchGroup))(queryBuilderGroups);\n const isDisableClearButton = chips.length === 0 && filteredQueryBuilderGroups.length === 0;\n return (\n <div className={styles.container} data-reltio-id=\"search-bar\">\n <div className={styles.header}>\n <div className={styles.captionWrapper} data-reltio-id=\"search-bar-total-profiles\">\n <Typography component={'span'} classes={{body1: styles.profileNumber}}>\n {i18n.number(quantity, '0,0')}\n </Typography>\n <Typography variant=\"body2\" component={'span'} classes={{root: styles.profileText}}>\n {i18n.text('total profiles')}\n </Typography>\n </div>\n <CurrentTenantLabel />\n <SavedSearchLabel />\n <Button\n color=\"primary\"\n className={styles.clearButton}\n onClick={this.onClearFiltersClick}\n disabled={isDisableClearButton}\n data-reltio-id=\"reltio-search-clear\"\n >\n {i18n.text('clear')}\n </Button>\n <ActionsMenu />\n <Divider orientation=\"vertical\" className={styles.splitter} />\n <Button\n className={styles.savedSearchesButton}\n variant=\"outlined\"\n startIcon={<AccessTimeIcon color=\"action\" />}\n onClick={this.handleOpenSavedSearchesDialog}\n data-reltio-id=\"reltio-search-saved-and-recent-search\"\n >\n <Typography variant=\"button\" color=\"textPrimary\" className={styles.buttonText}>\n {i18n.text('Saved & recent searches')}\n </Typography>\n </Button>\n <SavedSearchesDialog\n open={this.props.openSavedSearchesDialog}\n onClose={this.handleCloseSavedSearchesDialog}\n />\n </div>\n <Collapse in={!openAdvancedSearch && displayCount > 0} timeout={500}>\n <div className={styles.facetsBar}>\n <div ref={this.setChipsBarRef} className={styles.showBar}>\n {barChips}\n </div>\n {extraChips.length > 0 && <MoreButton items={extraChips} />}\n </div>\n </Collapse>\n </div>\n );\n }\n}\n\nSearchBar.propTypes = {\n data: PropTypes.object,\n search: PropTypes.object,\n keyword: KeywordSearchType,\n configs: PropTypes.array,\n dispatch: PropTypes.func,\n quantity: PropTypes.number,\n queryBuilderGroups: PropTypes.array,\n openSavedSearchesDialog: PropTypes.bool,\n openAdvancedSearch: PropTypes.bool,\n attributePresentations: PropTypes.object\n};\n\nSearchBar.defaultProps = {\n data: {},\n search: {},\n keyword: null,\n configs: [],\n queryBuilderGroups: [],\n openSavedSearchesDialog: false,\n attributePresentations: {}\n};\n\nexport default connect((store) => {\n return {\n data: getFacetsData(store),\n search: getSearchParams(store),\n keyword: mdmModule.selectors.getSearchKeyword(store),\n configs: getFacetsConfigs(store),\n quantity: getTotal(store, {}),\n queryBuilderGroups: getQueryBuilderGroups(store),\n openSavedSearchesDialog: getShowSavedSearchesDialog(store),\n openAdvancedSearch: getShowAdvancedSearch(store),\n dateMask: mdmModule.selectors.getDateMask(store),\n dateTimeMask: mdmModule.selectors.getDateTimeMask(store),\n attributePresentations: mdmModule.selectors.getAttributePresentations(store)\n };\n})(SearchBar);\n","// extracted by mini-css-extract-plugin\nexport default {\"popupBackdrop\":\"SearchBar-styles-popupBackdrop--OwhuH\",\"popupContent\":\"SearchBar-styles-popupContent--aKHAE\",\"complexPopupContent\":\"SearchBar-styles-complexPopupContent--oNrV9\",\"highlighted\":\"SearchBar-styles-highlighted--ZztbL\",\"highlightAnimate\":\"SearchBar-styles-highlightAnimate--sbKvl\",\"inactiveBackground\":\"SearchBar-styles-inactiveBackground--rq0JS\",\"inactiveHoverBackground\":\"SearchBar-styles-inactiveHoverBackground--zJ_KA\",\"inactiveSelectedBackground\":\"SearchBar-styles-inactiveSelectedBackground--Zu29l\",\"inactiveSelectedHoverBackground\":\"SearchBar-styles-inactiveSelectedHoverBackground--JVd1B\",\"container\":\"SearchBar-styles-container--rU0o9\",\"header\":\"SearchBar-styles-header--LRPwE\",\"captionWrapper\":\"SearchBar-styles-captionWrapper--sVeZz\",\"profileText\":\"SearchBar-styles-profileText--drYuE\",\"profileNumber\":\"SearchBar-styles-profileNumber--h2A8S\",\"facetsBar\":\"SearchBar-styles-facetsBar--zNZ6c\",\"showBar\":\"SearchBar-styles-showBar--BEeeA\",\"clearButton\":\"SearchBar-styles-clearButton--TtP7g\",\"splitter\":\"SearchBar-styles-splitter--x9sSC\",\"savedSearchesButton\":\"SearchBar-styles-savedSearchesButton--dtp0D\",\"buttonText\":\"SearchBar-styles-buttonText--AyS1y\"};","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n title: {\n flexGrow: 1\n },\n collapseIcon: {\n transform: 'rotate(0deg)',\n transition: 'transform 0.35s ease'\n },\n 'collapseIcon--inverted': {\n transform: 'rotate(-180deg)'\n },\n backButtonContainer: {\n margin: '12px'\n },\n collapseButton: {\n padding: '8px',\n marginRight: '12px'\n },\n toolBar: {\n minHeight: 0,\n flexShrink: 1,\n overflow: 'hidden'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport Typography from '@mui/material/Typography';\nimport ToolBar from '@mui/material/Toolbar';\n\nimport {useStyles} from './styles';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nconst QueryBuilderHeader = ({onBackBtnClick}) => {\n const styles = useStyles();\n return (\n <ToolBar disableGutters={true} classes={{root: styles.toolBar}}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Switch to basic mode')}\n size=\"L\"\n icon={ClearIcon}\n className={styles.backButtonContainer}\n onClick={onBackBtnClick}\n />\n <Typography variant=\"subtitle1\" className={styles.title}>\n {i18n.text('Advanced search')}\n </Typography>\n </ToolBar>\n );\n};\n\nQueryBuilderHeader.propTypes = {\n onBackBtnClick: PropTypes.func\n};\n\nexport default QueryBuilderHeader;\n","import {makeStyles} from '@mui/styles';\n\nconst padding = '24px';\n\nconst useStyles = makeStyles({\n resultQueryPanel: {\n background: '#E3E7E9',\n display: 'flex',\n flex: '0 0 auto',\n alignItems: 'center'\n },\n resultQuery: {\n flexGrow: 1,\n padding: `10px 10px 10px ${padding}`,\n fontSize: '12px',\n lineHeight: '16px',\n color: 'rgba(0,0,0,0.38)'\n },\n queryContainer: {\n height: 'auto',\n maxHeight: '48px',\n paddingRight: padding,\n paddingTop: '4px',\n overflow: 'auto'\n },\n queryContainerMinHeight: {\n maxHeight: '18px'\n },\n query: {\n cursor: 'pointer'\n },\n noQuery: {\n color: '#000000'\n },\n actionsPanel: {\n display: 'flex',\n paddingRight: '12px'\n },\n collapseButton: {\n marginRight: '-4px'\n }\n});\n\nexport {useStyles};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n collapseIcon: {\n transform: 'rotate(0deg)',\n transition: 'transform 0.35s ease'\n },\n 'collapseIcon--inverted': {\n transform: 'rotate(-180deg)'\n }\n});\n\nexport {useStyles};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport KeyboardCapslockIcon from '@mui/icons-material/KeyboardCapslock';\n\nimport {useStyles} from './styles';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nconst QueryBuilderCollapseButton = ({collapseBtnActive, onCollapseBtnClick, ...otherProps}) => {\n const styles = useStyles();\n\n return (\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardCapslockIcon}\n tooltipTitle={collapseBtnActive ? i18n.text('Collapse panel') : i18n.text('Expand panel')}\n onClick={onCollapseBtnClick}\n iconClassName={classnames(styles.collapseIcon, {\n [styles['collapseIcon--inverted']]: !collapseBtnActive\n })}\n data-reltio-id=\"reltio-search-advanced-search-collapse-panel\"\n {...otherProps}\n />\n );\n};\n\nQueryBuilderCollapseButton.propTypes = {\n backBtnDisabled: PropTypes.bool,\n onBackBtnClick: PropTypes.func,\n collapseBtnActive: PropTypes.bool,\n onCollapseBtnClick: PropTypes.func\n};\n\nexport default QueryBuilderCollapseButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\nimport FullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nconst QueryBuilderFullscreenButton = ({isFullscreen = false, onClick = identity, ...otherProps}) => {\n return (\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={isFullscreen ? FullscreenExitIcon : FullscreenIcon}\n tooltipTitle={isFullscreen ? i18n.text('Exit full screen') : i18n.text('Full screen')}\n onClick={onClick}\n data-reltio-id=\"reltio-search-advanced-search-full-screen\"\n {...otherProps}\n />\n );\n};\n\nQueryBuilderFullscreenButton.propTypes = {\n isFullscreen: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default QueryBuilderFullscreenButton;\n","import React, {useCallback, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport {useStyles} from './styles';\n\nimport {updateAdvancedSearch} from '../../../actions/advancedSearchActions';\nimport {useDidUpdateEffect} from '@reltio/components';\nimport {buildQueryForAdvancedSearchGroups} from '../../../services/search/searchEngine';\nimport {copyTextToClipboard} from '../../../utils/clipboard';\nimport QueryBuilderCollapseButton from '../QueryBuilderCollapseButton/QueryBuilderCollapseButton';\nimport QueryBuilderFullscreenButton from '../QueryBuilderFullscreenButton/QueryBuilderFullscreenButton';\nimport {\n buildReadableQuery,\n buildReadableQueryToString,\n debounce,\n KeywordSearchType,\n MetadataType\n} from '@reltio/mdm-sdk';\nimport {addAvailableEntityTypesToGroups} from '../../../services/search/advancedSearch/attributeGroups';\nimport {MapSearchType} from '../../../constants/prop-types';\nimport ReadableSearchQuery from '../../ReadableSearchQuery/ReadableSearchQuery';\n\nconst APPLY_SEARCH_DELAY = 500;\n\nconst ResultBuilder = ({\n groups,\n hasMinSize,\n lookups,\n metadata,\n attributePresentations,\n collapseBtnActive,\n isFullscreen,\n onCollapseBtnClick,\n onFullScreenBtnClick,\n keyword,\n map,\n dispatch\n}) => {\n const styles = useStyles();\n const [queryMouseEnterX, setQueryMouseEnterX] = useState(0);\n const [queryMouseEnterY, setQueryMouseEnterY] = useState(0);\n const queryString = useMemo(\n () => buildQueryForAdvancedSearchGroups(addAvailableEntityTypesToGroups(metadata, groups)),\n [metadata, groups]\n );\n const readableQuery = buildReadableQuery(metadata, attributePresentations, lookups, groups, keyword, map);\n const initialTooltipTitle = i18n.text('Copy to clipboard');\n const [tooltipTitle, setTooltipTitle] = useState(initialTooltipTitle);\n\n const debouncedApplySearch = useCallback(\n debounce(() => {\n dispatch(updateAdvancedSearch());\n }, APPLY_SEARCH_DELAY),\n [dispatch]\n );\n\n const copyQueryToClipboard = useCallback(() => {\n copyTextToClipboard(buildReadableQueryToString(metadata, attributePresentations, lookups, groups, keyword, map))\n .then(() => setTooltipTitle(i18n.text('Query was copied')))\n .catch(() => setTooltipTitle(i18n.text('Error')));\n }, [groups, attributePresentations, lookups, metadata, keyword, map]);\n\n const onTooltipClose = useCallback(() => {\n setTooltipTitle(initialTooltipTitle);\n }, [initialTooltipTitle]);\n\n const onQueryMouseEnter = useCallback((e) => {\n setQueryMouseEnterX(e.clientX);\n setQueryMouseEnterY(e.clientY);\n }, []);\n\n useDidUpdateEffect(debouncedApplySearch, [debouncedApplySearch, queryString]);\n\n // When query is too long and div.queryContainer has scroll, we have wrong tooltip position.\n // Possible solution is wrap in Tooltip div.queryContainer component, but it's too wide for short queries.\n // So, we decided to place tooltip near position where cursor was entered on div.query\n const popperProps = useMemo(\n () => ({\n anchorEl: {\n clientWidth: 1,\n clientHeight: 1,\n getBoundingClientRect: () => ({\n left: queryMouseEnterX,\n bottom: queryMouseEnterY,\n height: 1,\n right: queryMouseEnterX,\n width: 1,\n top: queryMouseEnterY\n })\n }\n }),\n [queryMouseEnterX, queryMouseEnterY]\n );\n\n return (\n <div className={styles.resultQueryPanel}>\n <div className={styles.resultQuery}>\n {i18n.text('Search query')}\n <div className={classnames(styles.queryContainer, {[styles.queryContainerMinHeight]: hasMinSize})}>\n {readableQuery.length > 0 ? (\n <Tooltip\n key={tooltipTitle}\n title={tooltipTitle}\n onClose={onTooltipClose}\n PopperProps={popperProps}\n >\n <ReadableSearchQuery\n readableQuery={readableQuery}\n onMouseEnter={onQueryMouseEnter}\n onClick={copyQueryToClipboard}\n className={styles.query}\n />\n </Tooltip>\n ) : (\n <span className={styles.noQuery}>\n {i18n.text('Build your search and view your search query here')}\n </span>\n )}\n </div>\n </div>\n <div className={styles.actionsPanel}>\n <QueryBuilderCollapseButton\n collapseBtnActive={collapseBtnActive}\n onCollapseBtnClick={onCollapseBtnClick}\n className={styles.collapseButton}\n />\n <QueryBuilderFullscreenButton isFullscreen={isFullscreen} onClick={onFullScreenBtnClick} />\n </div>\n </div>\n );\n};\n\nResultBuilder.propTypes = {\n groups: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n attributes: PropTypes.arrayOf(\n PropTypes.shape({\n values: PropTypes.array,\n data: PropTypes.object,\n filter: PropTypes.string,\n operator: PropTypes.string\n })\n ),\n operator: PropTypes.string\n })\n ),\n lookups: PropTypes.object,\n hasMinSize: PropTypes.bool,\n attributePresentations: PropTypes.object,\n collapseBtnActive: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n onCollapseBtnClick: PropTypes.func,\n onFullScreenBtnClick: PropTypes.func,\n metadata: MetadataType,\n keyword: KeywordSearchType,\n map: MapSearchType,\n dispatch: PropTypes.func\n};\n\nexport default ResultBuilder;\n","import {eqProps, flatten, has, isNil, path, pipe, uniq} from 'ramda';\nimport moment from 'moment';\n\nimport {\n areAllOperatorsAnd,\n FACET_TYPES,\n FilterOptions,\n getDateRangeByValue,\n getFacetTypeForAttrType,\n isBooleanType,\n isDateRangeValue,\n isEmptyValue,\n isTimestampBasedType,\n isTypeSearchGroupAttribute,\n utils\n} from '@reltio/mdm-sdk';\nimport {collectFacetsFlatList, getEntityTypeFacetConfig} from '../collectFacets';\nimport {getSpecialAttribute} from '../advancedSearch/collectSpecialAttributes';\nimport {getEntityTypesFromGroups} from '../advancedSearch/attributeGroups';\nimport {needShowAllEntityTypeFacetItems} from '../facet';\n\nconst areAllAttributesFaceted = (attributes) => attributes.every((attribute) => attribute.data.attrType.faceted);\n\nconst areAccessibleFilters = (items) =>\n items.every(\n ({filter, data: {attrType = {}}}) =>\n [\n FilterOptions.EQUALS,\n FilterOptions.IN_RANGE,\n FilterOptions.FULL_TEXT,\n FilterOptions.ON,\n FilterOptions.WITHIN\n ].includes(filter) ||\n (FilterOptions.EXISTS === filter && isBooleanType(attrType.type))\n );\nconst hasRepeatedAttributes = (items) =>\n Object.values(\n items.reduce((equalsFiltersCounter, {data: {fieldName}, filter, values}) => {\n if (filter === FilterOptions.EQUALS && path([0, 'length'], values)) {\n equalsFiltersCounter[fieldName] =\n (equalsFiltersCounter[fieldName] && equalsFiltersCounter[fieldName] + 1) || 1;\n }\n return equalsFiltersCounter;\n }, {})\n ).some((count) => count > 1);\n\nexport const isAdvancedSearchTransformedToFacets = (metadata, groups, dataTenants) => {\n const flatAttributes = getFlatAttributesFromGroups(groups);\n\n if (flatAttributes.length) {\n const availableFacets = getAvailableFacets(metadata, groups, dataTenants);\n const attributesDataFromGroups = getFlatAttributesDataFromGroups(metadata, groups, dataTenants);\n const areAllFacetsAvailable = attributesDataFromGroups.every(\n (attributeData) =>\n isTypeSearchGroupAttribute({data: attributeData}) ||\n availableFacets.some(eqProps('fieldName', attributeData))\n );\n\n const onlyAndOperatorsForGroups = areAllOperatorsAnd(groups);\n const onlyAndOperatorsForAttributes = areAllOperatorsAnd(flatAttributes);\n const onlyAccessibleFilters = areAccessibleFilters(flatAttributes);\n const hasNoRepeatedAttributes = !hasRepeatedAttributes(flatAttributes);\n\n return (\n attributesDataFromGroups.length &&\n onlyAndOperatorsForGroups &&\n onlyAndOperatorsForAttributes &&\n onlyAccessibleFilters &&\n areAllAttributesFaceted(flatAttributes) &&\n areAllFacetsAvailable &&\n hasNoRepeatedAttributes\n );\n } else {\n return true;\n }\n};\n\nconst getFlatAttributesFromGroups = (groups) => groups.flatMap((group) => group.attributes).filter(has('data'));\n\nconst convertFacetedValues = (values, filter, type, attributeType) => {\n const processDateRangeFacet = (values, filter) => {\n switch (filter) {\n case FilterOptions.ON: {\n const date = moment(values);\n const isUTC = !isTimestampBasedType(attributeType);\n return [[utils.dates.getStartOfDay(date, isUTC), utils.dates.getEndOfDay(date, isUTC)]];\n }\n case FilterOptions.WITHIN:\n return isDateRangeValue(values)\n ? [getDateRangeByValue(values)]\n : values.some(isEmptyValue)\n ? []\n : [values];\n }\n };\n const processNumericRangeFacetedValues = (values, filter) => {\n switch (filter) {\n case FilterOptions.EQUALS:\n return values.map((value) => [value, value]);\n case FilterOptions.IN_RANGE: {\n return values.some(isEmptyValue) ? [] : [values];\n }\n }\n };\n\n if (\n ([FilterOptions.EQUALS, FilterOptions.IN_RANGE].includes(filter) ||\n [FilterOptions.ON, FilterOptions.WITHIN].includes(filter)) &&\n Array.isArray(values) &&\n !isEmptyValue(values[0])\n ) {\n switch (type) {\n case FACET_TYPES.NUMERIC_RANGE_FACET:\n return processNumericRangeFacetedValues(values[0], filter);\n case FACET_TYPES.DATE_RANGE_FACET:\n return processDateRangeFacet(values[0], filter);\n default:\n return values[0];\n }\n } else if (isBooleanType(attributeType) && filter === FilterOptions.EXISTS) {\n return [true, false];\n } else {\n return values && !isEmptyValue(values[0]) ? [values[0]] : [];\n }\n};\n\nconst getFlatAttributesDataFromGroups = (metadata, groups, dataTenants) => {\n const mergedDataObject = getFlatAttributesFromGroups(groups)\n .map(({data: {fieldName, entityTypeUri}, filter, values}) => {\n return {\n entityTypeUri,\n fieldName,\n filter,\n values\n };\n })\n .reduce((res, {entityTypeUri, fieldName, filter, values}) => {\n const {attrType} = entityTypeUri\n ? collectFacetsFlatList(metadata, [entityTypeUri], [], dataTenants).find(\n (facet) => facet.fieldName === fieldName\n ) || {}\n : getSpecialAttribute(fieldName, dataTenants) || {};\n\n const convertedValues =\n !isNil(attrType) && attrType.faceted\n ? convertFacetedValues(values, filter, getFacetTypeForAttrType(attrType), attrType.type)\n : values;\n\n if (!isNil(convertedValues)) {\n res[fieldName] = uniq((res[fieldName] || []).concat(convertedValues));\n }\n\n return res;\n }, {});\n\n const fieldNames = Object.keys(mergedDataObject);\n const mergedData = fieldNames.map((fieldName) => ({fieldName, values: mergedDataObject[fieldName]}));\n\n const hasMultiRangeInAttributeData = mergedData.some(({values}) => {\n return values && Array.isArray(values[0]) && values.length > 1;\n });\n\n return hasMultiRangeInAttributeData ? [] : mergedData;\n};\n\nconst getAvailableFacets = (metadata, groups, dataTenants) => {\n const entityTypeList = getEntityTypesFromGroups(groups);\n return collectFacetsFlatList(metadata, entityTypeList, [], dataTenants);\n};\n\nconst buildEntityTypeFacetData = (values) => {\n return needShowAllEntityTypeFacetItems({values})\n ? {\n values,\n showAllItems: true\n }\n : {values};\n};\n\nexport const createFacetsFromAdvancedSearch = (metadata, groups, dataTenants) => {\n const availableFacets = getAvailableFacets(metadata, groups, dataTenants);\n const flatAttributesDataFromGroups = getFlatAttributesDataFromGroups(metadata, groups, dataTenants);\n const entityTypeValues = pipe(flatten, uniq)(getEntityTypesFromGroups(groups));\n const entityTypeFacet = getEntityTypeFacetConfig(metadata);\n\n return flatAttributesDataFromGroups.reduce(\n (res, {fieldName, values}) => {\n const facetConfig = availableFacets.find((facet) => facet.fieldName === fieldName);\n\n if (facetConfig) {\n res.facetsConfigs.push(facetConfig);\n res.facetsData[fieldName] = {values};\n }\n\n return res;\n },\n {\n facetsConfigs: [entityTypeFacet],\n facetsData: {\n [entityTypeFacet.fieldName]: buildEntityTypeFacetData(entityTypeValues)\n }\n }\n );\n};\n","export const verticalLine = {\n position: 'absolute',\n width: 1,\n background: 'rgba(43, 152, 240, 0.3)',\n height: 16,\n left: 36\n};\n","import {makeStyles} from '@mui/styles';\nimport {verticalLine} from './commonStyles';\n\nconst styles = makeStyles((theme) => {\n return {\n container: {\n backgroundColor: theme.palette.background.default,\n transition: 'flex-grow 0.35s ease',\n flexGrow: 1,\n flexBasis: 0,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n button: {\n paddingLeft: 23,\n fontSize: '14px',\n position: 'relative'\n },\n scrollWrapper: {\n overflow: 'auto',\n flex: '1 0 0px',\n padding: '0 60px'\n },\n groupsContainer: {\n margin: '0 auto',\n width: '100%',\n maxWidth: '1280px'\n },\n apply: {\n background: theme.palette.background.default,\n textAlign: 'right',\n padding: '15px 45px'\n },\n icon: {\n height: 18,\n width: 18,\n marginRight: '9px'\n },\n verticalOperatorLine: {\n ...verticalLine\n },\n upperLine: {\n marginTop: -18\n },\n searchByOvContainer: {\n marginLeft: -6,\n marginBottom: -14\n }\n };\n});\n\nexport default styles;\n","// extracted by mini-css-extract-plugin\nexport default {\"select\":\"LogicOperator-styles-select--hjsjo\"};","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n select: {\n padding: '6px 16px 7px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {operators} from '../../../constants/constants';\nimport {DropDownEditor} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport styles from './styles.less';\nimport useStyles from './styles.js';\n\nconst LogicOperator = ({className, value, onChange}) => {\n const classes = useStyles();\n const entries = operators.map((operator) => ({\n ...operator,\n label: i18n.text(operator.label)\n }));\n return (\n <DropDownEditor\n className={classnames(styles.select, className)}\n classes={classes}\n value={value}\n entries={entries}\n onChange={onChange}\n />\n );\n};\n\nLogicOperator.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func\n};\n\nexport default LogicOperator;\n","import {makeStyles} from '@mui/styles';\nimport {verticalLine} from '../commonStyles';\n\nconst styles = makeStyles((theme) => {\n return {\n title: {},\n rows: {},\n actions: {},\n container: {\n backgroundColor: theme.palette.background.paper,\n padding: '18px 16px 0',\n position: 'relative',\n margin: '16px 0 19px',\n '& $title': {\n color: theme.palette.text.hint,\n fontSize: 12,\n marginBottom: 20\n },\n '& $rows': {\n display: 'flex',\n flexDirection: 'column'\n },\n '& $actions': {\n position: 'absolute',\n top: 16,\n right: 16,\n paddingTop: 0\n },\n '&:after, &:before': {\n content: '',\n width: 1,\n height: 16,\n position: 'absolute',\n top: '100%',\n left: 35,\n background: 'rgba(43, 152, 240, .3)'\n },\n '&:before': {\n top: 'initial',\n bottom: '100%'\n },\n '&:first-child': {\n marginTop: 0,\n '&:before': {\n content: 'none'\n }\n }\n },\n entityTypeSelector: {\n width: '394px',\n height: '46px'\n },\n entityTypeSelectorContainer: {\n marginBottom: '20px'\n },\n logicOperator: {\n position: 'relative',\n paddingLeft: 16,\n '&:before': {}\n },\n verticalOperatorLine: {\n ...verticalLine\n },\n upperLine: {\n marginTop: -18\n },\n lowerLine: {\n marginBottom: -16,\n bottom: 0\n }\n };\n});\n\nexport default styles;\n","import {makeStyles} from '@mui/styles';\n\nconst rowHeight = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginBottom: '20px',\n '&:hover $actions': {\n opacity: 1\n }\n },\n logicOperatorContainer: {\n marginTop: '7px',\n marginRight: '40px',\n width: '100px'\n },\n logicOperator: {\n fontSize: '14px',\n color: theme.palette.text.secondary\n },\n logicOperatorPlaceholder: {\n paddingLeft: '16px',\n paddingTop: '10px'\n },\n attributeSelect: {\n width: '254px',\n height: rowHeight\n },\n filterSelect: {\n width: '190px'\n },\n valuesWrapper: {\n width: '100%',\n display: 'flex',\n minHeight: rowHeight,\n alignItems: 'flex-start',\n boxSizing: 'border-box'\n },\n actions: {\n opacity: '0',\n transition: 'opacity 0.3s',\n paddingTop: '13px',\n width: '88px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexShrink: '0',\n marginLeft: '8px',\n '& >span': {\n cursor: 'pointer',\n display: 'flex'\n },\n '& $actionIcon': {\n cursor: 'pointer',\n color: 'rgba(0, 0, 0, .54)'\n }\n },\n actionIcon: {}\n}));\n\nexport default useStyles;\n","import React, {useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {identity} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {isAvailableEntityTypeForDataTenant, orderByArrayComparator} from '@reltio/mdm-sdk';\nimport {EntityTypesSelector} from '@reltio/components';\n\nimport {getAllowedEntityTypes} from '../../../selectors/ui';\nimport {getDataTenantObject} from '../../../selectors/search';\n\nconst AdvancedSearchEntityTypesSelector = ({selectedEntityTypes, onChange, classes = {}, ListLabelProps = {}}) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const dataTenantObject = useSelector(getDataTenantObject);\n const allowedEntityTypes = useSelector(getAllowedEntityTypes);\n const isAllowedEntityType = useCallback(\n allowedEntityTypes ? ({uri}) => allowedEntityTypes.includes(uri) : identity,\n [allowedEntityTypes]\n );\n const entityTypes = useMemo(\n () =>\n metadata.entityTypes\n .filter(isAllowedEntityType)\n .sort(allowedEntityTypes ? orderByArrayComparator(allowedEntityTypes, 'uri') : (_) => 0)\n .filter(({uri}) => isAvailableEntityTypeForDataTenant(dataTenantObject, uri)),\n [metadata, dataTenantObject, isAllowedEntityType, allowedEntityTypes]\n );\n\n return (\n <EntityTypesSelector\n classes={classes}\n entityTypes={entityTypes}\n onChange={onChange}\n selectedEntityTypes={selectedEntityTypes}\n ListLabelProps={ListLabelProps}\n placeholder={i18n.text('All')}\n enableEmptyValueUnderline\n />\n );\n};\n\nAdvancedSearchEntityTypesSelector.propTypes = {\n selectedEntityTypes: PropTypes.arrayOf(PropTypes.string).isRequired,\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.shape({\n root: PropTypes.string,\n label: PropTypes.string\n }),\n ListLabelProps: PropTypes.shape({\n maxWidth: PropTypes.number\n })\n};\n\nexport default AdvancedSearchEntityTypesSelector;\n","import React, {memo, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {always, pipe, when} from 'ramda';\n\nimport mdmModule from '@reltio/mdm-module';\nimport {BasicAttributeSelector, BasicAttributeSelectorProps} from '@reltio/components';\nimport {\n getAttributesGroupsFilteredBy,\n rejectReferencedEntityAttributesFromGroups\n} from '../../services/search/attributesList/attributeListUtils';\nimport {getDataTenantObject} from '../../selectors/search';\nimport {sanitizeAttributesGroupsForDataTenant} from '../../services/search/dataTenants';\nimport {getAllowedEntityTypes} from '../../selectors/ui';\n\nexport type Props = {\n isOpen?: boolean;\n entityTypes: string[];\n showReferencedEntityAttributes: boolean;\n recommendedAttributes: string[];\n firstLevelAttributesFilter: () => void;\n} & Omit<BasicAttributeSelectorProps, 'itemsGroups'>;\n\nconst AttributeSelector = ({\n entityTypes,\n recommendedAttributes,\n showReferencedEntityAttributes = true,\n firstLevelAttributesFilter,\n ...restProps\n}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const dataTenantObject = useSelector(getDataTenantObject);\n const canUserReadWorkflowDataTask = useSelector(mdmModule.selectors.getCanUserReadWorkflowDataTask);\n const allowedEntityTypes = useSelector(getAllowedEntityTypes);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n\n const itemsGroups = useMemo(\n () =>\n pipe(\n getAttributesGroupsFilteredBy,\n when(always(!showReferencedEntityAttributes), rejectReferencedEntityAttributesFromGroups),\n sanitizeAttributesGroupsForDataTenant(dataTenantObject)\n )(\n {allowedEntityTypes, firstLevelAttributesFilter},\n metadata,\n entityTypes,\n recommendedAttributes,\n dataTenants,\n canUserReadWorkflowDataTask\n ),\n [\n entityTypes,\n metadata,\n dataTenantObject,\n allowedEntityTypes,\n firstLevelAttributesFilter,\n recommendedAttributes,\n showReferencedEntityAttributes,\n dataTenants,\n canUserReadWorkflowDataTask\n ]\n );\n\n return <BasicAttributeSelector {...restProps} itemsGroups={itemsGroups} />;\n};\n\nexport default memo(AttributeSelector);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport AttributeSelector from '../../../AttributeSelectors/AttributeSelector';\nimport {toggleAttributeSelect} from '../../../../actions/advancedSearchActions';\nimport {getSearchGroupAttributeLabel} from '@reltio/mdm-sdk';\n\nconst AdvancedSearchAttributeSelector = ({\n rowData: attribute,\n rowContext: {entityTypes, dispatchGroupAction},\n attributeSelectorProps = {}\n}) => {\n const styles = useStyles();\n const attributeId = attribute && attribute.id;\n const changeAttribute = useCallback(\n (selectInfo) => {\n dispatchGroupAction(toggleAttributeSelect, attributeId, selectInfo);\n },\n [attributeId, dispatchGroupAction]\n );\n const getSelectedAttributeLabel = useCallback((data) => getSearchGroupAttributeLabel({data}), []);\n\n return (\n <AttributeSelector\n className={styles.attributeSelect}\n value={attribute && attribute.data}\n getLabel={getSelectedAttributeLabel}\n entityTypes={entityTypes}\n onSelect={changeAttribute}\n onRestoreFocus={attributeSelectorProps.onRestoreFocus}\n onOpenPopup={attributeSelectorProps.onOpen}\n disableRestoreFocus={attributeSelectorProps.disablePopoverRestoreFocus}\n disableEnforceFocus={attributeSelectorProps.disablePopoverRestoreFocus}\n />\n );\n};\n\nAdvancedSearchAttributeSelector.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n entityTypes: PropTypes.arrayOf(PropTypes.string),\n dispatchGroupAction: PropTypes.func\n }),\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(AdvancedSearchAttributeSelector);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n focusable: \"false\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM8 8v12h12V8H8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg397942461a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg397942461b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg397942461a\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg397942461b)\",\n fill: \"#000\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\"\n})))))));","export const isEmptyAttribute = (attribute) => !(attribute && attribute.data);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Tooltip from '@mui/material/Tooltip';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\nimport DuplicateIcon from '../../icons/duplicate.svg';\n\nimport {\n addEmptyAttributeAfter,\n deleteAttributeAndVerifyGroupEntityTypes,\n duplicateAttribute\n} from '../../../../actions/advancedSearchActions';\nimport {isEmptyAttribute} from './helpers';\n\nconst AdvancedSearchRowActions = ({rowData: attribute, rowContext: {dispatchGroupAction}}) => {\n const styles = useStyles();\n const attributeId = attribute && attribute.id;\n const onRowDelete = useCallback(\n () => dispatchGroupAction(deleteAttributeAndVerifyGroupEntityTypes, attributeId),\n [attributeId, dispatchGroupAction]\n );\n const onRowDuplicate = useCallback(\n () => dispatchGroupAction(duplicateAttribute, attributeId),\n [attributeId, dispatchGroupAction]\n );\n const onAddRowAfterId = useCallback(\n () => dispatchGroupAction(addEmptyAttributeAfter, attributeId),\n [attributeId, dispatchGroupAction]\n );\n\n return (\n attribute && (\n <div className={classnames(styles.actions)}>\n <Tooltip title={i18n.text('Add')} placement=\"bottom\">\n <AddCircleIcon className={styles.actionIcon} onClick={onAddRowAfterId} />\n </Tooltip>\n {!isEmptyAttribute(attribute) && (\n <Tooltip title={i18n.text('Duplicate')} placement={'bottom'}>\n <div className={styles.actionIcon} tabIndex={-1}>\n <DuplicateIcon onClick={onRowDuplicate} tabIndex={-1} />\n </div>\n </Tooltip>\n )}\n <Tooltip title={i18n.text('Delete')} placement=\"bottom\">\n <CloseIcon onClick={onRowDelete} className={styles.actionIcon} />\n </Tooltip>\n </div>\n )\n );\n};\n\nAdvancedSearchRowActions.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func\n })\n};\n\nexport default memo(AdvancedSearchRowActions);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\n\nimport {QueryBuilderAttributeType, ReactSelectOptionFilters, SimpleDropDownSelector} from '@reltio/components';\nimport {capitalize} from '@mui/material/utils';\n\nconst QueryBuilderFilterSelector = ({className, attribute, textFieldInputRef, isDisabled, height, onChange}) => {\n const getCapitalizedFilterOptionLabel = pipe(getFilterOptionLabel, capitalize);\n\n return (\n <SimpleDropDownSelector\n label={''}\n placeholder={i18n.text('Equals')}\n className={className}\n value={\n !isDisabled\n ? {value: attribute.filter, label: getCapitalizedFilterOptionLabel(attribute.filter)}\n : undefined\n }\n options={\n (attribute &&\n attribute.data &&\n attribute.data.filterOptions.map((value) => ({\n value,\n label: getCapitalizedFilterOptionLabel(value)\n }))) ||\n []\n }\n height={height}\n onChange={onChange}\n isDisabled={isDisabled}\n filterOption={ReactSelectOptionFilters.BY_LABEL}\n textFieldInputRef={textFieldInputRef}\n />\n );\n};\n\nQueryBuilderFilterSelector.propTypes = {\n className: PropTypes.string,\n attribute: QueryBuilderAttributeType,\n textFieldInputRef: PropTypes.object,\n isDisabled: PropTypes.bool,\n onChange: PropTypes.func,\n height: PropTypes.number\n};\n\nexport default memo(QueryBuilderFilterSelector);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\nimport QueryBuilderFilterSelector from '../../../QueryBuilderFilterSelector/QueryBuilderFilterSelector';\nimport {isEmptyAttribute} from './helpers';\nimport {setFilter} from '../../../../actions/advancedSearchActions';\n\nconst AdvancedSearchFilterSelector = ({rowData: attribute, rowContext: {dispatchGroupAction}, textFieldInputRef}) => {\n const styles = useStyles();\n const attributeId = attribute && attribute.id;\n const onFilterChange = useCallback(\n (value) => dispatchGroupAction(setFilter, attributeId, value.value),\n [dispatchGroupAction, attributeId]\n );\n\n return (\n <QueryBuilderFilterSelector\n className={styles.filterSelect}\n attribute={attribute}\n textFieldInputRef={textFieldInputRef}\n isDisabled={isEmptyAttribute(attribute)}\n onChange={onFilterChange}\n />\n );\n};\n\nAdvancedSearchFilterSelector.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func\n }),\n textFieldInputRef: PropTypes.object\n};\n\nexport default memo(AdvancedSearchFilterSelector);\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n input: {\n margin: 0,\n paddingBottom: '4px !important',\n paddingTop: '2px !important',\n borderRadius: '4px'\n },\n multipleInput: {\n minHeight: '46px',\n margin: 0,\n padding: 100\n },\n root: {\n borderRadius: '4px 4px 0 0',\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n margin: 0\n },\n boolRoot: {\n borderRadius: '4px 4px',\n padding: 11,\n display: 'flex',\n alignItems: 'center'\n },\n dateRoot: {\n borderRadius: '4px 4px 0 0',\n margin: 0\n },\n booleanRadioEditor: {\n paddingLeft: '11px'\n }\n});\n\nexport default useStyles;\n","// extracted by mini-css-extract-plugin\nexport default {\"loadingWrapper\":\"ValuesEditor-styles-loadingWrapper--_rOmn\",\"loading\":\"ValuesEditor-styles-loading--mLFVu\"};","import React, {useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport styles from './styles.less';\nimport MultiTypeaheadEditor from '../../MultiTypeaheadEditor/MultiTypeaheadEditor';\nimport {pipe, propOr} from 'ramda';\nimport {wrapInArray} from '@reltio/mdm-sdk';\nimport {getQueryBuilderAttributesDataById, checkAllQueryGroupsHasAndOperator} from '../../../selectors/advancedSearch';\nimport {QueryBuilderAttributeType} from '@reltio/components';\nimport {isMetadataSourcedFacetedAttribute} from '../../../services/search/facet';\nimport {getTotalSearchParamsQuery} from '../../../selectors/search';\n\nconst PROGRESS_ICON_SIZE = 20;\n\nconst TypeaheadValuesEditor = ({attribute, groupId, onChange, updateValues, filterValues}) => {\n const {values, data: {attrType, fieldName} = {}, id} = attribute;\n const attributesData = useSelector((state) => getQueryBuilderAttributesDataById(state, groupId, id)) || {};\n const isOnlyAndOperators = useSelector((state) => checkAllQueryGroupsHasAndOperator(state));\n const currentQuery = useSelector((state) => getTotalSearchParamsQuery(state, fieldName));\n\n useEffect(() => {\n if (isOnlyAndOperators) {\n updateValues();\n }\n }, [values, isOnlyAndOperators, currentQuery]); // eslint-disable-line\n\n useEffect(() => {\n if (!isOnlyAndOperators) {\n updateValues();\n }\n }, [values, isOnlyAndOperators]); // eslint-disable-line\n\n const editorValues = useMemo(() => propOr([], 0, values), [values]);\n const handleEditorChange = useCallback(pipe(wrapInArray, onChange), [onChange]);\n\n const {default: attributeValues, filtered: filteredAttributeValues} = attributesData;\n\n return !attributeValues && attrType ? (\n <div className={styles.loadingWrapper}>\n <CircularProgress size={PROGRESS_ICON_SIZE} className={styles.loading} />\n </div>\n ) : (\n <MultiTypeaheadEditor\n values={editorValues}\n defaultOptions={attributeValues}\n filteredOptions={filteredAttributeValues}\n onChange={handleEditorChange}\n getSuggestions={filterValues}\n tabSelectsValue={false}\n canLoadMore={!isMetadataSourcedFacetedAttribute(attribute.data)}\n />\n );\n};\n\nTypeaheadValuesEditor.propTypes = {\n attribute: QueryBuilderAttributeType.isRequired,\n groupId: PropTypes.string,\n onChange: PropTypes.func,\n updateValues: PropTypes.func,\n filterValues: PropTypes.func\n};\n\nexport default TypeaheadValuesEditor;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {flatten, isEmpty, isNil, allPass, propSatisfies, either, prop, propEq} from 'ramda';\nimport {\n DataTypes,\n getAttrDataTypeDefinition,\n getDataTypeDefinitionForFilterValue,\n isBooleanType,\n isDateRangeFilterOption,\n isDateType,\n isEntityTypeUri,\n isEnumAttrType,\n isLookupAttrType,\n isMultiValueOption,\n isTypeaheadAttrType\n} from '@reltio/mdm-sdk';\nimport {FilterValueEditor, QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\nimport TypeaheadValuesEditor from './TypeaheadValuesEditor';\nimport {filterAttributeValues, setValues, updateAttributeValues} from '../../../actions/advancedSearchActions';\n\nconst FILTER_DEBOUNCE_TIME = 500;\nconst ValuesEditor = ({attribute, dispatchGroupAction, groupId}) => {\n const {values, data: {attrType, fieldName} = {}, filter} = attribute;\n const classes = useStyles();\n const isTypeahead =\n isTypeaheadAttrType(attrType) ||\n allPass([\n propSatisfies(either(isNil, isEntityTypeUri), 'uri'),\n prop('faceted'),\n propEq('type', DataTypes.TYPE_BLOB)\n ])(attrType);\n\n const suppressAttrType = isEnumAttrType(attrType) || isLookupAttrType(attrType);\n const onValuesChange = (values) => dispatchGroupAction(setValues, attribute.id, values);\n\n if ((isTypeahead || suppressAttrType) && isMultiValueOption(filter)) {\n const updateValues = () => dispatchGroupAction(updateAttributeValues, attribute);\n const filterValues = ({value, pageNumber, currentOptions}) =>\n dispatchGroupAction(filterAttributeValues, {\n attribute,\n value,\n debounceTime: FILTER_DEBOUNCE_TIME,\n pageNumber,\n currentOptions\n });\n return (\n <TypeaheadValuesEditor\n attribute={attribute}\n groupId={groupId}\n onChange={onValuesChange}\n filterValues={filterValues}\n updateValues={updateValues}\n />\n );\n } else {\n const valueDataTypeDefinition = suppressAttrType\n ? {type: DataTypes.TYPE_STRING}\n : getAttrDataTypeDefinition(attrType);\n\n const filterValueDataTypeDefinition = getDataTypeDefinitionForFilterValue(valueDataTypeDefinition, filter);\n\n const stylesRoot =\n (isDateType(filterValueDataTypeDefinition.type) && !isDateRangeFilterOption(filter) && classes.dateRoot) ||\n (isBooleanType(filterValueDataTypeDefinition.type) && classes.boolRoot) ||\n classes.root;\n\n return (\n <FilterValueEditor\n filter={{\n filter,\n fieldName,\n values: values || []\n }}\n onChange={onValuesChange}\n dataTypeDefinition={filterValueDataTypeDefinition}\n fullWidth\n TextFieldProps={{\n InputProps: {\n classes: {\n root: classes.input\n },\n disableUnderline: isNil(values) || isEmpty(flatten(values))\n }\n }}\n color=\"primary\"\n booleanRadioEditorClassName={classes.booleanRadioEditor}\n classes={{root: stylesRoot}}\n orientation=\"horizontal\"\n />\n );\n }\n};\n\nValuesEditor.propTypes = {\n attribute: QueryBuilderAttributeType.isRequired,\n groupId: PropTypes.string,\n dispatchGroupAction: PropTypes.func\n};\n\nexport default memo(ValuesEditor);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {checkIfOptionHasValues} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport {isEmptyAttribute} from './helpers';\nimport ValuesEditor from '../../ValuesEditor/ValuesEditor';\n\nconst AdvancedSearchValuesEditorWrapper = ({rowData: attribute, rowContext: {dispatchGroupAction, groupId}}) => {\n const styles = useStyles();\n const canFilterAcceptValues = attribute && checkIfOptionHasValues(attribute.filter);\n\n return (\n <div className={styles.valuesWrapper} data-reltio-id=\"advanced-search-values-editor-wrapper\">\n {!isEmptyAttribute(attribute) && canFilterAcceptValues && (\n <ValuesEditor attribute={attribute} dispatchGroupAction={dispatchGroupAction} groupId={groupId} />\n )}\n </div>\n );\n};\n\nAdvancedSearchValuesEditorWrapper.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func,\n groupId: PropTypes.string\n })\n};\n\nexport default memo(AdvancedSearchValuesEditorWrapper);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport {setAttributeOperator} from '../../../../actions/advancedSearchActions';\nimport LogicOperator from '../../LogicOperator/LogicOperator';\n\nconst AdvancedSearchRowLogicOperator = ({rowData: attribute, rowContext: {dispatchGroupAction}}) => {\n const styles = useStyles();\n const attributeId = attribute && attribute.id;\n const logicOperator = attribute && attribute.operator;\n const onOperatorChange = useCallback(\n (value) => dispatchGroupAction(setAttributeOperator, attributeId, value),\n [dispatchGroupAction, attributeId]\n );\n\n return (\n <div className={styles.logicOperatorContainer}>\n {logicOperator ? (\n <LogicOperator className={styles.logicOperator} value={logicOperator} onChange={onOperatorChange} />\n ) : (\n <div className={classnames(styles.logicOperator, styles.logicOperatorPlaceholder)}>\n {i18n.text('Where')}\n </div>\n )}\n </div>\n );\n};\n\nAdvancedSearchRowLogicOperator.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func\n })\n};\n\nexport default memo(AdvancedSearchRowLogicOperator);\n","import React, {memo, useCallback, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {\n DropDownMenuButton,\n QueryBuilderAttributeType,\n QueryBuilderRowsGroup,\n SmallIconButton\n} from '@reltio/components';\nimport LogicOperator from '../LogicOperator/LogicOperator';\nimport {\n deleteGroup,\n duplicateGroup,\n setGroupEntityTypes,\n setGroupOperator\n} from '../../../actions/advancedSearchActions';\n\nimport useStyles from './styles';\nimport useRowComponentsStyles from './rowComponents/styles';\n\nimport AdvancedSearchEntityTypesSelector from '../AdvancedSearchEntityTypesSelector/AdvancedSearchEntityTypesSelector';\nimport AdvancedSearchAttributeSelector from './rowComponents/AdvancedSearchAttributeSelector';\nimport AdvancedSearchRowActions from './rowComponents/AdvancedSearchRowActions';\nimport AdvancedSearchFilterSelector from './rowComponents/AdvancedSearchFilterSelector';\nimport AdvancedSearchValuesEditorWrapper from './rowComponents/AdvancedSearchValuesEditorWrapper';\nimport AdvancedSearchRowLogicOperator from './rowComponents/AdvancedSearchRowLogicOperator';\n\nconst GroupBuilder = ({\n showLogicOperator,\n group: {id, attributes, operator, entityTypes = []},\n dispatch,\n onAddEmptyGroup,\n ...otherProps\n}) => {\n const classes = useStyles();\n const rowComponentsStyles = useRowComponentsStyles();\n\n const onGroupDuplicate = useCallback(() => dispatch(duplicateGroup(id)), [id, dispatch]);\n const onGroupDelete = useCallback(() => dispatch(deleteGroup(id)), [id, dispatch]);\n const onOperatorChange = useCallback((value) => dispatch(setGroupOperator(id, value)), [id, dispatch]);\n const onEntityTypesChange = useCallback((uris) => dispatch(setGroupEntityTypes(id, uris)), [id, dispatch]);\n\n const dispatchGroupAction = useCallback((action, ...attrs) => dispatch(action(id, ...attrs)), [id, dispatch]);\n\n const attributeFilterRef = useRef(null);\n const lastAttributesCountRef = useRef(null);\n const attributesCountRef = useRef(null);\n attributesCountRef.current = attributes.length;\n const handleAttributeSelectorOnRestoreFocus = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n if (attributeFilterRef.current && lastAttributesCountRef.current !== attributesCountRef.current) {\n attributeFilterRef.current.querySelector('input').focus();\n lastAttributesCountRef.current = null;\n }\n }, []);\n const handleAttributeSelectorOnOpen = useCallback(() => {\n lastAttributesCountRef.current = attributes.length;\n }, [attributes.length]);\n\n const actionItems = useMemo(\n () => [\n {\n text: i18n.text('Add set'),\n onClick: onAddEmptyGroup,\n id: '-group-add-set'\n },\n {\n text: i18n.text('Duplicate set'),\n onClick: onGroupDuplicate,\n id: '-group-duplicate-set'\n },\n {\n text: i18n.text('Delete set'),\n onClick: onGroupDelete,\n id: '-group-delete-set'\n }\n ],\n [onAddEmptyGroup, onGroupDuplicate, onGroupDelete]\n );\n\n const rowClasses = useMemo(\n () => ({\n root: rowComponentsStyles.row\n }),\n [rowComponentsStyles]\n );\n\n const lastRowAttributeSelectorProps = useMemo(\n () => ({\n onRestoreFocus: handleAttributeSelectorOnRestoreFocus,\n onOpen: handleAttributeSelectorOnOpen,\n disablePopoverRestoreFocus: !!handleAttributeSelectorOnRestoreFocus\n }),\n [handleAttributeSelectorOnRestoreFocus, handleAttributeSelectorOnOpen]\n );\n\n return (\n <>\n <div className={classes.container} {...otherProps}>\n <div className={classes.title}>{i18n.text('Set')}</div>\n <div className={classes.entityTypeSelectorContainer}>\n <AdvancedSearchEntityTypesSelector\n classes={{\n root: classes.entityTypeSelector\n }}\n selectedEntityTypes={entityTypes}\n onChange={onEntityTypesChange}\n />\n </div>\n\n <div className={classes.rows}>\n <QueryBuilderRowsGroup\n rowClasses={rowClasses}\n rowsData={attributes}\n AttributeSelectorComponent={AdvancedSearchAttributeSelector}\n FilterSelectorComponent={AdvancedSearchFilterSelector}\n ValuesEditorComponent={AdvancedSearchValuesEditorWrapper}\n ActionsComponent={AdvancedSearchRowActions}\n LogicOperatorComponent={AdvancedSearchRowLogicOperator}\n filterSelectorRefIndex={lastAttributesCountRef.current}\n filterSelectorRef={attributeFilterRef}\n lastRowAttributeSelectorProps={lastRowAttributeSelectorProps}\n entityTypes={entityTypes}\n groupId={id}\n dispatchGroupAction={dispatchGroupAction}\n />\n <div className={classes.actions}>\n <DropDownMenuButton\n menuId={`query-builder-group-actions-${id}`}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L',\n 'data-reltio-id': 'reltio-search-query-builder-group-actions'\n }}\n menuItems={actionItems}\n />\n </div>\n </div>\n </div>\n {showLogicOperator && (\n <div className={classes.logicOperator}>\n <div className={classnames(classes.verticalOperatorLine, classes.upperLine)} />\n <div className={classnames(classes.verticalOperatorLine, classes.lowerLine)} />\n <LogicOperator value={operator} onChange={onOperatorChange} />\n </div>\n )}\n </>\n );\n};\n\nGroupBuilder.propTypes = {\n showLogicOperator: PropTypes.bool,\n group: PropTypes.shape({\n id: PropTypes.string,\n attributes: PropTypes.arrayOf(QueryBuilderAttributeType),\n entityTypes: PropTypes.arrayOf(PropTypes.string),\n operator: PropTypes.string\n }),\n onAddEmptyGroup: PropTypes.func,\n dispatch: PropTypes.func\n};\n\nexport default memo(GroupBuilder);\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport Button from '@mui/material/Button';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isNil} from 'ramda';\n\nimport GroupBuilder from './GroupBuilder/GroupBuilder';\nimport {getQueryBuilderGroups} from '../../selectors/advancedSearch';\nimport {addGroupWithAttributes} from '../../actions/advancedSearchActions';\nimport SearchByOvControl from '../SearchByOvControl/SearchByOvControl';\nimport {getUiConfigShowSearchByOv} from '../../selectors/ui';\n\nimport useStyles from './styles';\n\nexport const QueryGroups = ({groups, uiConfigShowSearchByOv, dispatch}) => {\n const classes = useStyles();\n const containerRef = useRef(null);\n const prevGroupsLengthRef = useRef(null);\n const addEmptyGroup = useCallback(() => dispatch(addGroupWithAttributes([])), [dispatch]);\n\n useEffect(() => {\n if (groups.length === 0) {\n addEmptyGroup();\n } else if (\n !isNil(prevGroupsLengthRef.current) &&\n prevGroupsLengthRef.current < groups.length &&\n containerRef.current\n ) {\n const containerChildNodes = containerRef.current.childNodes;\n const lastGroupNodeIndex = containerChildNodes.length - 2;\n containerChildNodes[lastGroupNodeIndex].scrollIntoView({behavior: 'smooth'});\n }\n prevGroupsLengthRef.current = groups.length;\n }, [groups.length, addEmptyGroup]);\n\n const renderGroup = (group, i, groups) => {\n return (\n <GroupBuilder\n key={group.id}\n group={group}\n dispatch={dispatch}\n showLogicOperator={i !== groups.length - 1}\n onAddEmptyGroup={addEmptyGroup}\n data-reltio-id={`reltio-search-advansed-search-group-builder-${i}`}\n />\n );\n };\n\n return (\n <div className={classes.scrollWrapper}>\n <div className={classes.groupsContainer} ref={containerRef}>\n {uiConfigShowSearchByOv && (\n <div className={classes.searchByOvContainer}>\n <SearchByOvControl variant=\"queryGroups\" />\n </div>\n )}\n {groups.map(renderGroup)}\n <div className={classes.button}>\n <div className={classnames(classes.verticalOperatorLine, classes.upperLine)} />\n <Button\n onClick={addEmptyGroup}\n color=\"primary\"\n size=\"small\"\n data-reltio-id=\"reltio-search-advanced-search-add-set-button\"\n >\n <AddCircleIcon color=\"primary\" className={classes.icon} fontSize=\"small\" />\n {i18n.text('ADD SET')}\n </Button>\n </div>\n </div>\n </div>\n );\n};\n\nQueryGroups.propTypes = {\n groups: PropTypes.array,\n dispatch: PropTypes.func,\n uiConfigShowSearchByOv: PropTypes.bool\n};\n\nexport default connect((state) => ({\n groups: getQueryBuilderGroups(state),\n uiConfigShowSearchByOv: mdmModule.selectors.getShowSearchByOv(state) ?? getUiConfigShowSearchByOv(state)\n}))(QueryGroups);\n","import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {showSaveSearchDialog} from '../../../actions/uiActions';\nimport {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {\n getCurrentSavedSearch,\n isChangedSavedSearch as isChangedSavedSearchSelector,\n isOwnSavedSearch as isOwnSavedSearchSelector\n} from '../../../selectors/savedSearches';\nimport {getCanSaveSearch} from '../../../selectors/search';\n\nconst clearSearchStateAction = mdmModuleSearch.actions.updateState({});\n\nconst SwitchToFacetsDialog = ({open, onClose}) => {\n const dispatch = useDispatch();\n\n const onDiscard = useCallback(() => {\n onClose();\n dispatch(clearSearchStateAction);\n }, [dispatch, onClose]);\n\n const onSave = useCallback(() => {\n onClose();\n dispatch(showSaveSearchDialog(true, clearSearchStateAction));\n }, [dispatch, onClose]);\n\n const currentSavedSearch = useSelector(getCurrentSavedSearch);\n const canSaveSearch = useSelector(getCanSaveSearch);\n const isChangedSavedSearch = useSelector(isChangedSavedSearchSelector);\n const isOwnSavedSearch = useSelector(isOwnSavedSearchSelector);\n const isDisabledSave = currentSavedSearch ? isOwnSavedSearch && !isChangedSavedSearch : !canSaveSearch;\n\n return (\n <ConfirmationDialog\n open={open}\n title={i18n.text('Search filters cannot be displayed in Quick filters')}\n content={i18n.text(\n 'You have advanced filters that cannot be displayed in Quick filters. Save your search or clear your filters to go to Quick filters.'\n )}\n discardCaption={i18n.text('Clear search')}\n saveCaption={i18n.text('Save search')}\n disabledSave={isDisabledSave}\n onCancel={onClose}\n onDiscard={onDiscard}\n onSave={onSave}\n />\n );\n};\n\nSwitchToFacetsDialog.propTypes = {\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default SwitchToFacetsDialog;\n","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {always, ifElse, pipe} from 'ramda';\nimport {getQueryBuilderGroups} from '../../selectors/advancedSearch';\nimport QueryBuilderHeader from './QueryBuilderHeader/QueryBuilderHeader';\nimport ResultBuilder from './ResultBuilder/ResultBuilder';\nimport {isAdvancedSearchTransformedToFacets} from '../../services/search/converting/createFacetsFromAdvancedSearch';\nimport mdmModule from '@reltio/mdm-module';\nimport {MetadataType, KeywordSearchType, DataTenantType} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\nimport QueryGroups from './QueryGroups';\nimport SwitchToFacetsDialog from './SwitchToFacetsDialog/SwitchToFacetsDialog';\nimport {getMapSearchObject} from '../../selectors/search';\nimport {MapSearchType} from '../../constants/prop-types';\n\nexport const QueryBuilder = ({\n metadata,\n attributePresentations,\n lookups,\n groups,\n keyword,\n map,\n onClose,\n collapsed,\n isFullscreen,\n onCollapse,\n onExpand,\n onFullscreen,\n dataTenants,\n dispatch\n}) => {\n const classes = useStyles();\n\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const openDialog = () => setIsDialogOpen(true);\n const closeDialog = () => setIsDialogOpen(false);\n\n const handleBackBtnClick = ifElse(\n always(isAdvancedSearchTransformedToFacets(metadata, groups, dataTenants)),\n pipe(onClose, onExpand),\n openDialog\n );\n\n return (\n <div className={classes.container}>\n <QueryBuilderHeader onBackBtnClick={handleBackBtnClick} />\n <QueryGroups />\n <ResultBuilder\n groups={groups}\n lookups={lookups}\n dispatch={dispatch}\n metadata={metadata}\n attributePresentations={attributePresentations}\n hasMinSize={collapsed}\n collapseBtnActive={!collapsed}\n isFullscreen={isFullscreen}\n onCollapseBtnClick={collapsed ? onExpand : onCollapse}\n onFullScreenBtnClick={isFullscreen ? onExpand : onFullscreen}\n keyword={keyword}\n map={map}\n />\n <SwitchToFacetsDialog open={isDialogOpen} onClose={closeDialog} />\n </div>\n );\n};\n\nQueryBuilder.propTypes = {\n metadata: MetadataType,\n lookups: PropTypes.object,\n attributesData: PropTypes.object,\n groups: PropTypes.array,\n keyword: KeywordSearchType,\n map: MapSearchType,\n onClose: PropTypes.func,\n collapsed: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n onCollapse: PropTypes.func,\n onExpand: PropTypes.func,\n onFullscreen: PropTypes.func,\n dispatch: PropTypes.func,\n attributePresentations: PropTypes.object,\n dataTenants: PropTypes.arrayOf(DataTenantType)\n};\n\nexport default connect((state) => ({\n metadata: mdmModule.selectors.getMetadata(state),\n attributePresentations: mdmModule.selectors.getAttributePresentations(state),\n groups: getQueryBuilderGroups(state),\n lookups: mdmModule.selectors.getLookups(state),\n keyword: mdmModule.selectors.getSearchKeyword(state),\n map: getMapSearchObject(state),\n dataTenants: mdmModule.selectors.getDataTenants(state)\n}))(QueryBuilder);\n","import React, {useCallback, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport Divider from '@mui/material/Divider';\n\nimport {useStyles} from './styles';\n\nimport {ResizablePanes} from '@reltio/components';\nimport SearchResultsArea from '../SearchResultsArea/SearchResultsArea';\nimport SearchBar from '../SearchBar/SearchBar';\nimport QueryBuilder from '../QueryBuilder/QueryBuilder';\n\nconst MIN_PANE1_SIZE = 120;\nconst MIN_PANE2_SIZE = 53;\n\nexport const DEFAULT_PANE_SIZE = '50%';\nexport const COLLAPSED_PANE_SIZE = `${MIN_PANE1_SIZE}px`;\nexport const EXPANDED_PANE_SIZE = `calc(100% - ${MIN_PANE2_SIZE}px)`;\n\nconst MainSearchArea = ({isOpenAdvancedSearch, onCloseAdvancedSearch}) => {\n const styles = useStyles();\n const [isAdvancedSearchCollapsed, setIsAdvancedSearchCollapsed] = useState(false);\n const [paneSize, setPaneSize] = useState(DEFAULT_PANE_SIZE);\n\n const handleCollapseAdvancedSearch = useCallback(() => {\n setIsAdvancedSearchCollapsed(true);\n setPaneSize(COLLAPSED_PANE_SIZE);\n }, []);\n\n const handleExpandAdvancedSearch = useCallback(() => {\n setIsAdvancedSearchCollapsed(false);\n setPaneSize(DEFAULT_PANE_SIZE);\n }, []);\n\n const handlePaneSizeChange = useCallback(({percentageSize, isMaxSize, isMinSize}) => {\n setIsAdvancedSearchCollapsed(isMinSize);\n setPaneSize(isMaxSize ? EXPANDED_PANE_SIZE : percentageSize);\n }, []);\n\n const handleFullscreenAdvancedSearch = useCallback(() => {\n setIsAdvancedSearchCollapsed(false);\n setPaneSize(EXPANDED_PANE_SIZE);\n }, []);\n\n const SearchBarRenderer = (\n <>\n <SearchBar />\n <Divider className={styles.divider} />\n </>\n );\n\n const AdvancedSearchRenderer = (\n <>\n {SearchBarRenderer}\n <QueryBuilder\n collapsed={isAdvancedSearchCollapsed}\n isFullscreen={paneSize === EXPANDED_PANE_SIZE}\n onClose={onCloseAdvancedSearch}\n onCollapse={handleCollapseAdvancedSearch}\n onExpand={handleExpandAdvancedSearch}\n onFullscreen={handleFullscreenAdvancedSearch}\n />\n </>\n );\n\n return (\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"horizontal\"\n size={isOpenAdvancedSearch ? paneSize : 0}\n minSize={MIN_PANE1_SIZE}\n maxSize={-MIN_PANE2_SIZE}\n allowResize={isOpenAdvancedSearch}\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>{isOpenAdvancedSearch && AdvancedSearchRenderer}</div>\n <div className={styles.pane}>\n {!isOpenAdvancedSearch && SearchBarRenderer}\n <SearchResultsArea />\n </div>\n </ResizablePanes>\n );\n};\n\nMainSearchArea.propTypes = {\n isOpenAdvancedSearch: PropTypes.bool,\n onCloseAdvancedSearch: PropTypes.func\n};\n\nexport default MainSearchArea;\n","export default {\n SET_ACTIVE_STEP: 'BULK_UPDATE_SET_ACTIVE_STEP',\n INIT: 'BULK_UPDATE_INIT',\n TOGGLE_SELECTION_MODE: 'BULK_UPDATE_TOGGLE_SELECTION_MODE',\n SELECT_ENTITY: 'BULK_UPDATE_SELECT_ENTITY',\n SELECT_ALL_ENTITIES_ON_PAGE: 'BULK_UPDATE_SELECT_ALL_ENTITIES_ON_PAGE',\n SET_LOADING: 'BULK_UPDATE_SET_LOADING',\n CHANGE_ROWS_PER_PAGE: 'BULK_UPDATE_CHANGE_ROWS_PER_PAGE',\n CHANGE_PAGE: 'BULK_UPDATE_CHANGE_PAGE',\n CHANGE_SORT: 'BULK_UPDATE_CHANGE_SORT',\n CHANGE_COLUMNS: 'BULK_UPDATE_CHANGE_COLUMNS',\n UPDATE_ENTITIES: 'BULK_UPDATE_UPDATE_ENTITIES',\n FILTER_ENTITIES: 'BULK_UPDATE_FILTER_ENTITIES',\n SET_FILTER_TEXT: 'BULK_UPDATE_SET_FILTER_TEXT',\n SET_TOTAL: 'BULK_UPDATE_SET_TOTAL',\n UPDATE_CURRENT_ENTITIES: 'UPDATE_BULK_UPDATE_CURRENT_ENTITIES',\n SET_OPERATION: 'BULK_UPDATE_SET_OPERATION',\n SET_ACTION_ATTRIBUTE: 'BULK_UPDATE_SET_ACTION_ATTRIBUTE',\n SET_ACTION_OPERATION: 'BULK_UPDATE_SET_ACTION_OPERATION',\n ADD_OPERATION_PARAMETERS: 'BULK_UPDATE_ADD_OPERATION_PARAMETERS',\n DELETE_ACTION: 'BULK_UPDATE_DELETE_ACTION',\n TOGGLE_CONDITIONS: 'BULK_UPDATE_TOGGLE_CONDITIONS',\n ADD_CONDITION_AFTER: 'BULK_UPDATE_ADD_CONDITION_AFTER',\n CHANGE_CONDITION_DATA: 'BULK_UPDATE_CHANGE_CONDITION_DATA',\n TOGGLE_CONDITION_SELECT: 'BULK_UPDATE_TOGGLE_CONDITION_SELECT',\n DELETE_CONDITION: 'BULK_UPDATE_DELETE_CONDITION',\n SET_CONDITION_FILTER: 'BULK_UPDATE_SET_CONDITION_FILTER',\n SET_CONDITION_VALUES: 'BULK_UPDATE_SET_CONDITION_VALUES',\n TOGGLE_ACTION_PIN: 'BULK_UPDATE_TOGGLE_ACTION_PIN',\n TOGGLE_ACTION_ADD_NESTED: 'BULK_UPDATE_TOGGLE_ACTION_ADD_NESTED',\n CONFIRM: 'BULK_UPDATE_CONFIRM',\n SET_REQUEST_PENDING: 'BULK_UPDATE_SET_REQUEST_PENDING'\n};\n","import {BulkUpdate} from '../constants/actionTypes';\nimport {getAttributeData, getAttributeObject} from '../reducers/helpers/queryBuilderHelpers';\n\nexport const setBulkUpdateActiveStep = (step) => ({\n type: BulkUpdate.SET_ACTIVE_STEP,\n payload: step\n});\n\nexport const initBulkUpdate = (fields) => ({\n type: BulkUpdate.INIT,\n payload: fields\n});\n\nexport const updateBulkUpdateEntities = (searchResults) => {\n return {\n type: BulkUpdate.UPDATE_ENTITIES,\n payload: searchResults\n };\n};\n\nexport const updateBulkUpdateCurrentEntities = () => {\n return {\n type: BulkUpdate.UPDATE_CURRENT_ENTITIES\n };\n};\n\nexport const toggleBulkUpdateSelectionMode = () => ({\n type: BulkUpdate.TOGGLE_SELECTION_MODE\n});\n\nexport const selectBulkUpdateEntity = (uri, checked) => ({\n type: BulkUpdate.SELECT_ENTITY,\n payload: {uri, checked}\n});\n\nexport const selectAllBulkUpdateEntitiesOnPage = (bool) => ({\n type: BulkUpdate.SELECT_ALL_ENTITIES_ON_PAGE,\n payload: bool\n});\n\nexport const setBulkUpdateLoading = (loading) => ({\n type: BulkUpdate.SET_LOADING,\n payload: loading\n});\n\nexport const changeBulkUpdatePage = (page) => {\n return {\n type: BulkUpdate.CHANGE_PAGE,\n payload: page\n };\n};\n\nexport const changeBulkUpdateRowsPerPage = (number) => {\n return {\n type: BulkUpdate.CHANGE_ROWS_PER_PAGE,\n payload: number\n };\n};\n\nexport const changeBulkUpdateSort = ({field, order}) => {\n return {\n type: BulkUpdate.CHANGE_SORT,\n payload: {\n field,\n order\n }\n };\n};\n\nexport const changeBulkUpdateColumns = (columns) => {\n return {\n type: BulkUpdate.CHANGE_COLUMNS,\n payload: columns\n };\n};\n\nexport const setBulkUpdateTotal = (total) => {\n return {\n type: BulkUpdate.SET_TOTAL,\n payload: total\n };\n};\n\nexport const setBulkUpdateFilterText = (filterText, debounceTime) => {\n return {\n type: BulkUpdate.SET_FILTER_TEXT,\n payload: {filterText, debounceTime}\n };\n};\n\nexport const setBulkUpdateOperation = (operation) => ({\n type: BulkUpdate.SET_OPERATION,\n payload: operation\n});\n\nexport const setBulkUpdateActionAttribute = ({id, groupId, attribute}) => ({\n type: BulkUpdate.SET_ACTION_ATTRIBUTE,\n payload: {\n id,\n groupId,\n attribute\n }\n});\n\nexport const deleteBulkUpdateAction = ({id, groupId}) => ({\n type: BulkUpdate.DELETE_ACTION,\n payload: {id, groupId}\n});\n\nexport const setBulkUpdateActionOperation = ({id, groupId, operation}) => ({\n type: BulkUpdate.SET_ACTION_OPERATION,\n payload: {id, groupId, operation}\n});\n\nexport const addBulkUpdateOperationParameters = ({id, groupId, operationParameters}) => ({\n type: BulkUpdate.ADD_OPERATION_PARAMETERS,\n payload: {id, groupId, operationParameters}\n});\n\nexport const toggleBulkUpdateActionPin = ({id, groupId}) => ({\n type: BulkUpdate.TOGGLE_ACTION_PIN,\n payload: {id, groupId}\n});\n\nexport const toggleBulkUpdateActionAddNested = ({id, groupId}) => ({\n type: BulkUpdate.TOGGLE_ACTION_ADD_NESTED,\n payload: {id, groupId}\n});\n\nexport const toggleBulkUpdateConditions = (groupId) => ({\n type: BulkUpdate.TOGGLE_CONDITIONS,\n payload: groupId\n});\n\nexport const addConditionAfter = (groupId, attributeId, attribute) => {\n return {\n type: BulkUpdate.ADD_CONDITION_AFTER,\n payload: {groupId, attributeId, attribute: getAttributeObject(attribute)}\n };\n};\n\nexport const changeCondition = (groupId, attributeId, attribute) => {\n return {\n type: BulkUpdate.CHANGE_CONDITION_DATA,\n payload: {groupId, attributeId, attributeData: getAttributeData(attribute)}\n };\n};\n\nexport const clearCondition = (groupId, attributeId) => {\n return {\n type: BulkUpdate.CHANGE_CONDITION_DATA,\n payload: {groupId, attributeId, attributeData: null}\n };\n};\n\nexport const toggleConditionSelect = (groupId, attributeId, selectInfo) => {\n return {\n type: BulkUpdate.TOGGLE_CONDITION_SELECT,\n payload: {groupId, attributeId, selectInfo}\n };\n};\n\nexport const deleteCondition = (groupId, attributeId) => {\n return {\n type: BulkUpdate.DELETE_CONDITION,\n payload: {groupId, attributeId}\n };\n};\n\nexport const setConditionFilter = (groupId, attributeId, filter) => {\n return {\n type: BulkUpdate.SET_CONDITION_FILTER,\n payload: {groupId, attributeId, filter}\n };\n};\n\nexport const setConditionValues = (groupId, attributeId, values) => {\n return {\n type: BulkUpdate.SET_CONDITION_VALUES,\n payload: {groupId, attributeId, values}\n };\n};\n\nexport const confirmBulkUpdate = () => ({\n type: BulkUpdate.CONFIRM\n});\n\nexport const setBulkUpdateRequestPending = (pending) => ({\n type: BulkUpdate.SET_REQUEST_PENDING,\n payload: pending\n});\n","import {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {isEmpty} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {createAdvancedSearchGroupFromFacets} from '../../../services/search/converting/createAdvancedSearchFromFacets';\nimport {getQueryBuilderGroups} from '../../../selectors/advancedSearch';\nimport {getMapSearchObject} from '../../../selectors/search';\nimport {getFacetsConfigs, getFacetsData} from '../../../selectors/facet';\nimport {mergeConfigs} from '../../../services/search/facet';\nimport {buildReadableQuery} from '@reltio/mdm-sdk';\n\nconst isValidGroups = (groups) => {\n return !(groups.length === 1 && isEmpty(groups[0].attributes) && groups[0].entityTypes.length === 1);\n};\n\nexport const useBulkUpdateReadableQuery = () => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const lookups = useSelector(mdmModule.selectors.getLookups);\n const attributePresentations = useSelector(mdmModule.selectors.getAttributePresentations);\n const advancedGroups = useSelector(getQueryBuilderGroups);\n const keyword = useSelector(mdmModule.selectors.getSearchKeyword);\n const map = useSelector(getMapSearchObject);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n\n const facets = useSelector(getFacetsData);\n const configs = useSelector(getFacetsConfigs);\n const facetsWithConfigs = useMemo(() => Object.values(mergeConfigs(facets, configs)), [facets, configs]);\n\n return useMemo(() => {\n const groups = isEmpty(advancedGroups)\n ? createAdvancedSearchGroupFromFacets(metadata, dataTenants, facetsWithConfigs)\n : advancedGroups;\n return isValidGroups(groups) || map || keyword\n ? buildReadableQuery(metadata, attributePresentations, lookups, groups, keyword, map)\n : [];\n }, [keyword, map, metadata, dataTenants, attributePresentations, advancedGroups, facetsWithConfigs, lookups]);\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'row',\n minHeight: '64px',\n flexShrink: 0,\n alignItems: 'center',\n paddingRight: '14px'\n },\n entityTypeTitle: {\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px',\n marginRight: '16px',\n flexShrink: 0\n },\n profileText: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '28px',\n flexShrink: 0\n },\n profileNumber: {\n color: theme.palette.text.secondary,\n fontWeight: 600,\n paddingLeft: '3px',\n paddingRight: '8px',\n flexShrink: 0\n },\n splitter: {\n marginRight: '15px',\n marginLeft: '18px',\n height: '32px'\n },\n clearButton: {\n marginRight: 'auto',\n marginLeft: '14px',\n flexShrink: 0\n },\n searchBox: {\n flex: '1 1 auto',\n width: '100%',\n maxWidth: '538px'\n },\n searchQueryContainer: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '50px',\n flexShrink: 0,\n paddingLeft: '24px',\n paddingRight: '14px',\n alignItems: 'flex-start',\n color: theme.palette.text.secondary,\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '14px'\n },\n searchQuery: {\n paddingTop: '6px'\n },\n borderBottom: {\n borderBottom: '1px solid rgba(0,0,0,0.1)'\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {isEmpty} from 'ramda';\n\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport {SearchInput} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityTypeLabel} from '@reltio/mdm-sdk';\nimport {\n getBulkUpdateActiveStep,\n getBulkUpdateEntityTypeUri,\n getBulkUpdateSelectedEntitiesNumber,\n getIsIncludeSelectionMode,\n getBulkUpdateSelectedColumns,\n getBulkUpdateFilterText\n} from '../../../selectors/bulkUpdate';\nimport {getDisplayedTotal} from '../../../selectors/search';\nimport {\n changeBulkUpdateColumns,\n setBulkUpdateFilterText,\n toggleBulkUpdateSelectionMode,\n updateBulkUpdateCurrentEntities\n} from '../../../actions/bulkUpdateActions';\nimport {needRequestAfterColumnsChanges} from '../../../services/search/searchResults';\nimport {SEARCH_DEBOUNCE_TIME} from '../../../constants/constants';\nimport ConfigureColumnsButton from '../../ConfigureColumnsButton/ConfigureColumnsButton';\nimport ReadableSearchQuery from '../../ReadableSearchQuery/ReadableSearchQuery';\nimport {useBulkUpdateReadableQuery} from './useBulkUpdateBarReadableQuery';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\nconst BulkUpdateBar = () => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = useSelector(getBulkUpdateEntityTypeUri);\n const activeStep = useSelector(getBulkUpdateActiveStep);\n const isIncludeSelectionMode = useSelector(getIsIncludeSelectionMode);\n const displayedTotal = useSelector(getDisplayedTotal);\n const selectedForBulkUpdateNumber = useSelector(getBulkUpdateSelectedEntitiesNumber);\n const headColumns = useSelector(getBulkUpdateSelectedColumns);\n const entityTypeLabel = getEntityTypeLabel(metadata, {type: entityTypeUri});\n const filterText = useSelector(getBulkUpdateFilterText);\n const dispatch = useDispatch();\n\n const readableSearchQuery = useBulkUpdateReadableQuery();\n\n useEffect(() => {\n if (\n displayedTotal !== 0 &&\n ((isIncludeSelectionMode && selectedForBulkUpdateNumber >= displayedTotal) ||\n (!isIncludeSelectionMode && selectedForBulkUpdateNumber <= 0))\n ) {\n dispatch(toggleBulkUpdateSelectionMode());\n }\n }, [isIncludeSelectionMode, displayedTotal, selectedForBulkUpdateNumber, dispatch]);\n\n const getSelectionModeButtonLabel = () => {\n return isIncludeSelectionMode\n ? `${i18n.text('Select all')} ${i18n.number(displayedTotal, '0,0')} ${i18n.text('profiles')}`\n : i18n.text('Clear selection');\n };\n\n const getSelectionModeButtonId = () => {\n return isIncludeSelectionMode ? 'select-all-profiles' : 'clear-selection';\n };\n\n const onSelectionModeButtonClick = () => {\n dispatch(toggleBulkUpdateSelectionMode());\n };\n\n const onSelectColumns = (selectedColumns) => {\n const needUpdateEntities = needRequestAfterColumnsChanges(selectedColumns, headColumns);\n dispatch(changeBulkUpdateColumns(selectedColumns));\n if (needUpdateEntities) {\n dispatch(updateBulkUpdateCurrentEntities());\n }\n };\n\n const onSearch = useCallback(\n (filterText) => {\n return dispatch(setBulkUpdateFilterText(filterText, SEARCH_DEBOUNCE_TIME));\n },\n [dispatch]\n );\n\n return (\n <>\n <Toolbar className={classnames(styles.container, {[styles.borderBottom]: activeStep > 0})}>\n <Typography component=\"span\" className={styles.entityTypeTitle}>\n {entityTypeLabel}\n </Typography>\n <Divider orientation=\"vertical\" className={styles.splitter} />\n <Typography component=\"span\" className={styles.profileNumber}>\n {i18n.number(selectedForBulkUpdateNumber, '0,0')}\n </Typography>\n <Typography variant=\"body2\" component=\"span\" className={styles.profileText}>\n {i18n.text(' profiles are selected for bulk edit.')}\n </Typography>\n {activeStep === 0 && (\n <>\n <Button\n color=\"primary\"\n className={styles.clearButton}\n onClick={onSelectionModeButtonClick}\n data-reltio-id={`reltio-search-bulk-update-${getSelectionModeButtonId()}`}\n >\n {getSelectionModeButtonLabel()}\n </Button>\n <SearchInput\n classes={{root: styles.searchBox}}\n value={filterText}\n onSearch={onSearch}\n data-reltio-id=\"reltio-search-bulk-update-search-input\"\n />\n <Divider orientation=\"vertical\" className={styles.splitter} />\n <ConfigureColumnsButton\n entityTypeUri={entityTypeUri}\n headColumns={headColumns}\n onSelectColumns={onSelectColumns}\n data-reltio-id=\"reltio-search-bulk-update-add-remove-columns\"\n />\n </>\n )}\n </Toolbar>\n {activeStep === 0 && !isEmpty(readableSearchQuery) && (\n <Toolbar className={styles.searchQueryContainer}>\n {i18n.text('Search query')}\n <ReadableSearchQuery readableQuery={readableSearchQuery} className={styles.searchQuery} />\n </Toolbar>\n )}\n </>\n );\n};\n\nexport default BulkUpdateBar;\n","import {makeStyles} from '@mui/styles';\r\n\r\nconst styles = makeStyles({\r\n wrapper: {\r\n flexGrow: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n backgroundColor: '#fafafa',\r\n boxSizing: 'border-box',\r\n padding: 30\r\n },\r\n container: {\r\n width: '100%',\r\n flex: '1 1 auto',\r\n maxWidth: 1320,\r\n backgroundColor: 'white',\r\n borderRadius: 2,\r\n padding: '16px 0 50px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }\r\n});\r\n\r\nexport default styles;\r\n","export const rowVerticalPadding = '17px';\nexport const rowHorizontalPadding = '34px';\nexport const rowBottomBorder = '1px solid #e4e4e4';\n","import {makeStyles} from '@mui/styles';\n\nimport {rowVerticalPadding, rowHorizontalPadding, rowBottomBorder} from '../commonStyles';\n\nconst styles = makeStyles((theme) => ({\n mainRowContent: {\n display: 'flex',\n alignItems: 'center',\n '&>*': {\n marginRight: 8\n }\n },\n row: {\n borderBottom: rowBottomBorder,\n padding: `${rowVerticalPadding} ${rowHorizontalPadding}`,\n\n '&:last-child': {\n borderBottom: 'none'\n },\n '&$withoutLine': {\n borderBottom: 'none',\n paddingTop: '9px',\n paddingBottom: '9px'\n }\n },\n withoutLine: {},\n attrSelector: {\n width: 254,\n height: 40,\n flexShrink: 0\n },\n operationSelector: {\n width: 190,\n marginRight: 26,\n flexShrink: 0\n },\n icons: {\n flexGrow: 0,\n marginLeft: -5,\n display: 'flex'\n },\n actionIcon: {\n marginRight: 2\n },\n actionIconActive: {\n '& svg > g > path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n }\n}));\n\nexport default styles;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n id: \"svg3533951039a\",\n d: \"M15 6v5l2 2v2h-4v4l-.992 1L11 19v-4H7v-2l2-2V6H8V4h8v2z\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg3533951039b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg3533951039a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg3533951039b)\",\n d: \"M0 0h24v24H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M9 4a5.002 5.002 0 011 9.9V18h5.24a2.2 2.2 0 110 2H10c-1.11 0-2-.89-2-2v-4.1A5.002 5.002 0 019 4zm.5 2.5h-1v2h-2v1h2v2h1v-2h2v-1h-2v-2z\",\n id: \"svg1464898421a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg1464898421b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1464898421a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1464898421b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@mui/styles';\r\n\r\nconst specialStyle = {\r\n flex: '0 0 auto'\r\n};\r\n\r\nconst EDITOR_MAX_WIDTH = 334;\r\n\r\nconst styles = makeStyles({\r\n container: {\r\n flexGrow: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: 0\r\n },\r\n singleEditor: {\r\n marginRight: 5,\r\n maxWidth: EDITOR_MAX_WIDTH\r\n },\r\n editor: {\r\n maxWidth: EDITOR_MAX_WIDTH,\r\n marginBottom: 0\r\n },\r\n editorValue: {\r\n width: '100%',\r\n marginRight: '8px'\r\n },\r\n to: {\r\n color: '#696969',\r\n padding: '0 16px 0 7px'\r\n },\r\n\r\n // special overrides for attribute types\r\n type_Timestamp: specialStyle,\r\n type_Boolean: specialStyle,\r\n type_Date: specialStyle\r\n});\r\n\r\nexport default styles;\r\n","import React, {memo, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch} from 'react-redux';\nimport {hasPath, identity, ifElse, mergeLeft, objOf, path, pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {SimpleAttributeEditor, DataTypeValueEditor} from '@reltio/components';\nimport {createNewAttribute, getAttrDataTypeDefinition, ModeTypes} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nimport {addBulkUpdateOperationParameters} from '../../../../actions/bulkUpdateActions';\nimport {editorsForOperation} from '../../../../services/bulkUpdate/editorsForOperation';\n\nconst parentUri = 'entities/fakeEntity';\n\nconst ChangeEditor = ({id, groupId, operation, operationParameters}) => {\n const styles = useStyles();\n\n const dispatch = useDispatch();\n\n const attributeType = operationParameters.attributeTypeData.attributeType;\n\n const emptyEditorValue = useMemo(\n () =>\n createNewAttribute({\n parentUri,\n attributeType\n }),\n [attributeType]\n );\n\n const prepareValueProp = useCallback(\n (value) => mergeLeft(ifElse(hasPath(['lookupCode']), identity, objOf('value'))(value), emptyEditorValue),\n [emptyEditorValue]\n );\n\n const handleValueChange = useCallback(\n (valueProperty) => (newValue) =>\n dispatch(\n addBulkUpdateOperationParameters({id, groupId, operationParameters: {[valueProperty]: newValue.value}})\n ),\n [id, groupId, dispatch]\n );\n\n const renderEditor = (valueProperty) => {\n const className = classnames(styles.editor, styles[`type_${attributeType.type}`]);\n return attributeType.uri ? (\n <SimpleAttributeEditor\n key={valueProperty}\n className={className}\n mode={ModeTypes.EDITING}\n attributeType={attributeType}\n attributeValue={prepareValueProp(path([valueProperty], operationParameters))}\n onChangeAttribute={handleValueChange(valueProperty)}\n />\n ) : (\n <div key={valueProperty} className={classnames(className, styles.editorValue)}>\n <DataTypeValueEditor\n fieldName={operationParameters.attributeTypeData.fieldName}\n value={operationParameters[valueProperty]}\n dataTypeDefinition={getAttrDataTypeDefinition(attributeType)}\n onChange={pipe(objOf('value'), handleValueChange(valueProperty))}\n fullWidth\n />\n </div>\n );\n };\n\n const editors = editorsForOperation(operation).map(renderEditor);\n if (editors.length === 2) {\n editors.splice(\n 1,\n 0,\n <div key=\"to\" className={styles.to}>\n {i18n.text('with')}\n </div>\n );\n }\n\n return editors.length ? (\n <div\n className={classnames(\n styles.container,\n editors.length === 1 && styles.singleEditor,\n styles[`type_${attributeType.type}`]\n )}\n >\n {editors}\n </div>\n ) : null;\n};\n\nChangeEditor.propTypes = {\n id: PropTypes.string,\n groupId: PropTypes.string,\n operation: PropTypes.string,\n operationParameters: PropTypes.object\n};\n\nexport default memo(ChangeEditor);\n","import {always, assoc, both, cond, curry, dissoc, isNil, pick, pipe, prop, T, unless, without} from 'ramda';\n\nimport {isNested, isReference} from '@reltio/mdm-sdk';\nimport {\n BULK_UPDATE_NESTED_ATTRIBUTE_OPERATIONS,\n BULK_UPDATE_OPERATIONS,\n BULK_UPDATE_REFERENCE_ATTRIBUTE_OPERATIONS,\n BULK_UPDATE_SIMPLE_ATTRIBUTE_OPERATIONS\n} from '../../../../constants/constants';\n\nconst renameKey = curry((oldKey, newKey, obj) => assoc(newKey, prop(oldKey, obj), dissoc(oldKey, obj)));\n\nexport const convertAttributeDataFromSelector = pipe(\n pick(['fieldName', 'title', 'pathToTitle', 'attrType']),\n renameKey('attrType', 'attributeType')\n);\n\nexport const convertAttributeDataToSelector = unless(isNil, renameKey('attributeType', 'attrType'));\n\nexport const getOperations = (attrType, isTopLevelComplexWithConditions) =>\n cond([\n [\n both(isNested, always(isTopLevelComplexWithConditions)),\n always(\n without(\n [BULK_UPDATE_OPERATIONS.AddNew, BULK_UPDATE_OPERATIONS.ReplaceAllWith],\n BULK_UPDATE_NESTED_ATTRIBUTE_OPERATIONS\n )\n )\n ],\n [isNested, always(BULK_UPDATE_NESTED_ATTRIBUTE_OPERATIONS)],\n [\n both(isReference, always(isTopLevelComplexWithConditions)),\n always(without([BULK_UPDATE_OPERATIONS.AddNew], BULK_UPDATE_REFERENCE_ATTRIBUTE_OPERATIONS))\n ],\n [isReference, always(BULK_UPDATE_REFERENCE_ATTRIBUTE_OPERATIONS)],\n [T, always(BULK_UPDATE_SIMPLE_ATTRIBUTE_OPERATIONS)]\n ])(attrType);\n","import {lensPath, not, over, view} from 'ramda';\n\nexport const toggleSubAttributePin = ({parentAttributeValue, uri}) => {\n const relativeUri = uri.split(parentAttributeValue.uri + '/')[1];\n const namesAndUris = relativeUri.split('/');\n const targetLensPath = [];\n while (namesAndUris.length) {\n targetLensPath.push('value');\n const levelName = namesAndUris.shift();\n const levelUri = namesAndUris.shift();\n targetLensPath.push(levelName);\n const levelAttributes = view(lensPath(targetLensPath), parentAttributeValue);\n if (!levelAttributes) {\n return null;\n }\n const index = levelAttributes.findIndex(({uri}) => uri.endsWith('/' + levelUri));\n targetLensPath.push(index);\n }\n if (targetLensPath.length) {\n targetLensPath.push('pin');\n return over(lensPath(targetLensPath), not, parentAttributeValue);\n }\n return null;\n};\n","import {useCallback, useRef} from 'react';\nimport {addAttribute, editAttribute, removeAttribute} from '@reltio/mdm-sdk';\nimport {toggleSubAttributePin} from './utils';\nimport {last} from 'ramda';\n\nconst getAttributeNameFromAttributeValue = (attributeValue) => last(attributeValue.type.split('/'));\n\nconst wrapInEntity = (attributeValue) => {\n const attributeName = getAttributeNameFromAttributeValue(attributeValue);\n return {\n attributes: {\n [attributeName]: [attributeValue]\n }\n };\n};\n\nconst unwrapFromEntity = (attributeValue, entity) => {\n const attributeName = getAttributeNameFromAttributeValue(attributeValue);\n return entity.attributes[attributeName][0];\n};\n\nexport const useBulkComplexAttributeHandlers = ({attributeValue, onChange}) => {\n const attributeValueRef = useRef(attributeValue);\n attributeValueRef.current = attributeValue; // render optimization - excluding attributeValue from useCallback deps\n\n const onChangeAttribute = useCallback(\n ({value, attributeType, uri}) => {\n const entity = wrapInEntity(attributeValueRef.current);\n const updatedEntity = editAttribute({entity, attributeType, uri, value});\n onChange(unwrapFromEntity(attributeValueRef.current, updatedEntity));\n },\n [onChange]\n );\n const onDeleteAttribute = useCallback(\n ({attributeType, uri}) => {\n const entity = wrapInEntity(attributeValueRef.current);\n const updatedEntity = removeAttribute({entity, attributeType, uri});\n onChange(unwrapFromEntity(attributeValueRef.current, updatedEntity));\n },\n [onChange]\n );\n const onAddAttributes = useCallback(\n (attributes) => {\n const entity = wrapInEntity(attributeValueRef.current);\n const updatedEntity = attributes.reduce((entity, attribute) => {\n const {attributeType, parentUri, index} = attribute;\n return addAttribute({entity, attributeType, parentUri, index});\n }, entity);\n onChange(unwrapFromEntity(attributeValueRef.current, updatedEntity));\n },\n [onChange]\n );\n\n const onTogglePin = useCallback(\n (uri) => {\n const updatedAttributeValue = toggleSubAttributePin({parentAttributeValue: attributeValueRef.current, uri});\n if (updatedAttributeValue) {\n onChange(updatedAttributeValue);\n }\n },\n [onChange]\n );\n\n return {onChangeAttribute, onDeleteAttribute, onAddAttributes, onTogglePin};\n};\n","import {makeStyles} from '@mui/styles';\n\nconst styles = makeStyles((theme) => ({\n pinIcon: {\n marginRight: '-8px'\n },\n pinIconActive: {\n '& svg > g > path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n }\n}));\n\nexport default styles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {curry} from 'ramda';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {NestedAttributeValueType, SimpleAttributeValueType} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\nimport PinIcon from '../../../icons/pin.svg';\n\nconst PinButton = ({onTogglePin, subAttributeValue}) => {\n const styles = useStyles();\n return (\n <SmallIconButtonWithTooltip\n icon={PinIcon}\n onClick={() => onTogglePin(subAttributeValue.uri)}\n size=\"L\"\n className={classnames(styles.pinIcon, subAttributeValue.pin && styles.pinIconActive)}\n />\n );\n};\n\nPinButton.propTypes = {\n onTogglePin: PropTypes.func,\n subAttributeValue: PropTypes.oneOfType([SimpleAttributeValueType, NestedAttributeValueType])\n};\n\nconst PinButtonRenderer = curry((attributeValueUri, onTogglePin, {attributeValue: subAttributeValue}) => {\n return (\n subAttributeValue.uri !== attributeValueUri && (\n <PinButton onTogglePin={onTogglePin} subAttributeValue={subAttributeValue} />\n )\n );\n});\n\nexport default PinButtonRenderer;\n","import React, {useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport {\n AttributeTypeType,\n createDefaultValues,\n createNewAttribute,\n getAttributeTypeSubAttributes,\n ModeTypes,\n NestedAttributeValueType\n} from '@reltio/mdm-sdk';\nimport {NestedAttributeEditor} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useBulkComplexAttributeHandlers} from '../useBulkComplexAttributeHandlers';\nimport PinButtonRenderer from '../PinButtonRenderer/PinButtonRenderer';\n\nexport const BulkNestedAttributeEditor = ({attributeType, attributeValue: initialAttributeValue, onChange}) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const emptyAttributeValue = useMemo(() => {\n const subAttributesTypes = getAttributeTypeSubAttributes(metadata, attributeType);\n const emptyValue = createNewAttribute({parentUri: 'entities/fakeEntity', attributeType});\n return {\n ...emptyValue,\n value: createDefaultValues({\n attributeTypes: subAttributesTypes,\n parentUri: emptyValue.uri,\n mode: ModeTypes.EDITING\n })\n };\n }, [attributeType, metadata]);\n const attributeValue = initialAttributeValue || emptyAttributeValue;\n const {onChangeAttribute, onDeleteAttribute, onAddAttributes, onTogglePin} = useBulkComplexAttributeHandlers({\n attributeValue,\n onChange\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const pinControlRenderer = useCallback(PinButtonRenderer(attributeValue.uri, onTogglePin), [\n attributeValue.uri,\n onTogglePin\n ]);\n\n return (\n <NestedAttributeEditor\n attributeType={attributeType}\n attributeValue={attributeValue}\n showEmptyEditors\n mode={ModeTypes.EDITING}\n metadata={metadata}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n hideDeleteButton\n additionalControlsRenderer={pinControlRenderer}\n />\n );\n};\n\nBulkNestedAttributeEditor.propTypes = {\n attributeType: AttributeTypeType,\n attributeValue: NestedAttributeValueType,\n onChange: PropTypes.func\n};\n\nexport default BulkNestedAttributeEditor;\n","import {makeStyles} from '@mui/styles';\n\nconst styles = makeStyles(() => ({\n entitySelector: {\n marginTop: '10px',\n width: '100%',\n maxWidth: '452px',\n '& $entitySelectorInputLabel': {\n transform: 'translate(12px, 13px)'\n }\n },\n entitySelectorInputLabel: {}\n}));\n\nexport default styles;\n","import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n AttributeTypeType,\n createTemporaryEntity,\n getCreatableAttributeTypes,\n getEntityType,\n getReferencedEntityTypeUriFromAttrType,\n isTempUri,\n ModeTypes,\n referencedEntityAttributeTypesSelectionStrategy\n} from '@reltio/mdm-sdk';\nimport {EntitySelector} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {isEmpty, pipe, prop} from 'ramda';\n\nimport useStyles from './styles';\n\nimport {memoizedWrapInArray} from '../../../../utils/general';\n\nexport const BulkRepointReferenceEditor = ({attributeType, value, onChange}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const mode = ModeTypes.EDITING;\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const globalSearchRequestOptions = useSelector((state) =>\n mdm.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const newEntityAttrTypesSelectionStrategy = useCallback(\n (entityType) => referencedEntityAttributeTypesSelectionStrategy(attributeType, entityType),\n [attributeType]\n );\n const currentEntityUri = prop('entityUri', value);\n\n const onSelectEntity = useCallback(\n (entity) => {\n const {uri, type, label} = entity;\n if (isTempUri(currentEntityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(currentEntityUri));\n }\n onChange(\n isEmpty(entity)\n ? null\n : {\n entityUri: uri,\n entityType: type,\n entityLabel: label\n }\n );\n },\n [dispatch, onChange, currentEntityUri]\n );\n\n const onCreateEntity = useCallback(\n (entityTypeUri, initValue) => {\n const entityType = getEntityType(metadata, referencedEntityTypeUri);\n const newEntityAttrTypes = pipe(\n newEntityAttrTypesSelectionStrategy,\n getCreatableAttributeTypes(mode)\n )(entityType);\n const newEntity = createTemporaryEntity({\n entityTypeUri,\n initValue,\n attributeTypes: newEntityAttrTypes,\n metadata,\n mode\n });\n onSelectEntity(newEntity);\n dispatch(profile.modifiedEntities.actions.entityCreated(newEntity));\n },\n [dispatch, onSelectEntity, newEntityAttrTypesSelectionStrategy, metadata, mode, referencedEntityTypeUri]\n );\n\n return (\n <EntitySelector\n className={styles.entitySelector}\n entity={value}\n entityTypesUris={memoizedWrapInArray(referencedEntityTypeUri)}\n metadata={metadata}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n onChange={onSelectEntity}\n onCreate={onCreateEntity}\n height={40}\n disableLinkClick\n attributeTypesSelectionStrategy={newEntityAttrTypesSelectionStrategy}\n mode={mode}\n TextFieldProps={{\n InputLabelProps: {\n classes: {\n marginDense: styles.entitySelectorInputLabel\n }\n }\n }}\n />\n );\n};\n\nBulkRepointReferenceEditor.propTypes = {\n attributeType: AttributeTypeType,\n value: PropTypes.shape({\n entityUri: PropTypes.string,\n entityType: PropTypes.string,\n entityLabel: PropTypes.string\n }),\n onChange: PropTypes.func\n};\n\nexport default BulkRepointReferenceEditor;\n","import React, {useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport {\n AttributeTypeType,\n createDefaultValues,\n createNewAttribute,\n getEditableAttributeTypeSubAttributes,\n ModeTypes,\n NestedAttributeValueType\n} from '@reltio/mdm-sdk';\nimport {ReferenceAttributeEditor} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useBulkComplexAttributeHandlers} from '../useBulkComplexAttributeHandlers';\nimport PinButtonRenderer from '../PinButtonRenderer/PinButtonRenderer';\n\nexport const BulkReferenceAttributeEditor = ({attributeType, attributeValue: initialAttributeValue, onChange}) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const emptyAttributeValue = useMemo(() => {\n const subAttributesTypes = getEditableAttributeTypeSubAttributes(metadata, attributeType);\n const emptyValue = createNewAttribute({parentUri: 'entities/fakeEntity', attributeType});\n return {\n ...emptyValue,\n value: createDefaultValues({\n attributeTypes: subAttributesTypes,\n parentUri: emptyValue.uri,\n mode: ModeTypes.EDITING\n })\n };\n }, [attributeType, metadata]);\n const attributeValue = initialAttributeValue || emptyAttributeValue;\n const {onChangeAttribute, onDeleteAttribute, onAddAttributes, onTogglePin} = useBulkComplexAttributeHandlers({\n attributeValue,\n onChange\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const pinControlRenderer = useCallback(PinButtonRenderer(attributeValue.uri, onTogglePin), [\n attributeValue.uri,\n onTogglePin\n ]);\n\n return (\n <ReferenceAttributeEditor\n attributeType={attributeType}\n attributeValue={attributeValue}\n showEmptyEditors\n mode={ModeTypes.EDITING}\n metadata={metadata}\n onAddAttributes={onAddAttributes}\n onDeleteAttribute={onDeleteAttribute}\n onChangeAttribute={onChangeAttribute}\n hideDeleteButton\n additionalControlsRenderer={pinControlRenderer}\n />\n );\n};\n\nBulkReferenceAttributeEditor.propTypes = {\n attributeType: AttributeTypeType,\n attributeValue: NestedAttributeValueType,\n onChange: PropTypes.func\n};\n\nexport default BulkReferenceAttributeEditor;\n","import React, {memo, useCallback, useEffect, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {both, complement, ifElse, path, pathEq, pipe, prop} from 'ramda';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {AsyncMountContext, SimpleDropDownSelector, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {\n AttributeTypeType,\n isAnalyticAttribute,\n isComplexAttribute,\n isImage,\n isNested,\n isReference\n} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\nimport PinIcon from '../../icons/pin.svg';\nimport AddParentIcon from '../../icons/addParent.svg';\n\nimport {\n addBulkUpdateOperationParameters,\n deleteBulkUpdateAction,\n setBulkUpdateActionAttribute,\n setBulkUpdateActionOperation,\n toggleBulkUpdateActionAddNested,\n toggleBulkUpdateActionPin\n} from '../../../../actions/bulkUpdateActions';\nimport {getBulkUpdateEntityTypeUri} from '../../../../selectors/bulkUpdate';\nimport AttributeSelector from '../../../AttributeSelectors/AttributeSelector';\nimport ChangeEditor from '../ChangeEditor/ChangeEditor';\nimport {BulkUpdateSimpleActionType} from '../../../../constants/prop-types';\nimport {BULK_UPDATE_OPERATION_LABELS, BULK_UPDATE_OPERATIONS} from '../../../../constants/constants';\nimport {convertAttributeDataFromSelector, convertAttributeDataToSelector, getOperations} from './utils';\nimport {isAttributeItemOf, isSpecialAttributeItem} from '../../../../services/search/attributesList/attributeListUtils';\nimport BulkNestedAttributeEditor from '../bulkComplexAttributeEditors/BulkNestedAttributeEditor/BulkNestedAttributeEditor';\nimport {memoizedWrapInArray} from '../../../../utils/general';\nimport BulkRepointReferenceEditor from '../BulkRepointReferenceEditor/BulkRepointReferenceEditor';\nimport BulkReferenceAttributeEditor from '../bulkComplexAttributeEditors/BulkReferenceAttributeEditor/BulkReferenceAttributeEditor';\nimport {getSearchGroupAttributeLabel} from '@reltio/mdm-sdk';\n\nconst asyncMountContextValue = {\n enabled: true,\n queueSizeThreshold: 5\n};\n\nexport const ActionRow = ({id, operation, operationParameters, groupId, groupAttributeType, hasConditions}) => {\n const styles = useStyles();\n\n const dispatch = useDispatch();\n const bulkUpdateEntityTypeUri = useSelector(getBulkUpdateEntityTypeUri);\n const entityTypes = memoizedWrapInArray(bulkUpdateEntityTypeUri);\n\n const handleAttributeSelect = useCallback(\n ({attribute, checked}) => {\n if (checked) {\n dispatch(\n setBulkUpdateActionAttribute({id, groupId, attribute: convertAttributeDataFromSelector(attribute)})\n );\n }\n },\n [id, groupId, dispatch]\n );\n\n const handleComplexEditorChange = useCallback(\n (attributeValue) => {\n dispatch(addBulkUpdateOperationParameters({id, groupId, operationParameters: {attributeValue}}));\n },\n [dispatch, id, groupId]\n );\n\n const handlePinToggle = useCallback(() => {\n dispatch(toggleBulkUpdateActionPin({id, groupId}));\n }, [id, groupId, dispatch]);\n\n const handleAddNestedAttributeToggle = useCallback(() => {\n dispatch(toggleBulkUpdateActionAddNested({id, groupId}));\n }, [id, groupId, dispatch]);\n\n const handleDelete = useCallback(() => {\n dispatch(deleteBulkUpdateAction({id, groupId}));\n }, [id, groupId, dispatch]);\n\n const handleOperationChange = useCallback(\n (option) => {\n dispatch(setBulkUpdateActionOperation({id, groupId, operation: option.value}));\n },\n [id, groupId, dispatch]\n );\n\n const pin = prop('pin', operationParameters);\n const addNestedAttribute = prop('addNestedAttribute', operationParameters);\n const attributeTypeData = prop('attributeTypeData', operationParameters);\n const attributeType = path(['attributeTypeData', 'attributeType'], operationParameters);\n const showComplexEditor =\n isComplexAttribute(attributeType) &&\n [\n BULK_UPDATE_OPERATIONS.AddNew,\n BULK_UPDATE_OPERATIONS.ReplaceAllWith,\n BULK_UPDATE_OPERATIONS.RepointReference\n ].includes(operation);\n const isTopLevelComplex = groupAttributeType && attributeType && attributeType.uri === groupAttributeType.uri;\n const showPinButton =\n [\n BULK_UPDATE_OPERATIONS.AddNew,\n BULK_UPDATE_OPERATIONS.ReplaceAllWith,\n BULK_UPDATE_OPERATIONS.FindAndReplace\n ].includes(operation) && !!attributeType?.uri;\n const showAddNestedButton =\n groupId &&\n !isTopLevelComplex &&\n operation === BULK_UPDATE_OPERATIONS.AddNew &&\n !isReference(groupAttributeType);\n\n useEffect(() => {\n if (pin && !showPinButton) {\n handlePinToggle();\n }\n }, [showPinButton, pin, handlePinToggle]);\n\n useEffect(() => {\n if (addNestedAttribute && !showAddNestedButton) {\n handleAddNestedAttributeToggle();\n }\n }, [showAddNestedButton, addNestedAttribute, handleAddNestedAttributeToggle]);\n\n const operationOptions = useMemo(\n () =>\n attributeType\n ? getOperations(attributeType, hasConditions && isTopLevelComplex).map((key) => ({\n value: BULK_UPDATE_OPERATIONS[key],\n label: BULK_UPDATE_OPERATION_LABELS[key]\n }))\n : [],\n [hasConditions, attributeType, isTopLevelComplex]\n );\n\n const operationValue = operationOptions.find((option) => option.value === operation);\n\n useEffect(() => {\n if (!operationValue && operationOptions[0] && attributeTypeData) {\n handleOperationChange(operationOptions[0]);\n }\n }, [operationOptions, operationValue, attributeTypeData, handleOperationChange]);\n\n const rowFilled = operation && attributeTypeData;\n\n const attributeSelectorValue = useMemo(\n () => convertAttributeDataToSelector(attributeTypeData),\n [attributeTypeData]\n );\n\n const attributeSelectorFilter = useCallback(\n groupAttributeType\n ? isAttributeItemOf(groupAttributeType)\n : ifElse(\n isSpecialAttributeItem,\n pipe(pathEq(['fieldName'], 'tags')),\n pipe(prop('attrType'), both(complement(isImage), complement(isAnalyticAttribute)))\n ),\n [groupAttributeType]\n );\n\n const renderComplexEditor = () => {\n if (operation === BULK_UPDATE_OPERATIONS.RepointReference) {\n return (\n <BulkRepointReferenceEditor\n attributeType={attributeType}\n value={operationParameters.attributeValue}\n onChange={handleComplexEditorChange}\n />\n );\n }\n if (isNested(attributeType)) {\n return (\n <BulkNestedAttributeEditor\n attributeType={attributeType}\n attributeValue={operationParameters.attributeValue}\n onChange={handleComplexEditorChange}\n />\n );\n }\n if (isReference(attributeType)) {\n return (\n <BulkReferenceAttributeEditor\n attributeType={attributeType}\n attributeValue={operationParameters.attributeValue}\n onChange={handleComplexEditorChange}\n />\n );\n }\n return null;\n };\n const getSelectedAttributeLabel = useCallback((data) => getSearchGroupAttributeLabel({data}), []);\n return (\n <div className={classnames(styles.row, {[styles.withoutLine]: !!groupId})}>\n <div className={styles.mainRowContent}>\n <AttributeSelector\n className={styles.attrSelector}\n single\n showReferencedEntityAttributes={false}\n entityTypes={entityTypes}\n value={attributeSelectorValue}\n onSelect={handleAttributeSelect}\n firstLevelAttributesFilter={attributeSelectorFilter}\n ungroup={!!groupId}\n getLabel={getSelectedAttributeLabel}\n />\n <SimpleDropDownSelector\n label=\"\"\n isDisabled={!attributeSelectorValue}\n placeholder={i18n.text('Select operation')}\n className={styles.operationSelector}\n value={operationValue}\n options={operationOptions}\n height={40}\n onChange={handleOperationChange}\n />\n\n {rowFilled && (\n <>\n {!showComplexEditor && (\n <ChangeEditor\n id={id}\n groupId={groupId}\n operation={operation}\n operationParameters={operationParameters}\n />\n )}\n <div className={styles.icons}>\n {showPinButton && (\n <SmallIconButtonWithTooltip\n className={classnames(styles.actionIcon, pin && styles.actionIconActive)}\n size=\"M\"\n tooltipTitle={i18n.text('Make this Operational Value')}\n icon={PinIcon}\n onClick={handlePinToggle}\n />\n )}\n {showAddNestedButton && (\n <SmallIconButtonWithTooltip\n className={classnames(\n styles.actionIcon,\n addNestedAttribute && styles.actionIconActive\n )}\n size=\"M\"\n tooltipTitle={i18n.text('Create parent attribute if none exists')}\n icon={AddParentIcon}\n onClick={handleAddNestedAttributeToggle}\n />\n )}\n <SmallIconButtonWithTooltip\n size=\"M\"\n tooltipTitle={i18n.text('Delete')}\n icon={CloseIcon}\n onClick={handleDelete}\n />\n </div>\n </>\n )}\n </div>\n {rowFilled && showComplexEditor && (\n <AsyncMountContext.Provider value={asyncMountContextValue}>\n {renderComplexEditor()}\n </AsyncMountContext.Provider>\n )}\n </div>\n );\n};\n\nActionRow.propTypes = {\n ...BulkUpdateSimpleActionType,\n groupId: PropTypes.string,\n groupAttributeType: AttributeTypeType,\n hasConditions: PropTypes.bool\n};\n\nexport default memo(ActionRow);\n","import {makeStyles} from '@mui/styles';\n\nimport {rowVerticalPadding, rowHorizontalPadding, rowBottomBorder} from '../commonStyles';\n\nconst styles = makeStyles((theme) => ({\n complexRow: {\n borderBottom: rowBottomBorder,\n padding: `10px ${rowHorizontalPadding} ${rowVerticalPadding}`,\n '&:last-child': {\n borderBottom: 'none'\n }\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '4px'\n },\n actionsBlock: {\n marginTop: '2px',\n marginLeft: `-${rowHorizontalPadding}`,\n marginRight: `-${rowHorizontalPadding}`\n },\n attributeLabel: {\n fontSize: '14px',\n fontWeight: 500,\n color: theme.palette.text.secondary\n },\n conditionsToggleButton: {\n marginTop: '1px',\n marginLeft: '6px',\n display: 'flex',\n alignItems: 'center'\n },\n conditionsToggleIcon: {\n marginRight: '8px',\n width: '18px',\n height: '18px',\n marginTop: '-1px'\n }\n}));\n\nexport default styles;\n","import {makeStyles} from '@mui/styles';\n\nconst styles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary\n },\n conditions: {\n backgroundColor: 'rgba(0,0,0,0.032)',\n padding: '20px 15px',\n margin: '7px 0'\n }\n}));\n\nexport default styles;\n","import {makeStyles} from '@mui/styles';\n\nconst rowHeight = '40px';\n\nconst useStyles = makeStyles(() => ({\n row: {\n '&:hover $actions': {\n opacity: 1\n }\n },\n logicOperatorContainer: {\n maxHeight: '40px'\n },\n attributeSelect: {\n width: '254px',\n height: rowHeight\n },\n filterSelect: {\n width: '190px'\n },\n valuesWrapper: {\n width: '100%',\n display: 'flex',\n minHeight: rowHeight,\n alignItems: 'flex-start',\n boxSizing: 'border-box'\n },\n actions: {\n opacity: '0',\n transition: 'opacity 0.3s',\n paddingTop: '8px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexShrink: '0'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {always, concat, evolve, map, pathOr, pipe, when} from 'ramda';\n\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {\n getAttributesGroupsFilteredBy,\n isAttributeItemOf,\n rejectReferencedEntityAttributesFromGroups\n} from '../../services/search/attributesList/attributeListUtils';\nimport {BasicAttributeSelector, BasicAttributeSelectorProps, AttributeSelectorItemsGroup} from '@reltio/components';\nimport {memoizedWrapInArray} from '../../utils/general';\n\nexport type Props = {\n attributeType: AttributeType;\n showReferencedEntityAttributes: boolean;\n subattributesGroupTitle: string;\n additionalItemsGroups: AttributeSelectorItemsGroup[];\n} & Omit<BasicAttributeSelectorProps, 'ungroup' | 'itemsGroups'>;\n\nconst SubAttributeSelector = ({\n attributeType,\n showReferencedEntityAttributes,\n subattributesGroupTitle,\n additionalItemsGroups,\n ...restProps\n}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = attributeType.uri.split('/').slice(0, 3).join('/');\n const entityTypes = memoizedWrapInArray(entityTypeUri);\n\n const firstLevelAttributesFilter = useCallback(isAttributeItemOf(attributeType), [attributeType]);\n\n const itemsGroups = useMemo(\n () =>\n pipe(\n getAttributesGroupsFilteredBy,\n when(always(!showReferencedEntityAttributes), rejectReferencedEntityAttributesFromGroups),\n map(\n evolve({\n attributes: pathOr([], [0, 'children']),\n title: when(always(subattributesGroupTitle), always(subattributesGroupTitle))\n })\n ),\n when(always(additionalItemsGroups), concat(additionalItemsGroups))\n )({firstLevelAttributesFilter}, metadata, entityTypes),\n [\n additionalItemsGroups,\n subattributesGroupTitle,\n showReferencedEntityAttributes,\n entityTypes,\n metadata,\n firstLevelAttributesFilter\n ]\n );\n\n return <BasicAttributeSelector {...restProps} ungroup={!additionalItemsGroups} itemsGroups={itemsGroups} />;\n};\n\nexport default memo(SubAttributeSelector);\n","import React, {memo, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n AttributeTypeType,\n FilterOptions,\n getEntityTypeLabel,\n getReferencedEntityTypeUriFromAttrType,\n isReference\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport SubAttributeSelector from '../../../../../AttributeSelectors/SubAttributeSelector';\nimport {toggleConditionSelect} from '../../../../../../actions/bulkUpdateActions';\nimport {\n createAttributesGroup,\n createSpecialAttributeItem\n} from '../../../../../../services/search/advancedSearch/collectSpecialAttributes';\nimport {BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME} from '../../../../../../constants/constants';\n\nconst getReferencedEntityItemGroup = (attributeType, metadata) =>\n createAttributesGroup(`${BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME}_group`, i18n.text('Profile'), [\n {\n ...createSpecialAttributeItem({\n title: getEntityTypeLabel(metadata, {type: getReferencedEntityTypeUriFromAttrType(attributeType)}),\n fieldName: BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME,\n ...attributeType\n }),\n enforcedFilterOptions: [FilterOptions.EQUALS]\n }\n ]);\n\nconst ConditionAttributeSelector = ({\n rowData: condition,\n rowContext: {attributeType, dispatchGroupAction},\n attributeSelectorProps = {}\n}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const conditionId = condition && condition.id;\n const additionalItemsGroups = useMemo(\n () => (isReference(attributeType) ? [getReferencedEntityItemGroup(attributeType, metadata)] : null),\n [attributeType, metadata]\n );\n const changeAttribute = useCallback(\n (selectInfo) => {\n dispatchGroupAction(toggleConditionSelect, conditionId, selectInfo);\n },\n [conditionId, dispatchGroupAction]\n );\n\n return (\n <SubAttributeSelector\n className={styles.attributeSelect}\n value={condition && condition.data}\n attributeType={attributeType}\n additionalItemsGroups={additionalItemsGroups}\n subattributesGroupTitle={isReference(attributeType) ? i18n.text('Reference attributes') : ''}\n onSelect={changeAttribute}\n onRestoreFocus={attributeSelectorProps.onRestoreFocus}\n onOpenPopup={attributeSelectorProps.onOpen}\n disableRestoreFocus={attributeSelectorProps.disablePopoverRestoreFocus}\n disableEnforceFocus={attributeSelectorProps.disablePopoverRestoreFocus}\n />\n );\n};\n\nConditionAttributeSelector.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n attributeType: AttributeTypeType,\n dispatchGroupAction: PropTypes.func\n }),\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(ConditionAttributeSelector);\n","export const isEmptyCondition = (condition) => !(condition && condition.data);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport {setConditionFilter} from '../../../../../../actions/bulkUpdateActions';\nimport QueryBuilderFilterSelector from '../../../../../QueryBuilderFilterSelector/QueryBuilderFilterSelector';\nimport {isEmptyCondition} from './helpers';\n\nconst ConditionFilterSelector = ({rowData: condition, rowContext: {dispatchGroupAction}, textFieldInputRef}) => {\n const styles = useStyles();\n const conditionId = condition && condition.id;\n const onFilterChange = useCallback(\n (value) => dispatchGroupAction(setConditionFilter, conditionId, value.value),\n [dispatchGroupAction, conditionId]\n );\n\n return (\n <QueryBuilderFilterSelector\n height={40}\n className={styles.filterSelect}\n attribute={condition}\n textFieldInputRef={textFieldInputRef}\n isDisabled={isEmptyCondition(condition)}\n onChange={onFilterChange}\n />\n );\n};\n\nConditionFilterSelector.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func\n }),\n textFieldInputRef: PropTypes.object\n};\n\nexport default memo(ConditionFilterSelector);\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px'\n },\n root: {\n borderRadius: '4px 4px 0 0',\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n margin: 0\n },\n entitySelector: {\n width: '100%',\n '& $entitySelectorInputLabel': {\n transform: 'translate(12px, 13px)'\n }\n },\n entitySelectorInputLabel: {}\n});\n\nexport default useStyles;\n","import {BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME} from '../../../../constants/constants';\nimport {pathEq} from 'ramda';\n\nexport const isReferencedEntityCondition = pathEq(['data', 'fieldName'], BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport {\n getAttrDataTypeDefinition,\n getDataTypeDefinitionForFilterValue,\n getReferencedEntityTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport {EntitySelector, FilterValueEditor, QueryBuilderAttributeType} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\n\nimport useStyles from './styles';\n\nimport {setConditionValues} from '../../../../../actions/bulkUpdateActions';\nimport {isReferencedEntityCondition} from '../conditionsUtils';\nimport {memoizedWrapInArray} from '../../../../../utils/general';\n\nconst ConditionValuesEditor = ({condition, dispatchGroupAction}) => {\n const {values = [], data: {attrType, fieldName} = {}, filter} = condition;\n const styles = useStyles();\n\n const onValuesChange = useCallback(\n (values) => dispatchGroupAction(setConditionValues, condition.id, values),\n [dispatchGroupAction, condition.id]\n );\n\n const valueDataTypeDefinition = getAttrDataTypeDefinition(attrType);\n const filterValueDataTypeDefinition = getDataTypeDefinitionForFilterValue(valueDataTypeDefinition, filter);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const globalSearchRequestOptions = useSelector((state) =>\n mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const onSelectEntity = useCallback(\n ({uri, type, label}) =>\n onValuesChange([\n {\n entityUri: uri,\n entityType: type,\n entityLabel: label\n }\n ]),\n [onValuesChange]\n );\n\n return isReferencedEntityCondition(condition) ? (\n <EntitySelector\n className={styles.entitySelector}\n entity={values[0]}\n entityTypesUris={memoizedWrapInArray(getReferencedEntityTypeUriFromAttrType(attrType))}\n metadata={metadata}\n max={20}\n globalSearchRequestOptions={globalSearchRequestOptions}\n onChange={onSelectEntity}\n height={40}\n disableLinkClick\n TextFieldProps={{\n InputLabelProps: {\n classes: {\n marginDense: styles.entitySelectorInputLabel\n }\n }\n }}\n />\n ) : (\n <FilterValueEditor\n filter={{\n filter,\n fieldName,\n values: values || []\n }}\n onChange={onValuesChange}\n dataTypeDefinition={filterValueDataTypeDefinition}\n fullWidth\n TextFieldProps={{\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }}\n color=\"primary\"\n classes={{root: styles.root}}\n orientation=\"horizontal\"\n />\n );\n};\n\nConditionValuesEditor.propTypes = {\n condition: QueryBuilderAttributeType.isRequired,\n dispatchGroupAction: PropTypes.func\n};\n\nexport default memo(ConditionValuesEditor);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {checkIfOptionHasValues} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttributeType} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport {isEmptyCondition} from './helpers';\nimport ConditionValuesEditor from '../../ConditionValuesEditor/ConditionValuesEditor';\n\nconst ConditionValuesEditorWrapper = ({rowData: condition, rowContext: {dispatchGroupAction}}) => {\n const styles = useStyles();\n const isEmpty = isEmptyCondition(condition);\n const canFilterAcceptValues = condition && checkIfOptionHasValues(condition.filter);\n\n return (\n <div className={styles.valuesWrapper}>\n {!isEmpty && canFilterAcceptValues && (\n <ConditionValuesEditor condition={condition} dispatchGroupAction={dispatchGroupAction} />\n )}\n </div>\n );\n};\n\nConditionValuesEditorWrapper.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func\n })\n};\n\nexport default memo(ConditionValuesEditorWrapper);\n","import React, {memo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {QueryBuilderAttributeType, SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport useStyles from './styles';\n\nimport {deleteCondition} from '../../../../../../actions/bulkUpdateActions';\n\nconst ConditionActions = ({rowData: condition, rowContext: {dispatchGroupAction}}) => {\n const styles = useStyles();\n const conditionId = condition && condition.id;\n const onRowDelete = useCallback(\n () => dispatchGroupAction(deleteCondition, conditionId),\n [conditionId, dispatchGroupAction]\n );\n\n return (\n condition && (\n <div className={styles.actions}>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Delete')}\n tooltipPlacement=\"bottom\"\n icon={CloseIcon}\n size=\"M\"\n onClick={onRowDelete}\n />\n </div>\n )\n );\n};\n\nConditionActions.propTypes = {\n rowData: QueryBuilderAttributeType,\n rowContext: PropTypes.shape({\n dispatchGroupAction: PropTypes.func\n })\n};\n\nexport default memo(ConditionActions);\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport PropTypes from 'prop-types';\nimport {useDispatch} from 'react-redux';\nimport Typography from '@mui/material/Typography';\nimport {AttributeTypeType} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttributeType, QueryBuilderRowsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\nimport useComponentsStyles from './components/styles';\n\nimport ConditionAttributeSelector from './components/ConditionAttributeSelector';\nimport ConditionFilterSelector from './components/ConditionFilterSelector';\nimport ConditionValuesEditorWrapper from './components/ConditionValuesEditorWrapper';\nimport ConditionActions from './components/ConditionActions';\n\nconst ConditionsBlock = ({attributeType, conditions, groupId}) => {\n const styles = useStyles();\n const componentsStyles = useComponentsStyles();\n const dispatch = useDispatch();\n\n const dispatchGroupAction = useCallback(\n (action, ...attrs) => dispatch(action(groupId, ...attrs)),\n [groupId, dispatch]\n );\n\n const queryBuilderRowClasses = useMemo(\n () => ({\n root: componentsStyles.row,\n logicOperatorContainer: componentsStyles.logicOperatorContainer\n }),\n [componentsStyles]\n );\n\n return (\n <>\n <Typography variant=\"caption\" component=\"div\" className={styles.caption}>\n {i18n.text('If the following conditions are met')}\n </Typography>\n <QueryBuilderRowsGroup\n className={styles.conditions}\n rowClasses={queryBuilderRowClasses}\n rowsData={conditions}\n AttributeSelectorComponent={ConditionAttributeSelector}\n FilterSelectorComponent={ConditionFilterSelector}\n ValuesEditorComponent={ConditionValuesEditorWrapper}\n ActionsComponent={ConditionActions}\n attributeType={attributeType}\n dispatchGroupAction={dispatchGroupAction}\n />\n <Typography variant=\"caption\" component=\"div\" className={styles.caption}>\n {i18n.text('Then perform the change')}\n </Typography>\n </>\n );\n};\n\nConditionsBlock.propTypes = {\n attributeType: AttributeTypeType,\n conditions: PropTypes.arrayOf(QueryBuilderAttributeType),\n groupId: PropTypes.string\n};\n\nexport default ConditionsBlock;\n","import React, {useCallback, useMemo, useEffect, memo} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {__, any, both, includes, pathEq, pipe, prop} from 'ramda';\nimport Button from '@mui/material/Button';\nimport RemoveCircleIcon from '@mui/icons-material/RemoveCircle';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport {findAttributeTypeByUri, searchUriToAttrUri} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport useStyles from './styles';\n\nimport {getBulkUpdateEntityTypeUri} from '../../../../selectors/bulkUpdate';\nimport ActionRow from '../ActionRow/ActionRow';\nimport {deleteBulkUpdateAction, toggleBulkUpdateConditions} from '../../../../actions/bulkUpdateActions';\nimport ConditionsBlock from './ConditionsBlock/ConditionsBlock';\nimport {BulkUpdateComplexActionType} from '../../../../constants/prop-types';\nimport {BULK_UPDATE_OPERATIONS} from '../../../../constants/constants';\n\nconst hasAddingActionWithTopLevelComplex = (actions, attributeType) =>\n any(\n both(\n pipe(\n prop('operation'),\n includes(__, [BULK_UPDATE_OPERATIONS.AddNew, BULK_UPDATE_OPERATIONS.ReplaceAllWith])\n ),\n pathEq(['operationParameters', 'attributeTypeData', 'attributeType', 'uri'], attributeType.uri)\n )\n )(actions);\n\nconst ComplexActionRow = ({id, fieldName, actions, conditions}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const bulkUpdateEntityTypeUri = useSelector(getBulkUpdateEntityTypeUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeType = useMemo(() => {\n const attrTypeUri = searchUriToAttrUri(fieldName, bulkUpdateEntityTypeUri);\n return findAttributeTypeByUri(metadata, attrTypeUri, bulkUpdateEntityTypeUri);\n }, [metadata, fieldName, bulkUpdateEntityTypeUri]);\n\n const toggleConditions = useCallback(() => dispatch(toggleBulkUpdateConditions(id)), [id, dispatch]);\n const areConditionsActive = !!conditions;\n const disableConditionsButton = hasAddingActionWithTopLevelComplex(actions, attributeType);\n\n useEffect(() => {\n if (!areConditionsActive && actions.length === 0) {\n dispatch(deleteBulkUpdateAction({id}));\n }\n }, [id, areConditionsActive, actions.length, dispatch]);\n\n const renderActionRow = (action = {}) => (\n <ActionRow\n key={action.id}\n {...action}\n groupId={id}\n groupAttributeType={attributeType}\n hasConditions={areConditionsActive}\n />\n );\n\n return (\n <div className={styles.complexRow}>\n <div className={styles.header}>\n <div className={styles.attributeLabel}>{attributeType.label}</div>\n <Button\n disabled={disableConditionsButton}\n color=\"primary\"\n className={styles.conditionsToggleButton}\n onClick={toggleConditions}\n >\n {areConditionsActive ? (\n <>\n <RemoveCircleIcon className={styles.conditionsToggleIcon} />\n {i18n.text('Remove')}{' '}\n </>\n ) : (\n <>\n <AddCircleIcon className={styles.conditionsToggleIcon} />\n {i18n.text('Add')}{' '}\n </>\n )}\n {i18n.text('conditions')}\n </Button>\n </div>\n {conditions && <ConditionsBlock attributeType={attributeType} conditions={conditions} groupId={id} />}\n <div className={styles.actionsBlock}>\n {actions.map(renderActionRow)}\n {renderActionRow()}\n </div>\n </div>\n );\n};\n\nComplexActionRow.propTypes = BulkUpdateComplexActionType;\n\nexport default memo(ComplexActionRow);\n","import React from 'react';\r\nimport {useSelector} from 'react-redux';\r\n\r\nimport useStyles from './styles';\r\n\r\nimport {getBulkUpdateActions} from '../../../selectors/bulkUpdate';\r\nimport ActionRow from './ActionRow/ActionRow';\r\nimport ComplexActionRow from './ComplexActionRow/ComplexActionRow';\r\n\r\nconst getActionRowComponent = (action) => (action.actions ? ComplexActionRow : ActionRow);\r\n\r\nconst renderRow = (action) => {\r\n const ActionRowComponent = getActionRowComponent(action);\r\n return <ActionRowComponent key={action.id} {...action} />;\r\n};\r\n\r\nexport const DefineChanges = () => {\r\n const styles = useStyles();\r\n const actions = useSelector(getBulkUpdateActions);\r\n\r\n return (\r\n <div className={styles.wrapper}>\r\n <div className={styles.container}>\r\n {actions.map(renderRow)}\r\n <ActionRow />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default DefineChanges;\r\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {StepNavigation} from '@reltio/components';\nimport {\n getBulkUpdateActiveStep,\n getBulkUpdateOperation,\n getBulkUpdateRequestPending,\n getIsChangesStepEnabled,\n getIsReviewStepEnabled\n} from '../../../../selectors/bulkUpdate';\nimport {confirmBulkUpdate, setBulkUpdateActiveStep} from '../../../../actions/bulkUpdateActions';\nimport {BULK_UPDATE_COMMON_OPERATIONS} from '../../../../constants/constants';\n\nconst BulkUpdateStepNavigation = () => {\n const dispatch = useDispatch();\n const activeStep = useSelector(getBulkUpdateActiveStep);\n const isChangesStepEnabled = useSelector(getIsChangesStepEnabled);\n const bulkOperation = useSelector(getBulkUpdateOperation);\n const isOperationSelected = !isNil(bulkOperation);\n const isReviewStepEnabled = useSelector(getIsReviewStepEnabled);\n const isRequestPending = useSelector(getBulkUpdateRequestPending);\n const steps = [\n {\n label: i18n.text('Select profiles')\n },\n {\n label: i18n.text('Select operation'),\n enabled: isChangesStepEnabled\n },\n {\n label: i18n.text('Define changes'),\n enabled:\n isChangesStepEnabled &&\n isOperationSelected &&\n bulkOperation === BULK_UPDATE_COMMON_OPERATIONS.UpdateProfiles\n },\n {\n label: i18n.text('Review changes'),\n enabled:\n isChangesStepEnabled &&\n isOperationSelected &&\n (isReviewStepEnabled || bulkOperation === BULK_UPDATE_COMMON_OPERATIONS.DeleteProfiles)\n }\n ];\n\n return (\n <StepNavigation\n activeStep={activeStep}\n steps={steps}\n isPending={isRequestPending}\n onChangeStep={(step: number) => dispatch(setBulkUpdateActiveStep(step))}\n onConfirm={() => dispatch(confirmBulkUpdate())}\n />\n );\n};\n\nexport default BulkUpdateStepNavigation;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n appBar: {\n boxShadow: 'none'\n },\n toolbar: {\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '21px'\n },\n title: {\n fontSize: '1.1rem',\n display: 'inline-flex',\n alignItems: 'center'\n },\n closeButton: {\n marginRight: '10px'\n }\n}));\n\nexport {useStyles};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport BulkUpdateStepNavigation from './BulkUpdateStepNavigation/BulkUpdateStepNavigation';\n\nimport {useStyles} from './styles';\n\nconst DialogHeader = ({children, onClose}) => {\n const styles = useStyles();\n\n return (\n <AppBar position=\"static\" color={'default'} className={styles.appBar}>\n <Toolbar className={styles.toolbar}>\n <SmallIconButtonWithTooltip\n edge=\"start\"\n tooltipTitle={i18n.text('Close')}\n aria-label={i18n.text('Close')}\n icon={CloseIcon}\n onClick={onClose}\n className={styles.closeButton}\n size=\"L\"\n data-reltio-id=\"reltio-search-bulk-update-close\"\n />\n <Typography variant=\"h6\" className={styles.title}>\n {children}\n </Typography>\n </Toolbar>\n <Toolbar className={styles.toolbar}>\n <BulkUpdateStepNavigation />\n </Toolbar>\n </AppBar>\n );\n};\n\nDialogHeader.propTypes = {\n children: PropTypes.node,\n onClose: PropTypes.func\n};\n\nexport default DialogHeader;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n tableContainer: {\n position: 'relative',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: '#fff'\n },\n pagination: {\n flexGrow: 0,\n borderTop: '1px solid rgba(0, 0, 0, 0.1)',\n height: '52px',\n boxShadow: 'none'\n }\n}));\n\nexport {useStyles};\n","import {equals, intersection, map, pipe, prop, without} from 'ramda';\nimport {BULK_UPDATE_SELECTION_MODES} from '../../../constants/constants';\n\nconst isIncludeSelectionMode = equals(BULK_UPDATE_SELECTION_MODES.include);\n\nexport const getCheckedEntitiesOnPage = (selectionMode, selectedEntities, entitiesOnPage) =>\n pipe(\n map(prop('uri')),\n isIncludeSelectionMode(selectionMode) ? intersection(selectedEntities) : without(selectedEntities)\n )(entitiesOnPage);\n\nexport const getHeaderCheckboxState = (checkedEntities, entities) =>\n checkedEntities.length === 0 ? false : checkedEntities.length === entities.length ? true : null;\n","import React, {useCallback, useMemo, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {move} from 'ramda';\nimport {ROWS_PER_PAGE_OPTIONS} from '../../../constants/constants';\nimport EntitiesTableWithConfigurableColumns from '../../EntitiesTableWithConfigurableColumns/EntitiesTableWithConfigurableColumns';\nimport {\n getBulkUpdateEntities,\n getBulkUpdateEntityTypeUri,\n getBulkUpdateLoading,\n getBulkUpdatePage,\n getBulkUpdateRowsPerPage,\n getBulkUpdateSelectedColumns,\n getBulkUpdateSelectedEntities,\n getBulkUpdateSelectionMode,\n getBulkUpdateSortField,\n getBulkUpdateSortOrder,\n getBulkUpdateTotal\n} from '../../../selectors/bulkUpdate';\nimport {\n changeBulkUpdateColumns,\n changeBulkUpdatePage,\n changeBulkUpdateRowsPerPage,\n changeBulkUpdateSort,\n selectAllBulkUpdateEntitiesOnPage,\n selectBulkUpdateEntity,\n updateBulkUpdateCurrentEntities\n} from '../../../actions/bulkUpdateActions';\n\nimport {useStyles} from './styles';\nimport {BasicTablePagination, LinearLoadIndicator} from '@reltio/components';\nimport {getAdditionalColumns, needRequestAfterColumnsChanges} from '../../../services/search/searchResults';\nimport mdmModule from '@reltio/mdm-module';\nimport {getCheckedEntitiesOnPage, getHeaderCheckboxState} from './helpers';\n\nconst SelectProfilesTable = () => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const entityTypeUri = useSelector(getBulkUpdateEntityTypeUri);\n const headColumns = useSelector(getBulkUpdateSelectedColumns);\n const entities = useSelector(getBulkUpdateEntities);\n const sortField = useSelector(getBulkUpdateSortField);\n const sortOrder = useSelector(getBulkUpdateSortOrder);\n const total = useSelector(getBulkUpdateTotal);\n const page = useSelector(getBulkUpdatePage);\n const rowsPerPage = useSelector(getBulkUpdateRowsPerPage);\n const loading = useSelector(getBulkUpdateLoading);\n const selectedEntities = useSelector(getBulkUpdateSelectedEntities);\n const selectionMode = useSelector(getBulkUpdateSelectionMode);\n const checkedEntities = useMemo(\n () => getCheckedEntitiesOnPage(selectionMode, selectedEntities, entities),\n [selectionMode, selectedEntities, entities]\n );\n const headerCheckboxState = getHeaderCheckboxState(checkedEntities, entities);\n\n const additionalColumns = useMemo(\n () => getAdditionalColumns(metadata, entityTypeUri, headColumns),\n [metadata, entityTypeUri, headColumns]\n );\n\n const onChangePage = (number) => dispatch(changeBulkUpdatePage(number));\n const onChangeRowsPerPage = (number) => dispatch(changeBulkUpdateRowsPerPage(number));\n const onSort = useCallback(\n ({field, order}) => dispatch(changeBulkUpdateSort({field: order ? field : null, order})),\n [dispatch]\n );\n const onReorderingColumn = useCallback(\n ({what, where}) => {\n const reorderedColumns = move(what.columnIndex, where.columnIndex, headColumns);\n dispatch(changeBulkUpdateColumns(reorderedColumns));\n },\n [dispatch, headColumns]\n );\n const onChangeColumnsList = useCallback(\n ({columns}) => {\n const needUpdateEntities = needRequestAfterColumnsChanges(columns, headColumns);\n dispatch(changeBulkUpdateColumns(columns));\n if (needUpdateEntities) {\n dispatch(updateBulkUpdateCurrentEntities());\n }\n },\n [dispatch, headColumns]\n );\n const onChangeColumnsSize = useCallback(\n (newColumnsSize) => {\n const newHeadColumns = headColumns.map((column, index) => ({\n ...column,\n size: newColumnsSize[index].size\n }));\n dispatch(changeBulkUpdateColumns(newHeadColumns));\n },\n [dispatch, headColumns]\n );\n\n const onEntityCheck = useCallback(\n (uri, checked) => {\n if (uri) {\n dispatch(selectBulkUpdateEntity(uri, checked));\n } else {\n dispatch(selectAllBulkUpdateEntitiesOnPage(!headerCheckboxState));\n }\n },\n [headerCheckboxState, dispatch]\n );\n\n const basicTableRef = useRef(null);\n\n return (\n <div className={styles.tableContainer}>\n {loading && <LinearLoadIndicator />}\n <EntitiesTableWithConfigurableColumns\n entities={entities}\n entityTypeUri={entityTypeUri}\n headColumns={headColumns}\n additionalColumns={additionalColumns}\n canCheck={true}\n onCheck={onEntityCheck}\n checkedEntitiesUris={checkedEntities}\n headerCheckboxState={headerCheckboxState}\n dndColumnReorderingEnabled\n sortField={sortField}\n sortOrder={sortOrder}\n onSort={onSort}\n onReorderingColumn={onReorderingColumn}\n onChangeColumnsList={onChangeColumnsList}\n onChangeColumnsSize={onChangeColumnsSize}\n entitiesTableRef={basicTableRef}\n />\n {total > ROWS_PER_PAGE_OPTIONS[0] && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage || ROWS_PER_PAGE_OPTIONS[0]}\n page={page || 0}\n onChangePage={onChangePage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default SelectProfilesTable;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n tableContainer: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: '#fff',\n width: '100%',\n margin: '30px 60px',\n padding: '24px'\n },\n title: {\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: '0.1px',\n lineHeight: '24px',\n color: theme.palette.text.secondary,\n marginBottom: '6px'\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n letterSpacing: 0,\n lineHeight: '32px',\n paddingLeft: '7px'\n },\n radioButton: {\n padding: '0 9px'\n }\n}));\n\nexport {useStyles};\n","import React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {isNil, pipe} from 'ramda';\nimport {getValue} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\n\nimport Typography from '@mui/material/Typography';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\n\nimport {getBulkUpdateOperation} from '../../../selectors/bulkUpdate';\nimport {setBulkUpdateOperation} from '../../../actions/bulkUpdateActions';\nimport {BULK_UPDATE_COMMON_OPERATIONS} from '../../../constants/constants';\n\nimport {useStyles} from './styles';\n\nconst SelectOperation = () => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const operation = useSelector(getBulkUpdateOperation);\n const canUserDeleteProfiles = useSelector(mdm.selectors.getCanUserDeleteProfiles);\n\n useEffect(() => {\n if (isNil(operation)) {\n dispatch(setBulkUpdateOperation(BULK_UPDATE_COMMON_OPERATIONS.UpdateProfiles));\n }\n }, [operation, dispatch]);\n\n const onGroupChange = pipe(getValue, setBulkUpdateOperation, dispatch);\n\n return (\n <div className={styles.tableContainer}>\n <Typography className={styles.title}>{i18n.text('Choose Bulk Update Operation')}</Typography>\n <RadioGroup value={operation} onChange={onGroupChange}>\n <FormControlLabel\n classes={{label: styles.label}}\n value={BULK_UPDATE_COMMON_OPERATIONS.UpdateProfiles}\n control={<Radio className={styles.radioButton} />}\n label={i18n.text('Update Profiles - Update attribute values of selected profiles')}\n />\n <FormControlLabel\n disabled={!canUserDeleteProfiles}\n classes={{label: styles.label}}\n value={BULK_UPDATE_COMMON_OPERATIONS.DeleteProfiles}\n control={<Radio className={styles.radioButton} />}\n label={i18n.text('Delete Profiles - Delete selected profiles')}\n />\n </RadioGroup>\n </div>\n );\n};\n\nexport default SelectOperation;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {DataTypeValue} from '@reltio/components';\nimport {\n AttributeTypeType,\n getAttrDataTypeDefinition,\n getAttrTypeLookupCode,\n getResolvedLookupValue,\n isLookupAttrType\n} from '@reltio/mdm-sdk';\n\nconst AttributeValueRenderer = ({value, attributeType, lookups}) => {\n if (isLookupAttrType(attributeType) && typeof value === 'string') {\n value = {\n lookupCode: value,\n value: getResolvedLookupValue(lookups, getAttrTypeLookupCode(attributeType), value)\n };\n }\n return <DataTypeValue dataTypeDefinition={getAttrDataTypeDefinition(attributeType)} value={value} />;\n};\n\nAttributeValueRenderer.propTypes = {\n value: PropTypes.any,\n attributeType: AttributeTypeType,\n lookups: PropTypes.object\n};\n\nexport default AttributeValueRenderer;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {BULK_UPDATE_OPERATION_LABELS} from '../../../../constants/constants';\n\nconst OperationRenderer = ({operation}) => BULK_UPDATE_OPERATION_LABELS[operation];\n\nOperationRenderer.propTypes = {\n operation: PropTypes.string\n};\n\nexport default OperationRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {buildAttributesReadableQuery, Maybe, MetadataType} from '@reltio/mdm-sdk';\nimport ReadableSearchQuery from '../../../ReadableSearchQuery/ReadableSearchQuery';\n\nconst ConditionsRenderer = ({conditions, attributePresentations, metadata, lookups}) => {\n return Maybe.fromEmpty(conditions)\n .map((conditions) => {\n const readableQuery = buildAttributesReadableQuery(\n metadata,\n attributePresentations,\n lookups,\n conditions,\n false\n );\n return <ReadableSearchQuery readableQuery={readableQuery} />;\n })\n .orSome('-');\n};\n\nConditionsRenderer.propTypes = {\n metadata: MetadataType,\n attributePresentations: PropTypes.object,\n conditions: PropTypes.arrayOf(PropTypes.object),\n lookups: PropTypes.object\n};\n\nexport default ConditionsRenderer;\n","import {makeStyles} from '@mui/styles';\n\nconst scaffoldLineOffset = '8px';\nconst scaffoldLineSize = '1px';\nconst scaffoldLineStyle = `${scaffoldLineSize} solid #AFD4E9`;\n\nconst useStyles = makeStyles((theme) => ({\n scaffoldsContainer: {\n height: 'calc(100% + 24px)',\n margin: '-12px 0'\n },\n scaffold: {\n width: '32px',\n height: '100%',\n position: 'relative',\n display: 'inline-block',\n verticalAlign: 'middle'\n },\n scaffoldFullVert: {\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n display: 'block',\n boxSizing: 'border-box',\n height: '100%',\n width: scaffoldLineSize,\n left: scaffoldLineOffset,\n top: 0,\n borderLeft: scaffoldLineStyle\n }\n },\n scaffoldHalfVert: {\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n display: 'block',\n boxSizing: 'border-box',\n height: '50%',\n width: scaffoldLineSize,\n left: scaffoldLineOffset,\n top: 0,\n borderLeft: scaffoldLineStyle\n }\n },\n scaffoldHor: {\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n display: 'block',\n boxSizing: 'border-box',\n height: scaffoldLineSize,\n width: '5px',\n left: scaffoldLineOffset,\n top: '50%',\n borderBottom: scaffoldLineStyle\n }\n },\n noWrapContainer: {\n display: 'inline-flex',\n verticalAlign: 'middle',\n height: '100%',\n alignItems: 'center',\n '& > *': {\n flexShrink: 0\n }\n },\n optionContainer: {\n width: '20px',\n '& svg g path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n },\n '& + &': {\n paddingLeft: '4px'\n }\n },\n opaque: {\n opacity: 0\n },\n newIcon: {\n color: '#599E0E',\n marginLeft: '10px',\n borderRadius: '16px',\n padding: '2px 12px',\n border: '2px solid rgba(89,158,14,0.3)',\n fontSize: '10px',\n lineHeight: '16px'\n },\n nestedLabel: {\n width: '100%'\n }\n}));\n\nexport {useStyles};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {AttributeTypeType} from '@reltio/mdm-sdk';\nimport {HierarchicalAttributeTooltip} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst AttributeLabelRenderer = ({attributeTypeData: {pathToTitle, title}}) => {\n const styles = useStyles();\n const isNested = Boolean(pathToTitle && pathToTitle.length > 2);\n\n return isNested ? (\n <HierarchicalAttributeTooltip placement=\"bottom-start\" pathToTitle={pathToTitle}>\n <span className={styles.nestedLabel}>{title}</span>\n </HierarchicalAttributeTooltip>\n ) : (\n title\n );\n};\n\nAttributeLabelRenderer.propTypes = {\n attributeTypeData: PropTypes.shape({\n title: PropTypes.string,\n attributeType: AttributeTypeType\n })\n};\n\nexport default AttributeLabelRenderer;\n","import {chain, cond, curry, defaultTo, ifElse, pipe, T} from 'ramda';\nimport {findAttributeTypeByUri, getAttributeValue, isComplexAttribute, wrapInArrayIfNeeded} from '@reltio/mdm-sdk';\nimport {\n flattenGroupAction,\n isActionWithNestedAttrValue,\n isActionWithReferenceAttrValue,\n isGroupAction\n} from '../../../services/bulkUpdate/helpers';\n\nconst Scaffolds = {\n EMPTY: 'empty',\n FULL_VERT: 'full_vert',\n FULL_VERT_HOR: 'full_vert_hor',\n HALF_VERT_HOR: 'half_vert_hor'\n};\nconst buildScaffold = ({hasLowerSubAttrs, isFirstValue, isLastScaffold}) => {\n const drawHorLine = isLastScaffold && isFirstValue;\n if (hasLowerSubAttrs) {\n return drawHorLine ? Scaffolds.FULL_VERT_HOR : Scaffolds.FULL_VERT;\n } else {\n return drawHorLine ? Scaffolds.HALF_VERT_HOR : Scaffolds.EMPTY;\n }\n};\nconst buildScaffolds = (scaffoldsData) => {\n return scaffoldsData.map((data, index) =>\n buildScaffold({\n ...data,\n isLastScaffold: index === scaffoldsData.length - 1\n })\n );\n};\n\nconst buildDefaultActionRows = ({operation, operationParameters}) =>\n wrapInArrayIfNeeded({\n ...operationParameters,\n operation\n });\n\nconst buildComplexAttrRows = (metadata, attrValue, pathToTitle = [], scaffoldsData = []) => {\n const attributeType = findAttributeTypeByUri(metadata, attrValue.type);\n const title = attributeType.label || attributeType.name;\n const attrRow = {\n attributeTypeData: {\n attributeType,\n title,\n pathToTitle: [...pathToTitle, title]\n },\n scaffolds: buildScaffolds(scaffoldsData),\n pin: attrValue.pin\n };\n if (isComplexAttribute(attributeType)) {\n const subAttrs = Object.values(attrValue.value);\n const subAttrRows = subAttrs.flatMap((values, attrIndex) =>\n values.flatMap((attrValue, valueIndex) => {\n const lowerAttrsCount = subAttrs.length - attrIndex - 1;\n const scaffoldData = {\n hasLowerSubAttrs: lowerAttrsCount > 0,\n isFirstValue: valueIndex === 0\n };\n return buildComplexAttrRows(\n metadata,\n attrValue,\n [...pathToTitle, title],\n [...scaffoldsData, scaffoldData]\n );\n })\n );\n return [attrRow, ...subAttrRows];\n } else {\n return [\n {\n ...attrRow,\n attributeValue: getAttributeValue(attrValue)\n }\n ];\n }\n};\n\nconst buildNestedAttrRows = curry((metadata, {operation, operationParameters}) => {\n const {attributeValue, attributeTypeData, ...otherParams} = operationParameters;\n const [parentRow, ...subRows] = buildComplexAttrRows(\n metadata,\n attributeValue,\n attributeTypeData.pathToTitle.slice(0, -1)\n );\n return [{...parentRow, operation, ...otherParams}, ...subRows];\n});\n\nconst buildReferenceAttrRows = curry((metadata, {operation, operationParameters}) => {\n const {attributeValue, attributeTypeData, ...otherParams} = operationParameters;\n const [parentRow, ...subRows] = buildComplexAttrRows(\n metadata,\n attributeValue,\n attributeTypeData.pathToTitle.slice(0, -1)\n );\n const {label: entityLabel, refEntity} = attributeValue;\n const [{objectURI: entityUri, type: entityType}] = refEntity;\n return [\n {...parentRow, operation, ...otherParams, attributeValue: {entityUri, entityLabel, entityType}},\n ...subRows\n ];\n});\n\nconst buildActionRows = curry((metadata, action) => {\n return cond([\n [isActionWithNestedAttrValue, buildNestedAttrRows(metadata)],\n [isActionWithReferenceAttrValue, buildReferenceAttrRows(metadata)],\n [T, buildDefaultActionRows]\n ])(action);\n});\n\nconst buildTableRows = curry((metadata, actions) => {\n return pipe(\n defaultTo([]),\n chain(ifElse(isGroupAction, pipe(flattenGroupAction, buildTableRows(metadata)), buildActionRows(metadata)))\n )(actions);\n});\n\nexport {Scaffolds, buildTableRows};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {values} from 'ramda';\nimport {Scaffolds} from '../helpers';\nimport classnames from 'classnames';\n\nimport {useStyles} from './styles';\n\nconst Scaffold = ({scaffold}) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(styles.scaffold, {\n [styles.scaffoldFullVert]: scaffold === Scaffolds.FULL_VERT || scaffold === Scaffolds.FULL_VERT_HOR,\n [styles.scaffoldHalfVert]: scaffold === Scaffolds.HALF_VERT_HOR,\n [styles.scaffoldHor]: scaffold === Scaffolds.FULL_VERT_HOR || scaffold === Scaffolds.HALF_VERT_HOR\n })}\n />\n );\n};\nScaffold.propTypes = {\n scaffold: PropTypes.oneOf(values(Scaffolds))\n};\n\nconst ScaffoldsRenderer = ({scaffolds}) => {\n const styles = useStyles();\n return (\n <div className={styles.scaffoldsContainer}>\n {scaffolds.map((scaffold, index) => (\n <Scaffold key={index} scaffold={scaffold} />\n ))}\n </div>\n );\n};\n\nScaffoldsRenderer.propTypes = {\n scaffolds: PropTypes.arrayOf(Scaffold.propTypes.scaffold)\n};\n\nexport default ScaffoldsRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {useStyles} from './styles';\n\nconst NoWrapContainer = ({children}) => {\n const styles = useStyles();\n return <div className={styles.noWrapContainer}>{children}</div>;\n};\n\nNoWrapContainer.propTypes = {\n children: PropTypes.node\n};\n\nexport default NoWrapContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport PinIcon from '../../icons/pin.svg';\nimport AddParentIcon from '../../icons/addParent.svg';\nimport NoWrapContainer from './NoWrapContainer';\n\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\nconst OptionsRenderer = ({pin, addParent}) => {\n const styles = useStyles();\n return (\n <NoWrapContainer>\n <div className={classnames(styles.optionContainer, {[styles.opaque]: !pin})}>\n <PinIcon />\n </div>\n <div className={classnames(styles.optionContainer, {[styles.opaque]: !addParent})}>\n <AddParentIcon />\n </div>\n </NoWrapContainer>\n );\n};\n\nOptionsRenderer.propTypes = {\n pin: PropTypes.bool,\n addParent: PropTypes.bool\n};\n\nexport default OptionsRenderer;\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n AttributeTypeType,\n ConnectionEntityType,\n evaluateDeepEntityLabel,\n getEntityType,\n getLabel,\n getReferencedEntityTypeUriFromAttrType,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport NoWrapContainer from './NoWrapContainer';\n\nimport {useStyles} from './styles';\n\nconst EntityLabelRenderer = ({entity: {entityLabel, entityUri}, attributeType}) => {\n const styles = useStyles();\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entityUri)) || null;\n const metadata = useSelector(mdm.selectors.getMetadata);\n\n const getModifiedEntityLabel = useCallback(() => {\n const referencedEntityTypeUri = getReferencedEntityTypeUriFromAttrType(attributeType);\n const referencedEntityType = getEntityType(metadata, referencedEntityTypeUri);\n return evaluateDeepEntityLabel(modifiedEntity, referencedEntityType.dataLabelPattern);\n }, [attributeType, metadata, modifiedEntity]);\n\n const label = modifiedEntity ? getModifiedEntityLabel() : entityLabel;\n\n return (\n <NoWrapContainer>\n {getLabel(label)}\n {isTempUri(entityUri) && <div className={styles.newIcon}>{i18n.text('New')}</div>}\n </NoWrapContainer>\n );\n};\n\nEntityLabelRenderer.propTypes = {\n entity: ConnectionEntityType,\n attributeType: AttributeTypeType\n};\n\nexport default EntityLabelRenderer;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n tableContainer: {\n width: '90%',\n maxWidth: '1320px',\n margin: '30px auto',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)'\n },\n table: {\n height: 0,\n '& td, & th': {\n padding: '12px',\n overflowWrap: 'anywhere'\n },\n '& th': {\n fontSize: '12px'\n },\n '& td': {\n fontSize: '13px'\n },\n '& tr': {\n '& > *:first-child': {\n paddingLeft: '24px'\n },\n '& > *:last-child': {\n paddingRight: '24px'\n }\n }\n },\n attributeColumn: {\n width: '35%'\n },\n conditionColumn: {\n width: '20%'\n },\n operatorColumn: {\n width: '10%'\n },\n valueColumn: {\n width: '15%'\n },\n optionsColumn: {\n width: '5%'\n }\n}));\n\nexport {useStyles};\n","import React, {useMemo} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport AttributeValueRenderer from './cell-renderers/AttributeValueRenderer';\nimport OperationRenderer from './cell-renderers/OperationRenderer';\nimport ConditionsRenderer from './cell-renderers/ConditionsRenderer';\nimport AttributeLabelRenderer from './cell-renderers/AttributeLabelRenderer';\nimport ScaffoldsRenderer from './cell-renderers/ScaffoldsRenderer';\nimport OptionsRenderer from './cell-renderers/OptionsRenderer';\nimport NoWrapContainer from './cell-renderers/NoWrapContainer';\nimport EntityLabelRenderer from './cell-renderers/EntityLabelRenderer';\nimport {buildTableRows} from './helpers';\nimport {getBulkUpdateValidClearedActions} from '../../../selectors/bulkUpdate';\nimport mdmModule from '@reltio/mdm-module';\nimport {isReference, MetadataType} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nexport const ReviewTable = ({actions, metadata, attributePresentations, lookups}) => {\n const styles = useStyles();\n\n const rows = useMemo(() => buildTableRows(metadata, actions), [actions, metadata]);\n\n return (\n <TableContainer className={styles.tableContainer} component={Paper}>\n <Table className={styles.table}>\n <TableHead>\n <TableRow>\n <TableCell className={styles.attributeColumn}>{i18n.text('Attribute')}</TableCell>\n <TableCell className={styles.conditionColumn}>{i18n.text('Condition')}</TableCell>\n <TableCell className={styles.operatorColumn}>{i18n.text('Operator')}</TableCell>\n <TableCell className={styles.valueColumn} colSpan={2} />\n <TableCell className={styles.valueColumn} />\n <TableCell className={styles.optionsColumn} />\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map(\n (\n {\n scaffolds,\n attributeTypeData,\n conditions,\n operation,\n attributeValueToFind,\n attributeValue,\n pin,\n addNestedAttribute\n },\n index\n ) => {\n const hasValue = !isNil(attributeValue);\n const hasValueToFind = !isNil(attributeValueToFind);\n\n return (\n <TableRow key={index}>\n <TableCell>\n <NoWrapContainer>\n {scaffolds && <ScaffoldsRenderer scaffolds={scaffolds} />}\n <AttributeLabelRenderer attributeTypeData={attributeTypeData} />\n </NoWrapContainer>\n </TableCell>\n <TableCell>\n <ConditionsRenderer\n attributePresentations={attributePresentations}\n metadata={metadata}\n lookups={lookups}\n conditions={conditions}\n />\n </TableCell>\n <TableCell>{operation && <OperationRenderer operation={operation} />}</TableCell>\n <TableCell>\n {hasValueToFind && (\n <AttributeValueRenderer\n lookups={lookups}\n attributeType={attributeTypeData.attributeType}\n value={attributeValueToFind}\n />\n )}\n </TableCell>\n <TableCell align={'right'}>\n {hasValueToFind && hasValue && (\n <NoWrapContainer>\n <span>{i18n.text('with')}</span>\n </NoWrapContainer>\n )}\n </TableCell>\n <TableCell>\n {hasValue &&\n (isReference(attributeTypeData.attributeType) ? (\n <EntityLabelRenderer\n entity={attributeValue}\n attributeType={attributeTypeData.attributeType}\n />\n ) : (\n <AttributeValueRenderer\n lookups={lookups}\n attributeType={attributeTypeData.attributeType}\n value={attributeValue}\n />\n ))}\n </TableCell>\n <TableCell align={'right'}>\n <OptionsRenderer pin={pin} addParent={addNestedAttribute} />\n </TableCell>\n </TableRow>\n );\n }\n )}\n </TableBody>\n </Table>\n </TableContainer>\n );\n};\n\nReviewTable.propTypes = {\n actions: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n attributePresentations: PropTypes.object,\n lookups: PropTypes.object\n};\n\nconst mapStateToProps = (state) => {\n return {\n actions: getBulkUpdateValidClearedActions(state),\n metadata: mdmModule.selectors.getMetadata(state),\n attributePresentations: mdmModule.selectors.getAttributePresentations(state),\n lookups: mdmModule.selectors.getLookups(state)\n };\n};\n\nexport default connect(mapStateToProps)(ReviewTable);\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n tableContainer: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: '#fff',\n width: '100%',\n margin: '30px 60px',\n padding: '24px'\n },\n text: {\n paddingTop: '2px',\n paddingBottom: '1px',\n '& p': {\n fontSize: '14px',\n lineHeight: '16px',\n margin: 0,\n letterSpacing: 0,\n color: theme.palette.text.primary\n }\n }\n}));\n\nexport {useStyles};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\n\nimport ReviewTable from '../ReviewTable/ReviewTable';\nimport {getBulkUpdateOperation, getBulkUpdateSelectedEntitiesNumber} from '../../../selectors/bulkUpdate';\nimport {BULK_UPDATE_COMMON_OPERATIONS} from '../../../constants/constants';\n\nimport {useStyles} from './styles';\n\nconst ReviewChanges = () => {\n const styles = useStyles();\n const operation = useSelector(getBulkUpdateOperation);\n const selectedForBulkUpdateNumber = useSelector(getBulkUpdateSelectedEntitiesNumber);\n\n return operation === BULK_UPDATE_COMMON_OPERATIONS.UpdateProfiles ? (\n <ReviewTable />\n ) : (\n <div className={styles.tableContainer}>\n <div className={styles.text}>\n <p>\n {`${i18n.text('Please confirm that you wish to start deletion of the selected')}`}\n <b>{` ${i18n.number(selectedForBulkUpdateNumber, '0,0')} `}</b>\n {i18n.text(' profiles.')}\n </p>\n <p>{i18n.text('Click on Confirm to proceed.')}</p>\n </div>\n </div>\n );\n};\n\nexport default ReviewChanges;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n contentRoot: {\n padding: '0 0 5px',\n position: 'relative',\n backgroundColor: '#FAFAFA'\n },\n tenantLabel: {\n marginLeft: '23px'\n }\n}));\n\nexport {useStyles};\n","import Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {showBulkUpdate} from '../../actions/uiActions';\nimport {getBulkUpdateActiveStep} from '../../selectors/bulkUpdate';\nimport {getShowBulkUpdate} from '../../selectors/ui';\nimport {TenantLabel} from '@reltio/components';\nimport BulkUpdateBar from './BulkUpdateBar/BulkUpdateBar';\nimport DefineChanges from './DefineChanges/DefineChanges';\nimport DialogHeader from './DialogHeader/DialogHeader';\nimport SelectProfilesTable from './SelectProfilesTable/SelectProfilesTable';\nimport SelectOperation from './SelectOperation/SelectOperation';\nimport ReviewChanges from './ReviewChanges/ReviewChanges';\n\nimport {useStyles} from './styles';\n\nconst BulkUpdateDialog = () => {\n const styles = useStyles();\n const open = useSelector(getShowBulkUpdate);\n const activeStep = useSelector(getBulkUpdateActiveStep);\n const dispatch = useDispatch();\n\n const onClose = () => dispatch(showBulkUpdate(false));\n\n const getStepContent = () => {\n switch (activeStep) {\n case 0:\n return <SelectProfilesTable />;\n case 1:\n return <SelectOperation />;\n case 2:\n return <DefineChanges />;\n case 3:\n return <ReviewChanges />;\n }\n };\n\n return (\n <Dialog fullScreen open={open} onClose={onClose} disableEnforceFocus={true}>\n <DialogHeader onClose={onClose}>\n {i18n.text('Bulk update')}\n <TenantLabel className={styles.tenantLabel} />\n </DialogHeader>\n <BulkUpdateBar />\n <DialogContent classes={{root: styles.contentRoot}}>{getStepContent()}</DialogContent>\n </Dialog>\n );\n};\n\nexport default BulkUpdateDialog;\n","import {makeStyles} from '@mui/styles';\n\nconst drawerWidth = 288;\n\nconst borderStyle = '1px solid rgba(0, 0, 0, 0.33)';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex',\n overflow: 'hidden',\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n },\n drawer: {\n flex: `0 0 ${drawerWidth}px!important`\n },\n docked: {\n flex: `0 0 ${drawerWidth}px`\n },\n drawerPaper: {\n width: drawerWidth,\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n borderRight: borderStyle\n },\n mainContent: {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n }),\n backgroundColor: 'white',\n marginLeft: -drawerWidth\n },\n 'mainContent--shifted': {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n }),\n marginLeft: 0\n },\n menuIcon: {\n width: '24px',\n height: '24px',\n flexShrink: 0,\n marginRight: '12px'\n },\n goToActionIcon: {\n marginLeft: '12px'\n },\n buttonRoot: {\n flexShrink: 0\n },\n buttonExtended: {\n width: '256px',\n margin: '8px 16px',\n padding: '12px',\n backgroundColor: 'rgba(0,0,0,0)',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.1)'\n }\n },\n buttonLabel: {\n flexGrow: 1,\n textAlign: 'left',\n color: theme.palette.text.secondary,\n fontSize: '14px',\n fontWeight: 500,\n letterSpacing: 0,\n lineHeight: '16px'\n },\n quickFilterRoot: {\n lineHeight: '16px',\n fontWeight: 100,\n color: 'rgba(0,0,0, 0.54)',\n letterSpacing: 'normal',\n display: 'flex',\n padding: '8px 0 16px 16px',\n flexShrink: 0\n },\n withBottomBorder: {\n borderBottom: borderStyle,\n boxShadow: '0 1px 3px 0 rgba(0,0,0,0.12)'\n }\n}));\n\nexport {useStyles};\n","import React, {useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport Typography from '@mui/material/Typography';\nimport Fab from '@mui/material/Fab';\nimport TuneIcon from '@mui/icons-material/Tune';\nimport RightArrowIcon from '@mui/icons-material/ChevronRight';\nimport FacetsPanel from '../FacetsPanel/FacetsPanel';\nimport MainContent from '../MainContent/MainContent';\nimport {convertFacetsToAdvancedSearch} from '../../actions/advancedSearchActions';\nimport {convertAdvancedSearchToFacets} from '../../actions/facets';\nimport {AppLoadingSpinner} from '../AppLoadingSpinner/AppLoadingSpinner';\nimport Notification from '../Notification/Notification';\nimport {getAppData, getShowAdvancedSearch} from '../../selectors/ui';\nimport {showAdvancedSearch} from '../../actions/uiActions';\nimport MainSearchArea from '../MainSearchArea/MainSearchArea';\nimport {Drawer, ErrorPopup, withTooltip} from '@reltio/components';\nimport BulkUpdateDialog from '../BulkUpdateDialog/BulkUpdateDialog';\nimport {useStyles} from './styles';\n\nconst FabButtonWithTooltip = withTooltip(Fab);\n\nconst App = ({className, openAdvancedSearch, isReadyAppData, dispatch = () => {}}) => {\n const handleCloseAdvancedSearch = useCallback(() => {\n dispatch(convertAdvancedSearchToFacets());\n dispatch(showAdvancedSearch(false));\n }, [dispatch]);\n\n const handleOpenAdvancedSearch = useCallback(() => {\n dispatch(showAdvancedSearch(true));\n dispatch(convertFacetsToAdvancedSearch());\n }, [dispatch]);\n\n const [isFacetsPanelScrolledToTop, setIsFacetsPanelScrolledToTop] = useState(true);\n const handleFacetsPanelScroll = useCallback((scrollTop) => {\n setIsFacetsPanelScrolledToTop(scrollTop <= 0);\n }, []);\n\n const styles = useStyles();\n\n const isDrawerOpen = !openAdvancedSearch;\n\n if (!isReadyAppData) {\n return null;\n }\n return (\n <>\n <div className={classnames(styles.root, className)}>\n <Drawer\n variant={'persistent'}\n anchor={'left'}\n open={isDrawerOpen}\n classes={{\n root: styles.drawer,\n paper: styles.drawerPaper,\n docked: styles.docked\n }}\n data-reltio-id=\"reltio-search-facet-search-panel\"\n >\n <FabButtonWithTooltip\n tooltipTitle={i18n.text('Switch to Advanced search')}\n tooltipPlacement=\"bottom-end\"\n variant=\"extended\"\n classes={{root: styles.buttonRoot, extended: styles.buttonExtended}}\n onClick={handleOpenAdvancedSearch}\n data-reltio-id=\"reltio-search-advanced-search-button\"\n >\n <TuneIcon color=\"primary\" className={styles.menuIcon} />\n <span className={styles.buttonLabel}>{i18n.text('Advanced search')}</span>\n <RightArrowIcon color=\"action\" className={styles.goToActionIcon} />\n </FabButtonWithTooltip>\n <Typography\n variant=\"button\"\n classes={{\n root: classnames(styles.quickFilterRoot, {\n [styles.withBottomBorder]: !isFacetsPanelScrolledToTop\n })\n }}\n >\n {i18n.text('Quick filters')}\n </Typography>\n <FacetsPanel onScroll={handleFacetsPanelScroll} />\n </Drawer>\n <MainContent\n className={classnames(styles.mainContent, {[styles['mainContent--shifted']]: isDrawerOpen})}\n >\n <MainSearchArea\n isOpenAdvancedSearch={openAdvancedSearch}\n onCloseAdvancedSearch={handleCloseAdvancedSearch}\n />\n </MainContent>\n </div>\n <ErrorPopup />\n <AppLoadingSpinner />\n <Notification />\n <BulkUpdateDialog />\n </>\n );\n};\n\nApp.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n openAdvancedSearch: PropTypes.bool,\n isReadyAppData: PropTypes.bool,\n dispatch: PropTypes.func\n};\n\nexport {App};\n\nexport default connect((store) => {\n return {\n isReadyAppData: !!getAppData(store),\n openAdvancedSearch: getShowAdvancedSearch(store)\n };\n})(App);\n","import {omit, path, pick, pipe, pluck, prop} from 'ramda';\nimport {createLens, path as createLPath} from '../utils/lenses';\nimport {prepareFacetDataForStore} from '../services/search/collectFacets';\nimport {getDataPath} from '../selectors/facet';\nimport {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {Facets, Search} from '../constants/actionTypes';\nimport {sanitizeFacetsConfigsForDataTenant, sanitizeTypeFacetValuesForDataTenant} from '../services/search/dataTenants';\n\nconst initialState = {\n facetsConfigs: [],\n facetsData: {\n /*\n <fieldName>: {\n fieldName: '<fieldName>', // string\n data: [{ <available to select facet items>, // array\n label: '<item label>',\n value: '<item value - used as id for selection>', //string\n number: // number of results\n }]\n values: [<current facet selection>], // array\n },\n ...\n */\n },\n recommendedFacets: [],\n addedFacets: []\n};\n\nconst facetsConfigsL = createLens('facetsConfigs');\nconst facetsDataL = createLens('facetsData');\nconst recommendedFacetsL = createLens('recommendedFacets');\nconst addedFacetsL = createLens('addedFacets');\n\nconst partialDataUpdate = (update, facetsData, propName) => {\n return Object.keys(update).reduce(\n (facets, fieldName) => {\n if (prop(fieldName, facets)) {\n const propL = createLPath(fieldName, propName);\n return propL.set(facets, update[fieldName]);\n }\n return facets;\n },\n {...facetsData}\n );\n};\n\nconst createFacet = ({state, facetsConfigs, addToEnd = false, facetsData = {}}) => {\n const newConfigs = facetsConfigs.filter((config) => config.fieldName);\n const existingConfigs = facetsConfigsL.get(state);\n const newState = facetsConfigsL.set(\n state,\n addToEnd ? existingConfigs.concat(newConfigs) : newConfigs.concat(existingConfigs)\n );\n const currentData = facetsDataL.get(state);\n const newData = newConfigs.reduce(\n (data, config) => ({\n ...data,\n [config.fieldName]: prepareFacetDataForStore(config.fieldName, facetsData[config.fieldName])\n }),\n {...currentData}\n );\n return facetsDataL.set(newState, newData);\n};\n\nconst destroyFacet = (state, ids) => {\n const currentData = facetsDataL.get(state);\n const currentConfigs = facetsConfigsL.get(state);\n const newData = {...currentData};\n ids.forEach((id) => {\n delete newData[id];\n });\n const newState = facetsDataL.set(state, newData);\n return facetsConfigsL.set(\n newState,\n currentConfigs.filter((config) => !ids.includes(config.fieldName))\n );\n};\n\nconst changeFacetValues = ({facetFieldName, values, state}) => {\n const dataPath = getDataPath(facetFieldName);\n const valuesPath = [...dataPath, 'values'];\n const valuesL = createLPath(...valuesPath);\n return valuesL.set(state, values);\n};\n\nconst facetsReducer = (state = initialState, action) => {\n switch (action.type) {\n case Facets.CREATE_FACETS: {\n const {facetsConfigs, addToEnd} = action.payload;\n return createFacet({state, facetsConfigs, addToEnd});\n }\n case mdmModuleSearch.constants.UPDATE_STATE: {\n const {facetsConfigs = [], facetsData = {}} = action.payload.facets || {\n facetsConfigs: []\n };\n return createFacet({state: initialState, facetsConfigs, facetsData});\n }\n case Facets.DESTROY_FACETS: {\n const ids = action.payload || [];\n return destroyFacet(state, ids);\n }\n case Facets.CHANGE_VALUES: {\n const {facetFieldName, values} = action.payload;\n return changeFacetValues({facetFieldName, values, state});\n }\n case Facets.SHOW_MORE_ENTITY_TYPES: {\n const {show} = action.payload;\n const facetFieldName = 'type';\n const dataPath = getDataPath(facetFieldName);\n if (show) {\n const showAllItemsL = createLPath(...dataPath, 'showAllItems');\n return showAllItemsL.set(state, show);\n } else {\n const dataL = createLPath(...dataPath);\n return dataL.set(state, omit(['showAllItems'], dataL.get(state)));\n }\n }\n case Facets.CLEAR_ALL_VALUES:\n case Search.CLEAR_ALL: {\n const facetsData = facetsDataL.get(state);\n const update = Object.keys(facetsData).reduce(\n (update, fieldName) => ({\n ...update,\n [fieldName]: []\n }),\n {}\n );\n const newData = partialDataUpdate(update, facetsData, 'values');\n return facetsDataL.set(state, newData);\n }\n case Facets.UPDATE_DATA: {\n const update = action.payload || {};\n const facetsData = facetsDataL.get(state);\n const newData = partialDataUpdate(update, facetsData, 'data');\n return facetsDataL.set(state, newData);\n }\n case Facets.UPDATE_FILTERED_DATA: {\n const update = action.payload || {};\n const facetsData = facetsDataL.get(state);\n const newData = partialDataUpdate(update, facetsData, 'filteredData');\n return facetsDataL.set(state, newData);\n }\n case Facets.DESTROY_FILTERED_DATA: {\n const facetFieldName = action.payload || {};\n const dataPath = getDataPath(facetFieldName);\n if (path(dataPath, state)) {\n const facetDataL = createLPath(...dataPath);\n const newFacetData = {...facetDataL.get(state)};\n if (newFacetData.filteredData) {\n delete newFacetData.filteredData;\n return facetDataL.set(state, newFacetData);\n }\n }\n break;\n }\n case Facets.SET_RECOMMENDED_FACETS_LIST: {\n return recommendedFacetsL.set(state, action.payload || []);\n }\n case Facets.HIGHLIGHT_ADDED_FACETS: {\n return addedFacetsL.set(state, action.payload);\n }\n case Facets.CLEAR_HIGHLIGHT_ADDED_FACETS: {\n return addedFacetsL.set(state, []);\n }\n case 'UI_RESET': {\n return {...initialState};\n }\n case Search.CHANGE_CURRENT_TENANT: {\n const {isDataTenant, tenantObject} = action.payload;\n if (isDataTenant) {\n const facetsConfigs = facetsConfigsL.get(state);\n const facetsData = facetsDataL.get(state);\n const sanitizedFacetsConfigs = sanitizeFacetsConfigsForDataTenant(tenantObject, facetsConfigs);\n const sanitizedFacetsNames = pluck('fieldName', sanitizedFacetsConfigs);\n const sanitizedFacetsData = pipe(\n pick(sanitizedFacetsNames),\n sanitizeTypeFacetValuesForDataTenant(tenantObject)\n )(facetsData);\n return facetsDataL.set(facetsConfigsL.set(state, sanitizedFacetsConfigs), sanitizedFacetsData);\n }\n return state;\n }\n }\n return state;\n};\n\nexport default facetsReducer;\n","import {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {createLens, path as createLPath} from '../utils/lenses';\nimport {ROWS_PER_PAGE_OPTIONS} from '../constants/constants';\nimport {Search} from '../constants/actionTypes';\nimport {MAP_SEARCH_TYPES, mapSearchTypeToFieldName} from '@reltio/mdm-sdk';\n\nconst initialState = {\n searchResults: null,\n searchResultsByEntityTypes: {},\n total: 0,\n page: 0,\n sortField: null,\n sortOrder: null,\n rowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n loading: false,\n searchParams: {\n // facets are placed in separate reducer\n searchBoxInput: {\n // values are stored in search mdm-module reducer (keyword)\n fieldName: 'attributes',\n filter: 'containsWordStartingWith'\n },\n mapSearch: {\n fieldName: 'geoLocation',\n type: 'geoLocation',\n filter: 'range',\n values: []\n }\n },\n currentTenant: null\n};\n\nconst searchResultsL = createLens('searchResults');\nconst totalL = createLens('total');\nconst pageL = createLens('page');\nconst rowsPerPageL = createLens('rowsPerPage');\nconst sortFieldL = createLens('sortField');\nconst sortOrderL = createLens('sortOrder');\nconst loadingL = createLens('loading');\nconst mapSearchValuesL = createLPath('searchParams', 'mapSearch', 'values');\nconst mapSearchTypeL = createLPath('searchParams', 'mapSearch', 'type');\nconst mapSearchFieldNameL = createLPath('searchParams', 'mapSearch', 'fieldName');\nconst searchResultsByEntityTypesL = createLens('searchResultsByEntityTypes');\n\nconst getEntityTypePageL = (entityTypeUri) => searchResultsByEntityTypesL.compose(createLPath(entityTypeUri, 'page'));\n\nconst changeSort = ({entityTypeUri, field, order}, state) => {\n if (entityTypeUri) {\n const entityTypeSortFieldL = searchResultsByEntityTypesL.compose(createLPath(entityTypeUri, 'sortField'));\n const entityTypeSortOrderL = searchResultsByEntityTypesL.compose(createLPath(entityTypeUri, 'sortOrder'));\n const newState = entityTypeSortFieldL.set(state, field);\n return entityTypeSortOrderL.set(newState, order);\n } else {\n const newState = sortFieldL.set(state, field);\n return sortOrderL.set(newState, order);\n }\n};\n\nconst searchReducer = (state = initialState, action) => {\n switch (action.type) {\n case Search.UPDATE_ENTITIES: {\n const {searchResults, entityTypeUri} = action.payload;\n if (entityTypeUri) {\n const resultsL = searchResultsByEntityTypesL.compose(createLPath(entityTypeUri, 'searchResults'));\n return resultsL.set(state, searchResults);\n } else {\n return searchResultsL.set(state, searchResults);\n }\n }\n case Search.UPDATE_TOTAL:\n return totalL.set(state, action.payload);\n case Search.CHANGE_PAGE: {\n const {entityTypeUri, pageNumber} = action.payload;\n if (entityTypeUri) {\n const entityTypePageL = getEntityTypePageL(entityTypeUri);\n return entityTypePageL.set(state, pageNumber);\n } else {\n return pageL.set(state, pageNumber);\n }\n }\n case Search.RESET_PAGE: {\n const {entityTypeUri} = action.payload;\n const newState = pageL.set(state, 0);\n if (entityTypeUri) {\n const entityTypePageL = getEntityTypePageL(entityTypeUri);\n return entityTypePageL.set(newState, 0);\n }\n return newState;\n }\n case Search.CHANGE_ROWS_PER_PAGE: {\n const {entityTypeUri, number} = action.payload;\n if (entityTypeUri) {\n const entityTypeRowsPerPageL = searchResultsByEntityTypesL.compose(\n createLPath(entityTypeUri, 'rowsPerPage')\n );\n const entityTypePageL = getEntityTypePageL(entityTypeUri);\n const newState = entityTypePageL.set(state, 0);\n return entityTypeRowsPerPageL.set(newState, number);\n } else {\n const newState = pageL.set(state, 0);\n return rowsPerPageL.set(newState, number);\n }\n }\n case Search.CHANGE_SORT: {\n return changeSort(action.payload, state);\n }\n case Search.CHANGE_LOADING:\n return loadingL.set(state, action.payload);\n case mdmModuleSearch.constants.UPDATE_STATE: {\n const {values = [], searchType = MAP_SEARCH_TYPES.geoPolygon} = action.payload.map || {};\n let newState = mapSearchValuesL.set(initialState, values);\n newState = mapSearchTypeL.set(newState, searchType);\n newState = mapSearchFieldNameL.set(newState, mapSearchTypeToFieldName(searchType));\n if (action.payload.view) {\n const {entityTypeTab: entityTypeUri, sortField: field, sortOrder: order} = action.payload.view;\n newState = changeSort({entityTypeUri, field, order}, newState);\n }\n return {\n ...newState,\n currentTenant: action.payload.currentTenant || state.currentTenant,\n searchOptions: action.payload.searchOptions || state.searchOptions\n };\n }\n case 'UI_RESET': {\n return {...initialState};\n }\n case Search.MAP_CHANGE_VALUE: {\n const {value, searchType} = action.payload;\n let newState = mapSearchTypeL.set(state, searchType);\n newState = mapSearchFieldNameL.set(newState, mapSearchTypeToFieldName(searchType));\n return mapSearchValuesL.set(newState, value ? [value] : []);\n }\n case Search.CLEAR_RESULTS: {\n const displayedEntityTab = action.payload;\n if (displayedEntityTab) {\n let newState = searchResultsL.set(state, undefined);\n const searchResultsByEntityTypes = searchResultsByEntityTypesL.get(state);\n return searchResultsByEntityTypesL.set(newState, {\n [displayedEntityTab]: searchResultsByEntityTypes[displayedEntityTab]\n });\n } else {\n return searchResultsByEntityTypesL.set(state, {});\n }\n }\n case Search.CLEAR_ALL: {\n return mapSearchValuesL.set(state, []);\n }\n case Search.CHANGE_CURRENT_TENANT: {\n return {\n ...state,\n currentTenant: action.payload.tenantObject.id\n };\n }\n }\n return state;\n};\n\nexport default searchReducer;\n","import {has} from 'ramda';\nimport {createLens} from '../utils/lenses';\nimport {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {UI, Facets} from '../constants/actionTypes';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nconst initialState = {\n showMoreFacetsPopup: false,\n showSavedSearchesDialog: false,\n showAdvancedSearch: false,\n showSaveSearchDialog: false,\n showBulkUpdate: false,\n activeAdditionalSearch: null,\n activeMarker: null,\n hoveredEntityUri: null,\n searchResultsMode: null,\n previewPanelMode: null,\n searchResultsColumns: {},\n entityTypeTab: null,\n tableViewTabs: [],\n notification: null,\n config: {\n options: {\n showSearchByOv: false\n }\n }\n};\n\nconst showMoreFacetsPopupL = createLens('showMoreFacetsPopup');\nconst showSavedSearchesDialogL = createLens('showSavedSearchesDialog');\nconst showSaveSearchDialogL = createLens('showSaveSearchDialog');\nconst showAdvancedSearchL = createLens('showAdvancedSearch');\nconst showBulkUpdateL = createLens('showBulkUpdate');\nconst activeAdditionalSearchL = createLens('activeAdditionalSearch');\nconst activeMarkerL = createLens('activeMarker');\nconst hoveredEntityUriL = createLens('hoveredEntityUri');\nconst searchResultsModeL = createLens('searchResultsMode');\nconst previewPanelModeL = createLens('previewPanelMode');\nconst searchResultsColumnsL = createLens('searchResultsColumns');\nconst entityTypeTabL = createLens('entityTypeTab');\nconst tableViewTabsL = createLens('tableViewTabs');\nconst loadingL = createLens('loading');\nconst notificationL = createLens('notification');\nconst configL = createLens('config');\n\n// prettier-ignore\nconst uiReducer = (state = initialState, action) => { //NOSONAR\n switch (action.type) {\n case UI.SHOW_MORE_FACETS_POPUP: {\n return showMoreFacetsPopupL.set(state, action.payload);\n }\n case UI.SHOW_SAVED_SEARCHES_DIALOG: {\n return showSavedSearchesDialogL.set(state, action.payload);\n }\n case UI.SHOW_SAVE_SEARCH_DIALOG: {\n return showSaveSearchDialogL.set(state, action.payload.show);\n }\n case UI.SHOW_ADVANCED_SEARCH: {\n return showAdvancedSearchL.set(state, action.payload);\n }\n case UI.SHOW_BULK_UPDATE: {\n return showBulkUpdateL.set(state, action.payload);\n }\n case UI.SET_ACTIVE_ADDITIONAL_SEARCH: {\n const value = activeAdditionalSearchL.get(state) === action.payload ? null : action.payload;\n return activeAdditionalSearchL.set(state, value);\n }\n case UI.SET_MARKER: {\n return activeMarkerL.set(state, action.payload);\n }\n case UI.SET_HOVERED_ENTITY_URI: {\n return hoveredEntityUriL.set(state, action.payload);\n }\n case UI.SET_SEARCH_RESULTS_MODE: {\n return searchResultsModeL.set(state, action.payload);\n }\n case UI.SET_SEARCH_RESULTS_COLUMNS: {\n return searchResultsColumnsL.set(state, action.payload);\n }\n case UI.CHANGE_SEARCH_RESULTS_COLUMNS: {\n const {entityTypeUri, columns} = action.payload;\n return searchResultsColumnsL.compose(createLens(entityTypeUri)).set(state, columns);\n }\n case UI.CHANGE_SIZES_SEARCH_RESULTS_COLUMNS: {\n const {entityTypeUri, columns} = action.payload;\n return searchResultsColumnsL.compose(createLens(entityTypeUri)).set(state, columns);\n }\n case UI.CHANGE_ORDER_SEARCH_RESULTS_COLUMNS: {\n const {entityTypeUri, columns} = action.payload;\n return searchResultsColumnsL.compose(createLens(entityTypeUri)).set(state, columns);\n }\n case UI.SET_PREVIEW_PANEL_MODE: {\n return previewPanelModeL.set(state, action.payload);\n }\n case UI.SET_ENTITY_TYPE_TAB: {\n return entityTypeTabL.set(state, action.payload.entityTypeUri);\n }\n case UI.UPDATE_TABLE_VIEW_TABS: {\n return tableViewTabsL.set(state, action.payload);\n }\n case Facets.UPDATE_DATA: {\n if (has('type', action.payload)) {\n return tableViewTabsL.set(state, action.payload.type);\n }\n break;\n }\n case Facets.CHANGE_VALUES: {\n const {facetFieldName, values} = action.payload;\n if (facetFieldName === 'type' && values.length) {\n const entityTypeTab = entityTypeTabL.get(state);\n if (!values.includes(entityTypeTab)) {\n return entityTypeTabL.set(state, values[0]);\n }\n }\n break;\n }\n case 'UI_RESET': {\n return initialState;\n }\n case UI.SET_LOADING: {\n return loadingL.set(state, action.payload);\n }\n case UI.SET_NOTIFICATION: {\n return notificationL.set(state, action.payload);\n }\n case UI.CLEAR_NOTIFICATION: {\n return notificationL.set(state, null);\n }\n case UI.SET_CONFIG: {\n return configL.set(state, action.payload);\n }\n case mdmModuleSearch.constants.UPDATE_STATE: {\n let newState = showAdvancedSearchL.set(state, has('advanced', action.payload));\n if (action.payload.view) {\n const {searchResultsMode, entityTypeTab, searchResultsColumns, previewPanelMode} = action.payload.view;\n newState = searchResultsModeL.set(newState, searchResultsMode);\n newState = entityTypeTabL.set(newState, entityTypeTab);\n if (!isEmptyValue(searchResultsColumns)) {\n newState = searchResultsColumnsL.set(newState, searchResultsColumns);\n }\n newState = previewPanelModeL.set(newState, previewPanelMode);\n }\n return newState;\n }\n }\n return state;\n};\n\nexport default uiReducer;\n","import {always, assoc, evolve, ifElse, identity, path, prop, omit} from 'ramda';\nimport {createLens, path as createLPath} from '../utils/lenses';\nimport {\n ROWS_PER_PAGE_OPTIONS,\n SAVED_SEARCHES_SORTED_FIELDS,\n SAVED_SEARCHES_SORT_ORDER_VALUES\n} from '../constants/constants';\nimport {UI, Search, SavedSearches, RecentSearches} from '../constants/actionTypes';\n\nconst initialState = {\n currentSearch: null,\n postSavingAction: null,\n changeIndicator: false,\n items: [],\n loading: false,\n total: 0,\n page: 0,\n rowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n searchValue: '',\n findPublic: true,\n favoriteOnly: false,\n sorting: {\n order: SAVED_SEARCHES_SORT_ORDER_VALUES.DESC,\n field: SAVED_SEARCHES_SORTED_FIELDS.updateDate\n }\n};\n\nconst changeIndicatorL = createLens('changeIndicator');\nconst itemsL = createLens('items');\nconst totalL = createLens('total');\nconst pageL = createLens('page');\nconst loadingL = createLens('loading');\nconst postSavingActionL = createLens('postSavingAction');\nconst sortingL = createLens('sorting');\n\nconst updateItem = (updater, uri, state) => {\n const index = itemsL.get(state).findIndex((item) => item.uri === uri);\n const itemL = itemsL.compose(createLPath([index]));\n const item = itemL.get(state);\n return itemL.set(state, updater(item));\n};\n\nconst toggleSortOrder = (order) =>\n order === SAVED_SEARCHES_SORT_ORDER_VALUES.DESC\n ? SAVED_SEARCHES_SORT_ORDER_VALUES.ASC\n : SAVED_SEARCHES_SORT_ORDER_VALUES.DESC;\n\nconst updateSearchParamWithPageReset = (paramName, value, state) => {\n return evolve(\n {\n page: always(0),\n [paramName]: always(value)\n },\n state\n );\n};\n\nconst savedSearchesReducer = (state = initialState, action) => {\n switch (action.type) {\n case SavedSearches.SET_CURRENT:\n return evolve(\n {\n currentSearch: always(action.payload),\n changeIndicator: action.payload === null ? always(false) : identity\n },\n state\n );\n case Search.CLEAR_ALL:\n return evolve(\n {\n currentSearch: always(null),\n changeIndicator: always(false)\n },\n state\n );\n case SavedSearches.SET_CHANGE_INDICATOR:\n return changeIndicatorL.set(state, action.payload);\n case SavedSearches.SET_TOTAL:\n return totalL.set(state, action.payload);\n case SavedSearches.SET_PAGE:\n return pageL.set(state, action.payload);\n case SavedSearches.SET_ROWS_PER_PAGE:\n return updateSearchParamWithPageReset('rowsPerPage', action.payload, state);\n case SavedSearches.SET_FILTERS: {\n const {findPublic, favoriteOnly} = action.payload;\n return evolve(\n {\n page: always(0),\n findPublic: always(findPublic),\n favoriteOnly: always(favoriteOnly)\n },\n state\n );\n }\n case SavedSearches.SET_ITEMS:\n return itemsL.set(state, action.payload);\n case SavedSearches.SELECT_ITEM: {\n const {uri, checked} = action.payload;\n return updateItem((item) => ({...item, checked}), uri, state);\n }\n case SavedSearches.DESELECT_ALL_ITEMS: {\n const items = itemsL.get(state);\n return itemsL.set(state, items.map(omit(['checked'])));\n }\n case SavedSearches.SELECT_ALL_ITEMS: {\n const items = itemsL.get(state);\n return itemsL.set(state, items.map(ifElse(prop('isOwnSearch'), assoc('checked', true), identity)));\n }\n case SavedSearches.DELETE_ITEMS: {\n const uris = action.payload;\n const savedSearchesItems = itemsL.get(state);\n const newState = totalL.set(state, totalL.get(state) - uris.length);\n return itemsL.set(\n newState,\n savedSearchesItems.filter((item) => !uris.includes(item.uri))\n );\n }\n case SavedSearches.MARK_PUBLIC: {\n const {uri, isPublic} = action.payload;\n return updateItem((item) => ({...item, isPublic}), uri, state);\n }\n case SavedSearches.MARK_FAVORITE: {\n const {uri, isFavorite} = action.payload;\n return updateItem((item) => ({...item, isFavorite}), uri, state);\n }\n case SavedSearches.SET_ITEM_TOTAL: {\n const {uri, total} = action.payload;\n return updateItem((item) => ({...item, total}), uri, state);\n }\n case SavedSearches.SET_EDITING: {\n const {uri, isEditing} = action.payload;\n return updateItem((item) => ({...item, isEditing}), uri, state);\n }\n case SavedSearches.CHANGE_ITEM_NAME_REQUEST: {\n const {uri} = action.payload;\n return updateItem(omit(['isEditing']), uri, state);\n }\n case SavedSearches.CHANGE_ITEM_NAME: {\n const {uri, name} = action.payload;\n return updateItem((item) => ({...item, name}), uri, state);\n }\n case SavedSearches.SET_LOADING: {\n return loadingL.set(state, action.payload);\n }\n case RecentSearches.SET_SEARCH_VALUE:\n case SavedSearches.SET_SEARCH_VALUE:\n return updateSearchParamWithPageReset('searchValue', action.payload, state);\n case SavedSearches.LOAD: {\n return {\n ...state,\n page: 0,\n findPublic: true,\n favoriteOnly: false\n };\n }\n case SavedSearches.TOGGLE_SORT: {\n const nextSortField = action.payload;\n const prevSortField = path(['sorting', 'field'], state);\n const prevSortOrder = path(['sorting', 'order'], state);\n return sortingL.set(state, {\n field: nextSortField,\n order: toggleSortOrder(nextSortField === prevSortField ? prevSortOrder : null)\n });\n }\n case UI.SHOW_SAVE_SEARCH_DIALOG: {\n return postSavingActionL.set(state, action.payload.postSavingAction);\n }\n case UI.SHOW_SAVED_SEARCHES_DIALOG: {\n return updateSearchParamWithPageReset('searchValue', initialState.searchValue, state);\n }\n }\n return state;\n};\n\nexport default savedSearchesReducer;\n","import {assoc, omit, prop} from 'ramda';\nimport {createLens, path as createLPath} from '../utils/lenses';\nimport {RecentSearches, SavedSearches, UI} from '../constants/actionTypes';\n\nconst initialState = {\n items: [],\n filterWord: null,\n loading: false,\n lastSavedRecentSearch: null\n};\n\nconst itemsL = createLens('items');\nconst loadingL = createLens('loading');\nconst filterWordL = createLens('filterWord');\nconst lastSavedRecentSearchL = createLens('lastSavedRecentSearch');\n\nconst updateItem = (updater, searchCreatedDate, state) => {\n const index = itemsL.get(state).findIndex((item) => item.createdDate === searchCreatedDate);\n const itemL = itemsL.compose(createLPath([index]));\n const item = itemL.get(state);\n return itemL.set(state, updater(item));\n};\n\nconst recentSearchesReducer = (state = initialState, action) => {\n switch (action.type) {\n case SavedSearches.SET_SEARCH_VALUE:\n case RecentSearches.SET_SEARCH_VALUE:\n return filterWordL.set(state, action.payload);\n case RecentSearches.SET_ITEMS:\n return itemsL.set(state, action.payload);\n case RecentSearches.SELECT_ITEM: {\n const {searchCreatedDate, checked} = action.payload;\n return updateItem((item) => ({...item, checked}), searchCreatedDate, state);\n }\n case RecentSearches.DESELECT_ALL_ITEMS: {\n const items = itemsL.get(state);\n return itemsL.set(state, items.map(omit(['checked'])));\n }\n case RecentSearches.SELECT_ALL_ITEMS: {\n const items = itemsL.get(state);\n return itemsL.set(state, items.map(assoc('checked', true)));\n }\n case RecentSearches.DELETE_ITEMS: {\n const searches = action.payload;\n const searchCreatedDates = (searches || []).map(prop('createdDate'));\n const savedSearchesItems = itemsL.get(state);\n return itemsL.set(\n state,\n savedSearchesItems.filter((item) => !searchCreatedDates.includes(item.createdDate))\n );\n }\n case RecentSearches.SET_ITEM_TOTAL: {\n const {searchCreatedDate, total} = action.payload;\n return updateItem((item) => ({...item, total}), searchCreatedDate, state);\n }\n case RecentSearches.SET_LOADING: {\n return loadingL.set(state, action.payload);\n }\n case RecentSearches.SET_LAST_SAVED: {\n return lastSavedRecentSearchL.set(state, action.payload);\n }\n case UI.SHOW_SAVED_SEARCHES_DIALOG: {\n return filterWordL.set(state, initialState.filterWord);\n }\n }\n return state;\n};\n\nexport default recentSearchesReducer;\n","import {createLens} from '../utils/lenses';\nimport {Entity} from '../constants/actionTypes';\nimport {profile, search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {getAttributeSource, isEmptyValue} from '@reltio/mdm-sdk';\nimport {__, concat, defaultTo, lensPath, over, pipe} from 'ramda';\n\nconst initialState = {\n loading: false,\n selectedEntityUri: null,\n entity: null\n};\n\nconst loadingL = createLens('loading');\nconst selectedEntityUriL = createLens('selectedEntityUri');\nconst entityL = createLens('entity');\n\nconst entityReducer = (state = initialState, action) => {\n switch (action.type) {\n case Entity.SET_LOADING: {\n return loadingL.set(state, action.payload);\n }\n case Entity.SET_SELECTED_ENTITY_URI: {\n return selectedEntityUriL.set(state, action.payload);\n }\n case Entity.SET_ENTITY: {\n return entityL.set(state, action.payload);\n }\n case profile.constants.ProfileActions.ADD_NEXT_PAGE_ATTRIBUTE_VALUES: {\n const {parentUri, attributeTypeName, attributeTypeUri, values} = action.payload;\n const attributeSource = getAttributeSource(attributeTypeUri);\n if (state.entity && parentUri === state.entity.uri) {\n const lens = lensPath(['entity', attributeSource, attributeTypeName]);\n\n return over(lens, pipe(defaultTo([]), concat(__, values)), state);\n } else {\n return state;\n }\n }\n case mdmModuleSearch.constants.SEARCH_RESULTS_SET: {\n if (isEmptyValue(action.payload)) {\n const newState = entityL.set(state, initialState.entity);\n return selectedEntityUriL.set(newState, initialState.selectedEntityUri);\n }\n return state;\n }\n }\n return state;\n};\n\nexport default entityReducer;\n","import {assoc, isNil, omit, path, prop, reject, uniq, without} from 'ramda';\nimport {nanoid} from 'nanoid';\n\nimport {createLens, path as createLPath} from '../utils/lenses';\nimport {BulkUpdate} from '../constants/actionTypes';\nimport {\n BULK_UPDATE_ALLOWED_OPERATION_VALUE_FIELDS,\n BULK_UPDATE_OPERATIONS,\n BULK_UPDATE_SELECTION_MODES,\n ROWS_PER_PAGE_OPTIONS\n} from '../constants/constants';\nimport {isComplexAttribute} from '@reltio/mdm-sdk';\nimport {\n addAttributeAfter,\n changeAttributeData,\n createGetAttributeIndex,\n createGetAttributeLens,\n createGetAttributeProp,\n createGetAttributesLens,\n createGetGroupLens,\n createSetAttributeProp,\n deleteAttribute,\n setFilter,\n setValues\n} from './helpers/queryBuilderHelpers';\n\nconst initialState = {\n objects: {\n selectionMode: BULK_UPDATE_SELECTION_MODES.exclude,\n selectedEntities: [],\n entities: [],\n total: 0,\n page: 0,\n rowsPerPage: ROWS_PER_PAGE_OPTIONS[0],\n filterText: '',\n sortOrder: null,\n sortField: null,\n selectedColumns: []\n },\n actions: [],\n operation: null,\n activeStep: 0,\n loading: false,\n requestPending: false\n};\n\nconst activeStepL = createLens('activeStep');\nconst operationL = createLens('operation');\nconst loadingL = createLens('loading');\nconst requestL = createLens('requestPending');\n\nconst totalL = createLPath('objects', 'total');\nconst pageL = createLPath('objects', 'page');\nconst rowsPerPageL = createLPath('objects', 'rowsPerPage');\nconst selectionModeL = createLPath('objects', 'selectionMode');\nconst entitiesL = createLPath('objects', 'entities');\nconst selectedEntitiesL = createLPath('objects', 'selectedEntities');\nconst filterTextL = createLPath('objects', 'filterText');\n\nconst isIncludeSelectionMode = (state) => selectionModeL.get(state) === BULK_UPDATE_SELECTION_MODES.include;\n\nconst sortOrderL = createLPath('objects', 'sortOrder');\nconst sortFieldL = createLPath('objects', 'sortField');\nconst selectedColumnsL = createLPath('objects', 'selectedColumns');\n\nconst actionsLensPath = ['actions'];\nconst actionsL = createLPath(...actionsLensPath);\n\nconst PROP_NAME_CONDITIONS = 'conditions';\n\nconst getSimpleActionsPath = ({groupId, state}) => {\n if (groupId) {\n const actions = actionsL.get(state);\n const complexActionIndex = actions.findIndex((item) => item.id === groupId);\n if (complexActionIndex !== -1) {\n return [...actionsLensPath, complexActionIndex, 'actions'];\n }\n }\n return actionsLensPath;\n};\n\nconst createSimpleAction = (operation, operationParameters) => ({\n id: nanoid(),\n operation,\n operationParameters\n});\n\nconst getTopLevelFieldNameFromOperationParameters = (operationParameters) => {\n const fieldName = path(['attributeTypeData', 'fieldName'], operationParameters) || [];\n return fieldName.split('.').slice(0, 2).join('.');\n};\n\nconst createComplexAction = (operation, operationParameters) => ({\n id: nanoid(),\n fieldName: getTopLevelFieldNameFromOperationParameters(operationParameters),\n actions: [createSimpleAction(operation, operationParameters)]\n});\n\nconst convertSimpleActionToComplex = (action) => createComplexAction(action.operation, action.operationParameters);\n\nconst isComplexOrSubattribute = ({attributeType, fieldName = ''}) =>\n isComplexAttribute(attributeType) || fieldName.split('.').length > 2;\n\nconst tuneAction = ({state, id, groupId, operation, operationParameters, togglePin, toggleAddNested}) => {\n const pathToSimpleActions = getSimpleActionsPath({state, groupId});\n const simpleActionsL = createLPath(...pathToSimpleActions);\n const simpleActions = simpleActionsL.get(state);\n const needComplexAction =\n !groupId &&\n prop('attributeTypeData', operationParameters) &&\n isComplexOrSubattribute(operationParameters.attributeTypeData);\n if (id) {\n const actionIndex = simpleActions.findIndex((item) => item.id === id);\n const actionL = createLPath(...pathToSimpleActions, actionIndex);\n const updatedAction = {...actionL.get(state)};\n if (operation && updatedAction.operation !== operation) {\n if (updatedAction.operationParameters) {\n const allowedValueFields = [updatedAction.operation, operation].includes(\n BULK_UPDATE_OPERATIONS.RepointReference\n )\n ? []\n : BULK_UPDATE_ALLOWED_OPERATION_VALUE_FIELDS[operation];\n updatedAction.operationParameters = omit(\n without(allowedValueFields, ['attributeValue', 'attributeValueToFind']),\n updatedAction.operationParameters\n );\n }\n updatedAction.operation = operation;\n }\n if (operationParameters) {\n updatedAction.operationParameters = reject(isNil, {\n ...updatedAction.operationParameters,\n ...operationParameters\n });\n }\n if (togglePin) {\n updatedAction.operationParameters = {\n ...updatedAction.operationParameters,\n pin: !path(['operationParameters', 'pin'], updatedAction)\n };\n }\n if (toggleAddNested) {\n updatedAction.operationParameters = {\n ...updatedAction.operationParameters,\n addNestedAttribute: !path(['operationParameters', 'addNestedAttribute'], updatedAction)\n };\n }\n return actionL.set(state, needComplexAction ? convertSimpleActionToComplex(updatedAction) : updatedAction);\n } else {\n const clearedOperationParameters = reject(isNil, operationParameters);\n const newAction = needComplexAction\n ? createComplexAction(operation, clearedOperationParameters)\n : createSimpleAction(operation, clearedOperationParameters);\n const actionL = createLPath(...pathToSimpleActions, simpleActions.length);\n return actionL.set(state, newAction);\n }\n};\n\nconst getGroupLens = createGetGroupLens(actionsLensPath);\nconst getAttributesLens = createGetAttributesLens(getGroupLens, PROP_NAME_CONDITIONS);\nconst getAttributeIndex = createGetAttributeIndex(getAttributesLens);\nconst getAttributeLens = createGetAttributeLens(getAttributesLens);\nconst setAttributeProp = createSetAttributeProp(getAttributeLens);\nconst getAttributeProp = createGetAttributeProp(getAttributeLens);\n\nconst bulkUpdateReducer = (state = initialState, action) => {\n switch (action.type) {\n case BulkUpdate.SET_ACTIVE_STEP: {\n return activeStepL.set(state, action.payload);\n }\n case BulkUpdate.INIT: {\n return {\n ...initialState,\n objects: {\n ...initialState.objects,\n ...action.payload\n }\n };\n }\n case BulkUpdate.UPDATE_ENTITIES: {\n return entitiesL.set(state, action.payload);\n }\n case BulkUpdate.TOGGLE_SELECTION_MODE: {\n const newState = selectionModeL.set(\n state,\n isIncludeSelectionMode(state)\n ? BULK_UPDATE_SELECTION_MODES.exclude\n : BULK_UPDATE_SELECTION_MODES.include\n );\n return selectedEntitiesL.set(newState, []);\n }\n case BulkUpdate.SELECT_ENTITY: {\n const {uri, checked} = action.payload;\n const selectedEntities = selectedEntitiesL.get(state);\n const isIncludeMode = isIncludeSelectionMode(state);\n return selectedEntitiesL.set(\n state,\n !!checked === !!isIncludeMode ? uniq(selectedEntities.concat(uri)) : without(uri, selectedEntities)\n );\n }\n case BulkUpdate.SELECT_ALL_ENTITIES_ON_PAGE: {\n const shouldSelectAll = action.payload;\n const isIncludeMode = isIncludeSelectionMode(state);\n const selectedEntities = selectedEntitiesL.get(state);\n const entitiesUris = entitiesL.get(state).map(prop('uri'));\n return selectedEntitiesL.set(\n state,\n !!shouldSelectAll === !!isIncludeMode\n ? uniq(selectedEntities.concat(entitiesUris))\n : without(entitiesUris, selectedEntities)\n );\n }\n case BulkUpdate.SET_LOADING: {\n return loadingL.set(state, action.payload);\n }\n case BulkUpdate.CHANGE_PAGE: {\n return pageL.set(state, action.payload);\n }\n case BulkUpdate.CHANGE_ROWS_PER_PAGE: {\n const newState = pageL.set(state, 0);\n return rowsPerPageL.set(newState, action.payload);\n }\n case BulkUpdate.CHANGE_SORT: {\n const {order, field} = action.payload;\n const newState = sortFieldL.set(state, field);\n return sortOrderL.set(newState, order);\n }\n case BulkUpdate.CHANGE_COLUMNS: {\n return selectedColumnsL.set(state, action.payload);\n }\n case BulkUpdate.SET_TOTAL: {\n return totalL.set(state, action.payload);\n }\n case BulkUpdate.SET_FILTER_TEXT: {\n const {filterText} = action.payload;\n return filterTextL.set(state, filterText);\n }\n case BulkUpdate.SET_OPERATION: {\n return operationL.set(state, action.payload);\n }\n case BulkUpdate.SET_ACTION_ATTRIBUTE: {\n const {id, groupId, attribute: attributeTypeData} = action.payload;\n return tuneAction({\n state,\n id,\n groupId,\n operationParameters: {\n attributeTypeData,\n attributeValue: null,\n attributeValueToFind: null,\n pin: null,\n addNestedAttribute: null\n }\n });\n }\n case BulkUpdate.SET_ACTION_OPERATION: {\n const {id, groupId, operation} = action.payload;\n return tuneAction({state, id, groupId, operation});\n }\n case BulkUpdate.ADD_OPERATION_PARAMETERS: {\n const {id, groupId, operationParameters} = action.payload;\n return tuneAction({state, id, groupId, operationParameters});\n }\n case BulkUpdate.TOGGLE_ACTION_PIN: {\n const {id, groupId} = action.payload;\n return tuneAction({state, id, groupId, togglePin: true});\n }\n case BulkUpdate.TOGGLE_ACTION_ADD_NESTED: {\n const {id, groupId} = action.payload;\n return tuneAction({state, id, groupId, toggleAddNested: true});\n }\n case BulkUpdate.DELETE_ACTION: {\n const {id, groupId} = action.payload;\n const pathToSimpleActions = getSimpleActionsPath({state, groupId});\n const simpleActionsL = createLPath(...pathToSimpleActions);\n const simpleActions = simpleActionsL.get(state);\n return simpleActionsL.set(\n state,\n simpleActions.filter((action) => action.id !== id)\n );\n }\n case BulkUpdate.TOGGLE_CONDITIONS: {\n const groupId = action.payload;\n const actions = actionsL.get(state);\n const actionIndex = actions.findIndex((item) => item.id === groupId);\n const actionL = createLPath(...actionsLensPath, actionIndex);\n const bulkAction = actionL.get(state);\n return actionL.set(\n state,\n bulkAction.conditions ? omit(['conditions'], bulkAction) : assoc('conditions', [], bulkAction)\n );\n }\n case BulkUpdate.ADD_CONDITION_AFTER: {\n const {groupId, attributeId, attribute} = action.payload;\n return addAttributeAfter({\n state,\n groupId,\n attributeId,\n attribute,\n getAttributesLens,\n getAttributeIndex\n });\n }\n case BulkUpdate.CHANGE_CONDITION_DATA: {\n const {groupId, attributeId, attributeData} = action.payload;\n return changeAttributeData({\n state,\n groupId,\n attributeId,\n attributeData,\n setAttributeProp,\n getAttributeLens\n });\n }\n case BulkUpdate.DELETE_CONDITION: {\n const {groupId, attributeId} = action.payload;\n return deleteAttribute({state, groupId, attributeId, getAttributesLens});\n }\n case BulkUpdate.SET_CONDITION_FILTER: {\n const {groupId, attributeId, filter} = action.payload;\n return setFilter({state, groupId, attributeId, filter, getAttributeProp, setAttributeProp});\n }\n case BulkUpdate.SET_CONDITION_VALUES: {\n const {groupId, attributeId, values} = action.payload;\n return setValues({state, groupId, attributeId, values, setAttributeProp});\n }\n case BulkUpdate.SET_REQUEST_PENDING: {\n return requestL.set(state, action.payload);\n }\n }\n return state;\n};\n\nexport default bulkUpdateReducer;\n","import {complement, compose, prop} from 'ramda';\nimport {findAttributeTypeByUri, getEntityType, isComplexAttribute, isReadableAttribute} from '@reltio/mdm-sdk';\n\nimport {getEnvironment, getTenant} from '../../utils/general';\nimport {buildQueryTree, prepareAttrUriForSearch} from './searchEngine';\nimport {getSpecialFacets} from './collectFacets';\nimport {getAttributesTree} from './collectAttributes';\nimport {jsonRequest} from '../../utils/network';\nimport {getMaxRecommended} from '../../utils/config';\n\nconst RECOMMENDATION_SERVICE_URL = 'recommend';\n\nconst getRecommendationServiceUrl = () => {\n const env = getEnvironment();\n const tenant = getTenant();\n return `${RECOMMENDATION_SERVICE_URL}/${env}/${tenant}`;\n};\n\nexport const buildRecommendationServiceRequest = (extractedFacets, max) => {\n const clearedFacets = extractedFacets.map(({fieldName, values}) => ({\n fieldName,\n values: values.map((value) => (Array.isArray(value) ? JSON.stringify(value) : value))\n }));\n const tree = buildQueryTree(clearedFacets);\n const convertedTree = tree.reduce((result, node) => {\n const children = (node.children || []).map((child) => JSON.stringify(child));\n result[node.fieldName] = children.length > 0 ? children : node.values.slice().sort();\n return result;\n }, {});\n const body = {\n facets: convertedTree,\n max\n };\n return {\n url: getRecommendationServiceUrl(),\n options: {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n };\n};\n\nconst getSingleSelectedEntityTypeUri = (selectedEntityTypes) => {\n return selectedEntityTypes && selectedEntityTypes.length === 1 ? selectedEntityTypes[0] : null;\n};\n\nconst getAllowedAttrFieldNames = (attrType) =>\n [attrType]\n .filter(complement(isComplexAttribute))\n .map(compose(prepareAttrUriForSearch, prop('uri')))\n .concat((attrType.children || []).map(getAllowedAttrFieldNames))\n .flat(Infinity);\n\nexport const filterInvalidRecommendations = (metadata, recommendedFacets = [], selectedEntityTypes) => {\n const entityTypeUri = getSingleSelectedEntityTypeUri(selectedEntityTypes);\n const entityType = entityTypeUri && getEntityType(metadata, entityTypeUri);\n\n const allowedAttrFieldNames = getAttributesTree(metadata, entityType || {})\n .map(getAllowedAttrFieldNames)\n .flat(Infinity);\n return recommendedFacets\n .filter((recommended) => entityTypeUri || !recommended.startsWith('attributes.'))\n .filter((recommended) => !recommended.startsWith('attributes.') || allowedAttrFieldNames.includes(recommended));\n};\n\nexport const collectLocalRecommendations = (metadata, recommendedFacets, max, selectedEntityTypes) => {\n const isNewRecommendation = (fieldName) => !recommendedFacets.includes(fieldName);\n let result = [];\n const numberToAdd = Math.max(0, max - recommendedFacets.length);\n if (numberToAdd) {\n const entityTypeUri = getSingleSelectedEntityTypeUri(selectedEntityTypes);\n if (entityTypeUri) {\n const defaultFaceted = (getEntityType(metadata, entityTypeUri).defaultFacetedAttributes || [])\n .map((uri) => findAttributeTypeByUri(metadata, uri, entityTypeUri))\n .filter((attrType) => attrType && isReadableAttribute(attrType) && !isComplexAttribute(attrType))\n .map(prop('uri'))\n .map(prepareAttrUriForSearch)\n .filter(isNewRecommendation);\n result = result.concat(defaultFaceted);\n }\n if (result.length < numberToAdd) {\n const special = getSpecialFacets()\n .map((config) => config.fieldName)\n .filter(isNewRecommendation);\n result = result.concat(special);\n }\n }\n return result.slice(0, numberToAdd);\n};\n\nexport const getRecommendedAttributesForEntityTypes = (entityTypes, max = getMaxRecommended()) => {\n const request = buildRecommendationServiceRequest(\n [\n {\n fieldName: 'type',\n values: entityTypes\n }\n ],\n max\n );\n\n return jsonRequest(request.url, request.options).catch(() => []);\n};\n","import {select, call, put} from 'redux-saga/effects';\n\nimport {getFacetsArrayWithConfigs} from './facetsSaga';\nimport {setRecommendedFacetsList} from '../actions/facets';\nimport {getSelectedEntityTypes} from '../selectors/facet';\nimport {jsonRequest} from '../utils/network';\nimport {\n buildRecommendationServiceRequest,\n collectLocalRecommendations,\n filterInvalidRecommendations\n} from '../services/search/recommendations';\nimport {getMaxRecommended} from '../utils/config';\nimport {trackTiming} from '../actions/googleAnalyticsActions';\nimport mdmModule from '@reltio/mdm-module';\n\nexport function* updateRecommendedFacetsList() {\n const startTime = Date.now();\n const extractedFacets = yield call(getFacetsArrayWithConfigs);\n const max = getMaxRecommended();\n const request = buildRecommendationServiceRequest(extractedFacets, max);\n let recommendedFacets;\n try {\n recommendedFacets = yield call(jsonRequest, request.url, request.options);\n recommendedFacets = recommendedFacets.filter((fieldName) => fieldName !== 'type').slice(0, max);\n } catch (e) {\n recommendedFacets = [];\n }\n\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const selectedEntityTypes = yield select(getSelectedEntityTypes);\n recommendedFacets = filterInvalidRecommendations(metadata, recommendedFacets, selectedEntityTypes);\n const localRecommended = collectLocalRecommendations(metadata, recommendedFacets, max, selectedEntityTypes);\n recommendedFacets = recommendedFacets.concat(localRecommended);\n yield put(setRecommendedFacetsList(recommendedFacets));\n\n trackTiming('updateRecommendedFacetsList', startTime, Date.now());\n}\n","import {utils} from '@reltio/mdm-sdk';\n\nconst getLookupCodesFilteredByDisplayName = (valueCodes = {}, filteredText = '') => {\n return Object.keys(valueCodes).filter(\n (codeId) =>\n utils.strings.search(codeId, filteredText) ||\n utils.strings.search(valueCodes[codeId].displayName, filteredText)\n );\n};\n\nexport {getLookupCodesFilteredByDisplayName};\n","class ResolveLookupCodesTasksManager {\n constructor() {\n this._lookupsCodesResolveTasks = Object.create(null);\n }\n addTask(key, task) {\n this._lookupsCodesResolveTasks[key] = task;\n }\n deleteTask(key) {\n delete this._lookupsCodesResolveTasks[key];\n }\n getRunningTask(key) {\n return this._lookupsCodesResolveTasks[key];\n }\n clearTasks() {\n this._lookupsCodesResolveTasks = Object.create(null);\n }\n}\nexport const resolveLookupCodesTasksManager = new ResolveLookupCodesTasksManager();\n","import {isEmpty, uniqWith, curry, hasPath} from 'ramda';\n\nconst eqByRef = (a, b) => a === b;\nclass ResolveLookupValuesTasksManager {\n constructor() {\n this._lookupValuesResolveTasks = Object.create(null);\n }\n addTask(lookupsValues, task) {\n lookupsValues.forEach(({type, codeValues}) => {\n !this._lookupValuesResolveTasks[type] && (this._lookupValuesResolveTasks[type] = {});\n codeValues.forEach((codeValue) => {\n this._lookupValuesResolveTasks[type][codeValue] = task;\n });\n });\n }\n deleteTask(lookupsValues) {\n lookupsValues.forEach(({type, codeValues}) => {\n if (this._lookupValuesResolveTasks[type]) {\n codeValues.forEach((codeValue) => {\n delete this._lookupValuesResolveTasks[type][codeValue];\n });\n }\n if (isEmpty(this._lookupValuesResolveTasks[type])) {\n delete this._lookupValuesResolveTasks[type];\n }\n });\n }\n getRunningTasks(lookupsValues) {\n const tasks = lookupsValues.flatMap(({type, codeValues}) => {\n if (this._lookupValuesResolveTasks[type]) {\n return codeValues.reduce((result, codeValue) => {\n const task = this._lookupValuesResolveTasks[type][codeValue];\n if (task) {\n result.push(task);\n }\n return result;\n }, []);\n } else {\n return [];\n }\n });\n return uniqWith(eqByRef, tasks);\n }\n isLookupValueResolveTaskRunning = curry((lookupCode, value) =>\n hasPath([lookupCode, value], this._lookupValuesResolveTasks)\n );\n clearTasks() {\n this._lookupValuesResolveTasks = Object.create(null);\n }\n}\n\nexport const resolveLookupValuesTasksManager = new ResolveLookupValuesTasksManager();\n","import {call, fork, join, put, select} from 'redux-saga/effects';\nimport {complement, lensPath, path, set, isEmpty} from 'ramda';\nimport {trackException} from '../actions/googleAnalyticsActions';\n\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getLookupCodesFilteredByDisplayName} from '../services/lookups/codes';\n\nimport {getDependentLookups, resolveLookupsList as mdmResolveLookupsList} from '@reltio/mdm-sdk';\nimport {DEFAULT_FACET_PAGE_SIZE} from '../constants/constants';\nimport {resolveLookupCodesTasksManager} from '../services/search/resolveLookupCodesTasksManager';\nimport {resolveLookupValuesTasksManager} from '../services/search/resolveLookupValuesTasksManager';\n\nexport function* awaitLoadingLookupsTasks(lookups) {\n const loadingTasks = resolveLookupValuesTasksManager.getRunningTasks(lookups);\n if (loadingTasks.length > 0) {\n yield join(loadingTasks);\n }\n}\n\nexport function* requestLookupsList(lookupsList) {\n try {\n const lookupCodeValuesList = lookupsList.flatMap(({type, codeValues}) =>\n codeValues.map((codeValue) => ({type, codeValue}))\n );\n\n const task = yield fork(mdmResolveLookupsList, lookupCodeValuesList);\n resolveLookupValuesTasksManager.addTask(lookupsList, task);\n const result = yield join(task);\n\n const resolvedLookupsCodes = result.reduce((list, lookup) => {\n const [type] = Object.keys(lookup);\n const [value] = Object.keys(lookup[type]);\n const lookupPathL = lensPath([type, value]);\n const lookupResolvedValue = path([type, value], lookup);\n return set(lookupPathL, lookupResolvedValue, list);\n }, {});\n for (const type in resolvedLookupsCodes) {\n yield put(profile.lookups.actions.lookupsForTypeResolved({type, values: resolvedLookupsCodes[type]}));\n }\n } catch (e) {\n yield put(trackException(e));\n } finally {\n resolveLookupValuesTasksManager.deleteTask(lookupsList);\n }\n}\nexport function* resolveLookupsList(lookupsList) {\n if (isEmpty(lookupsList)) {\n return;\n }\n const unrequestedLookupsValues = lookupsList\n .map(({type, codeValues}) => {\n const isPendingValue = resolveLookupValuesTasksManager.isLookupValueResolveTaskRunning(type);\n return {\n type: type,\n codeValues: codeValues.filter(complement(isPendingValue))\n };\n })\n .filter(({codeValues}) => codeValues.length > 0);\n\n if (unrequestedLookupsValues.length > 0) {\n yield call(requestLookupsList, unrequestedLookupsValues);\n }\n yield call(awaitLoadingLookupsTasks, lookupsList);\n}\n\nexport function* resolveLookupCode(code, prefix, limit = DEFAULT_FACET_PAGE_SIZE, pageNumber = 1) {\n const useCache = !prefix && pageNumber === 1;\n const cacheKey = `${code}${limit}`;\n const loadingCodeTask = useCache && resolveLookupCodesTasksManager.getRunningTask(cacheKey);\n if (loadingCodeTask) {\n yield join(loadingCodeTask);\n } else {\n try {\n const task = yield fork(getDependentLookups, {\n type: code,\n displayNamePrefix: prefix,\n max: limit,\n offset: limit * (pageNumber - 1)\n });\n useCache && resolveLookupCodesTasksManager.addTask(cacheKey, task);\n const result = yield join(task);\n yield put(profile.lookups.actions.lookupsForTypeResolved({type: code, values: result.codeValues[code]}));\n } catch (e) {\n yield put(trackException(e));\n } finally {\n useCache && resolveLookupCodesTasksManager.deleteTask(cacheKey);\n }\n }\n}\n\nconst getPagedResult = (filteredCodes, pageSize, pageNumber) => {\n return filteredCodes.slice((pageNumber - 1) * pageSize, pageSize * pageNumber);\n};\n\nexport function* getPrefixedLookupValues(lookupCode, prefix, facetPageSize, pageNumber = 1) {\n const lookupsCodes = yield select(mdm.selectors.getLookups);\n const filteredCodes = getLookupCodesFilteredByDisplayName(lookupsCodes[lookupCode], prefix);\n if (filteredCodes.length >= facetPageSize * pageNumber) {\n return getPagedResult(filteredCodes, facetPageSize, pageNumber);\n }\n yield call(resolveLookupCode, lookupCode, prefix, facetPageSize, pageNumber);\n const updatedLookupsCodes = yield select(mdm.selectors.getLookups);\n return getPagedResult(\n getLookupCodesFilteredByDisplayName(updatedLookupsCodes[lookupCode], prefix),\n facetPageSize,\n pageNumber\n );\n}\n","import {pathOr, pipe, propEq, reduce, uniq, values} from 'ramda';\nimport {getAttrTypeLookupCode, getUnresolvedLookupsList} from '@reltio/mdm-sdk';\nimport {getFacetByFieldName} from './facet';\n\nconst getLookupsListFromFacetResponse = (facetResponse, lookupFacets) => {\n return pipe(\n Object.entries,\n reduce((lookupsListMap, [fieldName, codeValuesMap]) => {\n const lookupFacet = lookupFacets.find(propEq('fieldName', fieldName));\n if (!lookupFacet) {\n return lookupsListMap;\n }\n const {attrType} = lookupFacet;\n const lookupCode = getAttrTypeLookupCode(attrType);\n lookupsListMap[lookupCode] = {\n type: lookupCode,\n codeValues: uniq([\n ...pathOr([], [lookupCode, 'codeValues'], lookupsListMap),\n ...Object.keys(codeValuesMap)\n ])\n };\n return lookupsListMap;\n }, {}),\n values\n )(facetResponse);\n};\n\nconst getUnresolvedLookupsListFromFacetResponse = (facetResponse, lookupFacets, resolvedLookups) => {\n const lookupsList = getLookupsListFromFacetResponse(facetResponse, lookupFacets);\n return getUnresolvedLookupsList(resolvedLookups, lookupsList);\n};\n\nconst reduceFacetsResponse = (result, neededFacets) =>\n Object.keys(result)\n .filter((fieldName) => getFacetByFieldName(fieldName, neededFacets))\n .reduce((acc, fieldName) => {\n const facet = getFacetByFieldName(fieldName, neededFacets);\n const newFieldName = facet.fieldName;\n acc[newFieldName] = result[fieldName];\n return acc;\n }, {});\n\nexport {getLookupsListFromFacetResponse, getUnresolvedLookupsListFromFacetResponse, reduceFacetsResponse};\n","import {filter, isEmpty, partition, pipe, prop, propEq, propOr} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {call, fork, put, select} from 'redux-saga/effects';\nimport {trackException} from '../actions/googleAnalyticsActions';\nimport {jsonRequest} from '../utils/network';\nimport {isLookupFacet, isMatchRuleFacet, isMLMatchRuleFacet} from '../services/search/collectFacets';\nimport {getAllowedEntityTypes} from '../selectors/ui';\nimport {getAcceptedFacetValues, getUnresolvedLookupsListFromFacet, prepareFacets} from '../services/search/facet';\nimport {getPrefixedLookupValues, resolveLookupsList} from './lookupsSaga';\nimport {buildFacetsRequest} from '../services/search/searchEngine';\nimport {getAttrTypeLookupCode, getEntityType, getLastUriPart, mergeLookupsLists, utils} from '@reltio/mdm-sdk';\nimport {callSearchRequestForCurrentTenant} from './searchSaga';\nimport {DEFAULT_FACET_PAGE_SIZE, ML_RULES_ONLY} from '../constants/constants';\nimport {getUnresolvedLookupsListFromFacetResponse, reduceFacetsResponse} from '../services/search/facetResponse';\n\nexport function* setDataForAttributes(facets, setDataAction, facetResponse) {\n if (isEmpty(facets)) {\n return;\n }\n const lookupsCodes = yield select(mdmModule.selectors.getLookups);\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const resultForAttributes = reduceFacetsResponse(facetResponse, facets);\n const allowedEntityTypes = yield select(getAllowedEntityTypes);\n yield put(setDataAction(prepareFacets(metadata, resultForAttributes, facets, lookupsCodes, {allowedEntityTypes})));\n}\nexport function* requestAttributesData(request, facets, setDataAction) {\n try {\n const facetResponse = yield call(callSearchRequestForCurrentTenant, jsonRequest, request.url, request.options);\n const [lookupFacets, otherFacets] = partition(isLookupFacet, facets);\n yield fork(setDataForAttributes, otherFacets, setDataAction, facetResponse);\n yield call(resolveLookupsForFacetedAttributes, lookupFacets, facetResponse);\n yield call(setDataForAttributes, lookupFacets, setDataAction, facetResponse);\n } catch (e) {\n yield put(trackException(e));\n }\n}\nexport function* requestMoreAttributesData(facet, allParams, setDataAction) {\n facet = {...facet, includeFilter: []};\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildFacetsRequest(\n [facet],\n allParams,\n [facet.fieldName],\n options,\n isMLMatchRuleFacet(facet) ? ML_RULES_ONLY : null\n );\n yield call(requestAttributesData, request, [facet], setDataAction);\n}\n\nconst filterByLabel = (filterText, objects = []) =>\n objects.filter(({label}) => utils.strings.search(label, filterText));\n\nconst buildIncludeFilterForSources = (sources, filterText) => {\n return filterByLabel(filterText, sources).map(({uri}) => getLastUriPart(uri));\n};\nconst buildIncludeFilterForMatchGroups = (matchGroups, filterText) => {\n return filterByLabel(filterText, matchGroups).map(prop('uri'));\n};\nconst buildIncludeFilterForRawData = (rawData, filterText) => {\n return filterByLabel(filterText, rawData).map(prop('value'));\n};\n\nexport function* updateFilteredAttribute(attribute, allParams, value, setDataAction) {\n const facet = {...attribute};\n const searchParams = [...allParams];\n if (isLookupFacet(facet)) {\n const lookupCode = getAttrTypeLookupCode(attribute.attrType);\n facet.includeFilter = yield call(\n getPrefixedLookupValues,\n lookupCode,\n value,\n propOr(DEFAULT_FACET_PAGE_SIZE, 'pageSize', facet),\n facet.pageNumber\n );\n } else if (facet.fieldName === 'sourceSystems') {\n const {sources} = yield select(mdmModule.selectors.getMetadata);\n facet.includeFilter = buildIncludeFilterForSources(sources, value);\n } else if (isMatchRuleFacet(facet)) {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const entityType = getEntityType(metadata, facet.entityTypeUri) || {};\n const rawData = pipe(propOr([], 'displayedItems'), filter(propEq('isRaw', true)))(attribute);\n\n facet.includeFilter = [\n ...buildIncludeFilterForMatchGroups(entityType.matchGroups, value),\n ...buildIncludeFilterForRawData(rawData, value)\n ];\n } else {\n facet.disableIncludeFilter = true;\n searchParams.push({\n values: [value],\n fieldName: attribute.fieldName,\n filter: 'containsWordStartingWith',\n forceInclude: true\n });\n }\n\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildFacetsRequest([facet], searchParams, [attribute.fieldName], options);\n yield call(requestFilteredAttributesData, request, attribute, facet.includeFilter, setDataAction);\n}\n\nexport function* requestFilteredAttributesData(request, attribute, acceptedValues, setDataAction) {\n try {\n const rawResult = yield call(callSearchRequestForCurrentTenant, jsonRequest, request.url, request.options);\n const lookupsCodes = yield select(mdmModule.selectors.getLookups);\n const result = reduceFacetsResponse(rawResult, [attribute]);\n if (acceptedValues) {\n const fieldName = attribute.fieldName;\n result[fieldName] = getAcceptedFacetValues(result[fieldName], acceptedValues);\n }\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const allowedEntityTypes = yield select(getAllowedEntityTypes);\n yield put(setDataAction(prepareFacets(metadata, result, [attribute], lookupsCodes, {allowedEntityTypes})));\n } catch (e) {\n yield put(trackException(e));\n }\n}\n\nexport function* resolveLookupsForFacetedAttributes(lookupFacets, facetsResponse) {\n const resolvedLookups = yield select(mdmModule.selectors.getLookups);\n const unresolvedLookupsFromFacets = getUnresolvedLookupsListFromFacet(lookupFacets, resolvedLookups);\n const unresolvedLookupsFromFacetResponse = getUnresolvedLookupsListFromFacetResponse(\n facetsResponse,\n lookupFacets,\n resolvedLookups\n );\n const unresolvedLookupsList = mergeLookupsLists(unresolvedLookupsFromFacets, unresolvedLookupsFromFacetResponse);\n if (unresolvedLookupsList.length) {\n yield call(resolveLookupsList, unresolvedLookupsList);\n }\n}\n","import {\n __,\n cond,\n equals,\n filter,\n reject,\n isNil,\n pick,\n pipe,\n prop,\n map,\n includes,\n T,\n F,\n toPairs,\n fromPairs,\n propEq\n} from 'ramda';\nimport {call, put, select, takeLatest} from 'redux-saga/effects';\nimport {changeMapValue, refreshDisplayedEntities, updateEntities} from '../actions/searchActions';\nimport {\n setEntityTypeTab,\n setSearchResultsColumns,\n updateTableViewTabs as updateTableViewTabsAction\n} from '../actions/uiActions';\nimport {\n getEntityTypesForTabs,\n getInitialColumnsByEntityTypes,\n isTableMode,\n collectSpecialColumns,\n collectColumnsByIds\n} from '../services/search/searchResults';\nimport {getSelectedEntityTypes} from '../selectors/facet';\nimport {\n getActiveEntityTypeTab,\n getAllowedEntityTypes,\n getEntityTypeTab,\n getPreviewPanelMode,\n getSearchResultsColumns,\n getSearchResultsMode,\n getShowAdvancedSearch,\n getTableViewTabs,\n getUiConfigDefaultTabs\n} from '../selectors/ui';\nimport {\n getAllSearchParams,\n getDataTenant,\n getDataTenantObject,\n getMapSearchValues,\n getPage,\n getRowsPerPage,\n getSearchResults,\n getTotal\n} from '../selectors/search';\nimport mdmModule, {ui as mdmModuleUI, search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {isAvailableEntityTypeForDataTenant, removeDtssPrefixFromEntityUri} from '@reltio/mdm-sdk';\nimport {entityTypeProcessing} from '../services/search/facet';\nimport {getEntityTypeFacetConfig} from '../services/search/collectFacets';\nimport {buildFacetsRequest} from '../services/search/searchEngine';\nimport {requestAttributesData} from './facetedAttributesSaga';\nimport {buildEntityTypeFacetLocalData} from './facetsSaga';\nimport {AdvancedSearch, UI} from '../constants/actionTypes';\nimport {getEntityTypesFromAllGroups} from '../selectors/advancedSearch';\nimport {PREVIEW_PANEL_MODES, ROWS_PER_PAGE_OPTIONS} from '../constants/constants';\n\nexport function* initSearchModule() {\n yield call(fillSearchResultsColumns);\n}\n\nexport function* getInitialSearchResultsColumns() {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const allowedEntityTypes = yield select(getAllowedEntityTypes);\n const defaultTabs = yield select(getUiConfigDefaultTabs);\n return getInitialColumnsByEntityTypes(metadata, allowedEntityTypes, defaultTabs);\n}\n\nexport function* fillSearchResultsColumns() {\n const columnsByEntityTypes = yield call(getInitialSearchResultsColumns);\n yield put(setSearchResultsColumns(columnsByEntityTypes));\n}\n\nconst isAllowedTab =\n (allowedValues) =>\n ({value}) =>\n !allowedValues.length || allowedValues.includes(value);\n\nexport function* updateTableViewTabsForAdvancedSearch(allSearchParams) {\n allSearchParams = allSearchParams || (yield select(getAllSearchParams));\n const mode = yield select(getSearchResultsMode);\n if (isTableMode(mode)) {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const entityTypesFromAllGroups = yield select(getEntityTypesFromAllGroups);\n const facet = getEntityTypeFacetConfig(metadata);\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildFacetsRequest([facet], allSearchParams, [facet.fieldName], options);\n const updateAction = ({type: tabs = []}) => {\n const filteredTabs = tabs.filter(isAllowedTab(entityTypesFromAllGroups));\n return updateTableViewTabsAction(filteredTabs);\n };\n yield call(requestAttributesData, request, [facet], updateAction);\n } else {\n yield put(updateTableViewTabsAction([]));\n }\n}\n\nexport function* buildTableViewTabsLocalDataForAdvancedSearch() {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const allowedEntityTypes = yield select(getAllowedEntityTypes);\n const entityTypesFromAllGroups = yield select(getEntityTypesFromAllGroups);\n return entityTypeProcessing(metadata, {}, allowedEntityTypes).filter(isAllowedTab(entityTypesFromAllGroups));\n}\n\nexport function* verifySearchResultsColumns() {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const initialColumns = yield call(getInitialSearchResultsColumns);\n const actualColumns = yield select(getSearchResultsColumns);\n const whiteListColumns = collectSpecialColumns().map(prop('id'));\n const newActualColumns = pipe(\n map(\n filter(\n pipe(\n prop('id'),\n cond([\n [includes('.'), T],\n [includes(__, whiteListColumns), T],\n [T, F]\n ])\n )\n )\n ),\n toPairs,\n map(([entityTypeUri, columns]) => {\n return [\n entityTypeUri,\n collectColumnsByIds(metadata, entityTypeUri, map(prop('id'), columns)).map((column, i) => {\n const actualColumn = columns.find(propEq('id', column.id));\n const {size, autoResize = i !== 0 && !size} = actualColumn || {};\n return reject(isNil, {...column, size, autoResize});\n })\n ];\n }),\n fromPairs\n )(actualColumns);\n const isFiltered = !equals(actualColumns, newActualColumns);\n const initialEntityTypesUris = Object.keys(initialColumns);\n const actualEntityTypesUris = Object.keys(newActualColumns);\n\n if (isFiltered || !equals(new Set(initialEntityTypesUris), new Set(actualEntityTypesUris))) {\n yield put(\n setSearchResultsColumns({\n ...initialColumns,\n ...pick(initialEntityTypesUris, newActualColumns)\n })\n );\n }\n}\n\nexport function* verifyEntityTypeTab() {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const selectedEntityTypes = yield select(getSelectedEntityTypes);\n const isAdvancedSearchOpen = yield select(getShowAdvancedSearch);\n const tableViewTabsData = isAdvancedSearchOpen\n ? yield call(buildTableViewTabsLocalDataForAdvancedSearch)\n : yield call(buildEntityTypeFacetLocalData);\n const availableEntityTypeTabs = getEntityTypesForTabs(metadata, tableViewTabsData, selectedEntityTypes).map(\n prop('value')\n );\n const entityTypeTab = yield select(getEntityTypeTab);\n if (!availableEntityTypeTabs.includes(entityTypeTab)) {\n yield put(setEntityTypeTab(availableEntityTypeTabs[0], true));\n }\n}\n\nexport function* applyEntityTypeTabChanges(action = {}) {\n const {silent} = action.payload || {};\n if (!silent) {\n const entityTypeUri = yield select(getActiveEntityTypeTab);\n const dataTenantObject = yield select(getDataTenantObject);\n if (isAvailableEntityTypeForDataTenant(dataTenantObject, entityTypeUri)) {\n const results = yield select(getSearchResults, {entityTypeUri});\n if (isNil(results)) {\n yield put(refreshDisplayedEntities());\n }\n } else {\n yield put(updateEntities([], entityTypeUri));\n }\n }\n}\n\nexport function* applySearchResultsModeChanges(action) {\n const mode = action.payload;\n yield call(applyEntityTypeTabChanges, action);\n const tableViewTabs = yield select(getTableViewTabs);\n if (isTableMode(mode) && tableViewTabs.length === 0) {\n const tableViewTabsData = yield call(buildTableViewTabsLocalDataForAdvancedSearch);\n yield put(updateTableViewTabsAction(tableViewTabsData));\n yield call(updateTableViewTabsForAdvancedSearch);\n }\n}\nexport function* applyPreviewPanelModeChanges() {\n const mode = yield select(getPreviewPanelMode);\n const mapValues = yield select(getMapSearchValues);\n if (mode !== PREVIEW_PANEL_MODES.MAP && mapValues.length) {\n yield put(changeMapValue(null));\n }\n}\n\nexport function* initSearchNavigation(action) {\n const uri = removeDtssPrefixFromEntityUri(action.payload.uri);\n const entityTypeUri = yield select(getActiveEntityTypeTab);\n const searchResults = yield select(getSearchResults, {entityTypeUri});\n const uris = (searchResults || []).map(prop('uri'));\n const page = (yield select(getPage, {entityTypeUri})) || 0;\n const rowsPerPage = (yield select(getRowsPerPage, {entityTypeUri})) || ROWS_PER_PAGE_OPTIONS[0];\n const index = uris.indexOf(uri) + page * rowsPerPage;\n const total = yield select(getTotal, {entityTypeUri});\n const tenant = yield select(mdmModule.selectors.getTenant);\n const dataTenant = yield select(getDataTenant);\n yield put(\n mdmModuleSearch.actions.setSearchNavigationData({\n uri,\n index,\n total,\n tenant: dataTenant || tenant,\n cache: uris\n })\n );\n}\n\nexport function* initSearchModuleSaga() {\n yield takeLatest(UI.INIT_SEARCH_MODULE, initSearchModule);\n}\n\nexport function* applyEntityTypeTabChangesSaga() {\n yield takeLatest(UI.SET_ENTITY_TYPE_TAB, applyEntityTypeTabChanges);\n}\n\nexport function* applySearchResultsModeChangesSaga() {\n yield takeLatest(UI.SET_SEARCH_RESULTS_MODE, applySearchResultsModeChanges);\n}\n\nexport function* verifyEntityTypeTabSaga() {\n yield takeLatest(\n [AdvancedSearch.SET_GROUP_ENTITY_TYPES, AdvancedSearch.VERIFY_GROUP_ENTITY_TYPES, AdvancedSearch.DELETE_GROUP],\n verifyEntityTypeTab\n );\n}\n\nexport function* applyPreviewPanelModeChangesSaga() {\n yield takeLatest(UI.SET_PREVIEW_PANEL_MODE, applyPreviewPanelModeChanges);\n}\n\nexport function* initSearchNavigationSaga() {\n yield takeLatest(mdmModuleUI.constants.OPEN_ENTITY, initSearchNavigation);\n}\n\nconst sagas = [\n initSearchModuleSaga,\n applyEntityTypeTabChangesSaga,\n applySearchResultsModeChangesSaga,\n verifyEntityTypeTabSaga,\n applyPreviewPanelModeChangesSaga,\n initSearchNavigationSaga\n];\nexport default sagas;\n","import {put} from 'redux-saga/effects';\nimport {trackException} from '../actions/googleAnalyticsActions';\nimport {showServerError} from '../utils/error';\n\nexport function* handleErrors(e) {\n yield put(trackException(e));\n showServerError(e);\n}\n","import {actionChannel, all, call, put, select, take, takeLatest} from 'redux-saga/effects';\nimport {allPass, is, pathSatisfies, prop, propEq, propOr, propSatisfies} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport mdmModule, {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {\n buildBasicFilterString,\n createSavedSearch,\n deleteSavedSearch,\n FilterOptions,\n getSavedSearches,\n isDateFilterOption,\n markSavedSearchAsFavorite,\n markSavedSearchAsPublic,\n replacePlaceholdersInQuery,\n updateSavedSearch\n} from '@reltio/mdm-sdk';\nimport {\n changeSavedSearchName,\n deleteSavedSearchesItems as deleteSavedSearchesItemsAction,\n markSavedSearchAsFavorite as markSavedSearchAsFavoriteAction,\n markSavedSearchAsGlobalFilter,\n markSavedSearchAsPublic as markSavedSearchAsPublicAction,\n setCurrentSavedSearch,\n setSavedSearchChangeIndicator,\n setSavedSearchesItems,\n setSavedSearchesLoading,\n setSavedSearchesTotal,\n setSavedSearchItemTotal\n} from '../actions/savedSearchesActions';\nimport {showInfoNotification, showSavedSearchesDialog, showSaveSearchDialog} from '../actions/uiActions';\n\nimport {\n getSavedSearchesFavoriteOnly,\n getSavedSearchesFindPublic,\n getSavedSearchesItemByUri,\n getSavedSearchesPage,\n getSavedSearchesPostSavingAction,\n getSavedSearchesRowsPerPage,\n getSavedSearchesSearchValue,\n getSavedSearchesSorting,\n getSavedSearchUIState,\n getSelectedSavedSearchesItems\n} from '../selectors/savedSearches';\nimport {getAllSearchParams, getDataTenant} from '../selectors/search';\nimport {handleErrors} from './commonSaga';\nimport {showLoadSavedSearchErrors} from '../utils/error';\nimport {buildTotalOptionsForQuery, buildTotalUrlQuery} from '../services/search/searchEngine';\nimport {jsonRequest} from '../utils/network';\nimport {getApiCompatibleSavedSearch, parseUIState, prepareSavedSearchForSave} from '../services/search/savedSearches';\nimport {SavedSearches, Search} from '../constants/actionTypes';\nimport {\n ENTITIES_TOTAL_URL,\n SAVED_SEARCHES_SHARING_OPTIONS_VALUES,\n SAVED_SEARCHES_SORT_BY_VALUES\n} from '../constants/constants';\nimport {getSerializedSearchState} from '../selectors/serializedState';\n\nexport function* loadSavedSearches() {\n yield put(setSavedSearchesLoading(true));\n try {\n const owner = yield select(mdmModule.selectors.getUserName);\n const setIsOwnSearch = (search) => ({...search, isOwnSearch: owner === search.owner});\n\n const allParams = yield call(getAllSavedSearchesParams);\n const {result: savedSearches = [], total} = yield call(getSavedSearches, allParams);\n yield put(setSavedSearchesTotal(total));\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const dataTenants = yield select(mdmModule.selectors.getDataTenants);\n const canUserReadWorkflowDataTask = yield select(mdmModule.selectors.getCanUserReadWorkflowDataTask);\n\n yield put(\n setSavedSearchesItems(\n savedSearches.map(setIsOwnSearch).map(parseUIState(metadata, dataTenants, canUserReadWorkflowDataTask))\n )\n );\n yield put(setSavedSearchesLoading(false));\n\n yield call(getSavedSearchesTotals, savedSearches);\n } catch (e) {\n yield put(setSavedSearchesLoading(false));\n }\n}\n\nexport function* getAllSavedSearchesParams() {\n const rowsPerPage = yield select(getSavedSearchesRowsPerPage);\n const page = yield select(getSavedSearchesPage);\n const searchValue = yield select(getSavedSearchesSearchValue);\n const favoriteOnly = yield select(getSavedSearchesFavoriteOnly);\n const findPublic = yield select(getSavedSearchesFindPublic);\n const {field, order: sortOrder} = yield select(getSavedSearchesSorting);\n return {\n offset: rowsPerPage * page,\n max: rowsPerPage,\n containsWordStartingWith: searchValue,\n favoriteOnly,\n findPublic,\n countResults: false,\n sortBy: SAVED_SEARCHES_SORT_BY_VALUES[field],\n sortOrder\n };\n}\n\nfunction* getSavedSearchTotal(search) {\n try {\n const {total} = yield call(\n jsonRequest,\n `/${ENTITIES_TOTAL_URL}`,\n buildTotalOptionsForQuery(replacePlaceholdersInQuery(search.query))\n );\n yield put(setSavedSearchItemTotal(search.uri, total));\n } catch (e) {\n yield call(handleErrors, e);\n }\n}\n\nexport function* getSavedSearchesTotals(savedSearches) {\n return yield all(savedSearches.map((search) => call(getSavedSearchTotal, search)));\n}\n\nexport function* markAsPublic(action) {\n const {uri, isPublic} = action.payload;\n const savedSearch = yield select(getSavedSearchesItemByUri, uri);\n if (savedSearch) {\n yield put(setSavedSearchesLoading(true));\n try {\n yield call(markSavedSearchAsPublic, prepareSavedSearchForSave(savedSearch), isPublic);\n yield put(markSavedSearchAsPublicAction(uri, isPublic));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setSavedSearchesLoading(false));\n }\n}\n\nexport function* markAsFavorite(action) {\n const {uri, isFavorite} = action.payload;\n const savedSearch = yield select(getSavedSearchesItemByUri, uri);\n if (savedSearch) {\n yield put(setSavedSearchesLoading(true));\n try {\n yield call(markSavedSearchAsFavorite, prepareSavedSearchForSave(savedSearch), isFavorite);\n yield put(markSavedSearchAsFavoriteAction(uri, isFavorite));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setSavedSearchesLoading(false));\n }\n}\n\nexport function* markAsGlobalFilter(action) {\n const {uri, isGlobalFilter} = action.payload;\n const savedSearch = yield select(getSavedSearchesItemByUri, uri);\n if (savedSearch) {\n const preparedSavedSearch = getApiCompatibleSavedSearch(savedSearch);\n yield put(\n markSavedSearchAsGlobalFilter(\n {\n ...preparedSavedSearch,\n query: replacePlaceholdersInQuery(propOr('', 'query', preparedSavedSearch))\n },\n isGlobalFilter\n )\n ); // handled on qx side\n }\n}\n\nexport function* changeItemName(action) {\n const {uri, name} = action.payload;\n const savedSearch = yield select(getSavedSearchesItemByUri, uri);\n if (savedSearch && name !== savedSearch.name) {\n yield put(setSavedSearchesLoading(true));\n try {\n yield call(updateSavedSearch, {...prepareSavedSearchForSave(savedSearch), name});\n yield put(changeSavedSearchName(uri, name));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setSavedSearchesLoading(false));\n }\n}\n\nexport function* deleteSelectedItems() {\n const selectedItems = yield select(getSelectedSavedSearchesItems);\n yield put(setSavedSearchesLoading(true));\n try {\n yield all(selectedItems.map((item) => call(deleteSavedSearch, item)));\n yield put(deleteSavedSearchesItemsAction(selectedItems.map(prop('uri'))));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setSavedSearchesLoading(false));\n}\n\nexport function* deleteItem(action) {\n const uri = action.payload;\n yield put(setSavedSearchesLoading(true));\n try {\n yield call(deleteSavedSearch, {uri});\n yield put(deleteSavedSearchesItemsAction([uri]));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setSavedSearchesLoading(false));\n}\n\nexport function* getSearchData(withPlaceholders = false, keepSearchResultsColumns = false) {\n const dateFiltersRules = withPlaceholders\n ? [\n [\n allPass([\n propSatisfies(isDateFilterOption, 'filter'),\n propEq('filter', FilterOptions.WITHIN),\n pathSatisfies(is(String), ['values', 0])\n ]),\n ({fieldName, values}) =>\n buildBasicFilterString({\n filter: FilterOptions.IN_RANGE,\n fieldName,\n values: [['$' + `{${values}}`, '${now}']]\n })\n ]\n ]\n : [];\n const allParams = yield select(getAllSearchParams, dateFiltersRules);\n const stringifiedSearchOptions = yield select(mdmModule.selectors.getStringifiedSearchOptions);\n const url = buildTotalUrlQuery(allParams, [], {searchOptions: stringifiedSearchOptions});\n const uiState = yield select(getSerializedSearchState, keepSearchResultsColumns);\n\n const savedSearch = {\n query: url,\n uiState\n };\n\n return savedSearch;\n}\n\nexport function* create({payload: {name, share}}) {\n const {query, uiState} = yield call(getSearchData, true);\n const savedSearch = {\n isFavorite: false,\n isPublic: share === SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public,\n name,\n query,\n uiState\n };\n const postSavingAction = yield select(getSavedSearchesPostSavingAction);\n yield put(showSaveSearchDialog(false));\n try {\n yield put(showInfoNotification(i18n.text('Saving search...')));\n const result = yield call(createSavedSearch, [savedSearch]);\n if (result[0].successful) {\n yield put(setCurrentSavedSearch(result[0].object));\n yield put(setSavedSearchChangeIndicator(false));\n yield put(showInfoNotification(i18n.text('Search saved successfully')));\n if (postSavingAction) {\n yield put(postSavingAction);\n }\n } else {\n yield call(handleErrors, result);\n }\n } catch (e) {\n yield call(handleErrors, e);\n }\n}\n\nexport function* applySavedSearch(action) {\n const {uri, debounceTime} = action.payload;\n yield put(showSavedSearchesDialog(false));\n const search = yield select(getSavedSearchesItemByUri, uri);\n const searchState = getSavedSearchUIState(search) || {};\n const {errors} = searchState;\n if (errors && errors.length) {\n showLoadSavedSearchErrors(errors);\n return;\n }\n yield put(setCurrentSavedSearch(search));\n if (yield select(getDataTenant)) {\n searchState.currentTenant = yield select(mdmModule.selectors.getTenant);\n }\n yield put(mdmModuleSearch.actions.updateState({...searchState, debounceTime}));\n // wait until updateSearchStatePostprocessing finishes\n yield take(Search.STATE_UPDATED);\n}\n\nexport function* createSavedSearchSaga() {\n yield takeLatest([SavedSearches.CREATE], create);\n}\n\nexport function* loadSavedSearchesSaga() {\n yield takeLatest(\n [\n SavedSearches.LOAD,\n SavedSearches.SET_PAGE,\n SavedSearches.SET_ROWS_PER_PAGE,\n SavedSearches.SET_SEARCH_VALUE,\n SavedSearches.SET_FILTERS,\n SavedSearches.TOGGLE_SORT\n ],\n loadSavedSearches\n );\n}\n\nexport function* updateSavedSearchQueueSaga() {\n const patternHandlerMap = {\n [SavedSearches.MARK_PUBLIC_REQUEST]: markAsPublic,\n [SavedSearches.MARK_FAVORITE_REQUEST]: markAsFavorite,\n [SavedSearches.DELETE_ITEM_REQUEST]: deleteItem,\n [SavedSearches.DELETE_SELECTED_ITEMS_REQUEST]: deleteSelectedItems,\n [SavedSearches.CHANGE_ITEM_NAME_REQUEST]: changeItemName,\n [SavedSearches.MARK_GLOBAL_FILTER_REQUEST]: markAsGlobalFilter\n };\n const updateQueueChannel = yield actionChannel(Object.keys(patternHandlerMap));\n while (true) {\n const action = yield take(updateQueueChannel);\n yield call(patternHandlerMap[action.type], action);\n }\n}\n\nexport function* applySavedSearchSaga() {\n yield takeLatest([SavedSearches.APPLY_ITEM], applySavedSearch);\n}\n\nconst sagas = [loadSavedSearchesSaga, updateSavedSearchQueueSaga, createSavedSearchSaga, applySavedSearchSaga];\n\nexport default sagas;\n","import {call, put, StrictEffect} from 'redux-saga/effects';\nimport {trackException} from '../actions/googleAnalyticsActions';\nimport {createActivity, ACTIVITY_TYPES} from '@reltio/mdm-sdk';\n\nexport function* sendActivity(activity: Record<string, unknown>): Generator<StrictEffect, void, unknown> {\n try {\n yield call(createActivity, {\n label: ACTIVITY_TYPES.userSearch,\n description: JSON.stringify({\n activity,\n version: '2.0'\n })\n });\n } catch (e) {\n yield put(trackException(e));\n }\n}\n","import {equals, identity, isEmpty, isNil, path, pathOr, reject, uniq} from 'ramda';\nimport {call, delay, fork, put, select, take, takeLatest} from 'redux-saga/effects';\n\nimport {jsonRequest} from '../utils/network';\nimport {\n buildEntitiesByUrisRequest,\n buildEntitiesRequestOptions,\n buildEntitiesUrl,\n buildQuery,\n buildTotalParams,\n buildTotalUrlQuery,\n businessCardAttributeURIsSelectRule,\n callSearchRequestForTenant,\n collectAdditionalSelect,\n geoLocationAttributesSelectRule\n} from '../services/search/searchEngine';\nimport {needFacetsCleanUp} from '../services/search/facet';\nimport {\n changeEntitiesLoading,\n changeMapValue,\n clearSearchResults,\n resetPage,\n searchStateUpdated,\n updateEntities,\n updateSearchUrl,\n updateTotal as updateTotalAction\n} from '../actions/searchActions';\nimport {changeFacetValues, clearAllFacetValues} from '../actions/facets';\nimport {\n getAllSearchParams,\n getDataTenant,\n getMapSearchValues,\n getPage,\n getRowsPerPage,\n getSearchResults,\n getSortField,\n getSortOrder\n} from '../selectors/search';\nimport {showServerError, showUpdateSearchStateErrors} from '../utils/error';\nimport {updateRecommendedFacetsList} from './recommendationsSaga';\nimport {trackException, trackTiming} from '../actions/googleAnalyticsActions';\nimport {cleanUpFacets, updateFacets, verifyEntityTypeFacet} from './facetsSaga';\nimport {updateTableViewTabsForAdvancedSearch, verifyEntityTypeTab, verifySearchResultsColumns} from './uiSaga';\nimport {\n getActiveEntityTypeTab,\n getEntityTypeTab,\n getSearchResultsColumnsForEntityType,\n getShowAdvancedSearch,\n getUiConfigShowSearchByOv,\n getUiMapSearchEnabledConfig\n} from '../selectors/ui';\nimport {buildSelectFromColumns, needRequestAfterColumnsChanges} from '../services/search/searchResults';\nimport mdmModule, {search as mdmModuleSearch, ui as mdmModuleUI} from '@reltio/mdm-module';\nimport {AdvancedSearch, Facets, Search, UI} from '../constants/actionTypes';\nimport {getSearchData} from './savedSearchesSaga';\nimport {sendActivity} from './activitySaga';\nimport {getHasUnresolvedLookupsInQueryGroups} from '../selectors/advancedSearch';\nimport {enrichEntityWithDataTenant} from '@reltio/mdm-sdk';\nimport {ENTITIES_POST_SEARCH_URL, ENTITIES_TOTAL_URL} from '../constants/constants';\n\nexport function* search() {\n const allParams = yield select(getAllSearchParams);\n yield call(clearCachedEntities);\n const activeEntityTypeTab = yield select(getActiveEntityTypeTab);\n yield put(resetPage(activeEntityTypeTab));\n\n yield fork(updateFacets, allParams);\n yield fork(updateTotal, allParams);\n const isAdvancedSearchOpen = yield select(getShowAdvancedSearch);\n if (isAdvancedSearchOpen) {\n yield fork(updateTableViewTabsForAdvancedSearch, allParams);\n } else {\n yield fork(updateRecommendedFacetsList);\n }\n}\n\nexport function* applyPagination(action) {\n const {debounceTime} = action.payload || {};\n if (debounceTime) {\n yield delay(debounceTime);\n }\n const allParams = yield select(getAllSearchParams);\n yield fork(searchEntities, allParams);\n}\n\nexport function* clearCachedEntities() {\n const activeEntityTypeTab = yield select(getActiveEntityTypeTab);\n yield put(clearSearchResults(activeEntityTypeTab));\n}\n\nexport function* searchEntities(allParams) {\n const startTime = Date.now();\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const entityTypeUri = yield select(getActiveEntityTypeTab);\n const page = yield select(getPage, {entityTypeUri});\n const rowsPerPage = yield select(getRowsPerPage, {entityTypeUri});\n const sortOrder = yield select(getSortOrder, {entityTypeUri});\n const sortField = yield select(getSortField, {entityTypeUri});\n let searchParams = allParams;\n let selectParam = [];\n let forceOvOnly;\n if (entityTypeUri) {\n const entityTypeFilter = {\n fieldName: 'type',\n filter: 'equals',\n values: [entityTypeUri]\n };\n searchParams = allParams.filter((param) => param.fieldName !== 'type').concat(entityTypeFilter);\n const columnsSelect = yield call(collectColumnsSelect, entityTypeUri);\n selectParam = uniq(\n selectParam\n .concat(columnsSelect)\n .concat(collectAdditionalSelect(metadata, searchParams, [geoLocationAttributesSelectRule]))\n );\n forceOvOnly = true;\n } else {\n selectParam = uniq(\n selectParam.concat(\n collectAdditionalSelect(metadata, searchParams, [\n businessCardAttributeURIsSelectRule,\n geoLocationAttributesSelectRule\n ])\n )\n );\n forceOvOnly = false;\n }\n const globalOptions = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const options = {\n page,\n rowsPerPage,\n sortOrder,\n sortField,\n forceOvOnly,\n ...globalOptions,\n select: selectParam\n };\n\n const query = buildQuery(searchParams, options); // TODO: check if options needed!\n const dataTenant = yield select(getDataTenant);\n yield put(changeEntitiesLoading(true));\n try {\n let result;\n if (dataTenant) {\n const url = buildEntitiesUrl(searchParams, options);\n result = yield call(callSearchRequestForCurrentTenant, jsonRequest, url);\n } else {\n const entitiesOptions = buildEntitiesRequestOptions(searchParams, options);\n result = yield call(\n callSearchRequestForCurrentTenant,\n jsonRequest,\n ENTITIES_POST_SEARCH_URL,\n entitiesOptions\n );\n }\n\n if (!Array.isArray(result)) {\n result = [];\n }\n yield call(updateSearchNavigation, reject(isNil, {query, sortField, sortOrder, dataTenant}));\n result = yield call(enrichEntitiesWithDataTenant, result);\n yield put(updateEntities(result, entityTypeUri));\n } catch (e) {\n yield put(updateEntities([], entityTypeUri));\n yield put(trackException(e));\n }\n yield put(changeEntitiesLoading(false));\n yield put(trackTiming('searchEntities', startTime, Date.now()));\n}\n\nexport function* updateSearchNavigation(data) {\n yield put(updateSearchUrl(data.query)); //todo remove after migration from qx profile perspective\n const prevSearchProviderData = yield select(mdmModule.selectors.getSearchProviderData);\n if (!equals(prevSearchProviderData?.data, data)) {\n yield put(mdmModuleSearch.actions.setSearchNavigationData(null));\n }\n yield put(\n mdmModuleSearch.actions.setSearchProviderData({\n type: 'search',\n data\n })\n );\n}\n\nexport function* applySearchResultsColumnsChanges(action) {\n const {columns, prevColumns} = action.payload;\n if (needRequestAfterColumnsChanges(columns, prevColumns)) {\n const entityTypeUri = yield select(getEntityTypeTab);\n const entities = yield select(getSearchResults, {entityTypeUri});\n const entitiesUris = entities.map((entity) => entity.uri);\n const columnsSelect = yield call(collectColumnsSelect, entityTypeUri);\n const searchParams = yield select(getAllSearchParams);\n const globalOptions = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildEntitiesByUrisRequest(entitiesUris, searchParams, {\n select: columnsSelect,\n ...globalOptions\n });\n yield put(changeEntitiesLoading(true));\n try {\n let result = yield call(callSearchRequestForCurrentTenant, jsonRequest, request.url, request.options);\n result = yield call(enrichEntitiesWithDataTenant, result);\n yield put(updateEntities(result, entityTypeUri));\n } catch (e) {\n yield put(updateEntities([], entityTypeUri));\n yield put(trackException(e));\n showServerError(e);\n }\n yield put(changeEntitiesLoading(false));\n }\n}\n\nexport function* syncSearchResults() {\n const entityTypeUri = yield select(getActiveEntityTypeTab);\n const results = yield select(getSearchResults, {entityTypeUri});\n if (results) {\n yield put(mdmModuleSearch.actions.searchResultsSet(results));\n }\n}\n\nexport function* showMoreForEntityType(action) {\n const {entityTypeUri, keywordValue} = action.payload;\n yield put(clearAllFacetValues(true));\n yield put(changeFacetValues('type', [entityTypeUri], true));\n yield put(\n mdmModuleSearch.actions.keywordUpdated({\n value: keywordValue,\n isRawFilter: false\n })\n );\n}\n\nexport function* collectColumnsSelect(entityTypeUri) {\n const entityTypeColumns = yield select(getSearchResultsColumnsForEntityType, entityTypeUri);\n return buildSelectFromColumns(entityTypeColumns);\n}\n\nexport function* updateTotal(allParams) {\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const totalParams = buildTotalParams(allParams, [], options);\n try {\n const result = yield call(callSearchRequestForCurrentTenant, jsonRequest, ENTITIES_TOTAL_URL, {\n method: 'POST',\n body: JSON.stringify(totalParams)\n });\n yield put(updateTotalAction(result.total));\n } catch (e) {\n yield put(updateTotalAction(0));\n yield put(trackException(e));\n }\n}\n\nexport function* sendSearchActivity() {\n yield call(waitBeforeSendSearchActivity);\n const searchData = yield call(getSearchData, true);\n if (!isEmpty(searchData.query)) {\n yield call(sendActivity, searchData);\n }\n}\nconst resolveLookupPattern = [AdvancedSearch.ATTRIBUTE_SET_VALUES];\nexport function* waitBeforeSendSearchActivity() {\n while (true) {\n const hasUnresolvedLookups = yield select(getHasUnresolvedLookupsInQueryGroups);\n if (!hasUnresolvedLookups) {\n break;\n }\n yield take(resolveLookupPattern);\n }\n}\nexport function* actionDrivenSearch(action) {\n const {debounceTime} = action.payload || {};\n if (debounceTime) {\n yield delay(debounceTime);\n }\n if (needFacetsCleanUp(action)) {\n yield call(cleanUpFacets);\n }\n\n if (pathOr(false, ['payload', 'silent'], action)) {\n return;\n }\n yield call(search);\n yield call(sendSearchActivity);\n}\n\nexport function* updateSearchStatePostprocessing(action) {\n const updatedSearchOptions = path(['payload', 'searchOptions'], action);\n const errors = path(['payload', 'errors'], action);\n const debounceTime = pathOr(0, ['payload', 'debounceTime'], action);\n if (errors && errors.length) {\n showUpdateSearchStateErrors(errors);\n }\n const showSearchByOv =\n (yield select(mdmModule.selectors.getShowSearchByOv)) ?? (yield select(getUiConfigShowSearchByOv));\n\n if (!showSearchByOv && updatedSearchOptions && updatedSearchOptions.searchByOv) {\n yield put(\n mdmModuleSearch.actions.updateSearchOptions({\n searchByOv: false,\n ovOnly: false\n })\n );\n }\n yield call(verifyEntityTypeFacet);\n yield call(verifySearchResultsColumns);\n yield call(verifyEntityTypeTab);\n yield call(verifyMapSearch);\n yield put(searchStateUpdated(debounceTime));\n}\n\nexport function* verifyMapSearch() {\n const enabled = yield select(getUiMapSearchEnabledConfig);\n const mapSearchValues = yield select(getMapSearchValues);\n if (!enabled && mapSearchValues.length) {\n yield put(changeMapValue(null, null, true));\n }\n}\n\nexport function* getSearchQuery(queryParam) {\n const allParams = yield select(getAllSearchParams);\n const {activityFilter, globalFilter} = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const searchOptions = yield select(mdmModule.selectors.getSearchOptions);\n const searchByOv = searchOptions && searchOptions.searchByOv;\n const url = buildTotalUrlQuery(allParams, [], {globalFilter});\n const params = [url];\n if (searchByOv) {\n params.push('options=searchByOv');\n }\n if (activityFilter) {\n params.push(`activeness=${activityFilter}`);\n }\n if (queryParam) {\n params.push(queryParam);\n }\n return params.filter(identity).join('&');\n}\n\nexport function* exportSearchResults(action) {\n const {consoleExportApp} = action.payload || {};\n const queryParam = consoleExportApp.query ? consoleExportApp.query : null;\n const query = yield call(getSearchQuery, queryParam);\n yield put(mdmModuleUI.actions.openConsoleApp(consoleExportApp.name, consoleExportApp.path || 'entities', query));\n}\n\nexport function* openDataLoader() {\n yield put(mdmModuleUI.actions.openConsoleApp('Data Loader', 'projects'));\n}\n\nexport function* enrichEntitiesWithDataTenant(entities) {\n const dataTenant = yield select(getDataTenant);\n return entities && dataTenant ? entities.map(enrichEntityWithDataTenant(dataTenant)) : entities;\n}\n\nexport function* callSearchRequestForCurrentTenant(searchRequest, url, options) {\n const customerTenant = yield select(mdmModule.selectors.getTenant);\n const dataTenant = yield select(getDataTenant);\n const dtssPath = yield select(mdmModule.selectors.getDtssPath);\n\n return yield call(callSearchRequestForTenant, {\n searchRequest,\n url,\n options,\n customerTenant,\n dataTenant,\n dtssPath\n });\n}\n\nexport const searchSagaPattern = [\n Facets.CHANGE_VALUES,\n mdmModuleSearch.constants.KEYWORD_UPDATED,\n Search.REFRESH,\n Facets.CLEAR_ALL_VALUES,\n Search.MAP_CHANGE_VALUE,\n Search.CLEAR_ALL,\n Search.STATE_UPDATED,\n AdvancedSearch.UPDATE,\n mdmModuleSearch.constants.SEARCH_OPTIONS_UPDATED,\n mdmModuleSearch.constants.ACTIVITY_FILTER_UPDATED,\n mdmModuleSearch.constants.GLOBAL_FILTER_UPDATED,\n Search.CHANGE_CURRENT_TENANT\n];\n\nexport function* searchSaga() {\n yield takeLatest(searchSagaPattern, actionDrivenSearch);\n}\n\nexport function* updateSearchStatePostprocessingSaga() {\n yield takeLatest(mdmModuleSearch.constants.UPDATE_STATE, updateSearchStatePostprocessing);\n}\n\nexport function* paginationSaga() {\n yield takeLatest(\n [\n Search.CHANGE_PAGE,\n Search.RESET_PAGE,\n Search.CHANGE_ROWS_PER_PAGE,\n Search.REFRESH_DISPLAYED_ENTITIES,\n Search.CHANGE_SORT\n ],\n applyPagination\n );\n}\n\nexport function* applySearchResultsColumnsChangesSaga() {\n yield takeLatest(UI.CHANGE_SEARCH_RESULTS_COLUMNS, applySearchResultsColumnsChanges);\n}\n\nexport function* exportResultsSaga() {\n yield takeLatest(Search.EXPORT_RESULTS, exportSearchResults);\n}\n\nexport function* openDataLoaderSaga() {\n yield takeLatest(Search.OPEN_DATA_LOADER, openDataLoader);\n}\n\nexport function* syncSearchResultsSaga() {\n yield takeLatest([Search.UPDATE_ENTITIES, UI.SET_ENTITY_TYPE_TAB, UI.SET_SEARCH_RESULTS_MODE], syncSearchResults);\n}\n\nexport function* showMoreForEntityTypeSaga() {\n yield takeLatest(Search.SHOW_MORE_RESULTS_FOR_ENTITY_TYPE, showMoreForEntityType);\n}\n\nconst sagas = [\n searchSaga,\n paginationSaga,\n applySearchResultsColumnsChangesSaga,\n syncSearchResultsSaga,\n showMoreForEntityTypeSaga,\n updateSearchStatePostprocessingSaga,\n exportResultsSaga,\n openDataLoaderSaga\n];\nexport default sagas;\n","import {isNil} from 'ramda';\nimport {call, put, select} from 'redux-saga/effects';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {updateFacetsData} from '../actions/facets';\nimport {trackException, trackTiming} from '../actions/googleAnalyticsActions';\nimport {isPotentialMatchesFacet} from '../services/search/collectFacets';\nimport {fixNaNValue, getDefaultRangeByType, prepareFacets, prepareStatsFacet} from '../services/search/facet';\nimport {buildHistogramUrl, buildStatsUrl} from '../services/search/searchEngine';\nimport {jsonRequest} from '../utils/network';\nimport {getNumbersMath} from '../utils/general';\nimport {callSearchRequestForCurrentTenant} from './searchSaga';\nimport {createRangeServiceFor} from '../services/search/rangeFacet';\nimport {reduceFacetsResponse} from '../services/search/facetResponse';\n\nexport function* updateRangeFacet(facet, allParams) {\n const startTime = Date.now();\n try {\n // get min, max without filters\n const [min, max] = yield call(getRangeBounds, facet, []);\n\n if (isNil(min) || isNil(max)) {\n yield put(updateFacetsData({[facet.fieldName]: []}));\n } else {\n const [defaultMin, defaultMax] = getDefaultRangeByType(facet.type);\n const start = fixNaNValue(defaultMin, min);\n const end = fixNaNValue(defaultMax, max);\n const NumMath = getNumbersMath(facet.attrType && facet.attrType.type);\n const [startValue, endValue] = NumMath.greaterThan(start, end) ? [end, start] : [start, end];\n\n const range = yield call(getRangeValues, facet, startValue, endValue, allParams);\n const rangeFacet = {\n [facet.fieldName]: range\n };\n yield put(updateFacetsData(rangeFacet));\n }\n } catch (e) {\n yield put(trackException(e));\n }\n yield put(trackTiming('updateRangeFacet', startTime, Date.now()));\n}\n\nexport function* getRangeBounds(facet, allParams) {\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const requestStats = buildStatsUrl(facet, allParams, [facet.fieldName], options);\n const statsResults = yield call(\n callSearchRequestForCurrentTenant,\n jsonRequest,\n requestStats.url,\n requestStats.options\n );\n const reducedResults = reduceFacetsResponse(statsResults, [facet]);\n const {min, max, count} = prepareStatsFacet(reducedResults, [facet])[facet.fieldName];\n if (count) {\n const fixedMin = isPotentialMatchesFacet(facet) ? 0 : min;\n return [fixedMin, max];\n } else {\n return [];\n }\n}\n\nexport function* getRangeValues(facet, startValue, endValue, allParams) {\n const NUMBER_OF_RANGES = 50;\n const facetType = facet.attrType && facet.attrType.type;\n const rangeService = createRangeServiceFor(facetType);\n\n const interval = rangeService.getInterval(startValue, endValue, NUMBER_OF_RANGES);\n\n const globalOptions = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const options = {\n interval: interval,\n offset: startValue,\n ...globalOptions\n };\n const histogramRequest = buildHistogramUrl(facet, allParams, [facet.fieldName], options);\n const results = yield call(\n callSearchRequestForCurrentTenant,\n jsonRequest,\n histogramRequest.url,\n histogramRequest.options\n );\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const reducedResults = reduceFacetsResponse(results, [facet]);\n const values = prepareFacets(metadata, reducedResults, [facet]);\n\n return rangeService.addRanges(values[facet.fieldName], startValue, endValue, interval).map((item, index, items) => {\n const newValue = [item.value, index < items.length - 1 ? items[index + 1].value : endValue];\n return {\n value: newValue,\n number: item.number\n };\n });\n}\n","import {isNil} from 'ramda';\nimport {call, put, select} from 'redux-saga/effects';\nimport {jsonRequest} from '../utils/network';\nimport {buildMatchScoresFacetUrl, buildPotentialMatchesFacetUrl} from '../services/search/searchEngine';\nimport {fixNaNValue, getDefaultRangeByType} from '../services/search/facet';\nimport {updateFacetsData} from '../actions/facets';\nimport {trackException, trackTiming} from '../actions/googleAnalyticsActions';\nimport {getRangeBounds} from './rangeFacetsSaga';\nimport mdmModule from '@reltio/mdm-module';\n\nconst buildUrls = {\n matches: buildPotentialMatchesFacetUrl,\n 'dtPotentialMatches.matches': buildPotentialMatchesFacetUrl,\n 'potentialMatches.matchScore': buildMatchScoresFacetUrl\n};\n\nexport function* updatePotentialMatchesFacet(facet, allParams) {\n const startTime = Date.now();\n try {\n const [startResult, endResult] = yield call(getRangeBounds, facet, []);\n\n if (isNil(startResult) || isNil(endResult)) {\n yield put(updateFacetsData({[facet.fieldName]: []}));\n } else {\n const [defaultMin, defaultMax] = getDefaultRangeByType(facet.type);\n const startValue = fixNaNValue(defaultMin, startResult);\n const endValue = fixNaNValue(defaultMax, endResult);\n const totalResults = yield call(getPMValues, facet, startValue, endValue, allParams);\n const rangeFacet = {\n [facet.fieldName]: totalResults\n };\n yield put(updateFacetsData(rangeFacet));\n }\n } catch (e) {\n yield put(trackException(e));\n }\n yield put(trackTiming('updatePMFacet', startTime, Date.now()));\n}\n\nexport function* getPMValues(facet, startValue, endValue, allParams) {\n const NUMBER_OF_RANGES = 5;\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const barsNumber = Math.min(NUMBER_OF_RANGES, endValue - startValue + 1);\n const data = yield call(\n jsonRequest,\n buildUrls[facet.fieldNameForRequest || facet.fieldName](\n startValue,\n endValue,\n barsNumber,\n allParams,\n [facet.fieldName],\n {...options, dataTenant: facet.dataTenant}\n )\n );\n return data.map((item) => {\n return {\n number: item.count,\n value: [item.from, item.to]\n };\n });\n}\n","import {call, delay, fork, put, select, takeEvery, takeLatest} from 'redux-saga/effects';\nimport {partition} from 'ramda';\nimport mdmModule, {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {getLastUriPart, isRangeFacet, isTypeFacet} from '@reltio/mdm-sdk';\nimport {buildFacetsRequest} from '../services/search/searchEngine';\nimport {entityTypeProcessing, mergeConfigs} from '../services/search/facet';\nimport {\n createFacetsFromAdvancedSearch,\n isAdvancedSearchTransformedToFacets\n} from '../services/search/converting/createFacetsFromAdvancedSearch';\nimport {refreshSearch} from '../actions/searchActions';\nimport {\n changeFacetValues,\n createFacets,\n destroyFacetFilteredData,\n destroyFacets,\n requestGivenFacetsData as requestGivenFacetsDataAction,\n updateFacetFilteredData,\n updateFacetsData\n} from '../actions/facets';\nimport {\n getFacetDisplayedAttributesDataItemsByFieldName,\n getFacetsConfigs,\n getFacetsData,\n getSelectedEntityTypes\n} from '../selectors/facet';\nimport {\n getEntityTypeFacetConfig,\n isDataTenantFacet,\n isMLMatchRuleFacet,\n isPotentialMatchesFacet\n} from '../services/search/collectFacets';\nimport {updateRangeFacet} from './rangeFacetsSaga';\nimport {updatePotentialMatchesFacet} from './potentialMatchesFacetSaga';\nimport {requestAttributesData, requestMoreAttributesData, updateFilteredAttribute} from './facetedAttributesSaga';\nimport {getQueryBuilderGroups} from '../selectors/advancedSearch';\nimport {getAllowedEntityTypes, getShowAdvancedSearch} from '../selectors/ui';\nimport {Facets} from '../constants/actionTypes';\nimport {ML_RULES_ONLY} from '../constants/constants';\nimport {getAllSearchParams, getMapSearchObject} from '../selectors/search';\n\nexport function* getFacetsArrayWithConfigs() {\n const facets = yield select(getFacetsData);\n const configs = yield select(getFacetsConfigs);\n return Object.values(mergeConfigs(facets, configs));\n}\n\nexport function* updateFacets(allParams) {\n const facetsArray = yield call(getFacetsArrayWithConfigs);\n const [potentialMatchesFacets, notProcessedFacets] = partition(isPotentialMatchesFacet, facetsArray);\n let [rangeFacets, allSimpleFacets] = partition(isRangeFacet, notProcessedFacets);\n\n for (let i = 0; i < potentialMatchesFacets.length; i++) {\n yield fork(updatePotentialMatchesFacet, potentialMatchesFacets[i], allParams);\n }\n\n for (let i = 0; i < rangeFacets.length; i++) {\n yield fork(updateRangeFacet, rangeFacets[i], allParams);\n }\n\n const isSelectedFacet = (facet) => facet.values && facet.values.length;\n const [selectedFacets, notSelectedFacets] = partition(isSelectedFacet, allSimpleFacets);\n\n for (let i = 0; i < selectedFacets.length; i++) {\n yield fork(\n updateFacetWithSelection,\n selectedFacets[i],\n allParams,\n isMLMatchRuleFacet(selectedFacets[i]) ? ML_RULES_ONLY : null\n );\n }\n\n const [mlMatchRuleFacet, notSelectedSimpleFacetsIncludingDTFacets] = partition(\n isMLMatchRuleFacet,\n notSelectedFacets\n );\n\n if (mlMatchRuleFacet.length) {\n yield call(updateFacetsWithoutSelection, mlMatchRuleFacet, allParams, ML_RULES_ONLY);\n }\n\n const [dataTenantFacets, notSelectedSimpleFacets] = partition(\n isDataTenantFacet,\n notSelectedSimpleFacetsIncludingDTFacets\n );\n for (const dataTenantFacet of dataTenantFacets) {\n yield fork(updateFacetsWithoutSelection, [dataTenantFacet], allParams);\n }\n\n if (notSelectedSimpleFacets.length) {\n yield fork(updateFacetsWithoutSelection, notSelectedSimpleFacets, allParams);\n }\n}\n\nexport function* requestGivenFacetsData(action) {\n const searchParams = yield select(getAllSearchParams);\n const [potentialMatchesFacets, notProcessedFacets] = partition(isPotentialMatchesFacet, action.payload);\n const [rangeFacets, allSimpleFacets] = partition(isRangeFacet, notProcessedFacets);\n const [mlMatchRuleFacet, simpleFacetsIncludingDTFacets] = partition(isMLMatchRuleFacet, allSimpleFacets);\n const [dataTenantFacets, simpleFacets] = partition(isDataTenantFacet, simpleFacetsIncludingDTFacets);\n\n for (let i = 0; i < potentialMatchesFacets.length; i++) {\n yield fork(updatePotentialMatchesFacet, potentialMatchesFacets[i], searchParams);\n }\n\n for (let i = 0; i < rangeFacets.length; i++) {\n yield fork(updateRangeFacet, rangeFacets[i], searchParams);\n }\n\n if (mlMatchRuleFacet.length) {\n yield fork(updateFacetsWithoutSelection, mlMatchRuleFacet, searchParams, ML_RULES_ONLY);\n }\n\n for (const dataTenantFacet of dataTenantFacets) {\n yield fork(updateFacetsWithoutSelection, [dataTenantFacet], searchParams);\n }\n\n if (simpleFacets.length) {\n yield fork(updateFacetsWithoutSelection, simpleFacets, searchParams);\n }\n}\n\nexport function* updateFacetWithSelection(facet, allParams, extraUrlParams) {\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildFacetsRequest(\n [{...facet, pageSize: facet.pageSize + 1}],\n allParams,\n [facet.fieldName],\n options,\n extraUrlParams\n );\n yield call(requestFacetsData, request, [facet]);\n}\n\nexport function* updateFacetsWithoutSelection(facets, allParams, extraUrlParams) {\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildFacetsRequest(\n facets.map((facet) => ({...facet, pageSize: facet.pageSize + 1})),\n allParams,\n [],\n options,\n extraUrlParams\n );\n yield call(requestFacetsData, request, facets);\n}\n\nexport function* requestFacetsData(request, facets) {\n yield call(requestAttributesData, request, facets, updateFacetsData);\n}\n\nexport function* filterFacet(action) {\n const {facetFieldName, value, debounceTime, pageNumber = 1, currentOptions = []} = action.payload;\n if (value === '' && pageNumber === 1) {\n yield put(destroyFacetFilteredData(facetFieldName));\n } else {\n const facets = yield select(getFacetsData);\n const configs = yield select(getFacetsConfigs);\n const facetsWithConfigs = mergeConfigs(facets, configs);\n const facet = {...facetsWithConfigs[facetFieldName]};\n\n if (facetFieldName === 'type') {\n const filteredData = {\n [facetFieldName]: [\n ...facet.data.filter((data) => data.label.toLowerCase().includes(value.toLowerCase()))\n ]\n };\n yield put(updateFacetFilteredData(filteredData));\n } else {\n if (debounceTime) {\n yield delay(debounceTime);\n }\n const allParams = yield select(getAllSearchParams);\n const displayedItems = yield select(getFacetDisplayedAttributesDataItemsByFieldName, facetFieldName);\n const setDataAction = (pagedFilteredData) =>\n updateFacetFilteredData({\n [facetFieldName]: currentOptions.concat(pagedFilteredData[facetFieldName])\n });\n if (value) {\n yield fork(\n updateFilteredAttribute,\n {...facet, displayedItems, pageNumber, pageSize: facet.pageSize + 1},\n allParams,\n value,\n setDataAction\n );\n } else {\n // \"load more\" with empty filter text\n yield fork(\n requestMoreAttributesData,\n {...facet, pageNumber, pageSize: facet.pageSize + 1},\n allParams,\n setDataAction\n );\n }\n }\n }\n}\n\nexport function* cleanUpFacets() {\n const selectedEntityTypes = yield select(getSelectedEntityTypes);\n const isForeignFacet = (config) => config.entityTypeUri && config.entityTypeUri !== selectedEntityTypes[0];\n const configs = yield select(getFacetsConfigs);\n if (selectedEntityTypes.length !== 1 || configs.some(isForeignFacet)) {\n const fieldNamesToDelete = configs\n .filter(\n (config) =>\n (selectedEntityTypes.length !== 1 && !!config.entityTypeUri) ||\n (selectedEntityTypes.length === 1 && isForeignFacet(config))\n )\n .map((config) => config.fieldName);\n if (fieldNamesToDelete.length) {\n yield put(destroyFacets(fieldNamesToDelete));\n }\n }\n}\n\nexport function* handleFacetsConfigsChanges(action) {\n const {facetsToAdd = [], fieldNamesToDelete = [], changedEntityTypes, addToEnd = false} = action.payload;\n if (facetsToAdd.length || fieldNamesToDelete.length) {\n if (facetsToAdd.length) {\n yield put(createFacets(facetsToAdd, addToEnd));\n }\n const extractedFacets = yield call(getFacetsArrayWithConfigs);\n let isDeletingAffectsSearch = false;\n if (fieldNamesToDelete.length) {\n const facetsWithValues = extractedFacets.filter((facet) => facet.values && facet.values.length);\n isDeletingAffectsSearch = fieldNamesToDelete.some((fieldName) =>\n facetsWithValues.some((facetWithValue) => facetWithValue.fieldName.startsWith(fieldName))\n );\n yield put(destroyFacets(fieldNamesToDelete));\n }\n // Updating needed data\n // - request all data in case of entityTypes changing or deleting facets with values\n // - request only newly added facets in other cases\n if (changedEntityTypes != null) {\n yield put(changeFacetValues('type', changedEntityTypes));\n } else if (isDeletingAffectsSearch) {\n yield put(refreshSearch());\n } else if (facetsToAdd.length) {\n const addedFacets = extractedFacets.filter((facet) =>\n facetsToAdd.some((facetToAdd) => facet.fieldName.startsWith(facetToAdd.fieldName))\n );\n yield put(requestGivenFacetsDataAction(addedFacets));\n }\n }\n}\n\nexport function* convertAdvancedSearchToFacets() {\n const keyword = yield select(mdmModule.selectors.getSearchKeyword);\n const map = yield select(getMapSearchObject);\n const advancedSearchGroups = yield select(getQueryBuilderGroups);\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const dataTenants = yield select(mdmModule.selectors.getDataTenants);\n\n if (isAdvancedSearchTransformedToFacets(metadata, advancedSearchGroups, dataTenants)) {\n const facets = createFacetsFromAdvancedSearch(metadata, advancedSearchGroups, dataTenants);\n yield put(mdmModuleSearch.actions.updateState({facets, keyword, map}));\n }\n}\n\nexport function* verifyEntityTypeFacet() {\n const isAdvancedSearchOpen = yield select(getShowAdvancedSearch);\n if (!isAdvancedSearchOpen) {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const facetsConfigs = yield select(getFacetsConfigs);\n if (!facetsConfigs.some(isTypeFacet)) {\n const facets = [getEntityTypeFacetConfig(metadata)];\n yield put(createFacets(facets));\n }\n }\n}\n\nexport function* buildEntityTypeFacetLocalData() {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const facetsData = yield select(getFacetsData);\n const entityTypeFacet = mergeConfigs(\n {\n type: facetsData.type\n },\n [getEntityTypeFacetConfig(metadata)]\n ).type;\n const rawNumbersData = entityTypeFacet.data.reduce((result, item) => {\n result[getLastUriPart(item.value)] = item.number;\n return result;\n }, {});\n const allowedEntityTypes = yield select(getAllowedEntityTypes);\n return entityTypeProcessing(metadata, rawNumbersData, allowedEntityTypes);\n}\n\nexport function* filterFacetSaga() {\n yield takeLatest([Facets.FILTER_FACET_DATA], filterFacet);\n}\n\nexport function* requestGivenFacetsDataSaga() {\n yield takeEvery(Facets.REQUEST_GIVEN_FACETS_DATA, requestGivenFacetsData);\n}\n\nexport function* handleFacetsConfigsChangesSaga() {\n yield takeEvery(Facets.HANDLE_CONFIGS_CHANGES, handleFacetsConfigsChanges);\n}\n\nexport function* convertAdvancedSearchToFacetsSaga() {\n yield takeEvery(Facets.CONVERT_FROM_ADVANCED_SEARCH, convertAdvancedSearchToFacets);\n}\n\nconst sagas = [\n filterFacetSaga,\n requestGivenFacetsDataSaga,\n handleFacetsConfigsChangesSaga,\n convertAdvancedSearchToFacetsSaga\n];\nexport default sagas;\n","import {call, delay, fork, put, select, takeEvery, takeLatest} from 'redux-saga/effects';\n\nimport mdmModule, {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {flatten} from 'ramda';\nimport {\n addAttributeAfter,\n changeAttribute,\n clearAttribute,\n deleteAttribute,\n setAttributeFilteredValues,\n setAttributeValues,\n verifyGroupEntityTypes\n} from '../actions/advancedSearchActions';\nimport {buildFacetsRequest} from '../services/search/searchEngine';\nimport {requestAttributesData, requestMoreAttributesData, updateFilteredAttribute} from './facetedAttributesSaga';\nimport {getFacetsArrayWithConfigs} from './facetsSaga';\nimport {createAdvancedSearchGroupFromFacets} from '../services/search/converting/createAdvancedSearchFromFacets';\nimport {\n getQueryBuilderGroups,\n getQueryBuilderDisplayedAttributesDataItemsById,\n getGroupEntityTypesSearchParams\n} from '../selectors/advancedSearch';\nimport {ML_RULES_ONLY} from '../constants/constants';\nimport {AdvancedSearch} from '../constants/actionTypes';\nimport {isMLMatchRuleFacet} from '../services/search/collectFacets';\nimport {getAdvancedAttributeValuesSearchParams, getMapSearchObject} from '../selectors/search';\nimport {toggleQueryBuilderAttributeSelect} from './queryBuilderSaga';\n\nexport function* toggleAttributeSelect(action) {\n const {groupId, attributeId, selectInfo} = action.payload;\n\n const groups = yield select(getQueryBuilderGroups);\n const actions = {\n addAttributeAfter,\n changeAttribute,\n clearAttribute,\n deleteAttribute\n };\n yield call(toggleQueryBuilderAttributeSelect, {\n groups,\n attributesPropName: 'attributes',\n groupId,\n attributeId,\n selectInfo,\n actions\n });\n yield put(verifyGroupEntityTypes(groupId));\n}\n\nexport function* updateAttributeValues(action) {\n const {attribute, groupId} = action.payload;\n const groupSearchParams = yield select(getGroupEntityTypesSearchParams, groupId);\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const {\n data: {fieldName},\n values\n } = attribute;\n const searchParams = yield select(getAdvancedAttributeValuesSearchParams, groupSearchParams, fieldName);\n\n const facet = {\n ...attribute.data,\n values: values ? flatten(values) : undefined,\n pageSize: attribute.data.pageSize + 1\n };\n\n const request = buildFacetsRequest(\n [facet],\n searchParams,\n [],\n options,\n isMLMatchRuleFacet(facet) ? ML_RULES_ONLY : null\n );\n\n yield call(requestAttributesData, request, [facet], (data) =>\n setAttributeValues(groupId, attribute.id, data[fieldName])\n );\n}\n\nexport function* filterAttributeValues(action) {\n const {attribute, value, pageNumber = 1, debounceTime, groupId, currentOptions = []} = action.payload;\n const {entityTypeUri, fieldName} = attribute.data;\n\n if (value === '' && pageNumber === 1) {\n yield put(setAttributeFilteredValues(groupId, attribute.id, undefined));\n } else {\n if (debounceTime) {\n yield delay(debounceTime);\n }\n\n const displayedItems = yield select(getQueryBuilderDisplayedAttributesDataItemsById, groupId, attribute.id);\n const setDataAction = (data) =>\n setAttributeFilteredValues(groupId, attribute.id, currentOptions.concat(data[fieldName]));\n\n if (value) {\n const entitySearchParams = entityTypeUri\n ? [\n {\n values: [entityTypeUri],\n fieldName: 'type',\n filter: 'equals'\n }\n ]\n : [];\n const searchParams = yield select(getAdvancedAttributeValuesSearchParams, entitySearchParams, fieldName);\n yield fork(\n updateFilteredAttribute,\n {...attribute.data, displayedItems, pageNumber, pageSize: attribute.data.pageSize + 1},\n searchParams,\n value,\n setDataAction\n );\n } else {\n // \"load more\" with empty filter text\n const groupSearchParams = yield select(getGroupEntityTypesSearchParams, groupId);\n const searchParams = yield select(getAdvancedAttributeValuesSearchParams, groupSearchParams, fieldName);\n yield fork(\n requestMoreAttributesData,\n {...attribute.data, displayedItems, pageNumber, pageSize: attribute.data.pageSize + 1},\n searchParams,\n setDataAction\n );\n }\n }\n}\n\nexport function* convertFacetsToAdvancedSearch() {\n const keyword = yield select(mdmModule.selectors.getSearchKeyword);\n const map = yield select(getMapSearchObject);\n const facetsWithConfigs = yield call(getFacetsArrayWithConfigs);\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const dataTenants = yield select(mdmModule.selectors.getDataTenants);\n const groups = createAdvancedSearchGroupFromFacets(metadata, dataTenants, facetsWithConfigs);\n yield put(mdmModuleSearch.actions.updateState({advanced: groups, keyword, map}));\n}\n\nexport function* deleteAttributeAndVerifyGroupEntityTypes(action) {\n const {groupId, attributeId} = action.payload;\n yield put(deleteAttribute(groupId, attributeId));\n yield put(verifyGroupEntityTypes(groupId));\n}\n\nexport function* toggleAttributeSelectSaga() {\n yield takeEvery([AdvancedSearch.TOGGLE_ATTRIBUTE_SELECT], toggleAttributeSelect);\n}\n\nexport function* deleteAttributeAndVerifyGroupEntityTypesSaga() {\n yield takeEvery(\n [AdvancedSearch.DELETE_ATTRIBUTE_AND_VERIFY_GROUP_ENTITY_TYPES],\n deleteAttributeAndVerifyGroupEntityTypes\n );\n}\n\nexport function* filterAttributeValuesSaga() {\n yield takeLatest([AdvancedSearch.ATTRIBUTE_FILTER_VALUES], filterAttributeValues);\n}\n\nexport function* convertFacetsToAdvancedSearchSaga() {\n yield takeEvery(AdvancedSearch.CONVERT_FROM_FACETS, convertFacetsToAdvancedSearch);\n}\n\nexport function* updateAttributeValuesSaga() {\n yield takeEvery(AdvancedSearch.ATTRIBUTE_UPDATE_VALUES, updateAttributeValues);\n}\n\nconst sagas = [\n toggleAttributeSelectSaga,\n filterAttributeValuesSaga,\n convertFacetsToAdvancedSearchSaga,\n updateAttributeValuesSaga,\n deleteAttributeAndVerifyGroupEntityTypesSaga\n];\n\nexport default sagas;\n","import {equals, isNil, lensPath, map, omit, path, pathOr, pipe, set} from 'ramda';\nimport {SEARCH_RESULTS_MODES} from '../../constants/constants';\n\nexport const getCommonUIStateForCompare = (uiState) => {\n const tabsPath = ['view', 'searchResultsColumns'];\n const tabs = pathOr({}, tabsPath, uiState);\n\n const prepareAttrType = (tab) => {\n if (!tab.attrType) {\n return tab;\n }\n\n const uri = pathOr('', ['attrType', 'uri'], tab);\n return {\n ...tab,\n attrType: {uri}\n };\n };\n const preparedTabs = map(map(pipe(omit(['size']), prepareAttrType)), tabs);\n const tabsLensPath = lensPath(tabsPath);\n\n const preparedView = omit(['sortField', 'sortOrder', 'entityTypeTab'], uiState.view);\n const viewLensPath = lensPath(['view']);\n\n const keywordPath = ['keyword'];\n const preparedKeyword = pathOr('', keywordPath, uiState);\n const keywordLensPath = lensPath(keywordPath);\n\n const mapPath = ['map'];\n const preparedMap = pathOr('', mapPath, uiState);\n const mapLensPath = lensPath(mapPath);\n\n return pipe(\n omit(['searchOptions']),\n set(viewLensPath, preparedView),\n set(tabsLensPath, preparedTabs),\n set(keywordLensPath, preparedKeyword),\n set(mapLensPath, preparedMap)\n )(uiState);\n};\n\nexport const isEqualCurrentSavedSearchAndActualUiState = ({savedUiState, actualUiState}) => {\n const commonSavedUiState = getCommonUIStateForCompare(savedUiState);\n const commonActualUiState = getCommonUIStateForCompare(actualUiState);\n\n if (!equals(commonSavedUiState, commonActualUiState)) {\n return false;\n }\n\n const resultsMode = path(['view', 'searchResultsMode'], savedUiState);\n if (resultsMode === SEARCH_RESULTS_MODES.TABLE) {\n const sortFieldPath = ['view', 'sortField'];\n const sortOrderPath = ['view', 'sortOrder'];\n const entityTypeTabPath = ['view', 'entityTypeTab'];\n const firstSortField = path(sortFieldPath, savedUiState);\n const secondSortField = path(sortFieldPath, actualUiState);\n\n const firstSortOrder = path(sortOrderPath, savedUiState);\n const secondSortOrder = path(sortOrderPath, actualUiState);\n\n const firstEntityTypeTab = path(entityTypeTabPath, savedUiState);\n const secondEntityTypeTab = path(entityTypeTabPath, actualUiState);\n if (\n !equals(firstSortField, secondSortField) ||\n !equals(firstSortOrder, secondSortOrder) ||\n !equals(firstEntityTypeTab, secondEntityTypeTab)\n ) {\n return false;\n }\n }\n\n const searchOptionsPath = ['searchOptions'];\n const firstSearchOptions = pathOr(null, searchOptionsPath, savedUiState);\n const secondSearchOptions = pathOr(null, searchOptionsPath, actualUiState);\n if (!isNil(firstSearchOptions) && !isNil(secondSearchOptions) && !equals(firstSearchOptions, secondSearchOptions)) {\n return false;\n }\n\n return true;\n};\n","import {call, put, select, takeLatest} from 'redux-saga/effects';\nimport {searchSagaPattern} from './searchSaga';\nimport {\n getCurrentSavedSearch,\n getSavedSearchesItemByUri,\n getSavedSearchesPostSavingAction\n} from '../selectors/savedSearches';\nimport {setCurrentSavedSearch, setSavedSearchChangeIndicator} from '../actions/savedSearchesActions';\nimport mdmModule, {search as mdmModuleSearch} from '@reltio/mdm-module';\nimport {getSavedSearchIdFromUri, parseUIState} from '../services/search/savedSearches';\nimport {isEqualCurrentSavedSearchAndActualUiState} from '../services/search/currentSavedSearch';\nimport {includes, path, prop} from 'ramda';\nimport {getIsEmptySearchParams} from '../selectors/search';\nimport {getSavedSearch, updateSavedSearch} from '@reltio/mdm-sdk';\nimport {showInfoNotification, showSaveSearchDialog} from '../actions/uiActions';\nimport i18n from 'ui-i18n';\nimport {getSearchData} from './savedSearchesSaga';\nimport {handleErrors} from './commonSaga';\nimport {UI, Search, SavedSearches, Facets} from '../constants/actionTypes';\nimport {SAVED_SEARCHES_SHARING_OPTIONS_VALUES} from '../constants/constants';\n\nexport function* updateCurrent({payload: {share}}) {\n const {query, uiState} = yield call(getSearchData, true);\n const currentSearch = yield select(getCurrentSavedSearch);\n\n const savedSearch = {\n ...currentSearch,\n isPublic: share === SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public,\n query,\n uiState\n };\n\n const postSavingAction = yield select(getSavedSearchesPostSavingAction);\n yield put(showSaveSearchDialog(false));\n\n try {\n yield put(showInfoNotification(i18n.text('Updating search...')));\n yield call(updateSavedSearch, savedSearch);\n yield put(setSavedSearchChangeIndicator(false));\n yield put(showInfoNotification(i18n.text('Search updated successfully')));\n if (postSavingAction) {\n yield put(postSavingAction);\n }\n } catch (e) {\n yield call(handleErrors, e);\n }\n}\n\nexport function* updateCurrentSavedSearchChangeIndicator() {\n const currentSavedSearch = yield select(getCurrentSavedSearch);\n if (!currentSavedSearch) {\n yield put(setSavedSearchChangeIndicator(false));\n return;\n }\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const dataTenants = yield select(mdmModule.selectors.getDataTenants);\n const canUserReadWorkflowDataTask = yield select(mdmModule.selectors.getCanUserReadWorkflowDataTask);\n\n const {uiState} = parseUIState(metadata, dataTenants, canUserReadWorkflowDataTask, yield call(getSearchData));\n const isEqualUiState = isEqualCurrentSavedSearchAndActualUiState({\n savedUiState: currentSavedSearch.uiState,\n actualUiState: uiState\n });\n yield put(setSavedSearchChangeIndicator(!isEqualUiState));\n}\n\nexport function* syncCurrentSavedSearch(action) {\n const currentSearch = yield select(getCurrentSavedSearch);\n if (currentSearch) {\n switch (action.type) {\n case SavedSearches.CHANGE_ITEM_NAME:\n case SavedSearches.MARK_PUBLIC:\n case SavedSearches.MARK_FAVORITE:\n if (currentSearch.uri === action.payload.uri) {\n yield put(\n setCurrentSavedSearch({\n ...currentSearch,\n ...action.payload\n })\n );\n }\n break;\n case SavedSearches.DELETE_ITEMS:\n if (includes(currentSearch.uri, action.payload)) {\n yield put(setCurrentSavedSearch(null));\n }\n break;\n case SavedSearches.UPDATE:\n yield put(\n setCurrentSavedSearch({\n ...currentSearch,\n isPublic: action.payload.share === SAVED_SEARCHES_SHARING_OPTIONS_VALUES.public\n })\n );\n break;\n default: {\n if (yield select(getIsEmptySearchParams)) {\n yield put(setCurrentSavedSearch(null));\n }\n break;\n }\n }\n }\n}\n\nexport function* getCurrentSavedSearchByUri(uri) {\n const loadedCurrentSavedSearch = yield select(getSavedSearchesItemByUri, uri);\n if (loadedCurrentSavedSearch) {\n return loadedCurrentSavedSearch;\n }\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const dataTenants = yield select(mdmModule.selectors.getDataTenants);\n const canUserReadWorkflowDataTask = yield select(mdmModule.selectors.getCanUserReadWorkflowDataTask);\n\n try {\n const savedSearch = yield call(getSavedSearch, getSavedSearchIdFromUri(uri));\n return parseUIState(metadata, dataTenants, canUserReadWorkflowDataTask, savedSearch);\n } catch (e) {\n yield call(handleErrors, e);\n return null;\n }\n}\n\nexport function* setCurrentSavedSearchOnUpdate(action) {\n const newCurrentSavedSearchUri = path(['payload', 'currentSavedSearchUri'], action);\n if (!newCurrentSavedSearchUri) {\n return;\n }\n\n const currentSavedSearch = yield select(getCurrentSavedSearch);\n if (prop('uri', currentSavedSearch) === newCurrentSavedSearchUri) {\n return;\n }\n\n const newCurrentSavedSearch = yield call(getCurrentSavedSearchByUri, newCurrentSavedSearchUri);\n\n if (newCurrentSavedSearch) {\n yield put(setCurrentSavedSearch(newCurrentSavedSearch));\n yield call(updateCurrentSavedSearchChangeIndicator);\n }\n}\n\nexport const searchStateChangedPattern = [\n ...searchSagaPattern,\n UI.SET_ENTITY_TYPE_TAB,\n Search.CHANGE_SORT,\n UI.SET_SEARCH_RESULTS_MODE,\n UI.CHANGE_SEARCH_RESULTS_COLUMNS,\n UI.CHANGE_SIZES_SEARCH_RESULTS_COLUMNS,\n UI.CHANGE_ORDER_SEARCH_RESULTS_COLUMNS,\n UI.SET_PREVIEW_PANEL_MODE,\n Facets.CREATE_FACETS,\n Facets.DESTROY_FACETS,\n Facets.SHOW_MORE_ENTITY_TYPES\n];\n\nexport function* currentSavedSearchChangeSaga() {\n yield takeLatest(searchStateChangedPattern, updateCurrentSavedSearchChangeIndicator);\n}\n\nexport function* updateCurrentSavedSearchSaga() {\n yield takeLatest([SavedSearches.UPDATE], updateCurrent);\n}\n\nexport function* syncCurrentSavedSearchSaga() {\n yield takeLatest(\n [\n SavedSearches.CHANGE_ITEM_NAME,\n SavedSearches.MARK_PUBLIC,\n SavedSearches.MARK_FAVORITE,\n SavedSearches.DELETE_ITEMS,\n SavedSearches.UPDATE,\n ...searchSagaPattern\n ],\n syncCurrentSavedSearch\n );\n}\n\nexport function* updateCurrentSavedSearchFromUpdateStateSaga() {\n yield takeLatest(mdmModuleSearch.constants.UPDATE_STATE, setCurrentSavedSearchOnUpdate);\n}\n\nconst sagas = [\n currentSavedSearchChangeSaga,\n updateCurrentSavedSearchSaga,\n syncCurrentSavedSearchSaga,\n updateCurrentSavedSearchFromUpdateStateSaga\n];\n\nexport default sagas;\n","import {call, delay, put, take, takeLatest, select} from 'redux-saga/effects';\nimport {__, includes, path, reject} from 'ramda';\nimport {search} from '@reltio/mdm-module';\nimport {getSearchData} from './savedSearchesSaga';\nimport {getCurrentSavedSearch} from '../selectors/savedSearches';\nimport {searchStateChangedPattern} from './currentSavedSearchSaga';\nimport {Search, SavedSearches} from '../constants/actionTypes';\n\nexport const SAVE_STATE_DEBOUNCE_TIME = 500;\n\nexport function* saveState() {\n yield delay(SAVE_STATE_DEBOUNCE_TIME);\n const {uiState, query} = yield call(getSearchData, false, true);\n const currentSavedSearch = yield select(getCurrentSavedSearch);\n yield put(\n search.actions.saveState({\n ...uiState,\n query,\n currentSavedSearchUri: path(['uri'], currentSavedSearch)\n })\n );\n}\n\nexport default function* saveStateSaga() {\n yield take(search.constants.UPDATE_STATE);\n const pattern = reject(includes(__, [Search.REFRESH]), searchStateChangedPattern);\n yield takeLatest([SavedSearches.SET_CURRENT, ...pattern], saveState);\n}\n","import {\n path,\n chain,\n prop,\n propOr,\n propEq,\n defaultTo,\n pipe,\n has,\n filter,\n find,\n map,\n isNil,\n curry,\n join,\n pathEq,\n reject,\n identity,\n values,\n when\n} from 'ramda';\nimport {getEntityTypeFacetFromState} from '../facet';\nimport {isTypeFacet} from '@reltio/mdm-sdk';\n\nconst getSearchGroups = path(['advancedSearch', 'searchParams', 'groups']);\n\nconst generateNameFromAdvancedSearch = (searchState = {}) => {\n const collectConditions = chain(prop('attributes'));\n const rejectDataWithoutValues = filter(has('values'));\n const getSearchConditions = pipe(getSearchGroups, collectConditions, rejectDataWithoutValues);\n\n const processEntityTypes = pipe(prop('values'), map(prop('label')), join(', '));\n const getAttributeNames = path(['data', 'title']);\n const isEntityTypeCondition = pathEq(['data', 'fieldName'], 'type');\n const getEntityTypeCondition = find(isEntityTypeCondition);\n const getEntityLabel = pipe(getEntityTypeCondition, when(identity, processEntityTypes));\n const getAttributesPartLabel = pipe(\n reject(isEntityTypeCondition),\n map(getAttributeNames),\n reject(isNil),\n join(', ')\n );\n const getLabel = (conditions) => {\n return [getEntityLabel(conditions), getAttributesPartLabel(conditions)].filter(identity).join(' - ');\n };\n\n return getLabel(getSearchConditions(searchState));\n};\nconst generateNameFromBasicSearch = (searchState = {}) => {\n const getFacets = prop('facets');\n const getFacetsData = prop('facetsData');\n const getFacetsConfigs = prop('facetsConfigs');\n const getValues = prop('values');\n const getLabel = prop('label');\n const getTitle = prop('title');\n const nonEmptyFacets = pipe(getValues, (values) => values && values.length > 0);\n const getLabelByValue = (value) => pipe(propOr([], 'data'), find(propEq('value', value)), defaultTo({}), getLabel);\n\n const getSearchFacetTitle = curry((searchState, fieldName) =>\n pipe(getFacets, getFacetsConfigs, find(propEq('fieldName', fieldName)), defaultTo({}), getTitle)(searchState)\n );\n\n const entityTypeFacet = getEntityTypeFacetFromState(searchState);\n const results = [];\n if (entityTypeFacet) {\n results.push(\n getValues(entityTypeFacet)\n .map(getLabelByValue)\n .map((getLabel) => getLabel(entityTypeFacet))\n .join(', ')\n );\n }\n const getNonEmptyFacetsNames = pipe(\n getFacets,\n getFacetsData,\n values,\n reject(isTypeFacet),\n filter(nonEmptyFacets),\n map(prop('fieldName'))\n );\n\n const getLabelsByNames = pipe(getNonEmptyFacetsNames, map(getSearchFacetTitle(searchState)));\n\n const labels = getLabelsByNames(searchState);\n if (labels.length > 0) {\n results.push(labels.join(', '));\n }\n return results.filter(identity).join(' - ');\n};\nexport const generateName = (searchState = {}) => {\n const advancedSearchGroups = getSearchGroups(searchState);\n if (advancedSearchGroups && advancedSearchGroups.length > 0) {\n return generateNameFromAdvancedSearch(searchState);\n } else {\n return generateNameFromBasicSearch(searchState);\n }\n};\n","import {all, call, put, select, takeLatest, takeEvery} from 'redux-saga/effects';\nimport {\n getRecentSearches,\n createRecentSearch,\n deleteRecentSearch,\n getHash,\n replacePlaceholdersInQuery\n} from '@reltio/mdm-sdk';\nimport mdmModule, {search as mdmModuleSearch, ui as mdmModuleUI} from '@reltio/mdm-module';\nimport {getSearchData} from './savedSearchesSaga';\nimport {handleErrors} from './commonSaga';\nimport {sort, descend, pipe, prop} from 'ramda';\nimport {\n deleteRecentSearchesItems as deleteRecentSearchesItemsAction,\n setRecentSearchesLoading,\n setRecentSearchesItems,\n setRecentSearchItemTotal,\n setRecentSearchesLastSaved\n} from '../actions/recentSearchesActions';\nimport {showSavedSearchesDialog} from '../actions/uiActions';\nimport parseSearchState, {replaceSearchResultsColumns} from '../services/search/parsing';\n\nimport {getSelectedRecentSearchesItems, getLastSavedRecentSearch} from '../selectors/recentSearches';\nimport {getAppData} from '../selectors/ui';\nimport {generateName} from '../services/search/recentSearches';\nimport {getEnvironment, getTenant} from '../utils/general';\nimport {buildTotalOptionsForQuery} from '../services/search/searchEngine';\nimport {jsonRequest} from '../utils/network';\nimport {Search, SavedSearches, RecentSearches} from '../constants/actionTypes';\nimport {getDataTenant} from '../selectors/search';\nimport {appId, ENTITIES_TOTAL_URL} from '../constants/constants';\n\nexport function* loadRecentSearches() {\n yield put(setRecentSearchesLoading(true));\n try {\n const {result: recentSearches = []} = yield call(getRecentSearches, {\n application: appId,\n environment: getEnvironment(),\n tenant: getTenant()\n });\n const sortByCreatedDate = sort(descend(prop('createdDate')));\n const sortedRecentSearches = sortByCreatedDate(recentSearches);\n yield put(setRecentSearchesItems(sortedRecentSearches));\n yield put(setRecentSearchesLoading(false));\n yield call(getRecentSearchesTotals, sortedRecentSearches);\n } catch (e) {\n yield call(handleErrors, e);\n yield put(setRecentSearchesLoading(false));\n }\n}\n\nexport function* getRecentSearchTotal(search) {\n try {\n const {total} = yield call(\n jsonRequest,\n `/${ENTITIES_TOTAL_URL}`,\n buildTotalOptionsForQuery(replacePlaceholdersInQuery(search.query))\n );\n yield put(setRecentSearchItemTotal(search.createdDate, total));\n } catch (e) {\n yield call(handleErrors, e);\n }\n}\n\nfunction* getRecentSearchesTotals(recentSearches) {\n return yield all(recentSearches.map((search) => call(getRecentSearchTotal, search)));\n}\n\nexport function* deleteSelectedRecentSearches() {\n const selectedItems = yield select(getSelectedRecentSearchesItems);\n yield put(setRecentSearchesLoading(true));\n try {\n yield all(selectedItems.map((item) => call(deleteRecentSearch, item)));\n yield put(deleteRecentSearchesItemsAction(selectedItems));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setRecentSearchesLoading(false));\n}\nexport function* deleteRecentSearchesItem(action) {\n const searchItem = action.payload;\n yield put(setRecentSearchesLoading(true));\n try {\n yield call(deleteRecentSearch, searchItem);\n yield put(deleteRecentSearchesItemsAction([searchItem]));\n } catch (e) {\n yield call(handleErrors, e);\n }\n yield put(setRecentSearchesLoading(false));\n}\n\nexport function* create() {\n const {query, uiState: state} = yield call(getSearchData, true);\n const appState = yield select(getAppData);\n const previousHash = yield select(getLastSavedRecentSearch);\n const name = generateName(appState);\n const environment = getEnvironment();\n const tenant = getTenant();\n const hash = getHash(query);\n const recentSearch = {\n query,\n state,\n name,\n environment,\n tenant\n };\n try {\n if (previousHash !== hash) {\n const result = yield call(createRecentSearch, recentSearch);\n if (result.success) {\n yield put(setRecentSearchesLastSaved(hash));\n } else {\n yield call(handleErrors, result);\n }\n }\n } catch (e) {\n yield call(handleErrors, e);\n }\n}\nexport function* applyRecentSearchItem(action) {\n const {search, debounceTime} = action.payload;\n yield put(showSavedSearchesDialog(false));\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const dataTenants = yield select(mdmModule.selectors.getDataTenants);\n const canUserReadWorkflowDataTask = yield select(mdmModule.selectors.getCanUserReadWorkflowDataTask);\n\n let searchState = {};\n try {\n searchState = pipe(parseSearchState, replaceSearchResultsColumns(null))(\n metadata,\n JSON.parse(search.state),\n {},\n dataTenants,\n canUserReadWorkflowDataTask\n );\n } catch (e) {\n searchState = {};\n }\n if (yield select(getDataTenant)) {\n searchState.currentTenant = yield select(mdmModule.selectors.getTenant);\n }\n yield put(mdmModuleSearch.actions.updateState({...searchState, debounceTime}));\n}\n\nexport const keywordUpdatedPattern = ({type, payload = {}}) => {\n return type === mdmModuleSearch.constants.KEYWORD_UPDATED && !!payload?.saveToRecent;\n};\n\nexport function* createRecentSearchSaga() {\n yield takeLatest(\n [\n mdmModuleUI.constants.OPEN_ENTITY,\n SavedSearches.CREATE,\n SavedSearches.UPDATE,\n RecentSearches.CREATE,\n Search.CHANGE_PAGE,\n Search.CHANGE_ROWS_PER_PAGE,\n Search.EXPORT_RESULTS,\n keywordUpdatedPattern\n ],\n create\n );\n}\n\nexport function* loadRecentSearchesSaga() {\n yield takeLatest([RecentSearches.LOAD], loadRecentSearches);\n}\n\nexport function* deleteSelectedRecentSearchesSaga() {\n yield takeEvery(RecentSearches.DELETE_SELECTED_ITEMS_REQUEST, deleteSelectedRecentSearches);\n}\nexport function* deleteRecentSearchesItemSaga() {\n yield takeEvery(RecentSearches.DELETE_ITEM_REQUEST, deleteRecentSearchesItem);\n}\nexport function* applyRecentSearchSaga() {\n yield takeLatest([RecentSearches.APPLY_ITEM], applyRecentSearchItem);\n}\nconst sagas = [\n loadRecentSearchesSaga,\n deleteSelectedRecentSearchesSaga,\n createRecentSearchSaga,\n applyRecentSearchSaga,\n deleteRecentSearchesItemSaga\n];\n\nexport default sagas;\n","import {call, put, select, takeLatest} from 'redux-saga/effects';\nimport {getDtssEntityUrl, getEntity} from '@reltio/mdm-sdk';\nimport {isNil} from 'ramda';\nimport {Entity} from '../constants/actionTypes';\nimport {getEntity as getEntitySelector, getSelectedEntityUri} from '../selectors/entity';\nimport {setEntity, setEntityLoading, setSelectedEntityUri} from '../actions/entityActions';\nimport {showLoadEntityError} from '../utils/error';\nimport {callSearchRequestForCurrentTenant, enrichEntitiesWithDataTenant} from './searchSaga';\nimport {jsonRequest} from '../utils/network';\nimport {getDataTenant} from '../selectors/search';\n\nexport function* requestEntity(uri) {\n const dataTenant = yield select(getDataTenant);\n if (dataTenant) {\n const entities = yield call(callSearchRequestForCurrentTenant, jsonRequest, getDtssEntityUrl(uri));\n const enrichedEntities = yield call(enrichEntitiesWithDataTenant, entities);\n return enrichedEntities[0];\n } else {\n return yield call(getEntity, uri);\n }\n}\n\nexport function* loadEntity(action) {\n const uri = action.payload;\n const selectedEntityUri = yield select(getSelectedEntityUri);\n if (selectedEntityUri !== uri) {\n yield put(setSelectedEntityUri(uri));\n }\n const entity = yield select(getEntitySelector);\n yield put(setEntityLoading(true));\n if (isNil(uri)) {\n yield put(setEntity(null));\n } else if (!entity || entity.uri !== uri) {\n try {\n const entity = yield call(requestEntity, uri);\n yield put(setEntity(entity));\n } catch (e) {\n showLoadEntityError(e);\n yield put(setEntity(null));\n }\n }\n yield put(setEntityLoading(false));\n}\n\nexport function* loadEntitySaga() {\n yield takeLatest(Entity.LOAD_ENTITY_REQUEST, loadEntity);\n}\n\nconst sagas = [loadEntitySaga];\nexport default sagas;\n","import {put, select, takeLatest} from 'redux-saga/effects';\nimport {length, none, path, propEq} from 'ramda';\n\nimport {Facets} from '../constants/actionTypes';\nimport mdmModule from '@reltio/mdm-module';\nimport {getFacetsConfigs} from '../selectors/facet';\nimport {attributeUriToSearchUri, getEntityType} from '@reltio/mdm-sdk';\nimport {createFacets} from '../actions/facets';\nimport {\n createComplexAttributesConfig,\n getAttributesTree,\n getChildrenAttributes\n} from '../services/search/collectAttributes';\nimport {createAttributeFacetConfig, findFacetConfigByFieldName} from '../services/search/collectFacets';\n\nexport function* addDefaultFacetedAttributes(action) {\n const isTypeFacetAction = path(['payload', 'facetFieldName'], action) === 'type';\n const selectedEntityTypes = path(['payload', 'values'], action);\n if (!isTypeFacetAction || length(selectedEntityTypes) !== 1) {\n return;\n }\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const entityType = getEntityType(metadata, selectedEntityTypes[0]);\n const defaultFacetedAttributes = entityType.defaultFacetedAttributes || [];\n\n if (defaultFacetedAttributes.length > 0) {\n const facetsConfigs = yield select(getFacetsConfigs);\n const isNewFacet = ({fieldName}) => none(propEq('fieldName', fieldName), facetsConfigs);\n const attributeFacetConfigs = getAttributesTree(metadata, entityType).map((attrNode) =>\n createComplexAttributesConfig(metadata, attrNode, entityType.uri, '', createAttributeFacetConfig)\n );\n const facetsToAdd = defaultFacetedAttributes.reduce((facets, attrTypeUri) => {\n const facetFieldName = attributeUriToSearchUri(attrTypeUri);\n const facet = findFacetConfigByFieldName(attributeFacetConfigs, facetFieldName);\n if (facet && isNewFacet(facet)) {\n return facets.concat(facet.children ? getChildrenAttributes(facet).filter(isNewFacet) : facet);\n } else {\n return facets;\n }\n }, []);\n if (facetsToAdd.length > 0) {\n yield put(createFacets(facetsToAdd, true));\n }\n }\n}\n\nexport function* addDefaultFacetedAttributesSaga() {\n yield takeLatest(Facets.CHANGE_VALUES, addDefaultFacetedAttributes);\n}\nconst sagas = [addDefaultFacetedAttributesSaga];\nexport default sagas;\n","import {curry, equals, find, lensPath, map, path, pathSatisfies, pipe, set, when} from 'ramda';\nimport {\n findAllTemporaryRefEntityURI,\n getPathsWithTempUri,\n getUrisForSaving,\n replaceTemporaryRefEntityURI\n} from '@reltio/mdm-sdk';\n\nconst isRepointEntityUriPath = (path) => equals(path.slice(-3), ['operationParameters', 'attributeValue', 'entityUri']);\nconst getRepointEntityUriPaths = getUrisForSaving(isRepointEntityUriPath);\n\nconst findAllTemporaryRepointEntityUri = (object) =>\n pipe(\n getRepointEntityUriPaths,\n getPathsWithTempUri(object),\n map((pathL) => path(pathL, object))\n )(object);\n\nconst getEntityCreationList = (modifiedEntities, bulkActions) => {\n const refEntityUris = findAllTemporaryRefEntityURI(bulkActions);\n const repointEntityUris = findAllTemporaryRepointEntityUri(bulkActions);\n return refEntityUris.concat(repointEntityUris).filter((uri) => modifiedEntities[uri]);\n};\n\nconst replaceTemporaryRepointEntityUri = curry((tempUri, newUri, object) => {\n const getPath = pipe(\n getRepointEntityUriPaths,\n find((pathToObjectURI) => pathSatisfies((uri) => uri === tempUri, pathToObjectURI, object))\n );\n const path = getPath(object);\n return path ? set(lensPath(path), newUri, object) : object;\n});\n\nconst replaceTemporaryEntityUri = (tempUri, newUri, object) => {\n return pipe(\n replaceTemporaryRepointEntityUri(tempUri, newUri),\n when((updatedObject) => updatedObject === object, replaceTemporaryRefEntityURI(tempUri, newUri))\n )(object);\n};\n\nexport {getEntityCreationList, replaceTemporaryEntityUri};\n","import {\n assocPath,\n concat,\n curry,\n evolve,\n ifElse,\n isEmpty,\n partition,\n path,\n pathEq,\n pipe,\n repeat,\n objOf,\n __\n} from 'ramda';\nimport {getEntityId, isEmptyValue, wrapInQuotes} from '@reltio/mdm-sdk';\nimport {BULK_UPDATE_API_OPERATIONS, BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME} from '../../constants/constants';\nimport {buildQueryForAdvancedSearchGroups} from '../search/searchEngine';\n\nconst isRefEntityFilter = pathEq(['data', 'fieldName'], BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME);\nconst getReferencedEntityId = pipe(path(['values', 0, 'entityUri']), objOf('uri'), getEntityId, wrapInQuotes);\n\nconst buildRefEntityQuery = (refEntityFilters) => {\n return `in(${BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME}, ${refEntityFilters\n .map(getReferencedEntityId)\n .join(',')})`;\n};\n\nconst buildQueryGroupsFromFilters = (attributeFilters) => [{attributes: attributeFilters, operator: 'or'}];\n\nexport const buildConditionsQuery = (conditions, fieldName, operation) => {\n const [refEntityFilters, attributeFilters] = partition(isRefEntityFilter, conditions);\n const query = pipe(\n updateConditionsFieldNames(fieldName, operation),\n buildQueryGroupsFromFilters,\n buildQueryForAdvancedSearchGroups\n )(attributeFilters);\n const refEntityQuery = refEntityFilters.length ? buildRefEntityQuery(refEntityFilters) : '';\n return query && refEntityQuery ? `${query} and ${refEntityQuery}` : query || refEntityQuery;\n};\n\nconst removeCommonPath = (path1, path2) => {\n let i = 0;\n for (; i < Math.min(path1.length, path2.length); i++) {\n if (path1[i] !== path2[i]) {\n break;\n }\n }\n return [path1.slice(i), path2.slice(i)];\n};\nconst getPathTail = (path) => path.slice(-1);\n\nexport const updateConditionsFieldNames = curry((attributeFieldName, operation, conditions) => {\n return conditions.map((condition) => {\n const {\n data: {fieldName}\n } = condition;\n\n const fieldNamePath = fieldName.split('.');\n let [conditionNamePath, actionNamePath] = removeCommonPath(fieldNamePath, attributeFieldName.split('.'));\n let parentsLength = actionNamePath.length;\n\n if (operation === BULK_UPDATE_API_OPERATIONS.AddAttribute) {\n parentsLength--;\n }\n\n if (!conditionNamePath.length) {\n conditionNamePath = getPathTail(fieldNamePath);\n parentsLength++;\n }\n\n const parentsPrefix = repeat('parent.', Math.max(0, parentsLength)).join('');\n const newFieldName = `${parentsPrefix}attributes.${conditionNamePath.join('.')}`;\n return assocPath(['data', 'fieldName'], newFieldName, condition);\n });\n});\n\nexport const addConditionsToActionItem = curry((conditions, fieldName, actionItem) => {\n const conditionsQuery = buildConditionsQuery(conditions, fieldName, actionItem.operation);\n\n if (!isEmpty(conditionsQuery)) {\n return ifElse(\n pipe(path(['operationParameters', 'valueFilter']), isEmptyValue),\n assocPath(['operationParameters', 'valueFilter'], conditionsQuery),\n evolve({\n operationParameters: {\n valueFilter: concat(__, ` and (${conditionsQuery})`)\n }\n })\n )(actionItem);\n } else {\n return actionItem;\n }\n});\n","import {assoc, assocPath, cond, has, head, identity, ifElse, isNil, pick, pipe, prop, reject, T, when} from 'ramda';\nimport {isObject} from '../../utils/maybe';\nimport {\n getAddNestedAttributeFromAction,\n getAttributeValueFromAction,\n getAttributeValueToFindFromAction,\n getPinFromAction,\n isActionWithNestedAttrValue,\n isActionWithReferenceAttrValue,\n isActionWithSimpleAttrValueWithLookup\n} from './helpers';\nimport {BULK_UPDATE_API_OPERATIONS} from '../../constants/constants';\n\nconst selectComplexAttributeValue = (attributeValue) => {\n const value = pipe(\n pick(['pin']),\n assoc('value', selectSimpleAttributeValueWithLookup(attributeValue))\n )(attributeValue);\n\n if (isObject(value.value)) {\n return Object.keys(value.value).reduce((result, name) => {\n result.value = {\n ...result.value,\n [name]: value.value[name].map(selectComplexAttributeValue)\n };\n return result;\n }, value);\n } else {\n return value;\n }\n};\n\nconst selectReferenceAttributeValue = (attributeValue) => {\n const {refEntity = [], refRelation = []} = attributeValue;\n\n return {\n refEntity: pipe(head, pick(['objectURI']))(refEntity),\n refRelation: pipe(head, pick(['type']))(refRelation),\n ...selectComplexAttributeValue(attributeValue)\n };\n};\n\nconst selectSimpleAttributeValueWithLookup = when(\n isObject,\n ifElse(has('lookupCode'), prop('lookupCode'), prop('value'))\n);\n\nexport const buildActionAttributeValue = cond([\n [isActionWithNestedAttrValue, pipe(getAttributeValueFromAction, selectComplexAttributeValue)],\n [isActionWithReferenceAttrValue, pipe(getAttributeValueFromAction, selectReferenceAttributeValue)],\n [isActionWithSimpleAttrValueWithLookup, pipe(getAttributeValueFromAction, selectSimpleAttributeValueWithLookup)],\n [T, getAttributeValueFromAction]\n]);\n\nconst buildValueFilter = (valueFilter = '') => {\n return `equals(value, '${selectSimpleAttributeValueWithLookup(valueFilter)}')`;\n};\n\nconst pickAttributeValue = pipe(buildActionAttributeValue, assocPath(['operationParameters', 'attributeValue']));\n\nconst pickPin = ifElse(\n getPinFromAction,\n () => assocPath(['operationParameters', 'pin'], true),\n () => identity\n);\n\nconst pickAddNestedAttribute = ifElse(\n getAddNestedAttributeFromAction,\n () => assocPath(['operationParameters', 'addNestedAttribute'], true),\n () => identity\n);\n\nconst pickValueFilter = pipe(\n getAttributeValueToFindFromAction,\n ifElse(isNil, () => identity, pipe(buildValueFilter, assocPath(['operationParameters', 'valueFilter'])))\n);\n\nconst pickReferencedEntity = pipe(\n getAttributeValueFromAction,\n prop('entityUri'),\n assocPath(['operationParameters', 'referencedEntity', 'uri'])\n);\n\nconst createBaseItem = (attributeURI, operation) => {\n return {\n operationParameters: {\n attributeURI\n },\n operation\n };\n};\n\nexport const createAddItem = (action, attributeURI) => {\n return pipe(\n createBaseItem,\n pickAttributeValue(action),\n pickPin(action),\n pickAddNestedAttribute(action)\n )(attributeURI, BULK_UPDATE_API_OPERATIONS.AddAttribute);\n};\n\nexport const createDeleteItem = (action, attributeURI) => {\n return pipe(createBaseItem, pickValueFilter(action))(attributeURI, BULK_UPDATE_API_OPERATIONS.DeleteAttribute);\n};\n\nexport const createUpdateItem = (action, attributeURI) => {\n return pipe(\n createBaseItem,\n pickAttributeValue(action),\n pickPin(action),\n pickValueFilter(action)\n )(attributeURI, BULK_UPDATE_API_OPERATIONS.UpdateAttribute);\n};\n\nexport const createRepointItem = (action, attributeURI) => {\n return pipe(createBaseItem, pickReferencedEntity(action))(\n attributeURI,\n BULK_UPDATE_API_OPERATIONS.RepointReferencedEntity\n );\n};\n\nconst createSpecialItem = (operationParameters, operation) => {\n return reject(isNil, {\n operationParameters,\n operation\n });\n};\n\nexport const createAddTagItem = (action) => {\n return createSpecialItem(\n {\n tags: [getAttributeValueFromAction(action)]\n },\n BULK_UPDATE_API_OPERATIONS.AddTags\n );\n};\n\nexport const createReplaceTagItem = (action) => {\n return createSpecialItem(\n {\n newValue: getAttributeValueFromAction(action),\n oldValue: getAttributeValueToFindFromAction(action)\n },\n BULK_UPDATE_API_OPERATIONS.ReplaceTag\n );\n};\n\nexport const createDeleteTagItem = (action) => {\n return createSpecialItem(\n {\n tags: [getAttributeValueToFindFromAction(action)]\n },\n BULK_UPDATE_API_OPERATIONS.DeleteTags\n );\n};\n\nexport const createClearTagsItem = () => {\n return createSpecialItem(null, BULK_UPDATE_API_OPERATIONS.ClearTags);\n};\n","import {always, chain, cond, curry, ifElse, map, pathOr, pipe, propEq, both} from 'ramda';\nimport {addGlobalFilterToQuery, EntityAttrTypes, searchUriToAttrUri} from '@reltio/mdm-sdk';\n\nimport {BULK_UPDATE_OPERATIONS, BULK_UPDATE_SELECTION_MODES} from '../../constants/constants';\nimport {flattenGroupAction, getFieldNameFromAction, isGroupAction} from './helpers';\nimport {buildQuery} from '../search/searchEngine';\nimport {addConditionsToActionItem} from './conditions';\nimport {\n createAddItem,\n createAddTagItem,\n createClearTagsItem,\n createDeleteItem,\n createDeleteTagItem,\n createReplaceTagItem,\n createRepointItem,\n createUpdateItem\n} from './actionItems';\n\nexport const buildBulkUpdateRequestBody = (\n entityTypeUri,\n objects = {},\n actions = [],\n searchParams = [],\n options = {}\n) => {\n return {\n objects: buildObjects(objects, searchParams, options),\n actions: buildActions(entityTypeUri, actions)\n };\n};\n\nexport const buildObjects = (objects, searchParams = [], options = {}) => {\n const {selectionMode, selectedEntities = []} = objects;\n const {searchOptions, activityFilter, globalFilter} = options;\n\n if (selectionMode === BULK_UPDATE_SELECTION_MODES.include) {\n return {list: selectedEntities, activeness: activityFilter};\n } else {\n const filter = pipe(buildQuery, addGlobalFilterToQuery(globalFilter))(searchParams);\n return {\n filter,\n excludeList: selectedEntities,\n options: searchOptions,\n activeness: activityFilter\n };\n }\n};\n\nexport const buildActions = curry((entityTypeUri, actions) => {\n return chain(\n ifElse(isGroupAction, pipe(flattenGroupAction, buildActions(entityTypeUri)), buildAction(entityTypeUri))\n )(actions);\n});\n\nconst buildAction = curry((entityTypeUri, action) => {\n const conditions = pathOr([], ['operationParameters', 'conditions'], action);\n const fieldName = getFieldNameFromAction(action);\n\n return pipe(buildActionItems(entityTypeUri), map(addConditionsToActionItem(conditions, fieldName)))(action);\n});\n\nconst operationEquals = curry((operation) => propEq('operation', operation));\n\nexport const buildActionItems = curry((entityTypeUri, action) => {\n const fieldName = getFieldNameFromAction(action);\n const attributeURI = fieldName.includes('.') ? searchUriToAttrUri(fieldName, entityTypeUri) : fieldName;\n const isTags = fieldName === EntityAttrTypes.tags.uri;\n return cond([\n [both(always(isTags), operationEquals(BULK_UPDATE_OPERATIONS.AddNew)), () => [createAddTagItem(action)]],\n [both(always(isTags), operationEquals(BULK_UPDATE_OPERATIONS.Clear)), () => [createClearTagsItem()]],\n [\n both(always(isTags), operationEquals(BULK_UPDATE_OPERATIONS.ReplaceAllWith)),\n () => [createClearTagsItem(), createAddTagItem(action)]\n ],\n [\n both(always(isTags), operationEquals(BULK_UPDATE_OPERATIONS.FindAndReplace)),\n () => [createReplaceTagItem(action)]\n ],\n [\n both(always(isTags), operationEquals(BULK_UPDATE_OPERATIONS.FindAndRemove)),\n () => [createDeleteTagItem(action)]\n ],\n [operationEquals(BULK_UPDATE_OPERATIONS.AddNew), () => [createAddItem(action, attributeURI)]],\n [operationEquals(BULK_UPDATE_OPERATIONS.Clear), () => [createDeleteItem(action, attributeURI)]],\n [\n operationEquals(BULK_UPDATE_OPERATIONS.ReplaceAllWith),\n () => [createDeleteItem(action, attributeURI), createAddItem(action, attributeURI)]\n ],\n [operationEquals(BULK_UPDATE_OPERATIONS.FindAndReplace), () => [createUpdateItem(action, attributeURI)]],\n [operationEquals(BULK_UPDATE_OPERATIONS.FindAndRemove), () => [createDeleteItem(action, attributeURI)]],\n [operationEquals(BULK_UPDATE_OPERATIONS.RepointReference), () => [createRepointItem(action, attributeURI)]]\n ])(action);\n});\n\nexport default {buildBulkUpdateRequestBody};\n","import {call, delay, fork, put, select, take, takeEvery, takeLatest} from 'redux-saga/effects';\nimport {not, pipe, prop, uniq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdmModule, {ui as mdmModuleUI} from '@reltio/mdm-module';\nimport {isAttributeSearchUri, saveTemporaryEntities} from '@reltio/mdm-sdk';\nimport {BulkUpdate, Search, UI} from '../constants/actionTypes';\nimport {\n changeBulkUpdatePage,\n initBulkUpdate,\n setBulkUpdateLoading,\n updateBulkUpdateEntities,\n setBulkUpdateTotal,\n addConditionAfter,\n changeCondition,\n clearCondition,\n deleteCondition,\n setBulkUpdateRequestPending\n} from '../actions/bulkUpdateActions';\nimport {trackException} from '../actions/googleAnalyticsActions';\n\nimport {getActiveEntityTypeTab, getSearchResultsColumnsForEntityType} from '../selectors/ui';\nimport {\n getBulkUpdateActions,\n getBulkUpdateEntities,\n getBulkUpdateEntityTypeUri,\n getBulkUpdateFilterText,\n getBulkUpdateObjects,\n getBulkUpdateOperation,\n getBulkUpdatePage,\n getBulkUpdateRowsPerPage,\n getBulkUpdateSelectedColumns,\n getBulkUpdateSortField,\n getBulkUpdateSortOrder,\n getBulkUpdateValidClearedActions\n} from '../selectors/bulkUpdate';\nimport {\n getAllSearchParams,\n getPage,\n getRowsPerPage,\n getSearchResults,\n getSortField,\n getSortOrder,\n getTotal\n} from '../selectors/search';\nimport {\n buildEntitiesByUrisRequest,\n buildEntitiesRequestOptions,\n buildTotalParams,\n collectAdditionalSelect\n} from '../services/search/searchEngine';\nimport {jsonRequest} from '../utils/network';\nimport {buildSelectFromColumns} from '../services/search/searchResults';\nimport {getEntityCreationList, replaceTemporaryEntityUri} from '../services/bulkUpdate/tempEntities';\nimport {toggleQueryBuilderAttributeSelect} from './queryBuilderSaga';\nimport {showBulkUpdate, showErrorNotification, showInfoNotificationWithAction} from '../actions/uiActions';\nimport {buildBulkUpdateRequest, buildDeleteProfilesRequest} from '../services/bulkUpdate/request';\nimport {BULK_UPDATE_COMMON_OPERATIONS, ENTITIES_POST_SEARCH_URL, ENTITIES_TOTAL_URL} from '../constants/constants';\nimport {getInitialSearchResultsColumns} from './uiSaga';\n\nexport function* init(action) {\n const open = action.payload;\n if (open) {\n const entityTypeUri = yield select(getActiveEntityTypeTab);\n let entities;\n do {\n entities = yield select(getSearchResults, {entityTypeUri});\n if (entities) break;\n yield take(Search.UPDATE_ENTITIES);\n } while (!entities);\n const bulkUpdateEntityTypeUri = yield select(getBulkUpdateEntityTypeUri);\n const page = yield select(getPage, {entityTypeUri});\n const rowsPerPage = yield select(getRowsPerPage, {entityTypeUri});\n const sortOrder = (yield select(getSortOrder, {entityTypeUri})) || undefined;\n const sortField = yield select(getSortField, {entityTypeUri});\n const initialColumns = yield call(getInitialSearchResultsColumns);\n const initialSpecialColumns = initialColumns[bulkUpdateEntityTypeUri].filter(\n pipe(prop('id'), isAttributeSearchUri, not)\n );\n const selectedColumns = entityTypeUri\n ? yield select(getSearchResultsColumnsForEntityType, entityTypeUri)\n : initialSpecialColumns;\n const total = yield select(getTotal, {entityTypeUri});\n yield put(\n initBulkUpdate({\n page,\n rowsPerPage,\n sortOrder,\n sortField,\n selectedColumns,\n total,\n entities\n })\n );\n }\n}\n\nexport function* searchEntities(allParams) {\n const metadata = yield select(mdmModule.selectors.getMetadata);\n const page = yield select(getBulkUpdatePage);\n const rowsPerPage = yield select(getBulkUpdateRowsPerPage);\n const sortOrder = yield select(getBulkUpdateSortOrder);\n const sortField = yield select(getBulkUpdateSortField);\n\n const columnsSelect = yield call(collectColumnsSelect);\n const selectParam = uniq(columnsSelect.concat(collectAdditionalSelect(metadata, allParams)));\n\n const globalOptions = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const options = {\n page,\n rowsPerPage,\n sortOrder,\n sortField,\n forceOvOnly: true,\n ...globalOptions,\n select: selectParam\n };\n\n const url = `/${ENTITIES_POST_SEARCH_URL}`;\n const entitiesOptions = buildEntitiesRequestOptions(allParams, options);\n\n yield put(setBulkUpdateLoading(true));\n try {\n const result = yield call(jsonRequest, url, entitiesOptions);\n yield put(updateBulkUpdateEntities(result));\n } catch (e) {\n yield put(updateBulkUpdateEntities([]));\n yield put(trackException(e));\n }\n yield put(setBulkUpdateLoading(false));\n}\n\nexport function* applyPagination() {\n const filterText = yield select(getBulkUpdateFilterText);\n const allParams = yield call(getBulkUpdateSearchParams, filterText);\n yield fork(searchEntities, allParams);\n}\n\nexport function* updateEntities(action = {}) {\n const {debounceTime} = action.payload || {};\n if (debounceTime) {\n yield delay(debounceTime);\n }\n const filterText = yield select(getBulkUpdateFilterText);\n const allParams = yield call(getBulkUpdateSearchParams, filterText);\n yield put(changeBulkUpdatePage(0));\n yield fork(updateTotal, allParams);\n}\n\nexport function* updateTotal(allParams) {\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const searchParams = buildTotalParams(allParams, [], options);\n\n try {\n const result = yield call(jsonRequest, `/${ENTITIES_TOTAL_URL}`, {\n method: 'POST',\n body: JSON.stringify(searchParams)\n });\n yield put(setBulkUpdateTotal(result.total));\n } catch (e) {\n yield put(setBulkUpdateTotal(0));\n yield put(trackException(e));\n }\n}\n\nexport function* updateCurrentEntities() {\n const entities = yield select(getBulkUpdateEntities);\n const entitiesUris = entities.map((entity) => entity.uri);\n const columnsSelect = yield call(collectColumnsSelect);\n const filterText = yield select(getBulkUpdateFilterText);\n const searchParams = yield call(getBulkUpdateSearchParams, filterText);\n const globalOptions = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildEntitiesByUrisRequest(entitiesUris, searchParams, {\n select: columnsSelect,\n ...globalOptions\n });\n yield put(setBulkUpdateLoading(true));\n try {\n const result = yield call(jsonRequest, '/' + request.url, request.options);\n yield put(updateBulkUpdateEntities(result));\n } catch (e) {\n yield put(updateBulkUpdateEntities([]));\n yield put(trackException(e));\n }\n yield put(setBulkUpdateLoading(false));\n}\n\nexport function* runBulkRequest(request) {\n try {\n yield call(jsonRequest, request.url, request.options);\n yield put(showBulkUpdate(false));\n yield put(\n showInfoNotificationWithAction({\n message: i18n.text(\n \"Bulk update is currently in progress. You'll receive an email notification once completed.\\nGo to Tenant Management to view the status.\"\n ),\n actionLabel: i18n.text('Tenant Management'),\n actionToDispatch: mdmModuleUI.actions.openConsoleApp('Tenant Management', 'jobs/pending'),\n autoHideDuration: 10000\n })\n );\n } catch (e) {\n let errorMessage = e;\n if (!!e && typeof e === 'object' && 'errorCode' in e) {\n if (e.errorCode === 441) {\n errorMessage = i18n.text(\n 'You already have a bulk update job in progress. You can start a new job when the current job is finished.\\nWe will send you an update via email once the current job is finished.'\n );\n } else {\n errorMessage = e.errorMessage || i18n.text('Something went wrong...');\n }\n }\n yield put(showErrorNotification(errorMessage));\n }\n}\n\nexport function* confirmBulkUpdateOperation() {\n const bulkOperation = yield select(getBulkUpdateOperation);\n\n if (bulkOperation === BULK_UPDATE_COMMON_OPERATIONS.UpdateProfiles) {\n yield call(confirmBulkUpdate);\n } else if (bulkOperation === BULK_UPDATE_COMMON_OPERATIONS.DeleteProfiles) {\n yield call(confirmDeleteProfiles);\n }\n}\n\nexport function* confirmBulkUpdate() {\n yield put(setBulkUpdateRequestPending(true));\n\n const entityTypeUri = yield select(getBulkUpdateEntityTypeUri);\n const objects = yield select(getBulkUpdateObjects);\n let actions = yield select(getBulkUpdateValidClearedActions);\n const searchParams = yield call(getBulkUpdateSearchParams);\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const modifiedEntities = yield select(mdmModule.selectors.getModifiedEntities);\n const rootTemporaryEntityUris = getEntityCreationList(modifiedEntities, actions);\n if (rootTemporaryEntityUris.length > 0) {\n const mapping = yield call(saveTemporaryEntities, modifiedEntities, rootTemporaryEntityUris);\n for (const [tempUri, newUri] of Object.entries(mapping)) {\n actions = replaceTemporaryEntityUri(tempUri, newUri, actions);\n }\n }\n\n const request = buildBulkUpdateRequest(entityTypeUri, objects, actions, searchParams, options);\n yield call(runBulkRequest, request);\n\n yield put(setBulkUpdateRequestPending(false));\n}\n\nexport function* confirmDeleteProfiles() {\n yield put(setBulkUpdateRequestPending(true));\n\n const objects = yield select(getBulkUpdateObjects);\n const searchParams = yield call(getBulkUpdateSearchParams);\n const options = yield select(mdmModule.selectors.getGlobalSearchRequestOptions);\n const request = buildDeleteProfilesRequest(objects, searchParams, options);\n yield call(runBulkRequest, request);\n yield put(setBulkUpdateRequestPending(false));\n}\n\nexport function* getBulkUpdateSearchParams(filterText) {\n const allParams = yield select(getAllSearchParams);\n const entityTypeUri = yield select(getBulkUpdateEntityTypeUri);\n const entityTypeFilter = {\n fieldName: 'type',\n filter: 'equals',\n values: [entityTypeUri]\n };\n let searchParams = allParams.filter((param) => param.fieldName !== 'type').concat(entityTypeFilter);\n if (filterText) {\n searchParams = searchParams.concat({\n fieldName: 'attributes',\n filter: 'containsWordStartingWith',\n values: [filterText]\n });\n }\n return searchParams;\n}\n\nexport function* collectColumnsSelect() {\n const entityTypeColumns = yield select(getBulkUpdateSelectedColumns);\n return buildSelectFromColumns(entityTypeColumns);\n}\n\nexport function* toggleConditionSelect(action) {\n const {groupId, attributeId, selectInfo} = action.payload;\n\n const groups = yield select(getBulkUpdateActions);\n const actions = {\n addAttributeAfter: addConditionAfter,\n changeAttribute: changeCondition,\n clearAttribute: clearCondition,\n deleteAttribute: deleteCondition\n };\n yield call(toggleQueryBuilderAttributeSelect, {\n groups,\n attributesPropName: 'conditions',\n groupId,\n attributeId,\n selectInfo,\n actions\n });\n}\n\nexport function* initSaga() {\n yield takeLatest(UI.SHOW_BULK_UPDATE, init);\n}\n\nexport function* paginationSaga() {\n yield takeLatest(\n [BulkUpdate.CHANGE_PAGE, BulkUpdate.CHANGE_ROWS_PER_PAGE, BulkUpdate.CHANGE_SORT],\n applyPagination\n );\n}\n\nexport function* updateEntitiesSaga() {\n yield takeLatest(BulkUpdate.SET_FILTER_TEXT, updateEntities);\n}\n\nexport function* updateBulkUpdateCurrentEntitiesSaga() {\n yield takeLatest(BulkUpdate.UPDATE_CURRENT_ENTITIES, updateCurrentEntities);\n}\n\nexport function* toggleConditionSelectSaga() {\n yield takeEvery(BulkUpdate.TOGGLE_CONDITION_SELECT, toggleConditionSelect);\n}\n\nexport function* confirmBulkUpdateSaga() {\n yield takeEvery(BulkUpdate.CONFIRM, confirmBulkUpdateOperation);\n}\n\nconst sagas = [\n initSaga,\n paginationSaga,\n updateEntitiesSaga,\n updateBulkUpdateCurrentEntitiesSaga,\n toggleConditionSelectSaga,\n confirmBulkUpdateSaga\n];\nexport default sagas;\n","import {buildBulkUpdateRequestBody, buildObjects} from './requestBody';\r\n\r\nexport function buildBulkUpdateRequest(entityTypeUri, objects, actions, searchParams, options) {\r\n const body = buildBulkUpdateRequestBody(entityTypeUri, objects, actions, searchParams, options);\r\n\r\n return {\r\n url: '/entities/_update?sendMail=true',\r\n options: {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport function buildDeleteProfilesRequest(objects, searchParams, options) {\r\n const body = {\r\n objects: buildObjects(objects, searchParams, options)\r\n };\r\n\r\n return {\r\n url: '/entities/_delete?sendMail=true',\r\n options: {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n };\r\n}\r\n","import {omit} from 'ramda';\nimport {looseEquals} from '@reltio/mdm-sdk';\n\nexport const equalsState = (newState, savedState) =>\n looseEquals(omit(['query'], newState), omit(['query'], savedState));\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {DynamicModuleLoader} from 'redux-dynamic-modules-react';\nimport {identity} from 'ramda';\nimport App from './components/App/App';\nimport getModule from './getModule';\n\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ViewIdContext} from '@reltio/components';\nimport {userPreferencesComparator} from '@reltio/mdm-sdk';\nimport {equalsState} from './helpers';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'searchTable',\n disableGlobal: true,\n seed: 'srch'\n});\n\nuserPreferencesComparator.register('searchState', equalsState);\n\nconst SearchView = ({config, onResize = identity}) => {\n return (\n <ViewIdContext.Provider value={config.id}>\n <DynamicModuleLoader modules={[getModule()]}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector handleHeight onResize={onResize} />\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <App />\n </LocalizationProvider>\n </StylesProvider>\n </DynamicModuleLoader>\n </ViewIdContext.Provider>\n );\n};\n\nSearchView.propTypes = {\n config: PropTypes.object,\n onResize: PropTypes.func\n};\n\nexport default SearchView;\n","import {combineReducers} from 'redux';\n\nimport facetsReducer from './reducers/facetsReducer';\nimport searchReducer from './reducers/searchReducer';\nimport uiReducer from './reducers/uiReducer';\nimport advancedSearchReducer from './reducers/advancedSearchReducer';\nimport savedSearchesReducer from './reducers/savedSearchesReducer';\nimport recentSearchesReducer from './reducers/recentSearchesReducer';\nimport entityReducer from './reducers/entityReducer';\nimport bulkUpdateReducer from './reducers/bulkUpdateReducer';\n\nimport facetsSaga from './sagas/facetsSaga';\nimport searchSaga from './sagas/searchSaga';\nimport uiSaga from './sagas/uiSaga';\nimport advancedSearchSaga from './sagas/advancedSearchSaga';\nimport saveStateSaga from './sagas/saveStateSaga';\nimport savedSearchesSaga from './sagas/savedSearchesSaga';\nimport recentSearchesSaga from './sagas/recentSearchesSaga';\nimport currentSavedSearchSaga from './sagas/currentSavedSearchSaga';\nimport entitySaga from './sagas/entitySaga';\nimport defaultFacetedAttributesSaga from './sagas/defaultFacetedAttributesSaga';\nimport bulkUpdateSaga from './sagas/bulkUpdateSaga';\n\nimport {appId} from './constants/constants';\nimport {explorerModuleAdded} from './actions/moduleActions';\n\nconst getModule = () => ({\n id: appId,\n reducerMap: {\n [appId]: combineReducers({\n ui: uiReducer,\n search: searchReducer,\n facets: facetsReducer,\n advancedSearch: advancedSearchReducer,\n savedSearches: savedSearchesReducer,\n recentSearches: recentSearchesReducer,\n entity: entityReducer,\n bulkUpdate: bulkUpdateReducer\n })\n },\n sagas: [\n ...searchSaga,\n ...facetsSaga,\n ...uiSaga,\n ...advancedSearchSaga,\n ...savedSearchesSaga,\n ...recentSearchesSaga,\n ...currentSavedSearchSaga,\n saveStateSaga,\n ...entitySaga,\n ...defaultFacetedAttributesSaga,\n ...bulkUpdateSaga\n ],\n initialActions: [explorerModuleAdded()]\n});\n\nexport default getModule;\n","import {Module} from '../constants/actionTypes';\n\nexport const explorerModuleAdded = () => ({\n type: Module.EXPLORER_MODULE_ADDED\n});\n","export default {\n EXPLORER_MODULE_ADDED: 'EXPLORER_MODULE_ADDED'\n};\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _styles = _interopRequireDefault(require(\"./styles.less\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nvar _math = require(\"../_utils/math\");\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar commonProps = {\n fill: 'none',\n strokeWidth: 4,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n strokeMiterlimit: 10,\n d: \"\\n M 28.398, 39.519\\n c -14.533, 8.989-13.168, 29.294, 6.284, 32.279\\n c 20.682, 3.175, 43.752-18.226, 46.132-36.005\\n c 2.223-16.609-11.404-21.941-21.06-4.372\\n c -4.959, 9.022-7.28, 22.401-1.362, 35.663\\n c 9.141, 20.487, 31.309, 15.551, 17.568-8.284\\n C 66.9, 43.086, 45.263, 29.087, 28.398, 39.519 z\\n \"\n};\nvar colorTable = [\n// ease in\n[0.0, 0xF15A31], [0.2, 0xFFD31B], [0.33, 0xA6CE42], [0.4, 0x007AC1], [0.45, 0x007AC1], [0.5, 0xF15A31],\n// ease out\n[0.55, 0x007AC1], [0.6, 0x007AC1], [0.67, 0xA6CE42], [0.8, 0xFFD31B], [1.0, 0xF15A31]];\nvar ANIMATION_ID = null;\nfunction startAnimation(el) {\n if (typeof global.requestAnimationFrame !== 'function') {\n return;\n }\n var startTime = Date.now();\n var pathWidth = 450;\n var speed = 4;\n var stroke = '#ededed';\n var offset = 450;\n function tick() {\n var now = Date.now();\n var dt = (now - startTime) % 6000 / 6000;\n stroke = (0, _math.lerpTable)(1, dt, colorTable, false, _math.lerpColor);\n offset = offset - speed < 0 ? pathWidth : offset - speed;\n el.style.cssText = \"stroke-dashoffset: \".concat(offset, \"; stroke: \").concat(stroke, \";\");\n ANIMATION_ID = global.requestAnimationFrame(tick);\n }\n tick();\n}\nfunction stopAnimation() {\n if (typeof global.cancelAnimationFrame !== 'function') {\n return;\n }\n if (ANIMATION_ID) {\n global.cancelAnimationFrame(ANIMATION_ID);\n ANIMATION_ID = null;\n }\n}\nvar ReltioProgress = /*#__PURE__*/function (_React$Component) {\n (0, _inherits2[\"default\"])(ReltioProgress, _React$Component);\n var _super = _createSuper(ReltioProgress);\n function ReltioProgress() {\n (0, _classCallCheck2[\"default\"])(this, ReltioProgress);\n return _super.apply(this, arguments);\n }\n (0, _createClass2[\"default\"])(ReltioProgress, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n startAnimation(this._progressPath);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n stopAnimation();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props,\n size = _this$props.size,\n className = _this$props.className;\n var classes = (0, _classnames[\"default\"])(_styles[\"default\"].root, className);\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n className: classes,\n width: size,\n height: size,\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"xMidYMid meet\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", (0, _extends2[\"default\"])({}, commonProps, {\n stroke: \"rgba(0, 0, 0, 0.05)\"\n })), /*#__PURE__*/_react[\"default\"].createElement(\"path\", (0, _extends2[\"default\"])({}, commonProps, {\n ref: function ref(n) {\n return _this._progressPath = n;\n },\n className: _styles[\"default\"].progressPath\n })));\n }\n }]);\n return ReltioProgress;\n}(_react[\"default\"].Component);\nexports[\"default\"] = ReltioProgress;\nReltioProgress.defaultProps = {\n size: 80,\n className: ''\n};\nReltioProgress.propTypes = {\n size: _propTypes[\"default\"].number,\n className: _propTypes[\"default\"].string\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _loadStyles = _interopRequireDefault(require(\"../_utils/loadStyles.js\"));\n(0, _loadStyles[\"default\"])(\"<style>.ReltioProgress__root_3VJMk{display:inline-block}.ReltioProgress__progressPath_1BzPW{stroke-dasharray:50,400;will-change:stroke,stroke-dashoffset}</style>\");\nvar _default = {\n \"root\": \"ReltioProgress__root_3VJMk\",\n \"progressPath\": \"ReltioProgress__progressPath_1BzPW\"\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lerp = lerp;\nexports.lerpColor = lerpColor;\nexports.lerpTable = lerpTable;\nfunction lerp(x, x0, x1, y0, y1) {\n var t = (x - x0) / (x1 - x0);\n return y0 + t * (y1 - y0);\n}\nfunction lerpColor(x, x0, x1, y0, y1) {\n var b0 = y0 & 0xff;\n var g0 = (y0 & 0xff00) >> 8;\n var r0 = (y0 & 0xff0000) >> 16;\n var b1 = y1 & 0xff;\n var g1 = (y1 & 0xff00) >> 8;\n var r1 = (y1 & 0xff0000) >> 16;\n var r = Math.floor(lerp(x, x0, x1, r0, r1));\n var g = Math.floor(lerp(x, x0, x1, g0, g1));\n var b = Math.floor(lerp(x, x0, x1, b0, b1));\n return '#' + ('00000' + (r << 16 | g << 8 | b).toString(16)).slice(-6);\n}\nfunction lerpTable(vIndex, tValue, table, canExtrapolate) {\n var lerpFunc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : lerp;\n var rowCount = table.length;\n for (var i = 0; i < rowCount; ++i) {\n var a = table[i][0];\n if (i === 0 && tValue < a) {\n if (canExtrapolate) {\n return lerpFunc(tValue, a, table[i + 1][0], table[i][vIndex], table[i + 1][vIndex]);\n }\n return table[i][vIndex];\n }\n if (i === rowCount - 1 && tValue >= a) {\n if (canExtrapolate) {\n return lerpFunc(tValue, table[i - 1][0], a, table[i - 1][vIndex], table[i][vIndex]);\n }\n return table[i][vIndex];\n }\n if (tValue >= a && tValue <= table[i + 1][0]) {\n return lerpFunc(tValue, a, table[i + 1][0], table[i][vIndex], table[i + 1][vIndex]);\n }\n }\n return 0;\n}"],"names":["_interopRequireDefault","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","_excluded","CollapseRoot","name","slot","overridesResolver","props","styles","ownerState","root","orientation","state","entered","in","collapsedSize","hidden","theme","height","overflow","transition","transitions","create","width","visibility","CollapseWrapper","wrapper","display","CollapseWrapperInner","wrapperInner","Collapse","inProps","ref","addEndListener","children","className","collapsedSizeProp","component","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent","other","classes","slots","useUtilityClasses","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","clearTimeout","current","nodeRef","handleRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","undefined","getWrapperSize","handleEnter","isAppearing","position","handleEntering","wrapperSize","duration","transitionDuration","transitionTimingFunction","mode","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","next","setTimeout","childProps","as","muiSupportAuto","getCollapseUtilityClass","useStyles","makeStyles","basicViewPaper","flexDirection","basicView","BasicView","forwardRef","otherProps","Paper","displayName","paper","minHeight","title","padding","fontSize","fontWeight","letterSpacing","lineHeight","content","contentText","marginBottom","actionButtons","paddingTop","marginLeft","discardButton","marginRight","open","onCancel","cancelCaption","i18n","onDiscard","discardCaption","onSave","saveCaption","disabledSave","Dialog","onClose","paperScrollPaper","DialogTitle","DialogContent","DialogContentText","DialogActions","disableSpacing","Button","onClick","color","disabled","autoFocus","NoData","message","ErrorBoundary","React","constructor","super","this","error","componentDidCatch","setState","console","render","container","justifyContent","BasicViewHeader","classnames","nthLiStyles","range","reduce","acc","i","paddingLeft","tooltip","tooltipContent","minWidth","margin","listStyleType","marginTop","pathToTitle","tooltipProps","length","last","map","label","key","Tooltip","disableFocusListener","profileBandWrapper","flexShrink","profileBand","alignItems","backgroundColor","boxShadow","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","profileInfo","flex","badge","palette","text","primary","wordBreak","secondaryLabel","businessCard","secondary","specialInfo","flexWrap","entityType","entityId","whiteSpace","cursor","textDecoration","entity","renderLabel","identity","metadata","useMdmMetadata","showEntityId","useMdmShowEntityId","handleCopyEntityIdToClipboard","useCallback","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","uri","EntityAvatar","avatarClassName","imageClassName","Typography","variant","EntityTypeBadge","isTempUri","image","info","textOverflow","main","link","thirdRow","entityIdLabel","entityIdValue","ProfileCardContent","secondaryLabelClass","labelClass","EntityUriLink","value","getEntityUriForLink","ExpandedValueTooltip","placement","showOnExceededHeight","transform","wave","top","left","right","bottom","animation","avatar","borderRadius","ProfileCardPlaceholder","memo","containerClass","withMuiSkin","CreatableSelect","Option","innerProps","innerRef","isFocused","isSelected","selectProps","MenuItem","classNames","option","selected","Checkbox","checked","propTypes","PropTypes","id","onMouseMove","onMouseOver","tabIndex","isRequired","placeholder","clearIndicator","spacing","dropdownIndicator","MultiSelect","creatable","getOptions","loadingIndicator","components","componentsProp","classesProp","stylesProp","onChange","onChangeProp","onInputChange","onInputChangeProp","menuPlacement","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","useState","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","TextFieldProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","options","ClearIndicator","Control","DropdownIndicator","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","noOptionsMessage","singleValue","menu","group","groupHeading","indicatorsContainer","input","menuList","menuPortal","multiValueLabel","multiValueRemove","menuPortalTarget","menuShouldBlockScroll","captureMenuScroll","getOptionValue","isSearchable","inputRef","MapControlContainer","controlElement","setControlElement","useEffect","controlDiv","document","createElement","divIndex","controls","push","removeAt","classList","add","createPortal","viewBox","xmlns","fill","stroke","strokeWidth","fillRule","opacity","xmlnsXlink","xlinkHref","mask","fillOpacity","button","icon","ButtonWithTooltip","withTooltip","TopRightMapControls","drawingMode","drawingModes","hasActiveOverlay","onDrawingModeChanged","onClearOverlay","changeDrawingModeTo","tooltipTitle","HighlightOff","Icon","MAP_DRAWING_MODES","RadiusIcon","DrawIcon","getIcon","alignSelf","checkbox","boxSizing","TopCenterMapControls","isSearchOnMapMove","onChangeIsSearchOnMapMove","FormControlLabel","event","target","getMapBoundsPolygon","bounds","getBounds","ne","getNorthEast","sw","getSouthWest","neLat","lat","neLng","lng","swLat","swLng","additionalPoint1","additionalPoint2","center","getCenter","getDrawingMode","window","google","maps","drawing","OverlayType","CIRCLE","POLYGON","fitMapBoundsForOverlay","overlay","existingBounds","path","LatLngBounds","forEach","extend","LatLng","fitBounds","popper","maxWidth","hoveredMarkerIcon","svg2Url","markerIcon","marker","popperAnchor","useRef","hovered","setHovered","activeEntityUri","useContext","EntityMarkerContext","pathEq","point","setHoveredDebounced","debounce","onMouseOut","handleClick","Popper","anchorEl","modal","ProfileCard","url","scaledSize","Size","visible","alignBottom","pane","pixelOffset","closeBoxURL","enableEventPropagation","disableAutoPan","mapControlContainer","libraries","ReltioMap","markers","mapKey","defaultZoom","defaultCenter","loadingElement","isSearchEnabled","activeOverlay","overlayOptions","markerClusterer","markerClustererOptions","mapOptions","mapContainerClassName","onMapBoundsChanged","noop","onOverlayUpdated","onMarkerClicked","isLoaded","loadError","useJsApiLoader","googleMapsApiKey","mapMoveEndTimer","setMap","polygon","setPolygon","setDrawingMode","apiIsLoaded","Boolean","prevMarkers","usePrevious","prevActiveOverlay","prevApiIsLoaded","markersChanged","apiIsLoadedChanged","shouldUseFitMapBoundsForOverlay","MAP_MINIMUM_SCALE_RADIUS","fitMapBoundsForMarkers","useFitMapBounds","allOverlayOptions","useMemo","DEFAULT_OVERLAY_OPTIONS","googleMapOptions","DEFAULT_GOOGLE_MAP_OPTIONS","handleChangeIsSearchOnMapMove","handleMapMoveStart","handleMapMoveEnd","handleMapIdle","handleOverlayChange","e","propOverlay","polygonStateOverlay","type","stateOverlay","isEmpty","typeActions","getPath","getArray","latlng","radius","getRadius","data","handleOverlayComplete","handleClearOverlay","renderMarkers","clusterer","filter","prop","shouldRenderDrawingManager","shouldRenderRightMapControls","shouldRenderCenterMapControls","shouldRenderPolygon","propEq","mapTypeId","MapTypeId","ROADMAP","onLoad","zoom","onZoomChanged","onDragStart","onIdle","ControlPosition","TOP_RIGHT","TOP_CENTER","editable","onMouseUp","onDragEnd","onPolygonComplete","onCircleComplete","drawingControl","circleOptions","polygonOptions","zIndex","backgroundClip","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","HANDLE_CHANGE_DEBOUNCE_INTERVAL","ResizablePanes","defaultSize","minSize","maxSize","allowResize","debounceInterval","useTheme","containerEl","setContainerEl","isPaneAnimationEnabled","setIsPaneAnimationEnabled","enableAnimation","disableAnimation","getContainerSize","clientHeight","clientWidth","handleChange","containerSize","percentageSize","isMaxSize","isMinSize","paneAnimationStyle","sharp","leavingScreen","split","onDragStarted","onDragFinished","pane1Style","tabsRoot","tabsScrollButton","tabRoot","pointerEvents","labelWrapper","tabs","tabClasses","additionalLabel","Tabs","scrollButtons","indicatorColor","textColor","allowScrollButtonsMobile","dataReltioId","rest","Tab","focused","white","stepper","stepButton","textAnchor","buttons","backButton","border","progressButtonWrapper","progress","isInProgress","circularColor","otherButtonProps","CircularProgress","activeStep","steps","isPending","onConfirm","onChangeStep","isLastStep","setActiveStep","step","isEnabled","propOr","onBack","currentStep","prevStep","onNext","nextStep","showConfirm","isNextButtonEnabled","any","drop","Stepper","nonLinear","index","enabled","disabledStep","completedStep","Step","completed","StepButton","tenantIcon","tenantLabel","customerTenantLabel","useMdmTenantName","environmentName","useMdmEnvironment","tenantLabelWithEnv","toUpperCase","Tenant","viewMoreLessLink","arrow","rotated","ViewMoreToggle","active","Link","underline","ArrowDropDown","attributesContainer","header","noCaption","noData","caption","excludeUris","includeUris","attributesCount","pivotingAttributes","useMdmPivotingAttributes","filteredAttrTypes","getFilteredAttrTypes","isShowAttributeList","getAttributesListForReadMode","values","isEmptyValue","PivotingAttributeContext","FacetViewHeader","Box","AttributesList","attrTypes","parentUri","drawLines","max","pinnedAttributes","viewId","ViewIdContext","addAttributes","useMdmAction","modifyAttribute","removeAttribute","userRoles","useMdmUserRoles","modifiedEntity","useMdmModifiedEntity","pinnedAttributeUris","getPinnedAttributesForUser","onAddAttributes","params","param","onChangeAttribute","onDeleteAttribute","PinnedAttributesContext","showEmptyEditors","crosswalks","restProps","mdmEntity","useMdmEntityWithDiff","mdmMode","useMdmMode","EntityContext","isViewMode","fillColor","strokeWeight","strokeColor","clickable","mapTypeControl","streetViewControl","fullscreenControl","emptyArray","facetsDataPropName","getDataPath","fieldName","getFacetProp","curry","config","facetDataPath","appId","getFacetData","getFacetValues","getFacetShowAllItems","getFacetFilteredData","getFacetsData","facets","getFacetsConfigs","facetsConfigs","getRecommendedFacets","recommendedFacets","getSelectedEntityTypes","pathOr","isHighlightedFacet","addedFacets","getAddedFacets","includes","getFacetDisplayedAttributesDataItemsByFieldName","filteredData","createFacets","addToEnd","Facets","payload","destroyFacets","ids","changeFacetValues","facetFieldName","silent","updateFacetsData","facetsData","updateFacetFilteredData","facetsFilteredData","handleFacetsConfigsChanges","facetsToAdd","fieldNamesToDelete","changedEntityTypes","trackException","trackTiming","startTime","endTime","Math","round","FacetComponent","WithSearchSupport","dispatch","isRecommended","actionName","category","showDeleteButton","onSearch","pageNumber","currentOptions","debounceTime","filterFacetData","listContainer","item","flexGrow","buttonONLY","textInfo","maxHeight","wordWrap","count","textAlign","toggleContainer","toggleButton","checkedBar","DEF_CONFIG","showColorBar","hasOnlyButton","handleItemClick","newValues","val","concat","maxNumber","number","createControl","ColorBar","createColorBar","formatNumberAsMetric","ButtonBase","stopPropagation","createONLYButton","getAppData","getLoading","ui","loading","getShowMoreFacetsPopup","showMoreFacetsPopup","getShowAdvancedSearch","getShowBulkUpdate","getActiveEntity","activeMarker","getHoveredEntityUri","hoveredEntityUri","getSearchResultsMode","searchResultsMode","DEFAULT_VIEW","getSearchResultsColumns","getSerializedSearchResultsColumns","pipe","ifElse","pick","getEntityTypeTab","entityTypeTab","getPreviewPanelMode","previewPanelMode","getIsPreviewPanelOpen","getActiveEntityTypeTab","isTableMode","getSearchResultsColumnsForEntityType","entityTypeUri","getNotification","notification","getUiConfig","getUiConfigShowSearchByOv","defaultTo","getUiPotentialMatchConfig","getUiMapSearchEnabledConfig","propSatisfies","getUiConfigDefaultTabs","getTableViewTabs","tableViewTabs","getAllowedEntityTypes","addAvailableEntityTypesToGroups","groups","hasNotAvailableEntityTypes","entityTypes","addAvailableEntityTypesIfNeeded","attributes","operator","defaultGroupOperator","getEntityTypesFromGroups","flatten","reject","uniq","getEntityTypesFromAttributes","getSearchGroupAttributeEntityTypeUri","verifySelectedEntityTypesInGroup","entityTypesFromAttributes","autoAddedEntityTypes","newAutoAddedEntityTypes","difference","equals","getQueryBuilderGroups","getEntityTypesFromAllGroups","getQueryBuilderAttributesDataById","groupId","attributeId","getQueryBuilderDisplayedAttributesDataItemsById","defaultAttributesData","filtered","filteredAttributesData","getGroupEntityTypesSearchParams","find","getQueryBuilderGroupById","FACET_TYPES","checkAllQueryGroupsHasAndOperator","attributesOperators","chain","pluck","init","every","isAndOperator","getHasUnresolvedLookupsInQueryGroups","createSelector","mdmModule","getUnresolvedLookupsListFromSearchGroups","not","cropFieldNameByLevel","level","slice","join","filterAttributesByFieldNames","recommendedAttributes","recommendedFieldNamesByLevel","recommendedAttribute","attribute","isComplex","recommendedChildren","getGroupedAttributesData","attributeGroups","attributesFilter","dataTenants","canUserReadWorkflowDataTask","specialAttributesGroups","collectSpecialAttributesGroups","specialAndAttributeGroups","recommendedGroup","allAttributes","res","recommendedAttributeList","getRecommendedGroup","createFilterRules","rules","Object","keys","ruleType","types","list","sort","orderByArrayComparator","isNotEmptyAttributesGroup","getAttributesGroupsFilteredBy","advancedRules","collectAdvancedAttributeGroups","firstLevelAttributesFilter","filteredAttributeGroups","result","rule","rejectReferencedEntityAttributesFromGroups","attributesGroups","attrType","isReference","isRelationAttrType","isAttributeItemOf","parentAttributeType","attributeGroupItem","isSpecialAttributeItem","shouldHideFacetForDataTenant","dataTenantObject","either","complement","isAvailableEntityTypeForDataTenant","isValidFacetGroupForDataTenant","isEntityTypeUri","isNotEmptyFacetsGroup","sanitizeFacetsListForDataTenant","facetsList","evolve","sanitizeAttributesGroupsForDataTenant","sanitizeFacetsConfigsForDataTenant","facetsToHide","facetsToShow","partition","sanitizeTypeFacetValuesForDataTenant","when","isTypeFacet","getProp","searchBoxL","createLens","searchBoxValuesL","compose","getInternalSearchParams","mergeInternalSearchParamsWithKeyword","keyword","searchParams","isRawFilter","set","rawFilter","getSearchParams","getMapSearchValues","getMapSearchType","getMapSearchObject","searchType","getMapSearchObjectForStatePersisting","mapSearch","MAP_SEARCH_TYPES","getTotal","getTableViewTabItem","getTableViewTabItemNumber","search","total","getPage","getRowsPerPage","getSortField","getSortOrder","getSearchResults","getEntitiesLoading","getIsEmptySearchParams","advancedSearchGroups","all","isNotEmptyParam","isValidSearchGroup","getCurrentTenant","getDataTenantObject","currentTenant","getDataTenant","getCanSaveSearch","isEmptySearch","dataTenant","getAllSearchParams","filterRules","getAllSearchParamsForDataTenant","getAllSearchParamsWithoutField","excludeFieldName","_","filtersRules","unless","always","modify","buildQueryForAdvancedSearchGroups","getAdvancedSearchParams","nthArg","configs","internalSearchParams","advancedSearchParams","allowedEntityTypes","mergeConfigs","setFiltersToFacets","addAvailableEntityTypeValues","filterAllowedEntityTypes","convertFacetsToSearchParams","getAdvancedAttributeValuesSearchParams","defaultSearchParams","isOnlyAndOperators","searchParamsWithoutAttribute","getDisplayedSearchResults","getDisplayedTotal","getReadableQuery","buildReadableQueryToString","viewMoreLess","useDispatch","onShowMore","show","showMoreEntityTypes","showAllItems","useSelector","store","tenantObject","needShowViewMoreButton","ENTITY_TYPE_FACET_ROW_COUNT","onViewMoreLess","items","removeNumberForDtssUnavailableEntityTypeItems","infobox","textbox","paddingRight","colorBar","selectedColorBar","itemSelected","ListRow","listStyles","needColorBar","has","hasNumber","disableGutters","disableRipple","NoOptions","customStyles","currentStyles","MultiTypeaheadOptionType","MapSearchType","BulkUpdateSimpleActionType","operation","operationParameters","attributeTypeData","attributeType","AttributeTypeType","attributeValue","LookupValueType","NestedAttributeValueType","ReferenceAttributeValueType","attributeValueToFind","pin","addNestedAttribute","BulkUpdateComplexActionType","conditions","QueryBuilderAttributeType","actions","MultiTypeaheadEditor","filteredOptions","getSuggestions","showBar","showNumberInValue","canLoadMore","DEFAULT_FACET_PAGE_SIZE","multiSelectProps","currentValue","setCurrentValue","setPageNumber","pageIsLoading","setPageIsLoading","isAwaitingMoreOptions","isAwaitingOptionsUpdateAfterOnChange","allOptions","valueToOption","addFormattedCountIfNeeded","assoc","prepareOptions","getBarColorWidth","uniqBy","onLoadMoreOptions","displayedOptions","showMoreButton","filterOption","rawInput","utils","prepareValues","tap","mergeRight","InputProps","disableUnderline","MenuWithPopper","DropdownIndicatorWithIconButton","MultiValueChip","menuListFooter","LoadMoreButton","outlined","deleteIcon","ClearIconWithTooltip","ClearIcon","onDelete","extraProps","Chip","parent","titleContainer","chip","chipLabel","isNested","TooltipComponent","HierarchicalAttributeTooltip","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","facetContainer","borderBottom","openedFacetContainer","paddingBottom","closedFacetContainer","iconButton","recommendedIcon","expandIcon","expanded","from","highlighted","animationName","animationDuration","animationIterationCount","RecommendedIconWithTooltip","version","cx","cy","r","onDeleteChip","isOpenByDefault","isHighlighted","setOpen","toggleOpen","SmallIconButton","CloseIcon","showForDisabled","CollapseButton","isOpen","tooltipPlacement","isClearable","isMetadataSourcedFacetedAttribute","rail","alpha","thumb","focusVisible","track","useTooltipStyles","tooltipPlacementTop","ValueLabel","enterTouchDelay","RangeSlider","min","onAfterChange","Slider","onChangeCommitted","valueLabelDisplay","BarTooltipContent","formatter","barChart","BarChartWithSelection","domain","tickFormatterX","tickFormatterY","focusBar","setFocusBar","getColorOpacity","isInRange","areaData","arr","handleMouseEvent","isTooltipActive","activeTooltipIndex","onMouseEnter","onMouseLeave","vertical","dataKey","interval","tickLine","ticks","tick","tickProps","x","y","offset","axisLine","tickSize","tickMargin","tickCount","tickFormatter","isAnimationActive","entry","NumericRangeFacet","PureComponent","lowerBound","upperBound","handleOnChangeValue","rangeService","getBarDomain","fixedValues","adjustRange","onLowerBoundChanged","newValue","NumMath","isFloating","toFixed","firstDataValue","head","bound","isNaN","clamp","floor","toString","onUpperBoundChanged","lastDataValue","ceil","onChangeRange","newRange","revertScale","onRevertedChange","applyScale","isScaled","scale","onFocus","select","nextProps","prevState","createRangeServiceFor","getNumbersMath","getRange","isFloatingType","calcScale","ratio","numberFormat","bigNumbersTickFormatterX","formatNumberForRangeFacet","barData","barRange","scaledMin","scaledMax","valueLabelFormat","NumberEditor","integer","format","decimalSeparator","thousandSeparator","prefix","suffix","decimalScale","connect","mdm","Component","WithCustomizedData","attributePresentations","strategy","getNumberFormat","getAttrDataTypeDefinition","intl","customizedData","applyPresentationStrategyToValue","customizedValues","mapFilterValue","customizedOnChange","uncustomizedValues","revertPresentationStrategyForValue","withCustomizedData","dateEditor","getDate","toEditorValue","Date","fromEditorValue","getTime","minDate","maxDate","startDate","setStartDate","endDate","setEndDate","startDateId","nanoid","endDateId","changeHandler","commonProps","DateEditor","slotProps","textField","convertValue","dataType","DataTypes","barChartContainer","dateRangeChooserWrapper","onValuesChange","currentValues","isUTC","preparedData","Array","isArray","editorValue","formatDate","FacetsFactory","EntityTypeFacet","FacetWithDropdownCheckboxes","DateRangeFacet","configuration","getDefaultConfig","widget","getWidget","componentClass","withSearch","withSearchSupport","connectData","wrap","autofocus","test","allPass","rejectEmptyConfigs","titleBox","collapseIcon","leftIcon","iconSrc","hasCollapseButton","onCollapse","Avatar","src","initSearchModule","UI","showSavedSearchesDialog","showSaveSearchDialog","postSavingAction","showAdvancedSearch","setSearchResultsColumns","columns","changeSearchResultsColumns","prevColumns","setEntityTypeTab","updateTableViewTabs","clearNotification","showNotification","showInfoNotification","NOTIFICATION_TYPES","showInfoNotificationWithAction","actionLabel","actionToDispatch","autoHideDuration","setPreviewPanelMode","setUiConfig","showBulkUpdate","checkFacetIncludes","facet","selectedFacets","selFacet","isSelectedFacet","isComplexFacet","some","child","FacetsList","onListItemClick","focusIndex","selectedFacetsRef","focusIndexRef","renderItem","AttributeListItem","Highlighter","highlight","filterText","labelInText","LogoIcon","renderGroupTitle","ListItem","needGroupIcon","AttributeGroupIcon","getItemSize","VirtualGroupedList","disableHorizontalScrollbar","MetadataType","DEFAULT_POPUP_HEIGHT","HEADER_HEIGHT","MoreFacetsPopup","lastFacetClicked","listHeight","setListHeight","maxListHeight","handleResizeList","ITEM_HEIGHT","popupActionRef","updatePopupPosition","getFacetGroupData","moveTo","facetConfig","flatMap","subItem","flat","hide","groupedItems","flattenGroupedItemsData","handleSearchOnEnter","groupData","handleKeyDown","useKeyboardNavigation","onSelectFocusedItem","selectedItems","containerWidth","getMaxItemWidth","SelectionPopup","searchInputOnKeyDown","containerHeight","onInnerContainerResize","gutterBottom","MoreFacetsSearchInput","showSearchInput","searchInputRootRef","scrollIntoView","openPopup","closePopup","highlightAddedFacets","setFilterText","clearFilterText","setLastFacetClicked","resetLastFacetClicked","filterItem","toLowerCase","filterItemsTree","getFilteredFacets","filterItemsInGroups","rejectNotAllowedEntityTypes","toggleSelectedFacet","selectedEntityTypes","nestedChildrenFacet","getChildrenAttributes","newFacetsConfigs","newSelectedEntityTypes","filteredFacetsConfig","selectedConfig","setAddedFacets","fieldNamesToAdd","handlePopupClose","memoizedCollectFacetsList","memoizeOne","collectFacetsList","handleInputFocus","inputWidth","getBoundingClientRect","selectedFieldNames","filteredList","verticalOrigin","popupHeight","marginThreshold","anchorRect","highestPoint","lowestPoint","innerHeight","maxHeightToBottom","maxHeightToTop","adjustVerticalPopupLayout","popupOrigin","horizontal","Fragment","SearchInput","inputContainer","rootRef","headerPlacement","anchorOrigin","transformOrigin","disableRestoreFocus","DataTenantType","withStyles","facetGroupContainer","hasSearchAttributesField","setIsCollapsed","Divider","labelRoot","checkboxRoot","checkboxRootQueryGroups","SearchByOvControl","searchOptions","searchByOv","changeSearchConfig","mdmModuleSearch","ovOnly","tenantFacet","radioGroup","radioLabelRoot","radioLabel","overflowWrap","radioButton","tenantContainer","jsonRequest","rawRequest","application","request","TenantTotal","isDataTenant","safePromise","useSafePromise","setTotal","body","JSON","stringify","buildTotalParams","dtssPath","customerTenant","callSearchRequestForTenant","searchRequest","ENTITIES_TOTAL_URL","method","then","catch","warn","useTenantTotal","updateEntities","searchResults","Search","refreshDisplayedEntities","updateTotal","changeEntitiesLoading","bool","changeMapValue","TenantFacet","customerTenantObject","changeCurrentTenant","openAdvancedSearch","tenantOptions","prepend","getTenantData","tenant","selectedTenant","RadioGroup","getValue","Radio","mapDispatchToProps","memoizedBuild","memoizeWith","envSpecificKey","build","FacetGroupRenderer","Facet","buildFacets","FacetsPanel","onScroll","uiConfigShowSearchByOv","showTenantFacet","containerRef","onContainerScroll","scrollTop","configsByGroups","entityTypeFacetConfigs","attributesFacetsConfigs","splitFacetConfigsByGroups","firstElement","restElements","tail","boundariesElement","popupBoundariesValue","element","priority","PopupBoundariesContext","elementProps","MainContent","initialState","attributesData","PROP_NAME_ENTITY_TYPES","PROP_NAME_ATTRIBUTES","PROP_NAME_AUTOADDED_ENTITYTYPES","groupsLensPath","searchGroupsL","createLPath","getGroupLens","createGetGroupLens","getAttributesLens","createGetAttributesLens","getAttributeIndex","createGetAttributeIndex","getAttributeLens","createGetAttributeLens","setAttributeProp","createSetAttributeProp","getAttributeProp","createGetAttributeProp","getGroupObject","getAttributeObject","PROP_NAME_OPERATOR","advancedSearchReducer","combineReducers","AdvancedSearch","get","groupL","groupIndex","findIndex","editedGroups","remove","prevGroup","removedGroup","addAttributeAfter","attributeData","changeAttributeData","setAttributeOperator","deleteAttribute","duplicateAttribute","setFilter","setValues","advanced","assocPath","dissoc","dissocPath","verifyGroupEntityTypes","addEmptyAttributeAfter","getEmptyAttributeObject","changeAttribute","getAttributeData","clearAttribute","toggleAttributeSelect","selectInfo","deleteAttributeAndVerifyGroupEntityTypes","filterAttributeValues","setAttributeFilteredValues","updateAttributeValues","AppLoadingSpinner","ReltioProgress","snackbar","anchorSnackBar","messageContent","dark","icons","autoCloseInterval","lastActiveNotification","handleCloseNotification","handleActionDispatch","snackBarAction","IconButton","close","Portal","Snackbar","ContentProps","anchorOriginBottomCenter","resizablePanesWrapper","divider","pagination","borderTop","overflowY","tableContainer","getModeIcon","SEARCH_RESULTS_MODES","TableIcon","ListIcon","WarningIcon","MODES","ViewModeSwitcher","ModeSwitcher","modes","modeId","newMode","setSearchResultsMode","PreviewPanelModeSwitcher","PREVIEW_PANEL_MODES","filterModes","MapIcon","InfoOutlinedIcon","TableViewHeader","getTabsData","preparedTabs","getEntityTypesForTabs","tab","onTabChange","onSelectColumns","selectedColumns","columnsForEntityType","renderTabs","ScrollableTabs","ConfigureColumnsButton","headColumns","TableView","entitiesTableRef","basicTableRef","resizeDebounceDelay","sortHandle","field","order","changeSort","reorderingHandle","what","where","changeOrderSearchResultsColumns","move","columnIndex","changeColumnsListHandle","changeColumnsSizeHandle","newColumnsSize","newHeadColumns","column","autoResize","manuallyChanged","changeSizesSearchResultsColumns","logger","componentDidUpdate","prevProps","sortField","sortOrder","entities","resetScrollbarPosition","entityToHighlight","additionalColumns","selectedEntityUri","dndColumnReorderingEnabled","onEntityClick","onEntityHover","entitiesImportStatus","onEntityImportStatusChange","EntitiesTableWithConfigurableColumns","onSort","onReorderingColumn","onChangeColumnsList","onChangeColumnsSize","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","memoizedGetAdditionalColumns","getAdditionalColumns","closeButton","getSelectedEntityUri","getEntity","scrollWrapper","attributesView","emptyState","LinearLoadIndicator","ProfileBand","BlockImageGalleryDialogContext","AttributesView","Mode","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","nearlyEquals","a","b","abs","mapMarkers","clusterMarkers","numStyles","markerLabels","dv","parseInt","filterWrongLat","both","gt","lt","searchTypeToOverlayType","closePolygon","searchValuesToPolygonPath","fullHeight","setMarkers","setLoading","activateMarkerTimeoutId","deactivateMarkerTimeoutId","setActiveEntity","clearMarkerTimers","resolve","useMarkers","setIsSearchOnMapMove","overlayType","useSearch","gridSize","maxZoom","calculator","markerClustererCalculator","entityMarkerContextValue","SmallIconButtonWithTooltip","getTooltipByModeId","isMapViewMode","renderView","setEntityLoading","Entity","loadEntityRequest","setSelectedEntityUri","setEntity","SearchResultsArea","quantity","rowsPerPage","page","isPreviewPanelOpen","refScrollBlock","paneSize","setPaneSize","isTableViewMode","isProfileMode","setEntitiesImportStatus","handleEntityImportStatusChange","status","onChangePage","changePage","onChangeRowsPerPage","changeRowsPerPage","handlePaneSizeChange","entityButtonsRenderer","importStatus","EntityRowButtons","entityImportStatus","entityUriToHighlight","ProfilesList","ROWS_PER_PAGE_OPTIONS","BasicTablePagination","rowsPerPageOptions","renderSearchResults","labelContainer","SelectedFacetChip","stringifiedValues","MoreButton","currentTarget","handleClose","elevation","popperContent","setCurrentSavedSearch","savedSearch","SavedSearches","setSavedSearchChangeIndicator","deselectAllSavedSearchItems","deleteSavedSearchesItems","uris","setSavedSearchesLoading","calcSelectedNumber","getSearchesSelectedItemsNumber","itemsSelector","getAreAllSearchesSelected","getIsSomeSearchesSelected","getSelectedSearchesItems","getSavedSearches","getSavedSearchesItems","getSavedSearchesItemByUri","getSavedSearchesTotal","getSavedSearchesPage","getSavedSearchesRowsPerPage","getSavedSearchesFavoriteOnly","favoriteOnly","getSavedSearchesSearchValue","searchValue","getSavedSearchesFindPublic","findPublic","getSavedSearchesSorting","sorting","getSavedSearchesLoading","getSavedSearchesPostSavingAction","getSavedSearchesSelectedItemsNumber","getAreAllSavedSearchesSelected","getIsSomeSavedSearchesSelected","getSelectedSavedSearchesItems","getCurrentSavedSearch","isChangedSavedSearch","isOwnSavedSearch","currentSavedSearch","isOwnSearch","owner","getSavedSearchUIState","dialogRoot","dialogTitle","dialogContentRoot","dialogField","dialogInput","dialogFont","dialogActions","SaveSearchDialog","isAvailableUpdate","onUpdate","nameValue","setNameValue","shareValue","setShareValue","SAVED_SEARCHES_SHARING_OPTIONS_VALUES","canUpdateSavedSearch","isDisabledSaveButton","isPublic","handleValueChange","handleShareValueChange","handleSave","share","commonInputProps","currentName","currentShareValue","PaperProps","TextEditor","required","onInput","DropDownEditor","entries","SAVED_SEARCHES_SHARING_OPTIONS","savedSearchData","isGroupAction","flattenGroupAction","groupAction","getAttrTypeFromAction","getFieldNameFromAction","getPinFromAction","getAddNestedAttributeFromAction","getAttributeValueFromAction","getAttributeValueToFindFromAction","isOperationForNestedValue","anyPass","BULK_UPDATE_OPERATIONS","isOperationForValue","isOperationForReferenceValue","isActionWithNestedAttrValue","isActionWithReferenceAttrValue","isActionWithSimpleAttrValueWithLookup","isLookupAttrType","editorsForOperation","isValidBulkUpdateSimpleAction","isNestedAttrValue","isReferenceAttrValue","requiredValues","property","getReferencedEntityFromAttrValue","cleanAttributesWith","deleteEmptyComplex","cleanActionValues","updatedAction","propName","pathToComplexValue","lens","lensPath","over","getBulkUpdateOperation","bulkUpdate","getBulkUpdateActiveStep","getBulkUpdateLoading","getBulkUpdateEntityTypeUri","entityTypeValues","activeEntityType","getBulkUpdateObjects","getBulkUpdateTotal","getBulkUpdateSelectionMode","selectionMode","getBulkUpdateEntities","getBulkUpdateSelectedEntities","selectedEntities","getBulkUpdatePage","getBulkUpdateRowsPerPage","getBulkUpdateSortField","getBulkUpdateSortOrder","getBulkUpdateSelectedColumns","getBulkUpdateFilterText","getIsIncludeSelectionMode","BULK_UPDATE_SELECTION_MODES","getBulkUpdateSelectedEntitiesNumber","selectedEntitiesNumber","getIsChangesStepEnabled","__","getBulkUpdateActions","getBulkUpdateValidClearedActions","getBulkUpdateFlatActions","getIsReviewStepEnabled","getBulkUpdateRequestPending","requestPending","copyTextToClipboard","Promise","textArea","appendChild","focus","execCommand","err","removeChild","writeTextPolyfill","parseUIState","uiState","parseSearchState","replaceSearchResultsColumns","originalUiState","errors","prepareSavedSearchForSave","getApiCompatibleSavedSearch","getViewState","keepSearchResultsColumns","getFacetsState","facetsConfig","newConfig","newFacetData","mergeNotEmptyAndSelectedFacets","getAdvancedState","serializeAdvancedSearch","getSerializedSearchState","view","readableQuery","serializedState","linkField","linkInput","ShareLinkDialog","setLink","searchState","uiPath","headers","getSearchLink","showServerError","useSearchLinkGenerator","TextField","fullWidth","exportButtonDisabled","ActionsMenu","customActions","canExport","hasDataLoader","isDataTenantActive","consoleExportApp","consoleExportAppConfig","hasExport","onExport","onOpenDataLoader","canSaveSearch","handleSaveAsClick","workflowConfig","canStartProcessInstanceSearchQuery","workflowPath","environment","potentialMatchesConfig","allParams","globalFilter","query","buildPureSearchQuery","startPMReview","processType","startProcessFromQuery","searchString","mdmModuleUi","hasMatches","useWorkflow","bulkUpdateConfig","Errors","NO_ENTITY_TYPE","uiConfig","canUserMakeBulkUpdate","bulkUpdateEntityTypeUri","isOnlyOneEntityTypeSelected","isBulkUpdateEnabled","entityTypeProcessing","isAllowedEntityTypeUri","useBulkUpdateOpener","showLinkDialog","setShowLinkDialog","DataLoad","ExportResultIcon","SaveIcon","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","menuItems","indicatorWrapper","indicatorTooltipArea","indicator","borderColor","for","currentSearch","isChanged","searchName","dialogPaper","contentRoot","tabContent","tabsWrapper","getRecentSearches","getRecentSearchesItems","getRecentSearchesFilterWord","filterWord","word","toLocaleLowerCase","getFilteredRecentSearches","getRecentSearchesLoading","getRecentSearchesSelectedItemsNumber","getAreAllRecentSearchesSelected","getIsSomeRecentSearchesSelected","getSelectedRecentSearchesItems","getLastSavedRecentSearch","lastSavedRecentSearch","createRecentSearch","recentSearch","RecentSearches","deselectAllRecentSearchItems","deleteRecentSearchesItems","searches","setRecentSearchesLoading","filterButton","deleteButton","searchBox","flex1","CloseButton","SelectedMode","selectedNumber","DeleteIcon","changedFiltersIndicator","popupContent","favoriteOnlyControlRoot","favoriteOnlyControlLabel","favoriteOnlyCheckbox","buttonsGroup","cancelButton","shareWithRoot","shareWithLabel","shareWithMenuItem","sharingValueToEditor","sharingValueFromEditor","FilterButton","onChangeFilters","buttonRef","setIsOpen","showPublic","setShowPublic","showFavoriteOnly","setShowFavoriteOnly","togglePopup","onChangeShowFavorite","onApply","onClearAll","isFiltersCleared","textPrimary","Popover","menuItem","onChangeFavoriteOnly","StandardMode","WhiteSearchInput","STORED_SEARCHES_TYPES","DialogHeader","cond","ownProps","tableWrapper","borderLeft","borderRight","cellBorder","paginationRoot","paginationCaption","SavedSearchesHoverButtons","disabledToDeleteRow","cellFontSize","lightPrimaryBackground","lighten","lightPrimaryBackgroundTransparent","lightPrimaryBackgroundHovered","fadeEffect","defaultWrapper","numberWrapper","nameWithStar","nameTextEditorRoot","nameInput","nameContainer","editing","editNameButton","clickableArea","starButton","checkedStarButton","checkedFilterButton","enabledButton","headCell","totalHeadCell","nameHeadCell","headLabel","sharingWrapper","sharingRoot","sharingInput","sharingMenuItem","sharingDisabled","sharingIconDisabled","rowCell","checkedRowCell","invisibleOnHoverCommon","invisibleOnHover","tooltipSection","tooltipSectionHeader","tooltipText","CheckboxHeadCellRenderer","allSelectedSelector","allSelected","someSelectedSelector","someSelected","indeterminate","withTableContext","CellRenderer","WithDifferentColorIfChecked","rowValue","CheckboxWithTooltip","CheckboxCellRenderer","onSelectItem","withDifferentColorIfChecked","HeadCellRenderer","headCellData","DefaultHeadCellRenderer","sortable","resizable","initialWidth","renderer","NameHeadCellRenderer","NameWithStarCellRenderer","isFavorite","isEditing","isGlobalFilter","onStarClick","onGlobalClick","onChangeName","onSetEditing","showEditButton","tempName","setTempName","applyNameChange","onStarButtonClick","onGlobalFilterButtonClick","onEditButtonClick","onNameClick","favoriteTooltipTitle","T","StarIcon","StarBorderIcon","FilterIcon","FilterOutlinedIcon","ClickAwayListener","onClickAway","hiddenLabel","onKeyDown","Edit","onChangeIsFavorite","onChangeIsGlobal","onSearchApply","onSetItemEditing","onChangeItemName","SharingCellRenderer","editorNewValue","MenuProps","onChangeIsPublic","DefaultCellValueRenderer","onClickAction","DateCellRenderer","updateDate","createDate","date","isNotEmptyAttribute","isNotEmptyFacet","getAttributeLabelFromPathToTitle","addAttributeToGroup","groupName","attributeLabel","collectFromAdvanced","collectFromFacets","FilteredAttributesCellRenderer","filteredAttributesGroups","groupedAttributesMap","collectFilteredAttributesGroups","getFilteredAttributesNumber","disableTouchListener","TotalHeadCellRenderer","InvisibleOnHoverCell","isInvisible","NumberCellValueRenderer","SavedSearchesTotalCellRenderer","rowIndex","defaultColumnOptions","rowCellValueRenderer","headCellRenderer","COLUMNS_DATA","DEFAULT_COLUMN_WIDTH","SavedSearchesTable","globalFilterSavedSearchesUris","onDeselectAllItems","onDeleteItem","tableClasses","hoverRowIndex","setHoverRowIndex","tableContext","hoveredRowRightContent","emptyStateProps","rowsData","BasicTable","columnsData","context","getRowCellHeight","defaultColumnWidth","defaultColumnMinWidth","defaultRowHeight","headRowHeight","hoverStateEnabled","onRowHover","SortingType","SEARCH_DEBOUNCE_TIME","RecentSearchesHoverButtons","RecentSearchesCheckboxCellRenderer","createdDate","TimestampCellRenderer","RecentSearchesTotalCellRenderer","QueryCellRenderer","RecentSearchesTable","searchCreatedDate","searchItem","SavedSearchesDialog","setType","showCurrentTenant","currentTenantLabel","SEARCH_FIELD_NAME","GEOLOCATION_FIELD_NAME","SearchBar","chipsData","displayCount","isOverflow","onClearFiltersClick","clearAllSearches","handleOpenSavedSearchesDialog","handleCloseSavedSearchesDialog","chipsBarRef","setChipsBarRef","update","bind","resize","hiddenTitle","labels","buildValuesLabels","getStrategy","dateMask","dateTimeMask","getMapSearchLabel","getChipsData","findNumberOfViewedChips","childNodes","offsetLeft","offsetWidth","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","createAllChips","chips","barChips","extraChips","queryBuilderGroups","filteredQueryBuilderGroups","isEmptySearchGroup","isDisableClearButton","body1","startIcon","AccessTime","openSavedSearchesDialog","KeywordSearchType","backButtonContainer","collapseButton","toolBar","QueryBuilderHeader","onBackBtnClick","resultQueryPanel","resultQuery","queryContainer","queryContainerMinHeight","noQuery","actionsPanel","QueryBuilderCollapseButton","collapseBtnActive","onCollapseBtnClick","KeyboardCapslockIcon","iconClassName","backBtnDisabled","QueryBuilderFullscreenButton","isFullscreen","FullscreenExitIcon","FullscreenIcon","ResultBuilder","hasMinSize","lookups","onFullScreenBtnClick","queryMouseEnterX","setQueryMouseEnterX","queryMouseEnterY","setQueryMouseEnterY","queryString","buildReadableQuery","initialTooltipTitle","setTooltipTitle","debouncedApplySearch","copyQueryToClipboard","onTooltipClose","onQueryMouseEnter","clientX","clientY","useDidUpdateEffect","popperProps","PopperProps","ReadableSearchQuery","isAdvancedSearchTransformedToFacets","flatAttributes","getFlatAttributesFromGroups","availableFacets","getAvailableFacets","attributesDataFromGroups","getFlatAttributesDataFromGroups","areAllFacetsAvailable","isTypeSearchGroupAttribute","eqProps","onlyAndOperatorsForGroups","areAllOperatorsAnd","onlyAndOperatorsForAttributes","onlyAccessibleFilters","FilterOptions","isBooleanType","hasNoRepeatedAttributes","equalsFiltersCounter","faceted","mergedDataObject","collectFacetsFlatList","getSpecialAttribute","convertedValues","processNumericRangeFacetedValues","moment","isTimestampBasedType","isDateRangeValue","getDateRangeByValue","processDateRangeFacet","convertFacetedValues","getFacetTypeForAttrType","mergedData","entityTypeList","verticalLine","flexBasis","groupsContainer","verticalOperatorLine","upperLine","searchByOvContainer","LogicOperator","operators","rows","hint","entityTypeSelector","entityTypeSelectorContainer","logicOperator","lowerLine","rowHeight","row","logicOperatorContainer","logicOperatorPlaceholder","attributeSelect","filterSelect","valuesWrapper","actionIcon","AdvancedSearchEntityTypesSelector","ListLabelProps","isAllowedEntityType","EntityTypesSelector","enableEmptyValueUnderline","showReferencedEntityAttributes","itemsGroups","BasicAttributeSelector","AdvancedSearchAttributeSelector","rowData","rowContext","dispatchGroupAction","attributeSelectorProps","getSelectedAttributeLabel","getSearchGroupAttributeLabel","onSelect","onRestoreFocus","onOpenPopup","onOpen","disablePopoverRestoreFocus","disableEnforceFocus","focusable","isEmptyAttribute","AdvancedSearchRowActions","onRowDelete","onRowDuplicate","onAddRowAfterId","AddCircle","Close","QueryBuilderFilterSelector","textFieldInputRef","isDisabled","getCapitalizedFilterOptionLabel","getFilterOptionLabel","capitalize","SimpleDropDownSelector","filterOptions","ReactSelectOptionFilters","AdvancedSearchFilterSelector","onFilterChange","multipleInput","boolRoot","dateRoot","booleanRadioEditor","TypeaheadValuesEditor","updateValues","filterValues","currentQuery","allSearchParams","buildTotalUrlQuery","getTotalSearchParamsQuery","editorValues","handleEditorChange","wrapInArray","attributeValues","filteredAttributeValues","tabSelectsValue","ValuesEditor","isTypeahead","isTypeaheadAttrType","suppressAttrType","isEnumAttrType","isMultiValueOption","valueDataTypeDefinition","filterValueDataTypeDefinition","getDataTypeDefinitionForFilterValue","stylesRoot","isDateType","isDateRangeFilterOption","FilterValueEditor","dataTypeDefinition","booleanRadioEditorClassName","AdvancedSearchValuesEditorWrapper","canFilterAcceptValues","checkIfOptionHasValues","AdvancedSearchRowLogicOperator","onOperatorChange","GroupBuilder","showLogicOperator","onAddEmptyGroup","rowComponentsStyles","useRowComponentsStyles","onGroupDuplicate","onGroupDelete","setGroupOperator","onEntityTypesChange","setGroupEntityTypes","attrs","attributeFilterRef","lastAttributesCountRef","attributesCountRef","handleAttributeSelectorOnRestoreFocus","preventDefault","querySelector","handleAttributeSelectorOnOpen","actionItems","rowClasses","lastRowAttributeSelectorProps","QueryBuilderRowsGroup","AttributeSelectorComponent","FilterSelectorComponent","ValuesEditorComponent","ActionsComponent","LogicOperatorComponent","filterSelectorRefIndex","filterSelectorRef","QueryGroups","prevGroupsLengthRef","addEmptyGroup","containerChildNodes","behavior","clearSearchStateAction","SwitchToFacetsDialog","isChangedSavedSearchSelector","isOwnSavedSearchSelector","isDisabledSave","ConfirmationDialog","QueryBuilder","collapsed","onExpand","onFullscreen","isDialogOpen","setIsDialogOpen","handleBackBtnClick","EXPANDED_PANE_SIZE","MainSearchArea","isOpenAdvancedSearch","onCloseAdvancedSearch","isAdvancedSearchCollapsed","setIsAdvancedSearchCollapsed","handleCollapseAdvancedSearch","handleExpandAdvancedSearch","handleFullscreenAdvancedSearch","SearchBarRenderer","AdvancedSearchRenderer","updateBulkUpdateEntities","BulkUpdate","updateBulkUpdateCurrentEntities","toggleBulkUpdateSelectionMode","setBulkUpdateLoading","changeBulkUpdatePage","changeBulkUpdateColumns","setBulkUpdateTotal","setBulkUpdateOperation","deleteBulkUpdateAction","addBulkUpdateOperationParameters","addConditionAfter","changeCondition","clearCondition","toggleConditionSelect","deleteCondition","setConditionFilter","setConditionValues","setBulkUpdateRequestPending","pending","entityTypeTitle","profileText","profileNumber","splitter","clearButton","searchQueryContainer","searchQuery","isIncludeSelectionMode","displayedTotal","selectedForBulkUpdateNumber","entityTypeLabel","getEntityTypeLabel","readableSearchQuery","advancedGroups","facetsWithConfigs","createAdvancedSearchGroupFromFacets","isValidGroups","useBulkUpdateReadableQuery","setBulkUpdateFilterText","Toolbar","needUpdateEntities","needRequestAfterColumnsChanges","rowBottomBorder","mainRowContent","withoutLine","attrSelector","operationSelector","actionIconActive","specialStyle","singleEditor","editor","to","type_Timestamp","type_Boolean","type_Date","ChangeEditor","emptyEditorValue","createNewAttribute","prepareValueProp","mergeLeft","hasPath","objOf","valueProperty","editors","SimpleAttributeEditor","ModeTypes","DataTypeValueEditor","splice","renameKey","oldKey","newKey","obj","convertAttributeDataFromSelector","convertAttributeDataToSelector","getAttributeNameFromAttributeValue","wrapInEntity","unwrapFromEntity","attributeName","useBulkComplexAttributeHandlers","attributeValueRef","updatedEntity","editAttribute","addAttribute","onTogglePin","updatedAttributeValue","parentAttributeValue","namesAndUris","targetLensPath","levelName","shift","levelUri","levelAttributes","endsWith","toggleSubAttributePin","pinIcon","pinIconActive","PinButton","subAttributeValue","PinIcon","SimpleAttributeValueType","attributeValueUri","BulkNestedAttributeEditor","initialAttributeValue","emptyAttributeValue","subAttributesTypes","getAttributeTypeSubAttributes","emptyValue","createDefaultValues","attributeTypes","pinControlRenderer","PinButtonRenderer","NestedAttribute","hideDeleteButton","additionalControlsRenderer","entitySelector","entitySelectorInputLabel","BulkRepointReferenceEditor","referencedEntityTypeUri","getReferencedEntityTypeUriFromAttrType","globalSearchRequestOptions","newEntityAttrTypesSelectionStrategy","referencedEntityAttributeTypesSelectionStrategy","currentEntityUri","onSelectEntity","profile","entityLabel","onCreateEntity","initValue","getEntityType","newEntityAttrTypes","getCreatableAttributeTypes","newEntity","createTemporaryEntity","EntitySelector","entityTypesUris","memoizedWrapInArray","onCreate","disableLinkClick","attributeTypesSelectionStrategy","marginDense","BulkReferenceAttributeEditor","getEditableAttributeTypeSubAttributes","ReferenceAttribute","asyncMountContextValue","queueSizeThreshold","ActionRow","groupAttributeType","hasConditions","handleAttributeSelect","setBulkUpdateActionAttribute","handleComplexEditorChange","handlePinToggle","toggleBulkUpdateActionPin","handleAddNestedAttributeToggle","toggleBulkUpdateActionAddNested","handleDelete","handleOperationChange","setBulkUpdateActionOperation","showComplexEditor","isComplexAttribute","isTopLevelComplex","showPinButton","showAddNestedButton","operationOptions","isTopLevelComplexWithConditions","without","BULK_UPDATE_NESTED_ATTRIBUTE_OPERATIONS","BULK_UPDATE_REFERENCE_ATTRIBUTE_OPERATIONS","BULK_UPDATE_SIMPLE_ATTRIBUTE_OPERATIONS","BULK_UPDATE_OPERATION_LABELS","operationValue","rowFilled","attributeSelectorValue","attributeSelectorFilter","isImage","isAnalyticAttribute","single","ungroup","AddParentIcon","AsyncMountContext","complexRow","actionsBlock","conditionsToggleButton","conditionsToggleIcon","subattributesGroupTitle","additionalItemsGroups","getReferencedEntityItemGroup","createAttributesGroup","BULK_UPDATE_REFERENCED_ENTITY_ID_FIELD_NAME","createSpecialAttributeItem","enforcedFilterOptions","ConditionAttributeSelector","condition","conditionId","isEmptyCondition","ConditionFilterSelector","isReferencedEntityCondition","ConditionValuesEditor","ConditionValuesEditorWrapper","ConditionActions","ConditionsBlock","componentsStyles","useComponentsStyles","queryBuilderRowClasses","ComplexActionRow","attrTypeUri","searchUriToAttrUri","findAttributeTypeByUri","toggleConditions","areConditionsActive","disableConditionsButton","hasAddingActionWithTopLevelComplex","renderActionRow","RemoveCircle","renderRow","ActionRowComponent","getActionRowComponent","isChangesStepEnabled","bulkOperation","isOperationSelected","isReviewStepEnabled","isRequestPending","BULK_UPDATE_COMMON_OPERATIONS","StepNavigation","setBulkUpdateActiveStep","appBar","toolbar","AppBar","edge","checkedEntities","entitiesOnPage","intersection","getCheckedEntitiesOnPage","headerCheckboxState","getHeaderCheckboxState","changeBulkUpdateSort","reorderedColumns","onEntityCheck","selectBulkUpdateEntity","canCheck","onCheck","checkedEntitiesUris","changeBulkUpdateRowsPerPage","canUserDeleteProfiles","onGroupChange","AttributeValueRenderer","lookupCode","getResolvedLookupValue","getAttrTypeLookupCode","DataTypeValue","OperationRenderer","ConditionsRenderer","Maybe","buildAttributesReadableQuery","orSome","scaffoldLineOffset","scaffoldLineSize","scaffoldLineStyle","scaffoldsContainer","scaffold","verticalAlign","scaffoldFullVert","scaffoldHalfVert","scaffoldHor","noWrapContainer","optionContainer","opaque","newIcon","nestedLabel","AttributeLabelRenderer","Scaffolds","EMPTY","FULL_VERT","FULL_VERT_HOR","HALF_VERT_HOR","buildScaffolds","scaffoldsData","hasLowerSubAttrs","isFirstValue","isLastScaffold","drawHorLine","buildScaffold","buildDefaultActionRows","wrapInArrayIfNeeded","buildComplexAttrRows","attrValue","attrRow","scaffolds","subAttrs","subAttrRows","attrIndex","valueIndex","scaffoldData","getAttributeValue","buildNestedAttrRows","otherParams","parentRow","subRows","buildReferenceAttrRows","refEntity","objectURI","buildActionRows","buildTableRows","Scaffold","ScaffoldsRenderer","NoWrapContainer","OptionsRenderer","addParent","EntityLabelRenderer","getModifiedEntityLabel","referencedEntityType","evaluateDeepEntityLabel","dataLabelPattern","ConnectionEntityType","table","attributeColumn","conditionColumn","operatorColumn","valueColumn","optionsColumn","ReviewTable","TableContainer","TableHead","TableRow","TableCell","colSpan","TableBody","hasValue","hasValueToFind","align","fullScreen","TenantLabel","getStepContent","borderStyle","drawer","docked","drawerPaper","mainContent","easeOut","enteringScreen","menuIcon","goToActionIcon","buttonRoot","buttonExtended","buttonLabel","quickFilterRoot","withBottomBorder","FabButtonWithTooltip","Fab","App","isReadyAppData","handleCloseAdvancedSearch","handleOpenAdvancedSearch","isFacetsPanelScrolledToTop","setIsFacetsPanelScrolledToTop","handleFacetsPanelScroll","isDrawerOpen","Drawer","anchor","extended","Tune","ErrorPopup","facetsConfigsL","facetsDataL","recommendedFacetsL","addedFacetsL","partialDataUpdate","createFacet","newConfigs","existingConfigs","newState","currentData","newData","prepareFacetDataForStore","destroyFacet","currentConfigs","valuesPath","dataPath","dataL","facetDataL","sanitizedFacetsConfigs","sanitizedFacetsNames","sanitizedFacetsData","searchResultsByEntityTypes","searchBoxInput","searchResultsL","totalL","pageL","rowsPerPageL","sortFieldL","sortOrderL","loadingL","mapSearchValuesL","mapSearchTypeL","mapSearchFieldNameL","searchResultsByEntityTypesL","getEntityTypePageL","entityTypeSortFieldL","entityTypeSortOrderL","entityTypeRowsPerPageL","mapSearchTypeToFieldName","displayedEntityTab","activeAdditionalSearch","searchResultsColumns","showSearchByOv","showMoreFacetsPopupL","showSavedSearchesDialogL","showSaveSearchDialogL","showAdvancedSearchL","showBulkUpdateL","activeAdditionalSearchL","activeMarkerL","hoveredEntityUriL","searchResultsModeL","previewPanelModeL","searchResultsColumnsL","entityTypeTabL","tableViewTabsL","notificationL","configL","changeIndicator","SAVED_SEARCHES_SORT_ORDER_VALUES","SAVED_SEARCHES_SORTED_FIELDS","changeIndicatorL","itemsL","postSavingActionL","sortingL","updateItem","updater","itemL","toggleSortOrder","updateSearchParamWithPageReset","paramName","savedSearchesItems","nextSortField","prevSortField","prevSortOrder","filterWordL","lastSavedRecentSearchL","searchCreatedDates","selectedEntityUriL","entityL","attributeTypeName","attributeTypeUri","attributeSource","getAttributeSource","objects","activeStepL","operationL","requestL","selectionModeL","entitiesL","selectedEntitiesL","filterTextL","selectedColumnsL","actionsLensPath","actionsL","getSimpleActionsPath","complexActionIndex","createSimpleAction","getTopLevelFieldNameFromOperationParameters","createComplexAction","tuneAction","togglePin","toggleAddNested","pathToSimpleActions","simpleActions","needComplexAction","isComplexOrSubattribute","actionIndex","actionL","allowedValueFields","BULK_UPDATE_ALLOWED_OPERATION_VALUE_FIELDS","clearedOperationParameters","newAction","isIncludeMode","shouldSelectAll","entitiesUris","simpleActionsL","bulkAction","getSingleSelectedEntityTypeUri","getAllowedAttrFieldNames","prepareAttrUriForSearch","Infinity","updateRecommendedFacetsList","now","extractedFacets","getFacetsArrayWithConfigs","getMaxRecommended","clearedFacets","buildQueryTree","getEnvironment","getTenant","buildRecommendationServiceRequest","allowedAttrFieldNames","getAttributesTree","recommended","startsWith","filterInvalidRecommendations","localRecommended","isNewRecommendation","numberToAdd","defaultFaceted","defaultFacetedAttributes","isReadableAttribute","special","getSpecialFacets","collectLocalRecommendations","fieldNames","put","getLookupCodesFilteredByDisplayName","valueCodes","filteredText","codeId","resolveLookupCodesTasksManager","_lookupsCodesResolveTasks","addTask","task","deleteTask","getRunningTask","clearTasks","eqByRef","resolveLookupValuesTasksManager","isLookupValueResolveTaskRunning","_lookupValuesResolveTasks","lookupsValues","codeValues","codeValue","getRunningTasks","tasks","uniqWith","awaitLoadingLookupsTasks","loadingTasks","requestLookupsList","lookupsList","lookupCodeValuesList","fork","mdmResolveLookupsList","resolvedLookupsCodes","lookup","lookupPathL","lookupResolvedValue","resolveLookupsList","unrequestedLookupsValues","isPendingValue","resolveLookupCode","code","limit","useCache","cacheKey","loadingCodeTask","getDependentLookups","displayNamePrefix","getPagedResult","filteredCodes","pageSize","getPrefixedLookupValues","facetPageSize","lookupsCodes","updatedLookupsCodes","reduceFacetsResponse","neededFacets","getFacetByFieldName","setDataForAttributes","setDataAction","facetResponse","resultForAttributes","prepareFacets","requestAttributesData","callSearchRequestForCurrentTenant","lookupFacets","otherFacets","isLookupFacet","resolveLookupsForFacetedAttributes","requestMoreAttributesData","includeFilter","buildFacetsRequest","isMLMatchRuleFacet","ML_RULES_ONLY","filterByLabel","buildIncludeFilterForRawData","rawData","updateFilteredAttribute","sources","getLastUriPart","buildIncludeFilterForSources","isMatchRuleFacet","matchGroups","disableIncludeFilter","forceInclude","requestFilteredAttributesData","acceptedValues","rawResult","getAcceptedFacetValues","facetsResponse","resolvedLookups","unresolvedLookupsFromFacets","getUnresolvedLookupsListFromFacet","unresolvedLookupsFromFacetResponse","lookupsListMap","codeValuesMap","lookupFacet","getLookupsListFromFacetResponse","getUnresolvedLookupsList","getUnresolvedLookupsListFromFacetResponse","unresolvedLookupsList","mergeLookupsLists","fillSearchResultsColumns","getInitialSearchResultsColumns","defaultTabs","getInitialColumnsByEntityTypes","columnsByEntityTypes","isAllowedTab","allowedValues","updateTableViewTabsForAdvancedSearch","entityTypesFromAllGroups","getEntityTypeFacetConfig","updateAction","filteredTabs","updateTableViewTabsAction","buildTableViewTabsLocalDataForAdvancedSearch","verifySearchResultsColumns","initialColumns","actualColumns","whiteListColumns","collectSpecialColumns","newActualColumns","F","toPairs","collectColumnsByIds","actualColumn","fromPairs","isFiltered","initialEntityTypesUris","actualEntityTypesUris","Set","verifyEntityTypeTab","tableViewTabsData","buildEntityTypeFacetLocalData","availableEntityTypeTabs","applyEntityTypeTabChanges","results","applySearchResultsModeChanges","applyPreviewPanelModeChanges","mapValues","initSearchNavigation","removeDtssPrefixFromEntityUri","indexOf","cache","takeLatest","mdmModuleUI","handleErrors","loadSavedSearches","setIsOwnSearch","getAllSavedSearchesParams","savedSearches","setSavedSearchesTotal","getSavedSearchesTotals","containsWordStartingWith","countResults","sortBy","SAVED_SEARCHES_SORT_BY_VALUES","getSavedSearchTotal","buildTotalOptionsForQuery","replacePlaceholdersInQuery","setSavedSearchItemTotal","markAsPublic","markSavedSearchAsPublic","markSavedSearchAsPublicAction","markAsFavorite","markSavedSearchAsFavorite","markSavedSearchAsFavoriteAction","markAsGlobalFilter","preparedSavedSearch","markSavedSearchAsGlobalFilter","changeItemName","updateSavedSearch","changeSavedSearchName","deleteSelectedItems","deleteSavedSearch","deleteSavedSearchesItemsAction","deleteItem","getSearchData","withPlaceholders","dateFiltersRules","isDateFilterOption","pathSatisfies","is","String","buildBasicFilterString","stringifiedSearchOptions","createSavedSearch","successful","object","applySavedSearch","showLoadSavedSearchErrors","take","patternHandlerMap","updateQueueChannel","actionChannel","sendActivity","activity","createActivity","ACTIVITY_TYPES","description","clearCachedEntities","activeEntityTypeTab","updateFacets","applyPagination","delay","searchEntities","forceOvOnly","selectParam","entityTypeFilter","columnsSelect","collectColumnsSelect","collectAdditionalSelect","geoLocationAttributesSelectRule","businessCardAttributeURIsSelectRule","buildQuery","buildEntitiesUrl","entitiesOptions","buildEntitiesRequestOptions","ENTITIES_POST_SEARCH_URL","updateSearchNavigation","enrichEntitiesWithDataTenant","prevSearchProviderData","applySearchResultsColumnsChanges","globalOptions","buildEntitiesByUrisRequest","syncSearchResults","showMoreForEntityType","keywordValue","clearAllFacetValues","entityTypeColumns","buildSelectFromColumns","totalParams","updateTotalAction","sendSearchActivity","waitBeforeSendSearchActivity","searchData","resolveLookupPattern","actionDrivenSearch","needFacetsCleanUp","cleanUpFacets","updateSearchStatePostprocessing","updatedSearchOptions","showUpdateSearchStateErrors","verifyEntityTypeFacet","verifyMapSearch","searchStateUpdated","mapSearchValues","getSearchQuery","queryParam","activityFilter","exportSearchResults","openDataLoader","enrichEntityWithDataTenant","searchSagaPattern","updateRangeFacet","getRangeBounds","defaultMin","defaultMax","getDefaultRangeByType","start","fixNaNValue","end","startValue","endValue","greaterThan","getRangeValues","rangeFacet","requestStats","buildStatsUrl","statsResults","reducedResults","prepareStatsFacet","isPotentialMatchesFacet","facetType","getInterval","histogramRequest","buildHistogramUrl","addRanges","buildUrls","matches","buildPotentialMatchesFacetUrl","buildMatchScoresFacetUrl","updatePotentialMatchesFacet","startResult","endResult","totalResults","getPMValues","barsNumber","fieldNameForRequest","facetsArray","potentialMatchesFacets","notProcessedFacets","rangeFacets","allSimpleFacets","isRangeFacet","notSelectedFacets","updateFacetWithSelection","mlMatchRuleFacet","notSelectedSimpleFacetsIncludingDTFacets","updateFacetsWithoutSelection","dataTenantFacets","notSelectedSimpleFacets","isDataTenantFacet","dataTenantFacet","requestGivenFacetsData","simpleFacetsIncludingDTFacets","simpleFacets","extraUrlParams","requestFacetsData","filterFacet","destroyFacetFilteredData","displayedItems","pagedFilteredData","isForeignFacet","isDeletingAffectsSearch","facetsWithValues","facetWithValue","refreshSearch","facetToAdd","convertAdvancedSearchToFacets","flatAttributesDataFromGroups","entityTypeFacet","needShowAllEntityTypeFacetItems","createFacetsFromAdvancedSearch","rawNumbersData","takeEvery","toggleQueryBuilderAttributeSelect","attributesPropName","groupSearchParams","setAttributeValues","entitySearchParams","convertFacetsToAdvancedSearch","getCommonUIStateForCompare","tabsPath","tabsLensPath","preparedView","viewLensPath","keywordPath","preparedKeyword","keywordLensPath","mapPath","preparedMap","mapLensPath","updateCurrent","updateCurrentSavedSearchChangeIndicator","isEqualUiState","savedUiState","actualUiState","commonSavedUiState","commonActualUiState","sortFieldPath","sortOrderPath","entityTypeTabPath","firstSortField","secondSortField","firstSortOrder","secondSortOrder","firstEntityTypeTab","secondEntityTypeTab","searchOptionsPath","firstSearchOptions","secondSearchOptions","isEqualCurrentSavedSearchAndActualUiState","syncCurrentSavedSearch","getCurrentSavedSearchByUri","loadedCurrentSavedSearch","getSavedSearch","getSavedSearchIdFromUri","setCurrentSavedSearchOnUpdate","newCurrentSavedSearchUri","newCurrentSavedSearch","searchStateChangedPattern","saveState","currentSavedSearchUri","saveStateSaga","pattern","getSearchGroups","generateNameFromAdvancedSearch","collectConditions","rejectDataWithoutValues","getSearchConditions","processEntityTypes","getAttributeNames","isEntityTypeCondition","getEntityTypeCondition","getEntityLabel","getAttributesPartLabel","generateNameFromBasicSearch","getFacets","getValues","getTitle","nonEmptyFacets","getLabelByValue","getSearchFacetTitle","getEntityTypeFacetFromState","getNonEmptyFacetsNames","getLabelsByNames","loadRecentSearches","recentSearches","sortedRecentSearches","descend","sortByCreatedDate","getRecentSearchesTotals","getRecentSearchTotal","setRecentSearchItemTotal","deleteSelectedRecentSearches","deleteRecentSearch","deleteRecentSearchesItemsAction","deleteRecentSearchesItem","appState","previousHash","generateName","hash","getHash","success","setRecentSearchesLastSaved","applyRecentSearchItem","parse","keywordUpdatedPattern","saveToRecent","requestEntity","getDtssEntityUrl","loadEntity","getEntitySelector","showLoadEntityError","addDefaultFacetedAttributes","isTypeFacetAction","isNewFacet","none","attributeFacetConfigs","attrNode","createComplexAttributesConfig","createAttributeFacetConfig","attributeUriToSearchUri","findFacetConfigByFieldName","getRepointEntityUriPaths","getUrisForSaving","replaceTemporaryRepointEntityUri","tempUri","newUri","pathToObjectURI","replaceTemporaryEntityUri","updatedObject","replaceTemporaryRefEntityURI","isRefEntityFilter","getReferencedEntityId","wrapInQuotes","buildQueryGroupsFromFilters","attributeFilters","updateConditionsFieldNames","attributeFieldName","fieldNamePath","conditionNamePath","actionNamePath","path1","path2","removeCommonPath","parentsLength","BULK_UPDATE_API_OPERATIONS","newFieldName","repeat","addConditionsToActionItem","actionItem","conditionsQuery","refEntityFilters","refEntityQuery","buildRefEntityQuery","buildConditionsQuery","valueFilter","selectComplexAttributeValue","selectSimpleAttributeValueWithLookup","isObject","buildActionAttributeValue","refRelation","pickAttributeValue","pickPin","pickAddNestedAttribute","pickValueFilter","pickReferencedEntity","createBaseItem","attributeURI","createAddItem","createDeleteItem","createUpdateItem","createRepointItem","createSpecialItem","createAddTagItem","tags","createReplaceTagItem","oldValue","createDeleteTagItem","createClearTagsItem","buildObjects","activeness","addGlobalFilterToQuery","excludeList","buildActions","buildAction","buildActionItems","operationEquals","isTags","EntityAttrTypes","initialSpecialColumns","isAttributeSearchUri","fields","getBulkUpdateSearchParams","updateCurrentEntities","runBulkRequest","errorMessage","errorCode","confirmBulkUpdateOperation","confirmBulkUpdate","confirmDeleteProfiles","modifiedEntities","rootTemporaryEntityUris","bulkActions","refEntityUris","findAllTemporaryRefEntityURI","repointEntityUris","getPathsWithTempUri","pathL","getEntityCreationList","mapping","saveTemporaryEntities","buildBulkUpdateRequestBody","buildBulkUpdateRequest","buildDeleteProfilesRequest","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","userPreferencesComparator","savedState","looseEquals","SearchView","onResize","DynamicModuleLoader","modules","reducerMap","uiReducer","searchReducer","facetsReducer","advancedSearch","savedSearchesReducer","recentSearchesReducer","entityReducer","bulkUpdateReducer","sagas","searchSaga","facetsSaga","uiSaga","advancedSearchSaga","savedSearchesSaga","recentSearchesSaga","currentSavedSearchSaga","entitySaga","defaultFacetedAttributesSaga","bulkUpdateSaga","initialActions","StylesProvider","handleHeight","LocalizationProvider","dateAdapter","AdapterMoment","FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","g","freeSelf","self","Function","objectToString","nativeMax","nativeMin","toNumber","isObjectLike","isSymbol","valueOf","replace","isBinary","module","func","wait","leading","trailing","TypeError","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","flush","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","process","hr","uptime","vendors","raf","caf","queue","_now","cp","cancelled","handle","fn","polyfill","requestAnimationFrame","cancelAnimationFrame","_extends2","_classCallCheck2","_createClass2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_react","_styles","_propTypes","_classnames","_math","strokeLinecap","strokeLinejoin","strokeMiterlimit","colorTable","ANIMATION_ID","_React$Component","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","el","dt","lerpTable","lerpColor","cssText","startAnimation","_progressPath","_this","_this$props","preserveAspectRatio","n","progressPath","string","defineProperty","lerp","x0","x1","y0","y1","b0","g0","r0","b1","g1","r1","vIndex","tValue","canExtrapolate","lerpFunc","rowCount"],"sourceRoot":""}
|