@reltio/remotes 1.4.1236 → 1.4.1237
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/5884.js +1 -1
- package/5884.js.map +1 -1
- package/6710.js +1 -1
- package/6710.js.map +1 -1
- package/7770.js +1 -1
- package/7770.js.map +1 -1
- package/8208.js +1 -1
- package/8208.js.map +1 -1
- package/package.json +1 -1
package/8208.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"8208.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/AttributeGroupIcon.tsx","webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/SelectAttributesList.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/BasicAttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/CollapseRowButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/QueryBuilderRow.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/contexts/CrosswalksDisplayContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/views.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnHandlerContext/index.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/filtersHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFindEntities.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesColumnsData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesTable.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/MergeButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/DCRReviewButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useRequestDCRReview.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CreateRelationButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/NotMatchButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/comparisonViewIcon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CompareModeButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/ReinstateMatchButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useReinstateMatch.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSetAMatch.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/SetAMatchButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/constants/prop-types.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/FindMatchesViewControls.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ExpandedContext.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/withExpanded.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/icons/collapseComplex.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/icons/expandComplex.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/workflow.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasks.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/WorkflowCard.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ComparisonTable.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/FullscreenButton/FullscreenButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/CloseButton/CloseButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/ComparisonViewHeader.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/helpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/ComparisonView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FullScreenView/FullScreenView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchRulesRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchIQRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/BlobRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ImageRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ReferenceRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/MatchesTable.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/withEntityCellValue.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/OptionsMenu/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/OptionsMenu/OptionsMenu.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTableHeader/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTableHeader/MatchesTableHeader.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeaderSelectionMode/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeaderSelectionMode/TableHeaderSelectionMode.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/FindMatchesViewActions.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useLimitSelection.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/FindMatchesView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/AddRelationDialog.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useAddRelationDialog.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/MenuItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/ActionsPanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/MatchesViewControls.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/MatchesViewActions.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/MatchesView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatches.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useNotMatches.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/NotMatchViewControls.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/NotMatchViewActions.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/NotMatchView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Content/Content.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/PMTabs/PMTabs.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/PotentialMatchesView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/index.js","webpack://@reltio/remotes/../potential-matches/src/NewPMView/PotentialMatchesProfileBand/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/PotentialMatchesProfileBand/PotentialMatchesProfileBand.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/icons/potential-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/icons/find-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/icons/not-a-match-icon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/helpers/stateReducer.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useMatchesReducer.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/MergeButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/NotMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/SetAMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useSetAMatch.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/DcrReviewButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useRequestDCRReview.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useReinstateMatch.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/ReinstateMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/CreateRelationButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/RightSideHeaderContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/SortingFieldSelector/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/SortingFieldSelector/SortingFieldSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/BottomHeaderContent/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/BottomHeaderContent/BottomHeaderContent.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/RightSidePanelHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/FindMatchesView/helpers/findMatchesViewHelper.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useSortOptions.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ItemRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ItemRenderer/ItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchItems/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchItems/MatchItems.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/FindMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/FindMatchesView/FindMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useFindEntities.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useMatches.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/AddRelationDialog/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/AddRelationDialog/AddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/helpers/relationsHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useAddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesView/helpers/matchesViewHelper.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ActionsPanel/MenuItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ActionsPanel/ActionsPanel.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/defaultOptions.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesView/MatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useNotMatches.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/NotMatchView/helpers/notMatchViewHelper.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/NotMatchView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/NotMatchView/NotMatchView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Content/Content.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/ValuesEditor/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/FilterSelector/FilterSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/ValuesEditor/ValuesEditor.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonViewModeSwitcher/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonViewModeSwitcher/ComparisonViewModeSwitcher.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/TableHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/SettingsMenu/SettingsMenu.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/TableHeader/TableHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/ExpandedContext.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/withExpanded.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ColumnsDataContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/HeadCellRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/HeadCellRenderer/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/HoveredEntityContext.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchControls/MatchControls.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/EntityCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/workflow.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/WorkflowTasksAvailabilityContext.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/WorkflowCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/WorkflowCard/WorkflowCard.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/defaultRows.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ColoredSourceIcon/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ColoredSourceIcon/ColoredSourceIcon.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/LabelRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/CrosswalksRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/cell-renderers/SourcesRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/cell-renderers/SourcesRenderer/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/helpers/tableHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ColumnHandlerContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/AddRowPopups/ConfigRowPopup.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/AddRowPopups/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/AddRowPopups/AddRowPopups.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useWorkflowTasksAvailability.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/ComparisonTable.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonView/ComparisonView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/MatchRulesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/ImageRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/ReferenceRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/dataHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/MatchesTable.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/withEntityCellValue.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchReviewTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchReviewTable/MatchReviewTable.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useFirstPotentialMatches.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useMatchesColumnData.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchReviewTable/helpers/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ChangeModeConfirmation/TableIcon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ChangeModeConfirmation/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ChangeModeConfirmation/ChangeModeConfirmation.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/NewPMVew.tsx","webpack://@reltio/remotes/../potential-matches/src/index.js","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n icon: {\n maxHeight: '25px',\n maxWidth: '25px',\n marginRight: '16px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {getAbsoluteImageUrl, getEntityTypeGraphIcon, Metadata} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\nimport {useStyles} from './styles';\n\ntype Props = {\n group: {id: string; title: string};\n metadata: Metadata;\n};\n\nconst AttributeGroupIcon = ({group, metadata}: Props) => {\n const styles = useStyles();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const entityTypeGraphIcon = getEntityTypeGraphIcon(metadata, {type: group.id});\n const absoluteImageUrl = getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return <AvatarWithFallback className={styles.icon} icon={absoluteImageUrl} avatarText={group.title[0]} />;\n};\n\nexport default AttributeGroupIcon;\n","import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n attribute: {\n cursor: 'pointer',\n lineHeight: '16px',\n flexBasis: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px 0 16px',\n width: 'calc(100% - 32px)',\n '&$attributeWithValue': {\n borderBottom: '1px solid rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n cursor: 'default'\n }\n },\n disabled: {},\n attributeWithValue: {},\n noSelect: {},\n name: {\n fontSize: '14px',\n color: 'rgba(0,0,0,0.87)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n direction: 'rtl',\n textAlign: 'left',\n flex: '1 0',\n width: '0',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n color: 'rgba(0,0,0,0.26)',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.26)'\n }\n }\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {either, prop} from 'ramda';\nimport {ArrowDropDown} from '@material-ui/icons';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {AttributeSelectorItem} from '../../../types';\nimport useStyles from './styles';\n\ntype Value = {\n fieldName: string;\n title: string;\n};\ntype Props = {\n value: AttributeSelectorItem;\n disabled: boolean;\n getLabel: (value: Value) => string;\n onSelectAttributeClick: (event) => void;\n};\n\nconst defaultGetLabel = either(prop('title'), prop('fieldName'));\n\nconst AttributeTitle = ({value, getLabel = defaultGetLabel, onSelectAttributeClick, disabled = false}: Props) => {\n const styles = useStyles();\n const label = value && getLabel(value);\n return (\n <div\n onClick={disabled ? undefined : onSelectAttributeClick}\n className={classnames(\n styles.attribute,\n {\n [styles.attributeWithValue]: !!label\n },\n {[styles.disabled]: disabled}\n )}\n >\n <ExpandedValueTooltip value={label}>\n <div className={classnames(styles.name, {[styles.disabled]: disabled})}>\n {label || <span className={styles.noSelect}>{i18n.text('Select attribute')}</span>}\n </div>\n </ExpandedValueTooltip>\n <SmallIconButton size={'M'} icon={ArrowDropDown} disabled={disabled} />\n </div>\n );\n};\n\nexport default AttributeTitle;\n","import {eqBy, pick, curry} from 'ramda';\nimport {getMaxItemWidth} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItem, AttributeSelectorItemsGroup} from '../../types';\n\nexport const isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));\n\nexport const checkAttributeIncludes = (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) =>\n selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));\n\nconst filterItem = (item: AttributeSelectorItem, filterText: string) =>\n item.title.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterItemsTree = (item: AttributeSelectorItem, filterText: string): boolean =>\n filterItem(item, filterText) || (item.children || []).some((item) => filterItemsTree(item, filterText));\n\nexport const filterSelectedAttributes = ({\n attribute,\n selectedAttributes,\n checked\n}: {\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n checked: boolean;\n}) => {\n return checked\n ? selectedAttributes.concat(attribute)\n : selectedAttributes.filter((selectedAttribute) => !isEqualAttributes(attribute, selectedAttribute));\n};\n\nexport const getAttributeIndex = (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) =>\n selectedAttributes.findIndex(isEqualAttributes(attribute));\n\nexport const getContainerWidth = getMaxItemWidth('title');\n\nexport const getOnEnterHandler = ({\n onListItemClick,\n selectedAttributes\n}: {\n selectedAttributes: AttributeSelectorItem[];\n onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;\n}) => ({item, groupData}) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n onListItemClick({...item, groupName: groupData.groupName}, !checked);\n};\n\nconst getAttributeGroupData = (\n item: AttributeSelectorItem,\n groupId: string,\n groupName: string,\n filterText: string,\n level = 0,\n noFilter = false\n) => {\n const isItemFiltered = filterItem(item, filterText);\n return [\n {\n item: filterText ? {...item, filterText} : item,\n level,\n groupId,\n groupName\n }\n ]\n .concat(\n item.children\n ? item.children\n .filter((subItem) => noFilter || isItemFiltered || filterItemsTree(subItem, filterText))\n .flatMap((subItem) =>\n getAttributeGroupData(\n subItem,\n groupId,\n groupName,\n filterText,\n level + 1,\n noFilter || isItemFiltered\n )\n )\n : []\n )\n .flat();\n};\n\nexport const prepareGroupsForSelectAttributeList: (\n filterText: string,\n groups: AttributeSelectorItemsGroup[]\n) => {item: AttributeSelectorItemsGroup[]; items: AttributeSelectorItem[]} = curry(\n (filterText: string, groups: AttributeSelectorItemsGroup[]) =>\n groups\n .map((group) => ({\n item: group,\n items: group.attributes\n .filter((attribute) => filterItemsTree(attribute, filterText))\n .map((item) => getAttributeGroupData(item, group.id, group.title, filterText))\n }))\n .filter((group) => group.items.length)\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n subHeader: {\n backgroundColor: '#f5f5f5',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n }\n});\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport VirtualGroupedList from '../VirtualGroupedList/VirtualGroupedList';\nimport Highlighter from '../Highlighter/Highlighter';\nimport AttributeGroupIcon from '../AttributeGroupIcon/AttributeGroupIcon';\nimport {checkAttributeIncludes} from '../BasicAttributeSelector/helpers';\nimport {AttributeSelectorItem} from '../../types';\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\n\ntype Data = {\n attrType?: AttributeType;\n};\ntype Props = {\n selectedAttributes: AttributeSelectorItem[];\n focusIndex: number;\n hideCheckBox: boolean;\n onItemClick: (data: Data, checked: boolean, groupId: string) => void;\n} & Record<string, unknown>;\n\nconst SelectAttributesList = ({selectedAttributes, onItemClick, focusIndex, hideCheckBox, ...otherProps}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const getItemSize = (i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT);\n\n const renderGroupTitle = (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.needGroupIcon && <AttributeGroupIcon group={item.item} metadata={metadata} />}\n {item.item.title}\n </ListItem>\n );\n\n const renderItem = (style, {item, level, groupId, groupName}, index) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n const isFocused = index === focusIndex;\n return (\n <AttributeListItem\n key={`item-${groupId}-${item.fieldName}`}\n onClick={onItemClick}\n checked={checked}\n data={{\n ...item,\n groupName\n }}\n notSelectable={item.notSelectable}\n hideCheckBox={hideCheckBox}\n label={<Highlighter text={item.title} highlight={item.filterText} />}\n labelInText={item.title}\n level={level}\n style={style}\n isFocused={isFocused}\n groupId={groupId}\n LogoIcon={item.LogoIcon}\n />\n );\n };\n\n return (\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={renderItem}\n renderGroupTitle={renderGroupTitle}\n focusIndex={focusIndex}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SelectAttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n selector: {\n minWidth: '200px',\n alignItems: 'stretch',\n background: 'rgba(0,0,0, 0.0267)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n display: 'flex'\n }\n});\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {identity, pipe, tap, prop, flatten, pick, map, chain, when, always} from 'ramda';\nimport SelectionPopup from '../SelectionPopup/SelectionPopup';\nimport {useKeyboardNavigation} from '../SelectionPopup/helpers';\nimport AttributeTitle from './AttributeTitle/AttributeTitle';\nimport {\n filterSelectedAttributes,\n getAttributeIndex,\n getContainerWidth,\n getOnEnterHandler,\n prepareGroupsForSelectAttributeList\n} from './helpers';\nimport SelectAttributesList from '../SelectAttributesList/SelectAttributesList';\nimport {flattenGroupedItemsData} from '../VirtualGroupedList/helpers';\nimport {AttributeSelectorItem, BasicAttributeSelectorProps} from '../../types';\nimport useStyles from './styles';\n\nconst ATTRIBUTES_LIST_HEIGHT = 400;\nconst ATTRIBUTES_LIST_WIDTH = 308;\nconst ATTRIBUTES_POPUP_HEIGHT = 507;\n\nconst BasicAttributeSelector = ({\n className,\n itemsGroups,\n value,\n getLabel,\n onSelect,\n onRestoreFocus = identity,\n onOpenPopup = identity,\n disableRestoreFocus = false,\n disableEnforceFocus = false,\n single = false,\n ungroup = false,\n disabled = false,\n hideCheckBox = false\n}: BasicAttributeSelectorProps) => {\n const styles = useStyles();\n const [selectAnchor, setSelectAnchor] = useState(null);\n const openPopup = (event) => {\n onOpenPopup();\n setSelectAnchor(event.currentTarget);\n };\n const closePopup = useCallback(() => setSelectAnchor(null), []);\n const isPopupOpen = !!selectAnchor;\n\n const [filterText, setFilterText] = useState('');\n const clearFilterText = useCallback(() => setFilterText(''), []);\n\n const [selectedAttributes, setSelectedAttributes] = useState([]);\n const clearSelectedAttributes = useCallback(() => setSelectedAttributes([]), []);\n\n const filteredItemsGroups = useMemo(() => prepareGroupsForSelectAttributeList(filterText, itemsGroups), [\n itemsGroups,\n filterText\n ]);\n\n const items = useMemo(\n () =>\n pipe(\n when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))),\n flattenGroupedItemsData\n )(filteredItemsGroups),\n [ungroup, filteredItemsGroups]\n );\n\n const containerWidth = useMemo(() => Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH), [\n filteredItemsGroups\n ]);\n\n const handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);\n\n const searchInputRef = useRef<HTMLInputElement>();\n\n const onListItemClick = useCallback(\n (attribute: AttributeSelectorItem, checked: boolean) => {\n onSelect({\n checked,\n attribute,\n index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),\n selectedAttributes\n });\n\n if (single) {\n setSelectedAttributes(checked ? [attribute] : []);\n handleOnClose({});\n } else {\n setSelectedAttributes(filterSelectedAttributes({selectedAttributes, attribute, checked}));\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n },\n [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]\n );\n\n const handleSearchOnEnter = useCallback(getOnEnterHandler({onListItemClick, selectedAttributes}), [\n onListItemClick,\n selectedAttributes\n ]);\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isPopupOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedAttributes,\n onClose: handleOnClose\n });\n\n return (\n <div className={classnames(styles.selector, className)} data-reltio-id=\"attribute-selector\">\n <AttributeTitle value={value} getLabel={getLabel} onSelectAttributeClick={openPopup} disabled={disabled} />\n <SelectionPopup\n open={isPopupOpen}\n anchorEl={selectAnchor}\n onClose={handleOnClose}\n onSearch={setFilterText}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n containerHeight={ATTRIBUTES_POPUP_HEIGHT}\n searchInputOnKeyDown={handleKeyDown}\n anchorOrigin={{horizontal: 'right', vertical: 'bottom'}}\n searchInputRef={searchInputRef}\n disableRestoreFocus={disableRestoreFocus}\n disableEnforceFocus={disableEnforceFocus}\n >\n <SelectAttributesList\n items={items}\n onItemClick={onListItemClick}\n selectedAttributes={selectedAttributes}\n width={containerWidth}\n height={ATTRIBUTES_LIST_HEIGHT}\n focusIndex={focusIndex}\n hideCheckBox={hideCheckBox}\n />\n </SelectionPopup>\n </div>\n );\n};\n\nexport default memo(BasicAttributeSelector);\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst getRowCellKey = ({rowIndex, columnData: {id}, cellIndex}) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = () => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState({});\n const rowCellHeightsMapCache = useRef({});\n const batchHeightUpdate = (key, value) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap({...rowCellHeightsMapCache.current});\n }),\n []\n );\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(pipe(getRowCellKey, prop(__, rowCellHeightsMap)), [rowCellHeightsMap]);\n\n const changeRowCellHeight = useCallback(\n curry(useWith(pipe(batchHeightUpdate, flushHeightUpdates), [getRowCellKey, identity])),\n []\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n hidden: {\n visibility: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {RowCollapseContext} from '../BasicTable/contexts/RowCollapseContext';\nimport CollapseButton from '../../CollapseButton/CollapseButton';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CollapseRowButton = ({rowIndex, rowValue, className}) => {\n const styles = useStyles();\n const {toggleRowCollapse, getIsRowCollapsible, getIsRowCollapsed} = useContext(RowCollapseContext);\n\n const isCollapsibleRow = getIsRowCollapsible(rowValue);\n const isCollapsedRow = getIsRowCollapsed(rowIndex);\n\n return (\n <CollapseButton\n className={classnames(className, {[styles.hidden]: !isCollapsibleRow})}\n isOpen={!isCollapsedRow}\n onClick={(e) => {\n toggleRowCollapse(rowIndex);\n e.stopPropagation();\n }}\n />\n );\n};\n\nCollapseRowButton.propTypes = {\n rowIndex: PropTypes.number,\n rowValue: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default CollapseRowButton;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\nimport {useDidUpdateEffect} from '../../../hooks';\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}) => {\n const cellRef = useRef(null);\n\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div>\n <ReactResizeDetector handleHeight={true} onResize={adjustCellHeight} />\n <RootRef rootRef={cellRef}>{cell}</RootRef>\n </div>\n );\n};\n\nRowCellAutoSizer.propTypes = {\n onChangeHeight: PropTypes.func,\n children: PropTypes.node\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n row: {\n display: 'flex',\n marginBottom: '12px'\n },\n rowItem: {\n paddingRight: '10px',\n display: 'flex'\n },\n fullWidth: {\n flexGrow: '1',\n flexBasis: '0',\n overflow: 'hidden'\n },\n hidden: {\n visibility: 'hidden'\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst height = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n readOnlyLogicOperatorContainer: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '40px',\n width: '76px',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n maxHeight: height\n },\n readOnlyFilter: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n width: '50px',\n marginLeft: '12px',\n maxHeight: height\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\n\nimport useStyles from './styles';\n\nconst ReadOnlyLogicOperator = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyLogicOperatorContainer, className)}>\n {rowData && rowData.operator ? capitalize(rowData.operator) : i18n.text('Where')}\n </div>\n );\n};\n\nReadOnlyLogicOperator.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyLogicOperator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nconst ReadOnlyFilter = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyFilter, className)}>\n {rowData && rowData.filter ? getFilterOptionLabel(rowData.filter) : i18n.text('equals')}\n </div>\n );\n};\n\nReadOnlyFilter.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyFilter;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport useStyles from './styles';\n\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRow = ({\n classes = {},\n rowData,\n previousRowData,\n LogicOperatorComponent = ReadOnlyLogicOperator,\n AttributeSelectorComponent,\n FilterSelectorComponent = ReadOnlyFilter,\n ValuesEditorComponent,\n ActionsComponent,\n filterSelectorRef,\n attributeSelectorProps = {},\n ...rowContext\n}) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.row, classes.root)}>\n <LogicOperatorComponent\n className={classes.logicOperatorContainer}\n rowContext={rowContext}\n rowData={previousRowData}\n />\n <div className={classnames(styles.rowItem, classes.attributeSelectorContainer)}>\n <AttributeSelectorComponent\n attributeSelectorProps={attributeSelectorProps}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, classes.filterSelectorContainer)}>\n <FilterSelectorComponent\n textFieldInputRef={filterSelectorRef}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, styles.fullWidth, classes.valuesEditorContainer)}>\n <ValuesEditorComponent rowContext={rowContext} rowData={rowData} />\n </div>\n <div className={classnames(styles.rowItem, classes.actionsContainer, {[styles.hidden]: !rowData})}>\n <ActionsComponent rowContext={rowContext} rowData={rowData} />\n </div>\n </div>\n );\n};\n\nQueryBuilderRow.propTypes = {\n classes: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowData: QueryBuilderAttributeType,\n previousRowData: QueryBuilderAttributeType,\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRow);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {path} from 'ramda';\n\nimport QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRowsGroup = ({\n className = undefined,\n rowClasses,\n rowsData,\n lastRowAttributeSelectorProps,\n filterSelectorRef,\n filterSelectorRefIndex,\n ...rowProps\n}) => {\n const renderRow = (rowData, index, rowsData) => {\n const previousRow = index > 0 ? path([index - 1], rowsData) : null;\n const lastRowProps =\n index === rowsData.length\n ? {\n attributeSelectorProps: lastRowAttributeSelectorProps\n }\n : {};\n return (\n <QueryBuilderRow\n key={rowData && rowData.id}\n rowData={rowData}\n previousRowData={previousRow}\n classes={rowClasses}\n filterSelectorRef={index === filterSelectorRefIndex ? filterSelectorRef : undefined}\n {...rowProps}\n {...lastRowProps}\n />\n );\n };\n\n return (\n <div className={className}>\n {rowsData.map(renderRow)}\n {renderRow(null, rowsData.length, rowsData)}\n </div>\n );\n};\n\nQueryBuilderRowsGroup.propTypes = {\n className: PropTypes.string,\n rowClasses: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowsData: PropTypes.arrayOf(QueryBuilderAttributeType),\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n filterSelectorRefIndex: PropTypes.number,\n lastRowAttributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRowsGroup);\n","import mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon} = findSourceSystemByUri(metadata, sourceType) as Source;\n const avatarText = getSourceSystemLabel(metadata, uri)[0];\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import {AttributeType, AttributeValue, DataTypes, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport React, {memo} from 'react';\nimport {ReadOnlyAttribute} from '../../..';\nimport ImageAttributesLine from '../ImageAttributesLine';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n expanded?: boolean;\n valueContainerClassName?: string;\n LabelRenderer?: ({attributeType: AttributeType, attributeValue: AttributeValue}) => JSX.Element;\n showNonOv?: boolean;\n};\n\nconst renderAttributesList = ({values, valueContainerClassName, ...props}: Props) => {\n return (\n <>\n {(values || []).map((attributeValue) => (\n <div key={attributeValue.uri} className={valueContainerClassName}>\n <ReadOnlyAttribute attributeValue={attributeValue} {...props} />\n </div>\n ))}\n </>\n );\n};\n\nconst AttributeValuesBlock = ({expanded, LabelRenderer, ...props}: Props) => {\n const {attributeType, values, valueContainerClassName} = props;\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_REFERENCE: {\n return renderAttributesList({expanded, LabelRenderer, ...props});\n }\n case DataTypes.TYPE_IMAGE: {\n return (\n <div className={valueContainerClassName}>\n <ImageAttributesLine\n attributeType={attributeType}\n attributeValues={values as ImageAttributeValue[]}\n imageSize={{imageHeight: 40, imageWidth: 40, imageMargin: 2}}\n />\n </div>\n );\n }\n default: {\n return renderAttributesList({...props});\n }\n }\n};\n\nexport default memo(AttributeValuesBlock);\n","import React, {createContext, useCallback, useContext} from 'react';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId} from '@reltio/mdm-sdk';\nimport {pipe, eqBy} from 'ramda';\nimport {noop} from '../../core';\n\nconst CrosswalksDisplayContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n getCrosswalkColor?: (crosswalk: CrosswalkBase) => string;\n focusedCrosswalks?: CrosswalkBase[];\n highlightedCrosswalks?: CrosswalkBase[];\n toggleCrosswalkFocus?: (crosswalk: CrosswalkBase) => void;\n setCrosswalkHighlighted?: (crosswalk: CrosswalkBase, highlighted: boolean) => void;\n};\n\nexport const CrosswalksDisplayProvider = ({children, ...props}: ProviderProps) => {\n return <CrosswalksDisplayContext.Provider value={props}>{children}</CrosswalksDisplayContext.Provider>;\n};\n\nexport const useCrosswalkColor = (crosswalk?: CrosswalkBase) => {\n const {getCrosswalkColor: getColor = pipe(getCrosswalkId, getCrosswalkColor)} =\n useContext(CrosswalksDisplayContext) || {};\n return crosswalk ? getColor(crosswalk) : '';\n};\n\nexport const useHighlightedCrosswalks = () => {\n const {highlightedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n return highlightedCrosswalks;\n};\n\nexport const useCrosswalkHighlight = (crosswalk?: CrosswalkBase) => {\n const {highlightedCrosswalks = [], setCrosswalkHighlighted = noop} = useContext(CrosswalksDisplayContext) || {};\n const isHighlighted = !!crosswalk && !!highlightedCrosswalks.find(eqBy(getCrosswalkId, crosswalk));\n return {\n isHighlighted,\n isDimmed: highlightedCrosswalks.length > 0 && !isHighlighted,\n highlightCrosswalk: useCallback(() => setCrosswalkHighlighted(crosswalk, true), [\n crosswalk,\n setCrosswalkHighlighted\n ]),\n removeHighlight: useCallback(() => setCrosswalkHighlighted(crosswalk, false), [\n crosswalk,\n setCrosswalkHighlighted\n ])\n };\n};\n\nexport const useCrosswalkFocus = (crosswalk?: CrosswalkBase) => {\n const {toggleCrosswalkFocus = noop, focusedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n const isFocused = !!crosswalk && focusedCrosswalks.some(eqBy(getCrosswalkId, crosswalk));\n return {\n isFocused,\n toggleCrosswalkFocus: useCallback(() => toggleCrosswalkFocus(crosswalk), [crosswalk, toggleCrosswalkFocus])\n };\n};\n","export const Views = {\n FIND_MATCHES: 'findMatches',\n POTENTIAL_MATCHES: 'potentialMatches',\n NOT_A_MATCH: 'notAMatch'\n};\nexport const ComparisonViewMode = {\n FULL_SCREEN: 'FULL_SCREEN',\n HIDDEN: 'HIDDEN',\n VISIBLE: 'VISIBLE'\n};\n\nexport const MAX_PROFILES_TO_COMPARE = 3;\n","import React, {createContext, useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nconst DataContext = createContext({\n reloadData: () => {},\n setReloadHandler: () => {}\n});\nconst createContextValue = () => {\n let dataHandler;\n const reloadData = () => {\n if (dataHandler) {\n dataHandler();\n }\n };\n const setReloadHandler = (reloadHandler) => {\n dataHandler = reloadHandler;\n };\n return {\n reloadData,\n setReloadHandler\n };\n};\nconst contextValue = createContextValue();\n\nexport const ReloadDataProvider = ({children}) => {\n return <DataContext.Provider value={contextValue}>{children}</DataContext.Provider>;\n};\n\nReloadDataProvider.propTypes = {\n children: PropTypes.node\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(DataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import React, {createContext, useReducer, useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport {createStandardAction, useActions} from '@reltio/components';\n\nimport {ComparisonViewMode} from '../../constants/views';\n\nconst ViewStateContext = createContext(null);\nconst ViewDispatchContext = createContext(null);\nconst UPDATE_COMPARISON_VIEW_MODE = 'UPDATE_COMPARISON_VIEW_MODE';\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\n\nconst actions = {\n setComparisonViewMode: createStandardAction(UPDATE_COMPARISON_VIEW_MODE),\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER)\n};\n\nconst viewStateReducer = (state, action) => {\n switch (action.type) {\n case UPDATE_COMPARISON_VIEW_MODE:\n return {...state, comparisonViewMode: action.payload};\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n }\n};\n\nexport const ViewStateProvider = ({children}) => {\n const [state, dispatch] = useReducer(viewStateReducer, {\n comparisonViewMode: ComparisonViewMode.HIDDEN,\n isGlobalSpinnerActive: false\n });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction}>{children}</ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nViewStateProvider.propTypes = {\n children: PropTypes.node\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import React from 'react';\n\nexport const ColumnHandlerContext = React.createContext(null);\n\nColumnHandlerContext.displayName = 'ColumnHandlerContext';\n","import {Maybe} from '@reltio/mdm-sdk';\nimport {columnFilterToMdmFilter} from '@reltio/components';\nimport {propEq} from 'ramda';\n\nconst createEntityTypeFilter = (value) => ({\n filter: 'equals',\n fieldName: 'type',\n values: [value]\n});\n\nconst buildMDMFilters = (entityType, filters, columnsData) => {\n const currentTypeClause = Maybe.fromNull(entityType).map(createEntityTypeFilter).orSome('');\n\n const filtersClause = Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n\n return filtersClause.concat(currentTypeClause);\n};\n\nexport {buildMDMFilters};\n","import {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, pluck, reject} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst getColumnsDataFromEntityAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: getLabel(attr.label),\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n }))\n);\n\nexport const getColumnsData = pipe(getEntityAttributesFromMetadata, getColumnsDataFromEntityAttributes);\n\nexport const getColumnsIdFromData = pluck('id');\n\nexport const isMatchAttrColumn = curry((matchAttributes, column) =>\n matchAttributes\n .map(attributeUriToSearchUri)\n .some((id) => column.id === id || (isReferenceAttrColumn(column) && isSubAttrIdForColumn(column, id)))\n);\nconst isNestedAttrColumn = (column) => isNested(column.dataTypeDefinition);\nconst isReferenceAttrColumn = (column) => isReference(column.dataTypeDefinition);\nconst isSubAttrIdForColumn = curry((parentColumn, columnId) => columnId.startsWith(`${parentColumn.id}.`));\nconst isNestedForOneOfColumns = curry(\n (columns, column) => isNestedAttrColumn(column) && columns.some(({id}) => isSubAttrIdForColumn(column, id))\n);\nconst isRelatedToColumns = (columns) => either(includes(__, columns), isNestedForOneOfColumns(columns));\n\nexport const getMatchAttrColumns = (matchAttributes, columnsData) =>\n pipe(reject(isNestedAttrColumn), filter(isMatchAttrColumn(matchAttributes)))(columnsData);\n\nexport const groupColumnsDataByMatchAttributes = (matchAttributes, columnsData) => {\n const [matchAttrColumns, otherColumns] = pipe(\n reject(isNestedAttrColumn),\n partition(isMatchAttrColumn(matchAttributes))\n )(columnsData);\n\n return matchAttrColumns.length\n ? [\n {\n id: 'match',\n label: i18n.text('Match attributes'),\n columns: columnsData.filter(isRelatedToColumns(matchAttrColumns))\n },\n {\n id: 'all',\n label: i18n.text('All attributes'),\n columns: columnsData.filter(isRelatedToColumns(otherColumns))\n }\n ]\n : columnsData;\n};\n","import {useSafePromise} from '@reltio/components';\nimport {ActivityFilters, getFilteredEntities, getTotals} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect} from 'react';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useFindEntities = ({entityType, filters, select, sorting, page, rowsPerPage, options, enabled}) => {\n const {order, field} = sorting;\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'defaultProfilePicValue'];\n const activityFilter = options.showInactiveEntities ? ActivityFilters.ALL : ActivityFilters.ACTIVE_ONLY;\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n Promise.all([\n getFilteredEntities(filters, {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.concat(select).join(','),\n activityFilter\n }),\n getTotals(filters, {activityFilter})\n ])\n )\n .then((results) => {\n const [entities, totalResponse] = results;\n const {total} = totalResponse;\n const entityToMatchFormat = (entity) => ({object: entity});\n setEntities(entities.map(entityToMatchFormat));\n setTotal(total);\n })\n .finally((_) => setGlobalSpinner(false));\n }\n },\n [entityType, filters, field, order, page, rowsPerPage, enabled, select, activityFilter] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities};\n};\n","import {getEntityTypeMatchAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {\n getColumnsData,\n getColumnsIdFromData,\n getMatchAttrColumns,\n groupColumnsDataByMatchAttributes\n} from '../helpers/tableHelpers';\nimport {MatchesColumnsData} from '../types/MatchColumnsData';\n\ntype MatchesColumnsDataProps = {\n defaultColumnsData: MatchesColumnsData[];\n additionalColumnsData?: MatchesColumnsData[];\n metadata: Metadata;\n entityType: TEntityType;\n};\nexport const useMatchesColumnsData = ({\n defaultColumnsData,\n additionalColumnsData,\n metadata,\n entityType\n}: MatchesColumnsDataProps) => {\n return useMemo(() => {\n const attrColumnsData = getColumnsData(metadata, entityType);\n const allColumnsData = defaultColumnsData.concat(additionalColumnsData || []).concat(attrColumnsData);\n const matchAttributes = getEntityTypeMatchAttributes(metadata, entityType);\n const groupedColumnsData = groupColumnsDataByMatchAttributes(matchAttributes, allColumnsData);\n const defaultColumns = pipe(\n getMatchAttrColumns,\n concat(defaultColumnsData),\n getColumnsIdFromData\n )(matchAttributes, attrColumnsData);\n return [allColumnsData, groupedColumnsData, defaultColumns];\n }, [defaultColumnsData, additionalColumnsData, metadata, entityType]);\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\nimport {evolve, remove, propSatisfies, gte, when, pipe, take, append, both, complement, isNil, __} from 'ramda';\n\nconst RESET = 'RESET';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst SET_OPTIONS = 'SET_OPTIONS';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n setOptions: createStandardAction(SET_OPTIONS),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload};\n case TOGGLE_SELECT: {\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex((selectedItem) => selectedItem === item);\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n const {limitSelection} = state;\n return pipe(\n when(\n both(complement(isNil), propSatisfies(gte(__, limitSelection), 'length')),\n take(limitSelection - 1)\n ),\n append(item)\n )(selected);\n }\n }\n },\n state\n );\n }\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\n\nexport const useMatchesTable = (defaultColumns, defaultSort, defaultRowsPerPage, defaultOptions) => {\n const {field, order} = defaultSort;\n const initState = {\n visibleColumns: defaultColumns,\n filters: null,\n sorting: {\n field,\n order\n },\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n selectedItems: [],\n options: defaultOptions,\n limitSelection: null\n };\n const [state, dispatch] = useReducer(stateReducer, initState);\n const tableActions = useActions({actions, dispatch});\n return [tableActions, state, dispatch];\n};\n","import {ErrorPopup} from '@reltio/components';\nimport {ApiErrorCode, ApiError} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showDCRReviewErrors = (error: ApiError) => {\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: error?.errorMessage || i18n.text('Something went wrong...')\n });\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {noop, MergeButton as MergeButtonComponent} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\n\nexport const MergeButton = forwardRef(({className, entities, entity, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n});\n\nMergeButton.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nMergeButton.displayName = 'mergeButton';\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: \"M10 6v2H4v12.22h12V14h2v6c0 1.05-.82 1.918-1.851 1.994L16 22H4c-1.05 0-1.918-.82-1.994-1.851L2 20V8c0-1.05.82-1.918 1.851-1.994L4 6h6zm4 10v2H6v-2h8zm-3.997-3l-.001 2H6v-2h4.003zM21 2c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1h-7l-2 2 .005-11c0-.55.445-1 .995-1h8zm-10.996 8l-.001 2H6v-2h4.004zm9.286-6.3l-3.17 3.17-1.41-1.42-1.41 1.41 2.82 2.84 4.59-4.58-1.42-1.42z\",\n id: \"svg3192636834a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg3192636834b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg3192636834a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg3192636834b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ActionButton, noop} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {EntityType, isEmptyValue} from '@reltio/mdm-sdk';\nimport {useRequestDCRReview} from '../../hooks/useRequestDCRReview';\nimport DcrReviewIcon from './icons/dcrReview.svg';\n\nexport const DCRReviewButton = forwardRef(\n ({className, entities, entity, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const [operationIsInProgress, startPMReview] = useRequestDCRReview({entity, entities});\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n\n return canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath) ? (\n <ActionButton\n className={className}\n disabled={operationIsInProgress}\n mode={mode}\n label={i18n.text('Potential match request')}\n icon={DcrReviewIcon}\n onClick={startPMReview}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\nexport const useRequestDCRReview = ({entities, entity}) => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [workflowPath, uris, tenant, environment, setGlobalSpinner]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\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: \"M19 14v3h3v2h-3v3h-2v-3h-3v-2l3-.001V14h2zM17 2a3 3 0 11-1.293 5.708l-4.535 4.535a5 5 0 11-1.414-1.414l4.534-4.536A3 3 0 0117 2zM7 12a3 3 0 100 6 3 3 0 000-6zm10-8a1 1 0 100 2 1 1 0 000-2z\",\n id: \"svg2192258504a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2192258504b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2192258504a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2192258504b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {ActionButton, noop} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\n\nexport const CreateRelationButton = forwardRef(\n (\n {className, mainEntity, currentEntity, matchRules, mode = 'iconButton', onClick = noop, onMenuClose = noop},\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.propTypes = {\n className: PropTypes.string,\n mainEntity: EntityType,\n currentEntity: EntityType,\n matchRules: PropTypes.arrayOf(PropTypes.string),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onClick: PropTypes.func,\n onMenuClose: PropTypes.func\n};\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\n\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\n\nexport const NotMatchButton = forwardRef(\n ({className, entities, entity, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nNotMatchButton.displayName = 'NotMatchButton';\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: \"M3 15h8v-2H3v2zm0 4h8v-2H3v2zm0-8h8V9H3v2zm0-6v2h8V5H3zm10 0h8v14h-8V5z\",\n id: \"svg2461472690a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"#111\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2461472690b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2461472690a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"red\",\n mask: \"url(#svg2461472690b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles, darken} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n iconButton: {\n '& svg g path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n comparisonButtonSelected: {\n backgroundColor: theme.palette.primary.main,\n borderRadius: 0,\n '& svg g path': {\n fill: '#FFFFFF',\n fillOpacity: 1\n },\n '&:hover': {\n backgroundColor: darken(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n '& svg g path': {\n fill: darken('#FFFFFF', theme.palette.action.hoverOpacity)\n }\n }\n },\n comparisonButton: {\n backgroundColor: '#FFFFFF',\n borderRadius: 0\n }\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport ComparisonViewIcon from './icons/comparisonViewIcon.svg';\nimport {useStyles} from './styles';\n\n//TODO: update icon, styles\nexport const CompareModeButton = ({className, selectedMatchesCount}) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isComparisonViewHidden = comparisonViewMode === ComparisonViewMode.HIDDEN;\n const isDisabled = selectedMatchesCount > MAX_PROFILES_TO_COMPARE;\n const onClick = useCallback(() => {\n const newMode = isComparisonViewHidden ? ComparisonViewMode.VISIBLE : ComparisonViewMode.HIDDEN;\n setComparisonViewMode(newMode);\n }, [setComparisonViewMode, isComparisonViewHidden]);\n const tooltip = useMemo(() => {\n if (isDisabled) {\n return i18n.text('Select 1-${maxProfilesToCompare} profiles to compare', {\n maxProfilesToCompare: MAX_PROFILES_TO_COMPARE\n });\n } else {\n return isComparisonViewHidden ? i18n.text('Show comparison view') : i18n.text('Hide comparison view');\n }\n }, [isComparisonViewHidden, isDisabled]);\n return (\n <SmallIconButtonWithTooltip\n tooltipTitle={tooltip}\n className={classnames(className, {\n [styles.iconButton]: isComparisonViewHidden,\n [styles.comparisonButton]: isComparisonViewHidden,\n [styles.comparisonButtonSelected]: !isComparisonViewHidden\n })}\n size=\"S\"\n onClick={onClick}\n icon={ComparisonViewIcon}\n showForDisabled={true}\n disabled={isDisabled}\n />\n );\n};\nCompareModeButton.propTypes = {\n entities: PropTypes.arrayOf(PropTypes.object),\n entity: EntityType,\n className: PropTypes.string,\n selectedMatchesCount: PropTypes.number.isRequired\n};\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 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n id: \"svg689336942a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg689336942b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg689336942a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg689336942b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, noop} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\nexport const ReinstateMatchButton = forwardRef(\n ({entity, entities, className, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({entity, entities});\n\n return (\n <ActionButton\n className={className}\n disabled={reinstateIsInProgress}\n mode={mode}\n label={i18n.text('Save as potential match')}\n icon={SetAsMatchIcon}\n onClick={onReinstateMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nReinstateMatchButton.propTypes = {\n entities: PropTypes.arrayOf(PropTypes.object),\n entity: EntityType,\n className: PropTypes.string,\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nReinstateMatchButton.displayName = 'ReinstateMatchButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {isDataTenantEntity, reinstateDataTenantEntityMatch, reinstateMixedEntitiesMatches} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\nexport const useReinstateMatch = ({entities, entity}) => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const onReinstateMatch = useCallback(() => {\n setGlobalSpinner(true);\n const params = {dtssPath, customerTenant: tenant, entity, entities};\n (isDataTenantEntity(entity)\n ? reinstateDataTenantEntityMatch(params)\n : reinstateMixedEntitiesMatches(params)\n ).finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData, dtssPath, tenant]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import {setAsMatch} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\nexport const useSetAMatch = ({entities, entity, _tenant}) => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const setAMatch = useCallback(() => {\n setGlobalSpinner(true);\n setAsMatch(entity.uri, entities).finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData]);\n\n return [isGlobalSpinnerActive, setAMatch];\n};\n","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {ActionButton, noop} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\nexport const SetAMatchButton = forwardRef(\n ({entity, entities, className, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities});\n\n return (\n <ActionButton\n className={className}\n disabled={markingIsInProgress}\n mode={mode}\n label={i18n.text('Save on potential matches')}\n icon={SetAsMatchIcon}\n onClick={setAMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nSetAMatchButton.propTypes = {\n className: PropTypes.string,\n entities: PropTypes.arrayOf(PropTypes.object),\n entity: EntityType,\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nSetAMatchButton.displayName = 'SetAMatchButton';\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n marginLeft: '8px'\n },\n mergeButton: {\n flexShrink: 0,\n marginRight: '8px'\n },\n rightButton: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto'\n },\n moreOptions: {\n marginRight: '-2px'\n }\n});\n\nexport default styles;\n","import PropTypes from 'prop-types';\nimport {EntityType} from '@reltio/mdm-sdk';\n\nexport const MatchControlsCellType = {\n value: PropTypes.shape({\n show: PropTypes.bool,\n config: PropTypes.object,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n matchRules: PropTypes.arrayOf(PropTypes.string),\n permission: PropTypes.shape({\n canMerge: PropTypes.bool,\n canAddRelation: PropTypes.bool,\n canMark: PropTypes.bool\n })\n })\n};\n","import React from 'react';\nimport useStyles from './styles';\nimport {SetAMatchButton} from '../../../Actions';\nimport {MatchControlsCellType} from './constants/prop-types';\n\nconst FindMatchesViewControls = ({value: {show, entity, entities, permission}}) => {\n const styles = useStyles();\n const {canMark} = permission;\n return show ? (\n <>\n <div className={styles.container}>\n {canMark && (\n <SetAMatchButton entity={entity} entities={entities} className={styles.rightButton} mode=\"button\" />\n )}\n </div>\n </>\n ) : null;\n};\n\nFindMatchesViewControls.propTypes = MatchControlsCellType;\n\nexport default FindMatchesViewControls;\n","import React from 'react';\n\nexport const ExpandedContext = React.createContext({});\n\nExpandedContext.displayName = 'ExpandedContext';\n","import React, {useContext, forwardRef} from 'react';\nimport {ExpandedContext} from './ExpandedContext';\n\nconst withExpanded = (Component) => {\n const WithExpanded = forwardRef((componentProps, ref) => {\n const {attributeType} = componentProps;\n const {expandedMap} = useContext(ExpandedContext);\n const expanded = expandedMap[attributeType.uri];\n return <Component {...componentProps} expanded={expanded} ref={ref} />;\n });\n\n WithExpanded.displayName = 'WithExpanded';\n return WithExpanded;\n};\n\nexport default withExpanded;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n complexAttributesHeadRenderer: {\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'flex-start'\n },\n complexAttributesHeadLabel: {\n flex: 1\n },\n attribute: {\n whiteSpace: 'pre-wrap'\n },\n matchedAttribute: {\n fontWeight: 500,\n height: '100%',\n margin: '-5px -16px',\n padding: '5px 16px',\n background: 'rgba(140, 193, 82, 0.12)'\n }\n}));\n","import React from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport withExpanded from '../withExpanded';\nimport {useStyles} from './styles';\n\nconst ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n matched?: boolean;\n };\n};\n\nexport const AttributesRenderer = ({value: {attributeType, attributeValues, matched = false}}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.attribute, {[styles.matchedAttribute]: matched})}>\n <ExpandableAttributeValuesBlock values={attributeValues} attributeType={attributeType} />\n </div>\n );\n};\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: \"M21.843 14.8l-4.242 4.243-4.243-4.243h8.485zM8 6v12H5V6h3zm2 8.919L12.941 18H10v-3.081zM13 6v6h-3V6h3zm5 0v6h-3V6h3z\",\n id: \"svg2425089452a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2425089452b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2425089452a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2425089452b)\",\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: \"M15.879 12.879l4.242 4.242-4.242 4.243v-8.485zM8 6v12H5V6h3zm5 0v12h-3V6h3zm5 0v5.464l-3-3V6h3z\",\n id: \"svg1931425825a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg1931425825b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1931425825a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1931425825b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {useCallback, useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {AttributeTypeType} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport CollapseIcon from '../icons/collapseComplex.svg';\nimport ExpandIcon from '../icons/expandComplex.svg';\n\nimport {ExpandedContext} from '../ExpandedContext';\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType}) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <div className={styles.complexAttributesHeadLabel}>{label}</div>\n <SmallIconButtonWithTooltip icon={expanded ? CollapseIcon : ExpandIcon} size=\"XS\" onClick={onExpandClick} />\n </div>\n );\n};\n\nComplexAttributesHeadRenderer.propTypes = {\n label: PropTypes.string,\n attributeType: AttributeTypeType\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '87px',\n display: 'flex',\n overflow: 'hidden'\n },\n closeButton: {\n position: 'absolute',\n backgroundColor: '#FFFFFF',\n zIndex: 1,\n borderRadius: '2px',\n margin: '4px'\n },\n profileCard_container: {\n overflow: 'hidden'\n },\n profileCard_label: {\n display: '-webkit-box',\n lineClamp: 2,\n boxOrient: 'vertical',\n whiteSpace: 'normal'\n },\n '@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)': {\n profileCard_label: {\n display: 'block',\n whiteSpace: 'nowrap'\n }\n },\n profileCard_secondaryLabel: {\n display: 'block',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n});\n\nexport default styles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport CloseIcon from '@material-ui/icons/Close';\nimport useStyles from './styles';\n\nconst EntityCard = ({value: {entity, showCloseButton, onClose}}) => {\n const styles = useStyles();\n\n return (\n <div className={styles.container}>\n {showCloseButton && (\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} size=\"XXS\" />\n )}\n <ProfileCard\n entity={entity}\n classes={{\n container: styles.profileCard_container,\n secondaryLabel: styles.profileCard_secondaryLabel,\n label: styles.profileCard_label\n }}\n />\n </div>\n );\n};\n\nEntityCard.propTypes = {\n value: PropTypes.shape({\n entity: EntityType,\n showCloseButton: PropTypes.bool,\n onClose: PropTypes.func\n })\n};\n\nexport default EntityCard;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n paddingTop: '7px'\n }\n});\n\nexport default styles;\n","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import {useState, useCallback} from 'react';\nimport {getEntityUriFromMatchObject, getTasksForEntity} from '@reltio/mdm-sdk';\nimport {propSatisfies, allPass, includes} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSelector} from 'react-redux';\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\nimport {useSafePromise} from '@reltio/components';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\nexport const useWorkflowTasks = ({entity, match}) => {\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState([]);\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .finally((_) => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n return {enabled: !!workflowPath, loading: requestIsInProgress, tasks, loadTasks};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden'\n },\n assigneeSelector: {},\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useEffect} from 'react';\nimport {\n PotentialMatchReviewCard,\n SmallIconButton,\n DropDownMenuButton,\n DropDownSelector,\n useWorkflowAssignee,\n WorkflowComments,\n useMergeAllRequest,\n useMarkAsNotMatchRequest\n} from '@reltio/components';\nimport {EntityType, PotentialMatchType} from '@reltio/mdm-sdk';\n\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {pick} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\nexport const WorkflowCard = ({entity, match}) => {\n const styles = useStyles();\n const {tasks, loadTasks} = useWorkflowTasks({entity, match});\n const {isPending: isMergeInProgress, sendMergeAllRequest: merge} = useMergeAllRequest({\n entity,\n entities: [match.object]\n });\n const {isPending: isMarkAsInProgress, sendMarkAsNotMatchRequest: notMatch} = useMarkAsNotMatchRequest({\n entity,\n entities: [match.object]\n });\n const mapping = {\n Merge: merge,\n NotAMatch: notMatch\n };\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const actions = ((task && task.possibleActions) || []).map(({action, label}) => ({\n text: label,\n onClick: mapping[action]\n }));\n const {assignee, getAssignees, updateAssignee, updateRequestIsInProgress} = useWorkflowAssignee(task || {});\n const Actions =\n actions.length > 0 ? (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n enabled={!isMergeInProgress || !isMarkAsInProgress}\n menuId={'custom-actions'}\n menuItems={actions}\n />\n ) : null;\n return task ? (\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <DropDownSelector\n className={styles.assigneeSelector}\n enabled={!updateRequestIsInProgress || assignee}\n getOptions={getAssignees}\n onChange={updateAssignee}\n hideSelectedOptions={false}\n label={i18n.text('Assigned to')}\n value={assignee}\n defaultOptions={true}\n />\n </div>\n <WorkflowComments {...getCommentsInfoFromTasks(task)} />\n </PotentialMatchReviewCard>\n </div>\n ) : null;\n};\n\nWorkflowCard.propTypes = {\n entity: EntityType,\n match: PotentialMatchType\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport WorkflowCard from '../../../WorkflowCard';\nimport {EntityType, PotentialMatchType} from '@reltio/mdm-sdk';\n\nconst WorkflowCardRenderer = ({value: {entity, match}}) => {\n return <WorkflowCard entity={entity} match={match} />;\n};\n\nWorkflowCardRenderer.propTypes = {\n value: PropTypes.shape({\n entity: EntityType,\n match: PotentialMatchType\n })\n};\n\nexport default WorkflowCardRenderer;\n","import {\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributesForMatchRules,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isEmptyValue,\n isOv\n} from '@reltio/mdm-sdk';\nimport {assoc, curry, filter, identity, last, path, pathOr, pipe, propEq, split, when} from 'ramda';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\n\nconst DEFAULT_ROWS = [\n {\n id: 'entityCard',\n label: '',\n cellRenderer: EntityCard\n },\n {\n id: 'matchControls',\n cellRenderer: () => null\n },\n {\n id: 'matchMethod',\n label: 'Match Method',\n cellRenderer: MatchMethod\n },\n {\n id: 'workflowCard',\n label: '',\n cellRenderer: WorkflowCardRenderer\n },\n {\n id: 'entityId',\n label: 'Entity ID'\n }\n];\n\nconst getDefaultRows = (controlsRenderer) =>\n DEFAULT_ROWS.map(when(propEq('id', 'matchControls'), assoc('cellRenderer', controlsRenderer)));\n\nconst getAttrTypeUriByName = curry((entityTypeUri, name) => `${entityTypeUri}/attributes/${name}`);\nconst getAttrTypeNameByUri = pipe(split('/'), last);\nconst getEntityAttributesTypeUris = (entity) => Object.keys(entity.attributes).map(getAttrTypeUriByName(entity.type));\n\nexport const getTableRowsData = (metadata, entity, selectedAttributes, controlsRenderer) => {\n const attributeTypeUris = selectedAttributes || getEntityAttributesTypeUris(entity);\n const attributesRows = attributeTypeUris\n .map((attrTypeUri) => {\n const attributeType = findAttributeTypeByUri(metadata, attrTypeUri, entity.type);\n const collectionName = getAttributeSource(attrTypeUri);\n return attributeType\n ? {\n id: `${collectionName}.${getAttrTypeNameByUri(attrTypeUri)}`,\n label: attributeType.label,\n attributeType,\n cellRenderer: AttributesRenderer,\n headCellRenderer: isComplexAttribute(attributeType) ? ComplexAttributesHeadRenderer : undefined\n }\n : null;\n })\n .filter(identity);\n\n return getDefaultRows(controlsRenderer).concat(attributesRows);\n};\n\nconst getColumnDataForRowData = (metadata, match, entitiesMap, entity, rowData, config, onRemoveItem) => {\n const {object, isMainEntity, matchRules} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'entityCard':\n return {\n entity: object,\n showCloseButton: !isMainEntity,\n onClose: () => onRemoveItem(match)\n };\n case 'matchControls':\n return {\n show: !isMainEntity,\n entity: entity,\n entities: [object],\n matchRules: matchRules,\n permission: getActionPermissionForMatch(metadata, config, object, entity, matchRules),\n config: config\n };\n case 'matchMethod':\n return {\n metadata,\n entity,\n match,\n entitiesMap,\n show: !isMainEntity && !!matchRules\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n }\n if (isAttributeSearchUri(rowData.id)) {\n const attrSource = getAttributeSource(rowData.attributeType);\n const getAttributeValues = pipe(pathOr([], [attrSource, rowData.attributeType.name]), filter(isOv));\n const attributeValues = getAttributeValues(object);\n const matchedAttributes = getAttributesForMatchRules(metadata, entity.type, matchRules || []);\n const matched =\n matchedAttributes.includes(path(['attributeType', 'uri'], rowData)) && !isEmptyValue(attributeValues);\n return {\n attributeType: rowData.attributeType,\n attributeValues,\n matched\n };\n }\n};\n\nexport const getTableColumnsData = (metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem) => {\n return [{object: entity, isMainEntity: true}].concat(matches).map((match) => {\n return rowsData.reduce((column, rowData) => {\n column[rowData.id] = getColumnDataForRowData(\n metadata,\n match,\n entitiesMap,\n entity,\n rowData,\n config,\n onRemoveItem\n );\n return column;\n }, {});\n });\n};\n","import React from 'react';\nimport {MatchRulesBlock} from '@reltio/components';\nimport useStyles from './styles';\n\ntype Props = {\n value: React.ComponentProps<typeof MatchRulesBlock> & {show?: boolean};\n};\nconst MatchMethod = ({value: {metadata, entity, match, entitiesMap, show}}: Props) => {\n const styles = useStyles();\n if (!show) {\n return null;\n }\n return (\n <div className={styles.container}>\n <MatchRulesBlock entity={entity} match={match} entitiesMap={entitiesMap} metadata={metadata} />\n </div>\n );\n};\n\nexport default MatchMethod;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst secondColumnColor = 'rgb(245,245,245)';\nconst firstRowHeight = 88;\nconst secondRowHeight = 48;\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n overflow: 'auto',\n height: '100%',\n width: '100%'\n },\n comparisonTable: {\n borderSpacing: 0,\n '& td, & th': {\n borderRight: borderStyle,\n borderBottom: borderStyle,\n margin: 0,\n verticalAlign: 'top',\n textAlign: 'left',\n fontSize: '13px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n wordWrap: 'break-word'\n },\n '& td': {\n minWidth: dataCellWidth,\n maxWidth: dataCellWidth,\n padding: '5px 16px',\n overflow: 'hidden',\n height: 0\n },\n '& td:empty, th:empty': {\n padding: '0px 16px'\n },\n '& th': {\n minWidth: headCellWidth,\n maxWidth: headCellWidth,\n padding: '5px 8px'\n },\n '& thead tr:first-child th:first-child': {\n borderBottom: 'none',\n borderTop: 'none'\n },\n // sticky columns\n '& td:first-child, th:first-child': {\n borderLeft: borderStyle,\n position: 'sticky',\n left: '0',\n zIndex: 2,\n backgroundColor: 'white',\n color: theme.palette.text.secondary,\n fontWeight: 'normal'\n },\n '& td:nth-child(2), th:nth-child(2)': {\n borderRight: thickBorderStyle,\n position: 'sticky',\n left: `${headCellWidth}px`,\n zIndex: 2\n },\n // sticky rows\n '& thead tr:first-child td, & thead tr:first-child th': {\n borderTop: 'none',\n position: 'sticky',\n top: '0',\n backgroundColor: 'white',\n height: firstRowHeight,\n padding: 0,\n zIndex: 2\n },\n '& thead tr:nth-child(2) td, & thead tr:nth-child(2) th': {\n position: 'sticky',\n top: `${firstRowHeight}px`,\n backgroundColor: 'white',\n height: secondRowHeight,\n padding: 0,\n zIndex: 2\n },\n '& thead tr:nth-child(3) td, & thead tr:nth-child(3) th': {\n position: 'sticky',\n top: `${firstRowHeight + secondRowHeight}px`,\n backgroundColor: 'white',\n borderBottom: thickBorderStyle,\n zIndex: 2\n },\n // always visible corner\n '& thead tr:nth-child(-n+3) td:nth-child(-n+2), & thead tr:nth-child(-n+3) th:nth-child(-n+2)': {\n zIndex: 3\n },\n // special color for second column\n 'table& tr td:nth-child(2), th:nth-child(2)': {\n backgroundColor: secondColumnColor\n }\n }\n}));\n","import React, {useCallback, useMemo, useState, useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {EntityType, MetadataType, PotentialMatchesConfigType, PotentialMatchType} from '@reltio/mdm-sdk';\nimport {VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\n\nimport {useStyles} from './styles';\n\nexport const ComparisonTable = ({\n className,\n entity,\n matches,\n metadata,\n config,\n selectedAttributes,\n entitiesMap,\n controlsRenderer\n}) => {\n const styles = useStyles();\n\n const rowsData = useMemo(() => getTableRowsData(metadata, entity, selectedAttributes, controlsRenderer), [\n metadata,\n entity,\n selectedAttributes,\n controlsRenderer\n ]);\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem]\n );\n\n const [expandedMap, setExpandedMap] = useState({});\n\n const onExpandType = useCallback((attrTypeUri) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n return (\n <div className={classnames(styles.container, className)}>\n <div>\n <ExpandedContext.Provider value={expandedContextValue}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={rowsData}\n columnsData={columnsData}\n theadRowsNumber={3}\n />\n </ExpandedContext.Provider>\n </div>\n </div>\n );\n};\n\nComparisonTable.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n matches: PropTypes.arrayOf(PotentialMatchType),\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n selectedAttributes: PropTypes.arrayOf(PropTypes.string),\n entitiesMap: PropTypes.object,\n controlsRenderer: PropTypes.func\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nconst FullscreenButton = ({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 {...otherProps}\n />\n );\n};\n\nFullscreenButton.propTypes = {\n isFullscreen: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FullscreenButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport {SmallIconButton} from '@reltio/components';\n\nconst CloseButton = ({onClick}) => {\n return <SmallIconButton size=\"L\" icon={CloseIcon} onClick={onClick} />;\n};\n\nCloseButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default CloseButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_theme) => ({\n header: {\n '& > button': {\n margin: '0 -2px'\n },\n padding: '8px 15px 8px 0',\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n\n flex1: {\n flex: 1\n },\n\n title: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\n}));\n","import {Typography as Typography} from '@material-ui/core';\nimport {BasicViewHeader} from '@reltio/components';\nimport PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport FullscreenButton from './FullscreenButton/FullscreenButton';\nimport CloseButton from './CloseButton/CloseButton';\nimport {ColumnsDataType, ColumnsSettings} from '@reltio/components';\nimport {useViewStateActions, useViewState} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useStyles} from './styles';\n\nconst ComparisonViewHeader = ({columnsData, selectedColumns, onChangeColumns}) => {\n const styles = useStyles();\n const {setComparisonViewMode} = useViewStateActions();\n const {comparisonViewMode} = useViewState();\n const closeHandler = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.HIDDEN);\n }, [setComparisonViewMode]);\n\n const fullScreenHandler = useCallback(() => {\n setComparisonViewMode(\n comparisonViewMode !== ComparisonViewMode.FULL_SCREEN\n ? ComparisonViewMode.FULL_SCREEN\n : ComparisonViewMode.VISIBLE\n );\n }, [setComparisonViewMode, comparisonViewMode]);\n\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <div className={classnames(styles.flex1, styles.title)}>\n <CloseButton onClick={closeHandler} />\n <FullscreenButton\n onClick={fullScreenHandler}\n isFullscreen={comparisonViewMode === ComparisonViewMode.FULL_SCREEN}\n />\n <Typography>{i18n.text('Comparison view')}</Typography>\n </div>\n <ColumnsSettings\n title={i18n.text('Show/hide attributes')}\n tooltipTitle={i18n.text('Show/hide attributes')}\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nComparisonViewHeader.propTypes = {\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func\n};\n\nexport {ComparisonViewHeader};\n","import {isAttributeSearchUri, isNested, searchUriToAttrUri} from '@reltio/mdm-sdk';\nimport {\n both,\n concat,\n curry,\n evolve,\n filter,\n flatten,\n join,\n lt,\n map,\n pipe,\n prop,\n propSatisfies,\n reduce,\n reject,\n slice,\n split,\n uniq,\n when\n} from 'ramda';\n\nconst getFirstLevelParentAttribute = pipe(split('.'), slice(0, 2), join('.'));\nexport const replaceSubAttributesWithParent = pipe(map(when(isAttributeSearchUri, getFirstLevelParentAttribute)), uniq);\n\nexport const getAttributesTypeUris = (entityTypeUri, attributes) =>\n pipe(\n filter(isAttributeSearchUri),\n map((searchUri) => searchUriToAttrUri(searchUri, entityTypeUri))\n )(attributes);\n\nconst getSubAttributesColumnsByColumnId = curry((columnId, columns) =>\n reduce((columnIds, column) => {\n if (column.id.startsWith(`${columnId}.`) && !isNested(column.dataTypeDefinition)) columnIds.push(column.id);\n return columnIds;\n }, [])(columns)\n);\n\nconst findSubAttributesInColumnsData = (columnsData, columnId) =>\n columnsData.reduce((acc, group) => {\n return pipe(prop('columns'), getSubAttributesColumnsByColumnId(columnId), flatten, concat(acc))(group);\n }, []);\n\nexport const addSubAttributesColumns = curry((columnsData, selectedColumns) => {\n return pipe(\n map(\n when(isAttributeSearchUri, (columnId) => {\n const firstLevelParentColumnId = getFirstLevelParentAttribute(columnId);\n const subAttributesColumns = findSubAttributesInColumnsData(columnsData, firstLevelParentColumnId);\n return subAttributesColumns.length ? subAttributesColumns : columnId;\n })\n ),\n flatten,\n uniq\n )(selectedColumns);\n});\n\nconst isSubAttributeColumn = pipe(\n prop('id'),\n both(isAttributeSearchUri, pipe(split('.'), propSatisfies(lt(2), 'length')))\n);\n\nexport const removeSubAttributesColumns = map(\n evolve({\n columns: reject(isSubAttributeColumn)\n })\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ComparisonTable from '../ComparisonTable';\nimport ComparisonViewHeader from '../ComparisonViewHeader';\nimport {ColumnsDataType} from '@reltio/components';\nimport {EntityType, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport {\n addSubAttributesColumns,\n getAttributesTypeUris,\n removeSubAttributesColumns,\n replaceSubAttributesWithParent\n} from './helpers';\nimport {pipe} from 'ramda';\n\nimport {useStyles} from './styles';\n\nexport const ComparisonView = ({\n classes,\n columnsData,\n selectedColumns,\n onChangeColumns,\n selectedItems,\n config,\n metadata,\n entity,\n entitiesMap,\n controlsRenderer\n}) => {\n const styles = useStyles();\n const matches = selectedItems.slice(-3);\n\n const selectedColumnsWithoutSubAttributes = replaceSubAttributesWithParent(selectedColumns);\n const selectedAttributes = getAttributesTypeUris(entity.type, selectedColumnsWithoutSubAttributes);\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonViewHeader\n columnsData={removeSubAttributesColumns(columnsData)}\n selectedColumns={selectedColumnsWithoutSubAttributes}\n onChangeColumns={pipe(addSubAttributesColumns(columnsData), onChangeColumns)}\n />\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n matches={matches}\n selectedAttributes={selectedAttributes}\n entitiesMap={entitiesMap}\n controlsRenderer={controlsRenderer}\n />\n </div>\n );\n};\n\nComparisonView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n selectedItems: PropTypes.arrayOf(PropTypes.object),\n classes: PropTypes.object,\n config: PotentialMatchesConfigType,\n entitiesMap: PropTypes.object,\n controlsRenderer: PropTypes.func\n};\n\nComparisonView.defaultProps = {\n classes: {}\n};\n","import React from 'react';\nimport {Portal as Portal} from '@material-ui/core';\nimport PropTypes from 'prop-types';\n\nexport const FullScreenView = ({fullScreenContainer, children}) => {\n return fullScreenContainer ? <Portal container={fullScreenContainer}>{children}</Portal> : <div />;\n};\n\nFullScreenView.propTypes = {\n fullScreenContainer: PropTypes.instanceOf(Element),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])\n};\n","import {makeStyles, fade, lighten} from '@material-ui/core/styles';\n\nconst defaultWrapperStyles = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 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};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color, hoveredColor) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${fade(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${fade(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 0, 0)', 0.96);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '19px'\n },\n headCheckbox: {\n marginLeft: '6px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n ...textOverflow,\n width: '30px'\n }\n },\n headCellWithEntity: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n rowCell: {\n fontSize: '12px',\n overflow: 'hidden'\n },\n rowCellFirstColumn: {\n height: '100%'\n },\n firstEntityCell: {\n maxHeight: '200px'\n },\n entityRowCell: {\n fontSize: '12px',\n position: 'relative'\n },\n entityRowCellSelected: getColoredRowCellStyle(entityBackground),\n rowCellHighlighted: getColoredRowCellStyle(highlightBackground),\n rowCellSelected: getColoredRowCellStyle(lightPrimaryBackground, lightPrimaryBackgroundHovered),\n defaultWrapper: {\n ...defaultWrapperStyles,\n '&::after': {\n ...textOverflow,\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n }\n }\n },\n hoveredDefaultWrapper: {\n ...defaultWrapperStyles\n },\n entityWrapper: {\n paddingLeft: '12px'\n },\n profileWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n position: 'relative'\n },\n entityLabel: {\n ...link,\n fontWeight: 500\n },\n commentsContainer: {\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 1,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '15px',\n backgroundColor: '#fff',\n '&$checked': {\n backgroundColor: lightPrimaryBackground\n }\n },\n checked: {},\n matchRulesWrapper: {\n padding: '12px 15px 4px 10px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIcon: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n opacity: 0.38\n }\n };\n});\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nDefaultCellValueRenderer.propTypes = {\n columnData: PropTypes.shape({\n dataTypeDefinition: PropTypes.object\n }),\n value: PropTypes.any\n};\n\nexport default DefaultCellValueRenderer;\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {CollapseRowButton, EntityUriLink, IdContext, withTableContext, CommentsContainer} from '@reltio/components';\nimport {\n EntityType,\n getEntityUriForLink,\n getLabel,\n createObjectIdForPM,\n CollaborationObjectTypes,\n createRelatedObjectUris\n} from '@reltio/mdm-sdk';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport {useStyles} from './styles';\n\nconst EntityProfileRenderer = (props) => {\n const {value: entity, rowIndex, rowValue, onToggleSelect, entityToMatch, isRowSelected, hoverRowIndex} = props;\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowSelectable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowSelectable\n })}\n >\n {isRowHovered && <DragIndicatorIcon className={styles.dragIcon} />}\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <Checkbox\n className={classnames(styles.rowCheckbox, {[styles.hidden]: !isRowSelectable})}\n checked={isRowSelected}\n onChange={onToggleSelect}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: EntityType,\n rowIndex: PropTypes.number,\n rowValue: PropTypes.shape({\n rawValue: PropTypes.object\n }),\n onToggleSelect: PropTypes.func,\n isRowSelected: PropTypes.bool,\n columnsData: PropTypes.array,\n entityToMatch: EntityType,\n hoverRowIndex: PropTypes.number\n};\n\nexport default withTableContext(({onToggleSelect, entityToMatch}, {rowValue, value}) => {\n const {rawValue: match} = rowValue;\n return {\n onToggleSelect: () => onToggleSelect(match),\n isRowSelectable: value !== entityToMatch,\n entityToMatch\n };\n})(EntityProfileRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nconst ProfileHeadCellRenderer = ({isAllSelected, isSomeSelected, onCheckboxClick, isComparisonViewShown, ...props}) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <Checkbox\n className={styles.headCheckbox}\n indeterminate={isSomeSelected && !isAllSelected}\n checked={isAllSelected}\n disabled={!isSomeSelected && isComparisonViewShown}\n onChange={() => onCheckboxClick()}\n data-reltio-id=\"reltio-matches-table-selectAll-checkbox\"\n />\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nProfileHeadCellRenderer.propTypes = {\n isSomeSelected: PropTypes.bool,\n isAllSelected: PropTypes.bool,\n onCheckboxClick: PropTypes.func,\n isComparisonViewShown: PropTypes.bool\n};\n\nexport default withTableContext(({selected, isAllSelected, onResetSelect, onSelectAll, isComparisonViewShown}) => {\n const isSomeSelected = !!selected && selected.length > 0;\n return {\n isSomeSelected,\n isAllSelected,\n onCheckboxClick: isSomeSelected ? onResetSelect : onSelectAll,\n isComparisonViewShown\n };\n})(withFilterAtBottom(ProfileHeadCellRenderer));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {TransitiveMatchBlock, SimpleMatchRulesBlock} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst MatchRulesRenderer = ({value: {transitiveMatchRules = [], matchRules = []} = {}}) => {\n const styles = useStyles();\n return (\n <div className={styles.matchRulesWrapper}>\n {matchRules.length > 0 && <SimpleMatchRulesBlock matchRules={matchRules} />}\n {transitiveMatchRules.length > 0 && <TransitiveMatchBlock transitiveMatchRules={transitiveMatchRules} />}\n </div>\n );\n};\n\nMatchRulesRenderer.propTypes = {\n value: PropTypes.shape({\n transitiveMatchRules: PropTypes.array,\n matchRules: PropTypes.array\n })\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useStyles} from './styles';\nimport {SimpleMatchRulesBlock} from '@reltio/components';\n\nconst MatchIQRenderer = ({value: {mlMatchRules = []} = {}}) => {\n const styles = useStyles();\n return (\n <div className={styles.matchRulesWrapper}>\n {mlMatchRules.length > 0 && <SimpleMatchRulesBlock isMlMatch={true} matchRules={mlMatchRules} />}\n </div>\n );\n};\n\nMatchIQRenderer.propTypes = {\n value: PropTypes.shape({\n mlMatchRules: PropTypes.array\n })\n};\n\nexport default MatchIQRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst BlobRenderer = ({value}) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n {value}\n </div>\n );\n};\n\nBlobRenderer.propTypes = {\n value: PropTypes.any\n};\n\nexport default BlobRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {getImageAttributeOvThumbnailUrl} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst ImageRenderer = ({value}) => {\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value});\n return (\n src && (\n <div className={styles.imageWrapper}>\n <img src={src} />\n </div>\n )\n );\n};\n\nImageRenderer.propTypes = {\n value: PropTypes.any\n};\n\nexport default ImageRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\n\nimport classnames from 'classnames';\nimport {EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, getLabel, getReferencedEntityFromAttrValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst ReferenceRenderer = ({value}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n value && (\n <div className={classnames(styles.defaultWrapper, styles.referenceWrapper)}>\n <EntityTypeIcon\n className={styles.entityAvatar}\n entityType={getEntityType(metadata, getReferencedEntityFromAttrValue(value).type)}\n />\n <EntityUriLink value={getReferencedEntityFromAttrValue(value).objectURI} className={styles.link}>\n {getLabel(value.label)}\n </EntityUriLink>\n </div>\n )\n );\n};\n\nReferenceRenderer.propTypes = {\n value: PropTypes.any\n};\n\nexport default ReferenceRenderer;\n","import {assoc, isEmpty, map, pipe, prop, reduce, split} from 'ramda';\nimport {\n DataTypes,\n getAttributesForMatchRules,\n getEntityId,\n getMatchRules,\n getOvAttributeValuesByPath,\n getTransitiveMatchesForEntity,\n isAttributeSearchUri,\n partitionByMlMatch\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport MatchIQRenderer from './cell-renderers/MatchIQRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\nconst getRowValueForColumn = (\n metadata,\n columnData,\n {entity, transitiveMatchRules, matchRules, mlMatchRules, matchScore}\n) => {\n switch (columnData.id) {\n case 'label':\n return entity;\n case 'id':\n return getEntityId(entity);\n case 'matchRules':\n return {transitiveMatchRules, matchRules};\n case 'mlMatchRules':\n return {mlMatchRules};\n case 'score':\n return matchScore;\n default: {\n const [attrSource, ...attrPath] = getAttrPathFromColumnId(columnData.id);\n return pipe(prop(attrSource), getOvAttributeValuesByPath(attrPath))(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (metadata, columnsData, matches, entitiesMap) =>\n matches.map((match) => {\n const entity = match.object;\n const transitiveMatchRules = getTransitiveMatchesForEntity(metadata, matches, entity, entitiesMap);\n const allMatchRules = match.matchRules || [];\n const matchScore = match.matchScore || 0;\n const [mlMatchRules, matchRules] = isEmpty(transitiveMatchRules)\n ? pipe(getMatchRules(metadata, entity.type), partitionByMlMatch)(allMatchRules)\n : [[], []];\n const matchAttributes = getAttributesForMatchRules(metadata, entity.type, allMatchRules);\n const rowValue = {entity, matchRules, mlMatchRules, transitiveMatchRules, matchScore};\n\n return pipe(\n reduce(\n (acc, columnData) => assoc(columnData.id, getRowValueForColumn(metadata, columnData, rowValue), acc),\n {}\n ),\n assoc('matchAttributes', matchAttributes),\n assoc('rawValue', match)\n )(columnsData);\n });\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const [, ...attrPath] = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRendererByDataType = (dataType) => {\n switch (dataType) {\n case DataTypes.TYPE_BLOB: {\n return BlobRender;\n }\n case DataTypes.TYPE_IMAGE: {\n return ImageRenderer;\n }\n case DataTypes.TYPE_REFERENCE: {\n return ReferenceRenderer;\n }\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getCellValueRenderer = (columnData) => {\n switch (columnData.id) {\n case 'label': {\n return EntityProfileRenderer;\n }\n case 'matchRules': {\n return MatchRulesRenderer;\n }\n case 'mlMatchRules': {\n return MatchIQRenderer;\n }\n default:\n return getCellValueRendererByDataType(columnData.dataTypeDefinition.type);\n }\n};\n\nconst getBasicTableColumnsData = (sortable, columnData) =>\n map((columnData) => ({\n sortable,\n ...columnData,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: columnData.id === 'label' ? ProfileHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData)\n }))(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/tableHelpers';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n ...otherProps\n}) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isRowSelected: PropTypes.bool,\n isCellHighlighted: PropTypes.bool,\n columnIndex: PropTypes.number\n};\n\nexport default withTableContext(({selected}, {columnData, rowValue, cell}) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden'\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n }\n}));\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n BasicTable,\n ColumnFilterType,\n ColumnsDataType,\n defaultGetRowCellHeight,\n RowCellAutoSizer,\n SortingType,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {\n EntityType,\n MetadataType,\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {either, evolve, move} from 'ramda';\n\nimport {useStyles} from './styles';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n filters,\n onFilter,\n sorting,\n onSort,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n entitiesMap,\n actionButtonsRenderer,\n basicTableRef,\n isComparisonViewShown\n}) => {\n const styles = useStyles();\n const [orderedMatches, setOrderedMatches] = useState(matches);\n useEffect(() => {\n setOrderedMatches(matches);\n }, [matches]);\n const onDndRowReorder = useCallback((oldPosition, newPosition) => {\n setOrderedMatches(move(oldPosition, newPosition));\n setHoverRowIndex(newPosition);\n }, []);\n\n const tableRowsData = useMemo(() => getBasicTableRowsData(metadata, columnsData, orderedMatches, entitiesMap), [\n orderedMatches,\n columnsData,\n metadata,\n entitiesMap\n ]);\n\n const sortable = !!onSort;\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(sortable, columnsData), [columnsData, sortable]);\n\n const entityRowData = useMemo(\n () => (entity ? getBasicTableRowsData(metadata, columnsData, [{object: entity}]) : []),\n [entity, metadata, columnsData]\n );\n\n const {getRowHeight, CellRenderer: EntityCellRenderer} = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT\n });\n\n const entityRowHeight = getRowHeight(0);\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(EntityCellRenderer);\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [tableColumnsData, EntityCellRenderer]);\n\n const tableContext = useMemo(\n () => ({\n isAllSelected: selected.length > 0 && selected.length === matches.length,\n entityToMatch: entity,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n isComparisonViewShown\n }),\n [entity, selected, onToggleSelect, onResetSelect, onSelectAll, matches, isComparisonViewShown]\n );\n\n const {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache} = useDynamicRowCellHeight();\n\n useLayoutEffect(clearHeightsCache, [matches]);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const onRowHover = useCallback(\n (rowIndex) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n if (!actionButtonsRenderer || hoverRowIndex === null) {\n return null;\n }\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n {actionButtonsRenderer({\n hoveredMatch,\n buttonClassName: styles.actionButton,\n onActionsMenuOpen,\n onActionsMenuClose\n })}\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n actionButtonsRenderer,\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n onActionsMenuOpen,\n onActionsMenuClose,\n entity\n ]);\n\n const renderRowCell = useCallback(\n (props) => {\n // eslint-disable-next-line react/prop-types\n switch (props.columnData.id) {\n case 'label':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n case 'mlMatchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n },\n [changeRowCellHeight, hoverRowIndex, hoveredRowRightContent, basicTableRef]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer\n }),\n [styles]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndRowReorderingHandler={onDndRowReorder}\n ref={basicTableRef}\n hoveredContentPosition={0}\n />\n </div>\n );\n};\n\nMatchesTable.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n columnsData: ColumnsDataType,\n matches: PropTypes.array,\n selected: PropTypes.array,\n onToggleSelect: PropTypes.func,\n onResetSelect: PropTypes.func,\n onSelectAll: PropTypes.func,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n entitiesMap: PropTypes.object,\n actionButtonsRenderer: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n isComparisonViewShown: PropTypes.bool\n};\n\nexport default MatchesTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {IdContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst withEntityCellValue = (EntityCellRenderer) => (HeadCellRenderer) => {\n const HeadCellWithEntityValue = (props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <HeadCellRenderer {...props} />\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n />\n </div>\n </IdContext.Provider>\n );\n };\n HeadCellWithEntityValue.propTypes = {\n headCellData: PropTypes.shape({\n id: PropTypes.string\n })\n };\n\n return HeadCellWithEntityValue;\n};\n\nexport default withEntityCellValue;\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px',\n paddingLeft: '12px',\n paddingRight: '38px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n hidden: {\n visibility: 'hidden'\n },\n checkIcon: {\n color: 'rgba(0,0,0,0.54)',\n marginRight: '12px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport CheckIcon from '@material-ui/icons/Check';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst OptionsMenu = ({options, optionsData, onChangeOptions}) => {\n const menuId = 'options-menu';\n\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const toggleOpen = () => setIsOpen((open) => !open);\n\n const renderOptionItem = (optionItem) => {\n const {label, id} = optionItem;\n const isOptionEnabled = options[id];\n const handleClick = () => {\n setIsOpen(false);\n onChangeOptions({\n ...options,\n [id]: !isOptionEnabled\n });\n };\n return (\n <MenuItem key={id} classes={{root: styles.menuItem}} onClick={handleClick}>\n <CheckIcon className={classnames(styles.checkIcon, {[styles.hidden]: !isOptionEnabled})} />\n <Typography classes={{root: styles.menuText}}>{label}</Typography>\n </MenuItem>\n );\n };\n\n return (\n <>\n <SmallIconButton\n icon={MoreVertIcon}\n size={'L'}\n ref={buttonRef}\n className={classnames(styles.buttonRoot, {\n [styles.selected]: isOpen\n })}\n onClick={toggleOpen}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n />\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={toggleOpen}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n >\n {optionsData.map(renderOptionItem)}\n </Menu>\n </>\n );\n};\n\nOptionsMenu.propTypes = {\n options: PropTypes.object,\n optionsData: PropTypes.array,\n onChangeOptions: PropTypes.func\n};\n\nexport default OptionsMenu;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n '& > button': {\n margin: '0 -2px'\n },\n paddingRight: '15px'\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n },\n flex1: {\n flex: 1\n },\n selected: {\n backgroundColor: fade(theme.palette.primary.main, 0.12)\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n Spacer,\n VerticalDivider\n} from '@reltio/components';\nimport OptionsMenu from '../OptionsMenu/OptionsMenu';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst MatchesTableHeader = ({\n total,\n columnsData,\n selectedColumns,\n onChangeColumns,\n filtersEnabled,\n onToggleFilters,\n showFilters,\n options,\n optionsData,\n onChangeOptions\n}) => {\n const styles = useStyles();\n const showOptions = !isEmptyValue(optionsData);\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n <Spacer />\n {showFilters && <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />}\n {showOptions && (\n <OptionsMenu options={options} optionsData={optionsData} onChangeOptions={onChangeOptions} />\n )}\n {(showFilters || showOptions) && <VerticalDivider height={28} margin={10} />}\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nMatchesTableHeader.propTypes = {\n total: PropTypes.number,\n showFilters: PropTypes.bool,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n options: PropTypes.object,\n optionsData: PropTypes.array,\n onChangeOptions: PropTypes.func\n};\n\nexport default MatchesTableHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n '& > button': {\n margin: '0 -2px'\n },\n paddingRight: '15px'\n },\n flex1: {\n flex: 1\n },\n selected: {\n backgroundColor: fade(theme.palette.primary.main, 0.12)\n }\n}));\n","import {Typography as Typography} from '@material-ui/core';\nimport {BasicViewHeader} from '@reltio/components';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst TableHeaderSelectionMode = ({selectedItems, children}) => {\n const styles = useStyles();\n const hasSelectedItems = selectedItems.length > 0;\n return (\n <BasicViewHeader title={''} classes={{root: classnames(styles.header, {[styles.selected]: hasSelectedItems})}}>\n <div className={styles.flex1}>\n <Typography color=\"primary\">\n {i18n.text('Selected: ${count}', {count: selectedItems.length})}\n </Typography>\n </div>\n {children}\n </BasicViewHeader>\n );\n};\n\nTableHeaderSelectionMode.propTypes = {\n selectedItems: PropTypes.arrayOf(PropTypes.object),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nTableHeaderSelectionMode.defaultProps = {\n selectedItems: []\n};\n\nexport default TableHeaderSelectionMode;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n button: {\n marginLeft: '8px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {map, prop} from 'ramda';\nimport {VerticalDivider} from '@reltio/components';\nimport {EntityType, getActionPermissionForMatches, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport {CompareModeButton, SetAMatchButton} from '../Actions';\n\nimport {useStyles} from './styles';\n\nconst getEntityObjects = map(prop('object'));\nexport const FindMatchesViewActions = ({entity, matches, metadata, config}) => {\n const styles = useStyles();\n const entities = getEntityObjects(matches);\n const {canMark} = getActionPermissionForMatches(metadata, config, entity, matches);\n\n return (\n <div className={styles.actions}>\n {canMark && <SetAMatchButton entity={entity} entities={entities} mode=\"button\" />}\n <VerticalDivider height={28} margin={10} />\n <CompareModeButton selectedMatchesCount={matches.length} />\n </div>\n );\n};\n\nFindMatchesViewActions.propTypes = {\n entity: EntityType,\n matches: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n config: PotentialMatchesConfigType\n};\n","import {DataTypes} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false\n }\n];\n\nconst OPTIONS_DATA = [\n {\n id: 'showInactiveEntities',\n get label() {\n return i18n.text('Include entities that have ended');\n }\n }\n];\n\nexport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n tableView: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n matchesView: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden'\n },\n comparisonView: {\n width: 'calc(100% - 280px)'\n },\n fullScreen: {\n height: '100%',\n zIndex: '200'\n }\n}));\n","import {useEffect} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../constants/views';\n\nexport const useLimitSelection = (comparisonViewMode, setLimitSelection) => {\n useEffect(() => {\n setLimitSelection(comparisonViewMode !== ComparisonViewMode.HIDDEN ? MAX_PROFILES_TO_COMPARE : undefined);\n }, [comparisonViewMode, setLimitSelection]);\n};\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatch,\n getEntityUriFromMatchObject,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport PropTypes from 'prop-types';\nimport {identity, propEq} from 'ramda';\nimport React, {memo, useCallback, useEffect, useMemo, useRef} from 'react';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {buildMDMFilters} from '../../helpers/filtersHelpers';\nimport {getColumnsIdFromData} from '../../helpers/tableHelpers';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnsData';\nimport {useMatchesTable} from '../../hooks/useMatchesTable';\nimport {SetAMatchButton} from '../Actions';\nimport FindMatchesViewControls from '../ComparisonTable/cell-renderers/MatchControls/FindMatchesViewControls';\nimport ComparisonView from '../ComparisonView';\nimport FullScreenView from '../FullScreenView';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport MatchesTableHeader from '../MatchesTableHeader/MatchesTableHeader';\nimport TableHeaderSelectionMode from '../TableHeaderSelectionMode/TableHeaderSelectionMode';\nimport {FindMatchesViewActions} from '../ViewActions/FindMatchesViewActions';\nimport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA} from './helpers/tableHelpers';\nimport {useStyles} from './styles';\nimport {useLimitSelection} from '../../hooks/useLimitSelection';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_COLUMNS = getColumnsIdFromData(DEFAULT_COLUMNS_DATA);\nconst DEFAULT_SORT_ORDER = 'asc';\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS;\nconst DEFAULT_OPTIONS = {\n showInactiveEntities: false\n};\n\nexport const FindMatchesView = memo(({entity, metadata, config, fullScreenContainer}) => {\n const styles = useStyles();\n const [actions, state] = useMatchesTable(\n DEFAULT_COLUMNS,\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_SORT_FIELD},\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_OPTIONS\n );\n const {comparisonViewMode, isGlobalSpinnerActive} = useViewState();\n const {\n changeRowsPerPage,\n changePage,\n changeColumns,\n toggleFilters,\n changeFilter,\n toggleSort,\n setSelectedItems,\n toggleSelect,\n setOptions,\n setLimitSelection\n } = actions;\n const {sorting, page, rowsPerPage, visibleColumns, filters, selectedItems, options} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_COLUMNS_DATA,\n metadata,\n entityType\n });\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n useEffect(() => {\n changeColumns(defaultColumns);\n }, [defaultColumns, changeColumns]);\n const requestFilters = useMemo(\n () => [\n ...buildMDMFilters(entityType, filters, allColumnsData),\n {filter: 'not equals', fieldName: 'uri', values: [entityUri]}\n ],\n [entityType, filters, allColumnsData, entityUri]\n );\n\n const columnsToSelect = useMemo(() => getColumnsIdFromData(visibleColumnsData), [visibleColumnsData]);\n\n const {entities, total, findEntities} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n select: columnsToSelect,\n page,\n rowsPerPage,\n options\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n findEntities();\n resetSelected();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useEffect(() => {\n const selected = selectedItems.map((item) => {\n const entity = entities.find(\n (entity) => getEntityUriFromMatchObject(entity) === getEntityUriFromMatchObject(item)\n );\n return entity ? entity : item;\n });\n setSelectedItems(selected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, filters, options]);\n\n useLimitSelection(comparisonViewMode, setLimitSelection);\n const isFullscreenMode = comparisonViewMode === ComparisonViewMode.FULL_SCREEN;\n const isComparisonViewShown = comparisonViewMode === ComparisonViewMode.VISIBLE;\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n columnsData: groupedColumnsData,\n config,\n selectedColumns: visibleColumns,\n onChangeColumns: changeColumns,\n controlsRenderer: FindMatchesViewControls\n };\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName}) => {\n const entities = [hoveredMatch.object];\n const {canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n return (\n canMark && (\n <SetAMatchButton\n entity={entity}\n entities={entities}\n mode=\"iconButton\"\n className={buttonClassName}\n />\n )\n );\n },\n [config, entity, metadata]\n );\n\n const basicTableRef = useRef(null);\n return isFullscreenMode ? (\n <FullScreenView fullScreenContainer={fullScreenContainer}>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.fullScreen}} />\n </ColumnHandlerContext.Provider>\n </FullScreenView>\n ) : (\n <div className={styles.matchesView}>\n {selectedItems && selectedItems.length > 0 ? (\n <TableHeaderSelectionMode selectedItems={selectedItems}>\n <FindMatchesViewActions\n matches={selectedItems}\n entity={entity}\n metadata={metadata}\n config={config}\n />\n </TableHeaderSelectionMode>\n ) : (\n <MatchesTableHeader\n total={total}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={changeColumns}\n filtersEnabled={!!filters}\n onToggleFilters={toggleFilters}\n showFilters={true}\n options={options}\n optionsData={OPTIONS_DATA}\n onChangeOptions={setOptions}\n />\n )}\n <div className={styles.mainArea}>\n <div className={styles.tableView}>\n <MatchesTable\n entity={entity}\n metadata={metadata}\n columnsData={visibleColumnsData}\n matches={entities}\n selected={selectedItems}\n onToggleSelect={toggleSelect}\n onResetSelect={resetSelected}\n onSelectAll={selectAll}\n filters={filters}\n onFilter={changeFilter}\n sorting={sorting}\n onSort={toggleSort}\n actionButtonsRenderer={actionButtonsRenderer}\n basicTableRef={basicTableRef}\n isComparisonViewShown={isComparisonViewShown}\n />\n <BasicTablePagination\n rowsPerPageOptions={isComparisonViewShown ? [] : ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {isComparisonViewShown && (\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n </ColumnHandlerContext.Provider>\n )}\n </div>\n </div>\n );\n});\nFindMatchesView.displayName = 'FindMatchesView';\nFindMatchesView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {AttributesList, ConnectionRelationTypeSelector} from '@reltio/components';\n\nimport {\n createRelation,\n EntityType,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n PotentialMatchesConfigType,\n validateConnectionRelation\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\nimport {useStyles} from './styles';\n\nconst AddRelationDialog = ({config, mainEntity, currentEntity, matchRules, open, onClose = identity}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata = useSelector(mdm.selectors.getMetadata);\n\n const {relation = {}} = useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes = useMemo(() => getRelationAttributesList(metadata, relationType), [\n relationType,\n metadata\n ]);\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n (relation) => {\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch)(relation);\n },\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n }).catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle disableTypography classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={ModeTypes.EDITING}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button disabled={disabled} color=\"primary\" onClick={onAdd}>\n {i18n.text('Add')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nAddRelationDialog.propTypes = {\n config: PotentialMatchesConfigType,\n mainEntity: EntityType,\n currentEntity: EntityType,\n matchRules: PropTypes.arrayOf(PropTypes.string),\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default AddRelationDialog;\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (metadata, config, mainEntity, entity, matchRules) => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {}) => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {pipe} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\n\nexport const useAddRelationDialog = (config) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({mainEntity, currentEntity, matchRules}) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config.id, dispatch]\n );\n\n const AddRelationDialogRenderer = () => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n };\n\n AddRelationDialogRenderer.propTypes = {};\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Action} from './ActionsPanel';\n\ntype Props = {\n item: Action;\n onMenuClose?: () => void;\n};\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const {ActionButton, props} = item;\n return <ActionButton ref={ref} mode=\"menuItem\" onMenuClose={onMenuClose} {...props} />;\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {splitAt} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? 'button' : 'iconButton';\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton key={index} mode={buttonMode} className={classes?.actionButton} {...props} />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions')\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport {prop} from 'ramda';\nimport {isDataTenantEntity} from '@reltio/mdm-sdk';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../../../Actions';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport {MatchControlsCellType} from './constants/prop-types';\nimport {ActionsPanel} from '../../../ActionsPanel/ActionsPanel';\n\nimport useStyles from './styles';\n\nconst MatchesViewControls = ({value: {show, entity, entities, matchRules, permission, config}}) => {\n const styles = useStyles();\n const {canMerge, canAddRelation, canMark} = permission;\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: entities.length > 0 ? entities[0] : {},\n matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return show ? (\n <>\n <div className={styles.container}>\n {canMerge && (\n <MergeButton entity={entity} entities={entities} className={styles.mergeButton} mode=\"button\" />\n )}\n <ActionsPanel\n actions={actions}\n numberOfButtons={1}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n {canAddRelation && showDialog && <AddRelationDialogRenderer />}\n </>\n ) : null;\n};\n\nMatchesViewControls.propTypes = MatchControlsCellType;\n\nexport default MatchesViewControls;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {map, prop} from 'ramda';\nimport {VerticalDivider} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatches,\n isDataTenantEntity,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {CompareModeButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {useStyles} from './styles';\n\nconst getEntityObjects = map(prop('object'));\nexport const MatchesViewActions = ({entity, matches, metadata, config}) => {\n const entities = getEntityObjects(matches);\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, matches);\n const styles = useStyles();\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity]\n );\n\n return (\n <div className={styles.actions}>\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n classes={{\n actionButton: styles.button\n }}\n />\n <VerticalDivider height={28} margin={10} />\n <CompareModeButton selectedMatchesCount={matches.length} />\n </div>\n );\n};\n\nMatchesViewActions.propTypes = {\n entity: EntityType,\n matches: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n config: PotentialMatchesConfigType\n};\n","import {DataTypes} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: 'matchRules',\n get label() {\n return i18n.text('Match rule');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n hideable: false,\n initialWidth: 100,\n autoResize: false\n },\n {\n id: 'mlMatchRules',\n get label() {\n return i18n.text('Match IQ');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n hideable: false,\n initialWidth: 130,\n minWidth: 130,\n autoResize: false\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false\n }\n];\n\nconst OPTIONS_DATA = [\n {\n id: 'showTransitiveMatches',\n get label() {\n return i18n.text('Show transitive matches');\n }\n },\n {\n id: 'showInactiveEntities',\n get label() {\n return i18n.text('Include entities that have ended');\n }\n }\n];\n\nconst ADDITIONAL_COLUMNS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_INT\n },\n initialWidth: 100\n }\n];\n\nexport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA, ADDITIONAL_COLUMNS_DATA};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n tableView: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n matchesView: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden'\n },\n comparisonView: {\n width: 'calc(100% - 280px)'\n },\n fullScreen: {\n height: '100%',\n zIndex: '200'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {identity, prop, propEq} from 'ramda';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n EntitiesMapContext,\n useCollaboration\n} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatch,\n getPotentialMatchesObjectIdsForCollaboration,\n isDataTenantEntity,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {getColumnsIdFromData} from '../../helpers/tableHelpers';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useMatches} from '../../hooks/useMatches';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnsData';\nimport {useMatchesTable} from '../../hooks/useMatchesTable';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport ComparisonView from '../ComparisonView';\nimport FullScreenView from '../FullScreenView';\nimport MatchesViewControls from '../ComparisonTable/cell-renderers/MatchControls/MatchesViewControls';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport MatchesTableHeader from '../MatchesTableHeader/MatchesTableHeader';\nimport TableHeaderSelectionMode from '../TableHeaderSelectionMode/TableHeaderSelectionMode';\nimport {MatchesViewActions} from '../ViewActions/MatchesViewActions';\nimport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA, ADDITIONAL_COLUMNS_DATA} from './helpers/tableHelpers';\nimport {useLimitSelection} from '../../hooks/useLimitSelection';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS = getColumnsIdFromData(DEFAULT_COLUMNS_DATA);\nconst DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\n\nexport const MatchesView = memo(({entity, metadata, config, fullScreenContainer}) => {\n const styles = useStyles();\n const [actions, state] = useMatchesTable(\n DEFAULT_COLUMNS,\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_COLUMNS[0]},\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_OPTIONS\n );\n const {comparisonViewMode, isGlobalSpinnerActive} = useViewState();\n const {\n changeRowsPerPage,\n changePage,\n changeColumns,\n toggleFilters,\n changeFilter,\n setSelectedItems,\n toggleSelect,\n setOptions,\n setLimitSelection\n } = actions;\n const {page, rowsPerPage, visibleColumns, filters, selectedItems, options} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n\n //workaround before we support sorting for all columns\n const sorting = visibleColumns.includes('score')\n ? {field: 'score', order: 'desc'}\n : {order: DEFAULT_SORT_ORDER, field: DEFAULT_COLUMNS[0]};\n const {matches, total, entitiesMap, loadMatches} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: '',\n page,\n sorting,\n rowsPerPage,\n options\n });\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadMatches();\n resetSelected();\n });\n\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_COLUMNS_DATA,\n additionalColumnsData: ADDITIONAL_COLUMNS_DATA,\n metadata,\n entityType\n });\n\n useEffect(() => {\n changeColumns(defaultColumns);\n }, [defaultColumns, changeColumns]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n useLimitSelection(comparisonViewMode, setLimitSelection);\n const isFullscreenMode = comparisonViewMode === ComparisonViewMode.FULL_SCREEN;\n const isComparisonViewShown = comparisonViewMode === ComparisonViewMode.VISIBLE;\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n columnsData: groupedColumnsData,\n config,\n selectedColumns: visibleColumns,\n onChangeColumns: changeColumns,\n entitiesMap,\n controlsRenderer: MatchesViewControls\n };\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}) => {\n const {canMerge, canAddRelation, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog]\n );\n const basicTableRef = useRef(null);\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n {isFullscreenMode ? (\n <FullScreenView fullScreenContainer={fullScreenContainer}>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.fullScreen}} />\n </ColumnHandlerContext.Provider>\n </FullScreenView>\n ) : (\n <div className={styles.matchesView}>\n {selectedItems && selectedItems.length > 0 ? (\n <TableHeaderSelectionMode selectedItems={selectedItems}>\n <MatchesViewActions\n matches={selectedItems}\n entity={entity}\n metadata={metadata}\n config={config}\n />\n </TableHeaderSelectionMode>\n ) : (\n <MatchesTableHeader\n total={total}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={changeColumns}\n filtersEnabled={!!filters}\n onToggleFilters={toggleFilters}\n options={options}\n optionsData={isDataTenantEntity(entity) ? undefined : OPTIONS_DATA}\n onChangeOptions={setOptions}\n />\n )}\n <div className={styles.mainArea}>\n <div className={styles.tableView}>\n <MatchesTable\n entity={entity}\n metadata={metadata}\n columnsData={visibleColumnsData}\n matches={matches}\n selected={selectedItems || []}\n onToggleSelect={toggleSelect}\n onResetSelect={resetSelected}\n onSelectAll={selectAll}\n filters={filters}\n onFilter={changeFilter}\n entitiesMap={entitiesMap}\n actionButtonsRenderer={actionButtonsRenderer}\n basicTableRef={basicTableRef}\n isComparisonViewShown={isComparisonViewShown}\n />\n <BasicTablePagination\n rowsPerPageOptions={isComparisonViewShown ? [] : ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {isComparisonViewShown && (\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n </ColumnHandlerContext.Provider>\n )}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </div>\n )}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\nMatchesView.displayName = 'MatchesView';\n\nMatchesView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import {useCallback} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useMatches = ({entity, filter, sorting, page, rowsPerPage, options, enabled}) => {\n const {setGlobalSpinner} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting\n });\n\n return {matches, total, entitiesMap, loadMatches};\n};\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n ActivityFilters,\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, options, enabled}) => {\n const {order, field} = sorting || {};\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [matches, setMatches] = useState([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const loadNotMatchesIfNeeded = useCallback(\n (force) => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter,\n sort: field,\n force,\n order,\n activeness: options.showInactiveEntities ? ActivityFilters.ALL : ActivityFilters.ACTIVE_ONLY\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response);\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally((_) => setGlobalSpinner(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, options, enabled] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches};\n};\n","import React from 'react';\nimport {prop} from 'ramda';\nimport {isDataTenantEntity} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../../../Actions';\nimport {MatchControlsCellType} from './constants/prop-types';\nimport useStyles from './styles';\nimport {ActionsPanel} from '../../../ActionsPanel/ActionsPanel';\n\nconst NotMatchViewControls = ({value: {show, entity, entities, permission}}) => {\n const styles = useStyles();\n const {canMerge, canMark} = permission;\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return show ? (\n <>\n <div className={styles.container}>\n {canMerge && (\n <MergeButton entity={entity} entities={entities} className={styles.mergeButton} mode=\"button\" />\n )}\n <ActionsPanel\n actions={actions}\n numberOfButtons={1}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n </>\n ) : null;\n};\n\nNotMatchViewControls.propTypes = MatchControlsCellType;\n\nexport default NotMatchViewControls;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {map, prop} from 'ramda';\nimport {VerticalDivider} from '@reltio/components';\nimport {\n EntityType,\n isDataTenantEntity,\n getActionPermissionForMatches,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {CompareModeButton, DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\nconst getEntityObjects = map(prop('object'));\nexport const NotMatchViewActions = ({entity, matches, metadata, config}) => {\n const styles = useStyles();\n const entities = getEntityObjects(matches);\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, matches);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entities, entity, hasDTEntity]\n );\n\n return (\n <div className={styles.actions}>\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n classes={{\n actionButton: styles.button\n }}\n />\n <VerticalDivider height={28} margin={10} />\n <CompareModeButton selectedMatchesCount={matches.length} />\n </div>\n );\n};\n\nNotMatchViewActions.propTypes = {\n entity: EntityType,\n matches: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n config: PotentialMatchesConfigType\n};\n","import {DataTypes} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false\n }\n];\n\nconst OPTIONS_DATA = [\n {\n id: 'showInactiveEntities',\n get label() {\n return i18n.text('Include entities that have ended');\n }\n }\n];\nexport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n tableView: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n matchesView: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden'\n },\n comparisonView: {\n width: 'calc(100% - 280px)'\n },\n fullScreen: {\n height: '100%',\n zIndex: '200'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {identity, prop, propEq} from 'ramda';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n EntitiesMapContext,\n CollaborationContext,\n useCollaboration\n} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatch,\n getPotentialMatchesObjectIdsForCollaboration,\n isDataTenantEntity,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {getColumnsIdFromData} from '../../helpers/tableHelpers';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnsData';\nimport {useMatchesTable} from '../../hooks/useMatchesTable';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport ComparisonView from '../ComparisonView';\nimport FullScreenView from '../FullScreenView';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport MatchesTableHeader from '../MatchesTableHeader/MatchesTableHeader';\nimport NotMatchViewControls from '../ComparisonTable/cell-renderers/MatchControls/NotMatchViewControls';\nimport TableHeaderSelectionMode from '../TableHeaderSelectionMode/TableHeaderSelectionMode';\nimport {NotMatchViewActions} from '../ViewActions/NotMatchViewActions';\nimport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA} from './helpers/tableHelpers';\nimport {useLimitSelection} from '../../hooks/useLimitSelection';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS = getColumnsIdFromData(DEFAULT_COLUMNS_DATA);\nconst DEFAULT_OPTIONS = {\n showInactiveEntities: false\n};\n\nexport const NotMatchView = memo(({entity, metadata, config, fullScreenContainer}) => {\n const {comparisonViewMode, isGlobalSpinnerActive} = useViewState();\n const styles = useStyles();\n const [actions, state] = useMatchesTable(\n DEFAULT_COLUMNS,\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_COLUMNS[0]},\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_OPTIONS\n );\n const {\n changeRowsPerPage,\n changePage,\n changeColumns,\n toggleFilters,\n changeFilter,\n setSelectedItems,\n toggleSelect,\n setOptions,\n setLimitSelection\n } = actions;\n const {page, rowsPerPage, visibleColumns, filters, selectedItems, options} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n\n const {matches, total, entitiesMap, loadNotMatches} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: '',\n page,\n rowsPerPage,\n options\n });\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadNotMatches();\n resetSelected();\n });\n\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_COLUMNS_DATA,\n metadata,\n entityType\n });\n\n useEffect(() => {\n changeColumns(defaultColumns);\n }, [defaultColumns, changeColumns]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n useLimitSelection(comparisonViewMode, setLimitSelection);\n const isFullscreenMode = comparisonViewMode === ComparisonViewMode.FULL_SCREEN;\n const isComparisonViewShown = comparisonViewMode === ComparisonViewMode.VISIBLE;\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n columnsData: groupedColumnsData,\n config,\n selectedColumns: visibleColumns,\n onChangeColumns: changeColumns,\n controlsRenderer: NotMatchViewControls\n };\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata]\n );\n const basicTableRef = useRef(null);\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n {isFullscreenMode ? (\n <FullScreenView fullScreenContainer={fullScreenContainer}>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.fullScreen}} />\n </ColumnHandlerContext.Provider>\n </FullScreenView>\n ) : (\n <div className={styles.matchesView}>\n {selectedItems && selectedItems.length > 0 ? (\n <TableHeaderSelectionMode selectedItems={selectedItems}>\n <NotMatchViewActions\n matches={selectedItems}\n entity={entity}\n metadata={metadata}\n config={config}\n />\n </TableHeaderSelectionMode>\n ) : (\n <MatchesTableHeader\n total={total}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={changeColumns}\n filtersEnabled={!!filters}\n onToggleFilters={toggleFilters}\n options={options}\n optionsData={OPTIONS_DATA}\n onChangeOptions={setOptions}\n />\n )}\n <div className={styles.mainArea}>\n <div className={styles.tableView}>\n <MatchesTable\n entity={entity}\n metadata={metadata}\n columnsData={visibleColumnsData}\n matches={matches}\n selected={selectedItems || []}\n onToggleSelect={toggleSelect}\n onResetSelect={resetSelected}\n onSelectAll={selectAll}\n filters={filters}\n onFilter={changeFilter}\n actionButtonsRenderer={actionButtonsRenderer}\n basicTableRef={basicTableRef}\n isComparisonViewShown={isComparisonViewShown}\n />\n <BasicTablePagination\n rowsPerPageOptions={isComparisonViewShown ? [] : ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {isComparisonViewShown && (\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n </ColumnHandlerContext.Provider>\n )}\n </div>\n </div>\n )}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\nNotMatchView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import {EntityType, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {DragAndDrop, UsersContext, useUsers} from '@reltio/components';\nimport {Views} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport MatchesView from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\nimport {ReloadDataProvider} from '../../contexts/ReloadDataContext';\n\nexport const Content = ({entity, metadata, config, activeView, fullScreenContainer}) => {\n const users = useUsers();\n\n let Component;\n switch (activeView) {\n case Views.POTENTIAL_MATCHES:\n Component = (\n <MatchesView\n entity={entity}\n metadata={metadata}\n config={config}\n fullScreenContainer={fullScreenContainer}\n />\n );\n break;\n case Views.FIND_MATCHES:\n Component = (\n <FindMatchesView\n entity={entity}\n metadata={metadata}\n config={config}\n fullScreenContainer={fullScreenContainer}\n />\n );\n break;\n case Views.NOT_A_MATCH:\n Component = (\n <NotMatchView\n entity={entity}\n metadata={metadata}\n config={config}\n fullScreenContainer={fullScreenContainer}\n />\n );\n break;\n default:\n Component = <div />;\n break;\n }\n return (\n <UsersContext.Provider value={users}>\n <DragAndDrop>\n <ReloadDataProvider>{Component}</ReloadDataProvider>\n </DragAndDrop>\n </UsersContext.Provider>\n );\n};\n\nContent.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n activeView: PropTypes.string,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import React from 'react';\nimport {Tabs as Tabs} from '@material-ui/core';\nimport {Tab as Tab} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport {text} from 'ui-i18n';\nimport {Views} from '../../constants/views';\n\nexport const PMTabs = ({\n availableTabs = [Views.POTENTIAL_MATCHES, Views.FIND_MATCHES, Views.NOT_A_MATCH],\n activeTab,\n onChange\n}) => {\n const labels = {\n [Views.POTENTIAL_MATCHES]: text('POTENTIAL MATCHES'),\n [Views.FIND_MATCHES]: text('FIND MATCHES'),\n [Views.NOT_A_MATCH]: text('NOT A MATCH')\n };\n return (\n <Tabs value={activeTab} onChange={onChange} indicatorColor=\"primary\" textColor=\"primary\" scrollButtons=\"on\">\n {availableTabs.map((value) => (\n <Tab key={value} label={labels[value]} value={value} classes={{}} />\n ))}\n </Tabs>\n );\n};\n\nPMTabs.propTypes = {\n availableTabs: PropTypes.arrayOf(PropTypes.string),\n activeTab: PropTypes.string,\n onChange: PropTypes.func\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n basicView: {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n },\n content: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import {BasicView} from '@reltio/components';\nimport {EntityType, isDataTenantEntity, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport PropTypes from 'prop-types';\nimport React, {useState, memo} from 'react';\nimport Content from './components/Content';\nimport PMTabs from './components/PMTabs';\nimport {Views} from './constants/views';\nimport {useStyles} from './styles';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\n\nconst WrappedPotentialMatchesView = (props) => {\n return (\n <ViewStateProvider>\n <PotentialMatchesView {...props} />\n </ViewStateProvider>\n );\n};\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\nconst PotentialMatchesView = memo(({config, entity, metadata, getSavedState, saveState}) => {\n const styles = useStyles();\n const availableTabs = isDataTenantEntity(entity) ? [Views.POTENTIAL_MATCHES] : config.availableTabs;\n const [activeTab, setActiveTab] = useState(Views.POTENTIAL_MATCHES);\n const onTabChange = (event, tab) => setActiveTab(tab);\n const [fullScreenContainer, setFullScreenContainer] = useState();\n return (\n <BasicView ref={setFullScreenContainer} className={styles.basicView}>\n <div className={styles.content}>\n <PMTabs activeTab={activeTab} availableTabs={availableTabs} onChange={onTabChange} />\n <Content\n fullScreenContainer={fullScreenContainer}\n entity={entity}\n metadata={metadata}\n config={config}\n activeView={activeTab}\n />\n </div>\n </BasicView>\n );\n});\nPotentialMatchesView.displayName = 'PotentialMatchesView';\nPotentialMatchesView.propTypes = {\n config: PotentialMatchesConfigType,\n entity: EntityType,\n metadata: MetadataType,\n dispatch: PropTypes.func,\n getSavedState: PropTypes.func,\n saveState: PropTypes.func\n};\n\nexport default WrappedPotentialMatchesView;\n","import PotentialMatchesView from './PotentialMatchesView';\nimport mdm from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\n\nconst mapStateToProps = (state) => {\n return {\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state)\n };\n};\n\nexport default connect(mapStateToProps)(PotentialMatchesView);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {Entity, CollaborationObjectTypes, createRelatedObjectUris} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {\n ProfileBand,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation\n} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nexport const PotentialMatchesProfileBand = memo(({className}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const entityUri: string = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n return (\n <ProfileBand className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)} entity={entity}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n <ProfileBandNavigation />\n </Box>\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entityUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n );\n});\n\nPotentialMatchesProfileBand.displayName = 'PotentialMatchesProfileBand';\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 xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M20 4v14h2V4c0-1.1-.9-2-2-2H6v2h14zM2 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12z\",\n fill: \"currentColor\"\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 xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 12a4 4 0 100-8 4 4 0 000 8zM10.35 14.01C7.62 13.91 2 15.27 2 18v2h9.54c-2.47-2.76-1.23-5.89-1.19-5.99zM19.43 18.02c.36-.59.57-1.28.57-2.02 0-2.21-1.79-4-4-4s-4 1.79-4 4 1.79 4 4 4c.74 0 1.43-.22 2.02-.57L20.59 22 22 20.59l-2.57-2.57zM16 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\",\n fill: \"currentColor\"\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 fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 20h15.002L21 23l1.27-1.27-20-20.01L1 2.99l6.172 6.175a4.007 4.007 0 002.66 2.662l2.23 2.23A10.754 10.754 0 0011 14c-2.67 0-8 1.34-8 4v2zm8-16a3.987 3.987 0 00-2.795 1.137l5.656 5.659A3.999 3.999 0 0011 4z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","export enum ActivePanel {\n PotentialMatches,\n FindMatches,\n NotAMatch\n}\n\nexport enum ComparisonViewMode {\n TABLE = 'TABLE',\n COLUMNS = 'COLUMNS'\n}\n\nexport const MAX_PROFILES_TO_COMPARE = 4;\n","import React, {createContext, useContext} from 'react';\n\nconst DataContext = createContext<{\n reloadData: () => void;\n setReloadHandler: (f: () => void) => void;\n }>({\n reloadData: () => {},\n setReloadHandler: () => {}\n });\nconst createContextValue = () => {\n let dataHandler;\n const reloadData = (): void => {\n if (dataHandler) {\n dataHandler();\n }\n };\n const setReloadHandler = (reloadHandler: () => void) => {\n dataHandler = reloadHandler;\n };\n return {\n reloadData,\n setReloadHandler\n };\n};\nconst contextValue = createContextValue();\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n return <DataContext.Provider value={contextValue}>{children}</DataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(DataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel,\n getAllAttributeTypesTree,\n getEntityType,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, pluck, reject, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype AttrNode = {\n name: string;\n children: AttrNode[];\n label: string;\n uri: string;\n};\n\ntype AttributeConfig = {\n title: string;\n fieldName: string;\n children?: AttributeConfig[];\n notSelectable?: boolean;\n};\n\nconst createAttributeItemConfig = (metadata: Metadata, attrNode: AttrNode, fieldName?: string, parents = []) => {\n const config = createAttributeItemBasicConfig(metadata, attrNode, fieldName, parents);\n const children = (attrNode.children || []).map((childNode) =>\n createAttributeItemConfig(metadata, childNode, '', parents.concat({name: attrNode.name, label: attrNode.label}))\n );\n if (children.length) {\n config.children = children;\n config.notSelectable = true;\n }\n return config;\n};\n\nconst createAttributeItemBasicConfig = (\n metadata: Metadata,\n attrNode: AttrNode,\n fieldName: string,\n parents = []\n): AttributeConfig => {\n const attrType = omit(['children'], attrNode);\n const title = attrType.label || attrType.name;\n return {\n title,\n fieldName: fieldName || attributeUriToSearchUri(attrType.uri, parents)\n };\n};\n\nexport const collectAttributeItems = (metadata: Metadata, entityTypeUri?: string) =>\n entityTypeUri\n ? getAllAttributeTypesTree(metadata, entityTypeUri).map((attrNode) =>\n createAttributeItemConfig(metadata, attrNode)\n )\n : [];\n\nexport const getSortingItemsGroups = (metadata: Metadata, entityTypeUri: string) => [\n {\n title: '',\n attributes: collectAttributeItems(metadata, getEntityType(metadata, entityTypeUri))\n }\n];\n\nconst getColumnsDataFromEntityAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: getLabel(attr.label),\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n }))\n);\n\nexport const getColumnsData = pipe(getEntityAttributesFromMetadata, getColumnsDataFromEntityAttributes);\n\nexport const getSortOptionIdFromData = pluck('id');\n\nexport const isMatchAttrColumn = curry((matchAttributes: string[], column: MatchesColumnsData) =>\n matchAttributes\n .map((attrUri) => attributeUriToSearchUri(attrUri))\n .some((id) => column.id === id || (isReferenceAttrColumn(column) && isSubAttrIdForColumn(column, id)))\n);\nconst isNestedAttrColumn = (column: MatchesColumnsData) => isNested(column.dataTypeDefinition);\nconst isReferenceAttrColumn = (column: MatchesColumnsData) => isReference(column.dataTypeDefinition);\nconst isSubAttrIdForColumn = curry((parentColumn: MatchesColumnsData, columnId: string) =>\n columnId.startsWith(`${parentColumn.id}.`)\n);\nconst isNestedForOneOfColumns = curry(\n (columns: MatchesColumnsData[], column: MatchesColumnsData) =>\n isNestedAttrColumn(column) && columns.some(({id}) => isSubAttrIdForColumn(column, id))\n);\nconst isRelatedToColumns = (columns: MatchesColumnsData[]) =>\n either(includes(__, columns), isNestedForOneOfColumns(columns));\n\nexport const getMatchAttrColumns = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): MatchesColumnsData[] => pipe(reject(isNestedAttrColumn), filter(isMatchAttrColumn(matchAttributes)))(columnsData);\n\nexport const groupColumnsDataByMatchAttributes = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): GroupedColumnData[] => {\n const [matchAttrColumns, otherColumns] = pipe(\n reject(isNestedAttrColumn),\n partition(isMatchAttrColumn(matchAttributes))\n )(columnsData);\n\n return matchAttrColumns.length\n ? ([\n {\n id: 'match',\n label: i18n.text('Match attributes'),\n columns: columnsData.filter(isRelatedToColumns(matchAttrColumns))\n },\n {\n id: 'all',\n label: i18n.text('All attributes'),\n columns: columnsData.filter(isRelatedToColumns(otherColumns))\n }\n ] as GroupedColumnData[])\n : columnsData;\n};\n","import React, {createContext, useReducer, useContext} from 'react';\nimport {evolve, remove, append, pipe, both, complement, isNil, when, propSatisfies, gte, take, __} from 'ramda';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport {EntitiesMap, Match} from '@reltio/mdm-sdk';\n\ntype ActionContext = {\n setGlobalSpinner: (val: boolean) => void;\n setSelectedItems: (matches: Match[]) => void;\n toggleSelect: (match: Match) => void;\n setLimitSelection: (value?: number) => void;\n setComparisonViewMode: (mode: ComparisonViewMode) => void;\n setEntitiesMap: (entitiesMap?: EntitiesMap) => void;\n deleteExtraMatches: () => void;\n};\n\ntype StateContext = {\n isGlobalSpinnerActive: boolean;\n selectedItems: Match[];\n limitSelection?: number;\n comparisonViewMode: ComparisonViewMode;\n entitiesMap?: EntitiesMap;\n tableViewModeAvailable?: boolean;\n};\nconst ViewStateContext = createContext<StateContext>(null);\nconst ViewDispatchContext = createContext<ActionContext>(null);\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\nconst SET_COMPARISON_VIEW_MODE = 'SET_COMPARISON_VIEW_MODE';\nconst SET_ENTITIES_MAP = 'SET_ENTITIES_MAP';\nconst DELETE_EXTRA_MATCHES = 'DELETE_EXTRA_MATCHES';\n\nconst actions = {\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION),\n setComparisonViewMode: createStandardAction(SET_COMPARISON_VIEW_MODE),\n setEntitiesMap: createStandardAction(SET_ENTITIES_MAP),\n deleteExtraMatches: createStandardAction(DELETE_EXTRA_MATCHES)\n};\n\nconst viewStateReducer = (state: StateContext, action: ReturnType<ReturnType<typeof createStandardAction>>) => {\n switch (action.type) {\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n case DELETE_EXTRA_MATCHES:\n return {...state, selectedItems: state.selectedItems.slice(0, state.limitSelection)};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload.slice(0, state.limitSelection)};\n case TOGGLE_SELECT:\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex(\n (selectedItem) => selectedItem?.object?.uri === item?.object?.uri\n );\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n const {limitSelection} = state;\n if (state.tableViewModeAvailable) {\n return append(item, selected);\n }\n return pipe(\n when(\n both(complement(isNil), propSatisfies(gte(__, limitSelection), 'length')),\n take(limitSelection - 1)\n ),\n append(item)\n )(selected);\n }\n }\n },\n state\n );\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n case SET_COMPARISON_VIEW_MODE: {\n const newMode: ComparisonViewMode = action.payload;\n return {\n ...state,\n comparisonViewMode: newMode,\n limitSelection: newMode === ComparisonViewMode.COLUMNS ? MAX_PROFILES_TO_COMPARE : undefined\n };\n }\n case SET_ENTITIES_MAP: {\n const entitiesMap: EntitiesMap = action.payload;\n return {\n ...state,\n entitiesMap\n };\n }\n }\n};\n\ntype Props = {\n children: React.ReactElement;\n tableViewModeAvailable?: boolean;\n};\n\nexport const ViewStateProvider = ({children, tableViewModeAvailable}: Props) => {\n const [state, dispatch] = useReducer(viewStateReducer, {\n isGlobalSpinnerActive: false,\n selectedItems: [],\n comparisonViewMode: ComparisonViewMode.COLUMNS,\n limitSelection: MAX_PROFILES_TO_COMPARE,\n entitiesMap: {},\n tableViewModeAvailable\n });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction as ActionContext}>\n {children}\n </ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext<StateContext>(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext<ActionContext>(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst RESET = 'RESET';\nconst SET_OPTIONS = 'SET_OPTIONS';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n setOptions: createStandardAction(SET_OPTIONS)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useMatchesReducer = (defaultSort: {field: string; order: 'asc' | 'desc'}, defaultRowsPerPage: number) => {\n const {field, order} = defaultSort;\n const initState = {\n sorting: {\n field,\n order\n },\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n selectedItems: [],\n limitSelection: null\n };\n\n const [state, dispatch] = useReducer(stateReducer, initState);\n const resultActions = useActions({actions, dispatch});\n const viewActions = useViewStateActions();\n const viewState = useViewState();\n return [{...resultActions, ...viewActions}, {...state, ...viewState}, dispatch];\n};\n","import {ApiError, ApiErrorCode} from '@reltio/mdm-sdk';\nimport {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: error?.errorMessage || i18n.text('Something went wrong...')\n });\n};\n\nexport const showDCRReviewErrors = (error: ApiError) => {\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import {Entity, Match} from '@reltio/mdm-sdk';\n\nexport const getFilteredSelectedItems = (selectedItems: Match[], entities: Entity[]) =>\n selectedItems.filter(({object}) => !entities.some(({uri}) => uri === object.uri));\n","import React, {forwardRef} from 'react';\nimport {noop, MergeButton as MergeButtonComponent, ActionButtonMode} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const MergeButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n }\n);\n\nMergeButton.displayName = 'mergeButton';\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const NotMatchButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.displayName = 'NotMatchButton';\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}, props), React.createElement(\"path\", {\n d: \"M9 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n fillOpacity: \".541\"\n})));","import React, {forwardRef} from 'react';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const SetAMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities});\n\n return (\n <ActionButton\n className={className}\n disabled={markingIsInProgress}\n mode={mode}\n label={markingIsInProgress ? '' : i18n.text('Save on potential matches')}\n icon={SetAsMatchIcon}\n onClick={setAMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nSetAMatchButton.displayName = 'SetAMatchButton';\n","import {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n};\n\nexport const useSetAMatch = ({entities, entity}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const setAMatch = useCallback(() => {\n setGlobalSpinner(true);\n setAsMatch(entity.uri, entities).finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData]);\n\n return [isGlobalSpinnerActive, setAMatch];\n};\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: \"M10 6v2H4v12.22h12V14h2v6c0 1.05-.82 1.918-1.851 1.994L16 22H4c-1.05 0-1.918-.82-1.994-1.851L2 20V8c0-1.05.82-1.918 1.851-1.994L4 6h6zm4 10v2H6v-2h8zm-3.997-3l-.001 2H6v-2h4.003zM21 2c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1h-7l-2 2 .005-11c0-.55.445-1 .995-1h8zm-10.996 8l-.001 2H6v-2h4.004zm9.286-6.3l-3.17 3.17-1.41-1.42-1.41 1.41 2.82 2.84 4.59-4.58-1.42-1.42z\",\n id: \"svg2465811894a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2465811894b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2465811894a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2465811894b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, SnackbarContext, noop} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {useRequestDCRReview} from '../../hooks/useRequestDCRReview';\nimport DcrReviewIcon from './icons/dcrReview.svg';\n\ntype Props = {\n className?: string;\n entity: Entity;\n entities: Entity[];\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n};\n\nexport const DCRReviewButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const [operationIsInProgress, startPMReview] = useRequestDCRReview({\n entity,\n entities,\n showSnackbarMessage\n });\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n\n return canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath) ? (\n <ActionButton\n className={className}\n disabled={operationIsInProgress}\n mode={mode}\n label={operationIsInProgress ? '' : i18n.text('Potential match request')}\n icon={DcrReviewIcon}\n onClick={startPMReview}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs, Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useRequestDCRReview = ({\n entities,\n entity,\n showSnackbarMessage\n}: Props): [val: boolean, func: () => void] => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .then(() => {\n showSnackbarMessage?.(i18n.text('Potential match request: Done'));\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [setGlobalSpinner, workflowPath, uris, tenant, environment, showSnackbarMessage]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n isDataTenantEntity,\n reinstateDataTenantEntityMatch,\n reinstateMixedEntitiesMatches,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useReinstateMatch = ({entities, entity, showSnackbarMessage}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const onReinstateMatch = useCallback(() => {\n setGlobalSpinner(true);\n const params = {dtssPath, customerTenant: tenant, entity, entities};\n (isDataTenantEntity(entity) ? reinstateDataTenantEntityMatch(params) : reinstateMixedEntitiesMatches(params))\n .then(() => {\n showSnackbarMessage?.(i18n.text('Save as potential match: Done'));\n })\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [setGlobalSpinner, dtssPath, tenant, entity, entities, showSnackbarMessage, reloadData]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import React, {forwardRef, useContext} from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, SnackbarContext, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const ReinstateMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({\n entity,\n entities,\n showSnackbarMessage\n });\n\n return (\n <ActionButton\n className={className}\n disabled={reinstateIsInProgress}\n mode={mode}\n label={reinstateIsInProgress ? '' : i18n.text('Save as potential match')}\n icon={SetAsMatchIcon}\n onClick={onReinstateMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nReinstateMatchButton.displayName = 'ReinstateMatchButton';\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: \"M19 14v3h3v2h-3v3h-2v-3h-3v-2l3-.001V14h2zM17 2a3 3 0 11-1.293 5.708l-4.535 4.535a5 5 0 11-1.414-1.414l4.534-4.536A3 3 0 0117 2zM7 12a3 3 0 100 6 3 3 0 000-6zm10-8a1 1 0 100 2 1 1 0 000-2z\",\n id: \"svg2904917532a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2904917532b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2904917532a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2904917532b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules'>) => void;\n matchRules?: string[];\n};\n\nexport const CreateRelationButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mainEntity,\n currentEntity,\n matchRules,\n mode = ActionButtonMode.iconButton,\n onClick = noop,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {ReactNode} from 'react';\n\nexport const RightSideHeaderContext = React.createContext<{\n mainTitle?: string;\n secondTitle?: string;\n content?: ReactNode;\n rightContent?: ReactNode;\n bottomContent?: ReactNode;\n onClose: () => void;\n }>({\n onClose: () => {}\n });\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n attributeSelect: {\n width: '100%',\n height: '40px'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {BasicAttributeSelector, AttributeSelectorItemsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\n\ntype AttributeOption = {\n fieldName: string;\n title: string;\n children?: AttributeOption[];\n};\n\ntype Props = {\n onChange: (val) => void;\n options: AttributeSelectorItemsGroup[];\n sortField?: string;\n};\n\nconst SortingFieldSelector = ({onChange, options, sortField}: Props) => {\n const styles = useStyles();\n const value = useMemo(() => {\n const path = sortField.split('.');\n const sortLevel = path.length;\n\n const findNode = (attributes: AttributeOption[]) => {\n const level = attributes[0].fieldName.split('.').length;\n if (level === sortLevel) {\n return attributes.find((attr) => attr.fieldName === sortField);\n }\n if (level < sortLevel) {\n const parentFieldName = path.slice(0, level).join('.');\n const children = attributes.find((attr) => attr.fieldName === parentFieldName)?.children;\n if (children) {\n return findNode(children);\n }\n }\n };\n\n for (const option of options) {\n const node = findNode(option.attributes);\n if (node) {\n return node;\n }\n }\n }, [sortField, options]);\n\n const handleChange = useCallback(\n (val: {attribute: AttributeOption}) => {\n onChange(val.attribute.fieldName);\n },\n [onChange]\n );\n\n return (\n <BasicAttributeSelector\n hideCheckBox\n className={styles.attributeSelect}\n value={value}\n itemsGroups={options}\n onSelect={handleChange}\n ungroup\n single\n />\n );\n};\n\nexport default memo(SortingFieldSelector);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n height: '24px',\n position: 'relative',\n padding: '12px'\n },\n header: {\n padding: '8px 12px 8px 0',\n border: 'rgba(0,0,0,0.05) 1px solid',\n borderTop: 0,\n display: 'flex',\n justifyContent: 'space-between'\n },\n selector: {\n width: '160px'\n },\n sorting: {\n display: 'flex'\n },\n arrow: {\n transition: 'transform 0.3s ease-in'\n },\n rotate: {\n transform: 'rotate(180deg)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n padding: '8px 16px',\n borderBottom: 'rgba(0,0,0,0.05) 1px solid'\n },\n inputRoot: {\n borderRadius: '4px'\n }\n});\n","import React, {memo, useCallback, useRef, useState} from 'react';\nimport {SearchInput} from '@reltio/components';\nimport {always, isEmpty, pipe, propEq, trim, when} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onSearch: (searchText: string) => void;\n};\n\nconst BottomHeaderContent = ({onSearch}: Props) => {\n const styles = useStyles();\n const searchInputRef = useRef<HTMLInputElement>();\n const [currentSearchText, setCurrentSearchText] = useState<string>('');\n const handleSearch = useCallback(when(propEq('key', 'Enter'), pipe(always(currentSearchText), trim, onSearch)), [\n currentSearchText,\n onSearch\n ]);\n\n const handleChangeSearchText = useCallback(\n (newSearchText) => {\n setCurrentSearchText(newSearchText);\n if (isEmpty(newSearchText) && document.activeElement !== searchInputRef.current) {\n onSearch(newSearchText);\n }\n },\n [onSearch]\n );\n\n return (\n <div className={styles.root}>\n <SearchInput\n classes={{root: styles.inputRoot}}\n inputRef={searchInputRef}\n fullWidth\n height={40}\n autofocus={false}\n value={currentSearchText}\n onSearch={handleChangeSearchText}\n onKeyPress={handleSearch}\n />\n </div>\n );\n};\nexport default memo(BottomHeaderContent);\n","import React, {useContext} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {AttributeSelectorItemsGroup, SidePanelContentHeader} from '@reltio/components';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport SortingFieldSelector from '../SortingFieldSelector';\nimport i18n from 'ui-i18n';\nimport ArrowIcon from '@material-ui/icons/ArrowUpward';\nimport classNames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nimport {useStyles} from './styles';\nimport BottomHeaderContent from './BottomHeaderContent/BottomHeaderContent';\n\ntype Props = {\n selectedCount: number;\n totalCount: number;\n totalOnPage: number;\n onSelect: () => void;\n sortOptions: AttributeSelectorItemsGroup[];\n toggleSort: (field: string) => void;\n sorting: {field: string; order: 'asc' | 'desc'};\n onTextSearch?: (searchText: string) => void;\n};\n\nconst RightSidePanelHeader = ({\n selectedCount,\n totalCount,\n onSelect,\n onTextSearch,\n sortOptions,\n toggleSort,\n sorting,\n totalOnPage\n}: Props) => {\n const styles = useStyles();\n\n const onChangeSortOrder = () => toggleSort(sorting.field);\n const sidePanelHeaderProps = useContext(RightSideHeaderContext);\n return (\n <>\n <SidePanelContentHeader\n {...sidePanelHeaderProps}\n secondTitle={!!totalCount && i18n.text('${n} Profiles', {n: totalCount})}\n />\n {onTextSearch && <BottomHeaderContent onSearch={onTextSearch} />}\n {!!totalOnPage && (\n <div className={styles.header}>\n <Checkbox\n className={styles.rowCheckbox}\n checked={selectedCount === totalOnPage}\n indeterminate={selectedCount > 0 && selectedCount < totalOnPage}\n onChange={onSelect}\n />\n <div className={styles.sorting}>\n <SortingFieldSelector sortField={sorting.field} options={sortOptions} onChange={toggleSort} />\n <IconButton\n onClick={onChangeSortOrder}\n classes={{root: classNames(styles.arrow, {[styles.rotate]: sorting.order === 'desc'})}}\n >\n <ArrowIcon />\n </IconButton>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default RightSidePanelHeader;\n","import i18n from 'ui-i18n';\n\nconst DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport {DEFAULT_SORT_OPTIONS};\n","import {useMemo} from 'react';\nimport {getSortingItemsGroups} from '../helpers/attributesHelpers';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup} from '@reltio/components';\n\ntype SortOption = {\n id: string;\n label: string;\n};\nexport const useSortOptions = (\n defaultOptions: SortOption[],\n additionalOptions: SortOption[],\n metadata: Metadata,\n entityTypeUri: string\n): AttributeSelectorItemsGroup[] => {\n return useMemo(() => {\n const itemsGroups = getSortingItemsGroups(metadata, entityTypeUri);\n const defaultData = {\n title: '',\n attributes: defaultOptions\n .concat(additionalOptions || [])\n .map((col) => ({title: col.label, fieldName: col.id}))\n };\n return [defaultData, ...itemsGroups];\n }, [metadata, entityTypeUri, defaultOptions, additionalOptions]);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n return {\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '19px',\n height: '24px',\n position: 'relative',\n padding: '9px'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n paddingTop: '15px',\n display: 'flex'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '0 15px 0 15px',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.04)',\n '& $actionButtons': {\n display: 'flex'\n },\n '& $commentsContainer': {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n }\n },\n display: 'flex',\n boxSizing: 'border-box',\n borderBottom: '1px rgba(0,0,0,0.05) solid',\n paddingLeft: '12px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 500\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 10px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n matchScore: {\n borderLeft: 'rgba(0,0,0,0.12) 1px solid',\n paddingLeft: '12px',\n height: '20px',\n marginLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n height: '24px',\n marginLeft: '6px'\n },\n border: {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n rightButton: {\n marginLeft: '8px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant\n} from '@reltio/components';\n\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n EntitiesMap,\n Entity,\n getEntityUriForLink,\n getLabel,\n Match,\n Metadata\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n rowIndex: number;\n toggleSelect?: (match: Match) => void;\n entityToMatch: Entity;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n match: Match;\n matches: Match[];\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n metadata: Metadata;\n matchRules?: string[];\n};\n\nconst ItemRenderer = ({\n rowIndex,\n match,\n toggleSelect,\n entityToMatch,\n isRowSelected,\n actionButtonsRenderer,\n metadata,\n entitiesMap = {}\n}: Props) => {\n const styles = useStyles();\n const entity = match.object;\n const [openMenu, setOpenMenu] = useState(false);\n const onToggleSelect = () => toggleSelect(match);\n\n const isRowSelectable = entity !== entityToMatch;\n const Actions = actionButtonsRenderer;\n\n return (\n <div\n className={classnames(styles.wrapper, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.selectedRow]: isRowSelected\n })}\n >\n <Checkbox\n className={classnames(styles.rowCheckbox, {[styles.hidden]: !isRowSelectable})}\n checked={isRowSelected}\n onChange={onToggleSelect}\n data-reltio-id={`reltio-matches-table-checkbox-${rowIndex}`}\n />\n <div className={styles.entity}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n {!!match.matchScore && <div className={styles.matchScore}>{match.matchScore}</div>}\n </div>\n </div>\n <div className={styles.actions}>\n <div className={classnames(styles.actionButtons, {[styles.active]: openMenu})}>\n <Actions\n buttonClassName={styles.rightButton}\n hoveredMatch={match}\n onActionsMenuOpen={() => setOpenMenu(true)}\n onActionsMenuClose={() => setOpenMenu(false)}\n />\n </div>\n {entityToMatch && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.border]: openMenu})}\n uri={createObjectIdForPM(entityToMatch.uri, match.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: match.object.uri\n })}\n allowOnlyOneComment\n showAlways={openMenu}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden'\n }\n}));\n","import {ItemRenderer} from '../ItemRenderer';\nimport React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n matches: Match[];\n entityToMatch: Entity;\n toggleSelect: (match: Match) => void;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n selectedItems: Match[];\n};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.view}>\n {matches.map((match, index) => (\n <ItemRenderer\n key={match.object.uri}\n rowIndex={index}\n match={match}\n entityToMatch={entityToMatch}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n matchRules={match.matchRules}\n metadata={metadata}\n entitiesMap={entitiesMap}\n isRowSelected={selectedItems.some((item) => item.object.uri === match.object.uri)}\n />\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n getEntityUriFromMatchObject,\n Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {getSortOptionIdFromData} from '../../helpers/attributesHelpers';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {SetAMatchButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {DEFAULT_SORT_OPTIONS} from './helpers/findMatchesViewHelper';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {identity, isEmpty, pathEq} from 'ramda';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_FIELDS = getSortOptionIdFromData(DEFAULT_SORT_OPTIONS);\nconst DEFAULT_SORT_ORDER = 'asc';\nconst [DEFAULT_SORT_FIELD] = DEFAULT_SORT_FIELDS;\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const FindMatchesView = memo(({entity, metadata, filters, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer(\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_SORT_FIELD},\n DEFAULT_ROWS_PER_PAGE\n );\n const {changeRowsPerPage, changePage, toggleSort, setSelectedItems, toggleSelect} = actions;\n const {sorting, page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n\n const {uri: entityUri, type: entityType} = entity || {};\n\n const [searchText, setSearchText] = useState<string>('');\n\n const requestFilters: SearchFilter[] = useMemo(\n () =>\n [\n isEmpty(searchText)\n ? null\n : {\n filter: 'containsWordStartingWith',\n fieldName: 'attributes',\n values: [searchText]\n },\n {\n filter: 'equals',\n fieldName: 'type',\n values: [entityType]\n },\n {filter: 'not equals', fieldName: 'uri', values: [entityUri]},\n ...filters\n ].filter(identity),\n [entityType, entityUri, searchText, filters]\n );\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {entities, total, findEntities} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n findEntities();\n resetSelected();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useEffect(() => {\n const selected = selectedItems.map((item) => {\n const entity = entities.find(\n (entity) => getEntityUriFromMatchObject(entity) === getEntityUriFromMatchObject(item)\n );\n return entity ? entity : item;\n });\n setSelectedItems(selected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, filters, searchText]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName}: ActionButtonRendererProps) => {\n const entities = [hoveredMatch.object];\n const {canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n return canMark && <SetAMatchButton entity={entity} entities={entities} className={buttonClassName} />;\n },\n [config, entity, metadata]\n );\n\n const selectedCount = useMemo(() => {\n return entities\n .map((match) => selectedItems?.find(pathEq(['object', 'uri'], match.object.uri)))\n .filter(identity).length;\n }, [selectedItems, entities]);\n\n return (\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={entities.length}\n sortOptions={sortOptions}\n sorting={sorting}\n toggleSort={toggleSort}\n onSelect={selectedCount ? resetSelected : selectAll}\n onTextSearch={setSearchText}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={entities}\n metadata={metadata}\n selectedItems={selectedItems}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n );\n});\n\nFindMatchesView.displayName = 'FindMatchesView';\n","import {useSafePromise} from '@reltio/components';\nimport {\n buildFilterQueryString,\n getFilteredEntities,\n getTotals,\n GlobalSearchRequestOptions,\n SearchFilter\n} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect, useMemo} from 'react';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityType: string;\n filters: SearchFilter[];\n sorting: {\n order: string;\n field: string;\n };\n page: number;\n rowsPerPage: number;\n enabled: boolean;\n};\n\nexport const useFindEntities = ({entityType, filters, sorting, page, rowsPerPage, enabled}: Props) => {\n const {order, field} = sorting;\n const {setGlobalSpinner} = useViewStateActions();\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'attributes', 'crosswalks'];\n const filterQuery: string = useMemo(() => buildFilterQueryString()(filters), [filters]);\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n Promise.all([\n getFilteredEntities(filters, {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.join(','),\n globalFilter,\n activityFilter\n }),\n getTotals(filters, {activityFilter, globalFilter})\n ])\n )\n .then((results) => {\n const [entities, totalResponse] = results;\n const {total} = totalResponse;\n const entityToMatchFormat = (entity) => ({object: entity});\n setEntities(entities.map(entityToMatchFormat));\n setTotal(total);\n })\n .finally(() => setGlobalSpinner(false));\n }\n },\n [entityType, filterQuery, field, order, page, rowsPerPage, enabled, activityFilter, globalFilter] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities};\n};\n","import {useCallback, useEffect} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {Entity} from '@reltio/mdm-sdk';\n\ntype Params = {\n entity: Entity;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n options: {\n showTransitiveMatches?: boolean;\n };\n sorting?: {\n order: string;\n field: string;\n };\n rules?: string;\n};\n\nexport const useMatches = ({entity, filter, rules, sorting, page, rowsPerPage, options, enabled}: Params) => {\n const {setGlobalSpinner, setEntitiesMap} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n rules,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting,\n markMatchedValues: true\n });\n\n useEffect(() => {\n setEntitiesMap(entitiesMap);\n }, [setEntitiesMap, entitiesMap]);\n\n return {matches, total, entitiesMap, loadMatches};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n open?: boolean;\n onClose: (relationUri: string) => void;\n};\n\nconst AddRelationDialog = ({config, mainEntity, currentEntity, matchRules, open, onClose = identity}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const containerRef = useRef(null);\n\n const {relation = {}}: Connection =\n useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes: RecordAttributesType = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes: AttributeType[] = useMemo(() => getRelationAttributesList(metadata, relationType), [\n relationType,\n metadata\n ]);\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n }).catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle disableTypography classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}} ref={containerRef}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={ModeTypes.EDITING}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </PopupBoundariesContext.Provider>\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button disabled={disabled} color=\"primary\" onClick={onAdd}>\n {i18n.text('Add')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default AddRelationDialog;\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator,\n Metadata,\n Entity,\n InOutRelation,\n Connection,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (\n metadata: Metadata,\n config: PotentialMatchesPerspectiveConfig,\n mainEntity: Entity,\n entity: Entity,\n matchRules: string[]\n): {\n inRelations: InOutRelation;\n outRelations: InOutRelation;\n} => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {} as Entity): Connection => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {pipe} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({\n mainEntity,\n currentEntity,\n matchRules\n }: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n }) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri: string) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config.id, dispatch]\n );\n\n const AddRelationDialogRenderer = useCallback(() => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n }, [showDialog, config, closeAddRelationDialog, relationDialogContent]);\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","import {any, equals, flatten, pipe, pluck, prop, values} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {DataTypes, MatchRulesAttrTypes, SearchFilter} from '@reltio/mdm-sdk';\n\nconst DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'matchRules',\n get label() {\n return i18n.text('Match rule');\n }\n },\n {\n id: 'mlMatchRules',\n get label() {\n return i18n.text('Match IQ');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nconst ADDITIONAL_SORT_OPTIONS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n }\n }\n];\n\nconst isMatchRuleFilter = ({fieldName}: SearchFilter): boolean => {\n return pipe(values, pluck('name'), any(equals(fieldName)))(MatchRulesAttrTypes);\n};\n\nconst buildRulesStringFormFilters = (filters: SearchFilter[]): string => flatten(filters.map(prop('values'))).join(',');\n\nexport {DEFAULT_SORT_OPTIONS, ADDITIONAL_SORT_OPTIONS_DATA, isMatchRuleFilter, buildRulesStringFormFilters};\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Action} from './ActionsPanel';\n\ntype Props = {\n item: Action;\n onMenuClose?: () => void;\n};\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const {ActionButton, props} = item;\n return <ActionButton ref={ref} mode=\"menuItem\" onMenuClose={onMenuClose} {...props} />;\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {splitAt} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActionButtonMode, DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n actionButtonSize?: string;\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n actionButtonSize,\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? ActionButtonMode.button : ActionButtonMode.iconButton;\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton\n key={index}\n mode={buttonMode}\n className={classes?.actionButton}\n {...(actionButtonSize ? {size: actionButtonSize} : {})}\n {...props}\n />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions')\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: true\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {partition, prop, identity, equals} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatches} from '../../hooks/useMatches';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {MergeButton, NotMatchButton} from '../Actions';\nimport {\n DEFAULT_SORT_OPTIONS,\n ADDITIONAL_SORT_OPTIONS_DATA,\n isMatchRuleFilter,\n buildRulesStringFormFilters\n} from './helpers/matchesViewHelper';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {DCRReviewButton, CreateRelationButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n};\n\nconst MatchesView = memo(({entity, metadata, filters, config}: Props) => {\n const styles = useStyles();\n\n const [actions, state] = useMatchesReducer(\n {field: ADDITIONAL_SORT_OPTIONS_DATA[0].id, order: 'desc'},\n DEFAULT_ROWS_PER_PAGE\n );\n const {changeRowsPerPage, changePage, toggleSort, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, sorting, selectedItems, isGlobalSpinnerActive} = state;\n const options = DEFAULT_OPTIONS;\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {uri: entityUri, type: entityType} = entity || {};\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, ADDITIONAL_SORT_OPTIONS_DATA, metadata, entityType);\n\n const [matchRulesFilters, regularFilters] = useMemo(\n (): [SearchFilter[], SearchFilter[]] => partition(isMatchRuleFilter)(filters),\n [filters]\n );\n\n const {matches, total, entitiesMap, loadMatches} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: buildFilterQueryString()(regularFilters),\n page,\n sorting,\n rowsPerPage,\n options,\n rules: buildRulesStringFormFilters(matchRulesFilters)\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadMatches();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canAddRelation, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n toggleSort={toggleSort}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n entitiesMap={entitiesMap}\n selectedItems={selectedItems}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches,\n GlobalSearchRequestOptions,\n addGlobalFilterToQuery,\n Match,\n NOT_MATCH\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: {\n order: string;\n field: string;\n };\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [matches, setMatches] = useState<Match[]>([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const markAsNotMatch = (record) => ({matchRules: [NOT_MATCH], ...record});\n const loadNotMatchesIfNeeded = useCallback(\n (force?: boolean) => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || '',\n sort: field,\n force,\n order,\n activeness: activityFilter\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response.map(markAsNotMatch));\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally(() => setGlobalSpinner(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, activityFilter, enabled, globalFilter] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches};\n};\n","import i18n from 'ui-i18n';\n\nconst DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport {DEFAULT_SORT_OPTIONS};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {getSortOptionIdFromData} from '../../helpers/attributesHelpers';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {DEFAULT_SORT_OPTIONS} from './helpers/notMatchViewHelper';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SORT_OPTIONS_ID = getSortOptionIdFromData(DEFAULT_SORT_OPTIONS);\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const NotMatchView = memo(({entity, metadata, filters, config}: Props) => {\n const styles = useStyles();\n\n const [actions, state] = useMatchesReducer(\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_SORT_OPTIONS_ID[0]},\n DEFAULT_ROWS_PER_PAGE\n );\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect, toggleSort} = actions;\n const {page, rowsPerPage, sorting, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {matches, total, entitiesMap, loadNotMatches} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: buildFilterQueryString()(filters),\n page,\n rowsPerPage,\n sorting\n });\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadNotMatches();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n toggleSort={toggleSort}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n selectedItems={selectedItems}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {UsersContext, useUsers} from '@reltio/components';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n activeView: ActivePanel;\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const Content = ({entity, metadata, filters, config, activeView}: Props) => {\n const users = useUsers();\n\n const render = () => {\n switch (activeView) {\n case ActivePanel.PotentialMatches:\n return <MatchesView entity={entity} metadata={metadata} filters={filters} config={config} />;\n case ActivePanel.FindMatches:\n return <FindMatchesView entity={entity} metadata={metadata} filters={filters} config={config} />;\n case ActivePanel.NotAMatch:\n return <NotMatchView entity={entity} metadata={metadata} filters={filters} config={config} />;\n default:\n return <div />;\n }\n };\n\n return <UsersContext.Provider value={users}>{render()}</UsersContext.Provider>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 0\n }\n});\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useCallback, useMemo, useState, memo} from 'react';\nimport {pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton, SideButtonsPanel, SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n PotentialMatchesPerspectiveConfig,\n SearchFilter\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from './icons/potential-matches-icon.svg';\nimport FindMatchesIcon from './icons/find-matches-icon.svg';\nimport NotAMatchIcon from './icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../../constants/views';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {FilterSelector} from './FilterSelector/FilterSelector';\nimport {ValuesEditor} from './ValuesEditor/ValuesEditor';\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\n\nconst potentialMatchesComponents = {\n FilterSelector,\n ValuesEditor\n};\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const RightSidePanel = memo(({config}: Props) => {\n const styles = useStyles();\n const [matchesFilters, setMatchesFilters] = useState<SearchFilter[]>([]);\n const [findMatchesFilters, setFindMatchesFilters] = useState<SearchFilter[]>([]);\n const [notMatchFilters, setNotMatchFilters] = useState<SearchFilter[]>([]);\n\n const [active, setActive] = useState<ActivePanel>(null);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const toggleActive = useCallback((newId: ActivePanel) => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback(() => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n\n const entityType = getEntityType(metadata, entity?.type);\n\n const getAttributeTypes = (entityType) =>\n (entityType.attributes || []).concat(entityType.analyticsAttributes || []).filter(isReadableAttribute);\n\n const attributeTypes = useMemo(() => getAttributeTypes(entityType), [entityType]);\n\n const matchRulesAttributes = useMemo(() => {\n const matchRulesAttributes = [\n {...MatchRulesAttrTypes.matchRules, check: hasMatchRulesWithoutML},\n {...MatchRulesAttrTypes.MLRecommendedMatch, check: hasMlMatchRule}\n ];\n\n return matchRulesAttributes.reduce((attributes, {check, ...attrType}) => {\n check(entityType) && attributes.push(attrType);\n return attributes;\n }, []);\n }, [entityType]);\n\n const potentialMatchesAttributeTypes = useMemo(() => [...matchRulesAttributes, ...attributeTypes], [\n attributeTypes,\n matchRulesAttributes\n ]);\n\n const findMatchesAttributeTypes = useMemo(() => [{...EntityAttrTypes.id}, ...attributeTypes], [attributeTypes]);\n\n const elements = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.PotentialMatches,\n icon: PotentialMatchesIcon,\n tooltipTitle: i18n.text('Potential Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Potential Matches'),\n rightContent: (\n <AttributesFiltersButton\n filters={matchesFilters}\n onChange={setMatchesFilters}\n attributeTypes={potentialMatchesAttributeTypes}\n components={potentialMatchesComponents}\n />\n )\n },\n filters: matchesFilters\n },\n {\n buttonProps: {\n id: ActivePanel.FindMatches,\n icon: FindMatchesIcon,\n tooltipTitle: i18n.text('Find Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Find Matches'),\n rightContent: (\n <AttributesFiltersButton\n filters={findMatchesFilters}\n onChange={setFindMatchesFilters}\n attributeTypes={findMatchesAttributeTypes}\n />\n )\n },\n filters: findMatchesFilters\n },\n {\n buttonProps: {\n id: ActivePanel.NotAMatch,\n icon: NotAMatchIcon,\n tooltipTitle: i18n.text('Not a Match')\n },\n headerProps: {\n mainTitle: i18n.text('Not a Match'),\n rightContent: (\n <AttributesFiltersButton\n filters={notMatchFilters}\n onChange={setNotMatchFilters}\n attributeTypes={attributeTypes}\n />\n )\n },\n filters: notMatchFilters\n }\n ],\n [\n matchesFilters,\n findMatchesFilters,\n notMatchFilters,\n potentialMatchesAttributeTypes,\n findMatchesAttributeTypes,\n attributeTypes\n ]\n );\n\n const headerProps = useMemo(() => ({...elements[active]?.headerProps, onClose: resetActive}), [\n resetActive,\n active,\n elements\n ]);\n const filters = elements[active]?.filters;\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pluck('buttonProps', elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import React from 'react';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\ntype Props = AttributeFiltersComponentProps & {textFieldInputRef: React.MutableRefObject<HTMLInputElement>};\n\nexport const FilterSelector = (props: Props) => {\n const {rowData} = props;\n const {attribute: {attrType} = {}} = (rowData || {}) as RowData;\n const options = isMatchRuleAttrType(attrType)\n ? [FilterOptions.EQUALS].map((value) => ({value, label: capitalize(getFilterOptionLabel(value))}))\n : null;\n\n return <AttributesFilterSelector {...props} options={options} />;\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {MatchRulesSelector, AttributesValuesEditor, AttributeFiltersComponentProps} from '@reltio/components';\nimport {isMatchRuleAttrType, SearchFilter, MatchRulesAttrNames} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\nexport const ValuesEditor = ({rowData, rowContext}: AttributeFiltersComponentProps) => {\n const styles = useStyles();\n const {values = [], attribute: {attrType, fieldName = null} = {}, filter, id} = (rowData || {}) as RowData;\n const {changeFilter} = rowContext;\n const {entityType} = rowContext;\n\n const changeValue = useCallback(\n (newValues: SearchFilter['values']) => {\n const newFilter: SearchFilter = {\n fieldName,\n filter,\n values: newValues\n };\n\n changeFilter(newFilter, id);\n },\n [changeFilter, id, fieldName, filter]\n );\n\n const TextFieldProps = useMemo(\n () => ({\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }),\n [styles]\n );\n\n return isMatchRuleAttrType(attrType) ? (\n <MatchRulesSelector\n entityType={entityType}\n name={attrType.name as MatchRulesAttrNames}\n values={values as string[]}\n onChange={changeValue}\n TextFieldProps={TextFieldProps}\n fullWidth\n />\n ) : (\n <AttributesValuesEditor rowContext={rowContext} rowData={rowData} />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n minWidth: '90px',\n padding: '8px 12px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@material-ui/icons/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@material-ui/icons/TableChartOutlined';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype Mode = {\n id: ComparisonViewMode;\n tooltipTitle: string;\n title: string;\n Icon: React.ElementType;\n disabled?: boolean;\n};\n\nconst MODES: Mode[] = [\n {\n id: ComparisonViewMode.COLUMNS,\n tooltipTitle: i18n.text('Column'),\n title: i18n.text('Column'),\n Icon: ViewColumnRoundedIcon\n },\n {\n id: ComparisonViewMode.TABLE,\n tooltipTitle: i18n.text('Table'),\n title: i18n.text('Table'),\n Icon: TableRowsOutlinedIcon\n }\n];\n\ntype Props = {\n className?: string;\n};\n\nconst ComparisonViewModeSwitcher = ({className}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode, selectedItems} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isTableOnly = selectedItems.length > MAX_PROFILES_TO_COMPARE;\n const getMode = (baseMode: Mode) =>\n baseMode.id === ComparisonViewMode.COLUMNS\n ? {\n ...baseMode,\n disabled: isTableOnly,\n tooltipTitle: isTableOnly\n ? i18n.text('Column view supports maximum ${maxProfiles} profiles', {\n maxProfiles: MAX_PROFILES_TO_COMPARE\n })\n : baseMode.tooltipTitle\n }\n : baseMode;\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES.map(getMode)}\n modeId={comparisonViewMode}\n onChange={setComparisonViewMode}\n />\n );\n};\n\nexport default ComparisonViewModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n padding: '0 8px 0 16px',\n backgroundColor: '#fff',\n '& $splitter': {\n height: '32px',\n marginRight: '16px',\n marginLeft: '4px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n },\n title: {\n fontSize: '16px',\n fontWeight: 400,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n color: theme.palette.text.primary\n },\n clearAllButton: {\n marginLeft: '16px'\n },\n mergeButton: {\n marginRight: '12px'\n },\n total: {\n color: theme.palette.text.secondary\n },\n splitter: {},\n actionSplitter: {\n height: '32px',\n margin: '0 8px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n}));\n","import React from 'react';\nimport {DropDownMenuButton, DropDownMenuItem, SmallIconButtonWithTooltip} from '@reltio/components';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n items: Array<DropDownMenuItem>;\n};\n\nexport const SettingsMenu = ({items}: Props) => {\n return (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: SettingsIcon,\n tooltipTitle: i18n.text('Settings'),\n size: 'L'\n }}\n menuId={'matches-view-settings'}\n menuItems={items}\n />\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {prop, map, not} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {BasicViewHeader, ColumnsSettings, DropDownMenuItem, Spacer} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {\n getActionPermissionForMatches,\n Entity,\n Metadata,\n isDataTenantEntity,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport ComparisonViewModeSwitcher from '../ComparisonViewModeSwitcher/ComparisonViewModeSwitcher';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport {Divider as Divider} from '@material-ui/core';\nimport {SettingsMenu} from '../SettingsMenu/SettingsMenu';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n columnsData: GroupedColumnData[];\n selectedColumns: string[];\n onChangeColumns: (columns: string[]) => void;\n showNonOv: boolean;\n onChangeShowNonOv: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nconst getEntityObjects = map(prop('object'));\n\nexport const TableHeader = ({\n config,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showNonOv,\n onChangeShowNonOv\n}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n\n const {selectedItems, limitSelection} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const entities = getEntityObjects(selectedItems);\n const {tableViewModeAvailable} = config;\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, selectedItems);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity]\n );\n\n const hasSelectedItems = selectedItems.length !== 0;\n\n const handleClearSelection = () => {\n setSelectedItems([]);\n };\n\n const handleToggleShowOvValue = useCallback(() => {\n onChangeShowNonOv(not);\n }, [onChangeShowNonOv]);\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: !showNonOv,\n selectable: true,\n text: i18n.text('Show only OV values'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <Typography className={styles.title}>\n <span>{i18n.text('Match Review')}</span>\n {hasSelectedItems && (\n <span className={styles.total}>\n {' '}\n ({selectedItems.length}\n {limitSelection && '/' + limitSelection})\n </span>\n )}\n </Typography>\n {hasSelectedItems && (\n <Button onClick={handleClearSelection} className={styles.clearAllButton} color=\"primary\">\n {i18n.text('Clear All')}\n </Button>\n )}\n <Spacer />\n {hasSelectedItems && (\n <>\n <ActionsPanel actions={actions} numberOfButtons={2} />\n <Divider orientation={'vertical'} classes={{vertical: styles.actionSplitter}} />\n </>\n )}\n <SettingsMenu items={settingItems} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n {tableViewModeAvailable && (\n <>\n <Divider orientation=\"vertical\" classes={{vertical: styles.splitter}} />\n <ComparisonViewModeSwitcher />\n </>\n )}\n </BasicViewHeader>\n );\n};\n","import React from 'react';\n\nexport const ExpandedContext = React.createContext<{\n expandedMap: {\n [attrTypeUri: string]: boolean;\n };\n onExpandType: (attrTypeUri: string) => void;\n }>({\n expandedMap: {},\n onExpandType: () => {}\n });\n\nExpandedContext.displayName = 'ExpandedContext';\n","import React, {useContext, forwardRef, ComponentType} from 'react';\nimport {AttributeType} from '@reltio/mdm-sdk';\n\nimport {ExpandedContext} from './ExpandedContext';\n\ntype Props = {\n attributeType: AttributeType;\n};\n\nconst withExpanded = <P extends Props>(Component: ComponentType<P>) => {\n const WithExpanded = forwardRef((componentProps: P, ref) => {\n const {attributeType} = componentProps;\n const {expandedMap} = useContext(ExpandedContext);\n const expanded = expandedMap[attributeType.uri];\n return <Component {...componentProps} expanded={expanded} ref={ref} />;\n });\n\n WithExpanded.displayName = 'WithExpanded';\n return WithExpanded;\n};\n\nexport default withExpanded;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexAttributesHeadRenderer: {\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'flex-start'\n },\n complexAttributesHeadLabel: {\n flex: 1,\n marginLeft: '5px'\n },\n arrowButton: {\n cursor: 'pointer',\n marginLeft: '-3px'\n },\n attribute: {\n whiteSpace: 'pre-wrap'\n },\n matchedAttribute: {\n fontWeight: 500,\n background: 'rgb(241, 248, 234)',\n 'tr:hover &': {\n backgroundColor: 'rgb(232, 239, 225)'\n }\n }\n});\n","import React, {useMemo} from 'react';\nimport {HighlightedValuesContext, ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport withExpanded from '../withExpanded';\nimport {useStyles} from './styles';\n\nconst ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n matchedValuesUris?: string[];\n showNonOv?: boolean;\n };\n};\n\nexport const AttributesRenderer = ({value: {attributeType, attributeValues, matchedValuesUris, showNonOv}}: Props) => {\n const styles = useStyles();\n const highlightedValuesContextValue = useMemo(\n () => ({highlightedValuesUris: matchedValuesUris, highlightedClassName: styles.matchedAttribute}),\n [matchedValuesUris, styles.matchedAttribute]\n );\n return (\n <div className={styles.attribute}>\n <HighlightedValuesContext.Provider value={highlightedValuesContextValue}>\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n </HighlightedValuesContext.Provider>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ColumnDataContext = React.createContext<{\n setHoveredId?: React.Dispatch<React.SetStateAction<string>>;\n hoveredId?: string;\n setAnchor?: (anchor: HTMLElement) => void;\n }>({});\n\nColumnDataContext.displayName = 'ColumnDataContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n menuButtonWrapper: {\n display: 'none',\n position: 'absolute',\n top: '-4px',\n right: '-14px'\n },\n headCell: {\n display: 'flex',\n position: 'relative',\n 'th:hover &': {\n '& $menuButtonWrapper': {\n display: 'block'\n }\n }\n },\n active: {\n display: 'block'\n }\n});\n","import React, {useContext, useRef} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\nimport {ColumnDataContext} from '../../../../contexts/ColumnsDataContext';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\ntype Props = {\n label?: string;\n id: string;\n hideable?: boolean;\n};\n\nexport const HeadCellRenderer = ({label, id, hideable}: Props) => {\n const styles = useStyles();\n const {setAnchor, setHoveredId, hoveredId} = useContext(ColumnDataContext);\n const ref = useRef<HTMLDivElement>();\n const openConfigColumnPopup = () => {\n setAnchor(ref.current);\n setHoveredId(id);\n };\n return (\n <div className={styles.headCell}>\n {label}\n {hideable !== false && (\n <div className={classnames(styles.menuButtonWrapper, {[styles.active]: hoveredId === id})} ref={ref}>\n <SmallIconButton icon={MoreVertIcon} onClick={openConfigColumnPopup} size={'S'} />\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {ArrowExpandButton} from '@reltio/components';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {ExpandedContext} from '../ExpandedContext';\nimport {HeadCellRenderer} from './HeadCellRenderer';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n attributeType: AttributeType;\n id: string;\n};\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType, id}: Props) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <ArrowExpandButton expanded={expanded} onClick={onExpandClick} className={styles.arrowButton} />\n <div className={styles.complexAttributesHeadLabel}>\n <HeadCellRenderer label={label} id={id} />\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const HoveredEntityContext = React.createContext<{\n hoveredEntity: string;\n resetHoveredEntity: () => void;\n }>({\n hoveredEntity: null,\n resetHoveredEntity: () => {}\n });\n\nHoveredEntityContext.displayName = 'HoveredEntityContext';\n","import React, {memo} from 'react';\nimport {prop} from 'ramda';\n\nimport {Entity, isDataTenantEntity} from '@reltio/mdm-sdk';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton, ReinstateMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {mainEntity?: Entity; currentEntity?: Entity; matchRules?: string[]}) => void;\n classes?: {\n actionButton?: string;\n moreOptions?: string;\n };\n mode?: 'normal' | 'hover';\n};\n\nconst MatchesControls = ({\n value: {mainEntity, entity, matchRules, permission},\n onActionsMenuClose,\n onActionsMenuOpen,\n openAddRelationDialog,\n classes = {},\n mode = 'hover'\n}: Props) => {\n const {canMerge, canAddRelation, canMark} = permission;\n const hasDTEntity = [mainEntity, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity,\n currentEntity: entity,\n matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n mode={mode}\n actionButtonSize=\"XS\"\n classes={{\n actionButton: classes.actionButton,\n moreOptions: classes.moreOptions\n }}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n />\n );\n};\n\nexport default memo(MatchesControls);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '140px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n overflow: 'hidden'\n },\n hovered: {\n backgroundColor: 'rgb(245, 245, 245)'\n },\n closeButton: {\n position: 'absolute',\n zIndex: 1,\n margin: '4px'\n },\n matchControlsContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '45px',\n margin: '4px 8px'\n },\n rightButton: {\n display: 'flex',\n alignItems: 'center'\n },\n moreOptions: {\n marginLeft: '8px'\n }\n});\n\nexport default styles;\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\n\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {Entity, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\nimport useStyles from './styles';\n\ntype Props = {\n value: {\n onClose?: () => void;\n showCloseButton?: boolean;\n showButtons?: boolean;\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n config: PotentialMatchesPerspectiveConfig;\n permission: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n};\n\nconst EntityCard = ({value: {entity, showCloseButton, onClose, showButtons, config, ...rest}}: Props) => {\n const styles = useStyles();\n const {hoveredEntity, resetHoveredEntity} = useContext(HoveredEntityContext);\n const isHovered = getEntityId(entity) === hoveredEntity;\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const controlProps = useMemo(\n () => ({\n ...rest,\n entity\n }),\n [rest, entity]\n );\n\n return (\n <>\n <div className={classnames(styles.container, {[styles.hovered]: showButtons && isHovered})}>\n {showCloseButton && (\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} size=\"XXS\" />\n )}\n <ProfileCard entity={entity} />\n {showButtons && (\n <div className={styles.matchControlsContainer}>\n <MatchControls\n mode=\"normal\"\n value={controlProps}\n onActionsMenuClose={resetHoveredEntity}\n openAddRelationDialog={openAddRelationDialog}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n )}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </>\n );\n};\n\nexport default EntityCard;\n","import {useState, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propSatisfies, allPass, includes} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const useWorkflowTasks = ({entity, match}: Props) => {\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri: string = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState<WorkflowTaskData[]>([]);\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n return {enabled: !!workflowPath, loading: requestIsInProgress, tasks, loadTasks};\n};\n","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import React from 'react';\n\nexport const WorkflowTasksAvailabilityContext = React.createContext<(entityUri: string, value: boolean) => void>(\n () => {}\n);\n\nWorkflowTasksAvailabilityContext.displayName = 'WorkflowTasksAvailabilityContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden',\n margin: '-16px'\n },\n assigneeSelector: {},\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {pick} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n PotentialMatchReviewCard,\n SmallIconButton,\n DropDownMenuButton,\n DropDownSelector,\n useWorkflowAssignee,\n WorkflowComments,\n useMergeAllRequest,\n useMarkAsNotMatchRequest\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\n\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {WorkflowTasksAvailabilityContext} from '../ComparisonTable/WorkflowTasksAvailabilityContext';\n\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task: WorkflowTaskData) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const WorkflowCard = ({entity, match}: Props) => {\n const styles = useStyles();\n const {tasks, loadTasks} = useWorkflowTasks({entity, match});\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\n const {sendMergeAllRequest: merge} = useMergeAllRequest({\n entity,\n entities: [match.object]\n });\n const {sendMarkAsNotMatchRequest: notMatch} = useMarkAsNotMatchRequest({\n entity,\n entities: [match.object]\n });\n const mapping = {\n Merge: merge,\n NotAMatch: notMatch\n };\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const matchEntityUri = getEntityUriFromMatchObject(match);\n useEffect(() => {\n setWorkflowTaskAvailability?.(matchEntityUri, !!task);\n }, [setWorkflowTaskAvailability, matchEntityUri, task]);\n const actions = ((task && task.possibleActions) || []).map(({action, label}) => ({\n text: label,\n onClick: mapping[action]\n }));\n const {assignee, getAssignees, updateAssignee, updateRequestIsInProgress} = useWorkflowAssignee(task || {});\n const Actions =\n actions.length > 0 ? (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n menuId=\"custom-actions\"\n menuItems={actions}\n />\n ) : null;\n return task ? (\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <DropDownSelector\n className={styles.assigneeSelector}\n enabled={!updateRequestIsInProgress || assignee}\n getOptions={getAssignees}\n onChange={updateAssignee}\n hideSelectedOptions={false}\n label={i18n.text('Assigned to')}\n value={assignee}\n defaultOptions={true}\n />\n </div>\n <WorkflowComments {...getCommentsInfoFromTasks(task)} />\n </PotentialMatchReviewCard>\n </div>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\n\nexport const DEFAULT_ROWS = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'matchRules',\n label: i18n.text('Match method'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n hideable: false,\n initialWidth: 130,\n minWidth: 130,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'workflowCard',\n label: i18n.text('Workflow'),\n modes: [ComparisonViewMode.COLUMNS]\n },\n {\n id: 'entityId',\n label: i18n.text('Entity ID'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'score',\n label: i18n.text('Match score'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_INT\n },\n initialWidth: 100,\n modes: [ComparisonViewMode.TABLE]\n },\n {\n id: 'sources',\n label: i18n.text('Sources'),\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'crosswalks',\n label: i18n.text('Crosswalks'),\n modes: [ComparisonViewMode.COLUMNS]\n }\n];\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n itemContainer: {\n width: '18px',\n height: '18px'\n },\n item: {\n width: '18px',\n height: '18px',\n background: 'none',\n fontSize: '1rem'\n }\n});\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {SourceIcon, useCrosswalkColor} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n className?: string;\n showTooltip?: boolean;\n};\n\nconst ColoredSourceIcon = ({className, crosswalk, showTooltip = true}: Props) => {\n const styles = useStyles();\n const color = useCrosswalkColor(crosswalk);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const content = (\n <div className={classnames(styles.itemContainer, className)} style={{background: color}}>\n <SourceIcon sourceType={crosswalk.type} className={styles.item} />\n </div>\n );\n return showTooltip ? <Tooltip title={getSourceSystemLabel(metadata, crosswalk.type)}>{content}</Tooltip> : content;\n};\n\nexport default memo(ColoredSourceIcon);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n crosswalk: {\n marginBottom: '8px'\n },\n crosswalkIcon: {\n marginRight: '5px'\n },\n labelContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n spacer: {\n flex: 1\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport ColoredSourceIcon from '../../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: NestedAttributeValue & {\n value: NestedAttributeValue['value'] & {\n crosswalk: Crosswalk;\n };\n };\n};\n\nconst LabelRenderer = ({attributeValue}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const crosswalk = attributeValue.value.crosswalk;\n return (\n <div className={styles.labelContainer}>\n <ColoredSourceIcon className={styles.crosswalkIcon} crosswalk={crosswalk} showTooltip={false} />\n <div>{getSourceSystemLabel(metadata, crosswalk.type)}</div>\n <div className={styles.spacer} />\n <div>{crosswalk.value}</div>\n </div>\n );\n};\n\nexport default LabelRenderer;\n","import React, {useMemo} from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {\n AttributeType,\n Crosswalk,\n CrosswalksAttrTypes,\n getSourceSystemLabel,\n Metadata,\n NestedAttributeValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nimport withExpanded from '../../withExpanded';\nimport LabelRenderer from './LabelRenderer';\nimport {useStyles} from './styles';\nimport {useSelector} from 'react-redux';\n\nexport const ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n attributeType: AttributeType;\n };\n};\n\nconst getFakeAttributeValueForCrosswalk = (crosswalk: Crosswalk, attributeType: AttributeType, metadata: Metadata) => {\n return attributeType.attributes.reduce(\n (nestedAttributeValue: NestedAttributeValue, subAttributeType) => {\n if (subAttributeType.uri === CrosswalksAttrTypes.sourceSystems.uri) {\n nestedAttributeValue.value[subAttributeType.uri] = getSourceSystemLabel(metadata, crosswalk.type);\n } else if (crosswalk[subAttributeType.uri]) {\n nestedAttributeValue.value[subAttributeType.uri] = crosswalk[subAttributeType.uri];\n }\n return nestedAttributeValue;\n },\n {value: {crosswalk}, uri: crosswalk.uri} as NestedAttributeValue\n );\n};\n\nconst CrosswalksRenderer = ({value: {crosswalks, attributeType}}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeValues = useMemo(\n () => crosswalks?.map((crosswalk) => getFakeAttributeValueForCrosswalk(crosswalk, attributeType, metadata)),\n [metadata, crosswalks, attributeType]\n );\n return attributeValues ? (\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n LabelRenderer={LabelRenderer}\n valueContainerClassName={styles.crosswalk}\n />\n ) : null;\n};\n\nexport default CrosswalksRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '-8px'\n },\n crosswalkIcon: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n});\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport ColoredSourceIcon from '../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Crosswalk[];\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n return value ? (\n <div className={styles.wrapper}>\n {value.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {\n always,\n chain,\n cond,\n filter,\n identity,\n last,\n map,\n path,\n pathOr,\n pipe,\n prop,\n split,\n values,\n when,\n pick\n} from 'ramda';\n\nimport {\n AttributeType,\n CrosswalksAttrTypes,\n EntitiesMap,\n Entity,\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isOv,\n MatchedValues,\n Match,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n searchUriToAttrUri\n} from '@reltio/mdm-sdk';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {HeadCellRenderer} from '../cell-renderers/HeadCellRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\nimport CrosswalksRenderer from '../cell-renderers/CrosswalksRenderer/CrosswalksRenderer';\nimport {ComparisonViewMode} from '../../../constants/views';\nimport SourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\n\nexport type RowData = {\n id: string;\n label: string;\n cellRenderer?: (props: unknown) => JSX.Element;\n headCellRenderer?: (props: unknown) => JSX.Element;\n rowClassName?: string;\n attributeType?: AttributeType;\n hideable?: boolean;\n};\n\nconst additionalPropsForDefaultRows = {\n profile: {\n cellRenderer: EntityCard,\n headCellRenderer: HeadCellRenderer,\n label: ''\n },\n matchRules: {\n cellRenderer: MatchMethod,\n headCellRenderer: HeadCellRenderer\n },\n workflowCard: {\n cellRenderer: WorkflowCardRenderer,\n headCellRenderer: HeadCellRenderer\n },\n sources: {\n cellRenderer: SourcesRenderer,\n headCellRenderer: HeadCellRenderer\n },\n entityId: {\n headCellRenderer: HeadCellRenderer\n },\n crosswalks: {\n cellRenderer: CrosswalksRenderer,\n headCellRenderer: ComplexAttributesHeadRenderer,\n attributeType: {\n uri: 'crosswalks',\n name: 'crosswalks',\n type: 'Nested',\n attributes: Object.values(CrosswalksAttrTypes)\n }\n }\n};\n\nconst defaultRows: RowData[] = DEFAULT_ROWS.filter(({modes}) => modes.includes(ComparisonViewMode.COLUMNS)).map(\n (row) => ({\n ...pick(['id', 'label', 'hideable'], row),\n ...additionalPropsForDefaultRows[row.id]\n })\n);\n\nconst getAttrTypeNameByUri = pipe(split('/'), last);\n\nexport const getTableRowsData = (metadata: Metadata, entity: Entity, selectedColumns: string[]): RowData[] => {\n return selectedColumns\n .map((searchUri) => {\n const defaultRow = defaultRows.find(({id}) => id === searchUri);\n\n if (defaultRow) {\n return defaultRow;\n }\n\n if (!isAttributeSearchUri(searchUri)) {\n return null;\n }\n\n const attrTypeUri = searchUriToAttrUri(searchUri, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attrTypeUri, entity.type);\n const collectionName = getAttributeSource(attrTypeUri);\n\n if (attributeType) {\n return {\n id: `${collectionName}.${getAttrTypeNameByUri(attrTypeUri)}`,\n label: attributeType.label,\n attributeType,\n cellRenderer: AttributesRenderer,\n headCellRenderer: isComplexAttribute(attributeType)\n ? ComplexAttributesHeadRenderer\n : HeadCellRenderer\n };\n }\n\n return null;\n })\n .filter(identity);\n};\n\nexport const getMatchedValuesUris = (matchedValues: MatchedValues): string[] => {\n return when(\n identity,\n pipe(\n values,\n chain(\n chain(\n cond([\n [path(['value', 'uri']), path(['value', 'uri'])],\n [path(['value', 'values']), pipe(path(['value', 'values']), map(prop('uri')))]\n ])\n )\n ),\n filter(identity)\n )\n )(matchedValues);\n};\n\nconst getColumnDataForRowData = (\n metadata: Metadata,\n match: Match,\n entitiesMap: EntitiesMap,\n entity: Entity,\n rowData: RowData,\n config: PotentialMatchesPerspectiveConfig,\n onRemoveItem: (match: Match) => void,\n showNonOv: boolean\n) => {\n const {object, isMainEntity, matchRules, matchedValues} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'profile':\n return {\n mainEntity: entity,\n showCloseButton: !isMainEntity,\n onClose: () => onRemoveItem(match),\n showButtons: !isMainEntity,\n entity: object,\n matchRules: matchRules,\n permission: getActionPermissionForMatch(metadata, config, object, entity, matchRules),\n config: config\n };\n case 'matchRules':\n return {\n metadata,\n entity,\n match,\n entitiesMap,\n show: !isMainEntity && !!matchRules\n };\n case 'sources':\n return object.crosswalks;\n case 'crosswalks':\n return {\n crosswalks: object.crosswalks,\n attributeType: rowData.attributeType\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n }\n if (isAttributeSearchUri(rowData.id)) {\n const attrSource = getAttributeSource(rowData.attributeType);\n const getAttributeValues = pipe(\n pathOr([], [attrSource, rowData.attributeType.name]),\n when(always(!showNonOv), filter(isOv))\n );\n const attributeValues = getAttributeValues(object);\n return {\n attributeType: rowData.attributeType,\n attributeValues,\n matchedValuesUris: getMatchedValuesUris(matchedValues),\n showNonOv\n };\n }\n};\n\ntype TableColumnsData = {\n id: string;\n isDraggable: boolean;\n [key: string]: unknown;\n};\n\nexport const getTableColumnsData = (\n metadata: Metadata,\n rowsData: RowData[],\n entity: Entity,\n matches: Match[],\n entitiesMap?: EntitiesMap,\n config?: PotentialMatchesPerspectiveConfig,\n onRemoveItem?: (match: Match) => void,\n showNonOnly = false\n) => {\n return [{object: entity, isMainEntity: true} as Match].concat(matches).map((match) => {\n return rowsData.reduce((column, rowData) => {\n column[rowData.id] = getColumnDataForRowData(\n metadata,\n match,\n entitiesMap,\n entity,\n rowData,\n config,\n onRemoveItem,\n showNonOnly\n );\n return {...column, isDraggable: !match.isMainEntity, id: match.object.uri};\n }, {} as TableColumnsData);\n });\n};\n","import React from 'react';\nimport {MatchRulesBlock} from '@reltio/components';\n\ntype Props = {\n value: React.ComponentProps<typeof MatchRulesBlock> & {show?: boolean};\n};\nconst MatchMethod = ({value: {metadata, entity, match, entitiesMap, show}}: Props) => {\n if (!show) {\n return null;\n }\n return <MatchRulesBlock entity={entity} match={match} entitiesMap={entitiesMap} metadata={metadata} />;\n};\n\nexport default MatchMethod;\n","import React from 'react';\n\nimport {Entity, Match} from '@reltio/mdm-sdk';\n\nimport WorkflowCard from '../../../WorkflowCard';\n\ntype Props = {\n value: {\n match: Match;\n entity: Entity;\n };\n};\n\nconst WorkflowCardRenderer = ({value: {entity, match}}: Props) => {\n return <WorkflowCard entity={entity} match={match} />;\n};\n\nexport default WorkflowCardRenderer;\n","import React from 'react';\nimport {Match} from '@reltio/mdm-sdk';\n\nexport const ColumnHandlerContext = React.createContext<(match: Match) => void>(() => {});\n\nColumnHandlerContext.displayName = 'ColumnHandlerContext';\n","import {filter, join, map, pipe, slice, split, uniq, when} from 'ramda';\n\nimport {isAttributeSearchUri, searchUriToAttrUri} from '@reltio/mdm-sdk';\n\nconst getFirstLevelParentAttribute = pipe(split('.'), slice(0, 2), join('.'));\nexport const replaceSubAttributesWithParent = pipe(map(when(isAttributeSearchUri, getFirstLevelParentAttribute)), uniq);\n\nexport const getAttributesTypeUris = (entityTypeUri: string, attributes: string[]): string[] =>\n pipe(\n filter(isAttributeSearchUri),\n map((searchUri: string) => searchUriToAttrUri(searchUri, entityTypeUri))\n )(attributes);\n","import React from 'react';\nimport {Popover as Popover} from '@material-ui/core';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nexport enum Action {\n INSERT_BELOW = 'below',\n INSERT_ABOVE = 'above',\n HIDE = 'hide'\n}\n\nconst TEXT = {\n [Action.INSERT_BELOW]: i18n.text('Insert row below'),\n [Action.INSERT_ABOVE]: i18n.text('Insert row above'),\n [Action.HIDE]: i18n.text('Hide row')\n};\n\nconst renderListItem = (action: Action, handler: () => void, index: number) => (\n <ListItem button component={'div'} key={index} onClick={handler}>\n <ListItemText primary={TEXT[action]} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n);\n\ntype Props = {\n open?: boolean;\n anchorEl: HTMLElement;\n onClick: (action: Action) => void;\n onClose: () => void;\n actions: Action[];\n};\n\nconst ConfigRowPopup = ({open, anchorEl, onClick, onClose, actions}: Props) => {\n const getClickHandler = (action) => () => {\n onClick(action);\n };\n\n return (\n <Popover open={open} anchorEl={anchorEl} onClose={onClose}>\n <List component=\"div\">\n {actions.map((action, index) => renderListItem(action, getClickHandler(action), index))}\n </List>\n </Popover>\n );\n};\n\nexport default ConfigRowPopup;\n","import {GroupedColumns, GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\nconst deepFilter = (nodes: GroupedColumnData[], filter: (col: GroupedColumns) => boolean) =>\n nodes.filter(filter).map((node: GroupedColumns) =>\n node.columns\n ? {\n ...node,\n columns: deepFilter(node.columns, filter)\n }\n : node\n );\n\nexport const getAdditionalRows = (\n groupColumnsData: GroupedColumnData[],\n headColumns: string[] = []\n): GroupedColumnData[] =>\n deepFilter(groupColumnsData, (column: GroupedColumns) => !headColumns.some((elemId) => column.id === elemId));\n","import React, {useEffect, useMemo, useState, memo} from 'react';\nimport ConfigRowPopup, {Action} from './ConfigRowPopup';\nimport {ColumnsSettingsPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getAdditionalRows} from './helpers';\nimport {GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n actions: Action[];\n id: string;\n selectedAttributes?: string[];\n setSelectedAttributes?: (cols: string[]) => void;\n groupColumnsData: GroupedColumnData[];\n};\n\nconst AddRowPopups = ({\n anchorEl,\n onClose,\n actions,\n id,\n selectedAttributes,\n setSelectedAttributes,\n groupColumnsData\n}: Props) => {\n const groupedItems = useMemo(() => getAdditionalRows(groupColumnsData, selectedAttributes), [\n groupColumnsData,\n selectedAttributes\n ]);\n const [action, setAction] = useState<Action>();\n const [isOpenConfigPopup, setIsOpenConfigPopup] = useState(false);\n useEffect(() => {\n if (anchorEl) {\n setIsOpenConfigPopup(true);\n }\n }, [anchorEl]);\n const onClosePopup = () => {\n setIsOpenConfigPopup(false);\n if (!action) onClose();\n };\n const onChooseAction = (action: Action) => {\n if (action === Action.HIDE) {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n if (index > -1) {\n newAttributes.splice(index, 1);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n }\n return;\n }\n setAction(action);\n setIsOpenConfigPopup(false);\n };\n\n const closeAddRowPopup = () => {\n setAction(null);\n setIsOpenConfigPopup(false);\n onClose();\n };\n const addRowHandler = ({id: newId}: {id: string}) => {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n const newIndex = action === Action.INSERT_ABOVE ? index : index + 1;\n newAttributes.splice(newIndex, 0, newId);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n };\n\n return (\n <>\n <ConfigRowPopup\n open={isOpenConfigPopup}\n anchorEl={anchorEl}\n actions={actions}\n onClose={onClosePopup}\n onClick={onChooseAction}\n />\n <ColumnsSettingsPopup\n hideCheckBox\n anchorEl={action ? anchorEl : undefined}\n columnsData={groupedItems}\n selectedColumns={selectedAttributes}\n onColumnClick={addRowHandler}\n onClose={closeAddRowPopup}\n title={i18n.text('Add row')}\n />\n </>\n );\n};\n\nexport default memo(AddRowPopups);\n","import {useCallback, useState} from 'react';\nimport {any, map, pipe} from 'ramda';\nimport {getEntityUriFromMatchObject} from '@reltio/mdm-sdk';\n\nexport const useWorkflowTasksAvailability = (matches) => {\n const [workflowTasksAvailabilityMap, setWorkflowTasksAvailabilityMap] = useState<{[entityUri: string]: boolean}>(\n {}\n );\n const setWorkflowTaskAvailability = useCallback((entityUri: string, value: boolean) => {\n setWorkflowTasksAvailabilityMap((map) => ({\n ...map,\n [entityUri]: value\n }));\n }, []);\n const isThereAnyTask: boolean = pipe(\n map(getEntityUriFromMatchObject),\n any((uri) => workflowTasksAvailabilityMap[uri])\n )(matches);\n\n return {isThereAnyTask, setWorkflowTaskAvailability};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst firstColumnColor = 'rgb(245, 245, 245)';\nconst secondColumnColor = 'rgb(224, 238, 249)';\nconst firstRowHeight = 141;\nconst secondRowHeight = 50;\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n overflow: 'auto',\n height: '100%',\n width: '100%'\n },\n comparisonTableWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative'\n },\n collapsedRow: {\n display: 'none'\n },\n comparisonTable: {\n borderSpacing: 0,\n '& tbody tr:hover td, & tbody tr:hover th': {\n backgroundColor: 'rgb(235, 235, 235)'\n },\n 'table& tbody tr:hover td:nth-child(2)': {\n backgroundColor: 'rgb(215, 228, 239)'\n },\n '& td, & th': {\n borderRight: borderStyle,\n borderBottom: borderStyle,\n margin: 0,\n verticalAlign: 'top',\n textAlign: 'left',\n fontSize: '13px',\n minHeight: '16px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n wordWrap: 'break-word',\n backgroundColor: 'white'\n },\n '& td': {\n minWidth: dataCellWidth,\n maxWidth: dataCellWidth,\n padding: '16px',\n overflow: 'hidden',\n height: 0\n },\n '& td:empty, th:empty': {\n padding: '0px 16px'\n },\n '& th': {\n minWidth: headCellWidth,\n maxWidth: headCellWidth,\n padding: '16px'\n },\n '& thead tr:first-child th:first-child': {\n borderBottom: 'none',\n borderTop: 'none'\n },\n // sticky columns\n '& td:first-child, th:first-child': {\n borderLeft: borderStyle,\n position: 'sticky',\n left: '0',\n zIndex: 2,\n backgroundColor: firstColumnColor,\n color: theme.palette.text.secondary,\n fontWeight: 'normal'\n },\n '& td:nth-child(2), th:nth-child(2)': {\n borderRight: thickBorderStyle,\n position: 'sticky',\n left: `${headCellWidth}px`,\n zIndex: 2\n },\n // sticky rows\n '& thead tr:first-child td, & thead tr:first-child th': {\n borderTop: 'none',\n position: 'sticky',\n top: '0',\n height: firstRowHeight,\n padding: 0,\n zIndex: 2\n },\n '& thead tr:nth-child(2) td, & thead tr:nth-child(2) th': {\n position: 'sticky',\n top: `${firstRowHeight}px`,\n height: secondRowHeight,\n padding: '16px',\n zIndex: 2\n },\n '& thead tr:nth-child(2) th, & thead tr:nth-child(3) th': {\n padding: '16px',\n backgroundColor: firstColumnColor\n },\n // always visible corner\n '& thead tr:nth-child(-n+2) td:nth-child(-n+2), & thead tr:nth-child(-n+2) th:nth-child(-n+2)': {\n zIndex: 3\n },\n // special color for second column\n 'table& tr td:nth-child(2), th:nth-child(2)': {\n backgroundColor: secondColumnColor\n }\n },\n emptyState: {\n position: 'sticky',\n top: '10vh',\n display: 'flex',\n width: '100%'\n }\n}));\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {chain, groupBy, insert, nth, pipe, prop, remove, toPairs} from 'ramda';\nimport {\n EntitiesMap,\n Entity,\n getFirstLevelSearchUri,\n isAttributeSearchUri,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n Match\n} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {replaceSubAttributesWithParent} from './helpers/attributesHelpers';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport AddRowPopups from './AddRowPopups';\nimport {ColumnDataContext} from '../../contexts/ColumnsDataContext';\nimport {Action} from './AddRowPopups/ConfigRowPopup';\nimport {HoveredEntityContext} from './HoveredEntityContext';\nimport {WorkflowTasksAvailabilityContext} from './WorkflowTasksAvailabilityContext';\nimport {useWorkflowTasksAvailability} from '../../hooks/useWorkflowTasksAvailability';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n entity: Entity;\n metadata: Metadata;\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n selectedItems: Match[];\n setSelectedItems: (items: Match[]) => void;\n selectedColumns: string[];\n setSelectedColumns: (items: string[]) => void;\n columnsData: GroupedColumnData[];\n showNonOv?: boolean;\n};\n\nconst actions = [Action.INSERT_BELOW, Action.INSERT_ABOVE, Action.HIDE];\n\nexport const ComparisonTable = ({\n className,\n entity,\n metadata,\n config,\n selectedItems,\n setSelectedItems,\n selectedColumns,\n setSelectedColumns,\n entitiesMap = {},\n columnsData: allColumnsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n const matches = useMemo(() => selectedItems.slice(-4), [selectedItems]);\n const selectedColumnsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(selectedColumns),\n [selectedColumns]\n );\n\n const rowsData = useMemo(() => getTableRowsData(metadata, entity, selectedColumnsWithoutSubAttributes), [\n metadata,\n entity,\n selectedColumnsWithoutSubAttributes\n ]);\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem, showNonOv),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem, showNonOv]\n );\n\n const [expandedMap, setExpandedMap] = useState<{\n [attrTypeUri: string]: boolean;\n }>({});\n\n const onExpandType = useCallback((attrTypeUri: string) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n const headCellData = useMemo(\n () => ({\n setHoveredId,\n setAnchor,\n hoveredId\n }),\n [hoveredId]\n );\n\n const onClosePopup = useCallback(() => {\n setHoveredId(null);\n setAnchor(null);\n }, []);\n\n const handleMoveRow = (dragId: string, hoverId: string) => {\n const newArr: Array<[string, string[]]> = pipe(\n groupBy((item) => (isAttributeSearchUri(item) ? getFirstLevelSearchUri(item) : item)),\n toPairs\n )(selectedColumns);\n\n const dragIndex = newArr.findIndex(([searchUri]) => searchUri === dragId);\n const hoverIndex = newArr.findIndex(([searchUri]) => searchUri === hoverId);\n const dragRow = newArr[dragIndex];\n if (dragRow) {\n setSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = selectedItems.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = selectedItems.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = selectedItems[dragIndex];\n if (dragColumn) {\n setSelectedItems(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(selectedItems));\n }\n };\n\n const selectedAttributeUris: string[] = useMemo(() => rowsData.map(prop('id')), [rowsData]);\n\n const setHoveredEntityHandler = (columnValue) => {\n setHoveredEntity(columnValue?.entityId || null);\n };\n\n const resetHoveredEntity = useCallback(() => {\n setHoveredEntity(null);\n }, []);\n\n const hoveredEntityContextValue = useMemo(\n () => ({\n hoveredEntity,\n resetHoveredEntity\n }),\n [hoveredEntity, resetHoveredEntity]\n );\n\n const {isThereAnyTask, setWorkflowTaskAvailability} = useWorkflowTasksAvailability(matches);\n const workflowCardRowClassname = isThereAnyTask ? undefined : styles.collapsedRow;\n const displayedRowsData = useMemo(\n () =>\n rowsData.map((rowData) =>\n workflowCardRowClassname && rowData.id === 'workflowCard'\n ? {\n ...rowData,\n rowClassName: workflowCardRowClassname\n }\n : rowData\n ),\n [rowsData, workflowCardRowClassname]\n );\n\n return (\n <div className={classnames(styles.container, className)}>\n <div className={styles.comparisonTableWrapper}>\n <HoveredEntityContext.Provider value={hoveredEntityContextValue}>\n <ExpandedContext.Provider value={expandedContextValue}>\n <ColumnDataContext.Provider value={headCellData}>\n <WorkflowTasksAvailabilityContext.Provider value={setWorkflowTaskAvailability}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={displayedRowsData}\n columnsData={columnsData}\n theadRowsNumber={2}\n onMoveRow={handleMoveRow}\n onMoveColumn={handleMoveColumn}\n setHoveredColumn={setHoveredEntityHandler}\n resetHoveredColumn={resetHoveredEntity}\n />\n </WorkflowTasksAvailabilityContext.Provider>\n </ColumnDataContext.Provider>\n </ExpandedContext.Provider>\n </HoveredEntityContext.Provider>\n {!matches.length && (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SELECT_ATTRIBUTES}\n variant={EMPTY_STATE_VARIANTS.embedded}\n text={i18n.text('Select profiles')}\n secondaryText={i18n.text(\n 'Select one or more profiles to compare it with the current profile'\n )}\n />\n </div>\n )}\n <AddRowPopups\n id={hoveredId}\n anchorEl={anchor}\n onClose={onClosePopup}\n actions={actions}\n selectedAttributes={selectedAttributeUris}\n setSelectedAttributes={setSelectedColumns}\n groupColumnsData={allColumnsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {EntitiesMap, Match, Entity, Metadata, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport ComparisonTable from '../ComparisonTable';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n selectedColumns: string[];\n setSelectedColumns: (newColumns: string[]) => void;\n selectedItems: Match[];\n setSelectedItems: (newItems: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n columnsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedColumns,\n setSelectedColumns,\n selectedItems,\n setSelectedItems,\n config,\n metadata,\n entity,\n entitiesMap = {},\n columnsData,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n columnsData={columnsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {makeStyles, fade, lighten} from '@material-ui/core/styles';\nimport {CSSProperties} from '@material-ui/styles';\n\nconst defaultWrapperStyles: CSSProperties = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow: CSSProperties = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 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};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color: string, hoveredColor?: string) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${fade(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${fade(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 114, 206)', 0.88);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCloseIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 24px 0 8px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n '&::after': {\n ...textOverflow,\n width: '30px',\n backgroundImage: 'none'\n }\n },\n firstHeadCell: {\n paddingLeft: '42px'\n },\n headCellWithEntity: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n rowCell: {\n fontSize: '12px',\n overflow: 'hidden'\n },\n rowCellFirstColumn: {\n height: '100%'\n },\n firstEntityCell: {\n maxHeight: '200px'\n },\n entityRowCell: {\n fontSize: '12px',\n position: 'relative'\n },\n entityRowCellSelected: getColoredRowCellStyle(entityBackground),\n rowCellHighlighted: getColoredRowCellStyle(highlightBackground),\n rowCellSelected: getColoredRowCellStyle(lightPrimaryBackground, lightPrimaryBackgroundHovered),\n defaultWrapper: {\n ...defaultWrapperStyles,\n '&::after': {\n ...textOverflow,\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n }\n }\n },\n hoveredDefaultWrapper: {\n ...defaultWrapperStyles\n },\n entityWrapper: {\n paddingLeft: '12px'\n },\n profileWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n position: 'relative'\n },\n entityLabel: {\n ...link,\n fontWeight: 500\n },\n commentsContainer: {\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 1,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '15px',\n backgroundColor: '#fff',\n '&$checked': {\n backgroundColor: lightPrimaryBackground\n }\n },\n checked: {},\n matchRulesWrapper: {\n padding: '8px 15px 8px 10px',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIcon: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n opacity: 0.38\n }\n };\n});\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = Record<string, unknown>;\n\nconst HeadCellRenderer = (props: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport {AttributeValue, DataTypes, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: AttributeValue | PrimitiveValue;\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {\n CollapseRowButton,\n EntityUriLink,\n IdContext,\n withTableContext,\n CommentsContainer,\n SmallIconButton\n} from '@reltio/components';\nimport {\n getEntityUriForLink,\n getLabel,\n createObjectIdForPM,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity\n} from '@reltio/mdm-sdk';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {MatchesTableContextProps, MatchesTableRowValue} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n rowIndex: number;\n rowValue: MatchesTableRowValue;\n onRemove: () => void;\n entityToMatch: Entity;\n isRowSelected: boolean;\n hoverRowIndex: number;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex\n}: Props) => {\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowRemovable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowRemovable\n })}\n >\n {isRowHovered && <DragIndicatorIcon className={styles.dragIcon} />}\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <SmallIconButton\n icon={CloseIcon}\n size=\"XS\"\n className={classnames(styles.rowCloseIcon, {[styles.hidden]: !isRowRemovable})}\n onClick={onRemove}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nexport default withTableContext(\n ({onToggleSelect, entityToMatch}: MatchesTableContextProps, {rowValue, value}: Props) => {\n const {rawValue: match} = rowValue;\n return {\n onRemove: () => onToggleSelect(match),\n isRowRemovable: value !== entityToMatch,\n entityToMatch\n };\n }\n)(EntityProfileRenderer);\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n headIndex: number;\n [key: string]: unknown;\n};\n\nconst ProfileHeadCellRenderer = (props: Props) => {\n const isFirstColumn = props.headIndex === 0;\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, {[styles.firstHeadCell]: isFirstColumn})}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withTableContext()(withFilterAtBottom(ProfileHeadCellRenderer));\n","import {MatchRulesBlock} from '@reltio/components';\nimport {EntitiesMap, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport React, {ComponentProps} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n metadata: Metadata;\n match: Match;\n entitiesMap: EntitiesMap;\n entity: Entity;\n variant?: ComponentProps<typeof MatchRulesBlock>['variant'];\n };\n};\n\nconst MatchRulesRenderer = ({value}: Props) => {\n const styles = useStyles();\n if (!value) {\n return null;\n }\n const {metadata, match, entitiesMap, entity, variant} = value;\n return (\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n variant={variant}\n metadata={metadata}\n entitiesMap={entitiesMap}\n match={match}\n entity={entity}\n />\n </div>\n );\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n};\n\nconst BlobRenderer = ({value}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n {value}\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React from 'react';\nimport {BasicImageAttributesValue, getImageAttributeOvThumbnailUrl} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: BasicImageAttributesValue;\n};\n\nconst ImageRenderer = ({value}: Props) => {\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value});\n return (\n src && (\n <div className={styles.imageWrapper}>\n <img src={src} />\n </div>\n )\n );\n};\n\nexport default ImageRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, getLabel, getReferencedEntityFromAttrValue, ReferenceAttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: ReferenceAttributeValue;\n};\n\nconst ReferenceRenderer = ({value}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n value && (\n <div className={classnames(styles.defaultWrapper, styles.referenceWrapper)}>\n <EntityTypeIcon\n className={styles.entityAvatar}\n entityType={getEntityType(metadata, getReferencedEntityFromAttrValue(value).type)}\n />\n <EntityUriLink value={getReferencedEntityFromAttrValue(value).objectURI} className={styles.link}>\n {getLabel(value.label)}\n </EntityUriLink>\n </div>\n )\n );\n};\n\nexport default ReferenceRenderer;\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n };\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonSourcesRenderer value={value.crosswalks} />\n </div>\n );\n};\n\nexport default SourcesRenderer;\n","import {assoc, map, pipe, prop, reduce, split, filter} from 'ramda';\nimport {\n DataTypes,\n EntitiesMap,\n Entity,\n getAttributesForMatchRules,\n getEntityId,\n getOvAttributeValuesByPath,\n isAttributeSearchUri,\n Metadata,\n Match\n} from '@reltio/mdm-sdk';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../types/potentialMatchesTypes';\nimport {ComparisonViewMode} from '../../constants/views';\nimport SourcesRenderer from './cell-renderers/SourcesRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\ntype RowValue = {\n entity: Entity;\n metadata: Metadata;\n match: Match;\n entitiesMap?: EntitiesMap;\n matchScore: number;\n};\n\nconst getRowValueForColumn = (\n columnData: MatchesColumnsData,\n {entity, metadata, match, entitiesMap, matchScore}: RowValue\n) => {\n switch (columnData.id) {\n case 'profile':\n return entity;\n case 'entityId':\n return getEntityId(entity);\n case 'matchRules':\n return {metadata, match, entitiesMap, entity, variant: 'all'};\n case 'score':\n return matchScore;\n case 'sources':\n return {crosswalks: entity.crosswalks};\n default: {\n const [attrSource, ...attrPath]: string[] = getAttrPathFromColumnId(columnData.id);\n return pipe(prop(attrSource), getOvAttributeValuesByPath(attrPath))(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: MatchesColumnsData[],\n matches: Match[],\n entitiesMap?: EntitiesMap\n): MatchesTableRowValue[] =>\n matches.map((match) => {\n const entity = match.object;\n const allMatchRules = match.matchRules || [];\n const matchScore = match.matchScore || 0;\n const matchAttributes = getAttributesForMatchRules(metadata, entity.type, allMatchRules);\n const rowValue = {entity, metadata, match, entitiesMap, matchScore};\n const filteredColumnsData = columnsData.filter(({modes}) =>\n modes ? modes.includes(ComparisonViewMode.TABLE) : true\n );\n\n return pipe(\n reduce((acc, columnData) => assoc(columnData.id, getRowValueForColumn(columnData, rowValue), acc), {}),\n assoc('matchAttributes', matchAttributes),\n assoc('rawValue', match)\n )(filteredColumnsData);\n });\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (isAttributeSearchUri(columnId) as boolean) {\n const [, ...attrPath]: string[] = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRendererByDataType = (dataType: DataTypes) => {\n switch (dataType) {\n case DataTypes.TYPE_BLOB: {\n return BlobRender;\n }\n case DataTypes.TYPE_IMAGE: {\n return ImageRenderer;\n }\n case DataTypes.TYPE_REFERENCE: {\n return ReferenceRenderer;\n }\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getCellValueRenderer = (columnData: MatchesColumnsData) => {\n switch (columnData.id) {\n case 'profile': {\n return EntityProfileRenderer;\n }\n case 'matchRules': {\n return MatchRulesRenderer;\n }\n case 'sources': {\n return SourcesRenderer;\n }\n default:\n return getCellValueRendererByDataType(columnData.dataTypeDefinition.type);\n }\n};\n\nconst getBasicTableColumnsData = (sortable: boolean, columnData: MatchesColumnsData[]) =>\n pipe(\n filter(({modes}) => (modes ? modes.includes(ComparisonViewMode.TABLE) : true)),\n map((columnData: MatchesColumnsData) => ({\n sortable,\n ...columnData,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: columnData.id === 'profile' ? ProfileHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData)\n }))\n )(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/attributesHelpers';\nimport {MatchesTableContextProps, RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({selected}: MatchesTableContextProps, {columnData, rowValue, cell}: Props) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden',\n background: theme.palette.background.paper\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n }\n}));\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {either, evolve, move} from 'ramda';\nimport {\n BasicTable,\n defaultGetRowCellHeight,\n RowCellAutoSizer,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Entity,\n Metadata,\n Match,\n EntitiesMap,\n getActionPermissionForMatch,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {MatchesColumnsData, RowCellRendererProps, MatchesTableContextProps} from '../../types/potentialMatchesTypes';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useStyles} from './styles';\nimport MatchControls from '../MatchControls/MatchControls';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\ntype Sorting = {\n field: string;\n order: 'asc' | 'desc';\n};\n\ntype Filter = {\n filter: string;\n value: unknown[];\n};\n\ntype Props = {\n entity?: Entity;\n matches: Match[];\n metadata: Metadata;\n columnsData: MatchesColumnsData[];\n config: PotentialMatchesPerspectiveConfig;\n filters?: Record<string, Filter>;\n onFilter?: (value: {columnId: string; filter: Filter}) => void;\n sorting?: Sorting;\n onSort?: (column: string) => void;\n selected: Match[];\n onToggleSelect: (match: Match) => void;\n onResetSelect: () => void;\n onSelectAll: () => void;\n isComparisonViewShown: boolean;\n entitiesMap?: EntitiesMap;\n basicTableRef?: React.Ref<HTMLElement>;\n};\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n config,\n filters,\n onFilter,\n sorting,\n onSort,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n entitiesMap,\n basicTableRef,\n isComparisonViewShown\n}: Props) => {\n const styles = useStyles();\n const [orderedMatches, setOrderedMatches] = useState(matches);\n useEffect(() => {\n setOrderedMatches(matches);\n }, [matches]);\n const onDndRowReorder = useCallback((oldPosition: number, newPosition: number) => {\n setOrderedMatches(move(oldPosition, newPosition));\n setHoverRowIndex(newPosition);\n }, []);\n\n const tableRowsData = useMemo(() => getBasicTableRowsData(metadata, columnsData, orderedMatches, entitiesMap), [\n orderedMatches,\n columnsData,\n metadata,\n entitiesMap\n ]);\n\n const sortable = !!onSort;\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(sortable, columnsData), [columnsData, sortable]);\n\n const entityRowData = useMemo(\n () => (entity ? getBasicTableRowsData(metadata, columnsData, [{object: entity}]) : []),\n [entity, metadata, columnsData]\n );\n\n const {getRowHeight, CellRenderer: EntityCellRenderer} = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT\n });\n\n const entityRowHeight = getRowHeight(0);\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(EntityCellRenderer);\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [tableColumnsData, EntityCellRenderer]);\n\n const tableContext: MatchesTableContextProps = useMemo(\n () => ({\n isAllSelected: selected.length > 0 && selected.length === matches.length,\n entityToMatch: entity,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n isComparisonViewShown\n }),\n [entity, selected, onToggleSelect, onResetSelect, onSelectAll, matches, isComparisonViewShown]\n );\n\n const {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache} = useDynamicRowCellHeight();\n\n useLayoutEffect(clearHeightsCache, [matches]);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n const onRowHover = useCallback(\n (rowIndex: number) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const hoveredRowRightContent = useMemo(() => {\n if (hoverRowIndex === null) {\n return null;\n }\n\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n if (!hoveredMatch) {\n return null;\n }\n\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n <MatchControls\n value={{\n mainEntity: entity,\n entity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n permission\n }}\n openAddRelationDialog={openAddRelationDialog}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n classes={{\n actionButton: styles.actionButton,\n moreOptions: styles.actionButton\n }}\n />\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n entity,\n config,\n metadata,\n onActionsMenuOpen,\n onActionsMenuClose,\n openAddRelationDialog\n ]);\n\n const renderRowCell = useCallback(\n (props: RowCellRendererProps) => {\n switch (props.columnData.id) {\n case 'profile':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n },\n [changeRowCellHeight, hoverRowIndex, hoveredRowRightContent, basicTableRef]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer\n }),\n [styles]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndRowReorderingHandler={onDndRowReorder}\n ref={basicTableRef}\n hoveredContentPosition={0}\n />\n {showDialog && <AddRelationDialogRenderer />}\n </div>\n );\n};\n\nexport default MatchesTable;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {IdContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue = (EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element) => (\n HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element\n) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <HeadCellRenderer {...props} />\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n};\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useEffect, useMemo, useState, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport {equals, propEq, identity, has} from 'ramda';\nimport {\n Entity,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {useSavedStateForEntityType, DragAndDrop, useCollaboration, CollaborationContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {TableHeader} from '../TableHeader/TableHeader';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnData';\nimport ComparisonView from '../ComparisonView';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_ROWS} from '../../constants/defaultRows';\nimport {useFirstPotentialMatches} from '../../hooks/useFirstPotentialMatches';\nimport {useSpinnerAndReloadData} from '../Actions/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const MatchReviewTable = ({config, getSavedState, saveState}: Props) => {\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {tableViewModeAvailable} = config;\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n const {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n\n const collaboration = useCollaboration({objectIds});\n\n const styles = useStyles();\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_ROWS,\n metadata,\n entityTypeUri: entity.type\n });\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>(defaultColumns);\n const [showNonOv, setShowNonOv] = useState(false);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n setSelectedItems,\n config,\n selectedColumns: visibleColumns,\n setSelectedColumns: setVisibleColumns,\n entitiesMap,\n columnsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n onSelectAll: () => {},\n onToggleSelect: toggleSelect,\n onResetSelect: () => {},\n selected: [],\n isComparisonViewShown: false\n };\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n lastSavedState.current = savedState;\n if (savedState?.visibleColumns) {\n setVisibleColumns(addFixedAttributes(savedState.visibleColumns));\n }\n if (savedState?.comparisonViewMode) {\n setComparisonViewMode(tableViewModeAvailable ? savedState.comparisonViewMode : ComparisonViewMode.COLUMNS);\n }\n if (has('showNonOv', savedState)) {\n setShowNonOv(savedState.showNonOv);\n }\n }, [isLoaded]); // eslint-disable-line\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n const newSavedState = {comparisonViewMode, visibleColumns, showNonOv};\n if (!equals(newSavedState, lastSavedState.current)) {\n updateSavedState(newSavedState);\n lastSavedState.current = newSavedState;\n }\n }, [visibleColumns, comparisonViewMode, showNonOv]); // eslint-disable-line\n\n return (\n <>\n <TableHeader\n config={config}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={setVisibleColumns}\n showNonOv={showNonOv}\n onChangeShowNonOv={setShowNonOv}\n />\n <CollaborationContext.Provider value={collaboration}>\n {comparisonViewMode === ComparisonViewMode.COLUMNS ? (\n <DragAndDrop>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n {isLoaded && (\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n )}\n </ColumnHandlerContext.Provider>\n </DragAndDrop>\n ) : (\n isLoaded && <MatchesTable {...matchesTableProps} />\n )}\n </CollaborationContext.Provider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useEffect, useMemo} from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatches} from './useMatches';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems} = useViewStateActions();\n\n const entityUri = prop('uri', entity);\n const dataTenant = prop('dataTenant', entity);\n const initialRequestParam = useMemo(\n () => ({\n enabled: !!entityUri,\n entity,\n filter: '',\n page: 0,\n sorting: {\n field: 'score',\n order: 'desc'\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatches(initialRequestParam);\n\n useEffect(() => {\n setSelectedItems(matches);\n }, [matches, setSelectedItems]);\n};\n","import {getEntityTypeMatchAttributes, Metadata} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {\n getColumnsData,\n getSortOptionIdFromData,\n getMatchAttrColumns,\n groupColumnsDataByMatchAttributes\n} from '../helpers/attributesHelpers';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype MatchesColumnsDataProps = {\n defaultColumnsData: MatchesColumnsData[];\n additionalColumnsData?: MatchesColumnsData[];\n metadata: Metadata;\n entityTypeUri: string;\n};\n\nexport const useMatchesColumnsData = ({\n defaultColumnsData,\n additionalColumnsData,\n metadata,\n entityTypeUri\n}: MatchesColumnsDataProps): [MatchesColumnsData[], GroupedColumnData[], string[]] => {\n return useMemo(() => {\n const attrColumnsData = getColumnsData(metadata, entityTypeUri);\n const allColumnsData: MatchesColumnsData[] = defaultColumnsData\n .concat(additionalColumnsData || [])\n .concat(attrColumnsData);\n const matchAttributes: string[] = getEntityTypeMatchAttributes(metadata, entityTypeUri);\n const groupedColumnsData: GroupedColumnData[] = groupColumnsDataByMatchAttributes(\n matchAttributes,\n allColumnsData\n );\n const defaultColumns: string[] = pipe(\n getMatchAttrColumns,\n concat(defaultColumnsData),\n getSortOptionIdFromData\n )(matchAttributes, attrColumnsData);\n return [allColumnsData, groupedColumnsData, defaultColumns];\n }, [defaultColumnsData, additionalColumnsData, metadata, entityTypeUri]);\n};\n","import {concat, filter, map, pipe, prop, propEq, uniq} from 'ramda';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\n\nconst addFixedAttributes = (visibleAttributes: string[] = []): string[] => {\n const getFixedAttributesIds = pipe(filter(propEq('hideable', false)), map(prop('id')));\n const getUnique = pipe(concat, uniq);\n\n const fixedAttributesIds = getFixedAttributesIds(DEFAULT_ROWS);\n return getUnique(fixedAttributesIds, visibleAttributes);\n};\n\nexport {addFixedAttributes};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n potentialMatchesWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n },\n potentialMatchesContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\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: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.25 3H3.75c-.825 0-1.5.675-1.5 1.5v9c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5v-9c0-.825-.675-1.5-1.5-1.5zm-9 10.5h-1.5v-6h1.5v6zM3.75 6h1.5V4.5h-1.5V6zm6 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6zm7.5 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6z\",\n fill: \"#000\",\n fillOpacity: \".541\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n flexBox: {\n display: 'flex',\n alignItems: 'center'\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 4px'\n }\n});\n","import {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport React, {useCallback} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport TableIcon from './TableIcon.svg';\nimport {useStyles} from './styles';\n\nexport const ChangeModeConfirmation = () => {\n const {selectedItems, comparisonViewMode, limitSelection} = useViewState();\n const {setComparisonViewMode, deleteExtraMatches} = useViewStateActions();\n const styles = useStyles();\n const onSave = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.TABLE);\n }, [setComparisonViewMode]);\n const open = comparisonViewMode === ComparisonViewMode.COLUMNS && selectedItems.length > limitSelection;\n const title = i18n.text('Switch to table view');\n const content = (\n <div className={styles.flexBox}>\n {i18n.text('Please switch to')}\n <div className={styles.icon}>\n <TableIcon />\n </div>\n {i18n.text('Table View to compare more than ${max} profiles', {max: MAX_PROFILES_TO_COMPARE})}\n </div>\n );\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n onSave={onSave}\n onDiscard={deleteExtraMatches}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {useSnackbar, SnackbarContext} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {PotentialMatchesProfileBand} from './PotentialMatchesProfileBand/PotentialMatchesProfileBand';\nimport {RightSidePanel} from './components/RightSidePanel/RightSidePanel';\nimport {MatchReviewTable} from './components/MatchReviewTable/MatchReviewTable';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\nimport {ReloadDataProvider} from './contexts/ReloadDataContext';\nimport {PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const NewPMView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n const {tableViewModeAvailable} = config;\n return (\n <ViewStateProvider tableViewModeAvailable={tableViewModeAvailable}>\n <ReloadDataProvider>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <div className={styles.perspectiveView}>\n {entity?.uri && (\n <div className={styles.potentialMatchesContainer}>\n <div className={styles.potentialMatchesWrapper}>\n <PotentialMatchesProfileBand />\n <MatchReviewTable\n config={config}\n getSavedState={getSavedState}\n saveState={saveState}\n />\n </div>\n <RightSidePanel config={config} />\n <SnackbarRenderer />\n {tableViewModeAvailable && <ChangeModeConfirmation />}\n </div>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import MomentUtils from '@date-io/moment';\nimport PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {identity} from 'ramda';\nimport {PotentialMatchesConfigType, promisifyCallback, debounce} from '@reltio/mdm-sdk';\nimport {default as PMView} from './PotentialMatchesView';\nimport {NewPMView} from './NewPMView/NewPMVew';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'potentialMathcesView',\n disableGlobal: true\n});\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 3000;\n\nconst PotentialMatchesView = ({config, store, onResize = identity, saveState, getSavedState}) => {\n const getSavedStatePromisified = useCallback(promisifyCallback(getSavedState), [getSavedState]);\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config &&\n (config.newView !== false ? (\n <NewPMView\n config={config}\n saveState={debouncedSaveState}\n getSavedState={getSavedStatePromisified}\n />\n ) : (\n <PMView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n ))}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nPotentialMatchesView.propTypes = {\n config: PotentialMatchesConfigType,\n store: PropTypes.object,\n onResize: PropTypes.func,\n saveState: PropTypes.func,\n getSavedState: PropTypes.func\n};\n\nexport default PotentialMatchesView;\n","import {PotentialMatchesView} from '@reltio/potential-matches';\n\nexport default PotentialMatchesView;\n"],"names":["useStyles","makeStyles","icon","maxHeight","maxWidth","marginRight","group","metadata","styles","absoluteImagePath","useSelector","mdm","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","className","avatarText","title","AvatarStates","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","attribute","cursor","lineHeight","flexBasis","display","alignItems","padding","width","borderBottom","disabled","attributeWithValue","noSelect","name","fontSize","color","overflow","whiteSpace","textOverflow","direction","textAlign","flex","defaultGetLabel","either","prop","value","getLabel","onSelectAttributeClick","label","onClick","undefined","ExpandedValueTooltip","i18n","SmallIconButton","size","ArrowDropDown","isEqualAttributes","eqBy","pick","checkAttributeIncludes","selectedAttributes","find","filterItem","item","filterText","toLowerCase","includes","filterItemsTree","children","some","getAttributeIndex","findIndex","getContainerWidth","getMaxItemWidth","getAttributeGroupData","groupId","groupName","level","noFilter","isItemFiltered","concat","filter","subItem","flatMap","flat","prepareGroupsForSelectAttributeList","curry","groups","map","items","attributes","length","subHeader","backgroundColor","margin","fontWeight","memo","onItemClick","focusIndex","hideCheckBox","mdmModule","VirtualGroupedList","getItemSize","i","renderItem","style","index","checked","isFocused","AttributeListItem","key","fieldName","data","notSelectable","Highlighter","text","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","component","needGroupIcon","AttributeGroupIcon","selector","minWidth","background","boxSizing","borderRadius","itemsGroups","onSelect","onRestoreFocus","identity","onOpenPopup","disableRestoreFocus","disableEnforceFocus","single","ungroup","selectAnchor","setSelectAnchor","closePopup","useCallback","isPopupOpen","setFilterText","clearFilterText","setSelectedAttributes","clearSelectedAttributes","filteredItemsGroups","useMemo","pipe","when","always","chain","flatten","flattenGroupedItemsData","containerWidth","Math","max","handleOnClose","tap","searchInputRef","useRef","onListItemClick","selectedAttribute","filterSelectedAttributes","current","focus","handleSearchOnEnter","groupData","getOnEnterHandler","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","onClose","event","currentTarget","SelectionPopup","anchorEl","onSearch","containerHeight","searchInputOnKeyDown","anchorOrigin","horizontal","vertical","height","getRowCellKey","rowIndex","columnData","cellIndex","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","flushHeightUpdates","debounce","clearHeightsCache","getDynamicRowCellHeight","__","changeRowCellHeight","useWith","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","RowCellAutoSizer","onChangeHeight","cell","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","handleHeight","onResize","RootRef","rootRef","row","marginBottom","rowItem","paddingRight","fullWidth","flexGrow","theme","readOnlyLogicOperatorContainer","palette","secondary","readOnlyFilter","marginLeft","ReadOnlyLogicOperator","rowData","operator","capitalize","ReadOnlyFilter","getFilterOptionLabel","QueryBuilderRow","classes","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ValuesEditorComponent","ActionsComponent","filterSelectorRef","attributeSelectorProps","rowContext","root","logicOperatorContainer","attributeSelectorContainer","filterSelectorContainer","textFieldInputRef","valuesEditorContainer","actionsContainer","QueryBuilderAttributeType","onOpen","disablePopoverRestoreFocus","QueryBuilderRowsGroup","rowClasses","rowsData","lastRowAttributeSelectorProps","filterSelectorRefIndex","rowProps","renderRow","previousRow","path","lastRowProps","sourceType","uri","findSourceSystemByUri","getSourceSystemLabel","variant","renderAttributesList","values","valueContainerClassName","props","attributeValue","expanded","LabelRenderer","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","CrosswalksDisplayContext","createContext","CrosswalksDisplayProvider","Provider","useCrosswalkColor","crosswalk","getCrosswalkColor","getColor","getCrosswalkId","useHighlightedCrosswalks","highlightedCrosswalks","useCrosswalkHighlight","setCrosswalkHighlighted","noop","isHighlighted","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkFocus","toggleCrosswalkFocus","focusedCrosswalks","Views","FIND_MATCHES","POTENTIAL_MATCHES","NOT_A_MATCH","ComparisonViewMode","DataContext","reloadData","setReloadHandler","contextValue","dataHandler","reloadHandler","createContextValue","ReloadDataProvider","useReloadData","dataContext","Error","ViewStateContext","ViewDispatchContext","UPDATE_COMPARISON_VIEW_MODE","SET_GLOBAL_SPINNER","actions","setComparisonViewMode","createStandardAction","setGlobalSpinner","viewStateReducer","action","comparisonViewMode","payload","isGlobalSpinnerActive","ViewStateProvider","dispatch","useReducer","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","ColumnHandlerContext","React","displayName","createEntityTypeFilter","buildMDMFilters","entityType","filters","columnsData","currentTypeClause","Maybe","orSome","Object","entries","columnId","columnFilter","propEq","columnFilterToMdmFilter","getColumnsDataFromEntityAttributes","attr","attributeUriToSearchUri","dataTypeDefinition","getAttrDataTypeDefinition","getColumnsData","getEntityAttributesFromMetadata","getColumnsIdFromData","pluck","isMatchAttrColumn","matchAttributes","column","isReferenceAttrColumn","isSubAttrIdForColumn","isNestedAttrColumn","isNested","isReference","parentColumn","startsWith","isNestedForOneOfColumns","columns","isRelatedToColumns","getMatchAttrColumns","reject","useMatchesColumnsData","defaultColumnsData","additionalColumnsData","attrColumnsData","allColumnsData","getEntityTypeMatchAttributes","groupedColumnsData","matchAttrColumns","otherColumns","partition","groupColumnsDataByMatchAttributes","RESET","SET_SELECTED_ITEMS","TOGGLE_SELECT","SET_OPTIONS","SET_LIMIT_SELECTION","basicTableViewState","reset","toggleSelect","setSelectedItems","setOptions","setLimitSelection","reducer","options","evolve","selected","itemIndex","selectedItem","remove","limitSelection","both","complement","isNil","propSatisfies","gte","take","append","useMatchesTable","defaultColumns","defaultSort","defaultRowsPerPage","defaultOptions","field","order","initState","visibleColumns","sorting","page","rowsPerPage","stateReducer","showAddRelationErrors","error","console","ErrorPopup","message","showDCRReviewErrors","errorCode","ApiErrorCode","showApiError","errorMessage","useSpinnerAndReloadData","onStartRequest","onFinishRequest","MergeButton","forwardRef","ref","entities","entity","mode","onMenuClose","EntityType","_extends","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","viewBox","version","xmlns","xmlnsXlink","d","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","DCRReviewButton","operationIsInProgress","startPMReview","selectors","workflowPath","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","catch","finally","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","ActionButton","DcrReviewIcon","CreateRelationButton","mainEntity","currentEntity","matchRules","AddRelationIcon","NotMatchButton","iconButton","primary","main","comparisonButtonSelected","darken","hoverOpacity","comparisonButton","CompareModeButton","selectedMatchesCount","isComparisonViewHidden","isDisabled","tooltip","maxProfilesToCompare","tooltipTitle","ComparisonViewIcon","showForDisabled","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","SetAsMatchIcon","SetAMatchButton","markingIsInProgress","setAMatch","_tenant","setAsMatch","useSetAMatch","container","mergeButton","flexShrink","rightButton","moreOptions","MatchControlsCellType","show","config","permission","canMerge","canAddRelation","canMark","FindMatchesViewControls","ExpandedContext","complexAttributesHeadRenderer","complexAttributesHeadLabel","matchedAttribute","ExpandableAttributeValuesBlock","Component","WithExpanded","componentProps","expandedMap","withExpanded","ReadOnlyAttributeValuesBlock","AttributesRenderer","matched","ComplexAttributesHeadRenderer","onExpandType","onExpandClick","CollapseIcon","ExpandIcon","AttributeTypeType","position","closeButton","zIndex","profileCard_container","profileCard_label","lineClamp","boxOrient","profileCard_secondaryLabel","EntityCard","showCloseButton","CloseIcon","ProfileCard","secondaryLabel","paddingTop","isPotentialMatchesTask","task","minHeight","assigneeSelector","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","match","tasks","loadTasks","safePromise","useSafePromise","entityUri","matchUri","getEntityUriFromMatchObject","requestIsInProgress","setRequestIsInProgress","setTasks","getTasksForEntity","then","result","hasMatchEntityUri","isTaskBelongsToMatch","allPass","_","enabled","loading","useWorkflowTasks","isPending","isMergeInProgress","sendMergeAllRequest","merge","useMergeAllRequest","object","isMarkAsInProgress","sendMarkAsNotMatchRequest","notMatch","useMarkAsNotMatchRequest","mapping","Merge","NotAMatch","possibleActions","assignee","getAssignees","updateAssignee","updateRequestIsInProgress","useWorkflowAssignee","Actions","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","menuItems","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","DropDownSelector","getOptions","onChange","hideSelectedOptions","WorkflowComments","PotentialMatchType","WorkflowCardRenderer","DEFAULT_ROWS","cellRenderer","entitiesMap","MatchRulesBlock","getAttrTypeUriByName","entityTypeUri","getAttrTypeNameByUri","split","last","borderStyle","thickBorderStyle","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","borderTop","borderLeft","left","top","ComparisonTable","matches","controlsRenderer","attributeTypeUris","keys","getEntityAttributesTypeUris","attributesRows","attrTypeUri","findAttributeTypeByUri","collectionName","getAttributeSource","headCellRenderer","isComplexAttribute","assoc","getDefaultRows","getTableRowsData","onRemoveItem","isMainEntity","reduce","getEntityId","getActionPermissionForMatch","isAttributeSearchUri","attrSource","pathOr","isOv","getAttributeValues","getAttributesForMatchRules","getColumnDataForRowData","getTableColumnsData","setExpandedMap","expandedContextValue","VerticalHeadingsTable","theadRowsNumber","MetadataType","PotentialMatchesConfigType","FullscreenButton","isFullscreen","FullscreenExitIcon","FullscreenIcon","CloseButton","_theme","header","flex1","flexDirection","ComparisonViewHeader","selectedColumns","onChangeColumns","closeHandler","fullScreenHandler","BasicViewHeader","Typography","ColumnsSettings","ColumnsDataType","getFirstLevelParentAttribute","slice","join","replaceSubAttributesWithParent","uniq","getSubAttributesColumnsByColumnId","columnIds","push","addSubAttributesColumns","firstLevelParentColumnId","subAttributesColumns","acc","findSubAttributesInColumnsData","isSubAttributeColumn","lt","removeSubAttributesColumns","table","ComparisonView","selectedColumnsWithoutSubAttributes","searchUri","searchUriToAttrUri","defaultProps","FullScreenView","fullScreenContainer","Portal","Element","defaultWrapperStyles","paddingBottom","content","right","pointerEvents","getColoredRowCellStyle","hoveredColor","fade","lightPrimaryBackground","lighten","lightPrimaryBackgroundHovered","highlightBackground","entityBackground","link","textDecoration","rowCheckbox","headCheckbox","headCell","headCellWithEntity","rowCell","rowCellFirstColumn","firstEntityCell","entityRowCell","entityRowCellSelected","rowCellHighlighted","rowCellSelected","defaultWrapper","hoveredDefaultWrapper","entityWrapper","paddingLeft","profileWrapper","entityLabel","commentsContainer","matchRulesWrapper","blobWrapper","overflowY","overflowX","imageWrapper","referenceWrapper","entityAvatar","transform","collapseButton","dragIcon","opacity","withFilterAtBottom","DefaultHeadCellRenderer","DefaultCellValueRenderer","DataTypeValue","EntityProfileRenderer","onToggleSelect","entityToMatch","isRowSelected","hoverRowIndex","containerId","IdContext","isRowSelectable","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","Checkbox","EntityUriLink","getEntityUriForLink","CommentsContainer","createObjectIdForPM","objectType","CollaborationObjectTypes","relatedObjectUris","createRelatedObjectUris","matchEntityUri","allowOnlyOneComment","withTableContext","ProfileHeadCellRenderer","isAllSelected","isSomeSelected","onCheckboxClick","isComparisonViewShown","indeterminate","onResetSelect","onSelectAll","MatchRulesRenderer","transitiveMatchRules","SimpleMatchRulesBlock","TransitiveMatchBlock","MatchIQRenderer","mlMatchRules","isMlMatch","BlobRenderer","onScroll","ImageRenderer","getImageAttributeOvThumbnailUrl","ReferenceRenderer","EntityTypeIcon","getEntityType","getReferencedEntityFromAttrValue","objectURI","getAttrPathFromColumnId","getBasicTableRowsData","getTransitiveMatchesForEntity","allMatchRules","matchScore","isEmpty","getMatchRules","partitionByMlMatch","attrPath","getOvAttributeValuesByPath","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","dataType","BlobRender","getCellValueRendererByDataType","RowCellRenderer","CellValueRenderer","isCellHighlighted","columnIndex","isFirstColumn","every","tableContainer","rowActionButtonsWrapper","rowActionButtons","actionButton","hoveredRowRightContentContainer","MatchesTable","onFilter","onSort","actionButtonsRenderer","basicTableRef","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","HeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","getRowHeight","CellRenderer","EntityCellRenderer","useBasicTableCellRenderer","maxRowValuesCount","entityRowHeight","enhancedColumnsData","withEntityCell","HeadCellWithEntityValue","headCellData","withEntityCellValue","tableContext","useDynamicRowCellHeight","useLayoutEffect","openActionsMenu","setOpenActionsMenu","onActionsMenuOpen","onActionsMenuClose","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","hoveredRowRightContent","hoveredMatch","isChecked","buttonClassName","onChangePopupVisibility","showAlways","renderRowCell","actionsContent","tableRef","getRowCellHeight","defaultGetRowCellHeight","tableClasses","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndRowReorderingHandler","hoveredContentPosition","ColumnFilterType","SortingType","buttonRoot","active","paper","menuItem","menuText","letterSpacing","checkIcon","OptionsMenu","optionsData","onChangeOptions","buttonRef","setIsOpen","toggleOpen","Menu","autoFocus","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","optionItem","isOptionEnabled","MenuItem","Check","totalCaption","totalNumber","MatchesTableHeader","total","filtersEnabled","onToggleFilters","showFilters","showOptions","Spacer","FilterButton","VerticalDivider","TableHeaderSelectionMode","hasSelectedItems","count","button","getEntityObjects","FindMatchesViewActions","getActionPermissionForMatches","DEFAULT_COLUMNS_DATA","hideable","initialWidth","autoResize","OPTIONS_DATA","tableView","matchesView","mainArea","comparisonView","fullScreen","useLimitSelection","ROWS_PER_PAGE_OPTIONS","DEFAULT_ROWS_PER_PAGE","DEFAULT_COLUMNS","DEFAULT_SORT_FIELD","DEFAULT_OPTIONS","showInactiveEntities","FindMatchesView","changeRowsPerPage","changePage","changeColumns","toggleFilters","changeFilter","toggleSort","visibleColumnsData","requestFilters","columnsToSelect","findEntities","select","setTotal","setEntities","DEFAULT_SELECTION","activityFilter","ActivityFilters","Promise","all","getFilteredEntities","offset","sort","getTotals","results","totalResponse","useFindEntities","resetSelected","selectAll","isFullscreenMode","comparisonViewProps","BasicTablePagination","rowsPerPageOptions","onChangePage","onChangeRowsPerPage","LinearLoadIndicator","dialogPaper","dialogTitle","titleText","fontize","attributeList","AddRelationDialog","useDispatch","relation","inRelations","inRelationTypes","outRelations","outRelationTypes","isNotDuplicatedInRelation","isNotDuplicatedOutRelation","inOutRelationsDeduplicator","setObjectTypes","assocPath","startObject","objectTypeURI","endObject","matchActionConfig","propOr","rulesConfig","getRulesConfig","relationTypeUris","createRelation","canCreateRelationBetweenEntities","getRelationType","getRelationTypesFromConfig","relationUri","relationType","relationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","viewId","onRelationTypeChange","profile","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","onCancel","Dialog","DialogTitle","disableTypography","DialogContent","ConnectionRelationTypeSelector","applyFirstByDefault","AttributesList","attrTypes","showEmptyEditors","ModeTypes","parentUri","DialogActions","Button","startDate","endDate","startEntityUri","endEntityUri","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","MenuItemRenderer","ActionsPanel","numberOfButtons","buttonActions","menuActions","splitAt","buttonMode","buttonSize","SmallIconButtonWithTooltip","onMenuOpen","MatchesViewControls","hasDTEntity","MatchesViewActions","ADDITIONAL_COLUMNS_DATA","showTransitiveMatches","MatchesView","loadMatches","onStartLoading","onFinishLoading","useMatchesLoader","useMatches","objectIds","getPotentialMatchesObjectIdsForCollaboration","collaboration","useCollaboration","CollaborationContext","EntitiesMapContext","NotMatchViewControls","NotMatchViewActions","NotMatchView","loadNotMatches","setMatches","setEntitiesMap","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","loadNotMatchesIfNeeded","force","activeness","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","users","useUsers","UsersContext","DragAndDrop","PMTabs","availableTabs","activeTab","labels","Tabs","indicatorColor","textColor","scrollButtons","Tab","basicView","fontFamily","bottom","PotentialMatchesView","getSavedState","saveState","setActiveTab","setFullScreenContainer","BasicView","tab","connect","comments","justifyContent","marginTop","PotentialMatchesProfileBand","ProfileBand","COMMENTS_CONTAINER_VISIBILITY_AREA","Box","mr","ProfileBandNavigation","clipRule","ActivePanel","createAttributeItemConfig","attrNode","parents","createAttributeItemBasicConfig","childNode","attrType","omit","collectAttributeItems","getAllAttributeTypesTree","getSortOptionIdFromData","attrUri","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","deleteExtraMatches","tableViewModeAvailable","newMode","useMatchesReducer","resultActions","viewActions","viewState","getFilteredSelectedItems","ActionButtonMode","onSuccess","showSnackbarMessage","SnackbarContext","RightSideHeaderContext","attributeSelect","sortField","sortLevel","findNode","parentFieldName","option","node","handleChange","val","BasicAttributeSelector","border","arrow","transition","rotate","inputRoot","currentSearchText","setCurrentSearchText","handleSearch","trim","handleChangeSearchText","newSearchText","document","activeElement","SearchInput","inputRef","autofocus","onKeyPress","selectedCount","totalCount","onTextSearch","sortOptions","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","IconButton","classNames","DEFAULT_SORT_OPTIONS","useSortOptions","additionalOptions","getSortingItemsGroups","col","actionButtons","wrapper","selectedRow","openMenu","setOpenMenu","MatchRuleVariant","view","MatchItems","DEFAULT_SORT_FIELDS","searchText","setSearchText","globalFilter","filterQuery","buildFilterQueryString","pathEq","rules","markMatchedValues","containerRef","boundariesElement","popupBoundariesValue","element","priority","PopupBoundariesContext","ADDITIONAL_SORT_OPTIONS_DATA","isMatchRuleFilter","any","equals","MatchRulesAttrTypes","buildRulesStringFormFilters","actionButtonSize","hasWorkflow","matchRulesFilters","regularFilters","DEFAULT_SORT_OPTIONS_ID","markAsNotMatch","record","NOT_MATCH","addGlobalFilterToQuery","PotentialMatches","FindMatches","render","input","potentialMatchesComponents","FilterSelector","isMatchRuleAttrType","FilterOptions","ValuesEditor","changeValue","newValues","TextFieldProps","InputProps","MatchRulesSelector","RightSidePanel","matchesFilters","setMatchesFilters","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","setActive","toggleActive","newId","resetActive","attributeTypes","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","potentialMatchesAttributeTypes","findMatchesAttributeTypes","EntityAttrTypes","elements","PotentialMatchesIcon","headerProps","mainTitle","rightContent","AttributesFiltersButton","components","FindMatchesIcon","NotAMatchIcon","SidePanel","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","MODES","Icon","ViewColumnRoundedIcon","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","splitter","actionSplitter","SettingsMenu","SettingsIcon","TableHeader","showNonOv","onChangeShowNonOv","handleToggleShowOvValue","not","settingItems","selectable","Divider","orientation","arrowButton","matchedValuesUris","highlightedValuesContextValue","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","ColumnDataContext","menuButtonWrapper","setAnchor","setHoveredId","hoveredId","ArrowExpandButton","HoveredEntityContext","hoveredEntity","resetHoveredEntity","hovered","matchControlsContainer","WorkflowTasksAvailabilityContext","setWorkflowTaskAvailability","itemContainer","showTooltip","SourceIcon","Tooltip","crosswalkIcon","labelContainer","spacer","flexWrap","additionalPropsForDefaultRows","showButtons","rest","isHovered","controlProps","MatchControls","workflowCard","sources","SourcesRenderer","entityId","crosswalks","nestedAttributeValue","subAttributeType","CrosswalksAttrTypes","getFakeAttributeValueForCrosswalk","defaultRows","getMatchedValuesUris","matchedValues","cond","Action","TEXT","INSERT_BELOW","INSERT_ABOVE","HIDE","Popover","List","handler","ListItemText","primaryTypographyProps","renderListItem","getClickHandler","deepFilter","nodes","groupColumnsData","groupedItems","headColumns","elemId","getAdditionalRows","setAction","isOpenConfigPopup","setIsOpenConfigPopup","closeAddRowPopup","newAttributes","indexOf","splice","ColumnsSettingsPopup","onColumnClick","newIndex","firstColumnColor","comparisonTableWrapper","collapsedRow","emptyState","setSelectedColumns","setHoveredEntity","anchor","defaultRow","showNonOnly","isDraggable","onClosePopup","selectedAttributeUris","hoveredEntityContextValue","isThereAnyTask","workflowTasksAvailabilityMap","setWorkflowTasksAvailabilityMap","useWorkflowTasksAvailability","workflowCardRowClassname","displayedRowsData","rowClassName","onMoveRow","dragId","hoverId","newArr","groupBy","getFirstLevelSearchUri","toPairs","dragIndex","hoverIndex","dragRow","insert","nth","onMoveColumn","dragColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","secondaryText","rowCloseIcon","backgroundImage","firstHeadCell","onRemove","isRowRemovable","headIndex","filteredColumnsData","MatchReviewTable","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","lastSavedState","dataTenant","initialRequestParam","useFirstPotentialMatches","setVisibleColumns","setShowNonOv","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","newSavedState","perspectiveView","default","potentialMatchesWrapper","potentialMatchesContainer","flexBox","ChangeModeConfirmation","onSave","TableIcon","ConfirmationDialog","onDiscard","saveCaption","discardCaption","NewPMView","SnackbarRenderer","useSnackbar","S","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","debouncedSaveState","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","floor","newView"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"8208.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/AttributeGroupIcon.tsx","webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/SelectAttributesList.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/BasicAttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/CollapseRowButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/QueryBuilderRow.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/contexts/CrosswalksDisplayContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/views.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnHandlerContext/index.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/filtersHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFindEntities.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesColumnsData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesTable.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/MergeButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/DCRReviewButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useRequestDCRReview.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CreateRelationButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/NotMatchButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/comparisonViewIcon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CompareModeButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/ReinstateMatchButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useReinstateMatch.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSetAMatch.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/SetAMatchButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/constants/prop-types.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/FindMatchesViewControls.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ExpandedContext.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/withExpanded.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/icons/collapseComplex.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/icons/expandComplex.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/workflow.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasks.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/WorkflowCard.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ComparisonTable.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/FullscreenButton/FullscreenButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/CloseButton/CloseButton.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewHeader/ComparisonViewHeader.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/helpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/ComparisonView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FullScreenView/FullScreenView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchRulesRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchIQRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/BlobRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ImageRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ReferenceRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/MatchesTable.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/withEntityCellValue.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/OptionsMenu/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/OptionsMenu/OptionsMenu.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTableHeader/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTableHeader/MatchesTableHeader.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeaderSelectionMode/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeaderSelectionMode/TableHeaderSelectionMode.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/FindMatchesViewActions.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useLimitSelection.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/FindMatchesView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/AddRelationDialog.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useAddRelationDialog.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/MenuItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ActionsPanel/ActionsPanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/MatchesViewControls.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/MatchesViewActions.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/MatchesView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatches.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useNotMatches.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchControls/NotMatchViewControls.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ViewActions/NotMatchViewActions.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/helpers/tableHelpers.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/NotMatchView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Content/Content.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/PMTabs/PMTabs.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/styles.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/PotentialMatchesView.js","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/index.js","webpack://@reltio/remotes/../potential-matches/src/NewPMView/PotentialMatchesProfileBand/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/PotentialMatchesProfileBand/PotentialMatchesProfileBand.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/icons/potential-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/icons/find-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/icons/not-a-match-icon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/helpers/stateReducer.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useMatchesReducer.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/MergeButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/NotMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/SetAMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useSetAMatch.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/DcrReviewButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useRequestDCRReview.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useReinstateMatch.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/ReinstateMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Actions/CreateRelationButton.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/RightSideHeaderContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/SortingFieldSelector/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/SortingFieldSelector/SortingFieldSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/BottomHeaderContent/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/BottomHeaderContent/BottomHeaderContent.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanelHeader/RightSidePanelHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/FindMatchesView/helpers/findMatchesViewHelper.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useSortOptions.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ItemRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ItemRenderer/ItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchItems/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchItems/MatchItems.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/FindMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/FindMatchesView/FindMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useFindEntities.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useMatches.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/AddRelationDialog/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/AddRelationDialog/AddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/helpers/relationsHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useAddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesView/helpers/matchesViewHelper.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ActionsPanel/MenuItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ActionsPanel/ActionsPanel.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/defaultOptions.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesView/MatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useNotMatches.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/NotMatchView/helpers/notMatchViewHelper.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/NotMatchView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/NotMatchView/NotMatchView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/Content/Content.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/ValuesEditor/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/FilterSelector/FilterSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/RightSidePanel/ValuesEditor/ValuesEditor.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonViewModeSwitcher/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonViewModeSwitcher/ComparisonViewModeSwitcher.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/TableHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/SettingsMenu/SettingsMenu.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/TableHeader/TableHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/ExpandedContext.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/withExpanded.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ColumnsDataContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/HeadCellRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/HeadCellRenderer/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/HoveredEntityContext.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchControls/MatchControls.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/EntityCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/workflow.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/WorkflowTasksAvailabilityContext.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/WorkflowCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/WorkflowCard/WorkflowCard.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/constants/defaultRows.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ColoredSourceIcon/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ColoredSourceIcon/ColoredSourceIcon.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/LabelRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/CrosswalksRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/cell-renderers/SourcesRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/cell-renderers/SourcesRenderer/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/helpers/tableHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/contexts/ColumnHandlerContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/AddRowPopups/ConfigRowPopup.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/AddRowPopups/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/AddRowPopups/AddRowPopups.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useWorkflowTasksAvailability.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonTable/ComparisonTable.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ComparisonView/ComparisonView.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/MatchRulesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/ImageRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/ReferenceRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/dataHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/MatchesTable.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchesTable/cell-renderers/withEntityCellValue.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchReviewTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchReviewTable/MatchReviewTable.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useFirstPotentialMatches.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/hooks/useMatchesColumnData.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/MatchReviewTable/helpers/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ChangeModeConfirmation/TableIcon.svg","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ChangeModeConfirmation/styles.ts","webpack://@reltio/remotes/../potential-matches/src/NewPMView/components/ChangeModeConfirmation/ChangeModeConfirmation.tsx","webpack://@reltio/remotes/../potential-matches/src/NewPMView/NewPMVew.tsx","webpack://@reltio/remotes/../potential-matches/src/index.js","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n icon: {\n maxHeight: '25px',\n maxWidth: '25px',\n marginRight: '16px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {getAbsoluteImageUrl, getEntityTypeGraphIcon, Metadata} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\nimport {useStyles} from './styles';\n\ntype Props = {\n group: {id: string; title: string};\n metadata: Metadata;\n};\n\nconst AttributeGroupIcon = ({group, metadata}: Props) => {\n const styles = useStyles();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const entityTypeGraphIcon = getEntityTypeGraphIcon(metadata, {type: group.id});\n const absoluteImageUrl = getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return <AvatarWithFallback className={styles.icon} icon={absoluteImageUrl} avatarText={group.title[0]} />;\n};\n\nexport default AttributeGroupIcon;\n","import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n attribute: {\n cursor: 'pointer',\n lineHeight: '16px',\n flexBasis: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px 0 16px',\n width: 'calc(100% - 32px)',\n '&$attributeWithValue': {\n borderBottom: '1px solid rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n cursor: 'default'\n }\n },\n disabled: {},\n attributeWithValue: {},\n noSelect: {},\n name: {\n fontSize: '14px',\n color: 'rgba(0,0,0,0.87)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n direction: 'rtl',\n textAlign: 'left',\n flex: '1 0',\n width: '0',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n color: 'rgba(0,0,0,0.26)',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.26)'\n }\n }\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {either, prop} from 'ramda';\nimport {ArrowDropDown} from '@material-ui/icons';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {AttributeSelectorItem} from '../../../types';\nimport useStyles from './styles';\n\ntype Value = {\n fieldName: string;\n title: string;\n};\ntype Props = {\n value: AttributeSelectorItem;\n disabled: boolean;\n getLabel: (value: Value) => string;\n onSelectAttributeClick: (event) => void;\n};\n\nconst defaultGetLabel = either(prop('title'), prop('fieldName'));\n\nconst AttributeTitle = ({value, getLabel = defaultGetLabel, onSelectAttributeClick, disabled = false}: Props) => {\n const styles = useStyles();\n const label = value && getLabel(value);\n return (\n <div\n onClick={disabled ? undefined : onSelectAttributeClick}\n className={classnames(\n styles.attribute,\n {\n [styles.attributeWithValue]: !!label\n },\n {[styles.disabled]: disabled}\n )}\n >\n <ExpandedValueTooltip value={label}>\n <div className={classnames(styles.name, {[styles.disabled]: disabled})}>\n {label || <span className={styles.noSelect}>{i18n.text('Select attribute')}</span>}\n </div>\n </ExpandedValueTooltip>\n <SmallIconButton size={'M'} icon={ArrowDropDown} disabled={disabled} />\n </div>\n );\n};\n\nexport default AttributeTitle;\n","import {eqBy, pick, curry} from 'ramda';\nimport {getMaxItemWidth} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItem, AttributeSelectorItemsGroup} from '../../types';\n\nexport const isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));\n\nexport const checkAttributeIncludes = (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) =>\n selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));\n\nconst filterItem = (item: AttributeSelectorItem, filterText: string) =>\n item.title.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterItemsTree = (item: AttributeSelectorItem, filterText: string): boolean =>\n filterItem(item, filterText) || (item.children || []).some((item) => filterItemsTree(item, filterText));\n\nexport const filterSelectedAttributes = ({\n attribute,\n selectedAttributes,\n checked\n}: {\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n checked: boolean;\n}) => {\n return checked\n ? selectedAttributes.concat(attribute)\n : selectedAttributes.filter((selectedAttribute) => !isEqualAttributes(attribute, selectedAttribute));\n};\n\nexport const getAttributeIndex = (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) =>\n selectedAttributes.findIndex(isEqualAttributes(attribute));\n\nexport const getContainerWidth = getMaxItemWidth('title');\n\nexport const getOnEnterHandler = ({\n onListItemClick,\n selectedAttributes\n}: {\n selectedAttributes: AttributeSelectorItem[];\n onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;\n}) => ({item, groupData}) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n onListItemClick({...item, groupName: groupData.groupName}, !checked);\n};\n\nconst getAttributeGroupData = (\n item: AttributeSelectorItem,\n groupId: string,\n groupName: string,\n filterText: string,\n level = 0,\n noFilter = false\n) => {\n const isItemFiltered = filterItem(item, filterText);\n return [\n {\n item: filterText ? {...item, filterText} : item,\n level,\n groupId,\n groupName\n }\n ]\n .concat(\n item.children\n ? item.children\n .filter((subItem) => noFilter || isItemFiltered || filterItemsTree(subItem, filterText))\n .flatMap((subItem) =>\n getAttributeGroupData(\n subItem,\n groupId,\n groupName,\n filterText,\n level + 1,\n noFilter || isItemFiltered\n )\n )\n : []\n )\n .flat();\n};\n\nexport const prepareGroupsForSelectAttributeList: (\n filterText: string,\n groups: AttributeSelectorItemsGroup[]\n) => {item: AttributeSelectorItemsGroup[]; items: AttributeSelectorItem[]} = curry(\n (filterText: string, groups: AttributeSelectorItemsGroup[]) =>\n groups\n .map((group) => ({\n item: group,\n items: group.attributes\n .filter((attribute) => filterItemsTree(attribute, filterText))\n .map((item) => getAttributeGroupData(item, group.id, group.title, filterText))\n }))\n .filter((group) => group.items.length)\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n subHeader: {\n backgroundColor: '#f5f5f5',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n }\n});\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport VirtualGroupedList from '../VirtualGroupedList/VirtualGroupedList';\nimport Highlighter from '../Highlighter/Highlighter';\nimport AttributeGroupIcon from '../AttributeGroupIcon/AttributeGroupIcon';\nimport {checkAttributeIncludes} from '../BasicAttributeSelector/helpers';\nimport {AttributeSelectorItem} from '../../types';\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\n\ntype Data = {\n attrType?: AttributeType;\n};\ntype Props = {\n selectedAttributes: AttributeSelectorItem[];\n focusIndex: number;\n hideCheckBox: boolean;\n onItemClick: (data: Data, checked: boolean, groupId: string) => void;\n} & Record<string, unknown>;\n\nconst SelectAttributesList = ({selectedAttributes, onItemClick, focusIndex, hideCheckBox, ...otherProps}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const getItemSize = (i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT);\n\n const renderGroupTitle = (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.needGroupIcon && <AttributeGroupIcon group={item.item} metadata={metadata} />}\n {item.item.title}\n </ListItem>\n );\n\n const renderItem = (style, {item, level, groupId, groupName}, index) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n const isFocused = index === focusIndex;\n return (\n <AttributeListItem\n key={`item-${groupId}-${item.fieldName}`}\n onClick={onItemClick}\n checked={checked}\n data={{\n ...item,\n groupName\n }}\n notSelectable={item.notSelectable}\n hideCheckBox={hideCheckBox}\n label={<Highlighter text={item.title} highlight={item.filterText} />}\n labelInText={item.title}\n level={level}\n style={style}\n isFocused={isFocused}\n groupId={groupId}\n LogoIcon={item.LogoIcon}\n />\n );\n };\n\n return (\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={renderItem}\n renderGroupTitle={renderGroupTitle}\n focusIndex={focusIndex}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SelectAttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n selector: {\n minWidth: '200px',\n alignItems: 'stretch',\n background: 'rgba(0,0,0, 0.0267)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n display: 'flex'\n }\n});\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {identity, pipe, tap, prop, flatten, pick, map, chain, when, always} from 'ramda';\nimport SelectionPopup from '../SelectionPopup/SelectionPopup';\nimport {useKeyboardNavigation} from '../SelectionPopup/helpers';\nimport AttributeTitle from './AttributeTitle/AttributeTitle';\nimport {\n filterSelectedAttributes,\n getAttributeIndex,\n getContainerWidth,\n getOnEnterHandler,\n prepareGroupsForSelectAttributeList\n} from './helpers';\nimport SelectAttributesList from '../SelectAttributesList/SelectAttributesList';\nimport {flattenGroupedItemsData} from '../VirtualGroupedList/helpers';\nimport {AttributeSelectorItem, BasicAttributeSelectorProps} from '../../types';\nimport useStyles from './styles';\n\nconst ATTRIBUTES_LIST_HEIGHT = 400;\nconst ATTRIBUTES_LIST_WIDTH = 308;\nconst ATTRIBUTES_POPUP_HEIGHT = 507;\n\nconst BasicAttributeSelector = ({\n className,\n itemsGroups,\n value,\n getLabel,\n onSelect,\n onRestoreFocus = identity,\n onOpenPopup = identity,\n disableRestoreFocus = false,\n disableEnforceFocus = false,\n single = false,\n ungroup = false,\n disabled = false,\n hideCheckBox = false\n}: BasicAttributeSelectorProps) => {\n const styles = useStyles();\n const [selectAnchor, setSelectAnchor] = useState(null);\n const openPopup = (event) => {\n onOpenPopup();\n setSelectAnchor(event.currentTarget);\n };\n const closePopup = useCallback(() => setSelectAnchor(null), []);\n const isPopupOpen = !!selectAnchor;\n\n const [filterText, setFilterText] = useState('');\n const clearFilterText = useCallback(() => setFilterText(''), []);\n\n const [selectedAttributes, setSelectedAttributes] = useState([]);\n const clearSelectedAttributes = useCallback(() => setSelectedAttributes([]), []);\n\n const filteredItemsGroups = useMemo(() => prepareGroupsForSelectAttributeList(filterText, itemsGroups), [\n itemsGroups,\n filterText\n ]);\n\n const items = useMemo(\n () =>\n pipe(\n when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))),\n flattenGroupedItemsData\n )(filteredItemsGroups),\n [ungroup, filteredItemsGroups]\n );\n\n const containerWidth = useMemo(() => Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH), [\n filteredItemsGroups\n ]);\n\n const handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);\n\n const searchInputRef = useRef<HTMLInputElement>();\n\n const onListItemClick = useCallback(\n (attribute: AttributeSelectorItem, checked: boolean) => {\n onSelect({\n checked,\n attribute,\n index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),\n selectedAttributes\n });\n\n if (single) {\n setSelectedAttributes(checked ? [attribute] : []);\n handleOnClose({});\n } else {\n setSelectedAttributes(filterSelectedAttributes({selectedAttributes, attribute, checked}));\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n },\n [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]\n );\n\n const handleSearchOnEnter = useCallback(getOnEnterHandler({onListItemClick, selectedAttributes}), [\n onListItemClick,\n selectedAttributes\n ]);\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isPopupOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedAttributes,\n onClose: handleOnClose\n });\n\n return (\n <div className={classnames(styles.selector, className)} data-reltio-id=\"attribute-selector\">\n <AttributeTitle value={value} getLabel={getLabel} onSelectAttributeClick={openPopup} disabled={disabled} />\n <SelectionPopup\n open={isPopupOpen}\n anchorEl={selectAnchor}\n onClose={handleOnClose}\n onSearch={setFilterText}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n containerHeight={ATTRIBUTES_POPUP_HEIGHT}\n searchInputOnKeyDown={handleKeyDown}\n anchorOrigin={{horizontal: 'right', vertical: 'bottom'}}\n searchInputRef={searchInputRef}\n disableRestoreFocus={disableRestoreFocus}\n disableEnforceFocus={disableEnforceFocus}\n >\n <SelectAttributesList\n items={items}\n onItemClick={onListItemClick}\n selectedAttributes={selectedAttributes}\n width={containerWidth}\n height={ATTRIBUTES_LIST_HEIGHT}\n focusIndex={focusIndex}\n hideCheckBox={hideCheckBox}\n />\n </SelectionPopup>\n </div>\n );\n};\n\nexport default memo(BasicAttributeSelector);\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst getRowCellKey = ({rowIndex, columnData: {id}, cellIndex}) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = () => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState({});\n const rowCellHeightsMapCache = useRef({});\n const batchHeightUpdate = (key, value) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap({...rowCellHeightsMapCache.current});\n }),\n []\n );\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(pipe(getRowCellKey, prop(__, rowCellHeightsMap)), [rowCellHeightsMap]);\n\n const changeRowCellHeight = useCallback(\n curry(useWith(pipe(batchHeightUpdate, flushHeightUpdates), [getRowCellKey, identity])),\n []\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n hidden: {\n visibility: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {RowCollapseContext} from '../BasicTable/contexts/RowCollapseContext';\nimport CollapseButton from '../../CollapseButton/CollapseButton';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CollapseRowButton = ({rowIndex, rowValue, className}) => {\n const styles = useStyles();\n const {toggleRowCollapse, getIsRowCollapsible, getIsRowCollapsed} = useContext(RowCollapseContext);\n\n const isCollapsibleRow = getIsRowCollapsible(rowValue);\n const isCollapsedRow = getIsRowCollapsed(rowIndex);\n\n return (\n <CollapseButton\n className={classnames(className, {[styles.hidden]: !isCollapsibleRow})}\n isOpen={!isCollapsedRow}\n onClick={(e) => {\n toggleRowCollapse(rowIndex);\n e.stopPropagation();\n }}\n />\n );\n};\n\nCollapseRowButton.propTypes = {\n rowIndex: PropTypes.number,\n rowValue: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default CollapseRowButton;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\nimport {useDidUpdateEffect} from '../../../hooks';\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}) => {\n const cellRef = useRef(null);\n\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div>\n <ReactResizeDetector handleHeight={true} onResize={adjustCellHeight} />\n <RootRef rootRef={cellRef}>{cell}</RootRef>\n </div>\n );\n};\n\nRowCellAutoSizer.propTypes = {\n onChangeHeight: PropTypes.func,\n children: PropTypes.node\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n row: {\n display: 'flex',\n marginBottom: '12px'\n },\n rowItem: {\n paddingRight: '10px',\n display: 'flex'\n },\n fullWidth: {\n flexGrow: '1',\n flexBasis: '0',\n overflow: 'hidden'\n },\n hidden: {\n visibility: 'hidden'\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst height = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n readOnlyLogicOperatorContainer: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '40px',\n width: '76px',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n maxHeight: height\n },\n readOnlyFilter: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n width: '50px',\n marginLeft: '12px',\n maxHeight: height\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\n\nimport useStyles from './styles';\n\nconst ReadOnlyLogicOperator = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyLogicOperatorContainer, className)}>\n {rowData && rowData.operator ? capitalize(rowData.operator) : i18n.text('Where')}\n </div>\n );\n};\n\nReadOnlyLogicOperator.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyLogicOperator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nconst ReadOnlyFilter = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyFilter, className)}>\n {rowData && rowData.filter ? getFilterOptionLabel(rowData.filter) : i18n.text('equals')}\n </div>\n );\n};\n\nReadOnlyFilter.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyFilter;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport useStyles from './styles';\n\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRow = ({\n classes = {},\n rowData,\n previousRowData,\n LogicOperatorComponent = ReadOnlyLogicOperator,\n AttributeSelectorComponent,\n FilterSelectorComponent = ReadOnlyFilter,\n ValuesEditorComponent,\n ActionsComponent,\n filterSelectorRef,\n attributeSelectorProps = {},\n ...rowContext\n}) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.row, classes.root)}>\n <LogicOperatorComponent\n className={classes.logicOperatorContainer}\n rowContext={rowContext}\n rowData={previousRowData}\n />\n <div className={classnames(styles.rowItem, classes.attributeSelectorContainer)}>\n <AttributeSelectorComponent\n attributeSelectorProps={attributeSelectorProps}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, classes.filterSelectorContainer)}>\n <FilterSelectorComponent\n textFieldInputRef={filterSelectorRef}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, styles.fullWidth, classes.valuesEditorContainer)}>\n <ValuesEditorComponent rowContext={rowContext} rowData={rowData} />\n </div>\n <div className={classnames(styles.rowItem, classes.actionsContainer, {[styles.hidden]: !rowData})}>\n <ActionsComponent rowContext={rowContext} rowData={rowData} />\n </div>\n </div>\n );\n};\n\nQueryBuilderRow.propTypes = {\n classes: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowData: QueryBuilderAttributeType,\n previousRowData: QueryBuilderAttributeType,\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRow);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {path} from 'ramda';\n\nimport QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRowsGroup = ({\n className = undefined,\n rowClasses,\n rowsData,\n lastRowAttributeSelectorProps,\n filterSelectorRef,\n filterSelectorRefIndex,\n ...rowProps\n}) => {\n const renderRow = (rowData, index, rowsData) => {\n const previousRow = index > 0 ? path([index - 1], rowsData) : null;\n const lastRowProps =\n index === rowsData.length\n ? {\n attributeSelectorProps: lastRowAttributeSelectorProps\n }\n : {};\n return (\n <QueryBuilderRow\n key={rowData && rowData.id}\n rowData={rowData}\n previousRowData={previousRow}\n classes={rowClasses}\n filterSelectorRef={index === filterSelectorRefIndex ? filterSelectorRef : undefined}\n {...rowProps}\n {...lastRowProps}\n />\n );\n };\n\n return (\n <div className={className}>\n {rowsData.map(renderRow)}\n {renderRow(null, rowsData.length, rowsData)}\n </div>\n );\n};\n\nQueryBuilderRowsGroup.propTypes = {\n className: PropTypes.string,\n rowClasses: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowsData: PropTypes.arrayOf(QueryBuilderAttributeType),\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n filterSelectorRefIndex: PropTypes.number,\n lastRowAttributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRowsGroup);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon}: Source = findSourceSystemByUri(metadata, sourceType) || {};\n const avatarText = uri ? getSourceSystemLabel(metadata, uri)[0] : '';\n const sourceIcon = icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null;\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={sourceIcon}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import {AttributeType, AttributeValue, DataTypes, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport React, {memo} from 'react';\nimport {ReadOnlyAttribute} from '../../..';\nimport ImageAttributesLine from '../ImageAttributesLine';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n expanded?: boolean;\n valueContainerClassName?: string;\n LabelRenderer?: ({attributeType: AttributeType, attributeValue: AttributeValue}) => JSX.Element;\n showNonOv?: boolean;\n};\n\nconst renderAttributesList = ({values, valueContainerClassName, ...props}: Props) => {\n return (\n <>\n {(values || []).map((attributeValue) => (\n <div key={attributeValue.uri} className={valueContainerClassName}>\n <ReadOnlyAttribute attributeValue={attributeValue} {...props} />\n </div>\n ))}\n </>\n );\n};\n\nconst AttributeValuesBlock = ({expanded, LabelRenderer, ...props}: Props) => {\n const {attributeType, values, valueContainerClassName} = props;\n switch (attributeType.type) {\n case DataTypes.TYPE_NESTED:\n case DataTypes.TYPE_REFERENCE: {\n return renderAttributesList({expanded, LabelRenderer, ...props});\n }\n case DataTypes.TYPE_IMAGE: {\n return (\n <div className={valueContainerClassName}>\n <ImageAttributesLine\n attributeType={attributeType}\n attributeValues={values as ImageAttributeValue[]}\n imageSize={{imageHeight: 40, imageWidth: 40, imageMargin: 2}}\n />\n </div>\n );\n }\n default: {\n return renderAttributesList({...props});\n }\n }\n};\n\nexport default memo(AttributeValuesBlock);\n","import React, {createContext, useCallback, useContext} from 'react';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId} from '@reltio/mdm-sdk';\nimport {pipe, eqBy} from 'ramda';\nimport {noop} from '../../core';\n\nconst CrosswalksDisplayContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n getCrosswalkColor?: (crosswalk: CrosswalkBase) => string;\n focusedCrosswalks?: CrosswalkBase[];\n highlightedCrosswalks?: CrosswalkBase[];\n toggleCrosswalkFocus?: (crosswalk: CrosswalkBase) => void;\n setCrosswalkHighlighted?: (crosswalk: CrosswalkBase, highlighted: boolean) => void;\n};\n\nexport const CrosswalksDisplayProvider = ({children, ...props}: ProviderProps) => {\n return <CrosswalksDisplayContext.Provider value={props}>{children}</CrosswalksDisplayContext.Provider>;\n};\n\nexport const useCrosswalkColor = (crosswalk?: CrosswalkBase) => {\n const {getCrosswalkColor: getColor = pipe(getCrosswalkId, getCrosswalkColor)} =\n useContext(CrosswalksDisplayContext) || {};\n return crosswalk ? getColor(crosswalk) : '';\n};\n\nexport const useHighlightedCrosswalks = () => {\n const {highlightedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n return highlightedCrosswalks;\n};\n\nexport const useCrosswalkHighlight = (crosswalk?: CrosswalkBase) => {\n const {highlightedCrosswalks = [], setCrosswalkHighlighted = noop} = useContext(CrosswalksDisplayContext) || {};\n const isHighlighted = !!crosswalk && !!highlightedCrosswalks.find(eqBy(getCrosswalkId, crosswalk));\n return {\n isHighlighted,\n isDimmed: highlightedCrosswalks.length > 0 && !isHighlighted,\n highlightCrosswalk: useCallback(() => setCrosswalkHighlighted(crosswalk, true), [\n crosswalk,\n setCrosswalkHighlighted\n ]),\n removeHighlight: useCallback(() => setCrosswalkHighlighted(crosswalk, false), [\n crosswalk,\n setCrosswalkHighlighted\n ])\n };\n};\n\nexport const useCrosswalkFocus = (crosswalk?: CrosswalkBase) => {\n const {toggleCrosswalkFocus = noop, focusedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n const isFocused = !!crosswalk && focusedCrosswalks.some(eqBy(getCrosswalkId, crosswalk));\n return {\n isFocused,\n toggleCrosswalkFocus: useCallback(() => toggleCrosswalkFocus(crosswalk), [crosswalk, toggleCrosswalkFocus])\n };\n};\n","export const Views = {\n FIND_MATCHES: 'findMatches',\n POTENTIAL_MATCHES: 'potentialMatches',\n NOT_A_MATCH: 'notAMatch'\n};\nexport const ComparisonViewMode = {\n FULL_SCREEN: 'FULL_SCREEN',\n HIDDEN: 'HIDDEN',\n VISIBLE: 'VISIBLE'\n};\n\nexport const MAX_PROFILES_TO_COMPARE = 3;\n","import React, {createContext, useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nconst DataContext = createContext({\n reloadData: () => {},\n setReloadHandler: () => {}\n});\nconst createContextValue = () => {\n let dataHandler;\n const reloadData = () => {\n if (dataHandler) {\n dataHandler();\n }\n };\n const setReloadHandler = (reloadHandler) => {\n dataHandler = reloadHandler;\n };\n return {\n reloadData,\n setReloadHandler\n };\n};\nconst contextValue = createContextValue();\n\nexport const ReloadDataProvider = ({children}) => {\n return <DataContext.Provider value={contextValue}>{children}</DataContext.Provider>;\n};\n\nReloadDataProvider.propTypes = {\n children: PropTypes.node\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(DataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import React, {createContext, useReducer, useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport {createStandardAction, useActions} from '@reltio/components';\n\nimport {ComparisonViewMode} from '../../constants/views';\n\nconst ViewStateContext = createContext(null);\nconst ViewDispatchContext = createContext(null);\nconst UPDATE_COMPARISON_VIEW_MODE = 'UPDATE_COMPARISON_VIEW_MODE';\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\n\nconst actions = {\n setComparisonViewMode: createStandardAction(UPDATE_COMPARISON_VIEW_MODE),\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER)\n};\n\nconst viewStateReducer = (state, action) => {\n switch (action.type) {\n case UPDATE_COMPARISON_VIEW_MODE:\n return {...state, comparisonViewMode: action.payload};\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n }\n};\n\nexport const ViewStateProvider = ({children}) => {\n const [state, dispatch] = useReducer(viewStateReducer, {\n comparisonViewMode: ComparisonViewMode.HIDDEN,\n isGlobalSpinnerActive: false\n });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction}>{children}</ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nViewStateProvider.propTypes = {\n children: PropTypes.node\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import React from 'react';\n\nexport const ColumnHandlerContext = React.createContext(null);\n\nColumnHandlerContext.displayName = 'ColumnHandlerContext';\n","import {Maybe} from '@reltio/mdm-sdk';\nimport {columnFilterToMdmFilter} from '@reltio/components';\nimport {propEq} from 'ramda';\n\nconst createEntityTypeFilter = (value) => ({\n filter: 'equals',\n fieldName: 'type',\n values: [value]\n});\n\nconst buildMDMFilters = (entityType, filters, columnsData) => {\n const currentTypeClause = Maybe.fromNull(entityType).map(createEntityTypeFilter).orSome('');\n\n const filtersClause = Maybe.fromNull(filters)\n .map((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n\n return filtersClause.concat(currentTypeClause);\n};\n\nexport {buildMDMFilters};\n","import {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, pluck, reject} from 'ramda';\nimport i18n from 'ui-i18n';\n\nconst getColumnsDataFromEntityAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: getLabel(attr.label),\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n }))\n);\n\nexport const getColumnsData = pipe(getEntityAttributesFromMetadata, getColumnsDataFromEntityAttributes);\n\nexport const getColumnsIdFromData = pluck('id');\n\nexport const isMatchAttrColumn = curry((matchAttributes, column) =>\n matchAttributes\n .map(attributeUriToSearchUri)\n .some((id) => column.id === id || (isReferenceAttrColumn(column) && isSubAttrIdForColumn(column, id)))\n);\nconst isNestedAttrColumn = (column) => isNested(column.dataTypeDefinition);\nconst isReferenceAttrColumn = (column) => isReference(column.dataTypeDefinition);\nconst isSubAttrIdForColumn = curry((parentColumn, columnId) => columnId.startsWith(`${parentColumn.id}.`));\nconst isNestedForOneOfColumns = curry(\n (columns, column) => isNestedAttrColumn(column) && columns.some(({id}) => isSubAttrIdForColumn(column, id))\n);\nconst isRelatedToColumns = (columns) => either(includes(__, columns), isNestedForOneOfColumns(columns));\n\nexport const getMatchAttrColumns = (matchAttributes, columnsData) =>\n pipe(reject(isNestedAttrColumn), filter(isMatchAttrColumn(matchAttributes)))(columnsData);\n\nexport const groupColumnsDataByMatchAttributes = (matchAttributes, columnsData) => {\n const [matchAttrColumns, otherColumns] = pipe(\n reject(isNestedAttrColumn),\n partition(isMatchAttrColumn(matchAttributes))\n )(columnsData);\n\n return matchAttrColumns.length\n ? [\n {\n id: 'match',\n label: i18n.text('Match attributes'),\n columns: columnsData.filter(isRelatedToColumns(matchAttrColumns))\n },\n {\n id: 'all',\n label: i18n.text('All attributes'),\n columns: columnsData.filter(isRelatedToColumns(otherColumns))\n }\n ]\n : columnsData;\n};\n","import {useSafePromise} from '@reltio/components';\nimport {ActivityFilters, getFilteredEntities, getTotals} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect} from 'react';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useFindEntities = ({entityType, filters, select, sorting, page, rowsPerPage, options, enabled}) => {\n const {order, field} = sorting;\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'defaultProfilePicValue'];\n const activityFilter = options.showInactiveEntities ? ActivityFilters.ALL : ActivityFilters.ACTIVE_ONLY;\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n Promise.all([\n getFilteredEntities(filters, {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.concat(select).join(','),\n activityFilter\n }),\n getTotals(filters, {activityFilter})\n ])\n )\n .then((results) => {\n const [entities, totalResponse] = results;\n const {total} = totalResponse;\n const entityToMatchFormat = (entity) => ({object: entity});\n setEntities(entities.map(entityToMatchFormat));\n setTotal(total);\n })\n .finally((_) => setGlobalSpinner(false));\n }\n },\n [entityType, filters, field, order, page, rowsPerPage, enabled, select, activityFilter] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities};\n};\n","import {getEntityTypeMatchAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {\n getColumnsData,\n getColumnsIdFromData,\n getMatchAttrColumns,\n groupColumnsDataByMatchAttributes\n} from '../helpers/tableHelpers';\nimport {MatchesColumnsData} from '../types/MatchColumnsData';\n\ntype MatchesColumnsDataProps = {\n defaultColumnsData: MatchesColumnsData[];\n additionalColumnsData?: MatchesColumnsData[];\n metadata: Metadata;\n entityType: TEntityType;\n};\nexport const useMatchesColumnsData = ({\n defaultColumnsData,\n additionalColumnsData,\n metadata,\n entityType\n}: MatchesColumnsDataProps) => {\n return useMemo(() => {\n const attrColumnsData = getColumnsData(metadata, entityType);\n const allColumnsData = defaultColumnsData.concat(additionalColumnsData || []).concat(attrColumnsData);\n const matchAttributes = getEntityTypeMatchAttributes(metadata, entityType);\n const groupedColumnsData = groupColumnsDataByMatchAttributes(matchAttributes, allColumnsData);\n const defaultColumns = pipe(\n getMatchAttrColumns,\n concat(defaultColumnsData),\n getColumnsIdFromData\n )(matchAttributes, attrColumnsData);\n return [allColumnsData, groupedColumnsData, defaultColumns];\n }, [defaultColumnsData, additionalColumnsData, metadata, entityType]);\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\nimport {evolve, remove, propSatisfies, gte, when, pipe, take, append, both, complement, isNil, __} from 'ramda';\n\nconst RESET = 'RESET';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst SET_OPTIONS = 'SET_OPTIONS';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n setOptions: createStandardAction(SET_OPTIONS),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload};\n case TOGGLE_SELECT: {\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex((selectedItem) => selectedItem === item);\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n const {limitSelection} = state;\n return pipe(\n when(\n both(complement(isNil), propSatisfies(gte(__, limitSelection), 'length')),\n take(limitSelection - 1)\n ),\n append(item)\n )(selected);\n }\n }\n },\n state\n );\n }\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\n\nexport const useMatchesTable = (defaultColumns, defaultSort, defaultRowsPerPage, defaultOptions) => {\n const {field, order} = defaultSort;\n const initState = {\n visibleColumns: defaultColumns,\n filters: null,\n sorting: {\n field,\n order\n },\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n selectedItems: [],\n options: defaultOptions,\n limitSelection: null\n };\n const [state, dispatch] = useReducer(stateReducer, initState);\n const tableActions = useActions({actions, dispatch});\n return [tableActions, state, dispatch];\n};\n","import {ErrorPopup} from '@reltio/components';\nimport {ApiErrorCode, ApiError} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showDCRReviewErrors = (error: ApiError) => {\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: error?.errorMessage || i18n.text('Something went wrong...')\n });\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {noop, MergeButton as MergeButtonComponent} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\n\nexport const MergeButton = forwardRef(({className, entities, entity, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n});\n\nMergeButton.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nMergeButton.displayName = 'mergeButton';\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: \"M10 6v2H4v12.22h12V14h2v6c0 1.05-.82 1.918-1.851 1.994L16 22H4c-1.05 0-1.918-.82-1.994-1.851L2 20V8c0-1.05.82-1.918 1.851-1.994L4 6h6zm4 10v2H6v-2h8zm-3.997-3l-.001 2H6v-2h4.003zM21 2c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1h-7l-2 2 .005-11c0-.55.445-1 .995-1h8zm-10.996 8l-.001 2H6v-2h4.004zm9.286-6.3l-3.17 3.17-1.41-1.42-1.41 1.41 2.82 2.84 4.59-4.58-1.42-1.42z\",\n id: \"svg3192636834a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg3192636834b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg3192636834a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg3192636834b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ActionButton, noop} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {EntityType, isEmptyValue} from '@reltio/mdm-sdk';\nimport {useRequestDCRReview} from '../../hooks/useRequestDCRReview';\nimport DcrReviewIcon from './icons/dcrReview.svg';\n\nexport const DCRReviewButton = forwardRef(\n ({className, entities, entity, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const [operationIsInProgress, startPMReview] = useRequestDCRReview({entity, entities});\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n\n return canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath) ? (\n <ActionButton\n className={className}\n disabled={operationIsInProgress}\n mode={mode}\n label={i18n.text('Potential match request')}\n icon={DcrReviewIcon}\n onClick={startPMReview}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\nexport const useRequestDCRReview = ({entities, entity}) => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [workflowPath, uris, tenant, environment, setGlobalSpinner]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\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: \"M19 14v3h3v2h-3v3h-2v-3h-3v-2l3-.001V14h2zM17 2a3 3 0 11-1.293 5.708l-4.535 4.535a5 5 0 11-1.414-1.414l4.534-4.536A3 3 0 0117 2zM7 12a3 3 0 100 6 3 3 0 000-6zm10-8a1 1 0 100 2 1 1 0 000-2z\",\n id: \"svg2192258504a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2192258504b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2192258504a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2192258504b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {ActionButton, noop} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\n\nexport const CreateRelationButton = forwardRef(\n (\n {className, mainEntity, currentEntity, matchRules, mode = 'iconButton', onClick = noop, onMenuClose = noop},\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.propTypes = {\n className: PropTypes.string,\n mainEntity: EntityType,\n currentEntity: EntityType,\n matchRules: PropTypes.arrayOf(PropTypes.string),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onClick: PropTypes.func,\n onMenuClose: PropTypes.func\n};\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\n\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\n\nexport const NotMatchButton = forwardRef(\n ({className, entities, entity, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nNotMatchButton.displayName = 'NotMatchButton';\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: \"M3 15h8v-2H3v2zm0 4h8v-2H3v2zm0-8h8V9H3v2zm0-6v2h8V5H3zm10 0h8v14h-8V5z\",\n id: \"svg2461472690a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"#111\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2461472690b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2461472690a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"red\",\n mask: \"url(#svg2461472690b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles, darken} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n iconButton: {\n '& svg g path': {\n fill: theme.palette.primary.main,\n fillOpacity: 1\n }\n },\n comparisonButtonSelected: {\n backgroundColor: theme.palette.primary.main,\n borderRadius: 0,\n '& svg g path': {\n fill: '#FFFFFF',\n fillOpacity: 1\n },\n '&:hover': {\n backgroundColor: darken(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n '& svg g path': {\n fill: darken('#FFFFFF', theme.palette.action.hoverOpacity)\n }\n }\n },\n comparisonButton: {\n backgroundColor: '#FFFFFF',\n borderRadius: 0\n }\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport ComparisonViewIcon from './icons/comparisonViewIcon.svg';\nimport {useStyles} from './styles';\n\n//TODO: update icon, styles\nexport const CompareModeButton = ({className, selectedMatchesCount}) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isComparisonViewHidden = comparisonViewMode === ComparisonViewMode.HIDDEN;\n const isDisabled = selectedMatchesCount > MAX_PROFILES_TO_COMPARE;\n const onClick = useCallback(() => {\n const newMode = isComparisonViewHidden ? ComparisonViewMode.VISIBLE : ComparisonViewMode.HIDDEN;\n setComparisonViewMode(newMode);\n }, [setComparisonViewMode, isComparisonViewHidden]);\n const tooltip = useMemo(() => {\n if (isDisabled) {\n return i18n.text('Select 1-${maxProfilesToCompare} profiles to compare', {\n maxProfilesToCompare: MAX_PROFILES_TO_COMPARE\n });\n } else {\n return isComparisonViewHidden ? i18n.text('Show comparison view') : i18n.text('Hide comparison view');\n }\n }, [isComparisonViewHidden, isDisabled]);\n return (\n <SmallIconButtonWithTooltip\n tooltipTitle={tooltip}\n className={classnames(className, {\n [styles.iconButton]: isComparisonViewHidden,\n [styles.comparisonButton]: isComparisonViewHidden,\n [styles.comparisonButtonSelected]: !isComparisonViewHidden\n })}\n size=\"S\"\n onClick={onClick}\n icon={ComparisonViewIcon}\n showForDisabled={true}\n disabled={isDisabled}\n />\n );\n};\nCompareModeButton.propTypes = {\n entities: PropTypes.arrayOf(PropTypes.object),\n entity: EntityType,\n className: PropTypes.string,\n selectedMatchesCount: PropTypes.number.isRequired\n};\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 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n id: \"svg689336942a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg689336942b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg689336942a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg689336942b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, noop} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\nexport const ReinstateMatchButton = forwardRef(\n ({entity, entities, className, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({entity, entities});\n\n return (\n <ActionButton\n className={className}\n disabled={reinstateIsInProgress}\n mode={mode}\n label={i18n.text('Save as potential match')}\n icon={SetAsMatchIcon}\n onClick={onReinstateMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nReinstateMatchButton.propTypes = {\n entities: PropTypes.arrayOf(PropTypes.object),\n entity: EntityType,\n className: PropTypes.string,\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nReinstateMatchButton.displayName = 'ReinstateMatchButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {isDataTenantEntity, reinstateDataTenantEntityMatch, reinstateMixedEntitiesMatches} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\nexport const useReinstateMatch = ({entities, entity}) => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const onReinstateMatch = useCallback(() => {\n setGlobalSpinner(true);\n const params = {dtssPath, customerTenant: tenant, entity, entities};\n (isDataTenantEntity(entity)\n ? reinstateDataTenantEntityMatch(params)\n : reinstateMixedEntitiesMatches(params)\n ).finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData, dtssPath, tenant]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import {setAsMatch} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\nexport const useSetAMatch = ({entities, entity, _tenant}) => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const setAMatch = useCallback(() => {\n setGlobalSpinner(true);\n setAsMatch(entity.uri, entities).finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData]);\n\n return [isGlobalSpinnerActive, setAMatch];\n};\n","import React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {ActionButton, noop} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\nexport const SetAMatchButton = forwardRef(\n ({entity, entities, className, mode = 'iconButton', onMenuClose = noop}, ref) => {\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities});\n\n return (\n <ActionButton\n className={className}\n disabled={markingIsInProgress}\n mode={mode}\n label={i18n.text('Save on potential matches')}\n icon={SetAsMatchIcon}\n onClick={setAMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nSetAMatchButton.propTypes = {\n className: PropTypes.string,\n entities: PropTypes.arrayOf(PropTypes.object),\n entity: EntityType,\n mode: PropTypes.oneOf(['iconButton', 'button', 'menuItem']),\n onMenuClose: PropTypes.func\n};\n\nSetAMatchButton.displayName = 'SetAMatchButton';\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n marginLeft: '8px'\n },\n mergeButton: {\n flexShrink: 0,\n marginRight: '8px'\n },\n rightButton: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto'\n },\n moreOptions: {\n marginRight: '-2px'\n }\n});\n\nexport default styles;\n","import PropTypes from 'prop-types';\nimport {EntityType} from '@reltio/mdm-sdk';\n\nexport const MatchControlsCellType = {\n value: PropTypes.shape({\n show: PropTypes.bool,\n config: PropTypes.object,\n entity: EntityType,\n entities: PropTypes.arrayOf(PropTypes.object),\n matchRules: PropTypes.arrayOf(PropTypes.string),\n permission: PropTypes.shape({\n canMerge: PropTypes.bool,\n canAddRelation: PropTypes.bool,\n canMark: PropTypes.bool\n })\n })\n};\n","import React from 'react';\nimport useStyles from './styles';\nimport {SetAMatchButton} from '../../../Actions';\nimport {MatchControlsCellType} from './constants/prop-types';\n\nconst FindMatchesViewControls = ({value: {show, entity, entities, permission}}) => {\n const styles = useStyles();\n const {canMark} = permission;\n return show ? (\n <>\n <div className={styles.container}>\n {canMark && (\n <SetAMatchButton entity={entity} entities={entities} className={styles.rightButton} mode=\"button\" />\n )}\n </div>\n </>\n ) : null;\n};\n\nFindMatchesViewControls.propTypes = MatchControlsCellType;\n\nexport default FindMatchesViewControls;\n","import React from 'react';\n\nexport const ExpandedContext = React.createContext({});\n\nExpandedContext.displayName = 'ExpandedContext';\n","import React, {useContext, forwardRef} from 'react';\nimport {ExpandedContext} from './ExpandedContext';\n\nconst withExpanded = (Component) => {\n const WithExpanded = forwardRef((componentProps, ref) => {\n const {attributeType} = componentProps;\n const {expandedMap} = useContext(ExpandedContext);\n const expanded = expandedMap[attributeType.uri];\n return <Component {...componentProps} expanded={expanded} ref={ref} />;\n });\n\n WithExpanded.displayName = 'WithExpanded';\n return WithExpanded;\n};\n\nexport default withExpanded;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n complexAttributesHeadRenderer: {\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'flex-start'\n },\n complexAttributesHeadLabel: {\n flex: 1\n },\n attribute: {\n whiteSpace: 'pre-wrap'\n },\n matchedAttribute: {\n fontWeight: 500,\n height: '100%',\n margin: '-5px -16px',\n padding: '5px 16px',\n background: 'rgba(140, 193, 82, 0.12)'\n }\n}));\n","import React from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport withExpanded from '../withExpanded';\nimport {useStyles} from './styles';\n\nconst ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n matched?: boolean;\n };\n};\n\nexport const AttributesRenderer = ({value: {attributeType, attributeValues, matched = false}}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.attribute, {[styles.matchedAttribute]: matched})}>\n <ExpandableAttributeValuesBlock values={attributeValues} attributeType={attributeType} />\n </div>\n );\n};\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: \"M21.843 14.8l-4.242 4.243-4.243-4.243h8.485zM8 6v12H5V6h3zm2 8.919L12.941 18H10v-3.081zM13 6v6h-3V6h3zm5 0v6h-3V6h3z\",\n id: \"svg2425089452a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2425089452b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2425089452a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2425089452b)\",\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: \"M15.879 12.879l4.242 4.242-4.242 4.243v-8.485zM8 6v12H5V6h3zm5 0v12h-3V6h3zm5 0v5.464l-3-3V6h3z\",\n id: \"svg1931425825a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg1931425825b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1931425825a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1931425825b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {useCallback, useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {AttributeTypeType} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\nimport CollapseIcon from '../icons/collapseComplex.svg';\nimport ExpandIcon from '../icons/expandComplex.svg';\n\nimport {ExpandedContext} from '../ExpandedContext';\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType}) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <div className={styles.complexAttributesHeadLabel}>{label}</div>\n <SmallIconButtonWithTooltip icon={expanded ? CollapseIcon : ExpandIcon} size=\"XS\" onClick={onExpandClick} />\n </div>\n );\n};\n\nComplexAttributesHeadRenderer.propTypes = {\n label: PropTypes.string,\n attributeType: AttributeTypeType\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '87px',\n display: 'flex',\n overflow: 'hidden'\n },\n closeButton: {\n position: 'absolute',\n backgroundColor: '#FFFFFF',\n zIndex: 1,\n borderRadius: '2px',\n margin: '4px'\n },\n profileCard_container: {\n overflow: 'hidden'\n },\n profileCard_label: {\n display: '-webkit-box',\n lineClamp: 2,\n boxOrient: 'vertical',\n whiteSpace: 'normal'\n },\n '@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)': {\n profileCard_label: {\n display: 'block',\n whiteSpace: 'nowrap'\n }\n },\n profileCard_secondaryLabel: {\n display: 'block',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }\n});\n\nexport default styles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {EntityType} from '@reltio/mdm-sdk';\nimport CloseIcon from '@material-ui/icons/Close';\nimport useStyles from './styles';\n\nconst EntityCard = ({value: {entity, showCloseButton, onClose}}) => {\n const styles = useStyles();\n\n return (\n <div className={styles.container}>\n {showCloseButton && (\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} size=\"XXS\" />\n )}\n <ProfileCard\n entity={entity}\n classes={{\n container: styles.profileCard_container,\n secondaryLabel: styles.profileCard_secondaryLabel,\n label: styles.profileCard_label\n }}\n />\n </div>\n );\n};\n\nEntityCard.propTypes = {\n value: PropTypes.shape({\n entity: EntityType,\n showCloseButton: PropTypes.bool,\n onClose: PropTypes.func\n })\n};\n\nexport default EntityCard;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n paddingTop: '7px'\n }\n});\n\nexport default styles;\n","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import {useState, useCallback} from 'react';\nimport {getEntityUriFromMatchObject, getTasksForEntity} from '@reltio/mdm-sdk';\nimport {propSatisfies, allPass, includes} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSelector} from 'react-redux';\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\nimport {useSafePromise} from '@reltio/components';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\nexport const useWorkflowTasks = ({entity, match}) => {\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState([]);\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .finally((_) => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n return {enabled: !!workflowPath, loading: requestIsInProgress, tasks, loadTasks};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden'\n },\n assigneeSelector: {},\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useEffect} from 'react';\nimport {\n PotentialMatchReviewCard,\n SmallIconButton,\n DropDownMenuButton,\n DropDownSelector,\n useWorkflowAssignee,\n WorkflowComments,\n useMergeAllRequest,\n useMarkAsNotMatchRequest\n} from '@reltio/components';\nimport {EntityType, PotentialMatchType} from '@reltio/mdm-sdk';\n\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {pick} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\nexport const WorkflowCard = ({entity, match}) => {\n const styles = useStyles();\n const {tasks, loadTasks} = useWorkflowTasks({entity, match});\n const {isPending: isMergeInProgress, sendMergeAllRequest: merge} = useMergeAllRequest({\n entity,\n entities: [match.object]\n });\n const {isPending: isMarkAsInProgress, sendMarkAsNotMatchRequest: notMatch} = useMarkAsNotMatchRequest({\n entity,\n entities: [match.object]\n });\n const mapping = {\n Merge: merge,\n NotAMatch: notMatch\n };\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const actions = ((task && task.possibleActions) || []).map(({action, label}) => ({\n text: label,\n onClick: mapping[action]\n }));\n const {assignee, getAssignees, updateAssignee, updateRequestIsInProgress} = useWorkflowAssignee(task || {});\n const Actions =\n actions.length > 0 ? (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n enabled={!isMergeInProgress || !isMarkAsInProgress}\n menuId={'custom-actions'}\n menuItems={actions}\n />\n ) : null;\n return task ? (\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <DropDownSelector\n className={styles.assigneeSelector}\n enabled={!updateRequestIsInProgress || assignee}\n getOptions={getAssignees}\n onChange={updateAssignee}\n hideSelectedOptions={false}\n label={i18n.text('Assigned to')}\n value={assignee}\n defaultOptions={true}\n />\n </div>\n <WorkflowComments {...getCommentsInfoFromTasks(task)} />\n </PotentialMatchReviewCard>\n </div>\n ) : null;\n};\n\nWorkflowCard.propTypes = {\n entity: EntityType,\n match: PotentialMatchType\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport WorkflowCard from '../../../WorkflowCard';\nimport {EntityType, PotentialMatchType} from '@reltio/mdm-sdk';\n\nconst WorkflowCardRenderer = ({value: {entity, match}}) => {\n return <WorkflowCard entity={entity} match={match} />;\n};\n\nWorkflowCardRenderer.propTypes = {\n value: PropTypes.shape({\n entity: EntityType,\n match: PotentialMatchType\n })\n};\n\nexport default WorkflowCardRenderer;\n","import {\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributesForMatchRules,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isEmptyValue,\n isOv\n} from '@reltio/mdm-sdk';\nimport {assoc, curry, filter, identity, last, path, pathOr, pipe, propEq, split, when} from 'ramda';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\n\nconst DEFAULT_ROWS = [\n {\n id: 'entityCard',\n label: '',\n cellRenderer: EntityCard\n },\n {\n id: 'matchControls',\n cellRenderer: () => null\n },\n {\n id: 'matchMethod',\n label: 'Match Method',\n cellRenderer: MatchMethod\n },\n {\n id: 'workflowCard',\n label: '',\n cellRenderer: WorkflowCardRenderer\n },\n {\n id: 'entityId',\n label: 'Entity ID'\n }\n];\n\nconst getDefaultRows = (controlsRenderer) =>\n DEFAULT_ROWS.map(when(propEq('id', 'matchControls'), assoc('cellRenderer', controlsRenderer)));\n\nconst getAttrTypeUriByName = curry((entityTypeUri, name) => `${entityTypeUri}/attributes/${name}`);\nconst getAttrTypeNameByUri = pipe(split('/'), last);\nconst getEntityAttributesTypeUris = (entity) => Object.keys(entity.attributes).map(getAttrTypeUriByName(entity.type));\n\nexport const getTableRowsData = (metadata, entity, selectedAttributes, controlsRenderer) => {\n const attributeTypeUris = selectedAttributes || getEntityAttributesTypeUris(entity);\n const attributesRows = attributeTypeUris\n .map((attrTypeUri) => {\n const attributeType = findAttributeTypeByUri(metadata, attrTypeUri, entity.type);\n const collectionName = getAttributeSource(attrTypeUri);\n return attributeType\n ? {\n id: `${collectionName}.${getAttrTypeNameByUri(attrTypeUri)}`,\n label: attributeType.label,\n attributeType,\n cellRenderer: AttributesRenderer,\n headCellRenderer: isComplexAttribute(attributeType) ? ComplexAttributesHeadRenderer : undefined\n }\n : null;\n })\n .filter(identity);\n\n return getDefaultRows(controlsRenderer).concat(attributesRows);\n};\n\nconst getColumnDataForRowData = (metadata, match, entitiesMap, entity, rowData, config, onRemoveItem) => {\n const {object, isMainEntity, matchRules} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'entityCard':\n return {\n entity: object,\n showCloseButton: !isMainEntity,\n onClose: () => onRemoveItem(match)\n };\n case 'matchControls':\n return {\n show: !isMainEntity,\n entity: entity,\n entities: [object],\n matchRules: matchRules,\n permission: getActionPermissionForMatch(metadata, config, object, entity, matchRules),\n config: config\n };\n case 'matchMethod':\n return {\n metadata,\n entity,\n match,\n entitiesMap,\n show: !isMainEntity && !!matchRules\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n }\n if (isAttributeSearchUri(rowData.id)) {\n const attrSource = getAttributeSource(rowData.attributeType);\n const getAttributeValues = pipe(pathOr([], [attrSource, rowData.attributeType.name]), filter(isOv));\n const attributeValues = getAttributeValues(object);\n const matchedAttributes = getAttributesForMatchRules(metadata, entity.type, matchRules || []);\n const matched =\n matchedAttributes.includes(path(['attributeType', 'uri'], rowData)) && !isEmptyValue(attributeValues);\n return {\n attributeType: rowData.attributeType,\n attributeValues,\n matched\n };\n }\n};\n\nexport const getTableColumnsData = (metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem) => {\n return [{object: entity, isMainEntity: true}].concat(matches).map((match) => {\n return rowsData.reduce((column, rowData) => {\n column[rowData.id] = getColumnDataForRowData(\n metadata,\n match,\n entitiesMap,\n entity,\n rowData,\n config,\n onRemoveItem\n );\n return column;\n }, {});\n });\n};\n","import React from 'react';\nimport {MatchRulesBlock} from '@reltio/components';\nimport useStyles from './styles';\n\ntype Props = {\n value: React.ComponentProps<typeof MatchRulesBlock> & {show?: boolean};\n};\nconst MatchMethod = ({value: {metadata, entity, match, entitiesMap, show}}: Props) => {\n const styles = useStyles();\n if (!show) {\n return null;\n }\n return (\n <div className={styles.container}>\n <MatchRulesBlock entity={entity} match={match} entitiesMap={entitiesMap} metadata={metadata} />\n </div>\n );\n};\n\nexport default MatchMethod;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst secondColumnColor = 'rgb(245,245,245)';\nconst firstRowHeight = 88;\nconst secondRowHeight = 48;\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n overflow: 'auto',\n height: '100%',\n width: '100%'\n },\n comparisonTable: {\n borderSpacing: 0,\n '& td, & th': {\n borderRight: borderStyle,\n borderBottom: borderStyle,\n margin: 0,\n verticalAlign: 'top',\n textAlign: 'left',\n fontSize: '13px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n wordWrap: 'break-word'\n },\n '& td': {\n minWidth: dataCellWidth,\n maxWidth: dataCellWidth,\n padding: '5px 16px',\n overflow: 'hidden',\n height: 0\n },\n '& td:empty, th:empty': {\n padding: '0px 16px'\n },\n '& th': {\n minWidth: headCellWidth,\n maxWidth: headCellWidth,\n padding: '5px 8px'\n },\n '& thead tr:first-child th:first-child': {\n borderBottom: 'none',\n borderTop: 'none'\n },\n // sticky columns\n '& td:first-child, th:first-child': {\n borderLeft: borderStyle,\n position: 'sticky',\n left: '0',\n zIndex: 2,\n backgroundColor: 'white',\n color: theme.palette.text.secondary,\n fontWeight: 'normal'\n },\n '& td:nth-child(2), th:nth-child(2)': {\n borderRight: thickBorderStyle,\n position: 'sticky',\n left: `${headCellWidth}px`,\n zIndex: 2\n },\n // sticky rows\n '& thead tr:first-child td, & thead tr:first-child th': {\n borderTop: 'none',\n position: 'sticky',\n top: '0',\n backgroundColor: 'white',\n height: firstRowHeight,\n padding: 0,\n zIndex: 2\n },\n '& thead tr:nth-child(2) td, & thead tr:nth-child(2) th': {\n position: 'sticky',\n top: `${firstRowHeight}px`,\n backgroundColor: 'white',\n height: secondRowHeight,\n padding: 0,\n zIndex: 2\n },\n '& thead tr:nth-child(3) td, & thead tr:nth-child(3) th': {\n position: 'sticky',\n top: `${firstRowHeight + secondRowHeight}px`,\n backgroundColor: 'white',\n borderBottom: thickBorderStyle,\n zIndex: 2\n },\n // always visible corner\n '& thead tr:nth-child(-n+3) td:nth-child(-n+2), & thead tr:nth-child(-n+3) th:nth-child(-n+2)': {\n zIndex: 3\n },\n // special color for second column\n 'table& tr td:nth-child(2), th:nth-child(2)': {\n backgroundColor: secondColumnColor\n }\n }\n}));\n","import React, {useCallback, useMemo, useState, useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {EntityType, MetadataType, PotentialMatchesConfigType, PotentialMatchType} from '@reltio/mdm-sdk';\nimport {VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\n\nimport {useStyles} from './styles';\n\nexport const ComparisonTable = ({\n className,\n entity,\n matches,\n metadata,\n config,\n selectedAttributes,\n entitiesMap,\n controlsRenderer\n}) => {\n const styles = useStyles();\n\n const rowsData = useMemo(() => getTableRowsData(metadata, entity, selectedAttributes, controlsRenderer), [\n metadata,\n entity,\n selectedAttributes,\n controlsRenderer\n ]);\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem]\n );\n\n const [expandedMap, setExpandedMap] = useState({});\n\n const onExpandType = useCallback((attrTypeUri) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n return (\n <div className={classnames(styles.container, className)}>\n <div>\n <ExpandedContext.Provider value={expandedContextValue}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={rowsData}\n columnsData={columnsData}\n theadRowsNumber={3}\n />\n </ExpandedContext.Provider>\n </div>\n </div>\n );\n};\n\nComparisonTable.propTypes = {\n className: PropTypes.string,\n entity: EntityType,\n matches: PropTypes.arrayOf(PotentialMatchType),\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n selectedAttributes: PropTypes.arrayOf(PropTypes.string),\n entitiesMap: PropTypes.object,\n controlsRenderer: PropTypes.func\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport {identity} from 'ramda';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nconst FullscreenButton = ({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 {...otherProps}\n />\n );\n};\n\nFullscreenButton.propTypes = {\n isFullscreen: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default FullscreenButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport {SmallIconButton} from '@reltio/components';\n\nconst CloseButton = ({onClick}) => {\n return <SmallIconButton size=\"L\" icon={CloseIcon} onClick={onClick} />;\n};\n\nCloseButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default CloseButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_theme) => ({\n header: {\n '& > button': {\n margin: '0 -2px'\n },\n padding: '8px 15px 8px 0',\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n\n flex1: {\n flex: 1\n },\n\n title: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\n}));\n","import {Typography as Typography} from '@material-ui/core';\nimport {BasicViewHeader} from '@reltio/components';\nimport PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport FullscreenButton from './FullscreenButton/FullscreenButton';\nimport CloseButton from './CloseButton/CloseButton';\nimport {ColumnsDataType, ColumnsSettings} from '@reltio/components';\nimport {useViewStateActions, useViewState} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useStyles} from './styles';\n\nconst ComparisonViewHeader = ({columnsData, selectedColumns, onChangeColumns}) => {\n const styles = useStyles();\n const {setComparisonViewMode} = useViewStateActions();\n const {comparisonViewMode} = useViewState();\n const closeHandler = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.HIDDEN);\n }, [setComparisonViewMode]);\n\n const fullScreenHandler = useCallback(() => {\n setComparisonViewMode(\n comparisonViewMode !== ComparisonViewMode.FULL_SCREEN\n ? ComparisonViewMode.FULL_SCREEN\n : ComparisonViewMode.VISIBLE\n );\n }, [setComparisonViewMode, comparisonViewMode]);\n\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <div className={classnames(styles.flex1, styles.title)}>\n <CloseButton onClick={closeHandler} />\n <FullscreenButton\n onClick={fullScreenHandler}\n isFullscreen={comparisonViewMode === ComparisonViewMode.FULL_SCREEN}\n />\n <Typography>{i18n.text('Comparison view')}</Typography>\n </div>\n <ColumnsSettings\n title={i18n.text('Show/hide attributes')}\n tooltipTitle={i18n.text('Show/hide attributes')}\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nComparisonViewHeader.propTypes = {\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func\n};\n\nexport {ComparisonViewHeader};\n","import {isAttributeSearchUri, isNested, searchUriToAttrUri} from '@reltio/mdm-sdk';\nimport {\n both,\n concat,\n curry,\n evolve,\n filter,\n flatten,\n join,\n lt,\n map,\n pipe,\n prop,\n propSatisfies,\n reduce,\n reject,\n slice,\n split,\n uniq,\n when\n} from 'ramda';\n\nconst getFirstLevelParentAttribute = pipe(split('.'), slice(0, 2), join('.'));\nexport const replaceSubAttributesWithParent = pipe(map(when(isAttributeSearchUri, getFirstLevelParentAttribute)), uniq);\n\nexport const getAttributesTypeUris = (entityTypeUri, attributes) =>\n pipe(\n filter(isAttributeSearchUri),\n map((searchUri) => searchUriToAttrUri(searchUri, entityTypeUri))\n )(attributes);\n\nconst getSubAttributesColumnsByColumnId = curry((columnId, columns) =>\n reduce((columnIds, column) => {\n if (column.id.startsWith(`${columnId}.`) && !isNested(column.dataTypeDefinition)) columnIds.push(column.id);\n return columnIds;\n }, [])(columns)\n);\n\nconst findSubAttributesInColumnsData = (columnsData, columnId) =>\n columnsData.reduce((acc, group) => {\n return pipe(prop('columns'), getSubAttributesColumnsByColumnId(columnId), flatten, concat(acc))(group);\n }, []);\n\nexport const addSubAttributesColumns = curry((columnsData, selectedColumns) => {\n return pipe(\n map(\n when(isAttributeSearchUri, (columnId) => {\n const firstLevelParentColumnId = getFirstLevelParentAttribute(columnId);\n const subAttributesColumns = findSubAttributesInColumnsData(columnsData, firstLevelParentColumnId);\n return subAttributesColumns.length ? subAttributesColumns : columnId;\n })\n ),\n flatten,\n uniq\n )(selectedColumns);\n});\n\nconst isSubAttributeColumn = pipe(\n prop('id'),\n both(isAttributeSearchUri, pipe(split('.'), propSatisfies(lt(2), 'length')))\n);\n\nexport const removeSubAttributesColumns = map(\n evolve({\n columns: reject(isSubAttributeColumn)\n })\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ComparisonTable from '../ComparisonTable';\nimport ComparisonViewHeader from '../ComparisonViewHeader';\nimport {ColumnsDataType} from '@reltio/components';\nimport {EntityType, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport {\n addSubAttributesColumns,\n getAttributesTypeUris,\n removeSubAttributesColumns,\n replaceSubAttributesWithParent\n} from './helpers';\nimport {pipe} from 'ramda';\n\nimport {useStyles} from './styles';\n\nexport const ComparisonView = ({\n classes,\n columnsData,\n selectedColumns,\n onChangeColumns,\n selectedItems,\n config,\n metadata,\n entity,\n entitiesMap,\n controlsRenderer\n}) => {\n const styles = useStyles();\n const matches = selectedItems.slice(-3);\n\n const selectedColumnsWithoutSubAttributes = replaceSubAttributesWithParent(selectedColumns);\n const selectedAttributes = getAttributesTypeUris(entity.type, selectedColumnsWithoutSubAttributes);\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonViewHeader\n columnsData={removeSubAttributesColumns(columnsData)}\n selectedColumns={selectedColumnsWithoutSubAttributes}\n onChangeColumns={pipe(addSubAttributesColumns(columnsData), onChangeColumns)}\n />\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n matches={matches}\n selectedAttributes={selectedAttributes}\n entitiesMap={entitiesMap}\n controlsRenderer={controlsRenderer}\n />\n </div>\n );\n};\n\nComparisonView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n selectedItems: PropTypes.arrayOf(PropTypes.object),\n classes: PropTypes.object,\n config: PotentialMatchesConfigType,\n entitiesMap: PropTypes.object,\n controlsRenderer: PropTypes.func\n};\n\nComparisonView.defaultProps = {\n classes: {}\n};\n","import React from 'react';\nimport {Portal as Portal} from '@material-ui/core';\nimport PropTypes from 'prop-types';\n\nexport const FullScreenView = ({fullScreenContainer, children}) => {\n return fullScreenContainer ? <Portal container={fullScreenContainer}>{children}</Portal> : <div />;\n};\n\nFullScreenView.propTypes = {\n fullScreenContainer: PropTypes.instanceOf(Element),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])\n};\n","import {makeStyles, fade, lighten} from '@material-ui/core/styles';\n\nconst defaultWrapperStyles = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 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};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color, hoveredColor) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${fade(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${fade(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 0, 0)', 0.96);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '19px'\n },\n headCheckbox: {\n marginLeft: '6px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n ...textOverflow,\n width: '30px'\n }\n },\n headCellWithEntity: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n rowCell: {\n fontSize: '12px',\n overflow: 'hidden'\n },\n rowCellFirstColumn: {\n height: '100%'\n },\n firstEntityCell: {\n maxHeight: '200px'\n },\n entityRowCell: {\n fontSize: '12px',\n position: 'relative'\n },\n entityRowCellSelected: getColoredRowCellStyle(entityBackground),\n rowCellHighlighted: getColoredRowCellStyle(highlightBackground),\n rowCellSelected: getColoredRowCellStyle(lightPrimaryBackground, lightPrimaryBackgroundHovered),\n defaultWrapper: {\n ...defaultWrapperStyles,\n '&::after': {\n ...textOverflow,\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n }\n }\n },\n hoveredDefaultWrapper: {\n ...defaultWrapperStyles\n },\n entityWrapper: {\n paddingLeft: '12px'\n },\n profileWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n position: 'relative'\n },\n entityLabel: {\n ...link,\n fontWeight: 500\n },\n commentsContainer: {\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 1,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '15px',\n backgroundColor: '#fff',\n '&$checked': {\n backgroundColor: lightPrimaryBackground\n }\n },\n checked: {},\n matchRulesWrapper: {\n padding: '12px 15px 4px 10px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIcon: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n opacity: 0.38\n }\n };\n});\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nDefaultCellValueRenderer.propTypes = {\n columnData: PropTypes.shape({\n dataTypeDefinition: PropTypes.object\n }),\n value: PropTypes.any\n};\n\nexport default DefaultCellValueRenderer;\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {CollapseRowButton, EntityUriLink, IdContext, withTableContext, CommentsContainer} from '@reltio/components';\nimport {\n EntityType,\n getEntityUriForLink,\n getLabel,\n createObjectIdForPM,\n CollaborationObjectTypes,\n createRelatedObjectUris\n} from '@reltio/mdm-sdk';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport {useStyles} from './styles';\n\nconst EntityProfileRenderer = (props) => {\n const {value: entity, rowIndex, rowValue, onToggleSelect, entityToMatch, isRowSelected, hoverRowIndex} = props;\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowSelectable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowSelectable\n })}\n >\n {isRowHovered && <DragIndicatorIcon className={styles.dragIcon} />}\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <Checkbox\n className={classnames(styles.rowCheckbox, {[styles.hidden]: !isRowSelectable})}\n checked={isRowSelected}\n onChange={onToggleSelect}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: EntityType,\n rowIndex: PropTypes.number,\n rowValue: PropTypes.shape({\n rawValue: PropTypes.object\n }),\n onToggleSelect: PropTypes.func,\n isRowSelected: PropTypes.bool,\n columnsData: PropTypes.array,\n entityToMatch: EntityType,\n hoverRowIndex: PropTypes.number\n};\n\nexport default withTableContext(({onToggleSelect, entityToMatch}, {rowValue, value}) => {\n const {rawValue: match} = rowValue;\n return {\n onToggleSelect: () => onToggleSelect(match),\n isRowSelectable: value !== entityToMatch,\n entityToMatch\n };\n})(EntityProfileRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport {Checkbox as Checkbox} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\nconst ProfileHeadCellRenderer = ({isAllSelected, isSomeSelected, onCheckboxClick, isComparisonViewShown, ...props}) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <Checkbox\n className={styles.headCheckbox}\n indeterminate={isSomeSelected && !isAllSelected}\n checked={isAllSelected}\n disabled={!isSomeSelected && isComparisonViewShown}\n onChange={() => onCheckboxClick()}\n data-reltio-id=\"reltio-matches-table-selectAll-checkbox\"\n />\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nProfileHeadCellRenderer.propTypes = {\n isSomeSelected: PropTypes.bool,\n isAllSelected: PropTypes.bool,\n onCheckboxClick: PropTypes.func,\n isComparisonViewShown: PropTypes.bool\n};\n\nexport default withTableContext(({selected, isAllSelected, onResetSelect, onSelectAll, isComparisonViewShown}) => {\n const isSomeSelected = !!selected && selected.length > 0;\n return {\n isSomeSelected,\n isAllSelected,\n onCheckboxClick: isSomeSelected ? onResetSelect : onSelectAll,\n isComparisonViewShown\n };\n})(withFilterAtBottom(ProfileHeadCellRenderer));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {TransitiveMatchBlock, SimpleMatchRulesBlock} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst MatchRulesRenderer = ({value: {transitiveMatchRules = [], matchRules = []} = {}}) => {\n const styles = useStyles();\n return (\n <div className={styles.matchRulesWrapper}>\n {matchRules.length > 0 && <SimpleMatchRulesBlock matchRules={matchRules} />}\n {transitiveMatchRules.length > 0 && <TransitiveMatchBlock transitiveMatchRules={transitiveMatchRules} />}\n </div>\n );\n};\n\nMatchRulesRenderer.propTypes = {\n value: PropTypes.shape({\n transitiveMatchRules: PropTypes.array,\n matchRules: PropTypes.array\n })\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useStyles} from './styles';\nimport {SimpleMatchRulesBlock} from '@reltio/components';\n\nconst MatchIQRenderer = ({value: {mlMatchRules = []} = {}}) => {\n const styles = useStyles();\n return (\n <div className={styles.matchRulesWrapper}>\n {mlMatchRules.length > 0 && <SimpleMatchRulesBlock isMlMatch={true} matchRules={mlMatchRules} />}\n </div>\n );\n};\n\nMatchIQRenderer.propTypes = {\n value: PropTypes.shape({\n mlMatchRules: PropTypes.array\n })\n};\n\nexport default MatchIQRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst BlobRenderer = ({value}) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n {value}\n </div>\n );\n};\n\nBlobRenderer.propTypes = {\n value: PropTypes.any\n};\n\nexport default BlobRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {getImageAttributeOvThumbnailUrl} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst ImageRenderer = ({value}) => {\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value});\n return (\n src && (\n <div className={styles.imageWrapper}>\n <img src={src} />\n </div>\n )\n );\n};\n\nImageRenderer.propTypes = {\n value: PropTypes.any\n};\n\nexport default ImageRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\n\nimport classnames from 'classnames';\nimport {EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, getLabel, getReferencedEntityFromAttrValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst ReferenceRenderer = ({value}) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n value && (\n <div className={classnames(styles.defaultWrapper, styles.referenceWrapper)}>\n <EntityTypeIcon\n className={styles.entityAvatar}\n entityType={getEntityType(metadata, getReferencedEntityFromAttrValue(value).type)}\n />\n <EntityUriLink value={getReferencedEntityFromAttrValue(value).objectURI} className={styles.link}>\n {getLabel(value.label)}\n </EntityUriLink>\n </div>\n )\n );\n};\n\nReferenceRenderer.propTypes = {\n value: PropTypes.any\n};\n\nexport default ReferenceRenderer;\n","import {assoc, isEmpty, map, pipe, prop, reduce, split} from 'ramda';\nimport {\n DataTypes,\n getAttributesForMatchRules,\n getEntityId,\n getMatchRules,\n getOvAttributeValuesByPath,\n getTransitiveMatchesForEntity,\n isAttributeSearchUri,\n partitionByMlMatch\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport MatchIQRenderer from './cell-renderers/MatchIQRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\nconst getRowValueForColumn = (\n metadata,\n columnData,\n {entity, transitiveMatchRules, matchRules, mlMatchRules, matchScore}\n) => {\n switch (columnData.id) {\n case 'label':\n return entity;\n case 'id':\n return getEntityId(entity);\n case 'matchRules':\n return {transitiveMatchRules, matchRules};\n case 'mlMatchRules':\n return {mlMatchRules};\n case 'score':\n return matchScore;\n default: {\n const [attrSource, ...attrPath] = getAttrPathFromColumnId(columnData.id);\n return pipe(prop(attrSource), getOvAttributeValuesByPath(attrPath))(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (metadata, columnsData, matches, entitiesMap) =>\n matches.map((match) => {\n const entity = match.object;\n const transitiveMatchRules = getTransitiveMatchesForEntity(metadata, matches, entity, entitiesMap);\n const allMatchRules = match.matchRules || [];\n const matchScore = match.matchScore || 0;\n const [mlMatchRules, matchRules] = isEmpty(transitiveMatchRules)\n ? pipe(getMatchRules(metadata, entity.type), partitionByMlMatch)(allMatchRules)\n : [[], []];\n const matchAttributes = getAttributesForMatchRules(metadata, entity.type, allMatchRules);\n const rowValue = {entity, matchRules, mlMatchRules, transitiveMatchRules, matchScore};\n\n return pipe(\n reduce(\n (acc, columnData) => assoc(columnData.id, getRowValueForColumn(metadata, columnData, rowValue), acc),\n {}\n ),\n assoc('matchAttributes', matchAttributes),\n assoc('rawValue', match)\n )(columnsData);\n });\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const [, ...attrPath] = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRendererByDataType = (dataType) => {\n switch (dataType) {\n case DataTypes.TYPE_BLOB: {\n return BlobRender;\n }\n case DataTypes.TYPE_IMAGE: {\n return ImageRenderer;\n }\n case DataTypes.TYPE_REFERENCE: {\n return ReferenceRenderer;\n }\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getCellValueRenderer = (columnData) => {\n switch (columnData.id) {\n case 'label': {\n return EntityProfileRenderer;\n }\n case 'matchRules': {\n return MatchRulesRenderer;\n }\n case 'mlMatchRules': {\n return MatchIQRenderer;\n }\n default:\n return getCellValueRendererByDataType(columnData.dataTypeDefinition.type);\n }\n};\n\nconst getBasicTableColumnsData = (sortable, columnData) =>\n map((columnData) => ({\n sortable,\n ...columnData,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: columnData.id === 'label' ? ProfileHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData)\n }))(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/tableHelpers';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n ...otherProps\n}) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isRowSelected: PropTypes.bool,\n isCellHighlighted: PropTypes.bool,\n columnIndex: PropTypes.number\n};\n\nexport default withTableContext(({selected}, {columnData, rowValue, cell}) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden'\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n }\n}));\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport {\n BasicTable,\n ColumnFilterType,\n ColumnsDataType,\n defaultGetRowCellHeight,\n RowCellAutoSizer,\n SortingType,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {\n EntityType,\n MetadataType,\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {either, evolve, move} from 'ramda';\n\nimport {useStyles} from './styles';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n filters,\n onFilter,\n sorting,\n onSort,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n entitiesMap,\n actionButtonsRenderer,\n basicTableRef,\n isComparisonViewShown\n}) => {\n const styles = useStyles();\n const [orderedMatches, setOrderedMatches] = useState(matches);\n useEffect(() => {\n setOrderedMatches(matches);\n }, [matches]);\n const onDndRowReorder = useCallback((oldPosition, newPosition) => {\n setOrderedMatches(move(oldPosition, newPosition));\n setHoverRowIndex(newPosition);\n }, []);\n\n const tableRowsData = useMemo(() => getBasicTableRowsData(metadata, columnsData, orderedMatches, entitiesMap), [\n orderedMatches,\n columnsData,\n metadata,\n entitiesMap\n ]);\n\n const sortable = !!onSort;\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(sortable, columnsData), [columnsData, sortable]);\n\n const entityRowData = useMemo(\n () => (entity ? getBasicTableRowsData(metadata, columnsData, [{object: entity}]) : []),\n [entity, metadata, columnsData]\n );\n\n const {getRowHeight, CellRenderer: EntityCellRenderer} = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT\n });\n\n const entityRowHeight = getRowHeight(0);\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(EntityCellRenderer);\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [tableColumnsData, EntityCellRenderer]);\n\n const tableContext = useMemo(\n () => ({\n isAllSelected: selected.length > 0 && selected.length === matches.length,\n entityToMatch: entity,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n isComparisonViewShown\n }),\n [entity, selected, onToggleSelect, onResetSelect, onSelectAll, matches, isComparisonViewShown]\n );\n\n const {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache} = useDynamicRowCellHeight();\n\n useLayoutEffect(clearHeightsCache, [matches]);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const onRowHover = useCallback(\n (rowIndex) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const hoveredRowRightContent = useMemo(() => {\n if (!actionButtonsRenderer || hoverRowIndex === null) {\n return null;\n }\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n {actionButtonsRenderer({\n hoveredMatch,\n buttonClassName: styles.actionButton,\n onActionsMenuOpen,\n onActionsMenuClose\n })}\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n actionButtonsRenderer,\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n onActionsMenuOpen,\n onActionsMenuClose,\n entity\n ]);\n\n const renderRowCell = useCallback(\n (props) => {\n // eslint-disable-next-line react/prop-types\n switch (props.columnData.id) {\n case 'label':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n case 'mlMatchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n },\n [changeRowCellHeight, hoverRowIndex, hoveredRowRightContent, basicTableRef]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer\n }),\n [styles]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndRowReorderingHandler={onDndRowReorder}\n ref={basicTableRef}\n hoveredContentPosition={0}\n />\n </div>\n );\n};\n\nMatchesTable.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n columnsData: ColumnsDataType,\n matches: PropTypes.array,\n selected: PropTypes.array,\n onToggleSelect: PropTypes.func,\n onResetSelect: PropTypes.func,\n onSelectAll: PropTypes.func,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n entitiesMap: PropTypes.object,\n actionButtonsRenderer: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n isComparisonViewShown: PropTypes.bool\n};\n\nexport default MatchesTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {IdContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst withEntityCellValue = (EntityCellRenderer) => (HeadCellRenderer) => {\n const HeadCellWithEntityValue = (props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <HeadCellRenderer {...props} />\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n />\n </div>\n </IdContext.Provider>\n );\n };\n HeadCellWithEntityValue.propTypes = {\n headCellData: PropTypes.shape({\n id: PropTypes.string\n })\n };\n\n return HeadCellWithEntityValue;\n};\n\nexport default withEntityCellValue;\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n buttonRoot: {\n '&$selected': {\n color: theme.palette.action.active,\n backgroundColor: fade(theme.palette.action.active, 0.12),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, 0.15)\n }\n }\n },\n selected: {},\n paper: {\n minWidth: '112px'\n },\n menuItem: {\n minHeight: '32px',\n paddingLeft: '12px',\n paddingRight: '38px'\n },\n menuText: {\n color: theme.palette.text.primary,\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0\n },\n hidden: {\n visibility: 'hidden'\n },\n checkIcon: {\n color: 'rgba(0,0,0,0.54)',\n marginRight: '12px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport CheckIcon from '@material-ui/icons/Check';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\nconst OptionsMenu = ({options, optionsData, onChangeOptions}) => {\n const menuId = 'options-menu';\n\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const toggleOpen = () => setIsOpen((open) => !open);\n\n const renderOptionItem = (optionItem) => {\n const {label, id} = optionItem;\n const isOptionEnabled = options[id];\n const handleClick = () => {\n setIsOpen(false);\n onChangeOptions({\n ...options,\n [id]: !isOptionEnabled\n });\n };\n return (\n <MenuItem key={id} classes={{root: styles.menuItem}} onClick={handleClick}>\n <CheckIcon className={classnames(styles.checkIcon, {[styles.hidden]: !isOptionEnabled})} />\n <Typography classes={{root: styles.menuText}}>{label}</Typography>\n </MenuItem>\n );\n };\n\n return (\n <>\n <SmallIconButton\n icon={MoreVertIcon}\n size={'L'}\n ref={buttonRef}\n className={classnames(styles.buttonRoot, {\n [styles.selected]: isOpen\n })}\n onClick={toggleOpen}\n aria-pressed={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-haspopup=\"true\"\n />\n <Menu\n id={menuId}\n variant=\"menu\"\n open={isOpen}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={buttonRef.current}\n onClose={toggleOpen}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{autoFocusItem: isOpen}}\n >\n {optionsData.map(renderOptionItem)}\n </Menu>\n </>\n );\n};\n\nOptionsMenu.propTypes = {\n options: PropTypes.object,\n optionsData: PropTypes.array,\n onChangeOptions: PropTypes.func\n};\n\nexport default OptionsMenu;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n '& > button': {\n margin: '0 -2px'\n },\n paddingRight: '15px'\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n },\n flex1: {\n flex: 1\n },\n selected: {\n backgroundColor: fade(theme.palette.primary.main, 0.12)\n }\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {\n BasicViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n Spacer,\n VerticalDivider\n} from '@reltio/components';\nimport OptionsMenu from '../OptionsMenu/OptionsMenu';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\n\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst MatchesTableHeader = ({\n total,\n columnsData,\n selectedColumns,\n onChangeColumns,\n filtersEnabled,\n onToggleFilters,\n showFilters,\n options,\n optionsData,\n onChangeOptions\n}) => {\n const styles = useStyles();\n const showOptions = !isEmptyValue(optionsData);\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n <Spacer />\n {showFilters && <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />}\n {showOptions && (\n <OptionsMenu options={options} optionsData={optionsData} onChangeOptions={onChangeOptions} />\n )}\n {(showFilters || showOptions) && <VerticalDivider height={28} margin={10} />}\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n </BasicViewHeader>\n );\n};\n\nMatchesTableHeader.propTypes = {\n total: PropTypes.number,\n showFilters: PropTypes.bool,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n options: PropTypes.object,\n optionsData: PropTypes.array,\n onChangeOptions: PropTypes.func\n};\n\nexport default MatchesTableHeader;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {fade} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n '& > button': {\n margin: '0 -2px'\n },\n paddingRight: '15px'\n },\n flex1: {\n flex: 1\n },\n selected: {\n backgroundColor: fade(theme.palette.primary.main, 0.12)\n }\n}));\n","import {Typography as Typography} from '@material-ui/core';\nimport {BasicViewHeader} from '@reltio/components';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst TableHeaderSelectionMode = ({selectedItems, children}) => {\n const styles = useStyles();\n const hasSelectedItems = selectedItems.length > 0;\n return (\n <BasicViewHeader title={''} classes={{root: classnames(styles.header, {[styles.selected]: hasSelectedItems})}}>\n <div className={styles.flex1}>\n <Typography color=\"primary\">\n {i18n.text('Selected: ${count}', {count: selectedItems.length})}\n </Typography>\n </div>\n {children}\n </BasicViewHeader>\n );\n};\n\nTableHeaderSelectionMode.propTypes = {\n selectedItems: PropTypes.arrayOf(PropTypes.object),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nTableHeaderSelectionMode.defaultProps = {\n selectedItems: []\n};\n\nexport default TableHeaderSelectionMode;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n actions: {\n display: 'flex',\n alignItems: 'center'\n },\n button: {\n marginLeft: '8px'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {map, prop} from 'ramda';\nimport {VerticalDivider} from '@reltio/components';\nimport {EntityType, getActionPermissionForMatches, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport {CompareModeButton, SetAMatchButton} from '../Actions';\n\nimport {useStyles} from './styles';\n\nconst getEntityObjects = map(prop('object'));\nexport const FindMatchesViewActions = ({entity, matches, metadata, config}) => {\n const styles = useStyles();\n const entities = getEntityObjects(matches);\n const {canMark} = getActionPermissionForMatches(metadata, config, entity, matches);\n\n return (\n <div className={styles.actions}>\n {canMark && <SetAMatchButton entity={entity} entities={entities} mode=\"button\" />}\n <VerticalDivider height={28} margin={10} />\n <CompareModeButton selectedMatchesCount={matches.length} />\n </div>\n );\n};\n\nFindMatchesViewActions.propTypes = {\n entity: EntityType,\n matches: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n config: PotentialMatchesConfigType\n};\n","import {DataTypes} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false\n }\n];\n\nconst OPTIONS_DATA = [\n {\n id: 'showInactiveEntities',\n get label() {\n return i18n.text('Include entities that have ended');\n }\n }\n];\n\nexport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n tableView: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n matchesView: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden'\n },\n comparisonView: {\n width: 'calc(100% - 280px)'\n },\n fullScreen: {\n height: '100%',\n zIndex: '200'\n }\n}));\n","import {useEffect} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../constants/views';\n\nexport const useLimitSelection = (comparisonViewMode, setLimitSelection) => {\n useEffect(() => {\n setLimitSelection(comparisonViewMode !== ComparisonViewMode.HIDDEN ? MAX_PROFILES_TO_COMPARE : undefined);\n }, [comparisonViewMode, setLimitSelection]);\n};\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatch,\n getEntityUriFromMatchObject,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport PropTypes from 'prop-types';\nimport {identity, propEq} from 'ramda';\nimport React, {memo, useCallback, useEffect, useMemo, useRef} from 'react';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {buildMDMFilters} from '../../helpers/filtersHelpers';\nimport {getColumnsIdFromData} from '../../helpers/tableHelpers';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnsData';\nimport {useMatchesTable} from '../../hooks/useMatchesTable';\nimport {SetAMatchButton} from '../Actions';\nimport FindMatchesViewControls from '../ComparisonTable/cell-renderers/MatchControls/FindMatchesViewControls';\nimport ComparisonView from '../ComparisonView';\nimport FullScreenView from '../FullScreenView';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport MatchesTableHeader from '../MatchesTableHeader/MatchesTableHeader';\nimport TableHeaderSelectionMode from '../TableHeaderSelectionMode/TableHeaderSelectionMode';\nimport {FindMatchesViewActions} from '../ViewActions/FindMatchesViewActions';\nimport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA} from './helpers/tableHelpers';\nimport {useStyles} from './styles';\nimport {useLimitSelection} from '../../hooks/useLimitSelection';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_COLUMNS = getColumnsIdFromData(DEFAULT_COLUMNS_DATA);\nconst DEFAULT_SORT_ORDER = 'asc';\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS;\nconst DEFAULT_OPTIONS = {\n showInactiveEntities: false\n};\n\nexport const FindMatchesView = memo(({entity, metadata, config, fullScreenContainer}) => {\n const styles = useStyles();\n const [actions, state] = useMatchesTable(\n DEFAULT_COLUMNS,\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_SORT_FIELD},\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_OPTIONS\n );\n const {comparisonViewMode, isGlobalSpinnerActive} = useViewState();\n const {\n changeRowsPerPage,\n changePage,\n changeColumns,\n toggleFilters,\n changeFilter,\n toggleSort,\n setSelectedItems,\n toggleSelect,\n setOptions,\n setLimitSelection\n } = actions;\n const {sorting, page, rowsPerPage, visibleColumns, filters, selectedItems, options} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_COLUMNS_DATA,\n metadata,\n entityType\n });\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n useEffect(() => {\n changeColumns(defaultColumns);\n }, [defaultColumns, changeColumns]);\n const requestFilters = useMemo(\n () => [\n ...buildMDMFilters(entityType, filters, allColumnsData),\n {filter: 'not equals', fieldName: 'uri', values: [entityUri]}\n ],\n [entityType, filters, allColumnsData, entityUri]\n );\n\n const columnsToSelect = useMemo(() => getColumnsIdFromData(visibleColumnsData), [visibleColumnsData]);\n\n const {entities, total, findEntities} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n select: columnsToSelect,\n page,\n rowsPerPage,\n options\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n findEntities();\n resetSelected();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useEffect(() => {\n const selected = selectedItems.map((item) => {\n const entity = entities.find(\n (entity) => getEntityUriFromMatchObject(entity) === getEntityUriFromMatchObject(item)\n );\n return entity ? entity : item;\n });\n setSelectedItems(selected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, filters, options]);\n\n useLimitSelection(comparisonViewMode, setLimitSelection);\n const isFullscreenMode = comparisonViewMode === ComparisonViewMode.FULL_SCREEN;\n const isComparisonViewShown = comparisonViewMode === ComparisonViewMode.VISIBLE;\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n columnsData: groupedColumnsData,\n config,\n selectedColumns: visibleColumns,\n onChangeColumns: changeColumns,\n controlsRenderer: FindMatchesViewControls\n };\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName}) => {\n const entities = [hoveredMatch.object];\n const {canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n return (\n canMark && (\n <SetAMatchButton\n entity={entity}\n entities={entities}\n mode=\"iconButton\"\n className={buttonClassName}\n />\n )\n );\n },\n [config, entity, metadata]\n );\n\n const basicTableRef = useRef(null);\n return isFullscreenMode ? (\n <FullScreenView fullScreenContainer={fullScreenContainer}>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.fullScreen}} />\n </ColumnHandlerContext.Provider>\n </FullScreenView>\n ) : (\n <div className={styles.matchesView}>\n {selectedItems && selectedItems.length > 0 ? (\n <TableHeaderSelectionMode selectedItems={selectedItems}>\n <FindMatchesViewActions\n matches={selectedItems}\n entity={entity}\n metadata={metadata}\n config={config}\n />\n </TableHeaderSelectionMode>\n ) : (\n <MatchesTableHeader\n total={total}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={changeColumns}\n filtersEnabled={!!filters}\n onToggleFilters={toggleFilters}\n showFilters={true}\n options={options}\n optionsData={OPTIONS_DATA}\n onChangeOptions={setOptions}\n />\n )}\n <div className={styles.mainArea}>\n <div className={styles.tableView}>\n <MatchesTable\n entity={entity}\n metadata={metadata}\n columnsData={visibleColumnsData}\n matches={entities}\n selected={selectedItems}\n onToggleSelect={toggleSelect}\n onResetSelect={resetSelected}\n onSelectAll={selectAll}\n filters={filters}\n onFilter={changeFilter}\n sorting={sorting}\n onSort={toggleSort}\n actionButtonsRenderer={actionButtonsRenderer}\n basicTableRef={basicTableRef}\n isComparisonViewShown={isComparisonViewShown}\n />\n <BasicTablePagination\n rowsPerPageOptions={isComparisonViewShown ? [] : ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {isComparisonViewShown && (\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n </ColumnHandlerContext.Provider>\n )}\n </div>\n </div>\n );\n});\nFindMatchesView.displayName = 'FindMatchesView';\nFindMatchesView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {AttributesList, ConnectionRelationTypeSelector} from '@reltio/components';\n\nimport {\n createRelation,\n EntityType,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n PotentialMatchesConfigType,\n validateConnectionRelation\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\nimport {useStyles} from './styles';\n\nconst AddRelationDialog = ({config, mainEntity, currentEntity, matchRules, open, onClose = identity}) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata = useSelector(mdm.selectors.getMetadata);\n\n const {relation = {}} = useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes = useMemo(() => getRelationAttributesList(metadata, relationType), [\n relationType,\n metadata\n ]);\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n (relation) => {\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch)(relation);\n },\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n }).catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle disableTypography classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={ModeTypes.EDITING}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button disabled={disabled} color=\"primary\" onClick={onAdd}>\n {i18n.text('Add')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nAddRelationDialog.propTypes = {\n config: PotentialMatchesConfigType,\n mainEntity: EntityType,\n currentEntity: EntityType,\n matchRules: PropTypes.arrayOf(PropTypes.string),\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default AddRelationDialog;\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (metadata, config, mainEntity, entity, matchRules) => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {}) => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {pipe} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\n\nexport const useAddRelationDialog = (config) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({mainEntity, currentEntity, matchRules}) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config.id, dispatch]\n );\n\n const AddRelationDialogRenderer = () => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n };\n\n AddRelationDialogRenderer.propTypes = {};\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Action} from './ActionsPanel';\n\ntype Props = {\n item: Action;\n onMenuClose?: () => void;\n};\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const {ActionButton, props} = item;\n return <ActionButton ref={ref} mode=\"menuItem\" onMenuClose={onMenuClose} {...props} />;\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {splitAt} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? 'button' : 'iconButton';\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton key={index} mode={buttonMode} className={classes?.actionButton} {...props} />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions')\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport {prop} from 'ramda';\nimport {isDataTenantEntity} from '@reltio/mdm-sdk';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../../../Actions';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport {MatchControlsCellType} from './constants/prop-types';\nimport {ActionsPanel} from '../../../ActionsPanel/ActionsPanel';\n\nimport useStyles from './styles';\n\nconst MatchesViewControls = ({value: {show, entity, entities, matchRules, permission, config}}) => {\n const styles = useStyles();\n const {canMerge, canAddRelation, canMark} = permission;\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: entities.length > 0 ? entities[0] : {},\n matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return show ? (\n <>\n <div className={styles.container}>\n {canMerge && (\n <MergeButton entity={entity} entities={entities} className={styles.mergeButton} mode=\"button\" />\n )}\n <ActionsPanel\n actions={actions}\n numberOfButtons={1}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n {canAddRelation && showDialog && <AddRelationDialogRenderer />}\n </>\n ) : null;\n};\n\nMatchesViewControls.propTypes = MatchControlsCellType;\n\nexport default MatchesViewControls;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {map, prop} from 'ramda';\nimport {VerticalDivider} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatches,\n isDataTenantEntity,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {CompareModeButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {useStyles} from './styles';\n\nconst getEntityObjects = map(prop('object'));\nexport const MatchesViewActions = ({entity, matches, metadata, config}) => {\n const entities = getEntityObjects(matches);\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, matches);\n const styles = useStyles();\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity]\n );\n\n return (\n <div className={styles.actions}>\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n classes={{\n actionButton: styles.button\n }}\n />\n <VerticalDivider height={28} margin={10} />\n <CompareModeButton selectedMatchesCount={matches.length} />\n </div>\n );\n};\n\nMatchesViewActions.propTypes = {\n entity: EntityType,\n matches: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n config: PotentialMatchesConfigType\n};\n","import {DataTypes} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: 'matchRules',\n get label() {\n return i18n.text('Match rule');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n hideable: false,\n initialWidth: 100,\n autoResize: false\n },\n {\n id: 'mlMatchRules',\n get label() {\n return i18n.text('Match IQ');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n hideable: false,\n initialWidth: 130,\n minWidth: 130,\n autoResize: false\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false\n }\n];\n\nconst OPTIONS_DATA = [\n {\n id: 'showTransitiveMatches',\n get label() {\n return i18n.text('Show transitive matches');\n }\n },\n {\n id: 'showInactiveEntities',\n get label() {\n return i18n.text('Include entities that have ended');\n }\n }\n];\n\nconst ADDITIONAL_COLUMNS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_INT\n },\n initialWidth: 100\n }\n];\n\nexport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA, ADDITIONAL_COLUMNS_DATA};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n tableView: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n matchesView: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden'\n },\n comparisonView: {\n width: 'calc(100% - 280px)'\n },\n fullScreen: {\n height: '100%',\n zIndex: '200'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {identity, prop, propEq} from 'ramda';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n EntitiesMapContext,\n useCollaboration\n} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatch,\n getPotentialMatchesObjectIdsForCollaboration,\n isDataTenantEntity,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {getColumnsIdFromData} from '../../helpers/tableHelpers';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useMatches} from '../../hooks/useMatches';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnsData';\nimport {useMatchesTable} from '../../hooks/useMatchesTable';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport ComparisonView from '../ComparisonView';\nimport FullScreenView from '../FullScreenView';\nimport MatchesViewControls from '../ComparisonTable/cell-renderers/MatchControls/MatchesViewControls';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport MatchesTableHeader from '../MatchesTableHeader/MatchesTableHeader';\nimport TableHeaderSelectionMode from '../TableHeaderSelectionMode/TableHeaderSelectionMode';\nimport {MatchesViewActions} from '../ViewActions/MatchesViewActions';\nimport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA, ADDITIONAL_COLUMNS_DATA} from './helpers/tableHelpers';\nimport {useLimitSelection} from '../../hooks/useLimitSelection';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS = getColumnsIdFromData(DEFAULT_COLUMNS_DATA);\nconst DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\n\nexport const MatchesView = memo(({entity, metadata, config, fullScreenContainer}) => {\n const styles = useStyles();\n const [actions, state] = useMatchesTable(\n DEFAULT_COLUMNS,\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_COLUMNS[0]},\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_OPTIONS\n );\n const {comparisonViewMode, isGlobalSpinnerActive} = useViewState();\n const {\n changeRowsPerPage,\n changePage,\n changeColumns,\n toggleFilters,\n changeFilter,\n setSelectedItems,\n toggleSelect,\n setOptions,\n setLimitSelection\n } = actions;\n const {page, rowsPerPage, visibleColumns, filters, selectedItems, options} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n\n //workaround before we support sorting for all columns\n const sorting = visibleColumns.includes('score')\n ? {field: 'score', order: 'desc'}\n : {order: DEFAULT_SORT_ORDER, field: DEFAULT_COLUMNS[0]};\n const {matches, total, entitiesMap, loadMatches} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: '',\n page,\n sorting,\n rowsPerPage,\n options\n });\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadMatches();\n resetSelected();\n });\n\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_COLUMNS_DATA,\n additionalColumnsData: ADDITIONAL_COLUMNS_DATA,\n metadata,\n entityType\n });\n\n useEffect(() => {\n changeColumns(defaultColumns);\n }, [defaultColumns, changeColumns]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n useLimitSelection(comparisonViewMode, setLimitSelection);\n const isFullscreenMode = comparisonViewMode === ComparisonViewMode.FULL_SCREEN;\n const isComparisonViewShown = comparisonViewMode === ComparisonViewMode.VISIBLE;\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n columnsData: groupedColumnsData,\n config,\n selectedColumns: visibleColumns,\n onChangeColumns: changeColumns,\n entitiesMap,\n controlsRenderer: MatchesViewControls\n };\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}) => {\n const {canMerge, canAddRelation, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog]\n );\n const basicTableRef = useRef(null);\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n {isFullscreenMode ? (\n <FullScreenView fullScreenContainer={fullScreenContainer}>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.fullScreen}} />\n </ColumnHandlerContext.Provider>\n </FullScreenView>\n ) : (\n <div className={styles.matchesView}>\n {selectedItems && selectedItems.length > 0 ? (\n <TableHeaderSelectionMode selectedItems={selectedItems}>\n <MatchesViewActions\n matches={selectedItems}\n entity={entity}\n metadata={metadata}\n config={config}\n />\n </TableHeaderSelectionMode>\n ) : (\n <MatchesTableHeader\n total={total}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={changeColumns}\n filtersEnabled={!!filters}\n onToggleFilters={toggleFilters}\n options={options}\n optionsData={isDataTenantEntity(entity) ? undefined : OPTIONS_DATA}\n onChangeOptions={setOptions}\n />\n )}\n <div className={styles.mainArea}>\n <div className={styles.tableView}>\n <MatchesTable\n entity={entity}\n metadata={metadata}\n columnsData={visibleColumnsData}\n matches={matches}\n selected={selectedItems || []}\n onToggleSelect={toggleSelect}\n onResetSelect={resetSelected}\n onSelectAll={selectAll}\n filters={filters}\n onFilter={changeFilter}\n entitiesMap={entitiesMap}\n actionButtonsRenderer={actionButtonsRenderer}\n basicTableRef={basicTableRef}\n isComparisonViewShown={isComparisonViewShown}\n />\n <BasicTablePagination\n rowsPerPageOptions={isComparisonViewShown ? [] : ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {isComparisonViewShown && (\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n </ColumnHandlerContext.Provider>\n )}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </div>\n )}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\nMatchesView.displayName = 'MatchesView';\n\nMatchesView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import {useCallback} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useMatches = ({entity, filter, sorting, page, rowsPerPage, options, enabled}) => {\n const {setGlobalSpinner} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting\n });\n\n return {matches, total, entitiesMap, loadMatches};\n};\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n ActivityFilters,\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, options, enabled}) => {\n const {order, field} = sorting || {};\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [matches, setMatches] = useState([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const loadNotMatchesIfNeeded = useCallback(\n (force) => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter,\n sort: field,\n force,\n order,\n activeness: options.showInactiveEntities ? ActivityFilters.ALL : ActivityFilters.ACTIVE_ONLY\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response);\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally((_) => setGlobalSpinner(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, options, enabled] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches};\n};\n","import React from 'react';\nimport {prop} from 'ramda';\nimport {isDataTenantEntity} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../../../Actions';\nimport {MatchControlsCellType} from './constants/prop-types';\nimport useStyles from './styles';\nimport {ActionsPanel} from '../../../ActionsPanel/ActionsPanel';\n\nconst NotMatchViewControls = ({value: {show, entity, entities, permission}}) => {\n const styles = useStyles();\n const {canMerge, canMark} = permission;\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return show ? (\n <>\n <div className={styles.container}>\n {canMerge && (\n <MergeButton entity={entity} entities={entities} className={styles.mergeButton} mode=\"button\" />\n )}\n <ActionsPanel\n actions={actions}\n numberOfButtons={1}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n </>\n ) : null;\n};\n\nNotMatchViewControls.propTypes = MatchControlsCellType;\n\nexport default NotMatchViewControls;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {map, prop} from 'ramda';\nimport {VerticalDivider} from '@reltio/components';\nimport {\n EntityType,\n isDataTenantEntity,\n getActionPermissionForMatches,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {CompareModeButton, DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\nconst getEntityObjects = map(prop('object'));\nexport const NotMatchViewActions = ({entity, matches, metadata, config}) => {\n const styles = useStyles();\n const entities = getEntityObjects(matches);\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, matches);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entities, entity, hasDTEntity]\n );\n\n return (\n <div className={styles.actions}>\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n classes={{\n actionButton: styles.button\n }}\n />\n <VerticalDivider height={28} margin={10} />\n <CompareModeButton selectedMatchesCount={matches.length} />\n </div>\n );\n};\n\nNotMatchViewActions.propTypes = {\n entity: EntityType,\n matches: PropTypes.arrayOf(PropTypes.object),\n metadata: MetadataType,\n config: PotentialMatchesConfigType\n};\n","import {DataTypes} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false\n }\n];\n\nconst OPTIONS_DATA = [\n {\n id: 'showInactiveEntities',\n get label() {\n return i18n.text('Include entities that have ended');\n }\n }\n];\nexport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n tableView: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n matchesView: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'row',\n overflow: 'hidden'\n },\n comparisonView: {\n width: 'calc(100% - 280px)'\n },\n fullScreen: {\n height: '100%',\n zIndex: '200'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {identity, prop, propEq} from 'ramda';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n EntitiesMapContext,\n CollaborationContext,\n useCollaboration\n} from '@reltio/components';\nimport {\n EntityType,\n getActionPermissionForMatch,\n getPotentialMatchesObjectIdsForCollaboration,\n isDataTenantEntity,\n MetadataType,\n PotentialMatchesConfigType\n} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useViewState} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {getColumnsIdFromData} from '../../helpers/tableHelpers';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnsData';\nimport {useMatchesTable} from '../../hooks/useMatchesTable';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport ComparisonView from '../ComparisonView';\nimport FullScreenView from '../FullScreenView';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport MatchesTableHeader from '../MatchesTableHeader/MatchesTableHeader';\nimport NotMatchViewControls from '../ComparisonTable/cell-renderers/MatchControls/NotMatchViewControls';\nimport TableHeaderSelectionMode from '../TableHeaderSelectionMode/TableHeaderSelectionMode';\nimport {NotMatchViewActions} from '../ViewActions/NotMatchViewActions';\nimport {DEFAULT_COLUMNS_DATA, OPTIONS_DATA} from './helpers/tableHelpers';\nimport {useLimitSelection} from '../../hooks/useLimitSelection';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS = getColumnsIdFromData(DEFAULT_COLUMNS_DATA);\nconst DEFAULT_OPTIONS = {\n showInactiveEntities: false\n};\n\nexport const NotMatchView = memo(({entity, metadata, config, fullScreenContainer}) => {\n const {comparisonViewMode, isGlobalSpinnerActive} = useViewState();\n const styles = useStyles();\n const [actions, state] = useMatchesTable(\n DEFAULT_COLUMNS,\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_COLUMNS[0]},\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_OPTIONS\n );\n const {\n changeRowsPerPage,\n changePage,\n changeColumns,\n toggleFilters,\n changeFilter,\n setSelectedItems,\n toggleSelect,\n setOptions,\n setLimitSelection\n } = actions;\n const {page, rowsPerPage, visibleColumns, filters, selectedItems, options} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n\n const {matches, total, entitiesMap, loadNotMatches} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: '',\n page,\n rowsPerPage,\n options\n });\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadNotMatches();\n resetSelected();\n });\n\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_COLUMNS_DATA,\n metadata,\n entityType\n });\n\n useEffect(() => {\n changeColumns(defaultColumns);\n }, [defaultColumns, changeColumns]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n useLimitSelection(comparisonViewMode, setLimitSelection);\n const isFullscreenMode = comparisonViewMode === ComparisonViewMode.FULL_SCREEN;\n const isComparisonViewShown = comparisonViewMode === ComparisonViewMode.VISIBLE;\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n columnsData: groupedColumnsData,\n config,\n selectedColumns: visibleColumns,\n onChangeColumns: changeColumns,\n controlsRenderer: NotMatchViewControls\n };\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata]\n );\n const basicTableRef = useRef(null);\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n {isFullscreenMode ? (\n <FullScreenView fullScreenContainer={fullScreenContainer}>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.fullScreen}} />\n </ColumnHandlerContext.Provider>\n </FullScreenView>\n ) : (\n <div className={styles.matchesView}>\n {selectedItems && selectedItems.length > 0 ? (\n <TableHeaderSelectionMode selectedItems={selectedItems}>\n <NotMatchViewActions\n matches={selectedItems}\n entity={entity}\n metadata={metadata}\n config={config}\n />\n </TableHeaderSelectionMode>\n ) : (\n <MatchesTableHeader\n total={total}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={changeColumns}\n filtersEnabled={!!filters}\n onToggleFilters={toggleFilters}\n options={options}\n optionsData={OPTIONS_DATA}\n onChangeOptions={setOptions}\n />\n )}\n <div className={styles.mainArea}>\n <div className={styles.tableView}>\n <MatchesTable\n entity={entity}\n metadata={metadata}\n columnsData={visibleColumnsData}\n matches={matches}\n selected={selectedItems || []}\n onToggleSelect={toggleSelect}\n onResetSelect={resetSelected}\n onSelectAll={selectAll}\n filters={filters}\n onFilter={changeFilter}\n actionButtonsRenderer={actionButtonsRenderer}\n basicTableRef={basicTableRef}\n isComparisonViewShown={isComparisonViewShown}\n />\n <BasicTablePagination\n rowsPerPageOptions={isComparisonViewShown ? [] : ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n basicTableRef={basicTableRef}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {isComparisonViewShown && (\n <ColumnHandlerContext.Provider value={toggleSelect}>\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n </ColumnHandlerContext.Provider>\n )}\n </div>\n </div>\n )}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\nNotMatchView.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import {EntityType, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {DragAndDrop, UsersContext, useUsers} from '@reltio/components';\nimport {Views} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport MatchesView from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\nimport {ReloadDataProvider} from '../../contexts/ReloadDataContext';\n\nexport const Content = ({entity, metadata, config, activeView, fullScreenContainer}) => {\n const users = useUsers();\n\n let Component;\n switch (activeView) {\n case Views.POTENTIAL_MATCHES:\n Component = (\n <MatchesView\n entity={entity}\n metadata={metadata}\n config={config}\n fullScreenContainer={fullScreenContainer}\n />\n );\n break;\n case Views.FIND_MATCHES:\n Component = (\n <FindMatchesView\n entity={entity}\n metadata={metadata}\n config={config}\n fullScreenContainer={fullScreenContainer}\n />\n );\n break;\n case Views.NOT_A_MATCH:\n Component = (\n <NotMatchView\n entity={entity}\n metadata={metadata}\n config={config}\n fullScreenContainer={fullScreenContainer}\n />\n );\n break;\n default:\n Component = <div />;\n break;\n }\n return (\n <UsersContext.Provider value={users}>\n <DragAndDrop>\n <ReloadDataProvider>{Component}</ReloadDataProvider>\n </DragAndDrop>\n </UsersContext.Provider>\n );\n};\n\nContent.propTypes = {\n entity: EntityType,\n metadata: MetadataType,\n config: PotentialMatchesConfigType,\n activeView: PropTypes.string,\n fullScreenContainer: PropTypes.instanceOf(Element)\n};\n","import React from 'react';\nimport {Tabs as Tabs} from '@material-ui/core';\nimport {Tab as Tab} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport {text} from 'ui-i18n';\nimport {Views} from '../../constants/views';\n\nexport const PMTabs = ({\n availableTabs = [Views.POTENTIAL_MATCHES, Views.FIND_MATCHES, Views.NOT_A_MATCH],\n activeTab,\n onChange\n}) => {\n const labels = {\n [Views.POTENTIAL_MATCHES]: text('POTENTIAL MATCHES'),\n [Views.FIND_MATCHES]: text('FIND MATCHES'),\n [Views.NOT_A_MATCH]: text('NOT A MATCH')\n };\n return (\n <Tabs value={activeTab} onChange={onChange} indicatorColor=\"primary\" textColor=\"primary\" scrollButtons=\"on\">\n {availableTabs.map((value) => (\n <Tab key={value} label={labels[value]} value={value} classes={{}} />\n ))}\n </Tabs>\n );\n};\n\nPMTabs.propTypes = {\n availableTabs: PropTypes.arrayOf(PropTypes.string),\n activeTab: PropTypes.string,\n onChange: PropTypes.func\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((_) => ({\n basicView: {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n },\n content: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import {BasicView} from '@reltio/components';\nimport {EntityType, isDataTenantEntity, MetadataType, PotentialMatchesConfigType} from '@reltio/mdm-sdk';\nimport PropTypes from 'prop-types';\nimport React, {useState, memo} from 'react';\nimport Content from './components/Content';\nimport PMTabs from './components/PMTabs';\nimport {Views} from './constants/views';\nimport {useStyles} from './styles';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\n\nconst WrappedPotentialMatchesView = (props) => {\n return (\n <ViewStateProvider>\n <PotentialMatchesView {...props} />\n </ViewStateProvider>\n );\n};\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\nconst PotentialMatchesView = memo(({config, entity, metadata, getSavedState, saveState}) => {\n const styles = useStyles();\n const availableTabs = isDataTenantEntity(entity) ? [Views.POTENTIAL_MATCHES] : config.availableTabs;\n const [activeTab, setActiveTab] = useState(Views.POTENTIAL_MATCHES);\n const onTabChange = (event, tab) => setActiveTab(tab);\n const [fullScreenContainer, setFullScreenContainer] = useState();\n return (\n <BasicView ref={setFullScreenContainer} className={styles.basicView}>\n <div className={styles.content}>\n <PMTabs activeTab={activeTab} availableTabs={availableTabs} onChange={onTabChange} />\n <Content\n fullScreenContainer={fullScreenContainer}\n entity={entity}\n metadata={metadata}\n config={config}\n activeView={activeTab}\n />\n </div>\n </BasicView>\n );\n});\nPotentialMatchesView.displayName = 'PotentialMatchesView';\nPotentialMatchesView.propTypes = {\n config: PotentialMatchesConfigType,\n entity: EntityType,\n metadata: MetadataType,\n dispatch: PropTypes.func,\n getSavedState: PropTypes.func,\n saveState: PropTypes.func\n};\n\nexport default WrappedPotentialMatchesView;\n","import PotentialMatchesView from './PotentialMatchesView';\nimport mdm from '@reltio/mdm-module';\nimport {connect} from 'react-redux';\n\nconst mapStateToProps = (state) => {\n return {\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state)\n };\n};\n\nexport default connect(mapStateToProps)(PotentialMatchesView);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n }\n});\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {Entity, CollaborationObjectTypes, createRelatedObjectUris} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {\n ProfileBand,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation\n} from '@reltio/components';\nimport {Box as Box} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nexport const PotentialMatchesProfileBand = memo(({className}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const entityUri: string = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n return (\n <ProfileBand className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)} entity={entity}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n <ProfileBandNavigation />\n </Box>\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entityUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n );\n});\n\nPotentialMatchesProfileBand.displayName = 'PotentialMatchesProfileBand';\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 xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M20 4v14h2V4c0-1.1-.9-2-2-2H6v2h14zM2 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12z\",\n fill: \"currentColor\"\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 xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 12a4 4 0 100-8 4 4 0 000 8zM10.35 14.01C7.62 13.91 2 15.27 2 18v2h9.54c-2.47-2.76-1.23-5.89-1.19-5.99zM19.43 18.02c.36-.59.57-1.28.57-2.02 0-2.21-1.79-4-4-4s-4 1.79-4 4 1.79 4 4 4c.74 0 1.43-.22 2.02-.57L20.59 22 22 20.59l-2.57-2.57zM16 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\",\n fill: \"currentColor\"\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 fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 20h15.002L21 23l1.27-1.27-20-20.01L1 2.99l6.172 6.175a4.007 4.007 0 002.66 2.662l2.23 2.23A10.754 10.754 0 0011 14c-2.67 0-8 1.34-8 4v2zm8-16a3.987 3.987 0 00-2.795 1.137l5.656 5.659A3.999 3.999 0 0011 4z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","export enum ActivePanel {\n PotentialMatches,\n FindMatches,\n NotAMatch\n}\n\nexport enum ComparisonViewMode {\n TABLE = 'TABLE',\n COLUMNS = 'COLUMNS'\n}\n\nexport const MAX_PROFILES_TO_COMPARE = 4;\n","import React, {createContext, useContext} from 'react';\n\nconst DataContext = createContext<{\n reloadData: () => void;\n setReloadHandler: (f: () => void) => void;\n }>({\n reloadData: () => {},\n setReloadHandler: () => {}\n });\nconst createContextValue = () => {\n let dataHandler;\n const reloadData = (): void => {\n if (dataHandler) {\n dataHandler();\n }\n };\n const setReloadHandler = (reloadHandler: () => void) => {\n dataHandler = reloadHandler;\n };\n return {\n reloadData,\n setReloadHandler\n };\n};\nconst contextValue = createContextValue();\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n return <DataContext.Provider value={contextValue}>{children}</DataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(DataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel,\n getAllAttributeTypesTree,\n getEntityType,\n Metadata\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, pluck, reject, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype AttrNode = {\n name: string;\n children: AttrNode[];\n label: string;\n uri: string;\n};\n\ntype AttributeConfig = {\n title: string;\n fieldName: string;\n children?: AttributeConfig[];\n notSelectable?: boolean;\n};\n\nconst createAttributeItemConfig = (metadata: Metadata, attrNode: AttrNode, fieldName?: string, parents = []) => {\n const config = createAttributeItemBasicConfig(metadata, attrNode, fieldName, parents);\n const children = (attrNode.children || []).map((childNode) =>\n createAttributeItemConfig(metadata, childNode, '', parents.concat({name: attrNode.name, label: attrNode.label}))\n );\n if (children.length) {\n config.children = children;\n config.notSelectable = true;\n }\n return config;\n};\n\nconst createAttributeItemBasicConfig = (\n metadata: Metadata,\n attrNode: AttrNode,\n fieldName: string,\n parents = []\n): AttributeConfig => {\n const attrType = omit(['children'], attrNode);\n const title = attrType.label || attrType.name;\n return {\n title,\n fieldName: fieldName || attributeUriToSearchUri(attrType.uri, parents)\n };\n};\n\nexport const collectAttributeItems = (metadata: Metadata, entityTypeUri?: string) =>\n entityTypeUri\n ? getAllAttributeTypesTree(metadata, entityTypeUri).map((attrNode) =>\n createAttributeItemConfig(metadata, attrNode)\n )\n : [];\n\nexport const getSortingItemsGroups = (metadata: Metadata, entityTypeUri: string) => [\n {\n title: '',\n attributes: collectAttributeItems(metadata, getEntityType(metadata, entityTypeUri))\n }\n];\n\nconst getColumnsDataFromEntityAttributes = pipe(\n map((attr) => ({\n id: attributeUriToSearchUri(attr.uri),\n label: getLabel(attr.label),\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n }))\n);\n\nexport const getColumnsData = pipe(getEntityAttributesFromMetadata, getColumnsDataFromEntityAttributes);\n\nexport const getSortOptionIdFromData = pluck('id');\n\nexport const isMatchAttrColumn = curry((matchAttributes: string[], column: MatchesColumnsData) =>\n matchAttributes\n .map((attrUri) => attributeUriToSearchUri(attrUri))\n .some((id) => column.id === id || (isReferenceAttrColumn(column) && isSubAttrIdForColumn(column, id)))\n);\nconst isNestedAttrColumn = (column: MatchesColumnsData) => isNested(column.dataTypeDefinition);\nconst isReferenceAttrColumn = (column: MatchesColumnsData) => isReference(column.dataTypeDefinition);\nconst isSubAttrIdForColumn = curry((parentColumn: MatchesColumnsData, columnId: string) =>\n columnId.startsWith(`${parentColumn.id}.`)\n);\nconst isNestedForOneOfColumns = curry(\n (columns: MatchesColumnsData[], column: MatchesColumnsData) =>\n isNestedAttrColumn(column) && columns.some(({id}) => isSubAttrIdForColumn(column, id))\n);\nconst isRelatedToColumns = (columns: MatchesColumnsData[]) =>\n either(includes(__, columns), isNestedForOneOfColumns(columns));\n\nexport const getMatchAttrColumns = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): MatchesColumnsData[] => pipe(reject(isNestedAttrColumn), filter(isMatchAttrColumn(matchAttributes)))(columnsData);\n\nexport const groupColumnsDataByMatchAttributes = (\n matchAttributes: string[],\n columnsData: MatchesColumnsData[]\n): GroupedColumnData[] => {\n const [matchAttrColumns, otherColumns] = pipe(\n reject(isNestedAttrColumn),\n partition(isMatchAttrColumn(matchAttributes))\n )(columnsData);\n\n return matchAttrColumns.length\n ? ([\n {\n id: 'match',\n label: i18n.text('Match attributes'),\n columns: columnsData.filter(isRelatedToColumns(matchAttrColumns))\n },\n {\n id: 'all',\n label: i18n.text('All attributes'),\n columns: columnsData.filter(isRelatedToColumns(otherColumns))\n }\n ] as GroupedColumnData[])\n : columnsData;\n};\n","import React, {createContext, useReducer, useContext} from 'react';\nimport {evolve, remove, append, pipe, both, complement, isNil, when, propSatisfies, gte, take, __} from 'ramda';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport {EntitiesMap, Match} from '@reltio/mdm-sdk';\n\ntype ActionContext = {\n setGlobalSpinner: (val: boolean) => void;\n setSelectedItems: (matches: Match[]) => void;\n toggleSelect: (match: Match) => void;\n setLimitSelection: (value?: number) => void;\n setComparisonViewMode: (mode: ComparisonViewMode) => void;\n setEntitiesMap: (entitiesMap?: EntitiesMap) => void;\n deleteExtraMatches: () => void;\n};\n\ntype StateContext = {\n isGlobalSpinnerActive: boolean;\n selectedItems: Match[];\n limitSelection?: number;\n comparisonViewMode: ComparisonViewMode;\n entitiesMap?: EntitiesMap;\n tableViewModeAvailable?: boolean;\n};\nconst ViewStateContext = createContext<StateContext>(null);\nconst ViewDispatchContext = createContext<ActionContext>(null);\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\nconst SET_COMPARISON_VIEW_MODE = 'SET_COMPARISON_VIEW_MODE';\nconst SET_ENTITIES_MAP = 'SET_ENTITIES_MAP';\nconst DELETE_EXTRA_MATCHES = 'DELETE_EXTRA_MATCHES';\n\nconst actions = {\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION),\n setComparisonViewMode: createStandardAction(SET_COMPARISON_VIEW_MODE),\n setEntitiesMap: createStandardAction(SET_ENTITIES_MAP),\n deleteExtraMatches: createStandardAction(DELETE_EXTRA_MATCHES)\n};\n\nconst viewStateReducer = (state: StateContext, action: ReturnType<ReturnType<typeof createStandardAction>>) => {\n switch (action.type) {\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n case DELETE_EXTRA_MATCHES:\n return {...state, selectedItems: state.selectedItems.slice(0, state.limitSelection)};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload.slice(0, state.limitSelection)};\n case TOGGLE_SELECT:\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex(\n (selectedItem) => selectedItem?.object?.uri === item?.object?.uri\n );\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n const {limitSelection} = state;\n if (state.tableViewModeAvailable) {\n return append(item, selected);\n }\n return pipe(\n when(\n both(complement(isNil), propSatisfies(gte(__, limitSelection), 'length')),\n take(limitSelection - 1)\n ),\n append(item)\n )(selected);\n }\n }\n },\n state\n );\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n case SET_COMPARISON_VIEW_MODE: {\n const newMode: ComparisonViewMode = action.payload;\n return {\n ...state,\n comparisonViewMode: newMode,\n limitSelection: newMode === ComparisonViewMode.COLUMNS ? MAX_PROFILES_TO_COMPARE : undefined\n };\n }\n case SET_ENTITIES_MAP: {\n const entitiesMap: EntitiesMap = action.payload;\n return {\n ...state,\n entitiesMap\n };\n }\n }\n};\n\ntype Props = {\n children: React.ReactElement;\n tableViewModeAvailable?: boolean;\n};\n\nexport const ViewStateProvider = ({children, tableViewModeAvailable}: Props) => {\n const [state, dispatch] = useReducer(viewStateReducer, {\n isGlobalSpinnerActive: false,\n selectedItems: [],\n comparisonViewMode: ComparisonViewMode.COLUMNS,\n limitSelection: MAX_PROFILES_TO_COMPARE,\n entitiesMap: {},\n tableViewModeAvailable\n });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction as ActionContext}>\n {children}\n </ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext<StateContext>(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext<ActionContext>(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst RESET = 'RESET';\nconst SET_OPTIONS = 'SET_OPTIONS';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n setOptions: createStandardAction(SET_OPTIONS)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\n\nexport const useMatchesReducer = (defaultSort: {field: string; order: 'asc' | 'desc'}, defaultRowsPerPage: number) => {\n const {field, order} = defaultSort;\n const initState = {\n sorting: {\n field,\n order\n },\n page: 0,\n rowsPerPage: defaultRowsPerPage,\n selectedItems: [],\n limitSelection: null\n };\n\n const [state, dispatch] = useReducer(stateReducer, initState);\n const resultActions = useActions({actions, dispatch});\n const viewActions = useViewStateActions();\n const viewState = useViewState();\n return [{...resultActions, ...viewActions}, {...state, ...viewState}, dispatch];\n};\n","import {ApiError, ApiErrorCode} from '@reltio/mdm-sdk';\nimport {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: error?.errorMessage || i18n.text('Something went wrong...')\n });\n};\n\nexport const showDCRReviewErrors = (error: ApiError) => {\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import {Entity, Match} from '@reltio/mdm-sdk';\n\nexport const getFilteredSelectedItems = (selectedItems: Match[], entities: Entity[]) =>\n selectedItems.filter(({object}) => !entities.some(({uri}) => uri === object.uri));\n","import React, {forwardRef} from 'react';\nimport {noop, MergeButton as MergeButtonComponent, ActionButtonMode} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const MergeButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n }\n);\n\nMergeButton.displayName = 'mergeButton';\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const NotMatchButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.displayName = 'NotMatchButton';\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}, props), React.createElement(\"path\", {\n d: \"M9 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n fillOpacity: \".541\"\n})));","import React, {forwardRef} from 'react';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const SetAMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities});\n\n return (\n <ActionButton\n className={className}\n disabled={markingIsInProgress}\n mode={mode}\n label={markingIsInProgress ? '' : i18n.text('Save on potential matches')}\n icon={SetAsMatchIcon}\n onClick={setAMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nSetAMatchButton.displayName = 'SetAMatchButton';\n","import {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n};\n\nexport const useSetAMatch = ({entities, entity}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const setAMatch = useCallback(() => {\n setGlobalSpinner(true);\n setAsMatch(entity.uri, entities).finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData]);\n\n return [isGlobalSpinnerActive, setAMatch];\n};\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: \"M10 6v2H4v12.22h12V14h2v6c0 1.05-.82 1.918-1.851 1.994L16 22H4c-1.05 0-1.918-.82-1.994-1.851L2 20V8c0-1.05.82-1.918 1.851-1.994L4 6h6zm4 10v2H6v-2h8zm-3.997-3l-.001 2H6v-2h4.003zM21 2c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1h-7l-2 2 .005-11c0-.55.445-1 .995-1h8zm-10.996 8l-.001 2H6v-2h4.004zm9.286-6.3l-3.17 3.17-1.41-1.42-1.41 1.41 2.82 2.84 4.59-4.58-1.42-1.42z\",\n id: \"svg2465811894a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2465811894b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2465811894a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2465811894b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, SnackbarContext, noop} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {useRequestDCRReview} from '../../hooks/useRequestDCRReview';\nimport DcrReviewIcon from './icons/dcrReview.svg';\n\ntype Props = {\n className?: string;\n entity: Entity;\n entities: Entity[];\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n};\n\nexport const DCRReviewButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const [operationIsInProgress, startPMReview] = useRequestDCRReview({\n entity,\n entities,\n showSnackbarMessage\n });\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n\n return canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath) ? (\n <ActionButton\n className={className}\n disabled={operationIsInProgress}\n mode={mode}\n label={operationIsInProgress ? '' : i18n.text('Potential match request')}\n icon={DcrReviewIcon}\n onClick={startPMReview}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs, Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useRequestDCRReview = ({\n entities,\n entity,\n showSnackbarMessage\n}: Props): [val: boolean, func: () => void] => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .then(() => {\n showSnackbarMessage?.(i18n.text('Potential match request: Done'));\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [setGlobalSpinner, workflowPath, uris, tenant, environment, showSnackbarMessage]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n isDataTenantEntity,\n reinstateDataTenantEntityMatch,\n reinstateMixedEntitiesMatches,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useReinstateMatch = ({entities, entity, showSnackbarMessage}: Props): [boolean, () => void] => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const onReinstateMatch = useCallback(() => {\n setGlobalSpinner(true);\n const params = {dtssPath, customerTenant: tenant, entity, entities};\n (isDataTenantEntity(entity) ? reinstateDataTenantEntityMatch(params) : reinstateMixedEntitiesMatches(params))\n .then(() => {\n showSnackbarMessage?.(i18n.text('Save as potential match: Done'));\n })\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [setGlobalSpinner, dtssPath, tenant, entity, entities, showSnackbarMessage, reloadData]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import React, {forwardRef, useContext} from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, SnackbarContext, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const ReinstateMatchButton = forwardRef<HTMLLIElement, Props>(\n ({entity, entities, className, mode = ActionButtonMode.iconButton, onMenuClose = noop}: Props, ref) => {\n const showSnackbarMessage = useContext(SnackbarContext);\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({\n entity,\n entities,\n showSnackbarMessage\n });\n\n return (\n <ActionButton\n className={className}\n disabled={reinstateIsInProgress}\n mode={mode}\n label={reinstateIsInProgress ? '' : i18n.text('Save as potential match')}\n icon={SetAsMatchIcon}\n onClick={onReinstateMatch}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nReinstateMatchButton.displayName = 'ReinstateMatchButton';\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: \"M19 14v3h3v2h-3v3h-2v-3h-3v-2l3-.001V14h2zM17 2a3 3 0 11-1.293 5.708l-4.535 4.535a5 5 0 11-1.414-1.414l4.534-4.536A3 3 0 0117 2zM7 12a3 3 0 100 6 3 3 0 000-6zm10-8a1 1 0 100 2 1 1 0 000-2z\",\n id: \"svg2904917532a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2904917532b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2904917532a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2904917532b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {forwardRef} from 'react';\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules'>) => void;\n matchRules?: string[];\n};\n\nexport const CreateRelationButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mainEntity,\n currentEntity,\n matchRules,\n mode = ActionButtonMode.iconButton,\n onClick = noop,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {ReactNode} from 'react';\n\nexport const RightSideHeaderContext = React.createContext<{\n mainTitle?: string;\n secondTitle?: string;\n content?: ReactNode;\n rightContent?: ReactNode;\n bottomContent?: ReactNode;\n onClose: () => void;\n }>({\n onClose: () => {}\n });\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n attributeSelect: {\n width: '100%',\n height: '40px'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {BasicAttributeSelector, AttributeSelectorItemsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\n\ntype AttributeOption = {\n fieldName: string;\n title: string;\n children?: AttributeOption[];\n};\n\ntype Props = {\n onChange: (val) => void;\n options: AttributeSelectorItemsGroup[];\n sortField?: string;\n};\n\nconst SortingFieldSelector = ({onChange, options, sortField}: Props) => {\n const styles = useStyles();\n const value = useMemo(() => {\n const path = sortField.split('.');\n const sortLevel = path.length;\n\n const findNode = (attributes: AttributeOption[]) => {\n const level = attributes[0].fieldName.split('.').length;\n if (level === sortLevel) {\n return attributes.find((attr) => attr.fieldName === sortField);\n }\n if (level < sortLevel) {\n const parentFieldName = path.slice(0, level).join('.');\n const children = attributes.find((attr) => attr.fieldName === parentFieldName)?.children;\n if (children) {\n return findNode(children);\n }\n }\n };\n\n for (const option of options) {\n const node = findNode(option.attributes);\n if (node) {\n return node;\n }\n }\n }, [sortField, options]);\n\n const handleChange = useCallback(\n (val: {attribute: AttributeOption}) => {\n onChange(val.attribute.fieldName);\n },\n [onChange]\n );\n\n return (\n <BasicAttributeSelector\n hideCheckBox\n className={styles.attributeSelect}\n value={value}\n itemsGroups={options}\n onSelect={handleChange}\n ungroup\n single\n />\n );\n};\n\nexport default memo(SortingFieldSelector);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n height: '24px',\n position: 'relative',\n padding: '12px'\n },\n header: {\n padding: '8px 12px 8px 0',\n border: 'rgba(0,0,0,0.05) 1px solid',\n borderTop: 0,\n display: 'flex',\n justifyContent: 'space-between'\n },\n selector: {\n width: '160px'\n },\n sorting: {\n display: 'flex'\n },\n arrow: {\n transition: 'transform 0.3s ease-in'\n },\n rotate: {\n transform: 'rotate(180deg)'\n }\n}));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n padding: '8px 16px',\n borderBottom: 'rgba(0,0,0,0.05) 1px solid'\n },\n inputRoot: {\n borderRadius: '4px'\n }\n});\n","import React, {memo, useCallback, useRef, useState} from 'react';\nimport {SearchInput} from '@reltio/components';\nimport {always, isEmpty, pipe, propEq, trim, when} from 'ramda';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onSearch: (searchText: string) => void;\n};\n\nconst BottomHeaderContent = ({onSearch}: Props) => {\n const styles = useStyles();\n const searchInputRef = useRef<HTMLInputElement>();\n const [currentSearchText, setCurrentSearchText] = useState<string>('');\n const handleSearch = useCallback(when(propEq('key', 'Enter'), pipe(always(currentSearchText), trim, onSearch)), [\n currentSearchText,\n onSearch\n ]);\n\n const handleChangeSearchText = useCallback(\n (newSearchText) => {\n setCurrentSearchText(newSearchText);\n if (isEmpty(newSearchText) && document.activeElement !== searchInputRef.current) {\n onSearch(newSearchText);\n }\n },\n [onSearch]\n );\n\n return (\n <div className={styles.root}>\n <SearchInput\n classes={{root: styles.inputRoot}}\n inputRef={searchInputRef}\n fullWidth\n height={40}\n autofocus={false}\n value={currentSearchText}\n onSearch={handleChangeSearchText}\n onKeyPress={handleSearch}\n />\n </div>\n );\n};\nexport default memo(BottomHeaderContent);\n","import React, {useContext} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {AttributeSelectorItemsGroup, SidePanelContentHeader} from '@reltio/components';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport SortingFieldSelector from '../SortingFieldSelector';\nimport i18n from 'ui-i18n';\nimport ArrowIcon from '@material-ui/icons/ArrowUpward';\nimport classNames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\n\nimport {useStyles} from './styles';\nimport BottomHeaderContent from './BottomHeaderContent/BottomHeaderContent';\n\ntype Props = {\n selectedCount: number;\n totalCount: number;\n totalOnPage: number;\n onSelect: () => void;\n sortOptions: AttributeSelectorItemsGroup[];\n toggleSort: (field: string) => void;\n sorting: {field: string; order: 'asc' | 'desc'};\n onTextSearch?: (searchText: string) => void;\n};\n\nconst RightSidePanelHeader = ({\n selectedCount,\n totalCount,\n onSelect,\n onTextSearch,\n sortOptions,\n toggleSort,\n sorting,\n totalOnPage\n}: Props) => {\n const styles = useStyles();\n\n const onChangeSortOrder = () => toggleSort(sorting.field);\n const sidePanelHeaderProps = useContext(RightSideHeaderContext);\n return (\n <>\n <SidePanelContentHeader\n {...sidePanelHeaderProps}\n secondTitle={!!totalCount && i18n.text('${n} Profiles', {n: totalCount})}\n />\n {onTextSearch && <BottomHeaderContent onSearch={onTextSearch} />}\n {!!totalOnPage && (\n <div className={styles.header}>\n <Checkbox\n className={styles.rowCheckbox}\n checked={selectedCount === totalOnPage}\n indeterminate={selectedCount > 0 && selectedCount < totalOnPage}\n onChange={onSelect}\n />\n <div className={styles.sorting}>\n <SortingFieldSelector sortField={sorting.field} options={sortOptions} onChange={toggleSort} />\n <IconButton\n onClick={onChangeSortOrder}\n classes={{root: classNames(styles.arrow, {[styles.rotate]: sorting.order === 'desc'})}}\n >\n <ArrowIcon />\n </IconButton>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default RightSidePanelHeader;\n","import i18n from 'ui-i18n';\n\nconst DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport {DEFAULT_SORT_OPTIONS};\n","import {useMemo} from 'react';\nimport {getSortingItemsGroups} from '../helpers/attributesHelpers';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup} from '@reltio/components';\n\ntype SortOption = {\n id: string;\n label: string;\n};\nexport const useSortOptions = (\n defaultOptions: SortOption[],\n additionalOptions: SortOption[],\n metadata: Metadata,\n entityTypeUri: string\n): AttributeSelectorItemsGroup[] => {\n return useMemo(() => {\n const itemsGroups = getSortingItemsGroups(metadata, entityTypeUri);\n const defaultData = {\n title: '',\n attributes: defaultOptions\n .concat(additionalOptions || [])\n .map((col) => ({title: col.label, fieldName: col.id}))\n };\n return [defaultData, ...itemsGroups];\n }, [metadata, entityTypeUri, defaultOptions, additionalOptions]);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => {\n return {\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '19px',\n height: '24px',\n position: 'relative',\n padding: '9px'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n paddingTop: '15px',\n display: 'flex'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '0 15px 0 15px',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.04)',\n '& $actionButtons': {\n display: 'flex'\n },\n '& $commentsContainer': {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n }\n },\n display: 'flex',\n boxSizing: 'border-box',\n borderBottom: '1px rgba(0,0,0,0.05) solid',\n paddingLeft: '12px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 500\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 10px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n matchScore: {\n borderLeft: 'rgba(0,0,0,0.12) 1px solid',\n paddingLeft: '12px',\n height: '20px',\n marginLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n height: '24px',\n marginLeft: '6px'\n },\n border: {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n rightButton: {\n marginLeft: '8px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant\n} from '@reltio/components';\n\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n EntitiesMap,\n Entity,\n getEntityUriForLink,\n getLabel,\n Match,\n Metadata\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n rowIndex: number;\n toggleSelect?: (match: Match) => void;\n entityToMatch: Entity;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n match: Match;\n matches: Match[];\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n metadata: Metadata;\n matchRules?: string[];\n};\n\nconst ItemRenderer = ({\n rowIndex,\n match,\n toggleSelect,\n entityToMatch,\n isRowSelected,\n actionButtonsRenderer,\n metadata,\n entitiesMap = {}\n}: Props) => {\n const styles = useStyles();\n const entity = match.object;\n const [openMenu, setOpenMenu] = useState(false);\n const onToggleSelect = () => toggleSelect(match);\n\n const isRowSelectable = entity !== entityToMatch;\n const Actions = actionButtonsRenderer;\n\n return (\n <div\n className={classnames(styles.wrapper, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.selectedRow]: isRowSelected\n })}\n >\n <Checkbox\n className={classnames(styles.rowCheckbox, {[styles.hidden]: !isRowSelectable})}\n checked={isRowSelected}\n onChange={onToggleSelect}\n data-reltio-id={`reltio-matches-table-checkbox-${rowIndex}`}\n />\n <div className={styles.entity}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n {!!match.matchScore && <div className={styles.matchScore}>{match.matchScore}</div>}\n </div>\n </div>\n <div className={styles.actions}>\n <div className={classnames(styles.actionButtons, {[styles.active]: openMenu})}>\n <Actions\n buttonClassName={styles.rightButton}\n hoveredMatch={match}\n onActionsMenuOpen={() => setOpenMenu(true)}\n onActionsMenuClose={() => setOpenMenu(false)}\n />\n </div>\n {entityToMatch && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.border]: openMenu})}\n uri={createObjectIdForPM(entityToMatch.uri, match.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: match.object.uri\n })}\n allowOnlyOneComment\n showAlways={openMenu}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden'\n }\n}));\n","import {ItemRenderer} from '../ItemRenderer';\nimport React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n metadata: Metadata;\n matches: Match[];\n entityToMatch: Entity;\n toggleSelect: (match: Match) => void;\n actionButtonsRenderer: (props: ActionButtonRendererProps) => React.ReactElement;\n entitiesMap?: EntitiesMap<Pick<Entity, 'label' | 'uri' | 'type'>>;\n selectedItems: Match[];\n};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.view}>\n {matches.map((match, index) => (\n <ItemRenderer\n key={match.object.uri}\n rowIndex={index}\n match={match}\n entityToMatch={entityToMatch}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n matchRules={match.matchRules}\n metadata={metadata}\n entitiesMap={entitiesMap}\n isRowSelected={selectedItems.some((item) => item.object.uri === match.object.uri)}\n />\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n getEntityUriFromMatchObject,\n Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {getSortOptionIdFromData} from '../../helpers/attributesHelpers';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {SetAMatchButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {DEFAULT_SORT_OPTIONS} from './helpers/findMatchesViewHelper';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {identity, isEmpty, pathEq} from 'ramda';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_FIELDS = getSortOptionIdFromData(DEFAULT_SORT_OPTIONS);\nconst DEFAULT_SORT_ORDER = 'asc';\nconst [DEFAULT_SORT_FIELD] = DEFAULT_SORT_FIELDS;\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const FindMatchesView = memo(({entity, metadata, filters, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer(\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_SORT_FIELD},\n DEFAULT_ROWS_PER_PAGE\n );\n const {changeRowsPerPage, changePage, toggleSort, setSelectedItems, toggleSelect} = actions;\n const {sorting, page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n\n const {uri: entityUri, type: entityType} = entity || {};\n\n const [searchText, setSearchText] = useState<string>('');\n\n const requestFilters: SearchFilter[] = useMemo(\n () =>\n [\n isEmpty(searchText)\n ? null\n : {\n filter: 'containsWordStartingWith',\n fieldName: 'attributes',\n values: [searchText]\n },\n {\n filter: 'equals',\n fieldName: 'type',\n values: [entityType]\n },\n {filter: 'not equals', fieldName: 'uri', values: [entityUri]},\n ...filters\n ].filter(identity),\n [entityType, entityUri, searchText, filters]\n );\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {entities, total, findEntities} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n findEntities();\n resetSelected();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useEffect(() => {\n const selected = selectedItems.map((item) => {\n const entity = entities.find(\n (entity) => getEntityUriFromMatchObject(entity) === getEntityUriFromMatchObject(item)\n );\n return entity ? entity : item;\n });\n setSelectedItems(selected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, filters, searchText]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName}: ActionButtonRendererProps) => {\n const entities = [hoveredMatch.object];\n const {canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n return canMark && <SetAMatchButton entity={entity} entities={entities} className={buttonClassName} />;\n },\n [config, entity, metadata]\n );\n\n const selectedCount = useMemo(() => {\n return entities\n .map((match) => selectedItems?.find(pathEq(['object', 'uri'], match.object.uri)))\n .filter(identity).length;\n }, [selectedItems, entities]);\n\n return (\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={entities.length}\n sortOptions={sortOptions}\n sorting={sorting}\n toggleSort={toggleSort}\n onSelect={selectedCount ? resetSelected : selectAll}\n onTextSearch={setSearchText}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={entities}\n metadata={metadata}\n selectedItems={selectedItems}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n );\n});\n\nFindMatchesView.displayName = 'FindMatchesView';\n","import {useSafePromise} from '@reltio/components';\nimport {\n buildFilterQueryString,\n getFilteredEntities,\n getTotals,\n GlobalSearchRequestOptions,\n SearchFilter\n} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect, useMemo} from 'react';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityType: string;\n filters: SearchFilter[];\n sorting: {\n order: string;\n field: string;\n };\n page: number;\n rowsPerPage: number;\n enabled: boolean;\n};\n\nexport const useFindEntities = ({entityType, filters, sorting, page, rowsPerPage, enabled}: Props) => {\n const {order, field} = sorting;\n const {setGlobalSpinner} = useViewStateActions();\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'attributes', 'crosswalks'];\n const filterQuery: string = useMemo(() => buildFilterQueryString()(filters), [filters]);\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n Promise.all([\n getFilteredEntities(filters, {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.join(','),\n globalFilter,\n activityFilter\n }),\n getTotals(filters, {activityFilter, globalFilter})\n ])\n )\n .then((results) => {\n const [entities, totalResponse] = results;\n const {total} = totalResponse;\n const entityToMatchFormat = (entity) => ({object: entity});\n setEntities(entities.map(entityToMatchFormat));\n setTotal(total);\n })\n .finally(() => setGlobalSpinner(false));\n }\n },\n [entityType, filterQuery, field, order, page, rowsPerPage, enabled, activityFilter, globalFilter] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities};\n};\n","import {useCallback, useEffect} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {Entity} from '@reltio/mdm-sdk';\n\ntype Params = {\n entity: Entity;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n options: {\n showTransitiveMatches?: boolean;\n };\n sorting?: {\n order: string;\n field: string;\n };\n rules?: string;\n};\n\nexport const useMatches = ({entity, filter, rules, sorting, page, rowsPerPage, options, enabled}: Params) => {\n const {setGlobalSpinner, setEntitiesMap} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n rules,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting,\n markMatchedValues: true\n });\n\n useEffect(() => {\n setEntitiesMap(entitiesMap);\n }, [setEntitiesMap, entitiesMap]);\n\n return {matches, total, entitiesMap, loadMatches};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n open?: boolean;\n onClose: (relationUri: string) => void;\n};\n\nconst AddRelationDialog = ({config, mainEntity, currentEntity, matchRules, open, onClose = identity}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const containerRef = useRef(null);\n\n const {relation = {}}: Connection =\n useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes: RecordAttributesType = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes: AttributeType[] = useMemo(() => getRelationAttributesList(metadata, relationType), [\n relationType,\n metadata\n ]);\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n }).catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle disableTypography classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}} ref={containerRef}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={ModeTypes.EDITING}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </PopupBoundariesContext.Provider>\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button disabled={disabled} color=\"primary\" onClick={onAdd}>\n {i18n.text('Add')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default AddRelationDialog;\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator,\n Metadata,\n Entity,\n InOutRelation,\n Connection,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (\n metadata: Metadata,\n config: PotentialMatchesPerspectiveConfig,\n mainEntity: Entity,\n entity: Entity,\n matchRules: string[]\n): {\n inRelations: InOutRelation;\n outRelations: InOutRelation;\n} => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {} as Entity): Connection => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {pipe} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({\n mainEntity,\n currentEntity,\n matchRules\n }: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n }) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri: string) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config.id, dispatch]\n );\n\n const AddRelationDialogRenderer = useCallback(() => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n }, [showDialog, config, closeAddRelationDialog, relationDialogContent]);\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","import {any, equals, flatten, pipe, pluck, prop, values} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {DataTypes, MatchRulesAttrTypes, SearchFilter} from '@reltio/mdm-sdk';\n\nconst DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'matchRules',\n get label() {\n return i18n.text('Match rule');\n }\n },\n {\n id: 'mlMatchRules',\n get label() {\n return i18n.text('Match IQ');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nconst ADDITIONAL_SORT_OPTIONS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n }\n }\n];\n\nconst isMatchRuleFilter = ({fieldName}: SearchFilter): boolean => {\n return pipe(values, pluck('name'), any(equals(fieldName)))(MatchRulesAttrTypes);\n};\n\nconst buildRulesStringFormFilters = (filters: SearchFilter[]): string => flatten(filters.map(prop('values'))).join(',');\n\nexport {DEFAULT_SORT_OPTIONS, ADDITIONAL_SORT_OPTIONS_DATA, isMatchRuleFilter, buildRulesStringFormFilters};\n","import React, {forwardRef} from 'react';\nimport {identity} from 'ramda';\nimport {Action} from './ActionsPanel';\n\ntype Props = {\n item: Action;\n onMenuClose?: () => void;\n};\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = identity}: Props, ref: React.Ref<HTMLLIElement>) => {\n const {ActionButton, props} = item;\n return <ActionButton ref={ref} mode=\"menuItem\" onMenuClose={onMenuClose} {...props} />;\n});\n\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {splitAt} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActionButtonMode, DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n actionButtonSize?: string;\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n actionButtonSize,\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? ActionButtonMode.button : ActionButtonMode.iconButton;\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton\n key={index}\n mode={buttonMode}\n className={classes?.actionButton}\n {...(actionButtonSize ? {size: actionButtonSize} : {})}\n {...props}\n />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions')\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: true\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {partition, prop, identity, equals} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatches} from '../../hooks/useMatches';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {MergeButton, NotMatchButton} from '../Actions';\nimport {\n DEFAULT_SORT_OPTIONS,\n ADDITIONAL_SORT_OPTIONS_DATA,\n isMatchRuleFilter,\n buildRulesStringFormFilters\n} from './helpers/matchesViewHelper';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {DCRReviewButton, CreateRelationButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n};\n\nconst MatchesView = memo(({entity, metadata, filters, config}: Props) => {\n const styles = useStyles();\n\n const [actions, state] = useMatchesReducer(\n {field: ADDITIONAL_SORT_OPTIONS_DATA[0].id, order: 'desc'},\n DEFAULT_ROWS_PER_PAGE\n );\n const {changeRowsPerPage, changePage, toggleSort, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, sorting, selectedItems, isGlobalSpinnerActive} = state;\n const options = DEFAULT_OPTIONS;\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {uri: entityUri, type: entityType} = entity || {};\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, ADDITIONAL_SORT_OPTIONS_DATA, metadata, entityType);\n\n const [matchRulesFilters, regularFilters] = useMemo(\n (): [SearchFilter[], SearchFilter[]] => partition(isMatchRuleFilter)(filters),\n [filters]\n );\n\n const {matches, total, entitiesMap, loadMatches} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: buildFilterQueryString()(regularFilters),\n page,\n sorting,\n rowsPerPage,\n options,\n rules: buildRulesStringFormFilters(matchRulesFilters)\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadMatches();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canAddRelation, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n toggleSort={toggleSort}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n entitiesMap={entitiesMap}\n selectedItems={selectedItems}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches,\n GlobalSearchRequestOptions,\n addGlobalFilterToQuery,\n Match,\n NOT_MATCH\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: {\n order: string;\n field: string;\n };\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [matches, setMatches] = useState<Match[]>([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const markAsNotMatch = (record) => ({matchRules: [NOT_MATCH], ...record});\n const loadNotMatchesIfNeeded = useCallback(\n (force?: boolean) => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || '',\n sort: field,\n force,\n order,\n activeness: activityFilter\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response.map(markAsNotMatch));\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally(() => setGlobalSpinner(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, activityFilter, enabled, globalFilter] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches};\n};\n","import i18n from 'ui-i18n';\n\nconst DEFAULT_SORT_OPTIONS = [\n {\n id: 'label',\n get label() {\n return i18n.text('Profile name');\n }\n },\n {\n id: 'id',\n get label() {\n return i18n.text('Entity ID');\n }\n }\n];\n\nexport {DEFAULT_SORT_OPTIONS};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {getSortOptionIdFromData} from '../../helpers/attributesHelpers';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {DEFAULT_SORT_OPTIONS} from './helpers/notMatchViewHelper';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\nconst [DEFAULT_ROWS_PER_PAGE] = ROWS_PER_PAGE_OPTIONS;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SORT_OPTIONS_ID = getSortOptionIdFromData(DEFAULT_SORT_OPTIONS);\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const NotMatchView = memo(({entity, metadata, filters, config}: Props) => {\n const styles = useStyles();\n\n const [actions, state] = useMatchesReducer(\n {order: DEFAULT_SORT_ORDER, field: DEFAULT_SORT_OPTIONS_ID[0]},\n DEFAULT_ROWS_PER_PAGE\n );\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect, toggleSort} = actions;\n const {page, rowsPerPage, sorting, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const canStartProcessInstanceSearchQuery = useSelector(mdmModule.selectors.getCanUserStartProcessFromQuery);\n const workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);\n const hasWorkflow = canStartProcessInstanceSearchQuery && !isEmptyValue(workflowPath);\n const {matches, total, entitiesMap, loadNotMatches} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: buildFilterQueryString()(filters),\n page,\n rowsPerPage,\n sorting\n });\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n const collaboration = useCollaboration({objectIds});\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadNotMatches();\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n toggleSort={toggleSort}\n onSelect={selectedCount ? resetSelected : selectAll}\n />\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n metadata={metadata}\n selectedItems={selectedItems}\n />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {UsersContext, useUsers} from '@reltio/components';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n activeView: ActivePanel;\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const Content = ({entity, metadata, filters, config, activeView}: Props) => {\n const users = useUsers();\n\n const render = () => {\n switch (activeView) {\n case ActivePanel.PotentialMatches:\n return <MatchesView entity={entity} metadata={metadata} filters={filters} config={config} />;\n case ActivePanel.FindMatches:\n return <FindMatchesView entity={entity} metadata={metadata} filters={filters} config={config} />;\n case ActivePanel.NotAMatch:\n return <NotMatchView entity={entity} metadata={metadata} filters={filters} config={config} />;\n default:\n return <div />;\n }\n };\n\n return <UsersContext.Provider value={users}>{render()}</UsersContext.Provider>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 0\n }\n});\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useCallback, useMemo, useState, memo} from 'react';\nimport {pluck} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton, SideButtonsPanel, SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n PotentialMatchesPerspectiveConfig,\n SearchFilter\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from './icons/potential-matches-icon.svg';\nimport FindMatchesIcon from './icons/find-matches-icon.svg';\nimport NotAMatchIcon from './icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../../constants/views';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {FilterSelector} from './FilterSelector/FilterSelector';\nimport {ValuesEditor} from './ValuesEditor/ValuesEditor';\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\n\nconst potentialMatchesComponents = {\n FilterSelector,\n ValuesEditor\n};\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n};\n\nexport const RightSidePanel = memo(({config}: Props) => {\n const styles = useStyles();\n const [matchesFilters, setMatchesFilters] = useState<SearchFilter[]>([]);\n const [findMatchesFilters, setFindMatchesFilters] = useState<SearchFilter[]>([]);\n const [notMatchFilters, setNotMatchFilters] = useState<SearchFilter[]>([]);\n\n const [active, setActive] = useState<ActivePanel>(null);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const toggleActive = useCallback((newId: ActivePanel) => {\n setActive((active) => (active === newId ? null : newId));\n }, []);\n const resetActive = useCallback(() => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n\n const entityType = getEntityType(metadata, entity?.type);\n\n const getAttributeTypes = (entityType) =>\n (entityType.attributes || []).concat(entityType.analyticsAttributes || []).filter(isReadableAttribute);\n\n const attributeTypes = useMemo(() => getAttributeTypes(entityType), [entityType]);\n\n const matchRulesAttributes = useMemo(() => {\n const matchRulesAttributes = [\n {...MatchRulesAttrTypes.matchRules, check: hasMatchRulesWithoutML},\n {...MatchRulesAttrTypes.MLRecommendedMatch, check: hasMlMatchRule}\n ];\n\n return matchRulesAttributes.reduce((attributes, {check, ...attrType}) => {\n check(entityType) && attributes.push(attrType);\n return attributes;\n }, []);\n }, [entityType]);\n\n const potentialMatchesAttributeTypes = useMemo(() => [...matchRulesAttributes, ...attributeTypes], [\n attributeTypes,\n matchRulesAttributes\n ]);\n\n const findMatchesAttributeTypes = useMemo(() => [{...EntityAttrTypes.id}, ...attributeTypes], [attributeTypes]);\n\n const elements = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.PotentialMatches,\n icon: PotentialMatchesIcon,\n tooltipTitle: i18n.text('Potential Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Potential Matches'),\n rightContent: (\n <AttributesFiltersButton\n filters={matchesFilters}\n onChange={setMatchesFilters}\n attributeTypes={potentialMatchesAttributeTypes}\n components={potentialMatchesComponents}\n />\n )\n },\n filters: matchesFilters\n },\n {\n buttonProps: {\n id: ActivePanel.FindMatches,\n icon: FindMatchesIcon,\n tooltipTitle: i18n.text('Find Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Find Matches'),\n rightContent: (\n <AttributesFiltersButton\n filters={findMatchesFilters}\n onChange={setFindMatchesFilters}\n attributeTypes={findMatchesAttributeTypes}\n />\n )\n },\n filters: findMatchesFilters\n },\n {\n buttonProps: {\n id: ActivePanel.NotAMatch,\n icon: NotAMatchIcon,\n tooltipTitle: i18n.text('Not a Match')\n },\n headerProps: {\n mainTitle: i18n.text('Not a Match'),\n rightContent: (\n <AttributesFiltersButton\n filters={notMatchFilters}\n onChange={setNotMatchFilters}\n attributeTypes={attributeTypes}\n />\n )\n },\n filters: notMatchFilters\n }\n ],\n [\n matchesFilters,\n findMatchesFilters,\n notMatchFilters,\n potentialMatchesAttributeTypes,\n findMatchesAttributeTypes,\n attributeTypes\n ]\n );\n\n const headerProps = useMemo(() => ({...elements[active]?.headerProps, onClose: resetActive}), [\n resetActive,\n active,\n elements\n ]);\n const filters = elements[active]?.filters;\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pluck('buttonProps', elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import React from 'react';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\ntype Props = AttributeFiltersComponentProps & {textFieldInputRef: React.MutableRefObject<HTMLInputElement>};\n\nexport const FilterSelector = (props: Props) => {\n const {rowData} = props;\n const {attribute: {attrType} = {}} = (rowData || {}) as RowData;\n const options = isMatchRuleAttrType(attrType)\n ? [FilterOptions.EQUALS].map((value) => ({value, label: capitalize(getFilterOptionLabel(value))}))\n : null;\n\n return <AttributesFilterSelector {...props} options={options} />;\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {MatchRulesSelector, AttributesValuesEditor, AttributeFiltersComponentProps} from '@reltio/components';\nimport {isMatchRuleAttrType, SearchFilter, MatchRulesAttrNames} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\nexport const ValuesEditor = ({rowData, rowContext}: AttributeFiltersComponentProps) => {\n const styles = useStyles();\n const {values = [], attribute: {attrType, fieldName = null} = {}, filter, id} = (rowData || {}) as RowData;\n const {changeFilter} = rowContext;\n const {entityType} = rowContext;\n\n const changeValue = useCallback(\n (newValues: SearchFilter['values']) => {\n const newFilter: SearchFilter = {\n fieldName,\n filter,\n values: newValues\n };\n\n changeFilter(newFilter, id);\n },\n [changeFilter, id, fieldName, filter]\n );\n\n const TextFieldProps = useMemo(\n () => ({\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }),\n [styles]\n );\n\n return isMatchRuleAttrType(attrType) ? (\n <MatchRulesSelector\n entityType={entityType}\n name={attrType.name as MatchRulesAttrNames}\n values={values as string[]}\n onChange={changeValue}\n TextFieldProps={TextFieldProps}\n fullWidth\n />\n ) : (\n <AttributesValuesEditor rowContext={rowContext} rowData={rowData} />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n minWidth: '90px',\n padding: '8px 12px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@material-ui/icons/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@material-ui/icons/TableChartOutlined';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype Mode = {\n id: ComparisonViewMode;\n tooltipTitle: string;\n title: string;\n Icon: React.ElementType;\n disabled?: boolean;\n};\n\nconst MODES: Mode[] = [\n {\n id: ComparisonViewMode.COLUMNS,\n tooltipTitle: i18n.text('Column'),\n title: i18n.text('Column'),\n Icon: ViewColumnRoundedIcon\n },\n {\n id: ComparisonViewMode.TABLE,\n tooltipTitle: i18n.text('Table'),\n title: i18n.text('Table'),\n Icon: TableRowsOutlinedIcon\n }\n];\n\ntype Props = {\n className?: string;\n};\n\nconst ComparisonViewModeSwitcher = ({className}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode, selectedItems} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isTableOnly = selectedItems.length > MAX_PROFILES_TO_COMPARE;\n const getMode = (baseMode: Mode) =>\n baseMode.id === ComparisonViewMode.COLUMNS\n ? {\n ...baseMode,\n disabled: isTableOnly,\n tooltipTitle: isTableOnly\n ? i18n.text('Column view supports maximum ${maxProfiles} profiles', {\n maxProfiles: MAX_PROFILES_TO_COMPARE\n })\n : baseMode.tooltipTitle\n }\n : baseMode;\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES.map(getMode)}\n modeId={comparisonViewMode}\n onChange={setComparisonViewMode}\n />\n );\n};\n\nexport default ComparisonViewModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n padding: '0 8px 0 16px',\n backgroundColor: '#fff',\n '& $splitter': {\n height: '32px',\n marginRight: '16px',\n marginLeft: '4px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n },\n title: {\n fontSize: '16px',\n fontWeight: 400,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n color: theme.palette.text.primary\n },\n clearAllButton: {\n marginLeft: '16px'\n },\n mergeButton: {\n marginRight: '12px'\n },\n total: {\n color: theme.palette.text.secondary\n },\n splitter: {},\n actionSplitter: {\n height: '32px',\n margin: '0 8px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n}));\n","import React from 'react';\nimport {DropDownMenuButton, DropDownMenuItem, SmallIconButtonWithTooltip} from '@reltio/components';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n items: Array<DropDownMenuItem>;\n};\n\nexport const SettingsMenu = ({items}: Props) => {\n return (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: SettingsIcon,\n tooltipTitle: i18n.text('Settings'),\n size: 'L'\n }}\n menuId={'matches-view-settings'}\n menuItems={items}\n />\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {prop, map, not} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {BasicViewHeader, ColumnsSettings, DropDownMenuItem, Spacer} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {\n getActionPermissionForMatches,\n Entity,\n Metadata,\n isDataTenantEntity,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport ComparisonViewModeSwitcher from '../ComparisonViewModeSwitcher/ComparisonViewModeSwitcher';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport {Divider as Divider} from '@material-ui/core';\nimport {SettingsMenu} from '../SettingsMenu/SettingsMenu';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n columnsData: GroupedColumnData[];\n selectedColumns: string[];\n onChangeColumns: (columns: string[]) => void;\n showNonOv: boolean;\n onChangeShowNonOv: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nconst getEntityObjects = map(prop('object'));\n\nexport const TableHeader = ({\n config,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showNonOv,\n onChangeShowNonOv\n}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n\n const {selectedItems, limitSelection} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const entities = getEntityObjects(selectedItems);\n const {tableViewModeAvailable} = config;\n const {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, selectedItems);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity]\n );\n\n const hasSelectedItems = selectedItems.length !== 0;\n\n const handleClearSelection = () => {\n setSelectedItems([]);\n };\n\n const handleToggleShowOvValue = useCallback(() => {\n onChangeShowNonOv(not);\n }, [onChangeShowNonOv]);\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: !showNonOv,\n selectable: true,\n text: i18n.text('Show only OV values'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <Typography className={styles.title}>\n <span>{i18n.text('Match Review')}</span>\n {hasSelectedItems && (\n <span className={styles.total}>\n {' '}\n ({selectedItems.length}\n {limitSelection && '/' + limitSelection})\n </span>\n )}\n </Typography>\n {hasSelectedItems && (\n <Button onClick={handleClearSelection} className={styles.clearAllButton} color=\"primary\">\n {i18n.text('Clear All')}\n </Button>\n )}\n <Spacer />\n {hasSelectedItems && (\n <>\n <ActionsPanel actions={actions} numberOfButtons={2} />\n <Divider orientation={'vertical'} classes={{vertical: styles.actionSplitter}} />\n </>\n )}\n <SettingsMenu items={settingItems} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n {tableViewModeAvailable && (\n <>\n <Divider orientation=\"vertical\" classes={{vertical: styles.splitter}} />\n <ComparisonViewModeSwitcher />\n </>\n )}\n </BasicViewHeader>\n );\n};\n","import React from 'react';\n\nexport const ExpandedContext = React.createContext<{\n expandedMap: {\n [attrTypeUri: string]: boolean;\n };\n onExpandType: (attrTypeUri: string) => void;\n }>({\n expandedMap: {},\n onExpandType: () => {}\n });\n\nExpandedContext.displayName = 'ExpandedContext';\n","import React, {useContext, forwardRef, ComponentType} from 'react';\nimport {AttributeType} from '@reltio/mdm-sdk';\n\nimport {ExpandedContext} from './ExpandedContext';\n\ntype Props = {\n attributeType: AttributeType;\n};\n\nconst withExpanded = <P extends Props>(Component: ComponentType<P>) => {\n const WithExpanded = forwardRef((componentProps: P, ref) => {\n const {attributeType} = componentProps;\n const {expandedMap} = useContext(ExpandedContext);\n const expanded = expandedMap[attributeType.uri];\n return <Component {...componentProps} expanded={expanded} ref={ref} />;\n });\n\n WithExpanded.displayName = 'WithExpanded';\n return WithExpanded;\n};\n\nexport default withExpanded;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n complexAttributesHeadRenderer: {\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'flex-start'\n },\n complexAttributesHeadLabel: {\n flex: 1,\n marginLeft: '5px'\n },\n arrowButton: {\n cursor: 'pointer',\n marginLeft: '-3px'\n },\n attribute: {\n whiteSpace: 'pre-wrap'\n },\n matchedAttribute: {\n fontWeight: 500,\n background: 'rgb(241, 248, 234)',\n 'tr:hover &': {\n backgroundColor: 'rgb(232, 239, 225)'\n }\n }\n});\n","import React, {useMemo} from 'react';\nimport {HighlightedValuesContext, ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport withExpanded from '../withExpanded';\nimport {useStyles} from './styles';\n\nconst ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n attributeType: AttributeType;\n attributeValues: AttributeValue[];\n matchedValuesUris?: string[];\n showNonOv?: boolean;\n };\n};\n\nexport const AttributesRenderer = ({value: {attributeType, attributeValues, matchedValuesUris, showNonOv}}: Props) => {\n const styles = useStyles();\n const highlightedValuesContextValue = useMemo(\n () => ({highlightedValuesUris: matchedValuesUris, highlightedClassName: styles.matchedAttribute}),\n [matchedValuesUris, styles.matchedAttribute]\n );\n return (\n <div className={styles.attribute}>\n <HighlightedValuesContext.Provider value={highlightedValuesContextValue}>\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n showNonOv={showNonOv}\n />\n </HighlightedValuesContext.Provider>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ColumnDataContext = React.createContext<{\n setHoveredId?: React.Dispatch<React.SetStateAction<string>>;\n hoveredId?: string;\n setAnchor?: (anchor: HTMLElement) => void;\n }>({});\n\nColumnDataContext.displayName = 'ColumnDataContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n menuButtonWrapper: {\n display: 'none',\n position: 'absolute',\n top: '-4px',\n right: '-14px'\n },\n headCell: {\n display: 'flex',\n position: 'relative',\n 'th:hover &': {\n '& $menuButtonWrapper': {\n display: 'block'\n }\n }\n },\n active: {\n display: 'block'\n }\n});\n","import React, {useContext, useRef} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\nimport {ColumnDataContext} from '../../../../contexts/ColumnsDataContext';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\ntype Props = {\n label?: string;\n id: string;\n hideable?: boolean;\n};\n\nexport const HeadCellRenderer = ({label, id, hideable}: Props) => {\n const styles = useStyles();\n const {setAnchor, setHoveredId, hoveredId} = useContext(ColumnDataContext);\n const ref = useRef<HTMLDivElement>();\n const openConfigColumnPopup = () => {\n setAnchor(ref.current);\n setHoveredId(id);\n };\n return (\n <div className={styles.headCell}>\n {label}\n {hideable !== false && (\n <div className={classnames(styles.menuButtonWrapper, {[styles.active]: hoveredId === id})} ref={ref}>\n <SmallIconButton icon={MoreVertIcon} onClick={openConfigColumnPopup} size={'S'} />\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {ArrowExpandButton} from '@reltio/components';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {ExpandedContext} from '../ExpandedContext';\nimport {HeadCellRenderer} from './HeadCellRenderer';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n attributeType: AttributeType;\n id: string;\n};\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType, id}: Props) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <ArrowExpandButton expanded={expanded} onClick={onExpandClick} className={styles.arrowButton} />\n <div className={styles.complexAttributesHeadLabel}>\n <HeadCellRenderer label={label} id={id} />\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const HoveredEntityContext = React.createContext<{\n hoveredEntity: string;\n resetHoveredEntity: () => void;\n }>({\n hoveredEntity: null,\n resetHoveredEntity: () => {}\n });\n\nHoveredEntityContext.displayName = 'HoveredEntityContext';\n","import React, {memo} from 'react';\nimport {prop} from 'ramda';\n\nimport {Entity, isDataTenantEntity} from '@reltio/mdm-sdk';\nimport {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton, ReinstateMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {mainEntity?: Entity; currentEntity?: Entity; matchRules?: string[]}) => void;\n classes?: {\n actionButton?: string;\n moreOptions?: string;\n };\n mode?: 'normal' | 'hover';\n};\n\nconst MatchesControls = ({\n value: {mainEntity, entity, matchRules, permission},\n onActionsMenuClose,\n onActionsMenuOpen,\n openAddRelationDialog,\n classes = {},\n mode = 'hover'\n}: Props) => {\n const {canMerge, canAddRelation, canMark} = permission;\n const hasDTEntity = [mainEntity, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity,\n currentEntity: entity,\n matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n mode={mode}\n actionButtonSize=\"XS\"\n classes={{\n actionButton: classes.actionButton,\n moreOptions: classes.moreOptions\n }}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n />\n );\n};\n\nexport default memo(MatchesControls);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst styles = makeStyles({\n container: {\n position: 'relative',\n width: '100%',\n height: '140px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n overflow: 'hidden'\n },\n hovered: {\n backgroundColor: 'rgb(245, 245, 245)'\n },\n closeButton: {\n position: 'absolute',\n zIndex: 1,\n margin: '4px'\n },\n matchControlsContainer: {\n display: 'flex',\n alignItems: 'center',\n height: '45px',\n margin: '4px 8px'\n },\n rightButton: {\n display: 'flex',\n alignItems: 'center'\n },\n moreOptions: {\n marginLeft: '8px'\n }\n});\n\nexport default styles;\n","import React, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\n\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {Entity, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\nimport useStyles from './styles';\n\ntype Props = {\n value: {\n onClose?: () => void;\n showCloseButton?: boolean;\n showButtons?: boolean;\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n config: PotentialMatchesPerspectiveConfig;\n permission: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n};\n\nconst EntityCard = ({value: {entity, showCloseButton, onClose, showButtons, config, ...rest}}: Props) => {\n const styles = useStyles();\n const {hoveredEntity, resetHoveredEntity} = useContext(HoveredEntityContext);\n const isHovered = getEntityId(entity) === hoveredEntity;\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const controlProps = useMemo(\n () => ({\n ...rest,\n entity\n }),\n [rest, entity]\n );\n\n return (\n <>\n <div className={classnames(styles.container, {[styles.hovered]: showButtons && isHovered})}>\n {showCloseButton && (\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} size=\"XXS\" />\n )}\n <ProfileCard entity={entity} />\n {showButtons && (\n <div className={styles.matchControlsContainer}>\n <MatchControls\n mode=\"normal\"\n value={controlProps}\n onActionsMenuClose={resetHoveredEntity}\n openAddRelationDialog={openAddRelationDialog}\n classes={{\n actionButton: styles.rightButton,\n moreOptions: styles.moreOptions\n }}\n />\n </div>\n )}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </>\n );\n};\n\nexport default EntityCard;\n","import {useState, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propSatisfies, allPass, includes} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const useWorkflowTasks = ({entity, match}: Props) => {\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri: string = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState<WorkflowTaskData[]>([]);\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n return {enabled: !!workflowPath, loading: requestIsInProgress, tasks, loadTasks};\n};\n","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import React from 'react';\n\nexport const WorkflowTasksAvailabilityContext = React.createContext<(entityUri: string, value: boolean) => void>(\n () => {}\n);\n\nWorkflowTasksAvailabilityContext.displayName = 'WorkflowTasksAvailabilityContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden',\n margin: '-16px'\n },\n assigneeSelector: {},\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {pick} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n PotentialMatchReviewCard,\n SmallIconButton,\n DropDownMenuButton,\n DropDownSelector,\n useWorkflowAssignee,\n WorkflowComments,\n useMergeAllRequest,\n useMarkAsNotMatchRequest\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\n\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {WorkflowTasksAvailabilityContext} from '../ComparisonTable/WorkflowTasksAvailabilityContext';\n\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task: WorkflowTaskData) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const WorkflowCard = ({entity, match}: Props) => {\n const styles = useStyles();\n const {tasks, loadTasks} = useWorkflowTasks({entity, match});\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\n const {sendMergeAllRequest: merge} = useMergeAllRequest({\n entity,\n entities: [match.object]\n });\n const {sendMarkAsNotMatchRequest: notMatch} = useMarkAsNotMatchRequest({\n entity,\n entities: [match.object]\n });\n const mapping = {\n Merge: merge,\n NotAMatch: notMatch\n };\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const matchEntityUri = getEntityUriFromMatchObject(match);\n useEffect(() => {\n setWorkflowTaskAvailability?.(matchEntityUri, !!task);\n }, [setWorkflowTaskAvailability, matchEntityUri, task]);\n const actions = ((task && task.possibleActions) || []).map(({action, label}) => ({\n text: label,\n onClick: mapping[action]\n }));\n const {assignee, getAssignees, updateAssignee, updateRequestIsInProgress} = useWorkflowAssignee(task || {});\n const Actions =\n actions.length > 0 ? (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n menuId=\"custom-actions\"\n menuItems={actions}\n />\n ) : null;\n return task ? (\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <DropDownSelector\n className={styles.assigneeSelector}\n enabled={!updateRequestIsInProgress || assignee}\n getOptions={getAssignees}\n onChange={updateAssignee}\n hideSelectedOptions={false}\n label={i18n.text('Assigned to')}\n value={assignee}\n defaultOptions={true}\n />\n </div>\n <WorkflowComments {...getCommentsInfoFromTasks(task)} />\n </PotentialMatchReviewCard>\n </div>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\n\nexport const DEFAULT_ROWS = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n initialWidth: 280,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'matchRules',\n label: i18n.text('Match method'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_SELECT\n },\n hideable: false,\n initialWidth: 130,\n minWidth: 130,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'workflowCard',\n label: i18n.text('Workflow'),\n modes: [ComparisonViewMode.COLUMNS]\n },\n {\n id: 'entityId',\n label: i18n.text('Entity ID'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_ENTITY_ID\n },\n initialWidth: 100,\n autoResize: false,\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'score',\n label: i18n.text('Match score'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_INT\n },\n initialWidth: 100,\n modes: [ComparisonViewMode.TABLE]\n },\n {\n id: 'sources',\n label: i18n.text('Sources'),\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'crosswalks',\n label: i18n.text('Crosswalks'),\n modes: [ComparisonViewMode.COLUMNS]\n }\n];\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n itemContainer: {\n width: '18px',\n height: '18px'\n },\n item: {\n width: '18px',\n height: '18px',\n background: 'none',\n fontSize: '1rem'\n }\n});\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {SourceIcon, useCrosswalkColor} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n className?: string;\n showTooltip?: boolean;\n};\n\nconst ColoredSourceIcon = ({className, crosswalk, showTooltip = true}: Props) => {\n const styles = useStyles();\n const color = useCrosswalkColor(crosswalk);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const content = (\n <div className={classnames(styles.itemContainer, className)} style={{background: color}}>\n <SourceIcon sourceType={crosswalk.type} className={styles.item} />\n </div>\n );\n return showTooltip ? <Tooltip title={getSourceSystemLabel(metadata, crosswalk.type)}>{content}</Tooltip> : content;\n};\n\nexport default memo(ColoredSourceIcon);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n crosswalk: {\n marginBottom: '8px'\n },\n crosswalkIcon: {\n marginRight: '5px'\n },\n labelContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n spacer: {\n flex: 1\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport ColoredSourceIcon from '../../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: NestedAttributeValue & {\n value: NestedAttributeValue['value'] & {\n crosswalk: Crosswalk;\n };\n };\n};\n\nconst LabelRenderer = ({attributeValue}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const crosswalk = attributeValue.value.crosswalk;\n return (\n <div className={styles.labelContainer}>\n <ColoredSourceIcon className={styles.crosswalkIcon} crosswalk={crosswalk} showTooltip={false} />\n <div>{getSourceSystemLabel(metadata, crosswalk.type)}</div>\n <div className={styles.spacer} />\n <div>{crosswalk.value}</div>\n </div>\n );\n};\n\nexport default LabelRenderer;\n","import React, {useMemo} from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {\n AttributeType,\n Crosswalk,\n CrosswalksAttrTypes,\n getSourceSystemLabel,\n Metadata,\n NestedAttributeValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nimport withExpanded from '../../withExpanded';\nimport LabelRenderer from './LabelRenderer';\nimport {useStyles} from './styles';\nimport {useSelector} from 'react-redux';\n\nexport const ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n attributeType: AttributeType;\n };\n};\n\nconst getFakeAttributeValueForCrosswalk = (crosswalk: Crosswalk, attributeType: AttributeType, metadata: Metadata) => {\n return attributeType.attributes.reduce(\n (nestedAttributeValue: NestedAttributeValue, subAttributeType) => {\n if (subAttributeType.uri === CrosswalksAttrTypes.sourceSystems.uri) {\n nestedAttributeValue.value[subAttributeType.uri] = getSourceSystemLabel(metadata, crosswalk.type);\n } else if (crosswalk[subAttributeType.uri]) {\n nestedAttributeValue.value[subAttributeType.uri] = crosswalk[subAttributeType.uri];\n }\n return nestedAttributeValue;\n },\n {value: {crosswalk}, uri: crosswalk.uri} as NestedAttributeValue\n );\n};\n\nconst CrosswalksRenderer = ({value: {crosswalks, attributeType}}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeValues = useMemo(\n () => crosswalks?.map((crosswalk) => getFakeAttributeValueForCrosswalk(crosswalk, attributeType, metadata)),\n [metadata, crosswalks, attributeType]\n );\n return attributeValues ? (\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n LabelRenderer={LabelRenderer}\n valueContainerClassName={styles.crosswalk}\n />\n ) : null;\n};\n\nexport default CrosswalksRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '-8px'\n },\n crosswalkIcon: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n});\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport ColoredSourceIcon from '../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Crosswalk[];\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n return value ? (\n <div className={styles.wrapper}>\n {value.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {\n always,\n chain,\n cond,\n filter,\n identity,\n last,\n map,\n path,\n pathOr,\n pipe,\n prop,\n split,\n values,\n when,\n pick\n} from 'ramda';\n\nimport {\n AttributeType,\n CrosswalksAttrTypes,\n EntitiesMap,\n Entity,\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isOv,\n MatchedValues,\n Match,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n searchUriToAttrUri\n} from '@reltio/mdm-sdk';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {HeadCellRenderer} from '../cell-renderers/HeadCellRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\nimport CrosswalksRenderer from '../cell-renderers/CrosswalksRenderer/CrosswalksRenderer';\nimport {ComparisonViewMode} from '../../../constants/views';\nimport SourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\n\nexport type RowData = {\n id: string;\n label: string;\n cellRenderer?: (props: unknown) => JSX.Element;\n headCellRenderer?: (props: unknown) => JSX.Element;\n rowClassName?: string;\n attributeType?: AttributeType;\n hideable?: boolean;\n};\n\nconst additionalPropsForDefaultRows = {\n profile: {\n cellRenderer: EntityCard,\n headCellRenderer: HeadCellRenderer,\n label: ''\n },\n matchRules: {\n cellRenderer: MatchMethod,\n headCellRenderer: HeadCellRenderer\n },\n workflowCard: {\n cellRenderer: WorkflowCardRenderer,\n headCellRenderer: HeadCellRenderer\n },\n sources: {\n cellRenderer: SourcesRenderer,\n headCellRenderer: HeadCellRenderer\n },\n entityId: {\n headCellRenderer: HeadCellRenderer\n },\n crosswalks: {\n cellRenderer: CrosswalksRenderer,\n headCellRenderer: ComplexAttributesHeadRenderer,\n attributeType: {\n uri: 'crosswalks',\n name: 'crosswalks',\n type: 'Nested',\n attributes: Object.values(CrosswalksAttrTypes)\n }\n }\n};\n\nconst defaultRows: RowData[] = DEFAULT_ROWS.filter(({modes}) => modes.includes(ComparisonViewMode.COLUMNS)).map(\n (row) => ({\n ...pick(['id', 'label', 'hideable'], row),\n ...additionalPropsForDefaultRows[row.id]\n })\n);\n\nconst getAttrTypeNameByUri = pipe(split('/'), last);\n\nexport const getTableRowsData = (metadata: Metadata, entity: Entity, selectedColumns: string[]): RowData[] => {\n return selectedColumns\n .map((searchUri) => {\n const defaultRow = defaultRows.find(({id}) => id === searchUri);\n\n if (defaultRow) {\n return defaultRow;\n }\n\n if (!isAttributeSearchUri(searchUri)) {\n return null;\n }\n\n const attrTypeUri = searchUriToAttrUri(searchUri, entity.type);\n const attributeType = findAttributeTypeByUri(metadata, attrTypeUri, entity.type);\n const collectionName = getAttributeSource(attrTypeUri);\n\n if (attributeType) {\n return {\n id: `${collectionName}.${getAttrTypeNameByUri(attrTypeUri)}`,\n label: attributeType.label,\n attributeType,\n cellRenderer: AttributesRenderer,\n headCellRenderer: isComplexAttribute(attributeType)\n ? ComplexAttributesHeadRenderer\n : HeadCellRenderer\n };\n }\n\n return null;\n })\n .filter(identity);\n};\n\nexport const getMatchedValuesUris = (matchedValues: MatchedValues): string[] => {\n return when(\n identity,\n pipe(\n values,\n chain(\n chain(\n cond([\n [path(['value', 'uri']), path(['value', 'uri'])],\n [path(['value', 'values']), pipe(path(['value', 'values']), map(prop('uri')))]\n ])\n )\n ),\n filter(identity)\n )\n )(matchedValues);\n};\n\nconst getColumnDataForRowData = (\n metadata: Metadata,\n match: Match,\n entitiesMap: EntitiesMap,\n entity: Entity,\n rowData: RowData,\n config: PotentialMatchesPerspectiveConfig,\n onRemoveItem: (match: Match) => void,\n showNonOv: boolean\n) => {\n const {object, isMainEntity, matchRules, matchedValues} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'profile':\n return {\n mainEntity: entity,\n showCloseButton: !isMainEntity,\n onClose: () => onRemoveItem(match),\n showButtons: !isMainEntity,\n entity: object,\n matchRules: matchRules,\n permission: getActionPermissionForMatch(metadata, config, object, entity, matchRules),\n config: config\n };\n case 'matchRules':\n return {\n metadata,\n entity,\n match,\n entitiesMap,\n show: !isMainEntity && !!matchRules\n };\n case 'sources':\n return object.crosswalks;\n case 'crosswalks':\n return {\n crosswalks: object.crosswalks,\n attributeType: rowData.attributeType\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n }\n if (isAttributeSearchUri(rowData.id)) {\n const attrSource = getAttributeSource(rowData.attributeType);\n const getAttributeValues = pipe(\n pathOr([], [attrSource, rowData.attributeType.name]),\n when(always(!showNonOv), filter(isOv))\n );\n const attributeValues = getAttributeValues(object);\n return {\n attributeType: rowData.attributeType,\n attributeValues,\n matchedValuesUris: getMatchedValuesUris(matchedValues),\n showNonOv\n };\n }\n};\n\ntype TableColumnsData = {\n id: string;\n isDraggable: boolean;\n [key: string]: unknown;\n};\n\nexport const getTableColumnsData = (\n metadata: Metadata,\n rowsData: RowData[],\n entity: Entity,\n matches: Match[],\n entitiesMap?: EntitiesMap,\n config?: PotentialMatchesPerspectiveConfig,\n onRemoveItem?: (match: Match) => void,\n showNonOnly = false\n) => {\n return [{object: entity, isMainEntity: true} as Match].concat(matches).map((match) => {\n return rowsData.reduce((column, rowData) => {\n column[rowData.id] = getColumnDataForRowData(\n metadata,\n match,\n entitiesMap,\n entity,\n rowData,\n config,\n onRemoveItem,\n showNonOnly\n );\n return {...column, isDraggable: !match.isMainEntity, id: match.object.uri};\n }, {} as TableColumnsData);\n });\n};\n","import React from 'react';\nimport {MatchRulesBlock} from '@reltio/components';\n\ntype Props = {\n value: React.ComponentProps<typeof MatchRulesBlock> & {show?: boolean};\n};\nconst MatchMethod = ({value: {metadata, entity, match, entitiesMap, show}}: Props) => {\n if (!show) {\n return null;\n }\n return <MatchRulesBlock entity={entity} match={match} entitiesMap={entitiesMap} metadata={metadata} />;\n};\n\nexport default MatchMethod;\n","import React from 'react';\n\nimport {Entity, Match} from '@reltio/mdm-sdk';\n\nimport WorkflowCard from '../../../WorkflowCard';\n\ntype Props = {\n value: {\n match: Match;\n entity: Entity;\n };\n};\n\nconst WorkflowCardRenderer = ({value: {entity, match}}: Props) => {\n return <WorkflowCard entity={entity} match={match} />;\n};\n\nexport default WorkflowCardRenderer;\n","import React from 'react';\nimport {Match} from '@reltio/mdm-sdk';\n\nexport const ColumnHandlerContext = React.createContext<(match: Match) => void>(() => {});\n\nColumnHandlerContext.displayName = 'ColumnHandlerContext';\n","import {filter, join, map, pipe, slice, split, uniq, when} from 'ramda';\n\nimport {isAttributeSearchUri, searchUriToAttrUri} from '@reltio/mdm-sdk';\n\nconst getFirstLevelParentAttribute = pipe(split('.'), slice(0, 2), join('.'));\nexport const replaceSubAttributesWithParent = pipe(map(when(isAttributeSearchUri, getFirstLevelParentAttribute)), uniq);\n\nexport const getAttributesTypeUris = (entityTypeUri: string, attributes: string[]): string[] =>\n pipe(\n filter(isAttributeSearchUri),\n map((searchUri: string) => searchUriToAttrUri(searchUri, entityTypeUri))\n )(attributes);\n","import React from 'react';\nimport {Popover as Popover} from '@material-ui/core';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nexport enum Action {\n INSERT_BELOW = 'below',\n INSERT_ABOVE = 'above',\n HIDE = 'hide'\n}\n\nconst TEXT = {\n [Action.INSERT_BELOW]: i18n.text('Insert row below'),\n [Action.INSERT_ABOVE]: i18n.text('Insert row above'),\n [Action.HIDE]: i18n.text('Hide row')\n};\n\nconst renderListItem = (action: Action, handler: () => void, index: number) => (\n <ListItem button component={'div'} key={index} onClick={handler}>\n <ListItemText primary={TEXT[action]} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n);\n\ntype Props = {\n open?: boolean;\n anchorEl: HTMLElement;\n onClick: (action: Action) => void;\n onClose: () => void;\n actions: Action[];\n};\n\nconst ConfigRowPopup = ({open, anchorEl, onClick, onClose, actions}: Props) => {\n const getClickHandler = (action) => () => {\n onClick(action);\n };\n\n return (\n <Popover open={open} anchorEl={anchorEl} onClose={onClose}>\n <List component=\"div\">\n {actions.map((action, index) => renderListItem(action, getClickHandler(action), index))}\n </List>\n </Popover>\n );\n};\n\nexport default ConfigRowPopup;\n","import {GroupedColumns, GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\nconst deepFilter = (nodes: GroupedColumnData[], filter: (col: GroupedColumns) => boolean) =>\n nodes.filter(filter).map((node: GroupedColumns) =>\n node.columns\n ? {\n ...node,\n columns: deepFilter(node.columns, filter)\n }\n : node\n );\n\nexport const getAdditionalRows = (\n groupColumnsData: GroupedColumnData[],\n headColumns: string[] = []\n): GroupedColumnData[] =>\n deepFilter(groupColumnsData, (column: GroupedColumns) => !headColumns.some((elemId) => column.id === elemId));\n","import React, {useEffect, useMemo, useState, memo} from 'react';\nimport ConfigRowPopup, {Action} from './ConfigRowPopup';\nimport {ColumnsSettingsPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getAdditionalRows} from './helpers';\nimport {GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n actions: Action[];\n id: string;\n selectedAttributes?: string[];\n setSelectedAttributes?: (cols: string[]) => void;\n groupColumnsData: GroupedColumnData[];\n};\n\nconst AddRowPopups = ({\n anchorEl,\n onClose,\n actions,\n id,\n selectedAttributes,\n setSelectedAttributes,\n groupColumnsData\n}: Props) => {\n const groupedItems = useMemo(() => getAdditionalRows(groupColumnsData, selectedAttributes), [\n groupColumnsData,\n selectedAttributes\n ]);\n const [action, setAction] = useState<Action>();\n const [isOpenConfigPopup, setIsOpenConfigPopup] = useState(false);\n useEffect(() => {\n if (anchorEl) {\n setIsOpenConfigPopup(true);\n }\n }, [anchorEl]);\n const onClosePopup = () => {\n setIsOpenConfigPopup(false);\n if (!action) onClose();\n };\n const onChooseAction = (action: Action) => {\n if (action === Action.HIDE) {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n if (index > -1) {\n newAttributes.splice(index, 1);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n }\n return;\n }\n setAction(action);\n setIsOpenConfigPopup(false);\n };\n\n const closeAddRowPopup = () => {\n setAction(null);\n setIsOpenConfigPopup(false);\n onClose();\n };\n const addRowHandler = ({id: newId}: {id: string}) => {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n const newIndex = action === Action.INSERT_ABOVE ? index : index + 1;\n newAttributes.splice(newIndex, 0, newId);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n };\n\n return (\n <>\n <ConfigRowPopup\n open={isOpenConfigPopup}\n anchorEl={anchorEl}\n actions={actions}\n onClose={onClosePopup}\n onClick={onChooseAction}\n />\n <ColumnsSettingsPopup\n hideCheckBox\n anchorEl={action ? anchorEl : undefined}\n columnsData={groupedItems}\n selectedColumns={selectedAttributes}\n onColumnClick={addRowHandler}\n onClose={closeAddRowPopup}\n title={i18n.text('Add row')}\n />\n </>\n );\n};\n\nexport default memo(AddRowPopups);\n","import {useCallback, useState} from 'react';\nimport {any, map, pipe} from 'ramda';\nimport {getEntityUriFromMatchObject} from '@reltio/mdm-sdk';\n\nexport const useWorkflowTasksAvailability = (matches) => {\n const [workflowTasksAvailabilityMap, setWorkflowTasksAvailabilityMap] = useState<{[entityUri: string]: boolean}>(\n {}\n );\n const setWorkflowTaskAvailability = useCallback((entityUri: string, value: boolean) => {\n setWorkflowTasksAvailabilityMap((map) => ({\n ...map,\n [entityUri]: value\n }));\n }, []);\n const isThereAnyTask: boolean = pipe(\n map(getEntityUriFromMatchObject),\n any((uri) => workflowTasksAvailabilityMap[uri])\n )(matches);\n\n return {isThereAnyTask, setWorkflowTaskAvailability};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst firstColumnColor = 'rgb(245, 245, 245)';\nconst secondColumnColor = 'rgb(224, 238, 249)';\nconst firstRowHeight = 141;\nconst secondRowHeight = 50;\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n overflow: 'auto',\n height: '100%',\n width: '100%'\n },\n comparisonTableWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative'\n },\n collapsedRow: {\n display: 'none'\n },\n comparisonTable: {\n borderSpacing: 0,\n '& tbody tr:hover td, & tbody tr:hover th': {\n backgroundColor: 'rgb(235, 235, 235)'\n },\n 'table& tbody tr:hover td:nth-child(2)': {\n backgroundColor: 'rgb(215, 228, 239)'\n },\n '& td, & th': {\n borderRight: borderStyle,\n borderBottom: borderStyle,\n margin: 0,\n verticalAlign: 'top',\n textAlign: 'left',\n fontSize: '13px',\n minHeight: '16px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n wordWrap: 'break-word',\n backgroundColor: 'white'\n },\n '& td': {\n minWidth: dataCellWidth,\n maxWidth: dataCellWidth,\n padding: '16px',\n overflow: 'hidden',\n height: 0\n },\n '& td:empty, th:empty': {\n padding: '0px 16px'\n },\n '& th': {\n minWidth: headCellWidth,\n maxWidth: headCellWidth,\n padding: '16px'\n },\n '& thead tr:first-child th:first-child': {\n borderBottom: 'none',\n borderTop: 'none'\n },\n // sticky columns\n '& td:first-child, th:first-child': {\n borderLeft: borderStyle,\n position: 'sticky',\n left: '0',\n zIndex: 2,\n backgroundColor: firstColumnColor,\n color: theme.palette.text.secondary,\n fontWeight: 'normal'\n },\n '& td:nth-child(2), th:nth-child(2)': {\n borderRight: thickBorderStyle,\n position: 'sticky',\n left: `${headCellWidth}px`,\n zIndex: 2\n },\n // sticky rows\n '& thead tr:first-child td, & thead tr:first-child th': {\n borderTop: 'none',\n position: 'sticky',\n top: '0',\n height: firstRowHeight,\n padding: 0,\n zIndex: 2\n },\n '& thead tr:nth-child(2) td, & thead tr:nth-child(2) th': {\n position: 'sticky',\n top: `${firstRowHeight}px`,\n height: secondRowHeight,\n padding: '16px',\n zIndex: 2\n },\n '& thead tr:nth-child(2) th, & thead tr:nth-child(3) th': {\n padding: '16px',\n backgroundColor: firstColumnColor\n },\n // always visible corner\n '& thead tr:nth-child(-n+2) td:nth-child(-n+2), & thead tr:nth-child(-n+2) th:nth-child(-n+2)': {\n zIndex: 3\n },\n // special color for second column\n 'table& tr td:nth-child(2), th:nth-child(2)': {\n backgroundColor: secondColumnColor\n }\n },\n emptyState: {\n position: 'sticky',\n top: '10vh',\n display: 'flex',\n width: '100%'\n }\n}));\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {chain, groupBy, insert, nth, pipe, prop, remove, toPairs} from 'ramda';\nimport {\n EntitiesMap,\n Entity,\n getFirstLevelSearchUri,\n isAttributeSearchUri,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n Match\n} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {replaceSubAttributesWithParent} from './helpers/attributesHelpers';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport AddRowPopups from './AddRowPopups';\nimport {ColumnDataContext} from '../../contexts/ColumnsDataContext';\nimport {Action} from './AddRowPopups/ConfigRowPopup';\nimport {HoveredEntityContext} from './HoveredEntityContext';\nimport {WorkflowTasksAvailabilityContext} from './WorkflowTasksAvailabilityContext';\nimport {useWorkflowTasksAvailability} from '../../hooks/useWorkflowTasksAvailability';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n entity: Entity;\n metadata: Metadata;\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n selectedItems: Match[];\n setSelectedItems: (items: Match[]) => void;\n selectedColumns: string[];\n setSelectedColumns: (items: string[]) => void;\n columnsData: GroupedColumnData[];\n showNonOv?: boolean;\n};\n\nconst actions = [Action.INSERT_BELOW, Action.INSERT_ABOVE, Action.HIDE];\n\nexport const ComparisonTable = ({\n className,\n entity,\n metadata,\n config,\n selectedItems,\n setSelectedItems,\n selectedColumns,\n setSelectedColumns,\n entitiesMap = {},\n columnsData: allColumnsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n const matches = useMemo(() => selectedItems.slice(-4), [selectedItems]);\n const selectedColumnsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(selectedColumns),\n [selectedColumns]\n );\n\n const rowsData = useMemo(() => getTableRowsData(metadata, entity, selectedColumnsWithoutSubAttributes), [\n metadata,\n entity,\n selectedColumnsWithoutSubAttributes\n ]);\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem, showNonOv),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem, showNonOv]\n );\n\n const [expandedMap, setExpandedMap] = useState<{\n [attrTypeUri: string]: boolean;\n }>({});\n\n const onExpandType = useCallback((attrTypeUri: string) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n const headCellData = useMemo(\n () => ({\n setHoveredId,\n setAnchor,\n hoveredId\n }),\n [hoveredId]\n );\n\n const onClosePopup = useCallback(() => {\n setHoveredId(null);\n setAnchor(null);\n }, []);\n\n const handleMoveRow = (dragId: string, hoverId: string) => {\n const newArr: Array<[string, string[]]> = pipe(\n groupBy((item) => (isAttributeSearchUri(item) ? getFirstLevelSearchUri(item) : item)),\n toPairs\n )(selectedColumns);\n\n const dragIndex = newArr.findIndex(([searchUri]) => searchUri === dragId);\n const hoverIndex = newArr.findIndex(([searchUri]) => searchUri === hoverId);\n const dragRow = newArr[dragIndex];\n if (dragRow) {\n setSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = selectedItems.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = selectedItems.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = selectedItems[dragIndex];\n if (dragColumn) {\n setSelectedItems(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(selectedItems));\n }\n };\n\n const selectedAttributeUris: string[] = useMemo(() => rowsData.map(prop('id')), [rowsData]);\n\n const setHoveredEntityHandler = (columnValue) => {\n setHoveredEntity(columnValue?.entityId || null);\n };\n\n const resetHoveredEntity = useCallback(() => {\n setHoveredEntity(null);\n }, []);\n\n const hoveredEntityContextValue = useMemo(\n () => ({\n hoveredEntity,\n resetHoveredEntity\n }),\n [hoveredEntity, resetHoveredEntity]\n );\n\n const {isThereAnyTask, setWorkflowTaskAvailability} = useWorkflowTasksAvailability(matches);\n const workflowCardRowClassname = isThereAnyTask ? undefined : styles.collapsedRow;\n const displayedRowsData = useMemo(\n () =>\n rowsData.map((rowData) =>\n workflowCardRowClassname && rowData.id === 'workflowCard'\n ? {\n ...rowData,\n rowClassName: workflowCardRowClassname\n }\n : rowData\n ),\n [rowsData, workflowCardRowClassname]\n );\n\n return (\n <div className={classnames(styles.container, className)}>\n <div className={styles.comparisonTableWrapper}>\n <HoveredEntityContext.Provider value={hoveredEntityContextValue}>\n <ExpandedContext.Provider value={expandedContextValue}>\n <ColumnDataContext.Provider value={headCellData}>\n <WorkflowTasksAvailabilityContext.Provider value={setWorkflowTaskAvailability}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={displayedRowsData}\n columnsData={columnsData}\n theadRowsNumber={2}\n onMoveRow={handleMoveRow}\n onMoveColumn={handleMoveColumn}\n setHoveredColumn={setHoveredEntityHandler}\n resetHoveredColumn={resetHoveredEntity}\n />\n </WorkflowTasksAvailabilityContext.Provider>\n </ColumnDataContext.Provider>\n </ExpandedContext.Provider>\n </HoveredEntityContext.Provider>\n {!matches.length && (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SELECT_ATTRIBUTES}\n variant={EMPTY_STATE_VARIANTS.embedded}\n text={i18n.text('Select profiles')}\n secondaryText={i18n.text(\n 'Select one or more profiles to compare it with the current profile'\n )}\n />\n </div>\n )}\n <AddRowPopups\n id={hoveredId}\n anchorEl={anchor}\n onClose={onClosePopup}\n actions={actions}\n selectedAttributes={selectedAttributeUris}\n setSelectedAttributes={setSelectedColumns}\n groupColumnsData={allColumnsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {EntitiesMap, Match, Entity, Metadata, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport ComparisonTable from '../ComparisonTable';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n selectedColumns: string[];\n setSelectedColumns: (newColumns: string[]) => void;\n selectedItems: Match[];\n setSelectedItems: (newItems: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n columnsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedColumns,\n setSelectedColumns,\n selectedItems,\n setSelectedItems,\n config,\n metadata,\n entity,\n entitiesMap = {},\n columnsData,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n columnsData={columnsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {makeStyles, fade, lighten} from '@material-ui/core/styles';\nimport {CSSProperties} from '@material-ui/styles';\n\nconst defaultWrapperStyles: CSSProperties = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow: CSSProperties = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 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};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color: string, hoveredColor?: string) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${fade(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${fade(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 114, 206)', 0.88);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCloseIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 24px 0 8px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n '&::after': {\n ...textOverflow,\n width: '30px',\n backgroundImage: 'none'\n }\n },\n firstHeadCell: {\n paddingLeft: '42px'\n },\n headCellWithEntity: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n rowCell: {\n fontSize: '12px',\n overflow: 'hidden'\n },\n rowCellFirstColumn: {\n height: '100%'\n },\n firstEntityCell: {\n maxHeight: '200px'\n },\n entityRowCell: {\n fontSize: '12px',\n position: 'relative'\n },\n entityRowCellSelected: getColoredRowCellStyle(entityBackground),\n rowCellHighlighted: getColoredRowCellStyle(highlightBackground),\n rowCellSelected: getColoredRowCellStyle(lightPrimaryBackground, lightPrimaryBackgroundHovered),\n defaultWrapper: {\n ...defaultWrapperStyles,\n '&::after': {\n ...textOverflow,\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n }\n }\n },\n hoveredDefaultWrapper: {\n ...defaultWrapperStyles\n },\n entityWrapper: {\n paddingLeft: '12px'\n },\n profileWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n position: 'relative'\n },\n entityLabel: {\n ...link,\n fontWeight: 500\n },\n commentsContainer: {\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 1,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '15px',\n backgroundColor: '#fff',\n '&$checked': {\n backgroundColor: lightPrimaryBackground\n }\n },\n checked: {},\n matchRulesWrapper: {\n padding: '8px 15px 8px 10px',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIcon: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n opacity: 0.38\n }\n };\n});\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = Record<string, unknown>;\n\nconst HeadCellRenderer = (props: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport {AttributeValue, DataTypes, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: AttributeValue | PrimitiveValue;\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <DataTypeValue value={value} dataTypeDefinition={dataTypeDefinition} />\n </div>\n );\n};\n\nexport default DefaultCellValueRenderer;\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport {\n CollapseRowButton,\n EntityUriLink,\n IdContext,\n withTableContext,\n CommentsContainer,\n SmallIconButton\n} from '@reltio/components';\nimport {\n getEntityUriForLink,\n getLabel,\n createObjectIdForPM,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity\n} from '@reltio/mdm-sdk';\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {MatchesTableContextProps, MatchesTableRowValue} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n rowIndex: number;\n rowValue: MatchesTableRowValue;\n onRemove: () => void;\n entityToMatch: Entity;\n isRowSelected: boolean;\n hoverRowIndex: number;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex\n}: Props) => {\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowRemovable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowRemovable\n })}\n >\n {isRowHovered && <DragIndicatorIcon className={styles.dragIcon} />}\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <SmallIconButton\n icon={CloseIcon}\n size=\"XS\"\n className={classnames(styles.rowCloseIcon, {[styles.hidden]: !isRowRemovable})}\n onClick={onRemove}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nexport default withTableContext(\n ({onToggleSelect, entityToMatch}: MatchesTableContextProps, {rowValue, value}: Props) => {\n const {rawValue: match} = rowValue;\n return {\n onRemove: () => onToggleSelect(match),\n isRowRemovable: value !== entityToMatch,\n entityToMatch\n };\n }\n)(EntityProfileRenderer);\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n headIndex: number;\n [key: string]: unknown;\n};\n\nconst ProfileHeadCellRenderer = (props: Props) => {\n const isFirstColumn = props.headIndex === 0;\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, {[styles.firstHeadCell]: isFirstColumn})}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withTableContext()(withFilterAtBottom(ProfileHeadCellRenderer));\n","import {MatchRulesBlock} from '@reltio/components';\nimport {EntitiesMap, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport React, {ComponentProps} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n metadata: Metadata;\n match: Match;\n entitiesMap: EntitiesMap;\n entity: Entity;\n variant?: ComponentProps<typeof MatchRulesBlock>['variant'];\n };\n};\n\nconst MatchRulesRenderer = ({value}: Props) => {\n const styles = useStyles();\n if (!value) {\n return null;\n }\n const {metadata, match, entitiesMap, entity, variant} = value;\n return (\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n variant={variant}\n metadata={metadata}\n entitiesMap={entitiesMap}\n match={match}\n entity={entity}\n />\n </div>\n );\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: string;\n};\n\nconst BlobRenderer = ({value}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n {value}\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React from 'react';\nimport {BasicImageAttributesValue, getImageAttributeOvThumbnailUrl} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: BasicImageAttributesValue;\n};\n\nconst ImageRenderer = ({value}: Props) => {\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value});\n return (\n src && (\n <div className={styles.imageWrapper}>\n <img src={src} />\n </div>\n )\n );\n};\n\nexport default ImageRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, getLabel, getReferencedEntityFromAttrValue, ReferenceAttributeValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: ReferenceAttributeValue;\n};\n\nconst ReferenceRenderer = ({value}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n return (\n value && (\n <div className={classnames(styles.defaultWrapper, styles.referenceWrapper)}>\n <EntityTypeIcon\n className={styles.entityAvatar}\n entityType={getEntityType(metadata, getReferencedEntityFromAttrValue(value).type)}\n />\n <EntityUriLink value={getReferencedEntityFromAttrValue(value).objectURI} className={styles.link}>\n {getLabel(value.label)}\n </EntityUriLink>\n </div>\n )\n );\n};\n\nexport default ReferenceRenderer;\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n };\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonSourcesRenderer value={value.crosswalks} />\n </div>\n );\n};\n\nexport default SourcesRenderer;\n","import {assoc, map, pipe, prop, reduce, split, filter} from 'ramda';\nimport {\n DataTypes,\n EntitiesMap,\n Entity,\n getAttributesForMatchRules,\n getEntityId,\n getOvAttributeValuesByPath,\n isAttributeSearchUri,\n Metadata,\n Match\n} from '@reltio/mdm-sdk';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../types/potentialMatchesTypes';\nimport {ComparisonViewMode} from '../../constants/views';\nimport SourcesRenderer from './cell-renderers/SourcesRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\ntype RowValue = {\n entity: Entity;\n metadata: Metadata;\n match: Match;\n entitiesMap?: EntitiesMap;\n matchScore: number;\n};\n\nconst getRowValueForColumn = (\n columnData: MatchesColumnsData,\n {entity, metadata, match, entitiesMap, matchScore}: RowValue\n) => {\n switch (columnData.id) {\n case 'profile':\n return entity;\n case 'entityId':\n return getEntityId(entity);\n case 'matchRules':\n return {metadata, match, entitiesMap, entity, variant: 'all'};\n case 'score':\n return matchScore;\n case 'sources':\n return {crosswalks: entity.crosswalks};\n default: {\n const [attrSource, ...attrPath]: string[] = getAttrPathFromColumnId(columnData.id);\n return pipe(prop(attrSource), getOvAttributeValuesByPath(attrPath))(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: MatchesColumnsData[],\n matches: Match[],\n entitiesMap?: EntitiesMap\n): MatchesTableRowValue[] =>\n matches.map((match) => {\n const entity = match.object;\n const allMatchRules = match.matchRules || [];\n const matchScore = match.matchScore || 0;\n const matchAttributes = getAttributesForMatchRules(metadata, entity.type, allMatchRules);\n const rowValue = {entity, metadata, match, entitiesMap, matchScore};\n const filteredColumnsData = columnsData.filter(({modes}) =>\n modes ? modes.includes(ComparisonViewMode.TABLE) : true\n );\n\n return pipe(\n reduce((acc, columnData) => assoc(columnData.id, getRowValueForColumn(columnData, rowValue), acc), {}),\n assoc('matchAttributes', matchAttributes),\n assoc('rawValue', match)\n )(filteredColumnsData);\n });\n\nconst getNestedPathByColumnId = (columnId: string) => {\n if (isAttributeSearchUri(columnId) as boolean) {\n const [, ...attrPath]: string[] = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRendererByDataType = (dataType: DataTypes) => {\n switch (dataType) {\n case DataTypes.TYPE_BLOB: {\n return BlobRender;\n }\n case DataTypes.TYPE_IMAGE: {\n return ImageRenderer;\n }\n case DataTypes.TYPE_REFERENCE: {\n return ReferenceRenderer;\n }\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getCellValueRenderer = (columnData: MatchesColumnsData) => {\n switch (columnData.id) {\n case 'profile': {\n return EntityProfileRenderer;\n }\n case 'matchRules': {\n return MatchRulesRenderer;\n }\n case 'sources': {\n return SourcesRenderer;\n }\n default:\n return getCellValueRendererByDataType(columnData.dataTypeDefinition.type);\n }\n};\n\nconst getBasicTableColumnsData = (sortable: boolean, columnData: MatchesColumnsData[]) =>\n pipe(\n filter(({modes}) => (modes ? modes.includes(ComparisonViewMode.TABLE) : true)),\n map((columnData: MatchesColumnsData) => ({\n sortable,\n ...columnData,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: columnData.id === 'profile' ? ProfileHeadCellRenderer : HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData)\n }))\n )(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/attributesHelpers';\nimport {MatchesTableContextProps, RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({selected}: MatchesTableContextProps, {columnData, rowValue, cell}: Props) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden',\n background: theme.palette.background.paper\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n }\n}));\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {either, evolve, move} from 'ramda';\nimport {\n BasicTable,\n defaultGetRowCellHeight,\n RowCellAutoSizer,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Entity,\n Metadata,\n Match,\n EntitiesMap,\n getActionPermissionForMatch,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {MatchesColumnsData, RowCellRendererProps, MatchesTableContextProps} from '../../types/potentialMatchesTypes';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useStyles} from './styles';\nimport MatchControls from '../MatchControls/MatchControls';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\ntype Sorting = {\n field: string;\n order: 'asc' | 'desc';\n};\n\ntype Filter = {\n filter: string;\n value: unknown[];\n};\n\ntype Props = {\n entity?: Entity;\n matches: Match[];\n metadata: Metadata;\n columnsData: MatchesColumnsData[];\n config: PotentialMatchesPerspectiveConfig;\n filters?: Record<string, Filter>;\n onFilter?: (value: {columnId: string; filter: Filter}) => void;\n sorting?: Sorting;\n onSort?: (column: string) => void;\n selected: Match[];\n onToggleSelect: (match: Match) => void;\n onResetSelect: () => void;\n onSelectAll: () => void;\n isComparisonViewShown: boolean;\n entitiesMap?: EntitiesMap;\n basicTableRef?: React.Ref<HTMLElement>;\n};\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n config,\n filters,\n onFilter,\n sorting,\n onSort,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n entitiesMap,\n basicTableRef,\n isComparisonViewShown\n}: Props) => {\n const styles = useStyles();\n const [orderedMatches, setOrderedMatches] = useState(matches);\n useEffect(() => {\n setOrderedMatches(matches);\n }, [matches]);\n const onDndRowReorder = useCallback((oldPosition: number, newPosition: number) => {\n setOrderedMatches(move(oldPosition, newPosition));\n setHoverRowIndex(newPosition);\n }, []);\n\n const tableRowsData = useMemo(() => getBasicTableRowsData(metadata, columnsData, orderedMatches, entitiesMap), [\n orderedMatches,\n columnsData,\n metadata,\n entitiesMap\n ]);\n\n const sortable = !!onSort;\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(sortable, columnsData), [columnsData, sortable]);\n\n const entityRowData = useMemo(\n () => (entity ? getBasicTableRowsData(metadata, columnsData, [{object: entity}]) : []),\n [entity, metadata, columnsData]\n );\n\n const {getRowHeight, CellRenderer: EntityCellRenderer} = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT\n });\n\n const entityRowHeight = getRowHeight(0);\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(EntityCellRenderer);\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [tableColumnsData, EntityCellRenderer]);\n\n const tableContext: MatchesTableContextProps = useMemo(\n () => ({\n isAllSelected: selected.length > 0 && selected.length === matches.length,\n entityToMatch: entity,\n selected,\n onToggleSelect,\n onResetSelect,\n onSelectAll,\n isComparisonViewShown\n }),\n [entity, selected, onToggleSelect, onResetSelect, onSelectAll, matches, isComparisonViewShown]\n );\n\n const {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache} = useDynamicRowCellHeight();\n\n useLayoutEffect(clearHeightsCache, [matches]);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n const onRowHover = useCallback(\n (rowIndex: number) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const hoveredRowRightContent = useMemo(() => {\n if (hoverRowIndex === null) {\n return null;\n }\n\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n if (!hoveredMatch) {\n return null;\n }\n\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n <MatchControls\n value={{\n mainEntity: entity,\n entity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n permission\n }}\n openAddRelationDialog={openAddRelationDialog}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n classes={{\n actionButton: styles.actionButton,\n moreOptions: styles.actionButton\n }}\n />\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n entity,\n config,\n metadata,\n onActionsMenuOpen,\n onActionsMenuClose,\n openAddRelationDialog\n ]);\n\n const renderRowCell = useCallback(\n (props: RowCellRendererProps) => {\n switch (props.columnData.id) {\n case 'profile':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n },\n [changeRowCellHeight, hoverRowIndex, hoveredRowRightContent, basicTableRef]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer\n }),\n [styles]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndRowReorderingHandler={onDndRowReorder}\n ref={basicTableRef}\n hoveredContentPosition={0}\n />\n {showDialog && <AddRelationDialogRenderer />}\n </div>\n );\n};\n\nexport default MatchesTable;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {IdContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue = (EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element) => (\n HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element\n) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <HeadCellRenderer {...props} />\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n};\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useEffect, useMemo, useState, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport {equals, propEq, identity, has} from 'ramda';\nimport {\n Entity,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {useSavedStateForEntityType, DragAndDrop, useCollaboration, CollaborationContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {TableHeader} from '../TableHeader/TableHeader';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnData';\nimport ComparisonView from '../ComparisonView';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_ROWS} from '../../constants/defaultRows';\nimport {useFirstPotentialMatches} from '../../hooks/useFirstPotentialMatches';\nimport {useSpinnerAndReloadData} from '../Actions/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const MatchReviewTable = ({config, getSavedState, saveState}: Props) => {\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {tableViewModeAvailable} = config;\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n const {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n\n const collaboration = useCollaboration({objectIds});\n\n const styles = useStyles();\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_ROWS,\n metadata,\n entityTypeUri: entity.type\n });\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>(defaultColumns);\n const [showNonOv, setShowNonOv] = useState(false);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedItems: selectedItems || [],\n setSelectedItems,\n config,\n selectedColumns: visibleColumns,\n setSelectedColumns: setVisibleColumns,\n entitiesMap,\n columnsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n onSelectAll: () => {},\n onToggleSelect: toggleSelect,\n onResetSelect: () => {},\n selected: [],\n isComparisonViewShown: false\n };\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n lastSavedState.current = savedState;\n if (savedState?.visibleColumns) {\n setVisibleColumns(addFixedAttributes(savedState.visibleColumns));\n }\n if (savedState?.comparisonViewMode) {\n setComparisonViewMode(tableViewModeAvailable ? savedState.comparisonViewMode : ComparisonViewMode.COLUMNS);\n }\n if (has('showNonOv', savedState)) {\n setShowNonOv(savedState.showNonOv);\n }\n }, [isLoaded]); // eslint-disable-line\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n const newSavedState = {comparisonViewMode, visibleColumns, showNonOv};\n if (!equals(newSavedState, lastSavedState.current)) {\n updateSavedState(newSavedState);\n lastSavedState.current = newSavedState;\n }\n }, [visibleColumns, comparisonViewMode, showNonOv]); // eslint-disable-line\n\n return (\n <>\n <TableHeader\n config={config}\n columnsData={groupedColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={setVisibleColumns}\n showNonOv={showNonOv}\n onChangeShowNonOv={setShowNonOv}\n />\n <CollaborationContext.Provider value={collaboration}>\n {comparisonViewMode === ComparisonViewMode.COLUMNS ? (\n <DragAndDrop>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n {isLoaded && (\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n )}\n </ColumnHandlerContext.Provider>\n </DragAndDrop>\n ) : (\n isLoaded && <MatchesTable {...matchesTableProps} />\n )}\n </CollaborationContext.Provider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useEffect, useMemo} from 'react';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatches} from './useMatches';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems} = useViewStateActions();\n\n const entityUri = prop('uri', entity);\n const dataTenant = prop('dataTenant', entity);\n const initialRequestParam = useMemo(\n () => ({\n enabled: !!entityUri,\n entity,\n filter: '',\n page: 0,\n sorting: {\n field: 'score',\n order: 'desc'\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatches(initialRequestParam);\n\n useEffect(() => {\n setSelectedItems(matches);\n }, [matches, setSelectedItems]);\n};\n","import {getEntityTypeMatchAttributes, Metadata} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {\n getColumnsData,\n getSortOptionIdFromData,\n getMatchAttrColumns,\n groupColumnsDataByMatchAttributes\n} from '../helpers/attributesHelpers';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype MatchesColumnsDataProps = {\n defaultColumnsData: MatchesColumnsData[];\n additionalColumnsData?: MatchesColumnsData[];\n metadata: Metadata;\n entityTypeUri: string;\n};\n\nexport const useMatchesColumnsData = ({\n defaultColumnsData,\n additionalColumnsData,\n metadata,\n entityTypeUri\n}: MatchesColumnsDataProps): [MatchesColumnsData[], GroupedColumnData[], string[]] => {\n return useMemo(() => {\n const attrColumnsData = getColumnsData(metadata, entityTypeUri);\n const allColumnsData: MatchesColumnsData[] = defaultColumnsData\n .concat(additionalColumnsData || [])\n .concat(attrColumnsData);\n const matchAttributes: string[] = getEntityTypeMatchAttributes(metadata, entityTypeUri);\n const groupedColumnsData: GroupedColumnData[] = groupColumnsDataByMatchAttributes(\n matchAttributes,\n allColumnsData\n );\n const defaultColumns: string[] = pipe(\n getMatchAttrColumns,\n concat(defaultColumnsData),\n getSortOptionIdFromData\n )(matchAttributes, attrColumnsData);\n return [allColumnsData, groupedColumnsData, defaultColumns];\n }, [defaultColumnsData, additionalColumnsData, metadata, entityTypeUri]);\n};\n","import {concat, filter, map, pipe, prop, propEq, uniq} from 'ramda';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\n\nconst addFixedAttributes = (visibleAttributes: string[] = []): string[] => {\n const getFixedAttributesIds = pipe(filter(propEq('hideable', false)), map(prop('id')));\n const getUnique = pipe(concat, uniq);\n\n const fixedAttributesIds = getFixedAttributesIds(DEFAULT_ROWS);\n return getUnique(fixedAttributesIds, visibleAttributes);\n};\n\nexport {addFixedAttributes};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n potentialMatchesWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n },\n potentialMatchesContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\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: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.25 3H3.75c-.825 0-1.5.675-1.5 1.5v9c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5v-9c0-.825-.675-1.5-1.5-1.5zm-9 10.5h-1.5v-6h1.5v6zM3.75 6h1.5V4.5h-1.5V6zm6 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6zm7.5 7.5h-3v-6h3v6zm-3-7.5h3V4.5h-3V6z\",\n fill: \"#000\",\n fillOpacity: \".541\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n flexBox: {\n display: 'flex',\n alignItems: 'center'\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 4px'\n }\n});\n","import {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport React, {useCallback} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport TableIcon from './TableIcon.svg';\nimport {useStyles} from './styles';\n\nexport const ChangeModeConfirmation = () => {\n const {selectedItems, comparisonViewMode, limitSelection} = useViewState();\n const {setComparisonViewMode, deleteExtraMatches} = useViewStateActions();\n const styles = useStyles();\n const onSave = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.TABLE);\n }, [setComparisonViewMode]);\n const open = comparisonViewMode === ComparisonViewMode.COLUMNS && selectedItems.length > limitSelection;\n const title = i18n.text('Switch to table view');\n const content = (\n <div className={styles.flexBox}>\n {i18n.text('Please switch to')}\n <div className={styles.icon}>\n <TableIcon />\n </div>\n {i18n.text('Table View to compare more than ${max} profiles', {max: MAX_PROFILES_TO_COMPARE})}\n </div>\n );\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n onSave={onSave}\n onDiscard={deleteExtraMatches}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {useSnackbar, SnackbarContext} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {PotentialMatchesProfileBand} from './PotentialMatchesProfileBand/PotentialMatchesProfileBand';\nimport {RightSidePanel} from './components/RightSidePanel/RightSidePanel';\nimport {MatchReviewTable} from './components/MatchReviewTable/MatchReviewTable';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\nimport {ReloadDataProvider} from './contexts/ReloadDataContext';\nimport {PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const NewPMView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n const {tableViewModeAvailable} = config;\n return (\n <ViewStateProvider tableViewModeAvailable={tableViewModeAvailable}>\n <ReloadDataProvider>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <div className={styles.perspectiveView}>\n {entity?.uri && (\n <div className={styles.potentialMatchesContainer}>\n <div className={styles.potentialMatchesWrapper}>\n <PotentialMatchesProfileBand />\n <MatchReviewTable\n config={config}\n getSavedState={getSavedState}\n saveState={saveState}\n />\n </div>\n <RightSidePanel config={config} />\n <SnackbarRenderer />\n {tableViewModeAvailable && <ChangeModeConfirmation />}\n </div>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import MomentUtils from '@date-io/moment';\nimport PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {identity} from 'ramda';\nimport {PotentialMatchesConfigType, promisifyCallback, debounce} from '@reltio/mdm-sdk';\nimport {default as PMView} from './PotentialMatchesView';\nimport {NewPMView} from './NewPMView/NewPMVew';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'potentialMathcesView',\n disableGlobal: true\n});\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 3000;\n\nconst PotentialMatchesView = ({config, store, onResize = identity, saveState, getSavedState}) => {\n const getSavedStatePromisified = useCallback(promisifyCallback(getSavedState), [getSavedState]);\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]);\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config &&\n (config.newView !== false ? (\n <NewPMView\n config={config}\n saveState={debouncedSaveState}\n getSavedState={getSavedStatePromisified}\n />\n ) : (\n <PMView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n ))}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nPotentialMatchesView.propTypes = {\n config: PotentialMatchesConfigType,\n store: PropTypes.object,\n onResize: PropTypes.func,\n saveState: PropTypes.func,\n getSavedState: PropTypes.func\n};\n\nexport default PotentialMatchesView;\n","import {PotentialMatchesView} from '@reltio/potential-matches';\n\nexport default PotentialMatchesView;\n"],"names":["useStyles","makeStyles","icon","maxHeight","maxWidth","marginRight","group","metadata","styles","absoluteImagePath","useSelector","mdm","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","className","avatarText","title","AvatarStates","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","attribute","cursor","lineHeight","flexBasis","display","alignItems","padding","width","borderBottom","disabled","attributeWithValue","noSelect","name","fontSize","color","overflow","whiteSpace","textOverflow","direction","textAlign","flex","defaultGetLabel","either","prop","value","getLabel","onSelectAttributeClick","label","onClick","undefined","ExpandedValueTooltip","i18n","SmallIconButton","size","ArrowDropDown","isEqualAttributes","eqBy","pick","checkAttributeIncludes","selectedAttributes","find","filterItem","item","filterText","toLowerCase","includes","filterItemsTree","children","some","getAttributeIndex","findIndex","getContainerWidth","getMaxItemWidth","getAttributeGroupData","groupId","groupName","level","noFilter","isItemFiltered","concat","filter","subItem","flatMap","flat","prepareGroupsForSelectAttributeList","curry","groups","map","items","attributes","length","subHeader","backgroundColor","margin","fontWeight","memo","onItemClick","focusIndex","hideCheckBox","mdmModule","VirtualGroupedList","getItemSize","i","renderItem","style","index","checked","isFocused","AttributeListItem","key","fieldName","data","notSelectable","Highlighter","text","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","component","needGroupIcon","AttributeGroupIcon","selector","minWidth","background","boxSizing","borderRadius","itemsGroups","onSelect","onRestoreFocus","identity","onOpenPopup","disableRestoreFocus","disableEnforceFocus","single","ungroup","selectAnchor","setSelectAnchor","closePopup","useCallback","isPopupOpen","setFilterText","clearFilterText","setSelectedAttributes","clearSelectedAttributes","filteredItemsGroups","useMemo","pipe","when","always","chain","flatten","flattenGroupedItemsData","containerWidth","Math","max","handleOnClose","tap","searchInputRef","useRef","onListItemClick","selectedAttribute","filterSelectedAttributes","current","focus","handleSearchOnEnter","groupData","getOnEnterHandler","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","onClose","event","currentTarget","SelectionPopup","anchorEl","onSearch","containerHeight","searchInputOnKeyDown","anchorOrigin","horizontal","vertical","height","getRowCellKey","rowIndex","columnData","cellIndex","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","flushHeightUpdates","debounce","clearHeightsCache","getDynamicRowCellHeight","__","changeRowCellHeight","useWith","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","RowCellAutoSizer","onChangeHeight","cell","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","handleHeight","onResize","RootRef","rootRef","row","marginBottom","rowItem","paddingRight","fullWidth","flexGrow","theme","readOnlyLogicOperatorContainer","palette","secondary","readOnlyFilter","marginLeft","ReadOnlyLogicOperator","rowData","operator","capitalize","ReadOnlyFilter","getFilterOptionLabel","QueryBuilderRow","classes","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ValuesEditorComponent","ActionsComponent","filterSelectorRef","attributeSelectorProps","rowContext","root","logicOperatorContainer","attributeSelectorContainer","filterSelectorContainer","textFieldInputRef","valuesEditorContainer","actionsContainer","QueryBuilderAttributeType","onOpen","disablePopoverRestoreFocus","QueryBuilderRowsGroup","rowClasses","rowsData","lastRowAttributeSelectorProps","filterSelectorRefIndex","rowProps","renderRow","previousRow","path","lastRowProps","sourceType","uri","findSourceSystemByUri","getSourceSystemLabel","sourceIcon","variant","renderAttributesList","values","valueContainerClassName","props","attributeValue","expanded","LabelRenderer","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","CrosswalksDisplayContext","createContext","CrosswalksDisplayProvider","Provider","useCrosswalkColor","crosswalk","getCrosswalkColor","getColor","getCrosswalkId","useHighlightedCrosswalks","highlightedCrosswalks","useCrosswalkHighlight","setCrosswalkHighlighted","noop","isHighlighted","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkFocus","toggleCrosswalkFocus","focusedCrosswalks","Views","FIND_MATCHES","POTENTIAL_MATCHES","NOT_A_MATCH","ComparisonViewMode","DataContext","reloadData","setReloadHandler","contextValue","dataHandler","reloadHandler","createContextValue","ReloadDataProvider","useReloadData","dataContext","Error","ViewStateContext","ViewDispatchContext","UPDATE_COMPARISON_VIEW_MODE","SET_GLOBAL_SPINNER","actions","setComparisonViewMode","createStandardAction","setGlobalSpinner","viewStateReducer","action","comparisonViewMode","payload","isGlobalSpinnerActive","ViewStateProvider","dispatch","useReducer","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","ColumnHandlerContext","React","displayName","createEntityTypeFilter","buildMDMFilters","entityType","filters","columnsData","currentTypeClause","Maybe","orSome","Object","entries","columnId","columnFilter","propEq","columnFilterToMdmFilter","getColumnsDataFromEntityAttributes","attr","attributeUriToSearchUri","dataTypeDefinition","getAttrDataTypeDefinition","getColumnsData","getEntityAttributesFromMetadata","getColumnsIdFromData","pluck","isMatchAttrColumn","matchAttributes","column","isReferenceAttrColumn","isSubAttrIdForColumn","isNestedAttrColumn","isNested","isReference","parentColumn","startsWith","isNestedForOneOfColumns","columns","isRelatedToColumns","getMatchAttrColumns","reject","useMatchesColumnsData","defaultColumnsData","additionalColumnsData","attrColumnsData","allColumnsData","getEntityTypeMatchAttributes","groupedColumnsData","matchAttrColumns","otherColumns","partition","groupColumnsDataByMatchAttributes","RESET","SET_SELECTED_ITEMS","TOGGLE_SELECT","SET_OPTIONS","SET_LIMIT_SELECTION","basicTableViewState","reset","toggleSelect","setSelectedItems","setOptions","setLimitSelection","reducer","options","evolve","selected","itemIndex","selectedItem","remove","limitSelection","both","complement","isNil","propSatisfies","gte","take","append","useMatchesTable","defaultColumns","defaultSort","defaultRowsPerPage","defaultOptions","field","order","initState","visibleColumns","sorting","page","rowsPerPage","stateReducer","showAddRelationErrors","error","console","ErrorPopup","message","showDCRReviewErrors","errorCode","ApiErrorCode","showApiError","errorMessage","useSpinnerAndReloadData","onStartRequest","onFinishRequest","MergeButton","forwardRef","ref","entities","entity","mode","onMenuClose","EntityType","_extends","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","viewBox","version","xmlns","xmlnsXlink","d","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","DCRReviewButton","operationIsInProgress","startPMReview","selectors","workflowPath","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","catch","finally","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","ActionButton","DcrReviewIcon","CreateRelationButton","mainEntity","currentEntity","matchRules","AddRelationIcon","NotMatchButton","iconButton","primary","main","comparisonButtonSelected","darken","hoverOpacity","comparisonButton","CompareModeButton","selectedMatchesCount","isComparisonViewHidden","isDisabled","tooltip","maxProfilesToCompare","tooltipTitle","ComparisonViewIcon","showForDisabled","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","SetAsMatchIcon","SetAMatchButton","markingIsInProgress","setAMatch","_tenant","setAsMatch","useSetAMatch","container","mergeButton","flexShrink","rightButton","moreOptions","MatchControlsCellType","show","config","permission","canMerge","canAddRelation","canMark","FindMatchesViewControls","ExpandedContext","complexAttributesHeadRenderer","complexAttributesHeadLabel","matchedAttribute","ExpandableAttributeValuesBlock","Component","WithExpanded","componentProps","expandedMap","withExpanded","ReadOnlyAttributeValuesBlock","AttributesRenderer","matched","ComplexAttributesHeadRenderer","onExpandType","onExpandClick","CollapseIcon","ExpandIcon","AttributeTypeType","position","closeButton","zIndex","profileCard_container","profileCard_label","lineClamp","boxOrient","profileCard_secondaryLabel","EntityCard","showCloseButton","CloseIcon","ProfileCard","secondaryLabel","paddingTop","isPotentialMatchesTask","task","minHeight","assigneeSelector","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","match","tasks","loadTasks","safePromise","useSafePromise","entityUri","matchUri","getEntityUriFromMatchObject","requestIsInProgress","setRequestIsInProgress","setTasks","getTasksForEntity","then","result","hasMatchEntityUri","isTaskBelongsToMatch","allPass","_","enabled","loading","useWorkflowTasks","isPending","isMergeInProgress","sendMergeAllRequest","merge","useMergeAllRequest","object","isMarkAsInProgress","sendMarkAsNotMatchRequest","notMatch","useMarkAsNotMatchRequest","mapping","Merge","NotAMatch","possibleActions","assignee","getAssignees","updateAssignee","updateRequestIsInProgress","useWorkflowAssignee","Actions","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","menuItems","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","DropDownSelector","getOptions","onChange","hideSelectedOptions","WorkflowComments","PotentialMatchType","WorkflowCardRenderer","DEFAULT_ROWS","cellRenderer","entitiesMap","MatchRulesBlock","getAttrTypeUriByName","entityTypeUri","getAttrTypeNameByUri","split","last","borderStyle","thickBorderStyle","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","borderTop","borderLeft","left","top","ComparisonTable","matches","controlsRenderer","attributeTypeUris","keys","getEntityAttributesTypeUris","attributesRows","attrTypeUri","findAttributeTypeByUri","collectionName","getAttributeSource","headCellRenderer","isComplexAttribute","assoc","getDefaultRows","getTableRowsData","onRemoveItem","isMainEntity","reduce","getEntityId","getActionPermissionForMatch","isAttributeSearchUri","attrSource","pathOr","isOv","getAttributeValues","getAttributesForMatchRules","getColumnDataForRowData","getTableColumnsData","setExpandedMap","expandedContextValue","VerticalHeadingsTable","theadRowsNumber","MetadataType","PotentialMatchesConfigType","FullscreenButton","isFullscreen","FullscreenExitIcon","FullscreenIcon","CloseButton","_theme","header","flex1","flexDirection","ComparisonViewHeader","selectedColumns","onChangeColumns","closeHandler","fullScreenHandler","BasicViewHeader","Typography","ColumnsSettings","ColumnsDataType","getFirstLevelParentAttribute","slice","join","replaceSubAttributesWithParent","uniq","getSubAttributesColumnsByColumnId","columnIds","push","addSubAttributesColumns","firstLevelParentColumnId","subAttributesColumns","acc","findSubAttributesInColumnsData","isSubAttributeColumn","lt","removeSubAttributesColumns","table","ComparisonView","selectedColumnsWithoutSubAttributes","searchUri","searchUriToAttrUri","defaultProps","FullScreenView","fullScreenContainer","Portal","Element","defaultWrapperStyles","paddingBottom","content","right","pointerEvents","getColoredRowCellStyle","hoveredColor","fade","lightPrimaryBackground","lighten","lightPrimaryBackgroundHovered","highlightBackground","entityBackground","link","textDecoration","rowCheckbox","headCheckbox","headCell","headCellWithEntity","rowCell","rowCellFirstColumn","firstEntityCell","entityRowCell","entityRowCellSelected","rowCellHighlighted","rowCellSelected","defaultWrapper","hoveredDefaultWrapper","entityWrapper","paddingLeft","profileWrapper","entityLabel","commentsContainer","matchRulesWrapper","blobWrapper","overflowY","overflowX","imageWrapper","referenceWrapper","entityAvatar","transform","collapseButton","dragIcon","opacity","withFilterAtBottom","DefaultHeadCellRenderer","DefaultCellValueRenderer","DataTypeValue","EntityProfileRenderer","onToggleSelect","entityToMatch","isRowSelected","hoverRowIndex","containerId","IdContext","isRowSelectable","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","Checkbox","EntityUriLink","getEntityUriForLink","CommentsContainer","createObjectIdForPM","objectType","CollaborationObjectTypes","relatedObjectUris","createRelatedObjectUris","matchEntityUri","allowOnlyOneComment","withTableContext","ProfileHeadCellRenderer","isAllSelected","isSomeSelected","onCheckboxClick","isComparisonViewShown","indeterminate","onResetSelect","onSelectAll","MatchRulesRenderer","transitiveMatchRules","SimpleMatchRulesBlock","TransitiveMatchBlock","MatchIQRenderer","mlMatchRules","isMlMatch","BlobRenderer","onScroll","ImageRenderer","getImageAttributeOvThumbnailUrl","ReferenceRenderer","EntityTypeIcon","getEntityType","getReferencedEntityFromAttrValue","objectURI","getAttrPathFromColumnId","getBasicTableRowsData","getTransitiveMatchesForEntity","allMatchRules","matchScore","isEmpty","getMatchRules","partitionByMlMatch","attrPath","getOvAttributeValuesByPath","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","dataType","BlobRender","getCellValueRendererByDataType","RowCellRenderer","CellValueRenderer","isCellHighlighted","columnIndex","isFirstColumn","every","tableContainer","rowActionButtonsWrapper","rowActionButtons","actionButton","hoveredRowRightContentContainer","MatchesTable","onFilter","onSort","actionButtonsRenderer","basicTableRef","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","HeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","getRowHeight","CellRenderer","EntityCellRenderer","useBasicTableCellRenderer","maxRowValuesCount","entityRowHeight","enhancedColumnsData","withEntityCell","HeadCellWithEntityValue","headCellData","withEntityCellValue","tableContext","useDynamicRowCellHeight","useLayoutEffect","openActionsMenu","setOpenActionsMenu","onActionsMenuOpen","onActionsMenuClose","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","hoveredRowRightContent","hoveredMatch","isChecked","buttonClassName","onChangePopupVisibility","showAlways","renderRowCell","actionsContent","tableRef","getRowCellHeight","defaultGetRowCellHeight","tableClasses","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndRowReorderingHandler","hoveredContentPosition","ColumnFilterType","SortingType","buttonRoot","active","paper","menuItem","menuText","letterSpacing","checkIcon","OptionsMenu","optionsData","onChangeOptions","buttonRef","setIsOpen","toggleOpen","Menu","autoFocus","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","optionItem","isOptionEnabled","MenuItem","Check","totalCaption","totalNumber","MatchesTableHeader","total","filtersEnabled","onToggleFilters","showFilters","showOptions","Spacer","FilterButton","VerticalDivider","TableHeaderSelectionMode","hasSelectedItems","count","button","getEntityObjects","FindMatchesViewActions","getActionPermissionForMatches","DEFAULT_COLUMNS_DATA","hideable","initialWidth","autoResize","OPTIONS_DATA","tableView","matchesView","mainArea","comparisonView","fullScreen","useLimitSelection","ROWS_PER_PAGE_OPTIONS","DEFAULT_ROWS_PER_PAGE","DEFAULT_COLUMNS","DEFAULT_SORT_FIELD","DEFAULT_OPTIONS","showInactiveEntities","FindMatchesView","changeRowsPerPage","changePage","changeColumns","toggleFilters","changeFilter","toggleSort","visibleColumnsData","requestFilters","columnsToSelect","findEntities","select","setTotal","setEntities","DEFAULT_SELECTION","activityFilter","ActivityFilters","Promise","all","getFilteredEntities","offset","sort","getTotals","results","totalResponse","useFindEntities","resetSelected","selectAll","isFullscreenMode","comparisonViewProps","BasicTablePagination","rowsPerPageOptions","onChangePage","onChangeRowsPerPage","LinearLoadIndicator","dialogPaper","dialogTitle","titleText","fontize","attributeList","AddRelationDialog","useDispatch","relation","inRelations","inRelationTypes","outRelations","outRelationTypes","isNotDuplicatedInRelation","isNotDuplicatedOutRelation","inOutRelationsDeduplicator","setObjectTypes","assocPath","startObject","objectTypeURI","endObject","matchActionConfig","propOr","rulesConfig","getRulesConfig","relationTypeUris","createRelation","canCreateRelationBetweenEntities","getRelationType","getRelationTypesFromConfig","relationUri","relationType","relationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","viewId","onRelationTypeChange","profile","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","onCancel","Dialog","DialogTitle","disableTypography","DialogContent","ConnectionRelationTypeSelector","applyFirstByDefault","AttributesList","attrTypes","showEmptyEditors","ModeTypes","parentUri","DialogActions","Button","startDate","endDate","startEntityUri","endEntityUri","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","MenuItemRenderer","ActionsPanel","numberOfButtons","buttonActions","menuActions","splitAt","buttonMode","buttonSize","SmallIconButtonWithTooltip","onMenuOpen","MatchesViewControls","hasDTEntity","MatchesViewActions","ADDITIONAL_COLUMNS_DATA","showTransitiveMatches","MatchesView","loadMatches","onStartLoading","onFinishLoading","useMatchesLoader","useMatches","objectIds","getPotentialMatchesObjectIdsForCollaboration","collaboration","useCollaboration","CollaborationContext","EntitiesMapContext","NotMatchViewControls","NotMatchViewActions","NotMatchView","loadNotMatches","setMatches","setEntitiesMap","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","loadNotMatchesIfNeeded","force","activeness","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","users","useUsers","UsersContext","DragAndDrop","PMTabs","availableTabs","activeTab","labels","Tabs","indicatorColor","textColor","scrollButtons","Tab","basicView","fontFamily","bottom","PotentialMatchesView","getSavedState","saveState","setActiveTab","setFullScreenContainer","BasicView","tab","connect","comments","justifyContent","marginTop","PotentialMatchesProfileBand","ProfileBand","COMMENTS_CONTAINER_VISIBILITY_AREA","Box","mr","ProfileBandNavigation","clipRule","ActivePanel","createAttributeItemConfig","attrNode","parents","createAttributeItemBasicConfig","childNode","attrType","omit","collectAttributeItems","getAllAttributeTypesTree","getSortOptionIdFromData","attrUri","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","deleteExtraMatches","tableViewModeAvailable","newMode","useMatchesReducer","resultActions","viewActions","viewState","getFilteredSelectedItems","ActionButtonMode","onSuccess","showSnackbarMessage","SnackbarContext","RightSideHeaderContext","attributeSelect","sortField","sortLevel","findNode","parentFieldName","option","node","handleChange","val","BasicAttributeSelector","border","arrow","transition","rotate","inputRoot","currentSearchText","setCurrentSearchText","handleSearch","trim","handleChangeSearchText","newSearchText","document","activeElement","SearchInput","inputRef","autofocus","onKeyPress","selectedCount","totalCount","onTextSearch","sortOptions","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","IconButton","classNames","DEFAULT_SORT_OPTIONS","useSortOptions","additionalOptions","getSortingItemsGroups","col","actionButtons","wrapper","selectedRow","openMenu","setOpenMenu","MatchRuleVariant","view","MatchItems","DEFAULT_SORT_FIELDS","searchText","setSearchText","globalFilter","filterQuery","buildFilterQueryString","pathEq","rules","markMatchedValues","containerRef","boundariesElement","popupBoundariesValue","element","priority","PopupBoundariesContext","ADDITIONAL_SORT_OPTIONS_DATA","isMatchRuleFilter","any","equals","MatchRulesAttrTypes","buildRulesStringFormFilters","actionButtonSize","hasWorkflow","matchRulesFilters","regularFilters","DEFAULT_SORT_OPTIONS_ID","markAsNotMatch","record","NOT_MATCH","addGlobalFilterToQuery","PotentialMatches","FindMatches","render","input","potentialMatchesComponents","FilterSelector","isMatchRuleAttrType","FilterOptions","ValuesEditor","changeValue","newValues","TextFieldProps","InputProps","MatchRulesSelector","RightSidePanel","matchesFilters","setMatchesFilters","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","setActive","toggleActive","newId","resetActive","attributeTypes","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","potentialMatchesAttributeTypes","findMatchesAttributeTypes","EntityAttrTypes","elements","PotentialMatchesIcon","headerProps","mainTitle","rightContent","AttributesFiltersButton","components","FindMatchesIcon","NotAMatchIcon","SidePanel","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","MODES","Icon","ViewColumnRoundedIcon","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","splitter","actionSplitter","SettingsMenu","SettingsIcon","TableHeader","showNonOv","onChangeShowNonOv","handleToggleShowOvValue","not","settingItems","selectable","Divider","orientation","arrowButton","matchedValuesUris","highlightedValuesContextValue","highlightedValuesUris","highlightedClassName","HighlightedValuesContext","ColumnDataContext","menuButtonWrapper","setAnchor","setHoveredId","hoveredId","ArrowExpandButton","HoveredEntityContext","hoveredEntity","resetHoveredEntity","hovered","matchControlsContainer","WorkflowTasksAvailabilityContext","setWorkflowTaskAvailability","itemContainer","showTooltip","SourceIcon","Tooltip","crosswalkIcon","labelContainer","spacer","flexWrap","additionalPropsForDefaultRows","showButtons","rest","isHovered","controlProps","MatchControls","workflowCard","sources","SourcesRenderer","entityId","crosswalks","nestedAttributeValue","subAttributeType","CrosswalksAttrTypes","getFakeAttributeValueForCrosswalk","defaultRows","getMatchedValuesUris","matchedValues","cond","Action","TEXT","INSERT_BELOW","INSERT_ABOVE","HIDE","Popover","List","handler","ListItemText","primaryTypographyProps","renderListItem","getClickHandler","deepFilter","nodes","groupColumnsData","groupedItems","headColumns","elemId","getAdditionalRows","setAction","isOpenConfigPopup","setIsOpenConfigPopup","closeAddRowPopup","newAttributes","indexOf","splice","ColumnsSettingsPopup","onColumnClick","newIndex","firstColumnColor","comparisonTableWrapper","collapsedRow","emptyState","setSelectedColumns","setHoveredEntity","anchor","defaultRow","showNonOnly","isDraggable","onClosePopup","selectedAttributeUris","hoveredEntityContextValue","isThereAnyTask","workflowTasksAvailabilityMap","setWorkflowTasksAvailabilityMap","useWorkflowTasksAvailability","workflowCardRowClassname","displayedRowsData","rowClassName","onMoveRow","dragId","hoverId","newArr","groupBy","getFirstLevelSearchUri","toPairs","dragIndex","hoverIndex","dragRow","insert","nth","onMoveColumn","dragColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","secondaryText","rowCloseIcon","backgroundImage","firstHeadCell","onRemove","isRowRemovable","headIndex","filteredColumnsData","MatchReviewTable","isLoaded","savedState","updateSavedState","useSavedStateForEntityType","lastSavedState","dataTenant","initialRequestParam","useFirstPotentialMatches","setVisibleColumns","setShowNonOv","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","newSavedState","perspectiveView","default","potentialMatchesWrapper","potentialMatchesContainer","flexBox","ChangeModeConfirmation","onSave","TableIcon","ConfirmationDialog","onDiscard","saveCaption","discardCaption","NewPMView","SnackbarRenderer","useSnackbar","S","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","debouncedSaveState","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","floor","newView"],"sourceRoot":""}
|