@reltio/remotes 1.4.1680 → 1.4.1682
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1039.js +1 -1
- package/1088.js +1 -1
- package/1148.js +1 -1
- package/1215.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1550.js +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1840.js +1 -1
- package/2066.js +1 -1
- package/2400.js +1 -1
- package/2596.js +1 -1
- package/2617.js +1 -1
- package/2966.js +1 -1
- package/3096.js +1 -1
- package/3144.js +1 -1
- package/3209.js +1 -1
- package/3348.js +1 -1
- package/3373.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/3639.js +1 -1
- package/3785.js +1 -1
- package/4038.js +1 -1
- package/4143.js +1 -1
- package/415.js +1 -1
- package/4197.js +1 -1
- package/4197.js.map +1 -1
- package/4212.js +1 -1
- package/4481.js +1 -1
- package/4610.js +1 -1
- package/4787.js +1 -1
- package/4806.js +1 -1
- package/4838.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5177.js +1 -1
- package/5201.js +1 -1
- package/5258.js +1 -1
- package/5292.js +1 -1
- package/5383.js +1 -1
- package/5738.js +1 -1
- package/5738.js.map +1 -1
- package/5769.js +1 -1
- package/6287.js +1 -1
- package/636.js +1 -1
- package/6422.js +1 -1
- package/658.js +1 -1
- package/6799.js +1 -1
- package/6844.js +1 -1
- package/6903.js +1 -1
- package/7074.js +1 -1
- package/7119.js +1 -1
- package/7237.js +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7407.js +1 -1
- package/7422.js +1 -1
- package/7468.js +1 -1
- package/7605.js +1 -1
- package/7626.js +1 -1
- package/7744.js +1 -1
- package/7802.js +1 -1
- package/7896.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8216.js +1 -1
- package/8216.js.map +1 -1
- package/829.js +1 -1
- package/8741.js +1 -1
- package/8786.js +1 -1
- package/9016.js +1 -1
- package/9032.js +1 -1
- package/9050.js +1 -1
- package/9109.js +1 -1
- package/9283.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9719.js +1 -1
- package/9861.js +1 -1
- package/main.js +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
package/8216.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"8216.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/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.ts","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.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.ts","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.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/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/hooks/useKeepInputVisible.ts","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/ScreenProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/sortHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/MergeButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/NotMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/SetAMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSetAMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/DcrReviewButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useRequestDCRReview.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useReinstateMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/ReinstateMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CreateRelationButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/RightSideHeaderContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/SortingFieldSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/RightSidePanelHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSortOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useEntityColor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/ItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/MatchItems.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/RightSideSearch.tsx","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/FindMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/FindMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFindEntities.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/relationsHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/AddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useAddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/MatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useNotMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/NotMatchView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Content/Content.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/ComparisonViewModeSwitcher.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/TableHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ExpandedContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/withExpanded.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/MatchedValuesCounter.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnsDataContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/HoveredEntityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchControls/MatchControls.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/workflow.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/WorkflowTasksAvailabilityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/WorkflowCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultRows.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/LabelRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/CrosswalksRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/tableHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnHandlerContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/ConfigRowPopup.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/AddRowPopups.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasksAvailability.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ComparisonTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/ComparisonView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchRulesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ImageRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ReferenceRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/EntityRowCollapseContext.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/SourceChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/RowCellChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/CommonRowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/MatchesTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/withEntityCellValue.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/MatchReviewTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFirstPotentialMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesColumnData.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/helpers/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/TableIcon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/ChangeModeConfirmation.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/potential-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/find-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/not-a-match-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/ValuesEditor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/FilterSelector/FilterSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/usePotentialMatchesRightSidePanelElements.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/PotentialMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/index.tsx","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@mui/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 {getAbsoluteImageUrl, getEntityTypeGraphIcon, Metadata} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\nimport {useMdmAbsoluteImagePath} from '../../contexts';\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 = useMdmAbsoluteImagePath();\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 {makeStyles} from '@mui/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 ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\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={ArrowDropDownIcon} 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 '@mui/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 ListItem from '@mui/material/ListItem';\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 {useMdmMetadata} from '../../contexts';\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\n\ntype Data = {\n attrType?: AttributeType;\n};\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 = useMdmMetadata();\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 '@mui/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(\n () => prepareGroupsForSelectAttributeList(filterText, itemsGroups),\n [itemsGroups, 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(\n () => 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} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\nimport {ColumnData, RowValue} from '../../types';\n\ntype GetRowCellKeyProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype RowCellHeightsMap = Record<string, number>;\n\nconst defaultGetRowCellKey = ({rowIndex, columnData, cellIndex}: GetRowCellKeyProps) =>\n `${columnData.id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = (getRowCellKey = defaultGetRowCellKey) => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState<RowCellHeightsMap>({});\n const rowCellHeightsMapCache = useRef<RowCellHeightsMap>({});\n\n const flushHeightUpdates = useCallback(\n debounce(() => setRowCellHeightsMap({...rowCellHeightsMapCache.current})),\n []\n );\n\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(\n (cell: GetRowCellKeyProps) => {\n const key = getRowCellKey(cell);\n return rowCellHeightsMap[key];\n },\n [getRowCellKey, rowCellHeightsMap]\n );\n\n const changeRowCellHeight = useCallback(\n curry((cell: GetRowCellKeyProps, height: number) => {\n const key = getRowCellKey(cell);\n const currentHeight = rowCellHeightsMapCache.current[key];\n if (currentHeight !== height) {\n rowCellHeightsMapCache.current[key] = height;\n flushHeightUpdates();\n }\n }),\n [flushHeightUpdates, getRowCellKey]\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import {makeStyles} from '@mui/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, {ReactNode, useRef} from 'react';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDidUpdateEffect} from '../../../hooks';\nimport {ColumnData, RenderRowCellProps, RowValue} from '../types';\n\ntype OnChangeHeightProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype Props = {\n onChangeHeight: (props: OnChangeHeightProps) => (size: number) => void;\n children: ReactNode;\n} & RenderRowCellProps;\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}: Props) => {\n const cellRef = useRef<HTMLDivElement>();\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData, rowValue});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div ref={cellRef}>\n <ReactResizeDetector handleHeight onResize={adjustCellHeight} />\n {cell}\n </div>\n );\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@mui/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 {QueryBuilderAttribute} from '../../../types';\nimport useStyles from './styles';\n\nimport {capitalize} from '@mui/material/utils';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyLogicOperator = ({className, rowData}: Props) => {\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 classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttribute} from '../../../types';\n\nimport useStyles from './styles';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyFilter = ({className, rowData}: Props) => {\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\nexport default ReadOnlyFilter;\n","import {makeStyles} from '@mui/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 React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nimport useStyles from './styles';\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)} data-reltio-id=\"query-builder-row\">\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 CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import {useEffect, MutableRefObject} from 'react';\nimport {usePrevious} from '../../../hooks';\n\nconst findNearestScrollableElement = (element: HTMLElement) => {\n let currentElement = element?.parentElement;\n while (currentElement) {\n if (currentElement.scrollHeight > currentElement.clientHeight) {\n return currentElement;\n }\n currentElement = currentElement.parentElement;\n }\n return null;\n};\n\nconst needToScroll = (\n valueLength: number,\n prevValuesLength: number,\n parentElementWithScroll: HTMLElement,\n currentElement: HTMLElement\n) =>\n valueLength &&\n prevValuesLength < valueLength &&\n currentElement.getBoundingClientRect().bottom > parentElementWithScroll.getBoundingClientRect().bottom;\n\nexport const useKeepInputVisible = (values = [], ref: MutableRefObject<HTMLElement>) => {\n const prevValuesLength = usePrevious(values?.length);\n\n useEffect(() => {\n const timerId = setTimeout(() => {\n const parentElementWithScroll = findNearestScrollableElement(ref?.current);\n if (\n parentElementWithScroll &&\n needToScroll(values?.length, prevValuesLength, parentElementWithScroll, ref.current)\n ) {\n ref.current?.scrollIntoView(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(timerId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values?.length]);\n};\n","import React, {useState, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit, either, path} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@mui/styles';\nimport {mergeClasses} from '../../../core/utils';\nimport {useKeepInputVisible} from '../hooks/useKeepInputVisible';\n\nconst getControlRef = (innerRef) => {\n const controlRef = {};\n if (innerRef.current) {\n controlRef.current = either(\n path(['select', 'controlRef']),\n path(['select', 'select', 'controlRef'])\n )(innerRef.current);\n }\n return controlRef;\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n const innerRef = useRef();\n useKeepInputVisible(props.value, getControlRef(innerRef));\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n innerRef={innerRef}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @mui/material/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n profileBandNavigation: {\n marginBottom: '10px'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n});\n","import React, {memo, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity,\n getEntityUriForLink,\n getProfileBandObjectIdsForCollaboration,\n HistorySlice\n} from '@reltio/mdm-sdk';\n\nimport ProfileBand from '../ProfileBand/ProfileBand';\nimport {ProfileBandNavigation} from '../ProfileBandNavigation';\nimport CommentsContainer from '../CommentsContainer/CommentsContainer';\nimport {CollaborationContextProvider} from '../../contexts';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants';\nimport {useCollaboration} from '../../hooks';\nimport {ProfileBandHistory} from '../history';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n historySlice?: HistorySlice;\n};\n\nexport const ScreenProfileBand = memo(({entity, className, historySlice}: Props) => {\n const styles = useStyles();\n const objectIds = useMemo(() => getProfileBandObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const entityUri = getEntityUriForLink(entity);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={historySlice?.aEntity || entity}\n >\n {historySlice ? (\n <ProfileBandHistory />\n ) : (\n <>\n <ProfileBandNavigation className={styles.profileBandNavigation} />\n <CommentsContainer\n className={styles.comments}\n uri={entityUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </>\n )}\n </ProfileBand>\n </CollaborationContextProvider>\n );\n});\n\nScreenProfileBand.displayName = 'ScreenProfileBand';\n","import {AttributeType, AttributeValue, DataTypes, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport React, {memo} from 'react';\nimport {ReadOnlyAttribute} from '../../..';\nimport ImageAttributesLine from '../ImageAttributesLine';\n\ntype SlotParams<T> = {\n attributeType?: AttributeType;\n attributeValue: T;\n};\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n expanded?: boolean;\n valueContainerClassName?: string;\n LabelRenderer?: ({attributeType, attributeValue}: SlotParams<AttributeValue>) => JSX.Element;\n RightSlot?: ({attributeType, attributeValue}: SlotParams<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, RightSlot, ...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, RightSlot, ...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","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, useMemo} from 'react';\n\ntype ReloadDataContextValue = {\n reloadData: () => void;\n addReloadHandler: (f: () => void) => void;\n removeReloadHandler: (f: () => void) => void;\n};\n\nconst ReloadDataContext = createContext<ReloadDataContextValue>({\n reloadData: () => {},\n addReloadHandler: () => {},\n removeReloadHandler: () => {}\n});\n\nconst createContextValue = () => {\n const reloadDataHandlers = [];\n const reloadData = () => {\n reloadDataHandlers.forEach((reloadHandler) => reloadHandler());\n };\n const addReloadHandler = (reloadHandler: () => void) => {\n reloadDataHandlers.push(reloadHandler);\n };\n const removeReloadHandler = (reloadHandler: () => void) => {\n const index = reloadDataHandlers.indexOf(reloadHandler);\n if (index !== -1) {\n reloadDataHandlers.splice(index, 1);\n }\n };\n return {\n reloadData,\n addReloadHandler,\n removeReloadHandler\n };\n};\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n const contextValue = useMemo(() => createContextValue(), []);\n return <ReloadDataContext.Provider value={contextValue}>{children}</ReloadDataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(ReloadDataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\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 {append, evolve, includes, propEq, remove} from 'ramda';\nimport React, {createContext, useContext, useReducer} from 'react';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {EntitiesMap, Entity, getEntityUriFromMatchObject, getPotentialMatchesColor, Match} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype ActionContext = {\n setGlobalSpinner: (val: boolean) => void;\n setSelectedItems: (matches: Match[]) => void;\n deselectByEntities: (entities: Entity[]) => void;\n toggleSelect: (match: Match) => void;\n actualizeSelectedItemsColors: () => 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 entityColors?: {entityUri: string; color: string}[];\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 DESELECT_BY_ENTITIES = 'DESELECT_BY_ENTITIES';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst ACTUALIZE_SELECTED_ITEMS_COLORS = 'ACTUALIZE_SELECTED_ITEMS_COLORS';\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 deselectByEntities: createStandardAction(DESELECT_BY_ENTITIES),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n actualizeSelectedItemsColors: createStandardAction(ACTUALIZE_SELECTED_ITEMS_COLORS),\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 DESELECT_BY_ENTITIES:\n return evolve(\n {\n selectedItems: (selectedItems) =>\n selectedItems.filter(({object}) => !action.payload.some(({uri}) => uri === object.uri))\n },\n state\n );\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 return append(item, selected);\n }\n }\n },\n state\n );\n case ACTUALIZE_SELECTED_ITEMS_COLORS: {\n return evolve(\n {\n entityColors: (colors) => {\n const selectedItems = state.selectedItems;\n\n const selectedEntitiesUris = selectedItems.map(getEntityUriFromMatchObject);\n\n const entityUrisWithoutColors = selectedEntitiesUris.filter((item) => {\n return !colors.find(propEq('entityUri', item));\n });\n\n return colors.map((item) => {\n return includes(item.entityUri, selectedEntitiesUris)\n ? item\n : {\n ...item,\n entityUri: entityUrisWithoutColors.shift()\n };\n });\n }\n },\n state\n );\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.ReactNode;\n};\nconst getInitialEntityColors = () => {\n return getPotentialMatchesColor().map((color) => ({\n entityUri: '',\n color\n }));\n};\nexport const ViewStateProvider = ({children}: 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 entityColors: getInitialEntityColors()\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 {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel,\n getAllAttributeTypesTree,\n Metadata,\n TEntityType,\n AttributeNode\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, reject, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype AttributeConfig = {\n title: string;\n fieldName: string;\n children?: AttributeConfig[];\n notSelectable?: boolean;\n};\n\nconst createAttributeItemConfig = (metadata: Metadata, attrNode: AttributeNode, 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: AttributeNode,\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, entityType?: TEntityType) =>\n entityType\n ? getAllAttributeTypesTree(metadata, entityType).map((attrNode) =>\n createAttributeItemConfig(metadata, attrNode)\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 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 i18n from 'ui-i18n';\nimport {any, equals, flatten, pipe, pluck, prop, values} from 'ramda';\nimport {DataTypes, MatchRulesAttrTypes, Metadata, SearchFilter, getEntityType} from '@reltio/mdm-sdk';\nimport {collectAttributeItems} from './attributesHelpers';\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nexport const MATCHES_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\nexport const ADDITIONAL_SORT_OPTIONS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n }\n },\n {\n id: 'relevanceScores.relevance',\n get label() {\n return i18n.text('Relevance score');\n }\n },\n {\n id: 'relevanceScores.actionLabel',\n get label() {\n return i18n.text('Match action');\n }\n }\n];\n\nexport const 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 const getSortOptionIdFromData = pluck('id');\n\nexport const getSortingItemsGroups = (metadata: Metadata, entityTypeUri: string) => [\n {\n title: '',\n attributes: collectAttributeItems(metadata, getEntityType(metadata, entityTypeUri))\n }\n];\n\nexport const buildRulesStringFormFilters = (filters: SearchFilter[]): string =>\n flatten(filters.map(prop('values'))).join(',');\n\nexport const isMatchRuleFilter = ({fieldName}: SearchFilter): boolean => {\n return pipe(values, pluck('name'), any(equals(fieldName)))(MatchRulesAttrTypes);\n};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {ROWS_PER_PAGE_OPTIONS} from '../helpers/sortHelpers';\n\nexport const useMatchesReducer = (defaultRowsPerPage: number = ROWS_PER_PAGE_OPTIONS[0]) => {\n const initState = {\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, getRequestErrorMessage, WorkflowApiError} 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: getRequestErrorMessage(error, i18n.text('Something went wrong...'))\n });\n};\n\nexport const showDCRReviewErrors = (apiError: WorkflowApiError) => {\n const error = apiError.error;\n\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 React, {forwardRef} from 'react';\nimport {ActionButtonMode, MergeButton as MergeButtonComponent, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\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 {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\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 {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\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 {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(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 onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-not-match-button\"\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';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\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 {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities, onSuccess});\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.displayName = 'SetAMatchButton';\n","import {useCallback} from 'react';\nimport {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {showApiError} from '../utils/errors';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n onSuccess?: () => void;\n};\n\nexport const useSetAMatch = ({entities, entity, onSuccess}: 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)\n .then(() => {\n onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData, onSuccess]);\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: \"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, 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 data-reltio-id=\"reltio-potential-matches-dcr-review-button\"\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 {showApiError} from '../utils/errors';\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 onSuccess?: () => void;\n};\n\nexport const useReinstateMatch = ({entities, entity, showSnackbarMessage, onSuccess}: 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 onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [setGlobalSpinner, dtssPath, tenant, entity, entities, showSnackbarMessage, reloadData, onSuccess]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import React, {forwardRef, useContext} from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop, SnackbarContext} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\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 {deselectByEntities} = useViewStateActions();\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({\n entity,\n entities,\n showSnackbarMessage,\n onSuccess\n });\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.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: \"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 i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n permission?: MatchesActionsPermissions;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules' | 'permission'>) => 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 permission,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules, permission});\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 '@mui/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: (field) => void;\n options: AttributeSelectorItemsGroup[];\n field?: string;\n};\n\nconst SortingFieldSelector = ({onChange, options, field}: Props) => {\n const styles = useStyles();\n const value = useMemo(() => {\n const path = field?.split('.');\n const sortLevel = path?.length;\n\n const findNode = (attributes: AttributeOption[]) => {\n const level = attributes[0].fieldName.split('.').length;\n if (level === sortLevel || (level === 1 && field.includes('relevanceScores.'))) {\n return attributes.find((attr) => attr.fieldName === field);\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 }, [field, 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 '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n position: 'relative',\n padding: '12px',\n alignSelf: 'baseline'\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 React, {useContext} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport {Order, SortingField} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup, SidePanelContentHeader} from '@reltio/components';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport SortingFieldSelector from '../SortingFieldSelector';\nimport i18n from 'ui-i18n';\nimport ArrowIcon from '@mui/icons-material/ArrowUpward';\nimport classNames from 'classnames';\nimport IconButton from '@mui/material/IconButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n selectedCount: number;\n totalCount: number;\n totalOnPage: number;\n onSelect: () => void;\n sortOptions: AttributeSelectorItemsGroup[];\n onSorting?: (SortingField) => void;\n sorting: SortingField;\n children?: React.ReactNode;\n};\n\nconst RightSidePanelHeader = ({\n selectedCount,\n totalCount,\n onSelect,\n sortOptions,\n sorting,\n onSorting,\n totalOnPage,\n children\n}: Props) => {\n const styles = useStyles();\n\n const onChangeSortOrder = () => {\n onSorting({\n ...sorting,\n order: sorting.order === Order.asc ? Order.desc : Order.asc\n });\n };\n\n const onChangeSortField = (field) => {\n onSorting({\n ...sorting,\n field\n });\n };\n\n const sidePanelHeaderProps = useContext(RightSideHeaderContext);\n return (\n <>\n <SidePanelContentHeader\n {...sidePanelHeaderProps}\n secondTitle={!!totalCount && i18n.text('${n} Profiles', {n: totalCount})}\n />\n {children}\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\n field={sorting?.field}\n options={sortOptions}\n onChange={onChangeSortField}\n />\n <IconButton\n onClick={onChangeSortOrder}\n classes={{root: classNames(styles.arrow, {[styles.rotate]: sorting.order === Order.desc})}}\n size=\"large\"\n >\n <ArrowIcon />\n </IconButton>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default RightSidePanelHeader;\n","import {useMemo} from 'react';\nimport {getSortingItemsGroups} from '../helpers/sortHelpers';\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 {find, propEq} from 'ramda';\nimport {useViewState} from '../contexts/ViewStateContext';\n\nexport const useEntityColor = (entityUri: string) => {\n const {entityColors} = useViewState();\n\n const entityColor = find(propEq('entityUri', entityUri))(entityColors);\n return entityColor ? entityColor.color : '';\n};\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\n\nexport const useStyles = makeStyles((theme) => {\n return {\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '9px',\n position: 'relative',\n padding: '9px',\n alignSelf: 'baseline'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n flex: 1\n },\n entityHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n whiteSpace: 'pre'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n display: 'flex',\n height: '17px'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\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 overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 2px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n '& $dividerWrapper:nth-child(2):not(:last-child)': {\n display: 'block'\n }\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n coloredRow: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '4px',\n height: '100%',\n borderRadius: '0px 4px 4px 0px',\n background: ({color}: StylesProps) => color\n }\n },\n matchScore: {\n paddingLeft: '12px',\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 tenantIcon: {\n marginLeft: '12px'\n },\n dividerWrapper: {\n display: 'none',\n marginLeft: '12px',\n alignSelf: 'stretch'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.12)'\n },\n relevanceBadge: {\n marginLeft: '12px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport Divider from '@mui/material/Divider';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n DataTenantBadge,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant,\n RelevanceScoreBadge\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 isDataTenantEntity,\n checkMatchRuleSummaryRelevance\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useEntityColor} from '../../hooks/useEntityColor';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n isColumnViewMode?: 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 isColumnViewMode,\n actionButtonsRenderer,\n metadata,\n entitiesMap = {}\n}: Props) => {\n const entity = match.object;\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\n const [openMenu, setOpenMenu] = useState(false);\n const onToggleSelect = () => toggleSelect(match);\n\n const isRowSelectable = entity !== entityToMatch;\n const Actions = actionButtonsRenderer;\n\n const showRelevanceBadge = match.matchRuleSummaries?.some(checkMatchRuleSummaryRelevance);\n\n return (\n <div\n className={classnames(styles.wrapper, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.coloredRow]: isColumnViewMode && isRowSelected,\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 <div className={styles.entityHeader}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\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 <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n <div className={styles.dividerWrapper}>\n <Divider orientation=\"vertical\" className={styles.divider} />\n </div>\n {showRelevanceBadge && (\n <RelevanceScoreBadge\n className={styles.relevanceBadge}\n matchRuleSummaries={match.matchRuleSummaries}\n />\n )}\n {!showRelevanceBadge && !!match.matchScore && (\n <div className={styles.matchScore}>{match.matchScore}</div>\n )}\n {isDataTenantEntity(entity) && (\n <DataTenantBadge className={styles.tenantIcon} dataTenantId={entity.dataTenant} />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@mui/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 React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {ItemRenderer} from '../ItemRenderer';\nimport {useViewState} from '../../contexts/ViewStateContext';\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 isLoading: boolean;\n};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems,\n isLoading\n}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n return (\n <div className={styles.view}>\n {isLoading && <LinearLoadIndicator />}\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 isColumnViewMode={comparisonViewMode === ComparisonViewMode.COLUMNS}\n isRowSelected={selectedItems.some((item) => item.object.uri === match.object.uri)}\n />\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n padding: '8px 16px',\n gap: '8px',\n borderBottom: 'rgba(0,0,0,0.05) 1px solid'\n },\n inputRoot: {\n borderRadius: '4px'\n },\n menuButtonRoot: {\n padding: 0\n }\n});\n","import React, {memo, useCallback, useRef, useState} from 'react';\nimport {SearchInput, TenantsDropDownSelector} from '@reltio/components';\nimport {always, isEmpty, pipe, propEq, trim, when} from 'ramda';\nimport {DataTenant} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onSearch: (searchText: string) => void;\n searchTenant: DataTenant;\n onChangeSearchTenant: (tenant: DataTenant) => void;\n entityTypeUri: string;\n};\n\nconst RightSideSearch = ({onSearch, searchTenant, onChangeSearchTenant, entityTypeUri}: 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 if (!onSearch) {\n return null;\n }\n\n return (\n <div className={styles.root}>\n <TenantsDropDownSelector\n entityTypeUri={entityTypeUri}\n selectedTenant={searchTenant}\n onChangeTenant={onChangeSearchTenant}\n />\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(RightSideSearch);\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 '@mui/icons-material/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 'data-reltio-id': 'reltio-potential-matches-actions-dropdown-menu-button'\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 {makeStyles} from '@mui/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 Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig,\n DataTenant,\n SortingField,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {identity, isEmpty, pathEq, prop} from 'ramda';\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {MergeButton, NotMatchButton, SetAMatchButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport RightSideSearch from './RightSideSearch/RightSideSearch';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const FindMatchesView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const [searchText, setSearchText] = useState<string>('');\n const [searchTenant, setSearchTenant] = useState<DataTenant>(tenant);\n\n const handleChangeSearchTenant = useCallback(\n (newSearchTenant) => {\n setSearchTenant(newSearchTenant);\n changePage(0);\n },\n [changePage]\n );\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, loading} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage,\n searchTenantId: searchTenant.id\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(findEntities);\n return () => removeReloadHandler(findEntities);\n }, [findEntities, addReloadHandler, removeReloadHandler]);\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 useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n useDidUpdateEffect(() => {\n resetPage();\n }, [filters, searchText]);\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\n const entities = [hoveredMatch.object];\n const isDTEntity = isDataTenantEntity(hoveredMatch.object);\n const areBothEntitiesDT = isDTEntity && isDataTenantEntity(entity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\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: SetAMatchButton,\n show: canMark && !isDTEntity,\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={3}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, 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 onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n >\n <RightSideSearch\n searchTenant={searchTenant}\n onChangeSearchTenant={handleChangeSearchTenant}\n entityTypeUri={entityType}\n onSearch={setSearchText}\n />\n </RightSidePanelHeader>\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={entities}\n metadata={metadata}\n selectedItems={selectedItems}\n isLoading={loading}\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 enrichEntityWithDataTenant,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotalFromDataTenant,\n getTotals,\n GlobalSearchRequestOptions,\n SearchFilter,\n SortingField\n} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {map} from 'ramda';\n\ntype Props = {\n entityType: string;\n filters: SearchFilter[];\n sorting: SortingField;\n page: number;\n rowsPerPage: number;\n enabled: boolean;\n searchTenantId: string;\n};\n\nexport const useFindEntities = ({entityType, filters, sorting, page, rowsPerPage, enabled, searchTenantId}: Props) => {\n const {order, field} = sorting;\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [loading, setLoading] = useState(false);\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 setLoading(true);\n const isDtss = searchTenantId !== tenant.id;\n const dtssProps = {\n customerTenant: tenant.id,\n dataTenant: searchTenantId,\n dtssPath\n };\n\n const entityRequestOptions = {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.join(','),\n globalFilter,\n activityFilter\n };\n const entityRequest = isDtss\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: entityRequestOptions,\n ...dtssProps\n }).then(map(enrichEntityWithDataTenant(searchTenantId)))\n : getFilteredEntities(filters, entityRequestOptions);\n\n const totalRequestOption = {activityFilter, globalFilter};\n const totalRequest = isDtss\n ? getTotalFromDataTenant({\n filters,\n options: totalRequestOption,\n ...dtssProps\n })\n : getTotals(filters, totalRequestOption);\n\n safePromise(Promise.all([entityRequest, totalRequest]))\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(() => setLoading(false));\n }\n },\n [\n entityType,\n filterQuery,\n field,\n order,\n page,\n rowsPerPage,\n enabled,\n activityFilter,\n globalFilter,\n searchTenantId,\n tenant\n ] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities, loading};\n};\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 {makeStyles} from '@mui/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 from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n Mode,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig,\n markAsNotMatch\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\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 permission?: MatchesActionsPermissions;\n};\n\nconst AddRelationDialog = ({\n config,\n mainEntity,\n currentEntity,\n matchRules,\n open,\n onClose = identity,\n permission\n}: 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 {onFinishRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\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(\n () => getRelationAttributesList(metadata, relationType),\n [relationType, 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 })\n .then(async () => {\n if (permission?.canMark) {\n await markAsNotMatch(currentEntity.uri, [mainEntity]);\n deselectByEntities([currentEntity]);\n onFinishRequest();\n }\n })\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: ['left', 'right', 'top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle 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={Mode.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 {profile} from '@reltio/mdm-module';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport {MatchesActionsPermissions} from '../types/potentialMatchesTypes';\n\ntype DialogContentProps = {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission?: MatchesActionsPermissions;\n};\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState<DialogContentProps>({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({mainEntity, currentEntity, matchRules, permission}: DialogContentProps) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules, permission});\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, 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","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: false\n};\n","import {makeStyles} from '@mui/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, useEffect, 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 useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\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 {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {\n ROWS_PER_PAGE_OPTIONS,\n MATCHES_SORT_OPTIONS,\n ADDITIONAL_SORT_OPTIONS_DATA,\n isMatchRuleFilter,\n buildRulesStringFormFilters\n} from '../../helpers/sortHelpers';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps, MatchesOptions} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n config: PotentialMatchesPerspectiveConfig;\n};\n\nconst MatchesView = memo(\n ({entity, metadata, filters, options = DEFAULT_OPTIONS, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\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(MATCHES_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 matchesFilter = useMemo((): string => buildFilterQueryString()(regularFilters), [regularFilters]);\n\n const {matches, total, entitiesMap, loadMatches, loading} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: matchesFilter,\n page,\n sorting,\n rowsPerPage,\n options,\n rules: buildRulesStringFormFilters(matchRulesFilters)\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadMatches);\n return () => removeReloadHandler(loadMatches);\n }, [loadMatches, addReloadHandler, removeReloadHandler]);\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(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const {canMerge, canAddRelation, canMark} = permission;\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\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 permission\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 <CollaborationContextProvider collaboration={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 onSorting={onSorting}\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 isLoading={loading}\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 </CollaborationContextProvider>\n );\n }\n);\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useCallback, useEffect, useState} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {Entity, SortingField} 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?: SortingField;\n rules?: string;\n};\n\nexport const useMatches = ({entity, filter, rules, sorting, page, rowsPerPage, options, enabled}: Params) => {\n const {setEntitiesMap} = useViewStateActions();\n const [loading, setLoading] = useState(false);\n const onStartLoading = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n const onFinishLoading = useCallback(() => {\n setLoading(false);\n }, [setLoading]);\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, loading};\n};\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 SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: SortingField;\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\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 setLoading(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(() => setLoading(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, loading};\n};\n","import {makeStyles} from '@mui/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, useEffect, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\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\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const NotMatchView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, 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, loading} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: buildFilterQueryString()(filters),\n page,\n rowsPerPage,\n sorting\n });\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadNotMatches);\n return () => removeReloadHandler(loadNotMatches);\n }, [loadNotMatches, addReloadHandler, removeReloadHandler]);\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 const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\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 <CollaborationContextProvider collaboration={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 onSorting={onSorting}\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 isLoading={loading}\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 </CollaborationContextProvider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\nimport {MatchesOptions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n activeView: ActivePanel;\n config: PotentialMatchesPerspectiveConfig;\n options?: MatchesOptions;\n};\n\nexport const Content = ({entity, metadata, filters, options, sorting, onSorting, config, activeView}: Props) => {\n const render = () => {\n switch (activeView) {\n case ActivePanel.PotentialMatches:\n return (\n <MatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n options={options}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.FindMatches:\n return (\n <FindMatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.NotAMatch:\n return (\n <NotMatchView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n default:\n return <div />;\n }\n };\n\n return render();\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n width: '100%',\n height: '100%',\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useMemo, memo} from 'react';\nimport {isNil} from 'ramda';\nimport {useSelector} from 'react-redux';\n\nimport {SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {PMRightPanelTabs} from '../../PotentialMatchesView';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n active?: number;\n tabs: PMRightPanelTabs;\n config?: PotentialMatchesPerspectiveConfig;\n onClose?: () => void;\n};\n\nexport const RightSidePanel = memo(({active, tabs, onClose, config}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const isOpen = !isNil(active);\n const headerProps = useMemo(() => ({...tabs[active]?.headerProps, onClose}), [onClose, active, tabs]);\n\n const {sorting, filters, options, onSorting} = tabs[active] || {};\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n options={options}\n sorting={sorting}\n onSorting={onSorting}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n '&.MuiButtonGroup-grouped': {\n minWidth: '90px',\n padding: '8px 12px'\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@mui/icons-material/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@mui/icons-material/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 '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\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 clearAllButton: {\n marginLeft: '16px'\n },\n mergeButton: {\n marginRight: '12px'\n },\n total: {\n marginLeft: '8px',\n fontSize: '14px',\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 overflow: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\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 {\n BasicViewHeader,\n ColumnsSettings,\n DropDownMenuItem,\n ExpandedValueTooltip,\n SettingsMenu,\n Spacer\n} from '@reltio/components';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\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';\n\nimport {useStyles} from './styles';\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 {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, selectedItems);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const hideMerge = entities.some(isDataTenantEntity) && isDataTenantEntity(entity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge && !hideMerge,\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, hideMerge]\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 text: i18n.text('Show only OV'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader\n title={i18n.text('Match Review')}\n classes={{root: styles.header}}\n data-reltio-id=\"reltio-potential-matches-table-header\"\n >\n {hasSelectedItems ? (\n <>\n <span className={styles.total}>\n ({selectedItems.length}\n {limitSelection && '/' + limitSelection})\n </span>\n <Button onClick={handleClearSelection} className={styles.clearAllButton} color=\"primary\">\n <ExpandedValueTooltip value={i18n.text('Clear All')}>\n <span className={styles.overflow}>{i18n.text('Clear All')}</span>\n </ExpandedValueTooltip>\n </Button>\n <Spacer />\n <ActionsPanel actions={actions} numberOfButtons={2} />\n <Divider orientation={'vertical'} classes={{vertical: styles.actionSplitter}} />\n </>\n ) : (\n <Spacer />\n )}\n <SettingsMenu items={settingItems} menuId=\"matches-view-settings\" />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <Divider orientation=\"vertical\" classes={{vertical: styles.splitter}} />\n <ComparisonViewModeSwitcher />\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 '@mui/styles';\n\nexport const matchedAttributeBackground = 'rgba(140, 193, 82, 0.12)';\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 position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: 0,\n width: '5000px',\n height: '100%',\n background: matchedAttributeBackground,\n pointerEvents: 'none'\n }\n }\n});\n","import {makeStyles} from '@mui/styles';\nimport {matchedAttributeBackground} from '../styles';\n\nexport const useStyles = makeStyles({\n badge: {\n borderRadius: '50%',\n background: matchedAttributeBackground,\n fontWeight: 500,\n height: '20px',\n width: '20px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'flex-start',\n marginBottom: '2px',\n marginTop: '-2px'\n }\n});\n","import React, {useContext} from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport {areOneHierarchyUris, ComplexAttributeValue} from '@reltio/mdm-sdk';\nimport {HighlightedValuesContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ComplexAttributeValue;\n};\n\nconst MatchedValuesCounter = ({attributeValue}: Props) => {\n const styles = useStyles();\n const {highlightedValuesUris = []} = useContext(HighlightedValuesContext);\n const count = highlightedValuesUris.filter((uri) => areOneHierarchyUris(uri, attributeValue.uri)).length;\n return count > 0 ? (\n <Tooltip title={count === 1 ? i18n.text('${count} match', {count}) : i18n.text('${count} matches', {count})}>\n <div className={styles.badge}>{count}</div>\n </Tooltip>\n ) : null;\n};\n\nexport default MatchedValuesCounter;\n","import React, {useMemo} from 'react';\nimport {HighlightedValuesContext, ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport withExpanded from '../withExpanded';\nimport MatchedValuesCounter from './MatchedValuesCounter/MatchedValuesCounter';\n\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 RightSlot={MatchedValuesCounter}\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 '@mui/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 '@mui/icons-material/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, NOT_MATCH} from '@reltio/mdm-sdk';\nimport {\n CreateRelationButton,\n DCRReviewButton,\n MergeButton,\n NotMatchButton,\n ReinstateMatchButton,\n SetAMatchButton\n} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: MatchesActionsPermissions;\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission: MatchesActionsPermissions;\n }) => 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 const areBothEntitiesDT = [mainEntity, entity].every(isDataTenantEntity);\n\n const isEntityFindMatch = !matchRules;\n const isEntityNotMatch = !isEntityFindMatch && matchRules.includes(NOT_MATCH);\n const isEntityPotentialMatch = !isEntityNotMatch && !isEntityFindMatch;\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT && (isEntityNotMatch || isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark && (isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark && isEntityNotMatch,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && (isEntityNotMatch || isEntityPotentialMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: SetAMatchButton,\n show: canMark && isEntityFindMatch && !isDataTenantEntity(entity),\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 permission\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n mode={mode}\n actionButtonSize={mode === 'hover' ? 'XS' : undefined}\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 '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\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 colored: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '100%',\n height: '4px',\n background: ({color}: StylesProps) => color\n }\n },\n removeButton: {\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","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {allPass, includes, map, mergeLeft, propEq, propSatisfies, when} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, Match, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise, useWorkflowDefaultActionSuccessHandler} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\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 defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\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 .catch((error) => {\n console.warn('Workflow error:', error);\n setTasks([]);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n\n const updateTaskState = useCallback((taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => {\n setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));\n }, []);\n\n const {deselectByEntities} = useViewStateActions();\n const onActionSuccess = useCallback(\n (action: string) => {\n defaultActionSuccessHandler(action);\n deselectByEntities([match.object]);\n },\n [defaultActionSuccessHandler, deselectByEntities, match.object]\n );\n\n return {\n loading: requestIsInProgress,\n tasks,\n loadTasks,\n updateTaskState,\n total: tasks.length,\n onActionSuccess\n };\n};\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 '@mui/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 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 {pick} from 'ramda';\nimport {\n AssigneeSelector,\n PotentialMatchReviewCard,\n TaskActions,\n WorkflowComments,\n WorkflowTasksContext,\n useWorkflowActions\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, Match, WorkflowTaskData} 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 workflowTasks = useWorkflowTasks({entity, match});\n const {tasks, loadTasks} = workflowTasks;\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\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: workflowActions, actionRequestIsInProgress} = useWorkflowActions({\n taskId: task?.taskId,\n possibleActions: task?.possibleActions,\n assignee: task?.assignee,\n isOpen: task?.isOpen\n });\n const Actions = task && <TaskActions actions={workflowActions} isInProgress={actionRequestIsInProgress} />;\n return task ? (\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <AssigneeSelector assignee={task.assignee} taskId={task.taskId} isTaskOpen={task.isOpen} />\n </div>\n <WorkflowComments\n {...getCommentsInfoFromTasks(task)}\n workflowActions={workflowActions}\n actionRequestIsInProgress={actionRequestIsInProgress}\n preferredAction={task.preferredAction}\n />\n </PotentialMatchReviewCard>\n </div>\n </WorkflowTasksContext.Provider>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\nimport {MatchesColumnsData} from '../types/potentialMatchesTypes';\n\nexport const DEFAULT_ROWS: MatchesColumnsData[] = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n draggable: 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 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, ComparisonViewMode.COLUMNS]\n },\n {\n id: 'relevanceScore',\n label: i18n.text('Relevance score'),\n initialWidth: 130,\n minWidth: 130,\n modes: [ComparisonViewMode.TABLE, ComparisonViewMode.COLUMNS]\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 '@mui/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 {ColoredSourceIcon} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\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 '@mui/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, {ReactNode} from 'react';\nimport {Entity, isDataTenantEntity as checkIsDataTenantEntity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {DataTenantBadge, ColoredSourceIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Pick<Entity, 'crosswalks' | 'dataTenant'>;\n children?: ReactNode;\n};\n\nconst SourcesRenderer = ({value, children}: Props) => {\n const {crosswalks, dataTenant} = value;\n const styles = useStyles();\n const isDataTenantEntity = checkIsDataTenantEntity(value);\n\n return isDataTenantEntity || !isEmptyValue(crosswalks) ? (\n <div className={styles.wrapper}>\n {children}\n {crosswalks.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n {isDataTenantEntity && <DataTenantBadge dataTenantId={dataTenant} />}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n inline: {\n display: 'inline-flex'\n }\n});\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport {RelevanceScoreBadge} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: MatchRuleSummary[] | undefined;\n};\n\nconst RelevanceScoreRenderer = ({value: matchRuleSummaries}: Props) => {\n const styles = useStyles();\n return <RelevanceScoreBadge className={styles.inline} matchRuleSummaries={matchRuleSummaries} />;\n};\n\nexport default RelevanceScoreRenderer;\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';\nimport RelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\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 score: {\n headCellRenderer: HeadCellRenderer\n },\n relevanceScore: {\n headCellRenderer: HeadCellRenderer,\n cellRenderer: RelevanceScoreRenderer\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, matchScore, matchRuleSummaries} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'profile':\n return {\n mainEntity: entity,\n isSelectedEntity: !isMainEntity,\n onRemove: () => onRemoveItem(match),\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;\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 case 'score':\n return matchScore || 0;\n case 'relevanceScore':\n return matchRuleSummaries;\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, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {Entity, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useEntityColor} from '../../../../hooks/useEntityColor';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\nimport {MatchesActionsPermissions} from '../../../../types/potentialMatchesTypes';\nimport useStyles from './styles';\n\ntype Props = {\n value: {\n onRemove?: () => void;\n isSelectedEntity?: boolean;\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n config: PotentialMatchesPerspectiveConfig;\n permission: MatchesActionsPermissions;\n };\n};\n\nconst EntityCard = ({value: {entity, config, isSelectedEntity, onRemove, ...rest}}: Props) => {\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\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\n className={classnames(styles.container, {\n [styles.hovered]: isSelectedEntity && isHovered,\n [styles.colored]: isSelectedEntity\n })}\n >\n {isSelectedEntity && (\n <SmallIconButton className={styles.removeButton} icon={CloseIcon} onClick={onRemove} size=\"XXS\" />\n )}\n <ProfileCard entity={entity} />\n {isSelectedEntity && (\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 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 from '@mui/material/Popover';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\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(\n () => getAdditionalRows(groupColumnsData, selectedAttributes),\n [groupColumnsData, 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 '@mui/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;\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 // 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 // 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, useEffect} 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 selectedColumns: Match[];\n setSelectedColumns: (items: Match[]) => void;\n selectedRows: string[];\n setSelectedRows: (items: string[]) => void;\n rowsData: 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 selectedColumns,\n setSelectedColumns,\n selectedRows,\n setSelectedRows,\n entitiesMap = {},\n rowsData: allRowsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [localSelectedRows, setLocalSelectedRows] = useState(selectedRows);\n const [localSelectedColumns, setLocalSelectedColumns] = useState(selectedColumns);\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n useEffect(() => {\n setLocalSelectedRows(selectedRows);\n }, [selectedRows]);\n\n useEffect(() => {\n setLocalSelectedColumns(selectedColumns);\n }, [selectedColumns]);\n\n const matches = useMemo(() => localSelectedColumns.slice(-4), [localSelectedColumns]);\n const selectedRowsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(localSelectedRows),\n [localSelectedRows]\n );\n\n const rowsData = useMemo(\n () => getTableRowsData(metadata, entity, selectedRowsWithoutSubAttributes),\n [metadata, entity, selectedRowsWithoutSubAttributes]\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 )(localSelectedRows);\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 setLocalSelectedRows(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = localSelectedColumns.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = localSelectedColumns.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = localSelectedColumns[dragIndex];\n if (dragColumn) {\n setLocalSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(localSelectedColumns));\n }\n };\n\n const handleDropRow = () => {\n setSelectedRows(localSelectedRows);\n };\n\n const handleDropColumn = () => {\n setSelectedColumns(localSelectedColumns);\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 data-reltio-id=\"reltio-comparison-table-container\" 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={1}\n onMoveRow={handleMoveRow}\n onDropRow={handleDropRow}\n onMoveColumn={handleMoveColumn}\n onDropColumn={handleDropColumn}\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={setSelectedRows}\n groupColumnsData={allRowsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@mui/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 selectedRows: string[];\n setSelectedRows: (newRows: string[]) => void;\n selectedColumns: Match[];\n setSelectedColumns: (newColumns: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n rowsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedRows,\n setSelectedRows,\n selectedColumns,\n setSelectedColumns,\n config,\n metadata,\n entity,\n entitiesMap = {},\n rowsData,\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 selectedRows={selectedRows}\n setSelectedRows={setSelectedRows}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n rowsData={rowsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {alpha, lighten} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\nimport {CSSProperties} from '@mui/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, ${alpha(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${alpha(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 '&::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: '15px 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 paddingTop: 0,\n '&:last-child': {\n paddingBottom: 0\n }\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 dragIndicator: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n cursor: 'grab'\n },\n dragIndicatorIcon: {\n opacity: 0.38\n },\n ovFalse: theme.inactive,\n expandButton: {\n marginRight: '5px',\n marginBottom: '8px'\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 classnames from 'classnames';\nimport {AttributeValue, DataTypes} from '@reltio/mdm-sdk';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const {value: simpleValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.defaultWrapper, {[styles.ovFalse]: ov === false})}>\n <DataTypeValue value={simpleValue} 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 '@mui/icons-material/DragIndicator';\nimport CloseIcon from '@mui/icons-material/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 dragRef?: React.Ref<HTMLDivElement>;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex,\n dragRef\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 <div ref={dragRef} style={{opacity: isRowHovered ? 1 : 0}} className={styles.dragIndicator}>\n <DragIndicatorIcon className={styles.dragIndicatorIcon} />\n </div>\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 classnames from 'classnames';\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {value: string; ov: boolean};\n};\n\nconst BlobRenderer = ({value}: Props) => {\n const {value: blobValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.blobWrapper, {[styles.ovFalse]: ov === false})} onScroll={stopPropagation}>\n {blobValue}\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: {value: BasicImageAttributesValue; ov: boolean};\n};\n\nconst ImageRenderer = ({value}: Props) => {\n const {value: imgValue} = value;\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value: imgValue});\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\n className={classnames(styles.defaultWrapper, styles.referenceWrapper, {\n [styles.ovFalse]: value.ov === false\n })}\n >\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 {useBasicTableCellRenderer} from '@reltio/components';\n\nexport const EntityRowCollapseContext =\n React.createContext<ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue']>(null);\n\nEntityRowCollapseContext.displayName = 'EntityRowCollapseContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n chipContainer: {\n position: 'absolute',\n height: '16px',\n top: '6px',\n right: '6px',\n zIndex: 2\n },\n chipLabel: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px',\n lineHeight: '11px'\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {BasicTableRowCollapseContext, withTooltip} from '@reltio/components';\nimport {find, pipe, prop, propEq} from 'ramda';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport Chip from '@mui/material/Chip';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n needShowChip: boolean;\n crosswalks: Crosswalk[];\n dataTenant?: string;\n};\n\nconst SourceChipWithTooltip = ({needShowChip, crosswalks, dataTenant}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n const dataTenants = useSelector(mdm.selectors.getDataTenants) || [];\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = (\n <>\n {crosswalks.slice(collapseContext.maxRowValuesCount).map((crosswalk, index) => {\n return <div key={index}>-{getSourceSystemLabel(metadata, crosswalk.type)}</div>;\n })}\n {dataTenant ? <div>-{pipe(find(propEq('id', dataTenant)), prop('label'))(dataTenants)}</div> : null}\n </>\n );\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${crosswalks.length + (dataTenant ? 1 : 0) - collapseContext.maxRowValuesCount}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default SourceChipWithTooltip;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport {always, slice, when} from 'ramda';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport {ArrowExpandButton, BasicTableRowCollapseContext} from '@reltio/components';\n\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {EntityRowCollapseContext} from '../EntityRowCollapseContext';\nimport SourceChipWithTooltip from './components/SourceChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n dataTenant?: string;\n };\n};\n\nconst SourcesRenderer = ({value: {crosswalks, dataTenant}}: Props) => {\n const styles = useStyles();\n const [collapsed, setCollapsed] = useState(true);\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const toggleCollapsed = useCallback(() => {\n setCollapsed((prev) => !prev);\n }, []);\n\n const displayedCrosswalks: Crosswalk[] = useMemo(\n () => when(always(collapsed), slice(0, collapseContext.maxRowValuesCount))(crosswalks),\n [collapsed, collapseContext.maxRowValuesCount, crosswalks]\n );\n const isShowDataTenant = !collapsed || displayedCrosswalks.length < collapseContext.maxRowValuesCount;\n\n const sources = useMemo(\n () => ({\n crosswalks: displayedCrosswalks,\n dataTenant: isShowDataTenant ? dataTenant : undefined\n }),\n [dataTenant, displayedCrosswalks, isShowDataTenant]\n );\n\n const valuesCount = crosswalks.length + (dataTenant ? 1 : 0);\n const hasCollapsedValue = valuesCount > collapseContext.maxRowValuesCount;\n\n const needShowChip = collapsed && hasCollapsedValue;\n\n return (\n <>\n <CommonSourcesRenderer value={sources}>\n {hasCollapsedValue && (\n <ArrowExpandButton\n className={styles.expandButton}\n expanded={!collapsed}\n onClick={toggleCollapsed}\n />\n )}\n </CommonSourcesRenderer>\n <SourceChipWithTooltip needShowChip={needShowChip} crosswalks={crosswalks} dataTenant={dataTenant} />\n </>\n );\n};\n\nexport default SourcesRenderer;\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport CommonRelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n matchRuleSummaries: MatchRuleSummary[] | undefined;\n };\n};\n\nconst RelevanceScoreRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonRelevanceScoreRenderer value={value.matchRuleSummaries} />\n </div>\n );\n};\n\nexport default RelevanceScoreRenderer;\n","import {assoc, map, pipe, prop, propOr, reduce, split, filter, ifElse, always} from 'ramda';\nimport {\n DataTypes,\n EntitiesMap,\n Entity,\n getAttributesForMatchRules,\n getEntityId,\n isAttributeSearchUri,\n Metadata,\n Match,\n getAttributeValuesByPathWithOvFlag,\n getOvAttributeValuesByPathWithOvFlag,\n isDataTenantEntity,\n Crosswalk\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';\nimport RelevanceScoreRenderer from './cell-renderers/RelevanceScoreRenderer';\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 showNonOv\n) => {\n switch (columnData.id) {\n case 'profile':\n return entity;\n case 'entityId':\n return {value: getEntityId(entity)};\n case 'matchRules':\n return {metadata, match, entitiesMap, entity, variant: 'all'};\n case 'score':\n return {value: matchScore};\n case 'sources': {\n const crosswalks: Crosswalk[] = propOr([], 'crosswalks', entity);\n return isDataTenantEntity(entity)\n ? {\n crosswalks,\n dataTenant: entity.dataTenant\n }\n : {\n crosswalks\n };\n }\n case 'relevanceScore':\n return {matchRuleSummaries: match.matchRuleSummaries};\n default: {\n const [attrSource, ...attrPath]: string[] = getAttrPathFromColumnId(columnData.id);\n return pipe(\n prop(attrSource),\n ifElse(\n always(showNonOv),\n getAttributeValuesByPathWithOvFlag(attrPath),\n getOvAttributeValuesByPathWithOvFlag(attrPath)\n )\n )(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: MatchesColumnsData[],\n matches: Match[],\n showNonOv: boolean,\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(\n (acc, columnData) => assoc(columnData.id, getRowValueForColumn(columnData, rowValue, showNonOv), acc),\n {}\n ),\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 case 'relevanceScore': {\n return RelevanceScoreRenderer;\n }\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 draggable: propOr(true, 'draggable')(columnData)\n }))\n )(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React, {useContext} from 'react';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../../../types/potentialMatchesTypes';\nimport {BasicTableRowCollapseContext, DataTypeValue, withTooltip} from '@reltio/components';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\nimport {\n AttributeValue,\n getAttributeValue,\n getLabel,\n isComplexAttribute,\n NestedAttributeValue,\n ReferenceAttributeValue,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport Chip from '@mui/material/Chip';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n columnData: MatchesColumnsData;\n rowValue: MatchesTableRowValue;\n cellIndex: number;\n rowIndex: number;\n};\n\nconst RowCellChipWithTooltip = ({columnData, rowValue, cellIndex, rowIndex}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n const maxRowValuesCount: number = collapseContext?.maxRowValuesCount;\n\n const isAttributeCell = columnData.id.startsWith('attributes.');\n const columnId = columnData.id as `attributes.${string}`;\n const allValues = isAttributeCell ? rowValue[columnId] : [];\n const hiddenValues = allValues\n .reduce((acc: Array<AttributeValue | AttributeValue[]>, value, index) => {\n if (index >= maxRowValuesCount) {\n acc.push(value);\n } else if (Array.isArray(value) && value.length > maxRowValuesCount) {\n acc.push(value.slice(maxRowValuesCount));\n }\n return acc;\n }, [])\n .flat();\n\n const needShowChip =\n isAttributeCell && cellIndex === 0 && hiddenValues.length > 0 && collapseContext?.getIsRowCollapsed(rowIndex);\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = hiddenValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(columnData.dataTypeDefinition)\n ? getLabel((value as NestedAttributeValue | ReferenceAttributeValue).label)\n : wrapInArrayIfNeeded(value).map((value, index) => (\n <DataTypeValue\n key={index}\n value={getAttributeValue(value)}\n dataTypeDefinition={columnData.dataTypeDefinition}\n rich={false}\n />\n ))}\n </div>\n ));\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${hiddenValues.length}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default RowCellChipWithTooltip;\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 RowCellChipWithTooltip from './components/RowCellChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n cellWrapperClassName: string;\n someRowIsDragging?: boolean;\n isDragLayer?: boolean;\n dragRef?: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n cellWrapperClassName,\n someRowIsDragging,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n const shouldRenderCell = !someRowIsDragging || isFirstColumn;\n const {cellIndex, columnData, rowIndex} = otherProps;\n\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 cellWrapperClassName\n )}\n >\n {shouldRenderCell && (\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 <RowCellChipWithTooltip\n cellIndex={cellIndex}\n rowIndex={rowIndex}\n rowValue={rowValue}\n columnData={columnData}\n />\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} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/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 dragColumnHead: {\n '& #headCell': {\n border: '1px solid',\n borderColor: theme.palette.primary.main\n },\n '& #entityCell': {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n }\n },\n dragColumnBody: {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n },\n sourcesCell: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '15px',\n columnGap: '5px',\n rowGap: '8px',\n alignItems: 'center'\n }\n}));\n","import React from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {RowCellAutoSizer} from '@reltio/components';\nimport {RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from '../styles';\n\ntype RowCellAutoSizerProps = React.ComponentProps<typeof RowCellAutoSizer>;\n\ntype Props = {\n changeRowCellHeight: RowCellAutoSizerProps['onChangeHeight'];\n basicTableRef?: React.Ref<HTMLElement>;\n hoveredRowRightContent?: React.ReactNode;\n hoverRowIndex?: number;\n someRowIsDragging?: boolean;\n dragRef?: boolean;\n isDragLayer?: boolean;\n} & RowCellRendererProps;\n\nexport const CommonRowCellRenderer = ({\n hoverRowIndex,\n hoveredRowRightContent,\n basicTableRef,\n changeRowCellHeight,\n ...props\n}: Props) => {\n const styles = useStyles();\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 case 'sources':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer cellWrapperClassName={styles.sourcesCell} {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\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 CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight,\n BasicTableCellRenderer as EntityCellRenderer\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 {CommonRowCellRenderer} from './cell-renderers/CommonRowCellRenderer';\nimport {\n MatchesColumnsData,\n RowCellRendererProps,\n MatchesTableContextProps,\n MatchesTableRowValue,\n GetRowCellKeyProps\n} 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 onReorderingColumn: (what, where) => void;\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 showNonOv: boolean;\n};\n\nconst getIdFromRowValue = (rowValue: MatchesTableRowValue) => rowValue.profile.uri;\n\nconst getRowCellKey = ({columnData: {id}, cellIndex, rowValue}: GetRowCellKeyProps) =>\n `${id}[${getIdFromRowValue(rowValue)}][${cellIndex}]`;\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n onReorderingColumn,\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 showNonOv\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(\n () => getBasicTableRowsData(metadata, columnsData, orderedMatches, showNonOv, entitiesMap),\n [metadata, columnsData, orderedMatches, showNonOv, 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}], showNonOv) : []),\n [entity, metadata, columnsData, showNonOv]\n );\n\n const onDndColumnReorder = useCallback(\n ({what, where}) => {\n const oldPositionId = tableColumnsData[what.columnIndex].id;\n const newPositionId = tableColumnsData[where.columnIndex].id;\n onReorderingColumn(oldPositionId, newPositionId);\n },\n [tableColumnsData]\n );\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(getRowCellKey);\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 return (\n <CommonRowCellRenderer\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n basicTableRef={basicTableRef}\n changeRowCellHeight={changeRowCellHeight}\n {...props}\n />\n );\n },\n [hoverRowIndex, hoveredRowRightContent, basicTableRef, changeRowCellHeight]\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 dragColumnHead: styles.dragColumnHead,\n dragColumnBody: styles.dragColumnBody\n }),\n [styles]\n );\n\n const {\n getDynamicRowCellHeight: getDynamicEntityCellHeight,\n changeRowCellHeight: changeEntityCellHeight,\n clearHeightsCache: clearEntityHeightsCache\n } = useDynamicRowCellHeight(getRowCellKey);\n\n const renderEntityCell = useCallback(\n (props: RowCellRendererProps) => {\n return <CommonRowCellRenderer changeRowCellHeight={changeEntityCellHeight} {...props} />;\n },\n [changeEntityCellHeight]\n );\n\n const getEntityCellHeight = useCallback(either(getDynamicEntityCellHeight, defaultGetRowCellHeight), [\n getDynamicEntityCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const {\n getRowHeight,\n getHeightForSubRow,\n tableRowsData: entityTableRowsData,\n collapseContextValue: entityRowCollapseContext\n } = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT,\n getRowCellHeight: getEntityCellHeight,\n renderRowCell: renderEntityCell,\n getIdFromRowValue\n });\n\n const entityRowHeight = getRowHeight(entity?.uri);\n\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(\n EntityCellRenderer,\n entityRowCollapseContext,\n getHeightForSubRow,\n entityTableRowsData,\n getRowHeight,\n tableColumnsData\n );\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [entityRowCollapseContext, getHeightForSubRow, entityTableRowsData, getRowHeight, tableColumnsData]);\n\n useLayoutEffect(() => {\n clearHeightsCache();\n clearEntityHeightsCache();\n }, [clearEntityHeightsCache, clearHeightsCache, entity?.uri]);\n\n return (\n <div data-reltio-id=\"reltio-matches-table-container\" 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 getIdFromRowValue={getIdFromRowValue}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndColumnReorderingEnabled\n dndColumnReorderingHandler={onDndColumnReorder}\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, useBasicTableCellRenderer} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue =\n (\n EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element,\n entityRowCollapseContext: ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue'],\n getHeightForSubRow,\n tableRowsData,\n getRowHeight,\n columnsData\n ) =>\n (HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <div id=\"headCell\">\n <HeadCellRenderer {...props} />\n </div>\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n getHeightForSubRow={getHeightForSubRow}\n tableRowsData={tableRowsData}\n getRowHeight={getRowHeight}\n columnsData={columnsData}\n collapseContextValue={entityRowCollapseContext}\n id=\"entityCell\"\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n };\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, identity, has, move} from 'ramda';\nimport {\n Entity,\n getEntityUriForLink,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DragAndDrop, useCollaboration, CollaborationContextProvider} from '@reltio/components';\nimport mdm, {profile} 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 '../../hooks/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n isLoaded: boolean;\n savedState: PotentialMatchesSavedState;\n onUpdateSavedState: (stateToSave: PotentialMatchesSavedState) => void;\n};\n\nexport const MatchReviewTable = ({config, isLoaded, savedState, onUpdateSavedState}: Props) => {\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const dispatch = useDispatch();\n const {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode, actualizeSelectedItemsColors} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n useEffect(() => {\n actualizeSelectedItemsColors();\n }, [selectedItems]);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n const reloadHandler = () => {\n dispatch(profile.entity.actions.loadEntity({uri: getEntityUriForLink(entity)}));\n };\n addReloadHandler(reloadHandler);\n return () => removeReloadHandler(reloadHandler);\n }, [entity, dispatch, addReloadHandler, removeReloadHandler]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, 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 onReorderingColumn = useCallback(\n (oldPositionId, newPositionId) => {\n const oldPosition = visibleColumns.indexOf(oldPositionId);\n const newPosition = visibleColumns.indexOf(newPositionId);\n setVisibleColumns(move(oldPosition, newPosition));\n },\n [visibleColumns]\n );\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedColumns: selectedItems || [],\n setSelectedColumns: setSelectedItems,\n config,\n selectedRows: visibleColumns,\n setSelectedRows: setVisibleColumns,\n entitiesMap,\n rowsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n onReorderingColumn,\n onSelectAll: () => {},\n onToggleSelect: toggleSelect,\n onResetSelect: () => {},\n selected: [],\n isComparisonViewShown: false,\n showNonOv\n };\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n if (savedState?.visibleColumns) {\n setVisibleColumns(addFixedAttributes(savedState.visibleColumns));\n }\n if (savedState?.comparisonViewMode) {\n setComparisonViewMode(savedState.comparisonViewMode);\n }\n if (has('showNonOv', savedState)) {\n setShowNonOv(savedState.showNonOv);\n }\n }, [isLoaded, savedState]); // eslint-disable-line\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n onUpdateSavedState({comparisonViewMode, visibleColumns, showNonOv});\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 <CollaborationContextProvider collaboration={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 </CollaborationContextProvider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useCallback, useEffect, useMemo} from 'react';\nimport {Entity, Order} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatchesLoader} from '@reltio/components';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems, setGlobalSpinner} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\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: Order.desc\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS,\n onStartLoading,\n onFinishLoading\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatchesLoader(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 {getColumnsData, getMatchAttrColumns, groupColumnsDataByMatchAttributes} from '../helpers/attributesHelpers';\nimport {getSortOptionIdFromData} from '../helpers/sortHelpers';\n\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","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 '@mui/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 {makeStyles} from '@mui/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: \"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})));","import {makeStyles} from '@mui/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 React, {useCallback, useMemo} from 'react';\nimport {pipe} from 'ramda';\nimport {\n MatchRulesSelector,\n SourceSystemsSelector,\n AttributesValuesEditor,\n AttributeFiltersComponentProps\n} from '@reltio/components';\nimport {\n isMatchRuleAttrType,\n isSourceSystemAttrType,\n SearchFilter,\n MatchRulesAttrNames,\n wrapInArray\n} 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 const commonProps = {\n values: (values[0] || []) as string[],\n onChange: pipe(wrapInArray, changeValue),\n TextFieldProps,\n fullWidth: true\n };\n\n if (isMatchRuleAttrType(attrType)) {\n return (\n <MatchRulesSelector {...commonProps} name={attrType.name as MatchRulesAttrNames} entityType={entityType} />\n );\n } else if (isSourceSystemAttrType(attrType)) {\n return <SourceSystemsSelector {...commonProps} />;\n } else {\n return <AttributesValuesEditor rowContext={rowContext} rowData={rowData} />;\n }\n};\n","import React from 'react';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\nimport {capitalize} from '@mui/material/utils';\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 {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n divider: {\n marginBottom: '14px',\n marginRight: '16px',\n borderColor: 'rgba(0, 0, 0, 0.121569)'\n },\n optionLabel: {\n fontSize: '13px',\n paddingLeft: '10px'\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Divider from '@mui/material/Divider';\nimport Checkbox from '@mui/material/Checkbox';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport {AttributeType, buildFilterQueryString, SearchFilter} from '@reltio/mdm-sdk';\nimport {FilterSelector} from '../FilterSelector/FilterSelector';\nimport {ValuesEditor} from '../ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\nconst potentialMatchesComponents = {\n FilterSelector,\n ValuesEditor\n};\n\ntype Props = {\n filters: SearchFilter[];\n options: MatchesOptions;\n onChange: (filters: SearchFilter[], option: MatchesOptions) => void;\n attributeTypes: AttributeType[];\n};\n\nexport const MatchesAttributesFiltersButton = ({filters, onChange, attributeTypes, options}: Props) => {\n const styles = useStyles();\n const [showTransitiveMatches, setShowTransitiveMatches] = useState(options.showTransitiveMatches);\n return (\n <AttributesFiltersButton\n dataReltioId=\"potential-matches-filter-button\"\n filters={filters}\n onChange={(filters) => onChange(filters, {showTransitiveMatches})}\n attributeTypes={attributeTypes}\n components={potentialMatchesComponents}\n onTogglePopup={(open) => {\n if (open) {\n setShowTransitiveMatches(options.showTransitiveMatches);\n }\n }}\n isFiltersApplied={!!buildFilterQueryString()(filters) || options.showTransitiveMatches}\n >\n <FormControlLabel\n classes={{label: styles.optionLabel}}\n control={\n <Checkbox\n checked={showTransitiveMatches}\n onChange={(e) => setShowTransitiveMatches(e.target.checked)}\n color=\"primary\"\n />\n }\n label={i18n.text('Show transitive matches')}\n />\n <Divider light className={styles.divider} />\n </AttributesFiltersButton>\n );\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n CrosswalksAttrTypes,\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n Order,\n SearchFilter,\n PotentialMatchesAttrTypes,\n SortingField\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from '../components/RightSidePanel/icons/potential-matches-icon.svg';\nimport FindMatchesIcon from '../components/RightSidePanel/icons/find-matches-icon.svg';\nimport NotAMatchIcon from '../components/RightSidePanel/icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../constants/views';\n\nimport {ADDITIONAL_SORT_OPTIONS_DATA, DEFAULT_SORT_OPTIONS, getSortOptionIdFromData} from '../helpers/sortHelpers';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {ValuesEditor} from '../components/RightSidePanel/ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../types/potentialMatchesTypes';\nimport {MatchesAttributesFiltersButton} from '../components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton';\nimport {PMRightPanelTabs} from '../PotentialMatchesView';\n\nconst sourceSystemsComponents = {\n ValuesEditor\n};\n\nexport const usePotentialMatchesRightSidePanelElements = (): {\n active?: number;\n tabs: PMRightPanelTabs;\n toggleActive: (newId: ActivePanel) => void;\n onClose: () => void;\n} => {\n const [matchesFilters, setMatchesFilters] = useState<SearchFilter[]>([]);\n const [matchesOptions, setMatchesOptions] = useState<MatchesOptions>(DEFAULT_OPTIONS);\n const [findMatchesFilters, setFindMatchesFilters] = useState<SearchFilter[]>([]);\n const [notMatchFilters, setNotMatchFilters] = useState<SearchFilter[]>([]);\n const [matchesSorting, setMatchesSorting] = useState<SortingField>({\n field: ADDITIONAL_SORT_OPTIONS_DATA[0].id,\n order: Order.desc\n });\n const [findMatchesSorting, setFindMatchesSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\n const [notMatchSorting, setNotMatchSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\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 onClose = useCallback(() => {\n setActive(null);\n }, []);\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(\n () => [\n ...matchRulesAttributes,\n PotentialMatchesAttrTypes.relevanceScore,\n PotentialMatchesAttrTypes.matchAction,\n ...attributeTypes\n ],\n [attributeTypes, matchRulesAttributes]\n );\n\n const findMatchesAttributeTypes = useMemo(\n () => [EntityAttrTypes.id, CrosswalksAttrTypes.sourceSystems, ...attributeTypes],\n [attributeTypes]\n );\n\n const onChangeMatchesFilters = (matchesFilters: SearchFilter[], options: MatchesOptions) => {\n setMatchesOptions(options);\n setMatchesFilters(matchesFilters);\n };\n\n const tabs = 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 <MatchesAttributesFiltersButton\n filters={matchesFilters}\n onChange={onChangeMatchesFilters}\n attributeTypes={potentialMatchesAttributeTypes}\n options={matchesOptions}\n />\n )\n },\n filters: matchesFilters,\n options: matchesOptions,\n sorting: matchesSorting,\n onSorting: setMatchesSorting\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 components={sourceSystemsComponents}\n />\n )\n },\n filters: findMatchesFilters,\n sorting: findMatchesSorting,\n onSorting: setFindMatchesSorting\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 sorting: notMatchSorting,\n onSorting: setNotMatchSorting\n }\n ],\n [\n matchesFilters,\n matchesOptions,\n findMatchesFilters,\n notMatchFilters,\n potentialMatchesAttributeTypes,\n findMatchesAttributeTypes,\n matchesSorting,\n findMatchesSorting,\n notMatchSorting,\n attributeTypes\n ]\n );\n\n return {active, tabs, toggleActive, onClose};\n};\n","import React from 'react';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\nconst PotentialMatchesLoadIndicator = () => {\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n return isGlobalSpinnerActive ? <LinearLoadIndicator /> : null;\n};\n\nexport default PotentialMatchesLoadIndicator;\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {equals, pluck} from 'ramda';\nimport {\n useSnackbar,\n SnackbarContext,\n useSavedStateForEntityType,\n ScreenProfileBand,\n ProfileResizablePanes,\n RightPanelTab\n} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport {RightSidePanel} from './components/RightSidePanel/RightSidePanel';\nimport {MatchReviewTable} from './components/MatchReviewTable/MatchReviewTable';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\nimport {ReloadDataProvider} from './contexts/ReloadDataContext';\nimport {MatchesOptions, PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\nimport {useStyles} from './styles';\nimport {usePotentialMatchesRightSidePanelElements} from './hooks/usePotentialMatchesRightSidePanelElements';\nimport PotentialMatchesLoadIndicator from './components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator';\n\nconst perspectiveId = 'potentialMatches';\nconst THIRTY_SECONDS = 30000;\n\nexport type PMRightPanelTabs = Array<\n RightPanelTab & {\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n }\n>;\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const PotentialMatchesView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({autoHideDuration: THIRTY_SECONDS});\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\n\n const {tabs} = usePotentialMatchesRightSidePanelElements();\n\n useEffect(() => {\n if (!isLoaded) return;\n lastSavedState.current = savedState || {};\n }, [isLoaded, savedState]); // eslint-disable-line\n\n const onUpdateSavedState = useCallback(\n (stateToSave = {}) => {\n if (!lastSavedState.current) return;\n const newSavedState = {...lastSavedState.current, ...stateToSave};\n if (!equals(newSavedState, lastSavedState.current)) {\n updateSavedState(newSavedState);\n lastSavedState.current = newSavedState;\n }\n },\n [updateSavedState]\n );\n\n return (\n <ViewStateProvider>\n <ReloadDataProvider>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <div className={styles.perspectiveView}>\n <PotentialMatchesLoadIndicator />\n {entity?.uri && (\n <>\n <div className={styles.potentialMatchesContainer}>\n <ProfileResizablePanes\n buttonsProps={pluck('buttonProps', tabs)}\n perspectiveId={perspectiveId}\n >\n <div className={styles.potentialMatchesWrapper}>\n <ScreenProfileBand entity={entity} />\n <MatchReviewTable\n config={config}\n isLoaded={isLoaded}\n savedState={savedState}\n onUpdateSavedState={onUpdateSavedState}\n />\n </div>\n <RightSidePanel tabs={tabs} config={config} />\n </ProfileResizablePanes>\n </div>\n <SnackbarRenderer />\n <ChangeModeConfirmation />\n </>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\n\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {identity} from 'ramda';\nimport {promisifyCallback, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {PotentialMatchesView as PMView} from './PotentialMatchesView/PotentialMatchesView';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {PotentialMatchesSavedState} from './PotentialMatchesView/types/potentialMatchesTypes';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'potentialMatchesView',\n disableGlobal: true,\n seed: 'pm'\n});\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n onResize: (width: number, height: number) => void;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nconst PotentialMatchesView = ({config, onResize = identity, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified = useCallback(\n promisifyCallback<Record<string, PotentialMatchesSavedState>>(getSavedState),\n [getSavedState]\n );\n\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <PMView config={config} saveState={saveState} getSavedState={getSavedStatePromisified} />\n )}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n );\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","useMdmAbsoluteImagePath","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","className","avatarText","title","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","classnames","ExpandedValueTooltip","i18n","SmallIconButton","size","ArrowDropDownIcon","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","otherProps","useMdmMetadata","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","useState","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","defaultGetRowCellKey","rowIndex","columnData","cellIndex","getRowCellKey","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","flushHeightUpdates","debounce","clearHeightsCache","getDynamicRowCellHeight","cell","changeRowCellHeight","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","onChangeHeight","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","ref","handleHeight","onResize","theme","readOnlyLogicOperatorContainer","palette","secondary","readOnlyFilter","marginLeft","ReadOnlyLogicOperator","rowData","operator","capitalize","getFilterOptionLabel","row","marginBottom","rowItem","paddingRight","fullWidth","flexGrow","QueryBuilderRow","classes","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ReadOnlyFilter","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","withMuiSkin","CreatableSelect","Option","props","innerProps","innerRef","isSelected","selectProps","MenuItem","classNames","option","selected","Checkbox","onMouseMove","onMouseOver","tabIndex","isRequired","findNearestScrollableElement","element","currentElement","parentElement","scrollHeight","needToScroll","valueLength","prevValuesLength","parentElementWithScroll","getBoundingClientRect","bottom","top","left","placeholder","clearIndicator","spacing","dropdownIndicator","MultiSelect","creatable","getOptions","loadingIndicator","components","componentsProp","classesProp","stylesProp","onChange","onChangeProp","onInputChange","onInputChangeProp","menuPlacement","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","multiSelectClasses","omit","inputId","values","usePrevious","useEffect","timerId","setTimeout","scrollIntoView","clearTimeout","useKeepInputVisible","controlRef","getControlRef","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","TextFieldProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","options","ClearIndicator","Control","DropdownIndicator","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","noOptionsMessage","singleValue","menu","container","groupHeading","indicatorsContainer","input","menuList","menuPortal","multiValueLabel","multiValueRemove","menuPortalTarget","menuShouldBlockScroll","captureMenuScroll","getOptionValue","isSearchable","inputRef","profileBandNavigation","comments","justifyContent","ScreenProfileBand","entity","historySlice","objectIds","getProfileBandObjectIdsForCollaboration","collaboration","useCollaboration","entityUri","getEntityUriForLink","CollaborationContext","ProfileBand","COMMENTS_CONTAINER_VISIBILITY_AREA","aEntity","ProfileBandHistory","ProfileBandNavigation","CommentsContainer","uri","relatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","objectType","displayName","renderAttributesList","valueContainerClassName","attributeValue","expanded","LabelRenderer","RightSlot","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","ActivePanel","ComparisonViewMode","ReloadDataContext","createContext","reloadData","addReloadHandler","removeReloadHandler","ReloadDataProvider","contextValue","reloadDataHandlers","forEach","reloadHandler","push","indexOf","splice","createContextValue","Provider","useReloadData","dataContext","Error","RESET","SET_OPTIONS","actions","basicTableViewState","reset","createStandardAction","setOptions","reducer","state","payload","ViewStateContext","ViewDispatchContext","SET_GLOBAL_SPINNER","SET_SELECTED_ITEMS","DESELECT_BY_ENTITIES","TOGGLE_SELECT","ACTUALIZE_SELECTED_ITEMS_COLORS","SET_LIMIT_SELECTION","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","setGlobalSpinner","setSelectedItems","deselectByEntities","toggleSelect","actualizeSelectedItemsColors","setLimitSelection","setComparisonViewMode","setEntitiesMap","deleteExtraMatches","viewStateReducer","isGlobalSpinnerActive","slice","limitSelection","evolve","object","itemIndex","selectedItem","remove","append","entityColors","colors","selectedEntitiesUris","getEntityUriFromMatchObject","entityUrisWithoutColors","propEq","shift","newMode","comparisonViewMode","COLUMNS","entitiesMap","ViewStateProvider","dispatch","useReducer","getPotentialMatchesColor","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","createAttributeItemConfig","attrNode","parents","config","createAttributeItemBasicConfig","childNode","attrType","attributeUriToSearchUri","collectAttributeItems","entityType","getAllAttributeTypesTree","getColumnsDataFromEntityAttributes","attr","dataTypeDefinition","getAttrDataTypeDefinition","getColumnsData","getEntityAttributesFromMetadata","isMatchAttrColumn","matchAttributes","column","attrUri","isReferenceAttrColumn","isSubAttrIdForColumn","isNestedAttrColumn","isNested","isReference","parentColumn","columnId","startsWith","isNestedForOneOfColumns","columns","isRelatedToColumns","__","getMatchAttrColumns","columnsData","reject","ROWS_PER_PAGE_OPTIONS","MATCHES_SORT_OPTIONS","ADDITIONAL_SORT_OPTIONS_DATA","DEFAULT_SORT_OPTIONS","getSortOptionIdFromData","pluck","buildRulesStringFormFilters","filters","join","isMatchRuleFilter","any","equals","MatchRulesAttrTypes","useMatchesReducer","defaultRowsPerPage","initState","page","rowsPerPage","stateReducer","resultActions","viewActions","viewState","showAddRelationErrors","error","console","ErrorPopup","message","showApiError","getRequestErrorMessage","showDCRReviewErrors","apiError","errorCode","ApiErrorCode","useSpinnerAndReloadData","onStartRequest","onFinishRequest","MergeButton","forwardRef","entities","mode","ActionButtonMode","onMenuClose","noop","onSuccess","onError","NotMatchButton","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","React","viewBox","version","xmlns","d","fillOpacity","SetAMatchButton","markingIsInProgress","setAMatch","setAsMatch","then","catch","finally","useSetAMatch","ActionButton","SetAsMatchIcon","xmlnsXlink","stroke","strokeWidth","fill","fillRule","xlinkHref","mask","DCRReviewButton","showSnackbarMessage","SnackbarContext","operationIsInProgress","startPMReview","selectors","mdmModule","workflowPath","useSelector","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","DcrReviewIcon","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","CreateRelationButton","mainEntity","currentEntity","matchRules","permission","AddRelationIcon","RightSideHeaderContext","attributeSelect","field","split","sortLevel","findNode","parentFieldName","node","handleChange","val","BasicAttributeSelector","rowCheckbox","position","alignSelf","header","border","borderTop","sorting","arrow","transition","rotate","transform","selectedCount","totalCount","sortOptions","onSorting","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","indeterminate","IconButton","order","Order","useSortOptions","additionalOptions","entityTypeUri","getEntityType","getSortingItemsGroups","col","useEntityColor","entityColor","paddingTop","paddingBottom","entityHeader","actionButtons","active","wrapper","content","right","pointerEvents","borderLeft","paddingLeft","entityLabel","primary","main","textDecoration","matchRulesWrapper","selectedRow","coloredRow","matchScore","commentsContainer","rightButton","tenantIcon","dividerWrapper","divider","borderColor","relevanceBadge","match","entityToMatch","isRowSelected","isColumnViewMode","actionButtonsRenderer","openMenu","setOpenMenu","isRowSelectable","Actions","showRelevanceBadge","matchRuleSummaries","checkMatchRuleSummaryRelevance","EntityUriLink","buttonClassName","hoveredMatch","onActionsMenuOpen","onActionsMenuClose","createObjectIdForPM","matchEntityUri","allowOnlyOneComment","showAlways","MatchRulesBlock","variant","MatchRuleVariant","Divider","orientation","RelevanceScoreBadge","DataTenantBadge","dataTenantId","dataTenant","view","flexDirection","overflowY","overflowX","MatchItems","matches","isLoading","LinearLoadIndicator","gap","inputRoot","menuButtonRoot","searchTenant","onChangeSearchTenant","currentSearchText","setCurrentSearchText","handleSearch","trim","handleChangeSearchText","newSearchText","isEmpty","document","activeElement","TenantsDropDownSelector","selectedTenant","onChangeTenant","SearchInput","autofocus","onKeyPress","MenuItemRenderer","ActionsPanel","numberOfButtons","actionButtonSize","buttonActions","menuActions","splitAt","buttonMode","buttonSize","actionButton","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","moreOptions","menuId","menuItems","onMenuOpen","mainArea","FindMatchesView","changeRowsPerPage","changePage","searchText","setSearchText","setSearchTenant","handleChangeSearchTenant","newSearchTenant","requestFilters","total","findEntities","loading","enabled","searchTenantId","activityFilter","globalFilter","setLoading","setTotal","setEntities","safePromise","useSafePromise","DEFAULT_SELECTION","filterQuery","buildFilterQueryString","isDtss","dtssProps","entityRequestOptions","offset","sort","select","entityRequest","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","totalRequestOption","totalRequest","getTotalFromDataTenant","getTotals","Promise","all","results","totalResponse","useFindEntities","resetPage","resetSelected","selectAll","canMerge","canMark","getActionPermissionForMatch","isDTEntity","areBothEntitiesDT","show","pathEq","BasicTablePagination","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","dialogPaper","dialogTitle","titleText","letterSpacing","fontize","attributeList","useDispatch","mdm","containerRef","relation","inRelations","inRelationTypes","outRelations","outRelationTypes","isNotDuplicatedInRelation","isNotDuplicatedOutRelation","inOutRelationsDeduplicator","setObjectTypes","assocPath","startObject","objectTypeURI","endObject","matchActionConfig","propOr","rulesConfig","getRulesConfig","relationTypeUris","createRelation","canCreateRelationBetweenEntities","getRelationType","getRelationTypesFromConfig","relationUri","relationType","pathOr","relationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","viewId","onRelationTypeChange","profile","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","onCancel","boundariesElement","popupBoundariesValue","priority","Dialog","paper","DialogTitle","Typography","DialogContent","PopupBoundariesContext","ConnectionRelationTypeSelector","applyFirstByDefault","AttributesList","attrTypes","showEmptyEditors","Mode","parentUri","DialogActions","Button","startDate","endDate","startEntityUri","endEntityUri","async","markAsNotMatch","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","DEFAULT_OPTIONS","showTransitiveMatches","MatchesView","hasWorkflow","matchRulesFilters","regularFilters","partition","matchesFilter","loadMatches","rules","onStartLoading","onFinishLoading","useMatchesLoader","markMatchedValues","useMatches","getPotentialMatchesObjectIdsForCollaboration","keys","canAddRelation","hasDTEntity","every","EntitiesMapContext","NotMatchView","loadNotMatches","setMatches","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","record","NOT_MATCH","loadNotMatchesIfNeeded","force","addGlobalFilterToQuery","activeness","result","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","PotentialMatches","FindMatches","NotAMatch","render","flexShrink","RightSidePanel","tabs","isNil","headerProps","SidePanel","button","MODES","Icon","ViewColumnRoundedIcon","TABLE","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","mergeButton","splitter","actionSplitter","getEntityObjects","TableHeader","selectedColumns","onChangeColumns","showNonOv","onChangeShowNonOv","getActionPermissionForMatches","hideMerge","hasSelectedItems","handleToggleShowOvValue","not","settingItems","BasicViewHeader","Spacer","SettingsMenu","ColumnsSettings","ExpandedContext","expandedMap","onExpandType","Component","WithExpanded","componentProps","matchedAttributeBackground","complexAttributesHeadRenderer","complexAttributesHeadLabel","arrowButton","matchedAttribute","badge","marginTop","highlightedValuesUris","HighlightedValuesContext","areOneHierarchyUris","Tooltip","ExpandableAttributeValuesBlock","withExpanded","ReadOnlyAttributeValuesBlock","AttributesRenderer","matchedValuesUris","highlightedValuesContextValue","highlightedClassName","MatchedValuesCounter","ColumnDataContext","menuButtonWrapper","headCell","HeadCellRenderer","hideable","setAnchor","setHoveredId","hoveredId","ComplexAttributesHeadRenderer","onExpandClick","ArrowExpandButton","HoveredEntityContext","hoveredEntity","resetHoveredEntity","isEntityFindMatch","isEntityNotMatch","isEntityPotentialMatch","hovered","colored","removeButton","zIndex","matchControlsContainer","isPotentialMatchesTask","task","WorkflowTasksAvailabilityContext","minHeight","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","workflowTasks","matchUri","requestIsInProgress","setRequestIsInProgress","tasks","setTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","loadTasks","getTasksForEntity","hasMatchEntityUri","propSatisfies","isTaskBelongsToMatch","allPass","warn","updateTaskState","taskId","mergeLeft","onActionSuccess","useWorkflowTasks","setWorkflowTaskAvailability","workflowActions","actionRequestIsInProgress","useWorkflowActions","possibleActions","assignee","TaskActions","isInProgress","WorkflowTasksContext","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","AssigneeSelector","isTaskOpen","WorkflowComments","preferredAction","DEFAULT_ROWS","draggable","initialWidth","autoResize","crosswalk","crosswalkIcon","labelContainer","spacer","ColoredSourceIcon","showTooltip","getSourceSystemLabel","flexWrap","crosswalks","checkIsDataTenantEntity","inline","additionalPropsForDefaultRows","cellRenderer","isSelectedEntity","onRemove","rest","isHovered","getEntityId","controlProps","CloseIcon","ProfileCard","MatchControls","headCellRenderer","workflowCard","sources","SourcesRenderer","entityId","reduce","nestedAttributeValue","subAttributeType","CrosswalksAttrTypes","getFakeAttributeValueForCrosswalk","score","relevanceScore","RelevanceScoreRenderer","defaultRows","getAttrTypeNameByUri","last","getMatchedValuesUris","matchedValues","cond","getColumnDataForRowData","onRemoveItem","isMainEntity","isAttributeSearchUri","attrSource","getAttributeSource","isOv","getAttributeValues","ColumnHandlerContext","getFirstLevelParentAttribute","replaceSubAttributesWithParent","uniq","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","ColumnsSettingsPopup","onColumnClick","newId","newIndex","borderStyle","comparisonTableWrapper","collapsedRow","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","emptyState","ComparisonTable","setSelectedColumns","selectedRows","setSelectedRows","allRowsData","localSelectedRows","setLocalSelectedRows","localSelectedColumns","setLocalSelectedColumns","setHoveredEntity","anchor","selectedRowsWithoutSubAttributes","searchUri","defaultRow","attrTypeUri","searchUriToAttrUri","findAttributeTypeByUri","collectionName","isComplexAttribute","getTableRowsData","showNonOnly","isDraggable","getTableColumnsData","setExpandedMap","expandedContextValue","headCellData","onClosePopup","selectedAttributeUris","hoveredEntityContextValue","isThereAnyTask","workflowTasksAvailabilityMap","setWorkflowTasksAvailabilityMap","useWorkflowTasksAvailability","workflowCardRowClassname","displayedRowsData","rowClassName","VerticalHeadingsTable","theadRowsNumber","onMoveRow","dragId","hoverId","newArr","groupBy","getFirstLevelSearchUri","toPairs","dragIndex","hoverIndex","dragRow","insert","nth","onDropRow","onMoveColumn","dragColumn","onDropColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","secondaryText","table","ComparisonView","defaultWrapperStyles","getColoredRowCellStyle","hoveredColor","alpha","lightPrimaryBackground","lighten","lightPrimaryBackgroundHovered","highlightBackground","entityBackground","link","rowCloseIcon","backgroundImage","firstHeadCell","headCellWithEntity","rowCell","rowCellFirstColumn","firstEntityCell","entityRowCell","entityRowCellSelected","rowCellHighlighted","rowCellSelected","defaultWrapper","hoveredDefaultWrapper","entityWrapper","profileWrapper","blobWrapper","imageWrapper","referenceWrapper","entityAvatar","collapseButton","dragIndicator","dragIndicatorIcon","opacity","ovFalse","inactive","expandButton","withFilterAtBottom","DefaultHeadCellRenderer","simpleValue","ov","DataTypeValue","withTableContext","onToggleSelect","isRowRemovable","hoverRowIndex","dragRef","containerId","IdContext","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","isFirstColumn","headIndex","blobValue","onScroll","imgValue","src","getImageAttributeOvThumbnailUrl","EntityTypeIcon","getReferencedEntityFromAttrValue","objectURI","EntityRowCollapseContext","chipContainer","chipLabel","ChipWithTooltip","withTooltip","Chip","needShowChip","basicTableRowCollapseContext","BasicTableRowCollapseContext","collapseContext","maxRowValuesCount","collapsed","setCollapsed","toggleCollapsed","prev","displayedCrosswalks","isShowDataTenant","hasCollapsedValue","getAttrPathFromColumnId","getBasicTableRowsData","allMatchRules","getAttributesForMatchRules","filteredColumnsData","acc","assoc","attrPath","ifElse","getAttributeValuesByPathWithOvFlag","getOvAttributeValuesByPathWithOvFlag","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","EntityProfileRenderer","MatchRulesRenderer","dataType","BlobRender","ImageRenderer","ReferenceRenderer","DefaultCellValueRenderer","getCellValueRendererByDataType","isAttributeCell","hiddenValues","Array","isArray","wrapInArrayIfNeeded","getAttributeValue","rich","isCellHighlighted","CellValueRenderer","columnIndex","cellWrapperClassName","someRowIsDragging","shouldRenderCell","tableContainer","rowActionButtonsWrapper","rowActionButtons","hoveredRowRightContentContainer","dragColumnHead","borderLeftColor","borderRightColor","dragColumnBody","sourcesCell","columnGap","rowGap","CommonRowCellRenderer","hoveredRowRightContent","basicTableRef","actionsContent","tableRef","RowCellAutoSizer","getIdFromRowValue","onReorderingColumn","onFilter","onSort","onResetSelect","onSelectAll","isComparisonViewShown","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","ProfileHeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","onDndColumnReorder","what","where","oldPositionId","newPositionId","tableContext","isAllSelected","useDynamicRowCellHeight","openActionsMenu","setOpenActionsMenu","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","isChecked","onChangePopupVisibility","renderRowCell","getRowCellHeight","defaultGetRowCellHeight","tableClasses","getDynamicEntityCellHeight","changeEntityCellHeight","clearEntityHeightsCache","renderEntityCell","getEntityCellHeight","getRowHeight","getHeightForSubRow","entityTableRowsData","collapseContextValue","entityRowCollapseContext","useBasicTableCellRenderer","entityRowHeight","enhancedColumnsData","withEntityCell","EntityCellRenderer","withEntityCellValue","useLayoutEffect","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndColumnReorderingEnabled","dndColumnReorderingHandler","dndRowReorderingHandler","hoveredContentPosition","comparisonView","MatchReviewTable","isLoaded","savedState","onUpdateSavedState","initialRequestParam","useFirstPotentialMatches","allColumnsData","groupedColumnsData","defaultColumns","defaultColumnsData","additionalColumnsData","attrColumnsData","getEntityTypeMatchAttributes","matchAttrColumns","otherColumns","groupColumnsDataByMatchAttributes","useMatchesColumnsData","visibleColumns","setVisibleColumns","setShowNonOv","visibleColumnsData","comparisonViewProps","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","DragAndDrop","clipRule","flexBox","ChangeModeConfirmation","onSave","TableIcon","ConfirmationDialog","onDiscard","saveCaption","discardCaption","perspectiveView","default","potentialMatchesWrapper","potentialMatchesContainer","ValuesEditor","changeFilter","changeValue","newValues","InputProps","commonProps","wrapInArray","isMatchRuleAttrType","MatchRulesSelector","isSourceSystemAttrType","SourceSystemsSelector","optionLabel","potentialMatchesComponents","FilterSelector","FilterOptions","MatchesAttributesFiltersButton","attributeTypes","setShowTransitiveMatches","AttributesFiltersButton","dataReltioId","onTogglePopup","isFiltersApplied","FormControlLabel","light","sourceSystemsComponents","usePotentialMatchesRightSidePanelElements","matchesFilters","setMatchesFilters","matchesOptions","setMatchesOptions","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","matchesSorting","setMatchesSorting","findMatchesSorting","setFindMatchesSorting","notMatchSorting","setNotMatchSorting","setActive","toggleActive","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","potentialMatchesAttributeTypes","PotentialMatchesAttrTypes","findMatchesAttributeTypes","EntityAttrTypes","onChangeMatchesFilters","PotentialMatchesIcon","mainTitle","rightContent","FindMatchesIcon","NotAMatchIcon","PotentialMatchesView","getSavedState","saveState","SnackbarRenderer","useSnackbar","autoHideDuration","lastSavedState","updateSavedState","useSavedStateForEntityType","stateToSave","newSavedState","S","ProfileResizablePanes","buttonsProps","perspectiveId","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","floor"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"8216.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/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.ts","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.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.ts","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.tsx","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.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/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/hooks/useKeepInputVisible.ts","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/ScreenProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/sortHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesReducer.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/utils/errors.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/MergeButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/NotMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/setAsMatch.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/SetAMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSetAMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/dcrReview.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/DcrReviewButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useRequestDCRReview.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useReinstateMatch.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/ReinstateMatchButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/icons/addRelationship.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/CreateRelationButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/RightSideHeaderContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/SortingFieldSelector/SortingFieldSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanelHeader/RightSidePanelHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useSortOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useEntityColor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ItemRenderer/ItemRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchItems/MatchItems.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/RightSideSearch/RightSideSearch.tsx","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/FindMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/FindMatchesView/FindMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFindEntities.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/helpers/relationsHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/AddRelationDialog/AddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useAddRelationDialog.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultOptions.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesView/MatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useNotMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/NotMatchView/NotMatchView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Content/Content.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonViewModeSwitcher/ComparisonViewModeSwitcher.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/TableHeader/TableHeader.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ExpandedContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/withExpanded.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchedValuesCounter/MatchedValuesCounter.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/AttributesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnsDataContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/HeadCellRenderer/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/ComplexAttributesHeadRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/HoveredEntityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchControls/MatchControls.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/workflow.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/WorkflowTasksAvailabilityContext.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/WorkflowCard/WorkflowCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/constants/defaultRows.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/LabelRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/CrosswalksRenderer/CrosswalksRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/SourcesRenderer/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/tableHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/EntityCard/EntityCard.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/MatchMethod/MatchMethod.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ColumnHandlerContext/index.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/helpers/attributesHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/ConfigRowPopup.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/AddRowPopups/AddRowPopups.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useWorkflowTasksAvailability.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonTable/ComparisonTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ComparisonView/ComparisonView.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/EntityProfileRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ProfileHeadCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/MatchRulesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ImageRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/ReferenceRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/EntityRowCollapseContext.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/SourceChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RelevanceScoreRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/components/RowCellChipWithTooltip.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/CommonRowCellRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/MatchesTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/cell-renderers/withEntityCellValue.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/MatchReviewTable.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useFirstPotentialMatches.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/useMatchesColumnData.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchReviewTable/helpers/helpers.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/TableIcon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ChangeModeConfirmation/ChangeModeConfirmation.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/potential-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/find-matches-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/icons/not-a-match-icon.svg","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/ValuesEditor/ValuesEditor.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/FilterSelector/FilterSelector.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/usePotentialMatchesRightSidePanelElements.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/PotentialMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/index.tsx","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@mui/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 {getAbsoluteImageUrl, getEntityTypeGraphIcon, Metadata} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\nimport {useMdmAbsoluteImagePath} from '../../contexts';\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 = useMdmAbsoluteImagePath();\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 {makeStyles} from '@mui/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 ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\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={ArrowDropDownIcon} 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 '@mui/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 ListItem from '@mui/material/ListItem';\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 {useMdmMetadata} from '../../contexts';\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\n\ntype Data = {\n attrType?: AttributeType;\n};\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 = useMdmMetadata();\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 '@mui/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(\n () => prepareGroupsForSelectAttributeList(filterText, itemsGroups),\n [itemsGroups, 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(\n () => 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} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\nimport {ColumnData, RowValue} from '../../types';\n\ntype GetRowCellKeyProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype RowCellHeightsMap = Record<string, number>;\n\nconst defaultGetRowCellKey = ({rowIndex, columnData, cellIndex}: GetRowCellKeyProps) =>\n `${columnData.id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = (getRowCellKey = defaultGetRowCellKey) => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState<RowCellHeightsMap>({});\n const rowCellHeightsMapCache = useRef<RowCellHeightsMap>({});\n\n const flushHeightUpdates = useCallback(\n debounce(() => setRowCellHeightsMap({...rowCellHeightsMapCache.current})),\n []\n );\n\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(\n (cell: GetRowCellKeyProps) => {\n const key = getRowCellKey(cell);\n return rowCellHeightsMap[key];\n },\n [getRowCellKey, rowCellHeightsMap]\n );\n\n const changeRowCellHeight = useCallback(\n curry((cell: GetRowCellKeyProps, height: number) => {\n const key = getRowCellKey(cell);\n const currentHeight = rowCellHeightsMapCache.current[key];\n if (currentHeight !== height) {\n rowCellHeightsMapCache.current[key] = height;\n flushHeightUpdates();\n }\n }),\n [flushHeightUpdates, getRowCellKey]\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import {makeStyles} from '@mui/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, {ReactNode, useRef} from 'react';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDidUpdateEffect} from '../../../hooks';\nimport {ColumnData, RenderRowCellProps, RowValue} from '../types';\n\ntype OnChangeHeightProps = {\n rowIndex: number;\n cellIndex: number;\n columnData: ColumnData;\n rowValue: RowValue;\n};\n\ntype Props = {\n onChangeHeight: (props: OnChangeHeightProps) => (size: number) => void;\n children: ReactNode;\n} & RenderRowCellProps;\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}: Props) => {\n const cellRef = useRef<HTMLDivElement>();\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData, rowValue});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div ref={cellRef}>\n <ReactResizeDetector handleHeight onResize={adjustCellHeight} />\n {cell}\n </div>\n );\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@mui/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 {QueryBuilderAttribute} from '../../../types';\nimport useStyles from './styles';\n\nimport {capitalize} from '@mui/material/utils';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyLogicOperator = ({className, rowData}: Props) => {\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 classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\nimport {QueryBuilderAttribute} from '../../../types';\n\nimport useStyles from './styles';\n\ntype Props = {\n className: string;\n rowData: QueryBuilderAttribute;\n};\nconst ReadOnlyFilter = ({className, rowData}: Props) => {\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\nexport default ReadOnlyFilter;\n","import {makeStyles} from '@mui/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 React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nimport useStyles from './styles';\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)} data-reltio-id=\"query-builder-row\">\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 CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import {useEffect, MutableRefObject} from 'react';\nimport {usePrevious} from '../../../hooks';\n\nconst findNearestScrollableElement = (element: HTMLElement) => {\n let currentElement = element?.parentElement;\n while (currentElement) {\n if (currentElement.scrollHeight > currentElement.clientHeight) {\n return currentElement;\n }\n currentElement = currentElement.parentElement;\n }\n return null;\n};\n\nconst needToScroll = (\n valueLength: number,\n prevValuesLength: number,\n parentElementWithScroll: HTMLElement,\n currentElement: HTMLElement\n) =>\n valueLength &&\n prevValuesLength < valueLength &&\n currentElement.getBoundingClientRect().bottom > parentElementWithScroll.getBoundingClientRect().bottom;\n\nexport const useKeepInputVisible = (values = [], ref: MutableRefObject<HTMLElement>) => {\n const prevValuesLength = usePrevious(values?.length);\n\n useEffect(() => {\n const timerId = setTimeout(() => {\n const parentElementWithScroll = findNearestScrollableElement(ref?.current);\n if (\n parentElementWithScroll &&\n needToScroll(values?.length, prevValuesLength, parentElementWithScroll, ref.current)\n ) {\n ref.current?.scrollIntoView(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(timerId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values?.length]);\n};\n","import React, {useState, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit, either, path} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@mui/styles';\nimport {mergeClasses} from '../../../core/utils';\nimport {useKeepInputVisible} from '../hooks/useKeepInputVisible';\n\nconst getControlRef = (innerRef) => {\n const controlRef = {};\n if (innerRef.current) {\n controlRef.current = either(\n path(['select', 'controlRef']),\n path(['select', 'select', 'controlRef'])\n )(innerRef.current);\n }\n return controlRef;\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n const innerRef = useRef();\n useKeepInputVisible(props.value, getControlRef(innerRef));\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n innerRef={innerRef}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @mui/material/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n profileBandNavigation: {\n marginBottom: '10px'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end'\n }\n});\n","import React, {memo, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Entity,\n getEntityUriForLink,\n getProfileBandObjectIdsForCollaboration,\n HistorySlice\n} from '@reltio/mdm-sdk';\n\nimport ProfileBand from '../ProfileBand/ProfileBand';\nimport {ProfileBandNavigation} from '../ProfileBandNavigation';\nimport CommentsContainer from '../CommentsContainer/CommentsContainer';\nimport {CollaborationContextProvider} from '../../contexts';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA} from '../../constants';\nimport {useCollaboration} from '../../hooks';\nimport {ProfileBandHistory} from '../history';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n historySlice?: HistorySlice;\n};\n\nexport const ScreenProfileBand = memo(({entity, className, historySlice}: Props) => {\n const styles = useStyles();\n const objectIds = useMemo(() => getProfileBandObjectIdsForCollaboration(entity), [entity]);\n const collaboration = useCollaboration({objectIds});\n const entityUri = getEntityUriForLink(entity);\n\n return (\n <CollaborationContextProvider collaboration={collaboration}>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={historySlice?.aEntity || entity}\n >\n {historySlice ? (\n <ProfileBandHistory />\n ) : (\n <>\n <ProfileBandNavigation className={styles.profileBandNavigation} />\n <CommentsContainer\n className={styles.comments}\n uri={entityUri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </>\n )}\n </ProfileBand>\n </CollaborationContextProvider>\n );\n});\n\nScreenProfileBand.displayName = 'ScreenProfileBand';\n","import {AttributeType, AttributeValue, DataTypes, ImageAttributeValue} from '@reltio/mdm-sdk';\nimport React, {memo} from 'react';\nimport {ReadOnlyAttribute} from '../../..';\nimport ImageAttributesLine from '../ImageAttributesLine';\n\ntype SlotParams<T> = {\n attributeType?: AttributeType;\n attributeValue: T;\n};\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n expanded?: boolean;\n valueContainerClassName?: string;\n LabelRenderer?: ({attributeType, attributeValue}: SlotParams<AttributeValue>) => JSX.Element;\n RightSlot?: ({attributeType, attributeValue}: SlotParams<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, RightSlot, ...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, RightSlot, ...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","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, useMemo} from 'react';\n\ntype ReloadDataContextValue = {\n reloadData: () => void;\n addReloadHandler: (f: () => void) => void;\n removeReloadHandler: (f: () => void) => void;\n};\n\nconst ReloadDataContext = createContext<ReloadDataContextValue>({\n reloadData: () => {},\n addReloadHandler: () => {},\n removeReloadHandler: () => {}\n});\n\nconst createContextValue = () => {\n const reloadDataHandlers = [];\n const reloadData = () => {\n reloadDataHandlers.forEach((reloadHandler) => reloadHandler());\n };\n const addReloadHandler = (reloadHandler: () => void) => {\n reloadDataHandlers.push(reloadHandler);\n };\n const removeReloadHandler = (reloadHandler: () => void) => {\n const index = reloadDataHandlers.indexOf(reloadHandler);\n if (index !== -1) {\n reloadDataHandlers.splice(index, 1);\n }\n };\n return {\n reloadData,\n addReloadHandler,\n removeReloadHandler\n };\n};\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n const contextValue = useMemo(() => createContextValue(), []);\n return <ReloadDataContext.Provider value={contextValue}>{children}</ReloadDataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(ReloadDataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\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 {append, evolve, includes, propEq, remove} from 'ramda';\nimport React, {createContext, useContext, useReducer} from 'react';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {EntitiesMap, Entity, getEntityUriFromMatchObject, getPotentialMatchesColor, Match} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype ActionContext = {\n setGlobalSpinner: (val: boolean) => void;\n setSelectedItems: (matches: Match[]) => void;\n deselectByEntities: (entities: Entity[]) => void;\n toggleSelect: (match: Match) => void;\n actualizeSelectedItemsColors: () => 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 entityColors?: {entityUri: string; color: string}[];\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 DESELECT_BY_ENTITIES = 'DESELECT_BY_ENTITIES';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst ACTUALIZE_SELECTED_ITEMS_COLORS = 'ACTUALIZE_SELECTED_ITEMS_COLORS';\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 deselectByEntities: createStandardAction(DESELECT_BY_ENTITIES),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n actualizeSelectedItemsColors: createStandardAction(ACTUALIZE_SELECTED_ITEMS_COLORS),\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 DESELECT_BY_ENTITIES:\n return evolve(\n {\n selectedItems: (selectedItems) =>\n selectedItems.filter(({object}) => !action.payload.some(({uri}) => uri === object.uri))\n },\n state\n );\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 return append(item, selected);\n }\n }\n },\n state\n );\n case ACTUALIZE_SELECTED_ITEMS_COLORS: {\n return evolve(\n {\n entityColors: (colors) => {\n const selectedItems = state.selectedItems;\n\n const selectedEntitiesUris = selectedItems.map(getEntityUriFromMatchObject);\n\n const entityUrisWithoutColors = selectedEntitiesUris.filter((item) => {\n return !colors.find(propEq('entityUri', item));\n });\n\n return colors.map((item) => {\n return includes(item.entityUri, selectedEntitiesUris)\n ? item\n : {\n ...item,\n entityUri: entityUrisWithoutColors.shift()\n };\n });\n }\n },\n state\n );\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.ReactNode;\n};\nconst getInitialEntityColors = () => {\n return getPotentialMatchesColor().map((color) => ({\n entityUri: '',\n color\n }));\n};\nexport const ViewStateProvider = ({children}: 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 entityColors: getInitialEntityColors()\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 {\n attributeUriToSearchUri,\n getAttrDataTypeDefinition,\n getEntityAttributesFromMetadata,\n isNested,\n isReference,\n getLabel,\n getAllAttributeTypesTree,\n Metadata,\n TEntityType,\n AttributeNode\n} from '@reltio/mdm-sdk';\nimport {__, curry, either, filter, includes, map, partition, pipe, reject, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {MatchesColumnsData, GroupedColumnData} from '../types/potentialMatchesTypes';\n\ntype AttributeConfig = {\n title: string;\n fieldName: string;\n children?: AttributeConfig[];\n notSelectable?: boolean;\n};\n\nconst createAttributeItemConfig = (metadata: Metadata, attrNode: AttributeNode, 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: AttributeNode,\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, entityType?: TEntityType) =>\n entityType\n ? getAllAttributeTypesTree(metadata, entityType).map((attrNode) =>\n createAttributeItemConfig(metadata, attrNode)\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 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 i18n from 'ui-i18n';\nimport {any, equals, flatten, pipe, pluck, prop, values} from 'ramda';\nimport {DataTypes, MatchRulesAttrTypes, Metadata, SearchFilter, getEntityType} from '@reltio/mdm-sdk';\nimport {collectAttributeItems} from './attributesHelpers';\n\nexport const ROWS_PER_PAGE_OPTIONS = [20, 50, 100];\n\nexport const MATCHES_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\nexport const ADDITIONAL_SORT_OPTIONS_DATA = [\n {\n id: 'score',\n get label() {\n return i18n.text('Match score');\n }\n },\n {\n id: 'relevanceScores.relevance',\n get label() {\n return i18n.text('Relevance score');\n }\n },\n {\n id: 'relevanceScores.actionLabel',\n get label() {\n return i18n.text('Match action');\n }\n }\n];\n\nexport const 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 const getSortOptionIdFromData = pluck('id');\n\nexport const getSortingItemsGroups = (metadata: Metadata, entityTypeUri: string) => [\n {\n title: '',\n attributes: collectAttributeItems(metadata, getEntityType(metadata, entityTypeUri))\n }\n];\n\nexport const buildRulesStringFormFilters = (filters: SearchFilter[]): string =>\n flatten(filters.map(prop('values'))).join(',');\n\nexport const isMatchRuleFilter = ({fieldName}: SearchFilter): boolean => {\n return pipe(values, pluck('name'), any(equals(fieldName)))(MatchRulesAttrTypes);\n};\n","import {useReducer} from 'react';\nimport {useActions} from '@reltio/components';\nimport stateReducer, {actions} from './helpers/stateReducer';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {ROWS_PER_PAGE_OPTIONS} from '../helpers/sortHelpers';\n\nexport const useMatchesReducer = (defaultRowsPerPage: number = ROWS_PER_PAGE_OPTIONS[0]) => {\n const initState = {\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, getRequestErrorMessage, WorkflowApiError} 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: getRequestErrorMessage(error, i18n.text('Something went wrong...'))\n });\n};\n\nexport const showDCRReviewErrors = (apiError: WorkflowApiError) => {\n const error = apiError.error;\n\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 React, {forwardRef} from 'react';\nimport {ActionButtonMode, MergeButton as MergeButtonComponent, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\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 {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\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 {showApiError} from '../../utils/errors';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\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 {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(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 onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-not-match-button\"\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';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\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 {deselectByEntities} = useViewStateActions();\n\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n\n const [markingIsInProgress, setAMatch] = useSetAMatch({entity, entities, onSuccess});\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.displayName = 'SetAMatchButton';\n","import {useCallback} from 'react';\nimport {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {showApiError} from '../utils/errors';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n onSuccess?: () => void;\n};\n\nexport const useSetAMatch = ({entities, entity, onSuccess}: 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)\n .then(() => {\n onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [entities, entity, setGlobalSpinner, reloadData, onSuccess]);\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: \"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, 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 data-reltio-id=\"reltio-potential-matches-dcr-review-button\"\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 {showApiError} from '../utils/errors';\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 onSuccess?: () => void;\n};\n\nexport const useReinstateMatch = ({entities, entity, showSnackbarMessage, onSuccess}: 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 onSuccess?.();\n })\n .catch(showApiError)\n .finally(() => {\n setGlobalSpinner(false);\n reloadData();\n });\n }, [setGlobalSpinner, dtssPath, tenant, entity, entities, showSnackbarMessage, reloadData, onSuccess]);\n\n return [isGlobalSpinnerActive, onReinstateMatch];\n};\n","import React, {forwardRef, useContext} from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop, SnackbarContext} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\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 {deselectByEntities} = useViewStateActions();\n const onSuccess = () => {\n deselectByEntities(entities);\n };\n const [reinstateIsInProgress, onReinstateMatch] = useReinstateMatch({\n entity,\n entities,\n showSnackbarMessage,\n onSuccess\n });\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.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: \"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 i18n from 'ui-i18n';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport AddRelationIcon from './icons/addRelationship.svg';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n permission?: MatchesActionsPermissions;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules' | 'permission'>) => 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 permission,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules, permission});\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 '@mui/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: (field) => void;\n options: AttributeSelectorItemsGroup[];\n field?: string;\n};\n\nconst SortingFieldSelector = ({onChange, options, field}: Props) => {\n const styles = useStyles();\n const value = useMemo(() => {\n const path = field?.split('.');\n const sortLevel = path?.length;\n\n const findNode = (attributes: AttributeOption[]) => {\n const level = attributes[0].fieldName.split('.').length;\n if (level === sortLevel || (level === 1 && field.includes('relevanceScores.'))) {\n return attributes.find((attr) => attr.fieldName === field);\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 }, [field, 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 '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n position: 'relative',\n padding: '12px',\n alignSelf: 'baseline'\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 React, {useContext} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport {Order, SortingField} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItemsGroup, SidePanelContentHeader} from '@reltio/components';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport SortingFieldSelector from '../SortingFieldSelector';\nimport i18n from 'ui-i18n';\nimport ArrowIcon from '@mui/icons-material/ArrowUpward';\nimport classNames from 'classnames';\nimport IconButton from '@mui/material/IconButton';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n selectedCount: number;\n totalCount: number;\n totalOnPage: number;\n onSelect: () => void;\n sortOptions: AttributeSelectorItemsGroup[];\n onSorting?: (SortingField) => void;\n sorting: SortingField;\n children?: React.ReactNode;\n};\n\nconst RightSidePanelHeader = ({\n selectedCount,\n totalCount,\n onSelect,\n sortOptions,\n sorting,\n onSorting,\n totalOnPage,\n children\n}: Props) => {\n const styles = useStyles();\n\n const onChangeSortOrder = () => {\n onSorting({\n ...sorting,\n order: sorting.order === Order.asc ? Order.desc : Order.asc\n });\n };\n\n const onChangeSortField = (field) => {\n onSorting({\n ...sorting,\n field\n });\n };\n\n const sidePanelHeaderProps = useContext(RightSideHeaderContext);\n return (\n <>\n <SidePanelContentHeader\n {...sidePanelHeaderProps}\n secondTitle={!!totalCount && i18n.text('${n} Profiles', {n: totalCount})}\n />\n {children}\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\n field={sorting?.field}\n options={sortOptions}\n onChange={onChangeSortField}\n />\n <IconButton\n onClick={onChangeSortOrder}\n classes={{root: classNames(styles.arrow, {[styles.rotate]: sorting.order === Order.desc})}}\n size=\"large\"\n >\n <ArrowIcon />\n </IconButton>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default RightSidePanelHeader;\n","import {useMemo} from 'react';\nimport {getSortingItemsGroups} from '../helpers/sortHelpers';\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 {find, propEq} from 'ramda';\nimport {useViewState} from '../contexts/ViewStateContext';\n\nexport const useEntityColor = (entityUri: string) => {\n const {entityColors} = useViewState();\n\n const entityColor = find(propEq('entityUri', entityUri))(entityColors);\n return entityColor ? entityColor.color : '';\n};\n","import {makeStyles} from '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\n\nexport const useStyles = makeStyles((theme) => {\n return {\n hidden: {\n visibility: 'hidden'\n },\n rowCheckbox: {\n marginLeft: '-9px',\n marginRight: '9px',\n position: 'relative',\n padding: '9px',\n alignSelf: 'baseline'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n flex: 1\n },\n entityHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n whiteSpace: 'pre'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n display: 'flex',\n height: '17px'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\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 overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 2px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n '& $dividerWrapper:nth-child(2):not(:last-child)': {\n display: 'block'\n }\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n coloredRow: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '4px',\n height: '100%',\n borderRadius: '0px 4px 4px 0px',\n background: ({color}: StylesProps) => color\n }\n },\n matchScore: {\n paddingLeft: '12px',\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 tenantIcon: {\n marginLeft: '12px'\n },\n dividerWrapper: {\n display: 'none',\n marginLeft: '12px',\n alignSelf: 'stretch'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.12)'\n },\n relevanceBadge: {\n marginLeft: '12px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport Divider from '@mui/material/Divider';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n DataTenantBadge,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant,\n RelevanceScoreBadge\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 isDataTenantEntity,\n checkMatchRuleSummaryRelevance\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useEntityColor} from '../../hooks/useEntityColor';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n isColumnViewMode?: 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 isColumnViewMode,\n actionButtonsRenderer,\n metadata,\n entitiesMap = {}\n}: Props) => {\n const entity = match.object;\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\n const [openMenu, setOpenMenu] = useState(false);\n const onToggleSelect = () => toggleSelect(match);\n\n const isRowSelectable = entity !== entityToMatch;\n const Actions = actionButtonsRenderer;\n\n const showRelevanceBadge = match.matchRuleSummaries?.some(checkMatchRuleSummaryRelevance);\n\n return (\n <div\n className={classnames(styles.wrapper, COMMENTS_CONTAINER_VISIBILITY_AREA, {\n [styles.coloredRow]: isColumnViewMode && isRowSelected,\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 <div className={styles.entityHeader}>\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\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 <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n <div className={styles.dividerWrapper}>\n <Divider orientation=\"vertical\" className={styles.divider} />\n </div>\n {showRelevanceBadge && (\n <RelevanceScoreBadge\n className={styles.relevanceBadge}\n matchRuleSummaries={match.matchRuleSummaries}\n />\n )}\n {!showRelevanceBadge && !!match.matchScore && (\n <div className={styles.matchScore}>{match.matchScore}</div>\n )}\n {isDataTenantEntity(entity) && (\n <DataTenantBadge className={styles.tenantIcon} dataTenantId={entity.dataTenant} />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@mui/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 React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {ItemRenderer} from '../ItemRenderer';\nimport {useViewState} from '../../contexts/ViewStateContext';\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 isLoading: boolean;\n};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems,\n isLoading\n}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n return (\n <div className={styles.view}>\n {isLoading && <LinearLoadIndicator />}\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 isColumnViewMode={comparisonViewMode === ComparisonViewMode.COLUMNS}\n isRowSelected={selectedItems.some((item) => item.object.uri === match.object.uri)}\n />\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n padding: '8px 16px',\n gap: '8px',\n borderBottom: 'rgba(0,0,0,0.05) 1px solid'\n },\n inputRoot: {\n borderRadius: '4px'\n },\n menuButtonRoot: {\n padding: 0\n }\n});\n","import React, {memo, useCallback, useRef, useState} from 'react';\nimport {SearchInput, TenantsDropDownSelector} from '@reltio/components';\nimport {always, isEmpty, pipe, propEq, trim, when} from 'ramda';\nimport {DataTenant} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n onSearch: (searchText: string) => void;\n searchTenant: DataTenant;\n onChangeSearchTenant: (tenant: DataTenant) => void;\n entityTypeUri: string;\n};\n\nconst RightSideSearch = ({onSearch, searchTenant, onChangeSearchTenant, entityTypeUri}: 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 if (!onSearch) {\n return null;\n }\n\n return (\n <div className={styles.root}>\n <TenantsDropDownSelector\n entityTypeUri={entityTypeUri}\n selectedTenant={searchTenant}\n onChangeTenant={onChangeSearchTenant}\n />\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(RightSideSearch);\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 '@mui/icons-material/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 'data-reltio-id': 'reltio-potential-matches-actions-dropdown-menu-button'\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 {makeStyles} from '@mui/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 Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig,\n DataTenant,\n SortingField,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {identity, isEmpty, pathEq, prop} from 'ramda';\nimport React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useFindEntities} from '../../hooks/useFindEntities';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {MergeButton, NotMatchButton, SetAMatchButton} from '../Actions';\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport RightSideSearch from './RightSideSearch/RightSideSearch';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const FindMatchesView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\n const {uri: entityUri, type: entityType} = entity || {};\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const [searchText, setSearchText] = useState<string>('');\n const [searchTenant, setSearchTenant] = useState<DataTenant>(tenant);\n\n const handleChangeSearchTenant = useCallback(\n (newSearchTenant) => {\n setSearchTenant(newSearchTenant);\n changePage(0);\n },\n [changePage]\n );\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, loading} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage,\n searchTenantId: searchTenant.id\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(findEntities);\n return () => removeReloadHandler(findEntities);\n }, [findEntities, addReloadHandler, removeReloadHandler]);\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 useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n useDidUpdateEffect(() => {\n resetPage();\n }, [filters, searchText]);\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\n const entities = [hoveredMatch.object];\n const isDTEntity = isDataTenantEntity(hoveredMatch.object);\n const areBothEntitiesDT = isDTEntity && isDataTenantEntity(entity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\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: SetAMatchButton,\n show: canMark && !isDTEntity,\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={3}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, 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 onSorting={onSorting}\n onSelect={selectedCount ? resetSelected : selectAll}\n >\n <RightSideSearch\n searchTenant={searchTenant}\n onChangeSearchTenant={handleChangeSearchTenant}\n entityTypeUri={entityType}\n onSearch={setSearchText}\n />\n </RightSidePanelHeader>\n <MatchItems\n entityToMatch={entity}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={entities}\n metadata={metadata}\n selectedItems={selectedItems}\n isLoading={loading}\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 enrichEntityWithDataTenant,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotalFromDataTenant,\n getTotals,\n GlobalSearchRequestOptions,\n SearchFilter,\n SortingField\n} from '@reltio/mdm-sdk';\nimport {useCallback, useState, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {map} from 'ramda';\n\ntype Props = {\n entityType: string;\n filters: SearchFilter[];\n sorting: SortingField;\n page: number;\n rowsPerPage: number;\n enabled: boolean;\n searchTenantId: string;\n};\n\nexport const useFindEntities = ({entityType, filters, sorting, page, rowsPerPage, enabled, searchTenantId}: Props) => {\n const {order, field} = sorting;\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const tenant = useSelector(mdmModule.selectors.getTenantObject);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [loading, setLoading] = useState(false);\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 setLoading(true);\n const isDtss = searchTenantId !== tenant.id;\n const dtssProps = {\n customerTenant: tenant.id,\n dataTenant: searchTenantId,\n dtssPath\n };\n\n const entityRequestOptions = {\n offset: page * rowsPerPage,\n max: rowsPerPage,\n sort: field,\n order,\n select: DEFAULT_SELECTION.join(','),\n globalFilter,\n activityFilter\n };\n const entityRequest = isDtss\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: entityRequestOptions,\n ...dtssProps\n }).then(map(enrichEntityWithDataTenant(searchTenantId)))\n : getFilteredEntities(filters, entityRequestOptions);\n\n const totalRequestOption = {activityFilter, globalFilter};\n const totalRequest = isDtss\n ? getTotalFromDataTenant({\n filters,\n options: totalRequestOption,\n ...dtssProps\n })\n : getTotals(filters, totalRequestOption);\n\n safePromise(Promise.all([entityRequest, totalRequest]))\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(() => setLoading(false));\n }\n },\n [\n entityType,\n filterQuery,\n field,\n order,\n page,\n rowsPerPage,\n enabled,\n activityFilter,\n globalFilter,\n searchTenantId,\n tenant\n ] // eslint-disable-line\n );\n useEffect(() => {\n findEntities();\n }, [findEntities]);\n\n return {entities, total, findEntities, loading};\n};\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 {makeStyles} from '@mui/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 from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n Mode,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig,\n markAsNotMatch\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\nimport {useViewStateActions} from '../../contexts/ViewStateContext';\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 permission?: MatchesActionsPermissions;\n};\n\nconst AddRelationDialog = ({\n config,\n mainEntity,\n currentEntity,\n matchRules,\n open,\n onClose = identity,\n permission\n}: 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 {onFinishRequest} = useSpinnerAndReloadData();\n const {deselectByEntities} = useViewStateActions();\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(\n () => getRelationAttributesList(metadata, relationType),\n [relationType, 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 })\n .then(async () => {\n if (permission?.canMark) {\n await markAsNotMatch(currentEntity.uri, [mainEntity]);\n deselectByEntities([currentEntity]);\n onFinishRequest();\n }\n })\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: ['left', 'right', 'top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle 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={Mode.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 {profile} from '@reltio/mdm-module';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport {MatchesActionsPermissions} from '../types/potentialMatchesTypes';\n\ntype DialogContentProps = {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission?: MatchesActionsPermissions;\n};\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState<DialogContentProps>({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({mainEntity, currentEntity, matchRules, permission}: DialogContentProps) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules, permission});\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, 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","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: false\n};\n","import {makeStyles} from '@mui/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, useEffect, 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 useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\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 {CreateRelationButton, DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {\n ROWS_PER_PAGE_OPTIONS,\n MATCHES_SORT_OPTIONS,\n ADDITIONAL_SORT_OPTIONS_DATA,\n isMatchRuleFilter,\n buildRulesStringFormFilters\n} from '../../helpers/sortHelpers';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\n\nimport RightSidePanelHeader from '../RightSidePanelHeader';\nimport {useSortOptions} from '../../hooks/useSortOptions';\nimport {MatchItems} from '../MatchItems';\nimport {ActionButtonRendererProps, MatchesOptions} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n config: PotentialMatchesPerspectiveConfig;\n};\n\nconst MatchesView = memo(\n ({entity, metadata, filters, options = DEFAULT_OPTIONS, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, selectedItems, isGlobalSpinnerActive} = state;\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(MATCHES_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 matchesFilter = useMemo((): string => buildFilterQueryString()(regularFilters), [regularFilters]);\n\n const {matches, total, entitiesMap, loadMatches, loading} = useMatches({\n enabled: !!entityUri,\n entity,\n filter: matchesFilter,\n page,\n sorting,\n rowsPerPage,\n options,\n rules: buildRulesStringFormFilters(matchRulesFilters)\n });\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadMatches);\n return () => removeReloadHandler(loadMatches);\n }, [loadMatches, addReloadHandler, removeReloadHandler]);\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(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const {canMerge, canAddRelation, canMark} = permission;\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\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 permission\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 <CollaborationContextProvider collaboration={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 onSorting={onSorting}\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 isLoading={loading}\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 </CollaborationContextProvider>\n );\n }\n);\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useCallback, useEffect, useState} from 'react';\nimport {useMatchesLoader} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {Entity, SortingField} 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?: SortingField;\n rules?: string;\n};\n\nexport const useMatches = ({entity, filter, rules, sorting, page, rowsPerPage, options, enabled}: Params) => {\n const {setEntitiesMap} = useViewStateActions();\n const [loading, setLoading] = useState(false);\n const onStartLoading = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n const onFinishLoading = useCallback(() => {\n setLoading(false);\n }, [setLoading]);\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, loading};\n};\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 SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: SortingField;\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\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 setLoading(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(() => setLoading(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, loading};\n};\n","import {makeStyles} from '@mui/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, useEffect, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n useCollaboration,\n EntitiesMapContext,\n CollaborationContextProvider\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\nimport {useMatchesReducer} from '../../hooks/useMatchesReducer';\nimport {useNotMatches} from '../../hooks/useNotMatches';\nimport {DCRReviewButton, MergeButton, ReinstateMatchButton} from '../Actions';\nimport {ROWS_PER_PAGE_OPTIONS, DEFAULT_SORT_OPTIONS} from '../../helpers/sortHelpers';\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\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n config: PotentialMatchesPerspectiveConfig;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n};\n\nexport const NotMatchView = memo(({entity, metadata, filters, sorting, onSorting, config}: Props) => {\n const styles = useStyles();\n const [actions, state] = useMatchesReducer();\n const {changeRowsPerPage, changePage, setSelectedItems, toggleSelect} = actions;\n const {page, rowsPerPage, 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, loading} = useNotMatches({\n enabled: !!entityUri,\n entityUri,\n filter: buildFilterQueryString()(filters),\n page,\n rowsPerPage,\n sorting\n });\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, entitiesMap]\n );\n const collaboration = useCollaboration({objectIds});\n\n const sortOptions = useSortOptions(DEFAULT_SORT_OPTIONS, [], metadata, entityType);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n addReloadHandler(loadNotMatches);\n return () => removeReloadHandler(loadNotMatches);\n }, [loadNotMatches, addReloadHandler, removeReloadHandler]);\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 const areBothEntitiesDT = [...entities, entity].every(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT,\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 <CollaborationContextProvider collaboration={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 onSorting={onSorting}\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 isLoading={loading}\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 </CollaborationContextProvider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\nimport {MatchesOptions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n filters: SearchFilter[];\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n activeView: ActivePanel;\n config: PotentialMatchesPerspectiveConfig;\n options?: MatchesOptions;\n};\n\nexport const Content = ({entity, metadata, filters, options, sorting, onSorting, config, activeView}: Props) => {\n const render = () => {\n switch (activeView) {\n case ActivePanel.PotentialMatches:\n return (\n <MatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n options={options}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.FindMatches:\n return (\n <FindMatchesView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n case ActivePanel.NotAMatch:\n return (\n <NotMatchView\n entity={entity}\n metadata={metadata}\n filters={filters}\n config={config}\n sorting={sorting}\n onSorting={onSorting}\n />\n );\n default:\n return <div />;\n }\n };\n\n return render();\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n width: '100%',\n height: '100%',\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useMemo, memo} from 'react';\nimport {isNil} from 'ramda';\nimport {useSelector} from 'react-redux';\n\nimport {SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {PMRightPanelTabs} from '../../PotentialMatchesView';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n active?: number;\n tabs: PMRightPanelTabs;\n config?: PotentialMatchesPerspectiveConfig;\n onClose?: () => void;\n};\n\nexport const RightSidePanel = memo(({active, tabs, onClose, config}: Props) => {\n const styles = useStyles();\n\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n\n const isOpen = !isNil(active);\n const headerProps = useMemo(() => ({...tabs[active]?.headerProps, onClose}), [onClose, active, tabs]);\n\n const {sorting, filters, options, onSorting} = tabs[active] || {};\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n options={options}\n sorting={sorting}\n onSorting={onSorting}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n '&.MuiButtonGroup-grouped': {\n minWidth: '90px',\n padding: '8px 12px'\n }\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@mui/icons-material/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@mui/icons-material/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 '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\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 clearAllButton: {\n marginLeft: '16px'\n },\n mergeButton: {\n marginRight: '12px'\n },\n total: {\n marginLeft: '8px',\n fontSize: '14px',\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 overflow: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\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 {\n BasicViewHeader,\n ColumnsSettings,\n DropDownMenuItem,\n ExpandedValueTooltip,\n SettingsMenu,\n Spacer\n} from '@reltio/components';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\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';\n\nimport {useStyles} from './styles';\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 {canMerge, canMark} = getActionPermissionForMatches(metadata, config, entity, selectedItems);\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n const hideMerge = entities.some(isDataTenantEntity) && isDataTenantEntity(entity);\n\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge && !hideMerge,\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, hideMerge]\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 text: i18n.text('Show only OV'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader\n title={i18n.text('Match Review')}\n classes={{root: styles.header}}\n data-reltio-id=\"reltio-potential-matches-table-header\"\n >\n {hasSelectedItems ? (\n <>\n <span className={styles.total}>\n ({selectedItems.length}\n {limitSelection && '/' + limitSelection})\n </span>\n <Button onClick={handleClearSelection} className={styles.clearAllButton} color=\"primary\">\n <ExpandedValueTooltip value={i18n.text('Clear All')}>\n <span className={styles.overflow}>{i18n.text('Clear All')}</span>\n </ExpandedValueTooltip>\n </Button>\n <Spacer />\n <ActionsPanel actions={actions} numberOfButtons={2} />\n <Divider orientation={'vertical'} classes={{vertical: styles.actionSplitter}} />\n </>\n ) : (\n <Spacer />\n )}\n <SettingsMenu items={settingItems} menuId=\"matches-view-settings\" />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <Divider orientation=\"vertical\" classes={{vertical: styles.splitter}} />\n <ComparisonViewModeSwitcher />\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 '@mui/styles';\n\nexport const matchedAttributeBackground = 'rgba(140, 193, 82, 0.12)';\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 position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: '-1000px',\n top: 0,\n width: '5000px',\n height: '100%',\n background: matchedAttributeBackground,\n pointerEvents: 'none'\n }\n }\n});\n","import {makeStyles} from '@mui/styles';\nimport {matchedAttributeBackground} from '../styles';\n\nexport const useStyles = makeStyles({\n badge: {\n borderRadius: '50%',\n background: matchedAttributeBackground,\n fontWeight: 500,\n height: '20px',\n width: '20px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'flex-start',\n marginBottom: '2px',\n marginTop: '-2px'\n }\n});\n","import React, {useContext} from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport {areOneHierarchyUris, ComplexAttributeValue} from '@reltio/mdm-sdk';\nimport {HighlightedValuesContext} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: ComplexAttributeValue;\n};\n\nconst MatchedValuesCounter = ({attributeValue}: Props) => {\n const styles = useStyles();\n const {highlightedValuesUris = []} = useContext(HighlightedValuesContext);\n const count = highlightedValuesUris.filter((uri) => areOneHierarchyUris(uri, attributeValue.uri)).length;\n return count > 0 ? (\n <Tooltip title={count === 1 ? i18n.text('${count} match', {count}) : i18n.text('${count} matches', {count})}>\n <div className={styles.badge}>{count}</div>\n </Tooltip>\n ) : null;\n};\n\nexport default MatchedValuesCounter;\n","import React, {useMemo} from 'react';\nimport {HighlightedValuesContext, ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {AttributeType, AttributeValue} from '@reltio/mdm-sdk';\nimport withExpanded from '../withExpanded';\nimport MatchedValuesCounter from './MatchedValuesCounter/MatchedValuesCounter';\n\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 RightSlot={MatchedValuesCounter}\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 '@mui/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 '@mui/icons-material/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, NOT_MATCH} from '@reltio/mdm-sdk';\nimport {\n CreateRelationButton,\n DCRReviewButton,\n MergeButton,\n NotMatchButton,\n ReinstateMatchButton,\n SetAMatchButton\n} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport {MatchesActionsPermissions} from '../../types/potentialMatchesTypes';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: MatchesActionsPermissions;\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n permission: MatchesActionsPermissions;\n }) => 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 const areBothEntitiesDT = [mainEntity, entity].every(isDataTenantEntity);\n\n const isEntityFindMatch = !matchRules;\n const isEntityNotMatch = !isEntityFindMatch && matchRules.includes(NOT_MATCH);\n const isEntityPotentialMatch = !isEntityNotMatch && !isEntityFindMatch;\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge && !areBothEntitiesDT && (isEntityNotMatch || isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark && (isEntityPotentialMatch || isEntityFindMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark && isEntityNotMatch,\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && (isEntityNotMatch || isEntityPotentialMatch),\n props: {\n entity: mainEntity,\n entities: [entity]\n }\n },\n {\n ActionButton: SetAMatchButton,\n show: canMark && isEntityFindMatch && !isDataTenantEntity(entity),\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 permission\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n numberOfButtons={2}\n mode={mode}\n actionButtonSize={mode === 'hover' ? 'XS' : undefined}\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 '@mui/styles';\n\ntype StylesProps = {\n color?: string;\n};\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 colored: {\n '&:before': {\n content: '\"\"',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: '100%',\n height: '4px',\n background: ({color}: StylesProps) => color\n }\n },\n removeButton: {\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","export const POTENTIAL_MATCH_REVIEW = 'potentialMatchReview';\n","import {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {allPass, includes, map, mergeLeft, propEq, propSatisfies, when} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, Match, WorkflowTaskData} from '@reltio/mdm-sdk';\nimport {useSafePromise, useWorkflowDefaultActionSuccessHandler} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\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 defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\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 .catch((error) => {\n console.warn('Workflow error:', error);\n setTasks([]);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n\n const updateTaskState = useCallback((taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => {\n setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));\n }, []);\n\n const {deselectByEntities} = useViewStateActions();\n const onActionSuccess = useCallback(\n (action: string) => {\n defaultActionSuccessHandler(action);\n deselectByEntities([match.object]);\n },\n [defaultActionSuccessHandler, deselectByEntities, match.object]\n );\n\n return {\n loading: requestIsInProgress,\n tasks,\n loadTasks,\n updateTaskState,\n total: tasks.length,\n onActionSuccess\n };\n};\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 '@mui/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 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 {pick} from 'ramda';\nimport {\n AssigneeSelector,\n PotentialMatchReviewCard,\n TaskActions,\n WorkflowComments,\n WorkflowTasksContext,\n useWorkflowActions\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, Match, WorkflowTaskData} 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 workflowTasks = useWorkflowTasks({entity, match});\n const {tasks, loadTasks} = workflowTasks;\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\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: workflowActions, actionRequestIsInProgress} = useWorkflowActions({\n taskId: task?.taskId,\n possibleActions: task?.possibleActions,\n assignee: task?.assignee,\n isOpen: task?.isOpen\n });\n const Actions = task && <TaskActions actions={workflowActions} isInProgress={actionRequestIsInProgress} />;\n return task ? (\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <AssigneeSelector assignee={task.assignee} taskId={task.taskId} isTaskOpen={task.isOpen} />\n </div>\n <WorkflowComments\n {...getCommentsInfoFromTasks(task)}\n workflowActions={workflowActions}\n actionRequestIsInProgress={actionRequestIsInProgress}\n preferredAction={task.preferredAction}\n />\n </PotentialMatchReviewCard>\n </div>\n </WorkflowTasksContext.Provider>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\nimport {MatchesColumnsData} from '../types/potentialMatchesTypes';\n\nexport const DEFAULT_ROWS: MatchesColumnsData[] = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n draggable: 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 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, ComparisonViewMode.COLUMNS]\n },\n {\n id: 'relevanceScore',\n label: i18n.text('Relevance score'),\n initialWidth: 130,\n minWidth: 130,\n modes: [ComparisonViewMode.TABLE, ComparisonViewMode.COLUMNS]\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 '@mui/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 {ColoredSourceIcon} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\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 '@mui/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, {ReactNode} from 'react';\nimport {Entity, isDataTenantEntity as checkIsDataTenantEntity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {DataTenantBadge, ColoredSourceIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Pick<Entity, 'crosswalks' | 'dataTenant'>;\n children?: ReactNode;\n};\n\nconst SourcesRenderer = ({value, children}: Props) => {\n const {crosswalks, dataTenant} = value;\n const styles = useStyles();\n const isDataTenantEntity = checkIsDataTenantEntity(value);\n\n return isDataTenantEntity || !isEmptyValue(crosswalks) ? (\n <div className={styles.wrapper}>\n {children}\n {crosswalks.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n {isDataTenantEntity && <DataTenantBadge dataTenantId={dataTenant} />}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n inline: {\n display: 'inline-flex'\n }\n});\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport {RelevanceScoreBadge} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: MatchRuleSummary[] | undefined;\n};\n\nconst RelevanceScoreRenderer = ({value: matchRuleSummaries}: Props) => {\n const styles = useStyles();\n return <RelevanceScoreBadge className={styles.inline} matchRuleSummaries={matchRuleSummaries} />;\n};\n\nexport default RelevanceScoreRenderer;\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';\nimport RelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\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 score: {\n headCellRenderer: HeadCellRenderer\n },\n relevanceScore: {\n headCellRenderer: HeadCellRenderer,\n cellRenderer: RelevanceScoreRenderer\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, matchScore, matchRuleSummaries} = match;\n switch (rowData.id) {\n case 'entityId':\n return getEntityId(object);\n case 'profile':\n return {\n mainEntity: entity,\n isSelectedEntity: !isMainEntity,\n onRemove: () => onRemoveItem(match),\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;\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 case 'score':\n return matchScore || 0;\n case 'relevanceScore':\n return matchRuleSummaries;\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, {useContext, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {ProfileCard, SmallIconButton} from '@reltio/components';\nimport {Entity, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useEntityColor} from '../../../../hooks/useEntityColor';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\nimport {MatchesActionsPermissions} from '../../../../types/potentialMatchesTypes';\nimport useStyles from './styles';\n\ntype Props = {\n value: {\n onRemove?: () => void;\n isSelectedEntity?: boolean;\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n config: PotentialMatchesPerspectiveConfig;\n permission: MatchesActionsPermissions;\n };\n};\n\nconst EntityCard = ({value: {entity, config, isSelectedEntity, onRemove, ...rest}}: Props) => {\n const color = useEntityColor(entity.uri);\n const styles = useStyles({color});\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\n className={classnames(styles.container, {\n [styles.hovered]: isSelectedEntity && isHovered,\n [styles.colored]: isSelectedEntity\n })}\n >\n {isSelectedEntity && (\n <SmallIconButton className={styles.removeButton} icon={CloseIcon} onClick={onRemove} size=\"XXS\" />\n )}\n <ProfileCard entity={entity} />\n {isSelectedEntity && (\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 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 from '@mui/material/Popover';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\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(\n () => getAdditionalRows(groupColumnsData, selectedAttributes),\n [groupColumnsData, 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 '@mui/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;\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 // 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 // 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, useEffect} 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 selectedColumns: Match[];\n setSelectedColumns: (items: Match[]) => void;\n selectedRows: string[];\n setSelectedRows: (items: string[]) => void;\n rowsData: 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 selectedColumns,\n setSelectedColumns,\n selectedRows,\n setSelectedRows,\n entitiesMap = {},\n rowsData: allRowsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [localSelectedRows, setLocalSelectedRows] = useState(selectedRows);\n const [localSelectedColumns, setLocalSelectedColumns] = useState(selectedColumns);\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n useEffect(() => {\n setLocalSelectedRows(selectedRows);\n }, [selectedRows]);\n\n useEffect(() => {\n setLocalSelectedColumns(selectedColumns);\n }, [selectedColumns]);\n\n const matches = useMemo(() => localSelectedColumns.slice(-4), [localSelectedColumns]);\n const selectedRowsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(localSelectedRows),\n [localSelectedRows]\n );\n\n const rowsData = useMemo(\n () => getTableRowsData(metadata, entity, selectedRowsWithoutSubAttributes),\n [metadata, entity, selectedRowsWithoutSubAttributes]\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 )(localSelectedRows);\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 setLocalSelectedRows(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = localSelectedColumns.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = localSelectedColumns.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = localSelectedColumns[dragIndex];\n if (dragColumn) {\n setLocalSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(localSelectedColumns));\n }\n };\n\n const handleDropRow = () => {\n setSelectedRows(localSelectedRows);\n };\n\n const handleDropColumn = () => {\n setSelectedColumns(localSelectedColumns);\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 data-reltio-id=\"reltio-comparison-table-container\" 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={1}\n onMoveRow={handleMoveRow}\n onDropRow={handleDropRow}\n onMoveColumn={handleMoveColumn}\n onDropColumn={handleDropColumn}\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={setSelectedRows}\n groupColumnsData={allRowsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@mui/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 selectedRows: string[];\n setSelectedRows: (newRows: string[]) => void;\n selectedColumns: Match[];\n setSelectedColumns: (newColumns: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n rowsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedRows,\n setSelectedRows,\n selectedColumns,\n setSelectedColumns,\n config,\n metadata,\n entity,\n entitiesMap = {},\n rowsData,\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 selectedRows={selectedRows}\n setSelectedRows={setSelectedRows}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n rowsData={rowsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {alpha, lighten} from '@mui/material/styles';\nimport {makeStyles} from '@mui/styles';\nimport {CSSProperties} from '@mui/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, ${alpha(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${alpha(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 '&::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: '15px 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 paddingTop: 0,\n '&:last-child': {\n paddingBottom: 0\n }\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 dragIndicator: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n cursor: 'grab'\n },\n dragIndicatorIcon: {\n opacity: 0.38\n },\n ovFalse: theme.inactive,\n expandButton: {\n marginRight: '5px',\n marginBottom: '8px'\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 classnames from 'classnames';\nimport {AttributeValue, DataTypes} from '@reltio/mdm-sdk';\nimport {DataTypeValue} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: AttributeValue;\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const {value: simpleValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.defaultWrapper, {[styles.ovFalse]: ov === false})}>\n <DataTypeValue value={simpleValue} 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 '@mui/icons-material/DragIndicator';\nimport CloseIcon from '@mui/icons-material/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 dragRef?: React.Ref<HTMLDivElement>;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex,\n dragRef\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 <div ref={dragRef} style={{opacity: isRowHovered ? 1 : 0}} className={styles.dragIndicator}>\n <DragIndicatorIcon className={styles.dragIndicatorIcon} />\n </div>\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 classnames from 'classnames';\nimport {stopPropagation} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {value: string; ov: boolean};\n};\n\nconst BlobRenderer = ({value}: Props) => {\n const {value: blobValue, ov} = value;\n const styles = useStyles();\n return (\n <div className={classnames(styles.blobWrapper, {[styles.ovFalse]: ov === false})} onScroll={stopPropagation}>\n {blobValue}\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: {value: BasicImageAttributesValue; ov: boolean};\n};\n\nconst ImageRenderer = ({value}: Props) => {\n const {value: imgValue} = value;\n const styles = useStyles();\n const src = getImageAttributeOvThumbnailUrl({value: imgValue});\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\n className={classnames(styles.defaultWrapper, styles.referenceWrapper, {\n [styles.ovFalse]: value.ov === false\n })}\n >\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 {useBasicTableCellRenderer} from '@reltio/components';\n\nexport const EntityRowCollapseContext =\n React.createContext<ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue']>(null);\n\nEntityRowCollapseContext.displayName = 'EntityRowCollapseContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n chipContainer: {\n position: 'absolute',\n height: '16px',\n top: '6px',\n right: '6px',\n zIndex: 2,\n backgroundColor: 'white'\n },\n chipLabel: {\n paddingLeft: '4px',\n paddingRight: '4px',\n fontSize: '10px'\n }\n});\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {BasicTableRowCollapseContext, withTooltip} from '@reltio/components';\nimport {find, pipe, prop, propEq} from 'ramda';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport Chip from '@mui/material/Chip';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n needShowChip: boolean;\n crosswalks: Crosswalk[];\n dataTenant?: string;\n};\n\nconst SourceChipWithTooltip = ({needShowChip, crosswalks, dataTenant}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n const dataTenants = useSelector(mdm.selectors.getDataTenants) || [];\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = (\n <>\n {crosswalks.slice(collapseContext.maxRowValuesCount).map((crosswalk, index) => {\n return <div key={index}>-{getSourceSystemLabel(metadata, crosswalk.type)}</div>;\n })}\n {dataTenant ? <div>-{pipe(find(propEq('id', dataTenant)), prop('label'))(dataTenants)}</div> : null}\n </>\n );\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${crosswalks.length + (dataTenant ? 1 : 0) - collapseContext.maxRowValuesCount}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default SourceChipWithTooltip;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport {always, slice, when} from 'ramda';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport {ArrowExpandButton, BasicTableRowCollapseContext} from '@reltio/components';\n\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {EntityRowCollapseContext} from '../EntityRowCollapseContext';\nimport SourceChipWithTooltip from './components/SourceChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n dataTenant?: string;\n };\n};\n\nconst SourcesRenderer = ({value: {crosswalks, dataTenant}}: Props) => {\n const styles = useStyles();\n const [collapsed, setCollapsed] = useState(true);\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n\n const toggleCollapsed = useCallback(() => {\n setCollapsed((prev) => !prev);\n }, []);\n\n const displayedCrosswalks: Crosswalk[] = useMemo(\n () => when(always(collapsed), slice(0, collapseContext.maxRowValuesCount))(crosswalks),\n [collapsed, collapseContext.maxRowValuesCount, crosswalks]\n );\n const isShowDataTenant = !collapsed || displayedCrosswalks.length < collapseContext.maxRowValuesCount;\n\n const sources = useMemo(\n () => ({\n crosswalks: displayedCrosswalks,\n dataTenant: isShowDataTenant ? dataTenant : undefined\n }),\n [dataTenant, displayedCrosswalks, isShowDataTenant]\n );\n\n const valuesCount = crosswalks.length + (dataTenant ? 1 : 0);\n const hasCollapsedValue = valuesCount > collapseContext.maxRowValuesCount;\n\n const needShowChip = collapsed && hasCollapsedValue;\n\n return (\n <>\n <CommonSourcesRenderer value={sources}>\n {hasCollapsedValue && (\n <ArrowExpandButton\n className={styles.expandButton}\n expanded={!collapsed}\n onClick={toggleCollapsed}\n />\n )}\n </CommonSourcesRenderer>\n <SourceChipWithTooltip needShowChip={needShowChip} crosswalks={crosswalks} dataTenant={dataTenant} />\n </>\n );\n};\n\nexport default SourcesRenderer;\n","import React from 'react';\nimport {MatchRuleSummary} from '@reltio/mdm-sdk';\nimport CommonRelevanceScoreRenderer from '../../cell-renderers/RelevanceScoreRenderer/RelevanceScoreRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n matchRuleSummaries: MatchRuleSummary[] | undefined;\n };\n};\n\nconst RelevanceScoreRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonRelevanceScoreRenderer value={value.matchRuleSummaries} />\n </div>\n );\n};\n\nexport default RelevanceScoreRenderer;\n","import {assoc, map, pipe, prop, propOr, reduce, split, filter, ifElse, always} from 'ramda';\nimport {\n DataTypes,\n EntitiesMap,\n Entity,\n getAttributesForMatchRules,\n getEntityId,\n isAttributeSearchUri,\n Metadata,\n Match,\n getAttributeValuesByPathWithOvFlag,\n getOvAttributeValuesByPathWithOvFlag,\n isDataTenantEntity,\n Crosswalk\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';\nimport RelevanceScoreRenderer from './cell-renderers/RelevanceScoreRenderer';\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 showNonOv\n) => {\n switch (columnData.id) {\n case 'profile':\n return entity;\n case 'entityId':\n return {value: getEntityId(entity)};\n case 'matchRules':\n return {metadata, match, entitiesMap, entity, variant: 'all'};\n case 'score':\n return {value: matchScore};\n case 'sources': {\n const crosswalks: Crosswalk[] = propOr([], 'crosswalks', entity);\n return isDataTenantEntity(entity)\n ? {\n crosswalks,\n dataTenant: entity.dataTenant\n }\n : {\n crosswalks\n };\n }\n case 'relevanceScore':\n return {matchRuleSummaries: match.matchRuleSummaries};\n default: {\n const [attrSource, ...attrPath]: string[] = getAttrPathFromColumnId(columnData.id);\n return pipe(\n prop(attrSource),\n ifElse(\n always(showNonOv),\n getAttributeValuesByPathWithOvFlag(attrPath),\n getOvAttributeValuesByPathWithOvFlag(attrPath)\n )\n )(entity);\n }\n }\n};\n\nconst getBasicTableRowsData = (\n metadata: Metadata,\n columnsData: MatchesColumnsData[],\n matches: Match[],\n showNonOv: boolean,\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(\n (acc, columnData) => assoc(columnData.id, getRowValueForColumn(columnData, rowValue, showNonOv), acc),\n {}\n ),\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 case 'relevanceScore': {\n return RelevanceScoreRenderer;\n }\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 draggable: propOr(true, 'draggable')(columnData)\n }))\n )(columnData);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import React, {useContext} from 'react';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../../../types/potentialMatchesTypes';\nimport {BasicTableRowCollapseContext, DataTypeValue, withTooltip} from '@reltio/components';\nimport {EntityRowCollapseContext} from '../../EntityRowCollapseContext';\nimport {\n AttributeValue,\n getAttributeValue,\n getLabel,\n isComplexAttribute,\n NestedAttributeValue,\n ReferenceAttributeValue,\n wrapInArrayIfNeeded\n} from '@reltio/mdm-sdk';\nimport Chip from '@mui/material/Chip';\n\nimport {useStyles} from './styles';\n\nconst ChipWithTooltip = withTooltip(Chip);\n\ntype Props = {\n columnData: MatchesColumnsData;\n rowValue: MatchesTableRowValue;\n cellIndex: number;\n rowIndex: number;\n};\n\nconst RowCellChipWithTooltip = ({columnData, rowValue, cellIndex, rowIndex}: Props) => {\n const styles = useStyles();\n\n const basicTableRowCollapseContext = useContext(BasicTableRowCollapseContext);\n const entityRowCollapseContext = useContext(EntityRowCollapseContext);\n const collapseContext = entityRowCollapseContext || basicTableRowCollapseContext;\n const maxRowValuesCount: number = collapseContext?.maxRowValuesCount;\n\n const isAttributeCell = columnData.id.startsWith('attributes.');\n const columnId = columnData.id as `attributes.${string}`;\n const allValues = isAttributeCell ? rowValue[columnId] : [];\n const hiddenValues = allValues\n .reduce((acc: Array<AttributeValue | AttributeValue[]>, value, index) => {\n if (index >= maxRowValuesCount) {\n acc.push(value);\n } else if (Array.isArray(value) && value.length > maxRowValuesCount) {\n acc.push(value.slice(maxRowValuesCount));\n }\n return acc;\n }, [])\n .flat();\n\n const needShowChip =\n isAttributeCell && cellIndex === 0 && hiddenValues.length > 0 && collapseContext?.getIsRowCollapsed(rowIndex);\n\n if (!needShowChip) {\n return null;\n }\n\n const tooltipTitle = hiddenValues.map((value, i) => (\n <div key={i}>\n {isComplexAttribute(columnData.dataTypeDefinition)\n ? getLabel((value as NestedAttributeValue | ReferenceAttributeValue).label)\n : wrapInArrayIfNeeded(value).map((value, index) => (\n <DataTypeValue\n key={index}\n value={getAttributeValue(value)}\n dataTypeDefinition={columnData.dataTypeDefinition}\n rich={false}\n />\n ))}\n </div>\n ));\n\n return (\n <ChipWithTooltip\n tooltipTitle={tooltipTitle}\n label={`+ ${hiddenValues.length}`}\n variant=\"outlined\"\n classes={{\n root: styles.chipContainer,\n label: styles.chipLabel\n }}\n />\n );\n};\n\nexport default RowCellChipWithTooltip;\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 RowCellChipWithTooltip from './components/RowCellChipWithTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n cellWrapperClassName: string;\n someRowIsDragging?: boolean;\n isDragLayer?: boolean;\n dragRef?: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n cellWrapperClassName,\n someRowIsDragging,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n const shouldRenderCell = !someRowIsDragging || isFirstColumn;\n const {cellIndex, columnData, rowIndex} = otherProps;\n\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 cellWrapperClassName\n )}\n >\n {shouldRenderCell && (\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 <RowCellChipWithTooltip\n cellIndex={cellIndex}\n rowIndex={rowIndex}\n rowValue={rowValue}\n columnData={columnData}\n />\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} from '@mui/material/styles';\n\nimport {makeStyles} from '@mui/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 dragColumnHead: {\n '& #headCell': {\n border: '1px solid',\n borderColor: theme.palette.primary.main\n },\n '& #entityCell': {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n }\n },\n dragColumnBody: {\n borderLeft: '1px solid',\n borderRight: '1px solid',\n borderLeftColor: theme.palette.primary.main,\n borderRightColor: theme.palette.primary.main\n },\n sourcesCell: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '15px',\n columnGap: '5px',\n rowGap: '8px',\n alignItems: 'center'\n }\n}));\n","import React from 'react';\nimport RowCellRenderer from './RowCellRenderer';\nimport {RowCellAutoSizer} from '@reltio/components';\nimport {RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from '../styles';\n\ntype RowCellAutoSizerProps = React.ComponentProps<typeof RowCellAutoSizer>;\n\ntype Props = {\n changeRowCellHeight: RowCellAutoSizerProps['onChangeHeight'];\n basicTableRef?: React.Ref<HTMLElement>;\n hoveredRowRightContent?: React.ReactNode;\n hoverRowIndex?: number;\n someRowIsDragging?: boolean;\n dragRef?: boolean;\n isDragLayer?: boolean;\n} & RowCellRendererProps;\n\nexport const CommonRowCellRenderer = ({\n hoverRowIndex,\n hoveredRowRightContent,\n basicTableRef,\n changeRowCellHeight,\n ...props\n}: Props) => {\n const styles = useStyles();\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 case 'sources':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer cellWrapperClassName={styles.sourcesCell} {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\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 CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight,\n BasicTableCellRenderer as EntityCellRenderer\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 {CommonRowCellRenderer} from './cell-renderers/CommonRowCellRenderer';\nimport {\n MatchesColumnsData,\n RowCellRendererProps,\n MatchesTableContextProps,\n MatchesTableRowValue,\n GetRowCellKeyProps\n} 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 onReorderingColumn: (what, where) => void;\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 showNonOv: boolean;\n};\n\nconst getIdFromRowValue = (rowValue: MatchesTableRowValue) => rowValue.profile.uri;\n\nconst getRowCellKey = ({columnData: {id}, cellIndex, rowValue}: GetRowCellKeyProps) =>\n `${id}[${getIdFromRowValue(rowValue)}][${cellIndex}]`;\n\nconst MatchesTable = ({\n entity,\n matches,\n metadata,\n columnsData,\n onReorderingColumn,\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 showNonOv\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(\n () => getBasicTableRowsData(metadata, columnsData, orderedMatches, showNonOv, entitiesMap),\n [metadata, columnsData, orderedMatches, showNonOv, 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}], showNonOv) : []),\n [entity, metadata, columnsData, showNonOv]\n );\n\n const onDndColumnReorder = useCallback(\n ({what, where}) => {\n const oldPositionId = tableColumnsData[what.columnIndex].id;\n const newPositionId = tableColumnsData[where.columnIndex].id;\n onReorderingColumn(oldPositionId, newPositionId);\n },\n [tableColumnsData]\n );\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(getRowCellKey);\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 return (\n <CommonRowCellRenderer\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n basicTableRef={basicTableRef}\n changeRowCellHeight={changeRowCellHeight}\n {...props}\n />\n );\n },\n [hoverRowIndex, hoveredRowRightContent, basicTableRef, changeRowCellHeight]\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 dragColumnHead: styles.dragColumnHead,\n dragColumnBody: styles.dragColumnBody\n }),\n [styles]\n );\n\n const {\n getDynamicRowCellHeight: getDynamicEntityCellHeight,\n changeRowCellHeight: changeEntityCellHeight,\n clearHeightsCache: clearEntityHeightsCache\n } = useDynamicRowCellHeight(getRowCellKey);\n\n const renderEntityCell = useCallback(\n (props: RowCellRendererProps) => {\n return <CommonRowCellRenderer changeRowCellHeight={changeEntityCellHeight} {...props} />;\n },\n [changeEntityCellHeight]\n );\n\n const getEntityCellHeight = useCallback(either(getDynamicEntityCellHeight, defaultGetRowCellHeight), [\n getDynamicEntityCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const {\n getRowHeight,\n getHeightForSubRow,\n tableRowsData: entityTableRowsData,\n collapseContextValue: entityRowCollapseContext\n } = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT,\n getRowCellHeight: getEntityCellHeight,\n renderRowCell: renderEntityCell,\n getIdFromRowValue\n });\n\n const entityRowHeight = getRowHeight(entity?.uri);\n\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(\n EntityCellRenderer,\n entityRowCollapseContext,\n getHeightForSubRow,\n entityTableRowsData,\n getRowHeight,\n tableColumnsData\n );\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [entityRowCollapseContext, getHeightForSubRow, entityTableRowsData, getRowHeight, tableColumnsData]);\n\n useLayoutEffect(() => {\n clearHeightsCache();\n clearEntityHeightsCache();\n }, [clearEntityHeightsCache, clearHeightsCache, entity?.uri]);\n\n return (\n <div data-reltio-id=\"reltio-matches-table-container\" 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 getIdFromRowValue={getIdFromRowValue}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n dndColumnReorderingEnabled\n dndColumnReorderingHandler={onDndColumnReorder}\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, useBasicTableCellRenderer} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue =\n (\n EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element,\n entityRowCollapseContext: ReturnType<typeof useBasicTableCellRenderer>['collapseContextValue'],\n getHeightForSubRow,\n tableRowsData,\n getRowHeight,\n columnsData\n ) =>\n (HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <div id=\"headCell\">\n <HeadCellRenderer {...props} />\n </div>\n <EntityCellRenderer\n className={classnames(styles.entityRowCell, styles.entityRowCellSelected)}\n columnId={props.headCellData.id}\n rowIndex={0}\n getHeightForSubRow={getHeightForSubRow}\n tableRowsData={tableRowsData}\n getRowHeight={getRowHeight}\n columnsData={columnsData}\n collapseContextValue={entityRowCollapseContext}\n id=\"entityCell\"\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n };\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, identity, has, move} from 'ramda';\nimport {\n Entity,\n getEntityUriForLink,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DragAndDrop, useCollaboration, CollaborationContextProvider} from '@reltio/components';\nimport mdm, {profile} 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 '../../hooks/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n isLoaded: boolean;\n savedState: PotentialMatchesSavedState;\n onUpdateSavedState: (stateToSave: PotentialMatchesSavedState) => void;\n};\n\nexport const MatchReviewTable = ({config, isLoaded, savedState, onUpdateSavedState}: Props) => {\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const dispatch = useDispatch();\n const {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode, actualizeSelectedItemsColors} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n useEffect(() => {\n actualizeSelectedItemsColors();\n }, [selectedItems]);\n\n const {addReloadHandler, removeReloadHandler} = useReloadData();\n useEffect(() => {\n const reloadHandler = () => {\n dispatch(profile.entity.actions.loadEntity({uri: getEntityUriForLink(entity)}));\n };\n addReloadHandler(reloadHandler);\n return () => removeReloadHandler(reloadHandler);\n }, [entity, dispatch, addReloadHandler, removeReloadHandler]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)),\n [entityUri, 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 onReorderingColumn = useCallback(\n (oldPositionId, newPositionId) => {\n const oldPosition = visibleColumns.indexOf(oldPositionId);\n const newPosition = visibleColumns.indexOf(newPositionId);\n setVisibleColumns(move(oldPosition, newPosition));\n },\n [visibleColumns]\n );\n\n const comparisonViewProps = {\n entity,\n metadata,\n selectedColumns: selectedItems || [],\n setSelectedColumns: setSelectedItems,\n config,\n selectedRows: visibleColumns,\n setSelectedRows: setVisibleColumns,\n entitiesMap,\n rowsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n onReorderingColumn,\n onSelectAll: () => {},\n onToggleSelect: toggleSelect,\n onResetSelect: () => {},\n selected: [],\n isComparisonViewShown: false,\n showNonOv\n };\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n if (savedState?.visibleColumns) {\n setVisibleColumns(addFixedAttributes(savedState.visibleColumns));\n }\n if (savedState?.comparisonViewMode) {\n setComparisonViewMode(savedState.comparisonViewMode);\n }\n if (has('showNonOv', savedState)) {\n setShowNonOv(savedState.showNonOv);\n }\n }, [isLoaded, savedState]); // eslint-disable-line\n\n useEffect(() => {\n if (!isLoaded) {\n return;\n }\n onUpdateSavedState({comparisonViewMode, visibleColumns, showNonOv});\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 <CollaborationContextProvider collaboration={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 </CollaborationContextProvider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useCallback, useEffect, useMemo} from 'react';\nimport {Entity, Order} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatchesLoader} from '@reltio/components';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems, setGlobalSpinner} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\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: Order.desc\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS,\n onStartLoading,\n onFinishLoading\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatchesLoader(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 {getColumnsData, getMatchAttrColumns, groupColumnsDataByMatchAttributes} from '../helpers/attributesHelpers';\nimport {getSortOptionIdFromData} from '../helpers/sortHelpers';\n\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","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 '@mui/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 {makeStyles} from '@mui/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: \"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})));","import {makeStyles} from '@mui/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 React, {useCallback, useMemo} from 'react';\nimport {pipe} from 'ramda';\nimport {\n MatchRulesSelector,\n SourceSystemsSelector,\n AttributesValuesEditor,\n AttributeFiltersComponentProps\n} from '@reltio/components';\nimport {\n isMatchRuleAttrType,\n isSourceSystemAttrType,\n SearchFilter,\n MatchRulesAttrNames,\n wrapInArray\n} 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 const commonProps = {\n values: (values[0] || []) as string[],\n onChange: pipe(wrapInArray, changeValue),\n TextFieldProps,\n fullWidth: true\n };\n\n if (isMatchRuleAttrType(attrType)) {\n return (\n <MatchRulesSelector {...commonProps} name={attrType.name as MatchRulesAttrNames} entityType={entityType} />\n );\n } else if (isSourceSystemAttrType(attrType)) {\n return <SourceSystemsSelector {...commonProps} />;\n } else {\n return <AttributesValuesEditor rowContext={rowContext} rowData={rowData} />;\n }\n};\n","import React from 'react';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\nimport {capitalize} from '@mui/material/utils';\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 {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n divider: {\n marginBottom: '14px',\n marginRight: '16px',\n borderColor: 'rgba(0, 0, 0, 0.121569)'\n },\n optionLabel: {\n fontSize: '13px',\n paddingLeft: '10px'\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Divider from '@mui/material/Divider';\nimport Checkbox from '@mui/material/Checkbox';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport {AttributeType, buildFilterQueryString, SearchFilter} from '@reltio/mdm-sdk';\nimport {FilterSelector} from '../FilterSelector/FilterSelector';\nimport {ValuesEditor} from '../ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../../../types/potentialMatchesTypes';\n\nimport {useStyles} from './styles';\n\nconst potentialMatchesComponents = {\n FilterSelector,\n ValuesEditor\n};\n\ntype Props = {\n filters: SearchFilter[];\n options: MatchesOptions;\n onChange: (filters: SearchFilter[], option: MatchesOptions) => void;\n attributeTypes: AttributeType[];\n};\n\nexport const MatchesAttributesFiltersButton = ({filters, onChange, attributeTypes, options}: Props) => {\n const styles = useStyles();\n const [showTransitiveMatches, setShowTransitiveMatches] = useState(options.showTransitiveMatches);\n return (\n <AttributesFiltersButton\n dataReltioId=\"potential-matches-filter-button\"\n filters={filters}\n onChange={(filters) => onChange(filters, {showTransitiveMatches})}\n attributeTypes={attributeTypes}\n components={potentialMatchesComponents}\n onTogglePopup={(open) => {\n if (open) {\n setShowTransitiveMatches(options.showTransitiveMatches);\n }\n }}\n isFiltersApplied={!!buildFilterQueryString()(filters) || options.showTransitiveMatches}\n >\n <FormControlLabel\n classes={{label: styles.optionLabel}}\n control={\n <Checkbox\n checked={showTransitiveMatches}\n onChange={(e) => setShowTransitiveMatches(e.target.checked)}\n color=\"primary\"\n />\n }\n label={i18n.text('Show transitive matches')}\n />\n <Divider light className={styles.divider} />\n </AttributesFiltersButton>\n );\n};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n CrosswalksAttrTypes,\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n Order,\n SearchFilter,\n PotentialMatchesAttrTypes,\n SortingField\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from '../components/RightSidePanel/icons/potential-matches-icon.svg';\nimport FindMatchesIcon from '../components/RightSidePanel/icons/find-matches-icon.svg';\nimport NotAMatchIcon from '../components/RightSidePanel/icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../constants/views';\n\nimport {ADDITIONAL_SORT_OPTIONS_DATA, DEFAULT_SORT_OPTIONS, getSortOptionIdFromData} from '../helpers/sortHelpers';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {ValuesEditor} from '../components/RightSidePanel/ValuesEditor/ValuesEditor';\nimport {MatchesOptions} from '../types/potentialMatchesTypes';\nimport {MatchesAttributesFiltersButton} from '../components/RightSidePanel/MatchesAttributesFiltersButton/MatchesAttributesFiltersButton';\nimport {PMRightPanelTabs} from '../PotentialMatchesView';\n\nconst sourceSystemsComponents = {\n ValuesEditor\n};\n\nexport const usePotentialMatchesRightSidePanelElements = (): {\n active?: number;\n tabs: PMRightPanelTabs;\n toggleActive: (newId: ActivePanel) => void;\n onClose: () => void;\n} => {\n const [matchesFilters, setMatchesFilters] = useState<SearchFilter[]>([]);\n const [matchesOptions, setMatchesOptions] = useState<MatchesOptions>(DEFAULT_OPTIONS);\n const [findMatchesFilters, setFindMatchesFilters] = useState<SearchFilter[]>([]);\n const [notMatchFilters, setNotMatchFilters] = useState<SearchFilter[]>([]);\n const [matchesSorting, setMatchesSorting] = useState<SortingField>({\n field: ADDITIONAL_SORT_OPTIONS_DATA[0].id,\n order: Order.desc\n });\n const [findMatchesSorting, setFindMatchesSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\n const [notMatchSorting, setNotMatchSorting] = useState<SortingField>({\n field: getSortOptionIdFromData(DEFAULT_SORT_OPTIONS)[0],\n order: Order.asc\n });\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 onClose = useCallback(() => {\n setActive(null);\n }, []);\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(\n () => [\n ...matchRulesAttributes,\n PotentialMatchesAttrTypes.relevanceScore,\n PotentialMatchesAttrTypes.matchAction,\n ...attributeTypes\n ],\n [attributeTypes, matchRulesAttributes]\n );\n\n const findMatchesAttributeTypes = useMemo(\n () => [EntityAttrTypes.id, CrosswalksAttrTypes.sourceSystems, ...attributeTypes],\n [attributeTypes]\n );\n\n const onChangeMatchesFilters = (matchesFilters: SearchFilter[], options: MatchesOptions) => {\n setMatchesOptions(options);\n setMatchesFilters(matchesFilters);\n };\n\n const tabs = 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 <MatchesAttributesFiltersButton\n filters={matchesFilters}\n onChange={onChangeMatchesFilters}\n attributeTypes={potentialMatchesAttributeTypes}\n options={matchesOptions}\n />\n )\n },\n filters: matchesFilters,\n options: matchesOptions,\n sorting: matchesSorting,\n onSorting: setMatchesSorting\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 components={sourceSystemsComponents}\n />\n )\n },\n filters: findMatchesFilters,\n sorting: findMatchesSorting,\n onSorting: setFindMatchesSorting\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 sorting: notMatchSorting,\n onSorting: setNotMatchSorting\n }\n ],\n [\n matchesFilters,\n matchesOptions,\n findMatchesFilters,\n notMatchFilters,\n potentialMatchesAttributeTypes,\n findMatchesAttributeTypes,\n matchesSorting,\n findMatchesSorting,\n notMatchSorting,\n attributeTypes\n ]\n );\n\n return {active, tabs, toggleActive, onClose};\n};\n","import React from 'react';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {useSpinnerAndReloadData} from '../../hooks/useSpinnerAndReloadData';\n\nconst PotentialMatchesLoadIndicator = () => {\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n return isGlobalSpinnerActive ? <LinearLoadIndicator /> : null;\n};\n\nexport default PotentialMatchesLoadIndicator;\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {equals, pluck} from 'ramda';\nimport {\n useSnackbar,\n SnackbarContext,\n useSavedStateForEntityType,\n ScreenProfileBand,\n ProfileResizablePanes,\n RightPanelTab\n} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport {RightSidePanel} from './components/RightSidePanel/RightSidePanel';\nimport {MatchReviewTable} from './components/MatchReviewTable/MatchReviewTable';\nimport {ViewStateProvider} from './contexts/ViewStateContext';\nimport {ReloadDataProvider} from './contexts/ReloadDataContext';\nimport {MatchesOptions, PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\nimport {useStyles} from './styles';\nimport {usePotentialMatchesRightSidePanelElements} from './hooks/usePotentialMatchesRightSidePanelElements';\nimport PotentialMatchesLoadIndicator from './components/PotentialMatchesLoadIndicator/PotentialMatchesLoadIndicator';\n\nconst perspectiveId = 'potentialMatches';\nconst THIRTY_SECONDS = 30000;\n\nexport type PMRightPanelTabs = Array<\n RightPanelTab & {\n filters: SearchFilter[];\n options?: MatchesOptions;\n sorting: SortingField;\n onSorting: (value: SortingField) => void;\n }\n>;\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const PotentialMatchesView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({autoHideDuration: THIRTY_SECONDS});\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\n\n const {tabs} = usePotentialMatchesRightSidePanelElements();\n\n useEffect(() => {\n if (!isLoaded) return;\n lastSavedState.current = savedState || {};\n }, [isLoaded, savedState]); // eslint-disable-line\n\n const onUpdateSavedState = useCallback(\n (stateToSave = {}) => {\n if (!lastSavedState.current) return;\n const newSavedState = {...lastSavedState.current, ...stateToSave};\n if (!equals(newSavedState, lastSavedState.current)) {\n updateSavedState(newSavedState);\n lastSavedState.current = newSavedState;\n }\n },\n [updateSavedState]\n );\n\n return (\n <ViewStateProvider>\n <ReloadDataProvider>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <div className={styles.perspectiveView}>\n <PotentialMatchesLoadIndicator />\n {entity?.uri && (\n <>\n <div className={styles.potentialMatchesContainer}>\n <ProfileResizablePanes\n buttonsProps={pluck('buttonProps', tabs)}\n perspectiveId={perspectiveId}\n >\n <div className={styles.potentialMatchesWrapper}>\n <ScreenProfileBand entity={entity} />\n <MatchReviewTable\n config={config}\n isLoaded={isLoaded}\n savedState={savedState}\n onUpdateSavedState={onUpdateSavedState}\n />\n </div>\n <RightSidePanel tabs={tabs} config={config} />\n </ProfileResizablePanes>\n </div>\n <SnackbarRenderer />\n <ChangeModeConfirmation />\n </>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\n\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {identity} from 'ramda';\nimport {promisifyCallback, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {PotentialMatchesView as PMView} from './PotentialMatchesView/PotentialMatchesView';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {PotentialMatchesSavedState} from './PotentialMatchesView/types/potentialMatchesTypes';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'potentialMatchesView',\n disableGlobal: true,\n seed: 'pm'\n});\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n onResize: (width: number, height: number) => void;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nconst PotentialMatchesView = ({config, onResize = identity, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified = useCallback(\n promisifyCallback<Record<string, PotentialMatchesSavedState>>(getSavedState),\n [getSavedState]\n );\n\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <PMView config={config} saveState={saveState} getSavedState={getSavedStatePromisified} />\n )}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n );\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","useMdmAbsoluteImagePath","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","className","avatarText","title","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","classnames","ExpandedValueTooltip","i18n","SmallIconButton","size","ArrowDropDownIcon","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","otherProps","useMdmMetadata","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","useState","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","defaultGetRowCellKey","rowIndex","columnData","cellIndex","getRowCellKey","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","flushHeightUpdates","debounce","clearHeightsCache","getDynamicRowCellHeight","cell","changeRowCellHeight","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","onChangeHeight","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","ref","handleHeight","onResize","theme","readOnlyLogicOperatorContainer","palette","secondary","readOnlyFilter","marginLeft","ReadOnlyLogicOperator","rowData","operator","capitalize","getFilterOptionLabel","row","marginBottom","rowItem","paddingRight","fullWidth","flexGrow","QueryBuilderRow","classes","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ReadOnlyFilter","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","withMuiSkin","CreatableSelect","Option","props","innerProps","innerRef","isSelected","selectProps","MenuItem","classNames","option","selected","Checkbox","onMouseMove","onMouseOver","tabIndex","isRequired","findNearestScrollableElement","element","currentElement","parentElement","scrollHeight","needToScroll","valueLength","prevValuesLength","parentElementWithScroll","getBoundingClientRect","bottom","top","left","placeholder","clearIndicator","spacing","dropdownIndicator","MultiSelect","creatable","getOptions","loadingIndicator","components","componentsProp","classesProp","stylesProp","onChange","onChangeProp","onInputChange","onInputChangeProp","menuPlacement","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","multiSelectClasses","omit","inputId","values","usePrevious","useEffect","timerId","setTimeout","scrollIntoView","clearTimeout","useKeepInputVisible","controlRef","getControlRef","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","TextFieldProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","options","ClearIndicator","Control","DropdownIndicator","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","noOptionsMessage","singleValue","menu","container","groupHeading","indicatorsContainer","input","menuList","menuPortal","multiValueLabel","multiValueRemove","menuPortalTarget","menuShouldBlockScroll","captureMenuScroll","getOptionValue","isSearchable","inputRef","profileBandNavigation","comments","justifyContent","ScreenProfileBand","entity","historySlice","objectIds","getProfileBandObjectIdsForCollaboration","collaboration","useCollaboration","entityUri","getEntityUriForLink","CollaborationContext","ProfileBand","COMMENTS_CONTAINER_VISIBILITY_AREA","aEntity","ProfileBandHistory","ProfileBandNavigation","CommentsContainer","uri","relatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","objectType","displayName","renderAttributesList","valueContainerClassName","attributeValue","expanded","LabelRenderer","RightSlot","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","ActivePanel","ComparisonViewMode","ReloadDataContext","createContext","reloadData","addReloadHandler","removeReloadHandler","ReloadDataProvider","contextValue","reloadDataHandlers","forEach","reloadHandler","push","indexOf","splice","createContextValue","Provider","useReloadData","dataContext","Error","RESET","SET_OPTIONS","actions","basicTableViewState","reset","createStandardAction","setOptions","reducer","state","payload","ViewStateContext","ViewDispatchContext","SET_GLOBAL_SPINNER","SET_SELECTED_ITEMS","DESELECT_BY_ENTITIES","TOGGLE_SELECT","ACTUALIZE_SELECTED_ITEMS_COLORS","SET_LIMIT_SELECTION","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","setGlobalSpinner","setSelectedItems","deselectByEntities","toggleSelect","actualizeSelectedItemsColors","setLimitSelection","setComparisonViewMode","setEntitiesMap","deleteExtraMatches","viewStateReducer","isGlobalSpinnerActive","slice","limitSelection","evolve","object","itemIndex","selectedItem","remove","append","entityColors","colors","selectedEntitiesUris","getEntityUriFromMatchObject","entityUrisWithoutColors","propEq","shift","newMode","comparisonViewMode","COLUMNS","entitiesMap","ViewStateProvider","dispatch","useReducer","getPotentialMatchesColor","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","createAttributeItemConfig","attrNode","parents","config","createAttributeItemBasicConfig","childNode","attrType","attributeUriToSearchUri","collectAttributeItems","entityType","getAllAttributeTypesTree","getColumnsDataFromEntityAttributes","attr","dataTypeDefinition","getAttrDataTypeDefinition","getColumnsData","getEntityAttributesFromMetadata","isMatchAttrColumn","matchAttributes","column","attrUri","isReferenceAttrColumn","isSubAttrIdForColumn","isNestedAttrColumn","isNested","isReference","parentColumn","columnId","startsWith","isNestedForOneOfColumns","columns","isRelatedToColumns","__","getMatchAttrColumns","columnsData","reject","ROWS_PER_PAGE_OPTIONS","MATCHES_SORT_OPTIONS","ADDITIONAL_SORT_OPTIONS_DATA","DEFAULT_SORT_OPTIONS","getSortOptionIdFromData","pluck","buildRulesStringFormFilters","filters","join","isMatchRuleFilter","any","equals","MatchRulesAttrTypes","useMatchesReducer","defaultRowsPerPage","initState","page","rowsPerPage","stateReducer","resultActions","viewActions","viewState","showAddRelationErrors","error","console","ErrorPopup","message","showApiError","getRequestErrorMessage","showDCRReviewErrors","apiError","errorCode","ApiErrorCode","useSpinnerAndReloadData","onStartRequest","onFinishRequest","MergeButton","forwardRef","entities","mode","ActionButtonMode","onMenuClose","noop","onSuccess","onError","NotMatchButton","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","React","viewBox","version","xmlns","d","fillOpacity","SetAMatchButton","markingIsInProgress","setAMatch","setAsMatch","then","catch","finally","useSetAMatch","ActionButton","SetAsMatchIcon","xmlnsXlink","stroke","strokeWidth","fill","fillRule","xlinkHref","mask","DCRReviewButton","showSnackbarMessage","SnackbarContext","operationIsInProgress","startPMReview","selectors","mdmModule","workflowPath","useSelector","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","DcrReviewIcon","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","CreateRelationButton","mainEntity","currentEntity","matchRules","permission","AddRelationIcon","RightSideHeaderContext","attributeSelect","field","split","sortLevel","findNode","parentFieldName","node","handleChange","val","BasicAttributeSelector","rowCheckbox","position","alignSelf","header","border","borderTop","sorting","arrow","transition","rotate","transform","selectedCount","totalCount","sortOptions","onSorting","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","indeterminate","IconButton","order","Order","useSortOptions","additionalOptions","entityTypeUri","getEntityType","getSortingItemsGroups","col","useEntityColor","entityColor","paddingTop","paddingBottom","entityHeader","actionButtons","active","wrapper","content","right","pointerEvents","borderLeft","paddingLeft","entityLabel","primary","main","textDecoration","matchRulesWrapper","selectedRow","coloredRow","matchScore","commentsContainer","rightButton","tenantIcon","dividerWrapper","divider","borderColor","relevanceBadge","match","entityToMatch","isRowSelected","isColumnViewMode","actionButtonsRenderer","openMenu","setOpenMenu","isRowSelectable","Actions","showRelevanceBadge","matchRuleSummaries","checkMatchRuleSummaryRelevance","EntityUriLink","buttonClassName","hoveredMatch","onActionsMenuOpen","onActionsMenuClose","createObjectIdForPM","matchEntityUri","allowOnlyOneComment","showAlways","MatchRulesBlock","variant","MatchRuleVariant","Divider","orientation","RelevanceScoreBadge","DataTenantBadge","dataTenantId","dataTenant","view","flexDirection","overflowY","overflowX","MatchItems","matches","isLoading","LinearLoadIndicator","gap","inputRoot","menuButtonRoot","searchTenant","onChangeSearchTenant","currentSearchText","setCurrentSearchText","handleSearch","trim","handleChangeSearchText","newSearchText","isEmpty","document","activeElement","TenantsDropDownSelector","selectedTenant","onChangeTenant","SearchInput","autofocus","onKeyPress","MenuItemRenderer","ActionsPanel","numberOfButtons","actionButtonSize","buttonActions","menuActions","splitAt","buttonMode","buttonSize","actionButton","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","moreOptions","menuId","menuItems","onMenuOpen","mainArea","FindMatchesView","changeRowsPerPage","changePage","searchText","setSearchText","setSearchTenant","handleChangeSearchTenant","newSearchTenant","requestFilters","total","findEntities","loading","enabled","searchTenantId","activityFilter","globalFilter","setLoading","setTotal","setEntities","safePromise","useSafePromise","DEFAULT_SELECTION","filterQuery","buildFilterQueryString","isDtss","dtssProps","entityRequestOptions","offset","sort","select","entityRequest","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","totalRequestOption","totalRequest","getTotalFromDataTenant","getTotals","Promise","all","results","totalResponse","useFindEntities","resetPage","resetSelected","selectAll","canMerge","canMark","getActionPermissionForMatch","isDTEntity","areBothEntitiesDT","show","pathEq","BasicTablePagination","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","dialogPaper","dialogTitle","titleText","letterSpacing","fontize","attributeList","useDispatch","mdm","containerRef","relation","inRelations","inRelationTypes","outRelations","outRelationTypes","isNotDuplicatedInRelation","isNotDuplicatedOutRelation","inOutRelationsDeduplicator","setObjectTypes","assocPath","startObject","objectTypeURI","endObject","matchActionConfig","propOr","rulesConfig","getRulesConfig","relationTypeUris","createRelation","canCreateRelationBetweenEntities","getRelationType","getRelationTypesFromConfig","relationUri","relationType","pathOr","relationAttrTypes","getRelationAttributesList","attributeListEntity","getActivenessAttributes","viewId","onRelationTypeChange","profile","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","onCancel","boundariesElement","popupBoundariesValue","priority","Dialog","paper","DialogTitle","Typography","DialogContent","PopupBoundariesContext","ConnectionRelationTypeSelector","applyFirstByDefault","AttributesList","attrTypes","showEmptyEditors","Mode","parentUri","DialogActions","Button","startDate","endDate","startEntityUri","endEntityUri","async","markAsNotMatch","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","DEFAULT_OPTIONS","showTransitiveMatches","MatchesView","hasWorkflow","matchRulesFilters","regularFilters","partition","matchesFilter","loadMatches","rules","onStartLoading","onFinishLoading","useMatchesLoader","markMatchedValues","useMatches","getPotentialMatchesObjectIdsForCollaboration","keys","canAddRelation","hasDTEntity","every","EntitiesMapContext","NotMatchView","loadNotMatches","setMatches","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","record","NOT_MATCH","loadNotMatchesIfNeeded","force","addGlobalFilterToQuery","activeness","result","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","PotentialMatches","FindMatches","NotAMatch","render","flexShrink","RightSidePanel","tabs","isNil","headerProps","SidePanel","button","MODES","Icon","ViewColumnRoundedIcon","TABLE","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","mergeButton","splitter","actionSplitter","getEntityObjects","TableHeader","selectedColumns","onChangeColumns","showNonOv","onChangeShowNonOv","getActionPermissionForMatches","hideMerge","hasSelectedItems","handleToggleShowOvValue","not","settingItems","BasicViewHeader","Spacer","SettingsMenu","ColumnsSettings","ExpandedContext","expandedMap","onExpandType","Component","WithExpanded","componentProps","matchedAttributeBackground","complexAttributesHeadRenderer","complexAttributesHeadLabel","arrowButton","matchedAttribute","badge","marginTop","highlightedValuesUris","HighlightedValuesContext","areOneHierarchyUris","Tooltip","ExpandableAttributeValuesBlock","withExpanded","ReadOnlyAttributeValuesBlock","AttributesRenderer","matchedValuesUris","highlightedValuesContextValue","highlightedClassName","MatchedValuesCounter","ColumnDataContext","menuButtonWrapper","headCell","HeadCellRenderer","hideable","setAnchor","setHoveredId","hoveredId","ComplexAttributesHeadRenderer","onExpandClick","ArrowExpandButton","HoveredEntityContext","hoveredEntity","resetHoveredEntity","isEntityFindMatch","isEntityNotMatch","isEntityPotentialMatch","hovered","colored","removeButton","zIndex","matchControlsContainer","isPotentialMatchesTask","task","WorkflowTasksAvailabilityContext","minHeight","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","workflowTasks","matchUri","requestIsInProgress","setRequestIsInProgress","tasks","setTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","loadTasks","getTasksForEntity","hasMatchEntityUri","propSatisfies","isTaskBelongsToMatch","allPass","warn","updateTaskState","taskId","mergeLeft","onActionSuccess","useWorkflowTasks","setWorkflowTaskAvailability","workflowActions","actionRequestIsInProgress","useWorkflowActions","possibleActions","assignee","TaskActions","isInProgress","WorkflowTasksContext","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","AssigneeSelector","isTaskOpen","WorkflowComments","preferredAction","DEFAULT_ROWS","draggable","initialWidth","autoResize","crosswalk","crosswalkIcon","labelContainer","spacer","ColoredSourceIcon","showTooltip","getSourceSystemLabel","flexWrap","crosswalks","checkIsDataTenantEntity","inline","additionalPropsForDefaultRows","cellRenderer","isSelectedEntity","onRemove","rest","isHovered","getEntityId","controlProps","CloseIcon","ProfileCard","MatchControls","headCellRenderer","workflowCard","sources","SourcesRenderer","entityId","reduce","nestedAttributeValue","subAttributeType","CrosswalksAttrTypes","getFakeAttributeValueForCrosswalk","score","relevanceScore","RelevanceScoreRenderer","defaultRows","getAttrTypeNameByUri","last","getMatchedValuesUris","matchedValues","cond","getColumnDataForRowData","onRemoveItem","isMainEntity","isAttributeSearchUri","attrSource","getAttributeSource","isOv","getAttributeValues","ColumnHandlerContext","getFirstLevelParentAttribute","replaceSubAttributesWithParent","uniq","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","ColumnsSettingsPopup","onColumnClick","newId","newIndex","borderStyle","comparisonTableWrapper","collapsedRow","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","emptyState","ComparisonTable","setSelectedColumns","selectedRows","setSelectedRows","allRowsData","localSelectedRows","setLocalSelectedRows","localSelectedColumns","setLocalSelectedColumns","setHoveredEntity","anchor","selectedRowsWithoutSubAttributes","searchUri","defaultRow","attrTypeUri","searchUriToAttrUri","findAttributeTypeByUri","collectionName","isComplexAttribute","getTableRowsData","showNonOnly","isDraggable","getTableColumnsData","setExpandedMap","expandedContextValue","headCellData","onClosePopup","selectedAttributeUris","hoveredEntityContextValue","isThereAnyTask","workflowTasksAvailabilityMap","setWorkflowTasksAvailabilityMap","useWorkflowTasksAvailability","workflowCardRowClassname","displayedRowsData","rowClassName","VerticalHeadingsTable","theadRowsNumber","onMoveRow","dragId","hoverId","newArr","groupBy","getFirstLevelSearchUri","toPairs","dragIndex","hoverIndex","dragRow","insert","nth","onDropRow","onMoveColumn","dragColumn","onDropColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","secondaryText","table","ComparisonView","defaultWrapperStyles","getColoredRowCellStyle","hoveredColor","alpha","lightPrimaryBackground","lighten","lightPrimaryBackgroundHovered","highlightBackground","entityBackground","link","rowCloseIcon","backgroundImage","firstHeadCell","headCellWithEntity","rowCell","rowCellFirstColumn","firstEntityCell","entityRowCell","entityRowCellSelected","rowCellHighlighted","rowCellSelected","defaultWrapper","hoveredDefaultWrapper","entityWrapper","profileWrapper","blobWrapper","imageWrapper","referenceWrapper","entityAvatar","collapseButton","dragIndicator","dragIndicatorIcon","opacity","ovFalse","inactive","expandButton","withFilterAtBottom","DefaultHeadCellRenderer","simpleValue","ov","DataTypeValue","withTableContext","onToggleSelect","isRowRemovable","hoverRowIndex","dragRef","containerId","IdContext","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","isFirstColumn","headIndex","blobValue","onScroll","imgValue","src","getImageAttributeOvThumbnailUrl","EntityTypeIcon","getReferencedEntityFromAttrValue","objectURI","EntityRowCollapseContext","chipContainer","chipLabel","ChipWithTooltip","withTooltip","Chip","needShowChip","basicTableRowCollapseContext","BasicTableRowCollapseContext","collapseContext","maxRowValuesCount","collapsed","setCollapsed","toggleCollapsed","prev","displayedCrosswalks","isShowDataTenant","hasCollapsedValue","getAttrPathFromColumnId","getBasicTableRowsData","allMatchRules","getAttributesForMatchRules","filteredColumnsData","acc","assoc","attrPath","ifElse","getAttributeValuesByPathWithOvFlag","getOvAttributeValuesByPathWithOvFlag","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","EntityProfileRenderer","MatchRulesRenderer","dataType","BlobRender","ImageRenderer","ReferenceRenderer","DefaultCellValueRenderer","getCellValueRendererByDataType","isAttributeCell","hiddenValues","Array","isArray","wrapInArrayIfNeeded","getAttributeValue","rich","isCellHighlighted","CellValueRenderer","columnIndex","cellWrapperClassName","someRowIsDragging","shouldRenderCell","tableContainer","rowActionButtonsWrapper","rowActionButtons","hoveredRowRightContentContainer","dragColumnHead","borderLeftColor","borderRightColor","dragColumnBody","sourcesCell","columnGap","rowGap","CommonRowCellRenderer","hoveredRowRightContent","basicTableRef","actionsContent","tableRef","RowCellAutoSizer","getIdFromRowValue","onReorderingColumn","onFilter","onSort","onResetSelect","onSelectAll","isComparisonViewShown","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","ProfileHeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","onDndColumnReorder","what","where","oldPositionId","newPositionId","tableContext","isAllSelected","useDynamicRowCellHeight","openActionsMenu","setOpenActionsMenu","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","isChecked","onChangePopupVisibility","renderRowCell","getRowCellHeight","defaultGetRowCellHeight","tableClasses","getDynamicEntityCellHeight","changeEntityCellHeight","clearEntityHeightsCache","renderEntityCell","getEntityCellHeight","getRowHeight","getHeightForSubRow","entityTableRowsData","collapseContextValue","entityRowCollapseContext","useBasicTableCellRenderer","entityRowHeight","enhancedColumnsData","withEntityCell","EntityCellRenderer","withEntityCellValue","useLayoutEffect","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndColumnReorderingEnabled","dndColumnReorderingHandler","dndRowReorderingHandler","hoveredContentPosition","comparisonView","MatchReviewTable","isLoaded","savedState","onUpdateSavedState","initialRequestParam","useFirstPotentialMatches","allColumnsData","groupedColumnsData","defaultColumns","defaultColumnsData","additionalColumnsData","attrColumnsData","getEntityTypeMatchAttributes","matchAttrColumns","otherColumns","groupColumnsDataByMatchAttributes","useMatchesColumnsData","visibleColumns","setVisibleColumns","setShowNonOv","visibleColumnsData","comparisonViewProps","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","DragAndDrop","clipRule","flexBox","ChangeModeConfirmation","onSave","TableIcon","ConfirmationDialog","onDiscard","saveCaption","discardCaption","perspectiveView","default","potentialMatchesWrapper","potentialMatchesContainer","ValuesEditor","changeFilter","changeValue","newValues","InputProps","commonProps","wrapInArray","isMatchRuleAttrType","MatchRulesSelector","isSourceSystemAttrType","SourceSystemsSelector","optionLabel","potentialMatchesComponents","FilterSelector","FilterOptions","MatchesAttributesFiltersButton","attributeTypes","setShowTransitiveMatches","AttributesFiltersButton","dataReltioId","onTogglePopup","isFiltersApplied","FormControlLabel","light","sourceSystemsComponents","usePotentialMatchesRightSidePanelElements","matchesFilters","setMatchesFilters","matchesOptions","setMatchesOptions","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","matchesSorting","setMatchesSorting","findMatchesSorting","setFindMatchesSorting","notMatchSorting","setNotMatchSorting","setActive","toggleActive","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","potentialMatchesAttributeTypes","PotentialMatchesAttrTypes","findMatchesAttributeTypes","EntityAttrTypes","onChangeMatchesFilters","PotentialMatchesIcon","mainTitle","rightContent","FindMatchesIcon","NotAMatchIcon","PotentialMatchesView","getSavedState","saveState","SnackbarRenderer","useSnackbar","autoHideDuration","lastSavedState","updateSavedState","useSavedStateForEntityType","stateToSave","newSavedState","S","ProfileResizablePanes","buttonsProps","perspectiveId","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","floor"],"sourceRoot":""}
|