@reltio/remotes 1.4.1376 → 1.4.1378

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/3640.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"3640.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/AttributeGroupIcon.tsx","webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/SelectAttributesList.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/BasicAttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/CollapseRowButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/QueryBuilderRow.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/ScreenProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/contexts/CrosswalksDisplayContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/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/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.ts","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/components/Actions/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/helpers.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/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/hooks/useMatches.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/helpers/relationsHelpers.ts","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/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/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/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/ColoredSourceIcon/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ColoredSourceIcon/ColoredSourceIcon.tsx","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/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/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.ts","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/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/PotentialMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/index.tsx","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n icon: {\n maxHeight: '25px',\n maxWidth: '25px',\n marginRight: '16px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {getAbsoluteImageUrl, getEntityTypeGraphIcon, Metadata} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\nimport {useStyles} from './styles';\n\ntype Props = {\n group: {id: string; title: string};\n metadata: Metadata;\n};\n\nconst AttributeGroupIcon = ({group, metadata}: Props) => {\n const styles = useStyles();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const entityTypeGraphIcon = getEntityTypeGraphIcon(metadata, {type: group.id});\n const absoluteImageUrl = getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return <AvatarWithFallback className={styles.icon} icon={absoluteImageUrl} avatarText={group.title[0]} />;\n};\n\nexport default AttributeGroupIcon;\n","import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n attribute: {\n cursor: 'pointer',\n lineHeight: '16px',\n flexBasis: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px 0 16px',\n width: 'calc(100% - 32px)',\n '&$attributeWithValue': {\n borderBottom: '1px solid rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n cursor: 'default'\n }\n },\n disabled: {},\n attributeWithValue: {},\n noSelect: {},\n name: {\n fontSize: '14px',\n color: 'rgba(0,0,0,0.87)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n direction: 'rtl',\n textAlign: 'left',\n flex: '1 0',\n width: '0',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n color: 'rgba(0,0,0,0.26)',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.26)'\n }\n }\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {either, prop} from 'ramda';\nimport {ArrowDropDown} from '@material-ui/icons';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {AttributeSelectorItem} from '../../../types';\nimport useStyles from './styles';\n\ntype Value = {\n fieldName: string;\n title: string;\n};\ntype Props = {\n value: AttributeSelectorItem;\n disabled: boolean;\n getLabel: (value: Value) => string;\n onSelectAttributeClick: (event) => void;\n};\n\nconst defaultGetLabel = either(prop('title'), prop('fieldName'));\n\nconst AttributeTitle = ({value, getLabel = defaultGetLabel, onSelectAttributeClick, disabled = false}: Props) => {\n const styles = useStyles();\n const label = value && getLabel(value);\n return (\n <div\n onClick={disabled ? undefined : onSelectAttributeClick}\n className={classnames(\n styles.attribute,\n {\n [styles.attributeWithValue]: !!label\n },\n {[styles.disabled]: disabled}\n )}\n >\n <ExpandedValueTooltip value={label}>\n <div className={classnames(styles.name, {[styles.disabled]: disabled})}>\n {label || <span className={styles.noSelect}>{i18n.text('Select attribute')}</span>}\n </div>\n </ExpandedValueTooltip>\n <SmallIconButton size={'M'} icon={ArrowDropDown} disabled={disabled} />\n </div>\n );\n};\n\nexport default AttributeTitle;\n","import {eqBy, pick, curry} from 'ramda';\nimport {getMaxItemWidth} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItem, AttributeSelectorItemsGroup} from '../../types';\n\nexport const isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));\n\nexport const checkAttributeIncludes = (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) =>\n selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));\n\nconst filterItem = (item: AttributeSelectorItem, filterText: string) =>\n item.title.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterItemsTree = (item: AttributeSelectorItem, filterText: string): boolean =>\n filterItem(item, filterText) || (item.children || []).some((item) => filterItemsTree(item, filterText));\n\nexport const filterSelectedAttributes = ({\n attribute,\n selectedAttributes,\n checked\n}: {\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n checked: boolean;\n}) => {\n return checked\n ? selectedAttributes.concat(attribute)\n : selectedAttributes.filter((selectedAttribute) => !isEqualAttributes(attribute, selectedAttribute));\n};\n\nexport const getAttributeIndex = (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) =>\n selectedAttributes.findIndex(isEqualAttributes(attribute));\n\nexport const getContainerWidth = getMaxItemWidth('title');\n\nexport const getOnEnterHandler = ({\n onListItemClick,\n selectedAttributes\n}: {\n selectedAttributes: AttributeSelectorItem[];\n onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;\n}) => ({item, groupData}) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n onListItemClick({...item, groupName: groupData.groupName}, !checked);\n};\n\nconst getAttributeGroupData = (\n item: AttributeSelectorItem,\n groupId: string,\n groupName: string,\n filterText: string,\n level = 0,\n noFilter = false\n) => {\n const isItemFiltered = filterItem(item, filterText);\n return [\n {\n item: filterText ? {...item, filterText} : item,\n level,\n groupId,\n groupName\n }\n ]\n .concat(\n item.children\n ? item.children\n .filter((subItem) => noFilter || isItemFiltered || filterItemsTree(subItem, filterText))\n .flatMap((subItem) =>\n getAttributeGroupData(\n subItem,\n groupId,\n groupName,\n filterText,\n level + 1,\n noFilter || isItemFiltered\n )\n )\n : []\n )\n .flat();\n};\n\nexport const prepareGroupsForSelectAttributeList: (\n filterText: string,\n groups: AttributeSelectorItemsGroup[]\n) => {item: AttributeSelectorItemsGroup[]; items: AttributeSelectorItem[]} = curry(\n (filterText: string, groups: AttributeSelectorItemsGroup[]) =>\n groups\n .map((group) => ({\n item: group,\n items: group.attributes\n .filter((attribute) => filterItemsTree(attribute, filterText))\n .map((item) => getAttributeGroupData(item, group.id, group.title, filterText))\n }))\n .filter((group) => group.items.length)\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n subHeader: {\n backgroundColor: '#f5f5f5',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n }\n});\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport VirtualGroupedList from '../VirtualGroupedList/VirtualGroupedList';\nimport Highlighter from '../Highlighter/Highlighter';\nimport AttributeGroupIcon from '../AttributeGroupIcon/AttributeGroupIcon';\nimport {checkAttributeIncludes} from '../BasicAttributeSelector/helpers';\nimport {AttributeSelectorItem} from '../../types';\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\n\ntype Data = {\n attrType?: AttributeType;\n};\ntype Props = {\n selectedAttributes: AttributeSelectorItem[];\n focusIndex: number;\n hideCheckBox: boolean;\n onItemClick: (data: Data, checked: boolean, groupId: string) => void;\n} & Record<string, unknown>;\n\nconst SelectAttributesList = ({selectedAttributes, onItemClick, focusIndex, hideCheckBox, ...otherProps}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const getItemSize = (i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT);\n\n const renderGroupTitle = (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.needGroupIcon && <AttributeGroupIcon group={item.item} metadata={metadata} />}\n {item.item.title}\n </ListItem>\n );\n\n const renderItem = (style, {item, level, groupId, groupName}, index) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n const isFocused = index === focusIndex;\n return (\n <AttributeListItem\n key={`item-${groupId}-${item.fieldName}`}\n onClick={onItemClick}\n checked={checked}\n data={{\n ...item,\n groupName\n }}\n notSelectable={item.notSelectable}\n hideCheckBox={hideCheckBox}\n label={<Highlighter text={item.title} highlight={item.filterText} />}\n labelInText={item.title}\n level={level}\n style={style}\n isFocused={isFocused}\n groupId={groupId}\n LogoIcon={item.LogoIcon}\n />\n );\n };\n\n return (\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={renderItem}\n renderGroupTitle={renderGroupTitle}\n focusIndex={focusIndex}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SelectAttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n selector: {\n minWidth: '200px',\n alignItems: 'stretch',\n background: 'rgba(0,0,0, 0.0267)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n display: 'flex'\n }\n});\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {identity, pipe, tap, prop, flatten, pick, map, chain, when, always} from 'ramda';\nimport SelectionPopup from '../SelectionPopup/SelectionPopup';\nimport {useKeyboardNavigation} from '../SelectionPopup/helpers';\nimport AttributeTitle from './AttributeTitle/AttributeTitle';\nimport {\n filterSelectedAttributes,\n getAttributeIndex,\n getContainerWidth,\n getOnEnterHandler,\n prepareGroupsForSelectAttributeList\n} from './helpers';\nimport SelectAttributesList from '../SelectAttributesList/SelectAttributesList';\nimport {flattenGroupedItemsData} from '../VirtualGroupedList/helpers';\nimport {AttributeSelectorItem, BasicAttributeSelectorProps} from '../../types';\nimport useStyles from './styles';\n\nconst ATTRIBUTES_LIST_HEIGHT = 400;\nconst ATTRIBUTES_LIST_WIDTH = 308;\nconst ATTRIBUTES_POPUP_HEIGHT = 507;\n\nconst BasicAttributeSelector = ({\n className,\n itemsGroups,\n value,\n getLabel,\n onSelect,\n onRestoreFocus = identity,\n onOpenPopup = identity,\n disableRestoreFocus = false,\n disableEnforceFocus = false,\n single = false,\n ungroup = false,\n disabled = false,\n hideCheckBox = false\n}: BasicAttributeSelectorProps) => {\n const styles = useStyles();\n const [selectAnchor, setSelectAnchor] = useState(null);\n const openPopup = (event) => {\n onOpenPopup();\n setSelectAnchor(event.currentTarget);\n };\n const closePopup = useCallback(() => setSelectAnchor(null), []);\n const isPopupOpen = !!selectAnchor;\n\n const [filterText, setFilterText] = useState('');\n const clearFilterText = useCallback(() => setFilterText(''), []);\n\n const [selectedAttributes, setSelectedAttributes] = useState([]);\n const clearSelectedAttributes = useCallback(() => setSelectedAttributes([]), []);\n\n const filteredItemsGroups = useMemo(() => prepareGroupsForSelectAttributeList(filterText, itemsGroups), [\n itemsGroups,\n filterText\n ]);\n\n const items = useMemo(\n () =>\n pipe(\n when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))),\n flattenGroupedItemsData\n )(filteredItemsGroups),\n [ungroup, filteredItemsGroups]\n );\n\n const containerWidth = useMemo(() => Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH), [\n filteredItemsGroups\n ]);\n\n const handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);\n\n const searchInputRef = useRef<HTMLInputElement>();\n\n const onListItemClick = useCallback(\n (attribute: AttributeSelectorItem, checked: boolean) => {\n onSelect({\n checked,\n attribute,\n index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),\n selectedAttributes\n });\n\n if (single) {\n setSelectedAttributes(checked ? [attribute] : []);\n handleOnClose({});\n } else {\n setSelectedAttributes(filterSelectedAttributes({selectedAttributes, attribute, checked}));\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n },\n [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]\n );\n\n const handleSearchOnEnter = useCallback(getOnEnterHandler({onListItemClick, selectedAttributes}), [\n onListItemClick,\n selectedAttributes\n ]);\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isPopupOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedAttributes,\n onClose: handleOnClose\n });\n\n return (\n <div className={classnames(styles.selector, className)} data-reltio-id=\"attribute-selector\">\n <AttributeTitle value={value} getLabel={getLabel} onSelectAttributeClick={openPopup} disabled={disabled} />\n <SelectionPopup\n open={isPopupOpen}\n anchorEl={selectAnchor}\n onClose={handleOnClose}\n onSearch={setFilterText}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n containerHeight={ATTRIBUTES_POPUP_HEIGHT}\n searchInputOnKeyDown={handleKeyDown}\n anchorOrigin={{horizontal: 'right', vertical: 'bottom'}}\n searchInputRef={searchInputRef}\n disableRestoreFocus={disableRestoreFocus}\n disableEnforceFocus={disableEnforceFocus}\n >\n <SelectAttributesList\n items={items}\n onItemClick={onListItemClick}\n selectedAttributes={selectedAttributes}\n width={containerWidth}\n height={ATTRIBUTES_LIST_HEIGHT}\n focusIndex={focusIndex}\n hideCheckBox={hideCheckBox}\n />\n </SelectionPopup>\n </div>\n );\n};\n\nexport default memo(BasicAttributeSelector);\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst getRowCellKey = ({rowIndex, columnData: {id}, cellIndex}) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = () => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState({});\n const rowCellHeightsMapCache = useRef({});\n const batchHeightUpdate = (key, value) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap({...rowCellHeightsMapCache.current});\n }),\n []\n );\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(pipe(getRowCellKey, prop(__, rowCellHeightsMap)), [rowCellHeightsMap]);\n\n const changeRowCellHeight = useCallback(\n curry(useWith(pipe(batchHeightUpdate, flushHeightUpdates), [getRowCellKey, identity])),\n []\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n hidden: {\n visibility: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {RowCollapseContext} from '../BasicTable/contexts/RowCollapseContext';\nimport CollapseButton from '../../CollapseButton/CollapseButton';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CollapseRowButton = ({rowIndex, rowValue, className}) => {\n const styles = useStyles();\n const {toggleRowCollapse, getIsRowCollapsible, getIsRowCollapsed} = useContext(RowCollapseContext);\n\n const isCollapsibleRow = getIsRowCollapsible(rowValue);\n const isCollapsedRow = getIsRowCollapsed(rowIndex);\n\n return (\n <CollapseButton\n className={classnames(className, {[styles.hidden]: !isCollapsibleRow})}\n isOpen={!isCollapsedRow}\n onClick={(e) => {\n toggleRowCollapse(rowIndex);\n e.stopPropagation();\n }}\n />\n );\n};\n\nCollapseRowButton.propTypes = {\n rowIndex: PropTypes.number,\n rowValue: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default CollapseRowButton;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\nimport {useDidUpdateEffect} from '../../../hooks';\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}) => {\n const cellRef = useRef(null);\n\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div>\n <ReactResizeDetector handleHeight={true} onResize={adjustCellHeight} />\n <RootRef rootRef={cellRef}>{cell}</RootRef>\n </div>\n );\n};\n\nRowCellAutoSizer.propTypes = {\n onChangeHeight: PropTypes.func,\n children: PropTypes.node\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n row: {\n display: 'flex',\n marginBottom: '12px'\n },\n rowItem: {\n paddingRight: '10px',\n display: 'flex'\n },\n fullWidth: {\n flexGrow: '1',\n flexBasis: '0',\n overflow: 'hidden'\n },\n hidden: {\n visibility: 'hidden'\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst height = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n readOnlyLogicOperatorContainer: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '40px',\n width: '76px',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n maxHeight: height\n },\n readOnlyFilter: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n width: '50px',\n marginLeft: '12px',\n maxHeight: height\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\n\nimport useStyles from './styles';\n\nconst ReadOnlyLogicOperator = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyLogicOperatorContainer, className)}>\n {rowData && rowData.operator ? capitalize(rowData.operator) : i18n.text('Where')}\n </div>\n );\n};\n\nReadOnlyLogicOperator.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyLogicOperator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nconst ReadOnlyFilter = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyFilter, className)}>\n {rowData && rowData.filter ? getFilterOptionLabel(rowData.filter) : i18n.text('equals')}\n </div>\n );\n};\n\nReadOnlyFilter.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyFilter;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport useStyles from './styles';\n\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRow = ({\n classes = {},\n rowData,\n previousRowData,\n LogicOperatorComponent = ReadOnlyLogicOperator,\n AttributeSelectorComponent,\n FilterSelectorComponent = ReadOnlyFilter,\n ValuesEditorComponent,\n ActionsComponent,\n filterSelectorRef,\n attributeSelectorProps = {},\n ...rowContext\n}) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.row, classes.root)}>\n <LogicOperatorComponent\n className={classes.logicOperatorContainer}\n rowContext={rowContext}\n rowData={previousRowData}\n />\n <div className={classnames(styles.rowItem, classes.attributeSelectorContainer)}>\n <AttributeSelectorComponent\n attributeSelectorProps={attributeSelectorProps}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, classes.filterSelectorContainer)}>\n <FilterSelectorComponent\n textFieldInputRef={filterSelectorRef}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, styles.fullWidth, classes.valuesEditorContainer)}>\n <ValuesEditorComponent rowContext={rowContext} rowData={rowData} />\n </div>\n <div className={classnames(styles.rowItem, classes.actionsContainer, {[styles.hidden]: !rowData})}>\n <ActionsComponent rowContext={rowContext} rowData={rowData} />\n </div>\n </div>\n );\n};\n\nQueryBuilderRow.propTypes = {\n classes: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowData: QueryBuilderAttributeType,\n previousRowData: QueryBuilderAttributeType,\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRow);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {path} from 'ramda';\n\nimport QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRowsGroup = ({\n className = undefined,\n rowClasses,\n rowsData,\n lastRowAttributeSelectorProps,\n filterSelectorRef,\n filterSelectorRefIndex,\n ...rowProps\n}) => {\n const renderRow = (rowData, index, rowsData) => {\n const previousRow = index > 0 ? path([index - 1], rowsData) : null;\n const lastRowProps =\n index === rowsData.length\n ? {\n attributeSelectorProps: lastRowAttributeSelectorProps\n }\n : {};\n return (\n <QueryBuilderRow\n key={rowData && rowData.id}\n rowData={rowData}\n previousRowData={previousRow}\n classes={rowClasses}\n filterSelectorRef={index === filterSelectorRefIndex ? filterSelectorRef : undefined}\n {...rowProps}\n {...lastRowProps}\n />\n );\n };\n\n return (\n <div className={className}>\n {rowsData.map(renderRow)}\n {renderRow(null, rowsData.length, rowsData)}\n </div>\n );\n};\n\nQueryBuilderRowsGroup.propTypes = {\n className: PropTypes.string,\n rowClasses: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowsData: PropTypes.arrayOf(QueryBuilderAttributeType),\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n filterSelectorRefIndex: PropTypes.number,\n lastRowAttributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRowsGroup);\n","import {makeStyles} from '@material-ui/core/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} from '@reltio/mdm-sdk';\nimport {HistorySlice} from '@reltio/mdm-module';\n\nimport ProfileBand from '../ProfileBand/ProfileBand';\nimport {ProfileBandNavigation} from '../ProfileBandNavigation';\nimport CommentsContainer from '../CommentsContainer/CommentsContainer';\nimport {CollaborationContext} 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 <CollaborationContext.Provider value={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 </CollaborationContext.Provider>\n );\n});\n\nScreenProfileBand.displayName = 'ScreenProfileBand';\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon}: Source = findSourceSystemByUri(metadata, sourceType) || {};\n const avatarText = uri ? getSourceSystemLabel(metadata, uri)[0] : '';\n const sourceIcon = icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null;\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={sourceIcon}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import React from 'react';\n\nconst Spacer = () => <div style={{flex: 1}} />;\n\nexport default Spacer;\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","import React, {createContext, useCallback, useContext} from 'react';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId} from '@reltio/mdm-sdk';\nimport {pipe, eqBy} from 'ramda';\nimport {noop} from '../../core';\n\nconst CrosswalksDisplayContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n getCrosswalkColor?: (crosswalk: CrosswalkBase) => string;\n focusedCrosswalks?: CrosswalkBase[];\n highlightedCrosswalks?: CrosswalkBase[];\n toggleCrosswalkFocus?: (crosswalk: CrosswalkBase) => void;\n setCrosswalkHighlighted?: (crosswalk: CrosswalkBase, highlighted: boolean) => void;\n};\n\nexport const CrosswalksDisplayProvider = ({children, ...props}: ProviderProps) => {\n return <CrosswalksDisplayContext.Provider value={props}>{children}</CrosswalksDisplayContext.Provider>;\n};\n\nexport const useCrosswalkColor = (crosswalk?: CrosswalkBase) => {\n const {getCrosswalkColor: getColor = pipe(getCrosswalkId, getCrosswalkColor)} =\n useContext(CrosswalksDisplayContext) || {};\n return crosswalk ? getColor(crosswalk) : '';\n};\n\nexport const useHighlightedCrosswalks = () => {\n const {highlightedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n return highlightedCrosswalks;\n};\n\nexport const useCrosswalkHighlight = (crosswalk?: CrosswalkBase) => {\n const {highlightedCrosswalks = [], setCrosswalkHighlighted = noop} = useContext(CrosswalksDisplayContext) || {};\n const isHighlighted = !!crosswalk && !!highlightedCrosswalks.find(eqBy(getCrosswalkId, crosswalk));\n return {\n isHighlighted,\n isDimmed: highlightedCrosswalks.length > 0 && !isHighlighted,\n highlightCrosswalk: useCallback(() => setCrosswalkHighlighted(crosswalk, true), [\n crosswalk,\n setCrosswalkHighlighted\n ]),\n removeHighlight: useCallback(() => setCrosswalkHighlighted(crosswalk, false), [\n crosswalk,\n setCrosswalkHighlighted\n ])\n };\n};\n\nexport const useCrosswalkFocus = (crosswalk?: CrosswalkBase) => {\n const {toggleCrosswalkFocus = noop, focusedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n const isFocused = !!crosswalk && focusedCrosswalks.some(eqBy(getCrosswalkId, crosswalk));\n return {\n isFocused,\n toggleCrosswalkFocus: useCallback(() => toggleCrosswalkFocus(crosswalk), [crosswalk, toggleCrosswalkFocus])\n };\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M20 4v14h2V4c0-1.1-.9-2-2-2H6v2h14zM2 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 12a4 4 0 100-8 4 4 0 000 8zM10.35 14.01C7.62 13.91 2 15.27 2 18v2h9.54c-2.47-2.76-1.23-5.89-1.19-5.99zM19.43 18.02c.36-.59.57-1.28.57-2.02 0-2.21-1.79-4-4-4s-4 1.79-4 4 1.79 4 4 4c.74 0 1.43-.22 2.02-.57L20.59 22 22 20.59l-2.57-2.57zM16 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 20h15.002L21 23l1.27-1.27-20-20.01L1 2.99l6.172 6.175a4.007 4.007 0 002.66 2.662l2.23 2.23A10.754 10.754 0 0011 14c-2.67 0-8 1.34-8 4v2zm8-16a3.987 3.987 0 00-2.795 1.137l5.656 5.659A3.999 3.999 0 0011 4z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","export enum ActivePanel {\n PotentialMatches,\n FindMatches,\n NotAMatch\n}\n\nexport enum ComparisonViewMode {\n TABLE = 'TABLE',\n COLUMNS = 'COLUMNS'\n}\n\nexport const MAX_PROFILES_TO_COMPARE = 4;\n","import React, {createContext, useContext} from 'react';\n\nconst DataContext = createContext<{\n reloadData: () => void;\n setReloadHandler: (f: () => void) => void;\n }>({\n reloadData: () => {},\n setReloadHandler: () => {}\n });\nconst createContextValue = () => {\n let dataHandler;\n const reloadData = (): void => {\n if (dataHandler) {\n dataHandler();\n }\n };\n const setReloadHandler = (reloadHandler: () => void) => {\n dataHandler = reloadHandler;\n };\n return {\n reloadData,\n setReloadHandler\n };\n};\nconst contextValue = createContextValue();\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n return <DataContext.Provider value={contextValue}>{children}</DataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(DataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import {append, evolve, remove} from 'ramda';\nimport React, {createContext, useContext, useReducer} from 'react';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {EntitiesMap, 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 toggleSelect: (match: Match) => void;\n setLimitSelection: (value?: number) => void;\n setComparisonViewMode: (mode: ComparisonViewMode) => void;\n setEntitiesMap: (entitiesMap?: EntitiesMap) => void;\n deleteExtraMatches: () => void;\n};\n\ntype StateContext = {\n isGlobalSpinnerActive: boolean;\n selectedItems: Match[];\n limitSelection?: number;\n comparisonViewMode: ComparisonViewMode;\n entitiesMap?: EntitiesMap;\n};\nconst ViewStateContext = createContext<StateContext>(null);\nconst ViewDispatchContext = createContext<ActionContext>(null);\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\nconst SET_COMPARISON_VIEW_MODE = 'SET_COMPARISON_VIEW_MODE';\nconst SET_ENTITIES_MAP = 'SET_ENTITIES_MAP';\nconst DELETE_EXTRA_MATCHES = 'DELETE_EXTRA_MATCHES';\n\nconst actions = {\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION),\n setComparisonViewMode: createStandardAction(SET_COMPARISON_VIEW_MODE),\n setEntitiesMap: createStandardAction(SET_ENTITIES_MAP),\n deleteExtraMatches: createStandardAction(DELETE_EXTRA_MATCHES)\n};\n\nconst viewStateReducer = (state: StateContext, action: ReturnType<ReturnType<typeof createStandardAction>>) => {\n switch (action.type) {\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n case DELETE_EXTRA_MATCHES:\n return {...state, selectedItems: state.selectedItems.slice(0, state.limitSelection)};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload.slice(0, state.limitSelection)};\n case TOGGLE_SELECT:\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex(\n (selectedItem) => selectedItem?.object?.uri === item?.object?.uri\n );\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n return append(item, selected);\n }\n }\n },\n state\n );\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n case SET_COMPARISON_VIEW_MODE: {\n const newMode: ComparisonViewMode = action.payload;\n return {\n ...state,\n comparisonViewMode: newMode,\n limitSelection: newMode === ComparisonViewMode.COLUMNS ? MAX_PROFILES_TO_COMPARE : undefined\n };\n }\n case SET_ENTITIES_MAP: {\n const entitiesMap: EntitiesMap = action.payload;\n return {\n ...state,\n entitiesMap\n };\n }\n }\n};\n\ntype Props = {\n children: React.ReactElement;\n};\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 });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction as ActionContext}>\n {children}\n </ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext<StateContext>(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext<ActionContext>(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst RESET = 'RESET';\nconst SET_OPTIONS = 'SET_OPTIONS';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n setOptions: createStandardAction(SET_OPTIONS)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {\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\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} from '@reltio/mdm-sdk';\nimport {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: error?.errorMessage || i18n.text('Something went wrong...')\n });\n};\n\nexport const showDCRReviewErrors = (error: ApiError) => {\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import {Entity, Match} from '@reltio/mdm-sdk';\n\nexport const getFilteredSelectedItems = (selectedItems: Match[], entities: Entity[]) =>\n selectedItems.filter(({object}) => !entities.some(({uri}) => uri === object.uri));\n","import React, {forwardRef} from 'react';\nimport {noop, MergeButton as MergeButtonComponent, ActionButtonMode} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const MergeButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n }\n);\n\nMergeButton.displayName = 'mergeButton';\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const NotMatchButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.displayName = 'NotMatchButton';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M9 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n fillOpacity: \".541\"\n})));","import React, {forwardRef} from 'react';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {getFilteredSelectedItems} from './helpers';\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 {setSelectedItems} = useViewStateActions();\n const {selectedItems} = useViewState();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, 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 {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n 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 .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 ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs, Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useRequestDCRReview = ({\n entities,\n entity,\n showSnackbarMessage\n}: Props): [val: boolean, func: () => void] => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .then(() => {\n showSnackbarMessage?.(i18n.text('Potential match request: Done'));\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [setGlobalSpinner, workflowPath, uris, tenant, environment, showSnackbarMessage]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n isDataTenantEntity,\n reinstateDataTenantEntityMatch,\n reinstateMixedEntitiesMatches,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n 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 .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, SnackbarContext, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {getFilteredSelectedItems} from './helpers';\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 {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n const showSnackbarMessage = useContext(SnackbarContext);\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, 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';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules'>) => void;\n matchRules?: string[];\n};\n\nexport const CreateRelationButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mainEntity,\n currentEntity,\n matchRules,\n mode = ActionButtonMode.iconButton,\n onClick = noop,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {ReactNode} from 'react';\n\nexport const RightSideHeaderContext = React.createContext<{\n mainTitle?: string;\n secondTitle?: string;\n content?: ReactNode;\n rightContent?: ReactNode;\n bottomContent?: ReactNode;\n onClose: () => void;\n }>({\n onClose: () => {}\n });\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n attributeSelect: {\n width: '100%',\n height: '40px'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {BasicAttributeSelector, AttributeSelectorItemsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\n\ntype AttributeOption = {\n fieldName: string;\n title: string;\n children?: AttributeOption[];\n};\n\ntype Props = {\n onChange: (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) {\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 '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n height: '24px',\n position: 'relative',\n padding: '12px'\n },\n header: {\n padding: '8px 12px 8px 0',\n border: 'rgba(0,0,0,0.05) 1px solid',\n borderTop: 0,\n display: 'flex',\n justifyContent: 'space-between'\n },\n selector: {\n width: '160px'\n },\n sorting: {\n display: 'flex'\n },\n arrow: {\n transition: 'transform 0.3s ease-in'\n },\n rotate: {\n transform: 'rotate(180deg)'\n }\n}));\n","import React, {useContext} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\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 '@material-ui/icons/ArrowUpward';\nimport classNames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\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 >\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 {makeStyles} from '@material-ui/core/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: '19px',\n height: '24px',\n position: 'relative',\n padding: '9px'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n paddingTop: '15px',\n display: 'flex'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '0 15px 0 15px',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.04)',\n '& $actionButtons': {\n display: 'flex'\n },\n '& $commentsContainer': {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n }\n },\n display: 'flex',\n boxSizing: 'border-box',\n borderBottom: '1px rgba(0,0,0,0.05) solid',\n paddingLeft: '12px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 500\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 10px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box'\n },\n selectedRow: {\n backgroundColor: 'rgba(0, 114, 206, 0.12)'\n },\n 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 borderLeft: 'rgba(0,0,0,0.12) 1px solid',\n paddingLeft: '12px',\n height: '20px',\n marginLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n height: '24px',\n marginLeft: '6px'\n },\n border: {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n },\n rightButton: {\n marginLeft: '8px'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant\n} from '@reltio/components';\n\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n EntitiesMap,\n Entity,\n getEntityColor,\n getEntityUriForLink,\n getLabel,\n Match,\n Metadata\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n 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 = getEntityColor(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 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 <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n {!!match.matchScore && <div className={styles.matchScore}>{match.matchScore}</div>}\n </div>\n </div>\n <div className={styles.actions}>\n <div className={classnames(styles.actionButtons, {[styles.active]: openMenu})}>\n <Actions\n buttonClassName={styles.rightButton}\n hoveredMatch={match}\n onActionsMenuOpen={() => setOpenMenu(true)}\n onActionsMenuClose={() => setOpenMenu(false)}\n />\n </div>\n {entityToMatch && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.border]: openMenu})}\n uri={createObjectIdForPM(entityToMatch.uri, match.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: match.object.uri\n })}\n allowOnlyOneComment\n showAlways={openMenu}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden'\n }\n}));\n","import React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\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};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems\n}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n\n return (\n <div className={styles.view}>\n {matches.map((match, index) => (\n <ItemRenderer\n key={match.object.uri}\n rowIndex={index}\n match={match}\n entityToMatch={entityToMatch}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n matchRules={match.matchRules}\n metadata={metadata}\n entitiesMap={entitiesMap}\n 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 '@material-ui/core/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 '@material-ui/icons/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n actionButtonSize?: string;\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n actionButtonSize,\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? ActionButtonMode.button : ActionButtonMode.iconButton;\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton\n key={index}\n mode={buttonMode}\n className={classes?.actionButton}\n {...(actionButtonSize ? {size: actionButtonSize} : {})}\n {...props}\n />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions')\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n getEntityUriFromMatchObject,\n Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig,\n DataTenant,\n SortingField,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} 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 dispatch = useDispatch();\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} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage,\n searchTenantId: searchTenant.id\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n findEntities();\n dispatch(profile.entity.actions.loadEntity({uri: entityUri}));\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useEffect(() => {\n const selected = selectedItems.map((item) => {\n const entity = entities.find(\n (entity) => getEntityUriFromMatchObject(entity) === getEntityUriFromMatchObject(item)\n );\n return entity ? entity : item;\n });\n setSelectedItems(selected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\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\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: 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 />\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 {useViewStateActions} from '../contexts/ViewStateContext';\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 {setGlobalSpinner} = useViewStateActions();\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'attributes', 'crosswalks'];\n const filterQuery: string = useMemo(() => buildFilterQueryString()(filters), [filters]);\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setGlobalSpinner(true);\n 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(() => setGlobalSpinner(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};\n};\n","import {useCallback, useEffect} 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 {setGlobalSpinner, setEntitiesMap} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n rules,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting,\n markMatchedValues: true\n });\n\n useEffect(() => {\n setEntitiesMap(entitiesMap);\n }, [setEntitiesMap, entitiesMap]);\n\n return {matches, total, entitiesMap, loadMatches};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n open?: boolean;\n onClose: (relationUri: string) => void;\n};\n\nconst AddRelationDialog = ({config, mainEntity, currentEntity, matchRules, open, onClose = identity}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const containerRef = useRef(null);\n\n const {relation = {}}: Connection =\n useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes: RecordAttributesType = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes: AttributeType[] = useMemo(() => getRelationAttributesList(metadata, relationType), [\n relationType,\n metadata\n ]);\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n }).catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle disableTypography classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}} ref={containerRef}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={ModeTypes.EDITING}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </PopupBoundariesContext.Provider>\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button disabled={disabled} color=\"primary\" onClick={onAdd}>\n {i18n.text('Add')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default AddRelationDialog;\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator,\n Metadata,\n Entity,\n InOutRelation,\n Connection,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (\n metadata: Metadata,\n config: PotentialMatchesPerspectiveConfig,\n mainEntity: Entity,\n entity: Entity,\n matchRules: string[]\n): {\n inRelations: InOutRelation;\n outRelations: InOutRelation;\n} => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {} as Entity): Connection => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {pipe} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({\n mainEntity,\n currentEntity,\n matchRules\n }: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n }) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri: string) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config.id, dispatch]\n );\n\n const AddRelationDialogRenderer = useCallback(() => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n }, [showDialog, config, closeAddRelationDialog, relationDialogContent]);\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: true\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {partition, prop, identity, equals} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n 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 dispatch = useDispatch();\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} = 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 {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadMatches();\n dispatch(profile.entity.actions.loadEntity({uri: entityUri}));\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n const objectIds = useMemo(\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 {canMerge, canAddRelation, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n 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 />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n }\n);\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches,\n GlobalSearchRequestOptions,\n addGlobalFilterToQuery,\n Match,\n NOT_MATCH,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: SortingField;\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [matches, setMatches] = useState<Match[]>([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const markAsNotMatch = (record) => ({matchRules: [NOT_MATCH], ...record});\n const loadNotMatchesIfNeeded = useCallback(\n (force?: boolean) => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || '',\n sort: field,\n force,\n order,\n activeness: activityFilter\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response.map(markAsNotMatch));\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally(() => setGlobalSpinner(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, activityFilter, enabled, globalFilter] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} 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 dispatch = useDispatch();\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} = 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 {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadNotMatches();\n dispatch(profile.entity.actions.loadEntity({uri: entityUri}));\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n 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 />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {UsersContext, useUsers} from '@reltio/components';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\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 users = useUsers();\n\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 <UsersContext.Provider value={users}>{render()}</UsersContext.Provider>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 0\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {\n MatchRulesSelector,\n SourceSystemsSelector,\n AttributesValuesEditor,\n AttributeFiltersComponentProps\n} from '@reltio/components';\nimport {isMatchRuleAttrType, isSourceSystemAttrType, SearchFilter, MatchRulesAttrNames} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\nexport const ValuesEditor = ({rowData, rowContext}: AttributeFiltersComponentProps) => {\n const styles = useStyles();\n const {values = [], attribute: {attrType, fieldName = null} = {}, filter, id} = (rowData || {}) as RowData;\n const {changeFilter} = rowContext;\n const {entityType} = rowContext;\n\n const changeValue = useCallback(\n (newValues: SearchFilter['values']) => {\n const newFilter: SearchFilter = {\n fieldName,\n filter,\n values: newValues\n };\n\n changeFilter(newFilter, id);\n },\n [changeFilter, id, fieldName, filter]\n );\n\n const TextFieldProps = useMemo(\n () => ({\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }),\n [styles]\n );\n\n const commonProps = {\n values: values as string[],\n onChange: 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 capitalize from '@material-ui/core/utils/capitalize';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\ntype Props = AttributeFiltersComponentProps & {textFieldInputRef: React.MutableRefObject<HTMLInputElement>};\n\nexport const FilterSelector = (props: Props) => {\n const {rowData} = props;\n const {attribute: {attrType} = {}} = (rowData || {}) as RowData;\n const options = isMatchRuleAttrType(attrType)\n ? [FilterOptions.EQUALS].map((value) => ({value, label: capitalize(getFilterOptionLabel(value))}))\n : null;\n\n return <AttributesFilterSelector {...props} options={options} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n divider: {\n marginBottom: '14px',\n marginRight: '16px',\n background: '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 as FormControlLabel} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\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 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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useCallback, useMemo, useState, memo, useEffect} from 'react';\nimport {pluck, propOr} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton, SideButtonsPanel, SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n CrosswalksAttrTypes,\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n Order,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n SortingField\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from './icons/potential-matches-icon.svg';\nimport FindMatchesIcon from './icons/find-matches-icon.svg';\nimport NotAMatchIcon from './icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../../constants/views';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {ValuesEditor} from './ValuesEditor/ValuesEditor';\nimport {MatchesOptions, PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {MatchesAttributesFiltersButton} from './MatchesAttributesFiltersButton/MatchesAttributesFiltersButton';\n\nimport {ADDITIONAL_SORT_OPTIONS_DATA, DEFAULT_SORT_OPTIONS, getSortOptionIdFromData} from '../../helpers/sortHelpers';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\n\nconst sourceSystemsComponents = {\n ValuesEditor\n};\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n isLoaded: boolean;\n savedState: PotentialMatchesSavedState;\n onUpdateSavedState: (stateToSave: PotentialMatchesSavedState) => void;\n};\n\nexport const RightSidePanel = memo(({config, isLoaded, savedState, onUpdateSavedState}: Props) => {\n const styles = useStyles();\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 resetActive = useCallback(() => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n\n const entityType = getEntityType(metadata, entity?.type);\n\n const getAttributeTypes = (entityType) =>\n (entityType.attributes || []).concat(entityType.analyticsAttributes || []).filter(isReadableAttribute);\n\n const attributeTypes = useMemo(() => getAttributeTypes(entityType), [entityType]);\n\n const matchRulesAttributes = useMemo(() => {\n const matchRulesAttributes = [\n {...MatchRulesAttrTypes.matchRules, check: hasMatchRulesWithoutML},\n {...MatchRulesAttrTypes.MLRecommendedMatch, check: hasMlMatchRule}\n ];\n\n return matchRulesAttributes.reduce((attributes, {check, ...attrType}) => {\n check(entityType) && attributes.push(attrType);\n return attributes;\n }, []);\n }, [entityType]);\n\n const potentialMatchesAttributeTypes = useMemo(\n () => [...matchRulesAttributes, ...attributeTypes],\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 elements = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.PotentialMatches,\n icon: PotentialMatchesIcon,\n tooltipTitle: i18n.text('Potential Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Potential Matches'),\n rightContent: (\n <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 const headerProps = useMemo(\n () => ({...elements[active]?.headerProps, onClose: resetActive}),\n [resetActive, active, elements]\n );\n\n const {sorting, filters, options, onSorting} = elements[active] || {};\n\n useEffect(() => {\n if (!isLoaded) return;\n const showSidePanel = propOr(true, 'showSidePanel')(savedState);\n setActive(showSidePanel ? ActivePanel.PotentialMatches : null);\n }, [isLoaded]);\n\n useEffect(() => {\n if (!isLoaded) return;\n onUpdateSavedState({showSidePanel: active !== null});\n }, [active]); // eslint-disable-line\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n options={options}\n sorting={sorting}\n onSorting={onSorting}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pluck('buttonProps', elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n minWidth: '90px',\n padding: '8px 12px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@material-ui/icons/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@material-ui/icons/TableChartOutlined';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype Mode = {\n id: ComparisonViewMode;\n tooltipTitle: string;\n title: string;\n Icon: React.ElementType;\n disabled?: boolean;\n};\n\nconst MODES: Mode[] = [\n {\n id: ComparisonViewMode.COLUMNS,\n tooltipTitle: i18n.text('Column'),\n title: i18n.text('Column'),\n Icon: ViewColumnRoundedIcon\n },\n {\n id: ComparisonViewMode.TABLE,\n tooltipTitle: i18n.text('Table'),\n title: i18n.text('Table'),\n Icon: TableRowsOutlinedIcon\n }\n];\n\ntype Props = {\n className?: string;\n};\n\nconst ComparisonViewModeSwitcher = ({className}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode, selectedItems} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isTableOnly = selectedItems.length > MAX_PROFILES_TO_COMPARE;\n const getMode = (baseMode: Mode) =>\n baseMode.id === ComparisonViewMode.COLUMNS\n ? {\n ...baseMode,\n disabled: isTableOnly,\n tooltipTitle: isTableOnly\n ? i18n.text('Column view supports maximum ${maxProfiles} profiles', {\n maxProfiles: MAX_PROFILES_TO_COMPARE\n })\n : baseMode.tooltipTitle\n }\n : baseMode;\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES.map(getMode)}\n modeId={comparisonViewMode}\n onChange={setComparisonViewMode}\n />\n );\n};\n\nexport default ComparisonViewModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n padding: '0 8px 0 16px',\n backgroundColor: '#fff',\n '& $splitter': {\n height: '32px',\n marginRight: '16px',\n marginLeft: '4px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n },\n title: {\n fontSize: '16px',\n fontWeight: 400,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n color: theme.palette.text.primary\n },\n clearAllButton: {\n marginLeft: '16px'\n },\n mergeButton: {\n marginRight: '12px'\n },\n total: {\n color: theme.palette.text.secondary\n },\n splitter: {},\n actionSplitter: {\n height: '32px',\n margin: '0 8px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {prop, map, not} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {BasicViewHeader, ColumnsSettings, DropDownMenuItem, SettingsMenu, Spacer} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {\n getActionPermissionForMatches,\n Entity,\n Metadata,\n isDataTenantEntity,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport ComparisonViewModeSwitcher from '../ComparisonViewModeSwitcher/ComparisonViewModeSwitcher';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport {Divider as Divider} from '@material-ui/core';\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\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity]\n );\n\n const hasSelectedItems = selectedItems.length !== 0;\n\n const handleClearSelection = () => {\n setSelectedItems([]);\n };\n\n const handleToggleShowOvValue = useCallback(() => {\n onChangeShowNonOv(not);\n }, [onChangeShowNonOv]);\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: !showNonOv,\n selectable: true,\n text: i18n.text('Show only OV'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <Typography className={styles.title}>\n <span>{i18n.text('Match Review')}</span>\n {hasSelectedItems && (\n <span className={styles.total}>\n {' '}\n ({selectedItems.length}\n {limitSelection && '/' + limitSelection})\n </span>\n )}\n </Typography>\n {hasSelectedItems && (\n <Button onClick={handleClearSelection} className={styles.clearAllButton} color=\"primary\">\n {i18n.text('Clear All')}\n </Button>\n )}\n <Spacer />\n {hasSelectedItems && (\n <>\n <ActionsPanel actions={actions} numberOfButtons={2} />\n <Divider orientation={'vertical'} classes={{vertical: styles.actionSplitter}} />\n </>\n )}\n <SettingsMenu items={settingItems} 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 '@material-ui/core/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 '@material-ui/core/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 as Tooltip} from '@material-ui/core';\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 '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n menuButtonWrapper: {\n display: 'none',\n position: 'absolute',\n top: '-4px',\n right: '-14px'\n },\n headCell: {\n display: 'flex',\n position: 'relative',\n 'th:hover &': {\n '& $menuButtonWrapper': {\n display: 'block'\n }\n }\n },\n active: {\n display: 'block'\n }\n});\n","import React, {useContext, useRef} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\nimport {ColumnDataContext} from '../../../../contexts/ColumnsDataContext';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\ntype Props = {\n label?: string;\n id: string;\n hideable?: boolean;\n};\n\nexport const HeadCellRenderer = ({label, id, hideable}: Props) => {\n const styles = useStyles();\n const {setAnchor, setHoveredId, hoveredId} = useContext(ColumnDataContext);\n const ref = useRef<HTMLDivElement>();\n const openConfigColumnPopup = () => {\n setAnchor(ref.current);\n setHoveredId(id);\n };\n return (\n <div className={styles.headCell}>\n {label}\n {hideable !== false && (\n <div className={classnames(styles.menuButtonWrapper, {[styles.active]: hoveredId === id})} ref={ref}>\n <SmallIconButton icon={MoreVertIcon} onClick={openConfigColumnPopup} size={'S'} />\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {ArrowExpandButton} from '@reltio/components';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {ExpandedContext} from '../ExpandedContext';\nimport {HeadCellRenderer} from './HeadCellRenderer';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n attributeType: AttributeType;\n id: string;\n};\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType, id}: Props) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <ArrowExpandButton expanded={expanded} onClick={onExpandClick} className={styles.arrowButton} />\n <div className={styles.complexAttributesHeadLabel}>\n <HeadCellRenderer label={label} id={id} />\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const HoveredEntityContext = React.createContext<{\n hoveredEntity: string;\n resetHoveredEntity: () => void;\n }>({\n hoveredEntity: null,\n resetHoveredEntity: () => {}\n });\n\nHoveredEntityContext.displayName = 'HoveredEntityContext';\n","import React, {memo} from 'react';\nimport {prop} from 'ramda';\n\nimport {Entity, isDataTenantEntity, 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';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {mainEntity?: Entity; currentEntity?: Entity; matchRules?: string[]}) => void;\n classes?: {\n actionButton?: string;\n moreOptions?: string;\n };\n mode?: 'normal' | 'hover';\n};\n\nconst MatchesControls = ({\n value: {mainEntity, entity, matchRules, permission},\n onActionsMenuClose,\n onActionsMenuOpen,\n openAddRelationDialog,\n classes = {},\n mode = 'hover'\n}: Props) => {\n const {canMerge, canAddRelation, canMark} = permission;\n const hasDTEntity = [mainEntity, entity].some(isDataTenantEntity);\n\n const 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 && (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 }\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 '@material-ui/core/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 {useState, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propSatisfies, allPass, includes} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const useWorkflowTasks = ({entity, match}: Props) => {\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri: string = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState<WorkflowTaskData[]>([]);\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n return {enabled: !!workflowPath, loading: requestIsInProgress, tasks, loadTasks};\n};\n","import React from 'react';\n\nexport const WorkflowTasksAvailabilityContext = React.createContext<(entityUri: string, value: boolean) => void>(\n () => {}\n);\n\nWorkflowTasksAvailabilityContext.displayName = 'WorkflowTasksAvailabilityContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden',\n margin: '-16px'\n },\n assigneeSelector: {},\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {pick} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n PotentialMatchReviewCard,\n SmallIconButton,\n DropDownMenuButton,\n DropDownSelector,\n useWorkflowAssignee,\n WorkflowComments,\n useMergeAllRequest,\n useMarkAsNotMatchRequest\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\n\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {WorkflowTasksAvailabilityContext} from '../ComparisonTable/WorkflowTasksAvailabilityContext';\n\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task: WorkflowTaskData) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const WorkflowCard = ({entity, match}: Props) => {\n const styles = useStyles();\n const {tasks, loadTasks} = useWorkflowTasks({entity, match});\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\n const {sendMergeAllRequest: merge} = useMergeAllRequest({\n entity,\n entities: [match.object]\n });\n const {sendMarkAsNotMatchRequest: notMatch} = useMarkAsNotMatchRequest({\n entity,\n entities: [match.object]\n });\n const mapping = {\n Merge: merge,\n NotAMatch: notMatch\n };\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const matchEntityUri = getEntityUriFromMatchObject(match);\n useEffect(() => {\n setWorkflowTaskAvailability?.(matchEntityUri, !!task);\n }, [setWorkflowTaskAvailability, matchEntityUri, task]);\n const actions = ((task && task.possibleActions) || []).map(({action, label}) => ({\n text: label,\n onClick: mapping[action]\n }));\n const {assignee, getAssignees, updateAssignee, updateRequestIsInProgress} = useWorkflowAssignee(task || {});\n const Actions =\n actions.length > 0 ? (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n menuId=\"custom-actions\"\n menuItems={actions}\n />\n ) : null;\n return task ? (\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <DropDownSelector\n className={styles.assigneeSelector}\n enabled={!updateRequestIsInProgress || assignee}\n getOptions={getAssignees}\n onChange={updateAssignee}\n hideSelectedOptions={false}\n label={i18n.text('Assigned to')}\n value={assignee}\n defaultOptions={true}\n />\n </div>\n <WorkflowComments {...getCommentsInfoFromTasks(task)} />\n </PotentialMatchReviewCard>\n </div>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\n\nexport const DEFAULT_ROWS = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n 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: 'sources',\n label: i18n.text('Sources'),\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'crosswalks',\n label: i18n.text('Crosswalks'),\n modes: [ComparisonViewMode.COLUMNS]\n }\n];\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n itemContainer: {\n width: '18px',\n height: '18px'\n },\n item: {\n width: '18px',\n height: '18px',\n background: 'none',\n fontSize: '1rem'\n }\n});\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {SourceIcon, useCrosswalkColor} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n className?: string;\n showTooltip?: boolean;\n};\n\nconst ColoredSourceIcon = ({className, crosswalk, showTooltip = true}: Props) => {\n const styles = useStyles();\n const color = useCrosswalkColor(crosswalk);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const content = (\n <div className={classnames(styles.itemContainer, className)} style={{background: color}}>\n <SourceIcon sourceType={crosswalk.type} className={styles.item} />\n </div>\n );\n return showTooltip ? <Tooltip title={getSourceSystemLabel(metadata, crosswalk.type)}>{content}</Tooltip> : content;\n};\n\nexport default memo(ColoredSourceIcon);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n crosswalk: {\n marginBottom: '8px'\n },\n crosswalkIcon: {\n marginRight: '5px'\n },\n labelContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n spacer: {\n flex: 1\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport ColoredSourceIcon from '../../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: NestedAttributeValue & {\n value: NestedAttributeValue['value'] & {\n crosswalk: Crosswalk;\n };\n };\n};\n\nconst LabelRenderer = ({attributeValue}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const crosswalk = attributeValue.value.crosswalk;\n return (\n <div className={styles.labelContainer}>\n <ColoredSourceIcon className={styles.crosswalkIcon} crosswalk={crosswalk} showTooltip={false} />\n <div>{getSourceSystemLabel(metadata, crosswalk.type)}</div>\n <div className={styles.spacer} />\n <div>{crosswalk.value}</div>\n </div>\n );\n};\n\nexport default LabelRenderer;\n","import React, {useMemo} from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {\n AttributeType,\n Crosswalk,\n CrosswalksAttrTypes,\n getSourceSystemLabel,\n Metadata,\n NestedAttributeValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nimport withExpanded from '../../withExpanded';\nimport LabelRenderer from './LabelRenderer';\nimport {useStyles} from './styles';\nimport {useSelector} from 'react-redux';\n\nexport const ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n attributeType: AttributeType;\n };\n};\n\nconst getFakeAttributeValueForCrosswalk = (crosswalk: Crosswalk, attributeType: AttributeType, metadata: Metadata) => {\n return attributeType.attributes.reduce(\n (nestedAttributeValue: NestedAttributeValue, subAttributeType) => {\n if (subAttributeType.uri === CrosswalksAttrTypes.sourceSystems.uri) {\n nestedAttributeValue.value[subAttributeType.uri] = getSourceSystemLabel(metadata, crosswalk.type);\n } else if (crosswalk[subAttributeType.uri]) {\n nestedAttributeValue.value[subAttributeType.uri] = crosswalk[subAttributeType.uri];\n }\n return nestedAttributeValue;\n },\n {value: {crosswalk}, uri: crosswalk.uri} as NestedAttributeValue\n );\n};\n\nconst CrosswalksRenderer = ({value: {crosswalks, attributeType}}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeValues = useMemo(\n () => crosswalks?.map((crosswalk) => getFakeAttributeValueForCrosswalk(crosswalk, attributeType, metadata)),\n [metadata, crosswalks, attributeType]\n );\n return attributeValues ? (\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n LabelRenderer={LabelRenderer}\n valueContainerClassName={styles.crosswalk}\n />\n ) : null;\n};\n\nexport default CrosswalksRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '-8px'\n },\n crosswalkIcon: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n});\n","import React from 'react';\nimport {Crosswalk} from '@reltio/mdm-sdk';\nimport ColoredSourceIcon from '../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Crosswalk[];\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n return value ? (\n <div className={styles.wrapper}>\n {value.map((crosswalk) => (\n <ColoredSourceIcon key={crosswalk.uri} className={styles.crosswalkIcon} crosswalk={crosswalk} />\n ))}\n </div>\n ) : null;\n};\n\nexport default SourcesRenderer;\n","import {\n always,\n chain,\n cond,\n filter,\n identity,\n last,\n map,\n path,\n pathOr,\n pipe,\n prop,\n split,\n values,\n when,\n pick\n} from 'ramda';\n\nimport {\n AttributeType,\n CrosswalksAttrTypes,\n EntitiesMap,\n Entity,\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isOv,\n MatchedValues,\n Match,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n searchUriToAttrUri\n} from '@reltio/mdm-sdk';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {HeadCellRenderer} from '../cell-renderers/HeadCellRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\nimport CrosswalksRenderer from '../cell-renderers/CrosswalksRenderer/CrosswalksRenderer';\nimport {ComparisonViewMode} from '../../../constants/views';\nimport SourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\n\nexport type RowData = {\n id: string;\n label: string;\n cellRenderer?: (props: unknown) => JSX.Element;\n headCellRenderer?: (props: unknown) => JSX.Element;\n rowClassName?: string;\n attributeType?: AttributeType;\n hideable?: boolean;\n};\n\nconst additionalPropsForDefaultRows = {\n profile: {\n cellRenderer: EntityCard,\n headCellRenderer: HeadCellRenderer,\n label: ''\n },\n matchRules: {\n cellRenderer: MatchMethod,\n headCellRenderer: HeadCellRenderer\n },\n workflowCard: {\n cellRenderer: WorkflowCardRenderer,\n headCellRenderer: HeadCellRenderer\n },\n sources: {\n cellRenderer: SourcesRenderer,\n headCellRenderer: HeadCellRenderer\n },\n entityId: {\n headCellRenderer: HeadCellRenderer\n },\n crosswalks: {\n cellRenderer: CrosswalksRenderer,\n headCellRenderer: ComplexAttributesHeadRenderer,\n attributeType: {\n uri: 'crosswalks',\n name: 'crosswalks',\n type: 'Nested',\n attributes: Object.values(CrosswalksAttrTypes)\n }\n },\n score: {\n headCellRenderer: HeadCellRenderer\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} = 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.crosswalks;\n case 'crosswalks':\n return {\n crosswalks: object.crosswalks,\n attributeType: rowData.attributeType\n };\n case 'workflowCard':\n return {\n entity,\n match\n };\n case 'score':\n return matchScore || 0;\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, getEntityColor, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\n\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: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n};\n\nconst EntityCard = ({value: {entity, config, isSelectedEntity, onRemove, ...rest}}: Props) => {\n const color = getEntityColor(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 as Popover} from '@material-ui/core';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nexport enum Action {\n INSERT_BELOW = 'below',\n INSERT_ABOVE = 'above',\n HIDE = 'hide'\n}\n\nconst TEXT = {\n [Action.INSERT_BELOW]: i18n.text('Insert row below'),\n [Action.INSERT_ABOVE]: i18n.text('Insert row above'),\n [Action.HIDE]: i18n.text('Hide row')\n};\n\nconst renderListItem = (action: Action, handler: () => void, index: number) => (\n <ListItem button component={'div'} key={index} onClick={handler}>\n <ListItemText primary={TEXT[action]} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n);\n\ntype Props = {\n open?: boolean;\n anchorEl: HTMLElement;\n onClick: (action: Action) => void;\n onClose: () => void;\n actions: Action[];\n};\n\nconst ConfigRowPopup = ({open, anchorEl, onClick, onClose, actions}: Props) => {\n const getClickHandler = (action) => () => {\n onClick(action);\n };\n\n return (\n <Popover open={open} anchorEl={anchorEl} onClose={onClose}>\n <List component=\"div\">\n {actions.map((action, index) => renderListItem(action, getClickHandler(action), index))}\n </List>\n </Popover>\n );\n};\n\nexport default ConfigRowPopup;\n","import {GroupedColumns, GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\nconst deepFilter = (nodes: GroupedColumnData[], filter: (col: GroupedColumns) => boolean) =>\n nodes.filter(filter).map((node: GroupedColumns) =>\n node.columns\n ? {\n ...node,\n columns: deepFilter(node.columns, filter)\n }\n : node\n );\n\nexport const getAdditionalRows = (\n groupColumnsData: GroupedColumnData[],\n headColumns: string[] = []\n): GroupedColumnData[] =>\n deepFilter(groupColumnsData, (column: GroupedColumns) => !headColumns.some((elemId) => column.id === elemId));\n","import React, {useEffect, useMemo, useState, memo} from 'react';\nimport ConfigRowPopup, {Action} from './ConfigRowPopup';\nimport {ColumnsSettingsPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getAdditionalRows} from './helpers';\nimport {GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n actions: Action[];\n id: string;\n selectedAttributes?: string[];\n setSelectedAttributes?: (cols: string[]) => void;\n groupColumnsData: GroupedColumnData[];\n};\n\nconst AddRowPopups = ({\n anchorEl,\n onClose,\n actions,\n id,\n selectedAttributes,\n setSelectedAttributes,\n groupColumnsData\n}: Props) => {\n const groupedItems = useMemo(() => getAdditionalRows(groupColumnsData, selectedAttributes), [\n groupColumnsData,\n selectedAttributes\n ]);\n const [action, setAction] = useState<Action>();\n const [isOpenConfigPopup, setIsOpenConfigPopup] = useState(false);\n useEffect(() => {\n if (anchorEl) {\n setIsOpenConfigPopup(true);\n }\n }, [anchorEl]);\n const onClosePopup = () => {\n setIsOpenConfigPopup(false);\n if (!action) onClose();\n };\n const onChooseAction = (action: Action) => {\n if (action === Action.HIDE) {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n if (index > -1) {\n newAttributes.splice(index, 1);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n }\n return;\n }\n setAction(action);\n setIsOpenConfigPopup(false);\n };\n\n const closeAddRowPopup = () => {\n setAction(null);\n setIsOpenConfigPopup(false);\n onClose();\n };\n const addRowHandler = ({id: newId}: {id: string}) => {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n const newIndex = action === Action.INSERT_ABOVE ? index : index + 1;\n newAttributes.splice(newIndex, 0, newId);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n };\n\n return (\n <>\n <ConfigRowPopup\n open={isOpenConfigPopup}\n anchorEl={anchorEl}\n actions={actions}\n onClose={onClosePopup}\n onClick={onChooseAction}\n />\n <ColumnsSettingsPopup\n hideCheckBox\n anchorEl={action ? anchorEl : undefined}\n columnsData={groupedItems}\n selectedColumns={selectedAttributes}\n onColumnClick={addRowHandler}\n onClose={closeAddRowPopup}\n title={i18n.text('Add row')}\n />\n </>\n );\n};\n\nexport default memo(AddRowPopups);\n","import {useCallback, useState} from 'react';\nimport {any, map, pipe} from 'ramda';\nimport {getEntityUriFromMatchObject} from '@reltio/mdm-sdk';\n\nexport const useWorkflowTasksAvailability = (matches) => {\n const [workflowTasksAvailabilityMap, setWorkflowTasksAvailabilityMap] = useState<{[entityUri: string]: boolean}>(\n {}\n );\n const setWorkflowTaskAvailability = useCallback((entityUri: string, value: boolean) => {\n setWorkflowTasksAvailabilityMap((map) => ({\n ...map,\n [entityUri]: value\n }));\n }, []);\n const isThereAnyTask: boolean = pipe(\n map(getEntityUriFromMatchObject),\n any((uri) => workflowTasksAvailabilityMap[uri])\n )(matches);\n\n return {isThereAnyTask, setWorkflowTaskAvailability};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst firstColumnColor = 'rgb(245, 245, 245)';\nconst secondColumnColor = 'rgb(224, 238, 249)';\nconst firstRowHeight = 141;\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} from 'react';\nimport classnames from 'classnames';\nimport {chain, groupBy, insert, nth, pipe, prop, remove, toPairs} from 'ramda';\nimport {\n EntitiesMap,\n Entity,\n getFirstLevelSearchUri,\n isAttributeSearchUri,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n Match\n} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {replaceSubAttributesWithParent} from './helpers/attributesHelpers';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport AddRowPopups from './AddRowPopups';\nimport {ColumnDataContext} from '../../contexts/ColumnsDataContext';\nimport {Action} from './AddRowPopups/ConfigRowPopup';\nimport {HoveredEntityContext} from './HoveredEntityContext';\nimport {WorkflowTasksAvailabilityContext} from './WorkflowTasksAvailabilityContext';\nimport {useWorkflowTasksAvailability} from '../../hooks/useWorkflowTasksAvailability';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n entity: Entity;\n metadata: Metadata;\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n selectedItems: Match[];\n setSelectedItems: (items: Match[]) => void;\n selectedColumns: string[];\n setSelectedColumns: (items: string[]) => void;\n columnsData: GroupedColumnData[];\n showNonOv?: boolean;\n};\n\nconst actions = [Action.INSERT_BELOW, Action.INSERT_ABOVE, Action.HIDE];\n\nexport const ComparisonTable = ({\n className,\n entity,\n metadata,\n config,\n selectedItems,\n setSelectedItems,\n selectedColumns,\n setSelectedColumns,\n entitiesMap = {},\n columnsData: allColumnsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n const matches = useMemo(() => selectedItems.slice(-4), [selectedItems]);\n const selectedColumnsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(selectedColumns),\n [selectedColumns]\n );\n\n const rowsData = useMemo(\n () => getTableRowsData(metadata, entity, selectedColumnsWithoutSubAttributes),\n [metadata, entity, selectedColumnsWithoutSubAttributes]\n );\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem, showNonOv),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem, showNonOv]\n );\n\n const [expandedMap, setExpandedMap] = useState<{\n [attrTypeUri: string]: boolean;\n }>({});\n\n const onExpandType = useCallback((attrTypeUri: string) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n const headCellData = useMemo(\n () => ({\n setHoveredId,\n setAnchor,\n hoveredId\n }),\n [hoveredId]\n );\n\n const onClosePopup = useCallback(() => {\n setHoveredId(null);\n setAnchor(null);\n }, []);\n\n const handleMoveRow = (dragId: string, hoverId: string) => {\n const newArr: Array<[string, string[]]> = pipe(\n groupBy((item) => (isAttributeSearchUri(item) ? getFirstLevelSearchUri(item) : item)),\n toPairs\n )(selectedColumns);\n\n const dragIndex = newArr.findIndex(([searchUri]) => searchUri === dragId);\n const hoverIndex = newArr.findIndex(([searchUri]) => searchUri === hoverId);\n const dragRow = newArr[dragIndex];\n if (dragRow) {\n setSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = selectedItems.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = selectedItems.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = selectedItems[dragIndex];\n if (dragColumn) {\n setSelectedItems(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(selectedItems));\n }\n };\n\n const selectedAttributeUris: string[] = useMemo(() => rowsData.map(prop('id')), [rowsData]);\n\n const setHoveredEntityHandler = (columnValue) => {\n setHoveredEntity(columnValue?.entityId || null);\n };\n\n const resetHoveredEntity = useCallback(() => {\n setHoveredEntity(null);\n }, []);\n\n const hoveredEntityContextValue = useMemo(\n () => ({\n hoveredEntity,\n resetHoveredEntity\n }),\n [hoveredEntity, resetHoveredEntity]\n );\n\n const {isThereAnyTask, setWorkflowTaskAvailability} = useWorkflowTasksAvailability(matches);\n const workflowCardRowClassname = isThereAnyTask ? undefined : styles.collapsedRow;\n const displayedRowsData = useMemo(\n () =>\n rowsData.map((rowData) =>\n workflowCardRowClassname && rowData.id === 'workflowCard'\n ? {\n ...rowData,\n rowClassName: workflowCardRowClassname\n }\n : rowData\n ),\n [rowsData, workflowCardRowClassname]\n );\n\n return (\n <div className={classnames(styles.container, className)}>\n <div className={styles.comparisonTableWrapper}>\n <HoveredEntityContext.Provider value={hoveredEntityContextValue}>\n <ExpandedContext.Provider value={expandedContextValue}>\n <ColumnDataContext.Provider value={headCellData}>\n <WorkflowTasksAvailabilityContext.Provider value={setWorkflowTaskAvailability}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={displayedRowsData}\n columnsData={columnsData}\n theadRowsNumber={1}\n onMoveRow={handleMoveRow}\n onMoveColumn={handleMoveColumn}\n setHoveredColumn={setHoveredEntityHandler}\n resetHoveredColumn={resetHoveredEntity}\n />\n </WorkflowTasksAvailabilityContext.Provider>\n </ColumnDataContext.Provider>\n </ExpandedContext.Provider>\n </HoveredEntityContext.Provider>\n {!matches.length && (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SELECT_ATTRIBUTES}\n variant={EMPTY_STATE_VARIANTS.embedded}\n text={i18n.text('Select profiles')}\n secondaryText={i18n.text(\n 'Select one or more profiles to compare it with the current profile'\n )}\n />\n </div>\n )}\n <AddRowPopups\n id={hoveredId}\n anchorEl={anchor}\n onClose={onClosePopup}\n actions={actions}\n selectedAttributes={selectedAttributeUris}\n setSelectedAttributes={setSelectedColumns}\n groupColumnsData={allColumnsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {EntitiesMap, Match, Entity, Metadata, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport ComparisonTable from '../ComparisonTable';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n selectedColumns: string[];\n setSelectedColumns: (newColumns: string[]) => void;\n selectedItems: Match[];\n setSelectedItems: (newItems: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n columnsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedColumns,\n setSelectedColumns,\n selectedItems,\n setSelectedItems,\n config,\n metadata,\n entity,\n entitiesMap = {},\n columnsData,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n columnsData={columnsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {makeStyles, fade, lighten, Theme} from '@material-ui/core/styles';\nimport {CSSProperties} from '@material-ui/styles';\n\nconst defaultWrapperStyles: CSSProperties = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow: CSSProperties = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color: string, hoveredColor?: string) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${fade(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${fade(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 114, 206)', 0.88);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCloseIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 24px 0 8px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n '&::after': {\n ...textOverflow,\n width: '30px',\n backgroundImage: 'none'\n }\n },\n firstHeadCell: {\n paddingLeft: '42px'\n },\n headCellWithEntity: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n rowCell: {\n fontSize: '12px',\n overflow: 'hidden'\n },\n rowCellFirstColumn: {\n height: '100%'\n },\n firstEntityCell: {\n maxHeight: '200px'\n },\n entityRowCell: {\n fontSize: '12px',\n position: 'relative'\n },\n entityRowCellSelected: getColoredRowCellStyle(entityBackground),\n rowCellHighlighted: getColoredRowCellStyle(highlightBackground),\n rowCellSelected: getColoredRowCellStyle(lightPrimaryBackground, lightPrimaryBackgroundHovered),\n defaultWrapper: {\n ...defaultWrapperStyles,\n '&::after': {\n ...textOverflow,\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n }\n }\n },\n hoveredDefaultWrapper: {\n ...defaultWrapperStyles\n },\n entityWrapper: {\n paddingLeft: '12px'\n },\n profileWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n position: 'relative'\n },\n entityLabel: {\n ...link,\n fontWeight: 500\n },\n commentsContainer: {\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 1,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '15px',\n backgroundColor: '#fff',\n '&$checked': {\n backgroundColor: lightPrimaryBackground\n }\n },\n checked: {},\n matchRulesWrapper: {\n padding: '8px 15px 8px 10px',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIcon: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n opacity: 0.38\n },\n ovFalse: theme.inactive\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 '@material-ui/icons/DragIndicator';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {MatchesTableContextProps, MatchesTableRowValue} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n rowIndex: number;\n rowValue: MatchesTableRowValue;\n onRemove: () => void;\n entityToMatch: Entity;\n isRowSelected: boolean;\n hoverRowIndex: number;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex\n}: Props) => {\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowRemovable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowRemovable\n })}\n >\n {isRowHovered && <DragIndicatorIcon className={styles.dragIcon} />}\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <SmallIconButton\n icon={CloseIcon}\n size=\"XS\"\n className={classnames(styles.rowCloseIcon, {[styles.hidden]: !isRowRemovable})}\n onClick={onRemove}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nexport default withTableContext(\n ({onToggleSelect, entityToMatch}: MatchesTableContextProps, {rowValue, value}: Props) => {\n const {rawValue: match} = rowValue;\n return {\n onRemove: () => onToggleSelect(match),\n isRowRemovable: value !== entityToMatch,\n entityToMatch\n };\n }\n)(EntityProfileRenderer);\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n headIndex: number;\n [key: string]: unknown;\n};\n\nconst ProfileHeadCellRenderer = (props: Props) => {\n const isFirstColumn = props.headIndex === 0;\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, {[styles.firstHeadCell]: isFirstColumn})}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withTableContext()(withFilterAtBottom(ProfileHeadCellRenderer));\n","import {MatchRulesBlock} from '@reltio/components';\nimport {EntitiesMap, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport React, {ComponentProps} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n metadata: Metadata;\n match: Match;\n entitiesMap: EntitiesMap;\n entity: Entity;\n variant?: ComponentProps<typeof MatchRulesBlock>['variant'];\n };\n};\n\nconst MatchRulesRenderer = ({value}: Props) => {\n const styles = useStyles();\n if (!value) {\n return null;\n }\n const {metadata, match, entitiesMap, entity, variant} = value;\n return (\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n variant={variant}\n metadata={metadata}\n entitiesMap={entitiesMap}\n match={match}\n entity={entity}\n />\n </div>\n );\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport 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 {Crosswalk} from '@reltio/mdm-sdk';\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n };\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonSourcesRenderer value={value.crosswalks} />\n </div>\n );\n};\n\nexport default SourcesRenderer;\n","import {assoc, map, pipe, prop, 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} from '@reltio/mdm-sdk';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../types/potentialMatchesTypes';\nimport {ComparisonViewMode} from '../../constants/views';\nimport SourcesRenderer from './cell-renderers/SourcesRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\ntype RowValue = {\n entity: Entity;\n metadata: Metadata;\n match: Match;\n entitiesMap?: EntitiesMap;\n matchScore: number;\n};\n\nconst getRowValueForColumn = (\n columnData: MatchesColumnsData,\n {entity, metadata, match, entitiesMap, matchScore}: RowValue,\n 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 return {crosswalks: entity.crosswalks};\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 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 from 'react';\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/attributesHelpers';\nimport {MatchesTableContextProps, RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({selected}: MatchesTableContextProps, {columnData, rowValue, cell}: Props) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden',\n background: theme.palette.background.paper\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n },\n 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}));\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {either, evolve, move} from 'ramda';\nimport {\n BasicTable,\n defaultGetRowCellHeight,\n RowCellAutoSizer,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Entity,\n Metadata,\n Match,\n EntitiesMap,\n getActionPermissionForMatch,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {MatchesColumnsData, RowCellRendererProps, MatchesTableContextProps} from '../../types/potentialMatchesTypes';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useStyles} from './styles';\nimport MatchControls from '../MatchControls/MatchControls';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\ntype Sorting = {\n field: string;\n order: 'asc' | 'desc';\n};\n\ntype Filter = {\n filter: string;\n value: unknown[];\n};\n\ntype Props = {\n entity?: Entity;\n matches: Match[];\n metadata: Metadata;\n columnsData: MatchesColumnsData[];\n 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 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 {getRowHeight, CellRenderer: EntityCellRenderer} = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT\n });\n\n const entityRowHeight = getRowHeight(0);\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(EntityCellRenderer);\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [tableColumnsData, EntityCellRenderer]);\n\n const 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();\n\n useLayoutEffect(clearHeightsCache, [matches]);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n const onRowHover = useCallback(\n (rowIndex: number) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const hoveredRowRightContent = useMemo(() => {\n if (hoverRowIndex === null) {\n return null;\n }\n\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n if (!hoveredMatch) {\n return null;\n }\n\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n <MatchControls\n value={{\n mainEntity: entity,\n entity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n permission\n }}\n openAddRelationDialog={openAddRelationDialog}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n classes={{\n actionButton: styles.actionButton,\n moreOptions: styles.actionButton\n }}\n />\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n entity,\n config,\n metadata,\n onActionsMenuOpen,\n onActionsMenuClose,\n openAddRelationDialog\n ]);\n\n const renderRowCell = useCallback(\n (props: RowCellRendererProps) => {\n switch (props.columnData.id) {\n case 'profile':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n },\n [changeRowCellHeight, hoverRowIndex, hoveredRowRightContent, basicTableRef]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer,\n dragColumnHead: styles.dragColumnHead,\n dragColumnBody: styles.dragColumnBody\n }),\n [styles]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n 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} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue = (EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element) => (\n HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element\n) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <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 id=\"entityCell\"\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n};\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propEq, identity, has, move} from 'ramda';\nimport {\n Entity,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DragAndDrop, useCollaboration, CollaborationContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {TableHeader} from '../TableHeader/TableHeader';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnData';\nimport ComparisonView from '../ComparisonView';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_ROWS} from '../../constants/defaultRows';\nimport {useFirstPotentialMatches} from '../../hooks/useFirstPotentialMatches';\nimport {useSpinnerAndReloadData} from '../Actions/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n 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 {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n\n const collaboration = useCollaboration({objectIds});\n\n const styles = useStyles();\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_ROWS,\n metadata,\n entityTypeUri: entity.type\n });\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>(defaultColumns);\n const [showNonOv, setShowNonOv] = useState(false);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const 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 selectedItems: selectedItems || [],\n setSelectedItems,\n config,\n selectedColumns: visibleColumns,\n setSelectedColumns: setVisibleColumns,\n entitiesMap,\n columnsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n 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]); // 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 <CollaborationContext.Provider value={collaboration}>\n {comparisonViewMode === ComparisonViewMode.COLUMNS ? (\n <DragAndDrop>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n {isLoaded && (\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n )}\n </ColumnHandlerContext.Provider>\n </DragAndDrop>\n ) : (\n isLoaded && <MatchesTable {...matchesTableProps} />\n )}\n </CollaborationContext.Provider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useEffect, useMemo} from 'react';\nimport {Entity, Order} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatches} from './useMatches';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems} = useViewStateActions();\n\n const entityUri = prop('uri', entity);\n const dataTenant = prop('dataTenant', entity);\n const initialRequestParam = useMemo(\n () => ({\n enabled: !!entityUri,\n entity,\n filter: '',\n page: 0,\n sorting: {\n field: 'score',\n order: Order.desc\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatches(initialRequestParam);\n\n useEffect(() => {\n setSelectedItems(matches);\n }, [matches, setSelectedItems]);\n};\n","import {getEntityTypeMatchAttributes, Metadata} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {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 '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n flexBox: {\n display: 'flex',\n alignItems: 'center'\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 4px'\n }\n});\n","import {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport React, {useCallback} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport TableIcon from './TableIcon.svg';\nimport {useStyles} from './styles';\n\nexport const ChangeModeConfirmation = () => {\n const {selectedItems, comparisonViewMode, limitSelection} = useViewState();\n const {setComparisonViewMode, deleteExtraMatches} = useViewStateActions();\n const styles = useStyles();\n const onSave = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.TABLE);\n }, [setComparisonViewMode]);\n const open = comparisonViewMode === ComparisonViewMode.COLUMNS && selectedItems.length > limitSelection;\n const title = i18n.text('Switch to table view');\n const content = (\n <div className={styles.flexBox}>\n {i18n.text('Please switch to')}\n <div className={styles.icon}>\n <TableIcon />\n </div>\n {i18n.text('Table View to compare more than ${max} profiles', {max: MAX_PROFILES_TO_COMPARE})}\n </div>\n );\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n onSave={onSave}\n onDiscard={deleteExtraMatches}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n potentialMatchesWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n },\n potentialMatchesContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {equals} from 'ramda';\nimport {useSnackbar, SnackbarContext, useSavedStateForEntityType, ScreenProfileBand} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig} 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 {PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const PotentialMatchesView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\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 {entity?.uri && (\n <div className={styles.potentialMatchesContainer}>\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\n config={config}\n isLoaded={isLoaded}\n savedState={savedState}\n onUpdateSavedState={onUpdateSavedState}\n />\n <SnackbarRenderer />\n <ChangeModeConfirmation />\n </div>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import MomentUtils from '@date-io/moment';\nimport PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {identity} from 'ramda';\nimport {PotentialMatchesConfigType, promisifyCallback} 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});\n\nconst PotentialMatchesView = ({config, store, onResize = identity, saveState, getSavedState}) => {\n const getSavedStatePromisified = useCallback(\n promisifyCallback<Record<string, PotentialMatchesSavedState>>(getSavedState),\n [getSavedState]\n );\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <PMView config={config} saveState={saveState} getSavedState={getSavedStatePromisified} />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nPotentialMatchesView.propTypes = {\n config: PotentialMatchesConfigType,\n store: PropTypes.object,\n onResize: PropTypes.func,\n saveState: PropTypes.func,\n getSavedState: PropTypes.func\n};\n\nexport default PotentialMatchesView;\n","import {PotentialMatchesView} from '@reltio/potential-matches';\n\nexport default PotentialMatchesView;\n"],"names":["useStyles","makeStyles","icon","maxHeight","maxWidth","marginRight","group","metadata","styles","absoluteImagePath","useSelector","mdm","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","className","avatarText","title","AvatarStates","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","attribute","cursor","lineHeight","flexBasis","display","alignItems","padding","width","borderBottom","disabled","attributeWithValue","noSelect","name","fontSize","color","overflow","whiteSpace","textOverflow","direction","textAlign","flex","defaultGetLabel","either","prop","value","getLabel","onSelectAttributeClick","label","onClick","undefined","ExpandedValueTooltip","i18n","SmallIconButton","size","ArrowDropDown","isEqualAttributes","eqBy","pick","checkAttributeIncludes","selectedAttributes","find","filterItem","item","filterText","toLowerCase","includes","filterItemsTree","children","some","getAttributeIndex","findIndex","getContainerWidth","getMaxItemWidth","getAttributeGroupData","groupId","groupName","level","noFilter","isItemFiltered","concat","filter","subItem","flatMap","flat","prepareGroupsForSelectAttributeList","curry","groups","map","items","attributes","length","subHeader","backgroundColor","margin","fontWeight","memo","onItemClick","focusIndex","hideCheckBox","mdmModule","VirtualGroupedList","getItemSize","i","renderItem","style","index","checked","isFocused","AttributeListItem","key","fieldName","data","notSelectable","Highlighter","text","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","component","needGroupIcon","AttributeGroupIcon","selector","minWidth","background","boxSizing","borderRadius","itemsGroups","onSelect","onRestoreFocus","identity","onOpenPopup","disableRestoreFocus","disableEnforceFocus","single","ungroup","selectAnchor","setSelectAnchor","closePopup","useCallback","isPopupOpen","setFilterText","clearFilterText","setSelectedAttributes","clearSelectedAttributes","filteredItemsGroups","useMemo","pipe","when","always","chain","flatten","flattenGroupedItemsData","containerWidth","Math","max","handleOnClose","tap","searchInputRef","useRef","onListItemClick","selectedAttribute","filterSelectedAttributes","current","focus","handleSearchOnEnter","groupData","getOnEnterHandler","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","onClose","event","currentTarget","SelectionPopup","anchorEl","onSearch","containerHeight","searchInputOnKeyDown","anchorOrigin","horizontal","vertical","height","getRowCellKey","rowIndex","columnData","cellIndex","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","flushHeightUpdates","debounce","clearHeightsCache","getDynamicRowCellHeight","__","changeRowCellHeight","useWith","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","RowCellAutoSizer","onChangeHeight","cell","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","handleHeight","onResize","RootRef","rootRef","row","marginBottom","rowItem","paddingRight","fullWidth","flexGrow","theme","readOnlyLogicOperatorContainer","palette","secondary","readOnlyFilter","marginLeft","ReadOnlyLogicOperator","rowData","operator","capitalize","ReadOnlyFilter","getFilterOptionLabel","QueryBuilderRow","classes","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ValuesEditorComponent","ActionsComponent","filterSelectorRef","attributeSelectorProps","rowContext","root","logicOperatorContainer","attributeSelectorContainer","filterSelectorContainer","textFieldInputRef","valuesEditorContainer","actionsContainer","QueryBuilderAttributeType","onOpen","disablePopoverRestoreFocus","QueryBuilderRowsGroup","rowClasses","rowsData","lastRowAttributeSelectorProps","filterSelectorRefIndex","rowProps","renderRow","previousRow","path","lastRowProps","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","sourceType","findSourceSystemByUri","getSourceSystemLabel","sourceIcon","variant","renderAttributesList","values","valueContainerClassName","props","attributeValue","expanded","LabelRenderer","RightSlot","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","CrosswalksDisplayContext","createContext","CrosswalksDisplayProvider","Provider","useCrosswalkColor","crosswalk","getCrosswalkColor","getColor","getCrosswalkId","useHighlightedCrosswalks","highlightedCrosswalks","useCrosswalkHighlight","setCrosswalkHighlighted","noop","isHighlighted","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkFocus","toggleCrosswalkFocus","focusedCrosswalks","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","React","viewBox","xmlns","d","fill","fillRule","clipRule","fillOpacity","ActivePanel","ComparisonViewMode","DataContext","reloadData","setReloadHandler","contextValue","dataHandler","reloadHandler","createContextValue","ReloadDataProvider","useReloadData","dataContext","Error","ViewStateContext","ViewDispatchContext","SET_GLOBAL_SPINNER","SET_SELECTED_ITEMS","TOGGLE_SELECT","SET_LIMIT_SELECTION","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","actions","setGlobalSpinner","createStandardAction","setSelectedItems","toggleSelect","setLimitSelection","setComparisonViewMode","setEntitiesMap","deleteExtraMatches","viewStateReducer","action","isGlobalSpinnerActive","payload","slice","limitSelection","evolve","selected","itemIndex","selectedItem","object","remove","append","newMode","comparisonViewMode","COLUMNS","entitiesMap","ViewStateProvider","dispatch","useReducer","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","RESET","SET_OPTIONS","basicTableViewState","reset","setOptions","reducer","options","createAttributeItemConfig","attrNode","parents","config","createAttributeItemBasicConfig","childNode","attrType","omit","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","errorMessage","showDCRReviewErrors","errorCode","ApiErrorCode","useSpinnerAndReloadData","onStartRequest","onFinishRequest","getFilteredSelectedItems","entities","MergeButton","forwardRef","ref","mode","ActionButtonMode","onMenuClose","onSuccess","NotMatchButton","version","SetAMatchButton","markingIsInProgress","setAMatch","setAsMatch","then","finally","useSetAMatch","ActionButton","SetAsMatchIcon","xmlnsXlink","stroke","strokeWidth","xlinkHref","mask","DCRReviewButton","showSnackbarMessage","SnackbarContext","operationIsInProgress","startPMReview","selectors","workflowPath","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","catch","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","DcrReviewIcon","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","CreateRelationButton","mainEntity","currentEntity","matchRules","AddRelationIcon","RightSideHeaderContext","attributeSelect","onChange","field","split","sortLevel","findNode","parentFieldName","option","node","handleChange","val","BasicAttributeSelector","rowCheckbox","position","header","border","borderTop","sorting","arrow","transition","rotate","transform","selectedCount","totalCount","sortOptions","onSorting","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","Checkbox","indeterminate","IconButton","order","Order","classNames","useSortOptions","defaultOptions","additionalOptions","entityTypeUri","getEntityType","getSortingItemsGroups","col","paddingTop","paddingBottom","actionButtons","active","wrapper","content","right","top","pointerEvents","borderLeft","paddingLeft","entityLabel","primary","main","textDecoration","matchRulesWrapper","selectedRow","coloredRow","left","matchScore","commentsContainer","rightButton","match","entityToMatch","isRowSelected","isColumnViewMode","actionButtonsRenderer","getEntityColor","openMenu","setOpenMenu","isRowSelectable","Actions","EntityUriLink","MatchRulesBlock","MatchRuleVariant","buttonClassName","hoveredMatch","onActionsMenuOpen","onActionsMenuClose","createObjectIdForPM","matchEntityUri","allowOnlyOneComment","showAlways","view","flexDirection","overflowY","overflowX","MatchItems","matches","gap","inputRoot","menuButtonRoot","searchTenant","onChangeSearchTenant","currentSearchText","setCurrentSearchText","handleSearch","propEq","trim","handleChangeSearchText","newSearchText","isEmpty","document","activeElement","TenantsDropDownSelector","selectedTenant","onChangeTenant","SearchInput","inputRef","autofocus","onKeyPress","MenuItemRenderer","ActionsPanel","numberOfButtons","actionButtonSize","buttonActions","menuActions","splitAt","buttonMode","buttonSize","actionButton","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","moreOptions","menuId","menuItems","onMenuOpen","mainArea","FindMatchesView","useDispatch","changeRowsPerPage","changePage","searchText","setSearchText","setSearchTenant","handleChangeSearchTenant","newSearchTenant","requestFilters","total","findEntities","enabled","searchTenantId","activityFilter","globalFilter","setTotal","setEntities","safePromise","useSafePromise","DEFAULT_SELECTION","filterQuery","buildFilterQueryString","isDtss","dtssProps","dataTenant","entityRequestOptions","offset","sort","select","entityRequest","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","totalRequestOption","totalRequest","getTotalFromDataTenant","getTotals","Promise","all","results","totalResponse","useFindEntities","profile","resetPage","resetSelected","selectAll","getEntityUriFromMatchObject","canMerge","canMark","getActionPermissionForMatch","isDTEntity","show","pathEq","BasicTablePagination","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","LinearLoadIndicator","useMatches","rules","onStartLoading","onFinishLoading","loadMatches","useMatchesLoader","markMatchedValues","dialogPaper","dialogTitle","titleText","letterSpacing","fontize","attributeList","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","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","onCancel","boundariesElement","popupBoundariesValue","element","priority","Dialog","paper","DialogTitle","disableTypography","Typography","DialogContent","PopupBoundariesContext","ConnectionRelationTypeSelector","applyFirstByDefault","AttributesList","attrTypes","showEmptyEditors","ModeTypes","parentUri","DialogActions","Button","startDate","endDate","startEntityUri","endEntityUri","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","DEFAULT_OPTIONS","showTransitiveMatches","MatchesView","hasWorkflow","matchRulesFilters","regularFilters","partition","matchesFilter","getPotentialMatchesObjectIdsForCollaboration","keys","canAddRelation","hasDTEntity","EntitiesMapContext","NotMatchView","loadNotMatches","setMatches","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","markAsNotMatch","record","NOT_MATCH","loadNotMatchesIfNeeded","force","addGlobalFilterToQuery","activeness","result","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","users","useUsers","UsersContext","PotentialMatches","FindMatches","NotAMatch","render","input","ValuesEditor","changeFilter","commonProps","newValues","TextFieldProps","InputProps","isMatchRuleAttrType","MatchRulesSelector","isSourceSystemAttrType","SourceSystemsSelector","divider","optionLabel","potentialMatchesComponents","FilterSelector","FilterOptions","MatchesAttributesFiltersButton","attributeTypes","setShowTransitiveMatches","AttributesFiltersButton","components","onTogglePopup","isFiltersApplied","FormControlLabel","control","Divider","light","flexShrink","sourceSystemsComponents","RightSidePanel","isLoaded","savedState","onUpdateSavedState","matchesFilters","setMatchesFilters","matchesOptions","setMatchesOptions","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","matchesSorting","setMatchesSorting","findMatchesSorting","setFindMatchesSorting","notMatchSorting","setNotMatchSorting","setActive","toggleActive","newId","resetActive","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","reduce","push","potentialMatchesAttributeTypes","findMatchesAttributeTypes","EntityAttrTypes","CrosswalksAttrTypes","onChangeMatchesFilters","elements","PotentialMatchesIcon","headerProps","mainTitle","rightContent","FindMatchesIcon","NotAMatchIcon","showSidePanel","SidePanel","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","button","MODES","Icon","ViewColumnRoundedIcon","TABLE","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","mergeButton","splitter","actionSplitter","getEntityObjects","TableHeader","selectedColumns","onChangeColumns","showNonOv","onChangeShowNonOv","getActionPermissionForMatches","hasSelectedItems","handleToggleShowOvValue","not","settingItems","selectable","BasicViewHeader","Spacer","orientation","SettingsMenu","ColumnsSettings","ExpandedContext","expandedMap","onExpandType","Component","WithExpanded","componentProps","matchedAttributeBackground","complexAttributesHeadRenderer","complexAttributesHeadLabel","arrowButton","matchedAttribute","badge","alignSelf","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","permission","isEntityFindMatch","isEntityNotMatch","isEntityPotentialMatch","container","hovered","colored","removeButton","zIndex","matchControlsContainer","isPotentialMatchesTask","task","WorkflowTasksAvailabilityContext","minHeight","assigneeSelector","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","tasks","loadTasks","matchUri","requestIsInProgress","setRequestIsInProgress","setTasks","getTasksForEntity","hasMatchEntityUri","propSatisfies","isTaskBelongsToMatch","allPass","loading","useWorkflowTasks","setWorkflowTaskAvailability","sendMergeAllRequest","merge","useMergeAllRequest","sendMarkAsNotMatchRequest","notMatch","useMarkAsNotMatchRequest","mapping","Merge","possibleActions","assignee","getAssignees","updateAssignee","updateRequestIsInProgress","useWorkflowAssignee","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","DropDownSelector","getOptions","hideSelectedOptions","WorkflowComments","DEFAULT_ROWS","draggable","initialWidth","autoResize","itemContainer","showTooltip","SourceIcon","crosswalkIcon","labelContainer","spacer","flexWrap","additionalPropsForDefaultRows","cellRenderer","isSelectedEntity","onRemove","rest","isHovered","getEntityId","controlProps","CloseIcon","ProfileCard","MatchControls","headCellRenderer","workflowCard","sources","SourcesRenderer","entityId","crosswalks","nestedAttributeValue","subAttributeType","getFakeAttributeValueForCrosswalk","score","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","indexOf","splice","ColumnsSettingsPopup","onColumnClick","newIndex","borderStyle","comparisonTableWrapper","collapsedRow","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","emptyState","ComparisonTable","setSelectedColumns","allColumnsData","setHoveredEntity","anchor","selectedColumnsWithoutSubAttributes","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","onMoveColumn","dragColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","secondaryText","table","ComparisonView","defaultWrapperStyles","getColoredRowCellStyle","hoveredColor","fade","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","dragIcon","opacity","ovFalse","inactive","withFilterAtBottom","DefaultHeadCellRenderer","simpleValue","ov","DataTypeValue","withTableContext","onToggleSelect","isRowRemovable","hoverRowIndex","containerId","IdContext","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","isFirstColumn","headIndex","blobValue","onScroll","imgValue","getImageAttributeOvThumbnailUrl","EntityTypeIcon","getReferencedEntityFromAttrValue","objectURI","getAttrPathFromColumnId","getBasicTableRowsData","allMatchRules","getAttributesForMatchRules","filteredColumnsData","acc","assoc","attrPath","ifElse","getAttributeValuesByPathWithOvFlag","getOvAttributeValuesByPathWithOvFlag","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","EntityProfileRenderer","MatchRulesRenderer","dataType","BlobRender","ImageRenderer","ReferenceRenderer","DefaultCellValueRenderer","getCellValueRendererByDataType","isCellHighlighted","every","CellValueRenderer","columnIndex","tableContainer","rowActionButtonsWrapper","rowActionButtons","hoveredRowRightContentContainer","dragColumnHead","borderColor","borderLeftColor","borderRightColor","dragColumnBody","onReorderingColumn","onFilter","onSort","onResetSelect","onSelectAll","basicTableRef","isComparisonViewShown","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","ProfileHeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","getRowHeight","CellRenderer","EntityCellRenderer","useBasicTableCellRenderer","maxRowValuesCount","entityRowHeight","enhancedColumnsData","withEntityCell","withEntityCellValue","onDndColumnReorder","what","where","oldPositionId","newPositionId","tableContext","isAllSelected","useDynamicRowCellHeight","useLayoutEffect","openActionsMenu","setOpenActionsMenu","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","hoveredRowRightContent","isChecked","onChangePopupVisibility","renderRowCell","actionsContent","tableRef","getRowCellHeight","defaultGetRowCellHeight","tableClasses","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndColumnReorderingEnabled","dndColumnReorderingHandler","dndRowReorderingHandler","hoveredContentPosition","comparisonView","MatchReviewTable","initialRequestParam","useFirstPotentialMatches","groupedColumnsData","defaultColumns","defaultColumnsData","additionalColumnsData","attrColumnsData","getEntityTypeMatchAttributes","matchAttrColumns","otherColumns","groupColumnsDataByMatchAttributes","useMatchesColumnsData","visibleColumns","setVisibleColumns","setShowNonOv","visibleColumnsData","comparisonViewProps","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","DragAndDrop","flexBox","ChangeModeConfirmation","onSave","TableIcon","ConfirmationDialog","onDiscard","saveCaption","discardCaption","perspectiveView","bottom","fontFamily","default","potentialMatchesWrapper","potentialMatchesContainer","PotentialMatchesView","getSavedState","saveState","SnackbarRenderer","useSnackbar","lastSavedState","updateSavedState","useSavedStateForEntityType","stateToSave","newSavedState","S","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","floor","PotentialMatchesConfigType"],"sourceRoot":""}
1
+ {"version":3,"file":"3640.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeGroupIcon/AttributeGroupIcon.tsx","webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/helpers.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/styles.ts","webpack://@reltio/remotes/../components/src/components/SelectAttributesList/SelectAttributesList.tsx","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicAttributeSelector/BasicAttributeSelector.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/hooks/useDynamicRowCellHeight.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/CollapseRowButton/CollapseRowButton.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/RowCellAutoSizer/RowCellAutoSizer.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/styles.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyLogicOperator.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/components/ReadOnlyFilter.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRow/QueryBuilderRow.js","webpack://@reltio/remotes/../components/src/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ScreenProfileBand/ScreenProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/attributes/readMode/AttributeValuesBlock/AttributeValuesBlock.tsx","webpack://@reltio/remotes/../components/src/contexts/CrosswalksDisplayContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/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/constants/views.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ReloadDataContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/contexts/ViewStateContext/index.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/hooks/helpers/stateReducer.ts","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/components/Actions/useSpinnerAndReloadData.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/Actions/helpers.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/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/hooks/useMatches.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/helpers/relationsHelpers.ts","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/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/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/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/ColoredSourceIcon/styles.ts","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/ColoredSourceIcon/ColoredSourceIcon.tsx","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/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/cell-renderers/SourcesRenderer.tsx","webpack://@reltio/remotes/../potential-matches/src/PotentialMatchesView/components/MatchesTable/dataHelpers.ts","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/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/PotentialMatchesView.tsx","webpack://@reltio/remotes/../potential-matches/src/index.tsx","webpack://@reltio/remotes/./src/potential-matches.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n icon: {\n maxHeight: '25px',\n maxWidth: '25px',\n marginRight: '16px'\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {getAbsoluteImageUrl, getEntityTypeGraphIcon, Metadata} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\nimport {useStyles} from './styles';\n\ntype Props = {\n group: {id: string; title: string};\n metadata: Metadata;\n};\n\nconst AttributeGroupIcon = ({group, metadata}: Props) => {\n const styles = useStyles();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const entityTypeGraphIcon = getEntityTypeGraphIcon(metadata, {type: group.id});\n const absoluteImageUrl = getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n return <AvatarWithFallback className={styles.icon} icon={absoluteImageUrl} avatarText={group.title[0]} />;\n};\n\nexport default AttributeGroupIcon;\n","import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n attribute: {\n cursor: 'pointer',\n lineHeight: '16px',\n flexBasis: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px 0 16px',\n width: 'calc(100% - 32px)',\n '&$attributeWithValue': {\n borderBottom: '1px solid rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n cursor: 'default'\n }\n },\n disabled: {},\n attributeWithValue: {},\n noSelect: {},\n name: {\n fontSize: '14px',\n color: 'rgba(0,0,0,0.87)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n direction: 'rtl',\n textAlign: 'left',\n flex: '1 0',\n width: '0',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.38)'\n },\n '&$disabled': {\n color: 'rgba(0,0,0,0.26)',\n '& $noSelect': {\n color: 'rgba(0,0,0,0.26)'\n }\n }\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {either, prop} from 'ramda';\nimport {ArrowDropDown} from '@material-ui/icons';\nimport ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';\nimport SmallIconButton from '../../SmallIconButton/SmallIconButton';\nimport {AttributeSelectorItem} from '../../../types';\nimport useStyles from './styles';\n\ntype Value = {\n fieldName: string;\n title: string;\n};\ntype Props = {\n value: AttributeSelectorItem;\n disabled: boolean;\n getLabel: (value: Value) => string;\n onSelectAttributeClick: (event) => void;\n};\n\nconst defaultGetLabel = either(prop('title'), prop('fieldName'));\n\nconst AttributeTitle = ({value, getLabel = defaultGetLabel, onSelectAttributeClick, disabled = false}: Props) => {\n const styles = useStyles();\n const label = value && getLabel(value);\n return (\n <div\n onClick={disabled ? undefined : onSelectAttributeClick}\n className={classnames(\n styles.attribute,\n {\n [styles.attributeWithValue]: !!label\n },\n {[styles.disabled]: disabled}\n )}\n >\n <ExpandedValueTooltip value={label}>\n <div className={classnames(styles.name, {[styles.disabled]: disabled})}>\n {label || <span className={styles.noSelect}>{i18n.text('Select attribute')}</span>}\n </div>\n </ExpandedValueTooltip>\n <SmallIconButton size={'M'} icon={ArrowDropDown} disabled={disabled} />\n </div>\n );\n};\n\nexport default AttributeTitle;\n","import {eqBy, pick, curry} from 'ramda';\nimport {getMaxItemWidth} from '@reltio/mdm-sdk';\nimport {AttributeSelectorItem, AttributeSelectorItemsGroup} from '../../types';\n\nexport const isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));\n\nexport const checkAttributeIncludes = (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) =>\n selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));\n\nconst filterItem = (item: AttributeSelectorItem, filterText: string) =>\n item.title.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterItemsTree = (item: AttributeSelectorItem, filterText: string): boolean =>\n filterItem(item, filterText) || (item.children || []).some((item) => filterItemsTree(item, filterText));\n\nexport const filterSelectedAttributes = ({\n attribute,\n selectedAttributes,\n checked\n}: {\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n checked: boolean;\n}) => {\n return checked\n ? selectedAttributes.concat(attribute)\n : selectedAttributes.filter((selectedAttribute) => !isEqualAttributes(attribute, selectedAttribute));\n};\n\nexport const getAttributeIndex = (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) =>\n selectedAttributes.findIndex(isEqualAttributes(attribute));\n\nexport const getContainerWidth = getMaxItemWidth('title');\n\nexport const getOnEnterHandler = ({\n onListItemClick,\n selectedAttributes\n}: {\n selectedAttributes: AttributeSelectorItem[];\n onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;\n}) => ({item, groupData}) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n onListItemClick({...item, groupName: groupData.groupName}, !checked);\n};\n\nconst getAttributeGroupData = (\n item: AttributeSelectorItem,\n groupId: string,\n groupName: string,\n filterText: string,\n level = 0,\n noFilter = false\n) => {\n const isItemFiltered = filterItem(item, filterText);\n return [\n {\n item: filterText ? {...item, filterText} : item,\n level,\n groupId,\n groupName\n }\n ]\n .concat(\n item.children\n ? item.children\n .filter((subItem) => noFilter || isItemFiltered || filterItemsTree(subItem, filterText))\n .flatMap((subItem) =>\n getAttributeGroupData(\n subItem,\n groupId,\n groupName,\n filterText,\n level + 1,\n noFilter || isItemFiltered\n )\n )\n : []\n )\n .flat();\n};\n\nexport const prepareGroupsForSelectAttributeList: (\n filterText: string,\n groups: AttributeSelectorItemsGroup[]\n) => {item: AttributeSelectorItemsGroup[]; items: AttributeSelectorItem[]} = curry(\n (filterText: string, groups: AttributeSelectorItemsGroup[]) =>\n groups\n .map((group) => ({\n item: group,\n items: group.attributes\n .filter((attribute) => filterItemsTree(attribute, filterText))\n .map((item) => getAttributeGroupData(item, group.id, group.title, filterText))\n }))\n .filter((group) => group.items.length)\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n subHeader: {\n backgroundColor: '#f5f5f5',\n padding: '0 16px',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.84)',\n fontSize: '14px',\n fontWeight: 500\n }\n});\n","import React, {memo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport mdmModule from '@reltio/mdm-module';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport VirtualGroupedList from '../VirtualGroupedList/VirtualGroupedList';\nimport Highlighter from '../Highlighter/Highlighter';\nimport AttributeGroupIcon from '../AttributeGroupIcon/AttributeGroupIcon';\nimport {checkAttributeIncludes} from '../BasicAttributeSelector/helpers';\nimport {AttributeSelectorItem} from '../../types';\nimport {useStyles} from './styles';\n\nconst ITEM_HEIGHT = 28;\nconst ITEM_GROUP_TITLE_HEIGHT = 40;\n\ntype Data = {\n attrType?: AttributeType;\n};\ntype Props = {\n selectedAttributes: AttributeSelectorItem[];\n focusIndex: number;\n hideCheckBox: boolean;\n onItemClick: (data: Data, checked: boolean, groupId: string) => void;\n} & Record<string, unknown>;\n\nconst SelectAttributesList = ({selectedAttributes, onItemClick, focusIndex, hideCheckBox, ...otherProps}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const getItemSize = (i, item) => (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT);\n\n const renderGroupTitle = (style, item) => (\n <ListItem component={'div'} className={styles.subHeader} style={style} key={`group-${item.item.id}`}>\n {item.item.needGroupIcon && <AttributeGroupIcon group={item.item} metadata={metadata} />}\n {item.item.title}\n </ListItem>\n );\n\n const renderItem = (style, {item, level, groupId, groupName}, index) => {\n const checked = checkAttributeIncludes(item, selectedAttributes);\n const isFocused = index === focusIndex;\n return (\n <AttributeListItem\n key={`item-${groupId}-${item.fieldName}`}\n onClick={onItemClick}\n checked={checked}\n data={{\n ...item,\n groupName\n }}\n notSelectable={item.notSelectable}\n hideCheckBox={hideCheckBox}\n label={<Highlighter text={item.title} highlight={item.filterText} />}\n labelInText={item.title}\n level={level}\n style={style}\n isFocused={isFocused}\n groupId={groupId}\n LogoIcon={item.LogoIcon}\n />\n );\n };\n\n return (\n <VirtualGroupedList\n getItemSize={getItemSize}\n renderItem={renderItem}\n renderGroupTitle={renderGroupTitle}\n focusIndex={focusIndex}\n {...otherProps}\n />\n );\n};\n\nexport default memo(SelectAttributesList);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n selector: {\n minWidth: '200px',\n alignItems: 'stretch',\n background: 'rgba(0,0,0, 0.0267)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n display: 'flex'\n }\n});\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {identity, pipe, tap, prop, flatten, pick, map, chain, when, always} from 'ramda';\nimport SelectionPopup from '../SelectionPopup/SelectionPopup';\nimport {useKeyboardNavigation} from '../SelectionPopup/helpers';\nimport AttributeTitle from './AttributeTitle/AttributeTitle';\nimport {\n filterSelectedAttributes,\n getAttributeIndex,\n getContainerWidth,\n getOnEnterHandler,\n prepareGroupsForSelectAttributeList\n} from './helpers';\nimport SelectAttributesList from '../SelectAttributesList/SelectAttributesList';\nimport {flattenGroupedItemsData} from '../VirtualGroupedList/helpers';\nimport {AttributeSelectorItem, BasicAttributeSelectorProps} from '../../types';\nimport useStyles from './styles';\n\nconst ATTRIBUTES_LIST_HEIGHT = 400;\nconst ATTRIBUTES_LIST_WIDTH = 308;\nconst ATTRIBUTES_POPUP_HEIGHT = 507;\n\nconst BasicAttributeSelector = ({\n className,\n itemsGroups,\n value,\n getLabel,\n onSelect,\n onRestoreFocus = identity,\n onOpenPopup = identity,\n disableRestoreFocus = false,\n disableEnforceFocus = false,\n single = false,\n ungroup = false,\n disabled = false,\n hideCheckBox = false\n}: BasicAttributeSelectorProps) => {\n const styles = useStyles();\n const [selectAnchor, setSelectAnchor] = useState(null);\n const openPopup = (event) => {\n onOpenPopup();\n setSelectAnchor(event.currentTarget);\n };\n const closePopup = useCallback(() => setSelectAnchor(null), []);\n const isPopupOpen = !!selectAnchor;\n\n const [filterText, setFilterText] = useState('');\n const clearFilterText = useCallback(() => setFilterText(''), []);\n\n const [selectedAttributes, setSelectedAttributes] = useState([]);\n const clearSelectedAttributes = useCallback(() => setSelectedAttributes([]), []);\n\n const filteredItemsGroups = useMemo(() => prepareGroupsForSelectAttributeList(filterText, itemsGroups), [\n itemsGroups,\n filterText\n ]);\n\n const items = useMemo(\n () =>\n pipe(\n when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))),\n flattenGroupedItemsData\n )(filteredItemsGroups),\n [ungroup, filteredItemsGroups]\n );\n\n const containerWidth = useMemo(() => Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH), [\n filteredItemsGroups\n ]);\n\n const handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);\n\n const searchInputRef = useRef<HTMLInputElement>();\n\n const onListItemClick = useCallback(\n (attribute: AttributeSelectorItem, checked: boolean) => {\n onSelect({\n checked,\n attribute,\n index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),\n selectedAttributes\n });\n\n if (single) {\n setSelectedAttributes(checked ? [attribute] : []);\n handleOnClose({});\n } else {\n setSelectedAttributes(filterSelectedAttributes({selectedAttributes, attribute, checked}));\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n },\n [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]\n );\n\n const handleSearchOnEnter = useCallback(getOnEnterHandler({onListItemClick, selectedAttributes}), [\n onListItemClick,\n selectedAttributes\n ]);\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: isPopupOpen,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedAttributes,\n onClose: handleOnClose\n });\n\n return (\n <div className={classnames(styles.selector, className)} data-reltio-id=\"attribute-selector\">\n <AttributeTitle value={value} getLabel={getLabel} onSelectAttributeClick={openPopup} disabled={disabled} />\n <SelectionPopup\n open={isPopupOpen}\n anchorEl={selectAnchor}\n onClose={handleOnClose}\n onSearch={setFilterText}\n title={i18n.text('Select attribute')}\n containerWidth={containerWidth}\n containerHeight={ATTRIBUTES_POPUP_HEIGHT}\n searchInputOnKeyDown={handleKeyDown}\n anchorOrigin={{horizontal: 'right', vertical: 'bottom'}}\n searchInputRef={searchInputRef}\n disableRestoreFocus={disableRestoreFocus}\n disableEnforceFocus={disableEnforceFocus}\n >\n <SelectAttributesList\n items={items}\n onItemClick={onListItemClick}\n selectedAttributes={selectedAttributes}\n width={containerWidth}\n height={ATTRIBUTES_LIST_HEIGHT}\n focusIndex={focusIndex}\n hideCheckBox={hideCheckBox}\n />\n </SelectionPopup>\n </div>\n );\n};\n\nexport default memo(BasicAttributeSelector);\n","import {useCallback, useRef, useState} from 'react';\nimport {__, curry, identity, pipe, prop, useWith} from 'ramda';\nimport {debounce} from '@reltio/mdm-sdk';\n\nconst getRowCellKey = ({rowIndex, columnData: {id}, cellIndex}) => `${id}[${rowIndex}][${cellIndex}]`;\n\nconst useDynamicRowCellHeight = () => {\n const [rowCellHeightsMap, setRowCellHeightsMap] = useState({});\n const rowCellHeightsMapCache = useRef({});\n const batchHeightUpdate = (key, value) => {\n rowCellHeightsMapCache.current[key] = value;\n };\n const flushHeightUpdates = useCallback(\n debounce(() => {\n setRowCellHeightsMap({...rowCellHeightsMapCache.current});\n }),\n []\n );\n const clearHeightsCache = useCallback(() => {\n rowCellHeightsMapCache.current = {};\n }, []);\n\n const getDynamicRowCellHeight = useCallback(pipe(getRowCellKey, prop(__, rowCellHeightsMap)), [rowCellHeightsMap]);\n\n const changeRowCellHeight = useCallback(\n curry(useWith(pipe(batchHeightUpdate, flushHeightUpdates), [getRowCellKey, identity])),\n []\n );\n\n return {getDynamicRowCellHeight, changeRowCellHeight, clearHeightsCache};\n};\n\nexport default useDynamicRowCellHeight;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n hidden: {\n visibility: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {RowCollapseContext} from '../BasicTable/contexts/RowCollapseContext';\nimport CollapseButton from '../../CollapseButton/CollapseButton';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CollapseRowButton = ({rowIndex, rowValue, className}) => {\n const styles = useStyles();\n const {toggleRowCollapse, getIsRowCollapsible, getIsRowCollapsed} = useContext(RowCollapseContext);\n\n const isCollapsibleRow = getIsRowCollapsible(rowValue);\n const isCollapsedRow = getIsRowCollapsed(rowIndex);\n\n return (\n <CollapseButton\n className={classnames(className, {[styles.hidden]: !isCollapsibleRow})}\n isOpen={!isCollapsedRow}\n onClick={(e) => {\n toggleRowCollapse(rowIndex);\n e.stopPropagation();\n }}\n />\n );\n};\n\nCollapseRowButton.propTypes = {\n rowIndex: PropTypes.number,\n rowValue: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default CollapseRowButton;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\nimport {useDidUpdateEffect} from '../../../hooks';\n\nconst RowCellAutoSizer = ({onChangeHeight, children: cell, ...cellProps}) => {\n const cellRef = useRef(null);\n\n const {rowValue, rowIndex, columnData, cellIndex} = cellProps;\n const changeCellHeight = onChangeHeight({rowIndex, cellIndex, columnData});\n\n const adjustCellHeight = () => cellRef.current && changeCellHeight(cellRef.current.clientHeight);\n\n useDidUpdateEffect(adjustCellHeight, [rowValue.rawValue]);\n\n return (\n <div>\n <ReactResizeDetector handleHeight={true} onResize={adjustCellHeight} />\n <RootRef rootRef={cellRef}>{cell}</RootRef>\n </div>\n );\n};\n\nRowCellAutoSizer.propTypes = {\n onChangeHeight: PropTypes.func,\n children: PropTypes.node\n};\n\nexport default RowCellAutoSizer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n row: {\n display: 'flex',\n marginBottom: '12px'\n },\n rowItem: {\n paddingRight: '10px',\n display: 'flex'\n },\n fullWidth: {\n flexGrow: '1',\n flexBasis: '0',\n overflow: 'hidden'\n },\n hidden: {\n visibility: 'hidden'\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst height = '46px';\n\nconst useStyles = makeStyles((theme) => ({\n readOnlyLogicOperatorContainer: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '40px',\n width: '76px',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n maxHeight: height\n },\n readOnlyFilter: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n color: theme.palette.text.secondary,\n width: '50px',\n marginLeft: '12px',\n maxHeight: height\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport capitalize from '@material-ui/core/utils/capitalize';\n\nimport useStyles from './styles';\n\nconst ReadOnlyLogicOperator = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyLogicOperatorContainer, className)}>\n {rowData && rowData.operator ? capitalize(rowData.operator) : i18n.text('Where')}\n </div>\n );\n};\n\nReadOnlyLogicOperator.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyLogicOperator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getFilterOptionLabel} from '@reltio/mdm-sdk';\n\nimport useStyles from './styles';\n\nconst ReadOnlyFilter = ({className, rowData}) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.readOnlyFilter, className)}>\n {rowData && rowData.filter ? getFilterOptionLabel(rowData.filter) : i18n.text('equals')}\n </div>\n );\n};\n\nReadOnlyFilter.propTypes = {\n className: PropTypes.string,\n rowData: PropTypes.object\n};\n\nexport default ReadOnlyFilter;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nimport useStyles from './styles';\n\nimport ReadOnlyLogicOperator from './components/ReadOnlyLogicOperator';\nimport ReadOnlyFilter from './components/ReadOnlyFilter';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRow = ({\n classes = {},\n rowData,\n previousRowData,\n LogicOperatorComponent = ReadOnlyLogicOperator,\n AttributeSelectorComponent,\n FilterSelectorComponent = ReadOnlyFilter,\n ValuesEditorComponent,\n ActionsComponent,\n filterSelectorRef,\n attributeSelectorProps = {},\n ...rowContext\n}) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.row, classes.root)}>\n <LogicOperatorComponent\n className={classes.logicOperatorContainer}\n rowContext={rowContext}\n rowData={previousRowData}\n />\n <div className={classnames(styles.rowItem, classes.attributeSelectorContainer)}>\n <AttributeSelectorComponent\n attributeSelectorProps={attributeSelectorProps}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, classes.filterSelectorContainer)}>\n <FilterSelectorComponent\n textFieldInputRef={filterSelectorRef}\n rowContext={rowContext}\n rowData={rowData}\n />\n </div>\n <div className={classnames(styles.rowItem, styles.fullWidth, classes.valuesEditorContainer)}>\n <ValuesEditorComponent rowContext={rowContext} rowData={rowData} />\n </div>\n <div className={classnames(styles.rowItem, classes.actionsContainer, {[styles.hidden]: !rowData})}>\n <ActionsComponent rowContext={rowContext} rowData={rowData} />\n </div>\n </div>\n );\n};\n\nQueryBuilderRow.propTypes = {\n classes: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowData: QueryBuilderAttributeType,\n previousRowData: QueryBuilderAttributeType,\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n attributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRow);\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {path} from 'ramda';\n\nimport QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';\nimport {QueryBuilderAttributeType} from '../../constants';\n\nconst QueryBuilderRowsGroup = ({\n className = undefined,\n rowClasses,\n rowsData,\n lastRowAttributeSelectorProps,\n filterSelectorRef,\n filterSelectorRefIndex,\n ...rowProps\n}) => {\n const renderRow = (rowData, index, rowsData) => {\n const previousRow = index > 0 ? path([index - 1], rowsData) : null;\n const lastRowProps =\n index === rowsData.length\n ? {\n attributeSelectorProps: lastRowAttributeSelectorProps\n }\n : {};\n return (\n <QueryBuilderRow\n key={rowData && rowData.id}\n rowData={rowData}\n previousRowData={previousRow}\n classes={rowClasses}\n filterSelectorRef={index === filterSelectorRefIndex ? filterSelectorRef : undefined}\n {...rowProps}\n {...lastRowProps}\n />\n );\n };\n\n return (\n <div className={className}>\n {rowsData.map(renderRow)}\n {renderRow(null, rowsData.length, rowsData)}\n </div>\n );\n};\n\nQueryBuilderRowsGroup.propTypes = {\n className: PropTypes.string,\n rowClasses: PropTypes.shape({\n root: PropTypes.string,\n logicOperatorContainer: PropTypes.string,\n attributeSelectorContainer: PropTypes.string,\n filterSelectorContainer: PropTypes.string,\n valuesEditorContainer: PropTypes.string,\n actionsContainer: PropTypes.string\n }),\n rowsData: PropTypes.arrayOf(QueryBuilderAttributeType),\n LogicOperatorComponent: PropTypes.elementType,\n AttributeSelectorComponent: PropTypes.elementType,\n FilterSelectorComponent: PropTypes.elementType,\n ValuesEditorComponent: PropTypes.elementType,\n ActionsComponent: PropTypes.elementType,\n filterSelectorRef: PropTypes.object,\n filterSelectorRefIndex: PropTypes.number,\n lastRowAttributeSelectorProps: PropTypes.shape({\n onRestoreFocus: PropTypes.func,\n onOpen: PropTypes.func,\n disablePopoverRestoreFocus: PropTypes.bool\n })\n};\n\nexport default memo(QueryBuilderRowsGroup);\n","import {makeStyles} from '@material-ui/core/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} from '@reltio/mdm-sdk';\nimport {HistorySlice} from '@reltio/mdm-module';\n\nimport ProfileBand from '../ProfileBand/ProfileBand';\nimport {ProfileBandNavigation} from '../ProfileBandNavigation';\nimport CommentsContainer from '../CommentsContainer/CommentsContainer';\nimport {CollaborationContext} 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 <CollaborationContext.Provider value={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 </CollaborationContext.Provider>\n );\n});\n\nScreenProfileBand.displayName = 'ScreenProfileBand';\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon}: Source = findSourceSystemByUri(metadata, sourceType) || {};\n const avatarText = uri ? getSourceSystemLabel(metadata, uri)[0] : '';\n const sourceIcon = icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null;\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={sourceIcon}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import React from 'react';\n\nconst Spacer = () => <div style={{flex: 1}} />;\n\nexport default Spacer;\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","import React, {createContext, useCallback, useContext} from 'react';\nimport {CrosswalkBase, getCrosswalkColor, getCrosswalkId} from '@reltio/mdm-sdk';\nimport {pipe, eqBy} from 'ramda';\nimport {noop} from '../../core';\n\nconst CrosswalksDisplayContext = createContext(null);\n\ntype ProviderProps = {\n children: React.ReactNode;\n getCrosswalkColor?: (crosswalk: CrosswalkBase) => string;\n focusedCrosswalks?: CrosswalkBase[];\n highlightedCrosswalks?: CrosswalkBase[];\n toggleCrosswalkFocus?: (crosswalk: CrosswalkBase) => void;\n setCrosswalkHighlighted?: (crosswalk: CrosswalkBase, highlighted: boolean) => void;\n};\n\nexport const CrosswalksDisplayProvider = ({children, ...props}: ProviderProps) => {\n return <CrosswalksDisplayContext.Provider value={props}>{children}</CrosswalksDisplayContext.Provider>;\n};\n\nexport const useCrosswalkColor = (crosswalk?: CrosswalkBase) => {\n const {getCrosswalkColor: getColor = pipe(getCrosswalkId, getCrosswalkColor)} =\n useContext(CrosswalksDisplayContext) || {};\n return crosswalk ? getColor(crosswalk) : '';\n};\n\nexport const useHighlightedCrosswalks = () => {\n const {highlightedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n return highlightedCrosswalks;\n};\n\nexport const useCrosswalkHighlight = (crosswalk?: CrosswalkBase) => {\n const {highlightedCrosswalks = [], setCrosswalkHighlighted = noop} = useContext(CrosswalksDisplayContext) || {};\n const isHighlighted = !!crosswalk && !!highlightedCrosswalks.find(eqBy(getCrosswalkId, crosswalk));\n return {\n isHighlighted,\n isDimmed: highlightedCrosswalks.length > 0 && !isHighlighted,\n highlightCrosswalk: useCallback(() => setCrosswalkHighlighted(crosswalk, true), [\n crosswalk,\n setCrosswalkHighlighted\n ]),\n removeHighlight: useCallback(() => setCrosswalkHighlighted(crosswalk, false), [\n crosswalk,\n setCrosswalkHighlighted\n ])\n };\n};\n\nexport const useCrosswalkFocus = (crosswalk?: CrosswalkBase) => {\n const {toggleCrosswalkFocus = noop, focusedCrosswalks = []} = useContext(CrosswalksDisplayContext) || {};\n const isFocused = !!crosswalk && focusedCrosswalks.some(eqBy(getCrosswalkId, crosswalk));\n return {\n isFocused,\n toggleCrosswalkFocus: useCallback(() => toggleCrosswalkFocus(crosswalk), [crosswalk, toggleCrosswalkFocus])\n };\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M20 4v14h2V4c0-1.1-.9-2-2-2H6v2h14zM2 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 12a4 4 0 100-8 4 4 0 000 8zM10.35 14.01C7.62 13.91 2 15.27 2 18v2h9.54c-2.47-2.76-1.23-5.89-1.19-5.99zM19.43 18.02c.36-.59.57-1.28.57-2.02 0-2.21-1.79-4-4-4s-4 1.79-4 4 1.79 4 4 4c.74 0 1.43-.22 2.02-.57L20.59 22 22 20.59l-2.57-2.57zM16 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\",\n fill: \"currentColor\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 20h15.002L21 23l1.27-1.27-20-20.01L1 2.99l6.172 6.175a4.007 4.007 0 002.66 2.662l2.23 2.23A10.754 10.754 0 0011 14c-2.67 0-8 1.34-8 4v2zm8-16a3.987 3.987 0 00-2.795 1.137l5.656 5.659A3.999 3.999 0 0011 4z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","export enum ActivePanel {\n PotentialMatches,\n FindMatches,\n NotAMatch\n}\n\nexport enum ComparisonViewMode {\n TABLE = 'TABLE',\n COLUMNS = 'COLUMNS'\n}\n\nexport const MAX_PROFILES_TO_COMPARE = 4;\n","import React, {createContext, useContext} from 'react';\n\nconst DataContext = createContext<{\n reloadData: () => void;\n setReloadHandler: (f: () => void) => void;\n }>({\n reloadData: () => {},\n setReloadHandler: () => {}\n });\nconst createContextValue = () => {\n let dataHandler;\n const reloadData = (): void => {\n if (dataHandler) {\n dataHandler();\n }\n };\n const setReloadHandler = (reloadHandler: () => void) => {\n dataHandler = reloadHandler;\n };\n return {\n reloadData,\n setReloadHandler\n };\n};\nconst contextValue = createContextValue();\n\nexport const ReloadDataProvider = ({children}: {children: React.ReactElement}) => {\n return <DataContext.Provider value={contextValue}>{children}</DataContext.Provider>;\n};\n\nexport const useReloadData = () => {\n const dataContext = useContext(DataContext);\n if (dataContext === undefined) {\n throw new Error('useReloadData must be used within a ReloadDataProvider');\n }\n return dataContext;\n};\n","import {append, evolve, remove} from 'ramda';\nimport React, {createContext, useContext, useReducer} from 'react';\n\nimport {createStandardAction, useActions} from '@reltio/components';\nimport {EntitiesMap, 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 toggleSelect: (match: Match) => void;\n setLimitSelection: (value?: number) => void;\n setComparisonViewMode: (mode: ComparisonViewMode) => void;\n setEntitiesMap: (entitiesMap?: EntitiesMap) => void;\n deleteExtraMatches: () => void;\n};\n\ntype StateContext = {\n isGlobalSpinnerActive: boolean;\n selectedItems: Match[];\n limitSelection?: number;\n comparisonViewMode: ComparisonViewMode;\n entitiesMap?: EntitiesMap;\n};\nconst ViewStateContext = createContext<StateContext>(null);\nconst ViewDispatchContext = createContext<ActionContext>(null);\nconst SET_GLOBAL_SPINNER = 'SET_GLOBAL_SPINNER';\nconst SET_SELECTED_ITEMS = 'SET_SELECTED_ITEMS';\nconst TOGGLE_SELECT = 'TOGGLE_SELECT';\nconst SET_LIMIT_SELECTION = 'SET_LIMIT_SELECTION';\nconst SET_COMPARISON_VIEW_MODE = 'SET_COMPARISON_VIEW_MODE';\nconst SET_ENTITIES_MAP = 'SET_ENTITIES_MAP';\nconst DELETE_EXTRA_MATCHES = 'DELETE_EXTRA_MATCHES';\n\nconst actions = {\n setGlobalSpinner: createStandardAction(SET_GLOBAL_SPINNER),\n setSelectedItems: createStandardAction(SET_SELECTED_ITEMS),\n toggleSelect: createStandardAction(TOGGLE_SELECT),\n setLimitSelection: createStandardAction(SET_LIMIT_SELECTION),\n setComparisonViewMode: createStandardAction(SET_COMPARISON_VIEW_MODE),\n setEntitiesMap: createStandardAction(SET_ENTITIES_MAP),\n deleteExtraMatches: createStandardAction(DELETE_EXTRA_MATCHES)\n};\n\nconst viewStateReducer = (state: StateContext, action: ReturnType<ReturnType<typeof createStandardAction>>) => {\n switch (action.type) {\n case SET_GLOBAL_SPINNER:\n return {...state, isGlobalSpinnerActive: action.payload};\n case DELETE_EXTRA_MATCHES:\n return {...state, selectedItems: state.selectedItems.slice(0, state.limitSelection)};\n case SET_SELECTED_ITEMS:\n return {...state, selectedItems: action.payload.slice(0, state.limitSelection)};\n case TOGGLE_SELECT:\n return evolve(\n {\n selectedItems: (selected) => {\n const item = action.payload;\n const itemIndex = selected.findIndex(\n (selectedItem) => selectedItem?.object?.uri === item?.object?.uri\n );\n const isSelected = itemIndex > -1;\n if (isSelected) {\n return remove(itemIndex, 1, selected);\n } else {\n return append(item, selected);\n }\n }\n },\n state\n );\n case SET_LIMIT_SELECTION: {\n return {...state, limitSelection: action.payload};\n }\n case SET_COMPARISON_VIEW_MODE: {\n const newMode: ComparisonViewMode = action.payload;\n return {\n ...state,\n comparisonViewMode: newMode,\n limitSelection: newMode === ComparisonViewMode.COLUMNS ? MAX_PROFILES_TO_COMPARE : undefined\n };\n }\n case SET_ENTITIES_MAP: {\n const entitiesMap: EntitiesMap = action.payload;\n return {\n ...state,\n entitiesMap\n };\n }\n }\n};\n\ntype Props = {\n children: React.ReactElement;\n};\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 });\n const viewStateAction = useActions({actions, dispatch});\n\n return (\n <ViewStateContext.Provider value={state}>\n <ViewDispatchContext.Provider value={viewStateAction as ActionContext}>\n {children}\n </ViewDispatchContext.Provider>\n </ViewStateContext.Provider>\n );\n};\n\nexport const useViewState = () => {\n const viewStateContext = useContext<StateContext>(ViewStateContext);\n if (viewStateContext === undefined) {\n throw new Error('useViewState must be used within a ViewStateProvider');\n }\n return viewStateContext;\n};\n\nexport const useViewStateActions = () => {\n const viewStateActions = useContext<ActionContext>(ViewDispatchContext);\n if (viewStateActions === undefined) {\n throw new Error('useViewStateActions must be used within a ViewStateProvider');\n }\n return viewStateActions;\n};\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst RESET = 'RESET';\nconst SET_OPTIONS = 'SET_OPTIONS';\n\nconst actions = {\n ...basicTableViewState.actions,\n reset: createStandardAction(RESET),\n setOptions: createStandardAction(SET_OPTIONS)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case RESET: {\n return {...action.payload};\n }\n case SET_OPTIONS:\n return {...state, options: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {\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\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} from '@reltio/mdm-sdk';\nimport {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nexport const showAddRelationErrors = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: i18n.text(\"Can't add relationship\")\n });\n};\n\nexport const showApiError = (error: ApiError) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: error?.errorMessage || i18n.text('Something went wrong...')\n });\n};\n\nexport const showDCRReviewErrors = (error: ApiError) => {\n if (error?.errorCode === ApiErrorCode.DCR_ALREADY_EXISTS) {\n return;\n }\n showApiError(error);\n};\n","import {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useReloadData} from '../../contexts/ReloadDataContext';\n\nexport const useSpinnerAndReloadData = () => {\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const {reloadData} = useReloadData();\n const onStartRequest = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishRequest = useCallback(() => {\n setGlobalSpinner(false);\n reloadData();\n }, [reloadData, setGlobalSpinner]);\n return {onStartRequest, onFinishRequest, isGlobalSpinnerActive};\n};\n","import {Entity, Match} from '@reltio/mdm-sdk';\n\nexport const getFilteredSelectedItems = (selectedItems: Match[], entities: Entity[]) =>\n selectedItems.filter(({object}) => !entities.some(({uri}) => uri === object.uri));\n","import React, {forwardRef} from 'react';\nimport {noop, MergeButton as MergeButtonComponent, ActionButtonMode} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {showApiError} from '../../utils/errors';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const MergeButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n\n return (\n <MergeButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n onError={showApiError}\n data-reltio-id=\"reltio-potential-matches-merge-button\"\n ref={ref}\n />\n );\n }\n);\n\nMergeButton.displayName = 'mergeButton';\n","import React, {forwardRef} from 'react';\nimport {ActionButtonMode, noop, NotMatchButton as NotMatchButtonComponent} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {useSpinnerAndReloadData} from './useSpinnerAndReloadData';\nimport {getFilteredSelectedItems} from './helpers';\n\ntype Props = {\n mode?: ActionButtonMode;\n entity: Entity;\n entities: Entity[];\n size?: string;\n className?: string;\n onMenuClose?: () => void;\n};\n\nexport const NotMatchButton = forwardRef<HTMLLIElement, Props>(\n ({className, entities, entity, mode = ActionButtonMode.iconButton, size, onMenuClose = noop}: Props, ref) => {\n const {isGlobalSpinnerActive, onFinishRequest, onStartRequest} = useSpinnerAndReloadData();\n const {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, entities));\n };\n return (\n <NotMatchButtonComponent\n className={className}\n disabled={isGlobalSpinnerActive}\n entities={entities}\n entity={entity}\n mode={mode}\n {...(size ? {size} : {})}\n onMenuClose={onMenuClose}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n onSuccess={onSuccess}\n ref={ref}\n />\n );\n }\n);\n\nNotMatchButton.displayName = 'NotMatchButton';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M9 4c4.42 0 8 3.58 8 8s-3.58 8-8 8a8 8 0 01-7.419-5h2.224A6.002 6.002 0 009 18c3.31 0 6-2.69 6-6s-2.69-6-6-6a6.002 6.002 0 00-5.196 3H1.581A8 8 0 019 4zm8 .26c3.45.89 6 4.01 6 7.74 0 3.73-2.55 6.85-6 7.74v-2.09a5.99 5.99 0 000-11.3V4.26zM8 7.5l4.5 4.5L8 16.5V13H0v-2h8V7.5z\",\n fillOpacity: \".541\"\n})));","import React, {forwardRef} from 'react';\nimport {ActionButton, ActionButtonMode, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {useSetAMatch} from '../../hooks/useSetAMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {getFilteredSelectedItems} from './helpers';\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 {setSelectedItems} = useViewStateActions();\n const {selectedItems} = useViewState();\n\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, 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 {Entity, setAsMatch} from '@reltio/mdm-sdk';\nimport {useCallback} from 'react';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entity: Entity;\n entities: Entity[];\n 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 .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 ref={ref}\n />\n ) : null;\n }\n);\n\nDCRReviewButton.displayName = 'DCRReviewButton';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {concat, map, pipe, prop} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {startProcessInstanceByPairs, Entity} from '@reltio/mdm-sdk';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {showDCRReviewErrors} from '../utils/errors';\n\nconst PROCESS_TYPE = 'potentialMatchReview';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n};\n\nexport const useRequestDCRReview = ({\n entities,\n entity,\n showSnackbarMessage\n}: Props): [val: boolean, func: () => void] => {\n const {selectors} = mdmModule;\n const {setGlobalSpinner} = useViewStateActions();\n const {isGlobalSpinnerActive} = useViewState();\n const workflowPath = useSelector(selectors.getWorkflowPath);\n const environment = useSelector(selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(selectors.getTenant);\n const getUri = prop('uri');\n const getUrisFromEntities = pipe(concat, map(getUri));\n const uris = getUrisFromEntities([entity], entities);\n\n const startPMReview = useCallback(() => {\n setGlobalSpinner(true);\n startProcessInstanceByPairs({\n workflowPath,\n processType: PROCESS_TYPE,\n objectURIs: uris,\n tenant,\n environment\n })\n .then(() => {\n showSnackbarMessage?.(i18n.text('Potential match request: Done'));\n })\n .catch(showDCRReviewErrors)\n .finally(() => {\n setGlobalSpinner(false);\n });\n }, [setGlobalSpinner, workflowPath, uris, tenant, environment, showSnackbarMessage]);\n\n return [isGlobalSpinnerActive, startPMReview];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n isDataTenantEntity,\n reinstateDataTenantEntityMatch,\n reinstateMixedEntitiesMatches,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useViewState, useViewStateActions} from '../contexts/ViewStateContext';\nimport {useReloadData} from '../contexts/ReloadDataContext';\n\ntype Props = {\n entities: Entity[];\n entity: Entity;\n showSnackbarMessage?: (message: string) => void;\n 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 .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, SnackbarContext, noop} from '@reltio/components';\nimport {Entity} from '@reltio/mdm-sdk';\nimport {useReinstateMatch} from '../../hooks/useReinstateMatch';\nimport SetAsMatchIcon from './icons/setAsMatch.svg';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {getFilteredSelectedItems} from './helpers';\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 {selectedItems} = useViewState();\n const {setSelectedItems} = useViewStateActions();\n const showSnackbarMessage = useContext(SnackbarContext);\n const onSuccess = () => {\n setSelectedItems(getFilteredSelectedItems(selectedItems, 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';\n\ntype Props = {\n className?: string;\n mainEntity?: Entity;\n currentEntity?: Entity;\n mode?: ActionButtonMode;\n onMenuClose?: () => void;\n onClick?: (val: Pick<Props, 'mainEntity' | 'currentEntity' | 'matchRules'>) => void;\n matchRules?: string[];\n};\n\nexport const CreateRelationButton = forwardRef<HTMLLIElement, Props>(\n (\n {\n className,\n mainEntity,\n currentEntity,\n matchRules,\n mode = ActionButtonMode.iconButton,\n onClick = noop,\n onMenuClose = noop\n }: Props,\n ref\n ) => {\n const handleClick = () => onClick({mainEntity, currentEntity, matchRules});\n return (\n <ActionButton\n className={className}\n mode={mode}\n label={i18n.text('Add relationship')}\n icon={AddRelationIcon}\n onClick={handleClick}\n onMenuClose={onMenuClose}\n ref={ref}\n />\n );\n }\n);\n\nCreateRelationButton.displayName = 'CreateRelationButton';\n","import React, {ReactNode} from 'react';\n\nexport const RightSideHeaderContext = React.createContext<{\n mainTitle?: string;\n secondTitle?: string;\n content?: ReactNode;\n rightContent?: ReactNode;\n bottomContent?: ReactNode;\n onClose: () => void;\n }>({\n onClose: () => {}\n });\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n attributeSelect: {\n width: '100%',\n height: '40px'\n }\n}));\n\nexport default useStyles;\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {BasicAttributeSelector, AttributeSelectorItemsGroup} from '@reltio/components';\n\nimport useStyles from './styles';\n\ntype AttributeOption = {\n fieldName: string;\n title: string;\n children?: AttributeOption[];\n};\n\ntype Props = {\n onChange: (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) {\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 '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n rowCheckbox: {\n marginRight: '20px',\n height: '24px',\n position: 'relative',\n padding: '12px'\n },\n header: {\n padding: '8px 12px 8px 0',\n border: 'rgba(0,0,0,0.05) 1px solid',\n borderTop: 0,\n display: 'flex',\n justifyContent: 'space-between'\n },\n selector: {\n width: '160px'\n },\n sorting: {\n display: 'flex'\n },\n arrow: {\n transition: 'transform 0.3s ease-in'\n },\n rotate: {\n transform: 'rotate(180deg)'\n }\n}));\n","import React, {useContext} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\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 '@material-ui/icons/ArrowUpward';\nimport classNames from 'classnames';\nimport {IconButton as IconButton} from '@material-ui/core';\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 >\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 {makeStyles} from '@material-ui/core/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: '19px',\n height: '24px',\n position: 'relative',\n padding: '9px'\n },\n entity: {\n paddingTop: '12px',\n paddingBottom: '8px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n actions: {\n marginLeft: 'auto',\n marginRight: 0,\n paddingTop: '15px',\n display: 'flex'\n },\n actionButtons: {\n display: 'none'\n },\n active: {\n display: 'flex'\n },\n wrapper: {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '0 15px 0 15px',\n color: 'rgba(0,0,0,0.87)',\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n pointerEvents: 'none'\n },\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.04)',\n '& $actionButtons': {\n display: 'flex'\n },\n '& $commentsContainer': {\n borderLeft: '1px solid rgba(0,0,0,0.12)'\n }\n },\n display: 'flex',\n boxSizing: 'border-box',\n borderBottom: '1px rgba(0,0,0,0.05) solid',\n paddingLeft: '12px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 500\n },\n matchRulesWrapper: {\n padding: '12px 15px 4px 10px',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n '& $divider: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 divider: {\n display: 'none',\n marginLeft: '12px',\n height: '20px',\n background: 'rgba(0,0,0,0.12)'\n }\n };\n});\n","import React, {memo, useState} from 'react';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n DataTenantBadge,\n EntityUriLink,\n MatchRulesBlock,\n MatchRuleVariant\n} from '@reltio/components';\n\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n EntitiesMap,\n Entity,\n getEntityColor,\n getEntityUriForLink,\n getLabel,\n Match,\n Metadata,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {ActionButtonRendererProps} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected?: boolean;\n 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 = getEntityColor(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 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 <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n entitiesMap={entitiesMap}\n entity={entity}\n match={match}\n metadata={metadata}\n variant={MatchRuleVariant.excludeNotMatch}\n />\n <Divider orientation=\"vertical\" className={styles.divider} />\n {!!match.matchScore && <div className={styles.matchScore}>{match.matchScore}</div>}\n {isDataTenantEntity(entity) && (\n <DataTenantBadge className={styles.tenantIcon} dataTenantId={entity.dataTenant} />\n )}\n </div>\n </div>\n <div className={styles.actions}>\n <div className={classnames(styles.actionButtons, {[styles.active]: openMenu})}>\n <Actions\n buttonClassName={styles.rightButton}\n hoveredMatch={match}\n onActionsMenuOpen={() => setOpenMenu(true)}\n onActionsMenuClose={() => setOpenMenu(false)}\n />\n </div>\n {entityToMatch && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.border]: openMenu})}\n uri={createObjectIdForPM(entityToMatch.uri, match.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: match.object.uri\n })}\n allowOnlyOneComment\n showAlways={openMenu}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(ItemRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden'\n }\n}));\n","import React from 'react';\nimport {Entity, Metadata, EntitiesMap, Match} from '@reltio/mdm-sdk';\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};\n\nexport const MatchItems = ({\n entityToMatch,\n matches,\n toggleSelect,\n actionButtonsRenderer,\n metadata,\n entitiesMap,\n selectedItems\n}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode} = useViewState();\n\n return (\n <div className={styles.view}>\n {matches.map((match, index) => (\n <ItemRenderer\n key={match.object.uri}\n rowIndex={index}\n match={match}\n entityToMatch={entityToMatch}\n toggleSelect={toggleSelect}\n actionButtonsRenderer={actionButtonsRenderer}\n matches={matches}\n matchRules={match.matchRules}\n metadata={metadata}\n entitiesMap={entitiesMap}\n 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 '@material-ui/core/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 '@material-ui/icons/MoreVert';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nexport type Action = {\n ActionButton: (props) => JSX.Element;\n show: boolean;\n props: Record<string, unknown>;\n};\n\ntype Props = {\n actions: Action[];\n numberOfButtons?: number;\n mode?: 'normal' | 'hover';\n actionButtonSize?: string;\n classes?: {\n actionButton: string;\n moreOptions: string;\n };\n onActionsMenuOpen?: () => void;\n onActionsMenuClose?: () => void;\n};\n\nexport const ActionsPanel = ({\n actions,\n numberOfButtons = 2,\n mode = 'normal',\n actionButtonSize,\n classes,\n onActionsMenuOpen,\n onActionsMenuClose\n}: Props) => {\n const [buttonActions, menuActions] = splitAt(numberOfButtons, actions);\n\n const buttonMode = mode === 'normal' ? ActionButtonMode.button : ActionButtonMode.iconButton;\n const buttonSize = mode === 'normal' ? 'MPlus' : 'S';\n\n return (\n <>\n {buttonActions.map(({ActionButton, props}, index) => (\n <ActionButton\n key={index}\n mode={buttonMode}\n className={classes?.actionButton}\n {...(actionButtonSize ? {size: actionButtonSize} : {})}\n {...props}\n />\n ))}\n {menuActions.length > 0 && (\n <DropDownMenuButton\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n icon: MoreVertIcon,\n size: buttonSize,\n tooltipTitle: i18n.text('More actions')\n }}\n className={classes?.moreOptions}\n menuId={'matches-view-actions'}\n menuItems={menuActions}\n onMenuOpen={onActionsMenuOpen}\n onMenuClose={onActionsMenuClose}\n MenuItemRenderer={MenuItemRenderer}\n />\n )}\n </>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import {BasicTablePagination, LinearLoadIndicator, useDidUpdateEffect} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n getEntityUriFromMatchObject,\n Metadata,\n SearchFilter,\n PotentialMatchesPerspectiveConfig,\n DataTenant,\n SortingField,\n isDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} 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 dispatch = useDispatch();\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} = useFindEntities({\n enabled: !!entityUri,\n entityType,\n filters: requestFilters,\n sorting,\n page,\n rowsPerPage,\n searchTenantId: searchTenant.id\n });\n\n const {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n findEntities();\n dispatch(profile.entity.actions.loadEntity({uri: entityUri}));\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(entities);\n }, [setSelectedItems, entities]);\n\n useEffect(() => {\n const selected = selectedItems.map((item) => {\n const entity = entities.find(\n (entity) => getEntityUriFromMatchObject(entity) === getEntityUriFromMatchObject(item)\n );\n return entity ? entity : item;\n });\n setSelectedItems(selected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entities]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\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\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: 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 />\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 {useViewStateActions} from '../contexts/ViewStateContext';\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 {setGlobalSpinner} = useViewStateActions();\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const [total, setTotal] = useState(0);\n const [entities, setEntities] = useState([]);\n const safePromise = useSafePromise();\n const DEFAULT_SELECTION = ['uri', 'label', 'type', 'secondaryLabel', 'attributes', 'crosswalks'];\n const filterQuery: string = useMemo(() => buildFilterQueryString()(filters), [filters]);\n const findEntities = useCallback(\n () => {\n if (enabled) {\n setGlobalSpinner(true);\n 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(() => setGlobalSpinner(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};\n};\n","import {useCallback, useEffect} 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 {setGlobalSpinner, setEntitiesMap} = useViewStateActions();\n const onStartLoading = useCallback(() => {\n setGlobalSpinner(true);\n }, [setGlobalSpinner]);\n const onFinishLoading = useCallback(() => {\n setGlobalSpinner(false);\n }, [setGlobalSpinner]);\n const {total, matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled,\n entity,\n filter,\n rules,\n onFinishLoading,\n onStartLoading,\n options,\n page,\n rowsPerPage,\n sorting,\n markMatchedValues: true\n });\n\n useEffect(() => {\n setEntitiesMap(entitiesMap);\n }, [setEntitiesMap, entitiesMap]);\n\n return {matches, total, entitiesMap, loadMatches};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n dialogPaper: {\n height: '600px',\n maxWidth: '600px'\n },\n dialogTitle: {\n padding: '16px 16px 0'\n },\n titleText: {\n color: theme.palette.text.primary,\n fontSize: '18px',\n letterSpacing: 0,\n lineHeight: '21px'\n },\n path: {\n color: theme.palette.text.secondary,\n fontize: '13px',\n letterSpacing: 0,\n lineHeight: '15px',\n padding: '6px 0'\n },\n content: {\n padding: '8px 16px 0px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n attributeList: {\n paddingTop: '22px'\n }\n}));\n","import React, {useMemo, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {identity, isEmpty, pipe, pathOr} from 'ramda';\n\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {AttributesList, ConnectionRelationTypeSelector, PopupBoundariesContext} from '@reltio/components';\n\nimport {\n createRelation,\n Entity,\n getActivenessAttributes,\n getLabel,\n getRelationAttributesList,\n ModeTypes,\n validateConnectionRelation,\n Connection,\n Metadata,\n AttributeType,\n RecordAttributesType,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {getRelationTypesFromConfig} from '../../helpers/relationsHelpers';\nimport {showAddRelationErrors} from '../../utils/errors';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n open?: boolean;\n onClose: (relationUri: string) => void;\n};\n\nconst AddRelationDialog = ({config, mainEntity, currentEntity, matchRules, open, onClose = identity}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const containerRef = useRef(null);\n\n const {relation = {}}: Connection =\n useSelector((state) => mdm.selectors.getRelationToAddByViewId(state, config.id)) || {};\n\n const {inRelations: inRelationTypes = [], outRelations: outRelationTypes = []} = useMemo(\n () => getRelationTypesFromConfig(metadata, config, mainEntity, currentEntity, matchRules),\n [config, mainEntity, currentEntity, matchRules, metadata]\n );\n\n const {relationUri, relationType = {}} = relation;\n const attributes: RecordAttributesType = pathOr({}, ['object', 'attributes'], relation);\n\n const relationAttrTypes: AttributeType[] = useMemo(() => getRelationAttributesList(metadata, relationType), [\n relationType,\n metadata\n ]);\n\n const attributeListEntity = useMemo(\n () => ({\n attributes,\n ...getActivenessAttributes(relation)\n }),\n [relation, attributes]\n );\n\n const viewId = config.id;\n\n const onRelationTypeChange = useCallback(\n pipe(profile.relations.actions.setRelationType(config.id, relationUri), dispatch),\n [config, relationUri, dispatch]\n );\n\n const onAddAttributes = useCallback(\n (params) => pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const handleClose = useCallback(() => onClose(relationUri), [relationUri, onClose]);\n\n const resetErrors = useCallback(() => dispatch(profile.errors.actions.errorsSet([])), [dispatch]);\n\n const validate = useCallback(() => {\n const errors = validateConnectionRelation(metadata, {relation});\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n }, [relation, metadata, dispatch]);\n\n const onCancel = useCallback(() => {\n resetErrors();\n handleClose();\n }, [resetErrors, handleClose]);\n\n const onAdd = () => {\n const {relationType, startDate, endDate} = relation;\n if (validate()) {\n createRelation({\n startEntityUri: mainEntity.uri,\n endEntityUri: currentEntity.uri,\n relationType,\n attributes: pathOr({}, ['object', 'attributes'], relation),\n startDate,\n endDate\n }).catch(showAddRelationErrors);\n handleClose();\n }\n };\n\n const title = `${getLabel(currentEntity.label)} \\u2192 ${getLabel(mainEntity.label)}`;\n\n const disabled = isEmpty(relationType);\n const boundariesElement = containerRef.current;\n const popupBoundariesValue = useMemo(\n () => ({\n element: boundariesElement,\n priority: ['top', 'bottom']\n }),\n [boundariesElement]\n );\n return (\n <Dialog open={open} fullWidth maxWidth=\"sm\" onClose={onCancel} classes={{paper: styles.dialogPaper}}>\n <DialogTitle disableTypography classes={{root: styles.dialogTitle}}>\n <Typography variant=\"subtitle1\" classes={{root: styles.titleText}}>\n {i18n.text('Add relationship')}\n </Typography>\n <Typography variant=\"body2\" classes={{root: styles.path}}>\n {title}\n </Typography>\n </DialogTitle>\n <DialogContent classes={{root: styles.content}} ref={containerRef}>\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ConnectionRelationTypeSelector\n relation={relation}\n metadata={metadata}\n inRelationTypes={inRelationTypes}\n outRelationTypes={outRelationTypes}\n onChange={onRelationTypeChange}\n applyFirstByDefault={true}\n />\n <AttributesList\n className={styles.attributeList}\n attrTypes={relationAttrTypes}\n entity={attributeListEntity}\n showEmptyEditors={true}\n mode={ModeTypes.EDITING}\n parentUri={relationUri}\n onAddAttributes={onAddAttributes}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n />\n </PopupBoundariesContext.Provider>\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel}>{i18n.text('Cancel')}</Button>\n <Button disabled={disabled} color=\"primary\" onClick={onAdd}>\n {i18n.text('Add')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default AddRelationDialog;\n","import {assocPath, evolve, identity, propOr, filter, pipe, map} from 'ramda';\nimport {\n canCreateRelationBetweenEntities,\n generateNewRelationUri,\n getRulesConfig,\n getEntityType,\n getRelationType,\n inOutRelationsDeduplicator,\n Metadata,\n Entity,\n InOutRelation,\n Connection,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\n\nexport const getRelationTypesFromConfig = (\n metadata: Metadata,\n config: PotentialMatchesPerspectiveConfig,\n mainEntity: Entity,\n entity: Entity,\n matchRules: string[]\n): {\n inRelations: InOutRelation;\n outRelations: InOutRelation;\n} => {\n const {isNotDuplicatedInRelation, isNotDuplicatedOutRelation} = inOutRelationsDeduplicator();\n\n const setObjectTypes = (relation) =>\n pipe(\n assocPath(['startObject', 'objectType'], getEntityType(metadata, relation.startObject.objectTypeURI)),\n assocPath(['endObject', 'objectType'], getEntityType(metadata, relation.endObject.objectTypeURI))\n )(relation);\n\n const entityType = getEntityType(metadata, entity.type);\n const matchActionConfig = propOr({}, 'matchActions', config);\n const rulesConfig = getRulesConfig(matchActionConfig, entityType, matchRules);\n const [relationTypeUris] = rulesConfig.map(({createRelation}) => createRelation).filter(identity);\n return (\n evolve(\n {\n inRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, entity, mainEntity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedInRelation),\n map(setObjectTypes)\n ),\n outRelations: pipe(\n filter(canCreateRelationBetweenEntities(metadata, mainEntity, entity)),\n map(getRelationType(metadata)),\n filter(isNotDuplicatedOutRelation),\n map(setObjectTypes)\n )\n },\n relationTypeUris\n ) || {}\n );\n};\n\nexport const createNewConnection = (entity = {} as Entity): Connection => ({\n relation: {\n relationUri: generateNewRelationUri()\n },\n entity,\n isNew: true\n});\n","import React, {useCallback, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {pipe} from 'ramda';\nimport {profile} from '@reltio/mdm-module';\nimport {createNewConnection} from '../helpers/relationsHelpers';\nimport AddRelationDialog from '../components/AddRelationDialog/AddRelationDialog';\nimport {Entity, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nexport const useAddRelationDialog = (config: PotentialMatchesPerspectiveConfig) => {\n const [showDialog, setShowDialog] = useState(false);\n const [relationDialogContent, setRelationDialogContent] = useState({});\n const dispatch = useDispatch();\n\n const openAddRelationDialog = useCallback(\n ({\n mainEntity,\n currentEntity,\n matchRules\n }: {\n mainEntity?: Entity;\n currentEntity?: Entity;\n matchRules?: string[];\n }) => {\n const newConnection = createNewConnection(currentEntity);\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n setRelationDialogContent({mainEntity, currentEntity, matchRules});\n setShowDialog(true);\n },\n [config, dispatch]\n );\n\n const closeAddRelationDialog = useCallback(\n (relationUri: string) => {\n pipe(profile.relations.actions.closeRelationEditor, dispatch)(config.id, relationUri);\n setShowDialog(false);\n },\n [config.id, dispatch]\n );\n\n const AddRelationDialogRenderer = useCallback(() => {\n return showDialog ? (\n <AddRelationDialog\n config={config}\n open={showDialog}\n onClose={closeAddRelationDialog}\n {...relationDialogContent}\n />\n ) : null;\n }, [showDialog, config, closeAddRelationDialog, relationDialogContent]);\n\n return {showDialog, openAddRelationDialog, AddRelationDialogRenderer};\n};\n","export const DEFAULT_OPTIONS = {\n showTransitiveMatches: true\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {partition, prop, identity, equals} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n 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 dispatch = useDispatch();\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} = 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 {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadMatches();\n dispatch(profile.entity.actions.loadEntity({uri: entityUri}));\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri, options]);\n\n const objectIds = useMemo(\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 {canMerge, canAddRelation, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: CreateRelationButton,\n show: canAddRelation && !hasDTEntity,\n props: {\n mainEntity: entity,\n currentEntity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n onClick: openAddRelationDialog\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, openAddRelationDialog, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n 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 />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n {showDialog && <AddRelationDialogRenderer />}\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n }\n);\n\nMatchesView.displayName = 'MatchesView';\n\nexport default MatchesView;\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n getNotMatch,\n getNotMatchesFromDataTenants,\n withDtssPotentialItems,\n getEntitiesMapForTransitiveMatches,\n GlobalSearchRequestOptions,\n addGlobalFilterToQuery,\n Match,\n NOT_MATCH,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {usePagingSimulator, useSafePromise} from '@reltio/components';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\n\ntype Params = {\n entityUri: string;\n enabled: boolean;\n page: number;\n filter: string;\n rowsPerPage: number;\n sorting?: SortingField;\n};\n\nexport const useNotMatches = ({entityUri, filter, sorting, page, rowsPerPage, enabled}: Params) => {\n const {order, field} = sorting || {};\n const {setGlobalSpinner} = useViewStateActions();\n const [total, setTotal] = useState(0);\n const [matches, setMatches] = useState<Match[]>([]);\n const [entitiesMap, setEntitiesMap] = useState({});\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenants = useSelector(mdmModule.selectors.getDataTenants);\n const {activityFilter, globalFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n const dtssParams = useMemo(\n () => ({\n dtssPath,\n dataTenants,\n entity: {uri: entityUri},\n customerTenant: tenant,\n dtssRequest: getNotMatchesFromDataTenants\n }),\n [dtssPath, dataTenants, entityUri, tenant]\n );\n\n //eslint-disable-next-line react-hooks/exhaustive-deps\n const getNotMatchWithDtss = useCallback(withDtssPotentialItems(dtssParams, getNotMatch), [dtssParams]);\n\n const getNotMatchWithPaging = usePagingSimulator(getNotMatchWithDtss);\n\n const safePromise = useSafePromise();\n const markAsNotMatch = (record) => ({matchRules: [NOT_MATCH], ...record});\n const loadNotMatchesIfNeeded = useCallback(\n (force?: boolean) => {\n if (enabled) {\n setGlobalSpinner(true);\n safePromise(\n getNotMatchWithPaging({\n entityUri: entityUri,\n offset: page * rowsPerPage,\n max: rowsPerPage,\n filter: addGlobalFilterToQuery(globalFilter, filter) || '',\n sort: field,\n force,\n order,\n activeness: activityFilter\n })\n )\n .then((result) => {\n const {response, total, originalResponse} = result;\n setTotal(total);\n setMatches(response.map(markAsNotMatch));\n const notAMatchUris = response.map(({uri}) => uri);\n if (notAMatchUris.length > 0) {\n setEntitiesMap(getEntitiesMapForTransitiveMatches(originalResponse));\n }\n })\n .finally(() => setGlobalSpinner(false));\n }\n },\n [entityUri, filter, field, order, page, rowsPerPage, activityFilter, enabled, globalFilter] // eslint-disable-line\n );\n\n useEffect(() => {\n loadNotMatchesIfNeeded();\n }, [loadNotMatchesIfNeeded]);\n\n const loadNotMatches = useCallback(() => {\n loadNotMatchesIfNeeded(true);\n }, [loadNotMatchesIfNeeded]);\n\n return {matches, total, entitiesMap, loadNotMatches};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n mainArea: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n }\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {prop, equals, identity} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n LinearLoadIndicator,\n useDidUpdateEffect,\n CollaborationContext,\n useCollaboration,\n EntitiesMapContext\n} from '@reltio/components';\nimport {\n Entity,\n getActionPermissionForMatch,\n isDataTenantEntity,\n Metadata,\n getPotentialMatchesObjectIdsForCollaboration,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n buildFilterQueryString,\n isEmptyValue,\n SortingField\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} 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 dispatch = useDispatch();\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} = 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 {setReloadHandler} = useReloadData();\n setReloadHandler(() => {\n loadNotMatches();\n dispatch(profile.entity.actions.loadEntity({uri: entityUri}));\n });\n\n const resetPage = () => {\n changePage(0);\n };\n\n const resetSelected = useCallback(() => {\n setSelectedItems([]);\n }, [setSelectedItems]);\n const selectAll = useCallback(() => {\n setSelectedItems(matches);\n }, [setSelectedItems, matches]);\n\n useDidUpdateEffect(() => {\n resetPage();\n resetSelected();\n }, [entityUri]);\n\n const actionButtonsRenderer = useCallback(\n ({hoveredMatch, buttonClassName, onActionsMenuOpen, onActionsMenuClose}: ActionButtonRendererProps) => {\n const {canMerge, canMark} = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n const entities = [hoveredMatch.object];\n const hasDTEntity = [...entities, entity].some(isDataTenantEntity);\n\n const actions = [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: ReinstateMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity && hasWorkflow,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show'));\n\n return (\n <ActionsPanel\n actions={actions}\n classes={{\n actionButton: buttonClassName,\n moreOptions: buttonClassName\n }}\n mode=\"hover\"\n numberOfButtons={2}\n onActionsMenuOpen={onActionsMenuOpen}\n onActionsMenuClose={onActionsMenuClose}\n />\n );\n },\n [entity, config, metadata, hasWorkflow]\n );\n\n const selectedCount = useMemo(() => {\n return matches.map((match) => selectedItems?.find(equals(match))).filter(identity).length;\n }, [selectedItems, matches]);\n\n return (\n <CollaborationContext.Provider value={collaboration}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.mainArea}>\n <RightSidePanelHeader\n selectedCount={selectedCount}\n totalCount={total}\n totalOnPage={matches.length}\n sortOptions={sortOptions}\n sorting={sorting}\n 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 />\n <BasicTablePagination\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n count={total}\n page={page}\n onChangePage={changePage}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={changeRowsPerPage}\n />\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </div>\n </EntitiesMapContext.Provider>\n </CollaborationContext.Provider>\n );\n});\n\nNotMatchView.displayName = 'NotMatchView';\n","import {Entity, Metadata, PotentialMatchesPerspectiveConfig, SearchFilter, SortingField} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {UsersContext, useUsers} from '@reltio/components';\nimport {ActivePanel} from '../../constants/views';\nimport FindMatchesView from '../FindMatchesView';\nimport {MatchesView} from '../MatchesView';\nimport NotMatchView from '../NotMatchView';\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 users = useUsers();\n\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 <UsersContext.Provider value={users}>{render()}</UsersContext.Provider>;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n input: {\n margin: 0,\n borderRadius: '4px',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 0\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {\n MatchRulesSelector,\n SourceSystemsSelector,\n AttributesValuesEditor,\n AttributeFiltersComponentProps\n} from '@reltio/components';\nimport {isMatchRuleAttrType, isSourceSystemAttrType, SearchFilter, MatchRulesAttrNames} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\nexport const ValuesEditor = ({rowData, rowContext}: AttributeFiltersComponentProps) => {\n const styles = useStyles();\n const {values = [], attribute: {attrType, fieldName = null} = {}, filter, id} = (rowData || {}) as RowData;\n const {changeFilter} = rowContext;\n const {entityType} = rowContext;\n\n const changeValue = useCallback(\n (newValues: SearchFilter['values']) => {\n const newFilter: SearchFilter = {\n fieldName,\n filter,\n values: newValues\n };\n\n changeFilter(newFilter, id);\n },\n [changeFilter, id, fieldName, filter]\n );\n\n const TextFieldProps = useMemo(\n () => ({\n InputProps: {\n classes: {\n root: styles.input\n }\n }\n }),\n [styles]\n );\n\n const commonProps = {\n values: values as string[],\n onChange: 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 capitalize from '@material-ui/core/utils/capitalize';\nimport {AttributesFilterSelector, AttributeFiltersComponentProps} from '@reltio/components';\nimport {FilterOptions, getFilterOptionLabel, isMatchRuleAttrType} from '@reltio/mdm-sdk';\n\ntype RowData = AttributeFiltersComponentProps['rowData'];\n\ntype Props = AttributeFiltersComponentProps & {textFieldInputRef: React.MutableRefObject<HTMLInputElement>};\n\nexport const FilterSelector = (props: Props) => {\n const {rowData} = props;\n const {attribute: {attrType} = {}} = (rowData || {}) as RowData;\n const options = isMatchRuleAttrType(attrType)\n ? [FilterOptions.EQUALS].map((value) => ({value, label: capitalize(getFilterOptionLabel(value))}))\n : null;\n\n return <AttributesFilterSelector {...props} options={options} />;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n divider: {\n marginBottom: '14px',\n marginRight: '16px',\n background: '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 as FormControlLabel} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\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 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 {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n marginLeft: 'auto',\n flexShrink: 0\n }\n});\n","import React, {useCallback, useMemo, useState, memo, useEffect} from 'react';\nimport {pluck, propOr} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {AttributesFiltersButton, SideButtonsPanel, SidePanel} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n CrosswalksAttrTypes,\n EntityAttrTypes,\n getEntityType,\n hasMatchRulesWithoutML,\n hasMlMatchRule,\n isReadableAttribute,\n MatchRulesAttrTypes,\n Order,\n PotentialMatchesPerspectiveConfig,\n SearchFilter,\n SortingField\n} from '@reltio/mdm-sdk';\nimport PotentialMatchesIcon from './icons/potential-matches-icon.svg';\nimport FindMatchesIcon from './icons/find-matches-icon.svg';\nimport NotAMatchIcon from './icons/not-a-match-icon.svg';\nimport {ActivePanel} from '../../constants/views';\nimport Content from '../../components/Content';\nimport {RightSideHeaderContext} from '../../contexts/RightSideHeaderContext';\nimport {ValuesEditor} from './ValuesEditor/ValuesEditor';\nimport {MatchesOptions, PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {MatchesAttributesFiltersButton} from './MatchesAttributesFiltersButton/MatchesAttributesFiltersButton';\n\nimport {ADDITIONAL_SORT_OPTIONS_DATA, DEFAULT_SORT_OPTIONS, getSortOptionIdFromData} from '../../helpers/sortHelpers';\nimport {DEFAULT_OPTIONS} from '../../constants/defaultOptions';\n\nimport {useStyles} from './styles';\n\nconst DEFAULT_PANEL_WIDTH = 480;\n\nconst sourceSystemsComponents = {\n ValuesEditor\n};\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n isLoaded: boolean;\n savedState: PotentialMatchesSavedState;\n onUpdateSavedState: (stateToSave: PotentialMatchesSavedState) => void;\n};\n\nexport const RightSidePanel = memo(({config, isLoaded, savedState, onUpdateSavedState}: Props) => {\n const styles = useStyles();\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 resetActive = useCallback(() => {\n setActive(null);\n }, []);\n const isOpen = active !== null;\n\n const entityType = getEntityType(metadata, entity?.type);\n\n const getAttributeTypes = (entityType) =>\n (entityType.attributes || []).concat(entityType.analyticsAttributes || []).filter(isReadableAttribute);\n\n const attributeTypes = useMemo(() => getAttributeTypes(entityType), [entityType]);\n\n const matchRulesAttributes = useMemo(() => {\n const matchRulesAttributes = [\n {...MatchRulesAttrTypes.matchRules, check: hasMatchRulesWithoutML},\n {...MatchRulesAttrTypes.MLRecommendedMatch, check: hasMlMatchRule}\n ];\n\n return matchRulesAttributes.reduce((attributes, {check, ...attrType}) => {\n check(entityType) && attributes.push(attrType);\n return attributes;\n }, []);\n }, [entityType]);\n\n const potentialMatchesAttributeTypes = useMemo(\n () => [...matchRulesAttributes, ...attributeTypes],\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 elements = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.PotentialMatches,\n icon: PotentialMatchesIcon,\n tooltipTitle: i18n.text('Potential Matches')\n },\n headerProps: {\n mainTitle: i18n.text('Potential Matches'),\n rightContent: (\n <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 const headerProps = useMemo(\n () => ({...elements[active]?.headerProps, onClose: resetActive}),\n [resetActive, active, elements]\n );\n\n const {sorting, filters, options, onSorting} = elements[active] || {};\n\n useEffect(() => {\n if (!isLoaded) return;\n const showSidePanel = propOr(true, 'showSidePanel')(savedState);\n setActive(showSidePanel ? ActivePanel.PotentialMatches : null);\n }, [isLoaded]);\n\n useEffect(() => {\n if (!isLoaded) return;\n onUpdateSavedState({showSidePanel: active !== null});\n }, [active]); // eslint-disable-line\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen} width={DEFAULT_PANEL_WIDTH}>\n <RightSideHeaderContext.Provider value={headerProps}>\n <Content\n config={config}\n entity={entity}\n filters={filters}\n options={options}\n sorting={sorting}\n onSorting={onSorting}\n metadata={metadata}\n activeView={active}\n />\n </RightSideHeaderContext.Provider>\n </SidePanel>\n <SideButtonsPanel\n buttonsProps={pluck('buttonProps', elements)}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </div>\n );\n});\n\nRightSidePanel.displayName = 'RightSidePanel';\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n button: {\n minWidth: '90px',\n padding: '8px 12px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {ModeSwitcher} from '@reltio/components';\n\nimport useStyles from './styles';\nimport ViewColumnRoundedIcon from '@material-ui/icons/ViewColumnRounded';\nimport TableRowsOutlinedIcon from '@material-ui/icons/TableChartOutlined';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ComparisonViewMode} from '../../constants/views';\nimport {MAX_PROFILES_TO_COMPARE} from '../../constants/views';\n\ntype Mode = {\n id: ComparisonViewMode;\n tooltipTitle: string;\n title: string;\n Icon: React.ElementType;\n disabled?: boolean;\n};\n\nconst MODES: Mode[] = [\n {\n id: ComparisonViewMode.COLUMNS,\n tooltipTitle: i18n.text('Column'),\n title: i18n.text('Column'),\n Icon: ViewColumnRoundedIcon\n },\n {\n id: ComparisonViewMode.TABLE,\n tooltipTitle: i18n.text('Table'),\n title: i18n.text('Table'),\n Icon: TableRowsOutlinedIcon\n }\n];\n\ntype Props = {\n className?: string;\n};\n\nconst ComparisonViewModeSwitcher = ({className}: Props) => {\n const styles = useStyles();\n const {comparisonViewMode, selectedItems} = useViewState();\n const {setComparisonViewMode} = useViewStateActions();\n const isTableOnly = selectedItems.length > MAX_PROFILES_TO_COMPARE;\n const getMode = (baseMode: Mode) =>\n baseMode.id === ComparisonViewMode.COLUMNS\n ? {\n ...baseMode,\n disabled: isTableOnly,\n tooltipTitle: isTableOnly\n ? i18n.text('Column view supports maximum ${maxProfiles} profiles', {\n maxProfiles: MAX_PROFILES_TO_COMPARE\n })\n : baseMode.tooltipTitle\n }\n : baseMode;\n return (\n <ModeSwitcher\n className={className}\n classes={{button: styles.button}}\n modes={MODES.map(getMode)}\n modeId={comparisonViewMode}\n onChange={setComparisonViewMode}\n />\n );\n};\n\nexport default ComparisonViewModeSwitcher;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n header: {\n padding: '0 8px 0 16px',\n backgroundColor: '#fff',\n '& $splitter': {\n height: '32px',\n marginRight: '16px',\n marginLeft: '4px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n },\n title: {\n fontSize: '16px',\n fontWeight: 400,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n color: theme.palette.text.primary\n },\n clearAllButton: {\n marginLeft: '16px'\n },\n mergeButton: {\n marginRight: '12px'\n },\n total: {\n color: theme.palette.text.secondary\n },\n splitter: {},\n actionSplitter: {\n height: '32px',\n margin: '0 8px',\n color: 'rgba(0, 0, 0, 0.12)'\n }\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {prop, map, not} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {BasicViewHeader, ColumnsSettings, DropDownMenuItem, SettingsMenu, Spacer} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport {\n getActionPermissionForMatches,\n Entity,\n Metadata,\n isDataTenantEntity,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DCRReviewButton, MergeButton, NotMatchButton} from '../Actions';\nimport {ActionsPanel} from '../ActionsPanel/ActionsPanel';\nimport ComparisonViewModeSwitcher from '../ComparisonViewModeSwitcher/ComparisonViewModeSwitcher';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\nimport {Divider as Divider} from '@material-ui/core';\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\n const actions = useMemo(\n () =>\n [\n {\n ActionButton: MergeButton,\n show: canMerge,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: NotMatchButton,\n show: canMark,\n props: {\n entity,\n entities\n }\n },\n {\n ActionButton: DCRReviewButton,\n show: !hasDTEntity,\n props: {\n entity,\n entities\n }\n }\n ].filter(prop('show')),\n [canMark, canMerge, entity, entities, hasDTEntity]\n );\n\n const hasSelectedItems = selectedItems.length !== 0;\n\n const handleClearSelection = () => {\n setSelectedItems([]);\n };\n\n const handleToggleShowOvValue = useCallback(() => {\n onChangeShowNonOv(not);\n }, [onChangeShowNonOv]);\n const settingItems = useMemo<Array<DropDownMenuItem>>(() => {\n return [\n {\n selected: !showNonOv,\n selectable: true,\n text: i18n.text('Show only OV'),\n onClick: handleToggleShowOvValue,\n id: 'showNonOv'\n }\n ];\n }, [handleToggleShowOvValue, showNonOv]);\n return (\n <BasicViewHeader title={''} classes={{root: styles.header}}>\n <Typography className={styles.title}>\n <span>{i18n.text('Match Review')}</span>\n {hasSelectedItems && (\n <span className={styles.total}>\n {' '}\n ({selectedItems.length}\n {limitSelection && '/' + limitSelection})\n </span>\n )}\n </Typography>\n {hasSelectedItems && (\n <Button onClick={handleClearSelection} className={styles.clearAllButton} color=\"primary\">\n {i18n.text('Clear All')}\n </Button>\n )}\n <Spacer />\n {hasSelectedItems && (\n <>\n <ActionsPanel actions={actions} numberOfButtons={2} />\n <Divider orientation={'vertical'} classes={{vertical: styles.actionSplitter}} />\n </>\n )}\n <SettingsMenu items={settingItems} 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 '@material-ui/core/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 '@material-ui/core/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 as Tooltip} from '@material-ui/core';\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 '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n menuButtonWrapper: {\n display: 'none',\n position: 'absolute',\n top: '-4px',\n right: '-14px'\n },\n headCell: {\n display: 'flex',\n position: 'relative',\n 'th:hover &': {\n '& $menuButtonWrapper': {\n display: 'block'\n }\n }\n },\n active: {\n display: 'block'\n }\n});\n","import React, {useContext, useRef} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {SmallIconButton} from '@reltio/components';\nimport {ColumnDataContext} from '../../../../contexts/ColumnsDataContext';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\n\ntype Props = {\n label?: string;\n id: string;\n hideable?: boolean;\n};\n\nexport const HeadCellRenderer = ({label, id, hideable}: Props) => {\n const styles = useStyles();\n const {setAnchor, setHoveredId, hoveredId} = useContext(ColumnDataContext);\n const ref = useRef<HTMLDivElement>();\n const openConfigColumnPopup = () => {\n setAnchor(ref.current);\n setHoveredId(id);\n };\n return (\n <div className={styles.headCell}>\n {label}\n {hideable !== false && (\n <div className={classnames(styles.menuButtonWrapper, {[styles.active]: hoveredId === id})} ref={ref}>\n <SmallIconButton icon={MoreVertIcon} onClick={openConfigColumnPopup} size={'S'} />\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {ArrowExpandButton} from '@reltio/components';\nimport {AttributeType} from '@reltio/mdm-sdk';\nimport {ExpandedContext} from '../ExpandedContext';\nimport {HeadCellRenderer} from './HeadCellRenderer';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n attributeType: AttributeType;\n id: string;\n};\n\nexport const ComplexAttributesHeadRenderer = ({label, attributeType, id}: Props) => {\n const styles = useStyles();\n const {expandedMap, onExpandType} = useContext(ExpandedContext);\n const onExpandClick = useCallback(() => onExpandType(attributeType.uri), [onExpandType, attributeType]);\n const expanded = expandedMap[attributeType.uri];\n return (\n <div className={styles.complexAttributesHeadRenderer}>\n <ArrowExpandButton expanded={expanded} onClick={onExpandClick} className={styles.arrowButton} />\n <div className={styles.complexAttributesHeadLabel}>\n <HeadCellRenderer label={label} id={id} />\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport const HoveredEntityContext = React.createContext<{\n hoveredEntity: string;\n resetHoveredEntity: () => void;\n }>({\n hoveredEntity: null,\n resetHoveredEntity: () => {}\n });\n\nHoveredEntityContext.displayName = 'HoveredEntityContext';\n","import React, {memo} from 'react';\nimport {prop} from 'ramda';\n\nimport {Entity, isDataTenantEntity, 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';\n\ntype Props = {\n value: {\n mainEntity: Entity;\n entity: Entity;\n matchRules: string[];\n permission: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n onActionsMenuClose?: () => void;\n onActionsMenuOpen?: () => void;\n openAddRelationDialog?: (param: {mainEntity?: Entity; currentEntity?: Entity; matchRules?: string[]}) => void;\n classes?: {\n actionButton?: string;\n moreOptions?: string;\n };\n mode?: 'normal' | 'hover';\n};\n\nconst MatchesControls = ({\n value: {mainEntity, entity, matchRules, permission},\n onActionsMenuClose,\n onActionsMenuOpen,\n openAddRelationDialog,\n classes = {},\n mode = 'hover'\n}: Props) => {\n const {canMerge, canAddRelation, canMark} = permission;\n const hasDTEntity = [mainEntity, entity].some(isDataTenantEntity);\n\n const 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 && (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 }\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 '@material-ui/core/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 {useState, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propSatisfies, allPass, includes} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getEntityUriFromMatchObject, getTasksForEntity, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nimport {POTENTIAL_MATCH_REVIEW} from '../constants/workflow';\n\nconst isPotentialMatchesTask = (task) => task.processType === POTENTIAL_MATCH_REVIEW;\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const useWorkflowTasks = ({entity, match}: Props) => {\n const workflowPath: string = useSelector(mdmModule.selectors.getWorkflowPath);\n const environment: string = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const safePromise = useSafePromise();\n const {uri: entityUri} = entity;\n const matchUri: string = getEntityUriFromMatchObject(match);\n const [requestIsInProgress, setRequestIsInProgress] = useState(false);\n const [tasks, setTasks] = useState<WorkflowTaskData[]>([]);\n const loadTasks = useCallback(\n () => {\n if (workflowPath && matchUri !== entityUri) {\n setRequestIsInProgress(true);\n safePromise(\n getTasksForEntity({\n entityUri,\n workflowPath,\n environment,\n tenant\n })\n )\n .then((result) => {\n const {data} = result;\n const hasMatchEntityUri = propSatisfies(includes(matchUri), 'objectURIs');\n const isTaskBelongsToMatch = allPass([isPotentialMatchesTask, hasMatchEntityUri]);\n const tasks = data.filter(isTaskBelongsToMatch);\n setTasks(tasks);\n })\n .finally(() => setRequestIsInProgress(false));\n }\n },\n [entityUri, environment, tenant, workflowPath, matchUri] // eslint-disable-line\n );\n return {enabled: !!workflowPath, loading: requestIsInProgress, tasks, loadTasks};\n};\n","import React from 'react';\n\nexport const WorkflowTasksAvailabilityContext = React.createContext<(entityUri: string, value: boolean) => void>(\n () => {}\n);\n\nWorkflowTasksAvailabilityContext.displayName = 'WorkflowTasksAvailabilityContext';\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n position: 'relative',\n minHeight: '86px',\n display: 'flex',\n overflow: 'hidden',\n margin: '-16px'\n },\n assigneeSelector: {},\n assigneeContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n padding: '16px 14px 16px 48px'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport {pick} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n PotentialMatchReviewCard,\n SmallIconButton,\n DropDownMenuButton,\n DropDownSelector,\n useWorkflowAssignee,\n WorkflowComments,\n useMergeAllRequest,\n useMarkAsNotMatchRequest\n} from '@reltio/components';\nimport {Entity, getEntityUriFromMatchObject, WorkflowTaskData, Match} from '@reltio/mdm-sdk';\n\nimport {useWorkflowTasks} from '../../hooks/useWorkflowTasks';\nimport {WorkflowTasksAvailabilityContext} from '../ComparisonTable/WorkflowTasksAvailabilityContext';\n\nimport {useStyles} from './styles';\n\nconst getPropsFromTasks = (task: WorkflowTaskData) => ({\n date: task.dueDate,\n type: task.processDefinitionDisplayName,\n createdBy: task.createdBy,\n step: task.displayName\n});\nconst getCommentsInfoFromTasks = pick(['processInstanceComments', 'taskId']);\n\ntype Props = {\n match: Match;\n entity: Entity;\n};\n\nexport const WorkflowCard = ({entity, match}: Props) => {\n const styles = useStyles();\n const {tasks, loadTasks} = useWorkflowTasks({entity, match});\n const setWorkflowTaskAvailability = useContext(WorkflowTasksAvailabilityContext);\n const {sendMergeAllRequest: merge} = useMergeAllRequest({\n entity,\n entities: [match.object]\n });\n const {sendMarkAsNotMatchRequest: notMatch} = useMarkAsNotMatchRequest({\n entity,\n entities: [match.object]\n });\n const mapping = {\n Merge: merge,\n NotAMatch: notMatch\n };\n useEffect(() => {\n loadTasks();\n }, [loadTasks]);\n const task = tasks[0];\n const matchEntityUri = getEntityUriFromMatchObject(match);\n useEffect(() => {\n setWorkflowTaskAvailability?.(matchEntityUri, !!task);\n }, [setWorkflowTaskAvailability, matchEntityUri, task]);\n const actions = ((task && task.possibleActions) || []).map(({action, label}) => ({\n text: label,\n onClick: mapping[action]\n }));\n const {assignee, getAssignees, updateAssignee, updateRequestIsInProgress} = useWorkflowAssignee(task || {});\n const Actions =\n actions.length > 0 ? (\n <DropDownMenuButton\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n menuId=\"custom-actions\"\n menuItems={actions}\n />\n ) : null;\n return task ? (\n <div className={styles.container}>\n <PotentialMatchReviewCard {...getPropsFromTasks(task)} Actions={Actions}>\n <div className={styles.assigneeContainer}>\n <DropDownSelector\n className={styles.assigneeSelector}\n enabled={!updateRequestIsInProgress || assignee}\n getOptions={getAssignees}\n onChange={updateAssignee}\n hideSelectedOptions={false}\n label={i18n.text('Assigned to')}\n value={assignee}\n defaultOptions={true}\n />\n </div>\n <WorkflowComments {...getCommentsInfoFromTasks(task)} />\n </PotentialMatchReviewCard>\n </div>\n ) : null;\n};\n","import i18n from 'ui-i18n';\nimport {DataTypes} from '@reltio/mdm-sdk';\nimport {ComparisonViewMode} from './views';\n\nexport const DEFAULT_ROWS = [\n {\n id: 'profile',\n label: i18n.text('Profile name'),\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false,\n 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: 'sources',\n label: i18n.text('Sources'),\n modes: [ComparisonViewMode.COLUMNS, ComparisonViewMode.TABLE]\n },\n {\n id: 'crosswalks',\n label: i18n.text('Crosswalks'),\n modes: [ComparisonViewMode.COLUMNS]\n }\n];\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n itemContainer: {\n width: '18px',\n height: '18px'\n },\n item: {\n width: '18px',\n height: '18px',\n background: 'none',\n fontSize: '1rem'\n }\n});\n","import React, {memo} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {SourceIcon, useCrosswalkColor} from '@reltio/components';\nimport {Crosswalk, getSourceSystemLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalk: Crosswalk;\n className?: string;\n showTooltip?: boolean;\n};\n\nconst ColoredSourceIcon = ({className, crosswalk, showTooltip = true}: Props) => {\n const styles = useStyles();\n const color = useCrosswalkColor(crosswalk);\n const metadata = useSelector(mdm.selectors.getMetadata) || {};\n\n const content = (\n <div className={classnames(styles.itemContainer, className)} style={{background: color}}>\n <SourceIcon sourceType={crosswalk.type} className={styles.item} />\n </div>\n );\n return showTooltip ? <Tooltip title={getSourceSystemLabel(metadata, crosswalk.type)}>{content}</Tooltip> : content;\n};\n\nexport default memo(ColoredSourceIcon);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n crosswalk: {\n marginBottom: '8px'\n },\n crosswalkIcon: {\n marginRight: '5px'\n },\n labelContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n spacer: {\n flex: 1\n }\n});\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {Crosswalk, getSourceSystemLabel, NestedAttributeValue} from '@reltio/mdm-sdk';\n\nimport ColoredSourceIcon from '../../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n attributeValue: NestedAttributeValue & {\n value: NestedAttributeValue['value'] & {\n crosswalk: Crosswalk;\n };\n };\n};\n\nconst LabelRenderer = ({attributeValue}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const crosswalk = attributeValue.value.crosswalk;\n return (\n <div className={styles.labelContainer}>\n <ColoredSourceIcon className={styles.crosswalkIcon} crosswalk={crosswalk} showTooltip={false} />\n <div>{getSourceSystemLabel(metadata, crosswalk.type)}</div>\n <div className={styles.spacer} />\n <div>{crosswalk.value}</div>\n </div>\n );\n};\n\nexport default LabelRenderer;\n","import React, {useMemo} from 'react';\nimport {ReadOnlyAttributeValuesBlock} from '@reltio/components';\nimport {\n AttributeType,\n Crosswalk,\n CrosswalksAttrTypes,\n getSourceSystemLabel,\n Metadata,\n NestedAttributeValue\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\nimport withExpanded from '../../withExpanded';\nimport LabelRenderer from './LabelRenderer';\nimport {useStyles} from './styles';\nimport {useSelector} from 'react-redux';\n\nexport const ExpandableAttributeValuesBlock = withExpanded(\n ReadOnlyAttributeValuesBlock\n) as typeof ReadOnlyAttributeValuesBlock;\n\ntype Props = {\n value: {\n crosswalks: Crosswalk[];\n attributeType: AttributeType;\n };\n};\n\nconst getFakeAttributeValueForCrosswalk = (crosswalk: Crosswalk, attributeType: AttributeType, metadata: Metadata) => {\n return attributeType.attributes.reduce(\n (nestedAttributeValue: NestedAttributeValue, subAttributeType) => {\n if (subAttributeType.uri === CrosswalksAttrTypes.sourceSystems.uri) {\n nestedAttributeValue.value[subAttributeType.uri] = getSourceSystemLabel(metadata, crosswalk.type);\n } else if (crosswalk[subAttributeType.uri]) {\n nestedAttributeValue.value[subAttributeType.uri] = crosswalk[subAttributeType.uri];\n }\n return nestedAttributeValue;\n },\n {value: {crosswalk}, uri: crosswalk.uri} as NestedAttributeValue\n );\n};\n\nconst CrosswalksRenderer = ({value: {crosswalks, attributeType}}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeValues = useMemo(\n () => crosswalks?.map((crosswalk) => getFakeAttributeValueForCrosswalk(crosswalk, attributeType, metadata)),\n [metadata, crosswalks, attributeType]\n );\n return attributeValues ? (\n <ExpandableAttributeValuesBlock\n values={attributeValues}\n attributeType={attributeType}\n LabelRenderer={LabelRenderer}\n valueContainerClassName={styles.crosswalk}\n />\n ) : null;\n};\n\nexport default CrosswalksRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: '-8px'\n },\n crosswalkIcon: {\n marginRight: '5px',\n marginBottom: '8px'\n }\n});\n","import React from 'react';\nimport {Entity, isDataTenantEntity as checkIsDataTenantEntity, isEmptyValue} from '@reltio/mdm-sdk';\nimport {DataTenantBadge} from '@reltio/components';\nimport ColoredSourceIcon from '../../ColoredSourceIcon/ColoredSourceIcon';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n};\n\nconst SourcesRenderer = ({value}: 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 {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 {\n always,\n chain,\n cond,\n filter,\n identity,\n last,\n map,\n path,\n pathOr,\n pipe,\n prop,\n split,\n values,\n when,\n pick\n} from 'ramda';\n\nimport {\n AttributeType,\n CrosswalksAttrTypes,\n EntitiesMap,\n Entity,\n findAttributeTypeByUri,\n getActionPermissionForMatch,\n getAttributeSource,\n getEntityId,\n isAttributeSearchUri,\n isComplexAttribute,\n isOv,\n MatchedValues,\n Match,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n searchUriToAttrUri\n} from '@reltio/mdm-sdk';\nimport {AttributesRenderer} from '../cell-renderers/AttributesRenderer';\nimport {HeadCellRenderer} from '../cell-renderers/HeadCellRenderer';\nimport {ComplexAttributesHeadRenderer} from '../cell-renderers/ComplexAttributesHeadRenderer';\nimport EntityCard from '../cell-renderers/EntityCard/EntityCard';\nimport MatchMethod from '../cell-renderers/MatchMethod/MatchMethod';\nimport WorkflowCardRenderer from '../cell-renderers/WorkflowCardRenderer/WorkflowCardRenderer';\nimport {DEFAULT_ROWS} from '../../../constants/defaultRows';\nimport CrosswalksRenderer from '../cell-renderers/CrosswalksRenderer/CrosswalksRenderer';\nimport {ComparisonViewMode} from '../../../constants/views';\nimport SourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\n\nexport type RowData = {\n id: string;\n label: string;\n cellRenderer?: (props: unknown) => JSX.Element;\n headCellRenderer?: (props: unknown) => JSX.Element;\n rowClassName?: string;\n attributeType?: AttributeType;\n hideable?: boolean;\n};\n\nconst additionalPropsForDefaultRows = {\n profile: {\n cellRenderer: EntityCard,\n headCellRenderer: HeadCellRenderer,\n label: ''\n },\n matchRules: {\n cellRenderer: MatchMethod,\n headCellRenderer: HeadCellRenderer\n },\n workflowCard: {\n cellRenderer: WorkflowCardRenderer,\n headCellRenderer: HeadCellRenderer\n },\n sources: {\n cellRenderer: SourcesRenderer,\n headCellRenderer: HeadCellRenderer\n },\n entityId: {\n headCellRenderer: HeadCellRenderer\n },\n crosswalks: {\n cellRenderer: CrosswalksRenderer,\n headCellRenderer: ComplexAttributesHeadRenderer,\n attributeType: {\n uri: 'crosswalks',\n name: 'crosswalks',\n type: 'Nested',\n attributes: Object.values(CrosswalksAttrTypes)\n }\n },\n score: {\n headCellRenderer: HeadCellRenderer\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} = 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 }\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, getEntityColor, getEntityId, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {HoveredEntityContext} from '../../HoveredEntityContext';\nimport {useAddRelationDialog} from '../../../../hooks/useAddRelationDialog';\nimport MatchControls from '../../../MatchControls/MatchControls';\n\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: {\n canMerge?: boolean;\n canAddRelation?: boolean;\n canMark?: boolean;\n };\n };\n};\n\nconst EntityCard = ({value: {entity, config, isSelectedEntity, onRemove, ...rest}}: Props) => {\n const color = getEntityColor(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 as Popover} from '@material-ui/core';\nimport {List as List} from '@material-ui/core';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport {ListItemText as ListItemText} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nexport enum Action {\n INSERT_BELOW = 'below',\n INSERT_ABOVE = 'above',\n HIDE = 'hide'\n}\n\nconst TEXT = {\n [Action.INSERT_BELOW]: i18n.text('Insert row below'),\n [Action.INSERT_ABOVE]: i18n.text('Insert row above'),\n [Action.HIDE]: i18n.text('Hide row')\n};\n\nconst renderListItem = (action: Action, handler: () => void, index: number) => (\n <ListItem button component={'div'} key={index} onClick={handler}>\n <ListItemText primary={TEXT[action]} primaryTypographyProps={{variant: 'body2'}} />\n </ListItem>\n);\n\ntype Props = {\n open?: boolean;\n anchorEl: HTMLElement;\n onClick: (action: Action) => void;\n onClose: () => void;\n actions: Action[];\n};\n\nconst ConfigRowPopup = ({open, anchorEl, onClick, onClose, actions}: Props) => {\n const getClickHandler = (action) => () => {\n onClick(action);\n };\n\n return (\n <Popover open={open} anchorEl={anchorEl} onClose={onClose}>\n <List component=\"div\">\n {actions.map((action, index) => renderListItem(action, getClickHandler(action), index))}\n </List>\n </Popover>\n );\n};\n\nexport default ConfigRowPopup;\n","import {GroupedColumns, GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\nconst deepFilter = (nodes: GroupedColumnData[], filter: (col: GroupedColumns) => boolean) =>\n nodes.filter(filter).map((node: GroupedColumns) =>\n node.columns\n ? {\n ...node,\n columns: deepFilter(node.columns, filter)\n }\n : node\n );\n\nexport const getAdditionalRows = (\n groupColumnsData: GroupedColumnData[],\n headColumns: string[] = []\n): GroupedColumnData[] =>\n deepFilter(groupColumnsData, (column: GroupedColumns) => !headColumns.some((elemId) => column.id === elemId));\n","import React, {useEffect, useMemo, useState, memo} from 'react';\nimport ConfigRowPopup, {Action} from './ConfigRowPopup';\nimport {ColumnsSettingsPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getAdditionalRows} from './helpers';\nimport {GroupedColumnData} from '../../../types/potentialMatchesTypes';\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n actions: Action[];\n id: string;\n selectedAttributes?: string[];\n setSelectedAttributes?: (cols: string[]) => void;\n groupColumnsData: GroupedColumnData[];\n};\n\nconst AddRowPopups = ({\n anchorEl,\n onClose,\n actions,\n id,\n selectedAttributes,\n setSelectedAttributes,\n groupColumnsData\n}: Props) => {\n const groupedItems = useMemo(() => getAdditionalRows(groupColumnsData, selectedAttributes), [\n groupColumnsData,\n selectedAttributes\n ]);\n const [action, setAction] = useState<Action>();\n const [isOpenConfigPopup, setIsOpenConfigPopup] = useState(false);\n useEffect(() => {\n if (anchorEl) {\n setIsOpenConfigPopup(true);\n }\n }, [anchorEl]);\n const onClosePopup = () => {\n setIsOpenConfigPopup(false);\n if (!action) onClose();\n };\n const onChooseAction = (action: Action) => {\n if (action === Action.HIDE) {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n if (index > -1) {\n newAttributes.splice(index, 1);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n }\n return;\n }\n setAction(action);\n setIsOpenConfigPopup(false);\n };\n\n const closeAddRowPopup = () => {\n setAction(null);\n setIsOpenConfigPopup(false);\n onClose();\n };\n const addRowHandler = ({id: newId}: {id: string}) => {\n const newAttributes = [...selectedAttributes];\n const index = selectedAttributes.indexOf(id);\n const newIndex = action === Action.INSERT_ABOVE ? index : index + 1;\n newAttributes.splice(newIndex, 0, newId);\n setSelectedAttributes(newAttributes);\n closeAddRowPopup();\n };\n\n return (\n <>\n <ConfigRowPopup\n open={isOpenConfigPopup}\n anchorEl={anchorEl}\n actions={actions}\n onClose={onClosePopup}\n onClick={onChooseAction}\n />\n <ColumnsSettingsPopup\n hideCheckBox\n anchorEl={action ? anchorEl : undefined}\n columnsData={groupedItems}\n selectedColumns={selectedAttributes}\n onColumnClick={addRowHandler}\n onClose={closeAddRowPopup}\n title={i18n.text('Add row')}\n />\n </>\n );\n};\n\nexport default memo(AddRowPopups);\n","import {useCallback, useState} from 'react';\nimport {any, map, pipe} from 'ramda';\nimport {getEntityUriFromMatchObject} from '@reltio/mdm-sdk';\n\nexport const useWorkflowTasksAvailability = (matches) => {\n const [workflowTasksAvailabilityMap, setWorkflowTasksAvailabilityMap] = useState<{[entityUri: string]: boolean}>(\n {}\n );\n const setWorkflowTaskAvailability = useCallback((entityUri: string, value: boolean) => {\n setWorkflowTasksAvailabilityMap((map) => ({\n ...map,\n [entityUri]: value\n }));\n }, []);\n const isThereAnyTask: boolean = pipe(\n map(getEntityUriFromMatchObject),\n any((uri) => workflowTasksAvailabilityMap[uri])\n )(matches);\n\n return {isThereAnyTask, setWorkflowTaskAvailability};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst headCellWidth = 212;\nconst dataCellWidth = 310;\nconst borderStyle = '1px solid rgba(0,0,0,0.12)';\nconst thickBorderStyle = '2px solid rgba(0,0,0,0.12)';\nconst firstColumnColor = 'rgb(245, 245, 245)';\nconst secondColumnColor = 'rgb(224, 238, 249)';\nconst firstRowHeight = 141;\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} from 'react';\nimport classnames from 'classnames';\nimport {chain, groupBy, insert, nth, pipe, prop, remove, toPairs} from 'ramda';\nimport {\n EntitiesMap,\n Entity,\n getFirstLevelSearchUri,\n isAttributeSearchUri,\n Metadata,\n PotentialMatchesPerspectiveConfig,\n Match\n} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, VerticalHeadingsTable} from '@reltio/components';\nimport {getTableColumnsData, getTableRowsData} from './helpers/tableHelpers';\nimport {ExpandedContext} from './ExpandedContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {replaceSubAttributesWithParent} from './helpers/attributesHelpers';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport AddRowPopups from './AddRowPopups';\nimport {ColumnDataContext} from '../../contexts/ColumnsDataContext';\nimport {Action} from './AddRowPopups/ConfigRowPopup';\nimport {HoveredEntityContext} from './HoveredEntityContext';\nimport {WorkflowTasksAvailabilityContext} from './WorkflowTasksAvailabilityContext';\nimport {useWorkflowTasksAvailability} from '../../hooks/useWorkflowTasksAvailability';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n entity: Entity;\n metadata: Metadata;\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n selectedItems: Match[];\n setSelectedItems: (items: Match[]) => void;\n selectedColumns: string[];\n setSelectedColumns: (items: string[]) => void;\n columnsData: GroupedColumnData[];\n showNonOv?: boolean;\n};\n\nconst actions = [Action.INSERT_BELOW, Action.INSERT_ABOVE, Action.HIDE];\n\nexport const ComparisonTable = ({\n className,\n entity,\n metadata,\n config,\n selectedItems,\n setSelectedItems,\n selectedColumns,\n setSelectedColumns,\n entitiesMap = {},\n columnsData: allColumnsData,\n showNonOv = false\n}: Props) => {\n const styles = useStyles();\n\n const [hoveredEntity, setHoveredEntity] = useState(null);\n const [hoveredId, setHoveredId] = useState<string>();\n const [anchor, setAnchor] = useState<HTMLElement>();\n\n const matches = useMemo(() => selectedItems.slice(-4), [selectedItems]);\n const selectedColumnsWithoutSubAttributes: string[] = useMemo(\n () => replaceSubAttributesWithParent(selectedColumns),\n [selectedColumns]\n );\n\n const rowsData = useMemo(\n () => getTableRowsData(metadata, entity, selectedColumnsWithoutSubAttributes),\n [metadata, entity, selectedColumnsWithoutSubAttributes]\n );\n\n const onRemoveItem = useContext(ColumnHandlerContext);\n\n const columnsData = useMemo(\n () => getTableColumnsData(metadata, rowsData, entity, matches, entitiesMap, config, onRemoveItem, showNonOv),\n [metadata, rowsData, matches, entity, entitiesMap, config, onRemoveItem, showNonOv]\n );\n\n const [expandedMap, setExpandedMap] = useState<{\n [attrTypeUri: string]: boolean;\n }>({});\n\n const onExpandType = useCallback((attrTypeUri: string) => {\n setExpandedMap((map) => ({\n ...map,\n [attrTypeUri]: !map[attrTypeUri]\n }));\n }, []);\n\n const expandedContextValue = useMemo(\n () => ({\n expandedMap,\n onExpandType\n }),\n [onExpandType, expandedMap]\n );\n\n const headCellData = useMemo(\n () => ({\n setHoveredId,\n setAnchor,\n hoveredId\n }),\n [hoveredId]\n );\n\n const onClosePopup = useCallback(() => {\n setHoveredId(null);\n setAnchor(null);\n }, []);\n\n const handleMoveRow = (dragId: string, hoverId: string) => {\n const newArr: Array<[string, string[]]> = pipe(\n groupBy((item) => (isAttributeSearchUri(item) ? getFirstLevelSearchUri(item) : item)),\n toPairs\n )(selectedColumns);\n\n const dragIndex = newArr.findIndex(([searchUri]) => searchUri === dragId);\n const hoverIndex = newArr.findIndex(([searchUri]) => searchUri === hoverId);\n const dragRow = newArr[dragIndex];\n if (dragRow) {\n setSelectedColumns(pipe(remove(dragIndex, 1), insert(hoverIndex, dragRow), chain(nth(1)))(newArr));\n }\n };\n\n const handleMoveColumn = (dragId: string, hoverId: string) => {\n const dragIndex = selectedItems.findIndex(({object}) => object.uri === dragId);\n const hoverIndex = selectedItems.findIndex(({object}) => object.uri === hoverId);\n const dragColumn = selectedItems[dragIndex];\n if (dragColumn) {\n setSelectedItems(pipe(remove(dragIndex, 1), insert(hoverIndex, dragColumn))(selectedItems));\n }\n };\n\n const selectedAttributeUris: string[] = useMemo(() => rowsData.map(prop('id')), [rowsData]);\n\n const setHoveredEntityHandler = (columnValue) => {\n setHoveredEntity(columnValue?.entityId || null);\n };\n\n const resetHoveredEntity = useCallback(() => {\n setHoveredEntity(null);\n }, []);\n\n const hoveredEntityContextValue = useMemo(\n () => ({\n hoveredEntity,\n resetHoveredEntity\n }),\n [hoveredEntity, resetHoveredEntity]\n );\n\n const {isThereAnyTask, setWorkflowTaskAvailability} = useWorkflowTasksAvailability(matches);\n const workflowCardRowClassname = isThereAnyTask ? undefined : styles.collapsedRow;\n const displayedRowsData = useMemo(\n () =>\n rowsData.map((rowData) =>\n workflowCardRowClassname && rowData.id === 'workflowCard'\n ? {\n ...rowData,\n rowClassName: workflowCardRowClassname\n }\n : rowData\n ),\n [rowsData, workflowCardRowClassname]\n );\n\n return (\n <div className={classnames(styles.container, className)}>\n <div className={styles.comparisonTableWrapper}>\n <HoveredEntityContext.Provider value={hoveredEntityContextValue}>\n <ExpandedContext.Provider value={expandedContextValue}>\n <ColumnDataContext.Provider value={headCellData}>\n <WorkflowTasksAvailabilityContext.Provider value={setWorkflowTaskAvailability}>\n <VerticalHeadingsTable\n className={styles.comparisonTable}\n rowsData={displayedRowsData}\n columnsData={columnsData}\n theadRowsNumber={1}\n onMoveRow={handleMoveRow}\n onMoveColumn={handleMoveColumn}\n setHoveredColumn={setHoveredEntityHandler}\n resetHoveredColumn={resetHoveredEntity}\n />\n </WorkflowTasksAvailabilityContext.Provider>\n </ColumnDataContext.Provider>\n </ExpandedContext.Provider>\n </HoveredEntityContext.Provider>\n {!matches.length && (\n <div className={styles.emptyState}>\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.SELECT_ATTRIBUTES}\n variant={EMPTY_STATE_VARIANTS.embedded}\n text={i18n.text('Select profiles')}\n secondaryText={i18n.text(\n 'Select one or more profiles to compare it with the current profile'\n )}\n />\n </div>\n )}\n <AddRowPopups\n id={hoveredId}\n anchorEl={anchor}\n onClose={onClosePopup}\n actions={actions}\n selectedAttributes={selectedAttributeUris}\n setSelectedAttributes={setSelectedColumns}\n groupColumnsData={allColumnsData}\n />\n </div>\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column'\n },\n table: {\n flex: 1\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {EntitiesMap, Match, Entity, Metadata, PotentialMatchesPerspectiveConfig} from '@reltio/mdm-sdk';\nimport ComparisonTable from '../ComparisonTable';\nimport {GroupedColumnData} from '../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n metadata: Metadata;\n selectedColumns: string[];\n setSelectedColumns: (newColumns: string[]) => void;\n selectedItems: Match[];\n setSelectedItems: (newItems: Match[]) => void;\n classes: {\n root?: string;\n };\n config: PotentialMatchesPerspectiveConfig;\n entitiesMap?: EntitiesMap;\n columnsData: GroupedColumnData[];\n showNonOv: boolean;\n};\n\nexport const ComparisonView = ({\n classes = {},\n selectedColumns,\n setSelectedColumns,\n selectedItems,\n setSelectedItems,\n config,\n metadata,\n entity,\n entitiesMap = {},\n columnsData,\n showNonOv\n}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(classes.root, styles.container)}>\n <ComparisonTable\n className={styles.table}\n entity={entity}\n metadata={metadata}\n config={config}\n selectedColumns={selectedColumns}\n setSelectedColumns={setSelectedColumns}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n columnsData={columnsData}\n entitiesMap={entitiesMap}\n showNonOv={showNonOv}\n />\n </div>\n );\n};\n","import {makeStyles, fade, lighten, Theme} from '@material-ui/core/styles';\nimport {CSSProperties} from '@material-ui/styles';\n\nconst defaultWrapperStyles: CSSProperties = {\n position: 'relative',\n whiteSpace: 'pre',\n padding: '15px 15px 0 15px',\n '&:last-child': {\n paddingBottom: '15px'\n },\n color: 'rgba(0,0,0,0.87)'\n};\n\nconst textOverflow: CSSProperties = {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n};\n\nconst tableHoveredRowSelector = 'div.hoveredRow';\n\nconst getColoredRowCellStyle = (color: string, hoveredColor?: string) => {\n return {\n '& > *': {\n position: 'relative'\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: color,\n pointerEvents: 'none',\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor || 'none'\n }\n },\n '& $defaultWrapper::after': {\n background: `linear-gradient(to right, ${fade(color, 0)}, ${color} 100%)`,\n [`${tableHoveredRowSelector} &`]: {\n background: hoveredColor && `linear-gradient(to right, ${fade(hoveredColor, 0)}, ${hoveredColor} 100%)`\n }\n }\n };\n};\n\nexport const useStyles = makeStyles((theme: Theme & {inactive: Record<string, number>}) => {\n const lightPrimaryBackground = lighten(theme.palette.primary.main, 0.88);\n const lightPrimaryBackgroundHovered = lighten(theme.palette.primary.main, 0.82);\n const highlightBackground = lighten('rgb(140,193,82)', 0.88);\n const entityBackground = lighten('rgb(0, 114, 206)', 0.88);\n\n const link = {\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none'\n };\n\n return {\n link,\n hidden: {\n visibility: 'hidden'\n },\n rowCloseIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 24px 0 8px'\n },\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '56px',\n fontSize: '12px',\n position: 'relative',\n flex: 1,\n overflow: 'hidden',\n color: 'rgba(0,0,0,0.87)',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n '&::after': {\n ...textOverflow,\n width: '30px',\n backgroundImage: 'none'\n }\n },\n firstHeadCell: {\n paddingLeft: '42px'\n },\n headCellWithEntity: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n rowCell: {\n fontSize: '12px',\n overflow: 'hidden'\n },\n rowCellFirstColumn: {\n height: '100%'\n },\n firstEntityCell: {\n maxHeight: '200px'\n },\n entityRowCell: {\n fontSize: '12px',\n position: 'relative'\n },\n entityRowCellSelected: getColoredRowCellStyle(entityBackground),\n rowCellHighlighted: getColoredRowCellStyle(highlightBackground),\n rowCellSelected: getColoredRowCellStyle(lightPrimaryBackground, lightPrimaryBackgroundHovered),\n defaultWrapper: {\n ...defaultWrapperStyles,\n '&::after': {\n ...textOverflow,\n [`${tableHoveredRowSelector} &`]: {\n background: 'linear-gradient(to right, rgba(238, 238, 238, 0), rgba(238, 238, 238, 1) 100%)'\n }\n }\n },\n hoveredDefaultWrapper: {\n ...defaultWrapperStyles\n },\n entityWrapper: {\n paddingLeft: '12px'\n },\n profileWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n position: 'relative'\n },\n entityLabel: {\n ...link,\n fontWeight: 500\n },\n commentsContainer: {\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 1,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '15px',\n backgroundColor: '#fff',\n '&$checked': {\n backgroundColor: lightPrimaryBackground\n }\n },\n checked: {},\n matchRulesWrapper: {\n padding: '8px 15px 8px 10px',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box'\n },\n blobWrapper: {\n ...defaultWrapperStyles,\n whiteSpace: 'pre-wrap',\n height: '100px',\n boxSizing: 'border-box',\n overflowY: 'auto',\n overflowX: 'hidden'\n },\n imageWrapper: {\n ...defaultWrapperStyles,\n display: 'flex',\n '& > img': {\n height: '64px',\n width: '64px'\n }\n },\n referenceWrapper: {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n height: '48px'\n },\n entityAvatar: {\n transform: 'scale(0.5)',\n marginLeft: '-10px'\n },\n collapseButton: {\n position: 'absolute',\n left: '40px',\n zIndex: 2\n },\n dragIcon: {\n position: 'absolute',\n left: '-5px',\n zIndex: 2,\n opacity: 0.38\n },\n ovFalse: theme.inactive\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 '@material-ui/icons/DragIndicator';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {MatchesTableContextProps, MatchesTableRowValue} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: Entity;\n rowIndex: number;\n rowValue: MatchesTableRowValue;\n onRemove: () => void;\n entityToMatch: Entity;\n isRowSelected: boolean;\n hoverRowIndex: number;\n};\n\nconst EntityProfileRenderer = ({\n value: entity,\n rowIndex,\n rowValue,\n onRemove,\n entityToMatch,\n isRowSelected,\n hoverRowIndex\n}: Props) => {\n const styles = useStyles();\n const containerId = useContext(IdContext);\n\n const isRowRemovable = entity !== entityToMatch;\n const isRowHovered = rowIndex === hoverRowIndex;\n const isFirstRow = rowIndex === 0;\n const wrapperStyle = isRowHovered ? styles.hoveredDefaultWrapper : styles.defaultWrapper;\n const shouldRenderCommentsContainer = entity.uri !== entityToMatch.uri && !isRowHovered;\n\n return (\n <>\n <div\n className={classnames(wrapperStyle, styles.profileWrapper, styles.entityWrapper, {\n [styles.firstEntityCell]: isFirstRow && !isRowRemovable\n })}\n >\n {isRowHovered && <DragIndicatorIcon className={styles.dragIcon} />}\n <CollapseRowButton className={styles.collapseButton} rowIndex={rowIndex} rowValue={rowValue} />\n <SmallIconButton\n icon={CloseIcon}\n size=\"XS\"\n className={classnames(styles.rowCloseIcon, {[styles.hidden]: !isRowRemovable})}\n onClick={onRemove}\n data-reltio-id={`reltio-matches-table-${containerId ? containerId + '-' : ''}checkbox-${rowIndex}`}\n />\n <EntityUriLink value={getEntityUriForLink(entity)} className={styles.entityLabel}>\n {getLabel(entity.label)}\n </EntityUriLink>\n {shouldRenderCommentsContainer && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isRowSelected})}\n uri={createObjectIdForPM(entityToMatch.uri, entity.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entityToMatch.uri,\n matchEntityUri: entity.uri\n })}\n allowOnlyOneComment\n />\n )}\n </div>\n </>\n );\n};\n\nexport default withTableContext(\n ({onToggleSelect, entityToMatch}: MatchesTableContextProps, {rowValue, value}: Props) => {\n const {rawValue: match} = rowValue;\n return {\n onRemove: () => onToggleSelect(match),\n isRowRemovable: value !== entityToMatch,\n entityToMatch\n };\n }\n)(EntityProfileRenderer);\n","import React from 'react';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, withTableContext} from '@reltio/components';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n headIndex: number;\n [key: string]: unknown;\n};\n\nconst ProfileHeadCellRenderer = (props: Props) => {\n const isFirstColumn = props.headIndex === 0;\n const styles = useStyles();\n return (\n <div className={classnames(styles.headCell, {[styles.firstHeadCell]: isFirstColumn})}>\n <DefaultHeadCellRenderer {...props} />\n </div>\n );\n};\n\nexport default withTableContext()(withFilterAtBottom(ProfileHeadCellRenderer));\n","import {MatchRulesBlock} from '@reltio/components';\nimport {EntitiesMap, Entity, Match, Metadata} from '@reltio/mdm-sdk';\nimport React, {ComponentProps} from 'react';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n metadata: Metadata;\n match: Match;\n entitiesMap: EntitiesMap;\n entity: Entity;\n variant?: ComponentProps<typeof MatchRulesBlock>['variant'];\n };\n};\n\nconst MatchRulesRenderer = ({value}: Props) => {\n const styles = useStyles();\n if (!value) {\n return null;\n }\n const {metadata, match, entitiesMap, entity, variant} = value;\n return (\n <div className={styles.matchRulesWrapper}>\n <MatchRulesBlock\n variant={variant}\n metadata={metadata}\n entitiesMap={entitiesMap}\n match={match}\n entity={entity}\n />\n </div>\n );\n};\n\nexport default MatchRulesRenderer;\n","import React from 'react';\nimport 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 {Entity} from '@reltio/mdm-sdk';\nimport CommonSourcesRenderer from '../../cell-renderers/SourcesRenderer/SourcesRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n entity: Entity\n };\n};\n\nconst SourcesRenderer = ({value}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.defaultWrapper}>\n <CommonSourcesRenderer value={value.entity} />\n </div>\n );\n};\n\nexport default SourcesRenderer;\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} from '@reltio/mdm-sdk';\n\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from './cell-renderers/DefaultCellValueRenderer';\nimport EntityProfileRenderer from './cell-renderers/EntityProfileRenderer';\nimport ProfileHeadCellRenderer from './cell-renderers/ProfileHeadCellRenderer';\nimport MatchRulesRenderer from './cell-renderers/MatchRulesRenderer';\nimport BlobRender from './cell-renderers/BlobRenderer';\nimport ImageRenderer from './cell-renderers/ImageRenderer';\nimport ReferenceRenderer from './cell-renderers/ReferenceRenderer';\nimport {MatchesColumnsData, MatchesTableRowValue} from '../../types/potentialMatchesTypes';\nimport {ComparisonViewMode} from '../../constants/views';\nimport SourcesRenderer from './cell-renderers/SourcesRenderer';\n\nconst getAttrPathFromColumnId = split('.');\n\ntype RowValue = {\n entity: Entity;\n metadata: Metadata;\n match: Match;\n entitiesMap?: EntitiesMap;\n matchScore: number;\n};\n\nconst getRowValueForColumn = (\n columnData: MatchesColumnsData,\n {entity, metadata, match, entitiesMap, matchScore}: RowValue,\n 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 return {entity};\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 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 from 'react';\nimport classnames from 'classnames';\nimport {withTableContext} from '@reltio/components';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {isMatchAttrColumn} from '../../../helpers/attributesHelpers';\nimport {MatchesTableContextProps, RowCellRendererProps} from '../../../types/potentialMatchesTypes';\nimport {useStyles} from './styles';\n\ntype Props = {\n isRowSelected: boolean;\n isCellHighlighted: boolean;\n} & RowCellRendererProps;\n\nconst RowCellRenderer = ({\n rowValue,\n cell,\n CellValueRenderer,\n isRowSelected,\n isCellHighlighted,\n columnIndex,\n ...otherProps\n}: Props) => {\n const styles = useStyles();\n const isFirstColumn = columnIndex === 0;\n return (\n <div\n className={classnames(\n {\n [styles.rowCellSelected]: isRowSelected,\n [styles.rowCellHighlighted]: isCellHighlighted,\n [styles.rowCellFirstColumn]: isFirstColumn\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer\n key={index}\n value={value}\n rowValue={rowValue}\n isRowSelected={isRowSelected}\n {...otherProps}\n />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({selected}: MatchesTableContextProps, {columnData, rowValue, cell}: Props) => ({\n isRowSelected: !!selected && selected.includes(rowValue.rawValue),\n isCellHighlighted: isMatchAttrColumn(rowValue.matchAttributes, columnData) && !cell.values.every(isEmptyValue)\n}))(RowCellRenderer);\n","import {lighten, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tableContainer: {\n flex: 1,\n display: 'flex',\n color: 'rgba(0,0,0,0.54)',\n overflow: 'hidden',\n background: theme.palette.background.paper\n },\n rowActionButtonsWrapper: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n marginRight: '1px'\n },\n rowActionButtons: {\n backgroundColor: 'rgba(238, 238, 238, 1)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n commentsContainer: {\n paddingLeft: '6px',\n paddingRight: '15px',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n borderLeft: '1px solid rgba(0,0,0,0.12)',\n '&$checked': {\n backgroundColor: lighten(theme.palette.primary.main, 0.82)\n }\n },\n checked: {},\n actionButton: {\n marginLeft: '12px',\n '&:last-child': {\n marginRight: '3px'\n }\n },\n hoveredRowRightContentContainer: {\n alignItems: 'center !important' //overlapping inline style for buttons centering\n },\n 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}));\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport {either, evolve, move} from 'ramda';\nimport {\n BasicTable,\n defaultGetRowCellHeight,\n RowCellAutoSizer,\n CommentsContainer,\n useBasicTableCellRenderer,\n useDynamicRowCellHeight\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Entity,\n Metadata,\n Match,\n EntitiesMap,\n getActionPermissionForMatch,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './dataHelpers';\nimport withEntityCellValue from './cell-renderers/withEntityCellValue';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {MatchesColumnsData, RowCellRendererProps, MatchesTableContextProps} from '../../types/potentialMatchesTypes';\nimport {useAddRelationDialog} from '../../hooks/useAddRelationDialog';\nimport {useStyles} from './styles';\nimport MatchControls from '../MatchControls/MatchControls';\n\nconst MAX_ROW_VALUES_COUNT = 3;\n\ntype Sorting = {\n field: string;\n order: 'asc' | 'desc';\n};\n\ntype Filter = {\n filter: string;\n value: unknown[];\n};\n\ntype Props = {\n entity?: Entity;\n matches: Match[];\n metadata: Metadata;\n columnsData: MatchesColumnsData[];\n 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 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 {getRowHeight, CellRenderer: EntityCellRenderer} = useBasicTableCellRenderer({\n rowsData: entityRowData,\n columnsData: tableColumnsData,\n maxRowValuesCount: MAX_ROW_VALUES_COUNT\n });\n\n const entityRowHeight = getRowHeight(0);\n const enhancedColumnsData = useMemo(() => {\n const withEntityCell = withEntityCellValue(EntityCellRenderer);\n return tableColumnsData.map(\n evolve({\n headCellRenderer: withEntityCell\n })\n );\n }, [tableColumnsData, EntityCellRenderer]);\n\n const 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();\n\n useLayoutEffect(clearHeightsCache, [matches]);\n\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const onActionsMenuOpen = useCallback(() => setOpenActionsMenu(true), []);\n const onActionsMenuClose = useCallback(() => setOpenActionsMenu(false), []);\n\n const [openCollaborationPopup, setOpenCollaborationPopup] = useState(false);\n\n const [hoverRowIndex, setHoverRowIndex] = useState<number>(null);\n const onRowHover = useCallback(\n (rowIndex: number) => {\n setHoverRowIndex((prevHoverRowIndex) =>\n openActionsMenu || openCollaborationPopup ? prevHoverRowIndex : rowIndex\n );\n },\n [openActionsMenu, openCollaborationPopup]\n );\n\n const {showDialog, openAddRelationDialog, AddRelationDialogRenderer} = useAddRelationDialog(config);\n\n const hoveredRowRightContent = useMemo(() => {\n if (hoverRowIndex === null) {\n return null;\n }\n\n const hoveredMatch = orderedMatches[hoverRowIndex];\n\n if (!hoveredMatch) {\n return null;\n }\n\n const permission = getActionPermissionForMatch(\n metadata,\n config,\n hoveredMatch.object,\n entity,\n hoveredMatch.matchRules\n );\n\n const isChecked = selected.includes(hoveredMatch);\n return (\n <div className={classnames(styles.rowActionButtonsWrapper)}>\n <div className={classnames(styles.rowActionButtons, {[styles.checked]: isChecked})}>\n <MatchControls\n value={{\n mainEntity: entity,\n entity: hoveredMatch.object,\n matchRules: hoveredMatch.matchRules,\n permission\n }}\n openAddRelationDialog={openAddRelationDialog}\n onActionsMenuClose={onActionsMenuClose}\n onActionsMenuOpen={onActionsMenuOpen}\n classes={{\n actionButton: styles.actionButton,\n moreOptions: styles.actionButton\n }}\n />\n </div>\n {entity && (\n <CommentsContainer\n className={classnames(styles.commentsContainer, {[styles.checked]: isChecked})}\n uri={createObjectIdForPM(entity.uri, hoveredMatch.object.uri)}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: hoveredMatch.object.uri\n })}\n onChangePopupVisibility={setOpenCollaborationPopup}\n allowOnlyOneComment\n showAlways\n />\n )}\n </div>\n );\n }, [\n hoverRowIndex,\n orderedMatches,\n selected,\n styles,\n entity,\n config,\n metadata,\n onActionsMenuOpen,\n onActionsMenuClose,\n openAddRelationDialog\n ]);\n\n const renderRowCell = useCallback(\n (props: RowCellRendererProps) => {\n switch (props.columnData.id) {\n case 'profile':\n return (\n <RowCellRenderer\n {...props}\n hoverRowIndex={hoverRowIndex}\n actionsContent={hoveredRowRightContent}\n tableRef={basicTableRef}\n />\n );\n case 'matchRules':\n return (\n <RowCellAutoSizer onChangeHeight={changeRowCellHeight} {...props}>\n <RowCellRenderer {...props} />\n </RowCellAutoSizer>\n );\n default:\n return <RowCellRenderer {...props} />;\n }\n },\n [changeRowCellHeight, hoverRowIndex, hoveredRowRightContent, basicTableRef]\n );\n\n const getRowCellHeight = useCallback(either(getDynamicRowCellHeight, defaultGetRowCellHeight), [\n getDynamicRowCellHeight,\n defaultGetRowCellHeight\n ]);\n\n const tableClasses = useMemo(\n () => ({\n hoveredRowRightContentContainer: styles.hoveredRowRightContentContainer,\n dragColumnHead: styles.dragColumnHead,\n dragColumnBody: styles.dragColumnBody\n }),\n [styles]\n );\n\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n fixFirstColumn={true}\n columnsData={enhancedColumnsData}\n rowsData={tableRowsData}\n context={tableContext}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n defaultColumnWidth={250}\n defaultColumnMinWidth={100}\n headRowHeight={56 + entityRowHeight}\n renderRowCell={renderRowCell}\n getRowCellHeight={getRowCellHeight}\n hoverStateEnabled={true}\n hoveredRowRightContent={hoveredRowRightContent}\n hoverRowIndex={hoverRowIndex}\n onRowHover={onRowHover}\n classes={tableClasses}\n maxRowValuesCount={MAX_ROW_VALUES_COUNT}\n dndRowReorderingEnabled\n 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} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n headCellData: {\n id: string;\n };\n [key: string]: unknown;\n};\n\nconst withEntityCellValue = (EntityCellRenderer: (props: Record<string, unknown>) => JSX.Element) => (\n HeadCellRenderer: (props: Record<string, unknown>) => JSX.Element\n) => {\n const HeadCellWithEntityValue = (props: Props) => {\n const styles = useStyles();\n return (\n <IdContext.Provider value=\"tableHeader\">\n <div className={styles.headCellWithEntity}>\n <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 id=\"entityCell\"\n />\n </div>\n </IdContext.Provider>\n );\n };\n\n return HeadCellWithEntityValue;\n};\n\nexport default withEntityCellValue;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n comparisonView: {\n width: '100%',\n overflow: 'auto'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propEq, identity, has, move} from 'ramda';\nimport {\n Entity,\n getPotentialMatchesObjectIdsForCollaboration,\n Metadata,\n PotentialMatchesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {DragAndDrop, useCollaboration, CollaborationContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport {TableHeader} from '../TableHeader/TableHeader';\nimport {useMatchesColumnsData} from '../../hooks/useMatchesColumnData';\nimport ComparisonView from '../ComparisonView';\nimport {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport {ColumnHandlerContext} from '../../contexts/ColumnHandlerContext';\nimport {PotentialMatchesSavedState} from '../../types/potentialMatchesTypes';\nimport {DEFAULT_ROWS} from '../../constants/defaultRows';\nimport {useFirstPotentialMatches} from '../../hooks/useFirstPotentialMatches';\nimport {useSpinnerAndReloadData} from '../Actions/useSpinnerAndReloadData';\nimport {ComparisonViewMode} from '../../constants/views';\nimport MatchesTable from '../MatchesTable/MatchesTable';\nimport {addFixedAttributes} from './helpers/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n 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 {selectedItems, entitiesMap, comparisonViewMode} = useViewState();\n const {toggleSelect, setSelectedItems, setComparisonViewMode} = useViewStateActions();\n const {isGlobalSpinnerActive} = useSpinnerAndReloadData();\n\n const {uri: entityUri} = entity || {};\n useFirstPotentialMatches(!!entityUri, entity);\n\n const objectIds = useMemo(() => getPotentialMatchesObjectIdsForCollaboration(entityUri, Object.keys(entitiesMap)), [\n entityUri,\n entitiesMap\n ]);\n\n const collaboration = useCollaboration({objectIds});\n\n const styles = useStyles();\n const [allColumnsData, groupedColumnsData, defaultColumns] = useMatchesColumnsData({\n defaultColumnsData: DEFAULT_ROWS,\n metadata,\n entityTypeUri: entity.type\n });\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>(defaultColumns);\n const [showNonOv, setShowNonOv] = useState(false);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))).filter(identity),\n [visibleColumns, allColumnsData]\n );\n\n const 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 selectedItems: selectedItems || [],\n setSelectedItems,\n config,\n selectedColumns: visibleColumns,\n setSelectedColumns: setVisibleColumns,\n entitiesMap,\n columnsData: groupedColumnsData,\n showNonOv\n };\n\n const matchesTableProps = {\n entity,\n metadata,\n entitiesMap,\n config,\n matches: selectedItems,\n columnsData: visibleColumnsData,\n 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]); // 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 <CollaborationContext.Provider value={collaboration}>\n {comparisonViewMode === ComparisonViewMode.COLUMNS ? (\n <DragAndDrop>\n <ColumnHandlerContext.Provider value={toggleSelect}>\n {isLoaded && (\n <ComparisonView {...comparisonViewProps} classes={{root: styles.comparisonView}} />\n )}\n </ColumnHandlerContext.Provider>\n </DragAndDrop>\n ) : (\n isLoaded && <MatchesTable {...matchesTableProps} />\n )}\n </CollaborationContext.Provider>\n {isGlobalSpinnerActive && <LinearLoadIndicator />}\n </>\n );\n};\n","import {useEffect, useMemo} from 'react';\nimport {Entity, Order} from '@reltio/mdm-sdk';\nimport {prop} from 'ramda';\nimport {useViewStateActions} from '../contexts/ViewStateContext';\nimport {DEFAULT_OPTIONS} from '../constants/defaultOptions';\nimport {useMatches} from './useMatches';\n\nexport const useFirstPotentialMatches = (enabled: boolean, entity: Entity) => {\n const {setSelectedItems} = useViewStateActions();\n\n const entityUri = prop('uri', entity);\n const dataTenant = prop('dataTenant', entity);\n const initialRequestParam = useMemo(\n () => ({\n enabled: !!entityUri,\n entity,\n filter: '',\n page: 0,\n sorting: {\n field: 'score',\n order: Order.desc\n },\n rowsPerPage: 3,\n options: DEFAULT_OPTIONS\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataTenant, entityUri]\n );\n\n const {matches} = useMatches(initialRequestParam);\n\n useEffect(() => {\n setSelectedItems(matches);\n }, [matches, setSelectedItems]);\n};\n","import {getEntityTypeMatchAttributes, Metadata} from '@reltio/mdm-sdk';\nimport {concat, pipe} from 'ramda';\nimport {useMemo} from 'react';\nimport {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 '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n flexBox: {\n display: 'flex',\n alignItems: 'center'\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 4px'\n }\n});\n","import {useViewState, useViewStateActions} from '../../contexts/ViewStateContext';\nimport i18n from 'ui-i18n';\nimport {ConfirmationDialog} from '@reltio/components';\nimport React, {useCallback} from 'react';\nimport {ComparisonViewMode, MAX_PROFILES_TO_COMPARE} from '../../constants/views';\nimport TableIcon from './TableIcon.svg';\nimport {useStyles} from './styles';\n\nexport const ChangeModeConfirmation = () => {\n const {selectedItems, comparisonViewMode, limitSelection} = useViewState();\n const {setComparisonViewMode, deleteExtraMatches} = useViewStateActions();\n const styles = useStyles();\n const onSave = useCallback(() => {\n setComparisonViewMode(ComparisonViewMode.TABLE);\n }, [setComparisonViewMode]);\n const open = comparisonViewMode === ComparisonViewMode.COLUMNS && selectedItems.length > limitSelection;\n const title = i18n.text('Switch to table view');\n const content = (\n <div className={styles.flexBox}>\n {i18n.text('Please switch to')}\n <div className={styles.icon}>\n <TableIcon />\n </div>\n {i18n.text('Table View to compare more than ${max} profiles', {max: MAX_PROFILES_TO_COMPARE})}\n </div>\n );\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n onSave={onSave}\n onDiscard={deleteExtraMatches}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n potentialMatchesWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n },\n potentialMatchesContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {useCallback, useEffect, useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {equals} from 'ramda';\nimport {useSnackbar, SnackbarContext, useSavedStateForEntityType, ScreenProfileBand} from '@reltio/components';\nimport {Entity, PotentialMatchesPerspectiveConfig} 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 {PotentialMatchesSavedState} from './types/potentialMatchesTypes';\nimport {ChangeModeConfirmation} from './components/ChangeModeConfirmation';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: PotentialMatchesPerspectiveConfig;\n saveState: (state: Record<string, PotentialMatchesSavedState>) => void;\n getSavedState: () => Promise<Record<string, PotentialMatchesSavedState>>;\n};\n\nexport const PotentialMatchesView = ({config, getSavedState, saveState}: Props) => {\n const styles = useStyles();\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n const lastSavedState = useRef<PotentialMatchesSavedState>();\n\n const {isLoaded, savedState, updateSavedState} = useSavedStateForEntityType<PotentialMatchesSavedState>({\n getSavedState,\n saveState,\n entityTypeUri: entity.type\n });\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 {entity?.uri && (\n <div className={styles.potentialMatchesContainer}>\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\n config={config}\n isLoaded={isLoaded}\n savedState={savedState}\n onUpdateSavedState={onUpdateSavedState}\n />\n <SnackbarRenderer />\n <ChangeModeConfirmation />\n </div>\n )}\n </div>\n </SnackbarContext.Provider>\n </ReloadDataProvider>\n </ViewStateProvider>\n );\n};\n","import MomentUtils from '@date-io/moment';\nimport PropTypes from 'prop-types';\nimport React, {useCallback} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\n\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {Provider} from 'react-redux';\nimport {identity} from 'ramda';\nimport {PotentialMatchesConfigType, promisifyCallback} 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});\n\nconst PotentialMatchesView = ({config, store, onResize = identity, saveState, getSavedState}) => {\n const getSavedStatePromisified = useCallback(\n promisifyCallback<Record<string, PotentialMatchesSavedState>>(getSavedState),\n [getSavedState]\n );\n\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <PMView config={config} saveState={saveState} getSavedState={getSavedStatePromisified} />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nPotentialMatchesView.propTypes = {\n config: PotentialMatchesConfigType,\n store: PropTypes.object,\n onResize: PropTypes.func,\n saveState: PropTypes.func,\n getSavedState: PropTypes.func\n};\n\nexport default PotentialMatchesView;\n","import {PotentialMatchesView} from '@reltio/potential-matches';\n\nexport default PotentialMatchesView;\n"],"names":["useStyles","makeStyles","icon","maxHeight","maxWidth","marginRight","group","metadata","styles","absoluteImagePath","useSelector","mdm","entityTypeGraphIcon","getEntityTypeGraphIcon","type","id","absoluteImageUrl","getAbsoluteImageUrl","AvatarWithFallback","className","avatarText","title","AvatarStates","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","attribute","cursor","lineHeight","flexBasis","display","alignItems","padding","width","borderBottom","disabled","attributeWithValue","noSelect","name","fontSize","color","overflow","whiteSpace","textOverflow","direction","textAlign","flex","defaultGetLabel","either","prop","value","getLabel","onSelectAttributeClick","label","onClick","undefined","ExpandedValueTooltip","i18n","SmallIconButton","size","ArrowDropDown","isEqualAttributes","eqBy","pick","checkAttributeIncludes","selectedAttributes","find","filterItem","item","filterText","toLowerCase","includes","filterItemsTree","children","some","getAttributeIndex","findIndex","getContainerWidth","getMaxItemWidth","getAttributeGroupData","groupId","groupName","level","noFilter","isItemFiltered","concat","filter","subItem","flatMap","flat","prepareGroupsForSelectAttributeList","curry","groups","map","items","attributes","length","subHeader","backgroundColor","margin","fontWeight","memo","onItemClick","focusIndex","hideCheckBox","mdmModule","VirtualGroupedList","getItemSize","i","renderItem","style","index","checked","isFocused","AttributeListItem","key","fieldName","data","notSelectable","Highlighter","text","highlight","labelInText","LogoIcon","renderGroupTitle","ListItem","component","needGroupIcon","AttributeGroupIcon","selector","minWidth","background","boxSizing","borderRadius","itemsGroups","onSelect","onRestoreFocus","identity","onOpenPopup","disableRestoreFocus","disableEnforceFocus","single","ungroup","selectAnchor","setSelectAnchor","closePopup","useCallback","isPopupOpen","setFilterText","clearFilterText","setSelectedAttributes","clearSelectedAttributes","filteredItemsGroups","useMemo","pipe","when","always","chain","flatten","flattenGroupedItemsData","containerWidth","Math","max","handleOnClose","tap","searchInputRef","useRef","onListItemClick","selectedAttribute","filterSelectedAttributes","current","focus","handleSearchOnEnter","groupData","getOnEnterHandler","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","onClose","event","currentTarget","SelectionPopup","anchorEl","onSearch","containerHeight","searchInputOnKeyDown","anchorOrigin","horizontal","vertical","height","getRowCellKey","rowIndex","columnData","cellIndex","rowCellHeightsMap","setRowCellHeightsMap","rowCellHeightsMapCache","flushHeightUpdates","debounce","clearHeightsCache","getDynamicRowCellHeight","__","changeRowCellHeight","useWith","hidden","visibility","CollapseRowButton","rowValue","toggleRowCollapse","getIsRowCollapsible","getIsRowCollapsed","useContext","RowCollapseContext","isCollapsibleRow","isCollapsedRow","CollapseButton","isOpen","e","stopPropagation","propTypes","PropTypes","RowCellAutoSizer","onChangeHeight","cell","cellProps","cellRef","changeCellHeight","adjustCellHeight","clientHeight","useDidUpdateEffect","rawValue","handleHeight","onResize","RootRef","rootRef","row","marginBottom","rowItem","paddingRight","fullWidth","flexGrow","theme","readOnlyLogicOperatorContainer","palette","secondary","readOnlyFilter","marginLeft","ReadOnlyLogicOperator","rowData","operator","capitalize","ReadOnlyFilter","getFilterOptionLabel","QueryBuilderRow","classes","previousRowData","LogicOperatorComponent","AttributeSelectorComponent","FilterSelectorComponent","ValuesEditorComponent","ActionsComponent","filterSelectorRef","attributeSelectorProps","rowContext","root","logicOperatorContainer","attributeSelectorContainer","filterSelectorContainer","textFieldInputRef","valuesEditorContainer","actionsContainer","QueryBuilderAttributeType","onOpen","disablePopoverRestoreFocus","QueryBuilderRowsGroup","rowClasses","rowsData","lastRowAttributeSelectorProps","filterSelectorRefIndex","rowProps","renderRow","previousRow","path","lastRowProps","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","sourceType","findSourceSystemByUri","getSourceSystemLabel","sourceIcon","variant","renderAttributesList","values","valueContainerClassName","props","attributeValue","expanded","LabelRenderer","RightSlot","attributeType","DataTypes","attributeValues","imageSize","imageHeight","imageWidth","imageMargin","CrosswalksDisplayContext","createContext","CrosswalksDisplayProvider","Provider","useCrosswalkColor","crosswalk","getCrosswalkColor","getColor","getCrosswalkId","useHighlightedCrosswalks","highlightedCrosswalks","useCrosswalkHighlight","setCrosswalkHighlighted","noop","isHighlighted","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkFocus","toggleCrosswalkFocus","focusedCrosswalks","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","React","viewBox","xmlns","d","fill","fillRule","clipRule","fillOpacity","ActivePanel","ComparisonViewMode","DataContext","reloadData","setReloadHandler","contextValue","dataHandler","reloadHandler","createContextValue","ReloadDataProvider","useReloadData","dataContext","Error","ViewStateContext","ViewDispatchContext","SET_GLOBAL_SPINNER","SET_SELECTED_ITEMS","TOGGLE_SELECT","SET_LIMIT_SELECTION","SET_COMPARISON_VIEW_MODE","SET_ENTITIES_MAP","DELETE_EXTRA_MATCHES","actions","setGlobalSpinner","createStandardAction","setSelectedItems","toggleSelect","setLimitSelection","setComparisonViewMode","setEntitiesMap","deleteExtraMatches","viewStateReducer","action","isGlobalSpinnerActive","payload","slice","limitSelection","evolve","selected","itemIndex","selectedItem","object","remove","append","newMode","comparisonViewMode","COLUMNS","entitiesMap","ViewStateProvider","dispatch","useReducer","viewStateAction","useActions","useViewState","viewStateContext","useViewStateActions","viewStateActions","RESET","SET_OPTIONS","basicTableViewState","reset","setOptions","reducer","options","createAttributeItemConfig","attrNode","parents","config","createAttributeItemBasicConfig","childNode","attrType","omit","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","errorMessage","showDCRReviewErrors","errorCode","ApiErrorCode","useSpinnerAndReloadData","onStartRequest","onFinishRequest","getFilteredSelectedItems","entities","MergeButton","forwardRef","ref","mode","ActionButtonMode","onMenuClose","onSuccess","NotMatchButton","version","SetAMatchButton","markingIsInProgress","setAMatch","setAsMatch","then","finally","useSetAMatch","ActionButton","SetAsMatchIcon","xmlnsXlink","stroke","strokeWidth","xlinkHref","mask","DCRReviewButton","showSnackbarMessage","SnackbarContext","operationIsInProgress","startPMReview","selectors","workflowPath","getWorkflowPath","environment","getWorkflowEnvironmentUrl","tenant","getTenant","getUri","uris","getUrisFromEntities","startProcessInstanceByPairs","processType","objectURIs","catch","useRequestDCRReview","canStartProcessInstanceSearchQuery","isEmptyValue","DcrReviewIcon","ReinstateMatchButton","reinstateIsInProgress","onReinstateMatch","dtssPath","params","customerTenant","isDataTenantEntity","reinstateDataTenantEntityMatch","reinstateMixedEntitiesMatches","useReinstateMatch","CreateRelationButton","mainEntity","currentEntity","matchRules","AddRelationIcon","RightSideHeaderContext","attributeSelect","onChange","field","split","sortLevel","findNode","parentFieldName","option","node","handleChange","val","BasicAttributeSelector","rowCheckbox","position","header","border","borderTop","sorting","arrow","transition","rotate","transform","selectedCount","totalCount","sortOptions","onSorting","totalOnPage","sidePanelHeaderProps","SidePanelContentHeader","secondTitle","n","Checkbox","indeterminate","IconButton","order","Order","classNames","useSortOptions","defaultOptions","additionalOptions","entityTypeUri","getEntityType","getSortingItemsGroups","col","paddingTop","paddingBottom","actionButtons","active","wrapper","content","right","top","pointerEvents","borderLeft","paddingLeft","entityLabel","primary","main","textDecoration","matchRulesWrapper","selectedRow","coloredRow","left","matchScore","commentsContainer","rightButton","tenantIcon","divider","match","entityToMatch","isRowSelected","isColumnViewMode","actionButtonsRenderer","getEntityColor","openMenu","setOpenMenu","isRowSelectable","Actions","EntityUriLink","MatchRulesBlock","MatchRuleVariant","Divider","orientation","DataTenantBadge","dataTenantId","dataTenant","buttonClassName","hoveredMatch","onActionsMenuOpen","onActionsMenuClose","createObjectIdForPM","matchEntityUri","allowOnlyOneComment","showAlways","view","flexDirection","overflowY","overflowX","MatchItems","matches","gap","inputRoot","menuButtonRoot","searchTenant","onChangeSearchTenant","currentSearchText","setCurrentSearchText","handleSearch","propEq","trim","handleChangeSearchText","newSearchText","isEmpty","document","activeElement","TenantsDropDownSelector","selectedTenant","onChangeTenant","SearchInput","inputRef","autofocus","onKeyPress","MenuItemRenderer","ActionsPanel","numberOfButtons","actionButtonSize","buttonActions","menuActions","splitAt","buttonMode","buttonSize","actionButton","DropDownMenuButton","buttonComponent","SmallIconButtonWithTooltip","buttonProps","MoreVertIcon","tooltipTitle","moreOptions","menuId","menuItems","onMenuOpen","mainArea","FindMatchesView","useDispatch","changeRowsPerPage","changePage","searchText","setSearchText","setSearchTenant","handleChangeSearchTenant","newSearchTenant","requestFilters","total","findEntities","enabled","searchTenantId","activityFilter","globalFilter","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","profile","resetPage","resetSelected","selectAll","getEntityUriFromMatchObject","canMerge","canMark","getActionPermissionForMatch","isDTEntity","show","pathEq","BasicTablePagination","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","LinearLoadIndicator","useMatches","rules","onStartLoading","onFinishLoading","loadMatches","useMatchesLoader","markMatchedValues","dialogPaper","dialogTitle","titleText","letterSpacing","fontize","attributeList","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","onAddAttributes","param","onChangeAttribute","onDeleteAttribute","handleClose","resetErrors","validate","errors","validateConnectionRelation","onCancel","boundariesElement","popupBoundariesValue","element","priority","Dialog","paper","DialogTitle","disableTypography","Typography","DialogContent","PopupBoundariesContext","ConnectionRelationTypeSelector","applyFirstByDefault","AttributesList","attrTypes","showEmptyEditors","ModeTypes","parentUri","DialogActions","Button","startDate","endDate","startEntityUri","endEntityUri","useAddRelationDialog","showDialog","setShowDialog","relationDialogContent","setRelationDialogContent","openAddRelationDialog","newConnection","generateNewRelationUri","isNew","createNewConnection","closeAddRelationDialog","AddRelationDialogRenderer","DEFAULT_OPTIONS","showTransitiveMatches","MatchesView","hasWorkflow","matchRulesFilters","regularFilters","partition","matchesFilter","getPotentialMatchesObjectIdsForCollaboration","keys","canAddRelation","hasDTEntity","EntitiesMapContext","NotMatchView","loadNotMatches","setMatches","dataTenants","dtssParams","dtssRequest","getNotMatchesFromDataTenants","getNotMatchWithDtss","withDtssPotentialItems","getNotMatch","getNotMatchWithPaging","usePagingSimulator","markAsNotMatch","record","NOT_MATCH","loadNotMatchesIfNeeded","force","addGlobalFilterToQuery","activeness","result","response","originalResponse","getEntitiesMapForTransitiveMatches","useNotMatches","Content","activeView","users","useUsers","UsersContext","PotentialMatches","FindMatches","NotAMatch","render","input","ValuesEditor","changeFilter","commonProps","newValues","TextFieldProps","InputProps","isMatchRuleAttrType","MatchRulesSelector","isSourceSystemAttrType","SourceSystemsSelector","optionLabel","potentialMatchesComponents","FilterSelector","FilterOptions","MatchesAttributesFiltersButton","attributeTypes","setShowTransitiveMatches","AttributesFiltersButton","components","onTogglePopup","isFiltersApplied","FormControlLabel","control","light","flexShrink","sourceSystemsComponents","RightSidePanel","isLoaded","savedState","onUpdateSavedState","matchesFilters","setMatchesFilters","matchesOptions","setMatchesOptions","findMatchesFilters","setFindMatchesFilters","notMatchFilters","setNotMatchFilters","matchesSorting","setMatchesSorting","findMatchesSorting","setFindMatchesSorting","notMatchSorting","setNotMatchSorting","setActive","toggleActive","newId","resetActive","analyticsAttributes","isReadableAttribute","getAttributeTypes","matchRulesAttributes","check","hasMatchRulesWithoutML","hasMlMatchRule","reduce","push","potentialMatchesAttributeTypes","findMatchesAttributeTypes","EntityAttrTypes","CrosswalksAttrTypes","onChangeMatchesFilters","elements","PotentialMatchesIcon","headerProps","mainTitle","rightContent","FindMatchesIcon","NotAMatchIcon","showSidePanel","SidePanel","SideButtonsPanel","buttonsProps","onButtonClick","activeIndexId","button","MODES","Icon","ViewColumnRoundedIcon","TABLE","TableRowsOutlinedIcon","isTableOnly","ModeSwitcher","modes","baseMode","maxProfiles","modeId","clearAllButton","mergeButton","splitter","actionSplitter","getEntityObjects","TableHeader","selectedColumns","onChangeColumns","showNonOv","onChangeShowNonOv","getActionPermissionForMatches","hasSelectedItems","handleToggleShowOvValue","not","settingItems","selectable","BasicViewHeader","Spacer","SettingsMenu","ColumnsSettings","ExpandedContext","expandedMap","onExpandType","Component","WithExpanded","componentProps","matchedAttributeBackground","complexAttributesHeadRenderer","complexAttributesHeadLabel","arrowButton","matchedAttribute","badge","alignSelf","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","permission","isEntityFindMatch","isEntityNotMatch","isEntityPotentialMatch","container","hovered","colored","removeButton","zIndex","matchControlsContainer","isPotentialMatchesTask","task","WorkflowTasksAvailabilityContext","minHeight","assigneeSelector","assigneeContainer","getCommentsInfoFromTasks","WorkflowCard","tasks","loadTasks","matchUri","requestIsInProgress","setRequestIsInProgress","setTasks","getTasksForEntity","hasMatchEntityUri","propSatisfies","isTaskBelongsToMatch","allPass","loading","useWorkflowTasks","setWorkflowTaskAvailability","sendMergeAllRequest","merge","useMergeAllRequest","sendMarkAsNotMatchRequest","notMatch","useMarkAsNotMatchRequest","mapping","Merge","possibleActions","assignee","getAssignees","updateAssignee","updateRequestIsInProgress","useWorkflowAssignee","PotentialMatchReviewCard","date","dueDate","processDefinitionDisplayName","createdBy","step","getPropsFromTasks","DropDownSelector","getOptions","hideSelectedOptions","WorkflowComments","DEFAULT_ROWS","draggable","initialWidth","autoResize","itemContainer","showTooltip","SourceIcon","crosswalkIcon","labelContainer","spacer","flexWrap","crosswalks","checkIsDataTenantEntity","additionalPropsForDefaultRows","cellRenderer","isSelectedEntity","onRemove","rest","isHovered","getEntityId","controlProps","CloseIcon","ProfileCard","MatchControls","headCellRenderer","workflowCard","sources","SourcesRenderer","entityId","nestedAttributeValue","subAttributeType","getFakeAttributeValueForCrosswalk","score","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","indexOf","splice","ColumnsSettingsPopup","onColumnClick","newIndex","borderStyle","comparisonTableWrapper","collapsedRow","comparisonTable","borderSpacing","borderRight","verticalAlign","wordBreak","wordWrap","emptyState","ComparisonTable","setSelectedColumns","allColumnsData","setHoveredEntity","anchor","selectedColumnsWithoutSubAttributes","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","onMoveColumn","dragColumn","setHoveredColumn","columnValue","resetHoveredColumn","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","EMPTY_STATE_VARIANTS","secondaryText","table","ComparisonView","defaultWrapperStyles","getColoredRowCellStyle","hoveredColor","fade","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","dragIcon","opacity","ovFalse","inactive","withFilterAtBottom","DefaultHeadCellRenderer","simpleValue","ov","DataTypeValue","withTableContext","onToggleSelect","isRowRemovable","hoverRowIndex","containerId","IdContext","isRowHovered","isFirstRow","wrapperStyle","shouldRenderCommentsContainer","DragIndicator","isFirstColumn","headIndex","blobValue","onScroll","imgValue","getImageAttributeOvThumbnailUrl","EntityTypeIcon","getReferencedEntityFromAttrValue","objectURI","getAttrPathFromColumnId","getBasicTableRowsData","allMatchRules","getAttributesForMatchRules","filteredColumnsData","acc","assoc","attrPath","ifElse","getAttributeValuesByPathWithOvFlag","getOvAttributeValuesByPathWithOvFlag","getRowValueForColumn","getNestedPathByColumnId","getCellValueRenderer","EntityProfileRenderer","MatchRulesRenderer","dataType","BlobRender","ImageRenderer","ReferenceRenderer","DefaultCellValueRenderer","getCellValueRendererByDataType","isCellHighlighted","every","CellValueRenderer","columnIndex","tableContainer","rowActionButtonsWrapper","rowActionButtons","hoveredRowRightContentContainer","dragColumnHead","borderColor","borderLeftColor","borderRightColor","dragColumnBody","onReorderingColumn","onFilter","onSort","onResetSelect","onSelectAll","basicTableRef","isComparisonViewShown","orderedMatches","setOrderedMatches","onDndRowReorder","oldPosition","newPosition","move","setHoverRowIndex","tableRowsData","sortable","tableColumnsData","resizable","nestedPath","ProfileHeadCellRenderer","rowCellValueRenderer","getBasicTableColumnsData","entityRowData","getRowHeight","CellRenderer","EntityCellRenderer","useBasicTableCellRenderer","maxRowValuesCount","entityRowHeight","enhancedColumnsData","withEntityCell","withEntityCellValue","onDndColumnReorder","what","where","oldPositionId","newPositionId","tableContext","isAllSelected","useDynamicRowCellHeight","useLayoutEffect","openActionsMenu","setOpenActionsMenu","openCollaborationPopup","setOpenCollaborationPopup","onRowHover","prevHoverRowIndex","hoveredRowRightContent","isChecked","onChangePopupVisibility","renderRowCell","actionsContent","tableRef","getRowCellHeight","defaultGetRowCellHeight","tableClasses","BasicTable","fixFirstColumn","context","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","hoverStateEnabled","dndRowReorderingEnabled","dndColumnReorderingEnabled","dndColumnReorderingHandler","dndRowReorderingHandler","hoveredContentPosition","comparisonView","MatchReviewTable","initialRequestParam","useFirstPotentialMatches","groupedColumnsData","defaultColumns","defaultColumnsData","additionalColumnsData","attrColumnsData","getEntityTypeMatchAttributes","matchAttrColumns","otherColumns","groupColumnsDataByMatchAttributes","useMatchesColumnsData","visibleColumns","setVisibleColumns","setShowNonOv","visibleColumnsData","comparisonViewProps","matchesTableProps","visibleAttributes","getFixedAttributesIds","getUnique","fixedAttributesIds","addFixedAttributes","has","DragAndDrop","flexBox","ChangeModeConfirmation","onSave","TableIcon","ConfirmationDialog","onDiscard","saveCaption","discardCaption","perspectiveView","bottom","fontFamily","default","potentialMatchesWrapper","potentialMatchesContainer","PotentialMatchesView","getSavedState","saveState","SnackbarRenderer","useSnackbar","lastSavedState","updateSavedState","useSavedStateForEntityType","stateToSave","newSavedState","S","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","floor","PotentialMatchesConfigType"],"sourceRoot":""}